Skip to content

Commit f1bb33c

Browse files
[PRMP-627] Update enhanced metadata processor Lambda (#903)
Co-authored-by: Robert Gaskin <[email protected]>
1 parent b780fbb commit f1bb33c

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

lambdas/services/bulk_upload_metadata_processor_service.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import shutil
44
import tempfile
55
import urllib.parse
6+
import uuid
67
from collections import defaultdict
78
from datetime import datetime
89
from pathlib import Path
@@ -58,6 +59,7 @@ def __init__(
5859
):
5960
self.staging_bucket_name = os.getenv("STAGING_STORE_BUCKET_NAME")
6061
self.metadata_queue_url = os.getenv("METADATA_SQS_QUEUE_URL")
62+
self.expedite_queue_url = os.getenv("EXPEDITE_SQS_QUEUE_URL")
6163
self.s3_service = S3Service()
6264
self.sqs_service = SQSService()
6365
self.dynamo_repository = BulkUploadDynamoRepository()
@@ -261,9 +263,9 @@ def handle_expedite_event(self, event):
261263
self.enforce_virus_scanner(s3_object_key)
262264
self.check_file_status(s3_object_key)
263265

264-
sqs_metadata = [self.create_expedite_sqs_metadata(s3_object_key)]
266+
sqs_metadata = self.create_expedite_sqs_metadata(s3_object_key)
265267

266-
self.send_metadata_to_fifo_sqs(sqs_metadata)
268+
self.send_metadata_to_expedite_sqs(sqs_metadata)
267269
logger.info("Successfully processed expedite event")
268270
else:
269271
failure_msg = f"Unexpected directory or file location received from EventBridge: {s3_object_key}"
@@ -307,6 +309,20 @@ def send_metadata_to_fifo_sqs(
307309
)
308310
logger.info("Sent bulk upload metadata to sqs queue")
309311

312+
def send_metadata_to_expedite_sqs(
313+
self, staging_sqs_metadata: StagingSqsMetadata
314+
) -> None:
315+
"""Send validated metadata entries to SQS expedite queue."""
316+
sqs_group_id = f"bulk_upload_{uuid.uuid4()}"
317+
nhs_number = staging_sqs_metadata.nhs_number
318+
logger.info(f"Sending metadata for patientId: {nhs_number}")
319+
self.sqs_service.send_message_with_nhs_number_attr_fifo(
320+
queue_url=self.expedite_queue_url,
321+
message_body=staging_sqs_metadata.model_dump_json(by_alias=True),
322+
nhs_number=nhs_number,
323+
group_id=sqs_group_id,
324+
)
325+
310326
def copy_metadata_to_dated_folder(self):
311327
"""Copy processed metadata CSV into a dated archive folder in S3."""
312328
logger.info("Copying metadata CSV to dated folder")

lambdas/tests/unit/services/test_bulk_upload_metadata_processor_service.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -640,16 +640,15 @@ def test_handle_expedite_event_happy_path_sends_sqs(test_service, mocker):
640640
mocker.patch.object(BulkUploadMetadataProcessorService, "enforce_virus_scanner")
641641
mocker.patch.object(BulkUploadMetadataProcessorService, "check_file_status")
642642
mocked_send = mocker.patch.object(
643-
BulkUploadMetadataProcessorService, "send_metadata_to_fifo_sqs"
643+
BulkUploadMetadataProcessorService, "send_metadata_to_expedite_sqs"
644644
)
645645

646646
test_service.handle_expedite_event(event)
647647

648648
mocked_send.assert_called_once()
649649
args, _ = mocked_send.call_args
650650
assert len(args) == 1
651-
sqs_payload_list = args[0]
652-
sqs_payload = sqs_payload_list[0]
651+
sqs_payload = args[0]
653652
assert sqs_payload.nhs_number == "1234567890"
654653
assert len(sqs_payload.files) == 1
655654
file_item = sqs_payload.files[0]

0 commit comments

Comments
 (0)