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