Generic ECG machine to assess the heart rhythm. More...

#include <ECG.h>

Inheritance diagram for biogears::ECG:

Public Member Functions

virtual ~ECG () override
 
const char * classname () const override
 
size_t hash_code () const override
 
void Clear () override
 Cleans up any memory this class is responsible for. More...
 
void Initialize () override
 Initializes the ECG specific quantities. More...
 
virtual bool Load (const CDM::BioGearsElectroCardioGramData &in)
 
virtual CDM::BioGearsElectroCardioGramDataUnload () const override
 
void PreProcess () override
 Prepares the ECG machine for the circuit solver. More...
 
void Process () override
 Process creates the ECG output. More...
 
void PostProcess () override
 Post process updates the math after the circuit calculation are done. More...
 
- Public Member Functions inherited from biogears::SEElectroCardioGram
 SEElectroCardioGram (Logger *logger)
 
 ~SEElectroCardioGram () override
 
const SEScalarGetScalar (const char *name) override
 
const SEScalarGetScalar (const std::string &name) override
 
bool Load (const CDM::ElectroCardioGramData &in)
 
Tree< const char * > GetPhysiologyRequestGraph () const override
 
bool HasLead1ElectricPotential () const
 
SEScalarElectricPotentialGetLead1ElectricPotential ()
 
double GetLead1ElectricPotential (const ElectricPotentialUnit &unit) const
 
bool HasLead2ElectricPotential () const
 
SEScalarElectricPotentialGetLead2ElectricPotential ()
 
double GetLead2ElectricPotential (const ElectricPotentialUnit &unit) const
 
bool HasLead3ElectricPotential () const
 
SEScalarElectricPotentialGetLead3ElectricPotential ()
 
double GetLead3ElectricPotential (const ElectricPotentialUnit &unit) const
 
bool HasLead4ElectricPotential () const
 
SEScalarElectricPotentialGetLead4ElectricPotential ()
 
double GetLead4ElectricPotential (const ElectricPotentialUnit &unit) const
 
bool HasLead5ElectricPotential () const
 
SEScalarElectricPotentialGetLead5ElectricPotential ()
 
double GetLead5ElectricPotential (const ElectricPotentialUnit &unit) const
 
bool HasLead6ElectricPotential () const
 
SEScalarElectricPotentialGetLead6ElectricPotential ()
 
double GetLead6ElectricPotential (const ElectricPotentialUnit &unit) const
 
bool HasLead7ElectricPotential () const
 
SEScalarElectricPotentialGetLead7ElectricPotential ()
 
double GetLead7ElectricPotential (const ElectricPotentialUnit &unit) const
 
bool HasLead8ElectricPotential () const
 
SEScalarElectricPotentialGetLead8ElectricPotential ()
 
double GetLead8ElectricPotential (const ElectricPotentialUnit &unit) const
 
bool HasLead9ElectricPotential () const
 
SEScalarElectricPotentialGetLead9ElectricPotential ()
 
double GetLead9ElectricPotential (const ElectricPotentialUnit &unit) const
 
bool HasLead10ElectricPotential () const
 
SEScalarElectricPotentialGetLead10ElectricPotential ()
 
double GetLead10ElectricPotential (const ElectricPotentialUnit &unit) const
 
bool HasLead11ElectricPotential () const
 
SEScalarElectricPotentialGetLead11ElectricPotential ()
 
double GetLead11ElectricPotential (const ElectricPotentialUnit &unit) const
 
bool HasLead12ElectricPotential () const
 
SEScalarElectricPotentialGetLead12ElectricPotential ()
 
double GetLead12ElectricPotential (const ElectricPotentialUnit &unit) const
 
- Public Member Functions inherited from biogears::SESystem
 SESystem (Logger *logger)
 
virtual ~SESystem ()
 
bool Load (const CDM::SystemData &in)
 
- Public Member Functions inherited from biogears::Loggable
 Loggable ()
 
 Loggable (Logger *log)
 
virtual ~Loggable ()
 
virtual LoggerGetLogger () const
 
- Public Member Functions inherited from biogears::BioGearsSystem
virtual void AtSteadyState ()
 Notify systems that steady state has been achieved. More...
 

Static Public Member Functions

static size_t TypeHash ()
 
static constexpr char const *const TypeTag ()
 
- Static Public Member Functions inherited from biogears::SEElectroCardioGram
static size_t TypeHash ()
 
static constexpr char const *const TypeTag ()
 
- Static Public Member Functions inherited from biogears::SESystem
static const SEScalarGetScalar (const char *name, std::vector< SESystem * > *systems)
 
static const SEScalarGetScalar (const std::string &name, std::vector< SESystem * > *systems)
 

Protected Member Functions

 ECG (BioGears &bg)
 
virtual void Unload (CDM::BioGearsElectroCardioGramData &data) const
 
void SetUp () override
 
- Protected Member Functions inherited from biogears::SEElectroCardioGram
void Unload (CDM::ElectroCardioGramData &data) const
 
- Protected Member Functions inherited from biogears::SESystem
void Unload (CDM::SystemData &data) const
 
- Protected Member Functions inherited from biogears::Loggable
virtual void Debug (const char *msg, const char *origin="") const
 
virtual void Debug (const std::string &msg, const std::string &origin=empty) const
 
virtual void Debug (std::ostream &msg, const std::string &origin=empty) const
 
virtual void Info (const char *msg, const char *origin="") const
 
virtual void Info (const std::string &msg, const std::string &origin=empty) const
 
virtual void Info (std::ostream &msg, const std::string &origin=empty) const
 
virtual void Warning (const char *msg, const char *origin="") const
 
virtual void Warning (const std::string &msg, const std::string &origin=empty) const
 
virtual void Warning (std::ostream &msg, const std::string &origin=empty) const
 
virtual void Error (const char *msg, const char *origin="") const
 
virtual void Error (const std::string msg, const std::string origin=empty) const
 
virtual void Error (std::ostream &msg, const std::string &origin=empty) const
 
virtual void Fatal (const char *msg, const char *origin="") const
 
virtual void Fatal (const std::string &msg, const std::string &origin=empty) const
 
virtual void Fatal (std::ostream &msg, const std::string &origin=empty) const
 
- Protected Member Functions inherited from biogears::BioGearsSystem
virtual void LoadState ()
 

Static Protected Member Functions

static auto make_unique (BioGears &bg) -> std::unique_ptr< ECG >
 

Protected Attributes

BioGearsm_data
 
SEScalarTime m_heartRhythmTime
 
SEScalarTime m_heartRhythmPeriod
 
SEElectroCardioGramInterpolator m_interpolator
 
double m_dt_s
 
- Protected Attributes inherited from biogears::SEElectroCardioGram
SEScalarElectricPotentialm_Lead1ElectricPotential
 
SEScalarElectricPotentialm_Lead2ElectricPotential
 
SEScalarElectricPotentialm_Lead3ElectricPotential
 
SEScalarElectricPotentialm_Lead4ElectricPotential
 
SEScalarElectricPotentialm_Lead5ElectricPotential
 
SEScalarElectricPotentialm_Lead6ElectricPotential
 
SEScalarElectricPotentialm_Lead7ElectricPotential
 
SEScalarElectricPotentialm_Lead8ElectricPotential
 
SEScalarElectricPotentialm_Lead9ElectricPotential
 
SEScalarElectricPotentialm_Lead10ElectricPotential
 
SEScalarElectricPotentialm_Lead11ElectricPotential
 
SEScalarElectricPotentialm_Lead12ElectricPotential
 
std::stringstream m_ss
 
- Protected Attributes inherited from biogears::SESystem
std::stringstream m_ss
 
- Protected Attributes inherited from biogears::Loggable
Loggerm_Logger
 

Friends

class BioGears
 
class BioGearsEngineTest
 

Additional Inherited Members

- Static Public Attributes inherited from biogears::Loggable
static const std::string empty
 
static const char * empty_cStr
 

Detailed Description

Generic ECG machine to assess the heart rhythm.

Constructor & Destructor Documentation

biogears::ECG::ECG ( BioGears bg)
protected
biogears::ECG::~ECG ( )
overridevirtual

Member Function Documentation

const char* biogears::ECG::classname ( ) const
inlineoverridevirtual

Reimplemented from biogears::SEElectroCardioGram.

void biogears::ECG::Clear ( )
overridevirtual

Cleans up any memory this class is responsible for.

Reimplemented from biogears::SEElectroCardioGram.

size_t biogears::ECG::hash_code ( ) const
inlineoverridevirtual

Reimplemented from biogears::SEElectroCardioGram.

void biogears::ECG::Initialize ( )
overridevirtual

Initializes the ECG specific quantities.

Local member variables used in the ECG class are initialized here. These variables are used to keep track of the heart cycle and to create the ECG machine's output. SEElectrocardioGramInterpolater also loads in the data needed to create the output and interpolates it to match our time step. Placing the variables in this function allows for the system to be easy initialized at the beginning of a simulation or after a crash.

Reimplemented from biogears::BioGearsSystem.

bool biogears::ECG::Load ( const CDM::BioGearsElectroCardioGramData in)
virtual
auto biogears::ECG::make_unique ( BioGears bg) -> std::unique_ptr<ECG>
staticprotected
void biogears::ECG::PostProcess ( )
overridevirtual

Post process updates the math after the circuit calculation are done.

At this time, we do not have a circuit model for the ECG machine so this function is left empty. The PostProcess function is included to preserve our system methodology and as a placeholder for models developed in the future.

Implements biogears::BioGearsSystem.

void biogears::ECG::PreProcess ( )
overridevirtual

Prepares the ECG machine for the circuit solver.

At this time, we do not have a circuit model for the ECG machine so this function is left empty. The PreProcess function is included to preserve our system methodology and as a placeholder for models developed in the future.

Implements biogears::BioGearsSystem.

void biogears::ECG::Process ( )
overridevirtual

Process creates the ECG output.

The process function queries the heart rhythm and heart rate from the cardiovascular system. The time period of the heart beat is determined from the heart rate and a new iterator on the waveform is initialized if the queried rhythm is Normal Sinus. The iterator holds the value of the waveform data at a specific time point on the interpolated waveform data. Process increments the time point and sums up the value of any active iterators. The iterators continue being incremented until they reach the end of the interpolated waveform data. If there are no active iterators, the output defaults to 0 mV.

Implements biogears::BioGearsSystem.

void biogears::ECG::SetUp ( )
overrideprotectedvirtual
static size_t biogears::ECG::TypeHash ( )
inlinestatic
static constexpr char const* const biogears::ECG::TypeTag ( )
inlinestatic
CDM::BioGearsElectroCardioGramData * biogears::ECG::Unload ( ) const
overridevirtual

Reimplemented from biogears::SEElectroCardioGram.

void biogears::ECG::Unload ( CDM::BioGearsElectroCardioGramData data) const
protectedvirtual

Friends And Related Function Documentation

friend class BioGears
friend
friend class BioGearsEngineTest
friend

Member Data Documentation

BioGears& biogears::ECG::m_data
protected
double biogears::ECG::m_dt_s
protected
SEScalarTime biogears::ECG::m_heartRhythmPeriod
protected
SEScalarTime biogears::ECG::m_heartRhythmTime
protected
SEElectroCardioGramInterpolator biogears::ECG::m_interpolator
protected