def new_case (self, message, last, first, gender, dob,guardian="", contact="", zone=None): """Expected format for nnnnew command, sent as a reminder""" """Format: <>new [patient last name] [patient first name] gender[m/f] [dob ddmmyy] [guardian] [contact #] [zone - optional]<> Purpose: register a new patient into the system. Receive patient ID number back""" # reporter reporter = message.persistant_connection.reporter dob = re.sub(r'\D', '', dob) try: dob = time.strptime(dob, "%d%m%y") except ValueError: try: dob = time.strptime(dob, "%d%m%Y") except ValueError: raise HandlerFailed(_("Couldn't understand date: %s") % dob) dob = datetime.date(*dob[:3]) if guardian: guardian = guardian.title() # todo: move this to a more generic get_description info = { "first_name" : first.title(), "last_name" : last.title(), "gender" : gender.upper()[0], "dob" : dob, "guardian" : guardian, "mobile" : contact, "reporter" : reporter, "location" : reporter.location } ## check to see if the case already exists iscase = Case.objects.filter(first_name=info['first_name'], last_name=info['last_name'], reporter=info['reporter'], dob=info['dob']) if iscase: #message.respond(_( #"%(last_name)s, %(first_name)s has already been registered by you.") % info) info["PID"] = iscase[0].ref_id self.info(iscase[0].id) self.info(info) message.respond(_( "%(last_name)s, %(first_name)s (+%(PID)s) has already been registered by %(reporter)s.") % info) # TODO: log this message return True case = Case(**info) case.save() info.update({ "id": case.ref_id, "last_name": last.upper(), "age": case.age() }) message.respond(_( "New +%(id)s: %(last_name)s, %(first_name)s %(gender)s/%(age)s " + "(%(guardian)s) %(location)s") % info) log(case, "patient_created") return True
def new_case (self, message, last, first, gender, dob, guardian="", contact="", zone=None): provider = message.sender.provider if not zone: if provider.clinic: zone = provider.clinic.zone else: zone = Zone.objects.get(number=zone[1:]) dob = re.sub(r'\D', '', dob) try: dob = time.strptime(dob, "%d%m%y") except ValueError: try: dob = time.strptime(dob, "%d%m%Y") except ValueError: raise HandlerFailed(_("Couldn't understand date: %s") % dob) dob = datetime.date(*dob[:3]) if guardian: guardian = guardian.title() # todo: move this to a more generic get_description info = { "first_name" : first.title(), "last_name" : last.title(), "gender" : gender.upper()[0], "dob" : dob, "guardian" : guardian, "mobile" : contact, "provider" : provider, "zone" : zone } ## TODO: check to see if the case already exists case = Case(**info) case.save() info.update({ "id": case.ref_id, "last_name": last.upper(), "age": case.age() }) if zone: info["zone"] = zone.name message.respond(_( "New +%(id)s: %(last_name)s, %(first_name)s %(gender)s/%(age)s " + "(%(guardian)s) %(zone)s") % info) log(case, "patient_created") return True
def new_case (self, message, last, first, gender, dob, guardian="", contact="", zone=None): provider = message.sender.provider if not zone: if provider.clinic: zone = provider.clinic.zone else: zone = Zone.objects.get(number=zone[1:]) dob = re.sub(r'\D', '', dob) try: dob = time.strptime(dob, "%d%m%y") except ValueError: try: dob = time.strptime(dob, "%d%m%Y") except ValueError: raise HandlerFailed(_("Couldn't understand date: %s") % dob) dob = datetime.date(*dob[:3]) if guardian: guardian = guardian.title() # todo: move this to a more generic get_description info = { "first_name" : first.title(), "last_name" : last.title(), "gender" : gender.upper()[0], "dob" : dob, "guardian" : guardian, "mobile" : contact, "provider" : provider, "zone" : zone } ## check to see if the case already exists iscase = Case.objects.filter(first_name=info['first_name'], last_name=info['last_name'], provider=info['provider'], dob=info['dob']) if iscase: #message.respond(_( #"%(last_name)s, %(first_name)s has already been registered by you.") % info) info["PID"] = iscase[0].id self.info(iscase[0].id) self.info(info) self.int2dom(message, _( "%(last_name)s, %(first_name)s (+%(PID)s) has already been registered by %(provider)s.") % info) # TODO: log this message return True case = Case(**info) case.save() info.update({ "id": case.ref_id, "last_name": last.upper(), "age": case.age() }) if zone: info["zone"] = zone.name #message.respond(_( # "New +%(id)s: %(last_name)s, %(first_name)s %(gender)s/%(age)s " + # "(%(guardian)s) %(zone)s") % info) self.int2dom(message, _( "New +%(id)s: %(last_name)s, %(first_name)s %(gender)s/%(age)s " + "(%(guardian)s) %(zone)s") % info) log(case, "patient_created") return True