예제 #1
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')]))
     ]
예제 #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):
     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')])])
         )
     ]
예제 #4
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')
                     ])
                 ]))
     ]
예제 #5
0
파일: tests.py 프로젝트: kkrampa/sql-agg
    def test_different_filters(self):
        filters = [LT('date', 'enddate')]
        filter_values = {"enddate": date(2013, 02, 01)}
        vc = QueryContext("user_table", filters=filters, group_by=["user"])
        user = SimpleColumn("user")
        i_a = SumColumn("indicator_a")
        i_b = SumColumn("indicator_b", filters=[GT('date', 'enddate')])
        vc.append_column(user)
        vc.append_column(i_a)
        vc.append_column(i_b)
        data = vc.resolve(self.session.connection(), filter_values)

        self.assertEqual(data['user1']['indicator_a'], 1)
        self.assertNotIn('indicator_b', data['user1'])
        self.assertEqual(data['user2']['indicator_a'], 0)
        self.assertEqual(data['user2']['indicator_b'], 1)
예제 #6
0
 def columns(self):
     return [
         DatabaseColumn('awc_id', SimpleColumn('awc_id')),
         DatabaseColumn(
             'sc_pregnant',
             CountUniqueColumn(
                 'doc_id',
                 alias='sc_pregnant',
                 filters=self.filters + [
                     GT('num_rations_distributed', 'twentyone'),
                     EQ('caste', 'sc'),
                     EQ('pregnant', 'one'),
                 ])),
         DatabaseColumn(
             'st_pregnant',
             CountUniqueColumn(
                 'doc_id',
                 alias='st_pregnant',
                 filters=self.filters + [
                     GT('num_rations_distributed', 'twentyone'),
                     EQ('caste', 'st'),
                     EQ('pregnant', 'one'),
                 ])),
         DatabaseColumn(
             'obc_pregnant',
             CountUniqueColumn(
                 'doc_id',
                 alias='obc_pregnant',
                 filters=self.filters + [
                     GT('num_rations_distributed', 'twentyone'),
                     EQ('caste', 'obc'),
                     EQ('pregnant', 'one'),
                 ])),
         DatabaseColumn(
             'general_pregnant',
             CountUniqueColumn(
                 'doc_id',
                 alias='general_pregnant',
                 filters=self.filters + [
                     GT('num_rations_distributed', 'twentyone'),
                     EQ('caste', 'other'),
                     EQ('pregnant', 'one'),
                 ])),
         DatabaseColumn(
             'total_pregnant',
             CountUniqueColumn(
                 'doc_id',
                 alias='total_pregnant',
                 filters=self.filters + [
                     GT('num_rations_distributed', 'twentyone'),
                     EQ('pregnant', 'one'),
                 ])),
         DatabaseColumn(
             'sc_lactating',
             CountUniqueColumn(
                 'doc_id',
                 alias='sc_lactating',
                 filters=self.filters + [
                     GT('num_rations_distributed', 'twentyone'),
                     EQ('caste', 'sc'),
                     EQ('lactating', 'one'),
                 ])),
         DatabaseColumn(
             'st_lactating',
             CountUniqueColumn(
                 'doc_id',
                 alias='st_lactating',
                 filters=self.filters + [
                     GT('num_rations_distributed', 'twentyone'),
                     EQ('caste', 'st'),
                     EQ('lactating', 'one'),
                 ])),
         DatabaseColumn(
             'obc_lactating',
             CountUniqueColumn(
                 'doc_id',
                 alias='obc_lactating',
                 filters=self.filters + [
                     GT('num_rations_distributed', 'twentyone'),
                     EQ('caste', 'obc'),
                     EQ('lactating', 'one'),
                 ])),
         DatabaseColumn(
             'general_lactating',
             CountUniqueColumn(
                 'doc_id',
                 alias='general_lactating',
                 filters=self.filters + [
                     GT('num_rations_distributed', 'twentyone'),
                     EQ('caste', 'other'),
                     EQ('lactating', 'one'),
                 ])),
         DatabaseColumn(
             'total_lactating',
             CountUniqueColumn(
                 'doc_id',
                 alias='total_lactating',
                 filters=self.filters + [
                     GT('num_rations_distributed', 'twentyone'),
                     EQ('lactating', 'one'),
                 ])),
         DatabaseColumn(
             'minority_pregnant',
             CountUniqueColumn(
                 'doc_id',
                 alias='minority_pregnant',
                 filters=self.filters + [
                     GT('num_rations_distributed', 'twentyone'),
                     EQ('pregnant', 'one'),
                     EQ('minority', 'yes'),
                 ])),
         DatabaseColumn(
             'minority_lactating',
             CountUniqueColumn(
                 'doc_id',
                 alias='minority_lactating',
                 filters=self.filters + [
                     GT('num_rations_distributed', 'twentyone'),
                     EQ('lactating', 'one'),
                     EQ('minority', 'yes'),
                 ])),
     ]