Skip to content

Commit 045e08f

Browse files
committed
IdSyncException
1 parent 6b3d524 commit 045e08f

File tree

4 files changed

+101
-126
lines changed

4 files changed

+101
-126
lines changed

lambdas/id_sync/src/id_sync.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,21 @@
33
from common.log_decorator import logging_decorator
44
from common.aws_lambda_event import AwsLambdaEvent
55
from record_processor import process_record
6+
import json
67
'''
78
Lambda function handler for processing SQS events.Lambda for ID Sync. Fired by SQS
89
'''
910

1011

12+
class IdSyncException(Exception):
13+
"""Custom exception for ID Sync errors."""
14+
def __init__(self, message: str, nhs_numbers: list = None, exception=None):
15+
self.message = message
16+
self.nhs_numbers = nhs_numbers
17+
self.exception = exception
18+
super().__init__(message)
19+
20+
1121
@logging_decorator(prefix="id_sync", stream_name=STREAM_NAME)
1222
def handler(event_data, _):
1323

@@ -17,25 +27,28 @@ def handler(event_data, _):
1727
if record_count > 0:
1828
logger.info("id_sync processing event with %d records", record_count)
1929
error_count = 0
20-
file_keys = []
30+
nhs_numbers = []
2131
for record in event.records:
2232
record_result = process_record(record, None)
23-
file_keys.append(record_result["file_key"])
33+
nhs_numbers.append(record_result["nhs_number"])
2434
if record_result["status"] == "error":
2535
error_count += 1
2636
if error_count > 0:
27-
logger.error("id_sync processed %d records with %d errors", record_count, error_count)
28-
return {"status": "error", "message": f"Processed {record_count} records with {error_count} errors",
29-
"file_keys": file_keys}
37+
raise IdSyncException(message=f"Processed {record_count} records with {error_count} errors",
38+
nhs_numbers=nhs_numbers)
39+
3040
else:
31-
logger.info("id_sync successfully processed all %d records", record_count)
32-
return {"status": "success", "message": f"Successfully processed {record_count} records",
33-
"file_keys": file_keys}
41+
msg = f"Successfully processed {record_count} records"
42+
logger.info(msg)
43+
return {"status": "success", "message": msg, "nhs_numbers": nhs_numbers}
3444
else:
3545
logger.info("No records found in event")
3646
return {"status": "success", "message": "No records found in event"}
3747

38-
except Exception:
48+
except IdSyncException as e:
49+
logger.exception(f"id_sync error: {e.message}")
50+
raise e
51+
except Exception as e:
3952
msg = "Error processing id_sync event"
4053
logger.exception(msg)
41-
return {"status": "error", "message": msg}
54+
raise IdSyncException(message=msg, exception=e)

lambdas/id_sync/src/record_processor.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,17 @@ def process_nhs_number(nhs_number: str) -> Optional[str]:
2626

2727
patient_details_id = patient_details.get("id")
2828

29+
base_log_data = {"nhs_number": nhs_number}
2930
if patient_details_id:
3031
# if patient NHS != id, update patient index of vax events to new number
3132
if patient_details_id != nhs_number and patient_details_id:
3233
if ieds_check_exist(patient_details_id):
33-
return ieds_update_patient_id(patient_details_id, nhs_number)
34+
response = ieds_update_patient_id(patient_details_id, nhs_number)
3435
else:
35-
return {"status": "error", "message": f"No records returned for ID: {nhs_number}"}
36+
response = {"status": "error", "message": f"No records returned for ID: {nhs_number}"}
3637
else:
3738
return {"status": "success", "message": "No update required"}
3839
else:
39-
return {"status": "error", "message": f"No patient ID found for NHS number: {nhs_number}"}
40+
response = {"status": "error", "message": f"No patient ID found for NHS number: {nhs_number}"}
41+
response.update(base_log_data)
42+
return response

0 commit comments

Comments
 (0)