SERenalSystem.h
1 /**************************************************************************************
2 Copyright 2015 Applied Research Associates, Inc.
3 Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4 this file except in compliance with the License. You may obtain a copy of the License
5 at:
6 http://www.apache.org/licenses/LICENSE-2.0
7 Unless required by applicable law or agreed to in writing, software distributed under
8 the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
9 CONDITIONS OF ANY KIND, either express or implied. See the License for the
10 specific language governing permissions and limitations under the License.
11 **************************************************************************************/
12 
13 #pragma once
14 #include <biogears/cdm/system/SESystem.h>
15 #include <biogears/schema/biogears/BioGearsPhysiology.hxx>
16 #include "biogears/cdm/properties/SEScalarVolumePerTimePressure.h"
17 
18 namespace biogears {
19 class SEScalarPressure;
20 class PressureUnit;
21 class SEScalarFraction;
22 class SEScalarVolumePerTime;
23 class VolumePerTimeUnit;
24 class SEScalarFlowCompliance;
25 class FlowComplianceUnit;
26 class SEScalarFlowResistance;
27 class FlowResistanceUnit;
28 class SEScalarFrequency;
29 class FrequencyUnit;
30 class SEScalarVolume;
31 class VolumeUnit;
32 class SEScalarVolumePerTimePressure;
33 class VolumePerTimePressureUnit;
34 class SEScalarArea;
35 class AreaUnit;
36 class SEScalarVolumePerTimePressureArea;
37 class VolumePerTimePressureAreaUnit;
38 class OsmolarityUnit;
39 class OsmolalityUnit;
40 class MassPerVolumeUnit;
41 
42 class BIOGEARS_API SERenalSystem : public SESystem {
43 public:
44  SERenalSystem(Logger* logger);
45  ~SERenalSystem() override;
46 
47  static size_t TypeHash() { return reinterpret_cast<size_t>(&TypeHash); }
48  static constexpr char const * const TypeTag() { return "SERenalSystem"; }
49  const char* classname() const override { return TypeTag(); }
50  size_t hash_code() const override { return TypeHash(); }
51 
52  void Clear() override; // Deletes all members
53 
54  const SEScalar* GetScalar(const char* name) override;
55  const SEScalar* GetScalar(const std::string& name) override;
56 
57  bool Load(const CDM::RenalSystemData& in);
58  CDM::RenalSystemData* Unload() const override;
59 
60  Tree<const char*> GetPhysiologyRequestGraph() const override;
61 protected:
62  void Unload(CDM::RenalSystemData& data) const;
63 
64 public:
65  bool HasGlomerularFiltrationRate() const;
66  SEScalarVolumePerTime& GetGlomerularFiltrationRate();
67  double GetGlomerularFiltrationRate(const VolumePerTimeUnit& unit) const;
68 
69  bool HasFiltrationFraction() const;
70  SEScalarFraction& GetFiltrationFraction();
71  double GetFiltrationFraction() const;
72 
73  bool HasLeftAfferentArterioleResistance() const;
74  SEScalarFlowResistance& GetLeftAfferentArterioleResistance();
75  double GetLeftAfferentArterioleResistance(const FlowResistanceUnit& unit) const;
76 
77  bool HasLeftBowmansCapsulesHydrostaticPressure() const;
78  SEScalarPressure& GetLeftBowmansCapsulesHydrostaticPressure();
79  double GetLeftBowmansCapsulesHydrostaticPressure(const PressureUnit& unit) const;
80 
81  bool HasLeftBowmansCapsulesOsmoticPressure() const;
82  SEScalarPressure& GetLeftBowmansCapsulesOsmoticPressure();
83  double GetLeftBowmansCapsulesOsmoticPressure(const PressureUnit& unit) const;
84 
85  bool HasLeftEfferentArterioleResistance() const;
86  SEScalarFlowResistance& GetLeftEfferentArterioleResistance();
87  double GetLeftEfferentArterioleResistance(const FlowResistanceUnit& unit) const;
88 
89  bool HasLeftGlomerularCapillariesHydrostaticPressure() const;
90  SEScalarPressure& GetLeftGlomerularCapillariesHydrostaticPressure();
91  double GetLeftGlomerularCapillariesHydrostaticPressure(const PressureUnit& unit) const;
92 
93  bool HasLeftGlomerularCapillariesOsmoticPressure() const;
94  SEScalarPressure& GetLeftGlomerularCapillariesOsmoticPressure();
95  double GetLeftGlomerularCapillariesOsmoticPressure(const PressureUnit& unit) const;
96 
97  bool HasLeftGlomerularFiltrationCoefficient() const;
98  SEScalarVolumePerTimePressure& GetLeftGlomerularFiltrationCoefficient();
99  double GetLeftGlomerularFiltrationCoefficient(const VolumePerTimePressureUnit& unit) const;
100 
101  bool HasLeftGlomerularFiltrationRate() const;
102  SEScalarVolumePerTime& GetLeftGlomerularFiltrationRate();
103  double GetLeftGlomerularFiltrationRate(const VolumePerTimeUnit& unit) const;
104 
105  bool HasLeftGlomerularFiltrationSurfaceArea() const;
106  SEScalarArea& GetLeftGlomerularFiltrationSurfaceArea();
107  double GetLeftGlomerularFiltrationSurfaceArea(const AreaUnit& unit) const;
108 
109  bool HasLeftGlomerularFluidPermeability() const;
110  SEScalarVolumePerTimePressureArea& GetLeftGlomerularFluidPermeability();
111  double GetLeftGlomerularFluidPermeability(const VolumePerTimePressureAreaUnit& unit) const;
112 
113  bool HasLeftFiltrationFraction() const;
114  SEScalarFraction& GetLeftFiltrationFraction();
115  double GetLeftFiltrationFraction() const;
116 
117  bool HasLeftNetFiltrationPressure() const;
118  SEScalarPressure& GetLeftNetFiltrationPressure();
119  double GetLeftNetFiltrationPressure(const PressureUnit& unit) const;
120 
121  bool HasLeftNetReabsorptionPressure() const;
122  SEScalarPressure& GetLeftNetReabsorptionPressure();
123  double GetLeftNetReabsorptionPressure(const PressureUnit& unit) const;
124 
125  bool HasLeftPeritubularCapillariesHydrostaticPressure() const;
126  SEScalarPressure& GetLeftPeritubularCapillariesHydrostaticPressure();
127  double GetLeftPeritubularCapillariesHydrostaticPressure(const PressureUnit& unit) const;
128 
129  bool HasLeftPeritubularCapillariesOsmoticPressure() const;
130  SEScalarPressure& GetLeftPeritubularCapillariesOsmoticPressure();
131  double GetLeftPeritubularCapillariesOsmoticPressure(const PressureUnit& unit) const;
132 
133  bool HasLeftReabsorptionFiltrationCoefficient() const;
134  SEScalarVolumePerTimePressure& GetLeftReabsorptionFiltrationCoefficient();
135  double GetLeftReabsorptionFiltrationCoefficient(const VolumePerTimePressureUnit& unit) const;
136 
137  bool HasLeftReabsorptionRate() const;
138  SEScalarVolumePerTime& GetLeftReabsorptionRate();
139  double GetLeftReabsorptionRate(const VolumePerTimeUnit& unit) const;
140 
141  bool HasLeftTubularReabsorptionFiltrationSurfaceArea() const;
142  SEScalarArea& GetLeftTubularReabsorptionFiltrationSurfaceArea();
143  double GetLeftTubularReabsorptionFiltrationSurfaceArea(const AreaUnit& unit) const;
144 
145  bool HasLeftTubularReabsorptionFluidPermeability() const;
146  SEScalarVolumePerTimePressureArea& GetLeftTubularReabsorptionFluidPermeability();
147  double GetLeftTubularReabsorptionFluidPermeability(const VolumePerTimePressureAreaUnit& unit) const;
148 
149  bool HasLeftTubularHydrostaticPressure() const;
150  SEScalarPressure& GetLeftTubularHydrostaticPressure();
151  double GetLeftTubularHydrostaticPressure(const PressureUnit& unit) const;
152 
153  bool HasLeftTubularOsmoticPressure() const;
154  SEScalarPressure& GetLeftTubularOsmoticPressure();
155  double GetLeftTubularOsmoticPressure(const PressureUnit& unit) const;
156 
157  bool HasRenalBloodFlow() const;
158  SEScalarVolumePerTime& GetRenalBloodFlow();
159  double GetRenalBloodFlow(const VolumePerTimeUnit& unit) const;
160 
161  bool HasRenalPlasmaFlow() const;
162  SEScalarVolumePerTime& GetRenalPlasmaFlow();
163  double GetRenalPlasmaFlow(const VolumePerTimeUnit& unit) const;
164 
165  bool HasRenalVascularResistance() const;
166  SEScalarFlowResistance& GetRenalVascularResistance();
167  double GetRenalVascularResistance(const FlowResistanceUnit& unit) const;
168 
169  bool HasRightAfferentArterioleResistance() const;
170  SEScalarFlowResistance& GetRightAfferentArterioleResistance();
171  double GetRightAfferentArterioleResistance(const FlowResistanceUnit& unit) const;
172 
173  bool HasRightBowmansCapsulesHydrostaticPressure() const;
174  SEScalarPressure& GetRightBowmansCapsulesHydrostaticPressure();
175  double GetRightBowmansCapsulesHydrostaticPressure(const PressureUnit& unit) const;
176 
177  bool HasRightBowmansCapsulesOsmoticPressure() const;
178  SEScalarPressure& GetRightBowmansCapsulesOsmoticPressure();
179  double GetRightBowmansCapsulesOsmoticPressure(const PressureUnit& unit) const;
180 
181  bool HasRightEfferentArterioleResistance() const;
182  SEScalarFlowResistance& GetRightEfferentArterioleResistance();
183  double GetRightEfferentArterioleResistance(const FlowResistanceUnit& unit) const;
184 
185  bool HasRightGlomerularCapillariesHydrostaticPressure() const;
186  SEScalarPressure& GetRightGlomerularCapillariesHydrostaticPressure();
187  double GetRightGlomerularCapillariesHydrostaticPressure(const PressureUnit& unit) const;
188 
189  bool HasRightGlomerularCapillariesOsmoticPressure() const;
190  SEScalarPressure& GetRightGlomerularCapillariesOsmoticPressure();
191  double GetRightGlomerularCapillariesOsmoticPressure(const PressureUnit& unit) const;
192 
193  bool HasRightGlomerularFiltrationCoefficient() const;
194  SEScalarVolumePerTimePressure& GetRightGlomerularFiltrationCoefficient();
195  double GetRightGlomerularFiltrationCoefficient(const VolumePerTimePressureUnit& unit) const;
196 
197  bool HasRightGlomerularFiltrationRate() const;
198  SEScalarVolumePerTime& GetRightGlomerularFiltrationRate();
199  double GetRightGlomerularFiltrationRate(const VolumePerTimeUnit& unit) const;
200 
201  bool HasRightGlomerularFiltrationSurfaceArea() const;
202  SEScalarArea& GetRightGlomerularFiltrationSurfaceArea();
203  double GetRightGlomerularFiltrationSurfaceArea(const AreaUnit& unit) const;
204 
205  bool HasRightGlomerularFluidPermeability() const;
206  SEScalarVolumePerTimePressureArea& GetRightGlomerularFluidPermeability();
207  double GetRightGlomerularFluidPermeability(const VolumePerTimePressureAreaUnit& unit) const;
208 
209  bool HasRightFiltrationFraction() const;
210  SEScalarFraction& GetRightFiltrationFraction();
211  double GetRightFiltrationFraction() const;
212 
213  bool HasRightNetFiltrationPressure() const;
214  SEScalarPressure& GetRightNetFiltrationPressure();
215  double GetRightNetFiltrationPressure(const PressureUnit& unit) const;
216 
217  bool HasRightNetReabsorptionPressure() const;
218  SEScalarPressure& GetRightNetReabsorptionPressure();
219  double GetRightNetReabsorptionPressure(const PressureUnit& unit) const;
220 
221  bool HasRightPeritubularCapillariesHydrostaticPressure() const;
222  SEScalarPressure& GetRightPeritubularCapillariesHydrostaticPressure();
223  double GetRightPeritubularCapillariesHydrostaticPressure(const PressureUnit& unit) const;
224 
225  bool HasRightPeritubularCapillariesOsmoticPressure() const;
226  SEScalarPressure& GetRightPeritubularCapillariesOsmoticPressure();
227  double GetRightPeritubularCapillariesOsmoticPressure(const PressureUnit& unit) const;
228 
229  bool HasRightReabsorptionFiltrationCoefficient() const;
230  SEScalarVolumePerTimePressure& GetRightReabsorptionFiltrationCoefficient();
231  double GetRightReabsorptionFiltrationCoefficient(const VolumePerTimePressureUnit& unit) const;
232 
233  bool HasRightReabsorptionRate() const;
234  SEScalarVolumePerTime& GetRightReabsorptionRate();
235  double GetRightReabsorptionRate(const VolumePerTimeUnit& unit) const;
236 
237  bool HasRightTubularReabsorptionFiltrationSurfaceArea() const;
238  SEScalarArea& GetRightTubularReabsorptionFiltrationSurfaceArea();
239  double GetRightTubularReabsorptionFiltrationSurfaceArea(const AreaUnit& unit) const;
240 
241  bool HasRightTubularReabsorptionFluidPermeability() const;
242  SEScalarVolumePerTimePressureArea& GetRightTubularReabsorptionFluidPermeability();
243  double GetRightTubularReabsorptionFluidPermeability(const VolumePerTimePressureAreaUnit& unit) const;
244 
245  bool HasRightTubularHydrostaticPressure() const;
246  SEScalarPressure& GetRightTubularHydrostaticPressure();
247  double GetRightTubularHydrostaticPressure(const PressureUnit& unit) const;
248 
249  bool HasRightTubularOsmoticPressure() const;
250  SEScalarPressure& GetRightTubularOsmoticPressure();
251  double GetRightTubularOsmoticPressure(const PressureUnit& unit) const;
252 
253  bool HasUrinationRate() const;
254  SEScalarVolumePerTime& GetUrinationRate();
255  double GetUrinationRate(const VolumePerTimeUnit& unit) const;
256 
257  bool HasUrineOsmolality() const;
258  SEScalarOsmolality& GetUrineOsmolality();
259  double GetUrineOsmolality(const OsmolalityUnit& unit) const;
260 
261  bool HasUrineOsmolarity() const;
262  SEScalarOsmolarity& GetUrineOsmolarity();
263  double GetUrineOsmolarity(const OsmolarityUnit& unit) const;
264 
265  bool HasUrineProductionRate() const;
266  SEScalarVolumePerTime& GetUrineProductionRate();
267  double GetUrineProductionRate(const VolumePerTimeUnit& unit) const;
268 
269  bool HasMeanUrineOutput() const;
270  SEScalarVolumePerTime& GetMeanUrineOutput();
271  double GetMeanUrineOutput(const VolumePerTimeUnit& unit) const;
272 
273  bool HasUrineSpecificGravity() const;
274  SEScalar& GetUrineSpecificGravity();
275  double GetUrineSpecificGravity() const;
276 
277  bool HasUrineVolume() const;
278  SEScalarVolume& GetUrineVolume();
279  double GetUrineVolume(const VolumeUnit& unit) const;
280 
281  bool HasUrineUreaNitrogenConcentration() const;
282  SEScalarMassPerVolume& GetUrineUreaNitrogenConcentration();
283  double GetUrineUreaNitrogenConcentration(const MassPerVolumeUnit& unit) const;
284 
285 protected:
288 
310 
314 
336 
345 };
346 }
Definition: SEScalarVolumePerTimePressure.h:18
Definition: SEScalarOsmolarity.h:34
SEScalarFlowResistance * m_RightEfferentArterioleResistance
Definition: SERenalSystem.h:318
SEScalarArea * m_RightGlomerularFiltrationSurfaceArea
Definition: SERenalSystem.h:323
SEScalarVolumePerTime * m_RightReabsorptionRate
Definition: SERenalSystem.h:331
SEScalarMassPerVolume * m_UrineUreaNitrogenConcentration
Definition: SERenalSystem.h:344
SEScalarVolumePerTime * m_RightGlomerularFiltrationRate
Definition: SERenalSystem.h:322
Definition: SEScalar.h:33
SEScalarArea * m_LeftGlomerularFiltrationSurfaceArea
Definition: SERenalSystem.h:297
SEScalarPressure * m_LeftNetReabsorptionPressure
Definition: SERenalSystem.h:301
SEScalarVolumePerTime * m_UrinationRate
Definition: SERenalSystem.h:337
Definition: SEScalarOsmolality.h:34
SEScalarVolumePerTimePressure * m_RightGlomerularFiltrationCoefficient
Definition: SERenalSystem.h:321
SEScalarOsmolarity * m_UrineOsmolarity
Definition: SERenalSystem.h:339
SEScalarVolumePerTimePressure * m_LeftGlomerularFiltrationCoefficient
Definition: SERenalSystem.h:295
SEScalarPressure * m_RightGlomerularCapillariesHydrostaticPressure
Definition: SERenalSystem.h:319
SEScalarVolumePerTime * m_RenalBloodFlow
Definition: SERenalSystem.h:311
SEScalarVolumePerTime * m_RenalPlasmaFlow
Definition: SERenalSystem.h:312
SEScalarPressure * m_LeftTubularHydrostaticPressure
Definition: SERenalSystem.h:308
Definition: SEScalarFlowResistance.h:18
size_t hash_code() const override
Definition: SERenalSystem.h:50
Definition: SESystem.h:27
Definition: SEScalarVolumePerTime.h:18
SEScalarVolumePerTimePressureArea * m_LeftGlomerularFluidPermeability
Definition: SERenalSystem.h:298
SEScalarPressure * m_RightTubularOsmoticPressure
Definition: SERenalSystem.h:335
SEScalarVolumePerTime * m_LeftGlomerularFiltrationRate
Definition: SERenalSystem.h:296
SEScalarOsmolality * m_UrineOsmolality
Definition: SERenalSystem.h:338
SEScalar * m_UrineSpecificGravity
Definition: SERenalSystem.h:342
static constexpr char const *const TypeTag()
Definition: SERenalSystem.h:48
Definition: SEScalarOsmolality.h:18
SEScalarVolumePerTimePressure * m_RightReabsorptionFiltrationCoefficient
Definition: SERenalSystem.h:330
Definition: SEScalarVolumePerTimePressureArea.h:18
SEScalarPressure * m_LeftBowmansCapsulesHydrostaticPressure
Definition: SERenalSystem.h:290
SEScalarVolumePerTimePressure * m_LeftReabsorptionFiltrationCoefficient
Definition: SERenalSystem.h:304
SEScalarFlowResistance * m_RightAfferentArterioleResistance
Definition: SERenalSystem.h:315
SEScalarFlowResistance * m_LeftEfferentArterioleResistance
Definition: SERenalSystem.h:292
SEScalarFraction * m_FiltrationFraction
Definition: SERenalSystem.h:287
Definition: Logger.h:75
SEScalarPressure * m_RightPeritubularCapillariesHydrostaticPressure
Definition: SERenalSystem.h:328
SEScalarArea * m_RightTubularReabsorptionFiltrationSurfaceArea
Definition: SERenalSystem.h:332
Definition: SEScalarFraction.h:18
SEScalarPressure * m_LeftPeritubularCapillariesOsmoticPressure
Definition: SERenalSystem.h:303
SEScalarFlowResistance * m_RenalVascularResistance
Definition: SERenalSystem.h:313
SEScalarFraction * m_LeftFiltrationFraction
Definition: SERenalSystem.h:299
SEScalarPressure * m_RightPeritubularCapillariesOsmoticPressure
Definition: SERenalSystem.h:329
SEScalarVolumePerTime * m_GlomerularFiltrationRate
Definition: SERenalSystem.h:286
SEScalarPressure * m_RightGlomerularCapillariesOsmoticPressure
Definition: SERenalSystem.h:320
Definition: SEScalarOsmolarity.h:18
SEScalarVolumePerTimePressureArea * m_RightGlomerularFluidPermeability
Definition: SERenalSystem.h:324
SEScalarPressure * m_RightTubularHydrostaticPressure
Definition: SERenalSystem.h:334
SEScalarVolumePerTimePressureArea * m_RightTubularReabsorptionFluidPermeability
Definition: SERenalSystem.h:333
Definition: SEScalarVolume.h:18
Definition: SEScalarPressure.h:37
Definition: SEScalarArea.h:33
Definition: SEScalarVolume.h:37
static size_t TypeHash()
Definition: SERenalSystem.h:47
SEScalarVolumePerTime * m_LeftReabsorptionRate
Definition: SERenalSystem.h:305
Definition: SEScalarVolumePerTime.h:40
Definition: SEScalarFlowResistance.h:37
Definition: SEScalarArea.h:18
SEScalarPressure * m_LeftTubularOsmoticPressure
Definition: SERenalSystem.h:309
SEScalarVolumePerTimePressureArea * m_LeftTubularReabsorptionFluidPermeability
Definition: SERenalSystem.h:307
Definition: SEScalarPressure.h:18
Definition: SEScalarMassPerVolume.h:46
SEScalarFraction * m_RightFiltrationFraction
Definition: SERenalSystem.h:325
SEScalarPressure * m_RightBowmansCapsulesHydrostaticPressure
Definition: SERenalSystem.h:316
Definition: SEScalarMassPerVolume.h:18
SEScalarPressure * m_LeftNetFiltrationPressure
Definition: SERenalSystem.h:300
SEScalarPressure * m_RightNetFiltrationPressure
Definition: SERenalSystem.h:326
Definition: SEScalarVolumePerTimePressure.h:36
SEScalarPressure * m_RightBowmansCapsulesOsmoticPressure
Definition: SERenalSystem.h:317
SEScalarPressure * m_LeftBowmansCapsulesOsmoticPressure
Definition: SERenalSystem.h:291
const char * classname() const override
Definition: SERenalSystem.h:49
Class corresponding to the RenalSystemData schema type.
Definition: Physiology.hxx:13460
Definition: SEElectricalCircuit.h:18
SEScalarArea * m_LeftTubularReabsorptionFiltrationSurfaceArea
Definition: SERenalSystem.h:306
SEScalarPressure * m_RightNetReabsorptionPressure
Definition: SERenalSystem.h:327
SEScalarPressure * m_LeftPeritubularCapillariesHydrostaticPressure
Definition: SERenalSystem.h:302
SEScalarPressure * m_LeftGlomerularCapillariesHydrostaticPressure
Definition: SERenalSystem.h:293
SEScalarFlowResistance * m_LeftAfferentArterioleResistance
Definition: SERenalSystem.h:289
SEScalarVolume * m_UrineVolume
Definition: SERenalSystem.h:343
Definition: SEScalarVolumePerTimePressureArea.h:34
SEScalarVolumePerTime * m_UrineProductionRate
Definition: SERenalSystem.h:340
SEScalarPressure * m_LeftGlomerularCapillariesOsmoticPressure
Definition: SERenalSystem.h:294
Definition: SERenalSystem.h:42
SEScalarVolumePerTime * m_MeanUrineOutput
Definition: SERenalSystem.h:341