Ejemplo n.º 1
0
    def get_or_create_patient(self, patient_id, phone_number=None, \
                              backend=None, gender=None, date_registered=None):
        response = ''
        try:
            patient = Patient.objects.get(alias__iexact=patient_id)
            response = _("Patient %(id)s reregistered ") % {"id": patient_id }
            if not patient.subscribed:
                patient.subscribe()
            p_created = False
        except Patient.DoesNotExist:
            patient = Patient(alias=patient_id)
            response = _("Patient %(id)s registered ") % {"id": patient_id }
            p_created = True
        site_code = site_code_from_patient_id(patient_id)
        try:
            patient.site = Site.objects.get( code__iexact=site_code )
        except Site.DoesNotExist:
            response = _("Site %(code)s does not exist") % {"code": site_code }
            return (patient, response)
        if gender: patient.gender = gender
        patient.state = PatientState.objects.get(code='default')
        if date_registered: 
            patient.date_registered = date_registered
        patient.save()

        if phone_number is None:
            return (patient, response)
        # save connections
        conn, c_created = PersistantConnection.objects.get_or_create(\
                          identity= phone_number, backend=backend)
        if conn.reporter is None:
            response = response + \
                       _("with new number %(num)s") % \
                       {"num": phone_number}
        else:
            response = response + \
                       _("with existing number %(num)s") % \
                       {"num": phone_number }
            if conn.reporter.alias != patient.alias:
                response = response + _(" (from patient %(old_id)s)") % \
                                      {"old_id": conn.reporter.alias }
        conn.reporter = patient
        conn.save()
        patient.set_preferred_connection( conn )
        # you can only subscribe the patient once you have established 
        # their preferred connection
        patient.subscribe()
        return (patient, response)
Ejemplo n.º 2
0
 def is_patient_invalid(self, patient_id, gender=None, phone_number=None):
     if len(patient_id) == 0:
         return [_("Missing 'patient_id'.") + REGISTER_COMMAND ]
     try:
         site_code = site_code_from_patient_id(patient_id)
     except ValueError:
         return [_("Poorly formatted patient_id: %(code)s") % \
                 {"code" : patient_id}]
     try:
         Site.objects.get(code=site_code)
     except Site.DoesNotExist:
         return [_("Unknown sitecode %(code)s") % {"code" : site_code}]
     if len(gender) > 0:
         if not gender.lower().startswith('m') and not gender.lower().startswith('f'):
             return [_("Invalid gender %(gender)s") % {"gender" : gender}]
     if len(phone_number) > 0:
         if not re.match(r"^\+?\d+$", phone_number):
             return [_("Invalid phone number %(num)s") % {"num" : phone_number}]
     return False
Ejemplo n.º 3
0
 def is_patient_invalid(self, patient_id, gender=None, phone_number=None):
     if len(patient_id) == 0:
         return [_("Missing 'patient_id'. ") + REGISTER_COMMAND ]
     try:
         site_code = site_code_from_patient_id(patient_id)
     except ValueError:
         return [_("Patient (%(id)s) not recognized") % \
                 {"id" : patient_id}]
     try:
         Site.objects.get(code__iexact=site_code)
     except Site.DoesNotExist:
         response = _("Site %(code)s does not exist") % {"code": site_code }
         return [response]
     if len(gender) > 0:
         if not gender.lower().startswith('m') and not gender.lower().startswith('f'):
             return [_("Invalid gender %(gender)s") % {"gender" : gender}]
     if len(phone_number) > 0:
         if not re.match(r"^\+?\d+$", phone_number):
             return [_("Invalid phone number %(num)s") % {"num" : phone_number}]
     return False