Building Medical Digital Twins with Pulse: Open Source Simulation Tools for Developers and Researchers
×
Engine.h
1 /* Distributed under the Apache License, Version 2.0.
2  See accompanying NOTICE file for details.*/
3 #pragma once
4 
5 #include "engine/CommonDefs.h"
6 
7 namespace pulse
8 {
9  class Controller;
10  //--------------------------------------------------------------------------------------------------
17  //--------------------------------------------------------------------------------------------------
18  class PULSE_DECL Engine : public PhysiologyEngine
19  {
20  public:
21  Engine(Logger* logger=nullptr);
22  virtual ~Engine();
23 
24  Logger* GetLogger() const override;
25 
26  std::string GetTypeName() const override;
27 
28  bool SerializeFromFile(const std::string& file, const SEDataRequestManager* drMgr=nullptr) override;
29  bool SerializeToFile(const std::string& file) const override;
30 
31  bool SerializeFromString(const std::string& state, eSerializationFormat m, const SEDataRequestManager* drMgr=nullptr) override;
32  bool SerializeToString(std::string& state, eSerializationFormat m) const override;
33 
34  bool InitializeEngine(const SEPatientConfiguration& patient_configuration, const SEDataRequestManager* drMgr=nullptr) override;
35  eEngineInitializationState GetInitializationState() const override;
36 
37  void Clear() override;
38 
39  bool SetConfigurationOverride(const SEEngineConfiguration* config) override;
40 
41  const SEConditionManager& GetConditionManager() const override;
42 
43  SEDataRequestTracker& GetDataRequestTracker() override;
44 
45  const SEEngineConfiguration* GetConfiguration() const override;
46 
47  double GetTimeStep(const TimeUnit& unit) const override;
48  double GetSimulationTime(const TimeUnit& unit) const override;
49  void SetSimulationTime(const SEScalarTime& time) override;
50  double GetStabilizationTime(const TimeUnit& unit) const override;
51 
52  bool AdvanceModelTime() override;
53  bool AdvanceModelTime(double time, const TimeUnit& unit) override;
54  bool ProcessAction(const SEAction& action) override;
55  const SEActionManager& GetActionManager() const override;
56 
57  const SESubstanceManager& GetSubstanceManager() const override;
58  void SetAdvanceHandler(SEAdvanceHandler* handler) override;
59  const SEPatient& GetPatient() const override;
60  const SEPatient& GetInitialPatient() const override;
61  bool GetPatientAssessment(SEPatientAssessment& assessment) const override;
62 
63  const SEEnvironment* GetEnvironment() const override;
64  const SEBloodChemistrySystem* GetBloodChemistrySystem() const override;
65  const SECardiovascularSystem* GetCardiovascularSystem() const override;
66  const SEDrugSystem* GetDrugSystem() const override;
67  const SEEndocrineSystem* GetEndocrineSystem() const override;
68  const SEEnergySystem* GetEnergySystem() const override;
69  const SEGastrointestinalSystem* GetGastrointestinalSystem() const override;
70  const SEHepaticSystem* GetHepaticSystem() const override;
71  const SENervousSystem* GetNervousSystem() const override;
72  const SERenalSystem* GetRenalSystem() const override;
73  const SERespiratorySystem* GetRespiratorySystem() const override;
74  const SETissueSystem* GetTissueSystem() const override;
75  const SEAnesthesiaMachine* GetAnesthesiaMachine() const override;
76  const SEBagValveMask* GetBagValveMask() const override;
77  const SEECMO* GetECMO() const override;
78  const SEElectroCardioGram* GetElectroCardioGram() const override;
79  const SEInhaler* GetInhaler() const override;
80  const SEMechanicalVentilator* GetMechanicalVentilator() const override;
81 
82  const SECompartmentManager& GetCompartments() const override;
83  SEBlackBoxManager& GetBlackBoxes() const override;
84 
85  const SEEventManager& GetEventManager() const override;
86 
87  Controller& GetController() const;
88  protected:
89  virtual void AllocateController() const = 0;
90  mutable Controller* m_Controller=nullptr;
91  };
92 END_NAMESPACE
Definition: Logger.h:71
Definition: PhysiologyEngine.h:70
Definition: SEAction.h:14
Definition: SEActionManager.h:12
Definition: SEAdvanceHandler.h:8
Definition: SEAnesthesiaMachine.h:24
Definition: SEBagValveMask.h:14
Definition: SEBlackBoxManager.h:11
Definition: SEBloodChemistrySystem.h:10
Definition: SECardiovascularSystem.h:25
Definition: SECompartmentManager.h:25
Definition: SEConditionManager.h:26
Definition: SEDataRequestManager.h:10
Definition: SEDataRequestTracker.h:74
Definition: SEDrugSystem.h:9
Definition: SEECMO.h:10
Definition: SEElectroCardioGram.h:9
Definition: SEEndocrineSystem.h:8
Definition: SEEnergySystem.h:8
Definition: SEEngineConfiguration.h:8
Definition: SEEnvironment.h:13
Definition: SEEventManager.h:139
Definition: SEGastrointestinalSystem.h:9
Definition: SEHepaticSystem.h:8
Definition: SEInhaler.h:12
Definition: SEMechanicalVentilator.h:10
Definition: SENervousSystem.h:9
Data formed at a level of a clinicians report. This is high level data, such as a mean or generalized...
Definition: SEPatientAssessment.h:22
Definition: SEPatientConfiguration.h:11
Definition: SEPatient.h:13
Definition: SERenalSystem.h:8
Definition: SERespiratorySystem.h:44
Definition: SEScalarTime.h:28
Definition: SESubstanceManager.h:9
Definition: SETissueSystem.h:8
Definition: SEScalarTime.h:8
Definition: Logger.h:14

Distributed under the Apache License, Version 2.0.

See accompanying NOTICE file for details.