Building Medical Digital Twins with Pulse: Open Source Simulation Tools for Developers and Researchers
×
SEMechanicalVentilatorSettings.h
1 /* Distributed under the Apache License, Version 2.0.
2  See accompanying NOTICE file for details.*/
3 
4 #pragma once
5 #include "cdm/CommonDefs.h"
6 #include "cdm/substance/SESubstanceManager.h"
7 #include "cdm/substance/SESubstanceConcentration.h"
8 #include "cdm/substance/SESubstanceFraction.h"
9 
12 
14 {
15  friend class PBMechanicalVentilator;//friend the serialization class
16 public:
17 
20 
21  bool SerializeToString(std::string& output, eSerializationFormat m) const;
22  bool SerializeToFile(const std::string& filename) const;
23  bool SerializeFromString(const std::string& src, eSerializationFormat m, const SESubstanceManager& subMgr);
24  bool SerializeFromFile(const std::string& filename, const SESubstanceManager& subMgr);
25 
26  virtual void ProcessConfiguration(SEMechanicalVentilatorConfiguration& config, SESubstanceManager& subMgr);
27 
28  virtual void Clear();
29  virtual void Copy(const SEMechanicalVentilatorSettings& src, const SESubstanceManager&);
30  virtual void Merge(const SEMechanicalVentilatorSettings& from, SESubstanceManager& subMgr);
31 
32  virtual const SEScalar* GetScalar(const std::string& name);
33 
34  virtual bool HasConnection() const;
35  virtual eSwitch GetConnection() const;
36  virtual void SetConnection(eSwitch c);
37 
38  virtual bool HasConnectionVolume() const;
39  virtual SEScalarVolume& GetConnectionVolume();
40  virtual double GetConnectionVolume(const VolumeUnit& unit) const;
41 
42  virtual bool HasCompliance() const;
43  virtual SEScalarVolumePerPressure& GetCompliance();
44  virtual double GetCompliance(const VolumePerPressureUnit& unit) const;
45 
46  virtual bool HasDriverDampingParameter() const;
47  virtual SEScalarFrequency& GetDriverDampingParameter();
48  virtual double GetDriverDampingParameter(const FrequencyUnit& unit) const;
49 
50  virtual bool HasPositiveEndExpiratoryPressure() const;
51  virtual SEScalarPressure& GetPositiveEndExpiratoryPressure();
52  virtual double GetPositiveEndExpiratoryPressure(const PressureUnit& unit) const;
53 
54  virtual bool HasFunctionalResidualCapacity() const;
55  virtual SEScalarPressure& GetFunctionalResidualCapacity();
56  virtual double GetFunctionalResidualCapacity(const PressureUnit& unit) const;
57 
58  virtual bool HasExpirationCycleFlow() const;
59  virtual SEScalarVolumePerTime& GetExpirationCycleFlow();
60  virtual double GetExpirationCycleFlow(const VolumePerTimeUnit& unit) const;
61 
62  virtual bool HasExpirationCyclePressure() const;
63  virtual SEScalarPressure& GetExpirationCyclePressure();
64  virtual double GetExpirationCyclePressure(const PressureUnit& unit) const;
65 
66  virtual bool HasExpirationCycleVolume() const;
67  virtual SEScalarVolume& GetExpirationCycleVolume();
68  virtual double GetExpirationCycleVolume(const VolumeUnit& unit) const;
69 
70  virtual bool HasExpirationCycleTime() const;
71  virtual SEScalarTime& GetExpirationCycleTime();
72  virtual double GetExpirationCycleTime(const TimeUnit& unit) const;
73 
74  virtual bool HasExpirationCycleRespiratoryModel() const;
75  virtual eSwitch GetExpirationCycleRespiratoryModel() const;
76  virtual void SetExpirationCycleRespiratoryModel(eSwitch c);
77 
78  virtual bool HasExpirationTubeResistance() const;
79  virtual SEScalarPressureTimePerVolume& GetExpirationTubeResistance();
80  virtual double GetExpirationTubeResistance(const PressureTimePerVolumeUnit& unit) const;
81 
82  virtual bool HasExpirationValveResistance() const;
83  virtual SEScalarPressureTimePerVolume& GetExpirationValveResistance();
84  virtual double GetExpirationValveResistance(const PressureTimePerVolumeUnit& unit) const;
85 
86  virtual bool HasExpirationWaveform() const;
87  virtual eDriverWaveform GetExpirationWaveform() const;
88  virtual void SetExpirationWaveform(eDriverWaveform w);
89 
90  virtual bool HasExpirationWaveformPeriod() const;
91  virtual SEScalarTime& GetExpirationWaveformPeriod();
92  virtual double GetExpirationWaveformPeriod(const TimeUnit& unit) const;
93 
94  virtual bool HasInspirationLimitFlow() const;
95  virtual SEScalarVolumePerTime& GetInspirationLimitFlow();
96  virtual double GetInspirationLimitFlow(const VolumePerTimeUnit& unit) const;
97 
98  virtual bool HasInspirationLimitPressure() const;
99  virtual SEScalarPressure& GetInspirationLimitPressure();
100  virtual double GetInspirationLimitPressure(const PressureUnit& unit) const;
101 
102  virtual bool HasInspirationLimitVolume() const;
103  virtual SEScalarVolume& GetInspirationLimitVolume();
104  virtual double GetInspirationLimitVolume(const VolumeUnit& unit) const;
105 
106  virtual bool HasInspirationPauseTime() const;
107  virtual SEScalarTime& GetInspirationPauseTime();
108  virtual double GetInspirationPauseTime(const TimeUnit& unit) const;
109 
110  virtual bool HasPeakInspiratoryPressure() const;
111  virtual SEScalarPressure& GetPeakInspiratoryPressure();
112  virtual double GetPeakInspiratoryPressure(const PressureUnit& unit) const;
113 
114  virtual bool HasInspirationTargetFlow() const;
115  virtual SEScalarVolumePerTime& GetInspirationTargetFlow();
116  virtual double GetInspirationTargetFlow(const VolumePerTimeUnit& unit) const;
117 
118  virtual bool HasInspirationMachineTriggerTime() const;
119  virtual SEScalarTime& GetInspirationMachineTriggerTime();
120  virtual double GetInspirationMachineTriggerTime(const TimeUnit& unit) const;
121 
122  virtual bool HasInspirationPatientTriggerFlow() const;
123  virtual SEScalarVolumePerTime& GetInspirationPatientTriggerFlow();
124  virtual double GetInspirationPatientTriggerFlow(const VolumePerTimeUnit& unit) const;
125 
126  virtual bool HasInspirationPatientTriggerPressure() const;
127  virtual SEScalarPressure& GetInspirationPatientTriggerPressure();
128  virtual double GetInspirationPatientTriggerPressure(const PressureUnit& unit) const;
129 
130  virtual bool HasInspirationPatientTriggerRespiratoryModel() const;
131  virtual eSwitch GetInspirationPatientTriggerRespiratoryModel() const;
132  virtual void SetInspirationPatientTriggerRespiratoryModel(eSwitch c);
133 
134  virtual bool HasInspirationTubeResistance() const;
135  virtual SEScalarPressureTimePerVolume& GetInspirationTubeResistance();
136  virtual double GetInspirationTubeResistance(const PressureTimePerVolumeUnit& unit) const;
137 
138  virtual bool HasInspirationValveResistance() const;
139  virtual SEScalarPressureTimePerVolume& GetInspirationValveResistance();
140  virtual double GetInspirationValveResistance(const PressureTimePerVolumeUnit& unit) const;
141 
142  virtual bool HasExpirationLimbVolume() const;
143  virtual SEScalarVolume& GetExpirationLimbVolume();
144  virtual double GetExpirationLimbVolume(const VolumeUnit& unit) const;
145 
146  virtual bool HasExpirationValveVolume() const;
147  virtual SEScalarVolume& GetExpirationValveVolume();
148  virtual double GetExpirationValveVolume(const VolumeUnit& unit) const;
149 
150  virtual bool HasInspirationLimbVolume() const;
151  virtual SEScalarVolume& GetInspirationLimbVolume();
152  virtual double GetInspirationLimbVolume(const VolumeUnit& unit) const;
153 
154  virtual bool HasInspirationValveVolume() const;
155  virtual SEScalarVolume& GetInspirationValveVolume();
156  virtual double GetInspirationValveVolume(const VolumeUnit& unit) const;
157 
158  virtual bool HasReliefValveThreshold() const;
159  virtual SEScalarPressure& GetReliefValveThreshold();
160  virtual double GetReliefValveThreshold(const PressureUnit& unit) const;
161 
162  virtual bool HasYPieceVolume() const;
163  virtual SEScalarVolume& GetYPieceVolume();
164  virtual double GetYPieceVolume(const VolumeUnit& unit) const;
165 
166  virtual bool HasInspirationWaveform() const;
167  virtual eDriverWaveform GetInspirationWaveform() const;
168  virtual void SetInspirationWaveform(eDriverWaveform w);
169 
170  virtual bool HasInspirationWaveformPeriod() const;
171  virtual SEScalarTime& GetInspirationWaveformPeriod();
172  virtual double GetInspirationWaveformPeriod(const TimeUnit& unit) const;
173 
174  bool HasFractionInspiredGas() const;
175  bool HasFractionInspiredGas(const SESubstance& substance) const;
176  const std::vector<SESubstanceFraction*>& GetFractionInspiredGases();
177  const std::vector<const SESubstanceFraction*>& GetFractionInspiredGases() const;
178  SESubstanceFraction& GetFractionInspiredGas(const SESubstance& substance);
179  const SESubstanceFraction* GetFractionInspiredGas(const SESubstance& substance) const;
180  void RemoveFractionInspiredGas(const SESubstance& substance);
181  void RemoveFractionInspiredGases();
182 
183  bool HasConcentrationInspiredAerosol() const;
184  bool HasConcentrationInspiredAerosol(const SESubstance& substance) const;
185  const std::vector<SESubstanceConcentration*>& GetConcentrationInspiredAerosols();
186  const std::vector<const SESubstanceConcentration*>& GetConcentrationInspiredAerosols() const;
187  SESubstanceConcentration& GetConcentrationInspiredAerosol(const SESubstance& substance);
188  const SESubstanceConcentration* GetConcentrationInspiredAerosol(const SESubstance& substance) const;
189  void RemoveConcentrationInspiredAerosol(const SESubstance& substance);
190  void RemoveConcentrationInspiredAerosols();
191 
192  virtual bool HasAlarms() const;
193  virtual SEMechanicalVentilatorAlarms& GetAlarms();
194  virtual const SEMechanicalVentilatorAlarms* GetAlarms() const;
195  virtual void RemoveAlarms();
196 
197 protected:
198 
199  eSwitch m_Connection;
203 
204  // Expiratory Baseline Properties (Only set 1)
207 
208  // Expriatory Cycle Properties (Only Set 1)
214 
219  eDriverWaveform m_ExpirationWaveform;
221 
222  // Inspiratory Limit Properties (Only set 1)
226 
228 
229  // Inspiratory Target Properties (Only set 1)
232 
233  // Inspiratory Machine Trigger Properties (Only set 1)
235 
236  // Inspiratory Patient Trigger Properties (Only set 1)
240 
245  eDriverWaveform m_InspirationWaveform;
247 
250 
251  std::vector<SESubstanceFraction*> m_FractionInspiredGases;
252  std::vector<const SESubstanceFraction*> m_cFractionInspiredGases;
253 
254  std::vector<SESubstanceConcentration*> m_ConcentrationInspiredAerosols;
255  std::vector<const SESubstanceConcentration*> m_cConcentrationInspiredAerosols;
256 
258 };
Definition: SEScalarFrequency.h:8
Definition: Logger.h:23
Definition: Logger.h:71
Definition: PBMechanicalVentilator.h:11
static void Copy(const SEMechanicalVentilatorSettings &src, SEMechanicalVentilatorSettings &dst, const SESubstanceManager &subMgr)
Definition: PBMechanicalVentilator.cpp:464
static bool SerializeFromFile(const std::string &filename, SEMechanicalVentilatorSettings &dst, const SESubstanceManager &subMgr)
Definition: PBMechanicalVentilator.cpp:493
static bool SerializeFromString(const std::string &src, SEMechanicalVentilatorSettings &dst, eSerializationFormat m, const SESubstanceManager &subMgr)
Definition: PBMechanicalVentilator.cpp:485
static bool SerializeToFile(const SEMechanicalVentilatorSettings &src, const std::string &filename)
Definition: PBMechanicalVentilator.cpp:478
static bool SerializeToString(const SEMechanicalVentilatorSettings &src, std::string &output, eSerializationFormat m)
Definition: PBMechanicalVentilator.cpp:472
Definition: SEScalarPressureTimePerVolume.h:8
Definition: SEScalarPressure.h:8
Definition: SEMechanicalVentilatorAlarms.h:8
Definition: SEMechanicalVentilatorConfiguration.h:9
Definition: SEMechanicalVentilatorSettings.h:14
eSwitch m_Connection
Definition: SEMechanicalVentilatorSettings.h:199
SEScalarFrequency * m_DriverDampingParameter
Definition: SEMechanicalVentilatorSettings.h:202
SEScalarVolumePerPressure * m_Compliance
Definition: SEMechanicalVentilatorSettings.h:201
SEScalarVolume * m_InspirationLimbVolume
Definition: SEMechanicalVentilatorSettings.h:243
std::vector< const SESubstanceConcentration * > m_cConcentrationInspiredAerosols
Definition: SEMechanicalVentilatorSettings.h:255
SEScalarVolumePerTime * m_InspirationLimitFlow
Definition: SEMechanicalVentilatorSettings.h:223
SEScalarPressure * m_ReliefValveThreshold
Definition: SEMechanicalVentilatorSettings.h:249
SEScalarPressureTimePerVolume * m_InspirationTubeResistance
Definition: SEMechanicalVentilatorSettings.h:241
eDriverWaveform m_ExpirationWaveform
Definition: SEMechanicalVentilatorSettings.h:219
SEScalarPressure * m_PositiveEndExpiratoryPressure
Definition: SEMechanicalVentilatorSettings.h:205
SEScalarPressure * m_FunctionalResidualCapacity
Definition: SEMechanicalVentilatorSettings.h:206
SEScalarVolume * m_ExpirationLimbVolume
Definition: SEMechanicalVentilatorSettings.h:217
std::vector< const SESubstanceFraction * > m_cFractionInspiredGases
Definition: SEMechanicalVentilatorSettings.h:252
eSwitch m_InspirationPatientTriggerRespiratoryModel
Definition: SEMechanicalVentilatorSettings.h:239
SEScalarTime * m_ExpirationCycleTime
Definition: SEMechanicalVentilatorSettings.h:212
SEScalarTime * m_InspirationWaveformPeriod
Definition: SEMechanicalVentilatorSettings.h:246
SEScalarVolume * m_InspirationValveVolume
Definition: SEMechanicalVentilatorSettings.h:244
SEScalarTime * m_InspirationMachineTriggerTime
Definition: SEMechanicalVentilatorSettings.h:234
SEScalarTime * m_InspirationPauseTime
Definition: SEMechanicalVentilatorSettings.h:227
SEScalarVolume * m_InspirationLimitVolume
Definition: SEMechanicalVentilatorSettings.h:225
SEScalarVolumePerTime * m_InspirationTargetFlow
Definition: SEMechanicalVentilatorSettings.h:231
SEScalarVolume * m_YPieceVolume
Definition: SEMechanicalVentilatorSettings.h:248
std::vector< SESubstanceFraction * > m_FractionInspiredGases
Definition: SEMechanicalVentilatorSettings.h:251
SEScalarPressure * m_PeakInspiratoryPressure
Definition: SEMechanicalVentilatorSettings.h:230
SEScalarVolume * m_ExpirationValveVolume
Definition: SEMechanicalVentilatorSettings.h:218
SEScalarVolume * m_ConnectionVolume
Definition: SEMechanicalVentilatorSettings.h:200
SEScalarPressureTimePerVolume * m_InspirationValveResistance
Definition: SEMechanicalVentilatorSettings.h:242
SEScalarPressure * m_InspirationLimitPressure
Definition: SEMechanicalVentilatorSettings.h:224
SEMechanicalVentilatorAlarms * m_Alarms
Definition: SEMechanicalVentilatorSettings.h:257
SEScalarVolumePerTime * m_ExpirationCycleFlow
Definition: SEMechanicalVentilatorSettings.h:209
SEScalarPressure * m_ExpirationCyclePressure
Definition: SEMechanicalVentilatorSettings.h:210
std::vector< SESubstanceConcentration * > m_ConcentrationInspiredAerosols
Definition: SEMechanicalVentilatorSettings.h:254
eSwitch m_ExpirationCycleRespiratoryModel
Definition: SEMechanicalVentilatorSettings.h:213
SEScalarPressureTimePerVolume * m_ExpirationValveResistance
Definition: SEMechanicalVentilatorSettings.h:216
SEScalarVolume * m_ExpirationCycleVolume
Definition: SEMechanicalVentilatorSettings.h:211
SEScalarPressureTimePerVolume * m_ExpirationTubeResistance
Definition: SEMechanicalVentilatorSettings.h:215
SEScalarVolumePerTime * m_InspirationPatientTriggerFlow
Definition: SEMechanicalVentilatorSettings.h:237
eDriverWaveform m_InspirationWaveform
Definition: SEMechanicalVentilatorSettings.h:245
SEScalarPressure * m_InspirationPatientTriggerPressure
Definition: SEMechanicalVentilatorSettings.h:238
SEScalarTime * m_ExpirationWaveformPeriod
Definition: SEMechanicalVentilatorSettings.h:220
Definition: SEScalarFrequency.h:26
Definition: SEScalar.h:19
Definition: SEScalarPressure.h:29
Definition: SEScalarPressureTimePerVolume.h:29
Definition: SEScalarTime.h:28
Definition: SEScalarVolume.h:28
Definition: SEScalarVolumePerPressure.h:28
Definition: SEScalarVolumePerTime.h:32
Definition: SESubstanceConcentration.h:11
Definition: SESubstanceFraction.h:10
Definition: SESubstance.h:15
Definition: SESubstanceManager.h:9
Definition: SEScalarTime.h:8
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.