Skip to content

Commit

Permalink
Add referred facility to discharge serializer (#1506)
Browse files Browse the repository at this point in the history
* Add referred facility to discharge serializer

* Add more tests for referred_to

---------

Co-authored-by: Vignesh Hari <[email protected]>
  • Loading branch information
Ashesh3 and vigneshhari authored Aug 8, 2023
1 parent c19a91d commit 269eb40
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
21 changes: 21 additions & 0 deletions care/facility/api/serializers/patient_consultation.py
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,15 @@ class PatientConsultationDischargeSerializer(serializers.ModelSerializer):
death_datetime = serializers.DateTimeField(required=False, allow_null=True)
death_confirmed_doctor = serializers.CharField(required=False, allow_null=True)

referred_to = ExternalIdSerializerField(
queryset=Facility.objects.all(),
required=False,
allow_null=True,
)
referred_to_external = serializers.CharField(
required=False, allow_blank=True, allow_null=True
)

def get_discharge_prescription(self, consultation):
return Prescription.objects.filter(
consultation=consultation,
Expand All @@ -420,6 +429,7 @@ class Meta:
model = PatientConsultation
fields = (
"discharge_reason",
"referred_to",
"referred_to_external",
"discharge_notes",
"discharge_date",
Expand All @@ -430,6 +440,17 @@ class Meta:
)

def validate(self, attrs):
if attrs.get("referred_to") and attrs.get("referred_to_external"):
raise ValidationError(
{
"referred_to": [
"Only one of referred_to and referred_to_external can be set"
],
"referred_to_external": [
"Only one of referred_to and referred_to_external can be set"
],
}
)
if attrs.get("discharge_reason") != "EXP":
attrs.pop("death_datetime", None)
attrs.pop("death_confirmed_doctor", None)
Expand Down
43 changes: 43 additions & 0 deletions care/facility/tests/test_patient_consultation_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,49 @@ def test_referred_to_external_empty_string(self):
)
self.assertEqual(res.status_code, status.HTTP_200_OK)

def test_referred_to_empty_facility(self):
consultation = self.create_admission_consultation(
suggestion="A",
admission_date=make_aware(datetime.datetime(2020, 4, 1, 15, 30, 00)),
)
res = self.discharge(
consultation,
discharge_reason="REF",
discharge_date="2023-07-01T12:00:00Z",
discharge_notes="Discharged with empty referred_to_external",
referred_to=None,
)
self.assertEqual(res.status_code, status.HTTP_200_OK)

def test_referred_to_and_external_together(self):
consultation = self.create_admission_consultation(
suggestion="A",
admission_date=make_aware(datetime.datetime(2020, 4, 1, 15, 30, 00)),
)
res = self.discharge(
consultation,
discharge_reason="REF",
discharge_date="2023-07-01T12:00:00Z",
discharge_notes="Discharged with null referred_to_external",
referred_to_external="External Facility",
referred_to=self.facility.external_id,
)
self.assertEqual(res.status_code, status.HTTP_400_BAD_REQUEST)

def test_referred_to_valid_value(self):
consultation = self.create_admission_consultation(
suggestion="A",
admission_date=make_aware(datetime.datetime(2020, 4, 1, 15, 30, 00)),
)
referred_to_external = "Test Hospital"
res = self.discharge(
consultation,
discharge_reason="REF",
discharge_date="2023-07-01T12:00:00Z",
referred_to_external=referred_to_external,
)
self.assertEqual(res.status_code, status.HTTP_200_OK)

def test_referred_to_external_valid_value(self):
consultation = self.create_admission_consultation(
suggestion="A",
Expand Down

0 comments on commit 269eb40

Please sign in to comment.