Health-GPS  1.2.2.0
Global Health Policy Simulation model (Health-GPS)
disease.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "interfaces.h"
4 #include "modelinput.h"
5 #include "repository.h"
6 #include "runtime_context.h"
7 
8 namespace hgps {
10 class DiseaseModule final : public DiseaseHostModule {
11 
12  public:
13  DiseaseModule() = delete;
16  DiseaseModule(std::map<core::Identifier, std::shared_ptr<DiseaseModel>> &&models);
17 
18  SimulationModuleType type() const noexcept override;
19 
20  const std::string &name() const noexcept override;
21 
22  std::size_t size() const noexcept override;
23 
24  bool contains(const core::Identifier &disease_id) const noexcept override;
25 
30  std::shared_ptr<DiseaseModel> &operator[](const core::Identifier &disease_id);
31 
36  const std::shared_ptr<DiseaseModel> &operator[](const core::Identifier &disease_id) const;
37 
38  void initialise_population(RuntimeContext &context) override;
39 
40  void update_population(RuntimeContext &context) override;
41 
42  double get_excess_mortality(const core::Identifier &disease_code,
43  const Person &entity) const noexcept override;
44 
45  private:
46  std::map<core::Identifier, std::shared_ptr<DiseaseModel>> models_;
47  std::string name_{"Disease"};
48 };
49 
55 std::unique_ptr<DiseaseModule> build_disease_module(Repository &repository,
56  const ModelInput &config);
57 } // namespace hgps
Generic disease module interface to host multiple disease models.
Definition: interfaces.h:79
Diseases model interface.
Definition: interfaces.h:170
Defines the disease module container to hold disease models.
Definition: disease.h:10
double get_excess_mortality(const core::Identifier &disease_code, const Person &entity) const noexcept override
Gets the mortality rate associated with a disease for an individual.
Definition: disease.cpp:48
void update_population(RuntimeContext &context) override
Updates the virtual population status.
Definition: disease.cpp:42
std::size_t size() const noexcept override
Gets the number of diseases model hosted.
Definition: disease.cpp:16
SimulationModuleType type() const noexcept override
Gets the module type identifier.
Definition: disease.cpp:12
void initialise_population(RuntimeContext &context) override
Initialises the virtual population.
Definition: disease.cpp:31
bool contains(const core::Identifier &disease_id) const noexcept override
Indicates whether the host contains an disease identified by code.
Definition: disease.cpp:18
const std::string & name() const noexcept override
Gets the module name.
Definition: disease.cpp:14
Defines the Simulation runtime context data type.
Definition: runtime_context.h:21
Top-level namespace for Health-GPS C++ API.
Definition: analysis_definition.h:8
std::unique_ptr< DiseaseModule > build_disease_module(Repository &repository, const ModelInput &config)
Builds a new instance of the DiseaseModule using the given data infrastructure.
Definition: disease.cpp:57
SimulationModuleType
Health GPS simulation modules types enumeration.
Definition: interfaces.h:11
Global namespace.
Definition: jsonparser.h:88
Defines a virtual population person data type.
Definition: person.h:40
Entity unique identifier data type.
Definition: identifier.h:17