PhysiologyEngineConfiguration.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/utils/GeneralMath.h>
15 #include <biogears/schema/cdm/Properties.hxx>
16 
17 CDM_BIND_DECL(PhysiologyEngineConfigurationData)
18 
19 namespace biogears {
20 class SEElectroCardioGramInterpolator;
21 class PhysiologyEngineStabilization;
24 class SEPatient;
25 class SEScalarTime;
26 class TimeUnit;
27 
28 class BIOGEARS_API PhysiologyEngineConfiguration : public Loggable {
29 public:
31 
33 
34  virtual void Clear();
35 
36  virtual void Merge(const PhysiologyEngineConfiguration& from);
37 
38  virtual bool Load(const CDM::PhysiologyEngineConfigurationData& in);
39  virtual CDM::PhysiologyEngineConfigurationData* Unload() const;
40 
41  virtual bool Load(const char* file);
42  virtual bool Load(const std::string& file);
43 
44  virtual bool HasECGInterpolator() const;
45  virtual SEElectroCardioGramInterpolator& GetECGInterpolator();
46  virtual const SEElectroCardioGramInterpolator* GetECGInterpolator() const;
47  virtual void RemoveECGInterpolator();
48 
49  // You can have either timed or dynamic stabilization criteria
50  virtual bool HasStabilizationCriteria() const;
51  virtual PhysiologyEngineStabilization* GetStabilizationCriteria();
52  virtual void RemoveStabilizationCriteria();
53  // Timed Methods, If you have dynamic, calling GetTimedStabilizationCriteria will remove the dynamic object
54  virtual bool HasTimedStabilizationCriteria() const;
55  virtual PhysiologyEngineTimedStabilization& GetTimedStabilizationCriteria();
56  virtual const PhysiologyEngineTimedStabilization* GetTimedStabilizationCriteria() const;
57  virtual void RemoveTimedStabilizationCriteria();
58  // Dynamic Methods, If you have timed, calling GetDynamicStabilizationCriteria will remove the timed object
59  virtual bool HasDynamicStabilizationCriteria() const;
60  virtual PhysiologyEngineDynamicStabilization& GetDynamicStabilizationCriteria();
61  virtual const PhysiologyEngineDynamicStabilization* GetDynamicStabilizationCriteria() const;
62  virtual void RemoveDynamicStabilizationCriteria();
63 
64  virtual bool HasTimeStep() const;
65  virtual SEScalarTime& GetTimeStep();
66  virtual double GetTimeStep(const TimeUnit& unit) const;
67 
68  virtual bool HasWritePatientBaselineFile() const { return m_WritePatientBaselineFile != (CDM::enumOnOff::value)-1; }
69  virtual bool WritePatientBaselineFile() const { return m_WritePatientBaselineFile == CDM::enumOnOff::On; }
70  virtual void SetWritePatientBaselineFile(CDM::enumOnOff::value v) { m_WritePatientBaselineFile = v; }
71 
72 protected:
73  void Unload(CDM::PhysiologyEngineConfigurationData& data) const;
74 
75 protected:
76  bool m_Merge;
78 
79 
84  std::unique_ptr<SEPatient> m_Patient;
85  std::unique_ptr<bool> m_overrideMode;
86 
88 };
89 }
bool m_Merge
Definition: PhysiologyEngineConfiguration.h:76
Definition: SEElectroCardioGramInterpolator.h:24
virtual bool WritePatientBaselineFile() const
Definition: PhysiologyEngineConfiguration.h:69
PhysiologyEngineDynamicStabilization * m_DynamicStabilizationCriteria
Definition: PhysiologyEngineConfiguration.h:82
PhysiologyEngineStabilization * m_StabilizationCriteria
Definition: PhysiologyEngineConfiguration.h:80
virtual void SetWritePatientBaselineFile(CDM::enumOnOff::value v)
Definition: PhysiologyEngineConfiguration.h:70
::std::unique_ptr< ::mil::tatrc::physiology::datamodel::PhysiologyEngineDynamicStabilizationData > PhysiologyEngineDynamicStabilization(const ::std::string &u,::xml_schema::flags f, const ::xml_schema::properties &p)
Parse a URI or a local file.
Definition: EngineConfiguration.cxx:2668
Class corresponding to the PhysiologyEngineConfigurationData schema type.
Definition: EngineConfiguration.hxx:692
CDM::enumOnOff::value m_WritePatientBaselineFile
Definition: PhysiologyEngineConfiguration.h:87
Definition: Logger.h:27
Definition: Logger.h:75
Definition: PhysiologyEngineTimedStabilization.h:53
SEScalarTime * m_TimeStep
Definition: PhysiologyEngineConfiguration.h:83
Definition: SEScalarTime.h:37
Definition: SEScalarTime.h:18
SEElectroCardioGramInterpolator * m_ECGInterpolator
Definition: PhysiologyEngineConfiguration.h:77
std::unique_ptr< SEPatient > m_Patient
Definition: PhysiologyEngineConfiguration.h:84
Definition: PhysiologyEngineStabilization.h:28
virtual bool HasWritePatientBaselineFile() const
Definition: PhysiologyEngineConfiguration.h:68
PhysiologyEngineTimedStabilization * m_TimedStabilizationCriteria
Definition: PhysiologyEngineConfiguration.h:81
std::unique_ptr< bool > m_overrideMode
Definition: PhysiologyEngineConfiguration.h:85
value
Underlying enum type.
Definition: Properties.hxx:2070
Definition: SEElectricalCircuit.h:18
Definition: PhysiologyEngineDynamicStabilization.h:149
::std::unique_ptr< ::mil::tatrc::physiology::datamodel::PhysiologyEngineTimedStabilizationData > PhysiologyEngineTimedStabilization(const ::std::string &u,::xml_schema::flags f, const ::xml_schema::properties &p)
Parse a URI or a local file.
Definition: EngineConfiguration.cxx:2379
Definition: PhysiologyEngineConfiguration.h:28