Example #1
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
Example #2
0
 def columns(self):
     columns = [
         DatabaseColumn(
             "Total children with with birthweight known",
             CountUniqueColumn('doc_id',
                               alias="total_birthweight_known",
                               filters=self.filters +
                               [NOTEQ('weight_birth', 'empty')])),
     ]
     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
Example #3
0
    def columns(self):
        return [
            DatabaseColumn("Early initiation of breastfeeding",
                           CountUniqueColumn('doc_id', alias="colostrum_feeding",
                                             filters=self.filters + [EQ('breastfeed_1_hour', 'yes')])),
            DatabaseColumn("Early initiation of breastfeeding Total Eligible",
                           CountUniqueColumn('doc_id', alias="colostrum_feeding_total_eligible",
                                             filters=self.filters + [NOTEQ('breastfeed_1_hour', 'empty')])),
            DatabaseColumn("Exclusive breastfeeding",
                           CountUniqueColumn('doc_id', alias="exclusive_breastfeeding",
                                             filters=self.filters + [AND([EQ('exclusive_breastfeeding', "yes"),
                                                                          GTE('dob', "today_minus_183")])])),
            DatabaseColumn("Exclusive Breastfeeding (EBF) Total Eligible",
                           CountUniqueColumn('doc_id', alias="exclusive_breastfeeding_total_eligible",
                                             filters=self.filters + [GTE('dob', 'today_minus_183')])),
            DatabaseColumn("Supplementary feeding",
                           CountUniqueColumn('doc_id', alias="supplementary_feeding",
                                             filters=self.filters + [AND([EQ('supplementary_feeding_baby', 'yes'),
                                                                          GTE('dob', 'today_minus_182')])])),
            DatabaseColumn("Supplementary feeding Total Eligible",
                           CountUniqueColumn('doc_id', alias="supplementary_feeding_total_eligible",
                                             filters=self.filters + [GTE('dob', 'today_minus_182')])),

            DatabaseColumn("Complementary feeding",
                           CountUniqueColumn('doc_id', alias="complementary_feeding",
                                             filters=self.filters + [AND([EQ('comp_breastfeeding', 'yes'),
                                                                          LTE('dob', 'today_minus_183'),
                                                                          GTE('dob', 'today_minus_730')])])),
            DatabaseColumn("Complementary feeding Total Eligible",
                           CountUniqueColumn('doc_id', alias="complementary_feeding_total_eligible",
                                             filters=self.filters + [AND([LTE('dob', 'today_minus_183'),
                                                                          GTE('dob', 'today_minus_730')])]))
        ]
Example #4
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'))
     ]
Example #5
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
Example #6
0
 def __init__(self, table_name, filters, group_by, key):
     self.key = key
     super(IntraHealthQueryMeta, self).__init__(table_name, filters,
                                                group_by, [])
     assert len(filters) > 0
     self.filter = AND(
         self.filters) if len(self.filters) > 1 else self.filters[0]
Example #7
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
Example #8
0
 def columns(self):
     return [
         DatabaseColumn(
             "Trimester 1",
             CountUniqueColumn('doc_id',
                               alias="trimester_1",
                               filters=self.filters +
                               [GT('edd', "today_plus_196")])),
         DatabaseColumn(
             "Trimester 2",
             CountUniqueColumn('doc_id',
                               alias="trimester_2",
                               filters=self.filters + [
                                   AND([
                                       LTE('edd', "today_plus_196"),
                                       GT('edd', "today_plus_84")
                                   ])
                               ])),
         DatabaseColumn(
             "Trimester 3",
             CountUniqueColumn('doc_id',
                               alias="trimester_3",
                               filters=self.filters +
                               [LTE('edd', 'today_plus_84')]))
     ]
Example #9
0
 def filters(self):
     filters = [
         EQ("domain", "domain"),
         EQ("ppt_year", "ppt_year"),
         AND([
             NOTEQ("case_status", "duplicate"),
             NOTEQ("case_status", "test")
         ])
     ]
     for k, v in self.geography_config.items():
         if k in self.config and self.config[k]:
             filters.append(
                 IN(k, get_INFilter_bindparams(k, self.config[k])))
     if 'value_chain' in self.config and self.config['value_chain']:
         filters.append(EQ("value_chain", "value_chain"))
     if 'group_leadership' in self.config and self.config[
             'group_leadership']:
         filters.append(EQ('group_leadership', 'group_leadership'))
     if 'cbt_name' in self.config and self.config['cbt_name']:
         filters.append(
             IN(
                 'owner_id',
                 get_INFilter_bindparams('cbt_name',
                                         self.config['cbt_name'])))
     if 'real_or_test' in self.config and self.config['real_or_test']:
         filters.append(IEQ('real_or_test', 'real_or_test'))
     for column_name in ['domains', 'practices', 'schedule']:
         if column_name in self.config and self.config[
                 column_name] and self.config[column_name] != ('0', ):
             filters.append(
                 IN(
                     column_name,
                     get_INFilter_bindparams(column_name,
                                             self.config[column_name])))
     return filters
Example #10
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)
Example #11
0
 def filters(self):
     #We have to filter data by real_date_repeat not date(first position in filters list).
     #Filtering is done directly in columns method(CountUniqueColumn).
     filters = super(ConventureData, self).filters
     filters.append(AND([GTE('real_date_repeat', "strsd"), LTE('real_date_repeat', "stred")]))
     if 'archived_locations' in self.config:
         filters.append(_locations_filter(self.config['archived_locations']))
     return filters[1:]
Example #12
0
 def filters(self):
     filters = super(PPSAvecDonnees, self).filters
     filters.append(
         AND([
             GTE('real_date_repeat', "strsd"),
             LTE('real_date_repeat', "stred")
         ]))
     return filters[1:]
Example #13
0
 def filters(self):
     filters = super(NumberOfPNCVisits, self).filters[1:]
     filters.append(
         AND([
             NOTEQ('delivery_date', 'empty'),
             LTE('delivery_date', 'today_minus_42')
         ]))
     return filters
Example #14
0
 def filters(self):
     filter = []
     if 'start_date' in self.config:
         filter.extend([
             AND([
                 GTE('date_of_death', 'startdate'),
                 LTE('date_of_death', 'enddate')
             ])
         ])
     return filter
Example #15
0
def get_age_filters(beta):
    if beta:
        return [NOT(EQ('age_tranche', 'age_72'))]
    return [
        AND([
            NOT(EQ('age_tranche', 'age_0')),
            NOT(EQ('age_tranche', 'age_6')),
            NOT(EQ('age_tranche', 'age_72'))
        ])
    ]
Example #16
0
 def filters(self):
     filters = super(PPSAvecDonnees, self).filters
     filters.append(
         AND([
             GTE('real_date_repeat', "strsd"),
             LTE('real_date_repeat', "stred")
         ]))
     if 'archived_locations' in self.config:
         filters.append(NOT(IN('location_id', 'archived_locations')))
     return filters[1:]
Example #17
0
 def columns(self):
     return [
         DatabaseColumn("EBF stopped between 0-1 month",
             CountUniqueColumn('doc_id', alias="stopped_0_1",
                               filters=self.filters + [LTE('ebf_stop_age_month', '1')])
         ),
         DatabaseColumn("EBF stopped between 1-3 month",
             CountUniqueColumn('doc_id', alias="stopped_1_3",
                               filters=self.filters + [AND([GT('ebf_stop_age_month', '1'), LTE('ebf_stop_age_month', '3')])])
         ),
         DatabaseColumn("EBF stopped between 3-5 month",
             CountUniqueColumn('doc_id', alias="stopped_3_5",
                               filters=self.filters + [AND([GT('ebf_stop_age_month', '3'), LTE('ebf_stop_age_month', '5')])])
         ),
         DatabaseColumn("EBF stopped between 5-6 month",
             CountUniqueColumn('doc_id', alias="stopped_5_6",
                               filters=self.filters + [AND([GT('ebf_stop_age_month', '5'), LTE('ebf_stop_age_month', '6')])])
         )
     ]
Example #18
0
 def filters(self):
     filter = []
     if 'start_date' in self.config:
         filter.extend([
             AND([
                 GTE('date_of_death', 'startdate'),
                 LTE('date_of_death', 'enddate')
             ])
         ])
     filter.extend([EQ('reason_for_child_closure', 'death')])
     return filter
Example #19
0
 def columns(self):
     return [
         DatabaseColumn(
             "ARI (Pneumonia) cases",
             CountUniqueColumn('doc_id',
                               alias="ari_cases",
                               filters=self.filters +
                               [EQ('pneumonia_since_last_visit', 'yes')])),
         DatabaseColumn(
             "Diarrhea cases",
             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 + [
                     AND([
                         EQ('dairrhea_treated_with_ors', 'yes'),
                         EQ('has_diarrhea_since_last_visit', 'yes')
                     ])
                 ])),
         DatabaseColumn(
             "Zinc given during diarrhea",
             CountUniqueColumn(
                 'doc_id',
                 alias="zinc",
                 filters=self.filters + [
                     AND([
                         EQ('dairrhea_treated_with_zinc', 'yes'),
                         EQ('has_diarrhea_since_last_visit', 'yes')
                     ])
                 ]))
     ]
Example #20
0
 def columns(self):
     return [
         DatabaseColumn(
             "Trimester 1",
             CountUniqueColumn(
                 'doc_id',
                 alias="trimester_1",
                 filters=self.filters + [
                     AND([
                         LTE('lmp', "today"),
                         GT('lmp', "first_trimester_start_date"),
                         NOTEQ('lmp', 'empty')
                     ])
                 ])),
         DatabaseColumn(
             "Trimester 2",
             CountUniqueColumn(
                 'doc_id',
                 alias="trimester_2",
                 filters=self.filters + [
                     AND([
                         LTE('lmp', "second_trimester_start_date"),
                         GT('lmp', "second_trimester_end_date"),
                         NOTEQ('lmp', 'empty')
                     ])
                 ])),
         DatabaseColumn(
             "Trimester 3",
             CountUniqueColumn(
                 'doc_id',
                 alias="trimester_3",
                 filters=self.filters + [
                     AND([
                         LTE('lmp', 'third_trimester_start_date'),
                         NOTEQ('lmp', 'empty')
                     ])
                 ]))
     ]
Example #21
0
 def columns(self):
     registered_column = "registered_total_for_region"
     if 'district_id' in self.config:
         registered_column = 'registered_total_for_district'
     return [
         DatabaseColumn(
             "No de PPS (number of PPS registered in that region)",
             MaxColumn(registered_column, alias='registered')),
         DatabaseColumn("No de PPS planifie (number of PPS planned)",
                        MaxColumn('planned_total')),
         DatabaseColumn(
             "No de PPS avec livrasion cet mois (number of PPS visited this month)",
             CountUniqueColumn('location_id',
                               alias="visited",
                               filters=self.filters + [
                                   AND([
                                       GTE('real_date_repeat', "strsd"),
                                       LTE('real_date_repeat', "stred")
                                   ])
                               ])),
         AggregateColumn(
             "Taux de couverture (coverage ratio)", self.percent_fn,
             [AliasColumn('registered'),
              AliasColumn("visited")]),
         DatabaseColumn(
             "No de PPS avec donnees soumises (number of PPS which submitted data)",
             CountUniqueColumn('location_id',
                               alias="submitted",
                               filters=self.filters + [
                                   AND([
                                       GTE('real_date_repeat', "strsd"),
                                       LTE('real_date_repeat', "stred")
                                   ])
                               ])),
         AggregateColumn("Exhaustivite des donnees", self.percent_fn,
                         [AliasColumn('visited'),
                          AliasColumn('submitted')]),
     ]
Example #22
0
    def test_filters_multiple(self):
        def test(filters):
            filter_values = {
                "startdate": date(2013, 02, 20),
                "enddate": date(2013, 03, 05)
            }

            data = self._get_user_data(filter_values, filters)
            self.assertNotIn('user1', data)
            self.assertEqual(data['user2']['indicator_a'], 2)
            self.assertEqual(data['user2']['indicator_b'], 1)

        test([GTE('date', 'startdate'), LT('date', 'enddate')])
        test([AND([GTE('date', 'startdate'), LT('date', 'enddate')])])
Example #23
0
    def filters(self):
        filters = [
            AND([GTE('opened_on', 'start_date'),
                 LT('opened_on', 'end_date')]),
        ]

        locations_id = filter(lambda x: bool(x), self.config.locations_id)

        if locations_id:
            filters.append(
                IN('person_owner_id',
                   get_INFilter_bindparams('locations_id', locations_id)))

        return filters
Example #24
0
 def columns(self):
     return [
         DatabaseColumn(
             "PNC in 48 hours",
             CountUniqueColumn('doc_id', alias="pnc_1", filters=self.filters + [EQ('pp_1_done', 'yes')]),
         ),
         DatabaseColumn(
             "PNC in 2-4 days",
             CountUniqueColumn('doc_id', alias="pnc_2", filters=self.filters + [EQ('pp_2_done', 'yes')]),
         ),
         DatabaseColumn(
             "PNC in 5-7",
             CountUniqueColumn('doc_id', alias="pnc_3", filters=self.filters + [EQ('pp_3_done', 'yes')]),
         ),
         DatabaseColumn(
             "PNC in 21-42 days",
             CountUniqueColumn('doc_id', alias="pnc_4", filters=self.filters + [EQ('pp_4_done', 'yes')]),
         ),
         DatabaseColumn(
             "PNC 1 visits Total Eligible",
             CountUniqueColumn('doc_id', alias="pnc_1_eligible",
                               filters=self.filters + [AND([NOTEQ('delivery_date', 'empty'),
                                                            LTE('delivery_date', 'today')])]),
         ),
         DatabaseColumn("PNC 2 visits Total Eligible",
             CountUniqueColumn('doc_id', alias="pnc_2_eligible",
                               filters=self.filters + [AND([NOTEQ('delivery_date', 'empty'), LTE('delivery_date', 'today_minus_2')])]),
         ),
         DatabaseColumn("PNC 3 visits Total Eligible",
             CountUniqueColumn('doc_id', alias="pnc_3_eligible",
                               filters=self.filters + [AND([NOTEQ('delivery_date', 'empty'), LTE('delivery_date', 'today_minus_25')])]),
         ),
         DatabaseColumn("PNC 4 visits Total Eligible",
             CountUniqueColumn('doc_id', alias="pnc_4_eligible",
                               filters=self.filters + [AND([NOTEQ('delivery_date', 'empty'), LTE('delivery_date', 'today_minus_21')])]),
         )
     ]
Example #25
0
    def filters(self):
        filters = [
            AND([GTE(self.date_property, 'start_date'), LT(self.date_property, 'end_date')])
        ]

        locations_id = filter(lambda x: bool(x), self.config.locations_id)

        if locations_id:
            filters.append(
                IN(self.location_property, get_INFilter_bindparams('locations_id', locations_id))
            )

        is_migrated = self.config.is_migrated

        if is_migrated is not None:
            filters.append(EQ('case_created_by_migration', 'is_migrated'))

        return filters
Example #26
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"))
     ]
Example #27
0
    def columns(self):
        test_type_filter = [RawFilter("bacteriological_examination = 1")]

        filters_without_episode_type = self.filters[:-1]
        bacteriological_test_date_reported = [
            AND([
                GTE('bacteriological_test_date_reported', 'start_date'),
                LT('bacteriological_test_date_reported', 'end_date')
            ])
        ]
        filters_with_bacteriological_date = bacteriological_test_date_reported + self.filters[
            1:]

        return (
            generate_for_all_patient_types(
                'pulmonary_microbiologically', self.filters +
                diagnosis_filter('microbiological', 'pulmonary')) +
            generate_for_all_patient_types(
                'pulmonary_clinical',
                self.filters + diagnosis_filter('clinical', 'pulmonary')) +
            generate_for_all_patient_types(
                'extra_pulmonary', self.filters + [
                    RawFilter('patient_type IS NOT NULL'),
                    RawFilter("disease_classification = 'extra_pulmonary'")
                ]) + generate_for_all_patient_types(
                    'total',
                    self.filters + [RawFilter("patient_type IS NOT NULL")]) +
            generate_for_all_ranges(
                'male', self.filters + [RawFilter("sex = 'male'")]) +
            generate_for_all_ranges(
                'female', self.filters + [RawFilter("sex = 'female'")]) +
            generate_for_all_ranges(
                'transgender',
                self.filters + [RawFilter("sex = 'transgender'")]) +
            generate_for_all_ranges('all', self.filters) + [
                DatabaseColumn(
                    '',
                    CountColumn(
                        'doc_id',
                        filters=filters_without_episode_type +
                        test_type_filter + [
                            RawFilter(
                                "bacteriological_test_episode_type = 'presumptive_tb'"
                            )
                        ],
                        alias='patients_with_presumptive_tb')),
                DatabaseColumn(
                    '',
                    CountColumn(
                        'doc_id',
                        filters=
                        (filters_without_episode_type + test_type_filter + [
                            RawFilter(
                                "result_of_bacteriological_test = 'tb_detected'"
                            ),
                            RawFilter(
                                "bacteriological_test_episode_type = 'presumptive_tb'"
                            )
                        ]),
                        alias='patients_with_positive_tb')),
                DatabaseColumn(
                    '',
                    CountColumn(
                        'doc_id',
                        filters=self.filters + [
                            RawFilter(
                                "hiv_status IN ('reactive', 'non_reactive')")
                        ],
                        alias='all_hiv_tested')),
                DatabaseColumn(
                    '',
                    CountColumn('doc_id',
                                filters=self.filters +
                                [RawFilter("hiv_status = 'reactive'")],
                                alias='hiv_reactive')),
                DatabaseColumn(
                    '',
                    CountColumn('doc_id',
                                filters=self.filters + [
                                    RawFilter("hiv_status = 'reactive'"),
                                    RawFilter("cpt_initiated = 'yes'")
                                ],
                                alias='hiv_reactive_cpt')),
                DatabaseColumn(
                    '',
                    CountColumn(
                        'doc_id',
                        filters=(self.filters +
                                 [RawFilter("hiv_status = 'reactive'")] +
                                 [RawFilter("initiated_on_art = 'yes'")]),
                        alias='hiv_reactive_art')),
                DatabaseColumn(
                    '',
                    CountColumn(
                        'doc_id',
                        filters=(filters_with_bacteriological_date +
                                 convert_to_raw_filters_list(
                                     "patient_type = 'new'",
                                     "disease_classification = 'pulmonary'",
                                     "diagnostic_result = 'tb_detected'")),
                        alias='new_positive_tb_pulmonary')),
                DatabaseColumn(
                    '',
                    CountColumn(
                        'doc_id',
                        filters=(filters_with_bacteriological_date +
                                 convert_to_raw_filters_list(
                                     "patient_type = 'new'",
                                     "disease_classification = 'pulmonary'",
                                     "diagnostic_result = 'tb_not_detected'")),
                        alias='new_negative_tb_pulmonary')),
                DatabaseColumn(
                    '',
                    CountColumn(
                        'doc_id',
                        filters=(
                            filters_with_bacteriological_date +
                            convert_to_raw_filters_list(
                                "patient_type = 'new'",
                                "disease_classification = 'extrapulmonary'",
                                "diagnostic_result = 'tb_detected'")),
                        alias='new_positive_tb_extrapulmonary')),
                DatabaseColumn(
                    '',
                    CountColumn(
                        'doc_id',
                        filters=(self.filters + convert_to_raw_filters_list(
                            "patient_type = 'recurrent'",
                            "diagnostic_result = 'tb_detected'")),
                        alias='recurrent_positive_tb')),
                DatabaseColumn(
                    '',
                    CountColumn(
                        'doc_id',
                        filters=(self.filters + convert_to_raw_filters_list(
                            "patient_type = 'treatment_after_failure'",
                            "diagnostic_result = 'tb_detected'")),
                        alias='failure_positive_tb')),
                DatabaseColumn(
                    '',
                    CountColumn(
                        'doc_id',
                        filters=(self.filters + convert_to_raw_filters_list(
                            "patient_type = 'treatment_after_lfu'",
                            "diagnostic_result = 'tb_detected'")),
                        alias='lfu_positive_tb')),
                DatabaseColumn(
                    '',
                    CountColumn(
                        'doc_id',
                        filters=(self.filters + convert_to_raw_filters_list(
                            "patient_type = 'other_previously_treated'",
                            "diagnostic_result = 'tb_detected'")),
                        alias='other_positive_tb'))
            ])
Example #28
0
 def columns(self):
     return [
         DatabaseColumn(
             "BCG",
             CountUniqueColumn('doc_id',
                               alias="bcg",
                               filters=self.filters + [EQ('bcg', 'yes')])),
         DatabaseColumn(
             "OPV3",
             CountUniqueColumn('doc_id',
                               alias="opv3",
                               filters=self.filters + [EQ('opv3', 'yes')])),
         DatabaseColumn(
             "HEP3",
             CountUniqueColumn('doc_id',
                               alias="hep3",
                               filters=self.filters +
                               [EQ('hepb3', 'yes')])),
         DatabaseColumn(
             "DPT3",
             CountUniqueColumn('doc_id',
                               alias="dpt3",
                               filters=self.filters + [EQ('dpt3', 'yes')])),
         DatabaseColumn(
             "Measles",
             CountUniqueColumn('doc_id',
                               alias="measles",
                               filters=self.filters +
                               [EQ('measles', 'yes')])),
         DatabaseColumn(
             "Fully Immunized in 1st year",
             CountUniqueColumn('doc_id',
                               alias="fully_immunized",
                               filters=self.filters + [
                                   AND([
                                       EQ('bcg', 'yes'),
                                       EQ('opv0', 'yes'),
                                       EQ('hepb0', 'yes'),
                                       EQ('opv1', 'yes'),
                                       EQ('hepb1', 'yes'),
                                       EQ('dpt1', 'yes'),
                                       EQ('opv2', 'yes'),
                                       EQ('hepb2', 'yes'),
                                       EQ('dpt2', 'yes'),
                                       EQ('opv3', 'yes'),
                                       EQ('hepb3', 'yes'),
                                       EQ('dpt3', 'yes'),
                                       EQ('measles', 'yes')
                                   ])
                               ])),
         DatabaseColumn(
             "DPT-OPT Booster",
             CountUniqueColumn('doc_id',
                               alias="dpt_opv_booster",
                               filters=self.filters +
                               [EQ('dpt_opv_booster', 'yes')])),
         DatabaseColumn(
             "VitA3",
             CountUniqueColumn('doc_id',
                               alias="vita3",
                               filters=self.filters +
                               [EQ('vita3', 'yes')])),
         DatabaseColumn(
             "BCG Total Eligible",
             CountUniqueColumn('doc_id', alias="bcg_eligible"),
         ),
         DatabaseColumn(
             "OPV3 Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="opv3_eligible",
                               filters=self.filters +
                               [LTE('dob', 'today_minus_106')])),
         DatabaseColumn(
             "HEP3 Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="hep3_eligible",
                               filters=self.filters +
                               [LTE('dob', 'today_minus_106')])),
         DatabaseColumn(
             "DPT3 Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="dpt3_eligible",
                               filters=self.filters +
                               [LTE('dob', 'today_minus_106')])),
         DatabaseColumn(
             "Measles Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="measles_eligible",
                               filters=self.filters +
                               [LTE('dob', 'today_minus_273')])),
         DatabaseColumn(
             "Fully Immunized Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="fully_immunized_eligible",
                               filters=self.filters +
                               [LTE('dob', 'today_minus_273')])),
         DatabaseColumn(
             "DPT-OPT Booster Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="dpt_opv_booster_eligible",
                               filters=self.filters +
                               [LTE('dob', 'today_minus_548')])),
         DatabaseColumn(
             "VitA3 Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="vita3_eligible",
                               filters=self.filters +
                               [LTE('dob', 'today_minus_700')]))
     ]
Example #29
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')
                                   ])
                               ])),
     ]
Example #30
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')]),
         )
     ]