SENervousSystem.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/exports.h>
15 
16 #include <biogears/cdm/patient/actions/SEPupillaryResponse.h>
17 #include <biogears/cdm/properties/SEScalarFrequency.h>
18 #include <biogears/cdm/properties/SEScalarPressure.h>
19 #include <biogears/cdm/system/SESystem.h>
20 #include <biogears/schema/biogears/BioGearsPhysiology.hxx>
21 
22 namespace biogears {
23  class TimeUnit;
24 
25  class BIOGEARS_API SENervousSystem : public SESystem {
26 public:
27  SENervousSystem(Logger* logger);
28  ~SENervousSystem() override;
29 
30  static size_t TypeHash() { return reinterpret_cast<size_t>(&TypeHash); }
31  static constexpr char const* const TypeTag() { return "SENervousSystem"; }
32  const char* classname() const override { return TypeTag(); }
33  size_t hash_code() const override { return TypeHash(); }
34 
35  void Clear() override; // Deletes all members
36 
37  const SEScalar* GetScalar(const char* name) override;
38  const SEScalar* GetScalar(const std::string& name) override;
39 
40  bool Load(const CDM::NervousSystemData& in);
41  CDM::NervousSystemData* Unload() const override;
42 
43  Tree<const char*> GetPhysiologyRequestGraph() const override;
44 
45 protected:
46  void Unload(CDM::NervousSystemData& data) const;
47 
48 public:
49  bool HasComplianceScale() const;
50  SEScalar& GetComplianceScale();
51  double GetComplianceScale() const;
52 
53  bool HasHeartRateScale() const;
54  SEScalar& GetHeartRateScale();
55  double GetHeartRateScale() const;
56 
57  bool HasHeartElastanceScale() const;
58  SEScalar& GetHeartElastanceScale();
59  double GetHeartElastanceScale() const;
60 
61  bool HasResistanceScaleExtrasplanchnic() const;
62  SEScalar& GetResistanceScaleExtrasplanchnic();
63  double GetResistanceScaleExtrasplanchnic() const;
64 
65  bool HasResistanceScaleMuscle() const;
66  SEScalar& GetResistanceScaleMuscle();
67  double GetResistanceScaleMuscle() const;
68 
69  bool HasResistanceScaleMyocardium() const;
70  SEScalar& GetResistanceScaleMyocardium();
71  double GetResistanceScaleMyocardium() const;
72 
73  bool HasResistanceScaleSplanchnic() const;
74  SEScalar& GetResistanceScaleSplanchnic();
75  double GetResistanceScaleSplanchnic() const;
76 
77  bool HasLeftEyePupillaryResponse() const;
78  SEPupillaryResponse& GetLeftEyePupillaryResponse();
79  const SEPupillaryResponse* GetLeftEyePupillaryResponse() const;
80  void RemoveLeftEyePupillaryResponse();
81 
82  bool HasPainVisualAnalogueScale() const;
83  SEScalar& GetPainVisualAnalogueScale();
84  double GetPainVisualAnalogueScale() const;
85 
86  bool HasRichmondAgitationSedationScale() const;
87  SEScalar& GetRichmondAgitationSedationScale();
88  double GetRichmondAgitationSedationScale() const;
89 
90  bool HasRightEyePupillaryResponse() const;
91  SEPupillaryResponse& GetRightEyePupillaryResponse();
92  const SEPupillaryResponse* GetRightEyePupillaryResponse() const;
93  void RemoveRightEyePupillaryResponse();
94 
95  bool IsAsleep() const;
96  SEScalarTime& GetSleepTime();
97  double GetSleepTime(const TimeUnit& unit) const;
98 
99  CDM::enumSleepState::value GetSleepState() const;
100  void SetSleepState(CDM::enumSleepState::value sleep);
101  void InvalidateSleepState();
102  bool HasSleepState() const;
103 
104  bool IsAwake() const;
105  SEScalarTime& GetWakeTime();
106  double GetWakeTime(const TimeUnit& unit) const;
107 
108  bool HasBiologicalDebt() const;
109  SEScalar& GetBiologicalDebt();
110  double GetBiologicalDebt() const;
111 
112  bool HasReactionTime() const;
113  SEScalarTime& GetReactionTime();
114  double GetReactionTime(const TimeUnit& unit) const;
115 
116  bool HasAttentionLapses() const;
117  SEScalar& GetAttentionLapses();
118  double GetAttentionLapses() const;
119 
120 protected:
137 
138 
139 
140 
142 };
143 }
SEScalarTime * m_WakeTime
Definition: SENervousSystem.h:132
Definition: SENervousSystem.h:25
Definition: SEScalar.h:33
static constexpr char const *const TypeTag()
Definition: SENervousSystem.h:31
SEScalar * m_BiologicalDebt
Definition: SENervousSystem.h:134
Definition: SEPupillaryResponse.h:23
SEScalar * m_ResistanceScaleExtrasplanchnic
Definition: SENervousSystem.h:127
CDM::enumSleepState::value m_SleepState
Definition: SENervousSystem.h:133
size_t hash_code() const override
Definition: SENervousSystem.h:33
SEPupillaryResponse * m_LeftEyePupillaryResponse
Definition: SENervousSystem.h:124
Definition: SESystem.h:27
SEScalar * m_HeartElastanceScale
Definition: SENervousSystem.h:123
static size_t TypeHash()
Definition: SENervousSystem.h:30
SEScalarTime * m_SleepTime
Definition: SENervousSystem.h:131
Definition: Logger.h:75
Definition: SEScalarTime.h:37
Definition: SEScalarTime.h:18
SEScalar * m_ResistanceScaleSplanchnic
Definition: SENervousSystem.h:130
SEScalar * m_HeartRateScale
Definition: SENervousSystem.h:122
SEScalar * m_AttentionLapses
Definition: SENervousSystem.h:136
SEScalar * m_ComplianceScale
Definition: SENervousSystem.h:121
SEScalar * m_RichmondAgitationSedationScale
Definition: SENervousSystem.h:141
Class corresponding to the NervousSystemData schema type.
Definition: Physiology.hxx:12058
SEPupillaryResponse * m_RightEyePupillaryResponse
Definition: SENervousSystem.h:125
const char * classname() const override
Definition: SENervousSystem.h:32
SEScalar * m_ResistanceScaleMuscle
Definition: SENervousSystem.h:128
value
Underlying enum type.
Definition: Physiology.hxx:11911
SEScalar * m_ResistanceScaleMyocardium
Definition: SENervousSystem.h:129
Definition: SEElectricalCircuit.h:18
SEScalarTime * m_ReactionTime
Definition: SENervousSystem.h:135
SEScalar * m_PainVisualAnalogueScale
Definition: SENervousSystem.h:126