What’s New in the Pulse Physiology Engine 4.4.0
×
CompartmentManager.h
1/* Distributed under the Apache License, Version 2.0.
2 See accompanying NOTICE file for details.*/
3
4#pragma once
5
6#include "engine/CommonDefs.h"
7#include "cdm/compartment/SECompartmentManager.h"
8
9namespace pulse
10{
11 class Data;
15 class PULSE_DECL CompartmentManager : public SECompartmentManager
16 {
17 friend class SubstanceManager;
18 public:
19
20 CompartmentManager(Data& data);
21 virtual ~CompartmentManager();
22
23 void Clear() override;
24
25 void StateChange() override;
26 virtual void UpdateAirwayGraph() { m_UpdateActiveAirwayGraph = true; m_UpdateActiveAerosolGraph = true; }
27
28 virtual SELiquidCompartmentGraph& GetActiveCardiovascularGraph();
29 virtual SELiquidCompartmentGraph& GetCardiovascularGraph();
30 virtual SELiquidCompartmentGraph& GetRenalGraph();
31 virtual SELiquidCompartmentGraph& GetExtracorporealMembraneOxygenationDeviceGraph();
32 virtual SEGasCompartmentGraph& GetExtracorporealMembraneOxygenationDeviceGasGraph();
33
34 virtual SEGasCompartmentGraph& GetActiveRespiratoryGraph();
35 virtual SEGasCompartmentGraph& GetRespiratoryGraph();
36 virtual SEGasCompartmentGraph& GetRespiratoryAndAnesthesiaMachineGraph();
37 virtual SEGasCompartmentGraph& GetRespiratoryAndBagValveMaskGraph();
38 virtual SEGasCompartmentGraph& GetRespiratoryAndInhalerGraph();
39 virtual SEGasCompartmentGraph& GetRespiratoryAndNasalCannulaGraph();
40 virtual SEGasCompartmentGraph& GetRespiratoryAndSimpleMaskGraph();
41 virtual SEGasCompartmentGraph& GetRespiratoryAndNonRebreatherMaskGraph();
42 virtual SEGasCompartmentGraph& GetRespiratoryAndMechanicalVentilationGraph();
43 virtual SEGasCompartmentGraph& GetRespiratoryAndMechanicalVentilatorGraph();
44
45 virtual SEGasCompartmentGraph& GetAnesthesiaMachineGraph();
46 virtual SEGasCompartmentGraph& GetBagValveMaskGraph();
47 virtual SEGasCompartmentGraph& GetMechanicalVentilatorGraph();
48
49 virtual SELiquidCompartmentGraph& GetActiveAerosolGraph();
50 virtual SELiquidCompartmentGraph& GetAerosolGraph();
51 virtual SELiquidCompartmentGraph& GetAerosolAndBagValveMaskGraph();
52 virtual SELiquidCompartmentGraph& GetAerosolAndInhalerGraph();
53 virtual SELiquidCompartmentGraph& GetAerosolAndMechanicalVentilationGraph();
54 virtual SELiquidCompartmentGraph& GetAerosolAndMechanicalVentilatorGraph();
55
56 // Compartment Helpers
57 std::vector<SELiquidCompartment*>const& GetAerosolCompartments() { return m_AerosolCompartments; }
58 std::vector<SELiquidCompartment*>const& GetAerosolLeafCompartments() { return m_AerosolLeafCompartments; }
59
60 std::vector<SELiquidCompartment*>const& GetChymeCompartments() { return m_ChymeCompartments; }
61 std::vector<SELiquidCompartment*>const& GetChymeLeafCompartments() { return m_ChymeLeafCompartments; }
62
63 std::vector<SEGasCompartment*>const& GetPulmonaryCompartments() { return m_PulmonaryCompartments; }
64 std::vector<SEGasCompartment*>const& GetPulmonaryLeafCompartments() { return m_PulmonaryLeafCompartments; }
65
66 std::vector<SEGasCompartment*>const& GetExpandedLungsPulmonaryCompartments() { return m_ExpandedLungsPulmonaryCompartments; }
67 std::vector<SEGasCompartment*>const& GetExpandedLungsPulmonaryLeafCompartments() { return m_ExpandedLungsPulmonaryLeafCompartments; }
68
69 std::vector<SEThermalCompartment*>const& GetTemperatureCompartments() { return m_TemperatureCompartments; }
70 std::vector<SEThermalCompartment*>const& GetTemperatureLeafCompartments() { return m_TemperatureLeafCompartments; }
71
72 std::vector<SETissueCompartment*>const& GetTissueCompartments() override { return m_TissueCompartments; }
73 std::vector<SETissueCompartment*>const& GetTissueLeafCompartments() override { return m_TissueLeafCompartments; }
74
75 std::vector<SELiquidCompartment*>const& GetUrineCompartments() { return m_UrineCompartments; }
76 std::vector<SELiquidCompartment*>const& GetUrineLeafCompartments() { return m_UrineLeafCompartments; }
77
78 std::vector<SELiquidCompartment*>const& GetVascularCompartments() { return m_VascularCompartments; }
79 std::vector<SELiquidCompartment*>const& GetVascularLeafCompartments() { return m_VascularLeafCompartments; }
80
81 std::vector<SELiquidCompartment*>const& GetExpandedLungsVascularCompartments() { return m_ExpandedLungsVascularCompartments; }
82 std::vector<SELiquidCompartment*>const& GetExpandedLungsVascularLeafCompartments() { return m_ExpandedLungsVascularLeafCompartments; }
83
84 std::vector<SELiquidCompartment*>const& GetComputationalLifeVascularCompartments() { return m_ComputationalLifeVascularCompartments; }
85 std::vector<SELiquidCompartment*>const& GetComputationalLifeVascularLeafCompartments() { return m_ComputationalLifeVascularLeafCompartments; }
86
87 std::vector<SEGasCompartment*>const& GetAnesthesiaMachineCompartments() { return m_AnesthesiaMachineCompartments; }
88 std::vector<SEGasCompartment*>const& GetAnesthesiaMachineLeafCompartments() { return m_AnesthesiaMachineLeafCompartments; }
89
90 std::vector<SEGasCompartment*>const& GetBagValveMaskCompartments() { return m_BagValveMaskCompartments; }
91 std::vector<SEGasCompartment*>const& GetBagValveMaskLeafCompartments() { return m_BagValveMaskLeafCompartments; }
92
93 std::vector<SELiquidCompartment*>const& GetBagValveMaskAerosolCompartments() { return m_BagValveMaskAerosolCompartments; }
94 std::vector<SELiquidCompartment*>const& GetBagValveMaskAerosolLeafCompartments() { return m_BagValveMaskAerosolCompartments; }
95
96 std::vector<SEGasCompartment*>const& GetInhalerCompartments() { return m_InhalerCompartments; }
97 std::vector<SEGasCompartment*>const& GetInhalerLeafCompartments() { return m_InhalerLeafCompartments; }
98
99 std::vector<SELiquidCompartment*>const& GetInhalerAerosolCompartments() { return m_InhalerAerosolCompartments; }
100 std::vector<SELiquidCompartment*>const& GetInhalerAerosolLeafCompartments() { return m_InhalerAerosolLeafCompartments; }
101
102 std::vector<SEGasCompartment*>const& GetMechanicalVentilationCompartments() { return m_MechanicalVentilationCompartments; }
103 std::vector<SEGasCompartment*>const& GetMechanicalVentilationLeafCompartments() { return m_MechanicalVentilationLeafCompartments; }
104
105 std::vector<SELiquidCompartment*>const& GetMechanicalVentilationAerosolCompartments() { return m_MechanicalVentilationAerosolCompartments; }
106 std::vector<SELiquidCompartment*>const& GetMechanicalVentilationAerosolLeafCompartments() { return m_MechanicalVentilationAerosolCompartments; }
107
108 std::vector<SEGasCompartment*>const& GetMechanicalVentilatorCompartments() { return m_MechanicalVentilatorCompartments; }
109 std::vector<SEGasCompartment*>const& GetMechanicalVentilatorLeafCompartments() { return m_MechanicalVentilatorLeafCompartments; }
110
111 std::vector<SELiquidCompartment*>const& GetMechanicalVentilatorAerosolCompartments() { return m_MechanicalVentilatorAerosolCompartments; }
112 std::vector<SELiquidCompartment*>const& GetMechanicalVentilatorAerosolLeafCompartments() { return m_MechanicalVentilatorAerosolCompartments; }
113
114 std::vector<SEGasCompartment*>const& GetNasalCannulaCompartments() { return m_NasalCannulaCompartments; }
115 std::vector<SEGasCompartment*>const& GetNasalCannulaLeafCompartments() { return m_NasalCannulaLeafCompartments; }
116
117 std::vector<SEGasCompartment*>const& GetNonRebreatherMaskCompartments() { return m_NonRebreatherMaskCompartments; }
118 std::vector<SEGasCompartment*>const& GetNonRebreatherMaskLeafCompartments() { return m_NonRebreatherMaskLeafCompartments; }
119
120 std::vector<SEGasCompartment*>const& GetSimpleMaskCompartments() { return m_SimpleMaskCompartments; }
121 std::vector<SEGasCompartment*>const& GetSimpleMaskLeafCompartments() { return m_SimpleMaskLeafCompartments; }
122
123 protected:
124 // I don't want these exposed in Pulse, you should be calling the Substance manager
125 void AddGasCompartmentSubstance(SESubstance& sub) override;
126 void AddLiquidCompartmentSubstance(SESubstance& sub, bool forceCheck=false) override;
127
128 bool AllowGasSubstance(SESubstance& s, SEGasCompartment& cmpt) const override;
129 bool AllowLiquidSubstance(SESubstance& s, SELiquidCompartment& cmpt) const override;
130
131 Data& m_data;
132
133 bool m_UpdateActiveAirwayGraph;
134 bool m_UpdateActiveAerosolGraph;
135
136 SELiquidCompartmentGraph* m_CombinedCardiovascularGraph;
137 SELiquidCompartmentGraph* m_CardiovascularGraph;
138 SELiquidCompartmentGraph* m_RenalGraph;
139 SELiquidCompartmentGraph* m_ExtracorporealMembraneOxygenationDeviceGraph;
140 SEGasCompartmentGraph* m_ExtracorporealMembraneOxygenationDeviceGasGraph;
141
142 SEGasCompartmentGraph* m_RespiratoryGraph;
143 SEGasCompartmentGraph* m_CombinedRespiratoryAnesthesiaGraph;
144 SEGasCompartmentGraph* m_CombinedRespiratoryBagValveMaskGraph;
145 SEGasCompartmentGraph* m_CombinedRespiratoryInhalerGraph;
146 SEGasCompartmentGraph* m_CombinedRespiratoryNasalCannulaGraph;
147 SEGasCompartmentGraph* m_CombinedRespiratorySimpleMaskGraph;
148 SEGasCompartmentGraph* m_CombinedRespiratoryNonRebreatherMaskGraph;
149 SEGasCompartmentGraph* m_CombinedRespiratoryMechanicalVentilationGraph;
150 SEGasCompartmentGraph* m_CombinedRespiratoryMechanicalVentilatorGraph;
151 SEGasCompartmentGraph* m_AnesthesiaMachineGraph;
152 SEGasCompartmentGraph* m_BagValveMaskGraph;
153 SEGasCompartmentGraph* m_MechanicalVentilatorGraph;
154
155 SELiquidCompartmentGraph* m_AerosolGraph;
156 SELiquidCompartmentGraph* m_CombinedAerosolBagValveMaskGraph;
157 SELiquidCompartmentGraph* m_CombinedAerosolInhalerGraph;
158 SELiquidCompartmentGraph* m_CombinedAerosolMechanicalVentilationGraph;
159 SELiquidCompartmentGraph* m_CombinedAerosolMechanicalVentilatorGraph;
160
161 std::vector<SELiquidCompartment*> m_AerosolCompartments;
162 std::vector<SELiquidCompartment*> m_AerosolLeafCompartments;
163 std::vector<SELiquidCompartment*> m_ChymeCompartments;
164 std::vector<SELiquidCompartment*> m_ChymeLeafCompartments;
165 std::vector<SEGasCompartment*> m_PulmonaryCompartments;
166 std::vector<SEGasCompartment*> m_PulmonaryLeafCompartments;
167 std::vector<SEGasCompartment*> m_ExpandedLungsPulmonaryCompartments;
168 std::vector<SEGasCompartment*> m_ExpandedLungsPulmonaryLeafCompartments;
169 std::vector<SEThermalCompartment*> m_TemperatureCompartments;
170 std::vector<SEThermalCompartment*> m_TemperatureLeafCompartments;
171 std::vector<SETissueCompartment*> m_TissueCompartments;
172 std::vector<SELiquidCompartment*> m_UrineCompartments;
173 std::vector<SELiquidCompartment*> m_UrineLeafCompartments;
174 std::vector<SELiquidCompartment*> m_VascularCompartments;
175 std::vector<SELiquidCompartment*> m_VascularLeafCompartments;
176 std::vector<SELiquidCompartment*> m_ExpandedLungsVascularCompartments;
177 std::vector<SELiquidCompartment*> m_ExpandedLungsVascularLeafCompartments;
178 std::vector<SELiquidCompartment*> m_ComputationalLifeVascularCompartments;
179 std::vector<SELiquidCompartment*> m_ComputationalLifeVascularLeafCompartments;
180 std::vector<SEGasCompartment*> m_AnesthesiaMachineCompartments;
181 std::vector<SEGasCompartment*> m_AnesthesiaMachineLeafCompartments;
182 std::vector<SEGasCompartment*> m_BagValveMaskCompartments;
183 std::vector<SEGasCompartment*> m_BagValveMaskLeafCompartments;
184 std::vector<SELiquidCompartment*> m_BagValveMaskAerosolCompartments;
185 std::vector<SELiquidCompartment*> m_BagValveMaskAerosolLeafCompartments;
186 std::vector<SEGasCompartment*> m_InhalerCompartments;
187 std::vector<SEGasCompartment*> m_InhalerLeafCompartments;
188 std::vector<SELiquidCompartment*> m_InhalerAerosolCompartments;
189 std::vector<SELiquidCompartment*> m_InhalerAerosolLeafCompartments;
190 std::vector<SEGasCompartment*> m_MechanicalVentilationCompartments;
191 std::vector<SEGasCompartment*> m_MechanicalVentilationLeafCompartments;
192 std::vector<SELiquidCompartment*> m_MechanicalVentilationAerosolCompartments;
193 std::vector<SELiquidCompartment*> m_MechanicalVentilationAerosolLeafCompartments;
194 std::vector<SEGasCompartment*> m_MechanicalVentilatorCompartments;
195 std::vector<SEGasCompartment*> m_MechanicalVentilatorLeafCompartments;
196 std::vector<SELiquidCompartment*> m_MechanicalVentilatorAerosolCompartments;
197 std::vector<SELiquidCompartment*> m_MechanicalVentilatorAerosolLeafCompartments;
198 std::vector<SEGasCompartment*> m_NasalCannulaCompartments;
199 std::vector<SEGasCompartment*> m_NasalCannulaLeafCompartments;
200 std::vector<SEGasCompartment*> m_NonRebreatherMaskCompartments;
201 std::vector<SEGasCompartment*> m_NonRebreatherMaskLeafCompartments;
202 std::vector<SEGasCompartment*> m_SimpleMaskCompartments;
203 std::vector<SEGasCompartment*> m_SimpleMaskLeafCompartments;
204 };
205END_NAMESPACE
Definition: SECompartmentManager.h:25
Definition: SEGasCompartmentGraph.h:15
Definition: SEGasCompartment.h:14
Definition: SELiquidCompartmentGraph.h:16
Definition: SELiquidCompartment.h:11
Definition: SESubstance.h:16
Definition: Logger.h:14

Distributed under the Apache License, Version 2.0.

See accompanying NOTICE file for details.