Skip to content

Commit

Permalink
fix: merge master branch
Browse files Browse the repository at this point in the history
  • Loading branch information
aeswibon committed May 19, 2023
1 parent b49d5b3 commit ec2b288
Show file tree
Hide file tree
Showing 19 changed files with 315 additions and 187 deletions.
1 change: 0 additions & 1 deletion care/facility/api/serializers/asset.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ def validate_qr_code_id(self, value):
return value

def validate(self, attrs):

user = self.context["request"].user
if "location" in attrs:
location = get_object_or_404(
Expand Down
2 changes: 0 additions & 2 deletions care/facility/api/serializers/daily_round.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,6 @@ class Meta:
exclude = ("deleted",)

def update(self, instance, validated_data):

instance.last_edited_by = self.context["request"].user

if instance.consultation.discharge_date:
Expand Down Expand Up @@ -162,7 +161,6 @@ def update_last_daily_round(self, daily_round_obj):
).generate()

def create(self, validated_data):

# Authorisation Checks

# Skip check for asset user
Expand Down
1 change: 0 additions & 1 deletion care/facility/api/serializers/patient_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@


class PatientScopedSearchSerializer(serializers.ModelSerializer):

gender = ChoiceField(choices=GENDER_CHOICES)
facility = FacilityBasicInfoSerializer()
id = serializers.CharField(source="patient_external_id")
Expand Down
21 changes: 10 additions & 11 deletions care/facility/api/serializers/prescription.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
from rest_framework import serializers

from care.facility.models import Prescription, MedicineAdministration
from care.users.api.serializers.user import (
UserBaseMinimumSerializer,
)
from care.facility.models import MedicineAdministration, Prescription
from care.users.api.serializers.user import UserBaseMinimumSerializer


class PrescriptionSerializer(serializers.ModelSerializer):
Expand All @@ -14,7 +12,11 @@ class PrescriptionSerializer(serializers.ModelSerializer):
last_administered_on = serializers.SerializerMethodField()

def get_last_administered_on(self, obj):
last_administration = MedicineAdministration.objects.filter(prescription=obj).order_by("-created_date").first()
last_administration = (
MedicineAdministration.objects.filter(prescription=obj)
.order_by("-created_date")
.first()
)
if last_administration:
return last_administration.created_date
return None
Expand All @@ -31,7 +33,7 @@ class Meta:
"created_date",
"modified_date",
"discontinued_date",
"is_migrated"
"is_migrated",
)

def validate(self, attrs):
Expand All @@ -58,14 +60,11 @@ class MedicineAdministrationSerializer(serializers.ModelSerializer):

class Meta:
model = MedicineAdministration
exclude = (
"deleted",
)
exclude = ("deleted",)
read_only_fields = (
"external_id",
"administered_by",
"created_date",
"modified_date",
"prescription"
"prescription",
)

5 changes: 1 addition & 4 deletions care/facility/api/serializers/prescription_supplier.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@


class MinimalPatientSerializer(serializers.ModelSerializer):

id = serializers.CharField(source="external_id")

class Meta:
Expand All @@ -18,7 +17,6 @@ class Meta:


class PrescriptionSupplierConsultationSerializer(serializers.ModelSerializer):

id = serializers.CharField(source="external_id", read_only=True)
patient = MinimalPatientSerializer(read_only=True)

Expand All @@ -31,11 +29,10 @@ class Meta:
"prn_prescription",
"patient",
)
fields = ("id", "prescriptions", "patient")
fields = ("id", "prescriptions", "patient")


class PrescriptionSupplierSerializer(serializers.ModelSerializer):

id = serializers.CharField(source="external_id", read_only=True)
scheme = ChoiceField(choices=PrescriptionSupplier.SchemeChoices)
status = ChoiceField(choices=PrescriptionSupplier.StatusChoices)
Expand Down
1 change: 0 additions & 1 deletion care/facility/api/viewsets/daily_round.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ def get_serializer(self, *args, **kwargs):

@action(methods=["POST"], detail=False)
def analyse(self, request, **kwargs):

# Request Body Validations

if self.FIELDS_KEY not in request.data:
Expand Down
53 changes: 32 additions & 21 deletions care/facility/api/viewsets/prescription.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
from django.shortcuts import get_object_or_404
from django_filters import rest_framework as filters
from rest_framework import mixins
from rest_framework import status
from rest_framework import mixins, status
from rest_framework.decorators import action
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.viewsets import GenericViewSet

from care.facility.api.serializers.prescription import PrescriptionSerializer, MedicineAdministrationSerializer
from care.facility.models import Prescription, MedicineAdministration, PrescriptionType, generate_choices
from care.facility.api.serializers.prescription import (
MedicineAdministrationSerializer,
PrescriptionSerializer,
)
from care.facility.models import (
MedicineAdministration,
Prescription,
PrescriptionType,
generate_choices,
)
from care.utils.filters import CareChoiceFilter
from care.utils.queryset.consultation import get_consultation_queryset

Expand All @@ -27,25 +34,26 @@ class MedicineAdminstrationFilter(filters.FilterSet):
prescription = filters.UUIDFilter(field_name="prescription__external_id")


class MedicineAdministrationViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, GenericViewSet):
class MedicineAdministrationViewSet(
mixins.ListModelMixin, mixins.RetrieveModelMixin, GenericViewSet
):
serializer_class = MedicineAdministrationSerializer
permission_classes = (
IsAuthenticated,
)
permission_classes = (IsAuthenticated,)
queryset = MedicineAdministration.objects.all().order_by("-created_date")
lookup_field = "external_id"
filter_backends = (filters.DjangoFilterBackend,)
filterset_class = MedicineAdminstrationFilter

def get_consultation_obj(self):
return get_object_or_404(
get_consultation_queryset(self.request.user).filter(external_id=self.kwargs["consultation_external_id"]))
get_consultation_queryset(self.request.user).filter(
external_id=self.kwargs["consultation_external_id"]
)
)

def get_queryset(self):
consultation_obj = self.get_consultation_obj()
return self.queryset.filter(
prescription__consultation_id=consultation_obj.id
)
return self.queryset.filter(prescription__consultation_id=consultation_obj.id)


class ConsultationPrescriptionFilter(filters.FilterSet):
Expand All @@ -60,23 +68,22 @@ class ConsultationPrescriptionViewSet(
GenericViewSet,
):
serializer_class = PrescriptionSerializer
permission_classes = (
IsAuthenticated,
)
permission_classes = (IsAuthenticated,)
queryset = Prescription.objects.all().order_by("-created_date")
lookup_field = "external_id"
filter_backends = (filters.DjangoFilterBackend,)
filterset_class = ConsultationPrescriptionFilter

def get_consultation_obj(self):
return get_object_or_404(
get_consultation_queryset(self.request.user).filter(external_id=self.kwargs["consultation_external_id"]))
get_consultation_queryset(self.request.user).filter(
external_id=self.kwargs["consultation_external_id"]
)
)

def get_queryset(self):
consultation_obj = self.get_consultation_obj()
return self.queryset.filter(
consultation_id=consultation_obj.id
)
return self.queryset.filter(consultation_id=consultation_obj.id)

def perform_create(self, serializer):
consultation_obj = self.get_consultation_obj()
Expand All @@ -86,11 +93,15 @@ def perform_create(self, serializer):
def discontinue(self, request, *args, **kwargs):
prescription_obj = self.get_object()
prescription_obj.discontinued = True
prescription_obj.discontinued_reason = request.data.get("discontinued_reason", None)
prescription_obj.discontinued_reason = request.data.get(
"discontinued_reason", None
)
prescription_obj.save()
return Response({}, status=status.HTTP_201_CREATED)

@action(methods=["POST"], detail=True, serializer_class=MedicineAdministrationSerializer)
@action(
methods=["POST"], detail=True, serializer_class=MedicineAdministrationSerializer
)
def administer(self, request, *args, **kwargs):
prescription_obj = self.get_object()
serializer = MedicineAdministrationSerializer(data=request.data)
Expand Down
Loading

0 comments on commit ec2b288

Please sign in to comment.