예제 #1
0
 def _build_rows(self, site_code):
     rows = []
     location = SQLLocation.active_objects.get(domain=self.domain, site_code=site_code)
     case_ids = get_household_case_ids(self.domain, location.location_id)
     for case_id in case_ids:
         household_case = CaseAccessors(self.domain).get_case(case_id)
         person_cases = get_household_child_cases_by_owner(
             self.domain, case_id, location.location_id, [PERSON_CASE_TYPE])
         rows.append([
             '',
             '',
             household_case.name,
             household_case.get_case_property('hh_reg_date'),
             household_case.get_case_property('hh_religion'),
             household_case.get_case_property('hh_caste'),
             household_case.get_case_property('hh_bpl_apl'),
             len(person_cases),
             ", ".join([
                 "%s (%s/%s)" % (
                     case.name, case.get_case_property('age_at_reg'), case.get_case_property('sex'))
                 for case in person_cases
             ]),
             household_case.case_id
         ])
     return rows
예제 #2
0
    def test_case_update(self):
        fake_request = self._get_fake_request()
        fake_request['has_choices'] = 'foo'
        PatientDetailsUpdater(self.domain, fake_request).update_cases()

        person_case = CaseAccessors(self.domain).get_case(self.person_id)
        self.assertEqual(person_case.get_case_property('required_param'), '123')

        episode_case = CaseAccessors(self.domain).get_case(self.episode_id)
        self.assertEqual(episode_case.get_case_property('has_choices'), 'foo')
예제 #3
0
    def test_case_updates(self):
        with patch('custom.enikshay.tasks.EpisodeAdherenceUpdate.update_json',
                   MagicMock()) as adherence_update:
            adherence_update.return_value = {'update': {}}

            prescription = self.create_prescription_case()
            voucher = self.make_voucher(prescription, 29, date(2017, 1, 2))
            self.make_voucher(prescription, 11, date(2017, 1, 1))

            # the updater should pickup the above changes
            EpisodeUpdater(self.domain).run()

            episode = CaseAccessors(self.domain).get_case(
                self.cases['episode'].case_id)
            self.assertEqual(
                episode.get_case_property("prescription_total_days"),
                six.text_type(29 + 11))

            # test that a subsequent update performs a noop
            self.assertEqual(
                EpisodeVoucherUpdate(self.domain, episode).update_json(), {})
            # Updating after a voucher has been approved also shouldn't change anything
            self.approve_voucher(voucher)
            self.assertEqual(
                EpisodeVoucherUpdate(self.domain, episode).update_json(), {})
예제 #4
0
    def test_update_with_setter(self):
        fake_request = self._get_fake_request()
        fake_request['with_setter'] = 'foo'

        PatientDetailsUpdater(self.domain, fake_request).update_cases()

        person_case = CaseAccessors(self.domain).get_case(self.person_id)
        self.assertEqual(person_case.get_case_property('property_set_with_setter'), 'foo')
예제 #5
0
    def test_unwrap_number(self):
        fake_request = self._get_fake_request()

        fake_request['unwrap_number'] = '+91123456789'
        PatientDetailsUpdater(self.domain, fake_request).update_cases()

        person_case = CaseAccessors(self.domain).get_case(self.person_id)
        self.assertEqual(person_case.get_case_property('foo'), '91123456789')
예제 #6
0
    def test_split_name(self):
        fake_request = self._get_fake_request()

        fake_request['split_name'] = 'Arya Horseface Stark'
        PatientDetailsUpdater(self.domain, fake_request).update_cases()

        person_case = CaseAccessors(self.domain).get_case(self.person_id)
        self.assertEqual(person_case.get_case_property('foo'), 'Arya')
        self.assertEqual(person_case.get_case_property('bar'), 'Horseface Stark')
예제 #7
0
    def test_merm_params(self):
        fake_request = self._get_fake_request()

        fake_request['merm_params'] = {
            "IMEI": "1321",
            "daily_reminder_status": "1",
            "daily_reminder_time": "12:00",
            "refill_reminder_status": "1",
            "refill_reminder_datetime": "2017/12/12 15:54:00",
            "RT_hours": "1",
        }
        PatientDetailsUpdater(self.domain, fake_request).update_cases()
        person_case = CaseAccessors(self.domain).get_case(self.episode_id)
        self.assertEqual(person_case.get_case_property('merm_id'), '1321')
예제 #8
0
    def _test_auto_escalation(self, from_level, to_level):
        rule = create_empty_rule(self.domain,
                                 AutomaticUpdateRule.WORKFLOW_CASE_UPDATE)
        rule.add_action(CustomActionDefinition,
                        name='ICDS_ESCALATE_TECH_ISSUE')

        with create_case(
                self.domain,
                'tech_issue',
                case_name='New Issue',
                update={
                    'ticket_level': from_level,
                    'touch_case_date': '2017-06-01',
                    'block_location_id': 'block_id',
                    'district_location_id': 'district_id',
                    'state_location_id': 'state_id',
                },
        ) as tech_issue:
            properties = tech_issue.to_json()
            self.assertEqual(properties.get('ticket_level'), from_level)
            self.assertEqual(properties.get('touch_case_date'), '2017-06-01')
            self.assertIsNone(properties.get('change_in_level'))

            result = rule.run_actions_when_case_matches(tech_issue)
            self.assertEqual(result.num_updates, 1)
            self.assertEqual(result.num_creates, 1)

            tech_issue = CaseAccessors(self.domain).get_case(
                tech_issue.case_id)
            properties = tech_issue.to_json()
            self.assertEqual(properties.get('ticket_level'), to_level)
            self.assertEqual(properties.get('touch_case_date'),
                             self.todays_date)
            self.assertEqual(properties.get('change_in_level'), '1')

            subcases = tech_issue.get_subcases(index_identifier='parent')
            self.assertEqual(len(subcases), 1)
            [tech_issue_delegate] = subcases

            self.assertEqual(tech_issue_delegate.type, 'tech_issue_delegate')
            self.assertEqual(tech_issue_delegate.name, tech_issue.name)
            self.assertEqual(
                tech_issue_delegate.owner_id,
                tech_issue.get_case_property('%s_location_id' % to_level))
            self.assertEqual(
                tech_issue_delegate.get_case_property('change_in_level'), '1')