diff --git a/lambdas/print-sender-lambda/src/__tests__/app/print-sender.test.ts b/lambdas/print-sender-lambda/src/__tests__/app/print-sender.test.ts index 63929896..8f9e71d8 100644 --- a/lambdas/print-sender-lambda/src/__tests__/app/print-sender.test.ts +++ b/lambdas/print-sender-lambda/src/__tests__/app/print-sender.test.ts @@ -74,7 +74,7 @@ describe('PrintSender', () => { url: mockPDFAnalysed.data.letterUri, clientId: mockPDFAnalysed.data.senderId, campaignId: 'digitalLetters', - letterVariantId: 'notify-digital-letter-standard', + letterVariantId: 'notify-digital-letters-standard', }), }), ]), diff --git a/lambdas/print-sender-lambda/src/app/print-sender.ts b/lambdas/print-sender-lambda/src/app/print-sender.ts index 5772d5cd..188f538d 100644 --- a/lambdas/print-sender-lambda/src/app/print-sender.ts +++ b/lambdas/print-sender-lambda/src/app/print-sender.ts @@ -47,7 +47,7 @@ export class PrintSender { url: item.data.letterUri, clientId: item.data.senderId, campaignId: 'digitalLetters', - letterVariantId: 'notify-digital-letter-standard', + letterVariantId: 'notify-digital-letters-standard', }, }; diff --git a/lambdas/print-status-handler/package.json b/lambdas/print-status-handler/package.json index fbdf48ec..5db2c2d8 100644 --- a/lambdas/print-status-handler/package.json +++ b/lambdas/print-status-handler/package.json @@ -1,6 +1,6 @@ { "dependencies": { - "@nhsdigital/nhs-notify-event-schemas-supplier-api": "1.0.11", + "@nhsdigital/nhs-notify-event-schemas-supplier-api": "1.0.17", "digital-letters-events": "^0.0.1", "utils": "^0.0.1", "zod": "^4.1.12" diff --git a/lambdas/print-status-handler/src/__tests__/apis/sqs-handler.test.ts b/lambdas/print-status-handler/src/__tests__/apis/sqs-handler.test.ts index bb6df053..34100f8c 100644 --- a/lambdas/print-status-handler/src/__tests__/apis/sqs-handler.test.ts +++ b/lambdas/print-status-handler/src/__tests__/apis/sqs-handler.test.ts @@ -46,6 +46,8 @@ describe('SQS Handler', () => { type: 'uk.nhs.notify.digital.letters.print.letter.transitioned.v1', source: '/nhs/england/notify/production/primary/data-plane/digitalletters/print', + subject: + 'client/f47ac10b-58cc-4372-a567-0e02b2c3d479/letter-request/2503cbd5-6722-4e90-9fbd-5f1e96d65c22', data: { senderId: acceptedLetterEvent.data.origin.subject.split('/')[1], messageReference: @@ -83,6 +85,8 @@ describe('SQS Handler', () => { type: 'uk.nhs.notify.digital.letters.print.letter.transitioned.v1', source: '/nhs/england/notify/production/primary/data-plane/digitalletters/print', + subject: + 'client/f47ac10b-58cc-4372-a567-0e02b2c3d480/letter-request/2503cbd5-6722-4e90-9fbd-5f1e96d65c22', data: { senderId: failedLetterEvent.data.origin.subject.split('/')[1], messageReference: @@ -220,7 +224,7 @@ describe('SQS Handler', () => { issues: expect.arrayContaining([ expect.objectContaining({ message: - 'Subject must be in format: client/{senderId}/digital-letters/{messageReference}', + 'Subject must be in format: client/{senderId}/letter-request/{messageReference}', }), ]), }), diff --git a/lambdas/print-status-handler/src/__tests__/test-data.ts b/lambdas/print-status-handler/src/__tests__/test-data.ts index abfff8e4..d950876c 100644 --- a/lambdas/print-status-handler/src/__tests__/test-data.ts +++ b/lambdas/print-status-handler/src/__tests__/test-data.ts @@ -6,11 +6,11 @@ export const acceptedLetterEvent = { specversion: '1.0', source: '/data-plane/supplier-api/prod/update-status', subject: - 'letter-origin/digital-letters/letter/f47ac10b-58cc-4372-a567-0e02b2c3d479', + 'letter-origin/digital-letters/letter/f47ac10b-58cc-4372-a567-0e02b2c3d479_2503cbd5-6722-4e90-9fbd-5f1e96d65c22', type: 'uk.nhs.notify.supplier-api.letter.ACCEPTED.v1', dataschema: - 'https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.ACCEPTED.1.0.0.schema.json', - dataschemaversion: '1.0.0', + 'https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.ACCEPTED.1.0.17.schema.json', + dataschemaversion: '1.0.17', time: '2023-06-20T12:00:00Z', recordedtime: '2023-06-20T12:00:00.250Z', severitynumber: 2, @@ -19,19 +19,20 @@ export const acceptedLetterEvent = { severitytext: 'INFO', plane: 'data', data: { - domainId: 'f47ac10b-58cc-4372-a567-0e02b2c3d479', + domainId: + 'f47ac10b-58cc-4372-a567-0e02b2c3d479_2503cbd5-6722-4e90-9fbd-5f1e96d65c22', groupId: 'client_template', + specificationId: '1y3q9v1zzzz', + supplierId: 'supplier-1', + status: 'ACCEPTED', + billingRef: '1y3q9v1zzzz', origin: { domain: 'letter-rendering', event: 'f47ac10b-58cc-4372-a567-0e02b2c3d479', source: '/data-plane/letter-rendering/prod/render-pdf', subject: - 'client/00f3b388-bbe9-41c9-9e76-052d37ee8988/digital-letters/b9c0c7f8-8204-400d-8348-7e7ddf775dae', + 'client/f47ac10b-58cc-4372-a567-0e02b2c3d479/letter-request/2503cbd5-6722-4e90-9fbd-5f1e96d65c22', }, - specificationId: '1y3q9v1zzzz', - supplierId: 'supplier-1', - status: 'ACCEPTED', - billingRef: '1y3q9v1zzzz', }, } as LetterEvent; @@ -40,11 +41,11 @@ export const failedLetterEvent = { specversion: '1.0', source: '/data-plane/supplier-api/prod/update-status', subject: - 'letter-origin/digital-letters/letter/f47ac10b-58cc-4372-a567-0e02b2c3d480', + 'letter-origin/digital-letters/letter/f47ac10b-58cc-4372-a567-0e02b2c3d480_2503cbd5-6722-4e90-9fbd-5f1e96d65c22', type: 'uk.nhs.notify.supplier-api.letter.FAILED.v1', dataschema: - 'https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.FAILED.1.0.0.schema.json', - dataschemaversion: '1.0.0', + 'https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.FAILED.1.0.17.schema.json', + dataschemaversion: '1.0.17', time: '2023-06-20T13:00:00Z', recordedtime: '2023-06-20T13:00:00.250Z', severitynumber: 3, @@ -53,21 +54,22 @@ export const failedLetterEvent = { severitytext: 'WARN', plane: 'data', data: { - domainId: 'f47ac10b-58cc-4372-a567-0e02b2c3d480', + domainId: + 'f47ac10b-58cc-4372-a567-0e02b2c3d480_2503cbd5-6722-4e90-9fbd-5f1e96d65c22', groupId: 'client_template', - origin: { - domain: 'letter-rendering', - event: 'f47ac10b-58cc-4372-a567-0e02b2c3d480', - source: '/data-plane/letter-rendering/prod/render-pdf', - subject: - 'client/00f3b388-bbe9-41c9-9e76-052d37ee8988/digital-letters/c8d1d8g9-9305-511e-9459-8f8eeg886ebf', - }, specificationId: '1y3q9v1zzzz', supplierId: 'supplier-1', status: 'FAILED', billingRef: '1y3q9v1zzzz', reasonCode: 'FAILURE001', reasonText: 'Letter has too many pages', + origin: { + domain: 'letter-rendering', + event: 'f47ac10b-58cc-4372-a567-0e02b2c3d480', + source: '/data-plane/letter-rendering/prod/render-pdf', + subject: + 'client/f47ac10b-58cc-4372-a567-0e02b2c3d480/letter-request/2503cbd5-6722-4e90-9fbd-5f1e96d65c22', + }, }, } as LetterEvent; diff --git a/lambdas/print-status-handler/src/apis/sqs-handler.ts b/lambdas/print-status-handler/src/apis/sqs-handler.ts index d75d7a67..9d599c9f 100644 --- a/lambdas/print-status-handler/src/apis/sqs-handler.ts +++ b/lambdas/print-status-handler/src/apis/sqs-handler.ts @@ -28,8 +28,8 @@ type ValidatedRecord = { const originSubjectSchema = z .string() .regex( - /^client\/[^/]+\/digital-letters\/[^/]+$/, - 'Subject must be in format: client/{senderId}/digital-letters/{messageReference}', + /^client\/[^/]+\/letter-request\/[^/]+$/, + 'Subject must be in format: client/{senderId}/letter-request/{messageReference}', ); function validateRecord( @@ -68,6 +68,12 @@ function validateRecord( return null; } + logger.info({ + description: 'Successfully validated SQS record', + messageId, + subject: item.data.origin.subject, + }); + return { messageId, event: item }; } catch (error) { logger.warn({ @@ -102,6 +108,7 @@ function generateUpdatedEvent(event: LetterEvent): PrintLetterTransitioned { id: randomUUID(), time: eventTime, recordedtime: eventTime, + subject: `client/${senderId}/letter-request/${messageReference}`, dataschema: 'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-print-letter-transitioned-data.schema.json', type: 'uk.nhs.notify.digital.letters.print.letter.transitioned.v1', diff --git a/package-lock.json b/package-lock.json index adf6ab2d..fc0276ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2737,7 +2737,7 @@ "name": "nhs-notify-digital-letters-print-status-handler", "version": "0.0.1", "dependencies": { - "@nhsdigital/nhs-notify-event-schemas-supplier-api": "1.0.11", + "@nhsdigital/nhs-notify-event-schemas-supplier-api": "1.0.17", "digital-letters-events": "^0.0.1", "utils": "^0.0.1", "zod": "^4.1.12" @@ -9391,9 +9391,9 @@ } }, "node_modules/@nhsdigital/nhs-notify-event-schemas-supplier-api": { - "version": "1.0.11", - "resolved": "https://npm.pkg.github.com/download/@nhsdigital/nhs-notify-event-schemas-supplier-api/1.0.11/0893c5f6aecfcb8d1562188d30c718acd7dc5637", - "integrity": "sha512-1sFPv1f6O5uRvsVxkwd0IVjDsn6l4YqLMCbHduAwnzhObTacQQEI5eB1LGFBQwhvI4q6P1k6FZI0KdDavDd6Iw==", + "version": "1.0.17", + "resolved": "https://npm.pkg.github.com/download/@nhsdigital/nhs-notify-event-schemas-supplier-api/1.0.17/05b451c993a18b89f4a91922a7affc1d23c1e2a8", + "integrity": "sha512-QDWOasKri3iky7StzWdrkV0YIQMnPJNlG4tQZoCOG8BTtAuMte/Xh5vZpQFm1DHQJxUVWMYrAL6n9ZSrKNxVkQ==", "license": "MIT", "dependencies": { "@asyncapi/bundler": "^0.6.4", @@ -22756,7 +22756,7 @@ "@aws-sdk/lib-dynamodb": "^3.900.0", "@aws-sdk/util-dynamodb": "^3.933.0", "@faker-js/faker": "^9.6.0", - "@nhsdigital/nhs-notify-event-schemas-supplier-api": "1.0.11", + "@nhsdigital/nhs-notify-event-schemas-supplier-api": "1.0.17", "@playwright/test": "^1.51.1", "csv-parse": "^6.1.0", "digital-letters-events": "^0.0.1", diff --git a/tests/playwright/digital-letters-component-tests/print-status-handler.component.spec.ts b/tests/playwright/digital-letters-component-tests/print-status-handler.component.spec.ts index 27ca4c44..d6b01338 100644 --- a/tests/playwright/digital-letters-component-tests/print-status-handler.component.spec.ts +++ b/tests/playwright/digital-letters-component-tests/print-status-handler.component.spec.ts @@ -15,9 +15,7 @@ const baseLetterEvent = { id: '550e8400-e29b-41d4-a716-446655440001', specversion: '1.0', source: '/data-plane/supplier-api/prod/update-status', - subject: - 'letter-origin/digital-letters/letter/f47ac10b-58cc-4372-a567-0e02b2c3d479', - dataschemaversion: '1.0.0', + dataschemaversion: '1.0.17', time: '2023-06-20T12:00:00Z', recordedtime: '2023-06-20T12:00:00.250Z', severitynumber: 2, @@ -26,16 +24,17 @@ const baseLetterEvent = { severitytext: 'INFO', plane: 'data', data: { - domainId: 'f47ac10b-58cc-4372-a567-0e02b2c3d479', + domainId: + '00f3b388-bbe9-41c9-9e76-052d37ee8988_2503cbd5-6722-4e90-9fbd-5f1e96d65c22', groupId: 'client_template', + specificationId: '1y3q9v1zzzz', + supplierId: 'supplier-1', + billingRef: '1y3q9v1zzzz', origin: { domain: 'letter-rendering', event: 'f47ac10b-58cc-4372-a567-0e02b2c3d479', source: '/data-plane/letter-rendering/prod/render-pdf', }, - specificationId: '1y3q9v1zzzz', - supplierId: 'supplier-1', - billingRef: '1y3q9v1zzzz', }, } as LetterEvent; @@ -64,14 +63,15 @@ test.describe('Print status handler', () => { const messageReference = uuidv4(); const letterEvent = { ...baseLetterEvent, + subject: `letter-origin/letter-rendering/letter/00f3b388-bbe9-41c9-9e76-052d37ee8988_${messageReference}`, type: `uk.nhs.notify.supplier-api.letter.${status}.v1`, - dataschema: `https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.${status}.1.0.0.schema.json`, + dataschema: `https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.${status}.1.0.17.schema.json`, data: { ...baseLetterEvent.data, status, origin: { ...baseLetterEvent.data.origin, - subject: `client/00f3b388-bbe9-41c9-9e76-052d37ee8988/digital-letters/${messageReference}`, + subject: `client/00f3b388-bbe9-41c9-9e76-052d37ee8988/letter-request/${messageReference}`, }, }, }; @@ -104,13 +104,14 @@ test.describe('Print status handler', () => { [ { ...baseLetterEvent, + subject: `letter-origin/letter-rendering/letter/00f3b388-bbe9-41c9-9e76-052d37ee8988_${messageReference}`, type: `uk.nhs.notify.supplier-api.letter.ACCEPTED.v1`, dataschema: `https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.ACCEPTED.1.0.0.schema.json`, data: { ...baseLetterEvent.data, origin: { ...baseLetterEvent.data.origin, - subject: `client/00f3b388-bbe9-41c9-9e76-052d37ee8988/digital-letters/${messageReference}`, + subject: `client/00f3b388-bbe9-41c9-9e76-052d37ee8988/letter-request/${messageReference}`, }, }, }, diff --git a/tests/playwright/package.json b/tests/playwright/package.json index f9cd899a..7ebede52 100644 --- a/tests/playwright/package.json +++ b/tests/playwright/package.json @@ -10,7 +10,7 @@ "@aws-sdk/lib-dynamodb": "^3.900.0", "@aws-sdk/util-dynamodb": "^3.933.0", "@faker-js/faker": "^9.6.0", - "@nhsdigital/nhs-notify-event-schemas-supplier-api": "1.0.11", + "@nhsdigital/nhs-notify-event-schemas-supplier-api": "1.0.17", "@playwright/test": "^1.51.1", "csv-parse": "^6.1.0", "digital-letters-events": "^0.0.1",