Skip to content
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions care/emr/api/viewsets/facility.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ class FacilityViewSet(EMRModelViewSet):
filter_backends = [DjangoFilterBackend]

def get_queryset(self):
qs = super().get_queryset()
qs = super().get_queryset().select_related("geo_organization")
if self.request.user.is_superuser:
return qs
organization_ids = list(
Expand Down Expand Up @@ -217,4 +217,6 @@ class AllFacilityViewSet(EMRModelReadOnlyViewSet):
search_fields = ["name"]

def get_queryset(self):
return Facility.objects.filter(is_public=True).select_related()
return Facility.objects.filter(is_public=True).select_related(
"geo_organization"
)
12 changes: 9 additions & 3 deletions care/emr/api/viewsets/patient.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,9 @@ def search(self, request, *args, **kwargs):
):
partial = True

queryset = queryset.order_by("-created_date")[:page_size]
queryset = queryset.select_related("geo_organization").order_by(
"-created_date"
)[:page_size]
if partial:
data = [PatientPartialSpec.serialize(obj).to_json() for obj in queryset]
return Response({"partial": True, "results": data})
Expand All @@ -268,7 +270,9 @@ class SearchRetrieveRequestSpec(BaseModel):
@action(detail=False, methods=["POST"])
def search_retrieve(self, request, *args, **kwargs):
request_data = self.SearchRetrieveRequestSpec(**request.data)
queryset = Patient.objects.filter(phone_number=request_data.phone_number)
queryset = Patient.objects.filter(
phone_number=request_data.phone_number
).select_related("geo_organization")
queryset = queryset.filter(year_of_birth=request_data.year_of_birth)
for patient in queryset:
if str(patient.external_id)[:5] == request_data.partial_id:
Expand All @@ -283,7 +287,9 @@ def search_retrieve(self, request, *args, **kwargs):
@action(detail=True, methods=["GET"])
def get_users(self, request, *args, **kwargs):
patient = self.get_object()
patient_users = PatientUser.objects.filter(patient=patient)
patient_users = PatientUser.objects.filter(patient=patient).select_related(
"user"
)
data = [
UserSpec.serialize(patient_user.user).to_json()
for patient_user in patient_users
Expand Down
1 change: 1 addition & 0 deletions care/emr/api/viewsets/scheduling/booking.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,7 @@ def available_users(self, request, *args, **kwargs):
user_id__in=facility_organization_users.values("user_id")
)

user_resources = user_resources.select_related("user")
return Response(
{
"users": [
Expand Down
7 changes: 5 additions & 2 deletions care/emr/models/patient.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,8 +190,11 @@ def get_config(cls, config_id) -> PatientIdentifierConfig:
from care.emr.resources.patient_identifier.spec import PatientIdentifierListSpec

if config_id not in cls.configs:
cls.configs[config_id] = PatientIdentifierListSpec.serialize(
PatientIdentifierConfig.objects.get(external_id=config_id)
config = PatientIdentifierConfig.objects.only("id").get(
external_id=config_id
)
cls.configs[config_id] = model_from_cache(
PatientIdentifierListSpec, id=config.id
).to_json()
Comment thread
praffq marked this conversation as resolved.
Outdated
return cls.configs[config_id]

Expand Down
6 changes: 1 addition & 5 deletions care/emr/resources/allergy_intolerance/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
from care.emr.resources.allergy_intolerance.valueset import CARE_ALLERGY_CODE_VALUESET
from care.emr.resources.base import EMRResource
from care.emr.resources.common.coding import Coding
from care.emr.resources.user.spec import UserSpec
from care.emr.utils.valueset_coding_type import ValueSetBoundCoding


Expand Down Expand Up @@ -134,9 +133,6 @@ class AllergyIntoleranceReadSpec(BaseAllergyIntoleranceSpec):
@classmethod
def perform_extra_serialization(cls, mapping, obj):
mapping["id"] = obj.external_id
if obj.created_by:
mapping["created_by"] = UserSpec.serialize(obj.created_by)
if obj.updated_by:
mapping["updated_by"] = UserSpec.serialize(obj.updated_by)
cls.serialize_audit_users(mapping, obj)
if obj.encounter:
mapping["encounter"] = obj.encounter.external_id
5 changes: 1 addition & 4 deletions care/emr/resources/condition/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,7 @@ def perform_extra_serialization(cls, mapping, obj):
if obj.encounter:
mapping["encounter"] = obj.encounter.external_id

if obj.created_by:
mapping["created_by"] = UserSpec.serialize(obj.created_by)
if obj.updated_by:
mapping["updated_by"] = UserSpec.serialize(obj.updated_by)
cls.serialize_audit_users(mapping, obj)


class ConditionUpdateSpec(BaseConditionSpec):
Expand Down
8 changes: 3 additions & 5 deletions care/emr/resources/device/history_spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
from pydantic import UUID4

from care.emr.models import DeviceServiceHistory
from care.emr.resources.base import EMRResource
from care.emr.resources.base import EMRResource, model_from_cache
from care.emr.resources.user.spec import UserSpec
from care.users.models import User


class DeviceServiceHistorySpecBase(EMRResource):
Expand Down Expand Up @@ -41,9 +40,8 @@ def perform_extra_serialization(cls, mapping, obj):
edit_history = []
for history in obj.edit_history:
user = history.get("updated_by")
user_obj = User.objects.filter(id=user).first()
if user_obj:
history["updated_by"] = UserSpec.serialize(user_obj).to_json()
if user:
history["updated_by"] = model_from_cache(UserSpec, id=user)
else:
history["updated_by"] = {} # Edge Case
edit_history.append(history)
Expand Down
8 changes: 6 additions & 2 deletions care/emr/resources/encounter/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,9 @@ class EncounterListSpec(EncounterSpecBase):
def perform_extra_serialization(cls, mapping, obj):
mapping["id"] = obj.external_id
mapping["patient"] = PatientListSpec.serialize(obj.patient).to_json()
mapping["facility"] = FacilityBareMinimumSpec.serialize(obj.facility).to_json()
mapping["facility"] = model_from_cache(
FacilityBareMinimumSpec, id=obj.facility_id
)
mapping["tags"] = SingleFacilityTagManager().render_tags(obj)
mapping["current_location"] = None
if obj.current_location:
Expand All @@ -155,7 +157,9 @@ def perform_extra_serialization(cls, mapping, obj):
mapping["patient"] = PatientRetrieveSpec.serialize(
obj.patient, facility=obj.facility
).to_json()
mapping["facility"] = FacilityBareMinimumSpec.serialize(obj.facility).to_json()
mapping["facility"] = model_from_cache(
FacilityBareMinimumSpec, id=obj.facility_id
)
mapping["tags"] = SingleFacilityTagManager().render_tags(obj)
if obj.appointment:
mapping["appointment"] = TokenBookingReadSpec.serialize(
Expand Down
2 changes: 1 addition & 1 deletion care/emr/resources/facility/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ def perform_extra_serialization(cls, mapping, obj):

mapping["id"] = obj.external_id
mapping["read_cover_image_url"] = obj.read_cover_image_url()
if obj.created_by:
if obj.created_by_id:
mapping["created_by"] = model_from_cache(UserSpec, id=obj.created_by_id)
mapping["facility_type"] = REVERSE_FACILITY_TYPES[obj.facility_type]
if obj.geo_organization:
Expand Down
6 changes: 1 addition & 5 deletions care/emr/resources/facility_organization/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,7 @@ class FacilityOrganizationReadSpec(FacilityOrganizationBaseSpec):
def perform_extra_serialization(cls, mapping, obj):
mapping["id"] = obj.external_id
mapping["parent"] = obj.get_parent_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)
cls.serialize_audit_users(mapping, obj)


class FacilityOrganizationRetrieveSpec(FacilityOrganizationReadSpec):
Expand Down
14 changes: 7 additions & 7 deletions care/emr/resources/file_upload/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from pydantic import UUID4, field_validator

from care.emr.models import FileUpload
from care.emr.resources.base import EMRResource
from care.emr.resources.base import EMRResource, model_from_cache
from care.emr.resources.user.spec import UserSpec
from care.utils.models.validators import file_name_validator

Expand Down Expand Up @@ -92,10 +92,10 @@ def perform_extra_serialization(cls, mapping, obj):
mapping["id"] = obj.external_id
mapping["extension"] = obj.get_extension()
mapping["mime_type"] = obj.meta.get("mime_type")
if obj.created_by:
mapping["uploaded_by"] = UserSpec.serialize(obj.created_by)
if obj.archived_by:
mapping["archived_by"] = UserSpec.serialize(obj.archived_by)
if obj.created_by_id:
mapping["uploaded_by"] = model_from_cache(UserSpec, id=obj.created_by_id)
if obj.archived_by_id:
mapping["archived_by"] = model_from_cache(UserSpec, id=obj.archived_by_id)


class FileUploadRetrieveSpec(FileUploadListSpec):
Expand All @@ -112,8 +112,8 @@ def perform_extra_serialization(cls, mapping, obj):
else:
mapping["read_signed_url"] = obj.files_manager.read_signed_url(obj)

if obj.updated_by:
mapping["updated_by"] = UserSpec.serialize(obj.updated_by)
if obj.updated_by_id:
mapping["updated_by"] = model_from_cache(UserSpec, id=obj.updated_by_id)


class ConsentFileUploadCreateSpec(FileUploadBaseSpec):
Expand Down
6 changes: 1 addition & 5 deletions care/emr/resources/location/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
from care.emr.models.location import FacilityLocation
from care.emr.resources.base import EMRResource
from care.emr.resources.common import Coding
from care.emr.resources.user.spec import UserSpec


class LocationEncounterAvailabilityStatusChoices(str, Enum):
Expand Down Expand Up @@ -156,10 +155,7 @@ class FacilityLocationRetrieveSpec(FacilityLocationListSpec):
@classmethod
def perform_extra_serialization(cls, mapping, obj):
super().perform_extra_serialization(mapping, obj)
if obj.created_by:
mapping["created_by"] = UserSpec.serialize(obj.created_by)
if obj.updated_by:
mapping["updated_by"] = UserSpec.serialize(obj.updated_by)
cls.serialize_audit_users(mapping, obj)


class FacilityLocationEncounterBaseSpec(EMRResource):
Expand Down
6 changes: 3 additions & 3 deletions care/emr/resources/medication/administration/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from care.emr.models.medication_administration import MedicationAdministration
from care.emr.models.medication_request import MedicationRequest
from care.emr.models.product_knowledge import ProductKnowledge
from care.emr.resources.base import EMRResource
from care.emr.resources.base import EMRResource, model_from_cache
from care.emr.resources.common import Quantity
from care.emr.resources.inventory.product_knowledge.spec import ProductKnowledgeReadSpec
from care.emr.resources.medication.valueset.administration_method import (
Expand Down Expand Up @@ -191,5 +191,5 @@ def perform_extra_serialization(cls, mapping, obj):
obj.administered_product
)

if obj.created_by:
mapping["created_by"] = UserSpec.serialize(obj.created_by)
if obj.created_by_id:
mapping["created_by"] = model_from_cache(UserSpec, id=obj.created_by_id)
5 changes: 1 addition & 4 deletions care/emr/resources/meta_artifact/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,7 @@ class MetaArtifactReadSpec(MetaArtifactBaseSpec):
@classmethod
def perform_extra_serialization(cls, mapping, obj):
mapping["id"] = obj.external_id
if obj.created_by:
mapping["created_by"] = UserSpec.serialize(obj.created_by)
if obj.updated_by:
mapping["updated_by"] = UserSpec.serialize(obj.updated_by)
cls.serialize_audit_users(mapping, obj)


class MetaArtifactCreateSpec(MetaArtifactBaseSpec):
Expand Down
10 changes: 3 additions & 7 deletions care/emr/resources/notes/notes_spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

from care.emr.models.notes import NoteMessage
from care.emr.resources.base import EMRResource
from care.emr.resources.user.spec import UserSpec


class NoteMessageSpec(EMRResource):
Expand Down Expand Up @@ -40,16 +39,13 @@ def perform_extra_deserialization(self, is_update, obj):
class NoteMessageReadSpec(NoteMessageSpec):
message_history: dict

created_by: UserSpec = {}
updated_by: UserSpec = {}
created_by: dict = {}
updated_by: dict = {}
created_date: datetime.datetime
modified_date: datetime.datetime

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

if obj.created_by:
mapping["created_by"] = UserSpec.serialize(obj.created_by).to_json()
if obj.updated_by:
mapping["updated_by"] = UserSpec.serialize(obj.updated_by).to_json()
cls.serialize_audit_users(mapping, obj)
10 changes: 3 additions & 7 deletions care/emr/resources/notes/thread_spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
from care.emr.models import Encounter
from care.emr.models.notes import NoteThread
from care.emr.resources.base import EMRResource
from care.emr.resources.user.spec import UserSpec


class NoteThreadSpec(EMRResource):
Expand Down Expand Up @@ -36,16 +35,13 @@ class NoteThreadUpdateSpec(NoteThreadSpec):


class NoteThreadReadSpec(NoteThreadSpec):
created_by: UserSpec = {}
updated_by: UserSpec = {}
created_by: dict = {}
updated_by: dict = {}
created_date: datetime.datetime
modified_date: datetime.datetime

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

if obj.created_by:
mapping["created_by"] = UserSpec.serialize(obj.created_by).to_json()
if obj.updated_by:
mapping["updated_by"] = UserSpec.serialize(obj.updated_by).to_json()
cls.serialize_audit_users(mapping, obj)
13 changes: 7 additions & 6 deletions care/emr/resources/observation/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,12 +130,13 @@ def perform_extra_serialization(cls, mapping, obj):
mapping["patient"] = None
mapping["questionnaire_response"] = None

if obj.created_by:
mapping["created_by"] = UserSpec.serialize(obj.created_by)
if obj.updated_by:
mapping["updated_by"] = UserSpec.serialize(obj.updated_by)
if obj.data_entered_by:
mapping["data_entered_by"] = UserSpec.serialize(obj.data_entered_by)
cls.serialize_audit_users(mapping, obj)
if obj.data_entered_by_id:
from care.emr.resources.base import model_from_cache

mapping["data_entered_by"] = model_from_cache(
UserSpec, id=obj.data_entered_by_id
)


class ObservationRetrieveSpec(ObservationReadSpec):
Expand Down
10 changes: 5 additions & 5 deletions care/emr/resources/observation_definition/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from pydantic import UUID4, BaseModel, Field, field_validator, model_validator

from care.emr.models.observation_definition import ObservationDefinition
from care.emr.resources.base import EMRResource
from care.emr.resources.base import EMRResource, model_from_cache
from care.emr.resources.common.condition_evaluator import EvaluatorConditionSpec
from care.emr.resources.facility.spec import FacilityBareMinimumSpec
from care.emr.resources.observation.valueset import (
Expand Down Expand Up @@ -224,8 +224,8 @@ class ObservationDefinitionReadSpec(BaseObservationDefinitionSpec):
@classmethod
def perform_extra_serialization(cls, mapping, obj):
mapping["id"] = obj.external_id
if obj.facility:
mapping["facility"] = FacilityBareMinimumSpec.serialize(
obj.facility
).to_json()
if obj.facility_id:
mapping["facility"] = model_from_cache(
FacilityBareMinimumSpec, id=obj.facility_id
)
mapping["slug_config"] = obj.parse_slug(obj.slug)
6 changes: 1 addition & 5 deletions care/emr/resources/patient/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -261,17 +261,13 @@ class PatientRetrieveSpec(PatientListSpec, PatientPermissionsMixin):
@classmethod
def perform_extra_serialization(cls, mapping, obj, *args, **kwargs):
from care.emr.resources.organization.spec import OrganizationReadSpec
from care.emr.resources.user.spec import UserSpec

super().perform_extra_serialization(mapping, obj, *args, **kwargs)
if obj.geo_organization:
mapping["geo_organization"] = OrganizationReadSpec.serialize(
obj.geo_organization
).to_json()
if obj.created_by:
mapping["created_by"] = UserSpec.serialize(obj.created_by).to_json()
if obj.updated_by:
mapping["updated_by"] = UserSpec.serialize(obj.updated_by).to_json()
cls.serialize_audit_users(mapping, obj)
if obj.instance_identifiers:
mapping["instance_identifiers"] = [
{
Expand Down
5 changes: 1 addition & 4 deletions care/emr/resources/questionnaire/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -290,10 +290,7 @@ def perform_extra_serialization(cls, mapping, obj):
for tag in obj.tags:
tags.append(QuestionnaireTag.get_tag(tag))
mapping["tags"] = tags
if obj.created_by:
mapping["created_by"] = UserSpec.serialize(obj.created_by)
if obj.updated_by:
mapping["updated_by"] = UserSpec.serialize(obj.updated_by)
cls.serialize_audit_users(mapping, obj)


# Add this to handle recursive Question type
Expand Down
5 changes: 1 addition & 4 deletions care/emr/resources/questionnaire_response/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,4 @@ def perform_extra_serialization(cls, mapping, obj):
mapping["encounter"] = obj.encounter.external_id
else:
mapping["encounter"] = None
if obj.created_by:
mapping["created_by"] = UserSpec.serialize(obj.created_by)
if obj.updated_by:
mapping["updated_by"] = UserSpec.serialize(obj.updated_by)
cls.serialize_audit_users(mapping, obj)
Loading
Loading