SECardiovascularSystem.h
1 /**************************************************************************************
2 Copyright 2015 Applied Research Associates, Inc.
3 Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4 this file except in compliance with the License. You may obtain a copy of the License
5 at:
6 http://www.apache.org/licenses/LICENSE-2.0
7 Unless required by applicable law or agreed to in writing, software distributed under
8 the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
9 CONDITIONS OF ANY KIND, either express or implied. See the License for the
10 specific language governing permissions and limitations under the License.
11 **************************************************************************************/
12 
13 #pragma once
14 #include <biogears/cdm/system/SESystem.h>
15 #include <biogears/schema/cdm/Physiology.hxx>
16 
17 namespace biogears {
18 class SEScalarPressure;
19 class PressureUnit;
20 class SEScalarVolume;
21 class VolumeUnit;
22 class SEScalarVolumePerTimeArea;
23 class VolumePerTimeAreaUnit;
24 class SEScalarVolumePerTime;
25 class VolumePerTimeUnit;
26 class SEScalarFraction;
27 class FractionUnit;
28 class SEScalarFrequency;
29 class FrequencyUnit;
30 class SEScalarFlowResistance;
31 class FlowResistanceUnit;
32 class SEScalarPressureTimePerVolumeArea;
33 class PressureTimePerVolumeAreaUnit;
34 
35 class BIOGEARS_API SECardiovascularSystem : public SESystem {
36 public:
38  ~SECardiovascularSystem() override;
39 
40  static size_t TypeHash() { return reinterpret_cast<size_t>(&TypeHash); }
41  static constexpr char const * const TypeTag() { return "SECardiovascularSystem"; }
42  const char* classname() const override { return TypeTag(); }
43  size_t hash_code() const override { return TypeHash(); }
44 
45  void Clear() override;
46 
47  const SEScalar* GetScalar(const char* name) override;
48  const SEScalar* GetScalar(const std::string& name) override;
49 
50  bool Load(const CDM::CardiovascularSystemData& in);
51  CDM::CardiovascularSystemData* Unload() const override;
52 
53  Tree<const char*> GetPhysiologyRequestGraph() const override;
54 protected:
55  void Unload(CDM::CardiovascularSystemData& data) const;
56 
57 public:
58  bool HasArterialPressure() const;
59  SEScalarPressure& GetArterialPressure();
60  double GetArterialPressure(const PressureUnit& unit) const;
61 
62  bool HasBloodVolume() const;
63  SEScalarVolume& GetBloodVolume();
64  double GetBloodVolume(const VolumeUnit& unit) const;
65 
66  bool HasCardiacIndex() const;
67  SEScalarVolumePerTimeArea& GetCardiacIndex();
68  double GetCardiacIndex(const VolumePerTimeAreaUnit& unit) const;
69 
70  bool HasCardiacOutput() const;
71  SEScalarVolumePerTime& GetCardiacOutput();
72  double GetCardiacOutput(const VolumePerTimeUnit& unit) const;
73 
74  bool HasCentralVenousPressure() const;
75  SEScalarPressure& GetCentralVenousPressure();
76  double GetCentralVenousPressure(const PressureUnit& unit) const;
77 
78  bool HasCerebralBloodFlow() const;
79  SEScalarVolumePerTime& GetCerebralBloodFlow();
80  double GetCerebralBloodFlow(const VolumePerTimeUnit& unit) const;
81 
82  bool HasCerebralPerfusionPressure() const;
83  SEScalarPressure& GetCerebralPerfusionPressure();
84  double GetCerebralPerfusionPressure(const PressureUnit& unit) const;
85 
86  bool HasDiastolicArterialPressure() const;
87  SEScalarPressure& GetDiastolicArterialPressure();
88  double GetDiastolicArterialPressure(const PressureUnit& unit) const;
89 
90  bool HasHeartEjectionFraction() const;
91  SEScalarFraction& GetHeartEjectionFraction();
92  double GetHeartEjectionFraction() const;
93 
94  bool HasHeartRate() const;
95  SEScalarFrequency& GetHeartRate();
96  double GetHeartRate(const FrequencyUnit& unit) const;
97 
98  CDM::enumHeartRhythm::value GetHeartRhythm() const;
99  void SetHeartRhythm(CDM::enumHeartRhythm::value Rhythm);
100  bool HasHeartRhythm() const;
101  void InvalidateHeartRhythm();
102 
103  bool HasHeartStrokeVolume() const;
104  SEScalarVolume& GetHeartStrokeVolume();
105  double GetHeartStrokeVolume(const VolumeUnit& unit) const;
106 
107  bool HasIntracranialPressure() const;
108  SEScalarPressure& GetIntracranialPressure();
109  double GetIntracranialPressure(const PressureUnit& unit) const;
110 
111  bool HasMeanArterialPressure() const;
112  SEScalarPressure& GetMeanArterialPressure();
113  double GetMeanArterialPressure(const PressureUnit& unit) const;
114 
115  bool HasMeanArterialCarbonDioxidePartialPressure() const;
116  SEScalarPressure& GetMeanArterialCarbonDioxidePartialPressure();
117  double GetMeanArterialCarbonDioxidePartialPressure(const PressureUnit& unit) const;
118 
119  bool HasMeanArterialCarbonDioxidePartialPressureDelta() const;
120  SEScalarPressure& GetMeanArterialCarbonDioxidePartialPressureDelta();
121  double GetMeanArterialCarbonDioxidePartialPressureDelta(const PressureUnit& unit) const;
122 
123  bool HasMeanCentralVenousPressure() const;
124  SEScalarPressure& GetMeanCentralVenousPressure();
125  double GetMeanCentralVenousPressure(const PressureUnit& unit) const;
126 
127  bool HasMeanSkinFlow() const;
128  SEScalarVolumePerTime& GetMeanSkinFlow();
129  double GetMeanSkinFlow(const VolumePerTimeUnit& unit) const;
130 
131  bool HasPulmonaryArterialPressure() const;
132  SEScalarPressure& GetPulmonaryArterialPressure();
133  double GetPulmonaryArterialPressure(const PressureUnit& unit) const;
134 
135  bool HasPulmonaryCapillariesWedgePressure() const;
136  SEScalarPressure& GetPulmonaryCapillariesWedgePressure();
137  double GetPulmonaryCapillariesWedgePressure(const PressureUnit& unit) const;
138 
139  bool HasPulmonaryDiastolicArterialPressure() const;
140  SEScalarPressure& GetPulmonaryDiastolicArterialPressure();
141  double GetPulmonaryDiastolicArterialPressure(const PressureUnit& unit) const;
142 
143  bool HasPulmonaryMeanArterialPressure() const;
144  SEScalarPressure& GetPulmonaryMeanArterialPressure();
145  double GetPulmonaryMeanArterialPressure(const PressureUnit& unit) const;
146 
147  bool HasPulmonaryMeanCapillaryFlow() const;
148  SEScalarVolumePerTime& GetPulmonaryMeanCapillaryFlow();
149  double GetPulmonaryMeanCapillaryFlow(const VolumePerTimeUnit& unit) const;
150 
151  bool HasPulmonaryMeanShuntFlow() const;
152  SEScalarVolumePerTime& GetPulmonaryMeanShuntFlow();
153  double GetPulmonaryMeanShuntFlow(const VolumePerTimeUnit& unit) const;
154 
155  bool HasPulmonarySystolicArterialPressure() const;
156  SEScalarPressure& GetPulmonarySystolicArterialPressure();
157  double GetPulmonarySystolicArterialPressure(const PressureUnit& unit) const;
158 
159  bool HasPulmonaryVascularResistance() const;
160  SEScalarFlowResistance& GetPulmonaryVascularResistance();
161  double GetPulmonaryVascularResistance(const FlowResistanceUnit& unit) const;
162 
163  bool HasPulmonaryVascularResistanceIndex() const;
164  SEScalarPressureTimePerVolumeArea& GetPulmonaryVascularResistanceIndex();
165  double GetPulmonaryVascularResistanceIndex(const PressureTimePerVolumeAreaUnit& unit) const;
166 
167  bool HasPulsePressure() const;
168  SEScalarPressure& GetPulsePressure();
169  double GetPulsePressure(const PressureUnit& unit) const;
170 
171  bool HasSystolicArterialPressure() const;
172  SEScalarPressure& GetSystolicArterialPressure();
173  double GetSystolicArterialPressure(const PressureUnit& unit) const;
174 
175  bool HasSystemicVascularResistance() const;
176  SEScalarFlowResistance& GetSystemicVascularResistance();
177  double GetSystemicVascularResistance(const FlowResistanceUnit& unit) const;
178 
179 protected:
210 };
211 }
SEScalarPressure * m_PulsePressure
Definition: SECardiovascularSystem.h:207
Definition: SEScalarFrequency.h:18
Definition: SEScalarFrequency.h:36
Definition: SEScalar.h:33
SEScalarPressure * m_CerebralPerfusionPressure
Definition: SECardiovascularSystem.h:186
SEScalarVolume * m_HeartStrokeVolume
Definition: SECardiovascularSystem.h:191
SEScalarVolume * m_BloodVolume
Definition: SECardiovascularSystem.h:181
SEScalarVolumePerTime * m_PulmonaryMeanCapillaryFlow
Definition: SECardiovascularSystem.h:202
size_t hash_code() const override
Definition: SECardiovascularSystem.h:43
SEScalarPressure * m_PulmonaryMeanArterialPressure
Definition: SECardiovascularSystem.h:201
SEScalarPressure * m_CentralVenousPressure
Definition: SECardiovascularSystem.h:184
SEScalarPressure * m_PulmonarySystolicArterialPressure
Definition: SECardiovascularSystem.h:204
Class corresponding to the CardiovascularSystemData schema type.
Definition: Physiology.hxx:5790
SEScalarPressure * m_MeanArterialCarbonDioxidePartialPressureDelta
Definition: SECardiovascularSystem.h:195
Definition: SEScalarFlowResistance.h:18
Definition: SESystem.h:27
Definition: SEScalarVolumePerTime.h:18
SEScalarPressure * m_MeanCentralVenousPressure
Definition: SECardiovascularSystem.h:196
value
Underlying enum type.
Definition: Physiology.hxx:5643
Definition: SEScalarPressureTimePerVolumeArea.h:19
SEScalarVolumePerTime * m_CardiacOutput
Definition: SECardiovascularSystem.h:183
SEScalarFlowResistance * m_SystemicVascularResistance
Definition: SECardiovascularSystem.h:209
SEScalarFrequency * m_HeartRate
Definition: SECardiovascularSystem.h:189
Definition: Logger.h:75
static constexpr char const *const TypeTag()
Definition: SECardiovascularSystem.h:41
Definition: SEScalarVolumePerTimeArea.h:35
const char * classname() const override
Definition: SECardiovascularSystem.h:42
SEScalarPressure * m_IntracranialPressure
Definition: SECardiovascularSystem.h:192
Definition: SEScalarFraction.h:18
SEScalarPressure * m_MeanArterialCarbonDioxidePartialPressure
Definition: SECardiovascularSystem.h:194
Definition: SECardiovascularSystem.h:35
Definition: SEScalarVolume.h:18
SEScalarPressureTimePerVolumeArea * m_PulmonaryVascularResistanceIndex
Definition: SECardiovascularSystem.h:206
Definition: SEScalarPressure.h:37
SEScalarVolumePerTime * m_MeanSkinFlow
Definition: SECardiovascularSystem.h:197
Definition: SEScalarVolume.h:37
static size_t TypeHash()
Definition: SECardiovascularSystem.h:40
SEScalarVolumePerTime * m_PulmonaryMeanShuntFlow
Definition: SECardiovascularSystem.h:203
Definition: SEScalarVolumePerTime.h:40
Definition: SEScalarFlowResistance.h:37
SEScalarVolumePerTimeArea * m_CardiacIndex
Definition: SECardiovascularSystem.h:182
SEScalarPressure * m_DiastolicArterialPressure
Definition: SECardiovascularSystem.h:187
CDM::enumHeartRhythm::value m_HeartRhythm
Definition: SECardiovascularSystem.h:190
Definition: SEScalarPressure.h:18
Definition: SEScalarPressureTimePerVolumeArea.h:36
SEScalarPressure * m_PulmonaryCapillariesWedgePressure
Definition: SECardiovascularSystem.h:199
SEScalarFlowResistance * m_PulmonaryVascularResistance
Definition: SECardiovascularSystem.h:205
SEScalarFraction * m_HeartEjectionFraction
Definition: SECardiovascularSystem.h:188
SEScalarPressure * m_MeanArterialPressure
Definition: SECardiovascularSystem.h:193
SEScalarPressure * m_PulmonaryDiastolicArterialPressure
Definition: SECardiovascularSystem.h:200
Definition: SEElectricalCircuit.h:18
SEScalarPressure * m_PulmonaryArterialPressure
Definition: SECardiovascularSystem.h:198
Definition: SEScalarVolumePerTimeArea.h:18
SEScalarPressure * m_ArterialPressure
Definition: SECardiovascularSystem.h:180
SEScalarVolumePerTime * m_CerebralBloodFlow
Definition: SECardiovascularSystem.h:185
SEScalarPressure * m_SystolicArterialPressure
Definition: SECardiovascularSystem.h:208