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