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