Ejemplo n.º 1
0
    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'))
        ]
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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'))
     ]
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
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 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
Ejemplo n.º 7
0
 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)
     ]
Ejemplo n.º 8
0
    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
Ejemplo n.º 9
0
    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
Ejemplo n.º 10
0
    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
Ejemplo n.º 11
0
 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]
Ejemplo n.º 12
0
    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
Ejemplo n.º 13
0
 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')
     ]
Ejemplo n.º 15
0
 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')]),
     ]
Ejemplo n.º 16
0
 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,
     )
Ejemplo n.º 17
0
 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)
     ]
Ejemplo n.º 18
0
 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)
     ]
Ejemplo n.º 19
0
    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
Ejemplo n.º 20
0
    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')
            ])
        ]
Ejemplo n.º 21
0
 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')])),
     ]
Ejemplo n.º 22
0
 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
Ejemplo n.º 23
0
 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
         ),
     ]
Ejemplo n.º 24
0
    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")
Ejemplo n.º 25
0
 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),
     ]
Ejemplo n.º 26
0
    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')
     ]
Ejemplo n.º 28
0
 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
Ejemplo n.º 29
0
 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')]))
     ]
Ejemplo n.º 30
0
    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