Example #1
0
 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)
Example #2
0
 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)
Example #3
0
 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
Example #4
0
 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
Example #5
0
    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
Example #6
0
    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