What’s New in the Pulse Physiology Engine 4.4.0
×
PhysiologyEngineThunk.h
1/* Distributed under the Apache License, Version 2.0.
2 See accompanying NOTICE file for details.*/
3
4#pragma once
5
6#include "cdm/CommonDefs.h"
7// CDM Features in use
8#include "cdm/PhysiologyEngine.h"
9#include "cdm/engine/SEEventManager.h"
10#include "cdm/utils/ScopedMutex.h"
11
16class CDM_DECL PhysiologyEngineThunk : public LoggerForward
17{
18public:
19 PhysiologyEngineThunk(const std::string& dataDir = "./");
20 virtual ~PhysiologyEngineThunk();
21
22 virtual void Clear();
23
24 virtual bool IsValidPatient(std::string const& patient, eSerializationFormat format) = 0;
25
26 //virtual void SetConfigurationOverride(std::string const& config)=0; // Not Implemented
27
28 bool SerializeFromFile(std::string const& filename, std::string const& data_requests, eSerializationFormat data_requests_format);
29 bool SerializeToFile(std::string const& filename);
30
31 bool SerializeFromString(std::string const& state, std::string const& data_requests, eSerializationFormat format);
32 std::string SerializeToString(eSerializationFormat format);
33
34 bool InitializeEngine(std::string const& patient_configuration, std::string const& data_requests, eSerializationFormat format);
35
36 std::string GetInitialPatient(eSerializationFormat format);
37 std::string GetConditions(eSerializationFormat format);
38
39 void LogToConsole(bool b);
40 void KeepLogMessages(bool keep);// Set this to true if you are going to pull messages from the engine
41 void SetLogFilename(std::string const& logfile);// Set to empty if no log file is wanted
42 std::string PullLogMessages(eSerializationFormat format);
43 void SetLoggerForward(LoggerForward* lf) { m_ForwardLogs = lf; }
44
45 std::string PullEventChanges(eSerializationFormat format);// All events where duration_s==0
46 std::string PullActiveEvents(eSerializationFormat format);// All events where active==true
47 std::string GetPatientAssessment(int type, eSerializationFormat format);
48
49 bool ProcessActions(std::string const& actions, eSerializationFormat format);
50 std::string PullActiveActions(eSerializationFormat format);
51
52 bool AdvanceTimeStep();
53 double GetTimeStep(std::string const& unit);
54
55 size_t DataLength() const;
56 double* PullDataPtr();
57 void PullData(std::vector<double>& data);
58
59 void ForwardDebug(const std::string& msg) override;
60 void ForwardInfo(const std::string& msg) override;
61 void ForwardWarning(const std::string& msg) override;
62 void ForwardError(const std::string& msg) override;
63 void ForwardFatal(const std::string& msg) override;
64
65protected:
66 virtual void AllocateEngine() = 0;
67 virtual void SetupDefaultDataRequests(SEDataRequestManager& drMgr);
68
69 std::unique_ptr<PhysiologyEngine> m_Engine;
70 SESubstanceManager* m_SubMgr = nullptr;
71 std::string m_DataDir="./";
72
73 std::vector<SEEventChange> m_EventChanges;
74 std::vector<SEEventChange> m_ActiveEvents;
75
76 bool m_KeepLogMsgs = false;
77 LoggerForward* m_ForwardLogs=nullptr;
79
80 size_t m_RequestedDataLength=0;
81 double* m_RequestedData = nullptr;
82 std::vector<double> m_RequestedValues;
83};
Definition: Logger.h:136
Definition: Logger.h:60
virtual void ForwardFatal(std::string const &)
Definition: Logger.h:67
virtual void ForwardDebug(std::string const &)
Definition: Logger.h:63
virtual void ForwardWarning(std::string const &)
Definition: Logger.h:65
virtual void ForwardError(std::string const &)
Definition: Logger.h:66
virtual void ForwardInfo(std::string const &)
Definition: Logger.h:64
Definition: PhysiologyEngineThunk.h:17
LogMessages m_LogMsgs
Definition: PhysiologyEngineThunk.h:78
virtual bool IsValidPatient(std::string const &patient, eSerializationFormat format)=0
std::vector< SEEventChange > m_ActiveEvents
Definition: PhysiologyEngineThunk.h:74
std::vector< double > m_RequestedValues
Definition: PhysiologyEngineThunk.h:82
void SetLoggerForward(LoggerForward *lf)
Definition: PhysiologyEngineThunk.h:43
std::unique_ptr< PhysiologyEngine > m_Engine
Definition: PhysiologyEngineThunk.h:69
virtual void AllocateEngine()=0
std::vector< SEEventChange > m_EventChanges
Definition: PhysiologyEngineThunk.h:73
Definition: SEDataRequestManager.h:10
Definition: SESubstanceManager.h:10

Distributed under the Apache License, Version 2.0.

See accompanying NOTICE file for details.