SEMechanicalVentilation.h
1/* Distributed under the Apache License, Version 2.0.
2 See accompanying NOTICE file for details.*/
3
4#pragma once
5#include "cdm/patient/actions/SEPatientAction.h"
6class Serializer;
7class SESubstance;
10class SEMechanicalVentilationConfiguration;
11
13{
14 friend class PBPatientAction;//friend the serialization class
15protected:
16
17public:
18
19 SEMechanicalVentilation(Logger* logger=nullptr);
21
22 static constexpr char const* Name = "Mechanical Ventilation";
23 virtual std::string GetName() const { return Name; }
24
25 virtual void Clear();
26 virtual void Copy(const SEMechanicalVentilation& src, const SESubstanceManager& subMgr, bool /*preserveState*/=false);
27
28 virtual bool IsValid() const;
29 virtual bool IsActive() const;
30 virtual void Deactivate();
31
32 virtual eSwitch GetState() const;
33 virtual void SetState(eSwitch name);
34
35 virtual bool HasFlow() const;
36 virtual SEScalarVolumePerTime& GetFlow();
37 virtual double GetFlow(const VolumePerTimeUnit& unit) const;
38
39 virtual bool HasPressure() const;
40 virtual SEScalarPressure& GetPressure();
41 virtual double GetPressure(const PressureUnit& unit) const;
42
43 bool HasGasFraction() const;
44 bool HasGasFraction(const SESubstance& substance) const;
45 const std::vector<SESubstanceFraction*>& GetGasFractions();
46 const std::vector<const SESubstanceFraction*>& GetGasFractions() const;
47 SESubstanceFraction& GetGasFraction(const SESubstance& substance);
48 const SESubstanceFraction* GetGasFraction(const SESubstance& substance) const;
49 void RemoveGasFraction(const SESubstance& substance);
50 void RemoveGasFractions();
51
52 bool HasAerosol() const;
53 bool HasAerosol(const SESubstance& substance) const;
54 const std::vector<SESubstanceConcentration*>& GetAerosols();
55 const std::vector<const SESubstanceConcentration*>& GetAerosols() const;
56 SESubstanceConcentration& GetAerosol(const SESubstance& substance);
57 const SESubstanceConcentration* GetAerosol(const SESubstance& substance) const;
58 void RemoveAerosol(const SESubstance& substance);
59 void RemoveAerosols();
60
61 virtual const SEScalar* GetScalar(const std::string& name);
62
63protected:
64
65 eSwitch m_State;
68
69 std::vector<SESubstanceFraction*> m_GasFractions;
70 std::vector<const SESubstanceFraction*> m_cGasFractions;
71
72 std::vector<SESubstanceConcentration*> m_Aerosols;
73 std::vector<const SESubstanceConcentration*> m_cAerosols;
74};
Definition: Logger.h:71
Definition: PBPatientActions.h:48
Definition: SEScalarPressure.h:8
virtual const SEScalar * GetScalar(const std::string &name)=0
virtual bool IsActive() const
Definition: SEAction.h:39
virtual void Deactivate()
Definition: SEAction.h:41
static SEAction * Copy(const SEAction &, const SESubstanceManager &)
Definition: SEAction.cpp:54
Definition: SEMechanicalVentilation.h:13
eSwitch m_State
Definition: SEMechanicalVentilation.h:65
std::vector< const SESubstanceFraction * > m_cGasFractions
Definition: SEMechanicalVentilation.h:70
std::vector< const SESubstanceConcentration * > m_cAerosols
Definition: SEMechanicalVentilation.h:73
virtual std::string GetName() const
Definition: SEMechanicalVentilation.h:23
SEScalarVolumePerTime * m_Flow
Definition: SEMechanicalVentilation.h:66
SEScalarPressure * m_Pressure
Definition: SEMechanicalVentilation.h:67
std::vector< SESubstanceConcentration * > m_Aerosols
Definition: SEMechanicalVentilation.h:72
std::vector< SESubstanceFraction * > m_GasFractions
Definition: SEMechanicalVentilation.h:69
Definition: SEPatientAction.h:8
virtual bool IsValid() const
Definition: SEPatientAction.cpp:22
virtual void Clear()
Definition: SEPatientAction.cpp:17
Definition: SEScalar.h:19
Definition: SEScalarPressure.h:29
Definition: SEScalarVolumePerTime.h:31
Definition: SESubstanceConcentration.h:11
Definition: SESubstanceFraction.h:10
Definition: SESubstance.h:15
Definition: SESubstanceManager.h:9
Definition: SEScalarVolumePerTime.h:8

Distributed under the Apache License, Version 2.0.

See accompanying NOTICE file for details.