PhysiologyEngine.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/CommonDataModel.h>
16 #include <biogears/cdm/properties/SEScalarTime.h>
17 #include <biogears/exports.h>
18 #include <biogears/schema/cdm/EngineState.hxx>
19 #include <biogears/container/Tree.h>
20 
21 namespace biogears {
22 class SEEventHandler;
23 class SEPatient;
24 class SEPatientAssessment;
25 class SECondition;
26 class SEAction;
27 class TimeUnit;
28 class SESubstanceManager;
29 class SEBloodChemistrySystem;
30 class SECardiovascularSystem;
31 class SEDrugSystem;
32 class SEEndocrineSystem;
33 class SEEnergySystem;
34 class SEGastrointestinalSystem;
35 class SEHepaticSystem;
36 class SENervousSystem;
37 class SERenalSystem;
38 class SERespiratorySystem;
39 class SETissueSystem;
40 class SEEnvironment;
41 class SEAnesthesiaMachine;
42 class SEInhaler;
43 class SEElectroCardioGram;
44 class SECompartmentManager;
45 class PhysiologyEngineTrack;
46 class PhysiologyEngineConfiguration;
47 
54  : CommonDataModelException("Physiology Engine Error")
55  {
56  }
57  PhysiologyEngineException(const char* _Message)
58  : CommonDataModelException(_Message)
59  {
60 
61  }
62  PhysiologyEngineException(const std::string& _Message)
63  : CommonDataModelException(_Message)
64  {
65  }
66 };
67 
68 class BIOGEARS_API PhysiologyEngine {
69 public:
70  virtual ~PhysiologyEngine() {}
71 
80  virtual bool LoadState(const char* file, const SEScalarTime* simTime = nullptr) = 0;
81  virtual bool LoadState(const std::string& file, const SEScalarTime* simTime = nullptr) = 0;
82 
91  virtual bool LoadState(const CDM::PhysiologyEngineStateData& state, const SEScalarTime* simTime = nullptr) = 0;
92 
100  virtual std::unique_ptr<CDM::PhysiologyEngineStateData> SaveState(const char* file = "") = 0;
101  virtual std::unique_ptr<CDM::PhysiologyEngineStateData> SaveState(const std::string& file = "") = 0;
102 
112  virtual bool InitializeEngine(const char* patientFile, const std::vector<const SECondition*>* conditions = nullptr, const PhysiologyEngineConfiguration* config = nullptr) = 0;
113  virtual bool InitializeEngine(const std::string& patientFile, const std::vector<const SECondition*>* conditions = nullptr, const PhysiologyEngineConfiguration* config = nullptr) = 0;
114 
123  virtual bool InitializeEngine(const SEPatient& patient, const std::vector<const SECondition*>* conditions = nullptr, const PhysiologyEngineConfiguration* config = nullptr) = 0;
124 
129  virtual Logger* GetLogger() = 0;
130 
135  virtual PhysiologyEngineTrack* GetEngineTrack() = 0;
136 
141  virtual const PhysiologyEngineConfiguration* GetConfiguration() = 0;
142 
148  virtual double GetTimeStep(const TimeUnit& unit) = 0;
149 
154  virtual double GetSimulationTime(const TimeUnit& unit) = 0;
155 
164  virtual void AdvanceModelTime(bool appendDataTrack = false) = 0;
165 
175  virtual void AdvanceModelTime(double time, const TimeUnit& unit = TimeUnit::s, bool appendDataTrack = false) = 0;
176 
184  virtual bool ProcessAction(const SEAction& action) = 0;
185 
191  virtual SESubstanceManager& GetSubstanceManager() = 0;
192 
197  virtual void SetEventHandler(SEEventHandler* handler) = 0;
198 
204  virtual const SEPatient& GetPatient() = 0;
205 
213  virtual bool GetPatientAssessment(SEPatientAssessment& assessment) = 0;
214 
220  virtual const SEEnvironment* GetEnvironment() = 0;
221 
227  virtual const SEBloodChemistrySystem* GetBloodChemistrySystem() = 0;
228 
234  virtual const SECardiovascularSystem* GetCardiovascularSystem() = 0;
235 
241  virtual const SEDrugSystem* GetDrugSystem() = 0;
242 
248  virtual const SEEndocrineSystem* GetEndocrineSystem() = 0;
249 
255  virtual const SEEnergySystem* GetEnergySystem() = 0;
256 
262  virtual const SEGastrointestinalSystem* GetGastrointestinalSystem() = 0;
263 
269  virtual const SEHepaticSystem* GetHepaticSystem() = 0;
270 
276  virtual const SENervousSystem* GetNervousSystem() = 0;
277 
283  virtual const SERenalSystem* GetRenalSystem() = 0;
284 
290  virtual const SERespiratorySystem* GetRespiratorySystem() = 0;
291 
297  virtual const SETissueSystem* GetTissueSystem() = 0;
298 
304  virtual const SEAnesthesiaMachine* GetAnesthesiaMachine() = 0;
305 
311  virtual const SEElectroCardioGram* GetElectroCardioGram() = 0;
312 
318  virtual const SEInhaler* GetInhaler() = 0;
319 
326  virtual const SECompartmentManager& GetCompartments() = 0;
331  virtual Tree<const char*> GetDataRequestGraph() const = 0;
332 
339  virtual bool IsAutoTracking() const = 0;
344  virtual void SetAutoTrackFlag(bool flag) = 0;
351  virtual bool IsTrackingStabilization() const = 0;
356  virtual void SetTrackStabilizationFlag(bool flag) = 0;
357 };
358 }
Base exception class that all CDM classes throw when an error occurs.
Definition: PhysiologyEngine.h:52
virtual ~PhysiologyEngine()
Definition: PhysiologyEngine.h:70
Class corresponding to the PhysiologyEngineStateData schema type.
Definition: EngineState.hxx:692
Definition: SENervousSystem.h:25
Definition: SEEndocrineSystem.h:32
Definition: SEElectroCardioGram.h:21
Definition: SEAction.h:22
PhysiologyEngineException()
Definition: PhysiologyEngine.h:53
Definition: SECompartmentManager.h:32
Data formed at a level of a clinicians report. This is high level data, such as a mean or generalized...
Definition: SEPatientAssessment.h:25
Definition: CommonDataModel.h:62
Definition: SEPatient.h:48
Definition: SEBloodChemistrySystem.h:41
PhysiologyEngineException(const char *_Message)
Definition: PhysiologyEngine.h:57
Definition: SETissueSystem.h:30
Definition: Logger.h:75
Definition: PhysiologyEngine.h:68
Definition: SEScalarTime.h:37
Definition: SEScalarTime.h:18
Definition: SECardiovascularSystem.h:35
Definition: SEGastrointestinalSystem.h:26
Definition: PhysiologyEngineTrack.h:79
static const TimeUnit s
Definition: SEScalarTime.h:30
Definition: SEHepaticSystem.h:23
Definition: SERespiratorySystem.h:32
Definition: SEEnergySystem.h:32
Definition: SEAnesthesiaMachine.h:36
Definition: SEDrugSystem.h:35
Definition: SEInhaler.h:29
Definition: SESubstanceManager.h:23
PhysiologyEngineException(const std::string &_Message)
Definition: PhysiologyEngine.h:62
Definition: SEElectricalCircuit.h:18
Definition: SEEventHandler.h:23
Definition: SEEnvironment.h:33
Definition: SERenalSystem.h:42
Definition: PhysiologyEngineConfiguration.h:28