Skip to content

Commit 2cc7618

Browse files
authored
CCM-13476: Design for handling Print API update events (#160)
- add PrintStatusChanged event schema - add C4 code diagram for print api status handler - clean up existing schema descriptions for mesh, PDM, and print events
1 parent 2c1f6bf commit 2cc7618

23 files changed

+215
-42
lines changed

README.md

Lines changed: 7 additions & 0 deletions
Large diffs are not rendered by default.

docs/architecture/c4/notifhir/printer/eventsfromprint/index.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ parent: Print Supplier Services
55
nav_order: 9
66
has_children: true
77
is_not_draft: false
8-
last_modified_date: 2024-05-28
8+
last_modified_date: 2025-12-12
99
owner: Ross Buggins
10-
author: Ross Buggins
11-
diagrams: []
12-
events-raised: [print-printed]
10+
author: Tom D'Roza
11+
diagrams: [c4code-printer-statushandler]
12+
events-raised: [print-letter-transitioned]
1313
events-consumed: [external-supplier-api-letter-printed]
1414
c4type: code
1515
---

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ architecture-beta
1919
2020
meshReceived:R --> L:meshDownloadQueue
2121
meshDownloadQueue:R --> L:meshDownloadLambda
22-
meshDownloadLambda:T --> B:mesh
23-
meshDownloadLambda:B --> T:s3
22+
meshDownloadLambda:T --> B:s3
23+
meshDownloadLambda:B --> T:mesh
2424
meshDownloadLambda:R --> L:meshDownloaded
2525
```

docs/collections/_diagrams/c4code-mesh-statusreporter-sender.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,20 @@ architecture-beta
1616
service s3(logos:aws-s3)[Reports] in reportSender
1717
junction j1 in reportSender
1818
junction j2
19+
junction j3
20+
junction j4 in reportSender
1921
service reportSent(aws:res-amazon-eventbridge-event)[ReportSent Event]
2022
2123
2224
reportGenerated:R --> L:sqs
2325
sqs:R --> L:reportSenderLambda
24-
clientConfig:R -- T:reportSenderLambda
25-
s3:L -- T:reportSenderLambda
26+
clientConfig:B -- T:j2
27+
s3:B -- T:j3
28+
j2:R -- L:j1
29+
j3:L -- R:j1
2630
j1:B --> T:reportSenderLambda
2731
reportSenderLambda:B --> T:mesh
28-
reportSenderLambda:R -- L:j2
29-
j2:R --> L:reportSent
32+
reportSenderLambda:R -- L:j4
33+
j4:R --> L:reportSent
3034
3135
```

docs/collections/_diagrams/c4code-printer-sendtoqueue.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ title: c4code-printer-sendtoqueue
44

55
```mermaid
66
architecture-beta
7-
group createTtl(cloud)[QueueAdder]
7+
group queueAdder(cloud)[QueueAdder]
88
9-
service db(aws:arch-amazon-dynamodb)[ItemsWithTTL] in createTtl
10-
service clientConfig(aws:res-aws-systems-manager-parameter-store)[Client Configuration] in createTtl
11-
service createLambda(logos:aws-lambda)[CreateTTL] in createTtl
12-
service queue(logos:aws-sqs)[SQS] in createTtl
9+
service db(aws:arch-amazon-dynamodb)[ItemsWithTTL] in queueAdder
10+
service clientConfig(aws:res-aws-systems-manager-parameter-store)[Client Configuration] in queueAdder
11+
service createLambda(logos:aws-lambda)[CreateTTL] in queueAdder
12+
service queue(logos:aws-sqs)[SQS] in queueAdder
1313
service storedEvent(aws:res-amazon-eventbridge-event)[MESHInboxMessageDownloaded event]
1414
service scheduledEvent(aws:res-amazon-eventbridge-event) [ItemEnqueued event]
1515
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
title: c4code-printer-statushandler
3+
---
4+
5+
```mermaid
6+
architecture-beta
7+
group printStatusHandler(cloud)[PrinterStatusHandler]
8+
9+
10+
service createLambda(logos:aws-lambda)[PrintStatusHandler] in printStatusHandler
11+
service queue(logos:aws-sqs)[SQS] in printStatusHandler
12+
13+
service letterAcceptedEvent(aws:res-amazon-eventbridge-event)[letterACCEPTED event]
14+
service letterRejectedEvent(aws:res-amazon-eventbridge-event)[letterREJECTED event]
15+
service letterPrintedEvent(aws:res-amazon-eventbridge-event)[letterPRINTED event]
16+
service letterDispatchedEvent(aws:res-amazon-eventbridge-event)[letterDISPATCHED event]
17+
service letterFailedEvent(aws:res-amazon-eventbridge-event)[letterFAILED event]
18+
service letterReturnedEvent(aws:res-amazon-eventbridge-event)[letterRETURNED event]
19+
20+
service printStatusEvent(aws:res-amazon-eventbridge-event) [PrintLetterTransitioned event]
21+
22+
junction j1
23+
junction j2
24+
junction j3
25+
junction j4
26+
27+
j1:R --> L:queue
28+
j2:B -- T:j1
29+
j3:T -- B:j1
30+
j4:T -- B:j3
31+
letterRejectedEvent:R -- T:j2
32+
letterAcceptedEvent:R -- L:j2
33+
letterPrintedEvent:R -- B:j2
34+
letterDispatchedEvent:R -- T:j4
35+
letterFailedEvent:R -- L:j4
36+
letterReturnedEvent:R -- B:j4
37+
queue:R --> L:createLambda
38+
createLambda:R --> L:printStatusEvent
39+
```
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
title: print-letter-transitioned
3+
type: uk.nhs.notify.digital.letters.print.letter.transitioned.v1
4+
nice_name: PrintLetterTransitioned
5+
service: Print Supplier Services
6+
schema_envelope: https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/events/uk.nhs.notify.digital.letters.print.letter.transitioned.v1.schema.json
7+
schema_data: https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-print-letter-transitioned-data.schema.json
8+
---
9+
10+
This event signals that a letter in the print supplier's system has been transitioned. It is a Digital Letters internal representation of the various status update events received from the external print supplier API, such as "letter.ACCEPTED", "letter.REJECTED", "letter.PRINTED", "letter.DISPATCHED", "letter.FAILED", and "letter.RETURNED".
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
$schema: https://json-schema.org/draft/2020-12/schema
2+
title: PrintLetterTransitioned Data
3+
description: Base data of the PrintLetterTransitioned event
4+
type: object
5+
additionalProperties: false
6+
properties:
7+
senderId:
8+
$ref: ../defs/requests.schema.yaml#/properties/senderId
9+
messageReference:
10+
$ref: ../defs/requests.schema.yaml#/properties/messageReference
11+
status:
12+
$ref: ../defs/print.schema.yaml#/properties/status
13+
supplierId:
14+
$ref: ../defs/print.schema.yaml#/properties/supplierId
15+
time:
16+
$ref: ../defs/core.schema.yaml#/properties/time
17+
required:
18+
- senderId
19+
- messageReference
20+
- status
21+
- supplierId
22+
- time

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
$schema: https://json-schema.org/draft/2020-12/schema
2-
title: Request data
2+
title: Core data
33
description: Reusable types for NHS Notify payload schemas.
44
type: object
55
properties:
@@ -18,3 +18,12 @@ properties:
1818
- "CM_NOT_ALLOWED"
1919
- "CM_NO_SUCH_ROUTING_PLAN"
2020
- "CM_DUPLICATE_REQUEST"
21+
time:
22+
title: "Event Time"
23+
description: "Timestamp when the event occurred (RFC 3339)."
24+
examples: [
25+
"2025-10-01T10:15:30.000Z"
26+
]
27+
type: "string"
28+
format: "date-time"
29+
pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
$schema: https://json-schema.org/draft/2020-12/schema
2-
title: Request data
2+
title: MESH data
33
description: Reusable types for NHS Notify payload schemas.
44
type: object
55
properties:

0 commit comments

Comments
 (0)