def create_visit(self, visit_id, new_patient, app_date, status, clinic): #use spreadsheet data to create visit try: #create a the visit new_visit = Visit(te_visit_id=visit_id, patient=new_patient, date=app_date, status=status, clinic=clinic) new_visit.save() logging.debug("Created the visit %s for new patien" % visit_id) visit_created = True visit = new_visit except IntegrityError: logging.exception("Failed to create visit %s." % visit_id) visit_created = False visit = None return (visit, visit_created)
def create_visit(self, visit_id, new_patient, app_date, status, clinic): #use spreadsheet data to create visit try: #create a the visit new_visit = Visit( te_visit_id=visit_id, patient=new_patient, date=app_date, status=status, clinic=clinic ) new_visit.save() logging.debug("Created the visit %s for new patien" % visit_id) visit_created = True visit = new_visit except IntegrityError: logging.exception("Failed to create visit %s." % visit_id) visit_created = False visit = None return (visit, visit_created)
def update_local_missed_visit(self, owner, clinic, remote_visit): # get the patient or raise error patient = Patient.objects.get(te_id=remote_visit.te_id, owner=owner) missed_date = iso8601.parse_date(remote_visit.missed_date).date() try: visit = Visit.objects.get(te_visit_id=remote_visit.key_id) created = False except Visit.DoesNotExist: visit = Visit(te_visit_id=remote_visit.key_id) created = True # check if something actually changed in the visit, if not, immediately # return the visit - no use continuing if missed_date == visit.date and visit.status == 'm': return # it's a new visit if created: if missed_date <= date.today(): visit.status = 'm' else: visit.status = 'r' # it's an existing visit else: if missed_date > visit.date: visit.status = 'r' else: visit.status = 'm' visit.clinic = clinic visit.patient = patient visit.date = missed_date if visit.is_dirty(): visit.save() if created: logger.debug('Creating new Visit: %s' % visit.id) else: logger.debug('Updating Visit:%s, date: %s, status: %s' % ( visit.id, missed_date, visit.status )) return visit
def update_local_coming_visit(self, owner, clinic, remote_visit): # I'm assuming we'll always have the patient being referenced # in the Visit object, if not - raise hell patient = Patient.objects.get(te_id=remote_visit.te_id, owner=owner) coming_date = iso8601.parse_date(remote_visit.scheduled_visit_date) # FIXME: a lot of duplication between update_local_coming_visit and # update_local_missed_visits with regard to the status of # of the messages. try: visit = Visit.objects.get(te_visit_id=remote_visit.key_id) created = False except Visit.DoesNotExist: visit = Visit(te_visit_id=remote_visit.key_id) created = True # check if something actually changed in the visit, if not, immediately # return the visit - no use continuing if coming_date.date() == visit.date: return # it's a new visit if created: if coming_date.date() <= date.today(): visit.status = 'm' else: visit.status = 's' # it's an existing visit else: if coming_date.date() > visit.date: visit.status = 'r' else: visit.status = 'm' visit.clinic = clinic visit.patient = patient visit.date = coming_date if visit.is_dirty(): visit.save() if created: logger.debug('Creating new Visit: %s' % visit.id) else: logger.debug('Updating existing Visit: %s / (%s vs %s)' % (visit.id, visit.get_dirty_fields(), visit._original_state)) return visit
def update_local_missed_visit(self, owner, clinic, remote_visit): # get the patient or raise error patient = Patient.objects.get(te_id=remote_visit.te_id, owner=owner) missed_date = iso8601.parse_date(remote_visit.missed_date).date() try: visit = Visit.objects.get(te_visit_id=remote_visit.key_id) created = False except Visit.DoesNotExist: visit = Visit(te_visit_id=remote_visit.key_id) created = True # check if something actually changed in the visit, if not, immediately # return the visit - no use continuing if missed_date == visit.date and visit.status == 'm': return # it's a new visit if created: if missed_date <= date.today(): visit.status = 'm' else: visit.status = 'r' # it's an existing visit else: if missed_date > visit.date: visit.status = 'r' else: visit.status = 'm' visit.clinic = clinic visit.patient = patient visit.date = missed_date if visit.is_dirty(): visit.save() if created: logger.debug('Creating new Visit: %s' % visit.id) else: logger.debug('Updating Visit:%s, date: %s, status: %s' % (visit.id, missed_date, visit.status)) return visit
def update_local_coming_visit(self, owner, clinic, remote_visit): # I'm assuming we'll always have the patient being referenced # in the Visit object, if not - raise hell patient = Patient.objects.get(te_id=remote_visit.te_id, owner=owner) coming_date = iso8601.parse_date(remote_visit.scheduled_visit_date) # FIXME: a lot of duplication between update_local_coming_visit and # update_local_missed_visits with regard to the status of # of the messages. try: visit = Visit.objects.get(te_visit_id=remote_visit.key_id) created = False except Visit.DoesNotExist: visit = Visit(te_visit_id=remote_visit.key_id) created = True # check if something actually changed in the visit, if not, immediately # return the visit - no use continuing if coming_date.date() == visit.date: return # it's a new visit if created: if coming_date.date() <= date.today(): visit.status = 'm' else: visit.status = 's' # it's an existing visit else: if coming_date.date() > visit.date: visit.status = 'r' # due to opt-in issues, we can no longer infer missed visits from # overdue comming dates stored locally #else: #visit.status = 'm' visit.clinic = clinic visit.patient = patient visit.date = coming_date if visit.is_dirty(): visit.save() if created: logger.debug('Creating new Visit: %s' % visit.id) else: logger.debug( 'Updating existing Visit: %s / (%s vs %s)' % (visit.id, visit.get_dirty_fields(), visit._original_state)) return visit