Skip to content

Commit 2b299c1

Browse files
committed
spotted log issue
1 parent e573538 commit 2b299c1

File tree

1 file changed

+27
-63
lines changed

1 file changed

+27
-63
lines changed
Lines changed: 27 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,19 @@
1-
import logging
2-
import json
3-
import ast
1+
from common.clients import logger
42
from typing import Dict, Any
5-
6-
from common.clients import logger as clients_logger
73
from pds_details import pds_get_patient_id, pds_get_patient_details
84
from ieds_db_operations import (
95
ieds_update_patient_id,
106
extract_patient_resource_from_item,
117
get_items_from_patient_id,
128
)
139
from utils import make_status
14-
15-
# Module-local logger for records processing. Use this for logs local to this module
16-
# so they can be managed separately from the shared clients logger.
17-
module_logger = logging.getLogger(__name__)
18-
# Keep a module-level `logger` symbol for backwards compatibility with tests
19-
# and other modules that patch or import `record_processor.logger`.
20-
logger = module_logger
10+
import json
11+
import ast
2112

2213

2314
def process_record(event_record: Dict[str, Any]) -> Dict[str, Any]:
2415

25-
module_logger.info("process_record. Processing record: %s", event_record)
26-
# Probe logger configuration to help debug missing logs in CloudWatch.
27-
# Log both the module-local logger and the shared clients logger so it's
28-
# possible to compare their handlers/levels in CloudWatch.
29-
try:
30-
module_logger.info(
31-
"probe: module_logger id=%s module=%s level=%d handlers=%d",
32-
hex(id(module_logger)), getattr(module_logger, "__module__", None),
33-
module_logger.getEffectiveLevel(), len(module_logger.handlers),
34-
)
35-
module_logger.info(
36-
"probe: clients_logger id=%s module=%s level=%d handlers=%d",
37-
hex(id(clients_logger)), getattr(clients_logger, "__module__", None),
38-
clients_logger.getEffectiveLevel(), len(clients_logger.handlers),
39-
)
40-
except Exception:
41-
# Keep probe non-fatal in production
42-
pass
16+
logger.info("process_record. Processing record: %s", event_record)
4317
body_text = event_record.get('body', '')
4418

4519
# convert body to json (try JSON first, then fall back to Python literal)
@@ -50,18 +24,18 @@ def process_record(event_record: Dict[str, Any]) -> Dict[str, Any]:
5024
try:
5125
body = ast.literal_eval(body_text)
5226
except (ValueError, SyntaxError):
53-
module_logger.error("Failed to parse body: %s", body_text)
27+
logger.error("Failed to parse body: %s", body_text)
5428
return {"status": "error", "message": "Invalid body format"}
5529
else:
5630
body = body_text
5731

5832
nhs_number = body.get("subject")
5933
# Reached
60-
module_logger.info("process record NHS number: %s", nhs_number)
34+
logger.info("process record NHS number: %s", nhs_number)
6135
if nhs_number:
6236
return process_nhs_number(nhs_number)
6337

64-
module_logger.info("No NHS number found in event record")
38+
logger.info("No NHS number found in event record")
6539
return {"status": "error", "message": "No NHS number found in event record"}
6640

6741

@@ -75,21 +49,20 @@ def process_nhs_number(nhs_number: str) -> Dict[str, Any]:
7549
if new_nhs_number == nhs_number:
7650
return make_status("No update required", nhs_number)
7751

78-
module_logger.info("Update patient ID from %s to %s", nhs_number, new_nhs_number)
52+
logger.info("Update patient ID from %s to %s", nhs_number, new_nhs_number)
7953

8054
try:
8155
# Fetch PDS Patient resource and IEDS resources for the old NHS number
8256
pds_patient_resource, ieds_resources = fetch_pds_and_ieds_resources(nhs_number)
8357
except Exception as e:
84-
module_logger.exception("process_nhs_number: failed to fetch demographic details: %s", e)
58+
logger.exception("process_nhs_number: failed to fetch demographic details: %s", e)
8559
return make_status(str(e), nhs_number, "error")
8660

87-
module_logger.info("Fetched PDS details: %s", pds_patient_resource)
88-
module_logger.info("Fetched IEDS resources. IEDS count: %d", len(ieds_resources),
89-
ieds_resources if ieds_resources else 0)
61+
logger.info("Fetched PDS details: %s", pds_patient_resource)
62+
logger.info("Fetched IEDS resources. IEDS count: %d", len(ieds_resources), ieds_resources if ieds_resources else 0)
9063

9164
if not ieds_resources:
92-
module_logger.info("No IEDS records returned for NHS number: %s", nhs_number)
65+
logger.info("No IEDS records returned for NHS number: %s", nhs_number)
9366
return make_status(f"No records returned for ID: {nhs_number}", nhs_number)
9467

9568
# Compare demographics from PDS to each IEDS item, keep only matching records
@@ -104,7 +77,7 @@ def process_nhs_number(nhs_number: str) -> Dict[str, Any]:
10477
discarded_records.append(detail)
10578

10679
if not matching_records:
107-
module_logger.info("No records matched PDS demographics: %d %s", discarded_count, discarded_records)
80+
logger.info("No records matched PDS demographics: %d", discarded_count, discarded_records)
10881
return make_status("No records matched PDS demographics; update skipped", nhs_number)
10982

11083
response = ieds_update_patient_id(
@@ -119,26 +92,22 @@ def process_nhs_number(nhs_number: str) -> Dict[str, Any]:
11992

12093
# Function to fetch PDS Patient details and IEDS Immunisation records
12194
def fetch_pds_and_ieds_resources(nhs_number: str):
122-
module_logger.info("fetch_pds_and_ieds_resources: fetching for %s", nhs_number)
95+
logger.info("fetch_pds_and_ieds_resources: fetching for %s", nhs_number)
12396
try:
12497
pds = pds_get_patient_details(nhs_number)
125-
module_logger.info("fetch_pds_resources: fetching for %s", pds)
98+
logger.info("fetch_pds_resources: fetching for %s", pds)
12699
except Exception as e:
127-
module_logger.exception(
128-
"fetch_pds_and_ieds_resources: failed to fetch PDS details for %s", nhs_number
129-
)
100+
logger.exception("fetch_pds_and_ieds_resources: failed to fetch PDS details for %s", nhs_number)
130101
raise RuntimeError("Failed to fetch PDS details") from e
131102

132103
try:
133104
ieds = get_items_from_patient_id(nhs_number)
134105
except Exception as e:
135-
module_logger.exception(
136-
"fetch_pds_and_ieds_resources: failed to fetch IEDS items for %s", nhs_number
137-
)
106+
logger.exception("fetch_pds_and_ieds_resources: failed to fetch IEDS items for %s", nhs_number)
138107
raise RuntimeError("Failed to fetch IEDS items") from e
139108

140109
count = len(ieds)
141-
module_logger.info("fetch_pds_and_ieds_resources: fetched PDS and %d IEDS items for %s", count, nhs_number)
110+
logger.info("fetch_pds_and_ieds_resources: fetched PDS and %d IEDS items for %s", count, nhs_number)
142111
return pds, ieds
143112

144113

@@ -177,45 +146,40 @@ def normalize_strings(item: Any) -> str | None:
177146
pds_name = normalize_strings(extract_normalized_name_from_patient(pds_details))
178147
pds_gender = normalize_strings(pds_details.get("gender"))
179148
pds_birth = normalize_strings(pds_details.get("birthDate"))
180-
module_logger.info(
181-
"demographics_match: demographics from PDS: %s %s %s",
182-
pds_name,
183-
pds_gender,
184-
pds_birth,
185-
)
149+
logger.info("demographics_match: demographics match for %s", pds_name, pds_gender, pds_birth)
186150

187151
# Retrieve patient resource from IEDS item
188152
patient = extract_patient_resource_from_item(ieds_item)
189153
if not patient:
190-
module_logger.info("demographics_match: no patient resource in IEDS table item")
154+
logger.info("demographics_match: no patient resource in IEDS table item")
191155
return False
192156

193157
# normalize patient fields from IEDS
194158
ieds_name = normalize_strings(extract_normalized_name_from_patient(patient))
195159
ieds_gender = normalize_strings(patient.get("gender"))
196160
ieds_birth = normalize_strings(patient.get("birthDate"))
197-
module_logger.info("demographics_match: demographics from IEDS: %s", patient)
161+
logger.info("demographics_match: demographics match for %s", patient)
198162

199163
# All required fields must be present
200164
if not all([pds_name, pds_gender, pds_birth, ieds_name, ieds_gender, ieds_birth]):
201-
module_logger.info("demographics_match: missing required demographics")
165+
logger.info("demographics_match: missing required demographics")
202166
return False
203167

204168
# Compare fields
205169
if pds_birth != ieds_birth:
206-
module_logger.info("demographics_match: birthDate mismatch %s != %s", pds_birth, ieds_birth)
170+
logger.info("demographics_match: birthDate mismatch %s != %s", pds_birth, ieds_birth)
207171
return False
208172

209173
if pds_gender != ieds_gender:
210-
module_logger.info("demographics_match: gender mismatch %s != %s", pds_gender, ieds_gender)
174+
logger.info("demographics_match: gender mismatch %s != %s", pds_gender, ieds_gender)
211175
return False
212176

213177
if pds_name != ieds_name:
214-
module_logger.info("demographics_match: name mismatch %s != %s", pds_name, ieds_name)
178+
logger.info("demographics_match: name mismatch %s != %s", pds_name, ieds_name)
215179
return False
216180

217-
module_logger.info("demographics_match: demographics match for %s", patient)
181+
logger.info("demographics_match: demographics match for %s", patient)
218182
return True
219183
except Exception:
220-
module_logger.exception("demographics_match: comparison failed with exception")
184+
logger.exception("demographics_match: comparison failed with exception")
221185
return False

0 commit comments

Comments
 (0)