Skip to content

Commit 6ed4a5d

Browse files
authored
CCM-14319 mesh validation architecture (#201)
* CCM-14319: Added MeshInvoxMessageInvalid event * CCM-14319: Updated diagrams for MESHInboxMessageInvalid * CCM-14319: Update readme * CCM-14319: Added SSM to MESHAcknowledger diagram
1 parent 06c7841 commit 6ed4a5d

8 files changed

Lines changed: 220 additions & 143 deletions

File tree

README.md

Lines changed: 70 additions & 68 deletions
Large diffs are not rendered by default.

docs/collections/_diagrams/c4code-mesh-acknowledger.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,24 @@ title: c4code-mesh-acknowledger
44

55
---
66

7-
## MESH Acknowledge
8-
97
```mermaid
108
architecture-beta
119
group meshAcknowledger(cloud)[MeshAcknowledger]
1210
service meshDownloaded(aws:res-amazon-eventbridge-event)[MESHInboxMessageDownloaded Event]
11+
service meshInvalid(aws:res-amazon-eventbridge-event)[MESHInboxMessageInvalid Event]
1312
service meshAcknowledged(aws:res-amazon-eventbridge-event)[ MESHInboxMessageAcknowledged Event]
1413
service meshAckQueue(logos:aws-sqs)[MeshAcknowledgement Queue] in meshAcknowledger
14+
service clientConfig(aws:res-aws-systems-manager-parameter-store)[Client Configuration] in meshAcknowledger
1515
service meshAckLambda(logos:aws-lambda)[MeshAcknowledger] in meshAcknowledger
1616
service mesh(server)[MESH]
1717
18-
meshDownloaded:R --> L:meshAckQueue
18+
junction j1
19+
20+
meshDownloaded:R -- T:j1
21+
meshInvalid:R -- L:j1
22+
j1:R --> L:meshAckQueue
1923
meshAckQueue:R --> L:meshAckLambda
24+
clientConfig:B --> T:meshAckLambda
2025
meshAckLambda:B --> T:mesh
2126
meshAckLambda:R --> L:meshAcknowledged
2227
```

docs/collections/_diagrams/c4code-mesh-poller.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,19 @@ title: c4code-mesh-poller
88
architecture-beta
99
group meshPoller(cloud)[MeshPoller]
1010
service meshDownloaded(aws:res-amazon-eventbridge-event)[MeshPollerTimerExpired Event]
11-
service pdmSaved(aws:res-amazon-eventbridge-event)[MESHInboxMessageReceived Event]
11+
service meshReceived(aws:res-amazon-eventbridge-event)[MESHInboxMessageReceived Event]
12+
service meshInvalid(aws:res-amazon-eventbridge-event)[MESHInboxMessageInvalid Event]
1213
service meshPollLambda(logos:aws-lambda)[MeshPoll] in meshPoller
1314
service clientConfig(aws:res-aws-systems-manager-parameter-store)[Client Configuration] in meshPoller
1415
service mesh(server)[MESH]
1516
17+
junction j1
18+
1619
meshDownloaded:R --> L:meshPollLambda
1720
clientConfig:B --> T:meshPollLambda
1821
meshPollLambda:B --> T:mesh
19-
meshPollLambda:R --> L:pdmSaved
22+
meshPollLambda:R -- L:j1
23+
j1:T --> L:meshReceived
24+
j1:R --> L:meshInvalid
25+
2026
```
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
title: mesh-inbox-message-invalid
3+
type: uk.nhs.notify.digital.letters.mesh.inbox.message.invalid.v1
4+
nice_name: MESHInboxMessageInvalid
5+
service: MESH Services
6+
schema_envelope: https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/events/uk.nhs.notify.digital.letters.mesh.inbox.message.invalid.v1.schema.json
7+
schema_data: https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-mesh-inbox-message-invalid-data.schema.json
8+
---
9+
10+
This event is published when the MESHPoller detects a new message in the MESH mailbox that is deemed invalid and should not be downloaded.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
$schema: https://json-schema.org/draft/2020-12/schema
2+
title: MESHInboxMessageReceived Data
3+
description: Data payload of the MESHInboxMessageReceived event
4+
type: object
5+
additionalProperties: false
6+
properties:
7+
meshMessageId:
8+
$ref: ../defs/mesh.schema.yaml#/properties/meshMessageId
9+
senderId:
10+
$ref: ../defs/requests.schema.yaml#/properties/senderId
11+
failureCode:
12+
$ref: ../defs/requests.schema.yaml#/properties/failureCode
13+
required:
14+
- meshMessageId
15+
- senderId
16+
- failureCode

src/cloudevents/domains/digital-letters/2025-10-draft/defs/requests.schema.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,9 @@ properties:
3131
type: string
3232
description: The ODS Code of the sending organisation. Used to identify the sender in NHS App
3333
examples:
34-
- ""
34+
- "X26"
35+
failureCode:
36+
type: string
37+
description: The failure code indicating the reason for the message being invalid
38+
examples:
39+
- "LOCALID_HEADER_MISSING"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
$schema: https://json-schema.org/draft/2020-12/schema
2+
title: MESHInboxMessageInvalid
3+
type: object
4+
allOf:
5+
- $ref: ../digital-letters-mesh-profile.schema.yaml
6+
properties:
7+
type:
8+
type: string
9+
const: uk.nhs.notify.digital.letters.mesh.inbox.message.invalid.v1
10+
description: Concrete versioned event type string for this event (.vN suffix).
11+
source:
12+
type: string
13+
pattern: ^/nhs/england/notify/(production|staging|development|uat)/(primary|secondary|dev-[0-9]+)/data-plane/digitalletters/mesh
14+
description: Event source for digital letters.
15+
16+
dataschema:
17+
type: string
18+
const: ../data/digital-letters-mesh-inbox-message-invalid-data.schema.yaml
19+
description: Canonical URI of the event's data schema.
20+
examples:
21+
- digital-letters-mesh-inbox-message-invalid-data.schema.yaml
22+
data:
23+
$ref: ../data/digital-letters-mesh-inbox-message-invalid-data.schema.yaml

0 commit comments

Comments
 (0)