Skip to content

Commit

Permalink
Move public facility API to EMR
Browse files Browse the repository at this point in the history
  • Loading branch information
vigneshhari committed Jan 13, 2025
1 parent 3411890 commit 8c14745
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
33 changes: 31 additions & 2 deletions care/emr/api/viewsets/facility.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
from django.db.models import Q
from django.utils.decorators import method_decorator
from django_filters import CharFilter, FilterSet
from django_filters import CharFilter, FilterSet, NumberFilter
from django_filters import rest_framework as filters
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import filters as drf_filters
from rest_framework.decorators import action, parser_classes
from rest_framework.exceptions import PermissionDenied
from rest_framework.generics import get_object_or_404
Expand All @@ -24,8 +26,18 @@
from care.utils.file_uploads.cover_image import delete_cover_image


class FacilityFilters(FilterSet):
class GeoOrganizationFilter(filters.UUIDFilter):
def filter(self, qs, value):
if value:
organization = get_object_or_404(Organization, external_id=value)
return qs.filter(geo_organization_cache__overlap=[organization.id])
return qs


class FacilityFilters(filters.FilterSet):
name = CharFilter(field_name="name", lookup_expr="icontains")
facility_type = NumberFilter(field_name="facility_type")
organization = GeoOrganizationFilter()
phone_number = CharFilter(field_name="phone_number", lookup_expr="iexact")


Expand Down Expand Up @@ -124,3 +136,20 @@ def get_queryset(self):
organization__facility__external_id=self.kwargs["facility_external_id"]
).values("user_id")
)


class AllFacilityViewSet(EMRModelReadOnlyViewSet):
permission_classes = ()
authentication_classes = ()

database_model = Facility
pydantic_model = FacilityCreateSpec
pydantic_read_model = FacilityReadSpec
pydantic_retrieve_model = FacilityRetrieveSpec
filterset_class = FacilityFilters
filter_backends = (filters.DjangoFilterBackend, drf_filters.SearchFilter)
lookup_field = "external_id"
search_fields = ["name"]

def get_queryset(self):
return Facility.objects.filter(is_public=True).select_related()
2 changes: 1 addition & 1 deletion config/api_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from care.emr.api.viewsets.condition import DiagnosisViewSet, SymptomViewSet
from care.emr.api.viewsets.encounter import EncounterViewSet
from care.emr.api.viewsets.facility import (
AllFacilityViewSet,
FacilitySchedulableUsersViewSet,
FacilityUsersViewSet,
FacilityViewSet,
Expand Down Expand Up @@ -54,7 +55,6 @@
from care.emr.api.viewsets.scheduling.booking import TokenBookingViewSet
from care.emr.api.viewsets.user import UserViewSet
from care.emr.api.viewsets.valueset import ValueSetViewSet
from care.facility.api.viewsets.facility import AllFacilityViewSet

router = DefaultRouter() if settings.DEBUG else SimpleRouter()

Expand Down

0 comments on commit 8c14745

Please sign in to comment.