def columns(self): self.config['mother_ids'] = tuple(DeliveryMothersIds(config=self.config).data.keys()) + ('',) columns = [ DatabaseColumn("Total children with with birthweight known", CountUniqueColumn('doc_id', alias="total_birthweight_known", filters=self.filters + [NOTEQ('weight_birth', 'empty')])), DatabaseColumn("Total births", CountUniqueColumn('doc_id', filters=[AND([IN('mother_id', get_INFilter_bindparams('mother_ids', self.config['mother_ids'])), OR([EQ('gender', 'female'), EQ('gender', 'male')])])], alias='total_births'))] columns.extend([ DatabaseColumn("Birthweight < 2.5 kg", CountUniqueColumn('doc_id', alias="total_birthweight_lt_25", filters=self.filters + [AND([LT('weight_birth', 'weight_birth_25'), NOTEQ('weight_birth', 'empty')])] ) ), DatabaseColumn("Birthweight >= 2.5 kg", CountUniqueColumn('doc_id', alias="total_birthweight_gte_25", filters=self.filters + [AND([GTE('weight_birth', 'weight_birth_25'), NOTEQ('weight_birth', 'empty')])] ) ) ]) return columns
def columns(self): columns = [ DatabaseColumn( "Total children with with birthweight known", CountUniqueColumn('doc_id', alias="total_birthweight_known", filters=self.filters + [NOTEQ('weight_birth', 'empty')])), ] columns.extend([ DatabaseColumn( "Birthweight < 2.5 kg", CountUniqueColumn( 'doc_id', alias="total_birthweight_lt_25", filters=self.filters + [ AND([ LT('weight_birth', 'weight_birth_25'), NOTEQ('weight_birth', 'empty') ]) ])), DatabaseColumn( "Birthweight >= 2.5 kg", CountUniqueColumn( 'doc_id', alias="total_birthweight_gte_25", filters=self.filters + [ AND([ GTE('weight_birth', 'weight_birth_25'), NOTEQ('weight_birth', 'empty') ]) ])) ]) return columns
def columns(self): return [ DatabaseColumn("Early initiation of breastfeeding", CountUniqueColumn('doc_id', alias="colostrum_feeding", filters=self.filters + [EQ('breastfeed_1_hour', 'yes')])), DatabaseColumn("Early initiation of breastfeeding Total Eligible", CountUniqueColumn('doc_id', alias="colostrum_feeding_total_eligible", filters=self.filters + [NOTEQ('breastfeed_1_hour', 'empty')])), DatabaseColumn("Exclusive breastfeeding", CountUniqueColumn('doc_id', alias="exclusive_breastfeeding", filters=self.filters + [AND([EQ('exclusive_breastfeeding', "yes"), GTE('dob', "today_minus_183")])])), DatabaseColumn("Exclusive Breastfeeding (EBF) Total Eligible", CountUniqueColumn('doc_id', alias="exclusive_breastfeeding_total_eligible", filters=self.filters + [GTE('dob', 'today_minus_183')])), DatabaseColumn("Supplementary feeding", CountUniqueColumn('doc_id', alias="supplementary_feeding", filters=self.filters + [AND([EQ('supplementary_feeding_baby', 'yes'), GTE('dob', 'today_minus_182')])])), DatabaseColumn("Supplementary feeding Total Eligible", CountUniqueColumn('doc_id', alias="supplementary_feeding_total_eligible", filters=self.filters + [GTE('dob', 'today_minus_182')])), DatabaseColumn("Complementary feeding", CountUniqueColumn('doc_id', alias="complementary_feeding", filters=self.filters + [AND([EQ('comp_breastfeeding', 'yes'), LTE('dob', 'today_minus_183'), GTE('dob', 'today_minus_730')])])), DatabaseColumn("Complementary feeding Total Eligible", CountUniqueColumn('doc_id', alias="complementary_feeding_total_eligible", filters=self.filters + [AND([LTE('dob', 'today_minus_183'), GTE('dob', 'today_minus_730')])])) ]
def columns(self): self.config['mother_ids'] = tuple( DeliveryMothersIds(config=self.config).data.keys()) + ('', ) return [ DatabaseColumn( "Total births", CountUniqueColumn( 'doc_id', filters=[ AND([ IN( 'mother_id', get_INFilter_bindparams( 'mother_ids', self.config['mother_ids'])), OR([EQ('gender', 'female'), EQ('gender', 'male')]) ]) ], alias='total_births')), DatabaseColumn( "Newborn deaths (< 1 m)", CountUniqueColumn( 'doc_id', filters=self.filters + [ AND([ EQ('reason_for_child_closure', 'death'), EQ('type_of_child_death', 'newborn_death') ]) ], alias='newborn_death')), DatabaseColumn( "Infant deaths (< 1 y)", CountUniqueColumn( 'doc_id', filters=self.filters + [ AND([ EQ('reason_for_child_closure', 'death'), EQ('type_of_child_death', 'infant_death') ]) ], alias='infant_death')), DatabaseColumn( "Child deaths (2-5y)", CountUniqueColumn( 'doc_id', filters=self.filters + [ AND([ EQ('reason_for_child_closure', 'death'), EQ('type_of_child_death', 'child_death') ]) ], alias='child_death')), DatabaseColumn( "Total deaths", CountUniqueColumn('doc_id', filters=self.filters + [EQ('reason_for_child_closure', 'death')], alias='total_deaths')) ]
def columns(self): columns = [ DatabaseColumn("Total child registered ever", CountUniqueColumn('doc_id', alias="total")) ] if 'startdate' not in self.config and 'enddate' not in self.config or 'startdate' not in self.config \ and 'enddate' in self.config: columns.extend([ DatabaseColumn( "Total open children cases", CountUniqueColumn( 'doc_id', alias="no_date_opened", filters=self.filters + [EQ('closed_on', 'empty')] ) ), DatabaseColumn( "Total closed children cases", CountUniqueColumn( 'doc_id', alias="no_date_closed", filters=self.filters + [NOTEQ('closed_on', 'empty')] ) ), DatabaseColumn( "New registrations during last 30 days", CountUniqueColumn( 'doc_id', alias="no_date_new_registrations", filters=self.filters + [AND([GTE('opened_on', "last_month"), LTE('opened_on', "today")])] ) ) ]) else: columns.extend([ DatabaseColumn( "Children cases open at end period", CountUniqueColumn( 'doc_id', alias="opened", filters=self.filters + [AND([LTE('opened_on', "stred"), OR([EQ('closed_on', 'empty'), GT('closed_on', "stred")])])] ) ), DatabaseColumn( "Children cases closed during period", CountUniqueColumn( 'doc_id', alias="closed", filters=self.filters + [AND([GTE('closed_on', "strsd"), LTE('closed_on', "stred")])] ) ), DatabaseColumn( "Total children followed during period", CountUniqueColumn( 'doc_id', alias="followed", filters=self.filters + [AND([LTE('opened_on', "stred"), OR([EQ('closed_on', 'empty'), GTE('closed_on', "strsd")])])] ) ), DatabaseColumn( "New registrations during period", CountUniqueColumn( 'doc_id', alias="new_registrations", filters=self.filters + [AND([LTE('opened_on', "stred"), GTE('opened_on', "strsd")])] ) ) ]) return columns
def __init__(self, table_name, filters, group_by, key): self.key = key super(IntraHealthQueryMeta, self).__init__(table_name, filters, group_by, []) assert len(filters) > 0 self.filter = AND( self.filters) if len(self.filters) > 1 else self.filters[0]
def filters(self): filters = None if 'enddate' not in self.config: self.config['enddate'] = self.config['today'] self.config['stred'] = self.config['today'] if 'startdate' in self.config: filters = [ AND([ LTE("date", "enddate"), OR([ GTE('closed_on', "startdate"), EQ('closed_on', 'empty') ]) ]) ] else: self.config['strsd'] = '0001-01-01' filters = [LTE("date", "enddate")] for k, v in six.iteritems(LOCATION_HIERARCHY): if v['prop'] in self.config and self.config[v['prop']]: filters.append( IN(k, get_INFilter_bindparams(k, self.config[v['prop']]))) return filters
def columns(self): return [ DatabaseColumn( "Trimester 1", CountUniqueColumn('doc_id', alias="trimester_1", filters=self.filters + [GT('edd', "today_plus_196")])), DatabaseColumn( "Trimester 2", CountUniqueColumn('doc_id', alias="trimester_2", filters=self.filters + [ AND([ LTE('edd', "today_plus_196"), GT('edd', "today_plus_84") ]) ])), DatabaseColumn( "Trimester 3", CountUniqueColumn('doc_id', alias="trimester_3", filters=self.filters + [LTE('edd', 'today_plus_84')])) ]
def filters(self): filters = [ EQ("domain", "domain"), EQ("ppt_year", "ppt_year"), AND([ NOTEQ("case_status", "duplicate"), NOTEQ("case_status", "test") ]) ] for k, v in self.geography_config.items(): if k in self.config and self.config[k]: filters.append( IN(k, get_INFilter_bindparams(k, self.config[k]))) if 'value_chain' in self.config and self.config['value_chain']: filters.append(EQ("value_chain", "value_chain")) if 'group_leadership' in self.config and self.config[ 'group_leadership']: filters.append(EQ('group_leadership', 'group_leadership')) if 'cbt_name' in self.config and self.config['cbt_name']: filters.append( IN( 'owner_id', get_INFilter_bindparams('cbt_name', self.config['cbt_name']))) if 'real_or_test' in self.config and self.config['real_or_test']: filters.append(IEQ('real_or_test', 'real_or_test')) for column_name in ['domains', 'practices', 'schedule']: if column_name in self.config and self.config[ column_name] and self.config[column_name] != ('0', ): filters.append( IN( column_name, get_INFilter_bindparams(column_name, self.config[column_name]))) return filters
def _get_age_range_filter(self): filters = [ AND([ GTE(age_range.column, age_range.lower_param), LT(age_range.column, age_range.upper_param) ]) for age_range in self._age_ranges ] return filters[0] if len(filters) == 1 else OR(filters)
def filters(self): #We have to filter data by real_date_repeat not date(first position in filters list). #Filtering is done directly in columns method(CountUniqueColumn). filters = super(ConventureData, self).filters filters.append(AND([GTE('real_date_repeat', "strsd"), LTE('real_date_repeat', "stred")])) if 'archived_locations' in self.config: filters.append(_locations_filter(self.config['archived_locations'])) return filters[1:]
def filters(self): filters = super(PPSAvecDonnees, self).filters filters.append( AND([ GTE('real_date_repeat', "strsd"), LTE('real_date_repeat', "stred") ])) return filters[1:]
def filters(self): filters = super(NumberOfPNCVisits, self).filters[1:] filters.append( AND([ NOTEQ('delivery_date', 'empty'), LTE('delivery_date', 'today_minus_42') ])) return filters
def filters(self): filter = [] if 'start_date' in self.config: filter.extend([ AND([ GTE('date_of_death', 'startdate'), LTE('date_of_death', 'enddate') ]) ]) return filter
def get_age_filters(beta): if beta: return [NOT(EQ('age_tranche', 'age_72'))] return [ AND([ NOT(EQ('age_tranche', 'age_0')), NOT(EQ('age_tranche', 'age_6')), NOT(EQ('age_tranche', 'age_72')) ]) ]
def filters(self): filters = super(PPSAvecDonnees, self).filters filters.append( AND([ GTE('real_date_repeat', "strsd"), LTE('real_date_repeat', "stred") ])) if 'archived_locations' in self.config: filters.append(NOT(IN('location_id', 'archived_locations'))) return filters[1:]
def columns(self): return [ DatabaseColumn("EBF stopped between 0-1 month", CountUniqueColumn('doc_id', alias="stopped_0_1", filters=self.filters + [LTE('ebf_stop_age_month', '1')]) ), DatabaseColumn("EBF stopped between 1-3 month", CountUniqueColumn('doc_id', alias="stopped_1_3", filters=self.filters + [AND([GT('ebf_stop_age_month', '1'), LTE('ebf_stop_age_month', '3')])]) ), DatabaseColumn("EBF stopped between 3-5 month", CountUniqueColumn('doc_id', alias="stopped_3_5", filters=self.filters + [AND([GT('ebf_stop_age_month', '3'), LTE('ebf_stop_age_month', '5')])]) ), DatabaseColumn("EBF stopped between 5-6 month", CountUniqueColumn('doc_id', alias="stopped_5_6", filters=self.filters + [AND([GT('ebf_stop_age_month', '5'), LTE('ebf_stop_age_month', '6')])]) ) ]
def filters(self): filter = [] if 'start_date' in self.config: filter.extend([ AND([ GTE('date_of_death', 'startdate'), LTE('date_of_death', 'enddate') ]) ]) filter.extend([EQ('reason_for_child_closure', 'death')]) return filter
def columns(self): return [ DatabaseColumn( "ARI (Pneumonia) cases", CountUniqueColumn('doc_id', alias="ari_cases", filters=self.filters + [EQ('pneumonia_since_last_visit', 'yes')])), DatabaseColumn( "Diarrhea cases", CountUniqueColumn( 'doc_id', alias="diarrhea_cases", filters=self.filters + [EQ('has_diarrhea_since_last_visit', 'yes')])), DatabaseColumn( "ORS given during diarrhea", CountUniqueColumn( 'doc_id', alias="ors", filters=self.filters + [ AND([ EQ('dairrhea_treated_with_ors', 'yes'), EQ('has_diarrhea_since_last_visit', 'yes') ]) ])), DatabaseColumn( "Zinc given during diarrhea", CountUniqueColumn( 'doc_id', alias="zinc", filters=self.filters + [ AND([ EQ('dairrhea_treated_with_zinc', 'yes'), EQ('has_diarrhea_since_last_visit', 'yes') ]) ])) ]
def columns(self): return [ DatabaseColumn( "Trimester 1", CountUniqueColumn( 'doc_id', alias="trimester_1", filters=self.filters + [ AND([ LTE('lmp', "today"), GT('lmp', "first_trimester_start_date"), NOTEQ('lmp', 'empty') ]) ])), DatabaseColumn( "Trimester 2", CountUniqueColumn( 'doc_id', alias="trimester_2", filters=self.filters + [ AND([ LTE('lmp', "second_trimester_start_date"), GT('lmp', "second_trimester_end_date"), NOTEQ('lmp', 'empty') ]) ])), DatabaseColumn( "Trimester 3", CountUniqueColumn( 'doc_id', alias="trimester_3", filters=self.filters + [ AND([ LTE('lmp', 'third_trimester_start_date'), NOTEQ('lmp', 'empty') ]) ])) ]
def columns(self): registered_column = "registered_total_for_region" if 'district_id' in self.config: registered_column = 'registered_total_for_district' return [ DatabaseColumn( "No de PPS (number of PPS registered in that region)", MaxColumn(registered_column, alias='registered')), DatabaseColumn("No de PPS planifie (number of PPS planned)", MaxColumn('planned_total')), DatabaseColumn( "No de PPS avec livrasion cet mois (number of PPS visited this month)", CountUniqueColumn('location_id', alias="visited", filters=self.filters + [ AND([ GTE('real_date_repeat', "strsd"), LTE('real_date_repeat', "stred") ]) ])), AggregateColumn( "Taux de couverture (coverage ratio)", self.percent_fn, [AliasColumn('registered'), AliasColumn("visited")]), DatabaseColumn( "No de PPS avec donnees soumises (number of PPS which submitted data)", CountUniqueColumn('location_id', alias="submitted", filters=self.filters + [ AND([ GTE('real_date_repeat', "strsd"), LTE('real_date_repeat', "stred") ]) ])), AggregateColumn("Exhaustivite des donnees", self.percent_fn, [AliasColumn('visited'), AliasColumn('submitted')]), ]
def test_filters_multiple(self): def test(filters): filter_values = { "startdate": date(2013, 02, 20), "enddate": date(2013, 03, 05) } data = self._get_user_data(filter_values, filters) self.assertNotIn('user1', data) self.assertEqual(data['user2']['indicator_a'], 2) self.assertEqual(data['user2']['indicator_b'], 1) test([GTE('date', 'startdate'), LT('date', 'enddate')]) test([AND([GTE('date', 'startdate'), LT('date', 'enddate')])])
def filters(self): filters = [ AND([GTE('opened_on', 'start_date'), LT('opened_on', 'end_date')]), ] locations_id = filter(lambda x: bool(x), self.config.locations_id) if locations_id: filters.append( IN('person_owner_id', get_INFilter_bindparams('locations_id', locations_id))) return filters
def columns(self): return [ DatabaseColumn( "PNC in 48 hours", CountUniqueColumn('doc_id', alias="pnc_1", filters=self.filters + [EQ('pp_1_done', 'yes')]), ), DatabaseColumn( "PNC in 2-4 days", CountUniqueColumn('doc_id', alias="pnc_2", filters=self.filters + [EQ('pp_2_done', 'yes')]), ), DatabaseColumn( "PNC in 5-7", CountUniqueColumn('doc_id', alias="pnc_3", filters=self.filters + [EQ('pp_3_done', 'yes')]), ), DatabaseColumn( "PNC in 21-42 days", CountUniqueColumn('doc_id', alias="pnc_4", filters=self.filters + [EQ('pp_4_done', 'yes')]), ), DatabaseColumn( "PNC 1 visits Total Eligible", CountUniqueColumn('doc_id', alias="pnc_1_eligible", filters=self.filters + [AND([NOTEQ('delivery_date', 'empty'), LTE('delivery_date', 'today')])]), ), DatabaseColumn("PNC 2 visits Total Eligible", CountUniqueColumn('doc_id', alias="pnc_2_eligible", filters=self.filters + [AND([NOTEQ('delivery_date', 'empty'), LTE('delivery_date', 'today_minus_2')])]), ), DatabaseColumn("PNC 3 visits Total Eligible", CountUniqueColumn('doc_id', alias="pnc_3_eligible", filters=self.filters + [AND([NOTEQ('delivery_date', 'empty'), LTE('delivery_date', 'today_minus_25')])]), ), DatabaseColumn("PNC 4 visits Total Eligible", CountUniqueColumn('doc_id', alias="pnc_4_eligible", filters=self.filters + [AND([NOTEQ('delivery_date', 'empty'), LTE('delivery_date', 'today_minus_21')])]), ) ]
def filters(self): filters = [ AND([GTE(self.date_property, 'start_date'), LT(self.date_property, 'end_date')]) ] locations_id = filter(lambda x: bool(x), self.config.locations_id) if locations_id: filters.append( IN(self.location_property, get_INFilter_bindparams('locations_id', locations_id)) ) is_migrated = self.config.is_migrated if is_migrated is not None: filters.append(EQ('case_created_by_migration', 'is_migrated')) return filters
def columns(self): return [ DatabaseColumn("Total pregnant", CountUniqueColumn('doc_id', alias="total_pregnant")), DatabaseColumn( "No ANC", CountUniqueColumn('doc_id', alias="no_anc", filters=self.filters + [NOTEQ('anc_1', 'yes')])), DatabaseColumn( "ANC1", CountUniqueColumn('doc_id', alias="anc_1", filters=self.filters + [EQ('anc_1', 'yes')])), DatabaseColumn( "ANC2", CountUniqueColumn('doc_id', alias="anc_2", filters=self.filters + [EQ('anc_2', 'yes')])), DatabaseColumn( "ANC3", CountUniqueColumn('doc_id', alias="anc_3", filters=self.filters + [EQ('anc_3', 'yes')])), DatabaseColumn( "ANC4", CountUniqueColumn('doc_id', alias="anc_4", filters=self.filters + [EQ('anc_4', 'yes')])), DatabaseColumn( "TT1", CountUniqueColumn('doc_id', alias="tt_1", filters=self.filters + [EQ('tt_1', 'yes')])), DatabaseColumn( "TT2", CountUniqueColumn('doc_id', alias="tt_2", filters=self.filters + [EQ('tt_2', 'yes')])), DatabaseColumn( "TT Booster", CountUniqueColumn('doc_id', alias="tt_booster", filters=self.filters + [EQ('tt_booster', 'yes')])), DatabaseColumn( "TT Complete", CountUniqueColumn( 'doc_id', alias="tt_completed", filters=self.filters + [OR([EQ('tt_2', 'yes'), EQ('tt_booster', 'yes')])])), DatabaseColumn( "IFA received", CountUniqueColumn('doc_id', alias="ifa_tablets", filters=self.filters + [EQ('iron_folic', 'yes')])), DatabaseColumn( "100 IFA consumed", CountUniqueColumn('doc_id', alias="100_tablets", filters=self.filters[1:-1] + [ AND([ EQ('completed_100_ifa', 'yes'), GTE('delivery_date', 'strsd'), LTE('delivery_date', 'stred') ]) ])), DatabaseColumn( "Clinically anemic mothers", CountUniqueColumn('doc_id', alias="clinically_anemic", filters=self.filters + [EQ('anemia_signs', 'yes')])), DatabaseColumn( "Number of pregnant mother referrals due to danger signs", CountUniqueColumn('doc_id', alias="danger_signs", filters=self.filters + [EQ('currently_referred', 'yes')])), DatabaseColumn( "Knows closest health facility", CountUniqueColumn('doc_id', alias="knows_closest_facility", filters=self.filters + [EQ('knows_closest_facility', 'yes')])), DatabaseColumn( "No ANC Total Eligible", CountUniqueColumn('doc_id', alias="no_anc_eligible", filters=self.filters + [LTE('edd', 'today_plus_196')])), DatabaseColumn( "ANC1 Total Eligible", CountUniqueColumn('doc_id', alias="anc_1_eligible", filters=self.filters + [LTE('edd', 'today_plus_196')])), DatabaseColumn( "ANC2 Total Eligible", CountUniqueColumn( 'doc_id', alias="anc_2_eligible", filters=self.filters + [AND([EQ('anc_1', 'yes'), LTE('edd', 'today_plus_112')])])), DatabaseColumn( "ANC3 Total Eligible", CountUniqueColumn( 'doc_id', alias="anc_3_eligible", filters=self.filters + [AND([EQ('anc_2', 'yes'), LTE('edd', 'today_plus_56')])])), DatabaseColumn( "ANC4 Total Eligible", CountUniqueColumn( 'doc_id', alias="anc_4_eligible", filters=self.filters + [AND([EQ('anc_3', 'yes'), LTE('edd', 'today_plus_35')])])), DatabaseColumn( "TT1 Total Eligible", CountUniqueColumn('doc_id', alias="tt_1_eligible", filters=self.filters + [NOTEQ('previous_tetanus', 'yes')])), DatabaseColumn( "TT2 Total Eligible", CountUniqueColumn('doc_id', alias="tt_2_eligible", filters=self.filters + [EQ('tt_1', 'yes')])), DatabaseColumn( "TT Booster Total Eligible", CountUniqueColumn('doc_id', alias="tt_booster_eligible", filters=self.filters + [EQ('previous_tetanus', 'yes')])), DatabaseColumn( "TT Completed (TT2 or Booster) Total Eligible", CountUniqueColumn( 'doc_id', alias="tt_completed_eligible", filters=self.filters + [OR([EQ('tt_1', 'yes'), EQ('previous_tetanus', 'yes')])])), DatabaseColumn( "Taking IFA tablets Total Eligible", CountUniqueColumn('doc_id', alias="ifa_tablets_eligible")), DatabaseColumn( "Completed 100 IFA tablets Total Eligible", CountUniqueColumn('doc_id', alias="100_tablets_eligible", filters=self.filters[1:-1] + [ AND([ GTE('delivery_date', 'strsd'), LTE('delivery_date', 'stred') ]) ])), DatabaseColumn( "Clinically anemic mothers Total Eligible", CountUniqueColumn('doc_id', alias="clinically_anemic_eligible")), DatabaseColumn( "Number of mother referrals due to danger signs Total Eligible", CountUniqueColumn('doc_id', alias="danger_signs_eligible")), DatabaseColumn( "Know closest health facility Total Eligible", CountUniqueColumn('doc_id', alias="knows_closest_facility_eligible")) ]
def columns(self): test_type_filter = [RawFilter("bacteriological_examination = 1")] filters_without_episode_type = self.filters[:-1] bacteriological_test_date_reported = [ AND([ GTE('bacteriological_test_date_reported', 'start_date'), LT('bacteriological_test_date_reported', 'end_date') ]) ] filters_with_bacteriological_date = bacteriological_test_date_reported + 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=(filters_with_bacteriological_date + 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=(filters_with_bacteriological_date + 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=( filters_with_bacteriological_date + 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 [ DatabaseColumn( "BCG", CountUniqueColumn('doc_id', alias="bcg", filters=self.filters + [EQ('bcg', 'yes')])), DatabaseColumn( "OPV3", CountUniqueColumn('doc_id', alias="opv3", filters=self.filters + [EQ('opv3', 'yes')])), DatabaseColumn( "HEP3", CountUniqueColumn('doc_id', alias="hep3", filters=self.filters + [EQ('hepb3', 'yes')])), DatabaseColumn( "DPT3", CountUniqueColumn('doc_id', alias="dpt3", filters=self.filters + [EQ('dpt3', 'yes')])), DatabaseColumn( "Measles", CountUniqueColumn('doc_id', alias="measles", filters=self.filters + [EQ('measles', 'yes')])), DatabaseColumn( "Fully Immunized in 1st year", CountUniqueColumn('doc_id', alias="fully_immunized", filters=self.filters + [ AND([ EQ('bcg', 'yes'), EQ('opv0', 'yes'), EQ('hepb0', 'yes'), EQ('opv1', 'yes'), EQ('hepb1', 'yes'), EQ('dpt1', 'yes'), EQ('opv2', 'yes'), EQ('hepb2', 'yes'), EQ('dpt2', 'yes'), EQ('opv3', 'yes'), EQ('hepb3', 'yes'), EQ('dpt3', 'yes'), EQ('measles', 'yes') ]) ])), DatabaseColumn( "DPT-OPT Booster", CountUniqueColumn('doc_id', alias="dpt_opv_booster", filters=self.filters + [EQ('dpt_opv_booster', 'yes')])), DatabaseColumn( "VitA3", CountUniqueColumn('doc_id', alias="vita3", filters=self.filters + [EQ('vita3', 'yes')])), DatabaseColumn( "BCG Total Eligible", CountUniqueColumn('doc_id', alias="bcg_eligible"), ), DatabaseColumn( "OPV3 Total Eligible", CountUniqueColumn('doc_id', alias="opv3_eligible", filters=self.filters + [LTE('dob', 'today_minus_106')])), DatabaseColumn( "HEP3 Total Eligible", CountUniqueColumn('doc_id', alias="hep3_eligible", filters=self.filters + [LTE('dob', 'today_minus_106')])), DatabaseColumn( "DPT3 Total Eligible", CountUniqueColumn('doc_id', alias="dpt3_eligible", filters=self.filters + [LTE('dob', 'today_minus_106')])), DatabaseColumn( "Measles Total Eligible", CountUniqueColumn('doc_id', alias="measles_eligible", filters=self.filters + [LTE('dob', 'today_minus_273')])), DatabaseColumn( "Fully Immunized Total Eligible", CountUniqueColumn('doc_id', alias="fully_immunized_eligible", filters=self.filters + [LTE('dob', 'today_minus_273')])), DatabaseColumn( "DPT-OPT Booster Total Eligible", CountUniqueColumn('doc_id', alias="dpt_opv_booster_eligible", filters=self.filters + [LTE('dob', 'today_minus_548')])), DatabaseColumn( "VitA3 Total Eligible", CountUniqueColumn('doc_id', alias="vita3_eligible", filters=self.filters + [LTE('dob', 'today_minus_700')])) ]
def columns(self): return [ DatabaseColumn("Total pregnant", CountUniqueColumn('doc_id', alias="total_pregnant")), DatabaseColumn( "ANC3", CountUniqueColumn('doc_id', alias="anc_3", filters=self.filters + [EQ('anc_3', 'yes')])), DatabaseColumn( "TT Completed (TT2 or Booster)", CountUniqueColumn( 'doc_id', alias="tt_completed", filters=self.filters + [OR([EQ('tt_2', 'yes'), EQ('tt_booster', 'yes')])])), DatabaseColumn( "Taking IFA tablets", CountUniqueColumn('doc_id', alias="ifa_tablets", filters=self.filters + [EQ('iron_folic', 'yes')])), DatabaseColumn( "Completed 100 IFA tablets", CountUniqueColumn('doc_id', alias="100_tablets", filters=self.filters[1:-1] + [ AND([ EQ('completed_100_ifa', 'yes'), GTE('delivery_date', 'strsd'), LTE('delivery_date', 'stred') ]) ])), DatabaseColumn( "ANC3 Total Eligible", CountUniqueColumn( 'doc_id', alias="anc_3_eligible", filters=self.filters + [AND([EQ('anc_2', 'yes'), LTE('edd', 'today_plus_56')])])), DatabaseColumn( "TT Completed (TT2 or Booster) Total Eligible", CountUniqueColumn( 'doc_id', alias="tt_completed_eligible", filters=self.filters + [OR([EQ('tt_1', 'yes'), EQ('previous_tetanus', 'yes')])])), DatabaseColumn( "Taking IFA tablets Total Eligible", CountUniqueColumn('doc_id', alias="ifa_tablets_eligible")), DatabaseColumn( "Completed 100 IFA tablets Total Eligible", CountUniqueColumn('doc_id', alias="100_tablets_eligible", filters=self.filters[1:-1] + [ AND([ GTE('delivery_date', 'strsd'), LTE('delivery_date', 'stred') ]) ])), ]
def columns(self): return [ DatabaseColumn( "Total pregnant", CountUniqueColumn('doc_id', alias="total_pregnant"), ), DatabaseColumn( "ANC3", CountUniqueColumn('doc_id', alias="anc_3", filters=self.filters + [EQ('anc_3', 'yes')]), ), DatabaseColumn( "TT Completed (TT2 or Booster)", CountUniqueColumn( 'doc_id', alias="tt_completed", filters=self.filters + [OR([EQ('tt_2', 'yes'), EQ('tt_booster', 'yes')])]), ), DatabaseColumn( "Taking IFA tablets", CountUniqueColumn('doc_id', alias="ifa_tablets", filters=self.filters + [EQ('iron_folic', 'yes')]), ), DatabaseColumn( "Completed 100 IFA tablets", CountUniqueColumn('doc_id', alias="100_tablets", filters=self.filters + [EQ('completed_100_ifa', 'yes')]), ), DatabaseColumn( "ANC3 Total Eligible", CountUniqueColumn( 'doc_id', alias="anc_3_eligible", filters=self.filters + [AND([EQ('anc_2', 'yes'), LTE('lmp', 'days_224')])]), ), DatabaseColumn( "TT Completed (TT2 or Booster) Total Eligible", CountUniqueColumn( 'doc_id', alias="tt_completed_eligible", filters=self.filters + [OR([EQ('tt_1', 'yes'), EQ('previous_tetanus', 'yes')])]), ), DatabaseColumn( "Taking IFA tablets Total Eligible", CountUniqueColumn('doc_id', alias="ifa_tablets_eligible"), ), DatabaseColumn( "Completed 100 IFA tablets Total Eligible", CountUniqueColumn('doc_id', alias="100_tablets_eligible", filters=self.filters + [LTE('lmp', 'days_195')]), ) ]