Health-GPS  1.2.2.0
Global Health Policy Simulation model (Health-GPS)
default_disease_model.h
Go to the documentation of this file.
1 #pragma once
2 #include "disease_definition.h"
3 #include "gender_table.h"
4 #include "interfaces.h"
5 #include "weight_model.h"
6 
7 namespace hgps {
9 class DefaultDiseaseModel final : public DiseaseModel {
10  public:
11  DefaultDiseaseModel() = delete;
12 
17  DefaultDiseaseModel(DiseaseDefinition &definition, WeightModel &&classifier,
18  const core::IntegerInterval &age_range);
19 
20  core::DiseaseGroup group() const noexcept override;
21 
22  const core::Identifier &disease_type() const noexcept override;
23 
24  void initialise_disease_status(RuntimeContext &context) override;
25 
26  void initialise_average_relative_risk(RuntimeContext &context) override;
27 
28  void update_disease_status(RuntimeContext &context) override;
29 
30  double get_excess_mortality(const Person &entity) const noexcept override;
31 
32  private:
33  std::reference_wrapper<DiseaseDefinition> definition_;
34  WeightModel weight_classifier_;
35  DoubleAgeGenderTable average_relative_risk_;
36 
37  DoubleAgeGenderTable calculate_average_relative_risk(RuntimeContext &context);
38  double calculate_combined_relative_risk(const Person &entity, const int &start_time,
39  const int &time_now) const;
40  double calculate_relative_risk_for_diseases(const Person &entity, const int &start_time,
41  const int &time_now) const;
42  double calculate_relative_risk_for_risk_factors(const Person &entity) const;
43  double calculate_incidence_probability(const Person &entity, const int &start_time,
44  const int &time_now) const;
45 
46  void update_remission_cases(RuntimeContext &context);
47  void update_incidence_cases(RuntimeContext &context);
48 };
49 } // namespace hgps
Defines the standard diseases (non-cancer) model data type.
Definition: default_disease_model.h:9
double get_excess_mortality(const Person &entity) const noexcept override
Gets the excess mortality associated with a disease for an individual.
Definition: default_disease_model.cpp:90
void initialise_disease_status(RuntimeContext &context) override
Initialises the population disease status.
Definition: default_disease_model.cpp:25
void initialise_average_relative_risk(RuntimeContext &context) override
Initialises the average relative risks once all diseases status were initialised.
Definition: default_disease_model.cpp:45
void update_disease_status(RuntimeContext &context) override
Updates the disease cases remission and incidence in the population.
Definition: default_disease_model.cpp:84
const core::Identifier & disease_type() const noexcept override
Gets the model disease type unique identifier.
Definition: default_disease_model.cpp:21
core::DiseaseGroup group() const noexcept override
Gets the disease group.
Definition: default_disease_model.cpp:17
Implements the disease full definition data type.
Definition: disease_definition.h:45
Diseases model interface.
Definition: interfaces.h:170
Defines the Simulation runtime context data type.
Definition: runtime_context.h:21
Weight classification model polymorphic wrapper class.
Definition: weight_model.h:12
Numeric interval representation data type.
Definition: interval.h:10
DiseaseGroup
Enumerates supported diseases types.
Definition: forward_type.h:30
Top-level namespace for Health-GPS C++ API.
Definition: analysis_definition.h:8
Global namespace.
Definition: jsonparser.h:88
Defines a virtual population person data type.
Definition: person.h:40