Exemplo n.º 1
0
 def test_sector_data(self):
     self.assertDictEqual(
         get_lactating_enrolled_women_sector_data('icds-cas',
                                                  config={
                                                      'month': (2017, 5, 1),
                                                      'state_id': 'st1',
                                                      'district_id': 'd1',
                                                      'block_id': 'b1',
                                                      'aggregation_level': 4
                                                  },
                                                  location_id='b1',
                                                  loc_level='supervisor'),
         {
             "info":
             percent_lactating_women_enrolled_help_text(),
             "tooltips_data": {
                 "s2": {
                     "valid": 24,
                     "all": 24
                 },
                 "s1": {
                     "valid": 19,
                     "all": 19
                 }
             },
             "chart_data": [{
                 "color": MapColors.BLUE,
                 "classed": "dashed",
                 "strokeWidth": 2,
                 "values": [["s1", 19], ["s2", 24]],
                 "key": ""
             }],
             "format":
             "number"
         })
def get_lactating_enrolled_women_sector_data(domain,
                                             config,
                                             loc_level,
                                             location_id,
                                             show_test=False,
                                             icds_features_flag=False):
    group_by = ['%s_name' % loc_level]

    config['month'] = datetime(*config['month'])
    data = AggCcsRecordMonthly.objects.filter(**config).values(
        *group_by).annotate(valid=Sum('lactating'),
                            all=Sum('lactating_all')).order_by('%s_name' %
                                                               loc_level)

    if not show_test:
        data = apply_exclude(domain, data)

    chart_data = {'blue': []}

    tooltips_data = defaultdict(lambda: {'valid': 0, 'all': 0})
    if icds_features_flag:
        location_launched_status = get_location_launched_status(
            config, loc_level)
    else:
        location_launched_status = None

    for row in data:
        if location_launched_status:
            launched_status = location_launched_status.get(row['%s_name' %
                                                               loc_level])
            if launched_status is None or launched_status <= 0:
                continue
        valid = row['valid'] or 0
        all_lactating = row['all'] or 0
        name = row['%s_name' % loc_level]

        row_values = {'valid': valid, 'all': all_lactating}
        for prop, value in row_values.items():
            tooltips_data[name][prop] += value

        chart_data['blue'].append([name, valid])

    chart_data['blue'] = sorted(chart_data['blue'])

    return {
        "tooltips_data":
        dict(tooltips_data),
        "format":
        "number",
        "info":
        percent_lactating_women_enrolled_help_text(),
        "chart_data": [{
            "values": chart_data['blue'],
            "key": "",
            "strokeWidth": 2,
            "classed": "dashed",
            "color": MapColors.BLUE
        }]
    }
def get_lactating_enrolled_women_sector_data(domain,
                                             config,
                                             loc_level,
                                             location_id,
                                             show_test=False):
    group_by = ['%s_name' % loc_level]

    config['month'] = datetime(*config['month'])
    data = AggCcsRecordMonthly.objects.filter(**config).values(
        *group_by).annotate(valid=Sum('lactating'),
                            all=Sum('lactating_all')).order_by('%s_name' %
                                                               loc_level)

    if not show_test:
        data = apply_exclude(domain, data)

    chart_data = {'blue': []}

    tooltips_data = defaultdict(lambda: {'valid': 0, 'all': 0})

    loc_children = get_child_locations(domain, location_id, show_test)
    result_set = set()

    for row in data:
        valid = row['valid'] or 0
        all_lactating = row['all'] or 0
        name = row['%s_name' % loc_level]
        result_set.add(name)

        row_values = {'valid': valid, 'all': all_lactating}
        for prop, value in six.iteritems(row_values):
            tooltips_data[name][prop] += value

        chart_data['blue'].append([name, valid])

    for sql_location in loc_children:
        if sql_location.name not in result_set:
            chart_data['blue'].append([sql_location.name, 0])

    chart_data['blue'] = sorted(chart_data['blue'])

    return {
        "tooltips_data":
        dict(tooltips_data),
        "format":
        "number",
        "info":
        percent_lactating_women_enrolled_help_text(),
        "chart_data": [{
            "values": chart_data['blue'],
            "key": "",
            "strokeWidth": 2,
            "classed": "dashed",
            "color": MapColors.BLUE
        }]
    }
Exemplo n.º 4
0
 def test_map_name_is_different_data(self):
     self.assertDictEqual(
         get_lactating_enrolled_women_data_map(
             'icds-cas',
             config={
                 'month': (2017, 5, 1),
                 'state_id': 'st1',
                 'district_id': 'd1',
                 'aggregation_level': 3
             },
             loc_level='block',
         ), {
             "rightLegend": {
                 "info":
                 percent_lactating_women_enrolled_help_text(),
                 "average":
                 '100.00',
                 'extended_info': [{
                     'indicator':
                     'Number of lactating women who are enrolled for Anganwadi Services:',
                     'value': "87"
                 }, {
                     'indicator':
                     'Total number of lactating women who are registered:',
                     'value': "87"
                 }, {
                     'indicator':
                     ('Percentage of registered lactating women who are enrolled for Anganwadi Services:'
                      ),
                     'value':
                     '100.00%'
                 }]
             },
             "fills": {
                 "Women": MapColors.BLUE,
                 "defaultFill": MapColors.GREY
             },
             "data": {
                 'block_map': {
                     'valid': 87,
                     'all': 87,
                     'original_name': ['b1', 'b2'],
                     'fillKey': 'Women'
                 }
             },
             "slug": "lactating_enrolled_women",
             "label": ""
         })
 def test_sector_data(self):
     self.assertDictEqual(
         get_lactating_enrolled_women_sector_data(
             'icds-cas',
             config={
                 'month': (2017, 5, 1),
                 'state_id': 'st1',
                 'district_id': 'd1',
                 'block_id': 'b1',
                 'aggregation_level': 4
             },
             location_id='b1',
             loc_level='supervisor'
         ),
         {
             "info": percent_lactating_women_enrolled_help_text(),
             "tooltips_data": {
                 "s2": {
                     "valid": 24,
                     "all": 24
                 },
                 "s1": {
                     "valid": 19,
                     "all": 19
                 }
             },
             "chart_data": [
                 {
                     "color": MapColors.BLUE,
                     "classed": "dashed",
                     "strokeWidth": 2,
                     "values": [
                         [
                             "s1",
                             19
                         ],
                         [
                             "s2",
                             24
                         ]
                     ],
                     "key": ""
                 }
             ],
             "format": "number"
         }
     )
 def test_map_name_is_different_data(self):
     self.assertDictEqual(
         get_lactating_enrolled_women_data_map(
             'icds-cas',
             config={
                 'month': (2017, 5, 1),
                 'state_id': 'st1',
                 'district_id': 'd1',
                 'aggregation_level': 3
             },
             loc_level='block',
         ),
         {
             "rightLegend": {
                 "info": percent_lactating_women_enrolled_help_text(),
                 "average": '100.00',
                 'extended_info': [
                     {
                         'indicator': 'Number of lactating women who are enrolled for Anganwadi Services:',
                         'value': "87"
                     },
                     {'indicator': 'Total number of lactating women who are registered:', 'value': "87"},
                     {
                         'indicator': (
                             'Percentage of registered lactating women who are enrolled for Anganwadi Services:'
                         ),
                         'value': '100.00%'
                     }
                 ]
             },
             "fills": {
                 "Women": MapColors.BLUE,
                 "defaultFill": MapColors.GREY
             },
             "data": {
                 'block_map': {
                     'valid': 87,
                     'all': 87,
                     'original_name': ['b1', 'b2'],
                     'fillKey': 'Women'
                 }
             },
             "slug": "lactating_enrolled_women",
             "label": ""
         }
     )
Exemplo n.º 7
0
 def test_data_daily_lactating_enrolled_women(self):
     data = get_demographics_data(
         'icds-cas', (2017, 5, 29), {
             'month': (2017, 5, 1),
             'prev_month': (2017, 4, 1),
             'aggregation_level': 1
         })
     expected = {
         "redirect": "demographics/lactating_enrolled_women",
         "all": 167,
         "format": "percent_and_div",
         "color": "red",
         "percent": 0,
         "value": 167,
         "label": LACTATING_WOMEN_ENROLLED_FOR_ANGANWADI_SERVICES,
         "frequency": "day",
         "help_text": percent_lactating_women_enrolled_help_text()
     }
     self.assertDictEqual(expected, data['records'][2][0])
Exemplo n.º 8
0
 def test_data_daily_lactating_enrolled_women(self):
     data = get_demographics_data(
         'icds-cas', (2017, 5, 29), {
             'month': (2017, 5, 1),
             'prev_month': (2017, 4, 1),
             'aggregation_level': 1
         })
     expected = {
         "redirect": "demographics/lactating_enrolled_women",
         "all": 167,
         "format": "percent_and_div",
         "color": "green",
         "percent": "Data in the previous reporting period was 0",
         "value": 167,
         "label": "Percent lactating women enrolled for Anganwadi Services",
         "frequency": "day",
         "help_text": percent_lactating_women_enrolled_help_text()
     }
     self.assertDictEqual(expected, data['records'][2][0])
Exemplo n.º 9
0
 def test_data_monthly_lactating_enrolled_women(self):
     data = get_demographics_data(
         'icds-cas', (2017, 6, 1), {
             'month': (2017, 5, 1),
             'prev_month': (2017, 4, 1),
             'aggregation_level': 1
         })
     expected = {
         'redirect': 'demographics/lactating_enrolled_women',
         "all": 167,
         "format": "percent_and_div",
         "color": "red",
         "percent": 0.0,
         "value": 167,
         "label": "Percent lactating women enrolled for Anganwadi Services",
         "frequency": "month",
         "help_text": percent_lactating_women_enrolled_help_text()
     }
     self.assertDictEqual(expected, data['records'][2][0])
Exemplo n.º 10
0
 def test_data_daily_if_aggregation_script_fail_lactating_enrolled_women(self):
     data = get_demographics_data(
         'icds-cas',
         (2017, 5, 30),
         {
             'month': (2017, 5, 1),
             'prev_month': (2017, 4, 1),
             'aggregation_level': 1
         }
     )
     expected = {
         "redirect": "demographics/lactating_enrolled_women",
         "all": 167,
         "format": "percent_and_div",
         "color": "green",
         "percent": "Data in the previous reporting period was 0",
         "value": 167,
         "label": "Percent lactating women enrolled for Anganwadi Services",
         "frequency": "day",
         "help_text": percent_lactating_women_enrolled_help_text()
     }
     self.assertDictEqual(expected, data['records'][2][0])
Exemplo n.º 11
0
 def test_data_monthly_lactating_enrolled_women(self):
     data = get_demographics_data(
         'icds-cas',
         (2017, 6, 1),
         {
             'month': (2017, 5, 1),
             'prev_month': (2017, 4, 1),
             'aggregation_level': 1
         }
     )
     expected = {
         'redirect': 'demographics/lactating_enrolled_women',
         "all": 167,
         "format": "percent_and_div",
         "color": "red",
         "percent": 0.0,
         "value": 167,
         "label": "Percent lactating women enrolled for Anganwadi Services",
         "frequency": "month",
         "help_text": percent_lactating_women_enrolled_help_text()
     }
     self.assertDictEqual(expected, data['records'][2][0])
Exemplo n.º 12
0
def get_demographics_data(domain,
                          now_date,
                          config,
                          show_test=False,
                          beta=False):
    now_date = datetime(*now_date)
    current_month = datetime(*config['month'])
    previous_month = datetime(*config['prev_month'])
    del config['month']
    del config['prev_month']

    def get_data_for(query_class, filters):
        queryset = query_class.objects.filter(
            **filters).values('aggregation_level').annotate(
                household=Sum('cases_household'),
                child_health=Sum('cases_child_health'),
                child_health_all=Sum('cases_child_health_all'),
                ccs_pregnant=Sum('cases_ccs_pregnant'),
                ccs_pregnant_all=Sum('cases_ccs_pregnant_all'),
                css_lactating=Sum('cases_ccs_lactating'),
                css_lactating_all=Sum('cases_ccs_lactating_all'),
                person_adolescent=Sum('cases_person_adolescent_girls_11_14'),
                person_adolescent_all=Sum(
                    'cases_person_adolescent_girls_11_14_all'),
                person_aadhaar=Sum(person_has_aadhaar_column(beta)),
                all_persons=Sum(person_is_beneficiary_column(beta)))

        if not show_test:
            queryset = apply_exclude(domain, queryset)
        return queryset

    if current_month.month == now_date.month and current_month.year == now_date.year:
        config['date'] = now_date.date()
        data = None
        # keep the record in searched - current - month
        while data is None or (not data and config['date'].day != 1):
            config['date'] -= relativedelta(days=1)
            data = get_data_for(AggAwcDailyView, config)
        prev_data = None
        while prev_data is None or (not prev_data and config['date'].day != 1):
            config['date'] -= relativedelta(days=1)
            prev_data = get_data_for(AggAwcDailyView, config)
        frequency = 'day'
    else:
        config['month'] = current_month
        data = get_data_for(AggAwcMonthly, config)
        config['month'] = previous_month
        prev_data = get_data_for(AggAwcMonthly, config)
        frequency = 'month'

    return {
        'records':
        [[{
            'label':
            _('Registered Households'),
            'help_text':
            _('Total number of households registered'),
            'percent':
            percent_increase('household', data, prev_data),
            'color':
            get_color_with_green_positive(
                percent_increase('household', data, prev_data)),
            'value':
            get_value(data, 'household'),
            'all':
            None,
            'format':
            'number',
            'frequency':
            frequency,
            'redirect':
            'demographics/registered_household'
        }, {
            'label':
            _(AADHAR_SEEDED_BENEFICIARIES),
            'help_text':
            percent_aadhaar_seeded_beneficiaries_help_text(),
            'percent':
            percent_diff('person_aadhaar', data, prev_data, 'all_persons'),
            'color':
            get_color_with_green_positive(
                percent_diff('person_aadhaar', data, prev_data,
                             'all_persons')),
            'value':
            get_value(data, 'person_aadhaar'),
            'all':
            get_value(data, 'all_persons'),
            'format':
            'percent_and_div',
            'frequency':
            frequency,
            'redirect':
            'demographics/adhaar'
        }],
         [{
             'label':
             _(CHILDREN_ENROLLED_FOR_ANGANWADI_SERVICES),
             'help_text':
             percent_children_enrolled_help_text(),
             'percent':
             percent_diff('child_health', data, prev_data, 'child_health_all'),
             'color':
             get_color_with_green_positive(
                 percent_diff('child_health', data, prev_data,
                              'child_health_all')),
             'value':
             get_value(data, 'child_health'),
             'all':
             get_value(data, 'child_health_all'),
             'format':
             'percent_and_div',
             'frequency':
             frequency,
             'redirect':
             'demographics/enrolled_children'
         }, {
             'label':
             _(PREGNANT_WOMEN_ENROLLED_FOR_ANGANWADI_SERVICES),
             'help_text':
             percent_pregnant_women_enrolled_help_text(),
             'percent':
             percent_diff('ccs_pregnant', data, prev_data, 'ccs_pregnant_all'),
             'color':
             get_color_with_green_positive(
                 percent_diff('ccs_pregnant', data, prev_data,
                              'ccs_pregnant_all')),
             'value':
             get_value(data, 'ccs_pregnant'),
             'all':
             get_value(data, 'ccs_pregnant_all'),
             'format':
             'percent_and_div',
             'frequency':
             frequency,
             'redirect':
             'demographics/enrolled_women'
         }],
         [{
             'label':
             _(LACTATING_WOMEN_ENROLLED_FOR_ANGANWADI_SERVICES),
             'help_text':
             percent_lactating_women_enrolled_help_text(),
             'percent':
             percent_diff('css_lactating', data, prev_data,
                          'css_lactating_all'),
             'color':
             get_color_with_green_positive(
                 percent_diff('css_lactating', data, prev_data,
                              'css_lactating_all')),
             'value':
             get_value(data, 'css_lactating'),
             'all':
             get_value(data, 'css_lactating_all'),
             'format':
             'percent_and_div',
             'frequency':
             frequency,
             'redirect':
             'demographics/lactating_enrolled_women'
         }, {
             'label':
             _(ADOLESCENT_GIRLS_ENROLLED_FOR_ANGANWADI_SERVICES),
             'help_text':
             percent_adolescent_girls_enrolled_help_text(),
             'percent':
             percent_diff('person_adolescent', data, prev_data,
                          'person_adolescent_all'),
             'color':
             get_color_with_green_positive(
                 percent_diff('person_adolescent', data, prev_data,
                              'person_adolescent_all')),
             'value':
             get_value(data, 'person_adolescent'),
             'all':
             get_value(data, 'person_adolescent_all'),
             'format':
             'percent_and_div',
             'frequency':
             frequency,
             'redirect':
             'demographics/adolescent_girls'
         }]]
    }
Exemplo n.º 13
0
def get_lactating_enrolled_women_data_map(domain,
                                          config,
                                          loc_level,
                                          show_test=False):
    def get_data_for(filters):
        filters['month'] = datetime(*filters['month'])
        queryset = AggCcsRecordMonthly.objects.filter(**filters).values(
            '%s_name' % loc_level,
            '%s_map_location_name' % loc_level).annotate(
                valid=Sum('lactating'),
                all=Sum('lactating_all'),
            ).order_by('%s_name' % loc_level,
                       '%s_map_location_name' % loc_level)
        if not show_test:
            queryset = apply_exclude(domain, queryset)
        return queryset

    data_for_map = defaultdict(lambda: {
        'valid': 0,
        'all': 0,
        'original_name': [],
        'fillKey': 'Women'
    })
    average = []
    total_valid = 0
    total = 0
    for row in get_data_for(config):
        valid = row['valid'] or 0
        all_lactating = row['all'] or 0
        name = row['%s_name' % loc_level]
        on_map_name = row['%s_map_location_name' % loc_level] or name

        average.append(valid)

        total_valid += valid
        total += all_lactating

        data_for_map[on_map_name]['valid'] += valid
        data_for_map[on_map_name]['all'] += all_lactating
        data_for_map[on_map_name]['original_name'].append(name)

    fills = OrderedDict()
    fills.update({'Women': MapColors.BLUE})
    fills.update({'defaultFill': MapColors.GREY})

    return {
        "slug": "lactating_enrolled_women",
        "label": "",
        "fills": fills,
        "rightLegend": {
            "average":
            '%.2f' % (total_valid * 100 / float(total or 1)),
            "info":
            percent_lactating_women_enrolled_help_text(),
            "extended_info": [{
                'indicator':
                'Number of lactating women who are enrolled for Anganwadi Services:',
                'value': indian_formatted_number(total_valid)
            }, {
                'indicator':
                ('Total number of lactating women who are registered:'),
                'value':
                indian_formatted_number(total)
            }, {
                'indicator':
                ('Percentage of registered lactating women who are enrolled for Anganwadi Services:'
                 ),
                'value':
                '%.2f%%' % (total_valid * 100 / float(total or 1))
            }]
        },
        "data": dict(data_for_map),
    }
Exemplo n.º 14
0
def get_lactating_enrolled_women_sector_data(domain, config, loc_level, location_id, show_test=False):
    group_by = ['%s_name' % loc_level]

    config['month'] = datetime(*config['month'])
    data = AggCcsRecordMonthly.objects.filter(
        **config
    ).values(
        *group_by
    ).annotate(
        valid=Sum('lactating'),
        all=Sum('lactating_all')
    ).order_by('%s_name' % loc_level)

    if not show_test:
        data = apply_exclude(domain, data)

    chart_data = {
        'blue': []
    }

    tooltips_data = defaultdict(lambda: {
        'valid': 0,
        'all': 0
    })

    loc_children = get_child_locations(domain, location_id, show_test)
    result_set = set()

    for row in data:
        valid = row['valid'] or 0
        all_lactating = row['all'] or 0
        name = row['%s_name' % loc_level]
        result_set.add(name)

        row_values = {
            'valid': valid,
            'all': all_lactating
        }
        for prop, value in six.iteritems(row_values):
            tooltips_data[name][prop] += value

        chart_data['blue'].append([
            name, valid
        ])

    for sql_location in loc_children:
        if sql_location.name not in result_set:
            chart_data['blue'].append([sql_location.name, 0])

    chart_data['blue'] = sorted(chart_data['blue'])

    return {
        "tooltips_data": dict(tooltips_data),
        "format": "number",
        "info": percent_lactating_women_enrolled_help_text(),
        "chart_data": [
            {
                "values": chart_data['blue'],
                "key": "",
                "strokeWidth": 2,
                "classed": "dashed",
                "color": MapColors.BLUE
            }
        ]
    }
Exemplo n.º 15
0
def get_lactating_enrolled_women_data_map(domain, config, loc_level, show_test=False):

    def get_data_for(filters):
        filters['month'] = datetime(*filters['month'])
        queryset = AggCcsRecordMonthly.objects.filter(
            **filters
        ).values(
            '%s_name' % loc_level, '%s_map_location_name' % loc_level
        ).annotate(
            valid=Sum('lactating'),
            all=Sum('lactating_all'),
        ).order_by('%s_name' % loc_level, '%s_map_location_name' % loc_level)
        if not show_test:
            queryset = apply_exclude(domain, queryset)
        return queryset

    data_for_map = defaultdict(lambda: {
        'valid': 0,
        'all': 0,
        'original_name': [],
        'fillKey': 'Women'
    })
    average = []
    total_valid = 0
    total = 0
    for row in get_data_for(config):
        valid = row['valid'] or 0
        all_lactating = row['all'] or 0
        name = row['%s_name' % loc_level]
        on_map_name = row['%s_map_location_name' % loc_level] or name

        average.append(valid)

        total_valid += valid
        total += all_lactating

        data_for_map[on_map_name]['valid'] += valid
        data_for_map[on_map_name]['all'] += all_lactating
        data_for_map[on_map_name]['original_name'].append(name)

    fills = OrderedDict()
    fills.update({'Women': MapColors.BLUE})
    fills.update({'defaultFill': MapColors.GREY})

    return {
        "slug": "lactating_enrolled_women",
        "label": "",
        "fills": fills,
        "rightLegend": {
            "average": '%.2f' % (total_valid * 100 / float(total or 1)),
            "info": percent_lactating_women_enrolled_help_text(),
            "extended_info": [
                {
                    'indicator': 'Number of lactating women who are enrolled for Anganwadi Services:',
                    'value': indian_formatted_number(total_valid)
                },
                {
                    'indicator': (
                        'Total number of lactating women who are registered:'
                    ),
                    'value': indian_formatted_number(total)
                },
                {
                    'indicator': (
                        'Percentage of registered lactating women who are enrolled for Anganwadi Services:'
                    ),
                    'value': '%.2f%%' % (total_valid * 100 / float(total or 1))
                }
            ]
        },
        "data": dict(data_for_map),
    }
Exemplo n.º 16
0
def get_demographics_data(domain, now_date, config, show_test=False, beta=False):
    now_date = datetime(*now_date)
    current_month = datetime(*config['month'])
    previous_month = datetime(*config['prev_month'])
    del config['month']
    del config['prev_month']

    def get_data_for(query_class, filters):
        queryset = query_class.objects.filter(
            **filters
        ).values(
            'aggregation_level'
        ).annotate(
            household=Sum('cases_household'),
            child_health=Sum('cases_child_health'),
            child_health_all=Sum('cases_child_health_all'),
            ccs_pregnant=Sum('cases_ccs_pregnant'),
            ccs_pregnant_all=Sum('cases_ccs_pregnant_all'),
            css_lactating=Sum('cases_ccs_lactating'),
            css_lactating_all=Sum('cases_ccs_lactating_all'),
            person_adolescent=Sum('cases_person_adolescent_girls_11_14'),
            person_adolescent_all=Sum('cases_person_adolescent_girls_11_14_all'),
            person_aadhaar=Sum(person_has_aadhaar_column(beta)),
            all_persons=Sum(person_is_beneficiary_column(beta))
        )

        if not show_test:
            queryset = apply_exclude(domain, queryset)
        return queryset

    if current_month.month == now_date.month and current_month.year == now_date.year:
        config['date'] = now_date.date()
        data = None
        # keep the record in searched - current - month
        while data is None or (not data and config['date'].day != 1):
            config['date'] -= relativedelta(days=1)
            data = get_data_for(AggAwcDailyView, config)
        prev_data = None
        while prev_data is None or (not prev_data and config['date'].day != 1):
            config['date'] -= relativedelta(days=1)
            prev_data = get_data_for(AggAwcDailyView, config)
        frequency = 'day'
    else:
        config['month'] = current_month
        data = get_data_for(AggAwcMonthly, config)
        config['month'] = previous_month
        prev_data = get_data_for(AggAwcMonthly, config)
        frequency = 'month'

    return {
        'records': [
            [
                {
                    'label': _('Registered Households'),
                    'help_text': _('Total number of households registered'),
                    'percent': percent_increase('household', data, prev_data),
                    'color': 'green' if percent_increase(
                        'household',
                        data,
                        prev_data) > 0 else 'red',
                    'value': get_value(data, 'household'),
                    'all': None,
                    'format': 'number',
                    'frequency': frequency,
                    'redirect': 'demographics/registered_household'
                },
                {
                    'label': _('Percent Aadhaar-seeded Beneficiaries'),
                    'help_text': percent_aadhaar_seeded_beneficiaries_help_text(),
                    'percent': percent_diff(
                        'person_aadhaar',
                        data,
                        prev_data,
                        'all_persons'
                    ),
                    'color': 'green' if percent_diff(
                        'person_aadhaar',
                        data,
                        prev_data,
                        'all_persons') > 0 else 'red',
                    'value': get_value(data, 'person_aadhaar'),
                    'all': get_value(data, 'all_persons'),
                    'format': 'percent_and_div',
                    'frequency': frequency,
                    'redirect': 'demographics/adhaar'
                }
            ],
            [
                {
                    'label': _('Percent children (0-6 years) enrolled for Anganwadi Services'),
                    'help_text': percent_children_enrolled_help_text(),
                    'percent': percent_diff('child_health', data, prev_data, 'child_health_all'),
                    'color': 'green' if percent_diff(
                        'child_health',
                        data,
                        prev_data, 'child_health_all') > 0 else 'red',
                    'value': get_value(data, 'child_health'),
                    'all': get_value(data, 'child_health_all'),
                    'format': 'percent_and_div',
                    'frequency': frequency,
                    'redirect': 'demographics/enrolled_children'
                },
                {
                    'label': _('Percent pregnant women enrolled for Anganwadi Services'),
                    'help_text': percent_pregnant_women_enrolled_help_text(),
                    'percent': percent_diff('ccs_pregnant', data, prev_data, 'ccs_pregnant_all'),
                    'color': 'green' if percent_diff(
                        'ccs_pregnant',
                        data,
                        prev_data,
                        'ccs_pregnant_all'
                    ) > 0 else 'red',
                    'value': get_value(data, 'ccs_pregnant'),
                    'all': get_value(data, 'ccs_pregnant_all'),
                    'format': 'percent_and_div',
                    'frequency': frequency,
                    'redirect': 'demographics/enrolled_women'
                }
            ],
            [

                {
                    'label': _('Percent lactating women enrolled for Anganwadi Services'),
                    'help_text': percent_lactating_women_enrolled_help_text(),
                    'percent': percent_diff('css_lactating', data, prev_data, 'css_lactating_all'),
                    'color': 'green' if percent_diff(
                        'css_lactating',
                        data,
                        prev_data,
                        'css_lactating_all'
                    ) > 0 else 'red',
                    'value': get_value(data, 'css_lactating'),
                    'all': get_value(data, 'css_lactating_all'),
                    'format': 'percent_and_div',
                    'frequency': frequency,
                    'redirect': 'demographics/lactating_enrolled_women'
                },
                {
                    'label': _('Percent adolescent girls (11-14 years) enrolled for Anganwadi Services'),
                    'help_text': percent_adolescent_girls_enrolled_help_text(),
                    'percent': percent_diff(
                        'person_adolescent',
                        data,
                        prev_data,
                        'person_adolescent_all'
                    ),
                    'color': 'green' if percent_diff(
                        'person_adolescent',
                        data,
                        prev_data,
                        'person_adolescent_all'
                    ) > 0 else 'red',
                    'value': get_value(data, 'person_adolescent'),
                    'all': get_value(data, 'person_adolescent_all'),
                    'format': 'percent_and_div',
                    'frequency': frequency,
                    'redirect': 'demographics/adolescent_girls'
                }
            ]
        ]
    }