SERespiratorySystem.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/biogears/BioGearsPhysiology.hxx>
16 
17 namespace biogears {
18 class SEScalarPressure;
19 class PressureUnit;
20 class SEScalarFraction;
21 class SEScalarVolumePerTime;
22 class VolumePerTimeUnit;
23 class SEScalarFlowCompliance;
24 class FlowComplianceUnit;
25 class SEScalarFlowResistance;
26 class FlowResistanceUnit;
27 class SEScalarFrequency;
28 class FrequencyUnit;
29 class SEScalarVolume;
30 class VolumeUnit;
31 
32 class BIOGEARS_API SERespiratorySystem : public SESystem {
33 public:
34  SERespiratorySystem(Logger* logger);
35  ~SERespiratorySystem() override;
36 
37  static size_t TypeHash() { return reinterpret_cast<size_t>(&TypeHash); }
38  static constexpr char const * const TypeTag() { return "SERespiratorySystem"; }
39  const char* classname() const override { return TypeTag(); }
40  size_t hash_code() const override { return TypeHash(); }
41 
42  void Clear() override; // Deletes all members
43 
44  const SEScalar* GetScalar(const char* name) override;
45  const SEScalar* GetScalar(const std::string& name) override;
46 
47  bool Load(const CDM::RespiratorySystemData& in);
48  CDM::RespiratorySystemData* Unload() const override;
49 
50  Tree<const char*> GetPhysiologyRequestGraph() const override;
51 protected:
52  void Unload(CDM::RespiratorySystemData& data) const;
53 
54 public:
55  bool HasAlveolarArterialGradient() const;
56  SEScalarPressure& GetAlveolarArterialGradient();
57  double GetAlveolarArterialGradient(const PressureUnit& unit) const;
58 
59  bool HasCarricoIndex() const;
60  SEScalarPressure& GetCarricoIndex();
61  double GetCarricoIndex(const PressureUnit& unit) const;
62 
63  bool HasEndTidalCarbonDioxideFraction() const;
64  SEScalarFraction& GetEndTidalCarbonDioxideFraction();
65  double GetEndTidalCarbonDioxideFraction() const;
66 
67  bool HasEndTidalCarbonDioxidePressure() const;
68  SEScalarPressure& GetEndTidalCarbonDioxidePressure();
69  double GetEndTidalCarbonDioxidePressure(const PressureUnit& unit) const;
70 
71  bool HasExpiratoryFlow() const;
72  SEScalarVolumePerTime& GetExpiratoryFlow();
73  double GetExpiratoryFlow(const VolumePerTimeUnit& unit) const;
74 
75  bool HasInspiratoryExpiratoryRatio() const;
76  SEScalar& GetInspiratoryExpiratoryRatio();
77  double GetInspiratoryExpiratoryRatio() const;
78 
79  bool HasInspiratoryFlow() const;
80  SEScalarVolumePerTime& GetInspiratoryFlow();
81  double GetInspiratoryFlow(const VolumePerTimeUnit& unit) const;
82 
83  bool HasMeanPleuralPressure() const;
84  SEScalarPressure& GetMeanPleuralPressure();
85  double GetMeanPleuralPressure(const PressureUnit& unit) const;
86 
87  bool HasPulmonaryCompliance() const;
88  SEScalarFlowCompliance& GetPulmonaryCompliance();
89  double GetPulmonaryCompliance(const FlowComplianceUnit& unit) const;
90 
91  bool HasPulmonaryResistance() const;
92  SEScalarFlowResistance& GetPulmonaryResistance();
93  double GetPulmonaryResistance(const FlowResistanceUnit& unit) const;
94 
95  bool HasRespirationDriverFrequency() const;
96  SEScalarFrequency& GetRespirationDriverFrequency();
97  double GetRespirationDriverFrequency(const FrequencyUnit& unit) const;
98 
99  bool HasRespirationDriverPressure() const;
100  SEScalarPressure& GetRespirationDriverPressure();
101  double GetRespirationDriverPressure(const PressureUnit& unit) const;
102 
103  bool HasRespirationMusclePressure() const;
104  SEScalarPressure& GetRespirationMusclePressure();
105  double GetRespirationMusclePressure(const PressureUnit& unit) const;
106 
107  bool HasRespirationRate() const;
108  SEScalarFrequency& GetRespirationRate();
109  double GetRespirationRate(const FrequencyUnit& unit) const;
110 
111  bool HasSpecificVentilation() const;
112  SEScalar& GetSpecificVentilation();
113  double GetSpecificVentilation() const;
114 
115  bool HasTargetPulmonaryVentilation() const;
116  SEScalarVolumePerTime& GetTargetPulmonaryVentilation();
117  double GetTargetPulmonaryVentilation(const VolumePerTimeUnit& unit) const;
118 
119  bool HasTidalVolume() const;
120  SEScalarVolume& GetTidalVolume();
121  double GetTidalVolume(const VolumeUnit& unit) const;
122 
123  bool HasTotalAlveolarVentilation() const;
124  SEScalarVolumePerTime& GetTotalAlveolarVentilation();
125  double GetTotalAlveolarVentilation(const VolumePerTimeUnit& unit) const;
126 
127  bool HasTotalDeadSpaceVentilation() const;
128  SEScalarVolumePerTime& GetTotalDeadSpaceVentilation();
129  double GetTotalDeadSpaceVentilation(const VolumePerTimeUnit& unit) const;
130 
131  bool HasTotalPulmonaryVentilation() const;
132  SEScalarVolumePerTime& GetTotalPulmonaryVentilation();
133  double GetTotalPulmonaryVentilation(const VolumePerTimeUnit& unit) const;
134 
135  bool HasTotalLungVolume() const;
136  SEScalarVolume& GetTotalLungVolume();
137  double GetTotalLungVolume(const VolumeUnit& unit) const;
138 
139  bool HasTranspulmonaryPressure() const;
140  SEScalarPressure& GetTranspulmonaryPressure();
141  double GetTranspulmonaryPressure(const PressureUnit& unit) const;
142 
143 protected:
166 };
167 }
SEScalarVolumePerTime * m_TotalAlveolarVentilation
Definition: SERespiratorySystem.h:161
Definition: SEScalarFlowCompliance.h:36
SEScalarVolumePerTime * m_InspiratoryFlow
Definition: SERespiratorySystem.h:150
SEScalarPressure * m_CarricoIndex
Definition: SERespiratorySystem.h:145
Definition: SEScalarFrequency.h:18
const char * classname() const override
Definition: SERespiratorySystem.h:39
Definition: SEScalarFrequency.h:36
Definition: SEScalar.h:33
SEScalarVolume * m_TidalVolume
Definition: SERespiratorySystem.h:160
SEScalar * m_InspiratoryExpiratoryRatio
Definition: SERespiratorySystem.h:149
Definition: SEScalarFlowResistance.h:18
Definition: SESystem.h:27
SEScalarFraction * m_EndTidalCarbonDioxideFraction
Definition: SERespiratorySystem.h:146
Definition: SEScalarVolumePerTime.h:18
Definition: Logger.h:75
Definition: SEScalarFlowCompliance.h:18
SEScalar * m_SpecificVentilation
Definition: SERespiratorySystem.h:158
SEScalarPressure * m_RespirationDriverPressure
Definition: SERespiratorySystem.h:155
SEScalarFlowResistance * m_PulmonaryResistance
Definition: SERespiratorySystem.h:153
Definition: SEScalarFraction.h:18
size_t hash_code() const override
Definition: SERespiratorySystem.h:40
SEScalarFrequency * m_RespirationRate
Definition: SERespiratorySystem.h:157
SEScalarPressure * m_TranspulmonaryPressure
Definition: SERespiratorySystem.h:165
SEScalarFlowCompliance * m_PulmonaryCompliance
Definition: SERespiratorySystem.h:152
SEScalarPressure * m_RespirationMusclePressure
Definition: SERespiratorySystem.h:156
Definition: SEScalarVolume.h:18
Definition: SEScalarPressure.h:37
Definition: SERespiratorySystem.h:32
Definition: SEScalarVolume.h:37
SEScalarPressure * m_MeanPleuralPressure
Definition: SERespiratorySystem.h:151
static constexpr char const *const TypeTag()
Definition: SERespiratorySystem.h:38
Definition: SEScalarVolumePerTime.h:40
Definition: SEScalarFlowResistance.h:37
SEScalarVolumePerTime * m_TargetPulmonaryVentilation
Definition: SERespiratorySystem.h:159
SEScalarVolumePerTime * m_TotalPulmonaryVentilation
Definition: SERespiratorySystem.h:164
Definition: SEScalarPressure.h:18
SEScalarVolumePerTime * m_TotalDeadSpaceVentilation
Definition: SERespiratorySystem.h:162
SEScalarPressure * m_AlveolarArterialGradient
Definition: SERespiratorySystem.h:144
SEScalarFrequency * m_RespirationDriverFrequency
Definition: SERespiratorySystem.h:154
SEScalarVolume * m_TotalLungVolume
Definition: SERespiratorySystem.h:163
Class corresponding to the RespiratorySystemData schema type.
Definition: Physiology.hxx:17788
SEScalarVolumePerTime * m_ExpiratoryFlow
Definition: SERespiratorySystem.h:148
Definition: SEElectricalCircuit.h:18
SEScalarPressure * m_EndTidalCarbonDioxidePressure
Definition: SERespiratorySystem.h:147
static size_t TypeHash()
Definition: SERespiratorySystem.h:37