Health-GPS  1.2.2.0
Global Health Policy Simulation model (Health-GPS)
simple_policy_scenario.h
Go to the documentation of this file.
1 #pragma once
2 
4 
5 #include <functional>
6 #include <map>
7 #include <optional>
8 
9 namespace hgps {
10 
12 enum class PolicyImpactType : uint8_t {
14  absolute,
15 
17  relative,
18 };
19 
28  const std::vector<PolicyImpact> &sorted_impacts,
29  const PolicyInterval &period)
30  : impact_type{type_of_impact}, impacts{sorted_impacts}, active_period{period} {}
31 
34 
36  std::vector<PolicyImpact> impacts;
37 
40 };
41 
44  public:
46 
51 
52  SyncChannel &channel() override;
53 
54  void clear() noexcept override;
55 
56  double apply(Random &generator, Person &entity, int time,
57  const core::Identifier &risk_factor_key, double value) override;
58 
59  const PolicyImpactType &impact_type() const noexcept;
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  SimplePolicyDefinition definition_;
68  std::map<core::Identifier, PolicyImpact> factor_impact_;
69 };
70 } // namespace hgps
Thread-safe communication channel data type.
Definition: channel.h:24
Health-GPS scripted intervention policy scenario interface.
Definition: intervention_scenario.h:19
General purpose Random number generator algorithms.
Definition: random_algorithm.h:8
Defines the simple development intervention scenario.
Definition: simple_policy_scenario.h:43
void clear() noexcept override
Clear the scenario log book data.
Definition: simple_policy_scenario.cpp:16
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: simple_policy_scenario.cpp:30
SyncChannel & channel() override
Gets the Scenario communication channel.
Definition: simple_policy_scenario.cpp:14
const PolicyInterval & active_period() const noexcept override
Gets the intervention active period.
Definition: simple_policy_scenario.cpp:22
const std::vector< PolicyImpact > & impacts() const noexcept override
Gets the intervention impacts by risk factor and age range.
Definition: simple_policy_scenario.cpp:26
const PolicyImpactType & impact_type() const noexcept
Definition: simple_policy_scenario.cpp:18
Top-level namespace for Health-GPS C++ API.
Definition: analysis_definition.h:8
PolicyImpactType
Health GPS policy impact types enumeration.
Definition: simple_policy_scenario.h:12
@ relative
Relative impact.
@ absolute
Absolute impact.
Global namespace.
Definition: jsonparser.h:88
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
Simple intervention policy definition data type.
Definition: simple_policy_scenario.h:21
PolicyImpactType impact_type
Intervention impact type.
Definition: simple_policy_scenario.h:33
SimplePolicyDefinition(const PolicyImpactType &type_of_impact, const std::vector< PolicyImpact > &sorted_impacts, const PolicyInterval &period)
Initialise a new instance of the SimplePolicyDefinition structure.
Definition: simple_policy_scenario.h:27
PolicyInterval active_period
Active implementation period.
Definition: simple_policy_scenario.h:39
std::vector< PolicyImpact > impacts
Intervention impacts on risk factors.
Definition: simple_policy_scenario.h:36