Health-GPS  1.2.2.0
Global Health Policy Simulation model (Health-GPS)
default_cancer_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 {
8 
10 class DefaultCancerModel final : public DiseaseModel {
11  public:
12  DefaultCancerModel() = delete;
13 
18  DefaultCancerModel(DiseaseDefinition &definition, WeightModel &&classifier,
19  const core::IntegerInterval &age_range);
20 
21  core::DiseaseGroup group() const noexcept override;
22 
23  const core::Identifier &disease_type() const noexcept override;
24 
25  void initialise_disease_status(RuntimeContext &context) override;
26 
27  void initialise_average_relative_risk(RuntimeContext &context) override;
28 
29  void update_disease_status(RuntimeContext &context) override;
30 
31  double get_excess_mortality(const Person &entity) const noexcept override;
32 
33  private:
34  std::reference_wrapper<DiseaseDefinition> definition_;
35  WeightModel weight_classifier_;
36  DoubleAgeGenderTable average_relative_risk_;
37 
38  DoubleAgeGenderTable calculate_average_relative_risk(RuntimeContext &context);
39  double calculate_combined_relative_risk(const Person &entity, const int &start_time,
40  const int &time_now) const;
41  double calculate_relative_risk_for_diseases(const Person &entity, const int &start_time,
42  const int &time_now) const;
43  double calculate_relative_risk_for_risk_factors(const Person &entity) const;
44  double calculate_incidence_probability(const Person &entity, const int &start_time,
45  const int &time_now) const;
46 
47  void update_remission_cases(RuntimeContext &context);
48  void update_incidence_cases(RuntimeContext &context);
49  int calculate_time_since_onset(RuntimeContext &context, const core::Gender &gender) const;
50 };
51 } // namespace hgps
Defines the cancer disease model data type.
Definition: default_cancer_model.h:10
double get_excess_mortality(const Person &entity) const noexcept override
Gets the excess mortality associated with a disease for an individual.
Definition: default_cancer_model.cpp:92
void update_disease_status(RuntimeContext &context) override
Updates the disease cases remission and incidence in the population.
Definition: default_cancer_model.cpp:86
core::DiseaseGroup group() const noexcept override
Gets the disease group.
Definition: default_cancer_model.cpp:17
void initialise_disease_status(RuntimeContext &context) override
Initialises the population disease status.
Definition: default_cancer_model.cpp:25
const core::Identifier & disease_type() const noexcept override
Gets the model disease type unique identifier.
Definition: default_cancer_model.cpp:21
void initialise_average_relative_risk(RuntimeContext &context) override
Initialises the average relative risks once all diseases status were initialised.
Definition: default_cancer_model.cpp:47
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
Gender
Enumerates gender types.
Definition: forward_type.h:18
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