def generate_for_all_patient_types(slug, filters): columns = [] for patient_type in PATIENT_TYPES: patient_type_filter = RawFilter( "patient_type = '%s'" % patient_type ) columns.append( DatabaseColumn( '', CountColumn( 'doc_id', filters=filters + [patient_type_filter], alias='%s_%s' % (slug, patient_type) ) ) ) columns.append( DatabaseColumn( '', CountColumn( 'doc_id', filters=filters, alias='%s_total' % slug ) ) ) return columns
def columns(self): return [ DatabaseColumn( '', CountColumn( 'doc_id', filters=self.filters + convert_to_raw_filters_list( "patient_type = 'new'" ), alias='cat1_patients' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=self.filters + convert_to_raw_filters_list( "patient_type in ('', 'recurrent', 'treatment_after_failure', 'treatment_after_lfu'," " 'other_previously_treated')" ), alias='cat2_patients' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=convert_to_raw_filters_list( "patient_type IS NOT NULL" ), alias='total_patients' ) ), ]
def generate_for_all_ranges(slug, filters): type_filter = RawFilter("patient_type IN ('new', 'recurrent')") columns = [] for lower_bound, upper_bound in AGE_RANGES[:-1]: age_filter = RawFilter( 'age_in_days BETWEEN %d AND %d' % (lower_bound * DAYS_IN_YEARS, upper_bound * DAYS_IN_YEARS)) columns.append( DatabaseColumn( '', CountColumn('doc_id', filters=filters + [age_filter, type_filter], alias='%s_age_%d_%d' % (slug, lower_bound, upper_bound)))) columns.append( DatabaseColumn( '', CountColumn( 'doc_id', filters=filters + [ RawFilter('age_in_days > %d' % (AGE_RANGES[-1][0] * DAYS_IN_YEARS)), type_filter ], alias='%s_age_%d' % (slug, AGE_RANGES[-1][0])))) columns.append( DatabaseColumn( '', CountColumn('doc_id', filters=filters + [type_filter], alias='%s_total' % slug))) return columns
def columns(self): return [ DatabaseColumn( '', CountColumn( 'doc_id', filters=self.filters + convert_to_raw_filters_list( "current_episode_type = 'confirmed_tb'", "previous_tb_treatment = 'no'" ), alias='cat1_patients' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=self.filters + convert_to_raw_filters_list( "current_episode_type = 'confirmed_tb'", "previous_tb_treatment = 'yes'" ), alias='cat2_patients' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=convert_to_raw_filters_list( "current_episode_type = 'confirmed_tb'" ), alias='total_patients' ) ), ]
def columns(self): return [ DatabaseColumn('location_id', SimpleColumn('site_id')), DatabaseColumn('Completude', CountColumn('doc_id', alias='completude')), DatabaseColumn('Promptitude', CountColumn( 'doc_id', alias='promptitude', filters=self.filters + [LT('opened_on', 'monday')] )), ]
def columns(self): case_table_name = '%s%s_%s' % (TABLE_PREFIX, self.domain.name, MAPPING_NAME_CASES) case_ownership_table_name = '%s%s_%s' % ( TABLE_PREFIX, self.domain.name, MAPPING_NAME_CASE_OWNERSHIP) case_type_filters = [filters.NOTEQ('case_type', 'ccCaseType')] columns = [ DatabaseColumn("case", SimpleColumn('user_id'), format_fn=self.get_user_case_id, sortable=False), DatabaseColumn('formsSubmittedWeek0', CountColumn('date', alias='formsSubmittedWeek0'), sortable=False), DatabaseColumn('formsSubmittedWeek1', CountColumn('date', filters=filters_week1, alias='formsSubmittedWeek1'), sortable=False), DatabaseColumn('formsSubmittedMonth0', CountColumn('date', filters=filters_month0, alias='formsSubmittedMonth0'), sortable=False), DatabaseColumn('casesUpdatedMonth0', CountUniqueColumn('case_id', table_name=case_table_name, filters=filters_month0 + case_type_filters, alias='casesUpdatedMonth0'), sortable=False), DatabaseColumn('casesUpdatedMonth1', CountUniqueColumn('case_id', table_name=case_table_name, filters=filters_month1 + case_type_filters, alias='casesUpdatedMonth1'), sortable=False), DatabaseColumn('totalCases', SumColumn('open_cases', table_name=case_ownership_table_name, filters=case_type_filters, alias='totalCases'), sortable=False) ] columns.extend(self._get_custom_columns()) return columns
def columns(self): columns = [] if 'region_id' in self.config: columns.append(DatabaseColumn(_("District"), SimpleColumn('district_name'))) else: columns.append(DatabaseColumn(_("PPS"), SimpleColumn('PPS_name'))) columns.append(DatabaseColumn(_("Stock total"), CountColumn('total_stock_total'))) return columns
def generate_for_all_outcomes(slug, filters): columns = [ DatabaseColumn( '', CountColumn('doc_id', filters=filters, alias='total_%s' % slug)) ] for treatment_outcome in TREATMENT_OUTCOMES: columns.append( DatabaseColumn( '', CountColumn('doc_id', filters=filters + [ RawFilter("treatment_outcome = '%s'" % treatment_outcome) ], alias='%s_%s' % (slug, treatment_outcome))), ) return columns
def columns(self): test_type_filter = [RawFilter("bacteriological_examination = 1")] return ( generate_for_all_ranges( 'male', self.filters + [RawFilter("sex = 'male'")]) + generate_for_all_ranges( 'female', self.filters + [RawFilter("sex = 'female'")]) + generate_for_all_ranges( 'transgender', self.filters + [RawFilter("sex = 'transgender'")]) + generate_for_all_ranges('all', self.filters) + [ DatabaseColumn( '', CountColumn('doc_id', filters=self.filters + test_type_filter + [RawFilter("episode_type = 'presumptive_tb'")], alias='patients_with_presumptive_tb')), DatabaseColumn( '', CountColumn( 'doc_id', filters=(self.filters + test_type_filter + [ RawFilter("result_of_test = 'tb_detected'"), RawFilter("episode_type = 'presumptive_tb'") ]), alias='patients_with_positive_tb')), DatabaseColumn( '', CountColumn( 'doc_id', filters=self.filters + [ RawFilter( "hiv_status IN ('reactive', 'non_reactive')") ], alias='all_hiv_tested')), DatabaseColumn( '', CountColumn('doc_id', filters=self.filters + [RawFilter("hiv_status = 'reactive'")], alias='hiv_reactive')), DatabaseColumn( '', CountColumn('doc_id', filters=self.filters + [RawFilter("hiv_status = 'reactive'")], alias='hiv_reactive_cpt')), DatabaseColumn( '', CountColumn( 'doc_id', filters=(self.filters + [RawFilter("hiv_status = 'reactive'")] + [RawFilter("initiated_on_art = 'yes'")]), alias='hiv_reactive_art')) ])
def columns(self): test_type_filter = [ RawFilter("bacteriological_examination = 1") ] filters_without_episode_type = self.filters[:-1] return ( generate_for_all_patient_types( 'pulmonary_microbiologically', self.filters + diagnosis_filter('microbiological', 'pulmonary') ) + generate_for_all_patient_types( 'pulmonary_clinical', self.filters + diagnosis_filter('clinical', 'pulmonary') ) + generate_for_all_patient_types( 'extra_pulmonary', self.filters + [ RawFilter('patient_type IS NOT NULL'), RawFilter("disease_classification = 'extra_pulmonary'") ] ) + generate_for_all_patient_types( 'total', self.filters + [RawFilter("patient_type IS NOT NULL")] ) + generate_for_all_ranges('male', self.filters + [RawFilter("sex = 'male'")]) + generate_for_all_ranges('female', self.filters + [RawFilter("sex = 'female'")]) + generate_for_all_ranges('transgender', self.filters + [RawFilter("sex = 'transgender'")]) + generate_for_all_ranges('all', self.filters) + [ DatabaseColumn( '', CountColumn( 'doc_id', filters=filters_without_episode_type + test_type_filter + [ RawFilter("bacteriological_test_episode_type = 'presumptive_tb'") ], alias='patients_with_presumptive_tb' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=( filters_without_episode_type + test_type_filter + [ RawFilter("result_of_bacteriological_test = 'tb_detected'"), RawFilter("bacteriological_test_episode_type = 'presumptive_tb'") ] ), alias='patients_with_positive_tb' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=self.filters + [RawFilter("hiv_status IN ('reactive', 'non_reactive')")], alias='all_hiv_tested' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=self.filters + [RawFilter("hiv_status = 'reactive'")], alias='hiv_reactive' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=self.filters + [ RawFilter("hiv_status = 'reactive'"), RawFilter("cpt_initiated = 'yes'") ], alias='hiv_reactive_cpt' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=( self.filters + [RawFilter("hiv_status = 'reactive'")] + [RawFilter("initiated_on_art = 'yes'")] ), alias='hiv_reactive_art' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=( self.filters + convert_to_raw_filters_list( "patient_type = 'new'", "disease_classification = 'pulmonary'", "diagnostic_result = 'tb_detected'" ) ), alias='new_positive_tb_pulmonary' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=( self.filters + convert_to_raw_filters_list( "patient_type = 'new'", "disease_classification = 'pulmonary'", "diagnostic_result = 'tb_not_detected'" ) ), alias='new_negative_tb_pulmonary' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=( self.filters + convert_to_raw_filters_list( "patient_type = 'new'", "disease_classification = 'extrapulmonary'", "diagnostic_result = 'tb_detected'" ) ), alias='new_positive_tb_extrapulmonary' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=( self.filters + convert_to_raw_filters_list( "patient_type = 'recurrent'", "diagnostic_result = 'tb_detected'" ) ), alias='recurrent_positive_tb' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=( self.filters + convert_to_raw_filters_list( "patient_type = 'treatment_after_failure'", "diagnostic_result = 'tb_detected'" ) ), alias='failure_positive_tb' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=( self.filters + convert_to_raw_filters_list( "patient_type = 'treatment_after_lfu'", "diagnostic_result = 'tb_detected'" ) ), alias='lfu_positive_tb' ) ), DatabaseColumn( '', CountColumn( 'doc_id', filters=( self.filters + convert_to_raw_filters_list( "patient_type = 'other_previously_treated'", "diagnostic_result = 'tb_detected'" ) ), alias='other_positive_tb' ) ) ] )
def columns(self): return [ self.first_column, DatabaseColumn(_('home_visits_newborn'), CountColumn('doc_id', alias="home_visits_newborn", filters=self.filters + [OR([EQ('newborn_reg', 'one'), EQ('newborn_followup', 'one')])])), DatabaseColumn(_('home_visits_children'), CountColumn('doc_id', alias="home_visits_children", filters=self.filters + [OR([EQ('child_reg', 'one'), EQ('child_followup', 'one')])])), DatabaseColumn(_('home_visits_adult'), CountColumn('doc_id', alias="home_visits_adult", filters=self.filters + [NOTEQ('home_visit', 'not')])), AggregateColumn(_("home_visits_total"), add_all, [ AliasColumn("home_visits_newborn"), AliasColumn("home_visits_children"), AliasColumn("home_visits_adult"), ], slug='home_visits_total'), DatabaseColumn(_('cases_transferred'), CountColumn('doc_id', alias='cases_transferred', filters=self.filters + [OR([ EQ('referral_reported_newborn', 'one'), EQ('referral_given_child', 'one'), EQ('referral_given_adult', 'one'), ])])), DatabaseColumn(_('home_visits_followup'), CountColumn('doc_id', alias="home_visits_followup", filters=self.filters + [OR([ EQ('newborn_followup', 'one'), EQ('child_followup', 'one'), EQ('adult_followup', 'one') ])])), DatabaseColumn(_('patients_given_pneumonia_meds_num'), CountColumn( 'doc_id', alias='patients_given_pneumonia_meds_num', filters=self.filters + [OR([ AND([EQ('has_pneumonia', 'one'), EQ('it_ari_child', 'one')]), AND([EQ('pneumonia_ds', 'one'), EQ('it_ari_child', 'one')]), AND([EQ('ari_adult', 'one'), EQ('it_ari_adult', 'one')])])])), DatabaseColumn(_('patients_given_pneumonia_meds_denom'), CountColumn( 'doc_id', alias='patients_given_pneumonia_meds_denom', filters=self.filters + [OR([ EQ('has_pneumonia', 'one'), EQ('pneumonia_ds', 'one'), EQ('ari_adult', 'one')])])), AggregateColumn(_('patients_given_pneumonia_meds'), percent_format, [ AliasColumn('patients_given_pneumonia_meds_num'), AliasColumn('patients_given_pneumonia_meds_denom') ], slug='patients_given_pneumonia_meds'), DatabaseColumn(_('patients_given_diarrhoea_meds_num'), CountColumn( 'doc_id', alias='patients_given_diarrhoea_meds_num', filters=self.filters + [OR([ AND([OR([EQ('diarrhoea_ds', 'one'), EQ('diarrhoea', 'one')]), EQ('it_diarrhea_child', 'one')]), AND([EQ('diarrhea_adult', 'one'), EQ('it_diarrhea_adult', 'one')])])])), DatabaseColumn(_('patients_given_diarrhoea_meds_denum'), CountColumn( 'doc_id', alias='patients_given_diarrhoea_meds_denum', filters=self.filters + [OR([ EQ('diarrhoea_ds', 'one'), EQ('diarrhoea', 'one'), EQ('diarrhea_adult', 'one')])])), AggregateColumn(_('patients_given_diarrhoea_meds'), percent_format, [ AliasColumn('patients_given_diarrhoea_meds_num'), AliasColumn('patients_given_diarrhoea_meds_denum') ], slug='patients_given_diarrhoea_meds'), DatabaseColumn(_('patients_given_malaria_meds'), CountColumn( 'doc_id', alias='patients_given_malaria_meds_num', filters=self.filters + [OR([ AND([EQ('malaria_child', 'one'), EQ('it_malaria_child', 'one')]), AND([EQ('malaria_adult', 'one'), EQ('it_malaria_adult', 'one')])])])), DatabaseColumn(_('patients_given_malaria_meds_denum'), CountColumn( 'doc_id', alias='patients_given_malaria_meds_demum', filters=self.filters + [OR([ EQ('has_malaria', 'one'), EQ('malaria_adult', 'one')])])), AggregateColumn(_('patients_given_malaria_meds'), percent_format, [ AliasColumn('patients_given_malaria_meds_num'), AliasColumn('patients_given_malaria_meds_denum') ], slug='patients_given_malaria_meds'), DatabaseColumn(_('patients_correctly_referred_num'), CountColumn( 'doc_id', alias='patients_correctly_referred_num', filters=self.filters + [OR([ AND([ EQ('referral_needed_newborn', 'one'), EQ('referral_given_newborn', 'one'), ]), AND([EQ('referral_needed_child', 'one'), EQ('referral_given_child', 'one')]), AND([EQ('treatment_preg_ds', 'one'), EQ('referral_given_adult', 'one')])])])), DatabaseColumn(_('patients_correctly_referred_denum'), CountColumn( 'doc_id', alias='patients_correctly_referred_denum', filters=self.filters + [OR([ EQ('referral_needed_newborn', 'one'), EQ('referral_needed_child', 'one'), EQ('treatment_preg_ds', 'one')])])), AggregateColumn(_('patients_correctly_referred'), percent_format, [ AliasColumn('patients_correctly_referred_num'), AliasColumn('patients_correctly_referred_denum') ], slug='patients_correctly_referred'), DatabaseColumn(_('cases_rdt_not_done'), CountColumn('cases_rdt_not_done', filters=self.filters + [EQ('cases_rdt_not_done', 'one')])), ]
def columns(self): return [ self.first_column, DatabaseColumn(_('home_visits_pregnant'), CountColumn('home_visit', alias="home_visits_pregnant", filters=self.filters + [EQ('home_visit', 'one')])), DatabaseColumn(_('home_visits_postpartem'), CountColumn('post_partem', alias="home_visits_postpartem", filters=self.filters + [EQ('post_partem', 'one')])), DatabaseColumn(_('home_visits_newborn'), CountColumn('doc_id', alias="home_visits_newborn", filters=self.filters + [OR([EQ('newborn_reg', 'one'), EQ('newborn_followup', 'one')])])), DatabaseColumn(_('home_visits_children'), CountColumn('doc_id', alias="home_visits_children", filters=self.filters + [OR([EQ('child_reg', 'one'), EQ('child_followup', 'one')])])), DatabaseColumn(_('home_visits_other'), CountColumn('doc_id', alias="home_visits_other", filters=self.filters + [OR([ AND([EQ('home_visit', 'zero'), EQ('post_partem', 'zero')]), EQ('sex', 'one'), EQ('adult_followup', 'one')])])), AggregateColumn(_("home_visits_total"), add_all, [ AliasColumn("home_visits_pregnant"), AliasColumn("home_visits_postpartem"), AliasColumn("home_visits_newborn"), AliasColumn("home_visits_children"), AliasColumn("home_visits_other"), ], slug='home_visits_total'), DatabaseColumn(_('rdt_positive_children'), CountColumn('doc_id', alias='rdt_positive_children', filters=self.filters + [EQ('rdt_children', 'one')])), DatabaseColumn(_('rdt_positive_adults'), CountColumn('doc_id', alias='rdt_positive_adults', filters=self.filters + [EQ('rdt_adult', 'one')])), DatabaseColumn(_('rdt_others'), CountColumn('doc_id', alias='rdt_others', filters=self.filters + [OR([EQ('rdt_adult', 'zero'), EQ('rdt_children', 'zero')])])), AggregateColumn(_('rdt_total'), add_all, [ AliasColumn('rdt_positive_children'), AliasColumn('rdt_positive_adults'), AliasColumn('rdt_others') ], slug='rdt_total'), DatabaseColumn(_('diagnosed_malaria_child'), CountColumn('malaria_child', alias='diagnosed_malaria_child', filters=self.filters + [EQ('malaria_child', 'one')])), DatabaseColumn(_('diagnosed_malaria_adult'), CountColumn('malaria_adult', alias='diagnosed_malaria_adult', filters=self.filters + [EQ('malaria_adult', 'one')])), DatabaseColumn(_('diagnosed_diarrhea'), CountColumn('doc_id', alias='diagnosed_diarrhea', filters=self.filters + [OR([ EQ('diarrhea_child', 'one'), EQ('diarrhea_adult', 'one') ])])), DatabaseColumn(_('diagnosed_ari'), CountColumn('doc_id', alias='diagnosed_ari', filters=self.filters + [OR([ EQ('ari_child', 'one'), EQ('ari_adult', 'one') ])])), AggregateColumn(_('diagnosed_total'), add_all, [ AliasColumn('diagnosed_malaria_child'), AliasColumn('diagnosed_malaria_adult'), AliasColumn('diagnosed_diarrhea'), AliasColumn('diagnosed_ari') ], slug='diagnosed_total'), DatabaseColumn(_('treated_malaria'), CountColumn('doc_id', alias='treated_malaria', filters=self.filters + [OR([ AND([EQ('it_malaria_child', 'one'), EQ('malaria_child', 'one')]), AND([EQ('it_malaria_adult', 'one'), EQ('malaria_adult', 'one')]) ])])), DatabaseColumn(_('treated_diarrhea'), CountColumn('doc_id', alias='treated_diarrhea', filters=self.filters + [OR([ AND([EQ('diarrhea_child', 'one'), EQ('it_diarrhea_child', 'one')]), AND([EQ('diarrhea_adult', 'one'), EQ('it_diarrhea_adult', 'one')]) ])])), DatabaseColumn(_('treated_ari'), CountColumn('doc_id', alias='treated_ari', filters=self.filters + [OR([ AND([EQ('ari_child', 'one'), EQ('it_ari_child', 'one')]), AND([EQ('ari_adult', 'one'), EQ('it_ari_adult', 'one')]) ])])), AggregateColumn(_('treated_total'), add_all, [ AliasColumn('treated_malaria'), AliasColumn('treated_diarrhea'), AliasColumn('treated_ari') ], slug='treated_total'), DatabaseColumn(_('transfer_malnutrition'), CountColumn('doc_id', alias='transfer_malnutrition', filters=self.filters + [OR([ EQ('malnutrition_child', 'one'), EQ('malnutrition_adult', 'one') ])])), DatabaseColumn(_('transfer_incomplete_vaccination'), CountColumn('doc_id', alias='transfer_incomplete_vaccination', filters=self.filters + [OR([ EQ('vaccination_child', 'one'), EQ('vaccination_adult', 'one'), EQ('vaccination_newborn', 'one') ])])), DatabaseColumn(_('transfer_danger_signs'), CountColumn('doc_id', alias='transfer_danger_signs', filters=self.filters + [OR([ EQ('danger_sign_child', 'one'), EQ('danger_sign_adult', 'one'), EQ('danger_sign_newborn', 'one') ])])), DatabaseColumn(_('transfer_prenatal_consult'), CountColumn('doc_id', alias='transfer_prenatal_consult', filters=self.filters + [EQ('prenatal_consult', 'one')])), DatabaseColumn(_('transfer_missing_malaria_meds'), CountColumn('doc_id', alias='transfer_missing_malaria_meds', filters=self.filters + [OR([ EQ('missing_malaria_meds_child', 'one'), EQ('missing_malaria_meds_adult', 'one') ])])), DatabaseColumn(_('transfer_other'), CountColumn('doc_id', alias='transfer_other', filters=self.filters + [OR([ EQ('other_child', 'one'), EQ('other_adult', 'one'), EQ('other_newborn', 'one') ])])), AggregateColumn(_('transfer_total'), add_all, [ AliasColumn('transfer_malnutrition'), AliasColumn('transfer_incomplete_vaccination'), AliasColumn('transfer_danger_signs'), AliasColumn('transfer_prenatal_consult'), AliasColumn('transfer_missing_malaria_meds'), AliasColumn('transfer_other'), ], slug='transfer_total'), DatabaseColumn(_('deaths_newborn'), CountColumn('doc_id', alias='deaths_newborn', filters=self.filters + [EQ('deaths_newborn', 'one')])), DatabaseColumn(_('deaths_children'), CountColumn('doc_id', alias='deaths_children', filters=self.filters + [EQ('deaths_children', 'one')])), DatabaseColumn(_('deaths_mothers'), CountColumn('doc_id', alias='deaths_mothers', filters=self.filters + [EQ('deaths_mothers', 'one')])), DatabaseColumn(_('deaths_others'), SumColumn('deaths_others', alias='deaths_other', filters=self.filters + [NOTEQ('deaths_others', 'zero')])), AggregateColumn(_('deaths_total'), add_all, [ AliasColumn('deaths_newborn'), AliasColumn('deaths_children'), AliasColumn('deaths_mothers'), AliasColumn('deaths_other'), ], slug='deaths_total'), DatabaseColumn(_('heath_ed_talks'), SumColumn('heath_ed_talks', alias='heath_ed_talks', filters=self.filters + [NOTEQ('heath_ed_talks', 'zero')])), DatabaseColumn(_('heath_ed_participants'), SumColumn('heath_ed_participants', alias='heath_ed_participants', filters=self.filters + [NOTEQ('heath_ed_participants', 'zero')])) ]
def columns(self): return ( generate_for_all_outcomes('new_patients', self.filters + [RawFilter("patient_type = 'new'")]) + generate_for_all_outcomes( 'new_patients_pulmonary_microbiological', self.filters + [RawFilter("patient_type = 'new'")] + pulmonary_microbiological() ) + generate_for_all_outcomes( 'new_patients_pulmonary_clinical', self.filters + [RawFilter("patient_type = 'new'")] + pulmonary_clinical() ) + generate_for_all_outcomes( 'new_patients_extra_pulmonary', self.filters + [RawFilter("patient_type = 'new'")] + extra_pulmonary() ) + generate_for_all_outcomes( 'previously_treated_patients', self.filters + previously_treated() ) + generate_for_all_outcomes( 'recurrent_patients', self.filters + recurrent() ) + generate_for_all_outcomes( 'treatment_after_failure_patients', self.filters + treatment_after_failure() ) + generate_for_all_outcomes( 'treatment_after_lfu_patients', self.filters + treatment_after_lfu() ) + generate_for_all_outcomes( 'other_previously_treated_patients', self.filters + [RawFilter("basis_of_diagnosis = 'clinical'")] + other_previously_treated() ) + generate_for_all_outcomes( 'hiv_reactive_patients', self.filters + [RawFilter("hiv_status = 'reactive'")] ) + generate_for_all_outcomes( 'new_hiv_reactive_patients', self.filters + [RawFilter("patient_type = 'new'")] + [RawFilter("hiv_status = 'reactive'")] ) + generate_for_all_outcomes( 'previously_treated_hiv_reactive_patients', self.filters + previously_treated() + [RawFilter("hiv_status = 'reactive'")] ) + [ DatabaseColumn( '', CountColumn( 'doc_id', filters=self.filters + [RawFilter("hiv_status = 'reactive'")], alias='total_hiv_cases' ) ) ] + [ DatabaseColumn( '', CountColumn( 'doc_id', filters=( self.filters + [RawFilter("hiv_status = 'reactive'")] + [RawFilter("initiated_on_art = 'yes'")] ), alias='total_initiated_on_art' ) ) ] + [ DatabaseColumn( '', CountColumn( 'doc_id', filters=( self.filters + [RawFilter("hiv_status = 'reactive'")] + [RawFilter("cpt_initiated = 'yes'")] ), alias='total_cpt_initiated' ) ) ] )
def columns(self): case_table_name = case_table(self.domain.name) case_ownership_table_name = case_ownership_table(self.domain.name) case_type_filters = [filters.NOTEQ('case_type', 'ccCaseType')] domain_filter = [ filters.EQ('domain', 'domain'), filters.EQ('doc_type', 'form_doc_type') ] columns = [ DatabaseColumn("case", SimpleColumn('user_id', filters=filters_week0('time_end') + domain_filter), format_fn=self.get_user_case_id, sortable=False), DatabaseColumn('formsSubmittedWeek0', CountColumn('instance_id', table_name=FORMDATA_TABLE, filters=filters_week0('time_end') + domain_filter, alias='formsSubmittedWeek0'), sortable=False), DatabaseColumn('formsSubmittedWeek1', CountColumn('instance_id', table_name=FORMDATA_TABLE, filters=filters_week1('time_end') + domain_filter, alias='formsSubmittedWeek1'), sortable=False), DatabaseColumn('formsSubmittedMonth0', CountColumn('instance_id', table_name=FORMDATA_TABLE, filters=filters_month0('time_end') + domain_filter, alias='formsSubmittedMonth0'), sortable=False), DatabaseColumn('casesUpdatedMonth0', CountUniqueColumn('case_id', table_name=case_table_name, filters=filters_month0('date') + case_type_filters, alias='casesUpdatedMonth0'), sortable=False), DatabaseColumn('casesUpdatedMonth1', CountUniqueColumn('case_id', table_name=case_table_name, filters=filters_month1('date') + case_type_filters, alias='casesUpdatedMonth1'), sortable=False), DatabaseColumn('totalCases', SumColumn('open_cases', table_name=case_ownership_table_name, filters=case_type_filters, alias='totalCases'), sortable=False) ] columns.extend(self._get_custom_columns()) return columns