Health-GPS 3.0.0.0
Global Health Policy Simulation model (Health-GPS)
Loading...
Searching...
No Matches
poco.h
Go to the documentation of this file.
1#pragma once
3
4#include <cstddef>
5#include <filesystem>
6#include <map>
7#include <optional>
8#include <string>
9#include <unordered_map>
10#include <vector>
11
18namespace hgps::input {
20struct FileInfo {
21 std::filesystem::path name;
22 std::string format;
23 std::string delimiter;
24 std::map<std::string, std::string> columns;
25
26 auto operator<=>(const FileInfo &rhs) const = default;
27};
28
31 std::string country;
34
35 auto operator<=>(const SettingsInfo &rhs) const = default;
36};
37
39struct SESInfo {
40 std::string function;
41 std::vector<double> parameters;
42
43 auto operator<=>(const SESInfo &) const = default;
44};
45
46// MAHIMA: Income quintile factor means adjustment (see income_quintile_factor_means_plan.md; Phase
47// 2+ simulation behaviour).
52 std::string id;
53 std::filesystem::path factorsmean_male;
54 std::filesystem::path factorsmean_female;
55
56 auto operator<=>(const IncomeStratumFactorsMeanStratumEntry &rhs) const = default;
57};
58
59// MAHIMA: Income quintile factor means adjustment (see income_quintile_factor_means_plan.md; Phase
60// 2+ simulation behaviour).
66 bool enabled{false};
69 // MAHIMA: Stored as std::size_t (not int) because N is a non-negative count comparable to
70 // strata.size(); avoids signed/unsigned comparisons and satisfies clang-tidy
71 // modernize-use-integer-sign-comparison in validation code.
73 std::vector<IncomeStratumFactorsMeanStratumEntry> strata;
74
75 auto operator<=>(const IncomeStratumFactorsMeanConfig &rhs) const = default;
76};
77
80 std::string format;
81 std::string delimiter;
82 std::string encoding;
83 std::map<std::string, std::filesystem::path> file_names;
87
88 auto operator<=>(const BaselineInfo &rhs) const = default;
89};
90
93 std::string name;
94 int level{};
95 std::optional<hgps::core::DoubleInterval> range;
96
97 auto operator<=>(const RiskFactorInfo &rhs) const = default;
98};
99
102 std::vector<RiskFactorInfo> risk_factors;
103 std::unordered_map<std::string, std::filesystem::path> risk_factor_models;
107 unsigned int policy_start_year{0};
108};
109
110// MAHIMA: Per-person CSV output for same-person tracking across baseline/intervention (by ID).
114 bool enabled{false};
115 std::optional<int> age_min;
116 std::optional<int> age_max;
117 std::string gender{"all"}; // "male" | "female" | "all"
118 std::vector<std::string> regions{};
119 std::vector<std::string> ethnicities{};
120 std::vector<std::string> risk_factors{}; // empty = all from mapping
121 std::vector<int> years{}; // empty = all years
122 std::string scenarios{"both"}; // "baseline" | "intervention" | "both"
123
124 auto operator<=>(const IndividualIdTrackingConfig &rhs) const = default;
125};
126
129 unsigned int comorbidities{};
130 std::string folder{};
131 std::string file_name{};
132 std::optional<IndividualIdTrackingConfig> individual_id_tracking;
133
134 auto operator<=>(const OutputInfo &rhs) const = default;
135};
136
140 std::optional<int> finish_time;
141
142 std::string to_finish_time_str() const {
143 if (finish_time.has_value()) {
144 return std::to_string(finish_time.value());
145 }
146
147 return "null";
148 }
149
150 auto operator<=>(const PolicyPeriodInfo &rhs) const = default;
151};
152
155 std::string risk_factor{};
156 double impact_value{};
157 unsigned int from_age{};
158 std::optional<unsigned int> to_age{};
159 std::string to_age_str() const {
160 if (to_age.has_value()) {
161 return std::to_string(to_age.value());
162 }
163
164 return "null";
165 }
166
167 auto operator<=>(const PolicyImpactInfo &rhs) const = default;
168};
169
172 std::string risk_factor{};
173 double value{};
174
175 auto operator<=>(const PolicyAdjustmentInfo &rhs) const = default;
176};
177
180 std::string identifier{};
182 std::vector<double> dynamics;
183 std::vector<double> coefficients;
184 std::vector<double> coverage_rates;
185 std::optional<unsigned int> coverage_cutoff_time{};
186 std::optional<unsigned int> child_cutoff_age{};
187 std::vector<PolicyAdjustmentInfo> adjustments;
188 std::string impact_type{};
189 std::vector<PolicyImpactInfo> impacts;
190
191 std::string to_coverage_cutoff_time_str() const {
192 if (coverage_cutoff_time.has_value()) {
193 return std::to_string(coverage_cutoff_time.value());
194 }
195
196 return "null";
197 }
198
199 std::string to_child_cutoff_age_str() const {
200 if (child_cutoff_age.has_value()) {
201 return std::to_string(child_cutoff_age.value());
202 }
203
204 return "null";
205 }
206
207 auto operator<=>(const PolicyScenarioInfo &rhs) const = default;
208};
209
211struct PIFInfo {
212 bool enabled{};
213 std::string data_root_path;
214 std::string risk_factor;
215 std::string scenario;
216
217 auto operator<=>(const PIFInfo &rhs) const = default;
218};
219
224 bool age{true};
225 bool gender{true};
226 bool region{false};
227 bool ethnicity{false};
230 std::optional<int> max_age_for_linear_models;
232 std::string gender2{"male"};
234
235 struct Income {
236 bool enabled{true};
237 std::string type{"categorical"}; // "continuous" | "categorical"
238 std::string categories{"3"}; // "3" | "4" | "5"
240 bool trended{false};
245
247 bool enabled{true};
248 std::string type{"simple"}; // "simple" | "continuous"
250 bool trended{false};
252
257
258 struct Trend {
259 bool enabled{false};
260 std::string type{"null"}; // "null" | "trend" | "upf_trend" | "income_trend"
262
263 struct TwoStage {
264 bool use_logistic{false};
265 std::string logistic_file;
267};
268} // namespace hgps::input
Data structures containing model parameters and configuration options.
Definition configuration.cpp:75
Baseline adjustment information.
Definition poco.h:79
std::map< std::string, std::filesystem::path > file_names
Definition poco.h:83
std::string delimiter
Definition poco.h:81
std::string encoding
Definition poco.h:82
std::string format
Definition poco.h:80
IncomeStratumFactorsMeanConfig income_stratum_factors_mean
Definition poco.h:86
auto operator<=>(const BaselineInfo &rhs) const =default
Information about a data file to be loaded.
Definition poco.h:20
std::string format
Definition poco.h:22
std::map< std::string, std::string > columns
Definition poco.h:24
std::string delimiter
Definition poco.h:23
std::filesystem::path name
Definition poco.h:21
auto operator<=>(const FileInfo &rhs) const =default
auto operator<=>(const IncomeStratumFactorsMeanConfig &rhs) const =default
std::vector< IncomeStratumFactorsMeanStratumEntry > strata
Definition poco.h:73
std::size_t adjustment_income_stratum_count
Definition poco.h:72
std::filesystem::path factorsmean_male
Definition poco.h:53
std::filesystem::path factorsmean_female
Definition poco.h:54
auto operator<=>(const IncomeStratumFactorsMeanStratumEntry &rhs) const =default
std::string id
Stable label for logs and for mapping persons to this stratum (e.g. "Quintile1").
Definition poco.h:52
std::vector< std::string > regions
Definition poco.h:118
std::vector< int > years
Definition poco.h:121
std::optional< int > age_min
Definition poco.h:115
std::vector< std::string > ethnicities
Definition poco.h:119
std::vector< std::string > risk_factors
Definition poco.h:120
std::optional< int > age_max
Definition poco.h:116
auto operator<=>(const IndividualIdTrackingConfig &rhs) const =default
bool enabled
Definition poco.h:114
std::string scenarios
Definition poco.h:122
std::string gender
Definition poco.h:117
User-defined model and parameter information.
Definition poco.h:101
unsigned int policy_start_year
Definition poco.h:107
std::unordered_map< std::string, std::filesystem::path > risk_factor_models
Definition poco.h:103
BaselineInfo baseline_adjustment
Definition poco.h:104
std::vector< RiskFactorInfo > risk_factors
Definition poco.h:102
Experiment output folder and file information.
Definition poco.h:128
std::string file_name
Definition poco.h:131
auto operator<=>(const OutputInfo &rhs) const =default
std::string folder
Definition poco.h:130
std::optional< IndividualIdTrackingConfig > individual_id_tracking
Definition poco.h:132
unsigned int comorbidities
Definition poco.h:129
Population Impact Fraction (PIF) configuration.
Definition poco.h:211
auto operator<=>(const PIFInfo &rhs) const =default
std::string risk_factor
Definition poco.h:214
std::string data_root_path
Definition poco.h:213
bool enabled
Definition poco.h:212
std::string scenario
Definition poco.h:215
Extra adjustments made to a policy.
Definition poco.h:171
std::string risk_factor
Definition poco.h:172
auto operator<=>(const PolicyAdjustmentInfo &rhs) const =default
double value
Definition poco.h:173
Information about policy impacts.
Definition poco.h:154
double impact_value
Definition poco.h:156
std::string risk_factor
Definition poco.h:155
unsigned int from_age
Definition poco.h:157
std::optional< unsigned int > to_age
Definition poco.h:158
std::string to_age_str() const
Definition poco.h:159
auto operator<=>(const PolicyImpactInfo &rhs) const =default
Information about the period over which a policy is applied.
Definition poco.h:138
std::optional< int > finish_time
Definition poco.h:140
std::string to_finish_time_str() const
Definition poco.h:142
int start_time
Definition poco.h:139
auto operator<=>(const PolicyPeriodInfo &rhs) const =default
Information about an active policy intervention.
Definition poco.h:179
std::optional< unsigned int > coverage_cutoff_time
Definition poco.h:185
std::string to_coverage_cutoff_time_str() const
Definition poco.h:191
auto operator<=>(const PolicyScenarioInfo &rhs) const =default
std::string impact_type
Definition poco.h:188
PolicyPeriodInfo active_period
Definition poco.h:181
std::vector< PolicyImpactInfo > impacts
Definition poco.h:189
std::vector< double > coverage_rates
Definition poco.h:184
std::vector< double > coefficients
Definition poco.h:183
std::string identifier
Definition poco.h:180
std::vector< double > dynamics
Definition poco.h:182
std::vector< PolicyAdjustmentInfo > adjustments
Definition poco.h:187
std::optional< unsigned int > child_cutoff_age
Definition poco.h:186
std::string to_child_cutoff_age_str() const
Definition poco.h:199
std::string gender2
Which sex gets value 1 for the gender2 CSV regression row ("male" or "female").
Definition poco.h:232
std::optional< int > max_age_for_linear_models
Definition poco.h:230
bool trended
Definition poco.h:240
std::string categories
Definition poco.h:238
bool income_based_csv_output
Definition poco.h:243
std::string type
Definition poco.h:237
bool enabled
Definition poco.h:236
bool adjust_to_factors_mean
Definition poco.h:239
bool adjust_to_factors_mean
Definition poco.h:254
std::string type
Definition poco.h:260
bool enabled
Definition poco.h:259
std::string logistic_file
Definition poco.h:265
bool use_logistic
Definition poco.h:264
struct hgps::input::ProjectRequirements::TwoStage two_stage
struct hgps::input::ProjectRequirements::Income income
struct hgps::input::ProjectRequirements::PhysicalActivity physical_activity
struct hgps::input::ProjectRequirements::RiskFactors risk_factors
struct hgps::input::ProjectRequirements::Demographics demographics
struct hgps::input::ProjectRequirements::Trend trend
Information about a health risk factor.
Definition poco.h:92
std::optional< hgps::core::DoubleInterval > range
Definition poco.h:95
std::string name
Definition poco.h:93
auto operator<=>(const RiskFactorInfo &rhs) const =default
int level
Definition poco.h:94
Socio-economic status (SES) model inputs.
Definition poco.h:39
auto operator<=>(const SESInfo &) const =default
std::string function
Definition poco.h:40
std::vector< double > parameters
Definition poco.h:41
Experiment's population settings.
Definition poco.h:30
auto operator<=>(const SettingsInfo &rhs) const =default
hgps::core::IntegerInterval age_range
Definition poco.h:32
float size_fraction
Definition poco.h:33
std::string country
Definition poco.h:31