示例#1
0
 def columns(self):
     columns = super(DeliveryPlaceDetailsExtended, self).columns
     additional_columns = [
         DatabaseColumn(
             "Home deliveries",
             CountUniqueColumn('doc_id',
                               alias="home_deliveries",
                               filters=self.filters + [
                                   OR([
                                       EQ('place_of_birth', 'home'),
                                       EQ('place_of_birth', 'on_route')
                                   ])
                               ])),
         DatabaseColumn(
             "Other places",
             CountUniqueColumn('doc_id',
                               alias="other_places",
                               filters=self.filters + [
                                   OR([
                                       EQ('place_of_birth', 'empty'),
                                       EQ('place_of_birth', 'other')
                                   ])
                               ]))
     ]
     columns.extend(additional_columns)
     return columns
示例#2
0
 def columns(self):
     columns = [
         DatabaseColumn("Total child registered ever", CountUniqueColumn('doc_id', alias="total"))
     ]
     if 'startdate' not in self.config and 'enddate' not in self.config or 'startdate' not in self.config \
             and 'enddate' in self.config:
         columns.extend([
             DatabaseColumn(
                 "Total open children cases", CountUniqueColumn(
                     'doc_id', alias="no_date_opened",
                     filters=self.filters + [EQ('closed_on', 'empty')]
                 )
             ),
             DatabaseColumn(
                 "Total closed children cases", CountUniqueColumn(
                     'doc_id', alias="no_date_closed",
                     filters=self.filters + [NOTEQ('closed_on', 'empty')]
                 )
             ),
             DatabaseColumn(
                 "New registrations during last 30 days", CountUniqueColumn(
                     'doc_id', alias="no_date_new_registrations",
                     filters=self.filters + [AND([GTE('opened_on', "last_month"), LTE('opened_on', "today")])]
                 )
             )
         ])
     else:
         columns.extend([
             DatabaseColumn(
                 "Children cases open at end period", CountUniqueColumn(
                     'doc_id', alias="opened",
                     filters=self.filters + [AND([LTE('opened_on', "stred"), OR([EQ('closed_on', 'empty'),
                                                                                 GT('closed_on', "stred")])])]
                 )
             ),
             DatabaseColumn(
                 "Children cases closed during period", CountUniqueColumn(
                     'doc_id', alias="closed",
                     filters=self.filters + [AND([GTE('closed_on', "strsd"), LTE('closed_on', "stred")])]
                 )
             ),
             DatabaseColumn(
                 "Total children followed during period", CountUniqueColumn(
                     'doc_id', alias="followed",
                     filters=self.filters + [AND([LTE('opened_on', "stred"), OR([EQ('closed_on', 'empty'),
                                                                                 GTE('closed_on', "strsd")])])]
                 )
             ),
             DatabaseColumn(
                 "New registrations during period", CountUniqueColumn(
                     'doc_id', alias="new_registrations",
                     filters=self.filters + [AND([LTE('opened_on', "stred"), GTE('opened_on', "strsd")])]
                 )
             )
         ])
     return columns
示例#3
0
    def columns(self):
        self.config['mother_ids'] = tuple(DeliveryMothersIds(config=self.config).data.keys()) + ('',)
        columns = [
            DatabaseColumn("Total children with with birthweight known",
                           CountUniqueColumn('doc_id', alias="total_birthweight_known",
                                             filters=self.filters + [NOTEQ('weight_birth', 'empty')])),
            DatabaseColumn("Total births",
                           CountUniqueColumn('doc_id',
                                             filters=[AND([IN('mother_id', get_INFilter_bindparams('mother_ids', self.config['mother_ids'])),
                                                           OR([EQ('gender', 'female'), EQ('gender', 'male')])])],
                                             alias='total_births'))]

        columns.extend([
            DatabaseColumn("Birthweight < 2.5 kg",
                CountUniqueColumn('doc_id',
                    alias="total_birthweight_lt_25",
                    filters=self.filters + [AND([LT('weight_birth', 'weight_birth_25'), NOTEQ('weight_birth', 'empty')])]
                )
            ),
            DatabaseColumn("Birthweight >= 2.5 kg",
                CountUniqueColumn('doc_id',
                    alias="total_birthweight_gte_25",
                    filters=self.filters + [AND([GTE('weight_birth', 'weight_birth_25'), NOTEQ('weight_birth', 'empty')])]
                )
            )
        ])
        return columns
示例#4
0
 def filters(self):
     filters = [EQ('xmlns', 'xmlns')]
     if 'age' in self.config and self.config['age']:
         if len(self.config['age']) == 1:
             filters.append(BETWEEN('age', 'age_start_0', 'age_end_0'))
         else:
             between_filters = []
             for idx, age in enumerate(self.config['age']):
                 between_filters.append(BETWEEN('age', 'age_start_{}'.format(idx), 'age_end_{}'.format(idx)))
             filters.append(OR(between_filters))
     if 'district' in self.config and self.config['district']:
         filters.append(IN('district', get_INFilter_bindparams('district', self.config['district'])))
     if (
         'visit_date_start' in self.config and self.config['visit_date_start'] and
         'visit_date_end' in self.config and self.config['visit_date_end']
     ):
         filters.append(BETWEEN('visit_date', 'visit_date_start', 'visit_date_end'))
     if 'type_visit' in self.config and self.config['type_visit']:
         filters.append(EQ('type_visit', 'type_visit'))
     if 'activity_type' in self.config and self.config['activity_type']:
         filters.append(EQ('activity_type', 'activity_type'))
     if 'client_type' in self.config and self.config['client_type']:
         filters.append(IN('client_type', get_INFilter_bindparams('client_type', self.config['client_type'])))
     if 'user_id' in self.config and self.config['user_id']:
         filters.append(IN('user_id', get_INFilter_bindparams('user_id', self.config['user_id'])))
     if 'organization' in self.config and self.config['organization']:
         filters.append(EQ('organization', 'organization'))
     if 'want_hiv_test' in self.config and self.config['want_hiv_test']:
         filters.append(EQ('want_hiv_test', 'want_hiv_test'))
     return filters
示例#5
0
    def filters(self):
        filters = None
        if 'enddate' not in self.config:
            self.config['enddate'] = self.config['today']
            self.config['stred'] = self.config['today']

        if 'startdate' in self.config:
            filters = [
                AND([
                    LTE("date", "enddate"),
                    OR([
                        GTE('closed_on', "startdate"),
                        EQ('closed_on', 'empty')
                    ])
                ])
            ]
        else:
            self.config['strsd'] = '0001-01-01'
            filters = [LTE("date", "enddate")]

        for k, v in six.iteritems(LOCATION_HIERARCHY):
            if v['prop'] in self.config and self.config[v['prop']]:
                filters.append(
                    IN(k, get_INFilter_bindparams(k, self.config[v['prop']])))
        return filters
示例#6
0
 def columns(self):
     return [
         DatabaseColumn(
             "Total Deliveries (with/without outcome)",
             CountUniqueColumn('doc_id',
                               alias="total_delivery",
                               filters=self.filters),
         ),
         DatabaseColumn(
             "Normal deliveries",
             CountUniqueColumn(
                 'doc_id',
                 alias="normal_deliveries",
                 filters=self.filters +
                 [EQ('type_of_delivery', 'normal_delivery')])),
         DatabaseColumn(
             "Caesarean deliveries",
             CountUniqueColumn(
                 'doc_id',
                 alias="caesarean_deliveries",
                 filters=self.filters +
                 [EQ('type_of_delivery', 'cesarean_delivery')])),
         DatabaseColumn(
             "Delivery type unknown",
             CountUniqueColumn(
                 'doc_id',
                 alias="unknown",
                 filters=self.filters + [
                     OR([
                         EQ('type_of_delivery', 'empty'),
                         EQ('type_of_delivery', 'unknown_delivery')
                     ])
                 ]))
     ]
示例#7
0
 def columns(self):
     self.config['mother_ids'] = tuple(
         DeliveryMothersIds(config=self.config).data.keys()) + ('', )
     return [
         DatabaseColumn(
             "Total births",
             CountUniqueColumn(
                 'doc_id',
                 filters=[
                     AND([
                         IN(
                             'mother_id',
                             get_INFilter_bindparams(
                                 'mother_ids', self.config['mother_ids'])),
                         OR([EQ('gender', 'female'),
                             EQ('gender', 'male')])
                     ])
                 ],
                 alias='total_births')),
         DatabaseColumn(
             "Newborn deaths (< 1 m)",
             CountUniqueColumn(
                 'doc_id',
                 filters=self.filters + [
                     AND([
                         EQ('reason_for_child_closure', 'death'),
                         EQ('type_of_child_death', 'newborn_death')
                     ])
                 ],
                 alias='newborn_death')),
         DatabaseColumn(
             "Infant deaths (< 1 y)",
             CountUniqueColumn(
                 'doc_id',
                 filters=self.filters + [
                     AND([
                         EQ('reason_for_child_closure', 'death'),
                         EQ('type_of_child_death', 'infant_death')
                     ])
                 ],
                 alias='infant_death')),
         DatabaseColumn(
             "Child deaths (2-5y)",
             CountUniqueColumn(
                 'doc_id',
                 filters=self.filters + [
                     AND([
                         EQ('reason_for_child_closure', 'death'),
                         EQ('type_of_child_death', 'child_death')
                     ])
                 ],
                 alias='child_death')),
         DatabaseColumn(
             "Total deaths",
             CountUniqueColumn('doc_id',
                               filters=self.filters +
                               [EQ('reason_for_child_closure', 'death')],
                               alias='total_deaths'))
     ]
示例#8
0
 def _get_age_range_filter(self):
     filters = [
         AND([
             GTE(age_range.column, age_range.lower_param),
             LT(age_range.column, age_range.upper_param)
         ]) for age_range in self._age_ranges
     ]
     return filters[0] if len(filters) == 1 else OR(filters)
示例#9
0
 def columns(self):
     columns = self.get_columns_by_loc_level
     agg_columns = [
         DatabaseColumn(
             'num_children_0_6mo_enrolled_for_services',
             SumColumn('valid_in_month',
                       filters=self.filters + [
                           OR([
                               RawFilter("age_tranche = '0'"),
                               RawFilter("age_tranche = '6'")
                           ])
                       ],
                       alias='num_children_0_6mo_enrolled_for_services'),
             slug='num_children_0_6mo_enrolled_for_services'),
         DatabaseColumn(
             'num_children_6mo3yr_enrolled_for_services',
             SumColumn('valid_in_month',
                       filters=self.filters + [
                           OR([
                               RawFilter("age_tranche = '12'"),
                               RawFilter("age_tranche = '24'"),
                               RawFilter("age_tranche = '36'")
                           ])
                       ],
                       alias='num_children_6mo3yr_enrolled_for_services'),
             slug='num_children_6mo3yr_enrolled_for_services'),
         DatabaseColumn(
             'num_children_3yr6yr_enrolled_for_services',
             SumColumn('valid_in_month',
                       filters=self.filters + [
                           OR([
                               RawFilter("age_tranche = '48'"),
                               RawFilter("age_tranche = '60'"),
                               RawFilter("age_tranche = '72'")
                           ])
                       ],
                       alias='num_children_3yr6yr_enrolled_for_services'),
             slug='num_children_3yr6yr_enrolled_for_services'),
     ]
     return columns + agg_columns
    def test_filter(self):
        slug = "hierarchy_filter_slug"
        filter_spec = {
            "type": "enikshay_location_hierarchy",
            "display": "location hierarchy",
            "datatype": "string",
            "slug": slug,
            "field": "does_not_matter",
        }
        data_source_config = DataSourceConfiguration(
            domain=self.domain,
            referenced_doc_type="",
            table_id="123",
        )

        with patch(
                "corehq.apps.userreports.reports.data_source.get_datasource_config",
                MagicMock(return_value=(data_source_config, None))
        ):
            report_config = ReportConfiguration(
                config_id="123",
                filters=[filter_spec]
            )
            report = ReportFactory().from_spec(report_config)
            filter_values = get_filter_values(
                report_config.ui_filters,
                {slug: self.cto.location_id},
                user=MagicMock(),
            )
            report.set_filter_values(filter_values)

        expected_filter_vals = {
            '{}_sto'.format(slug): self.sto.location_id,
            '{}_cto'.format(slug): self.cto.location_id,
            '{}_below_cto'.format(slug): self.cto.location_id,
        }
        expected_filter = OR([
            EQ("sto", "{}_sto".format(slug)),
            EQ("cto", "{}_cto".format(slug)),
            EQ("below_cto", "{}_below_cto".format(slug))
        ])

        self.assertEqual(len(report.data_source.filters), 1)
        self.assertFiltersEqual(
            report.data_source.filters[0],
            expected_filter
        )
        self.assertEqual(
            report.data_source.filter_values,
            expected_filter_vals
        )
示例#11
0
 def filters(self):
     filters = []
     if self.config['task_responsible']:
         filters.append(EQ('task_responsible', 'task_responsible'))
     if self.config['referenced_id']:
         filters.append(EQ('referenced_id', 'referenced_id'))
     if self.config['closed']:
         filters.append(EQ('closed', 'closed'))
     or_filter = []
     if self.config['owner_ids']:
         or_filter.append(IN('owner_id', 'owner_ids'))
     if or_filter:
         or_filter.append(EQ('user_id', 'user_id'))
         filters.append(OR(filters=or_filter))
     return filters
示例#12
0
 def columns(self):
     return [
         DatabaseColumn(
             "Total Deliveries (with/without outcome)",
             CountUniqueColumn('doc_id',
                               alias="total_delivery",
                               filters=self.filters),
         ),
         DatabaseColumn(
             "Institutional deliveries",
             CountUniqueColumn(
                 'doc_id',
                 alias="institutional_deliveries",
                 filters=self.filters + [
                     OR([
                         EQ('place_of_birth', 'health_center'),
                         EQ('place_of_birth', "hospital")
                     ])
                 ]))
     ]
示例#13
0
 def columns(self):
     return [
         DatabaseColumn("Total child ill",
                        CountUniqueColumn(
                            'doc_id', alias="total_child_ill",
                            filters=self.filters + [OR([EQ('pneumonia_since_last_visit', 'yes'),
                                                        EQ('has_diarrhea_since_last_visit', 'yes')])])),
         DatabaseColumn("ARI (Pneumonia)",
                        CountUniqueColumn('doc_id', alias="ari_cases",
                                          filters=self.filters + [EQ('pneumonia_since_last_visit', 'yes')])),
         DatabaseColumn("Diarrhea",
                        CountUniqueColumn('doc_id', alias="diarrhea_cases",
                                          filters=self.filters + [EQ('has_diarrhea_since_last_visit', 'yes')])),
         DatabaseColumn("ORS given during diarrhea",
                        CountUniqueColumn('doc_id', alias="ors",
                                          filters=self.filters + [EQ('dairrhea_treated_with_ors', 'yes')])),
         DatabaseColumn("Zinc given during diarrhea",
                        CountUniqueColumn('doc_id', alias="zinc",
                                          filters=self.filters + [EQ('dairrhea_treated_with_zinc', 'yes')]))
     ]
示例#14
0
 def columns(self):
     return [
         DatabaseColumn("Total pregnant",
                        CountUniqueColumn('doc_id',
                                          alias="total_pregnant")),
         DatabaseColumn(
             "No ANC",
             CountUniqueColumn('doc_id',
                               alias="no_anc",
                               filters=self.filters +
                               [NOTEQ('anc_1', 'yes')])),
         DatabaseColumn(
             "ANC1",
             CountUniqueColumn('doc_id',
                               alias="anc_1",
                               filters=self.filters +
                               [EQ('anc_1', 'yes')])),
         DatabaseColumn(
             "ANC2",
             CountUniqueColumn('doc_id',
                               alias="anc_2",
                               filters=self.filters +
                               [EQ('anc_2', 'yes')])),
         DatabaseColumn(
             "ANC3",
             CountUniqueColumn('doc_id',
                               alias="anc_3",
                               filters=self.filters +
                               [EQ('anc_3', 'yes')])),
         DatabaseColumn(
             "ANC4",
             CountUniqueColumn('doc_id',
                               alias="anc_4",
                               filters=self.filters +
                               [EQ('anc_4', 'yes')])),
         DatabaseColumn(
             "TT1",
             CountUniqueColumn('doc_id',
                               alias="tt_1",
                               filters=self.filters + [EQ('tt_1', 'yes')])),
         DatabaseColumn(
             "TT2",
             CountUniqueColumn('doc_id',
                               alias="tt_2",
                               filters=self.filters + [EQ('tt_2', 'yes')])),
         DatabaseColumn(
             "TT Booster",
             CountUniqueColumn('doc_id',
                               alias="tt_booster",
                               filters=self.filters +
                               [EQ('tt_booster', 'yes')])),
         DatabaseColumn(
             "TT Complete",
             CountUniqueColumn(
                 'doc_id',
                 alias="tt_completed",
                 filters=self.filters +
                 [OR([EQ('tt_2', 'yes'),
                      EQ('tt_booster', 'yes')])])),
         DatabaseColumn(
             "IFA received",
             CountUniqueColumn('doc_id',
                               alias="ifa_tablets",
                               filters=self.filters +
                               [EQ('iron_folic', 'yes')])),
         DatabaseColumn(
             "100 IFA consumed",
             CountUniqueColumn('doc_id',
                               alias="100_tablets",
                               filters=self.filters[1:-1] + [
                                   AND([
                                       EQ('completed_100_ifa', 'yes'),
                                       GTE('delivery_date', 'strsd'),
                                       LTE('delivery_date', 'stred')
                                   ])
                               ])),
         DatabaseColumn(
             "Clinically anemic mothers",
             CountUniqueColumn('doc_id',
                               alias="clinically_anemic",
                               filters=self.filters +
                               [EQ('anemia_signs', 'yes')])),
         DatabaseColumn(
             "Number of pregnant mother referrals due to danger signs",
             CountUniqueColumn('doc_id',
                               alias="danger_signs",
                               filters=self.filters +
                               [EQ('currently_referred', 'yes')])),
         DatabaseColumn(
             "Knows closest health facility",
             CountUniqueColumn('doc_id',
                               alias="knows_closest_facility",
                               filters=self.filters +
                               [EQ('knows_closest_facility', 'yes')])),
         DatabaseColumn(
             "No ANC Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="no_anc_eligible",
                               filters=self.filters +
                               [LTE('edd', 'today_plus_196')])),
         DatabaseColumn(
             "ANC1 Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="anc_1_eligible",
                               filters=self.filters +
                               [LTE('edd', 'today_plus_196')])),
         DatabaseColumn(
             "ANC2 Total Eligible",
             CountUniqueColumn(
                 'doc_id',
                 alias="anc_2_eligible",
                 filters=self.filters +
                 [AND([EQ('anc_1', 'yes'),
                       LTE('edd', 'today_plus_112')])])),
         DatabaseColumn(
             "ANC3 Total Eligible",
             CountUniqueColumn(
                 'doc_id',
                 alias="anc_3_eligible",
                 filters=self.filters +
                 [AND([EQ('anc_2', 'yes'),
                       LTE('edd', 'today_plus_56')])])),
         DatabaseColumn(
             "ANC4 Total Eligible",
             CountUniqueColumn(
                 'doc_id',
                 alias="anc_4_eligible",
                 filters=self.filters +
                 [AND([EQ('anc_3', 'yes'),
                       LTE('edd', 'today_plus_35')])])),
         DatabaseColumn(
             "TT1 Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="tt_1_eligible",
                               filters=self.filters +
                               [NOTEQ('previous_tetanus', 'yes')])),
         DatabaseColumn(
             "TT2 Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="tt_2_eligible",
                               filters=self.filters + [EQ('tt_1', 'yes')])),
         DatabaseColumn(
             "TT Booster Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="tt_booster_eligible",
                               filters=self.filters +
                               [EQ('previous_tetanus', 'yes')])),
         DatabaseColumn(
             "TT Completed (TT2 or Booster) Total Eligible",
             CountUniqueColumn(
                 'doc_id',
                 alias="tt_completed_eligible",
                 filters=self.filters +
                 [OR([EQ('tt_1', 'yes'),
                      EQ('previous_tetanus', 'yes')])])),
         DatabaseColumn(
             "Taking IFA tablets Total Eligible",
             CountUniqueColumn('doc_id', alias="ifa_tablets_eligible")),
         DatabaseColumn(
             "Completed 100 IFA tablets Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="100_tablets_eligible",
                               filters=self.filters[1:-1] + [
                                   AND([
                                       GTE('delivery_date', 'strsd'),
                                       LTE('delivery_date', 'stred')
                                   ])
                               ])),
         DatabaseColumn(
             "Clinically anemic mothers Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="clinically_anemic_eligible")),
         DatabaseColumn(
             "Number of mother referrals due to danger signs Total Eligible",
             CountUniqueColumn('doc_id', alias="danger_signs_eligible")),
         DatabaseColumn(
             "Know closest health facility Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="knows_closest_facility_eligible"))
     ]
示例#15
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')])),
     ]
 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')
     ]
示例#17
0
 def columns(self):
     return [
         DatabaseColumn(
             "Total pregnant",
             CountUniqueColumn('doc_id', alias="total_pregnant"),
         ),
         DatabaseColumn(
             "ANC3",
             CountUniqueColumn('doc_id',
                               alias="anc_3",
                               filters=self.filters + [EQ('anc_3', 'yes')]),
         ),
         DatabaseColumn(
             "TT Completed (TT2 or Booster)",
             CountUniqueColumn(
                 'doc_id',
                 alias="tt_completed",
                 filters=self.filters +
                 [OR([EQ('tt_2', 'yes'),
                      EQ('tt_booster', 'yes')])]),
         ),
         DatabaseColumn(
             "Taking IFA tablets",
             CountUniqueColumn('doc_id',
                               alias="ifa_tablets",
                               filters=self.filters +
                               [EQ('iron_folic', 'yes')]),
         ),
         DatabaseColumn(
             "Completed 100 IFA tablets",
             CountUniqueColumn('doc_id',
                               alias="100_tablets",
                               filters=self.filters +
                               [EQ('completed_100_ifa', 'yes')]),
         ),
         DatabaseColumn(
             "ANC3 Total Eligible",
             CountUniqueColumn(
                 'doc_id',
                 alias="anc_3_eligible",
                 filters=self.filters +
                 [AND([EQ('anc_2', 'yes'),
                       LTE('lmp', 'days_224')])]),
         ),
         DatabaseColumn(
             "TT Completed (TT2 or Booster) Total Eligible",
             CountUniqueColumn(
                 'doc_id',
                 alias="tt_completed_eligible",
                 filters=self.filters +
                 [OR([EQ('tt_1', 'yes'),
                      EQ('previous_tetanus', 'yes')])]),
         ),
         DatabaseColumn(
             "Taking IFA tablets Total Eligible",
             CountUniqueColumn('doc_id', alias="ifa_tablets_eligible"),
         ),
         DatabaseColumn(
             "Completed 100 IFA tablets Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="100_tablets_eligible",
                               filters=self.filters +
                               [LTE('lmp', 'days_195')]),
         )
     ]
示例#18
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
         ),
     ]
示例#19
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')]))
     ]
示例#20
0
 def columns(self):
     return [
         DatabaseColumn("Total pregnant",
                        CountUniqueColumn('doc_id',
                                          alias="total_pregnant")),
         DatabaseColumn(
             "ANC3",
             CountUniqueColumn('doc_id',
                               alias="anc_3",
                               filters=self.filters +
                               [EQ('anc_3', 'yes')])),
         DatabaseColumn(
             "TT Completed (TT2 or Booster)",
             CountUniqueColumn(
                 'doc_id',
                 alias="tt_completed",
                 filters=self.filters +
                 [OR([EQ('tt_2', 'yes'),
                      EQ('tt_booster', 'yes')])])),
         DatabaseColumn(
             "Taking IFA tablets",
             CountUniqueColumn('doc_id',
                               alias="ifa_tablets",
                               filters=self.filters +
                               [EQ('iron_folic', 'yes')])),
         DatabaseColumn(
             "Completed 100 IFA tablets",
             CountUniqueColumn('doc_id',
                               alias="100_tablets",
                               filters=self.filters[1:-1] + [
                                   AND([
                                       EQ('completed_100_ifa', 'yes'),
                                       GTE('delivery_date', 'strsd'),
                                       LTE('delivery_date', 'stred')
                                   ])
                               ])),
         DatabaseColumn(
             "ANC3 Total Eligible",
             CountUniqueColumn(
                 'doc_id',
                 alias="anc_3_eligible",
                 filters=self.filters +
                 [AND([EQ('anc_2', 'yes'),
                       LTE('edd', 'today_plus_56')])])),
         DatabaseColumn(
             "TT Completed (TT2 or Booster) Total Eligible",
             CountUniqueColumn(
                 'doc_id',
                 alias="tt_completed_eligible",
                 filters=self.filters +
                 [OR([EQ('tt_1', 'yes'),
                      EQ('previous_tetanus', 'yes')])])),
         DatabaseColumn(
             "Taking IFA tablets Total Eligible",
             CountUniqueColumn('doc_id', alias="ifa_tablets_eligible")),
         DatabaseColumn(
             "Completed 100 IFA tablets Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="100_tablets_eligible",
                               filters=self.filters[1:-1] + [
                                   AND([
                                       GTE('delivery_date', 'strsd'),
                                       LTE('delivery_date', 'stred')
                                   ])
                               ])),
     ]
示例#21
0
 def columns(self):
     return [
         DatabaseColumn('awc_id', SimpleColumn('awc_id')),
         DatabaseColumn(
             'pre_sc_boys_36_72',
             CountUniqueColumn('doc_id',
                               alias='pre_sc_boys_36_72',
                               filters=self.filters + [
                                   GTE('pse_days_attended', 'twentyone'),
                                   EQ('caste', 'sc'),
                                   EQ('sex', 'male'),
                                   OR([
                                       EQ('age_tranche', 'age_48'),
                                       EQ('age_tranche', 'age_60'),
                                       EQ('age_tranche', 'age_72'),
                                   ]),
                               ])),
         DatabaseColumn(
             'pre_sc_girls_36_72',
             CountUniqueColumn('doc_id',
                               alias='pre_sc_girls_36_72',
                               filters=self.filters + [
                                   GTE('pse_days_attended', 'twentyone'),
                                   EQ('caste', 'sc'),
                                   EQ('sex', 'female'),
                                   OR([
                                       EQ('age_tranche', 'age_48'),
                                       EQ('age_tranche', 'age_60'),
                                       EQ('age_tranche', 'age_72'),
                                   ]),
                               ])),
         DatabaseColumn(
             'pre_st_boys_36_72',
             CountUniqueColumn('doc_id',
                               alias='pre_st_boys_36_72',
                               filters=self.filters + [
                                   GTE('pse_days_attended', 'twentyone'),
                                   EQ('caste', 'st'),
                                   EQ('sex', 'male'),
                                   OR([
                                       EQ('age_tranche', 'age_48'),
                                       EQ('age_tranche', 'age_60'),
                                       EQ('age_tranche', 'age_72'),
                                   ]),
                               ])),
         DatabaseColumn(
             'pre_st_girls_36_72',
             CountUniqueColumn('doc_id',
                               alias='pre_st_girls_36_72',
                               filters=self.filters + [
                                   GTE('pse_days_attended', 'twentyone'),
                                   EQ('caste', 'st'),
                                   EQ('sex', 'female'),
                                   OR([
                                       EQ('age_tranche', 'age_48'),
                                       EQ('age_tranche', 'age_60'),
                                       EQ('age_tranche', 'age_72'),
                                   ]),
                               ])),
         DatabaseColumn(
             'pre_obc_boys_36_72',
             CountUniqueColumn('doc_id',
                               alias='pre_obc_boys_36_72',
                               filters=self.filters + [
                                   GTE('pse_days_attended', 'twentyone'),
                                   EQ('caste', 'obc'),
                                   EQ('sex', 'male'),
                                   OR([
                                       EQ('age_tranche', 'age_48'),
                                       EQ('age_tranche', 'age_60'),
                                       EQ('age_tranche', 'age_72'),
                                   ]),
                               ])),
         DatabaseColumn(
             'pre_obc_girls_36_72',
             CountUniqueColumn('doc_id',
                               alias='pre_obc_girls_36_72',
                               filters=self.filters + [
                                   GTE('pse_days_attended', 'twentyone'),
                                   EQ('caste', 'obc'),
                                   EQ('sex', 'female'),
                                   OR([
                                       EQ('age_tranche', 'age_48'),
                                       EQ('age_tranche', 'age_60'),
                                       EQ('age_tranche', 'age_72'),
                                   ]),
                               ])),
         DatabaseColumn(
             'pre_general_boys_36_72',
             CountUniqueColumn('doc_id',
                               alias='pre_general_boys_36_72',
                               filters=self.filters + [
                                   GTE('pse_days_attended', 'twentyone'),
                                   EQ('caste', 'other'),
                                   EQ('sex', 'male'),
                                   OR([
                                       EQ('age_tranche', 'age_48'),
                                       EQ('age_tranche', 'age_60'),
                                       EQ('age_tranche', 'age_72'),
                                   ]),
                               ])),
         DatabaseColumn(
             'pre_general_girls_36_72',
             CountUniqueColumn('doc_id',
                               alias='pre_general_girls_36_72',
                               filters=self.filters + [
                                   GTE('pse_days_attended', 'twentyone'),
                                   EQ('caste', 'other'),
                                   EQ('sex', 'female'),
                                   OR([
                                       EQ('age_tranche', 'age_48'),
                                       EQ('age_tranche', 'age_60'),
                                       EQ('age_tranche', 'age_72'),
                                   ]),
                               ])),
         DatabaseColumn(
             'pre_total_boys_36_72',
             CountUniqueColumn('doc_id',
                               alias='pre_total_boys_36_72',
                               filters=self.filters + [
                                   GTE('pse_days_attended', 'twentyone'),
                                   EQ('sex', 'male'),
                                   OR([
                                       EQ('age_tranche', 'age_48'),
                                       EQ('age_tranche', 'age_60'),
                                       EQ('age_tranche', 'age_72'),
                                   ]),
                               ])),
         DatabaseColumn(
             'pre_total_girls_36_72',
             CountUniqueColumn('doc_id',
                               alias='pre_total_girls_36_72',
                               filters=self.filters + [
                                   GTE('pse_days_attended', 'twentyone'),
                                   EQ('sex', 'female'),
                                   OR([
                                       EQ('age_tranche', 'age_48'),
                                       EQ('age_tranche', 'age_60'),
                                       EQ('age_tranche', 'age_72'),
                                   ]),
                               ])),
         DatabaseColumn(
             'pre_minority_boys_36_72',
             CountUniqueColumn('doc_id',
                               alias='pre_minority_boys_36_72',
                               filters=self.filters + [
                                   GTE('pse_days_attended', 'twentyone'),
                                   EQ('sex', 'male'),
                                   OR([
                                       EQ('age_tranche', 'age_48'),
                                       EQ('age_tranche', 'age_60'),
                                       EQ('age_tranche', 'age_72'),
                                   ]),
                                   EQ('minority', 'yes'),
                               ])),
         DatabaseColumn(
             'pre_minority_girls_36_72',
             CountUniqueColumn('doc_id',
                               alias='pre_minority_girls_36_72',
                               filters=self.filters + [
                                   GTE('pse_days_attended', 'twentyone'),
                                   EQ('sex', 'female'),
                                   OR([
                                       EQ('age_tranche', 'age_48'),
                                       EQ('age_tranche', 'age_60'),
                                       EQ('age_tranche', 'age_72'),
                                   ]),
                                   EQ('minority', 'yes'),
                               ]))
     ]