Building Medical Digital Twins with Pulse: Open Source Simulation Tools for Developers and Researchers
×
SECardiovascularSystem.h
1 /* Distributed under the Apache License, Version 2.0.
2  See accompanying NOTICE file for details.*/
3 
4 #pragma once
5 #include "cdm/properties/SEScalar.h"
6 #include "cdm/system/SESystem.h"
7 
8 // Keep enums in sync with appropriate schema/cdm/Physiology.proto file !!
9 enum class eHeartRhythm
10 {
11  NormalSinus = 0,
12  SinusBradycardia,
13  SinusTachycardia,
14  SinusPulselessElectricalActivity,
15  Asystole,
16  CoarseVentricularFibrillation,
17  FineVentricularFibrillation,
18  PulselessVentricularTachycardia,
19  StableVentricularTachycardia,
20  UnstableVentricularTachycardia
21 };
22 extern CDM_DECL const std::string& eHeartRhythm_Name(eHeartRhythm m);
23 
24 class CDM_DECL SECardiovascularSystem : public SESystem
25 {
26  friend class PBPhysiology;//friend the serialization class
27 public:
28 
30  virtual ~SECardiovascularSystem();
31 
32  void Clear() override;// Deletes all members
33 
34  const SEScalar* GetScalar(const std::string& name) override;
35 
36  virtual bool HasArterialPressure() const;
37  virtual SEScalarPressure& GetArterialPressure();
38  virtual double GetArterialPressure(const PressureUnit& unit) const;
39 
40  virtual bool HasBloodVolume() const;
41  virtual SEScalarVolume& GetBloodVolume();
42  virtual double GetBloodVolume(const VolumeUnit& unit) const;
43 
44  virtual bool HasCardiacIndex() const;
45  virtual SEScalarVolumePerTimeArea& GetCardiacIndex();
46  virtual double GetCardiacIndex(const VolumePerTimeAreaUnit& unit) const;
47 
48  virtual bool HasCardiacOutput() const;
49  virtual SEScalarVolumePerTime& GetCardiacOutput();
50  virtual double GetCardiacOutput(const VolumePerTimeUnit& unit) const;
51 
52  virtual bool HasCentralVenousPressure() const;
53  virtual SEScalarPressure& GetCentralVenousPressure();
54  virtual double GetCentralVenousPressure(const PressureUnit& unit) const;
55 
56  virtual bool HasCerebralBloodFlow() const;
57  virtual SEScalarVolumePerTime& GetCerebralBloodFlow();
58  virtual double GetCerebralBloodFlow(const VolumePerTimeUnit& unit) const;
59 
60  virtual bool HasCerebralPerfusionPressure() const;
61  virtual SEScalarPressure& GetCerebralPerfusionPressure();
62  virtual double GetCerebralPerfusionPressure(const PressureUnit& unit) const;
63 
64  virtual bool HasCoronaryPerfusionPressure() const;
65  virtual SEScalarPressure& GetCoronaryPerfusionPressure();
66  virtual double GetCoronaryPerfusionPressure(const PressureUnit& unit) const;
67 
68  virtual bool HasDiastolicArterialPressure() const;
69  virtual SEScalarPressure& GetDiastolicArterialPressure();
70  virtual double GetDiastolicArterialPressure(const PressureUnit& unit) const;
71 
72  virtual bool HasDiastolicLeftHeartPressure() const;
73  virtual SEScalarPressure& GetDiastolicLeftHeartPressure();
74  virtual double GetDiastolicLeftHeartPressure(const PressureUnit& unit) const;
75 
76  virtual bool HasDiastolicRightHeartPressure() const;
77  virtual SEScalarPressure& GetDiastolicRightHeartPressure();
78  virtual double GetDiastolicRightHeartPressure(const PressureUnit& unit) const;
79 
80  virtual bool HasHeartEjectionFraction() const;
81  virtual SEScalar0To1& GetHeartEjectionFraction();
82  virtual double GetHeartEjectionFraction() const;
83 
84  virtual bool HasHeartRate() const;
85  virtual SEScalarFrequency& GetHeartRate();
86  virtual double GetHeartRate(const FrequencyUnit& unit) const;
87 
88  virtual eHeartRhythm GetHeartRhythm() const;
89  virtual void SetHeartRhythm(eHeartRhythm Rhythm);
90 
91  virtual bool HasHeartStrokeVolume() const;
92  virtual SEScalarVolume& GetHeartStrokeVolume();
93  virtual double GetHeartStrokeVolume(const VolumeUnit& unit) const;
94 
95  virtual bool HasIntracranialPressure() const;
96  virtual SEScalarPressure& GetIntracranialPressure();
97  virtual double GetIntracranialPressure(const PressureUnit& unit) const;
98 
99  virtual bool HasMeanArterialPressure() const;
100  virtual SEScalarPressure& GetMeanArterialPressure();
101  virtual double GetMeanArterialPressure(const PressureUnit& unit) const;
102 
103  virtual bool HasMeanArterialCarbonDioxidePartialPressure() const;
104  virtual SEScalarPressure& GetMeanArterialCarbonDioxidePartialPressure();
105  virtual double GetMeanArterialCarbonDioxidePartialPressure(const PressureUnit& unit) const;
106 
107  virtual bool HasMeanArterialCarbonDioxidePartialPressureDelta() const;
108  virtual SEScalarPressure& GetMeanArterialCarbonDioxidePartialPressureDelta();
109  virtual double GetMeanArterialCarbonDioxidePartialPressureDelta(const PressureUnit& unit) const;
110 
111  virtual bool HasMeanCentralVenousPressure() const;
112  virtual SEScalarPressure& GetMeanCentralVenousPressure();
113  virtual double GetMeanCentralVenousPressure(const PressureUnit& unit) const;
114 
115  virtual bool HasMeanSkinFlow() const;
116  virtual SEScalarVolumePerTime& GetMeanSkinFlow();
117  virtual double GetMeanSkinFlow(const VolumePerTimeUnit& unit) const;
118 
119  virtual bool HasPeripheralPerfusionIndex() const;
120  virtual SEScalar0To1& GetPeripheralPerfusionIndex();
121  virtual double GetPeripheralPerfusionIndex() const;
122 
123  virtual bool HasPulmonaryArterialPressure() const;
124  virtual SEScalarPressure& GetPulmonaryArterialPressure();
125  virtual double GetPulmonaryArterialPressure(const PressureUnit& unit) const;
126 
127  virtual bool HasPulmonaryCapillariesCoverageFraction() const;
128  virtual SEScalar0To1& GetPulmonaryCapillariesCoverageFraction();
129  virtual double GetPulmonaryCapillariesCoverageFraction() const;
130 
131  virtual bool HasPulmonaryCapillariesWedgePressure() const;
132  virtual SEScalarPressure& GetPulmonaryCapillariesWedgePressure();
133  virtual double GetPulmonaryCapillariesWedgePressure(const PressureUnit& unit) const;
134 
135  virtual bool HasPulmonaryDiastolicArterialPressure() const;
136  virtual SEScalarPressure& GetPulmonaryDiastolicArterialPressure();
137  virtual double GetPulmonaryDiastolicArterialPressure(const PressureUnit& unit) const;
138 
139  virtual bool HasPulmonaryMeanArterialPressure() const;
140  virtual SEScalarPressure& GetPulmonaryMeanArterialPressure();
141  virtual double GetPulmonaryMeanArterialPressure(const PressureUnit& unit) const;
142 
143  virtual bool HasPulmonaryMeanCapillaryFlow() const;
144  virtual SEScalarVolumePerTime& GetPulmonaryMeanCapillaryFlow();
145  virtual double GetPulmonaryMeanCapillaryFlow(const VolumePerTimeUnit& unit) const;
146 
147  virtual bool HasPulmonaryMeanShuntFlow() const;
148  virtual SEScalarVolumePerTime& GetPulmonaryMeanShuntFlow();
149  virtual double GetPulmonaryMeanShuntFlow(const VolumePerTimeUnit& unit) const;
150 
151  virtual bool HasPulmonarySystolicArterialPressure() const;
152  virtual SEScalarPressure& GetPulmonarySystolicArterialPressure();
153  virtual double GetPulmonarySystolicArterialPressure(const PressureUnit& unit) const;
154 
155  virtual bool HasPulmonaryVascularResistance() const;
156  virtual SEScalarPressureTimePerVolume& GetPulmonaryVascularResistance();
157  virtual double GetPulmonaryVascularResistance(const PressureTimePerVolumeUnit& unit) const;
158 
159  virtual bool HasPulmonaryVascularResistanceIndex() const;
160  virtual SEScalarPressureTimePerVolumeArea& GetPulmonaryVascularResistanceIndex();
161  virtual double GetPulmonaryVascularResistanceIndex(const PressureTimePerVolumeAreaUnit& unit) const;
162 
163  virtual bool HasPulsePressure() const;
164  virtual SEScalarPressure& GetPulsePressure();
165  virtual double GetPulsePressure(const PressureUnit& unit) const;
166 
167  virtual bool HasSystemicVascularResistance() const;
168  virtual SEScalarPressureTimePerVolume& GetSystemicVascularResistance();
169  virtual double GetSystemicVascularResistance(const PressureTimePerVolumeUnit& unit) const;
170 
171  virtual bool HasSystolicArterialPressure() const;
172  virtual SEScalarPressure& GetSystolicArterialPressure();
173  virtual double GetSystolicArterialPressure(const PressureUnit& unit) const;
174 
175  virtual bool HasSystolicLeftHeartPressure() const;
176  virtual SEScalarPressure& GetSystolicLeftHeartPressure();
177  virtual double GetSystolicLeftHeartPressure(const PressureUnit& unit) const;
178 
179  virtual bool HasSystolicRightHeartPressure() const;
180  virtual SEScalarPressure& GetSystolicRightHeartPressure();
181  virtual double GetSystolicRightHeartPressure(const PressureUnit& unit) const;
182 
183  virtual bool HasTotalHemorrhageRate() const;
184  virtual SEScalarVolumePerTime& GetTotalHemorrhageRate();
185  virtual double GetTotalHemorrhageRate(const VolumePerTimeUnit& unit) const;
186 
187  virtual bool HasTotalHemorrhagedVolume() const;
188  virtual SEScalarVolume& GetTotalHemorrhagedVolume();
189  virtual double GetTotalHemorrhagedVolume(const VolumeUnit& unit) const;
190 
191  virtual bool HasTotalPulmonaryPerfusion() const;
192  virtual SEScalarVolumePerTime& GetTotalPulmonaryPerfusion();
193  virtual double GetTotalPulmonaryPerfusion(const VolumePerTimeUnit& unit) const;
194 
195 protected:
196 
237 };
Definition: SEScalarFrequency.h:8
Definition: Logger.h:71
Definition: PBPhysiology.h:24
Definition: SEScalarPressureTimePerVolumeArea.h:8
Definition: SEScalarPressureTimePerVolume.h:8
Definition: SEScalarPressure.h:8
Definition: SECardiovascularSystem.h:25
SEScalarPressure * m_PulmonaryDiastolicArterialPressure
Definition: SECardiovascularSystem.h:222
SEScalarPressureTimePerVolume * m_PulmonaryVascularResistance
Definition: SECardiovascularSystem.h:227
SEScalarVolumePerTime * m_PulmonaryMeanShuntFlow
Definition: SECardiovascularSystem.h:225
SEScalarPressure * m_CerebralPerfusionPressure
Definition: SECardiovascularSystem.h:203
SEScalarPressure * m_PulmonaryArterialPressure
Definition: SECardiovascularSystem.h:219
SEScalarPressure * m_SystolicLeftHeartPressure
Definition: SECardiovascularSystem.h:231
SEScalar0To1 * m_HeartEjectionFraction
Definition: SECardiovascularSystem.h:208
SEScalarVolume * m_BloodVolume
Definition: SECardiovascularSystem.h:198
SEScalarPressure * m_MeanArterialPressure
Definition: SECardiovascularSystem.h:213
SEScalarPressure * m_PulmonaryMeanArterialPressure
Definition: SECardiovascularSystem.h:223
SEScalarPressure * m_ArterialPressure
Definition: SECardiovascularSystem.h:197
SEScalarEnum< eHeartRhythm > m_HeartRhythm
Definition: SECardiovascularSystem.h:210
SEScalarPressureTimePerVolumeArea * m_PulmonaryVascularResistanceIndex
Definition: SECardiovascularSystem.h:228
SEScalarPressure * m_SystolicRightHeartPressure
Definition: SECardiovascularSystem.h:232
SEScalar0To1 * m_PulmonaryCapillariesCoverageFraction
Definition: SECardiovascularSystem.h:220
SEScalarPressureTimePerVolume * m_SystemicVascularResistance
Definition: SECardiovascularSystem.h:233
SEScalarPressure * m_DiastolicRightHeartPressure
Definition: SECardiovascularSystem.h:207
SEScalar0To1 * m_PeripheralPerfusionIndex
Definition: SECardiovascularSystem.h:218
SEScalarPressure * m_PulsePressure
Definition: SECardiovascularSystem.h:229
SEScalarVolumePerTime * m_CerebralBloodFlow
Definition: SECardiovascularSystem.h:202
SEScalarPressure * m_DiastolicLeftHeartPressure
Definition: SECardiovascularSystem.h:206
SEScalarPressure * m_PulmonaryCapillariesWedgePressure
Definition: SECardiovascularSystem.h:221
SEScalarPressure * m_DiastolicArterialPressure
Definition: SECardiovascularSystem.h:205
SEScalarPressure * m_MeanArterialCarbonDioxidePartialPressure
Definition: SECardiovascularSystem.h:214
SEScalarVolumePerTimeArea * m_CardiacIndex
Definition: SECardiovascularSystem.h:199
SEScalarVolume * m_TotalHemorrhagedVolume
Definition: SECardiovascularSystem.h:235
SEScalarVolume * m_HeartStrokeVolume
Definition: SECardiovascularSystem.h:211
SEScalarFrequency * m_HeartRate
Definition: SECardiovascularSystem.h:209
SEScalarPressure * m_SystolicArterialPressure
Definition: SECardiovascularSystem.h:230
SEScalarPressure * m_PulmonarySystolicArterialPressure
Definition: SECardiovascularSystem.h:226
SEScalarPressure * m_MeanArterialCarbonDioxidePartialPressureDelta
Definition: SECardiovascularSystem.h:215
SEScalarPressure * m_CoronaryPerfusionPressure
Definition: SECardiovascularSystem.h:204
SEScalarVolumePerTime * m_CardiacOutput
Definition: SECardiovascularSystem.h:200
SEScalarVolumePerTime * m_TotalHemorrhageRate
Definition: SECardiovascularSystem.h:234
SEScalarPressure * m_CentralVenousPressure
Definition: SECardiovascularSystem.h:201
SEScalarPressure * m_IntracranialPressure
Definition: SECardiovascularSystem.h:212
SEScalarVolumePerTime * m_MeanSkinFlow
Definition: SECardiovascularSystem.h:217
SEScalarPressure * m_MeanCentralVenousPressure
Definition: SECardiovascularSystem.h:216
SEScalarVolumePerTime * m_PulmonaryMeanCapillaryFlow
Definition: SECardiovascularSystem.h:224
SEScalarVolumePerTime * m_TotalPulmonaryPerfusion
Definition: SECardiovascularSystem.h:236
Definition: SEScalar0To1.h:8
Definition: SEScalarFrequency.h:26
Definition: SEScalar.h:19
Definition: SEScalarPressure.h:29
Definition: SEScalarPressureTimePerVolumeArea.h:26
Definition: SEScalarPressureTimePerVolume.h:29
Definition: SEScalarVolume.h:28
Definition: SEScalarVolumePerTimeArea.h:26
Definition: SEScalarVolumePerTime.h:32
Definition: SESystem.h:8
virtual void Clear()
Definition: SESystem.cpp:17
virtual const SEScalar * GetScalar(const std::string &name)=0
Definition: SEScalarVolumePerTimeArea.h:8
Definition: SEScalarVolumePerTime.h:8
Definition: SEScalarVolume.h:8

Distributed under the Apache License, Version 2.0.

See accompanying NOTICE file for details.