Ejemplo n.º 1
0
    def test_query_sum_weeks(self):
        """ Test that the week breakdown works"""
        start_date = datetime(2015, 1, 1)
        end_date = datetime(2016, 1, 1)

        result = data_query.query_sum(self.db, ["tot_1"], start_date,
                                        end_date, 1, weeks=True)

        print(result)
        self.assertEqual(result["total"], 10)
        self.assertIn("weeks", result)
        self.assertEqual(result["weeks"], {17: 1, 18: 8, 22: 1})

        result = data_query.query_sum(self.db, ["gen_1", "age_1"], start_date,
                                        end_date, 1, weeks=True)

        print(result)
        self.assertEqual(result["total"], 2)
        self.assertIn("weeks", result)
        self.assertEqual(result["weeks"], {18: 2})
        result = data_query.query_sum(self.db, ["tot_1"], start_date,
                                        end_date, 1, weeks=True, level="region")
        print(result)
        self.assertEqual(result["total"], 10)
        self.assertIn("weeks", result)
        self.assertEqual(result["weeks"], {17: 1, 18: 8, 22: 1})

        self.assertEqual(result["region"][2]["weeks"][18], 5)
        self.assertEqual(result["region"][2]["total"], 6)
        self.assertEqual(result["region"][3]["weeks"][18], 3)
        self.assertEqual(result["region"][3]["weeks"][22], 1)
        self.assertEqual(result["region"][3]["total"], 4)
Ejemplo n.º 2
0
    def test_query_sum(self):
        """ Test basic query_sum functionality"""
        start_date = datetime(2015, 1, 1)
        end_date = datetime(2016, 1, 1)

        result = data_query.query_sum(self.db, ["tot_1"], start_date, end_date, 1)
        self.assertEqual(result["total"], 10)
        result = data_query.query_sum(self.db, ["tot_1"], start_date, end_date, 1)
        self.assertEqual(result["total"], 10)
        result = data_query.query_sum(self.db, ["gen_1", "age_1"],
                                        start_date, end_date, 1)
        self.assertEqual(result["total"], 2)
        result = data_query.query_sum(self.db, ["gen_1", "gen_2"],
                                        start_date, end_date, 1)
        self.assertEqual(result["total"], 0)
Ejemplo n.º 3
0
    def get(self,
            variable_id,
            loc_id,
            mult_factor=1000,
            year=datetime.today().year):

        #Ensure stuff initialised properly.
        mult_factor = int(mult_factor)
        vi = str(variable_id)
        location_id = int(loc_id)
        year = int(year)

        results = query_sum(
            db, [vi],
            datetime(year, 1, 1),
            datetime(year + 1, 1, 1),
            location_id,
            weeks=True)

        #Structure the return data.
        ret = {"weeks": results["weeks"], "year": results["total"]}

        #Get population for specified location.
        location = db.session.query(Locations).filter_by(id=location_id).all()
        population = location[0].population

        #For each week and year value in ret, incidence = val/pop * mult_factor.
        for week in ret["weeks"]:
            ret["weeks"][week] = ret["weeks"][week] / population * mult_factor
        ret["year"] = ret["year"] / population * mult_factor

        return ret
Ejemplo n.º 4
0
    def get(self, category, location_id, lim_variables=None, year=None):

        args = self._get_url_params()

        if year is None:
            year = datetime.today().year
        year = int(year)
        start_date = datetime(year, 1, 1)
        end_date = datetime(year + 1, 1, 1)

        if lim_variables is not None:
            filter_variables = ["data_entry"] + lim_variables.split(",")
        else:
            filter_variables = ["data_entry"]

        excluded_variables = self._get_excluded_variables(args)

        result = query_sum(
            db, filter_variables, start_date, end_date, location_id,
            group_by_category=category, weeks=True,
            exclude_variables=excluded_variables
        )
        return_data = {}
        variables_instance = Variables()
        variables = variables_instance.get(category)
        for r in variables.keys():
            if r in result[category]:
                return_data[r] = result[category][r]
                return_data[r]["year"] = return_data[r]["total"]
            else:
                return_data[r] = {"year": 0, "weeks": {}}
        return return_data
Ejemplo n.º 5
0
    def get(self, variable_id, location_id, year=datetime.today().year,
            lim_variables="", exclude_variables=None):
        vi = str(variable_id)
        year = int(year)
        start_date = datetime(year, 1, 1)
        end_date = datetime(year + 1, 1, 1)
        variables = [vi]
        if not exclude_variables:
            exclude_variables = []

        req_level = request.args.get('level')

        # We sum over variable grouped by epi_week
        if lim_variables != "":
            variables += lim_variables.split(",")
        result = query_sum(
            db, variables, start_date, end_date, location_id, weeks=True, level=req_level, exclude_variables=exclude_variables
        )

        if req_level == None:
            return {"weeks": result["weeks"], "year": result["total"]}
        else:
            sub_level_result = {}
            for key, value in result[req_level].items():
                sub_level_result[key] = {
                    "year": value["total"],
                    "weeks": value["weeks"]
                }
            return {"weeks": result["weeks"], "year": result["total"], req_level: sub_level_result}
Ejemplo n.º 6
0
    def test_query_sum_location(self):
        """ Test that the location restriction works"""
        start_date = datetime(2015, 1, 1)
        end_date = datetime(2016, 1, 1)

        result = data_query.query_sum(self.db, ["tot_1"], start_date,
                                        end_date, 2)
        self.assertEqual(result["total"], 6)
        result = data_query.query_sum(self.db, ["tot_1"], start_date,
                                        end_date, 3)
        self.assertEqual(result["total"], 4)
        result = data_query.query_sum(self.db, ["tot_1"], start_date,
                                        end_date, 3, level="district")
        self.assertEqual(result["total"], 4)
        self.assertIn("district", result.keys())
        self.assertEqual(result["district"][6], 3)
        self.assertEqual(result["district"][5], 1)
Ejemplo n.º 7
0
    def test_query_sum_category(self):
        start_date = datetime(2015, 1, 1)
        end_date = datetime(2016, 1, 1)

        result = data_query.query_sum(self.db, "tot_1", start_date,
                                      end_date, 1,
                                      group_by_category="gender")
        self.assertEqual(result["total"], 10)
        self.assertEqual(result["gender"]["gen_1"], 3)
        self.assertEqual(result["gender"]["gen_2"], 7)
        result = data_query.query_sum(self.db, "tot_1", start_date,
                                      end_date, 1,
                                      group_by_category="gender",
                                      weeks=True)
        self.assertEqual(result["total"], 10)
        self.assertEqual(result["gender"]["gen_1"]["total"], 3)
        self.assertEqual(result["gender"]["gen_1"]["weeks"], {18: 3})
        self.assertEqual(result["gender"]["gen_2"]["total"], 7)
Ejemplo n.º 8
0
 def get(self, variable_id, location_id):
     result = query_sum(
         db,
         [variable_id],
         datetime(1900, 1, 1),
         datetime(2100, 1, 1),
         location_id
     )
     return {"value": result["total"]}
Ejemplo n.º 9
0
    def test_query_sum_category_with_multiple_limit_variables(self):
        start_date = datetime(2015, 1, 1)
        end_date = datetime(2016, 1, 1)

        actual = data_query.query_sum(self.db, ["tot_1", "age_1"], start_date,
                                      end_date, 1,
                                      group_by_category="gender")
        expected = {
            'total': 2.0,
            'gender': {
                'gen_1': 2.0
            }
        }
        self.assertDictEqual(actual, expected)
Ejemplo n.º 10
0
    def test_query_sum_by_level(self):
        """ Test query_data by level"""
        start_date = datetime(2015, 1, 1)
        end_date = datetime(2016, 1, 1)

        result = data_query.query_sum(self.db, ["tot_1"], start_date,
                                        end_date, 1, level="region")
        self.assertEqual(result["total"], 10)
        self.assertIn("region", result.keys())

        self.assertEqual(result["region"][2], 6)
        self.assertEqual(result["region"][3], 4)
        result = data_query.query_sum(self.db, ["nat_1", "tot_1"], start_date,
                                        end_date, 1, level="district")
        self.assertEqual(result["total"], 7)
        self.assertIn("district", result.keys())
        self.assertEqual(result["district"][6], 7)
        result = data_query.query_sum(self.db, ["gen_1", "age_1"],
                                        start_date, end_date, 1,
                                        level="clinic")
        self.assertEqual(result["total"], 2)
        self.assertIn("clinic", result.keys())
        self.assertEqual(result["clinic"][7], 2)
Ejemplo n.º 11
0
    def test_query_sum_category_with_excluded_variables(self):
        start_date = datetime(2015, 1, 1)
        end_date = datetime(2016, 1, 1)

        actual = data_query.query_sum(self.db, "tot_1", start_date,
                                      end_date, 1,
                                      group_by_category="gender",
                                      exclude_variables=["age_1"])
        expected = {
            'total': 8.0,
            'gender': {
                'gen_1': 1.0,
                'gen_2': 7.0
            }
        }
        self.assertDictEqual(actual, expected)
Ejemplo n.º 12
0
 def get(self, variable_id, level, mult_factor=1000,
         location_names=False, year=None, monthly=False,
         start_date=datetime(2010, 1, 1),
         end_date=datetime(2100, 1, 1)):
     mult_factor = int(mult_factor)
     if level not in ["zone", "region", "district", "clinic"]:
         return {}
     if year:
         year = datetime.now().year
         start_date = datetime(year, 1, 1)
         end_date = datetime(year + 1, 1, 1)
     if monthly:
         months = (datetime.now() - datetime(datetime.now().year, 1, 1)).days / 30.5
         mult_factor = mult_factor / months
     results = query_sum(
         db, [variable_id],
         start_date,
         end_date,
         g.allowed_location,
         level=level)
     locations = db.session.query(Locations).filter(
         Locations.level == level)
     pops = {}
     names = {}
     for l in locations:
         pops[l.id] = l.population
         names[l.id] = l.name
     ret = {}
     for loc in results[level].keys():
         if is_allowed_location(loc, g.allowed_location):
             if pops[loc]:
                 key = loc
                 if location_names:
                     key = names[key]
                 ret[key] = results[level][loc] / pops[loc] * mult_factor
     return ret