Ejemplo n.º 1
0
    def columns(self):
        if self.config['table_card_group_by'] == 'group_name':
            first_column = 'group_name'
        else:
            first_column = 'gender'

        return [
            DatabaseColumn('',
                           SimpleColumn(first_column),
                           format_fn=self.first_column_format),
            AggregateColumn('practice_count', self.format_cell_fn, [
                CareCustomColumn(
                    'all', filters=self.filters + [RawFilter("maxmin = 2")]),
                CareCustomColumn(
                    'none', filters=self.filters + [RawFilter("maxmin = 0")])
            ]),
        ]
Ejemplo n.º 2
0
 def _wrap_if_necessary(string_or_filter):
     if isinstance(string_or_filter, six.string_types):
         soft_assert_type_text(string_or_filter)
         filter = RawFilter(string_or_filter)
     else:
         filter = string_or_filter
     assert isinstance(filter, SqlFilter)
     return filter
Ejemplo n.º 3
0
    def columns(self):
        group = self.config['group']
        first_columns = 'value_chain'
        if group == '' or group == 'value_chain':
            first_columns = 'value_chain'
        elif group == 'domain':
            first_columns = 'domains'
        elif group == 'practice':
            first_columns = 'practices'

        columns = [
            DatabaseColumn('', SimpleColumn(first_columns),
                           self.group_name_fn),
            AggregateColumn('Farmers who adopted All practices',
                            self.percent_fn, [
                                CareCustomColumn('all',
                                                 filters=self.filters +
                                                 [RawFilter("maxmin = 2")]),
                                AliasColumn('some'),
                                AliasColumn('none')
                            ])
        ]

        if group != 'practice':
            columns.append(
                AggregateColumn(
                    'Farmers who adopted Some practices', self.percent_fn, [
                        CareCustomColumn(
                            'some',
                            filters=self.filters + [RawFilter("maxmin = 1")]),
                        AliasColumn('all'),
                        AliasColumn('none')
                    ]))

        columns.append(
            AggregateColumn('Farmers who adopted No practices',
                            self.percent_fn, [
                                CareCustomColumn('none',
                                                 filters=self.filters +
                                                 [RawFilter("maxmin = 0")]),
                                AliasColumn('all'),
                                AliasColumn('some')
                            ]))

        return columns
Ejemplo n.º 4
0
def generate_for_all_outcomes(slug, filters):
    columns = [
        DatabaseColumn(
            '',
            CountColumn('doc_id',
                        filters=filters +
                        [RawFilter("treatment_outcome IS NOT NULL")],
                        alias='total_%s' % slug))
    ]

    for treatment_outcome in TREATMENT_OUTCOMES:
        columns.append(
            DatabaseColumn(
                '',
                CountColumn('doc_id',
                            filters=filters + [
                                RawFilter("treatment_outcome = '%s'" %
                                          treatment_outcome)
                            ],
                            alias='%s_%s' % (slug, treatment_outcome))), )
    return columns
Ejemplo n.º 5
0
def generate_for_all_ranges(slug, filters):
    type_filter = RawFilter("patient_type IN ('new', 'recurrent')")
    columns = []
    for lower_bound, upper_bound in AGE_RANGES[:-1]:
        age_filter = RawFilter(
            'age >= %d AND age <= %d' % (lower_bound, upper_bound)
        )
        columns.append(
            DatabaseColumn(
                '',
                CountColumn(
                    'doc_id',
                    filters=filters + [age_filter, type_filter],
                    alias='%s_age_%d_%d' % (slug, lower_bound, upper_bound)
                )
            )
        )
    columns.append(
        DatabaseColumn(
            '',
            CountColumn(
                'doc_id',
                filters=filters + [
                    RawFilter('age > %d' % AGE_RANGES[-1][0]), type_filter
                ],
                alias='%s_age_%d' % (slug, AGE_RANGES[-1][0])
            )
        )
    )
    columns.append(
        DatabaseColumn(
            '',
            CountColumn(
                'doc_id',
                filters=filters + [type_filter],
                alias='%s_total' % slug
            )
        )
    )
    return columns
Ejemplo n.º 6
0
def generate_for_all_patient_types(slug, filters):
    columns = []
    for patient_type in PATIENT_TYPES:
        patient_type_filter = RawFilter("patient_type = '%s'" % patient_type)
        columns.append(
            DatabaseColumn(
                '',
                CountColumn('doc_id',
                            filters=filters + [patient_type_filter],
                            alias='%s_%s' % (slug, patient_type))))
    columns.append(
        DatabaseColumn(
            '', CountColumn('doc_id', filters=filters,
                            alias='%s_total' % slug)))
    return columns
Ejemplo n.º 7
0
 def columns(self):
     columns = self.get_columns_by_loc_level
     agg_columns = [
         DatabaseColumn(
             'num_children_0_6mo_enrolled_for_services',
             SumColumn('valid_in_month',
                       filters=self.filters + [
                           OR([
                               RawFilter("age_tranche = '0'"),
                               RawFilter("age_tranche = '6'")
                           ])
                       ],
                       alias='num_children_0_6mo_enrolled_for_services'),
             slug='num_children_0_6mo_enrolled_for_services'),
         DatabaseColumn(
             'num_children_6mo3yr_enrolled_for_services',
             SumColumn('valid_in_month',
                       filters=self.filters + [
                           OR([
                               RawFilter("age_tranche = '12'"),
                               RawFilter("age_tranche = '24'"),
                               RawFilter("age_tranche = '36'")
                           ])
                       ],
                       alias='num_children_6mo3yr_enrolled_for_services'),
             slug='num_children_6mo3yr_enrolled_for_services'),
         DatabaseColumn(
             'num_children_3yr6yr_enrolled_for_services',
             SumColumn('valid_in_month',
                       filters=self.filters + [
                           OR([
                               RawFilter("age_tranche = '48'"),
                               RawFilter("age_tranche = '60'"),
                               RawFilter("age_tranche = '72'")
                           ])
                       ],
                       alias='num_children_3yr6yr_enrolled_for_services'),
             slug='num_children_3yr6yr_enrolled_for_services'),
     ]
     return columns + agg_columns
 def filters(self):
     filters = super(TreatmentOutcomeSqlData, self).filters
     filters.append(
         RawFilter('episode_type_patient = 1')
     )
     return filters
def other_previously_treated():
    return [
        RawFilter(
            "patient_type = 'other_previously_treated'"
        )
    ]
def treatment_after_lfu():
    return [
        RawFilter(
            "patient_type = 'treatment_after_lfu'"
        )
    ]
Ejemplo n.º 11
0
 def wrapped_sum_column_filters_extended(self):
     return self.wrapped_filters + [RawFilter(DATE_FILTER_EXTENDED)]
Ejemplo n.º 12
0
    def columns(self):
        test_type_filter = [
            RawFilter("bacteriological_examination = 1")
        ]

        filters_without_episode_type = 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=(
                            self.filters + 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=(
                            self.filters + 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=(
                            self.filters + 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'
                    )
                )
            ]
        )
Ejemplo n.º 13
0
 def _map_filter_name_to_sql_filter(self, filter_name):
     return {
         'unweighed':
         RawFilter('recorded_weight IS NULL'),
         'umeasured':
         RawFilter('recorded_height IS NULL'),
         'severely_underweight':
         RawFilter(
             "current_month_nutrition_status = 'severely_underweight'"),
         'moderately_underweight':
         RawFilter(
             "current_month_nutrition_status = 'moderately_underweight'"),
         'normal_wfa':
         RawFilter("current_month_nutrition_status = 'normal'"),
         'severely_stunted':
         RawFilter("{} = 'severe'".format(
             current_month_stunting_column(self.beta))),
         'moderately_stunted':
         RawFilter("{} = 'moderate'".format(
             current_month_stunting_column(self.beta))),
         'normal_hfa':
         RawFilter("{} = 'normal'".format(
             current_month_stunting_column(self.beta))),
         'severely_wasted':
         RawFilter("{} = 'severe'".format(
             current_month_wasting_column(self.beta))),
         'moderately_wasted':
         RawFilter("{} = 'moderate'".format(
             current_month_wasting_column(self.beta))),
         'normal_wfh':
         RawFilter("{} = 'normal'".format(
             current_month_wasting_column(self.beta))),
     }[filter_name]
 def columns(self):
     return (
         generate_for_all_outcomes('new_patients', self.filters + [RawFilter("patient_type = 'new'")]) +
         generate_for_all_outcomes(
             'new_patients_pulmonary_microbiological',
             self.filters + [RawFilter("patient_type = 'new'")] + pulmonary_microbiological()
         ) +
         generate_for_all_outcomes(
             'new_patients_pulmonary_clinical',
             self.filters + [RawFilter("patient_type = 'new'")] + pulmonary_clinical()
         ) +
         generate_for_all_outcomes(
             'new_patients_extra_pulmonary',
             self.filters + [RawFilter("patient_type = 'new'")] + extra_pulmonary()
         ) +
         generate_for_all_outcomes(
             'previously_treated_patients',
             self.filters + previously_treated()
         ) +
         generate_for_all_outcomes(
             'recurrent_patients',
             self.filters + recurrent()
         ) +
         generate_for_all_outcomes(
             'treatment_after_failure_patients',
             self.filters + treatment_after_failure()
         ) +
         generate_for_all_outcomes(
             'treatment_after_lfu_patients',
             self.filters + treatment_after_lfu()
         ) +
         generate_for_all_outcomes(
             'other_previously_treated_patients',
             self.filters + [RawFilter("basis_of_diagnosis = 'clinical'")] + other_previously_treated()
         ) +
         generate_for_all_outcomes(
             'hiv_reactive_patients',
             self.filters + [RawFilter("hiv_status = 'reactive'")]
         ) +
         generate_for_all_outcomes(
             'new_hiv_reactive_patients',
             self.filters + [RawFilter("patient_type = 'new'")] + [RawFilter("hiv_status = 'reactive'")]
         ) +
         generate_for_all_outcomes(
             'previously_treated_hiv_reactive_patients',
             self.filters + previously_treated() + [RawFilter("hiv_status = 'reactive'")]
         ) + [
             DatabaseColumn(
                 '',
                 CountColumn(
                     'doc_id',
                     filters=self.filters + [RawFilter("hiv_status = 'reactive'")],
                     alias='total_hiv_cases'
                 )
             )
         ] + [
             DatabaseColumn(
                 '',
                 CountColumn(
                     'doc_id',
                     filters=(
                         self.filters + [RawFilter("hiv_status = 'reactive'")] +
                         [RawFilter("initiated_on_art = 'yes'")]
                     ),
                     alias='total_initiated_on_art'
                 )
             )
         ] + [
             DatabaseColumn(
                 '',
                 CountColumn(
                     'doc_id',
                     filters=(
                         self.filters + [RawFilter("hiv_status = 'reactive'")] +
                         [RawFilter("cpt_initiated = 'yes'")]
                     ),
                     alias='total_cpt_initiated'
                 )
             )
         ]
     )
def pulmonary_microbiological():
    return [RawFilter("disease_classification = 'pulmonary' AND basis_of_diagnosis = 'microbiological'")]
Ejemplo n.º 16
0
 def filters(self):
     filters = super(TreatmentOutcomeSqlData, self).filters
     filters.append(RawFilter('episode_type_patient = 1'))
     filters.append(RawFilter("is_enrolled_in_private = 0"))
     return filters
Ejemplo n.º 17
0
 def filters(self):
     filters = super(CaseFindingSqlData, self).filters
     filters.append(RawFilter("episode_type = 'confirmed_tb'"))
     filters.append(RawFilter("is_enrolled_in_private = 0"))
     return filters
Ejemplo n.º 18
0
def previously_treated():
    return [
        RawFilter("patient_type IN ('recurrent', 'treatment_after_failure',"
                  " 'treatment_after_lfu', 'other_previously_treated')")
    ]
Ejemplo n.º 19
0
 def filters(self):
     filters = super(ChartsSqlData, self).filters
     filters.append(RawFilter('closed = 0'))
     return filters
Ejemplo n.º 20
0
def convert_to_raw_filters_list(*filters):
    return [RawFilter(x) for x in filters]
Ejemplo n.º 21
0
def diagnosis_filter(diagnosis, classification):
    return [
        RawFilter("basis_of_diagnosis = '%s'" % diagnosis),
        RawFilter("disease_classification = '%s'" % classification)
    ]
def pulmonary_clinical():
    return [RawFilter("disease_classification = 'pulmonary' AND basis_of_diagnosis = 'clinical'")]
 def filters(self):
     filters = super(CaseFindingSqlData, self).filters
     filters.append(RawFilter('closed = 0'))
     return filters
Ejemplo n.º 24
0
def diagnosis_filter(diagnosis, classification):
    return [
        RawFilter('patient_type IS NOT NULL'),
        RawFilter("basis_of_diagnosis = '%s'" % diagnosis),
        RawFilter("disease_classification = '%s'" % classification)
    ]
Ejemplo n.º 25
0
    def columns(self):
        test_type_filter = [RawFilter("bacteriological_examination = 1")]

        return (
            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=self.filters + test_type_filter +
                                [RawFilter("episode_type = 'presumptive_tb'")],
                                alias='patients_with_presumptive_tb')),
                DatabaseColumn(
                    '',
                    CountColumn(
                        'doc_id',
                        filters=(self.filters + test_type_filter + [
                            RawFilter("result_of_test = 'tb_detected'"),
                            RawFilter("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'")],
                                alias='hiv_reactive_cpt')),
                DatabaseColumn(
                    '',
                    CountColumn(
                        'doc_id',
                        filters=(self.filters +
                                 [RawFilter("hiv_status = 'reactive'")] +
                                 [RawFilter("initiated_on_art = 'yes'")]),
                        alias='hiv_reactive_art'))
            ])
def treatment_after_failure():
    return [
        RawFilter(
            "patient_type = 'treatment_after_failure'"
        )
    ]
def extra_pulmonary():
    return [RawFilter("disease_classification = 'extra_pulmonary'")]
Ejemplo n.º 28
0
 def wrapped_sum_column_filters(self):
     return self.wrapped_filters + [RawFilter(DATE_FILTER)]
Ejemplo n.º 29
0
 def filters(self):
     filters = super(CaseFindingSqlData, self).filters
     filters.append(RawFilter("episode_type = 'confirmed_tb'"))
     return filters
def recurrent():
    return [
        RawFilter(
            "patient_type = 'recurrent'"
        )
    ]