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_, {})
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
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)