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): registered_column = "registered_total_for_region" if 'district_id' in self.config: registered_column = 'registered_total_for_district' columns = [ DatabaseColumn( "No de PPS (number of PPS registered in that region)", MaxColumn(registered_column, alias='registered')), DatabaseColumn("No de PPS planifie (number of PPS planned)", MaxColumn('planned_total')), DatabaseColumn( "No de PPS avec livrasion cet mois (number of PPS visited this month)", CountUniqueColumn( 'location_id', alias="visited", )), AggregateColumn( "Taux de couverture (coverage ratio)", self.percent_fn, [AliasColumn('registered'), AliasColumn("visited")]), DatabaseColumn( "No de PPS avec donnees soumises (number of PPS which submitted data)", CountUniqueColumn( 'location_id', alias="submitted", )), AggregateColumn("Exhaustivite des donnees", self.percent_fn, [AliasColumn('visited'), AliasColumn('submitted')]), ] if self.config['startdate'].month != self.config['enddate'].month: columns.insert(0, DatabaseColumn('Mois', SimpleColumn('month'))) self.show_total = True return columns
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('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_v2', SumColumn('cases_person_adolescent_girls_11_14_all_v2'), slug='num_adolescent_girls_11yr14yr_v2'), DatabaseColumn( 'num_adolescent_girls_15yr18yr', SumColumn('cases_person_adolescent_girls_15_18_all'), slug='num_adolescent_girls_15yr18yr'), DatabaseColumn( 'num_adolescent_girls_11yr14yr_oos', SumColumn('cases_person_adolescent_girls_11_14_out_of_school'), slug='num_adolescent_girls_11yr14yr_oos'), 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): 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 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' ) ] return columns + agg_columns
def columns(self): cols = [ DatabaseColumn("case", SimpleColumn('case'), format_fn=self.map_case, sortable=False) ] if self.group_by else [] return cols + [ DatabaseColumn('casesUpdatedInLastWeek', SumColumn('cases_updated'), sortable=False), DatabaseColumn('casesUpdatedInWeekPrior', SumColumn('cases_updated', filters=[ filters.GTE('date', '2weekago'), filters.LT('date', 'weekago') ], alias='casesUpdatedInWeekPrior'), sortable=False), AggregateColumn( 'averageDurationPerCase', _percentage, [SumColumn('duration'), AliasColumn('cases_updated')], sortable=False) ]
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 = [ DatabaseColumn('', AliasColumn('gender'), format_fn=self._to_display), AggregateColumn('Farmers who adopted No practices', lambda x: x, [ CareCustomColumn( 'none', filters=self.filters + [RawFilter("maxmin = 0")]) ]) ] if self.config['group'] != 'practice': columns.append( AggregateColumn('Farmers who adopted Some practices', lambda x: x, [ CareCustomColumn('some', filters=self.filters + [RawFilter("maxmin = 1")]) ])) columns.append( AggregateColumn('Farmers who adopted All practices', lambda x: x, [ CareCustomColumn( 'all', filters=self.filters + [RawFilter("maxmin = 2")]) ])) 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 initial_columns(self): initial_cols = dict( state_name=DatabaseColumn("State", SimpleColumn('state')), district_name=DatabaseColumn("District", SimpleColumn('district')), block_name=DatabaseColumn("Block", SimpleColumn('block')), village_name=DatabaseColumn("Village", AliasColumn('village_code'), format_fn=self.get_village_name), village_code=DatabaseColumn("Village Code", SimpleColumn('village_code')), village_class=DatabaseColumn("Village Class", AliasColumn('village_code'), format_fn=self.get_village_class)) ret = tuple([col + '_name' for col in self.place_types[:3]]) if len(self.place_types) > 3: ret += ('village_name', 'village_code', 'village_class') return [initial_cols[col] for col in ret]
def get_columns_by_loc_level(self): selected_month = self.config['month'] def test_fucntion(x): return "%.2f" % x if x else "Data Not Entered" columns = [ 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"), 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"), 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('', AliasColumn('gender'), format_fn=self._to_display), AggregateColumn('All', lambda x:x, [CareCustomColumn('all', filters=self.filters + [EQ("maxmin", 'all')])]), AggregateColumn('Some', lambda x:x, [CareCustomColumn('some', filters=self.filters + [EQ("maxmin", 'some')])]), AggregateColumn('None', lambda x:x, [CareCustomColumn('none', filters=self.filters + [EQ("maxmin", 'none')])]) ]
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), [ SumColumn('anemic_moderate'), SumColumn('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 columns(self): registered_column = "registered_total_for_region" if 'district_id' in self.config: registered_column = 'registered_total_for_district' return [ DatabaseColumn( "No de PPS (number of PPS registered in that region)", MaxColumn(registered_column, alias='registered')), DatabaseColumn("No de PPS planifie (number of PPS planned)", MaxColumn('planned_total')), DatabaseColumn( "No de PPS avec livrasion cet mois (number of PPS visited this month)", CountUniqueColumn('location_id', alias="visited", filters=self.filters + [ AND([ GTE('real_date_repeat', "strsd"), LTE('real_date_repeat', "stred") ]) ])), AggregateColumn( "Taux de couverture (coverage ratio)", self.percent_fn, [AliasColumn('registered'), AliasColumn("visited")]), DatabaseColumn( "No de PPS avec donnees soumises (number of PPS which submitted data)", CountUniqueColumn('location_id', alias="submitted", filters=self.filters + [ AND([ GTE('real_date_repeat', "strsd"), LTE('real_date_repeat', "stred") ]) ])), AggregateColumn("Exhaustivite des donnees", self.percent_fn, [AliasColumn('visited'), AliasColumn('submitted')]), ]
def 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 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 columns(self): return [ AggregateColumn(_('Patient Name'), aggregate_fn=self.case_link, columns=[ SimpleColumn('referenced_id'), SimpleColumn('full_name') ], sortable=False), AggregateColumn(_('Task Name'), aggregate_fn=self.name_link, columns=[ SimpleColumn('name'), SimpleColumn('doc_id'), AliasColumn('is_closed') ], sortable=False), DatabaseColumn(_('Responsible Party'), SimpleColumn('task_responsible'), format_fn=lambda x: x.upper(), sortable=False), DatabaseColumn(_('Status'), SimpleColumn('closed', alias='is_closed'), format_fn=lambda x: 'Closed' if x == 0 else 'Open', sortable=False), DatabaseColumn(_('Action Due'), SimpleColumn('task_due'), format_fn=self.task_due), DatabaseColumn(_('Last Updated'), SimpleColumn('last_updated'), format_fn=self.last_modified), DatabaseColumn(_('Task Type'), SimpleColumn('task_activity'), format_fn=lambda x: TASK_ACTIVITY.get(x, x)), DatabaseColumn(_('Associated Risk Factor'), SimpleColumn('task_risk_factor'), format_fn=lambda x: TASK_RISK_FACTOR.get(x, x)), DatabaseColumn(_('Details'), SimpleColumn('task_details'), sortable=False) ]
def columns(self): group = self.config['group'] first_columns = 'value_chain' if group == '' or group == 'value_chain': first_columns = 'value_chain' elif group == 'domain': first_columns = 'domains' elif group == 'practice': first_columns = 'practices' columns = [ DatabaseColumn('', SimpleColumn(first_columns), self.group_name_fn), AggregateColumn('Farmers who adopted All practices', self.percent_fn, [ CareCustomColumn('all', filters=self.filters + [RawFilter("maxmin = 2")]), AliasColumn('some'), AliasColumn('none') ]) ] if group != 'practice': columns.append( AggregateColumn( 'Farmers who adopted Some practices', self.percent_fn, [ CareCustomColumn( 'some', filters=self.filters + [RawFilter("maxmin = 1")]), AliasColumn('all'), AliasColumn('none') ])) columns.append( AggregateColumn('Farmers who adopted No practices', self.percent_fn, [ CareCustomColumn('none', filters=self.filters + [RawFilter("maxmin = 0")]), AliasColumn('all'), AliasColumn('some') ])) return columns
def columns(self): group = self.config['group'] first_columns = 'value_chain' if group == '' or group == 'value_chain': first_columns = 'value_chain' elif group == 'domain': first_columns = 'domains' elif group == 'practice': first_columns = 'practices' return [ DatabaseColumn('', SimpleColumn(first_columns), self.group_name_fn), AggregateColumn('All', self.percent_fn, [ CareCustomColumn('all', filters=self.filters + [ EQ("maxmin", 'all'), ]), AliasColumn('some'), AliasColumn('none') ]), AggregateColumn('Some', self.percent_fn, [ CareCustomColumn('some', filters=self.filters + [ EQ("maxmin", 'some'), ]), AliasColumn('all'), AliasColumn('none') ]), AggregateColumn('None', self.percent_fn, [ CareCustomColumn('none', filters=self.filters + [ EQ("maxmin", 'none'), ]), AliasColumn('all'), AliasColumn('some') ]) ]
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): 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 [ 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): 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 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): 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 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('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 [ 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 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