Esempio n. 1
0
 def filter_queryset(self, request, queryset, view):
     if request.user.is_superuser:
         pass
     else:
         if request.user.user_type >= User.TYPE_VALUE_MAP["StateLabAdmin"]:
             q_objects = Q(orgin_facility__state=request.user.state)
             q_objects |= Q(
                 shifting_approving_facility__state=request.user.state)
             q_objects |= Q(assigned_facility__state=request.user.state)
             return queryset.filter(q_objects)
         elif request.user.user_type >= User.TYPE_VALUE_MAP[
                 "DistrictLabAdmin"]:
             q_objects = Q(orgin_facility__district=request.user.district)
             q_objects |= Q(shifting_approving_facility__district=request.
                            user.district)
             q_objects |= Q(
                 assigned_facility__district=request.user.district)
             return queryset.filter(q_objects)
         facility_ids = get_accessible_facilities(request.user)
         q_objects = Q(orgin_facility__id__in=facility_ids)
         q_objects |= Q(shifting_approving_facility__id__in=facility_ids)
         q_objects |= Q(assigned_facility__id__in=facility_ids,
                        status__gte=20)
         q_objects |= Q(patient__facility__id__in=facility_ids)
         queryset = queryset.filter(q_objects)
     return queryset
Esempio n. 2
0
 def get_queryset(self):
     session_page = self.request.GET.get("session_page", 1)
     try:
         session_page = int(session_page)
     except:
         pass
     investigations = self.request.GET.get("investigations", "")
     queryset = self.queryset.filter(
         consultation__patient__external_id=self.kwargs.get(
             "patient_external_id"))
     sessions = (queryset.filter(
         investigation__external_id__in=investigations.split(",")).order_by(
             "-session__created_date").distinct("session__created_date")[
                 (session_page - 1) * self.SESSION_PER_PAGE:(session_page) *
                 self.SESSION_PER_PAGE])
     if not sessions.exists():
         return self.queryset.none()
     queryset = queryset.filter(
         session_id__in=sessions.values("session_id"))
     if self.request.user.is_superuser:
         return queryset
     elif self.request.user.user_type >= User.TYPE_VALUE_MAP[
             "StateLabAdmin"]:
         return queryset.filter(
             consultation__patient__facility__state=self.request.user.state)
     elif self.request.user.user_type >= User.TYPE_VALUE_MAP[
             "DistrictLabAdmin"]:
         return queryset.filter(
             consultation__patient__facility__district=self.request.user.
             district)
     allowed_facilities = get_accessible_facilities(self.request.user)
     filters = Q(consultation__patient__facility_id__in=allowed_facilities)
     filters |= Q(consultation__assigned_to=self.request.user)
     return queryset.filter(filters)
Esempio n. 3
0
 def get_queryset(self):
     queryset = self.queryset.filter(
         request__external_id=self.kwargs.get("resource_external_id"))
     if self.request.user.is_superuser:
         pass
     else:
         if self.request.user.user_type >= User.TYPE_VALUE_MAP[
                 "StateLabAdmin"]:
             q_objects = Q(
                 request__orgin_facility__state=self.request.user.state)
             q_objects |= Q(
                 request__approving_facility__state=self.request.user.state)
             q_objects |= Q(
                 request__assigned_facility__state=self.request.user.state)
             return queryset.filter(q_objects)
         elif self.request.user.user_type >= User.TYPE_VALUE_MAP[
                 "DistrictLabAdmin"]:
             q_objects = Q(request__orgin_facility__district=self.request.
                           user.district)
             q_objects |= Q(request__approving_facility__district=self.
                            request.user.district)
             q_objects |= Q(request__assigned_facility__district=self.
                            request.user.district)
             return queryset.filter(q_objects)
         facility_ids = get_accessible_facilities(self.request.user)
         q_objects = Q(request__orgin_facility__id__in=facility_ids)
         q_objects |= Q(request__approving_facility__id__in=facility_ids)
         q_objects |= Q(request__assigned_facility__id__in=facility_ids)
         queryset = queryset.filter(q_objects)
     return queryset
Esempio n. 4
0
def get_asset_location_queryset(user):
    queryset = AssetLocation.objects.all()
    if user.is_superuser:
        pass
    elif user.user_type >= User.TYPE_VALUE_MAP["StateLabAdmin"]:
        queryset = queryset.filter(facility__state=user.state)
    elif user.user_type >= User.TYPE_VALUE_MAP["DistrictLabAdmin"]:
        queryset = queryset.filter(facility__district=user.district)
    else:
        allowed_facilities = get_accessible_facilities(user)
        queryset = queryset.filter(facility__id__in=allowed_facilities)
    return queryset
Esempio n. 5
0
 def get_queryset(self):
     user = self.request.user
     queryset = self.queryset
     if user.is_superuser:
         pass
     elif user.user_type >= User.TYPE_VALUE_MAP["StateLabAdmin"]:
         queryset = queryset.filter(facility__state=user.state)
     elif user.user_type >= User.TYPE_VALUE_MAP["DistrictLabAdmin"]:
         queryset = queryset.filter(facility__district=user.district)
     else:
         allowed_facilities = get_accessible_facilities(user)
         queryset = queryset.filter(facility__id__in=allowed_facilities)
     return super().get_queryset()
Esempio n. 6
0
def get_patient_queryset(user):
    queryset = PatientRegistration.objects.all()
    if not user.is_superuser:
        return queryset
    if user.user_type >= User.TYPE_VALUE_MAP["StateLabAdmin"]:
        queryset = queryset.filter(facility__state=user.state)
    elif user.user_type >= User.TYPE_VALUE_MAP["DistrictLabAdmin"]:
        queryset = queryset.filter(facility__district=user.district)
    else:
        allowed_facilities = get_accessible_facilities(user)
        q_filters = Q(facility__id__in=allowed_facilities)
        q_filters |= Q(last_consultation__assigned_to=user)
        q_filters |= Q(assigned_to=user)
        queryset = queryset.filter(q_filters)
    return queryset
Esempio n. 7
0
 def get_queryset(self):
     user = self.request.user
     queryset = self.queryset.filter(patient__external_id=self.kwargs.get("patient_external_id"))
     if not user.is_superuser:
         return queryset
     if user.user_type >= User.TYPE_VALUE_MAP["StateLabAdmin"]:
         queryset = queryset.filter(patient__facility__state=user.state)
     elif user.user_type >= User.TYPE_VALUE_MAP["DistrictLabAdmin"]:
         queryset = queryset.filter(patient__facility__district=user.district)
     else:
         allowed_facilities = get_accessible_facilities(user)
         q_filters = Q(patient__facility__id__in=allowed_facilities)
         q_filters |= Q(patient__last_consultation__assigned_to=user)
         q_filters |= Q(patient__assigned_to=user)
         queryset = queryset.filter(q_filters)
     return queryset
Esempio n. 8
0
    def filter_queryset(self, request, queryset, view):
        if view.action == "list":
            queryset = self.filter_list_queryset(request, queryset, view)

        if not request.user.is_superuser:
            if request.user.user_type >= User.TYPE_VALUE_MAP["StateLabAdmin"]:
                queryset = queryset.filter(facility__state=request.user.state)
            elif request.user.user_type >= User.TYPE_VALUE_MAP["DistrictLabAdmin"]:
                queryset = queryset.filter(facility__district=request.user.district)
            elif view.action != "transfer":
                allowed_facilities = get_accessible_facilities(request.user)
                filters = Q(facility__id__in=allowed_facilities)
                filters |= Q(last_consultation__assigned_to=request.user)
                queryset = queryset.filter(filters)

        return queryset