def get(self, request, condition_id): try: patient = Patient.objects.get(email=request.user.email) condition = Condition.objects.get(id=condition_id, patient=patient) res = standard_response(data=ConditionSerializer(condition).data) return Response(res) except Condition.DoesNotExist: res = standard_response( errors={ 'forbidden': 'You are not the owner of this condition' }) return Response(res, status=status.HTTP_403_FORBIDDEN)
def post(self, request): """ Creates new specialty for a user and returns it """ serializer = SpecialtySerializer(data=request.data, many=True) if serializer.is_valid(): medic = Medic.objects.get(email=request.user.email) serializer.save(medic=medic) res = standard_response(data=serializer.data) return Response(res, status=status.HTTP_201_CREATED) res = standard_response(errors=serializer.errors) return Response(res, status=status.HTTP_400_BAD_REQUEST)
def post(self, request): """ Creates new condition for a user and returns it """ serializer = ConditionSerializer(data=request.data) if serializer.is_valid(): patient = Patient.objects.get(email=request.user.email) serializer.save(patient=patient) res = standard_response(data=serializer.data) return Response(res, status=status.HTTP_201_CREATED) res = standard_response(errors=serializer.errors) return Response(res, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, condition_id): try: patient = Patient.objects.get(email=request.user.email) condition = Condition.objects.get(id=condition_id, patient=patient) condition.delete() res = standard_response() return Response(res, status.HTTP_204_NO_CONTENT) except Condition.DoesNotExist: res = standard_response( errors={ 'forbidden': 'You are not the owner of this condition' }) return Response(res, status=status.HTTP_403_FORBIDDEN)
def put(self, request): """ Updates password and returns token """ serializer = ChangePasswordSerializer(data=request.data) if serializer.is_valid(): password = serializer.data['password1'] request.user.set_password(password) request.user.save() token = Token.objects.get(user=request.user) res = standard_response(data={'token': token.key}) return Response(res) res = standard_response(errors=serializer.errors) return Response(res, status=status.HTTP_400_BAD_REQUEST)
def post(self, request): """ Return token for logged user """ serializer = LoginSerializer(data=request.data) if serializer.is_valid(): data = { **serializer.data, 'types': Token.objects.get(key=serializer.data['token']).user.type } res = standard_response(data=data) return Response(res) res = standard_response(errors=serializer.errors) return Response(res, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, medic_id): """ Delete existing PatientMedic relationship. """ try: medic = Medic.objects.get(id=medic_id) except Medic.DoesNotExist: res = standard_response(errors={'medic': 'This medic does not exist'}) return Response(res, status=status.HTTP_404_NOT_FOUND) patient = Patient.objects.get(email=request.user.email) patient.medics.remove(medic) res = standard_response() return Response(res, status.HTTP_204_NO_CONTENT)
def post(self, request): """ Return token for newly created user """ serializer = SignupSerializer(data=request.data) if serializer.is_valid(): user = serializer.save() token = Token.objects.get(user=user) res = standard_response(data={ 'token': token.key, 'types': user.type }) return Response(res, status=status.HTTP_201_CREATED) res = standard_response(errors=serializer.errors) return Response(res, status=status.HTTP_400_BAD_REQUEST)
def post(self, request): serializer = ShareSerializer(data=request.data) if serializer.is_valid(): try: patient = Patient.objects.get(email=request.user.email) medic = Medic.objects.get( email=serializer.validated_data['email']) medic.patients.add(patient) res = standard_response( data=MedicProfileSerializer(medic).data) return Response(res, status=status.HTTP_201_CREATED) except Medic.DoesNotExist: res = standard_response( errors={'medic': 'This user does not exist.'}) return Response(res, status=status.HTTP_404_NOT_FOUND) res = standard_response(errors=serializer.errors) return Response(res, status=status.HTTP_400_BAD_REQUEST)
def get(self, request): """ Return a list of all background subtypes """ background_subtypes = BackgroundSubtype.objects.all() serializer = BackgroundSubtypeSerializer(background_subtypes, many=True) res = standard_response(data=serializer.data) return Response(res)
def put(self, request, condition_id): try: patient = Patient.objects.get(email=request.user.email) condition = Condition.objects.get(id=condition_id, patient=request.user) serializer = ConditionSerializer(condition, data=request.data) if serializer.is_valid(): serializer.save(patient=patient) res = standard_response(data=serializer.data) return Response(res) res = standard_response(errors=serializer.errors) return Response(res, status=status.HTTP_400_BAD_REQUEST) except Condition.DoesNotExist: res = standard_response( errors={ 'forbidden': 'You are not the owner of this condition' }) return Response(res, status=status.HTTP_403_FORBIDDEN)
def get(self, request): """ Return a list of all medic's patients """ medic = Medic.objects.get(email=request.user.email) query_set = PatientMedic.objects.filter(medic=medic).values('patient') patients = Patient.objects.filter(id__in=query_set) serializer = PatientProfileSerializer(patients, many=True) res = standard_response(data=serializer.data) return Response(res)
def get(self, request): """ Return a list of all patient's medics """ patient = Patient.objects.get(email=request.user.email) query_set = PatientMedic.objects.filter(patient=patient).values('medic') medics = Medic.objects.filter(id__in=query_set) serializer = MedicProfileSerializer(medics, many=True) res = standard_response(data=serializer.data) return Response(res)
def delete(self, request): try: medic = Medic.objects.get(email=request.user.email) specialties = Specialty.objects.filter( id__in=request.data['specialties'], medic=medic) if not specialties: raise Specialty.DoesNotExist specialties.delete() return Response(status=status.HTTP_204_NO_CONTENT) except Specialty.DoesNotExist: res = standard_response( errors={'specialty': 'The given specialties does not exist'}) return Response(res, status=status.HTTP_404_NOT_FOUND)
def get(self, request): """ Return a list of all conditions of patient """ user = request.user if 'patient_id' in request.query_params: patient_id = request.query_params['patient_id'] try: medic = Medic.objects.get(email=request.user.email) patient_medic = PatientMedic.objects.get( medic=medic, patient__id=patient_id) except PatientMedic.DoesNotExist: res = standard_response( errors={ 'patient': 'This user has no access to the patient\'s information' }) return Response(res, status=status.HTTP_404_NOT_FOUND) user = patient_medic.patient patient_conditions = Condition.objects.filter( patient=user).order_by('-date_of_diagnosis') conditions = ConditionSerializer(patient_conditions, many=True) res = standard_response(data=conditions.data) return Response(res)
def get(self, request): """ Return a list of user's type """ res = standard_response(data={'types': request.user.type}) return Response(res)