@@ -106,28 +106,23 @@ def get_immunization_by_identifier(
106106
107107 def get_immunization_by_id (self , imms_id : str , imms_vax_type_perms : str ) -> Optional [dict ]:
108108 response = self .table .get_item (Key = {"PK" : _make_immunization_pk (imms_id )})
109+ item = response .get ("Item" )
109110
110- if "Item" in response :
111- resp = dict ()
112- if "DeletedAt" in response ["Item" ]:
113- if response ["Item" ]["DeletedAt" ] == "reinstated" :
114- vaccine_type = self ._vaccine_type (response ["Item" ]["PatientSK" ])
115- if not validate_permissions (imms_vax_type_perms ,ApiOperationCode .READ , [vaccine_type ]):
116- raise UnauthorizedVaxError ()
117- resp ["Resource" ] = json .loads (response ["Item" ]["Resource" ])
118- resp ["Version" ] = response ["Item" ]["Version" ]
119- return resp
120- else :
121- return None
122- else :
123- vaccine_type = self ._vaccine_type (response ["Item" ]["PatientSK" ])
124- if not validate_permissions (imms_vax_type_perms ,ApiOperationCode .READ , [vaccine_type ]):
125- raise UnauthorizedVaxError ()
126- resp ["Resource" ] = json .loads (response ["Item" ]["Resource" ])
127- resp ["Version" ] = response ["Item" ]["Version" ]
128- return resp
129- else :
111+ if not item :
130112 return None
113+ if item .get ("DeletedAt" ) and item ["DeletedAt" ] != "reinstated" :
114+ return None
115+
116+ # Get vaccine type + validate permissions
117+ vaccine_type = self ._vaccine_type (item ["PatientSK" ])
118+ if not validate_permissions (imms_vax_type_perms , ApiOperationCode .READ , [vaccine_type ]):
119+ raise UnauthorizedVaxError ()
120+
121+ # Build response
122+ return {
123+ "Resource" : json .loads (item ["Resource" ]),
124+ "Version" : item ["Version" ]
125+ }
131126
132127 def get_immunization_by_id_all (self , imms_id : str , imms : dict ) -> Optional [dict ]:
133128 response = self .table .get_item (Key = {"PK" : _make_immunization_pk (imms_id )})
@@ -355,36 +350,39 @@ def _perform_dynamo_update(
355350 )
356351
357352 def delete_immunization (
358- self , imms_id : str , imms_vax_type_perms : str , supplier_system : str
359- ) -> dict :
353+ self , imms_id : str , imms_vax_type_perms : str , supplier_system : str ) -> dict :
360354 now_timestamp = int (time .time ())
355+
361356 try :
362- resp = self .table .get_item (Key = {"PK" : _make_immunization_pk (imms_id )})
363-
364- if "Item" in resp :
365- if "DeletedAt" in resp ["Item" ]:
366- if resp ["Item" ]["DeletedAt" ] == "reinstated" :
367- pass
368- vaccine_type = self ._vaccine_type (resp ["Item" ]["PatientSK" ])
357+ item = self .table .get_item (Key = {"PK" : _make_immunization_pk (imms_id )}).get ("Item" )
358+ if not item :
359+ raise ResourceNotFoundError (resource_type = "Immunization" , resource_id = imms_id )
360+
361+ if item .get ("DeletedAt" ) == "reinstated" :
362+ vaccine_type = self ._vaccine_type (item ["PatientSK" ])
369363 if not validate_permissions (imms_vax_type_perms , ApiOperationCode .DELETE , [vaccine_type ]):
370364 raise UnauthorizedVaxError ()
371365
366+ # Proceed with delete update
372367 response = self .table .update_item (
373368 Key = {"PK" : _make_immunization_pk (imms_id )},
374- UpdateExpression = "SET DeletedAt = :timestamp, Operation = :operation, SupplierSystem = :supplier_system" ,
369+ UpdateExpression = (
370+ "SET DeletedAt = :timestamp, Operation = :operation, SupplierSystem = :supplier_system"
371+ ),
375372 ExpressionAttributeValues = {
376373 ":timestamp" : now_timestamp ,
377374 ":operation" : "DELETE" ,
378375 ":supplier_system" : supplier_system ,
379376 },
380377 ReturnValues = "ALL_NEW" ,
381- ConditionExpression = Attr ("PK" ).eq (_make_immunization_pk (imms_id ))
382- & (Attr ("DeletedAt" ).not_exists () | Attr ("DeletedAt" ).eq ("reinstated" )),
378+ ConditionExpression = (
379+ Attr ("PK" ).eq (_make_immunization_pk (imms_id )) &
380+ (Attr ("DeletedAt" ).not_exists () | Attr ("DeletedAt" ).eq ("reinstated" ))
381+ ),
383382 )
383+
384384 return self ._handle_dynamo_response (response )
385-
386385 except botocore .exceptions .ClientError as error :
387- # Either resource didn't exist or it has already been deleted. See ConditionExpression in the request
388386 if error .response ["Error" ]["Code" ] == "ConditionalCheckFailedException" :
389387 raise ResourceNotFoundError (resource_type = "Immunization" , resource_id = imms_id )
390388 else :
0 commit comments