Health-GPS  1.2.2.0
Global Health Policy Simulation model (Health-GPS)
converter.h
Go to the documentation of this file.
1 #pragma once
2 #include "analysis_definition.h"
3 #include "disease_definition.h"
4 #include "disease_table.h"
5 #include "gender_table.h"
6 #include "life_table.h"
7 #include "lms_definition.h"
8 #include "modelinput.h"
9 #include "relative_risk.h"
10 
12 #include "HealthGPS.Core/poco.h"
13 
14 namespace hgps {
16 namespace detail {
21 
24 
27 
29  std::vector<MappingEntry> &risk_factors;
30 };
31 
34  public:
35  StoreConverter() = delete;
36 
37  static core::Gender to_gender(const std::string name);
38 
40 
42 
44 
46 
47  static LifeTable to_life_table(const std::vector<core::BirthItem> &births,
48  const std::vector<core::MortalityItem> &deaths);
49 
51 
52  static LmsDefinition to_lms_definition(const std::vector<core::LmsDataRow> &dataset);
53 };
54 
59 
64 template <std::floating_point TYPE>
65 static std::vector<TYPE> create_cdf(std::vector<TYPE> &frequency) {
66  auto sum = std::accumulate(std::cbegin(frequency), std::cend(frequency), 0.0f);
67  auto pdf = std::vector<float>(frequency.size());
68  if (sum > 0) {
69  std::transform(std::cbegin(frequency), std::cend(frequency), pdf.begin(),
70  [&sum](auto &v) { return v / sum; });
71  } else {
72  auto prob = static_cast<TYPE>(1.0 / (pdf.size() - 1));
73  std::fill(pdf.begin(), pdf.end(), prob);
74  }
75 
76  auto cdf = std::vector<float>(pdf.size());
77  cdf[0] = pdf[0];
78  for (size_t i = 1; i < pdf.size(); i++) {
79  cdf[i] = cdf[i - 1] + pdf[i];
80  }
81 
82  return cdf;
83 }
84 } // namespace detail
85 } // namespace hgps
Defines the age and gender lookup table data type.
Definition: gender_table.h:120
Burden of diseases (BoD) analysis module definition data type.
Definition: analysis_definition.h:11
Defines the disease measure table data type.
Definition: disease_table.h:51
Defines the population life table data type.
Definition: life_table.h:29
LMS (lambda-mu-sigma) model definition data type.
Definition: lms_definition.h:26
Defines the Simulation model inputs data type.
Definition: modelinput.h:43
Defines the relative risk factors lookup data type.
Definition: relative_risk.h:15
Defines the Health-GPS back-end data store interface for all implementations.
Definition: datastore.h:13
Back-end data stop POCO types converter to Health-GPS types.
Definition: converter.h:33
static core::Gender to_gender(const std::string name)
Definition: converter.cpp:9
static LmsDefinition to_lms_definition(const std::vector< core::LmsDataRow > &dataset)
Definition: converter.cpp:177
static RelativeRiskLookup to_relative_risk_lookup(const core::RelativeRiskEntity &entity)
Definition: converter.cpp:58
static AnalysisDefinition to_analysis_definition(const core::DiseaseAnalysisEntity &entity)
Definition: converter.cpp:109
static FloatAgeGenderTable to_relative_risk_table(const core::RelativeRiskEntity &entity)
Definition: converter.cpp:31
static DiseaseParameter to_disease_parameter(const core::CancerParameterEntity &entity)
Definition: converter.cpp:156
static LifeTable to_life_table(const std::vector< core::BirthItem > &births, const std::vector< core::MortalityItem > &deaths)
Definition: converter.cpp:141
static DiseaseTable to_disease_table(const core::DiseaseEntity &entity)
Definition: converter.cpp:21
Gender
Enumerates gender types.
Definition: forward_type.h:18
RelativeRisk create_relative_risk(const RelativeRiskInfo &info)
Creates the relative risk definition for a disease.
Definition: converter.cpp:79
Top-level namespace for Health-GPS C++ API.
Definition: analysis_definition.h:8
Defines the cancer disease parameters data type.
Definition: disease_definition.h:14
Defines the relative risk factors data type.
Definition: relative_risk.h:79
Cancer disease parameters per country data structure.
Definition: disease.h:88
Burden of Diseases (BoD) analysis for a country data structure.
Definition: analysis.h:25
Disease full definition data structure.
Definition: disease.h:53
Disease information structure.
Definition: disease.h:13
Diseases relative risk effect table data structure.
Definition: disease.h:72
Collate the information for retrieving relative risks for a disease.
Definition: converter.h:18
const ModelInput & inputs
The model inputs.
Definition: converter.h:26
core::Datastore & manager
Back-end data store manager instance.
Definition: converter.h:23
std::vector< MappingEntry > & risk_factors
The risk factor model mappings.
Definition: converter.h:29
const core::DiseaseInfo & disease
The target disease information.
Definition: converter.h:20