def columns(self): return self.common_columns + \ [ DatabaseColumn("Count", CountColumn("doc_id", alias="day_count")), DatabaseColumn("disease", SimpleColumn("disease_name", alias="disease_name")) ]
def columns(self): columns = super(ImmunizationDetailsFirstYear, self).columns del columns[6:8] del columns[-2:] cols1 = [ DatabaseColumn( "OPV0", CountUniqueColumn('doc_id', alias="opv0", filters=self.filters + [EQ('opv0', 'yes')])), DatabaseColumn( "HEP0", CountUniqueColumn('doc_id', alias="hep0", filters=self.filters + [EQ('hepb0', 'yes')])), DatabaseColumn( "OPV1", CountUniqueColumn('doc_id', alias="opv1", filters=self.filters + [EQ('opv1', 'yes')])), DatabaseColumn( "HEP1", CountUniqueColumn('doc_id', alias="hep1", filters=self.filters + [EQ('hepb1', 'yes')])), DatabaseColumn( "DPT1", CountUniqueColumn('doc_id', alias="dpt1", filters=self.filters + [EQ('dpt1', 'yes')])), DatabaseColumn( "OPV2", CountUniqueColumn('doc_id', alias="opv2", filters=self.filters + [EQ('opv2', 'yes')])), DatabaseColumn( "HEP2", CountUniqueColumn('doc_id', alias="hep2", filters=self.filters + [EQ('hepb2', 'yes')])), DatabaseColumn( "DPT2", CountUniqueColumn('doc_id', alias="dpt2", filters=self.filters + [EQ('dpt2', 'yes')])), ] cols2 = [ DatabaseColumn( "OPV0 Total Eligible", CountUniqueColumn('doc_id', alias="opv0_eligible", filters=self.filters)), DatabaseColumn( "HEP0 Total Eligible", CountUniqueColumn('doc_id', alias="hep0_eligible", filters=self.filters)), DatabaseColumn( "OPV1 Total Eligible", CountUniqueColumn('doc_id', alias="opv1_eligible", filters=self.filters + [LTE('dob', 'today_minus_40')])), DatabaseColumn( "HEP1 Total Eligible", CountUniqueColumn('doc_id', alias="hep1_eligible", filters=self.filters + [LTE('dob', 'today_minus_40')])), DatabaseColumn( "DPT1 Total Eligible", CountUniqueColumn('doc_id', alias="dpt1_eligible", filters=self.filters + [LTE('dob', 'today_minus_40')])), DatabaseColumn( "OPV2 Total Eligible", CountUniqueColumn('doc_id', alias="opv2_eligible", filters=self.filters + [LTE('dob', 'today_minus_75')])), DatabaseColumn( "HEP2 Total Eligible", CountUniqueColumn('doc_id', alias="hep2_eligible", filters=self.filters + [LTE('dob', 'today_minus_75')])), DatabaseColumn( "DPT2 Total Eligible", CountUniqueColumn('doc_id', alias="dpt2_eligible", filters=self.filters + [LTE('dob', 'today_minus_75')])) ] cols3 = [ DatabaseColumn( "VitA1", CountUniqueColumn('doc_id', alias="vita1", filters=self.filters + [EQ('vita1', 'yes')])) ] cols4 = [ DatabaseColumn( "VitA1 Total Eligible", CountUniqueColumn('doc_id', alias="vita1_eligible", filters=self.filters + [LTE('dob', 'today_minus_273')])) ] return columns[:1] + cols1 + columns[1:5] + cols3 + columns[5:-5] \ + cols2 + columns[-5:-1] + cols4 + columns[-1:]
def columns(self): levels = [k for k in self.geography_config.keys()] columns = [] for k in levels: columns.append(DatabaseColumn(k, SimpleColumn(k))) return columns
def columns(self): return [ DatabaseColumn("Cause of death", SimpleColumn('cause_of_death_child')), DatabaseColumn("Number", CountUniqueColumn('doc_id')), ]
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 columns(self): columns = self.get_columns_by_loc_level agg_columns = [ DatabaseColumn( 'num_households', SumColumn('cases_household'), slug='num_households' ), DatabaseColumn( 'num_people', SumColumn('cases_person_all'), slug='num_people' ), DatabaseColumn( 'beneficiary_persons', SumColumn(self.person_is_beneficiary_column), slug='beneficiary_persons' ), DatabaseColumn( 'person_has_aadhaar', SumColumn(self.person_has_aadhaar_column), slug='person_has_aadhaar' ), AggregateColumn( 'num_people_with_aadhar', percent, [ AliasColumn(self.person_has_aadhaar_column), AliasColumn(self.person_is_beneficiary_column) ], slug='num_people_with_aadhar' ), DatabaseColumn( 'num_pregnant_women', SumColumn('cases_ccs_pregnant_all'), slug='num_pregnant_women' ), DatabaseColumn( 'num_pregnant_women_enrolled_for_services', SumColumn('cases_ccs_pregnant'), slug='num_pregnant_women_enrolled_for_services' ), DatabaseColumn( 'num_lactating_women', SumColumn('cases_ccs_lactating_all'), slug='num_lactating_women' ), DatabaseColumn( 'num_lactating_women_enrolled_for_services', SumColumn('cases_ccs_lactating'), slug='num_lactating_women_enrolled_for_services' ), DatabaseColumn( 'num_children_0_6years', SumColumn('cases_child_health_all'), slug='num_children_0_6years' ), DatabaseColumn( 'num_children_0_6years_enrolled_for_services', SumColumn('cases_child_health'), slug='num_children_0_6years_enrolled_for_services' ), DatabaseColumn( 'num_adolescent_girls_11yr14yr', SumColumn('cases_person_adolescent_girls_11_14_all'), slug='num_adolescent_girls_11yr14yr' ), DatabaseColumn( 'num_adolescent_girls_15yr18yr', SumColumn('cases_person_adolescent_girls_15_18_all'), slug='num_adolescent_girls_15yr18yr' ), DatabaseColumn( 'num_adolescent_girls_11yr14yr_enrolled_for_services', SumColumn('cases_person_adolescent_girls_11_14'), slug='num_adolescent_girls_11yr14yr_enrolled_for_services' ), DatabaseColumn( 'num_adolescent_girls_15yr18yr_enrolled_for_services', SumColumn('cases_person_adolescent_girls_15_18'), slug='num_adolescent_girls_15yr18yr_enrolled_for_services' ) ] return columns + agg_columns
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')]), ) ]
def columns(self): return [ DatabaseColumn('Product Name', SimpleColumn('product_id')), DatabaseColumn("Commandes", SumColumn('commandes_total')), DatabaseColumn("Recu", SumColumn('recus_total')) ]
def columns(self): diff = lambda x, y: (x or 0) - (y or 0) def get_prd_name(id): try: return SQLProduct.objects.get(product_id=id, domain=self.config['domain'], is_archived=False).name except SQLProduct.DoesNotExist: pass return [ DatabaseColumn(_("Designations"), SimpleColumn('product_id'), format_fn=lambda id: get_prd_name(id)), DatabaseColumn(_("Stock apres derniere livraison"), SumColumn('product_old_stock_total')), DatabaseColumn(_("Stock disponible et utilisable a la livraison"), SumColumn('product_total_stock')), DatabaseColumn(_("Livraison"), SumColumn('product_livraison')), DatabaseColumn( _("Stock Total"), SumColumn('product_display_total_stock', alias='stock_total')), DatabaseColumn(_("Precedent"), SumColumn('product_old_stock_pps')), DatabaseColumn(_("Recu hors entrepots mobiles"), SumColumn('product_outside_receipts_amount')), AggregateColumn( _("Non Facturable"), diff, [AliasColumn('aconsumption'), AliasColumn("bconsumption")]), DatabaseColumn( _("Facturable"), SumColumn('product_billed_consumption', alias='bconsumption')), DatabaseColumn( _("Reelle"), SumColumn('product_actual_consumption', alias='aconsumption')), DatabaseColumn("Stock Total", AliasColumn('stock_total')), DatabaseColumn("PPS Restant", SumColumn('product_pps_restant')), DatabaseColumn("Pertes et Adjustement", SumColumn('product_loss_amt')) ]
def columns(self): return [ DatabaseColumn('Food code', SimpleColumn('food_code')), ]
def columns(self): return [ DatabaseColumn('Food base term', SimpleColumn('food_base_term')), ]
def columns(self): columns = self.get_columns_by_loc_level agg_columns = [ AggregateColumn( 'Weighing efficiency (in month)', percent, [ SumWhen( whens={"age_tranche != :age_72": 'nutrition_status_weighed'}, else_=0, alias='nutrition_status_weighed' ), SumWhen( whens={"age_tranche != :age_72": 'wer_eligible'}, else_=0, alias='wer_eligible' ) ], slug='percent_weight_efficiency' ), AggregateColumn( 'Height measurement efficiency (in month)', percent, [ SumWhen( whens={"age_tranche != :age_72": 'height_measured_in_month'}, else_=0, alias='height_measured_in_month_efficiency' ), SumWhen( whens={"age_tranche != :age_72": 'height_eligible'}, else_=0, alias='height_eligible', ) ], slug='height_measurement' ), DatabaseColumn( 'Total number of unweighed children (0-5 Years)', SumWhen( whens={"age_tranche != :age_72": 'nutrition_status_unweighed'}, else_=0, alias='nutrition_status_unweighed' ), slug='total_number_unweighed' ), AggregateColumn( 'Percentage of severely underweight children', percent, [ SumWhen( whens={"age_tranche != :age_72": 'nutrition_status_severely_underweight'}, else_=0, alias='nutrition_status_severely_underweight' ), AliasColumn('nutrition_status_weighed'), ], slug='percent_severe_underweight' ), AggregateColumn( 'Percentage of moderately underweight children', percent, [ SumWhen( whens={"age_tranche != :age_72": 'nutrition_status_moderately_underweight'}, else_=0, alias='nutrition_status_moderately_underweight' ), AliasColumn('nutrition_status_weighed'), ], slug='percent_moderate_underweight' ), AggregateColumn( 'Percentage of normal weight-for-age children', percent, [ SumWhen( whens={"age_tranche != :age_72": 'nutrition_status_normal'}, else_=0, alias='nutrition_status_normal' ), AliasColumn('nutrition_status_weighed'), ], slug='percent_normal_weight' ), AggregateColumn( 'Percentage of children with severe wasting', percent, [ SumWhen( whens={get_age_condition(self.beta): wasting_severe_column(self.beta)}, alias='wasting_severe' ), SumWhen( whens={get_age_condition(self.beta): wfh_recorded_in_month_column(self.beta)}, alias='weighed_and_height_measured_in_month' ), ], slug='percent_severe_wasting' ), AggregateColumn( 'Percentage of children with moderate wasting', percent, [ SumWhen( whens={get_age_condition(self.beta): wasting_moderate_column(self.beta)}, alias='wasting_moderate' ), AliasColumn('weighed_and_height_measured_in_month') ], slug='percent_moderate_wasting' ), AggregateColumn( 'Percentage of children with normal weight-for-height', percent, [ SumWhen( whens={get_age_condition(self.beta): wasting_normal_column(self.beta)}, alias='wasting_normal' ), AliasColumn('weighed_and_height_measured_in_month') ], slug='percent_normal_wasting' ), AggregateColumn( 'Percentage of children with severe stunting', percent, [ SumWhen( whens={get_age_condition(self.beta): stunting_severe_column(self.beta)}, alias='stunting_severe' ), SumWhen( whens={get_age_condition(self.beta): hfa_recorded_in_month_column(self.beta)}, alias='height_measured_in_month' ), ], slug='percent_severe_stunting' ), AggregateColumn( 'Percentage of children with moderate stunting', percent, [ SumWhen( whens={get_age_condition(self.beta): stunting_moderate_column(self.beta)}, alias='stunting_moderate' ), AliasColumn('height_measured_in_month') ], slug='percent_moderate_stunting' ), AggregateColumn( 'Percentage of children with normal height-for-age', percent, [ SumWhen( whens={get_age_condition(self.beta): stunting_normal_column(self.beta)}, alias='stunting_normal' ), AliasColumn('height_measured_in_month') ], slug='percent_normal_stunting' ), AggregateColumn( 'Percent of newborns with low birth weight', percent, [ SumColumn('low_birth_weight_in_month'), SumColumn('weighed_and_born_in_month') ], slug='newborn_low_birth_weight' ), AggregateColumn( 'Percentage of children with completed 1 year immunizations', lambda x, y, z: '%.2f%%' % (((x or 0) + (y or 0)) * 100 / float(z or 1)), [ SumColumn('fully_immunized_on_time'), SumColumn('fully_immunized_late'), SumColumn('fully_immunized_eligible') ], slug='percent_completed_1year_immunizations' ), AggregateColumn( 'Percentage of children breastfed at birth', percent, [ SumColumn('bf_at_birth'), SumColumn('born_in_month') ], slug='percent_breastfed_at_birth' ), AggregateColumn( 'Percentage of children exclusively breastfeeding', percent, [ SumColumn('ebf_in_month'), SumColumn('ebf_eligible') ], slug='percent_ebf' ), AggregateColumn( 'Percentage of children initiated complementary feeding (in the past 30 days)', percent, [ SumColumn('cf_initiation_in_month'), SumColumn('cf_initiation_eligible') ], slug='percent_initiated_on_cf' ), AggregateColumn( 'Percentage of children initiated appropriate complementary feeding', percent, [ SumColumn('cf_in_month'), SumColumn('cf_eligible') ], slug='percent_appropriate_cf' ), AggregateColumn( 'Percentage of children receiving complementary feeding with adequate diet diversity', percent, [ SumColumn('cf_diet_diversity'), AliasColumn('cf_eligible') ], slug='percent_cf_diet_diversity' ), AggregateColumn( 'Percentage of children receiving complementary feeding with adequate diet quanity', percent, [ SumColumn('cf_diet_quantity'), AliasColumn('cf_eligible') ], slug='percent_cf_diet_quanity' ), AggregateColumn( "Percentage of children receiving complementary feeding " "with appropriate handwashing before feeding", percent, [ SumColumn('cf_handwashing'), AliasColumn('cf_eligible') ], slug='percent_cf_handwashing_before_feeding' ), ] return columns + agg_columns
def columns(self): female_range_group = DataTablesColumnGroup( "Female Positive Tests (% positive)") male_range_group = DataTablesColumnGroup( "Male Positive Tests (% positive)") def age_range_filter(gender, age_from, age_to): return [ AND([ EQ("gender", gender), EQ("diagnosis", "positive"), BETWEEN("age", age_from, age_to) ]) ] def generate_columns(gender): age_range_group = male_range_group if gender is "male" else female_range_group return [ AggregateColumn( "0-10", self.percent_fn, [ CountColumn('doc_id', alias="zero_ten_" + gender, filters=self.filters + age_range_filter(gender, "zero", "ten")), AliasColumn(gender + "_total") ], header_group=age_range_group, sort_type=DTSortType.NUMERIC), AggregateColumn( "10-20", self.percent_fn, [ CountColumn( 'doc_id', alias="ten_twenty_" + gender, filters=self.filters + age_range_filter(gender, "ten_plus", "twenty")), AliasColumn(gender + "_total") ], header_group=age_range_group, sort_type=DTSortType.NUMERIC), AggregateColumn( "20-50", self.percent_fn, [ CountColumn( 'doc_id', alias="twenty_fifty_" + gender, filters=self.filters + age_range_filter(gender, "twenty_plus", "fifty")), AliasColumn(gender + "_total") ], header_group=age_range_group, sort_type=DTSortType.NUMERIC), AggregateColumn( "50+", self.percent_fn, [ CountColumn('doc_id', alias="fifty_" + gender, filters=self.filters + [ AND([ EQ("gender", gender), EQ("diagnosis", "positive"), GT("age", "fifty") ]) ]), AliasColumn(gender + "_total") ], header_group=age_range_group, sort_type=DTSortType.NUMERIC), AggregateColumn( "Total", self.percent_fn, [ CountColumn('doc_id', alias="positive_total_" + gender, filters=self.filters + [ AND([ EQ("gender", gender), EQ("diagnosis", "positive") ]) ]), CountColumn( 'doc_id', alias=gender + "_total", filters=self.filters + [EQ("gender", gender)]), ], header_group=age_range_group, sort_type=DTSortType.NUMERIC), ] totals_group = DataTablesColumnGroup("Total tests") sum_fn = lambda x, y: int(x or 0) + int(y or 0) return self.common_columns + [ DatabaseColumn("Males ", AliasColumn("male_total"), header_group=totals_group), DatabaseColumn("Females ", AliasColumn("female_total"), header_group=totals_group), AggregateColumn( "Total", sum_fn, [AliasColumn("male_total"), AliasColumn("female_total")], header_group=totals_group), ] + generate_columns("male") + generate_columns("female")
def columns(self): return self.common_columns + [ DatabaseColumn("Test", CountColumn('doc_id', alias="lot_count")) ]
def columns(self): diff = lambda x, y: (x or 0) - (y or 0) return [ DatabaseColumn(_("Designations"), SimpleColumn('product_name')), DatabaseColumn(_("Stock apres derniere livraison"), SumColumn('product_old_stock_total')), DatabaseColumn(_("Stock disponible et utilisable a la livraison"), SumColumn('product_total_stock')), DatabaseColumn(_("Livraison"), SumColumn('product_livraison')), DatabaseColumn( _("Stock Total"), SumColumn('product_display_total_stock', alias='stock_total')), DatabaseColumn(_("Precedent"), SumColumn('product_old_stock_pps')), DatabaseColumn(_("Recu hors entrepots mobiles"), SumColumn('product_outside_receipts_amount')), AggregateColumn( _("Non Facturable"), diff, [AliasColumn('aconsumption'), AliasColumn("bconsumption")]), DatabaseColumn( _("Facturable"), SumColumn('product_billed_consumption', alias='bconsumption')), DatabaseColumn( _("Reelle"), SumColumn('product_actual_consumption', alias='aconsumption')), DatabaseColumn("Stock Total", AliasColumn('stock_total')), DatabaseColumn("PPS Restant", SumColumn('product_pps_restant')), DatabaseColumn("Pertes et Adjustement", SumColumn('product_loss_amt')) ]
def columns(self): columns = self.get_columns_by_loc_level agg_columns = [ DatabaseColumn('Number of lactating women', SumColumn('lactating'), slug='lactating'), DatabaseColumn('Number of pregnant women', SumColumn('pregnant'), slug='pregnant'), DatabaseColumn('Number of postnatal women', SumColumn('postnatal'), slug='postnatal'), AggregateColumn( 'Percentage Anemia', lambda x, y, z: '%.2f%%' % (((x or 0) + (y or 0)) * 100 / float(z or 1)), [ SumWhen( whens=[["ccs_status = 'pregnant'", 'anemic_moderate']], alias='anemic_moderate'), SumWhen( whens=[["ccs_status = 'pregnant'", 'anemic_severe']], alias='anemic_severe'), AliasColumn('pregnant') ], slug='percent_anemia'), AggregateColumn( 'Percentage Tetanus Completed', percent, [SumColumn('tetanus_complete'), AliasColumn('pregnant')], slug='percent_tetanus_complete'), AggregateColumn( 'Percent women had at least 1 ANC visit by delivery', percent, [ SumColumn('anc1_received_at_delivery'), SumColumn('delivered_in_month') ], slug='percent_anc1_received_by_delivery'), AggregateColumn( 'Percent women had at least 2 ANC visit by delivery', percent, [ SumColumn('anc2_received_at_delivery'), AliasColumn('delivered_in_month') ], slug='percent_anc2_received_by_delivery'), AggregateColumn( 'Percent women had at least 3 ANC visit by delivery', percent, [ SumColumn('anc3_received_at_delivery'), AliasColumn('delivered_in_month') ], slug='percent_anc3_received_by_delivery'), AggregateColumn( 'Percent women had at least 4 ANC visit by delivery', percent, [ SumColumn('anc4_received_at_delivery'), AliasColumn('delivered_in_month') ], slug='percent_anc4_received_by_delivery'), AggregateColumn('Percentage of women resting during pregnancy', percent, [ SumColumn('resting_during_pregnancy'), AliasColumn('pregnant') ], slug='percent_resting_during_pregnancy'), AggregateColumn( 'Percentage of women eating extra meal during pregnancy', percent, [SumColumn('extra_meal'), AliasColumn('pregnant')], slug='percent_eating_extra_meal_during_pregnancy'), AggregateColumn( 'Percentage of trimester 3 women counselled on immediate breastfeeding', percent, [SumColumn('counsel_immediate_bf'), SumColumn('trimester_3')], slug='percent_trimester_3_women_counselled_on_immediate_bf') ] return columns + agg_columns
def columns(self): return [ DatabaseColumn('week', MaxColumn('week')) ]
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 [ 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', 'days_106')])), DatabaseColumn( "HEP3 Total Eligible", CountUniqueColumn('doc_id', alias="hep3_eligible", filters=self.filters + [LTE('dob', 'days_106')])), DatabaseColumn( "DPT3 Total Eligible", CountUniqueColumn('doc_id', alias="dpt3_eligible", filters=self.filters + [LTE('dob', 'days_106')])), DatabaseColumn( "Measles Total Eligible", CountUniqueColumn('doc_id', alias="measles_eligible", filters=self.filters + [LTE('dob', 'days_273')])), DatabaseColumn( "Fully Immunized Total Eligible", CountUniqueColumn('doc_id', alias="fully_immunized_eligible", filters=self.filters + [LTE('dob', 'days_273')])), DatabaseColumn( "DPT-OPT Booster Total Eligible", CountUniqueColumn('doc_id', alias="dpt_opv_booster_eligible", filters=self.filters + [LTE('dob', 'days_548')])), DatabaseColumn( "VitA3 Total Eligible", CountUniqueColumn('doc_id', alias="vita3_eligible", filters=self.filters + [LTE('dob', 'days_700')])) ]
def columns(self): return [ DatabaseColumn('Date', SimpleColumn('date')), DatabaseColumn('user', SimpleColumn('user_id')), DatabaseColumn('hf', SimpleColumn('hf')), DatabaseColumn('district', SimpleColumn('district')), DatabaseColumn(_('form/stock/stock_amox_pink'), SimpleColumn('stock_amox_pink')), DatabaseColumn(_('form/stock/stock_amox_green'), SimpleColumn('stock_amox_green')), DatabaseColumn(_('form/stock/stock_ors'), SimpleColumn('stock_ors')), DatabaseColumn(_('form/stock/stock_ra_50'), SimpleColumn('stock_ra_50')), DatabaseColumn(_('form/stock/stock_ra_200'), SimpleColumn('stock_ra_200')), DatabaseColumn(_('form/stock/stock_zinc'), SimpleColumn('stock_zinc')), DatabaseColumn(_('form/stock/stock_coartem_yellow'), SimpleColumn('stock_coartem_yellow')), DatabaseColumn(_('form/stock/stock_coartem_blue'), SimpleColumn('stock_coartem_blue')), DatabaseColumn(_('form/stock/stock_coartem_green'), SimpleColumn('stock_coartem_green')), DatabaseColumn(_('form/stock/stock_coartem_brown'), SimpleColumn('stock_coartem_brown')), DatabaseColumn(_('form/stock/stock_paracetamol_250'), SimpleColumn('stock_paracetamol_250')), DatabaseColumn(_('form/stock/stock_paracetamol_500'), SimpleColumn('stock_paracetamol_500')), DatabaseColumn(_('form/stock/stock_rdt'), SimpleColumn('stock_rdt')), DatabaseColumn(_('form/stock/stock_gloves'), SimpleColumn('stock_gloves')) ]
def columns(self): return [ DatabaseColumn("Reason for closure", SimpleColumn('reason_for_child_closure')), DatabaseColumn("Number", CountUniqueColumn('doc_id')) ]
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 [ DatabaseColumn("Month", SimpleColumn('month_of_death')), DatabaseColumn("Year", SimpleColumn('year_of_death')), DatabaseColumn("Number", CountUniqueColumn('doc_id')) ]
def get_columns_by_loc_level(self): selected_month = self.config['month'] def test_fucntion(x): return format_decimal(x) if x else DATA_NOT_ENTERED columns = [ DatabaseColumn('AWC Name', SimpleColumn('awc_name'), slug='awc_name'), DatabaseColumn('AWC Site Code', SimpleColumn('awc_site_code'), slug='awc_site_code'), DatabaseColumn('Supervisor Name', SimpleColumn('supervisor_name'), slug='supervisor_name'), DatabaseColumn('Block Name', SimpleColumn('block_name'), slug='block_name'), DatabaseColumn('AWW Phone Number', SimpleColumn('aww_phone_number'), format_fn=phone_number_function, slug='aww_phone_number'), DatabaseColumn('Mother Phone Number', SimpleColumn('mother_phone_number'), format_fn=phone_number_function, slug='mother_phone_number'), DatabaseColumn('Child Name', SimpleColumn('person_name'), slug='person_name'), DatabaseColumn('Date of Birth', SimpleColumn('dob'), slug='dob'), DatabaseColumn('Current Age (as of {})'.format( selected_month.isoformat()), AliasColumn('dob'), format_fn=lambda x: calculate_date_for_age( x, self.config['month']), slug='current_age'), DatabaseColumn('Sex ', SimpleColumn('sex'), slug='sex'), ICDSDatabaseColumn('1 Year Immunizations Complete', SimpleColumn('fully_immunized'), format_fn=lambda x: 'Yes' if x else 'No'), DatabaseColumn('Month for data shown', SimpleColumn('month'), slug='month'), DatabaseColumn('Weight Recorded (in Month)', SimpleColumn('recorded_weight'), format_fn=test_fucntion, slug='recorded_weight'), DatabaseColumn('Height Recorded (in Month)', SimpleColumn('recorded_height'), format_fn=test_fucntion, slug='recorded_height'), DatabaseColumn( 'Weight-for-Age Status (in Month)', SimpleColumn('current_month_nutrition_status'), format_fn=lambda x: get_status(x, 'underweight', 'Normal weight for age', True), slug='current_month_nutrition_status'), DatabaseColumn('Weight-for-Height Status (in Month)', SimpleColumn(current_month_wasting_column( self.beta)), format_fn=lambda x: get_status( x, 'wasted', 'Normal weight for height', True), slug="current_month_wasting_v2"), DatabaseColumn('Height-for-Age status (in Month)', SimpleColumn( current_month_stunting_column(self.beta)), format_fn=lambda x: get_status( x, 'stunted', 'Normal height for age', True), slug="current_month_stunting_v2"), DatabaseColumn('Days attended PSE (as of {})'.format( selected_month.isoformat()), SimpleColumn('pse_days_attended'), slug="pse_days_attended"), ] 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 get_columns(self, filters): return [ DatabaseColumn('month', SimpleColumn('month')), AggregateColumn( 'Percent of pregnant women who are anemic in given month', lambda x, y, z: ((x or 0) + (y or 0)) * 100 / float(z or 1), [ SumWhen( whens=[["ccs_status = 'pregnant'", 'anemic_moderate']], alias='anemic_moderate'), SumWhen( whens=[["ccs_status = 'pregnant'", 'anemic_severe']], alias='anemic_severe'), SumColumn('pregnant', alias='pregnant') ], slug='severe_anemic'), AggregateColumn( 'Percent tetanus complete', percent_num, [SumColumn('tetanus_complete'), AliasColumn('pregnant')], slug='tetanus_complete'), AggregateColumn( 'Percent women ANC 1 recieved by deliveryy', percent_num, [ SumColumn('anc1_received_at_delivery'), SumColumn('delivered_in_month', alias='delivered_in_month') ], slug='anc_1'), AggregateColumn('Percent women ANC 2 received by delivery', percent_num, [ SumColumn('anc2_received_at_delivery'), AliasColumn('delivered_in_month') ], slug='anc_2'), AggregateColumn('Percent women ANC 3 received by delivery', percent_num, [ SumColumn('anc3_received_at_delivery'), AliasColumn('delivered_in_month') ], slug='anc_3'), AggregateColumn('Percent women ANC 4 received by delivery', percent_num, [ SumColumn('anc4_received_at_delivery'), AliasColumn('delivered_in_month') ], slug='anc_4'), AggregateColumn('Percent women Resting during pregnancy', percent_num, [ SumColumn('resting_during_pregnancy'), AliasColumn('pregnant') ], slug='resting'), AggregateColumn('Percent eating extra meal during pregnancy', percent_num, [SumColumn('extra_meal'), AliasColumn('pregnant')], slug='extra_meal'), AggregateColumn( 'Percent trimester 3 women Counselled on immediate EBF during home visit', percent_num, [SumColumn('counsel_immediate_bf'), SumColumn('trimester_3')], slug='trimester') ]
def get_columns(self, filters): return [ DatabaseColumn('month', SimpleColumn('month')), AggregateColumn( '% Weighing efficiency (Children <5 weighed)', percent_num, [ SumColumn( 'nutrition_status_weighed', filters=filters + [NOT(EQ('age_tranche', 'age_72'))]), SumColumn( 'wer_eligible', alias='wer_eligible', filters=filters + [NOT(EQ('age_tranche', 'age_72'))]) ], slug='status_weighed'), AggregateColumn( '% Height measurement efficiency (Children <5 measured)', percent_num, [ SumColumn( 'height_measured_in_month', alias='height_measured_in_month_less_5', filters=filters + [NOT(EQ('age_tranche', 'age_72'))]), SumColumn( 'height_eligible', alias='height_eligible', filters=filters + [NOT(EQ('age_tranche', 'age_72'))]) ], slug='status_height_efficiency'), DatabaseColumn( 'Total number Unweighed', SumColumn('nutrition_status_unweighed', filters=filters + [NOT(EQ('age_tranche', 'age_72'))])), AggregateColumn( 'Percent Children severely underweight (weight for age)', percent_num, [ SumColumn( 'nutrition_status_severely_underweight', filters=filters + [NOT(EQ('age_tranche', 'age_72'))]), AliasColumn('nutrition_status_weighed') ], slug='severely_underweight'), AggregateColumn( 'Percent Children moderately underweight (weight for age)', percent_num, [ SumColumn( 'nutrition_status_moderately_underweight', filters=filters + [NOT(EQ('age_tranche', 'age_72'))]), AliasColumn('nutrition_status_weighed') ], slug='moderately_underweight'), AggregateColumn('Percent Children normal (weight for age)', percent_num, [ SumColumn('nutrition_status_normal', filters=filters + [NOT(EQ('age_tranche', 'age_72'))]), AliasColumn('nutrition_status_weighed') ], slug='status_normal'), AggregateColumn( 'Percent children with severe acute malnutrition (weight-for-height)', percent_num, [ SumColumn(wasting_severe_column(self.beta), filters=filters + get_age_filters(self.beta)), SumColumn(wfh_recorded_in_month_column(self.beta), alias='weighed_and_height_measured_in_month', filters=filters + get_age_filters(self.beta)) ], slug='wasting_severe'), AggregateColumn( 'Percent children with moderate acute malnutrition (weight-for-height)', percent_num, [ SumColumn(wasting_moderate_column(self.beta), filters=filters + get_age_filters(self.beta)), AliasColumn('weighed_and_height_measured_in_month') ], slug='wasting_moderate'), AggregateColumn( 'Percent children normal (weight-for-height)', percent_num, [ SumColumn(wasting_normal_column(self.beta), filters=filters + get_age_filters(self.beta)), AliasColumn('weighed_and_height_measured_in_month') ], slug='wasting_normal'), AggregateColumn( 'Percent children with severe stunting (height for age)', percent_num, [ SumColumn(stunting_severe_column(self.beta), filters=filters + get_age_filters(self.beta)), SumColumn(hfa_recorded_in_month_column(self.beta), alias='height_measured_in_month', filters=filters + get_age_filters(self.beta)) ], slug='stunting_severe'), AggregateColumn( 'Percent children with moderate stunting (height for age)', percent_num, [ SumColumn(stunting_moderate_column(self.beta), filters=filters + get_age_filters(self.beta)), AliasColumn('height_measured_in_month') ], slug='stunting_moderate'), AggregateColumn( 'Percent children with normal (height for age)', percent_num, [ SumColumn(stunting_normal_column(self.beta), filters=filters + get_age_filters(self.beta)), AliasColumn('height_measured_in_month') ], slug='stunting_normal'), AggregateColumn( 'Percent children immunized with 1st year immunizations', lambda x, y, z: ((x or 0) + (y or 0)) * 100 / float(z or 1), [ SumColumn('fully_immunized_on_time'), SumColumn('fully_immunized_late'), SumColumn('fully_immunized_eligible') ], slug='fully_immunized'), AggregateColumn( 'Percent Children breastfed at birth', percent_num, [SumColumn('bf_at_birth'), SumColumn('born_in_month')], slug='breastfed_at_birth'), AggregateColumn( 'Percent Children exclusively breastfed', percent_num, [SumColumn('ebf_in_month'), SumColumn('ebf_eligible')], slug='exclusively_breastfed'), AggregateColumn( 'Percent Children initiated appropriate complementary feeding', percent_num, [ SumColumn('cf_initiation_in_month'), SumColumn('cf_initiation_eligible') ], slug='cf_initiation'), AggregateColumn( 'Perecent children complementary feeding', percent_num, [SumColumn('cf_in_month'), SumColumn('cf_eligible')], slug='complementary_feeding'), AggregateColumn( 'Percentage of children consuming atleast 4 food groups', percent_num, [SumColumn('cf_diet_diversity'), AliasColumn('cf_eligible')], slug='diet_diversity'), AggregateColumn( 'Percentage of children consuming adequate food', percent_num, [SumColumn('cf_diet_quantity'), AliasColumn('cf_eligible')], slug='diet_quantity'), AggregateColumn( 'Percentage of children whose mothers handwash before feeding', percent_num, [SumColumn('cf_handwashing'), AliasColumn('cf_eligible')], slug='handwashing'), DatabaseColumn('Children (0 - 28 Days) Seeking Services', SumColumn('valid_in_month', filters=filters + [EQ('age_tranche', 'age_0')], alias='zero'), slug='zero'), DatabaseColumn('Children (28 Days - 6 mo) Seeking Services', SumColumn('valid_in_month', filters=filters + [EQ('age_tranche', 'age_6')], alias='one'), slug='one'), DatabaseColumn('Children (6 mo - 1 year) Seeking Services', SumColumn('valid_in_month', filters=filters + [EQ('age_tranche', 'age_12')], alias='two'), slug='two'), DatabaseColumn('Children (1 year - 3 years) Seeking Services', SumColumn('valid_in_month', filters=filters + [ OR([ EQ('age_tranche', 'age_24'), EQ('age_tranche', 'age_36') ]) ], alias='three'), slug='three'), DatabaseColumn('Children (3 years - 6 years) Seeking Services', SumColumn('valid_in_month', filters=filters + [ OR([ EQ('age_tranche', 'age_48'), EQ('age_tranche', 'age_60'), EQ('age_tranche', 'age_72') ]) ], alias='four'), slug='four'), AggregateColumn( 'Percent of children born in month with low birth weight', percent_num, [ SumColumn('low_birth_weight_in_month'), SumColumn('weighed_and_born_in_month') ], slug='low_birth_weight') ]
def columns(self): return [ DatabaseColumn(_("Date"), SimpleColumn('date')), ]
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): sum_fn = lambda x, y: int(x or 0) + int(y or 0) total_percent_agg_fn = lambda f_pos, m_pos, f_tot, m_tot: dict(sort_key=sum_fn(f_pos, m_pos), html="%(x)s (%(p)s%%)" % \ { "x": sum_fn(f_pos, m_pos), "p": (100 * sum_fn(f_pos, m_pos) / (sum_fn(m_tot, f_tot) or 1)) }) patient_number_group = DataTablesColumnGroup("Tests") positive_group = DataTablesColumnGroup("Positive Tests") age_range_group = DataTablesColumnGroup("Age Range") male_filter = EQ("gender", "male") female_filter = EQ("gender", "female") columns = self.common_columns + [ DatabaseColumn("Number of Males ", CountColumn('doc_id', alias="male-total", filters=self.filters + [male_filter]), header_group=patient_number_group), DatabaseColumn("Number of Females ", CountColumn('doc_id', alias="female-total", filters=self.filters + [female_filter]), header_group=patient_number_group), AggregateColumn( "Total", sum_fn, [AliasColumn("male-total"), AliasColumn("female-total")], header_group=patient_number_group), AggregateColumn( "Male +ve Percent", self.percent_agg_fn, [ CountColumn( 'doc_id', alias="male-positive", filters=self.filters + [AND([male_filter, EQ("diagnosis", "positive")])]), AliasColumn("male-total") ], header_group=positive_group, sort_type=DTSortType.NUMERIC), AggregateColumn( "Female +ve Percent", self.percent_agg_fn, [ CountColumn( 'doc_id', alias="female-positive", filters=self.filters + [AND([female_filter, EQ("diagnosis", "positive")])]), AliasColumn("female-total") ], header_group=positive_group, sort_type=DTSortType.NUMERIC), AggregateColumn("Total +ve Percent", total_percent_agg_fn, [ AliasColumn("female-positive"), AliasColumn("male-positive"), AliasColumn("female-total"), AliasColumn("male-total") ], header_group=positive_group, sort_type=DTSortType.NUMERIC), AggregateColumn( "Male age range", functools.partial(self.age_fn, 'male'), [ MinColumn("age", alias="male-min", filters=self.filters + [male_filter]), MaxColumn("age", alias="male-max", filters=self.filters + [male_filter]) ], header_group=age_range_group), AggregateColumn( "Female age range", functools.partial(self.age_fn, 'female'), [ MinColumn("age", alias="female-min", filters=self.filters + [female_filter]), MaxColumn("age", alias="female-max", filters=self.filters + [female_filter]) ], header_group=age_range_group), AggregateColumn("All age range", functools.partial(self.age_fn, 'total'), [ MinColumn("age", alias="age-min", filters=self.filters + [OR([female_filter, male_filter])]), MaxColumn("age", alias="age-max", filters=self.filters + [OR([female_filter, male_filter])]) ], header_group=age_range_group), ] if self.is_map: columns.append( DatabaseColumn("gps", MaxColumn(self.gps_key), format_fn=lambda x: x)) disease = FixtureDataItem.get( self.disease[1]).fields_without_attributes[ 'disease_name'] if self.disease else 'All diseases' columns.append( DatabaseColumn('disease', StaticColumn('disease', disease))) return columns