Skip to content

Commit a4f5437

Browse files
nhsd-angel-pastorgareth-allan
authored andcommitted
CCM-15019: adding plane: data (#273)
* CCM-15019: adding plane: data * CCM-15019: Fix broken tests after rebase * CCM-15019: Address review comments * CCM-15019: remove data-plane from the new event after a rebase * CCM-15019: Removed unused profile as the live one is from https://github.com/NHSDigital/nhs-notify-supplier-api/pkgs/npm/nhs-notify-event-schemas-supplier-api
1 parent d529b58 commit a4f5437

87 files changed

Lines changed: 318 additions & 158 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
resource "aws_cloudwatch_event_rule" "data_plane" {
2+
name = "${local.csi}-data-plane"
3+
description = "Data plane event rule"
4+
event_bus_name = aws_cloudwatch_event_bus.main.name
5+
6+
event_pattern = jsonencode({
7+
"detail" : {
8+
"plane" : [
9+
"data"
10+
],
11+
"type" : [{
12+
"prefix" : "uk.nhs.notify.digital.letters."
13+
}]
14+
}
15+
})
16+
}
17+
18+
resource "aws_cloudwatch_event_target" "data-plane-main-bus-target" {
19+
rule = aws_cloudwatch_event_rule.data_plane.name
20+
arn = module.eventpub.sns_topic.arn
21+
event_bus_name = aws_cloudwatch_event_bus.main.name
22+
23+
input_path = "$.detail"
24+
}

infrastructure/terraform/components/dl/modules_eventpub.tf

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ data "aws_iam_policy_document" "sns_publish" {
6060
condition {
6161
test = "ArnEquals"
6262
variable = "aws:SourceArn"
63-
values = [aws_cloudwatch_event_rule.letter_prepared.arn]
63+
values = [aws_cloudwatch_event_rule.letter_prepared.arn,
64+
aws_cloudwatch_event_rule.data_plane.arn
65+
]
6466
}
6567
}
6668
}

lambdas/core-notifier-lambda/src/__tests__/constants.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,11 @@ export const mockResponse: SingleMessageResponse = {
6060

6161
export const validPdmEvent: PDMResourceAvailable = {
6262
id: 'event-id-123',
63-
source:
64-
'/nhs/england/notify/development/dev-12345/data-plane/digitalletters/pdm',
63+
plane: 'data',
64+
dataschemaversion: '1.0.0',
65+
source: '/nhs/england/notify/development/dev-12345/digitalletters/pdm',
66+
dataschema:
67+
'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-pdm-resource-available-data.schema.json',
6568
specversion: '1.0',
6669
type: 'uk.nhs.notify.digital.letters.pdm.resource.available.v1',
6770
time: '2025-12-15T10:00:00Z',

lambdas/core-notifier-lambda/src/__tests__/domain/mapper.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ describe('mapper', () => {
2828
specversion: '1.0',
2929
id: 'event-123',
3030
source: 'pdm-service',
31+
plane: 'data',
32+
dataschemaversion: '1.0.0',
3133
subject: 'resource/available',
3234
type: 'uk.nhs.notify.digital.letters.pdm.resource.available.v1',
3335
time: '2024-01-15T10:30:00Z',

lambdas/file-scanner-lambda/src/__tests__/apis/sqs-handler.test.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,9 @@ const createValidItemDequeuedBody = (
4242
detail: {
4343
specversion: '1.0',
4444
id: `event-${messageReference}`,
45-
source:
46-
'/nhs/england/notify/development/primary/data-plane/digitalletters/queue',
45+
plane: 'data',
46+
dataschemaversion: '1.0.0',
47+
source: '/nhs/england/notify/development/primary/digitalletters/queue',
4748
subject: `message/${messageReference}`,
4849
type: 'uk.nhs.notify.digital.letters.queue.item.dequeued.v1',
4950
time: '2026-01-19T12:00:00Z',
@@ -319,7 +320,7 @@ describe('SQS Handler', () => {
319320
specversion: '1.0',
320321
id: 'event-001',
321322
source:
322-
'/nhs/england/notify/development/primary/data-plane/digitalletters/queue',
323+
'/nhs/england/notify/development/primary/digitalletters/queue',
323324
type: 'uk.nhs.notify.wrong.event.type.v1',
324325
time: '2026-01-19T12:00:00Z',
325326
data: {
@@ -386,7 +387,7 @@ describe('SQS Handler', () => {
386387
specversion: '1.0',
387388
id: 'event-001',
388389
source:
389-
'/nhs/england/notify/development/primary/data-plane/digitalletters/queue',
390+
'/nhs/england/notify/development/primary/digitalletters/queue',
390391
type: 'uk.nhs.notify.digital.letters.queue.item.dequeued.v1',
391392
time: '2026-01-19T12:00:00Z',
392393
data: {

lambdas/mesh-acknowledge/mesh_acknowledge/__tests__/fixtures.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def create_downloaded_event_dict(event_id: str) -> Dict[str, str | int | Dict[st
99
"specversion": "1.0",
1010
"source": (
1111
"/nhs/england/notify/production/primary/"
12-
'data-plane/digitalletters/mesh'
12+
'digitalletters/mesh'
1313
),
1414
"subject": (
1515
'customer/920fca11-596a-4eca-9c47-99f624614658/'
@@ -18,6 +18,7 @@ def create_downloaded_event_dict(event_id: str) -> Dict[str, str | int | Dict[st
1818
"type": (
1919
'uk.nhs.notify.digital.letters.mesh.inbox.message.downloaded.v1'
2020
),
21+
"plane": "data",
2122
"time": '2026-01-08T10:00:00Z',
2223
"recordedtime": '2026-01-08T10:00:00Z',
2324
"severitynumber": 2,
@@ -28,6 +29,7 @@ def create_downloaded_event_dict(event_id: str) -> Dict[str, str | int | Dict[st
2829
'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/'
2930
'digital-letters-mesh-inbox-message-downloaded-data.schema.json'
3031
),
32+
"dataschemaversion": '1.0.0',
3133
"datacategory": "non-sensitive",
3234
"dataclassification": "public",
3335
"dataregulation": "GDPR",

lambdas/mesh-acknowledge/mesh_acknowledge/__tests__/test_events.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,14 @@ def create_invalid_sqs_record(event_id: str) -> Dict[str, str]:
6666
'detail': {
6767
'id': event_id,
6868
'specversion': '1.0',
69-
'source': '/nhs/england/notify/production/primary/data-plane/digitalletters/mesh',
69+
'source': '/nhs/england/notify/production/primary/digitalletters/mesh',
7070
'subject': (
7171
'customer/920fca11-596a-4eca-9c47-99f624614658/recipient/'
7272
'769acdd4-6a47-496f-999f-76a6fd2c3959'
7373
),
7474
'type': 'uk.nhs.notify.digital.letters.mesh.inbox.message.downloaded.v1',
75+
'plane': 'data',
76+
'dataschemaversion': '1.0.0',
7577
'time': '2026-01-08T10:00:00Z',
7678
'recordedtime': '2026-01-08T10:00:00Z',
7779
'severitynumber': 2,
@@ -155,6 +157,8 @@ def test_publish_success(
155157
'time': fixed_time.isoformat(),
156158
'recordedtime': fixed_time.isoformat(),
157159
'type': 'uk.nhs.notify.digital.letters.mesh.inbox.message.acknowledged.v1',
160+
'plane': 'data',
161+
'dataschemaversion': '1.0.0',
158162
'dataschema': (
159163
'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/'
160164
'digital-letters-mesh-inbox-message-acknowledged-data.schema.json'

lambdas/mesh-acknowledge/mesh_acknowledge/events.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ def publish_acknowledged_event(
5151
'time': now,
5252
'recordedtime': now,
5353
'type': 'uk.nhs.notify.digital.letters.mesh.inbox.message.acknowledged.v1',
54+
'plane': 'data',
55+
'dataschemaversion': '1.0.0',
5456
'dataschema': (
5557
'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/'
5658
'digital-letters-mesh-inbox-message-acknowledged-data.schema.json'

lambdas/mesh-download/mesh_download/__tests__/test_processor.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,12 @@ def create_valid_cloud_event():
4040
return {
4141
'id': str(uuid4()),
4242
'specversion': '1.0',
43-
'source': '/nhs/england/notify/development/primary/data-plane/digitalletters/mesh',
43+
'source': '/nhs/england/notify/development/primary/digitalletters/mesh',
4444
'subject': 'customer/00000000-0000-0000-0000-000000000000/recipient/00000000-0000-0000-0000-000000000000',
4545
'type': 'uk.nhs.notify.digital.letters.mesh.inbox.message.received.v1',
46+
'plane': 'data',
47+
'dataschemaversion': '1.0.0',
48+
'datacontenttype': 'application/json',
4649
'time': '2023-01-01T12:00:00Z',
4750
'recordedtime': '2023-01-01T12:00:00Z',
4851
'severitynumber': 2,
@@ -218,9 +221,12 @@ def test_process_sqs_message_success(self, mock_datetime):
218221

219222
# Verify CloudEvent envelope fields
220223
assert published_event['type'] == 'uk.nhs.notify.digital.letters.mesh.inbox.message.downloaded.v1'
221-
assert published_event['source'] == '/nhs/england/notify/development/primary/data-plane/digitalletters/mesh'
224+
assert published_event['source'] == '/nhs/england/notify/development/primary/digitalletters/mesh'
222225
assert published_event['subject'] == 'customer/00000000-0000-0000-0000-000000000000/recipient/00000000-0000-0000-0000-000000000000'
223226
assert published_event['time'] == '2025-11-19T15:30:45+00:00'
227+
assert published_event['plane'] == 'data'
228+
assert published_event['dataschemaversion'] == '1.0.0'
229+
assert published_event['datacontenttype'] == 'application/json'
224230
assert 'id' in published_event
225231
assert 'tracestate' not in published_event
226232
assert 'partitionkey' not in published_event
@@ -287,9 +293,12 @@ def test_process_sqs_message_invalid_fhir_content(self, mock_datetime):
287293

288294
# Verify CloudEvent envelope fields
289295
assert published_event['type'] == 'uk.nhs.notify.digital.letters.mesh.inbox.message.invalid.v1'
290-
assert published_event['source'] == '/nhs/england/notify/development/primary/data-plane/digitalletters/mesh'
296+
assert published_event['source'] == '/nhs/england/notify/development/primary/digitalletters/mesh'
291297
assert published_event['subject'] == 'customer/00000000-0000-0000-0000-000000000000/recipient/00000000-0000-0000-0000-000000000000'
292298
assert published_event['time'] == '2025-11-19T15:30:45+00:00'
299+
assert published_event['plane'] == 'data'
300+
assert published_event['dataschemaversion'] == '1.0.0'
301+
assert published_event['datacontenttype'] == 'application/json'
293302
assert 'id' in published_event
294303
assert 'tracestate' not in published_event
295304
assert 'partitionkey' not in published_event

lambdas/mesh-download/mesh_download/processor.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,8 @@ def _publish_downloaded_event(self, incoming_event, message_uri):
148148
'time': now,
149149
'recordedtime': now,
150150
'type': 'uk.nhs.notify.digital.letters.mesh.inbox.message.downloaded.v1',
151+
'plane': 'data',
152+
'dataschemaversion': '1.0.0',
151153
'dataschema': (
152154
'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/'
153155
'digital-letters-mesh-inbox-message-downloaded-data.schema.json'

0 commit comments

Comments
 (0)