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')])) ]
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
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')])]) ) ]
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') ]) ])) ]
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)
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'), ])), ]