示例#1
0
    def handle(self, *args, **kwargs):
        importer = Importer(
            uri='https://%s:%[email protected]/tools/ws/sms/patients/server.php' %
            (Setting.objects.get(name='THERAPYEDGE_USERNAME').value,
             Setting.objects.get(name='THERAPYEDGE_PASSWORD').value),
            verbose=settings.DEBUG)
        username = kwargs.get('username')
        if not username:
            sys.exit('Please provide --username')

        te_ids = kwargs.get('te_ids')
        if not te_ids:
            sys.exit('Please provide --te_ids')
        te_id_list = te_ids.split(',')
        print "\nSearching coming, missed, done and deleted visits for " \
              "te_id's in:\n%s" % repr(te_id_list)

        days_back = int(kwargs.get('days_back') or 1)
        print "From %s days back" % days_back

        days_forward = int(kwargs.get('days_forward') or 30)
        print "to %s days forward\n" % days_forward

        user = User.objects.get(username=username)
        for clinic in Clinic.objects.filter(active=True, user=user):
            print "Clinic name: %s" % clinic.name
            print "Clinic id: %s" % clinic.te_id
            midnight = datetime.now().replace(hour=0,
                                              minute=0,
                                              second=0,
                                              microsecond=0)
            since = midnight - timedelta(days=days_back)
            until = midnight + timedelta(days=days_forward)
            print "Since: %s" % since
            print "Until: %s" % until
            for v in importer.client.get_coming_visits(clinic.te_id, since,
                                                       until):
                if v.te_id in te_id_list:
                    print "\t%s" % repr(v)
            for v in importer.client.get_missed_visits(clinic.te_id, since,
                                                       until):
                if v.te_id in te_id_list:
                    print "\t%s" % repr(v)
            for v in importer.client.get_done_visits(clinic.te_id, since,
                                                     until):
                if v.te_id in te_id_list:
                    print "\t%s" % repr(v)
            for v in importer.client.get_deleted_visits(
                    clinic.te_id, since, until):
                if v.te_id in te_id_list:
                    print "\t%s" % repr(v)
            print ''
示例#2
0
    def setUp(self):
        self.importer = Importer()
        self.user = User.objects.get(username="******")

        # patching the client to automatically return our specified result
        # sets without doing an XML-RPC call
        patched_client = PatchedClient(
            patients_update=[{
                'dr_site_name': '',
                'dr_site_id': '',
                'age': '2%s' % i,
                'sex': random.choice(['Male', 'Female']),
                'celphone': '2712345678%s' % i,
                'dr_status': '',
                'te_id': patient.te_id,
            } for i, patient in enumerate(Patient.objects.all())],
            comingvisits=[{
                'dr_site_name':
                '',
                'dr_site_id':
                '',
                'dr_status':
                '',
                'scheduled_visit_date':
                str(datetime.now() + timedelta(days=2)),
                'key_id':
                '02-1234%s' % i,
                'te_id':
                patient.te_id,
            } for i, patient in enumerate(Patient.objects.all())],
            missedvisits=[{
                'dr_site_name':
                '',
                'dr_site_id':
                '',
                'missed_date':
                str(datetime.now() - timedelta(days=2)),
                'dr_status':
                '',
                'key_id':
                '03-1234%s' % i,
                'te_id':
                patient.te_id
            } for i, patient in enumerate(Patient.objects.all())],
            donevisits=[{
                'done_date':
                str(datetime.now() - timedelta(days=2)),
                'dr_site_id':
                '',
                'dr_status':
                '',
                'dr_site_name':
                '',
                'scheduled_date':
                str(datetime.now() - timedelta(days=2)),
                'key_id':
                '04-1234%s' % i,
                'te_id':
                patient.te_id
            } for i, patient in enumerate(Patient.objects.all())],
            deletedvisits=[{
                'key_id': '02-1234%s' % i,
                'dr_status': '',
                'dr_site_id': '',
                'te_id': patient.te_id,
                'dr_site_name': ''
            } for i, patient in enumerate(Patient.objects.all())])
        # monkey patching
        self.importer.client.rpc_call = patched_client.rpc_call

        self.clinic = Clinic.objects.all()[0]  # make sure we have a clinic
        self.assertTrue(
            Patient.objects.count())  # make sure our fixtures aren't empty
示例#3
0
    def test_for_history_duplication(self):
        """
        Test for history duplication happening after numerous imports over time
        
        The data for this test has been gleaned from the txtalert log being 
        used in production. For some reason imports that should be 'missed' 
        are set as 'rescheduled' and eventhough nothing changes in the 
        appointment, a historical visit is still saved.
        """

        # create the patient for which we'll get the visits
        patient = Patient.objects.create(te_id='02-82088',
                                         age=29,
                                         sex='m',
                                         owner=self.user)

        # importer
        importer = Importer()
        # [importer] 2010-03-18 08:00:37,705 DEBUG Processing coming Visit {'dr_site_name': '', 'dr_site_id': '', 'dr_status': 'false', 'scheduled_visit_date': '2010-03-24 00:00:00', 'key_id': '02-091967084', 'te_id': '02-82088'}
        coming_visit = create_instance(
            ComingVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'dr_status': 'false',
                'scheduled_visit_date': '2010-03-24 00:00:00',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_coming_visit = importer.update_local_coming_visit(
            self.user, self.clinic, coming_visit)
        # [importer] 2010-03-18 08:01:39,354 DEBUG Processing missed Visit: {'dr_site_name': '', 'dr_site_id': '', 'missed_date': '2010-03-24 00:00:00', 'dr_status': 'false', 'key_id': '02-091967084', 'te_id': '02-82088'}
        missed_visit = create_instance(
            MissedVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'missed_date': '2010-03-24 00:00:00',
                'dr_status': 'false',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_missed_visit = importer.update_local_missed_visit(
            self.user, self.clinic, missed_visit)
        # [importer] 2010-03-19 08:00:36,876 DEBUG Processing coming Visit {'dr_site_name': '', 'dr_site_id': '', 'dr_status': 'false', 'scheduled_visit_date': '2010-03-24 00:00:00', 'key_id': '02-091967084', 'te_id': '02-82088'}
        coming_visit = create_instance(
            ComingVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'dr_status': 'false',
                'scheduled_visit_date': '2010-03-24 00:00:00',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_coming_visit = importer.update_local_coming_visit(
            self.user, self.clinic, coming_visit)
        # [importer] 2010-03-19 08:01:36,747 DEBUG Processing missed Visit: {'dr_site_name': '', 'dr_site_id': '', 'missed_date': '2010-03-24 00:00:00', 'dr_status': 'false', 'key_id': '02-091967084', 'te_id': '02-82088'}
        missed_visit = create_instance(
            MissedVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'missed_date': '2010-03-24 00:00:00',
                'dr_status': 'false',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_missed_visit = importer.update_local_missed_visit(
            self.user, self.clinic, missed_visit)
        # [importer] 2010-03-20 08:00:29,600 DEBUG Processing coming Visit {'dr_site_name': '', 'dr_site_id': '', 'dr_status': 'false', 'scheduled_visit_date': '2010-03-24 00:00:00', 'key_id': '02-091967084', 'te_id': '02-82088'}
        coming_visit = create_instance(
            ComingVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'dr_status': 'false',
                'scheduled_visit_date': '2010-03-24 00:00:00',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_coming_visit = importer.update_local_coming_visit(
            self.user, self.clinic, coming_visit)
        # [importer] 2010-03-20 08:01:30,926 DEBUG Processing missed Visit: {'dr_site_name': '', 'dr_site_id': '', 'missed_date': '2010-03-24 00:00:00', 'dr_status': 'false', 'key_id': '02-091967084', 'te_id': '02-82088'}
        missed_visit = create_instance(
            MissedVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'missed_date': '2010-03-24 00:00:00',
                'dr_status': 'false',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_missed_visit = importer.update_local_missed_visit(
            self.user, self.clinic, missed_visit)
        # [importer] 2010-03-21 08:00:28,052 DEBUG Processing coming Visit {'dr_site_name': '', 'dr_site_id': '', 'dr_status': 'false', 'scheduled_visit_date': '2010-03-24 00:00:00', 'key_id': '02-091967084', 'te_id': '02-82088'}
        coming_visit = create_instance(
            ComingVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'dr_status': 'false',
                'scheduled_visit_date': '2010-03-24 00:00:00',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_coming_visit = importer.update_local_coming_visit(
            self.user, self.clinic, coming_visit)
        # [importer] 2010-03-21 08:01:33,909 DEBUG Processing missed Visit: {'dr_site_name': '', 'dr_site_id': '', 'missed_date': '2010-03-24 00:00:00', 'dr_status': 'false', 'key_id': '02-091967084', 'te_id': '02-82088'}
        missed_visit = create_instance(
            MissedVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'missed_date': '2010-03-24 00:00:00',
                'dr_status': 'false',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_missed_visit = importer.update_local_missed_visit(
            self.user, self.clinic, missed_visit)
        # [importer] 2010-03-22 08:00:27,711 DEBUG Processing coming Visit {'dr_site_name': '', 'dr_site_id': '', 'dr_status': 'false', 'scheduled_visit_date': '2010-03-24 00:00:00', 'key_id': '02-091967084', 'te_id': '02-82088'}
        coming_visit = create_instance(
            ComingVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'dr_status': 'false',
                'scheduled_visit_date': '2010-03-24 00:00:00',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_coming_visit = importer.update_local_coming_visit(
            self.user, self.clinic, coming_visit)
        # [importer] 2010-03-22 08:01:33,549 DEBUG Processing missed Visit: {'dr_site_name': '', 'dr_site_id': '', 'missed_date': '2010-03-24 00:00:00', 'dr_status': 'false', 'key_id': '02-091967084', 'te_id': '02-82088'}
        missed_visit = create_instance(
            MissedVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'missed_date': '2010-03-24 00:00:00',
                'dr_status': 'false',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_missed_visit = importer.update_local_missed_visit(
            self.user, self.clinic, missed_visit)
        # [importer] 2010-03-23 08:00:26,453 DEBUG Processing coming Visit {'dr_site_name': '', 'dr_site_id': '', 'dr_status': 'false', 'scheduled_visit_date': '2010-03-24 00:00:00', 'key_id': '02-091967084', 'te_id': '02-82088'}
        coming_visit = create_instance(
            ComingVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'dr_status': 'false',
                'scheduled_visit_date': '2010-03-24 00:00:00',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_coming_visit = importer.update_local_coming_visit(
            self.user, self.clinic, coming_visit)
        # [importer] 2010-03-23 08:01:36,731 DEBUG Processing missed Visit: {'dr_site_name': '', 'dr_site_id': '', 'missed_date': '2010-03-24 00:00:00', 'dr_status': 'false', 'key_id': '02-091967084', 'te_id': '02-82088'}
        missed_visit = create_instance(
            MissedVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'missed_date': '2010-03-24 00:00:00',
                'dr_status': 'false',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_missed_visit = importer.update_local_missed_visit(
            self.user, self.clinic, missed_visit)
        # [importer] 2010-03-25 09:00:41,774 DEBUG Processing coming Visit {'dr_site_name': '', 'dr_site_id': '', 'dr_status': 'false', 'scheduled_visit_date': '2010-03-24 00:00:00', 'key_id': '02-091967084', 'te_id': '02-82088'}
        coming_visit = create_instance(
            ComingVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'dr_status': 'false',
                'scheduled_visit_date': '2010-03-24 00:00:00',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_coming_visit = importer.update_local_coming_visit(
            self.user, self.clinic, coming_visit)
        # [importer] 2010-03-25 09:00:41,850 DEBUG Updating existing Visit: 37361 / ({'date': datetime.date(2010, 3, 24), 'updated_at': datetime.datetime(2010, 3, 23, 8, 1, 36)} vs {'status': u'r', 'comment': u'', 'visit_type': u'', 'deleted': 0, 'created_at': datetime.datetime(2010, 3, 18, 8, 0, 37), 'updated_at': datetime.datetime(2010, 3, 23, 8, 1, 36), 'te_visit_id': u'02-091967084', 'date': datetime.date(2010, 3, 24), 'id': 37361L})
        # [importer] 2010-03-25 09:01:40,902 DEBUG Processing missed Visit: {'dr_site_name': '', 'dr_site_id': '', 'missed_date': '2010-03-24 00:00:00', 'dr_status': 'false', 'key_id': '02-091967084', 'te_id': '02-82088'}
        missed_visit = create_instance(
            MissedVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'missed_date': '2010-03-24 00:00:00',
                'dr_status': 'false',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_missed_visit = importer.update_local_missed_visit(
            self.user, self.clinic, missed_visit)

        visit = patient.visit_set.latest()

        self.assertEquals(visit.status, 'm')
        self.assertEquals(visit.history.count(), 1)

        done_visit = create_instance(
            DoneVisit, {
                'dr_site_name': '',
                'dr_site_id': '',
                'done_date': '2010-03-24 00:00:00',
                'scheduled_date': '2010-03-24 00:00:00',
                'dr_status': 'false',
                'key_id': '02-091967084',
                'te_id': '02-82088'
            })
        local_done_visit = importer.update_local_done_visit(
            self.user, self.clinic, done_visit)

        visit = patient.visit_set.latest()
        self.assertEquals(visit.status, 'a')
        self.assertEquals(visit.history.count(), 2)
示例#4
0
 def setUp(self):
     self.importer = Importer()
     # make sure we're actually testing some data
     self.assertTrue(Patient.objects.count() > 0)
     self.clinic = Clinic.objects.all()[0]
     self.user = User.objects.get(username="******")
示例#5
0
 def setUp(self):
     self.patient = Patient.objects.all()[0]
     self.importer = Importer()
     self.clinic = Clinic.objects.get(te_id='01')
     self.user = User.objects.get(username='******')
示例#6
0
 def setUp(self):
     self.importer = Importer()
     self.user = User.objects.get(username='******')
示例#7
0
 def setUp(self):
     self.clinic = Clinic.objects.get(te_id='01')
     self.importer = Importer()
     self.user = User.objects.get(username='******')