SEElectroCardioGram.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/system/SESystem.h>
15 #include <biogears/schema/cdm/ElectroCardioGram.hxx>
16 
17 namespace biogears {
18 class SEScalarElectricPotential;
19 class ElectricPotentialUnit;
20 
21 class BIOGEARS_API SEElectroCardioGram : public SESystem {
22 protected:
23 public:
24  SEElectroCardioGram(Logger* logger);
25  ~SEElectroCardioGram() override;
26 
27  static size_t TypeHash() { return reinterpret_cast<size_t>(&TypeHash); }
28  static constexpr char const * const TypeTag() { return "SEElectroCardioGram"; }
29  const char* classname() const override { return TypeTag(); }
30  size_t hash_code() const override { return TypeHash(); }
31 
32  void Clear() override;
33 
34  const SEScalar* GetScalar(const char* name) override;
35  const SEScalar* GetScalar(const std::string& name) override;
36 
37  bool Load(const CDM::ElectroCardioGramData& in);
38  CDM::ElectroCardioGramData* Unload() const override;
39  Tree<const char*> GetPhysiologyRequestGraph() const override;
40 protected:
41  void Unload(CDM::ElectroCardioGramData& data) const;
42 
43 public:
44  bool HasLead1ElectricPotential() const;
45  SEScalarElectricPotential& GetLead1ElectricPotential();
46  double GetLead1ElectricPotential(const ElectricPotentialUnit& unit) const;
47 
48  bool HasLead2ElectricPotential() const;
49  SEScalarElectricPotential& GetLead2ElectricPotential();
50  double GetLead2ElectricPotential(const ElectricPotentialUnit& unit) const;
51 
52  bool HasLead3ElectricPotential() const;
53  SEScalarElectricPotential& GetLead3ElectricPotential();
54  double GetLead3ElectricPotential(const ElectricPotentialUnit& unit) const;
55 
56  bool HasLead4ElectricPotential() const;
57  SEScalarElectricPotential& GetLead4ElectricPotential();
58  double GetLead4ElectricPotential(const ElectricPotentialUnit& unit) const;
59 
60  bool HasLead5ElectricPotential() const;
61  SEScalarElectricPotential& GetLead5ElectricPotential();
62  double GetLead5ElectricPotential(const ElectricPotentialUnit& unit) const;
63 
64  bool HasLead6ElectricPotential() const;
65  SEScalarElectricPotential& GetLead6ElectricPotential();
66  double GetLead6ElectricPotential(const ElectricPotentialUnit& unit) const;
67 
68  bool HasLead7ElectricPotential() const;
69  SEScalarElectricPotential& GetLead7ElectricPotential();
70  double GetLead7ElectricPotential(const ElectricPotentialUnit& unit) const;
71 
72  bool HasLead8ElectricPotential() const;
73  SEScalarElectricPotential& GetLead8ElectricPotential();
74  double GetLead8ElectricPotential(const ElectricPotentialUnit& unit) const;
75 
76  bool HasLead9ElectricPotential() const;
77  SEScalarElectricPotential& GetLead9ElectricPotential();
78  double GetLead9ElectricPotential(const ElectricPotentialUnit& unit) const;
79 
80  bool HasLead10ElectricPotential() const;
81  SEScalarElectricPotential& GetLead10ElectricPotential();
82  double GetLead10ElectricPotential(const ElectricPotentialUnit& unit) const;
83 
84  bool HasLead11ElectricPotential() const;
85  SEScalarElectricPotential& GetLead11ElectricPotential();
86  double GetLead11ElectricPotential(const ElectricPotentialUnit& unit) const;
87 
88  bool HasLead12ElectricPotential() const;
89  SEScalarElectricPotential& GetLead12ElectricPotential();
90  double GetLead12ElectricPotential(const ElectricPotentialUnit& unit) const;
91 
92 protected:
105 
106  std::stringstream m_ss;
107 };
108 }
SEScalarElectricPotential * m_Lead1ElectricPotential
Definition: SEElectroCardioGram.h:93
SEScalarElectricPotential * m_Lead9ElectricPotential
Definition: SEElectroCardioGram.h:101
static size_t TypeHash()
Definition: SEElectroCardioGram.h:27
SEScalarElectricPotential * m_Lead8ElectricPotential
Definition: SEElectroCardioGram.h:100
Definition: SEElectroCardioGram.h:21
SEScalarElectricPotential * m_Lead6ElectricPotential
Definition: SEElectroCardioGram.h:98
Definition: SEScalar.h:33
Definition: SEScalarElectricPotential.h:18
size_t hash_code() const override
Definition: SEElectroCardioGram.h:30
SEScalarElectricPotential * m_Lead7ElectricPotential
Definition: SEElectroCardioGram.h:99
Definition: SESystem.h:27
static constexpr char const *const TypeTag()
Definition: SEElectroCardioGram.h:28
SEScalarElectricPotential * m_Lead2ElectricPotential
Definition: SEElectroCardioGram.h:94
SEScalarElectricPotential * m_Lead10ElectricPotential
Definition: SEElectroCardioGram.h:102
Class corresponding to the ElectroCardioGramData schema type.
Definition: ElectroCardioGram.hxx:685
Definition: Logger.h:75
SEScalarElectricPotential * m_Lead3ElectricPotential
Definition: SEElectroCardioGram.h:95
SEScalarElectricPotential * m_Lead12ElectricPotential
Definition: SEElectroCardioGram.h:104
std::stringstream m_ss
Definition: SEElectroCardioGram.h:106
Definition: SEScalarElectricPotential.h:34
SEScalarElectricPotential * m_Lead4ElectricPotential
Definition: SEElectroCardioGram.h:96
SEScalarElectricPotential * m_Lead5ElectricPotential
Definition: SEElectroCardioGram.h:97
Definition: SEElectricalCircuit.h:18
const char * classname() const override
Definition: SEElectroCardioGram.h:29
SEScalarElectricPotential * m_Lead11ElectricPotential
Definition: SEElectroCardioGram.h:103