Skip to content

Commit 9e9bf1d

Browse files
[PRMP-1579] Add DLQ to MNS (#558)
* [PRMP-1579] enable MNS on sandbox * [PRMP-1579] comment out sending message back to MNS queue * [PRMP-1579] remove method to send back to queue * [PRMP-1579] raise errors from the service * [PRMP-1579] remove decorators from handler * [PRMP-1579] remove if statement in lambda deployment for MNS * [PRMP-1579] add log for nhs number being processed * [PRMP-1579] enable MNS subscription for ndrd * [PRMP-1579] disable MNS subscription on ndrd * [PRMP-1579] readd decorator
1 parent 41fa479 commit 9e9bf1d

File tree

4 files changed

+12
-22
lines changed

4 files changed

+12
-22
lines changed

.github/workflows/base-lambdas-reusable-deploy-all.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,6 @@ jobs:
437437
AWS_ASSUME_ROLE: ${{ secrets.AWS_ASSUME_ROLE }}
438438

439439
deploy_mns_notification_lambda:
440-
if: ${{ ! inputs.is_sandbox }}
441440
name: Deploy mns notification lambda
442441
uses: ./.github/workflows/base-lambdas-reusable-deploy.yml
443442
with:

lambdas/handlers/mns_notification_handler.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from services.process_mns_message_service import MNSNotificationService
77
from utils.audit_logging_setup import LoggingService
88
from utils.decorators.ensure_env_var import ensure_environment_variables
9-
from utils.decorators.handle_lambda_exceptions import handle_lambda_exceptions
109
from utils.decorators.override_error_check import override_error_check
1110
from utils.decorators.set_audit_arg import set_request_context_for_logging
1211
from utils.request_context import request_context
@@ -24,7 +23,6 @@
2423
]
2524
)
2625
@override_error_check
27-
@handle_lambda_exceptions
2826
def lambda_handler(event, context):
2927
logger.info(f"Received MNS notification event: {event}")
3028
notification_service = MNSNotificationService()
@@ -38,13 +36,18 @@ def lambda_handler(event, context):
3836
MNSSQSMessage.model_validate(mns_message)
3937

4038
request_context.patient_nhs_no = mns_message.subject.nhs_number
39+
logger.info(
40+
f"Processing SQS message for nhs number: {mns_message.subject.nhs_number}"
41+
)
4142

4243
if mns_message.type in MNSNotificationTypes.__members__.values():
4344
notification_service.handle_mns_notification(mns_message)
4445

4546
except ValidationError as error:
4647
logger.error("Malformed MNS notification message")
4748
logger.error(error)
49+
raise error
4850
except Exception as error:
4951
logger.error(f"Error processing SQS message: {error}.")
52+
raise error
5053
logger.info("Continuing to next message.")

lambdas/services/process_mns_message_service.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,20 @@ def handle_mns_notification(self, message: MNSSQSMessage):
3434
logger.info("Handling death status notification.")
3535
self.handle_death_notification(message)
3636

37-
except PdsErrorException:
37+
except PdsErrorException as e:
3838
logger.info("An error occurred when calling PDS")
39-
self.send_message_back_to_queue(message)
39+
logger.info(
40+
f"Unable to process message: {message.id}, of type: {message.type}"
41+
)
42+
logger.info(f"{e}")
43+
raise (e)
4044

4145
except ClientError as e:
4246
logger.info(
4347
f"Unable to process message: {message.id}, of type: {message.type}"
4448
)
4549
logger.info(f"{e}")
50+
raise (e)
4651

4752
def handle_gp_change_notification(self, message: MNSSQSMessage):
4853
patient_document_references = self.get_patient_documents(
@@ -131,12 +136,6 @@ def get_updated_gp_ods(self, nhs_number: str) -> str:
131136
patient_details = self.pds_service.fetch_patient_details(nhs_number)
132137
return patient_details.general_practice_ods
133138

134-
def send_message_back_to_queue(self, message: MNSSQSMessage):
135-
logger.info("Sending message back to queue...")
136-
self.sqs_service.send_message_standard(
137-
queue_url=self.queue, message_body=message.model_dump_json(by_alias=True)
138-
)
139-
140139
def patient_is_present_in_ndr(self, dynamo_response):
141140
if len(dynamo_response) < 1:
142141
logger.info("Patient is not held in the National Document Repository.")

lambdas/tests/unit/services/test_process_mns_message_service.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
MOCK_EMPTY_RESPONSE,
1919
MOCK_SEARCH_RESPONSE,
2020
)
21-
from utils.exceptions import PdsErrorException
2221

2322

2423
@pytest.fixture
@@ -198,13 +197,3 @@ def test_handle_gp_change_updates_gp_ods_code(mns_service):
198197
),
199198
]
200199
mns_service.dynamo_service.update_item.assert_has_calls(calls, any_order=False)
201-
202-
203-
def test_messages_is_put_back_on_the_queue_when_pds_error_raised(
204-
mns_service, mocker, mock_handle_gp_change
205-
):
206-
mns_service.handle_gp_change_notification.side_effect = PdsErrorException()
207-
mocker.patch.object(mns_service, "send_message_back_to_queue")
208-
mns_service.handle_mns_notification(gp_change_message)
209-
210-
mns_service.send_message_back_to_queue.assert_called_with(gp_change_message)

0 commit comments

Comments
 (0)