Skip to content

Commit 84a2aca

Browse files
committed
retry with common filter module
1 parent 479bc50 commit 84a2aca

File tree

3 files changed

+17
-12
lines changed

3 files changed

+17
-12
lines changed

backend/src/fhir_service.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,17 @@ def get_immunization_by_identifier(
6767
imms_resp = self.immunization_repo.get_immunization_by_identifier(
6868
identifier_pk, imms_vax_type_perms
6969
)
70-
if not imms_resp:
70+
71+
patient_full_url = f"urn:uuid:{str(uuid4())}"
72+
filtered_response = [Filter.search(imms, patient_full_url) for imms in imms_resp]
73+
74+
if not filtered_response:
7175
base_url = f"{get_service_url()}/Immunization"
72-
response = form_json(imms_resp, None, None, base_url)
76+
response = form_json(filtered_response[0], None, None, base_url)
7377
return response
7478
else:
7579
base_url = f"{get_service_url()}/Immunization"
76-
response = form_json(imms_resp, element, identifier, base_url)
80+
response = form_json(filtered_response[0], element, identifier, base_url)
7781
return response
7882

7983
def get_immunization_by_id(self, imms_id: str, imms_vax_type_perms: list[str]) -> Optional[dict]:

backend/src/models/utils/generic_utils.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,6 @@ def form_json(response, _element, identifier, baseurl):
152152
# Full Immunization payload to be returned if only the identifier parameter was provided
153153
if identifier and not _element:
154154
resource = response["resource"]
155-
resource.pop("contained", None)
156-
if "use" not in response["identifier"][0]:
157-
resource["identifier"][0]["use"] = "official"
158155

159156
elif identifier and _element:
160157
element = {e.strip().lower() for e in _element.split(",") if e.strip()}
@@ -167,7 +164,7 @@ def form_json(response, _element, identifier, baseurl):
167164
# Add 'meta' if specified
168165
if "meta" in element:
169166
resource["id"] = response["id"]
170-
resource["meta"] = {"versionId": response["version"]}
167+
resource["meta"] = {"versionId": response.get("version")}
171168

172169
json["entry"] = [{
173170
"fullUrl": f"https://api.service.nhs.uk/immunisation-fhir-api/Immunization/{response['id']}",

backend/tests/test_fhir_service.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -321,9 +321,11 @@ def tearDown(self):
321321
def test_get_immunization_by_identifier(self):
322322
"""it should find an Immunization by id"""
323323
imms = "an-id#an-id"
324+
imms_ids = ["imms-1", "imms-2"]
325+
imms_list = [create_covid_19_immunization_dict(imms_id) for imms_id in imms_ids]
324326
identifier = "test"
325-
element = "id,mEta,DDD"
326-
self.imms_repo.get_immunization_by_identifier.return_value = {}
327+
element = "id,meta"
328+
self.imms_repo.get_immunization_by_identifier.return_value = deepcopy(imms_list)
327329

328330
# When
329331
service_resp = self.fhir_service.get_immunization_by_identifier(imms, "COVID19:search", identifier, element)
@@ -337,15 +339,17 @@ def test_get_immunization_by_identifier(self):
337339
def test_immunization_not_found(self):
338340
"""it should return None if Immunization doesn't exist"""
339341
imms_id = "none"
342+
imms_ids = ["imms-1", "imms-2"]
343+
imms_list = [create_covid_19_immunization_dict(imms_id) for imms_id in imms_ids]
340344
identifier = "test"
341345
element = "id"
342-
self.imms_repo.get_immunization_by_identifier.return_value = None
346+
self.imms_repo.get_immunization_by_identifier.return_value = deepcopy(imms_list)
343347

344348
# When
345-
act_imms = self.fhir_service.get_immunization_by_identifier(imms_id, "COVID19:search", identifier, element)
349+
act_imms = self.fhir_service.get_immunization_by_identifier(imms_id, "COVID19.S", identifier, element)
346350

347351
# Then
348-
self.imms_repo.get_immunization_by_identifier.assert_called_once_with(imms_id, "COVID19:search")
352+
self.imms_repo.get_immunization_by_identifier.assert_called_once_with(imms_id, "COVID19.S")
349353

350354
self.assertEqual(act_imms["entry"], [])
351355

0 commit comments

Comments
 (0)