예제 #1
0
 def post(self, request, *args, **kwargs):
     user = get_request_user(request)
     request = remove_blank_fields(request)
     validated_data = request.data
     consultation = None
     if user and user.user_role.role == "D":
         if "symptom_id" in validated_data:
             symptom_id = validated_data.get("symptom_id")
             try:
                 symptomObj = (
                     GeneralSymptom.objects.all()
                     .filter(Q(assigned_doctor=user.id) and Q(id=symptom_id))
                     .first()
                 )
                 consultation = Consultation(symptoms=symptomObj)
                 consultation.Note = validated_data.get("note", consultation.Note)
                 consultation.prescription_text = validated_data.get(
                     "prescription_text", consultation.prescription_text
                 )
                 consultation.prescription = validated_data.get(
                     "prescription", consultation.prescription
                 )
                 consultation.save()
                 serialized_data = ConsultationSerializer(consultation)
                 return Response({"consultation_data": serialized_data.data})
             except Exception as e:
                 print(str(e))
                 return Response({"Error": str(e)})
         else:
             return Response({"Error": "Required symptoms_id in request data"})
     else:
         return Response(
             {"msg": "Authentication token needed in request headers"},
             status=status.HTTP_400_BAD_REQUEST,
         )
예제 #2
0
 def put(self, request):
     user = get_request_user(request)
     request = remove_blank_fields(request)
     new_data = request.data
     # print(user.user_role)
     if user and user.user_role.role == "P":
         try:
             with transaction.atomic():
                 patient_profile = (
                     PatientProfile.objects.all().filter(patient_id=user.id).first()
                 )
                 patient_profile.profile_pic = new_data.get(
                     "profile_pic", patient_profile.profile_pic
                 )
                 patient_profile.medical_history = new_data.get(
                     "medical_history", patient_profile.medical_history
                 )
                 patient_profile.save()
                 serialized_profile = PatientProfileSerializer(patient_profile)
                 response = {"patient_profile": serialized_profile.data}
                 return Response(response, status=status.HTTP_201_CREATED)
         except Exception as e:
             traceback.print_exc()
             return Response({"Error": str(e)}, status=status.HTTP_400_BAD_REQUEST)
     else:
         return Response(
             {"msg": "Authentication token needed in request headers"},
             status=status.HTTP_400_BAD_REQUEST,
         )
예제 #3
0
 def get(self,request,pk=None):
     user = get_request_user(request)
     context, response_status = (None, None)
     request = remove_blank_fields(request)
     if user and user.user_role.role == "D":
         xrayfields = XRayField.objects.filter()
     elif user and user.user_role.role == "P":
         pass
     else:
         return Response(
             {"msg": "Authentication token needed in request headers"},
             status=status.HTTP_400_BAD_REQUEST,
         )
예제 #4
0
 def put(self, request):
     user = get_request_user(request)
     request = remove_blank_fields(request)
     validated_data = request.data
     if user and validated_data:
         doctor_profile = (
             DoctorProfile.objects.all()
             .filter(doctor_id=user.id)
             .prefetch_related("doctor_qualification", "speciality")
             .first()
         )
         with transaction.atomic():
             qualificationDict = validated_data.get("doctor_qualification", None)
             if qualificationDict:
                 qualification = doctor_profile.doctor_qualification
                 qualification.degree = qualificationDict.get(
                     "degree", qualification.degree
                 )
                 qualification.institute = qualificationDict.get(
                     "institute", qualification.institute
                 )
             specialityDict = validated_data.get("speciality", None)
             if specialityDict:
                 speciality = doctor_profile.speciality
                 doctor_profile.speciality = validated_data.get(
                     "speciality", speciality
                 )
             doctor_profile.experience = validated_data.get(
                 "experience", doctor_profile.experience
             )
             doctor_profile.description = validated_data.get(
                 "description", doctor_profile.description
             )
             doctor_profile.fees = validated_data.get("fees", doctor_profile.fees)
             doctor_profile.save()
             serialized = DoctorProfileSerializer(doctor_profile)
         return Response(
             {
                 "msg": "Doctor profile Updated successfully",
                 "doctor_profile": serialized.data,
             },
             status=status.HTTP_200_OK,
         )
     else:
         return Response(
             {"msg": "Authentication token needed in request headers"},
             status=status.HTTP_400_BAD_REQUEST,
         )
예제 #5
0
    def post(self, request):
        user = get_request_user(request)
        context = None
        response_status = None
        if user and user.user_role.role == "P":
            request = remove_blank_fields(request)
            resultDict = create_or_update_symptoms(user=user, request=request)
            print(resultDict)
            try:
                with transaction.atomic():
                    general_symptom = resultDict.get("general_symptom", None)
                    if general_symptom:
                        general_symptom.save()
                        serialized_data = GeneralSymptomSerializer(general_symptom)
                        context = {
                            "msg": "General symptoms form is created successfully",
                            "general_symtopm": serialized_data.data,
                        }
                        response_status = status.HTTP_200_OK
                    else:
                        context = resultDict
                        response_status = status.HTTP_400_BAD_REQUEST
                    return Response(context, status=response_status)

            except Exception as e:
                return Response(
                    {
                        "msg": "database operation failed",
                        "Error": str(e),
                    },
                    status=status.HTTP_400_BAD_REQUEST,
                )
        else:
            print(user.user_role)
            return Response(
                {
                    "msg": "Authentication token needed in request headers and user must be a patient"
                },
                status=status.HTTP_400_BAD_REQUEST,
            )
예제 #6
0
    def put(self, request, pk):
        context, response_status = (None, None)
        xray_field = None
        user = get_request_user(request)
        role = user.user_role.role

        try:
            xray_field = XRayField.objects.select_related(
                "label", "uploaded_by", "uploaded_for"
            ).get(id=pk)
        except Exception as e:
            response_status = status.HTTP_403_FORBIDDEN
            context = {
                "Error": f"Object does not found for pk {pk} \n Database error {str(e)}"
            }
            return Response(context, response_status)
        if user and role == "D" and user.id == xray_field.uploaded_for.id:
            with transaction.atomic():
                label_name = request.data.get("label_name", None)
                description = request.data.get("description", None)
                file_label = FileLabel(name=label_name, description=description)
                file_label.save()
                xray_field.label = file_label
                xray_field.save()
        elif user and role == "P" and user.id == xray_field.uploaded_by.id:
            with transaction.atomic():
                request = remove_blank_fields(request)
                new_xray = request.data.get("xray_file", xray_field.xray)
                xray_field.xray = new_xray
                xray_field.save()
        else:
            response_status = status.HTTP_403_FORBIDDEN
            context = {
                "Error": "Authentication Needed and user must be a Patient to upload a XRay"
            }
        return Response(context, response_status)
예제 #7
0
 def post(self, request):
     user = get_request_user(request)
     context, response_status = (None, None)
     request = remove_blank_fields(request)
     if user and user.user_role.role == "P":
         xray = request.data.get("xray", None)
         uploaded_for_id = request.data.get("uploaded_for_id", None)
         if xray and uploaded_for_id:
             description = request.data.get("description", None)
             try:
                 uploaded_for = CustomUser.objects.get(id=uploaded_for_id)
                 xray_field = XRayField(
                     xray=xray,
                     uploaded_by=user,
                     uploaded_for=uploaded_for,
                     description=description,
                 )
                 xray_field.save()
                 serialized = XRayFieldSerializer(xray_field)
                 context = {
                     "msg": "XRay has been uploaded successfully",
                     "XRay": serialized.data,
                 }
                 response_status = status.HTTP_200_OK
             except Exception as e:
                 response_status = status.HTTP_400_BAD_REQUEST
                 context = {"Error": f"database error {str(e)}"}
         else:
             response_status = status.HTTP_400_BAD_REQUEST
             context = {"Error": "Missing file or uploaded for id in request data"}
     else:
         response_status = status.HTTP_403_FORBIDDEN
         context = {
             "Error": "Authentication Needed and user must be a Patient to upload a XRay"
         }
     return Response(context, response_status)