@@ -392,70 +392,70 @@ def delete_immunization(
392392 response = error .response ,
393393 )
394394
395- def find_immunizations (self , patient_identifier : str , vaccine_types : list ):
396- """it should find all of the specified patient's Immunization events for all of the specified vaccine_types"""
397-
398- # ✅ Add debug logging
399- import logging
400- logger = logging .getLogger (__name__ )
401-
402- logger .info ("SAW fi...1: find_immunizations called with patient_identifier: '%s', vaccine_types: %s" ,
403- patient_identifier , vaccine_types )
404-
405- # Create the patient PK and log it
406- patient_pk = _make_patient_pk (patient_identifier )
407- logger .info ("SAW fi...2: patient_pk created: '%s'" , patient_pk )
408-
409- condition = Key ("PatientPK" ).eq (patient_pk )
410- is_not_deleted = Attr ("DeletedAt" ).not_exists () | Attr ("DeletedAt" ).eq ("reinstated" )
411-
412- logger .info ("SAW fi...3: executing DynamoDB query on PatientGSI index" )
413-
414- response = self .table .query (
415- IndexName = "PatientGSI" ,
416- KeyConditionExpression = condition ,
417- FilterExpression = is_not_deleted ,
418- )
419-
420- # ✅ Log the raw DynamoDB response
421- logger .info ("SAW fi...4: DynamoDB query response - Count: %s, ScannedCount: %s" ,
422- response .get ("Count" , 0 ), response .get ("ScannedCount" , 0 ))
423-
424- if "Items" in response :
425- raw_items = response ["Items" ]
426- logger .info ("SAW fi...5: total items returned from DynamoDB: %d" , len (raw_items ))
395+ def find_immunizations (self , patient_identifier : str , vaccine_types : list ):
396+ """it should find all of the specified patient's Immunization events for all of the specified vaccine_types"""
397+
398+ # ✅ Add debug logging
399+ import logging
400+ logger = logging .getLogger (__name__ )
401+
402+ logger .info ("SAW fi...1: find_immunizations called with patient_identifier: '%s', vaccine_types: %s" ,
403+ patient_identifier , vaccine_types )
404+
405+ # Create the patient PK and log it
406+ patient_pk = _make_patient_pk (patient_identifier )
407+ logger .info ("SAW fi...2: patient_pk created: '%s'" , patient_pk )
408+
409+ condition = Key ("PatientPK" ).eq (patient_pk )
410+ is_not_deleted = Attr ("DeletedAt" ).not_exists () | Attr ("DeletedAt" ).eq ("reinstated" )
411+
412+ logger .info ("SAW fi...3: executing DynamoDB query on PatientGSI index" )
413+
414+ response = self .table .query (
415+ IndexName = "PatientGSI" ,
416+ KeyConditionExpression = condition ,
417+ FilterExpression = is_not_deleted ,
418+ )
427419
428- # Log first few items for debugging
429- if raw_items :
430- logger .info ("SAW fi...6: sample raw item keys: %s" , list (raw_items [0 ].keys ()))
431- logger .info ("SAW fi...7: first few PatientSK values: %s" ,
432- [item .get ("PatientSK" , "MISSING" ) for item in raw_items [:3 ]])
420+ # ✅ Log the raw DynamoDB response
421+ logger .info ("SAW fi...4: DynamoDB query response - Count: %s, ScannedCount: %s" ,
422+ response .get ("Count" , 0 ), response .get ("ScannedCount" , 0 ))
433423
434- # Filter the response to contain only the requested vaccine types
435- items = [x for x in raw_items if x ["PatientSK" ].split ("#" )[0 ] in vaccine_types ]
424+ if "Items" in response :
425+ raw_items = response ["Items" ]
426+ logger .info ("SAW fi...5: total items returned from DynamoDB: %d" , len (raw_items ))
427+
428+ # Log first few items for debugging
429+ if raw_items :
430+ logger .info ("SAW fi...6: sample raw item keys: %s" , list (raw_items [0 ].keys ()))
431+ logger .info ("SAW fi...7: first few PatientSK values: %s" ,
432+ [item .get ("PatientSK" , "MISSING" ) for item in raw_items [:3 ]])
433+
434+ # Filter the response to contain only the requested vaccine types
435+ items = [x for x in raw_items if x ["PatientSK" ].split ("#" )[0 ] in vaccine_types ]
436+
437+ logger .info ("SAW fi...8: after vaccine_types filtering (%s): %d items" , vaccine_types , len (items ))
438+
439+ if items :
440+ # Log the vaccine types found
441+ found_vaccine_types = [item ["PatientSK" ].split ("#" )[0 ] for item in items ]
442+ logger .info ("SAW fi...9: found vaccine types: %s" , found_vaccine_types )
443+ else :
444+ # Debug why no items matched
445+ all_vaccine_types = [item ["PatientSK" ].split ("#" )[0 ] for item in raw_items ]
446+ logger .warning ("SAW fi...10: no items matched vaccine_types filter!" )
447+ logger .warning ("SAW fi...11: requested vaccine_types: %s" , vaccine_types )
448+ logger .warning ("SAW fi...12: available vaccine_types in data: %s" , list (set (all_vaccine_types )))
436449
437- logger .info ("SAW fi...8: after vaccine_types filtering (%s): %d items" , vaccine_types , len (items ))
450+ # Return a list of the FHIR immunization resource JSON items
451+ final_resources = [json .loads (item ["Resource" ]) for item in items ]
452+ logger .info ("SAW fi...13: returning %d FHIR resources" , len (final_resources ))
438453
439- if items :
440- # Log the vaccine types found
441- found_vaccine_types = [item ["PatientSK" ].split ("#" )[0 ] for item in items ]
442- logger .info ("SAW fi...9: found vaccine types: %s" , found_vaccine_types )
454+ return final_resources
443455 else :
444- # Debug why no items matched
445- all_vaccine_types = [item ["PatientSK" ].split ("#" )[0 ] for item in raw_items ]
446- logger .warning ("SAW fi...10: no items matched vaccine_types filter!" )
447- logger .warning ("SAW fi...11: requested vaccine_types: %s" , vaccine_types )
448- logger .warning ("SAW fi...12: available vaccine_types in data: %s" , list (set (all_vaccine_types )))
449-
450- # Return a list of the FHIR immunization resource JSON items
451- final_resources = [json .loads (item ["Resource" ]) for item in items ]
452- logger .info ("SAW fi...13: returning %d FHIR resources" , len (final_resources ))
453-
454- return final_resources
455- else :
456- logger .error ("SAW fi...14: No 'Items' key in DynamoDB response!" )
457- logger .error ("SAW fi...15: Response keys: %s" , list (response .keys ()))
458- raise UnhandledResponseError (message = f"Unhandled error. Query failed" , response = response )
456+ logger .error ("SAW fi...14: No 'Items' key in DynamoDB response!" )
457+ logger .error ("SAW fi...15: Response keys: %s" , list (response .keys ()))
458+ raise UnhandledResponseError (message = f"Unhandled error. Query failed" , response = response )
459459
460460 @staticmethod
461461 def _handle_dynamo_response (response ):
0 commit comments