Example #1
0
File: patients.py Project: ganap/so
    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)
Example #2
0
File: experts.py Project: ganap/so
 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()
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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)