SERespiratorySystem.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 enum class eLungCompartment
8 {
9  LeftLung = 0,
10  RightLung,
11 
12  LeftSuperiorLobe,
13  LeftInferiorLobe,
14  RightSuperiorLobe,
15  RightMiddleLobe,
16  RightInferiorLobe
17 };
18 extern CDM_DECL const std::string& eLungCompartment_Name(eLungCompartment cmpt);
19 using LungImpairmentMap = std::map<eLungCompartment, SEScalar0To1*>;
20 using LungVolumeIncrementMap = std::map<eLungCompartment, SEScalarVolume*>;
21 
23 
24 class CDM_DECL SERespiratorySystem : public SESystem
25 {
26  friend class PBPhysiology;//friend the serialization class
27 public:
28  static void FillLungImpairmentMap(LungImpairmentMap& map);
29 
30  SERespiratorySystem(Logger* logger);
31  virtual ~SERespiratorySystem();
32 
33  void Clear() override;
34 
35  const SEScalar* GetScalar(const std::string& name) override;
36 
37  virtual bool HasAirwayPressure() const;
38  virtual SEScalarPressure& GetAirwayPressure();
39  virtual double GetAirwayPressure(const PressureUnit& unit) const;
40 
41  virtual bool HasAlveolarArterialGradient() const;
42  virtual SEScalarPressure& GetAlveolarArterialGradient();
43  virtual double GetAlveolarArterialGradient(const PressureUnit& unit) const;
44 
45  virtual bool HasAlveolarDeadSpace() const;
46  virtual SEScalarVolume& GetAlveolarDeadSpace();
47  virtual double GetAlveolarDeadSpace(const VolumeUnit& unit) const;
48 
49  virtual bool HasClinicalPhysiologicDeadSpaceTidalVolumeRatio() const;
50  virtual SEScalar& GetClinicalPhysiologicDeadSpaceTidalVolumeRatio();
51  virtual double GetClinicalPhysiologicDeadSpaceTidalVolumeRatio() const;
52 
53  virtual bool HasAnatomicDeadSpace() const;
54  virtual SEScalarVolume& GetAnatomicDeadSpace();
55  virtual double GetAnatomicDeadSpace(const VolumeUnit& unit) const;
56 
57  virtual bool HasHorowitzIndex() const;
58  virtual SEScalarPressure& GetHorowitzIndex();
59  virtual double GetHorowitzIndex(const PressureUnit& unit) const;
60 
61  virtual bool HasChestWallCompliance() const;
62  virtual SEScalarVolumePerPressure& GetChestWallCompliance();
63  virtual double GetChestWallCompliance(const VolumePerPressureUnit& unit) const;
64 
65  virtual bool HasElasticWorkOfBreathing() const;
66  virtual SEScalarEnergy& GetElasticWorkOfBreathing();
67  virtual double GetElasticWorkOfBreathing(const EnergyUnit& unit) const;
68 
69  virtual bool HasEndTidalCarbonDioxideFraction() const;
70  virtual SEScalar0To1& GetEndTidalCarbonDioxideFraction();
71  virtual double GetEndTidalCarbonDioxideFraction() const;
72 
73  virtual bool HasEndTidalCarbonDioxidePressure() const;
74  virtual SEScalarPressure& GetEndTidalCarbonDioxidePressure();
75  virtual double GetEndTidalCarbonDioxidePressure(const PressureUnit& unit) const;
76 
77  virtual bool HasEndTidalOxygenFraction() const;
78  virtual SEScalar0To1& GetEndTidalOxygenFraction();
79  virtual double GetEndTidalOxygenFraction() const;
80 
81  virtual bool HasEndTidalOxygenPressure() const;
82  virtual SEScalarPressure& GetEndTidalOxygenPressure();
83  virtual double GetEndTidalOxygenPressure(const PressureUnit& unit) const;
84 
85  virtual bool HasExpiratoryFlow() const;
86  virtual SEScalarVolumePerTime& GetExpiratoryFlow();
87  virtual double GetExpiratoryFlow(const VolumePerTimeUnit& unit) const;
88 
89  virtual bool HasExpiratoryRespiratoryResistance() const;
90  virtual SEScalarPressureTimePerVolume& GetExpiratoryRespiratoryResistance();
91  virtual double GetExpiratoryRespiratoryResistance(const PressureTimePerVolumeUnit& unit) const;
92 
93  virtual bool HasExpiratoryTidalVolume() const;
94  virtual SEScalarVolume& GetExpiratoryTidalVolume();
95  virtual double GetExpiratoryTidalVolume(const VolumeUnit& unit) const;
96 
97  virtual bool HasExtrinsicPositiveEndExpiratoryPressure() const;
98  virtual SEScalarPressure& GetExtrinsicPositiveEndExpiratoryPressure();
99  virtual double GetExtrinsicPositiveEndExpiratoryPressure(const PressureUnit& unit) const;
100 
101  virtual bool HasFractionOfInspiredOxygen() const;
102  virtual SEScalar0To1& GetFractionOfInspiredOxygen();
103  virtual double GetFractionOfInspiredOxygen() const;
104 
105  virtual bool HasImposedPowerOfBreathing() const;
106  virtual SEScalarPower& GetImposedPowerOfBreathing();
107  virtual double GetImposedPowerOfBreathing(const PowerUnit& unit) const;
108 
109  virtual bool HasImposedWorkOfBreathing() const;
110  virtual SEScalarEnergy& GetImposedWorkOfBreathing();
111  virtual double GetImposedWorkOfBreathing(const EnergyUnit& unit) const;
112 
113  virtual bool HasInspiratoryExpiratoryRatio() const;
114  virtual SEScalar& GetInspiratoryExpiratoryRatio();
115  virtual double GetInspiratoryExpiratoryRatio() const;
116 
117  virtual bool HasInspiratoryFlow() const;
118  virtual SEScalarVolumePerTime& GetInspiratoryFlow();
119  virtual double GetInspiratoryFlow(const VolumePerTimeUnit& unit) const;
120 
121  virtual bool HasInspiratoryRespiratoryResistance() const;
122  virtual SEScalarPressureTimePerVolume& GetInspiratoryRespiratoryResistance();
123  virtual double GetInspiratoryRespiratoryResistance(const PressureTimePerVolumeUnit& unit) const;
124 
125  virtual bool HasInspiratoryTidalVolume() const;
126  virtual SEScalarVolume& GetInspiratoryTidalVolume();
127  virtual double GetInspiratoryTidalVolume(const VolumeUnit& unit) const;
128 
129  virtual bool HasIntrapleuralPressure() const;
130  virtual SEScalarPressure& GetIntrapleuralPressure();
131  virtual double GetIntrapleuralPressure(const PressureUnit& unit) const;
132 
133  virtual bool HasIntrapulmonaryPressure() const;
134  virtual SEScalarPressure& GetIntrapulmonaryPressure();
135  virtual double GetIntrapulmonaryPressure(const PressureUnit& unit) const;
136 
137  virtual bool HasIntrinsicPositiveEndExpiratoryPressure() const;
138  virtual SEScalarPressure& GetIntrinsicPositiveEndExpiratoryPressure();
139  virtual double GetIntrinsicPositiveEndExpiratoryPressure(const PressureUnit& unit) const;
140 
141  virtual bool HasLungCompliance() const;
142  virtual SEScalarVolumePerPressure& GetLungCompliance();
143  virtual double GetLungCompliance(const VolumePerPressureUnit& unit) const;
144 
145  virtual bool HasMaximalInspiratoryPressure() const;
146  virtual SEScalarPressure& GetMaximalInspiratoryPressure();
147  virtual double GetMaximalInspiratoryPressure(const PressureUnit& unit) const;
148 
149  virtual bool HasMeanAirwayPressure() const;
150  virtual SEScalarPressure& GetMeanAirwayPressure();
151  virtual double GetMeanAirwayPressure(const PressureUnit& unit) const;
152 
153  virtual bool HasOxygenationIndex() const;
154  virtual SEScalar& GetOxygenationIndex();
155  virtual double GetOxygenationIndex() const;
156 
157  virtual bool HasOxygenSaturationIndex() const;
158  virtual SEScalarPressure& GetOxygenSaturationIndex();
159  virtual double GetOxygenSaturationIndex(const PressureUnit& unit) const;
160 
161  virtual bool HasPatientPowerOfBreathing() const;
162  virtual SEScalarPower& GetPatientPowerOfBreathing();
163  virtual double GetPatientPowerOfBreathing(const PowerUnit& unit) const;
164 
165  virtual bool HasPatientWorkOfBreathing() const;
166  virtual SEScalarEnergy& GetPatientWorkOfBreathing();
167  virtual double GetPatientWorkOfBreathing(const EnergyUnit& unit) const;
168 
169  virtual bool HasPeakInspiratoryPressure() const;
170  virtual SEScalarPressure& GetPeakInspiratoryPressure();
171  virtual double GetPeakInspiratoryPressure(const PressureUnit& unit) const;
172 
173  virtual bool HasPhysiologicDeadSpace() const;
174  virtual SEScalarVolume& GetPhysiologicDeadSpace();
175  virtual double GetPhysiologicDeadSpace(const VolumeUnit& unit) const;
176 
177  virtual bool HasPhysiologicDeadSpaceTidalVolumeRatio() const;
178  virtual SEScalar& GetPhysiologicDeadSpaceTidalVolumeRatio();
179  virtual double GetPhysiologicDeadSpaceTidalVolumeRatio() const;
180 
181  virtual bool HasRespiratoryCompliance() const;
182  virtual SEScalarVolumePerPressure& GetRespiratoryCompliance();
183  virtual double GetRespiratoryCompliance(const VolumePerPressureUnit& unit) const;
184 
185  virtual bool HasRespiratoryElastance() const;
186  virtual SEScalarPressurePerVolume& GetRespiratoryElastance();
187  virtual double GetRespiratoryElastance(const PressurePerVolumeUnit& unit) const;
188 
189  virtual bool HasRelativeTotalLungVolume() const;
190  virtual SEScalarVolume& GetRelativeTotalLungVolume();
191  virtual double GetRelativeTotalLungVolume(const VolumeUnit& unit) const;
192 
193  virtual bool HasResistiveExpiratoryWorkOfBreathing() const;
194  virtual SEScalarEnergy& GetResistiveExpiratoryWorkOfBreathing();
195  virtual double GetResistiveExpiratoryWorkOfBreathing(const EnergyUnit& unit) const;
196 
197  virtual bool HasResistiveInspiratoryWorkOfBreathing() const;
198  virtual SEScalarEnergy& GetResistiveInspiratoryWorkOfBreathing();
199  virtual double GetResistiveInspiratoryWorkOfBreathing(const EnergyUnit& unit) const;
200 
201  virtual bool HasRespirationRate() const;
202  virtual SEScalarFrequency& GetRespirationRate();
203  virtual double GetRespirationRate(const FrequencyUnit& unit) const;
204 
205  virtual bool HasRespiratoryMuscleFatigue() const;
206  virtual SEScalar0To1& GetRespiratoryMuscleFatigue();
207  virtual double GetRespiratoryMuscleFatigue() const;
208 
209  virtual bool HasRespiratoryMusclePressure() const;
210  virtual SEScalarPressure& GetRespiratoryMusclePressure();
211  virtual double GetRespiratoryMusclePressure(const PressureUnit& unit) const;
212 
213  virtual bool HasSaturationAndFractionOfInspiredOxygenRatio() const;
214  virtual SEScalar& GetSaturationAndFractionOfInspiredOxygenRatio();
215  virtual double GetSaturationAndFractionOfInspiredOxygenRatio() const;
216 
217  virtual bool HasSpecificVentilation() const;
218  virtual SEScalar& GetSpecificVentilation();
219  virtual double GetSpecificVentilation() const;
220 
221  virtual bool HasTidalVolume() const;
222  virtual SEScalarVolume& GetTidalVolume();
223  virtual double GetTidalVolume(const VolumeUnit& unit) const;
224 
225  virtual bool HasTotalAlveolarVentilation() const;
226  virtual SEScalarVolumePerTime& GetTotalAlveolarVentilation();
227  virtual double GetTotalAlveolarVentilation(const VolumePerTimeUnit& unit) const;
228 
229  virtual bool HasTotalDeadSpaceVentilation() const;
230  virtual SEScalarVolumePerTime& GetTotalDeadSpaceVentilation();
231  virtual double GetTotalDeadSpaceVentilation(const VolumePerTimeUnit& unit) const;
232 
233  virtual bool HasTotalLungVolume() const;
234  virtual SEScalarVolume& GetTotalLungVolume();
235  virtual double GetTotalLungVolume(const VolumeUnit& unit) const;
236 
237  virtual bool HasTotalPositiveEndExpiratoryPressure() const;
238  virtual SEScalarPressure& GetTotalPositiveEndExpiratoryPressure();
239  virtual double GetTotalPositiveEndExpiratoryPressure(const PressureUnit& unit) const;
240 
241  virtual bool HasTotalPowerOfBreathing() const;
242  virtual SEScalarPower& GetTotalPowerOfBreathing();
243  virtual double GetTotalPowerOfBreathing(const PowerUnit& unit) const;
244 
245  virtual bool HasTotalPulmonaryVentilation() const;
246  virtual SEScalarVolumePerTime& GetTotalPulmonaryVentilation();
247  virtual double GetTotalPulmonaryVentilation(const VolumePerTimeUnit& unit) const;
248 
249  virtual bool HasTotalWorkOfBreathing() const;
250  virtual SEScalarEnergy& GetTotalWorkOfBreathing();
251  virtual double GetTotalWorkOfBreathing(const EnergyUnit& unit) const;
252 
253  virtual bool HasTransairwayPressure() const;
254  virtual SEScalarPressure& GetTransairwayPressure();
255  virtual double GetTransairwayPressure(const PressureUnit& unit) const;
256 
257  virtual bool HasTransalveolarPressure() const;
258  virtual SEScalarPressure& GetTransalveolarPressure();
259  virtual double GetTransalveolarPressure(const PressureUnit& unit) const;
260 
261  virtual bool HasTransChestWallPressure() const;
262  virtual SEScalarPressure& GetTransChestWallPressure();
263  virtual double GetTransChestWallPressure(const PressureUnit& unit) const;
264 
265  virtual bool HasTransMusclePressure() const;
266  virtual SEScalarPressure& GetTransMusclePressure();
267  virtual double GetTransMusclePressure(const PressureUnit& unit) const;
268 
269  virtual bool HasTranspulmonaryPressure() const;
270  virtual SEScalarPressure& GetTranspulmonaryPressure();
271  virtual double GetTranspulmonaryPressure(const PressureUnit& unit) const;
272 
273  virtual bool HasTransrespiratoryPressure() const;
274  virtual SEScalarPressure& GetTransrespiratoryPressure();
275  virtual double GetTransrespiratoryPressure(const PressureUnit& unit) const;
276 
277  virtual bool HasTransthoracicPressure() const;
278  virtual SEScalarPressure& GetTransthoracicPressure();
279  virtual double GetTransthoracicPressure(const PressureUnit& unit) const;
280 
281  virtual bool HasVentilationPerfusionRatio() const;
282  virtual SEScalar& GetVentilationPerfusionRatio();
283  virtual double GetVentilationPerfusionRatio() const;
284 
285  virtual bool HasActiveMechanics() const;
286  virtual bool HasMechanics() const;
287  virtual SERespiratoryMechanics& GetMechanics();
288  virtual const SERespiratoryMechanics* GetMechanics() const;
289 
290 protected:
291 
354 
356 };
Definition: SEScalarEnergy.h:8
Definition: SEScalarFrequency.h:8
Definition: Logger.h:71
Definition: PBPhysiology.h:24
Definition: SEScalarPower.h:8
Definition: SEScalarPressurePerVolume.h:8
Definition: SEScalarPressureTimePerVolume.h:8
Definition: SEScalarPressure.h:8
Definition: SERespiratoryMechanics.h:8
Definition: SERespiratorySystem.h:25
SEScalarPressureTimePerVolume * m_ExpiratoryRespiratoryResistance
Definition: SERespiratorySystem.h:305
SERespiratoryMechanics * m_Mechanics
Definition: SERespiratorySystem.h:355
SEScalar * m_PhysiologicDeadSpaceTidalVolumeRatio
Definition: SERespiratorySystem.h:327
SEScalarPower * m_TotalPowerOfBreathing
Definition: SERespiratorySystem.h:343
SEScalarVolume * m_ExpiratoryTidalVolume
Definition: SERespiratorySystem.h:306
SEScalarPressure * m_TranspulmonaryPressure
Definition: SERespiratorySystem.h:350
SEScalar * m_SaturationAndFractionOfInspiredOxygenRatio
Definition: SERespiratorySystem.h:336
SEScalarVolumePerTime * m_ExpiratoryFlow
Definition: SERespiratorySystem.h:304
SEScalarPressure * m_TotalPositiveEndExpiratoryPressure
Definition: SERespiratorySystem.h:342
SEScalarEnergy * m_ImposedWorkOfBreathing
Definition: SERespiratorySystem.h:310
SEScalarPressure * m_AlveolarArterialGradient
Definition: SERespiratorySystem.h:293
SEScalarPressure * m_HorowitzIndex
Definition: SERespiratorySystem.h:297
SEScalarVolume * m_AnatomicDeadSpace
Definition: SERespiratorySystem.h:295
SEScalarVolume * m_RelativeTotalLungVolume
Definition: SERespiratorySystem.h:330
SEScalarPressure * m_ExtrinsicPositiveEndExpiratoryPressure
Definition: SERespiratorySystem.h:307
SEScalarEnergy * m_PatientWorkOfBreathing
Definition: SERespiratorySystem.h:324
SEScalarVolumePerTime * m_TotalPulmonaryVentilation
Definition: SERespiratorySystem.h:344
SEScalarPressure * m_RespiratoryMusclePressure
Definition: SERespiratorySystem.h:335
SEScalarPressure * m_TransairwayPressure
Definition: SERespiratorySystem.h:346
SEScalarEnergy * m_ElasticWorkOfBreathing
Definition: SERespiratorySystem.h:299
SEScalarVolume * m_AlveolarDeadSpace
Definition: SERespiratorySystem.h:294
SEScalarVolumePerPressure * m_RespiratoryCompliance
Definition: SERespiratorySystem.h:328
SEScalarPressure * m_MeanAirwayPressure
Definition: SERespiratorySystem.h:320
SEScalarPressure * m_MaximalInspiratoryPressure
Definition: SERespiratorySystem.h:319
SEScalarEnergy * m_ResistiveExpiratoryWorkOfBreathing
Definition: SERespiratorySystem.h:331
SEScalarPressure * m_AirwayPressure
Definition: SERespiratorySystem.h:292
SEScalarEnergy * m_TotalWorkOfBreathing
Definition: SERespiratorySystem.h:345
SEScalarPressure * m_TransMusclePressure
Definition: SERespiratorySystem.h:349
SEScalarPressure * m_EndTidalOxygenPressure
Definition: SERespiratorySystem.h:303
SEScalar * m_OxygenationIndex
Definition: SERespiratorySystem.h:321
SEScalarPressurePerVolume * m_RespiratoryElastance
Definition: SERespiratorySystem.h:329
SEScalar0To1 * m_FractionOfInspiredOxygen
Definition: SERespiratorySystem.h:308
SEScalarVolumePerPressure * m_ChestWallCompliance
Definition: SERespiratorySystem.h:298
SEScalarPressureTimePerVolume * m_InspiratoryRespiratoryResistance
Definition: SERespiratorySystem.h:313
SEScalarVolume * m_InspiratoryTidalVolume
Definition: SERespiratorySystem.h:314
SEScalarVolumePerTime * m_TotalAlveolarVentilation
Definition: SERespiratorySystem.h:339
SEScalar0To1 * m_EndTidalOxygenFraction
Definition: SERespiratorySystem.h:302
SEScalarVolume * m_PhysiologicDeadSpace
Definition: SERespiratorySystem.h:326
SEScalarPressure * m_TransChestWallPressure
Definition: SERespiratorySystem.h:348
SEScalarPressure * m_TransrespiratoryPressure
Definition: SERespiratorySystem.h:351
SEScalar0To1 * m_EndTidalCarbonDioxideFraction
Definition: SERespiratorySystem.h:300
SEScalarPressure * m_IntrinsicPositiveEndExpiratoryPressure
Definition: SERespiratorySystem.h:317
SEScalarPressure * m_IntrapleuralPressure
Definition: SERespiratorySystem.h:315
SEScalarPressure * m_IntrapulmonaryPressure
Definition: SERespiratorySystem.h:316
SEScalar * m_InspiratoryExpiratoryRatio
Definition: SERespiratorySystem.h:311
SEScalar0To1 * m_RespiratoryMuscleFatigue
Definition: SERespiratorySystem.h:334
SEScalarVolumePerTime * m_TotalDeadSpaceVentilation
Definition: SERespiratorySystem.h:340
SEScalar * m_ClinicalPhysiologicDeadSpaceTidalVolumeRatio
Definition: SERespiratorySystem.h:296
SEScalarPower * m_ImposedPowerOfBreathing
Definition: SERespiratorySystem.h:309
SEScalarFrequency * m_RespirationRate
Definition: SERespiratorySystem.h:333
SEScalarVolumePerPressure * m_LungCompliance
Definition: SERespiratorySystem.h:318
SEScalarPressure * m_TransalveolarPressure
Definition: SERespiratorySystem.h:347
SEScalarVolumePerTime * m_InspiratoryFlow
Definition: SERespiratorySystem.h:312
SEScalarVolume * m_TidalVolume
Definition: SERespiratorySystem.h:338
SEScalarPressure * m_PeakInspiratoryPressure
Definition: SERespiratorySystem.h:325
SEScalarPressure * m_EndTidalCarbonDioxidePressure
Definition: SERespiratorySystem.h:301
SEScalarPower * m_PatientPowerOfBreathing
Definition: SERespiratorySystem.h:323
SEScalar * m_SpecificVentilation
Definition: SERespiratorySystem.h:337
SEScalarEnergy * m_ResistiveInspiratoryWorkOfBreathing
Definition: SERespiratorySystem.h:332
SEScalarVolume * m_TotalLungVolume
Definition: SERespiratorySystem.h:341
SEScalarPressure * m_OxygenSaturationIndex
Definition: SERespiratorySystem.h:322
SEScalarPressure * m_TransthoracicPressure
Definition: SERespiratorySystem.h:352
SEScalar * m_VentilationPerfusionRatio
Definition: SERespiratorySystem.h:353
Definition: SEScalar0To1.h:8
Definition: SEScalarEnergy.h:27
Definition: SEScalarFrequency.h:26
Definition: SEScalar.h:19
Definition: SEScalarPower.h:29
Definition: SEScalarPressure.h:29
Definition: SEScalarPressurePerVolume.h:26
Definition: SEScalarPressureTimePerVolume.h:29
Definition: SEScalarVolume.h:28
Definition: SEScalarVolumePerPressure.h:28
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: SEScalarVolumePerPressure.h:8
Definition: SEScalarVolumePerTime.h:8
Definition: SEScalarVolume.h:8

Distributed under the Apache License, Version 2.0.

See accompanying NOTICE file for details.