Health-GPS  1.2.2.0
Global Health Policy Simulation model (Health-GPS)
datamanager.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "HealthGPS.Core/api.h"
4 
5 #include <filesystem>
6 #include <nlohmann/json.hpp>
7 
8 namespace hgps::data {
9 
10 using namespace hgps::core;
11 
24 class DataManager : public Datastore {
25  public:
26  DataManager() = delete;
27 
34  explicit DataManager(const std::filesystem::path root_directory,
35  VerboseMode verbosity = VerboseMode::none);
36 
37  std::vector<Country> get_countries() const override;
38 
39  std::optional<Country> get_country(std::string alpha) const override;
40 
41  std::vector<PopulationItem> get_population(Country country) const;
42 
43  std::vector<PopulationItem>
44  get_population(Country country,
45  const std::function<bool(const unsigned int &)> time_filter) const override;
46 
47  std::vector<MortalityItem> get_mortality(Country country) const;
48 
49  std::vector<MortalityItem>
50  get_mortality(Country country,
51  const std::function<bool(const unsigned int &)> time_filter) const override;
52 
53  std::vector<DiseaseInfo> get_diseases() const override;
54 
55  std::optional<DiseaseInfo> get_disease_info(core::Identifier code) const override;
56 
57  DiseaseEntity get_disease(DiseaseInfo code, Country country) const override;
58 
59  RelativeRiskEntity get_relative_risk_to_disease(DiseaseInfo source,
60  DiseaseInfo target) const override;
61 
63  get_relative_risk_to_risk_factor(DiseaseInfo source, Gender gender,
64  core::Identifier risk_factor_key) const override;
65 
68  CancerParameterEntity get_disease_parameter(DiseaseInfo info, Country country) const override;
69 
70  DiseaseAnalysisEntity get_disease_analysis(const Country country) const override;
71 
72  std::vector<BirthItem> get_birth_indicators(const Country country) const;
73 
74  std::vector<BirthItem> get_birth_indicators(
75  const Country country,
76  const std::function<bool(const unsigned int &)> time_filter) const override;
77 
78  std::vector<LmsDataRow> get_lms_parameters() const override;
79 
80  private:
81  std::filesystem::path root_;
82  VerboseMode verbosity_;
83  nlohmann::json index_;
84 
85  RelativeRiskEntity generate_default_relative_risk_to_disease() const;
86 
87  std::map<int, std::map<Gender, double>>
88  load_cost_of_diseases(Country country, nlohmann::json node,
89  std::filesystem::path parent_path) const;
90 
91  std::vector<LifeExpectancyItem> load_life_expectancy(const Country &country) const;
92 
93  std::string replace_string_tokens(std::string source, std::vector<std::string> tokens) const;
94 
95  std::map<std::string, std::size_t>
96  create_fields_index_mapping(const std::vector<std::string> &column_names,
97  const std::vector<std::string> fields) const;
98 
99  void notify_warning(const std::string_view message) const;
100 };
101 } // namespace hgps::data
Defines the Health-GPS back-end data store interface for all implementations.
Definition: datastore.h:13
Implements Health-GPS back-end data store interface using a file-based storage.
Definition: datamanager.h:24
Top-level namespace for Health-GPS Core C++ API.
Definition: analysis.h:7
VerboseMode
Verbosity mode enumeration.
Definition: forward_type.h:9
Gender
Enumerates gender types.
Definition: forward_type.h:18
Top-level namespace for Health-GPS Data C++ API.
Definition: api.h:7
std::map< std::string, std::size_t > create_fields_index_mapping(const std::vector< std::string > &column_names, const std::vector< std::string > fields)
Definition: csvparser.cpp:83
nlohmann::json json
JSON parser namespace alias.
Definition: jsonparser.h:16
Cancer disease parameters per country data structure.
Definition: disease.h:88
Country ISO-3166 definition data structure.
Definition: country.h:7
Burden of Diseases (BoD) analysis for a country data structure.
Definition: analysis.h:25
Disease full definition data structure.
Definition: disease.h:53
Disease information structure.
Definition: disease.h:13
Entity unique identifier data type.
Definition: identifier.h:17
Diseases relative risk effect table data structure.
Definition: disease.h:72