Health-GPS  1.2.2.0
Global Health Policy Simulation model (Health-GPS)
fiscal_scenario.h
Go to the documentation of this file.
1 #pragma once
3 
4 #include <cstdint>
5 #include <functional>
6 #include <set>
7 #include <string>
8 
9 namespace hgps {
10 
12 enum class FiscalImpactType : uint8_t {
14  pessimist,
15 
17  optimist
18 };
19 
23 
28  FiscalPolicyDefinition(const FiscalImpactType type_of_impact, const PolicyInterval &period,
29  const std::vector<PolicyImpact> &sorted_impacts)
30  : impact_type{type_of_impact}, active_period{period}, impacts{sorted_impacts} {}
31 
34 
37 
39  std::vector<PolicyImpact> impacts;
40 };
41 
44  public:
46 
53 
54  SyncChannel &channel() override;
55 
56  void clear() noexcept override;
57 
58  double apply(Random &generator, Person &entity, int time,
59  const core::Identifier &risk_factor_key, double value) override;
60 
61  const PolicyInterval &active_period() const noexcept override;
62 
63  const std::vector<PolicyImpact> &impacts() const noexcept override;
64 
65  private:
66  std::reference_wrapper<SyncChannel> channel_;
67  FiscalPolicyDefinition definition_;
68  std::set<core::Identifier> factor_impact_;
69  std::unordered_map<std::size_t, int> interventions_book_{};
70 };
71 
72 FiscalImpactType parse_fiscal_impact_type(std::string impact);
73 } // namespace hgps
Thread-safe communication channel data type.
Definition: channel.h:24
Implements the fiscal policy intervention scenario.
Definition: fiscal_scenario.h:43
const PolicyInterval & active_period() const noexcept override
Gets the intervention active period.
Definition: fiscal_scenario.cpp:105
const std::vector< PolicyImpact > & impacts() const noexcept override
Gets the intervention impacts by risk factor and age range.
Definition: fiscal_scenario.cpp:109
SyncChannel & channel() override
Gets the Scenario communication channel.
Definition: fiscal_scenario.cpp:31
void clear() noexcept override
Clear the scenario log book data.
Definition: fiscal_scenario.cpp:33
double apply(Random &generator, Person &entity, int time, const core::Identifier &risk_factor_key, double value) override
Applies this Scenario to the Person instance.
Definition: fiscal_scenario.cpp:35
Health-GPS scripted intervention policy scenario interface.
Definition: intervention_scenario.h:19
General purpose Random number generator algorithms.
Definition: random_algorithm.h:8
Top-level namespace for Health-GPS C++ API.
Definition: analysis_definition.h:8
FiscalImpactType
Health GPS policy impact types enumeration.
Definition: fiscal_scenario.h:12
@ optimist
Incremental impact overtime - option 2.
@ pessimist
Variable impact overtime - option 1.
FiscalImpactType parse_fiscal_impact_type(std::string impact_type)
Definition: fiscal_scenario.cpp:113
Global namespace.
Definition: jsonparser.h:88
Fiscal policy intervention definition data type.
Definition: fiscal_scenario.h:21
FiscalImpactType impact_type
The fiscal impact type.
Definition: fiscal_scenario.h:33
FiscalPolicyDefinition(const FiscalImpactType type_of_impact, const PolicyInterval &period, const std::vector< PolicyImpact > &sorted_impacts)
Initialise a new instance of the FiscalPolicyDefinition structure.
Definition: fiscal_scenario.h:28
std::vector< PolicyImpact > impacts
Intervention impacts on risk factors.
Definition: fiscal_scenario.h:39
PolicyInterval active_period
Intervention active period.
Definition: fiscal_scenario.h:36
Defines a virtual population person data type.
Definition: person.h:40
Defines the policy impact on risk factors data structure.
Definition: intervention_scenario.h:49
Defines the policy active interval.
Definition: intervention_scenario.h:97