Exemple #1
0
 def getNextProtocolAssignedMeasure(self):
     '''
     It returns when the patient information should be measured
     :return: tuple (datetime, schedule title)
     '''
     nextExecution = ExecutedProtocol.getNextExecution(patient=self.patient)
     return (nextExecution.schedule_time.strftime("%Y-%m-%d %H:%M"),
             nextExecution.schedule.title)
    def assignPatients(self):
        try:
            physician_user = User.objects.create_user('João Almeida',
                                                      '*****@*****.**', '12345')
            physician = Profile(user=physician_user, role=Profile.PHYSICIAN)
            physician.save()
            max = len(Patient.objects.all()) / 4
            count = 0
            for patient in Patient.objects.all():
                # Create admission
                Admission.new(patient=patient,
                              physician=physician,
                              room="c." + str(patient.id))

                # Assign protocols
                protocol = Protocol.objects.get(title="Hypoglycemia")
                ExecutedProtocol.new(protocol=protocol,
                                     patient=patient,
                                     physician=physician)

                if count % 2 == 0:  #Execute one mesurement in some patients
                    inquiryData = {"Blood Glucose": "12", "Diet": "zero"}
                    CVPatient.addCVSet(inquiryData, patient)
                    assignment = ExecutedProtocol.getNextExecution(patient)
                    result = assignment.run(inquiryData)
                    # Next assigment
                    protocol = assignment.protocol
                    last_execution = assignment.schedule_time
                    ExecutedProtocol.new(protocol=protocol,
                                         patient=patient,
                                         physician=physician,
                                         last_execution=last_execution)

                count += 1
                if count == max:
                    break
        except Exception as ex:
            self.stdout.write(
                "\tError: Probably no protocol or doctors in the database!\n")
            self.stdout.write(ex)
    def protocolInquiryComponents(self, request):
        patientid = self.request.query_params.get('patient', None)
        protocolid = self.request.query_params.get('protocol', None)

        if (patientid):
            patient = Patient.objects.get(id=patientid)
            assignment = ExecutedProtocol.getNextExecution(patient)
            protocol = assignment.protocol
        elif (protocolid):
            protocol = Protocol.objects.get(id=protocolid)
        else:
            return Response({'error': "Invalid parameters"})

        elements = ProtocolElement.all(protocol=protocol,
                                       type=ProtocolElement.INQUIRY)

        return Response({
            "results": {
                "Protocol": ProtocolSerializer(protocol).data,
                "Elements": PEInquirySerializer(elements, many=True).data
            }
        })
    def run(self, request):
        patientId = request.data.get('patientID', None)
        protocolId = request.data.get('protocolID', None)
        inquiryData = request.data.get('inquiryData', None)

        if (patientId == None or protocolId == None or inquiryData == None):
            return Response({'error': "Invalid parameters"})

        physician = Profile.objects.get(user=request.user)
        patient = Patient.objects.get(id=patientId)
        CVPatient.addCVSet(inquiryData, patient)

        assignment = ExecutedProtocol.getNextExecution(patient)
        result = assignment.run(inquiryData=inquiryData, physician=physician)

        #Next assigment
        protocol = assignment.protocol
        last_execution = assignment.schedule_time
        ExecutedProtocol.new(protocol=protocol,
                             patient=patient,
                             physician=physician,
                             last_execution=last_execution)

        return Response({"results": result})