def _to_column(coldef): def _slug_to_raw_column(slug): return SumColumn('%s_total' % slug) if isinstance(coldef, dict): return AggregateColumn( _(coldef['slug']), Fraction, [_slug_to_raw_column(s) for s in coldef['columns']], sortable=False, slug=coldef['slug'], ) return DatabaseColumn(_(coldef), _slug_to_raw_column(coldef), sortable=False)
def get_column_config(self, data_source_config, lang): # todo: better checks that fields are not expand num_config = self.numerator.get_column_config(data_source_config, lang) denom_config = self.denominator.get_column_config(data_source_config, lang) return ColumnConfig(columns=[ AggregateColumn( header=self.get_header(lang), aggregate_fn=lambda n, d: {'num': n, 'denom': d}, format_fn=self.get_format_fn(), columns=[c.view for c in num_config.columns + denom_config.columns], slug=self.column_id, data_slug=self.column_id, )], warnings=num_config.warnings + denom_config.warnings, )
def columns(self): columns = self.get_columns_by_loc_level agg_columns = [ AggregateColumn( 'Percentage AWCs reported clean drinking water', percent_or_not_entered, [ SumColumn('infra_clean_water'), SumColumn('num_awc_infra_last_update', alias='awcs') ], slug='percent_with_drinking_water'), AggregateColumn( 'Percentage AWCs reported functional toilet', percent_or_not_entered, [SumColumn('infra_functional_toilet'), AliasColumn('awcs')], slug='percent_with_functional_toilet'), AggregateColumn( 'Percentage AWCs reported medicine kit', percent_or_not_entered, [SumColumn('infra_medicine_kits'), AliasColumn('awcs')], slug='percent_with_medicine_kit'), AggregateColumn('Percentage AWCs reported weighing scale: infants', percent_or_not_entered, [ SumColumn('infra_infant_weighing_scale'), AliasColumn('awcs') ], slug='percent_baby_scale'), AggregateColumn( 'Percentage AWCs reported weighing scale: mother and child', percent_or_not_entered, [SumColumn('infra_adult_weighing_scale'), AliasColumn('awcs')], slug='percent_adult_scale') ] if self.beta: agg_columns += [ AggregateColumn( 'Percentage AWCs reported Infantometer', percent_or_not_entered, [SumColumn('infantometer'), AliasColumn('awcs')], slug='percent_with_infantometer'), AggregateColumn( 'Percentage AWCs reported Stadiometer', percent_or_not_entered, [SumColumn('stadiometer'), AliasColumn('awcs')], slug='percent_with_stadiometer') ] return columns + agg_columns
def columns(self): app_dict = get_cloudcare_app(SUCCEED_DOMAIN, SUCCEED_CM_APPNAME) latest_build = get_app_build(app_dict) return [ DatabaseColumn( 'Modify Schedule', SimpleColumn('doc_id', alias='case_id'), format_fn=lambda x: edit_link(x, app_dict, latest_build)), AggregateColumn( 'Name', aggregate_fn=case_link, columns=[SimpleColumn('name'), AliasColumn('case_id')], sort_type=''), DatabaseColumn('MRN', SimpleColumn('mrn')), DatabaseColumn('Randomization Date', SimpleColumn('date', alias='rand_date')), DatabaseColumn('Visit Name', SimpleColumn('visit_name', alias='vis_name')), AggregateColumn('Target Date', aggregate_fn=target_date, columns=[ AliasColumn('vis_name'), SimpleColumn('visit_days'), AliasColumn('rand_date') ], sort_type=DTSortType.NUMERIC), DatabaseColumn('Most Recent', SimpleColumn('bp_category')), DatabaseColumn('Last Interaction Date', SimpleColumn('last_interaction'), format_fn=date_format), DatabaseColumn('Tasks', AliasColumn('case_id'), format_fn=tasks), DatabaseColumn('Care Team', SimpleColumn('owner_id'), format_fn=group_name) ]
def _get_form_duration_column(self, meta, slug_suffix, filters): slug = '%s%s' % (meta['slug'], slug_suffix) when = "xmlns = '%s'" % meta['xmlns'] dur_col = SumWhen( whens={when: 'duration'}, else_=0, filters=filters, alias='%s_sum' % slug) count_col = SumWhen( key='xmlns', whens={meta['xmlns']: 1}, else_=0, filters=filters, alias='%s_count' % slug) return AggregateColumn(slug, mean_seconds, [dur_col, count_col], sortable=False, slug=slug)
def columns(self): div = lambda x, y: "%0.3f" % (float(x) / (float(y) or 1.0)) 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(_("Quantite produits entreposes au PPS"), MeanColumn('quantity_total', alias="quantity"), format_fn=self.format_data_and_cast_to_float)) columns.append(DatabaseColumn(_("CMM"), MeanColumn('cmm_total', alias="cmm"), format_fn=self.format_data_and_cast_to_float)) columns.append(AggregateColumn(_("Nombre mois stock disponible et utilisable"), div, [AliasColumn('quantity'), AliasColumn('cmm')])) 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(_("Consommation reelle"), MeanColumn('actual_consumption_total', alias="consumption"), format_fn=self.format_data_and_cast_to_float)) columns.append(DatabaseColumn(_("Stock apres derniere livraison"), MeanColumn('stock_total', alias="stock"), format_fn=self.format_data_and_cast_to_float)) columns.append(AggregateColumn(_("Taux consommation"), self.percent_fn, [AliasColumn('stock'), AliasColumn('consumption')])) return columns
def columns(self): if self.config['table_card_group_by'] == 'group_name': first_column = 'group_name' else: first_column = 'gender' return [ DatabaseColumn('', SimpleColumn(first_column), format_fn=self.first_column_format), AggregateColumn('practice_count', self.format_cell_fn, [ CareCustomColumn( 'all', filters=self.filters + [RawFilter("maxmin = 2")]), CareCustomColumn( 'none', filters=self.filters + [RawFilter("maxmin = 0")]) ]), ]
def columns(self): diff = lambda x, y: (x or 0) - (y or 0) return [ DatabaseColumn(_("LISTE des PPS"), SimpleColumn('PPS_name')), DatabaseColumn( _("Consommation Reelle"), SumColumn('actual_consumption_total', alias='actual_consumption')), DatabaseColumn( _("Consommation Facturable"), SumColumn('billed_consumption_total', alias='billed_consumption')), AggregateColumn(_("Consommation Non Facturable"), diff, [ AliasColumn('actual_consumption'), AliasColumn('billed_consumption') ]), ]
def get_column_config(self, data_source_config, lang): return ColumnConfig(columns=[ AggregateColumn( header=self.get_header(lang), aggregate_fn=lambda year, month: { 'year': year, 'month': month }, format_fn=self.get_format_fn(), columns=[ YearColumn(self.field, alias=self._year_column_alias()), MonthColumn(self.field, alias=self._month_column_alias()), ], slug=self.column_id, data_slug=self.column_id, ) ], )
def columns(self): def format_pnc_count(*args): return sum([1 if arg == 'yes' else 0 for arg in args]) return [ DatabaseColumn("PP 1", SimpleColumn('pp_1_done', alias='pp_1_done')), DatabaseColumn("PP 2", SimpleColumn('pp_2_done', alias='pp_2_done')), DatabaseColumn("PP 3", SimpleColumn('pp_3_done', alias='pp_3_done')), DatabaseColumn("PP 4", SimpleColumn('pp_4_done', alias='pp_4_done')), AggregateColumn('PNC Count', format_pnc_count, [ AliasColumn('pp_1_done'), AliasColumn('pp_2_done'), AliasColumn('pp_3_done'), AliasColumn('pp_4_done') ]) ]
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 [ self.location_column, DatabaseColumn( "Incidents of Abuse", SumColumn('incidents_total', filters=self.filters + [BETWEEN('date_reported', 'startdate', 'enddate')])), DatabaseColumn( "Outreach activities", SumColumn('outreach_total', filters=self.filters + [BETWEEN('date', 'startdate', 'enddate')])), DatabaseColumn( "IGA Reports", SumColumn('iga_total', filters=self.filters + [BETWEEN('start_date', 'startdate', 'enddate')])), AggregateColumn("Total", self.sum, [ AliasColumn('incidents_total'), AliasColumn('outreach_total') ]), ]
def columns(self): user = DatabaseColumn("Username", SimpleColumn("user"), format_fn=self.username) i_a = DatabaseColumn("Indicator A", SumColumn("indicator_a"), format_fn=unity) i_b = DatabaseColumn("Indicator B", SumColumn("indicator_b"), format_fn=unity) agg_c_d = AggregateColumn( "C/D", combine_indicator, [SumColumn("indicator_c"), SumColumn("indicator_d")], format_fn=unity) aggregate_cols = [i_a, i_b, agg_c_d] if self.group_by: return [user] + aggregate_cols else: return aggregate_cols
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): 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 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')), DatabaseColumn( 'Number of Households', SumColumn('cases_household'), ), DatabaseColumn( 'Total Number of Household Members', SumColumn('cases_person_all') ), DatabaseColumn( 'Total Number of Members Enrolled for Services for services at AWC ', SumColumn(self.person_is_beneficiary_column, alias=self.person_is_beneficiary_column) ), AggregateColumn( 'Percentage of Beneficiaries with Aadhar', lambda x, y: (x or 0) * 100 / float(y or 1), [ SumColumn(self.person_has_aadhaar_column), AliasColumn(self.person_is_beneficiary_column) ], slug='aadhar' ), DatabaseColumn( 'Total Pregnant women', SumColumn('cases_ccs_pregnant_all') ), DatabaseColumn( 'Total Pregnant Women Enrolled for services at AWC', SumColumn('cases_ccs_pregnant') ), DatabaseColumn( 'Total Lactating women', SumColumn('cases_ccs_lactating_all') ), DatabaseColumn( 'Total Lactating women registered for services at AWC', SumColumn('cases_ccs_lactating') ), DatabaseColumn( 'Total Children (0-6 years)', SumColumn('cases_child_health_all') ), DatabaseColumn( 'Total Chldren (0-6 years) registered for service at AWC', SumColumn('cases_child_health') ), DatabaseColumn( 'Adolescent girls (11-14 years)', SumColumn('cases_person_adolescent_girls_11_14_all') ), DatabaseColumn( 'Adolescent girls (15-18 years)', SumColumn('cases_person_adolescent_girls_15_18_all') ), DatabaseColumn( 'Adolescent girls (11-14 years) Seeking Services', SumColumn('cases_person_adolescent_girls_11_14') ), DatabaseColumn( 'Adolescent girls (15-18 years) Seeking Services', SumColumn('cases_person_adolescent_girls_15_18') ), AggregateColumn( '% AWCs reported clean drinking water', aggregate_fn=percent_num, columns=[ SumColumn('infra_clean_water'), SumColumn('num_awc_infra_last_update', alias='awcs') ], slug='clean_water' ), AggregateColumn( '% AWCs reported functional toilet', percent_num, [ SumColumn('infra_functional_toilet'), AliasColumn('awcs') ], slug='functional_toilet' ), AggregateColumn( '% AWCs reported medicine kit', percent_num, [ SumColumn('infra_medicine_kits'), AliasColumn('awcs') ], slug='medicine_kits' ), AggregateColumn( '% AWCs reported weighing scale for mother and child', percent_num, [ SumColumn('infra_adult_weighing_scale'), AliasColumn('awcs') ], slug='adult_weighing_scale' ), AggregateColumn( '% AWCs reported weighing scale for infants', percent_num, [ SumColumn('infra_infant_weighing_scale'), AliasColumn('awcs') ], slug='baby_weighing_scale' ), ]
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): def AggColumn(label, alias, sum_slug, slug, extended=False): return AggregateColumn( label, format_percent, [ AliasColumn(alias), SumColumn( sum_slug, filters=self.wrapped_sum_column_filters_extended if extended else self.wrapped_sum_column_filters), ], slug=slug, format_fn=ret_val, ) def GrowthMonitoringColumn(number): return AggColumn( "# of Children Who Have Attended At Least {} Growth Monitoring" "Session".format(number), alias='childrens', sum_slug='growth_monitoring_session_{}_total'.format(number), slug='growth_monitoring_session_{}'.format(number), ) return [ DatabaseColumn( '# of Beneficiaries Registered', SumColumn('beneficiaries_registered_total', alias="beneficiaries", filters=self.wrapped_sum_column_filters_extended), format_fn=normal_format), AggColumn( '# of Pregnant Women Registered', alias='beneficiaries', sum_slug='lmp_total', slug='lmp', extended=True, ), AggregateColumn( '# of Mothers of Children Aged 3 Years and Below Registered', format_percent, [ AliasColumn('beneficiaries'), SumColumn( 'lactating_total', # TODO necessary? alias='mothers', filters=self.wrapped_sum_column_filters_extended) ], slug='mother_reg', format_fn=ret_val), DatabaseColumn( '# of Children Between 0 and 3 Years of Age Registered', SumColumn('children_total', alias="childrens", filters=self.wrapped_sum_column_filters_extended), format_fn=normal_format), AggColumn( '# of Beneficiaries Attending VHND Monthly', alias='beneficiaries', sum_slug='vhnd_monthly_total', slug='vhnd_monthly', ), AggColumn( '# of Pregnant Women Who Have Received at least 30 IFA Tablets', alias='beneficiaries', sum_slug='ifa_tablets_total', slug='ifa_tablets', ), AggColumn( '# of Pregnant Women Whose Weight Gain Was Monitored At Least Once', alias='beneficiaries', sum_slug='weight_once_total', slug='weight_once', ), AggColumn( '# of Pregnant Women Whose Weight Gain Was Monitored Twice', alias='beneficiaries', sum_slug='weight_twice_total', slug='weight_twice', ), AggColumn( '# of Children Whose Weight Was Monitored at Birth', alias='childrens', sum_slug='children_monitored_at_birth_total', slug='children_monitored_at_birth', ), AggColumn( '# of Children Whose Birth Was Registered', alias='childrens', sum_slug='children_registered_total', slug='children_registered', ), GrowthMonitoringColumn(1), GrowthMonitoringColumn(2), GrowthMonitoringColumn(3), GrowthMonitoringColumn(4), GrowthMonitoringColumn(5), GrowthMonitoringColumn(6), GrowthMonitoringColumn(7), GrowthMonitoringColumn(8), GrowthMonitoringColumn(9), GrowthMonitoringColumn(10), GrowthMonitoringColumn(11), GrowthMonitoringColumn(12), AggColumn( '# of Children Whose Nutritional Status is Normal', alias='childrens', sum_slug='nutritional_status_normal_total', slug='nutritional_status_normal', ), AggColumn( '# of Children Whose Nutritional Status is "MAM"', alias='childrens', sum_slug='nutritional_status_mam_total', slug='nutritional_status_mam', ), AggColumn( '# of Children Whose Nutritional Status is "SAM"', alias='childrens', sum_slug='nutritional_status_sam_total', slug='nutritional_status_sam', ), AggregateColumn( '# of Children Who Have Received ORS and Zinc Treatment if He/She Contracts Diarrhea', format_percent, [ SumColumn('treated_total', filters=self.wrapped_sum_column_filters), SumColumn('suffering_total', filters=self.wrapped_sum_column_filters) ], slug='ors_zinc', format_fn=ret_val), AggColumn( '# of Mothers of Children Aged 3 Years and Below Who Reported to Have Exclusively Breastfed Their Children for First 6 Months', alias='mothers', sum_slug='excbreastfed_total', slug="breastfed", ), AggColumn( '# of Children Who Received Measles Vaccine', alias='childrens', sum_slug='measlesvacc_total', slug='measlesvacc', ), ]
def get_columns(self, filters): return [ DatabaseColumn('month', SimpleColumn('month')), # DatabaseColumn( # 'Number of AWCs Open In Month', # SumColumn('num_awcs'), # slug='awc_num_open' # ), # DatabaseColumn( # 'Number of Household Registration Forms', # SumColumn('usage_num_hh_reg') # ), # DatabaseColumn( # 'Number of Pregnancy Registration Forms', # SumColumn('usage_num_add_pregnancy') # ), # DatabaseColumn( # 'Number of PSE Forms with Photo', # SumColumn('usage_num_pse_with_image') # ), # AggregateColumn( # 'Home Visit - Number of Birth Preparedness Forms', # lambda x, y, z: x + y + z, # columns=[ # SumColumn('usage_num_bp_tri1'), # SumColumn('usage_num_bp_tri2'), # SumColumn('usage_num_bp_tri3') # ], # slug='num_bp' # ), # DatabaseColumn( # 'Home Visit - Number of Delivery Forms', # SumColumn('usage_num_delivery') # ), # DatabaseColumn( # 'Home Visit - Number of PNC Forms', # SumColumn('usage_num_pnc') # ), # DatabaseColumn( # 'Home Visit - Number of EBF Forms', # SumColumn('usage_num_ebf') # ), # DatabaseColumn( # 'Home Visit - Number of CF Forms', # SumColumn('usage_num_cf') # ), # DatabaseColumn( # 'Number of GM forms', # SumColumn('usage_num_gmp') # ), # DatabaseColumn( # 'Number of THR forms', # SumColumn('usage_num_thr') # ), # AggregateColumn( # 'Number of Due List forms', # lambda x, y: x + y, # [ # SumColumn('usage_num_due_list_ccs'), # SumColumn('usage_num_due_list_child_health') # ], # slug='due_list' # ), DatabaseColumn( 'Number of Households', SumColumn('cases_household'), ), DatabaseColumn( 'Total Number of Household Members', SumColumn('cases_person_all') ), DatabaseColumn( 'Total Number of Members Enrolled for Services for services at AWC ', SumColumn(self.person_is_beneficiary_column, alias=self.person_is_beneficiary_column) ), AggregateColumn( 'Percentage of Beneficiaries with Aadhar', lambda x, y: (x or 0) * 100 / float(y or 1), [ SumColumn(self.person_has_aadhaar_column), AliasColumn(self.person_is_beneficiary_column) ], slug='aadhar' ), DatabaseColumn( 'Total Pregnant women', SumColumn('cases_ccs_pregnant_all') ), DatabaseColumn( 'Total Pregnant Women Enrolled for services at AWC', SumColumn('cases_ccs_pregnant') ), DatabaseColumn( 'Total Lactating women', SumColumn('cases_ccs_lactating_all') ), DatabaseColumn( 'Total Lactating women registered for services at AWC', SumColumn('cases_ccs_lactating') ), DatabaseColumn( 'Total Children (0-6 years)', SumColumn('cases_child_health_all') ), DatabaseColumn( 'Total Chldren (0-6 years) registered for service at AWC', SumColumn('cases_child_health') ), DatabaseColumn( 'Adolescent girls (11-14 years)', SumColumn('cases_person_adolescent_girls_11_14_all') ), DatabaseColumn( 'Adolescent girls (15-18 years)', SumColumn('cases_person_adolescent_girls_15_18_all') ), DatabaseColumn( 'Adolescent girls (11-14 years) Seeking Services', SumColumn('cases_person_adolescent_girls_11_14') ), DatabaseColumn( 'Adolescent girls (15-18 years) Seeking Services', SumColumn('cases_person_adolescent_girls_15_18') ), AggregateColumn( '% AWCs reported clean drinking water', aggregate_fn=percent_num, columns=[ SumColumn('infra_clean_water'), SumColumn('num_awc_infra_last_update', alias='awcs') ], slug='clean_water' ), AggregateColumn( '% AWCs reported functional toilet', percent_num, [ SumColumn('infra_functional_toilet'), AliasColumn('awcs') ], slug='functional_toilet' ), AggregateColumn( '% AWCs reported medicine kit', percent_num, [ SumColumn('infra_medicine_kits'), AliasColumn('awcs') ], slug='medicine_kits' ), AggregateColumn( '% AWCs reported weighing scale for mother and child', percent_num, [ SumColumn('infra_adult_weighing_scale'), AliasColumn('awcs') ], slug='adult_weighing_scale' ), AggregateColumn( '% AWCs reported weighing scale for infants', percent_num, [ SumColumn('infra_infant_weighing_scale'), AliasColumn('awcs') ], slug='baby_weighing_scale' ), ]
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', alias='low_birth_weight_in_month'), SumColumn('weighed_and_born_in_month', alias='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', alias='fully_immunized_on_time'), SumColumn('fully_immunized_late', alias='fully_immunized_late'), SumColumn('fully_immunized_eligible', alias='fully_immunized_eligible') ], slug='percent_completed_1year_immunizations'), AggregateColumn( 'Percentage of children breastfed at birth', percent, [ SumColumn('bf_at_birth', alias='bf_at_birth'), SumColumn('born_in_month', alias='born_in_month') ], slug='percent_breastfed_at_birth'), AggregateColumn( 'Percentage of children exclusively breastfeeding', percent, [ SumColumn('ebf_in_month', alias='ebf_in_month'), SumColumn('ebf_eligible', alias='ebf_eligible') ], slug='percent_ebf'), AggregateColumn( 'Percentage of children initiated complementary feeding (in the past 30 days)', percent, [ SumColumn('cf_initiation_in_month', alias='cf_initiation_in_month'), SumColumn('cf_initiation_eligible', alias='cf_initiation_eligible') ], slug='percent_initiated_on_cf'), AggregateColumn( 'Percentage of children initiated appropriate complementary feeding', percent, [ SumColumn('cf_in_month', alias='cf_in_month'), SumColumn('cf_eligible', alias='cf_eligible') ], slug='percent_appropriate_cf'), AggregateColumn( 'Percentage of children receiving complementary feeding with adequate diet diversity', percent, [ SumColumn('cf_diet_diversity', alias='cf_diet_diversity'), AliasColumn('cf_eligible') ], slug='percent_cf_diet_diversity'), AggregateColumn( 'Percentage of children receiving complementary feeding with adequate diet quantity', percent, [ SumColumn('cf_diet_quantity', alias='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', alias='cf_handwashing'), AliasColumn('cf_eligible') ], slug='percent_cf_handwashing_before_feeding'), ] agg_columns.insert( 0, DatabaseColumn('Total no. of children weighed', AliasColumn('nutrition_status_weighed'), slug='nutrition_status_weighed')) agg_columns.insert( 1, DatabaseColumn('Total no. of children eligible to be weighed', AliasColumn('wer_eligible'), slug='wer_eligible')) agg_columns.insert( 3, DatabaseColumn('Total no. of children whose height was measured', AliasColumn('height_measured_in_month_efficiency'), slug='height_measured_in_month_efficiency')) agg_columns.insert( 4, DatabaseColumn( 'Total no. of children eligible for measuring height', AliasColumn('height_eligible'), slug='height_eligible')) agg_columns.insert( 7, DatabaseColumn( 'No. of severely underweight children', AliasColumn('nutrition_status_severely_underweight'), slug='nutrition_status_severely_underweight')) agg_columns.insert( 8, DatabaseColumn('Total No. of children weighed', AliasColumn('nutrition_status_weighed'), slug='nutrition_status_weighed')) agg_columns.insert( 10, DatabaseColumn( 'No. of moderately underweight children ', AliasColumn('nutrition_status_moderately_underweight'), slug='nutrition_status_moderately_underweight')) agg_columns.insert( 11, DatabaseColumn('Total No. of children weighed', AliasColumn('nutrition_status_weighed'), slug='nutrition_status_weighed')) agg_columns.insert( 13, DatabaseColumn('No. of children with normal weight for age', AliasColumn('nutrition_status_normal'), slug='nutrition_status_normal')) agg_columns.insert( 14, DatabaseColumn('Total No. of children weighed', AliasColumn('nutrition_status_weighed'), slug='nutrition_status_weighed')) agg_columns.insert( 16, DatabaseColumn('No. of Children with severe wasting', AliasColumn('wasting_severe'), slug='wasting_severe')) agg_columns.insert( 17, DatabaseColumn( 'Total number of children whose height and weight is measured', AliasColumn('weighed_and_height_measured_in_month'), slug='weighed_and_height_measured_in_month')) agg_columns.insert( 19, DatabaseColumn('No. of moderately wasted children', AliasColumn('wasting_moderate'), slug='wasting_moderate')) agg_columns.insert( 20, DatabaseColumn( 'Total number of children whose height and weight is measured', AliasColumn('weighed_and_height_measured_in_month'), slug='weighed_and_height_measured_in_month')) agg_columns.insert( 22, DatabaseColumn('No. of children with normal weight-for-height', AliasColumn('wasting_normal'), slug='wasting_normal')) agg_columns.insert( 23, DatabaseColumn( 'Total no. of children whose height and weight is measured', AliasColumn('weighed_and_height_measured_in_month'), slug='weighed_and_height_measured_in_month')) agg_columns.insert( 25, DatabaseColumn('No. of severely stunted children', AliasColumn('stunting_severe'), slug='stunting_severe')) agg_columns.insert( 26, DatabaseColumn( 'Total no. of children whose height has been measured', AliasColumn('height_measured_in_month'), slug='height_measured_in_month')) agg_columns.insert( 28, DatabaseColumn('No. of moderately stunted children', AliasColumn('stunting_moderate'), slug='stunting_moderate')) agg_columns.insert( 29, DatabaseColumn( 'Total no. of children whose height has been measured', AliasColumn('height_measured_in_month'), slug='height_measured_in_month')) agg_columns.insert( 31, DatabaseColumn('No. of children with normal height for age', AliasColumn('stunting_normal'), slug='stunting_normal')) agg_columns.insert( 32, DatabaseColumn( 'Total no. of children whose height has been measured', AliasColumn('height_measured_in_month'), slug='height_measured_in_month')) agg_columns.insert( 34, DatabaseColumn('No. of newborns with low birth weight', AliasColumn('low_birth_weight_in_month'), slug='low_birth_weight_in_month')) agg_columns.insert( 35, DatabaseColumn( 'Total no. of children born and weighed in the current month', AliasColumn('weighed_and_born_in_month'), slug='weighed_and_born_in_month')) agg_columns.insert( 37, AggregateColumn('No. of children completed 1 year immunization', lambda x, y: ((x or 0) + (y or 0)), [ AliasColumn('fully_immunized_on_time'), AliasColumn('fully_immunized_late') ], slug='num_immun_children')) agg_columns.insert( 38, DatabaseColumn('Total no. of children from age >12 months', AliasColumn('fully_immunized_eligible'), slug='fully_immunized_eligible')) agg_columns.insert( 40, DatabaseColumn('No. of children breastfed at birth', AliasColumn('bf_at_birth'), slug='bf_at_birth')) agg_columns.insert( 41, DatabaseColumn( 'Total no. of children enrolled in ICDS-CAS system and born in last month', AliasColumn('born_in_month'), slug='born_in_month')) agg_columns.insert( 43, DatabaseColumn('No. of children exclusively breastfed', AliasColumn('ebf_in_month'), slug='ebf_in_month')) agg_columns.insert( 44, DatabaseColumn( 'Total number of children (0-6 months) of age enrolled in ICDS-CAS system', AliasColumn('ebf_eligible'), slug='ebf_eligible')) agg_columns.insert( 46, DatabaseColumn( 'No. of children initiated complementary feeding (in the past 30 days)', AliasColumn('cf_initiation_in_month'), slug='cf_initiation_in_month')) agg_columns.insert( 47, DatabaseColumn( 'Total no. of children (6-8 ) months of age enrolled with ICDS-CAS', AliasColumn('cf_initiation_eligible'), slug='cf_initiation_eligible')) agg_columns.insert( 49, DatabaseColumn( 'No. of children initiated appropriate complementary feeding', AliasColumn('cf_in_month'), slug='cf_in_month')) agg_columns.insert( 50, DatabaseColumn( 'No.of children (6-24) months of age enrolled with ICDS-CAS', AliasColumn('cf_eligible'), slug='cf_eligible')) agg_columns.insert( 52, DatabaseColumn( 'No.of children receiving complementary feeding with adequate diet diversity', AliasColumn('cf_diet_diversity'), slug='cf_diet_diversity')) agg_columns.insert( 53, DatabaseColumn( 'Total number of children (6 months - 2 yrs) of age enrolled with ICDS-CAS', AliasColumn('cf_eligible'), slug='cf_eligible')) agg_columns.insert( 55, DatabaseColumn( 'No. of children initiated complementary feeding with adequate diet quantity', AliasColumn('cf_diet_quantity'), slug='cf_diet_quantity')) agg_columns.insert( 56, DatabaseColumn( 'No.of children (6-24) months of age enrolled with ICDS-CAS', AliasColumn('cf_eligible'), slug='cf_eligible')) agg_columns.insert( 58, DatabaseColumn( 'Total Number of children receiving complementary feeding ' 'with appropriate handwashing before feeding', AliasColumn('cf_handwashing'), slug='cf_handwashing')) agg_columns.insert( 59, DatabaseColumn( 'No.of children (6-24) months of age enrolled with ICDS-CAS', AliasColumn('cf_eligible'), slug='cf_eligible')) return columns + agg_columns
def columns(self): def percent(num, x, y, z, w): denom = (x or 0) + (y or 0) + (z or 0) + (w or 0) if not denom: return {'sort_key': 'NA', 'html': 0} div = (num or 0) / float(denom) return {'sort_key': div, 'html': '%.2f%%' % (div * 100)} return [ DatabaseColumn('site_id', SimpleColumn('site_id')), DatabaseColumn('cas_vus_5', SumColumn('cas_vus_5')), DatabaseColumn('cas_suspects_5', SumColumn('cas_suspects_5')), DatabaseColumn('cas_confirmes_5', SumColumn('cas_confirmes_5')), DatabaseColumn('cas_vus_5_10', SumColumn('cas_vus_5_10')), DatabaseColumn('cas_suspects_5_10', SumColumn('cas_suspects_5_10')), DatabaseColumn('cas_confirmes_5_10', SumColumn('cas_confirmes_5_10')), DatabaseColumn('cas_vus_10', SumColumn('cas_vus_10')), DatabaseColumn('cas_suspects_10', SumColumn('cas_suspects_10')), DatabaseColumn('cas_confirmes_10', SumColumn('cas_confirmes_10')), DatabaseColumn('cas_vus_fe', SumColumn('cas_vus_fe')), DatabaseColumn('cas_suspects_fe', SumColumn('cas_suspects_fe')), DatabaseColumn('cas_confirmes_fe', SumColumn('cas_confirmes_fe')), AggregateColumn('total_cas', lambda x, y, z, w: (x or 0) + (y or 0) + (z or 0) + (w or 0), [ AliasColumn('cas_confirmes_5'), AliasColumn('cas_confirmes_5_10'), AliasColumn('cas_confirmes_10'), AliasColumn('cas_confirmes_fe'), ], slug='total_cas'), AggregateColumn('per_cas_5', percent, [ AliasColumn('cas_confirmes_5'), AliasColumn('cas_confirmes_5'), AliasColumn('cas_confirmes_5_10'), AliasColumn('cas_confirmes_10'), AliasColumn('cas_confirmes_fe') ], format_fn=lambda x: x), AggregateColumn('per_cas_5_10', percent, [ AliasColumn('cas_confirmes_5_10'), AliasColumn('cas_confirmes_5'), AliasColumn('cas_confirmes_5_10'), AliasColumn('cas_confirmes_10'), AliasColumn('cas_confirmes_fe') ], format_fn=lambda x: x), AggregateColumn('per_cas_10', percent, [ AliasColumn('cas_confirmes_10'), AliasColumn('cas_confirmes_5'), AliasColumn('cas_confirmes_5_10'), AliasColumn('cas_confirmes_10'), AliasColumn('cas_confirmes_fe') ], format_fn=lambda x: x), AggregateColumn('per_cas_fa', percent, [ AliasColumn('cas_confirmes_fe'), AliasColumn('cas_confirmes_5'), AliasColumn('cas_confirmes_5_10'), AliasColumn('cas_confirmes_10'), AliasColumn('cas_confirmes_fe') ], format_fn=lambda x: x) ]
def columns(self): return [ DatabaseColumn( _("Total number of ASHAs under the Facilitator"), CountUniqueColumn( "case_id", filters=[ EQ('owner_id', 'af'), OR([ISNULL('closed_on'), GTE('closed_on', 'enddate')]), LTE('registration_date', 'enddate') ], alias="total_ashas" ) ), DatabaseColumn( _("Total number of ASHAs for whom functionality checklist was filled"), CountUniqueColumn( "case_id", filters=[ EQ('owner_id', 'af'), EQ('is_checklist', 'is_checklist'), BETWEEN('date', 'startdate', 'enddate') ], alias="total_ashas_checklist" ) ), DatabaseColumn( _("Newborn visits within first day of birth in case of home deliveries"), FunctionalityChecklistColumn('hv_fx_home_birth_visits', whens={1: 1}), ), DatabaseColumn( _("Set of home visits for newborn care as specified in the HBNC guidelines<br/>" "(six visits in case of Institutional delivery and seven in case of a home delivery)"), FunctionalityChecklistColumn('hv_fx_newborns_visited', whens={1: 1}), ), DatabaseColumn( _("Attending VHNDs/Promoting immunization"), FunctionalityChecklistColumn('hv_fx_vhnd', whens={1: 1}), ), DatabaseColumn( _("Supporting institutional delivery"), FunctionalityChecklistColumn('hv_fx_support_inst_delivery', whens={1: 1}), ), DatabaseColumn( _("Management of childhood illness - especially diarrhea and pneumonia"), FunctionalityChecklistColumn('hv_fx_child_illness_mgmt', whens={1: 1}), ), DatabaseColumn( _("Household visits with nutrition counseling"), FunctionalityChecklistColumn('hv_fx_nut_counseling', whens={1: 1}), ), DatabaseColumn( _("Fever cases seen/malaria slides made in malaria endemic area"), FunctionalityChecklistColumn('hv_fx_malaria', whens={1: 1}), ), DatabaseColumn( _("Acting as DOTS provider"), FunctionalityChecklistColumn('hv_fx_dots', whens={1: 1}), ), DatabaseColumn( _("Holding or attending village/VHSNC meeting"), FunctionalityChecklistColumn('hv_fx_vhsnc', whens={1: 1}), ), DatabaseColumn( _("Successful referral of the IUD, " "female sterilization or male sterilization cases and/or providing OCPs/Condoms"), FunctionalityChecklistColumn('hv_fx_fp', whens={1: 1}), ), AggregateColumn( _("<b>Total number of ASHAs who are functional on at least %s of the tasks</b>") % "60%", aggregate_fn=lambda x, y: { 'sort_key': ((x or 0) * 100 / (y or 1)), 'html': '{0}/{1} ({2}%)'.format((x or 0), y, ((x or 0) * 100 // (y or 1))) }, columns=[ FunctionalityChecklistColumn( whens={'hv_percent_functionality >= 60': 1}, alias='percent_functionality'), AliasColumn('total_ashas_checklist') ], format_fn=lambda x: x ), ]
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
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 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), ]
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): 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): 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')])), ]