@@ -17,13 +17,6 @@ def __init__(self, **kwargs):
1717
1818 self .__mesh_client .handshake ()
1919
20- deployment = 'primary'
21- plane = 'data-plane'
22- self .__cloud_event_source = (
23- f'/nhs/england/notify/{ self .__config .environment } /'
24- f'{ deployment } /{ plane } /digitalletters/mesh'
25- )
26-
2720 self .__storage_bucket = self .__config .transactional_data_bucket
2821
2922 def process_sqs_message (self , sqs_record ):
@@ -86,9 +79,8 @@ def _handle_download(self, event, logger):
8679 )
8780
8881 self ._publish_downloaded_event (
89- sender_id = data .senderId ,
90- message_uri = uri ,
91- message_reference = data .messageReference
82+ incoming_event = event ,
83+ message_uri = uri
9284 )
9385
9486 message .acknowledge ()
@@ -110,17 +102,29 @@ def _store_message_content(self, sender_id, message_reference, message_content,
110102
111103 return message_uri
112104
113- def _publish_downloaded_event (self , sender_id , message_uri , message_reference ):
114- event_detail = {
115- "data" : {
116- "senderId" : sender_id ,
117- "messageUri" : message_uri ,
118- "messageReference" : message_reference ,
105+ def _publish_downloaded_event (self , incoming_event , message_uri ):
106+ """
107+ Publishes a MESHInboxMessageDownloaded event.
108+ """
109+ now = datetime .now (timezone .utc ).isoformat ()
110+
111+ cloud_event = {
112+ ** incoming_event .model_dump (),
113+ 'id' : str (uuid4 ()),
114+ 'time' : now ,
115+ 'recordedtime' : now ,
116+ 'type' : 'uk.nhs.notify.digital.letters.mesh.inbox.message.downloaded.v1' ,
117+ 'dataschema' : (
118+ 'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10/'
119+ 'digital-letters-mesh-inbox-message-downloaded-data.schema.json'
120+ ),
121+ 'data' : {
122+ 'senderId' : incoming_event .data .senderId ,
123+ 'messageReference' : incoming_event .data .messageReference ,
124+ 'messageUri' : message_uri ,
119125 }
120126 }
121127
122- cloud_event = self ._build_download_event (event_detail )
123-
124128 try :
125129 MeshDownloadMessageEvent (** cloud_event )
126130 except ValidationError as e :
@@ -135,33 +139,7 @@ def _publish_downloaded_event(self, sender_id, message_uri, message_reference):
135139
136140 self .__log .info (
137141 "Published MESHInboxMessageDownloaded event" ,
138- sender_id = sender_id ,
142+ sender_id = incoming_event . data . senderId ,
139143 message_uri = message_uri ,
140- message_reference = message_reference
144+ message_reference = incoming_event . data . messageReference
141145 )
142-
143- def _build_download_event (self , event_detail ):
144- now = datetime .now (timezone .utc ).isoformat ()
145-
146- return {
147- 'profileversion' : '1.0.0' ,
148- 'profilepublished' : '2025-10' ,
149- 'id' : str (uuid4 ()),
150- 'specversion' : '1.0' ,
151- 'source' : self .__cloud_event_source ,
152- 'subject' : (
153- 'customer/00000000-0000-0000-0000-000000000000/'
154- 'recipient/00000000-0000-0000-0000-000000000000'
155- ),
156- 'type' : 'uk.nhs.notify.digital.letters.mesh.inbox.message.downloaded.v1' ,
157- 'time' : now ,
158- 'recordedtime' : now ,
159- 'severitynumber' : 2 ,
160- 'severitytext' : 'INFO' ,
161- 'traceparent' : '00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01' ,
162- 'dataschema' :
163- 'https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10/'
164- 'digital-letters-mesh-inbox-message-downloaded-data.schema.json' ,
165- 'dataschemaversion' : '1.0' ,
166- 'data' : event_detail .get ('data' , {}),
167- }
0 commit comments