Skip to content

Commit

Permalink
Add location history to encounter
Browse files Browse the repository at this point in the history
  • Loading branch information
vigneshhari committed Feb 6, 2025
1 parent 29fede3 commit 41877f1
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 9 deletions.
5 changes: 3 additions & 2 deletions care/emr/api/viewsets/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,9 @@ def perform_create(self, instance):

def authorize_update(self, request_obj, model_instance):
if self.request.user.is_superuser:
return True
return self.request.user.id == model_instance.id
return
if not self.request.user.id == model_instance.id:
raise PermissionDenied("You do not have permission to update this user")

def authorize_create(self, instance):
if not AuthorizationController.call("can_create_user", self.request.user):
Expand Down
25 changes: 18 additions & 7 deletions care/emr/resources/encounter/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,12 @@
from django.utils import timezone
from pydantic import UUID4, BaseModel, model_validator

from care.emr.models import Encounter, EncounterOrganization, TokenBooking
from care.emr.models import (
Encounter,
EncounterOrganization,
FacilityLocationEncounter,
TokenBooking,
)
from care.emr.models.patient import Patient
from care.emr.resources.base import EMRResource
from care.emr.resources.encounter.constants import (
Expand All @@ -17,10 +22,12 @@
)
from care.emr.resources.facility.spec import FacilityBareMinimumSpec
from care.emr.resources.facility_organization.spec import FacilityOrganizationReadSpec
from care.emr.resources.location.spec import FacilityLocationListSpec
from care.emr.resources.location.spec import (
FacilityLocationEncounterListSpec,
FacilityLocationListSpec,
)
from care.emr.resources.patient.spec import PatientListSpec
from care.emr.resources.scheduling.slot.spec import TokenBookingReadSpec
from care.emr.resources.user.spec import UserSpec
from care.facility.models import Facility


Expand Down Expand Up @@ -118,6 +125,7 @@ class EncounterRetrieveSpec(EncounterListSpec):
updated_by: dict = {}
organizations: list[dict] = []
current_location: dict | None = None
location_history: list[dict] = []

@classmethod
def perform_extra_serialization(cls, mapping, obj):
Expand All @@ -136,7 +144,10 @@ def perform_extra_serialization(cls, mapping, obj):
mapping["current_location"] = FacilityLocationListSpec.serialize(
obj.current_location
).to_json()
if obj.created_by:
mapping["created_by"] = UserSpec.serialize(obj.created_by)
if obj.updated_by:
mapping["updated_by"] = UserSpec.serialize(obj.updated_by)
mapping["location_history"] = [
FacilityLocationEncounterListSpec.serialize(i)
for i in FacilityLocationEncounter.objects.filter(encounter=obj).order_by(
"-created_date"
)
]
cls.serialize_audit_users(mapping, obj)
11 changes: 11 additions & 0 deletions care/emr/resources/location/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,17 @@ class FacilityLocationEncounterUpdateSpec(FacilityLocationEncounterBaseSpec):
end_datetime: datetime.datetime | None = None


class FacilityLocationEncounterListSpec(FacilityLocationEncounterBaseSpec):
encounter: UUID4
start_datetime: datetime.datetime
end_datetime: datetime.datetime | None = None
status: str

@classmethod
def perform_extra_serialization(cls, mapping, obj):
mapping["id"] = obj.external_id


class FacilityLocationEncounterReadSpec(FacilityLocationEncounterBaseSpec):
encounter: UUID4
start_datetime: datetime.datetime
Expand Down

0 comments on commit 41877f1

Please # to comment.