def test_case_pillow_indicators(self):
        since = get_current_seq(XFormInstance.get_db())
        self._save_doc_to_db('indicator_form.json', XFormInstance)
        case_id = self._save_doc_to_db('indicator_case.json', CommCareCase)
        case_instance = CommCareCase.get(case_id)

        # FormDataInCaseIndicatorDef (For those forgotten properties)
        forgotten_property = FormDataInCaseIndicatorDefinition.increment_or_create_unique(
            INDICATOR_TEST_NAMESPACE,
            INDICATOR_TEST_DOMAIN,
            slug='club_name',
            question_id='location.club',
            case_type='song_tag',
            xmlns='http://openrosa.org/formdesigner/indicator-create-xmlns',
        )
        forgotten_property.save()

        self.case_pillow.process_changes(since=since, forever=False)

        indicator_case = IndicatorCase.get(case_id)

        self.assertEqual(indicator_case.get_id, case_instance.get_id)
        self.assertNotEqual(indicator_case.get_db().dbname,
                            case_instance.get_db().dbname)
        self.assertNotEqual(indicator_case.computed_, {})
Esempio n. 2
0
    def test_case_pillow_indicators(self):
        self._save_doc_to_db('indicator_form.json', XFormInstance)
        case_id = self._save_doc_to_db('indicator_case.json', CommCareCase)
        case_instance = CommCareCase.get(case_id)

        # FormDataInCaseIndicatorDef (For those forgotten properties)
        forgotten_property = FormDataInCaseIndicatorDefinition.increment_or_create_unique(
            INDICATOR_TEST_NAMESPACE,
            INDICATOR_TEST_DOMAIN,
            slug='club_name',
            question_id='location.club',
            case_type='song_tag',
            xmlns='http://openrosa.org/formdesigner/indicator-create-xmlns',
        )
        forgotten_property.save()

        self.case_pillow.process_changes(since=None, forever=False)

        indicator_case = IndicatorCase.get(case_id)

        self.assertEqual(indicator_case.get_id, case_instance.get_id)
        self.assertNotEqual(
            indicator_case.get_db().dbname, case_instance.get_db().dbname
        )
        self.assertNotEqual(indicator_case.computed_, {})
class FormDataInCaseAdminInterface(BaseIndicatorAdminInterface):
    name = FormDataInCaseIndicatorDefinition.get_nice_name()
    description = ("Takes the value from the question_id / data_node path specified from that case's related form(s)"
                   "---matched by XMLNS---and inserts it into that case's indicators.")
    slug = "case_form_data"
    document_class = FormDataInCaseIndicatorDefinition
    form_class = FormDataInCaseForm

    @property
    def headers(self):
        header = super(FormDataInCaseAdminInterface, self).headers
        header.insert_column(DataTablesColumn("Case Type"), -3)
        header.insert_column(DataTablesColumn("XMLNS or Label"), -3)
        header.insert_column(DataTablesColumn("Question ID"), -3)
        return header
Esempio n. 4
0
    def test_case_pillow_indicators(self):
        self._save_doc_to_db("indicator_form.json", XFormInstance)
        case_id = self._save_doc_to_db("indicator_case.json", CommCareCase)
        case_instance = CommCareCase.get(case_id)

        # FormDataInCaseIndicatorDef (For those forgotten properties)
        forgotten_property = FormDataInCaseIndicatorDefinition.increment_or_create_unique(
            INDICATOR_TEST_NAMESPACE,
            INDICATOR_TEST_DOMAIN,
            slug="club_name",
            question_id="location.club",
            case_type="song_tag",
            xmlns="http://openrosa.org/formdesigner/indicator-create-xmlns",
        )
        forgotten_property.save()

        self.case_pillow.run_burst()

        indicator_case = IndicatorCase.get(case_id)

        self.assertEqual(indicator_case.get_id, case_instance.get_id)
        self.assertNotEqual(indicator_case.get_db().dbname, case_instance.get_db().dbname)
        self.assertNotEqual(indicator_case.computed_, {})
    def handle(self, **options):
        for domain in MVP.DOMAINS:
            shared_args=(
                MVP.NAMESPACE,
                domain
            )

            # Registration forms
            self.create_form_alias_indicators(CHILD_REGISTRATION_QUESTION_IDS,
                MVP.REGISTRATION_FORMS.get('child_registration'), domain, shared_args)

            # All the visit forms
            self.create_form_alias_indicators(CHILD_VISIT_QUESTION_IDS,
                MVP.VISIT_FORMS.get('child_visit'), domain, shared_args)
            self.create_form_alias_indicators(HOUSEHOLD_VISIT_QUESTION_IDS,
                MVP.VISIT_FORMS.get('household_visit'), domain, shared_args)
            self.create_form_alias_indicators(PREGNANCY_VISIT_QUESTION_IDS,
                MVP.VISIT_FORMS.get('pregnancy_visit'), domain, shared_args)

            # All the close forms
            self.create_form_alias_indicators(CHILD_CLOSE_FORM_QUESTION_IDS,
                MVP.CLOSE_FORMS.get('child_close'), domain, shared_args)
            self.create_form_alias_indicators(PREGNANCY_CLOSE_FORM_QUESTION_IDS,
                MVP.CLOSE_FORMS.get('pregnancy_close'), domain, shared_args)

            pregnancy_edd = CaseDataInFormIndicatorDefinition.increment_or_create_unique(
                *shared_args,
                slug="pregnancy_edd",
                xmlns=MVP.VISIT_FORMS.get('pregnancy_visit'),
                case_property="edd_calc",
                version=1
            )
            print(pregnancy_edd)

            pregnancy_end = CaseDataInFormIndicatorDefinition.increment_or_create_unique(
                *shared_args,
                slug="pregnancy_end",
                xmlns=MVP.VISIT_FORMS.get('pregnancy_visit'),
                case_property="closed_on",
                version=1
            )
            print(pregnancy_end)

            child_visit_referral = CHILD_VISIT_QUESTION_IDS.get('referral_type', {}).get(domain)
            if child_visit_referral:
                child_case_referral_type = FormDataInCaseIndicatorDefinition.increment_or_create_unique(
                    *shared_args,
                    slug="referral_type",
                    case_type='child',
                    xmlns=MVP.VISIT_FORMS.get('child_visit'),
                    **child_visit_referral
                )
                print(child_case_referral_type)

            pregnancy_visit_referral = PREGNANCY_VISIT_QUESTION_IDS.get('referral_type', {}).get(domain)
            if pregnancy_visit_referral:
                pregnancy_case_referral_type = FormDataInCaseIndicatorDefinition.increment_or_create_unique(
                    *shared_args,
                    slug="referral_type",
                    case_type='pregnancy',
                    xmlns=MVP.VISIT_FORMS.get('pregnancy_visit'),
                    **pregnancy_visit_referral
                )
                print(pregnancy_case_referral_type)

            visit_hospital = CHILD_VISIT_QUESTION_IDS.get('visit_hospital', {}).get(domain)
            if visit_hospital:
                visit_hospital_case = FormDataInCaseIndicatorDefinition.increment_or_create_unique(
                    *shared_args,
                    slug="visit_hospital",
                    case_type='child',
                    xmlns=MVP.VISIT_FORMS.get('child_visit'),
                    **visit_hospital
                )
                print(visit_hospital_case)

            immediate_danger_sign = CHILD_VISIT_QUESTION_IDS.get('immediate_danger_sign', {}).get(domain)
            if immediate_danger_sign:
                immediate_danger_sign_case = FormDataInCaseIndicatorDefinition.increment_or_create_unique(
                    *shared_args,
                    slug="immediate_danger_sign",
                    case_type='child',
                    xmlns=MVP.VISIT_FORMS.get('child_visit'),
                    **immediate_danger_sign
                )
                print(immediate_danger_sign_case)

            diarrhea_medication_in_case = CHILD_VISIT_QUESTION_IDS.get('diarrhea_medication', {}).get(domain)
            if diarrhea_medication_in_case:
                diarrhea_medication_case = FormDataInCaseIndicatorDefinition.increment_or_create_unique(
                    *shared_args,
                    slug="diarrhea_medication",
                    case_type='child',
                    xmlns=MVP.VISIT_FORMS.get('child_visit'),
                    **diarrhea_medication_in_case
                )
                print(diarrhea_medication_case)

            fever_medication_in_case = CHILD_VISIT_QUESTION_IDS.get('fever_medication', {}).get(domain)
            if fever_medication_in_case:
                fever_medication_case = FormDataInCaseIndicatorDefinition.increment_or_create_unique(
                    *shared_args,
                    slug="fever_medication",
                    case_type='child',
                    xmlns=MVP.VISIT_FORMS.get('child_visit'),
                    **fever_medication_in_case
                )
                print(fever_medication_case)

            self.insert_dob_into_form('child_dob', MVP.VISIT_FORMS.get('child_visit'),
                shared_args)

            self.insert_dob_into_form('child_dob', MVP.CLOSE_FORMS.get('child_close'),
                shared_args)