def post(self, request, *args, **kwargs): is_admin = getattr(request.user, 'is_admin', None) is_moderator = getattr(request.user, 'is_moderator', None) if not is_admin or not is_moderator: return Response({}, status.HTTP_403_FORBIDDEN) data = dict(request.data) send_mail = not data['send_email'] patient = users.CreateUser(data['username'], data['email'], password=data['password'], unittest=send_mail) patient_mongo = fhir_users.Patient( owner=patient.pk, name=creator.HumanName(data['patient']['name']), degree=data['patient']['degree'], speciality=data['patient']['speciality'], clinical_patientise=data['patient']['clinical_patientise'], link_to_drupal=data['patient']['link_to_drupal']) patient_mongo.save() patient.is_patient = True patient.patient = str(patient_mongo.pk) patient.save() data = serializers.MainUserSerializer(patient) return Response(data.data, status.HTTP_201_CREATED)
def perform_update(self, serializer): serializer.save() instance = self.get_object() expert = fhir_users.Expert.objects.get(pk=instance.expert) for field in self.request.data['expert'].keys(): value = self.request.data['expert'][field] if type(value) == type({}): setattr(expert, field, creator.HumanName(value)) else: setattr(expert, field, value) expert.save()
def put(self, request, *args, **kwargs): data = dict(request.data) name_list = [] data = data['patient'] for name in data['name']: name = creator.HumanName(name) if name: name_list.append(name) # # data_contacts = data['telecom'] contacts = [] for dc in data_contacts: if not dc['value']: continue contacts.append( creator.ContactPoint(dc) ) # # address_list = [] for address in data['address']: address = creator.Address(address) if address: address_list.append(address) # # patient = fhir_users.Patient.objects.get(pk=request.user.patient) patient.name = name_list patient.telecom = contacts patient.gender = data['gender'] patient.birthDate = creator.getDateTimeOrNone(data['birthDate']) patient.maritalStatus = data['maritalStatus'] patient.address = address_list patient.save() # updating fhir doc user = models.MainUser.objects.get(pk=patient.owner) fhir_doc = FhirDoc.objects.get(pk=user.fhir_doc) data = self.request.data['fhir_doc'] for f in data.keys(): setattr(fhir_doc, f, data[f]) fhir_doc.save() data = serializers.PatientSerializer(patient) return Response(data.data)
def post(self, request, *args, **kwargs): data = dict(request.data) if not request.user.is_authenticated(): return Response({}, status.HTTP_401_UNAUTHORIZED) fhir_users.Patient.objects(owner=request.user.pk).delete() humanName = creator.HumanName(data['name']) # # data_contacts = data['telecom'] contacts = [] for dc in data_contacts: if not dc['value']: continue contacts.append( creator.ContactPoint(dc) ) # # data_address = data['address'] address = creator.Address(data_address) # # patient = fhir_users.Patient( name=[humanName], telecom=contacts, gender=data['gender'], birthDate=creator.getDateTimeOrNone(data['birthDate']), maritalStatus=data['maritalStatus'], address=[address], owner=request.user.pk ) patient.save() request.user.patient = str(patient.pk) request.user.is_organization = False request.user.organization = '' request.user.save() data = serializers.PatientSerializer(patient) return Response(data.data)
def update(self, request, *args, **kwargs): data = dict(request.data) instance = self.get_object() name = creator.HumanName(data['name']) telecom_list = [] for t in data['telecom']: t = creator.ContactPoint(t) if t: telecom_list.append(t) address = creator.Address(data.get('address', None)) period = creator.Period(data.get('period', None)) instance.relationship = data['relationship'] instance.name = name instance.telecom = telecom_list instance.address = address instance.period = period instance.gender = data['gender'] instance.save() data = serializers.RelatedPersonSerializer(instance) return Response(data.data)
def post(self, request, *args, **kwargs): data = dict(request.data) name = creator.HumanName(data['name']) telecom_list = [] for t in data['telecom']: t = creator.ContactPoint(t) telecom_list.append(t) address = creator.Address(data.get('address', None)) period = creator.Period(data.get('period', None)) rperson = users.RelatedPerson( owner=request.user.pk, relationship=data['relationship'], name=name, telecom=telecom_list, address=address, gender=data['gender'], period=period ) rperson.save() data = serializers.RelatedPersonSerializer(rperson) return Response(data.data)