SESubstancePharmacodynamics.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/CommonDataModel.h>
15 #include <biogears/exports.h>
16 
17 #include <biogears/cdm/patient/actions/SEPupillaryResponse.h>
18 
19 CDM_BIND_DECL(SubstancePharmacodynamicsData)
20 CDM_BIND_DECL(PharmacodynamicModifierData)
21 
22 namespace biogears {
23 
24 class SEScalarFrequency;
25 class FrequencyUnit;
26 class SEScalarMassPerVolume;
27 class MassPerVolumeUnit;
28 class SEPharmacodynamicModifier;
29 
30 class BIOGEARS_API SESubstancePharmacodynamics : Loggable {
31 public:
33  virtual ~SESubstancePharmacodynamics();
34 
35  virtual void Clear();
36  virtual bool IsValid() const;
37 
38  virtual const SEScalar* GetScalar(const char* name);
39  virtual const SEScalar* GetScalar(const std::string& name);
40 
41  virtual bool Load(const CDM::SubstancePharmacodynamicsData& in);
42  virtual CDM::SubstancePharmacodynamicsData* Unload() const;
43 
44 protected:
45  virtual void Unload(CDM::SubstancePharmacodynamicsData& data) const;
46 
47 public:
48  virtual bool HasAntibacterialEffect() const;
49  virtual SEScalarFrequency& GetAntibacterialEffect();
50  virtual double GetAntibacterialEffect(const FrequencyUnit& unit) const;
51 
52  virtual bool HasBronchodilation() const;
53  virtual SEPharmacodynamicModifier& GetBronchodilation();
54  virtual const SEPharmacodynamicModifier* GetBronchodilation() const;
55 
56  virtual bool HasDiastolicPressureModifier() const;
57  virtual SEPharmacodynamicModifier& GetDiastolicPressureModifier();
58  virtual const SEPharmacodynamicModifier* GetDiastolicPressureModifier() const;
59 
60  virtual bool HasEMaxShapeParameter() const;
61  virtual SEScalar& GetEMaxShapeParameter();
62  virtual double GetEMaxShapeParameter() const;
63 
64  virtual bool HasFeverModifier() const;
65  virtual SEPharmacodynamicModifier& GetFeverModifier();
66  virtual const SEPharmacodynamicModifier* GetFeverModifier() const;
67 
68  virtual bool HasHeartRateModifier() const;
69  virtual SEPharmacodynamicModifier& GetHeartRateModifier();
70  virtual const SEPharmacodynamicModifier* GetHeartRateModifier() const;
71 
72  virtual bool HasHemorrhageModifier() const;
73  virtual SEPharmacodynamicModifier& GetHemorrhageModifier();
74  virtual const SEPharmacodynamicModifier* GetHemorrhageModifier() const;
75 
76  virtual bool HasNeuromuscularBlock() const;
77  virtual SEPharmacodynamicModifier& GetNeuromuscularBlock();
78  virtual const SEPharmacodynamicModifier* GetNeuromuscularBlock() const;
79 
80  virtual bool HasPainModifier() const;
81  virtual SEPharmacodynamicModifier& GetPainModifier();
82  virtual const SEPharmacodynamicModifier* GetPainModifier() const;
83 
84  virtual bool HasPupilReactivityModifier() const;
85  virtual SEPharmacodynamicModifier& GetPupilReactivityModifier();
86  virtual const SEPharmacodynamicModifier* GetPupilReactivityModifier() const;
87 
88  virtual bool HasPupilSizeModifier() const;
89  virtual SEPharmacodynamicModifier& GetPupilSizeModifier();
90  virtual const SEPharmacodynamicModifier* GetPupilSizeModifier() const;
91 
92  virtual bool HasRespirationRateModifier() const;
93  virtual SEPharmacodynamicModifier& GetRespirationRateModifier();
94  virtual const SEPharmacodynamicModifier* GetRespirationRateModifier() const;
95 
96  virtual bool HasSedation() const;
97  virtual SEPharmacodynamicModifier& GetSedation();
98  virtual const SEPharmacodynamicModifier* GetSedation() const;
99 
100  virtual bool HasSystolicPressureModifier() const;
101  virtual SEPharmacodynamicModifier& GetSystolicPressureModifier();
102  virtual const SEPharmacodynamicModifier* GetSystolicPressureModifier() const;
103 
104  virtual bool HasTidalVolumeModifier() const;
105  virtual SEPharmacodynamicModifier& GetTidalVolumeModifier();
106  virtual const SEPharmacodynamicModifier* GetTidalVolumeModifier() const;
107 
108  virtual bool HasTubularPermeabilityModifier() const;
109  virtual SEPharmacodynamicModifier& GetTubularPermeabilityModifier();
110  virtual const SEPharmacodynamicModifier* GetTubularPermeabilityModifier() const;
111 
112  virtual bool HasCentralNervousModifier() const;
113  virtual SEPharmacodynamicModifier& GetCentralNervousModifier();
114  virtual const SEPharmacodynamicModifier* GetCentralNervousModifier() const;
115 
116  virtual bool HasEffectSiteRateConstant() const;
117  virtual SEScalarFrequency& GetEffectSiteRateConstant();
118  virtual double GetEffectSiteRateConstant(const FrequencyUnit& unit) const;
119 
120  virtual std::map<std::string, SEPharmacodynamicModifier*> GetPharmacodynamicModifiers() const;
121 
122 private:
123  std::map<std::string, SEPharmacodynamicModifier*> m_Modifiers;
142 };
143 
144 class BIOGEARS_API SEPharmacodynamicModifier {
145 public:
147  virtual ~SEPharmacodynamicModifier();
148 
149  virtual void Clear();
150  virtual bool IsValid() const;
151  virtual const SEScalar* GetScalar(const char* name);
152  virtual const SEScalar* GetScalar(const std::string& name);
153 
154  virtual bool Load(const CDM::PharmacodynamicModifierData& in);
155  virtual CDM::PharmacodynamicModifierData* Unload() const;
156 
157  virtual bool HasEMax() const;
158  virtual SEScalarFraction& GetEMax();
159  virtual double GetEMax() const;
160 
161  virtual bool HasEC50() const;
162  virtual SEScalarMassPerVolume& GetEC50();
163  virtual double GetEC50(const MassPerVolumeUnit& unit) const;
164 
165 protected:
166  virtual void Unload(CDM::PharmacodynamicModifierData& data) const;
167 
168 private:
171 };
172 }
Definition: SESubstancePharmacodynamics.h:30
SEPharmacodynamicModifier * m_HeartRateModifier
Definition: SESubstancePharmacodynamics.h:129
Definition: SEScalarFrequency.h:18
SEPharmacodynamicModifier * m_CentralNervousModifier
Definition: SESubstancePharmacodynamics.h:140
Definition: SEScalarFrequency.h:36
Definition: SEScalar.h:33
SEPharmacodynamicModifier * m_HemorrhageModifier
Definition: SESubstancePharmacodynamics.h:130
SEScalarFrequency * m_AntibacterialEffect
Definition: SESubstancePharmacodynamics.h:124
Class corresponding to the SubstancePharmacodynamicsData schema type.
Definition: Substance.hxx:2901
Definition: SESubstancePharmacodynamics.h:144
SEPharmacodynamicModifier * m_FeverModifier
Definition: SESubstancePharmacodynamics.h:128
SEScalarFraction * m_EMax
Definition: SESubstancePharmacodynamics.h:169
SEScalarFrequency * m_EffectSiteRateConstant
Definition: SESubstancePharmacodynamics.h:141
SEPharmacodynamicModifier * m_PupilReactivityModifier
Definition: SESubstancePharmacodynamics.h:133
SEPharmacodynamicModifier * m_SystolicPressureModifier
Definition: SESubstancePharmacodynamics.h:137
Definition: Logger.h:27
std::map< std::string, SEPharmacodynamicModifier * > m_Modifiers
Definition: SESubstancePharmacodynamics.h:123
Definition: Logger.h:75
SEPharmacodynamicModifier * m_Bronchodilation
Definition: SESubstancePharmacodynamics.h:125
SEPharmacodynamicModifier * m_DiastolicPressureModifier
Definition: SESubstancePharmacodynamics.h:126
SEPharmacodynamicModifier * m_TubularPermeabilityModifier
Definition: SESubstancePharmacodynamics.h:139
Definition: SEScalarFraction.h:18
Class corresponding to the PharmacodynamicModifierData schema type.
Definition: Substance.hxx:7444
SEPharmacodynamicModifier * m_TidalVolumeModifier
Definition: SESubstancePharmacodynamics.h:138
SEPharmacodynamicModifier * m_NeuromuscularBlock
Definition: SESubstancePharmacodynamics.h:131
SEScalarMassPerVolume * m_EC50
Definition: SESubstancePharmacodynamics.h:170
SEPharmacodynamicModifier * m_PainModifier
Definition: SESubstancePharmacodynamics.h:132
Definition: SEScalarMassPerVolume.h:46
Definition: SEScalarMassPerVolume.h:18
SEScalar * m_EMaxShapeParameter
Definition: SESubstancePharmacodynamics.h:127
SEPharmacodynamicModifier * m_RespirationRateModifier
Definition: SESubstancePharmacodynamics.h:135
Definition: SEElectricalCircuit.h:18
SEPharmacodynamicModifier * m_Sedation
Definition: SESubstancePharmacodynamics.h:136
SEPharmacodynamicModifier * m_PupilSizeModifier
Definition: SESubstancePharmacodynamics.h:134