SEBloodChemistrySystem.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 
15 #include <biogears/cdm/system/SESystem.h>
16 #include <biogears/exports.h>
17 #include <biogears/schema/biogears/BioGearsPhysiology.hxx>
18 
19 namespace biogears {
20 class SEScalar;
21 class SEScalar0To1;
22 class SEScalarMass;
23 class MassUnit;
24 class SEScalarTime;
25 class TimeUnit;
26 class SEScalarMassPerVolume;
27 class MassPerVolumeUnit;
28 class SEScalarHeatCapacitancePerMass;
29 class HeatCapacitancePerMassUnit;
30 class SEScalarFraction;
31 class SEScalarVolume;
32 class VolumeUnit;
33 class SEScalarAmountPerVolume;
34 class AmountPerVolumeUnit;
35 class SEScalarPressure;
36 class PressureUnit;
37 class SEInflammatoryResponse;
38 
41 class BIOGEARS_API SEBloodChemistrySystem : public SESystem {
42 public:
44  ~SEBloodChemistrySystem() override;
45 
46  static size_t TypeHash() { return reinterpret_cast<size_t>(&TypeHash); }
47  static constexpr char const* const TypeTag() { return "SEBloodChemistrySystem"; }
48  const char* classname() const override { return TypeTag(); }
49  size_t hash_code() const override { return TypeHash(); }
50 
51  void Clear() override;
53  const SEScalar* GetScalar(const char* name) override;
54  const SEScalar* GetScalar(const std::string& name) override; //@{
57  bool Load(const CDM::BloodChemistrySystemData& in);
58  CDM::BloodChemistrySystemData* Unload() const override;
60  Tree<const char*> GetPhysiologyRequestGraph() const override;
61 
62 protected:
63  void Unload(CDM::BloodChemistrySystemData& data) const; //@}
64 public: //@{ @copybrief Physiology_BloodChemistrySystemData_BloodDensity
66  bool HasBloodDensity() const;
67  SEScalarMassPerVolume& GetBloodDensity();
68  double GetBloodDensity(const MassPerVolumeUnit& unit) const; //@}
69 
73  bool HasArterialBloodPH() const;
76  SEScalar& GetArterialBloodPH();
77  double GetArterialBloodPH() const;
79 
83  bool HasArterialBloodPHBaseline() const;
86  SEScalar& GetArterialBloodPHBaseline();
87  double GetArterialBloodPHBaseline() const;
89 
93  bool HasVenousBloodPH() const;
96  SEScalar& GetVenousBloodPH();
97  double GetVenousBloodPH() const;
99 
103  bool HasBloodSpecificHeat() const;
106  SEScalarHeatCapacitancePerMass& GetBloodSpecificHeat();
107  double GetBloodSpecificHeat(const HeatCapacitancePerMassUnit& unit) const;
109 
113  bool HasBloodUreaNitrogenConcentration() const;
116  SEScalarMassPerVolume& GetBloodUreaNitrogenConcentration();
117  double GetBloodUreaNitrogenConcentration(const MassPerVolumeUnit& unit) const;
119 
123  bool HasCarbonDioxideSaturation() const;
126  SEScalarFraction& GetCarbonDioxideSaturation();
127  double GetCarbonDioxideSaturation() const;
129 
133  bool HasCarbonMonoxideSaturation() const;
136  SEScalarFraction& GetCarbonMonoxideSaturation();
137  double GetCarbonMonoxideSaturation() const;
139 
143  bool HasHematocrit() const;
146  SEScalarFraction& GetHematocrit();
147  double GetHematocrit() const;
149 
153  bool HasHemoglobinContent() const;
156  SEScalarMass& GetHemoglobinContent();
157  double GetHemoglobinContent(const MassUnit& unit) const;
159 
163  bool HasHemoglobinLostToUrine() const;
166  SEScalarMass& GetHemoglobinLostToUrine();
167  double GetHemoglobinLostToUrine(const MassUnit& unit) const;
169 
173  bool HasOxygenSaturation() const;
176  SEScalarFraction& GetOxygenSaturation();
177  double GetOxygenSaturation() const;
179 
183  bool HasOxygenVenousSaturation() const;
186  SEScalarFraction& GetOxygenVenousSaturation();
187  double GetOxygenVenousSaturation() const;
189 
193  bool HasPhosphate() const;
196  SEScalarAmountPerVolume& GetPhosphate();
197  double GetPhosphate(const AmountPerVolumeUnit& unit) const;
199 
203  bool HasPlasmaVolume() const;
206  SEScalarVolume& GetPlasmaVolume();
207  double GetPlasmaVolume(const VolumeUnit& unit) const;
209 
213  bool HasPulseOximetry() const;
216  SEScalarFraction& GetPulseOximetry();
217  double GetPulseOximetry() const;
219 
223  bool HasRedBloodCellAcetylcholinesterase() const;
226  SEScalarAmountPerVolume& GetRedBloodCellAcetylcholinesterase();
227  double GetRedBloodCellAcetylcholinesterase(const AmountPerVolumeUnit& unit) const;
229 
233  bool HasRedBloodCellCount() const;
236  SEScalarAmountPerVolume& GetRedBloodCellCount();
237  double GetRedBloodCellCount(const AmountPerVolumeUnit& unit) const;
239 
243  bool HasStrongIonDifference() const;
246  SEScalarAmountPerVolume& GetStrongIonDifference();
247  double GetStrongIonDifference(const AmountPerVolumeUnit& unit) const;
249 
253  bool HasShuntFraction() const;
256  SEScalarFraction& GetShuntFraction();
257  double GetShuntFraction() const;
259 
260  bool HasTotalBilirubin() const;
261  SEScalarMassPerVolume& GetTotalBilirubin();
262  double GetTotalBilirubin(const MassPerVolumeUnit& unit) const;
263 
267  bool HasTotalProteinConcentration() const;
270  SEScalarMassPerVolume& GetTotalProteinConcentration();
271  double GetTotalProteinConcentration(const MassPerVolumeUnit& unit) const;
273 
277  bool HasRhTransfusionReactionVolume() const;
280  virtual SEScalarVolume& GetRhTransfusionReactionVolume();
281  double GetRhTransfusionReactionVolume(const VolumeUnit& unit) const;
283 
287  bool HasVolumeFractionNeutralPhospholipidInPlasma() const;
290  SEScalarFraction& GetVolumeFractionNeutralPhospholipidInPlasma();
291  double GetVolumeFractionNeutralPhospholipidInPlasma() const;
293 
297  bool HasVolumeFractionNeutralLipidInPlasma() const;
300  SEScalarFraction& GetVolumeFractionNeutralLipidInPlasma();
301  double GetVolumeFractionNeutralLipidInPlasma() const;
303 
307  bool HasWhiteBloodCellCount() const;
310  SEScalarAmountPerVolume& GetWhiteBloodCellCount();
311  double GetWhiteBloodCellCount(const AmountPerVolumeUnit& unit) const;
313 
317  bool HasArterialCarbonDioxidePressure() const;
320  SEScalarPressure& GetArterialCarbonDioxidePressure();
321  double GetArterialCarbonDioxidePressure(const PressureUnit& unit) const;
323 
327  bool HasArterialOxygenPressure() const;
330  SEScalarPressure& GetArterialOxygenPressure();
331  double GetArterialOxygenPressure(const PressureUnit& unit) const;
333 
337  bool HasPulmonaryArterialCarbonDioxidePressure() const;
340  SEScalarPressure& GetPulmonaryArterialCarbonDioxidePressure();
341  double GetPulmonaryArterialCarbonDioxidePressure(const PressureUnit& unit) const;
343 
347  bool HasPulmonaryArterialOxygenPressure() const;
350  SEScalarPressure& GetPulmonaryArterialOxygenPressure();
351  double GetPulmonaryArterialOxygenPressure(const PressureUnit& unit) const;
353 
357  bool HasPulmonaryVenousCarbonDioxidePressure() const;
360  SEScalarPressure& GetPulmonaryVenousCarbonDioxidePressure();
361  double GetPulmonaryVenousCarbonDioxidePressure(const PressureUnit& unit) const;
363 
367  bool HasPulmonaryVenousOxygenPressure() const;
370  SEScalarPressure& GetPulmonaryVenousOxygenPressure();
371  double GetPulmonaryVenousOxygenPressure(const PressureUnit& unit) const;
373 
377  bool HasVenousCarbonDioxidePressure() const;
380  SEScalarPressure& GetVenousCarbonDioxidePressure();
381  double GetVenousCarbonDioxidePressure(const PressureUnit& unit) const;
383 
386  bool HasVenousOxygenPressure() const;
389  SEScalarPressure& GetVenousOxygenPressure();
390  double GetVenousOxygenPressure(const PressureUnit& unit) const;
392 
393  virtual bool HasInflammatoryResponse() const;
394  virtual SEInflammatoryResponse& GetInflammatoryResponse();
395  virtual SEInflammatoryResponse& GetInflammatoryResponse() const;
396 
397 protected:
424 
425 
435 };
436 
437 class BIOGEARS_API SEInflammatoryResponse {
438 public:
441 
442  static size_t TypeHash() { return reinterpret_cast<size_t>(&TypeHash); }
443  static constexpr char const* const TypeTag() { return "SEInflammatoryResponse"; }
444  const char* classname() const { return TypeTag(); }
445  size_t hash_code() const { return TypeHash(); }
446 
447  void Clear();
448 
449  bool Load(const CDM::InflammatoryResponseData& in);
450  CDM::InflammatoryResponseData* Unload() const;
451  bool IsValid();
452 
453  void Initialize();
454  const SEScalar* GetScalar(const char* name);
455  const SEScalar* GetScalar(const std::string& name);
456 
457 protected:
458  void Unload(CDM::InflammatoryResponseData& data) const;
459 
460 public:
461  bool HasLocalPathogen() const;
462  SEScalar& GetLocalPathogen();
463  double GetLocalPathogen() const;
464 
465  bool HasLocalBarrier() const;
466  SEScalar& GetLocalBarrier();
467  double GetLocalBarrier() const;
468 
469  bool HasLocalMacrophage() const;
470  SEScalar& GetLocalMacrophage();
471  double GetLocalMacrophage() const;
472 
473  bool HasLocalNeutrophil() const;
474  SEScalar& GetLocalNeutrophil();
475  double GetLocalNeutrophil() const;
476 
477  bool HasActiveTLR() const {return m_ActiveTLR == CDM::enumOnOff::value(-1) ? false : true;};
478  CDM::enumOnOff GetActiveTLR() { return m_ActiveTLR; };
479  void SetActiveTLR(CDM::enumOnOff value) { m_ActiveTLR = value; };
480 
481  bool HasAutonomicResponseLevel() const;
482  SEScalar& GetAutonomicResponseLevel();
483  double GetAutonomicResponseLevel() const;
484 
485  bool HasCatecholamines() const;
486  SEScalar& GetCatecholamines();
487  double GetCatecholamines() const;
488 
489  bool HasConstitutiveNOS() const;
490  SEScalar& GetConstitutiveNOS();
491  double GetConstitutiveNOS() const;
492 
493  bool HasInducibleNOSPre() const;
494  SEScalar& GetInducibleNOSPre();
495  double GetInducibleNOSPre() const;
496 
497  bool HasInducibleNOS() const;
498  SEScalar& GetInducibleNOS();
499  double GetInducibleNOS() const;
500 
501  bool HasInterleukin6() const;
502  SEScalar& GetInterleukin6();
503  double GetInterleukin6() const;
504 
505  bool HasInterleukin10() const;
506  SEScalar& GetInterleukin10();
507  double GetInterleukin10() const;
508 
509  bool HasInterleukin12() const;
510  SEScalar& GetInterleukin12();
511  double GetInterleukin12() const;
512 
513  bool HasMacrophageResting() const;
514  SEScalar& GetMacrophageResting();
515  double GetMacrophageResting() const;
516 
517  bool HasMacrophageActive() const;
518  SEScalar& GetMacrophageActive();
519  double GetMacrophageActive() const;
520 
521  bool HasNeutrophilResting() const;
522  SEScalar& GetNeutrophilResting();
523  double GetNeutrophilResting() const;
524 
525  bool HasNeutrophilActive() const;
526  SEScalar& GetNeutrophilActive();
527  double GetNeutrophilActive() const;
528 
529  bool HasNitrate() const;
530  SEScalar& GetNitrate();
531  double GetNitrate() const;
532 
533  bool HasNitricOxide() const;
534  SEScalar& GetNitricOxide();
535  double GetNitricOxide() const;
536 
537  bool HasBloodPathogen() const;
538  SEScalar& GetBloodPathogen();
539  double GetBloodPathogen() const;
540 
541  bool HasTissueIntegrity() const;
542  SEScalar0To1& GetTissueIntegrity();
543  double GetTissueIntegrity() const;
544 
545  bool HasTrauma() const;
546  SEScalar& GetTrauma();
547  double GetTrauma() const;
548 
549  bool HasTumorNecrosisFactor() const;
550  SEScalar& GetTumorNecrosisFactor();
551  double GetTumorNecrosisFactor() const;
552 
553  bool HasInflammationTime() const;
554  SEScalarTime& GetInflammationTime();
555  double GetInflammationTime(const TimeUnit& unit) const;
556 
557  bool HasInflammationSources() const;
558  std::vector<CDM::enumInflammationSource>& GetInflammationSources();
559  bool HasInflammationSource(CDM::enumInflammationSource::value src);
560 
561  Tree<const char*> GetPhysiologyRequestGraph() const;
562 
563 protected:
588  std::vector<CDM::enumInflammationSource> m_InflammationSources;
589 };
590 }
SEScalar * m_LocalNeutrophil
Definition: SEBloodChemistrySystem.h:566
SEScalarPressure * m_VenousOxygenPressure
Definition: SEBloodChemistrySystem.h:433
SEScalarPressure * m_VenousCarbonDioxidePressure
Definition: SEBloodChemistrySystem.h:432
SEScalarAmountPerVolume * m_RedBloodCellCount
Definition: SEBloodChemistrySystem.h:415
void SetActiveTLR(CDM::enumOnOff value)
Definition: SEBloodChemistrySystem.h:479
Definition: SEScalarHeatCapacitancePerMass.h:36
SEScalarPressure * m_PulmonaryArterialCarbonDioxidePressure
Definition: SEBloodChemistrySystem.h:428
SEScalar * m_Nitrate
Definition: SEBloodChemistrySystem.h:581
SEScalarMass * m_HemoglobinContent
Definition: SEBloodChemistrySystem.h:407
SEScalarVolume * m_PlasmaVolume
Definition: SEBloodChemistrySystem.h:412
SEScalarPressure * m_ArterialOxygenPressure
Definition: SEBloodChemistrySystem.h:427
static constexpr char const *const TypeTag()
Definition: SEBloodChemistrySystem.h:47
size_t hash_code() const
Definition: SEBloodChemistrySystem.h:445
Definition: SEScalar.h:33
SEScalar * m_InducibleNOSPre
Definition: SEBloodChemistrySystem.h:572
SEScalar * m_NitricOxide
Definition: SEBloodChemistrySystem.h:582
Class corresponding to the BloodChemistrySystemData schema type.
Definition: Physiology.hxx:2849
SEScalar * m_Interleukin10
Definition: SEBloodChemistrySystem.h:575
SEScalarAmountPerVolume * m_WhiteBloodCellCount
Definition: SEBloodChemistrySystem.h:423
SEScalar * m_Interleukin12
Definition: SEBloodChemistrySystem.h:576
std::vector< CDM::enumInflammationSource > m_InflammationSources
Definition: SEBloodChemistrySystem.h:588
SEScalarFraction * m_CarbonDioxideSaturation
Definition: SEBloodChemistrySystem.h:404
Definition: SEBloodChemistrySystem.h:437
SEScalarPressure * m_PulmonaryArterialOxygenPressure
Definition: SEBloodChemistrySystem.h:429
bool HasActiveTLR() const
Definition: SEBloodChemistrySystem.h:477
Definition: SESystem.h:27
SEScalar * m_TumorNecrosisFactor
Definition: SEBloodChemistrySystem.h:586
SEScalar0To1 * m_TissueIntegrity
Definition: SEBloodChemistrySystem.h:584
SEScalarFraction * m_VolumeFractionNeutralPhospholipidInPlasma
Definition: SEBloodChemistrySystem.h:421
Definition: SEScalarMass.h:38
SEScalar * m_ArterialBloodPHBaseline
Definition: SEBloodChemistrySystem.h:400
SEScalarFraction * m_OxygenSaturation
Definition: SEBloodChemistrySystem.h:409
Definition: SEBloodChemistrySystem.h:41
SEScalar * m_BloodPathogen
Definition: SEBloodChemistrySystem.h:583
static size_t TypeHash()
Definition: SEBloodChemistrySystem.h:46
Definition: Logger.h:75
SEScalar * m_LocalBarrier
Definition: SEBloodChemistrySystem.h:567
Definition: SEScalarAmountPerVolume.h:17
SEScalar * m_MacrophageActive
Definition: SEBloodChemistrySystem.h:578
SEScalarPressure * m_PulmonaryVenousOxygenPressure
Definition: SEBloodChemistrySystem.h:431
Definition: SEScalarAmountPerVolume.h:37
Definition: SEScalarFraction.h:18
SEScalarMassPerVolume * m_BloodDensity
Definition: SEBloodChemistrySystem.h:398
SEScalar * m_NeutrophilActive
Definition: SEBloodChemistrySystem.h:580
SEScalarAmountPerVolume * m_Phosphate
Definition: SEBloodChemistrySystem.h:411
SEScalarPressure * m_ArterialCarbonDioxidePressure
Definition: SEBloodChemistrySystem.h:426
Definition: SEScalarTime.h:37
const char * classname() const
Definition: SEBloodChemistrySystem.h:444
value
Underlying enum type.
Definition: Physiology.hxx:1030
Definition: SEScalarTime.h:18
SEScalarFraction * m_CarbonMonoxideSaturation
Definition: SEBloodChemistrySystem.h:405
SEScalar * m_InducibleNOS
Definition: SEBloodChemistrySystem.h:573
SEScalarFraction * m_OxygenVenousSaturation
Definition: SEBloodChemistrySystem.h:410
SEScalar * m_MacrophageResting
Definition: SEBloodChemistrySystem.h:577
SEScalar * m_LocalMacrophage
Definition: SEBloodChemistrySystem.h:565
SEScalarFraction * m_VolumeFractionNeutralLipidInPlasma
Definition: SEBloodChemistrySystem.h:422
SEScalarPressure * m_PulmonaryVenousCarbonDioxidePressure
Definition: SEBloodChemistrySystem.h:430
CDM::enumOnOff GetActiveTLR()
Definition: SEBloodChemistrySystem.h:478
Definition: SEScalar0To1.h:17
Class corresponding to the InflammatoryResponseData schema type.
Definition: Physiology.hxx:1178
SEScalarMassPerVolume * m_BloodUreaNitrogenConcentration
Definition: SEBloodChemistrySystem.h:403
Definition: SEScalarVolume.h:18
Definition: SEScalarPressure.h:37
Definition: SEScalarVolume.h:37
SEScalarFraction * m_PulseOximetry
Definition: SEBloodChemistrySystem.h:413
Enumeration class corresponding to the enumOnOff schema type.
Definition: Properties.hxx:2063
SEScalarAmountPerVolume * m_StrongIonDifference
Definition: SEBloodChemistrySystem.h:417
static constexpr char const *const TypeTag()
Definition: SEBloodChemistrySystem.h:443
SEScalar * m_LocalPathogen
Definition: SEBloodChemistrySystem.h:564
SEScalar * m_Catecholamines
Definition: SEBloodChemistrySystem.h:570
SEScalar * m_Trauma
Definition: SEBloodChemistrySystem.h:585
SEScalarTime * m_InflammationTime
Definition: SEBloodChemistrySystem.h:587
SEInflammatoryResponse * m_InflammatoryResponse
Definition: SEBloodChemistrySystem.h:434
static size_t TypeHash()
Definition: SEBloodChemistrySystem.h:442
CDM::enumOnOff::value m_ActiveTLR
Definition: SEBloodChemistrySystem.h:568
SEScalarFraction * m_Hematocrit
Definition: SEBloodChemistrySystem.h:406
Definition: SEScalarPressure.h:18
Definition: SEScalarMassPerVolume.h:46
SEScalarMass * m_HemoglobinLostToUrine
Definition: SEBloodChemistrySystem.h:408
Definition: SEScalarMassPerVolume.h:18
value
Underlying enum type.
Definition: Properties.hxx:2070
SEScalar * m_AutonomicResponseLevel
Definition: SEBloodChemistrySystem.h:569
SEScalar * m_ConstitutiveNOS
Definition: SEBloodChemistrySystem.h:571
const char * classname() const override
Definition: SEBloodChemistrySystem.h:48
SEScalarAmountPerVolume * m_RedBloodCellAcetylcholinesterase
Definition: SEBloodChemistrySystem.h:414
Definition: SEScalarMass.h:18
SEScalarMassPerVolume * m_TotalProteinConcentration
Definition: SEBloodChemistrySystem.h:419
Definition: SEElectricalCircuit.h:18
SEScalar * m_Interleukin6
Definition: SEBloodChemistrySystem.h:574
SEScalar * m_ArterialBloodPH
Definition: SEBloodChemistrySystem.h:399
size_t hash_code() const override
Definition: SEBloodChemistrySystem.h:49
SEScalar * m_VenousBloodPH
Definition: SEBloodChemistrySystem.h:401
SEScalarFraction * m_ShuntFraction
Definition: SEBloodChemistrySystem.h:416
Definition: SEScalarHeatCapacitancePerMass.h:18
SEScalar * m_NeutrophilResting
Definition: SEBloodChemistrySystem.h:579
SEScalarMassPerVolume * m_TotalBilirubin
Definition: SEBloodChemistrySystem.h:418
SEScalarVolume * m_RhTransfusionReactionVolume
Definition: SEBloodChemistrySystem.h:420
SEScalarHeatCapacitancePerMass * m_BloodSpecificHeat
Definition: SEBloodChemistrySystem.h:402