SEDataRequestManager.h
1/* Distributed under the Apache License, Version 2.0.
2 See accompanying NOTICE file for details.*/
3
4#pragma once
5#include "cdm/engine/SEValidationTarget.h"
6class SESubstance;
8
9class CDM_DECL SEDataRequestManager : public Loggable
10{
11 friend class PBEngine;//friend the serialization class
12public:
15
16 void Clear();
17 void Copy(const SEDataRequestManager& src);
18
19 bool SerializeToString(std::string& output, eSerializationFormat m) const;
20 bool SerializeToFile(const std::string& filename) const;
21 bool SerializeFromString(const std::string& src, eSerializationFormat m);
22 bool SerializeFromFile(const std::string& filename);
23
24 // Only serialize our data requests, for portability
25 bool SerializeDataRequestsToString(std::string& output, eSerializationFormat m) const;
26 bool SerializeDataRequestsToFile(const std::string& filename) const;
27 bool SerializeDataRequestsFromString(const std::string& src, eSerializationFormat m);
28 bool SerializeDataRequestsFromFile(const std::string& filename);
29 bool MergeDataRequestFile(const std::string& filename);
30
31 bool HasResultsFilename() const { return !m_ResultsFilename.empty(); }
32 std::string GetResultFilename() const { return m_ResultsFilename; }
33 void SetResultsFilename(const std::string& name) { m_ResultsFilename = name; }
34
35 double GetSamplesPerSecond() const { return m_SamplesPerSecond; }
36 void SetSamplesPerSecond(double num) { m_SamplesPerSecond = num; }
37
38 bool HasDataRequests() const { return !m_Requests.empty(); }
39 std::vector<SEDataRequest*>& GetDataRequests() { return m_Requests; }
40 const std::vector<SEDataRequest*>& GetDataRequests() const { return m_Requests; }
41
42 bool HasValidationTargets() const { return !m_Targets.empty(); }
43 std::vector<SEValidationTarget*>& GetValidationTargets() { return m_Targets; }
44 const std::vector<SEValidationTarget*>& GetValidationTargets() const { return m_Targets; }
45
46 virtual bool HasDefaultDecimalFormatting() const;
47 virtual SEDecimalFormat& GetDefaultDecimalFormatting();
48 virtual void RemoveDefaultDecimalFormatting();
49
50 virtual bool HasOverrideDecimalFormatting() const;
51 virtual SEDecimalFormat& GetOverrideDecimalFormatting();
52 virtual void RemoveOverrideDecimalFormatting();
53
54 SEDataRequest& CopyDataRequest(const SEDataRequest& dr);
55
56 SEDataRequest& CreateDataRequest(eDataRequest_Category category, const SEDecimalFormat* dfault = nullptr);
57 SEDataRequest& CreatePatientDataRequest(const std::string& property, const SEDecimalFormat* dfault = nullptr);
58 SEDataRequest& CreatePatientDataRequest(const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
59
60 SEDataRequest& CreatePhysiologyDataRequest(const std::string& property, const SEDecimalFormat* dfault = nullptr);
61 SEDataRequest& CreatePhysiologyDataRequest(const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
62
63 SEDataRequest& CreateEnvironmentDataRequest(const std::string& property, const SEDecimalFormat* dfault = nullptr);
64 SEDataRequest& CreateEnvironmentDataRequest(const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
65
66 SEDataRequest& CreateActionDataRequest(const std::string& actionName, const std::string& property, const SEDecimalFormat* dfault = nullptr);
67 SEDataRequest& CreateActionDataRequest(const std::string& actionName, const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
68 SEDataRequest& CreateActionCompartmentDataRequest(const std::string& actionName, const std::string& cmptName, const std::string& property, const SEDecimalFormat* dfault = nullptr);
69 SEDataRequest& CreateActionCompartmentDataRequest(const std::string& actionName, const std::string& cmptName, const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
70 SEDataRequest& CreateActionSubstanceDataRequest(const std::string& actionName, const std::string& substance, const std::string& property, const SEDecimalFormat* dfault = nullptr);
71 SEDataRequest& CreateActionSubstanceDataRequest(const std::string& actionName, const std::string& substance, const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
72
73 SEDataRequest& CreateGasCompartmentDataRequest(const std::string& cmptName, const std::string& property, const SEDecimalFormat* dfault = nullptr);
74 SEDataRequest& CreateGasCompartmentDataRequest(const std::string& cmptName, const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
75 SEDataRequest& CreateGasCompartmentDataRequest(const std::string& cmptName, const std::string& substance, const std::string& property, const SEDecimalFormat* dfault = nullptr);
76 SEDataRequest& CreateGasCompartmentDataRequest(const std::string& cmptName, const std::string& substance, const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
77
78 SEDataRequest& CreateLiquidCompartmentDataRequest(const std::string& cmptName, const std::string& property, const SEDecimalFormat* dfault = nullptr);
79 SEDataRequest& CreateLiquidCompartmentDataRequest(const std::string& cmptName, const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
80 SEDataRequest& CreateLiquidCompartmentDataRequest(const std::string& cmptName, const std::string& substance, const std::string& property, const SEDecimalFormat* dfault = nullptr);
81 SEDataRequest& CreateLiquidCompartmentDataRequest(const std::string& cmptName, const std::string& substance, const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
82
83 SEDataRequest& CreateThermalCompartmentDataRequest(const std::string& cmptName, const std::string& property, const SEDecimalFormat* dfault = nullptr);
84 SEDataRequest& CreateThermalCompartmentDataRequest(const std::string& cmptName, const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
85
86 SEDataRequest& CreateTissueCompartmentDataRequest(const std::string& cmptName, const std::string& property, const SEDecimalFormat* dfault = nullptr);
87 SEDataRequest& CreateTissueCompartmentDataRequest(const std::string& cmptName, const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
88
89 SEDataRequest& CreateSubstanceDataRequest(const std::string& substance, const std::string& property, const SEDecimalFormat* dfault = nullptr);
90 SEDataRequest& CreateSubstanceDataRequest(const std::string& substance, const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
91
92 SEDataRequest& CreateAnesthesiaMachineDataRequest(const std::string& property, const SEDecimalFormat* dfault = nullptr);
93 SEDataRequest& CreateAnesthesiaMachineDataRequest(const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
94
95 SEDataRequest& CreateECGDataRequest(const std::string& property, const SEDecimalFormat* dfault = nullptr);
96 SEDataRequest& CreateECGDataRequest(const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
97
98 SEDataRequest& CreateECMODataRequest(const std::string& property, const SEDecimalFormat* dfault = nullptr);
99 SEDataRequest& CreateECMODataRequest(const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
100
101 SEDataRequest& CreateInhalerDataRequest(const std::string& property, const SEDecimalFormat* dfault = nullptr);
102 SEDataRequest& CreateInhalerDataRequest(const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
103
104 SEDataRequest& CreateMechanicalVentilatorDataRequest(const std::string& property, const SEDecimalFormat* dfault = nullptr);
105 SEDataRequest& CreateMechanicalVentilatorDataRequest(const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
106
107 // Validation Targets
108
109 SEValidationTarget& CopyValidationTarget(const SEValidationTarget& dr);
110
111 SEValidationTarget& CreateLiquidCompartmentValidationTarget(eValidationTargetType t, const std::string& cmptName, const std::string& property, const SEDecimalFormat* dfault = nullptr);
112 SEValidationTarget& CreateLiquidCompartmentValidationTarget(eValidationTargetType t, const std::string& cmptName, const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
113 SEValidationTarget& CreateLiquidCompartmentValidationTarget(eValidationTargetType t, const std::string& cmptName, const std::string& substance, const std::string& property, const SEDecimalFormat* dfault = nullptr);
114 SEValidationTarget& CreateLiquidCompartmentValidationTarget(eValidationTargetType t, const std::string& cmptName, const std::string& substance, const std::string& property, const CCompoundUnit& unit, const SEDecimalFormat* dfault = nullptr);
115
116protected:
117 // Methods to find data requests so we don't keep making the same one
118 SEDataRequest* FindDataRequest(const SEDataRequest& dr);
119 SEDataRequest* FindPatientDataRequest(const std::string& property);
120 SEDataRequest* FindPhysiologyDataRequest(const std::string& property);
121 SEDataRequest* FindEnvironmentDataRequest(const std::string& property);
122 SEDataRequest* FindActionDataRequest(const std::string& actionName, const std::string& cmptName, const std::string& substance, const std::string& property);
123 SEDataRequest* FindGasCompartmentDataRequest(const std::string& cmptName, const std::string& property);
124 SEDataRequest* FindGasCompartmentDataRequest(const std::string& cmptName, const std::string& substance, const std::string& property);
125 SEDataRequest* FindLiquidCompartmentDataRequest(const std::string& cmptName, const std::string& property);
126 SEDataRequest* FindLiquidCompartmentDataRequest(const std::string& cmptName, const std::string& substance, const std::string& property);
127 SEDataRequest* FindThermalCompartmentDataRequest(const std::string& cmptName, const std::string& property);
128 SEDataRequest* FindTissueCompartmentDataRequest(const std::string& cmptName, const std::string& property);
129 SEDataRequest* FindSubstanceDataRequest(const std::string& substance, const std::string& property);
130 SEDataRequest* FindAnesthesiaMachineDataRequest(const std::string& property);
131 SEDataRequest* FindECGDataRequest(const std::string& property);
132 SEDataRequest* FindECMODataRequest(const std::string& property);
133 SEDataRequest* FindInhalerDataRequest(const std::string& property);
134 SEDataRequest* FindMechanicalVentilatorDataRequest(const std::string& property);
135
136 SEDataRequest& CopyDataRequest(const SEDataRequest& src, bool updateExisting);
137 void Remove(const SEDataRequest& dr);
138 // Methods to find data requests so we don't keep making the same one
139 SEValidationTarget* FindValidationTarget(const SEValidationTarget& dr);
140 SEValidationTarget* FindLiquidCompartmentValidationTarget(eValidationTargetType t, const std::string& cmptName, const std::string& property);
141 SEValidationTarget* FindLiquidCompartmentValidationTarget(eValidationTargetType t, const std::string& cmptName, const std::string& substance, const std::string& property);
142
143 std::string m_ResultsFilename;
145 std::vector<SEDataRequest*> m_Requests;
146 std::vector<SEValidationTarget*> m_Targets;
147
150};
Definition: CompoundUnit.h:40
Definition: Logger.h:23
Definition: Logger.h:71
Definition: PBEngine.h:31
static bool SerializeFromString(const std::string &src, LogMessages &dst, eSerializationFormat m, Logger *logger)
Definition: PBEngine.cpp:126
static void Copy(const SEDataRequest &src, SEDataRequest &dst)
Definition: PBEngine.cpp:484
static bool SerializeFromFile(const std::string &filename, SEPatientConfiguration &dst, const SESubstanceManager &subMgr)
Definition: PBEngine.cpp:437
static bool SerializeToString(const LogMessages &src, std::string &output, eSerializationFormat m, Logger *logger)
Definition: PBEngine.cpp:154
static bool SerializeToFile(const SEPatientConfiguration &src, const std::string &filename)
Definition: PBEngine.cpp:423
Definition: SEDataRequest.h:18
Definition: SEDataRequestManager.h:10
bool HasValidationTargets() const
Definition: SEDataRequestManager.h:42
std::vector< SEDataRequest * > & GetDataRequests()
Definition: SEDataRequestManager.h:39
double GetSamplesPerSecond() const
Definition: SEDataRequestManager.h:35
bool HasDataRequests() const
Definition: SEDataRequestManager.h:38
void SetSamplesPerSecond(double num)
Definition: SEDataRequestManager.h:36
std::string m_ResultsFilename
Definition: SEDataRequestManager.h:143
const std::vector< SEValidationTarget * > & GetValidationTargets() const
Definition: SEDataRequestManager.h:44
void SetResultsFilename(const std::string &name)
Definition: SEDataRequestManager.h:33
SEDecimalFormat * m_DefaultDecimalFormatting
Definition: SEDataRequestManager.h:148
SEDecimalFormat * m_OverrideDecimalFormatting
Definition: SEDataRequestManager.h:149
const std::vector< SEDataRequest * > & GetDataRequests() const
Definition: SEDataRequestManager.h:40
std::string GetResultFilename() const
Definition: SEDataRequestManager.h:32
double m_SamplesPerSecond
Definition: SEDataRequestManager.h:144
std::vector< SEValidationTarget * > & GetValidationTargets()
Definition: SEDataRequestManager.h:43
std::vector< SEDataRequest * > m_Requests
Definition: SEDataRequestManager.h:145
bool HasResultsFilename() const
Definition: SEDataRequestManager.h:31
std::vector< SEValidationTarget * > m_Targets
Definition: SEDataRequestManager.h:146
Definition: SEDecimalFormat.h:10
Definition: SESubstance.h:15
Definition: SESubstanceManager.h:9
Definition: SEValidationTarget.h:13

Distributed under the Apache License, Version 2.0.

See accompanying NOTICE file for details.