Exemplo n.º 1
0
def _to_column(coldef):
    def _slug_to_raw_column(slug):
        return SumColumn('%s_total' % slug)

    if isinstance(coldef, dict):
        return AggregateColumn(
            _(coldef['slug']),
            Fraction,
            [_slug_to_raw_column(s) for s in coldef['columns']],
            sortable=False,
            slug=coldef['slug'],
        )
    return DatabaseColumn(_(coldef),
                          _slug_to_raw_column(coldef),
                          sortable=False)
Exemplo n.º 2
0
 def get_column_config(self, data_source_config, lang):
     # todo: better checks that fields are not expand
     num_config = self.numerator.get_column_config(data_source_config, lang)
     denom_config = self.denominator.get_column_config(data_source_config, lang)
     return ColumnConfig(columns=[
         AggregateColumn(
             header=self.get_header(lang),
             aggregate_fn=lambda n, d: {'num': n, 'denom': d},
             format_fn=self.get_format_fn(),
             columns=[c.view for c in num_config.columns + denom_config.columns],
             slug=self.column_id,
             data_slug=self.column_id,
         )],
         warnings=num_config.warnings + denom_config.warnings,
     )
 def columns(self):
     columns = self.get_columns_by_loc_level
     agg_columns = [
         AggregateColumn(
             'Percentage AWCs reported clean drinking water',
             percent_or_not_entered, [
                 SumColumn('infra_clean_water'),
                 SumColumn('num_awc_infra_last_update', alias='awcs')
             ],
             slug='percent_with_drinking_water'),
         AggregateColumn(
             'Percentage AWCs reported functional toilet',
             percent_or_not_entered,
             [SumColumn('infra_functional_toilet'),
              AliasColumn('awcs')],
             slug='percent_with_functional_toilet'),
         AggregateColumn(
             'Percentage AWCs reported medicine kit',
             percent_or_not_entered,
             [SumColumn('infra_medicine_kits'),
              AliasColumn('awcs')],
             slug='percent_with_medicine_kit'),
         AggregateColumn('Percentage AWCs reported weighing scale: infants',
                         percent_or_not_entered, [
                             SumColumn('infra_infant_weighing_scale'),
                             AliasColumn('awcs')
                         ],
                         slug='percent_baby_scale'),
         AggregateColumn(
             'Percentage AWCs reported weighing scale: mother and child',
             percent_or_not_entered,
             [SumColumn('infra_adult_weighing_scale'),
              AliasColumn('awcs')],
             slug='percent_adult_scale')
     ]
     if self.beta:
         agg_columns += [
             AggregateColumn(
                 'Percentage AWCs reported Infantometer',
                 percent_or_not_entered,
                 [SumColumn('infantometer'),
                  AliasColumn('awcs')],
                 slug='percent_with_infantometer'),
             AggregateColumn(
                 'Percentage AWCs reported Stadiometer',
                 percent_or_not_entered,
                 [SumColumn('stadiometer'),
                  AliasColumn('awcs')],
                 slug='percent_with_stadiometer')
         ]
     return columns + agg_columns
Exemplo n.º 4
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)
     ]
Exemplo n.º 5
0
 def _get_form_duration_column(self, meta, slug_suffix, filters):
     slug = '%s%s' % (meta['slug'], slug_suffix)
     when = "xmlns = '%s'" % meta['xmlns']
     dur_col = SumWhen(
         whens={when: 'duration'},
         else_=0,
         filters=filters,
         alias='%s_sum' % slug)
     count_col = SumWhen(
         key='xmlns',
         whens={meta['xmlns']: 1},
         else_=0,
         filters=filters,
         alias='%s_count' % slug)
     return AggregateColumn(slug, mean_seconds, [dur_col, count_col], sortable=False, slug=slug)
Exemplo n.º 6
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
Exemplo n.º 7
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
Exemplo n.º 8
0
    def columns(self):
        if self.config['table_card_group_by'] == 'group_name':
            first_column = 'group_name'
        else:
            first_column = 'gender'

        return [
            DatabaseColumn('',
                           SimpleColumn(first_column),
                           format_fn=self.first_column_format),
            AggregateColumn('practice_count', self.format_cell_fn, [
                CareCustomColumn(
                    'all', filters=self.filters + [RawFilter("maxmin = 2")]),
                CareCustomColumn(
                    'none', filters=self.filters + [RawFilter("maxmin = 0")])
            ]),
        ]
Exemplo n.º 9
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')
         ]),
     ]
Exemplo n.º 10
0
 def get_column_config(self, data_source_config, lang):
     return ColumnConfig(columns=[
         AggregateColumn(
             header=self.get_header(lang),
             aggregate_fn=lambda year, month: {
                 'year': year,
                 'month': month
             },
             format_fn=self.get_format_fn(),
             columns=[
                 YearColumn(self.field, alias=self._year_column_alias()),
                 MonthColumn(self.field, alias=self._month_column_alias()),
             ],
             slug=self.column_id,
             data_slug=self.column_id,
         )
     ], )
Exemplo n.º 11
0
    def columns(self):
        def format_pnc_count(*args):
            return sum([1 if arg == 'yes' else 0 for arg in args])

        return [
            DatabaseColumn("PP 1", SimpleColumn('pp_1_done',
                                                alias='pp_1_done')),
            DatabaseColumn("PP 2", SimpleColumn('pp_2_done',
                                                alias='pp_2_done')),
            DatabaseColumn("PP 3", SimpleColumn('pp_3_done',
                                                alias='pp_3_done')),
            DatabaseColumn("PP 4", SimpleColumn('pp_4_done',
                                                alias='pp_4_done')),
            AggregateColumn('PNC Count', format_pnc_count, [
                AliasColumn('pp_1_done'),
                AliasColumn('pp_2_done'),
                AliasColumn('pp_3_done'),
                AliasColumn('pp_4_done')
            ])
        ]
Exemplo n.º 12
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'))
        ]
Exemplo n.º 13
0
 def columns(self):
     return [
         self.location_column,
         DatabaseColumn(
             "Incidents of Abuse",
             SumColumn('incidents_total',
                       filters=self.filters +
                       [BETWEEN('date_reported', 'startdate', 'enddate')])),
         DatabaseColumn(
             "Outreach activities",
             SumColumn('outreach_total',
                       filters=self.filters +
                       [BETWEEN('date', 'startdate', 'enddate')])),
         DatabaseColumn(
             "IGA Reports",
             SumColumn('iga_total',
                       filters=self.filters +
                       [BETWEEN('start_date', 'startdate', 'enddate')])),
         AggregateColumn("Total", self.sum, [
             AliasColumn('incidents_total'),
             AliasColumn('outreach_total')
         ]),
     ]
Exemplo n.º 14
0
    def columns(self):
        user = DatabaseColumn("Username",
                              SimpleColumn("user"),
                              format_fn=self.username)
        i_a = DatabaseColumn("Indicator A",
                             SumColumn("indicator_a"),
                             format_fn=unity)
        i_b = DatabaseColumn("Indicator B",
                             SumColumn("indicator_b"),
                             format_fn=unity)

        agg_c_d = AggregateColumn(
            "C/D",
            combine_indicator,
            [SumColumn("indicator_c"),
             SumColumn("indicator_d")],
            format_fn=unity)

        aggregate_cols = [i_a, i_b, agg_c_d]

        if self.group_by:
            return [user] + aggregate_cols
        else:
            return aggregate_cols
 def get_columns(self, filters):
     return [
         DatabaseColumn('month', SimpleColumn('month')),
         AggregateColumn(
             '% Weighing efficiency (Children <5 weighed)',
             percent_num, [
                 SumColumn(
                     'nutrition_status_weighed',
                     filters=filters + [NOT(EQ('age_tranche', 'age_72'))]),
                 SumColumn(
                     'wer_eligible',
                     alias='wer_eligible',
                     filters=filters + [NOT(EQ('age_tranche', 'age_72'))])
             ],
             slug='status_weighed'),
         AggregateColumn(
             '% Height measurement efficiency (Children <5 measured)',
             percent_num, [
                 SumColumn(
                     'height_measured_in_month',
                     alias='height_measured_in_month_less_5',
                     filters=filters + [NOT(EQ('age_tranche', 'age_72'))]),
                 SumColumn(
                     'height_eligible',
                     alias='height_eligible',
                     filters=filters + [NOT(EQ('age_tranche', 'age_72'))])
             ],
             slug='status_height_efficiency'),
         DatabaseColumn(
             'Total number Unweighed',
             SumColumn('nutrition_status_unweighed',
                       filters=filters +
                       [NOT(EQ('age_tranche', 'age_72'))])),
         AggregateColumn(
             'Percent Children severely underweight (weight for age)',
             percent_num, [
                 SumColumn(
                     'nutrition_status_severely_underweight',
                     filters=filters + [NOT(EQ('age_tranche', 'age_72'))]),
                 AliasColumn('nutrition_status_weighed')
             ],
             slug='severely_underweight'),
         AggregateColumn(
             'Percent Children moderately underweight (weight for age)',
             percent_num, [
                 SumColumn(
                     'nutrition_status_moderately_underweight',
                     filters=filters + [NOT(EQ('age_tranche', 'age_72'))]),
                 AliasColumn('nutrition_status_weighed')
             ],
             slug='moderately_underweight'),
         AggregateColumn('Percent Children normal (weight for age)',
                         percent_num, [
                             SumColumn('nutrition_status_normal',
                                       filters=filters +
                                       [NOT(EQ('age_tranche', 'age_72'))]),
                             AliasColumn('nutrition_status_weighed')
                         ],
                         slug='status_normal'),
         AggregateColumn(
             'Percent children with severe acute malnutrition (weight-for-height)',
             percent_num, [
                 SumColumn(wasting_severe_column(self.beta),
                           filters=filters + get_age_filters(self.beta)),
                 SumColumn(wfh_recorded_in_month_column(self.beta),
                           alias='weighed_and_height_measured_in_month',
                           filters=filters + get_age_filters(self.beta))
             ],
             slug='wasting_severe'),
         AggregateColumn(
             'Percent children with moderate acute malnutrition (weight-for-height)',
             percent_num, [
                 SumColumn(wasting_moderate_column(self.beta),
                           filters=filters + get_age_filters(self.beta)),
                 AliasColumn('weighed_and_height_measured_in_month')
             ],
             slug='wasting_moderate'),
         AggregateColumn(
             'Percent children normal (weight-for-height)',
             percent_num, [
                 SumColumn(wasting_normal_column(self.beta),
                           filters=filters + get_age_filters(self.beta)),
                 AliasColumn('weighed_and_height_measured_in_month')
             ],
             slug='wasting_normal'),
         AggregateColumn(
             'Percent children with severe stunting (height for age)',
             percent_num, [
                 SumColumn(stunting_severe_column(self.beta),
                           filters=filters + get_age_filters(self.beta)),
                 SumColumn(hfa_recorded_in_month_column(self.beta),
                           alias='height_measured_in_month',
                           filters=filters + get_age_filters(self.beta))
             ],
             slug='stunting_severe'),
         AggregateColumn(
             'Percent children with moderate stunting (height for age)',
             percent_num, [
                 SumColumn(stunting_moderate_column(self.beta),
                           filters=filters + get_age_filters(self.beta)),
                 AliasColumn('height_measured_in_month')
             ],
             slug='stunting_moderate'),
         AggregateColumn(
             'Percent children with normal (height for age)',
             percent_num, [
                 SumColumn(stunting_normal_column(self.beta),
                           filters=filters + get_age_filters(self.beta)),
                 AliasColumn('height_measured_in_month')
             ],
             slug='stunting_normal'),
         AggregateColumn(
             'Percent children immunized with 1st year immunizations',
             lambda x, y, z: ((x or 0) + (y or 0)) * 100 / float(z or 1), [
                 SumColumn('fully_immunized_on_time'),
                 SumColumn('fully_immunized_late'),
                 SumColumn('fully_immunized_eligible')
             ],
             slug='fully_immunized'),
         AggregateColumn(
             'Percent Children breastfed at birth',
             percent_num,
             [SumColumn('bf_at_birth'),
              SumColumn('born_in_month')],
             slug='breastfed_at_birth'),
         AggregateColumn(
             'Percent Children exclusively breastfed',
             percent_num,
             [SumColumn('ebf_in_month'),
              SumColumn('ebf_eligible')],
             slug='exclusively_breastfed'),
         AggregateColumn(
             'Percent Children initiated appropriate complementary feeding',
             percent_num, [
                 SumColumn('cf_initiation_in_month'),
                 SumColumn('cf_initiation_eligible')
             ],
             slug='cf_initiation'),
         AggregateColumn(
             'Perecent children complementary feeding',
             percent_num,
             [SumColumn('cf_in_month'),
              SumColumn('cf_eligible')],
             slug='complementary_feeding'),
         AggregateColumn(
             'Percentage of children consuming atleast 4 food groups',
             percent_num,
             [SumColumn('cf_diet_diversity'),
              AliasColumn('cf_eligible')],
             slug='diet_diversity'),
         AggregateColumn(
             'Percentage of children consuming adequate food',
             percent_num,
             [SumColumn('cf_diet_quantity'),
              AliasColumn('cf_eligible')],
             slug='diet_quantity'),
         AggregateColumn(
             'Percentage of children whose mothers handwash before feeding',
             percent_num,
             [SumColumn('cf_handwashing'),
              AliasColumn('cf_eligible')],
             slug='handwashing'),
         DatabaseColumn('Children (0 - 28 Days) Seeking Services',
                        SumColumn('valid_in_month',
                                  filters=filters +
                                  [EQ('age_tranche', 'age_0')],
                                  alias='zero'),
                        slug='zero'),
         DatabaseColumn('Children (28 Days - 6 mo) Seeking Services',
                        SumColumn('valid_in_month',
                                  filters=filters +
                                  [EQ('age_tranche', 'age_6')],
                                  alias='one'),
                        slug='one'),
         DatabaseColumn('Children (6 mo - 1 year) Seeking Services',
                        SumColumn('valid_in_month',
                                  filters=filters +
                                  [EQ('age_tranche', 'age_12')],
                                  alias='two'),
                        slug='two'),
         DatabaseColumn('Children (1 year - 3 years) Seeking Services',
                        SumColumn('valid_in_month',
                                  filters=filters + [
                                      OR([
                                          EQ('age_tranche', 'age_24'),
                                          EQ('age_tranche', 'age_36')
                                      ])
                                  ],
                                  alias='three'),
                        slug='three'),
         DatabaseColumn('Children (3 years - 6 years) Seeking Services',
                        SumColumn('valid_in_month',
                                  filters=filters + [
                                      OR([
                                          EQ('age_tranche', 'age_48'),
                                          EQ('age_tranche', 'age_60'),
                                          EQ('age_tranche', 'age_72')
                                      ])
                                  ],
                                  alias='four'),
                        slug='four'),
         AggregateColumn(
             'Percent of children born in month with low birth weight',
             percent_num, [
                 SumColumn('low_birth_weight_in_month'),
                 SumColumn('weighed_and_born_in_month')
             ],
             slug='low_birth_weight')
     ]
Exemplo n.º 16
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',
             SumColumn('cases_person_adolescent_girls_11_14_all'),
             slug='num_adolescent_girls_11yr14yr'
         ),
         DatabaseColumn(
             'num_adolescent_girls_15yr18yr',
             SumColumn('cases_person_adolescent_girls_15_18_all'),
             slug='num_adolescent_girls_15yr18yr'
         ),
         DatabaseColumn(
             'num_adolescent_girls_11yr14yr_enrolled_for_services',
             SumColumn('cases_person_adolescent_girls_11_14'),
             slug='num_adolescent_girls_11yr14yr_enrolled_for_services'
         ),
         DatabaseColumn(
             'num_adolescent_girls_15yr18yr_enrolled_for_services',
             SumColumn('cases_person_adolescent_girls_15_18'),
             slug='num_adolescent_girls_15yr18yr_enrolled_for_services'
         )
     ]
     return columns + agg_columns
 def get_columns(self, filters):
     return [
         DatabaseColumn('month', SimpleColumn('month')),
         AggregateColumn(
             'Percent of pregnant women who are anemic in given month',
             lambda x, y, z: ((x or 0) + (y or 0)) * 100 / float(z or 1), [
                 SumWhen(
                     whens=[["ccs_status = 'pregnant'", 'anemic_moderate']],
                     alias='anemic_moderate'),
                 SumWhen(
                     whens=[["ccs_status = 'pregnant'", 'anemic_severe']],
                     alias='anemic_severe'),
                 SumColumn('pregnant', alias='pregnant')
             ],
             slug='severe_anemic'),
         AggregateColumn(
             'Percent tetanus complete',
             percent_num,
             [SumColumn('tetanus_complete'),
              AliasColumn('pregnant')],
             slug='tetanus_complete'),
         AggregateColumn(
             'Percent women ANC 1 recieved by deliveryy',
             percent_num, [
                 SumColumn('anc1_received_at_delivery'),
                 SumColumn('delivered_in_month', alias='delivered_in_month')
             ],
             slug='anc_1'),
         AggregateColumn('Percent women ANC 2 received by delivery',
                         percent_num, [
                             SumColumn('anc2_received_at_delivery'),
                             AliasColumn('delivered_in_month')
                         ],
                         slug='anc_2'),
         AggregateColumn('Percent women ANC 3 received by delivery',
                         percent_num, [
                             SumColumn('anc3_received_at_delivery'),
                             AliasColumn('delivered_in_month')
                         ],
                         slug='anc_3'),
         AggregateColumn('Percent women ANC 4 received by delivery',
                         percent_num, [
                             SumColumn('anc4_received_at_delivery'),
                             AliasColumn('delivered_in_month')
                         ],
                         slug='anc_4'),
         AggregateColumn('Percent women Resting during pregnancy',
                         percent_num, [
                             SumColumn('resting_during_pregnancy'),
                             AliasColumn('pregnant')
                         ],
                         slug='resting'),
         AggregateColumn('Percent eating extra meal during pregnancy',
                         percent_num,
                         [SumColumn('extra_meal'),
                          AliasColumn('pregnant')],
                         slug='extra_meal'),
         AggregateColumn(
             'Percent trimester 3 women Counselled on immediate EBF during home visit',
             percent_num,
             [SumColumn('counsel_immediate_bf'),
              SumColumn('trimester_3')],
             slug='trimester')
     ]
Exemplo n.º 18
0
 def get_columns(self, filters):
     return [
         DatabaseColumn('month', SimpleColumn('month')),
         DatabaseColumn(
             'Number of Households',
             SumColumn('cases_household'),
         ),
         DatabaseColumn(
             'Total Number of Household Members',
             SumColumn('cases_person_all')
         ),
         DatabaseColumn(
             'Total Number of Members Enrolled for Services for services at AWC ',
             SumColumn(self.person_is_beneficiary_column, alias=self.person_is_beneficiary_column)
         ),
         AggregateColumn(
             'Percentage of Beneficiaries with Aadhar',
             lambda x, y: (x or 0) * 100 / float(y or 1),
             [
                 SumColumn(self.person_has_aadhaar_column),
                 AliasColumn(self.person_is_beneficiary_column)
             ],
             slug='aadhar'
         ),
         DatabaseColumn(
             'Total Pregnant women',
             SumColumn('cases_ccs_pregnant_all')
         ),
         DatabaseColumn(
             'Total Pregnant Women Enrolled for services at AWC',
             SumColumn('cases_ccs_pregnant')
         ),
         DatabaseColumn(
             'Total Lactating women',
             SumColumn('cases_ccs_lactating_all')
         ),
         DatabaseColumn(
             'Total Lactating women registered for services at AWC',
             SumColumn('cases_ccs_lactating')
         ),
         DatabaseColumn(
             'Total Children (0-6 years)',
             SumColumn('cases_child_health_all')
         ),
         DatabaseColumn(
             'Total Chldren (0-6 years) registered for service at AWC',
             SumColumn('cases_child_health')
         ),
         DatabaseColumn(
             'Adolescent girls (11-14 years)',
             SumColumn('cases_person_adolescent_girls_11_14_all')
         ),
         DatabaseColumn(
             'Adolescent girls (15-18 years)',
             SumColumn('cases_person_adolescent_girls_15_18_all')
         ),
         DatabaseColumn(
             'Adolescent girls (11-14 years) Seeking Services',
             SumColumn('cases_person_adolescent_girls_11_14')
         ),
         DatabaseColumn(
             'Adolescent girls (15-18 years) Seeking Services',
             SumColumn('cases_person_adolescent_girls_15_18')
         ),
         AggregateColumn(
             '% AWCs reported clean drinking water',
             aggregate_fn=percent_num,
             columns=[
                 SumColumn('infra_clean_water'),
                 SumColumn('num_awc_infra_last_update', alias='awcs')
             ],
             slug='clean_water'
         ),
         AggregateColumn(
             '% AWCs reported functional toilet',
             percent_num,
             [
                 SumColumn('infra_functional_toilet'),
                 AliasColumn('awcs')
             ],
             slug='functional_toilet'
         ),
         AggregateColumn(
             '% AWCs reported medicine kit',
             percent_num,
             [
                 SumColumn('infra_medicine_kits'),
                 AliasColumn('awcs')
             ],
             slug='medicine_kits'
         ),
         AggregateColumn(
             '% AWCs reported weighing scale for mother and child',
             percent_num,
             [
                 SumColumn('infra_adult_weighing_scale'),
                 AliasColumn('awcs')
             ],
             slug='adult_weighing_scale'
         ),
         AggregateColumn(
             '% AWCs reported weighing scale for infants',
             percent_num,
             [
                 SumColumn('infra_infant_weighing_scale'),
                 AliasColumn('awcs')
             ],
             slug='baby_weighing_scale'
         ),
     ]
Exemplo n.º 19
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")
Exemplo n.º 20
0
    def columns(self):
        def AggColumn(label, alias, sum_slug, slug, extended=False):
            return AggregateColumn(
                label,
                format_percent,
                [
                    AliasColumn(alias),
                    SumColumn(
                        sum_slug,
                        filters=self.wrapped_sum_column_filters_extended
                        if extended else self.wrapped_sum_column_filters),
                ],
                slug=slug,
                format_fn=ret_val,
            )

        def GrowthMonitoringColumn(number):
            return AggColumn(
                "# of Children Who Have Attended At Least {} Growth Monitoring"
                "Session".format(number),
                alias='childrens',
                sum_slug='growth_monitoring_session_{}_total'.format(number),
                slug='growth_monitoring_session_{}'.format(number),
            )

        return [
            DatabaseColumn(
                '# of Beneficiaries Registered',
                SumColumn('beneficiaries_registered_total',
                          alias="beneficiaries",
                          filters=self.wrapped_sum_column_filters_extended),
                format_fn=normal_format),
            AggColumn(
                '# of Pregnant Women Registered',
                alias='beneficiaries',
                sum_slug='lmp_total',
                slug='lmp',
                extended=True,
            ),
            AggregateColumn(
                '# of Mothers of Children Aged 3 Years and Below Registered',
                format_percent,
                [
                    AliasColumn('beneficiaries'),
                    SumColumn(
                        'lactating_total',
                        # TODO necessary?
                        alias='mothers',
                        filters=self.wrapped_sum_column_filters_extended)
                ],
                slug='mother_reg',
                format_fn=ret_val),
            DatabaseColumn(
                '# of Children Between 0 and 3 Years of Age Registered',
                SumColumn('children_total',
                          alias="childrens",
                          filters=self.wrapped_sum_column_filters_extended),
                format_fn=normal_format),
            AggColumn(
                '# of Beneficiaries Attending VHND Monthly',
                alias='beneficiaries',
                sum_slug='vhnd_monthly_total',
                slug='vhnd_monthly',
            ),
            AggColumn(
                '# of Pregnant Women Who Have Received at least 30 IFA Tablets',
                alias='beneficiaries',
                sum_slug='ifa_tablets_total',
                slug='ifa_tablets',
            ),
            AggColumn(
                '# of Pregnant Women Whose Weight Gain Was Monitored At Least Once',
                alias='beneficiaries',
                sum_slug='weight_once_total',
                slug='weight_once',
            ),
            AggColumn(
                '# of Pregnant Women Whose Weight Gain Was Monitored Twice',
                alias='beneficiaries',
                sum_slug='weight_twice_total',
                slug='weight_twice',
            ),
            AggColumn(
                '# of Children Whose Weight Was Monitored at Birth',
                alias='childrens',
                sum_slug='children_monitored_at_birth_total',
                slug='children_monitored_at_birth',
            ),
            AggColumn(
                '# of Children Whose Birth Was Registered',
                alias='childrens',
                sum_slug='children_registered_total',
                slug='children_registered',
            ),
            GrowthMonitoringColumn(1),
            GrowthMonitoringColumn(2),
            GrowthMonitoringColumn(3),
            GrowthMonitoringColumn(4),
            GrowthMonitoringColumn(5),
            GrowthMonitoringColumn(6),
            GrowthMonitoringColumn(7),
            GrowthMonitoringColumn(8),
            GrowthMonitoringColumn(9),
            GrowthMonitoringColumn(10),
            GrowthMonitoringColumn(11),
            GrowthMonitoringColumn(12),
            AggColumn(
                '# of Children Whose Nutritional Status is Normal',
                alias='childrens',
                sum_slug='nutritional_status_normal_total',
                slug='nutritional_status_normal',
            ),
            AggColumn(
                '# of Children Whose Nutritional Status is "MAM"',
                alias='childrens',
                sum_slug='nutritional_status_mam_total',
                slug='nutritional_status_mam',
            ),
            AggColumn(
                '# of Children Whose Nutritional Status is "SAM"',
                alias='childrens',
                sum_slug='nutritional_status_sam_total',
                slug='nutritional_status_sam',
            ),
            AggregateColumn(
                '# of Children Who Have Received ORS and Zinc Treatment if He/She Contracts Diarrhea',
                format_percent, [
                    SumColumn('treated_total',
                              filters=self.wrapped_sum_column_filters),
                    SumColumn('suffering_total',
                              filters=self.wrapped_sum_column_filters)
                ],
                slug='ors_zinc',
                format_fn=ret_val),
            AggColumn(
                '# of Mothers of Children Aged 3 Years and Below Who Reported to Have Exclusively Breastfed Their Children for First 6 Months',
                alias='mothers',
                sum_slug='excbreastfed_total',
                slug="breastfed",
            ),
            AggColumn(
                '# of Children Who Received Measles Vaccine',
                alias='childrens',
                sum_slug='measlesvacc_total',
                slug='measlesvacc',
            ),
        ]
Exemplo n.º 21
0
 def get_columns(self, filters):
     return [
         DatabaseColumn('month', SimpleColumn('month')),
         # DatabaseColumn(
         #     'Number of AWCs Open In Month',
         #     SumColumn('num_awcs'),
         #     slug='awc_num_open'
         # ),
         # DatabaseColumn(
         #     'Number of Household Registration Forms',
         #     SumColumn('usage_num_hh_reg')
         # ),
         # DatabaseColumn(
         #     'Number of Pregnancy Registration Forms',
         #     SumColumn('usage_num_add_pregnancy')
         # ),
         # DatabaseColumn(
         #     'Number of PSE Forms with Photo',
         #     SumColumn('usage_num_pse_with_image')
         # ),
         # AggregateColumn(
         #     'Home Visit - Number of Birth Preparedness Forms',
         #     lambda x, y, z: x + y + z,
         #     columns=[
         #         SumColumn('usage_num_bp_tri1'),
         #         SumColumn('usage_num_bp_tri2'),
         #         SumColumn('usage_num_bp_tri3')
         #     ],
         #     slug='num_bp'
         # ),
         # DatabaseColumn(
         #     'Home Visit - Number of Delivery Forms',
         #     SumColumn('usage_num_delivery')
         # ),
         # DatabaseColumn(
         #     'Home Visit - Number of PNC Forms',
         #     SumColumn('usage_num_pnc')
         # ),
         # DatabaseColumn(
         #     'Home Visit - Number of EBF Forms',
         #     SumColumn('usage_num_ebf')
         # ),
         # DatabaseColumn(
         #     'Home Visit - Number of CF Forms',
         #     SumColumn('usage_num_cf')
         # ),
         # DatabaseColumn(
         #     'Number of GM forms',
         #     SumColumn('usage_num_gmp')
         # ),
         # DatabaseColumn(
         #     'Number of THR forms',
         #     SumColumn('usage_num_thr')
         # ),
         # AggregateColumn(
         #     'Number of Due List forms',
         #     lambda x, y: x + y,
         #     [
         #         SumColumn('usage_num_due_list_ccs'),
         #         SumColumn('usage_num_due_list_child_health')
         #     ],
         #     slug='due_list'
         # ),
         DatabaseColumn(
             'Number of Households',
             SumColumn('cases_household'),
         ),
         DatabaseColumn(
             'Total Number of Household Members',
             SumColumn('cases_person_all')
         ),
         DatabaseColumn(
             'Total Number of Members Enrolled for Services for services at AWC ',
             SumColumn(self.person_is_beneficiary_column, alias=self.person_is_beneficiary_column)
         ),
         AggregateColumn(
             'Percentage of Beneficiaries with Aadhar',
             lambda x, y: (x or 0) * 100 / float(y or 1),
             [
                 SumColumn(self.person_has_aadhaar_column),
                 AliasColumn(self.person_is_beneficiary_column)
             ],
             slug='aadhar'
         ),
         DatabaseColumn(
             'Total Pregnant women',
             SumColumn('cases_ccs_pregnant_all')
         ),
         DatabaseColumn(
             'Total Pregnant Women Enrolled for services at AWC',
             SumColumn('cases_ccs_pregnant')
         ),
         DatabaseColumn(
             'Total Lactating women',
             SumColumn('cases_ccs_lactating_all')
         ),
         DatabaseColumn(
             'Total Lactating women registered for services at AWC',
             SumColumn('cases_ccs_lactating')
         ),
         DatabaseColumn(
             'Total Children (0-6 years)',
             SumColumn('cases_child_health_all')
         ),
         DatabaseColumn(
             'Total Chldren (0-6 years) registered for service at AWC',
             SumColumn('cases_child_health')
         ),
         DatabaseColumn(
             'Adolescent girls (11-14 years)',
             SumColumn('cases_person_adolescent_girls_11_14_all')
         ),
         DatabaseColumn(
             'Adolescent girls (15-18 years)',
             SumColumn('cases_person_adolescent_girls_15_18_all')
         ),
         DatabaseColumn(
             'Adolescent girls (11-14 years) Seeking Services',
             SumColumn('cases_person_adolescent_girls_11_14')
         ),
         DatabaseColumn(
             'Adolescent girls (15-18 years) Seeking Services',
             SumColumn('cases_person_adolescent_girls_15_18')
         ),
         AggregateColumn(
             '% AWCs reported clean drinking water',
             aggregate_fn=percent_num,
             columns=[
                 SumColumn('infra_clean_water'),
                 SumColumn('num_awc_infra_last_update', alias='awcs')
             ],
             slug='clean_water'
         ),
         AggregateColumn(
             '% AWCs reported functional toilet',
             percent_num,
             [
                 SumColumn('infra_functional_toilet'),
                 AliasColumn('awcs')
             ],
             slug='functional_toilet'
         ),
         AggregateColumn(
             '% AWCs reported medicine kit',
             percent_num,
             [
                 SumColumn('infra_medicine_kits'),
                 AliasColumn('awcs')
             ],
             slug='medicine_kits'
         ),
         AggregateColumn(
             '% AWCs reported weighing scale for mother and child',
             percent_num,
             [
                 SumColumn('infra_adult_weighing_scale'),
                 AliasColumn('awcs')
             ],
             slug='adult_weighing_scale'
         ),
         AggregateColumn(
             '% AWCs reported weighing scale for infants',
             percent_num,
             [
                 SumColumn('infra_infant_weighing_scale'),
                 AliasColumn('awcs')
             ],
             slug='baby_weighing_scale'
         ),
     ]
Exemplo 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',
                                          alias='low_birth_weight_in_month'),
                                SumColumn('weighed_and_born_in_month',
                                          alias='weighed_and_born_in_month')
                            ],
                            slug='newborn_low_birth_weight'),
            AggregateColumn(
                'Percentage of children with completed 1 year immunizations',
                lambda x, y, z: '%.2f%%' % ((
                    (x or 0) + (y or 0)) * 100 / float(z or 1)), [
                        SumColumn('fully_immunized_on_time',
                                  alias='fully_immunized_on_time'),
                        SumColumn('fully_immunized_late',
                                  alias='fully_immunized_late'),
                        SumColumn('fully_immunized_eligible',
                                  alias='fully_immunized_eligible')
                    ],
                slug='percent_completed_1year_immunizations'),
            AggregateColumn(
                'Percentage of children breastfed at birth',
                percent, [
                    SumColumn('bf_at_birth', alias='bf_at_birth'),
                    SumColumn('born_in_month', alias='born_in_month')
                ],
                slug='percent_breastfed_at_birth'),
            AggregateColumn(
                'Percentage of children exclusively breastfeeding',
                percent, [
                    SumColumn('ebf_in_month', alias='ebf_in_month'),
                    SumColumn('ebf_eligible', alias='ebf_eligible')
                ],
                slug='percent_ebf'),
            AggregateColumn(
                'Percentage of children initiated complementary feeding (in the past 30 days)',
                percent, [
                    SumColumn('cf_initiation_in_month',
                              alias='cf_initiation_in_month'),
                    SumColumn('cf_initiation_eligible',
                              alias='cf_initiation_eligible')
                ],
                slug='percent_initiated_on_cf'),
            AggregateColumn(
                'Percentage of children initiated appropriate complementary feeding',
                percent, [
                    SumColumn('cf_in_month', alias='cf_in_month'),
                    SumColumn('cf_eligible', alias='cf_eligible')
                ],
                slug='percent_appropriate_cf'),
            AggregateColumn(
                'Percentage of children receiving complementary feeding with adequate diet diversity',
                percent, [
                    SumColumn('cf_diet_diversity', alias='cf_diet_diversity'),
                    AliasColumn('cf_eligible')
                ],
                slug='percent_cf_diet_diversity'),
            AggregateColumn(
                'Percentage of children receiving complementary feeding with adequate diet quantity',
                percent, [
                    SumColumn('cf_diet_quantity', alias='cf_diet_quantity'),
                    AliasColumn('cf_eligible')
                ],
                slug='percent_cf_diet_quanity'),
            AggregateColumn(
                "Percentage of children receiving complementary feeding "
                "with appropriate handwashing before feeding",
                percent, [
                    SumColumn('cf_handwashing', alias='cf_handwashing'),
                    AliasColumn('cf_eligible')
                ],
                slug='percent_cf_handwashing_before_feeding'),
        ]
        agg_columns.insert(
            0,
            DatabaseColumn('Total no. of children weighed',
                           AliasColumn('nutrition_status_weighed'),
                           slug='nutrition_status_weighed'))
        agg_columns.insert(
            1,
            DatabaseColumn('Total no. of children eligible to be weighed',
                           AliasColumn('wer_eligible'),
                           slug='wer_eligible'))

        agg_columns.insert(
            3,
            DatabaseColumn('Total no. of children whose height was measured',
                           AliasColumn('height_measured_in_month_efficiency'),
                           slug='height_measured_in_month_efficiency'))
        agg_columns.insert(
            4,
            DatabaseColumn(
                'Total no. of children  eligible for measuring height',
                AliasColumn('height_eligible'),
                slug='height_eligible'))

        agg_columns.insert(
            7,
            DatabaseColumn(
                'No. of severely underweight children',
                AliasColumn('nutrition_status_severely_underweight'),
                slug='nutrition_status_severely_underweight'))
        agg_columns.insert(
            8,
            DatabaseColumn('Total No. of children weighed',
                           AliasColumn('nutrition_status_weighed'),
                           slug='nutrition_status_weighed'))

        agg_columns.insert(
            10,
            DatabaseColumn(
                'No. of moderately underweight children ',
                AliasColumn('nutrition_status_moderately_underweight'),
                slug='nutrition_status_moderately_underweight'))
        agg_columns.insert(
            11,
            DatabaseColumn('Total No. of children weighed',
                           AliasColumn('nutrition_status_weighed'),
                           slug='nutrition_status_weighed'))

        agg_columns.insert(
            13,
            DatabaseColumn('No. of  children with normal weight for age',
                           AliasColumn('nutrition_status_normal'),
                           slug='nutrition_status_normal'))
        agg_columns.insert(
            14,
            DatabaseColumn('Total No. of children weighed',
                           AliasColumn('nutrition_status_weighed'),
                           slug='nutrition_status_weighed'))

        agg_columns.insert(
            16,
            DatabaseColumn('No. of Children with severe wasting',
                           AliasColumn('wasting_severe'),
                           slug='wasting_severe'))
        agg_columns.insert(
            17,
            DatabaseColumn(
                'Total number of children whose height and weight is measured',
                AliasColumn('weighed_and_height_measured_in_month'),
                slug='weighed_and_height_measured_in_month'))

        agg_columns.insert(
            19,
            DatabaseColumn('No. of moderately wasted children',
                           AliasColumn('wasting_moderate'),
                           slug='wasting_moderate'))
        agg_columns.insert(
            20,
            DatabaseColumn(
                'Total number of children whose height and weight is measured',
                AliasColumn('weighed_and_height_measured_in_month'),
                slug='weighed_and_height_measured_in_month'))

        agg_columns.insert(
            22,
            DatabaseColumn('No. of children with normal weight-for-height',
                           AliasColumn('wasting_normal'),
                           slug='wasting_normal'))
        agg_columns.insert(
            23,
            DatabaseColumn(
                'Total no. of children  whose height and weight is measured',
                AliasColumn('weighed_and_height_measured_in_month'),
                slug='weighed_and_height_measured_in_month'))

        agg_columns.insert(
            25,
            DatabaseColumn('No. of severely stunted children',
                           AliasColumn('stunting_severe'),
                           slug='stunting_severe'))
        agg_columns.insert(
            26,
            DatabaseColumn(
                'Total no. of children whose height has been measured',
                AliasColumn('height_measured_in_month'),
                slug='height_measured_in_month'))

        agg_columns.insert(
            28,
            DatabaseColumn('No. of moderately stunted children',
                           AliasColumn('stunting_moderate'),
                           slug='stunting_moderate'))
        agg_columns.insert(
            29,
            DatabaseColumn(
                'Total no. of children whose height has been measured',
                AliasColumn('height_measured_in_month'),
                slug='height_measured_in_month'))

        agg_columns.insert(
            31,
            DatabaseColumn('No. of children with normal height for age',
                           AliasColumn('stunting_normal'),
                           slug='stunting_normal'))
        agg_columns.insert(
            32,
            DatabaseColumn(
                'Total no. of children whose height has been measured',
                AliasColumn('height_measured_in_month'),
                slug='height_measured_in_month'))

        agg_columns.insert(
            34,
            DatabaseColumn('No. of newborns with low birth weight',
                           AliasColumn('low_birth_weight_in_month'),
                           slug='low_birth_weight_in_month'))
        agg_columns.insert(
            35,
            DatabaseColumn(
                'Total no. of children born and weighed in the current month',
                AliasColumn('weighed_and_born_in_month'),
                slug='weighed_and_born_in_month'))

        agg_columns.insert(
            37,
            AggregateColumn('No. of children completed 1 year immunization',
                            lambda x, y: ((x or 0) + (y or 0)), [
                                AliasColumn('fully_immunized_on_time'),
                                AliasColumn('fully_immunized_late')
                            ],
                            slug='num_immun_children'))
        agg_columns.insert(
            38,
            DatabaseColumn('Total no. of children from age >12 months',
                           AliasColumn('fully_immunized_eligible'),
                           slug='fully_immunized_eligible'))

        agg_columns.insert(
            40,
            DatabaseColumn('No. of children breastfed at birth',
                           AliasColumn('bf_at_birth'),
                           slug='bf_at_birth'))
        agg_columns.insert(
            41,
            DatabaseColumn(
                'Total no. of children enrolled in ICDS-CAS system and born in last month',
                AliasColumn('born_in_month'),
                slug='born_in_month'))

        agg_columns.insert(
            43,
            DatabaseColumn('No. of children exclusively breastfed',
                           AliasColumn('ebf_in_month'),
                           slug='ebf_in_month'))
        agg_columns.insert(
            44,
            DatabaseColumn(
                'Total number of children (0-6 months) of age enrolled in ICDS-CAS system',
                AliasColumn('ebf_eligible'),
                slug='ebf_eligible'))

        agg_columns.insert(
            46,
            DatabaseColumn(
                'No. of children initiated complementary feeding (in the past 30 days)',
                AliasColumn('cf_initiation_in_month'),
                slug='cf_initiation_in_month'))
        agg_columns.insert(
            47,
            DatabaseColumn(
                'Total no. of children (6-8 ) months of age enrolled with ICDS-CAS',
                AliasColumn('cf_initiation_eligible'),
                slug='cf_initiation_eligible'))

        agg_columns.insert(
            49,
            DatabaseColumn(
                'No. of children initiated appropriate complementary feeding',
                AliasColumn('cf_in_month'),
                slug='cf_in_month'))
        agg_columns.insert(
            50,
            DatabaseColumn(
                'No.of children (6-24) months of age enrolled with ICDS-CAS',
                AliasColumn('cf_eligible'),
                slug='cf_eligible'))

        agg_columns.insert(
            52,
            DatabaseColumn(
                'No.of children receiving complementary feeding with adequate diet diversity',
                AliasColumn('cf_diet_diversity'),
                slug='cf_diet_diversity'))
        agg_columns.insert(
            53,
            DatabaseColumn(
                'Total number of children (6 months - 2 yrs) of age enrolled with ICDS-CAS',
                AliasColumn('cf_eligible'),
                slug='cf_eligible'))

        agg_columns.insert(
            55,
            DatabaseColumn(
                'No. of children initiated complementary feeding with adequate diet quantity',
                AliasColumn('cf_diet_quantity'),
                slug='cf_diet_quantity'))
        agg_columns.insert(
            56,
            DatabaseColumn(
                'No.of children (6-24) months of age enrolled with ICDS-CAS',
                AliasColumn('cf_eligible'),
                slug='cf_eligible'))

        agg_columns.insert(
            58,
            DatabaseColumn(
                'Total Number of children receiving complementary feeding '
                'with appropriate handwashing before feeding',
                AliasColumn('cf_handwashing'),
                slug='cf_handwashing'))
        agg_columns.insert(
            59,
            DatabaseColumn(
                'No.of children (6-24) months of age enrolled with ICDS-CAS',
                AliasColumn('cf_eligible'),
                slug='cf_eligible'))
        return columns + agg_columns
Exemplo n.º 23
0
    def columns(self):
        def percent(num, x, y, z, w):
            denom = (x or 0) + (y or 0) + (z or 0) + (w or 0)
            if not denom:
                return {'sort_key': 'NA', 'html': 0}
            div = (num or 0) / float(denom)
            return {'sort_key': div, 'html': '%.2f%%' % (div * 100)}

        return [
            DatabaseColumn('site_id', SimpleColumn('site_id')),
            DatabaseColumn('cas_vus_5', SumColumn('cas_vus_5')),
            DatabaseColumn('cas_suspects_5', SumColumn('cas_suspects_5')),
            DatabaseColumn('cas_confirmes_5', SumColumn('cas_confirmes_5')),
            DatabaseColumn('cas_vus_5_10', SumColumn('cas_vus_5_10')),
            DatabaseColumn('cas_suspects_5_10',
                           SumColumn('cas_suspects_5_10')),
            DatabaseColumn('cas_confirmes_5_10',
                           SumColumn('cas_confirmes_5_10')),
            DatabaseColumn('cas_vus_10', SumColumn('cas_vus_10')),
            DatabaseColumn('cas_suspects_10', SumColumn('cas_suspects_10')),
            DatabaseColumn('cas_confirmes_10', SumColumn('cas_confirmes_10')),
            DatabaseColumn('cas_vus_fe', SumColumn('cas_vus_fe')),
            DatabaseColumn('cas_suspects_fe', SumColumn('cas_suspects_fe')),
            DatabaseColumn('cas_confirmes_fe', SumColumn('cas_confirmes_fe')),
            AggregateColumn('total_cas',
                            lambda x, y, z, w: (x or 0) + (y or 0) + (z or 0) +
                            (w or 0), [
                                AliasColumn('cas_confirmes_5'),
                                AliasColumn('cas_confirmes_5_10'),
                                AliasColumn('cas_confirmes_10'),
                                AliasColumn('cas_confirmes_fe'),
                            ],
                            slug='total_cas'),
            AggregateColumn('per_cas_5',
                            percent, [
                                AliasColumn('cas_confirmes_5'),
                                AliasColumn('cas_confirmes_5'),
                                AliasColumn('cas_confirmes_5_10'),
                                AliasColumn('cas_confirmes_10'),
                                AliasColumn('cas_confirmes_fe')
                            ],
                            format_fn=lambda x: x),
            AggregateColumn('per_cas_5_10',
                            percent, [
                                AliasColumn('cas_confirmes_5_10'),
                                AliasColumn('cas_confirmes_5'),
                                AliasColumn('cas_confirmes_5_10'),
                                AliasColumn('cas_confirmes_10'),
                                AliasColumn('cas_confirmes_fe')
                            ],
                            format_fn=lambda x: x),
            AggregateColumn('per_cas_10',
                            percent, [
                                AliasColumn('cas_confirmes_10'),
                                AliasColumn('cas_confirmes_5'),
                                AliasColumn('cas_confirmes_5_10'),
                                AliasColumn('cas_confirmes_10'),
                                AliasColumn('cas_confirmes_fe')
                            ],
                            format_fn=lambda x: x),
            AggregateColumn('per_cas_fa',
                            percent, [
                                AliasColumn('cas_confirmes_fe'),
                                AliasColumn('cas_confirmes_5'),
                                AliasColumn('cas_confirmes_5_10'),
                                AliasColumn('cas_confirmes_10'),
                                AliasColumn('cas_confirmes_fe')
                            ],
                            format_fn=lambda x: x)
        ]
Exemplo n.º 24
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
         ),
     ]
Exemplo n.º 25
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
Exemplo n.º 26
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
Exemplo n.º 27
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),
     ]
Exemplo n.º 28
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')]))
     ]
Exemplo n.º 29
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
Exemplo n.º 30
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')])),
     ]