コード例 #1
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
コード例 #2
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')])]))
        ]
コード例 #3
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')]))
     ]
コード例 #4
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
コード例 #5
0
 def columns(self):
     return [
         DatabaseColumn(
             "VitA1",
             CountUniqueColumn('doc_id',
                               alias="vita1",
                               filters=self.filters +
                               [EQ('vita1', 'yes')])),
         DatabaseColumn(
             "VitA2",
             CountUniqueColumn('doc_id',
                               alias="vita2",
                               filters=self.filters +
                               [EQ('vita2', '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(
             "VitA1 Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="vita1_eligible",
                               filters=self.filters +
                               [LTE('dob', 'days_273')])),
         DatabaseColumn(
             "VitA2 Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="vita2_eligible",
                               filters=self.filters +
                               [LTE('dob', 'days_547')])),
         DatabaseColumn(
             "DPT-OPT Booster Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="dpt_opv_booster_eligible",
                               filters=self.filters +
                               [LTE('dob', 'days_548')])),
         DatabaseColumn(
             "VitA3 Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="vita3_eligible",
                               filters=self.filters +
                               [LTE('dob', 'days_700')]))
     ]
コード例 #6
0
ファイル: mixins.py プロジェクト: marionumza/commcare-hq
    def filters(self):
        filters = [GTE('recall_date', 'startdate'), LTE('recall_date', 'enddate')]
        for slug in ['food_code', 'food_type', 'recall_status']:
            if self.config[slug]:
                filters.append(EQ(slug, slug))

        return filters
コード例 #7
0
 def filters(self):
     filter = super(ClosedMotherCasesBreakdown, self).filters[1:]
     if 'strsd' in self.config:
         filter.append(GTE('closed_on', 'strsd'))
     if 'stred' in self.config:
         filter.append(LTE('closed_on', 'stred'))
     return filter
コード例 #8
0
 def filters(self):
     filter = super(PostnatalCareOverview, self).filters[1:]
     if 'strsd' in self.config:
         filter.append(GTE('delivery_date', 'strsd'))
     if 'stred' in self.config:
         filter.append(LTE('delivery_date', 'stred'))
     return filter
コード例 #9
0
 def filters(self):
     filter = super(DeliveryPlaceDetails, self).filters[1:]
     if 'strsd' in self.config:
         filter.append(GTE('delivery_date', 'strsd'))
     if 'stred' in self.config:
         filter.append(LTE('delivery_date', 'stred'))
     return filter
コード例 #10
0
ファイル: sqldata.py プロジェクト: zbidi/commcare-hq
 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:]
コード例 #11
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:]
コード例 #12
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
コード例 #13
0
 def filters(self):
     filter = super(CauseOfMaternalDeaths, self).filters[1:]
     filter.append(EQ('reason_for_mother_closure', 'death'))
     if 'strsd' in self.config:
         filter.append(GTE('date_of_mother_death', 'strsd'))
     if 'stred' in self.config:
         filter.append(LTE('date_of_mother_death', 'stred'))
     return filter
コード例 #14
0
 def filters(self):
     filter = super(ClosedChildCasesBreakdown, self).filters[1:]
     if 'strsd' in self.config:
         filter.append(GTE('closed_on', 'strsd'))
     if 'stred' in self.config:
         filter.append(LTE('closed_on', 'stred'))
     filter.append(NOTEQ('reason_for_child_closure', 'empty'))
     return filter
コード例 #15
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
コード例 #16
0
ファイル: sqldata.py プロジェクト: ekush/commcare-hq
 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:]
コード例 #17
0
 def filters(self):
     filters = [LTE('age_in_months', '5_years')]
     for key, value in six.iteritems(self.config):
         if key == 'domain' or key == '5_years':
             continue
         elif key == 'filters':
             filters.append(self._build_additional_filters(value))
             continue
         filters.append(EQ(key, key))
     return filters
コード例 #18
0
 def columns(self):
     return [
         DatabaseColumn('location_id', SimpleColumn('site_id')),
         DatabaseColumn('Completude', CountColumn('doc_id', alias='completude')),
         DatabaseColumn('Promptitude', CountColumn(
             'doc_id',
             alias='promptitude',
             filters=self.filters + [LTE('opened_on', 'monday')]
         )),
     ]
コード例 #19
0
 def filters(self):
     filters = [
         GTE('recalled_date', 'startdate'),
         LTE('recalled_date', 'enddate')
     ]
     if self.config['case_owners']:
         filters.append(EQ('owner_name', 'case_owners'))
     if self.config['recall_status']:
         filters.append(EQ('recall_status', 'recall_status'))
     return filters
コード例 #20
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
コード例 #21
0
 def filters(self):
     filters = [
         GTE('recalled_date', 'startdate'),
         LTE('recalled_date', 'enddate')
     ]
     for column in self.FILTERABLE_COLUMNS:
         if self.config.get(column):
             if column == 'age_range':
                 filters.append(self._age_range_filter)
             else:
                 filters.append(EQ(column, column))
     return filters
コード例 #22
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')
                                   ])
                               ]))
     ]
コード例 #23
0
 def filters(self):
     filters = [
         LTE('age_in_months', '5_years'),
         EQ('valid_in_month', 'true')
     ]
     for key, value in self.config.items():
         if key in ['domain', '5_years', 'true']:
             continue
         elif key == 'filters':
             filters.append(self._build_additional_filters(value))
             continue
         filters.append(EQ(key, key))
     return filters
コード例 #24
0
ファイル: sqldata.py プロジェクト: thedevelopermw/commcare-hq
 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')]),
     ]
コード例 #25
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')
                     ])
                 ]))
     ]
コード例 #26
0
ファイル: __init__.py プロジェクト: kkaczmarczyk/commcare-hq
    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 = [BETWEEN("date", "startdate", "enddate")]
        elif 'startdate' not in self.config:
            filters = [LTE("date", 'enddate')]

        for k, v in LOCATION_HIERARCHY.iteritems():
            if v['prop'] in self.config and self.config[v['prop']]:
                filters.append(IN(k, v['prop']))
        return filters
コード例 #27
0
 def columns(self):
     return [
         DatabaseColumn(
             "Deworming dose in last 6 months",
             CountUniqueColumn('doc_id',
                               alias="deworming",
                               filters=self.filters +
                               [EQ('deworm', 'yes')])),
         DatabaseColumn(
             "Deworming Total Eligible",
             CountUniqueColumn('doc_id',
                               alias="deworming_total_eligible",
                               filters=self.filters +
                               [LTE('dob', 'today_minus_365')])),
     ]
コード例 #28
0
 def filters(self):
     filters = [
         GTE('visit_date', 'startdate'),
         LTE('visit_date', 'enddate')
     ]
     for column in self.FILTERABLE_COLUMNS:
         if self.config.get(column):
             if column == 'age_range':
                 filters.append(self._age_range_filter)
             elif column == 'owner_id':
                 infilter_bindparams = get_INFilter_bindparams(
                     'owner_id', self.config['owner_id'])
                 filters.append(IN('owner_id', infilter_bindparams))
             else:
                 filters.append(EQ(column, column))
     return filters
コード例 #29
0
ファイル: ucr_data.py プロジェクト: solleks/commcare-hq
 def filters(self):
     filters = [
         GTE('visit_date', 'startdate'),
         LTE('visit_date', 'enddate')
     ]
     if self._age_ranges:
         filters.append(self._get_age_range_filter())
     for col in self.MULTI_SELECT_COLS:
         if self.config.get(col):
             infilter_bindparams = get_INFilter_bindparams(
                 col, self.config[col])
             filters.append(IN(col, infilter_bindparams))
     for col in self.SINGLE_SELECT_COLS:
         if self.config.get(col):
             filters.append(EQ(col, col))
     return filters
コード例 #30
0
ファイル: mother_sqldata.py プロジェクト: xbryanc/commcare-hq
 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')])]),
         )
     ]