Skip to content

Commit

Permalink
Added linked facility code check and a validation Error if facility c…
Browse files Browse the repository at this point in the history
…ode does not exist
ertush committed Aug 6, 2024
1 parent 661db9e commit d934662
Showing 1 changed file with 24 additions and 20 deletions.
44 changes: 24 additions & 20 deletions chul/models.py
Original file line number Diff line number Diff line change
@@ -389,30 +389,34 @@ def push_chu_metadata(self, metadata_payload, chu_uid):
def get_facility_dhis2_parent_id(self):
from facilities.models.facility_models import DhisAuth
import requests
r = requests.get(
settings.DHIS_ENDPOINT + "api/organisationUnits.json",
auth=(settings.DHIS_USERNAME, settings.DHIS_PASSWORD),
headers={
"Accept": "application/json"
},
params={
"query": self.facility.code,
"fields": "id,name",
"filter": "level:in:[5]",
"paging": "false"
}
)

if len(r.json()["organisationUnits"]) is 1 and "id" in r.json()["organisationUnits"][0]:
if r.json()["organisationUnits"][0]["id"]:
return r.json()["organisationUnits"][0]["id"]
else:
raise ValidationError(
{
"Error!": ["Unable to resolve exact Facility linked to the CHU in DHIS2"]
if self.facility.code:
r = requests.get(
settings.DHIS_ENDPOINT + "api/organisationUnits.json",
auth=(settings.DHIS_USERNAME, settings.DHIS_PASSWORD),
headers={
"Accept": "application/json"
},
params={
"query": self.facility.code,
"fields": "id,name",
"filter": "level:in:[5]",
"paging": "false"
}
)

if len(r.json()["organisationUnits"]) is 1 and "id" in r.json()["organisationUnits"][0]:
if r.json()["organisationUnits"][0]["id"]:
return r.json()["organisationUnits"][0]["id"]
else:
raise ValidationError(
{
"Error!": ["Unable to find facility with code {} in KHIS. KHIS Response {}".format(self.facility.code, r.text)]
}
)
else:
raise ValidationError("The linked facility for this CU does not have an MFL code. Therefore it is not in KHIS ")

class Meta(AbstractBase.Meta):

unique_together = ('name', 'facility',)

0 comments on commit d934662

Please sign in to comment.