Skip to content

Commit

Permalink
Merge branch 'develop' into prafful/tests/locations
Browse files Browse the repository at this point in the history
  • Loading branch information
DraKen0009 authored Feb 8, 2025
2 parents 06ed2fd + 6b34820 commit 5822c6a
Show file tree
Hide file tree
Showing 3 changed files with 41 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 (
FacilityLocationEncounterListSpecWithLocation,
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"] = [
FacilityLocationEncounterListSpecWithLocation.serialize(i)
for i in FacilityLocationEncounter.objects.filter(encounter=obj).order_by(
"-created_date"
)
]
cls.serialize_audit_users(mapping, obj)
20 changes: 20 additions & 0 deletions care/emr/resources/location/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,26 @@ 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 FacilityLocationEncounterListSpecWithLocation(FacilityLocationEncounterListSpec):
location: dict

@classmethod
def perform_extra_serialization(cls, mapping, obj):
super().perform_extra_serialization(mapping, obj)
mapping["location"] = FacilityLocationListSpec.serialize(obj.location).to_json()


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

0 comments on commit 5822c6a

Please # to comment.