644 lines
11 KiB
Rust
644 lines
11 KiB
Rust
use crate::datatypes;
|
|
use super::{Object, ObjectSpecies, RawObject};
|
|
use derive_getters::Getters;
|
|
use derive_builder::Builder;
|
|
use downcast_rs::Downcast
|
|
|
|
pub trait FmECG:Downcast{}
|
|
|
|
#[derive(Clone,Debug)]
|
|
pub enum FmECGSpecies{
|
|
SpPACER,
|
|
SpGLOBALMEASURE,
|
|
SpLEADMEASURE,
|
|
SpSTATUS,
|
|
SpRHYTHMREPORT,
|
|
SpAUTOREPORT,
|
|
SpMISCELLANEOUS,
|
|
SpSTANDARD,
|
|
SpSETTINGS,
|
|
SpSELECTOR,
|
|
}
|
|
impl ObjectSpecies for FmECGSpecies{}
|
|
|
|
impl FmECG for CECGDPacer{}
|
|
#[derive(Getters,Builder,Clone,Debug)]
|
|
pub struct CECGDPacer{
|
|
cwavesamplepacer:OBJECT::CWaveSampleCRPDetect,
|
|
cwavedpacer:OBJECT::CWaveDStd,
|
|
cwavecpacer:OBJECT::CWaveCStd,
|
|
#[getter(skip)]
|
|
raw_object:RawObject,
|
|
}
|
|
|
|
pub impl CECGDPacer {
|
|
fn new() -> Self { todo!() }
|
|
}
|
|
impl Object for CECGDPacer{
|
|
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
|
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
|
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies::CECGDPacer) }
|
|
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
|
}
|
|
|
|
impl FmECG for CECGDGlobalMeas{}
|
|
#[derive(Getters,Builder,Clone,Debug)]
|
|
pub struct CECGDGlobalMeas{
|
|
pduration:uint32,
|
|
pqduration:uint32,
|
|
qrsduration:uint32,
|
|
qtduration:uint32,
|
|
qtcduration:uint32,
|
|
qtdduration:uint32,
|
|
paxis:uint32,
|
|
qrsaxis:uint32,
|
|
taxis:uint32,
|
|
heartrate:uint32,
|
|
ponset:uint32,
|
|
poffset:uint32,
|
|
qrsonset:uint32,
|
|
qrsoffset:uint32,
|
|
toffset:uint32,
|
|
#[getter(skip)]
|
|
raw_object:RawObject,
|
|
}
|
|
|
|
pub impl CECGDGlobalMeas {
|
|
fn new() -> Self { todo!() }
|
|
}
|
|
impl Object for CECGDGlobalMeas{
|
|
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
|
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
|
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies::CECGDGlobalMeas) }
|
|
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
|
}
|
|
|
|
impl FmECG for CECGDLeadMeas{}
|
|
#[derive(Getters,Builder,Clone,Debug)]
|
|
pub struct CECGDLeadMeas{
|
|
leadidentifier:LeadIdentifier,
|
|
pposamp:int32,
|
|
pnegamp:int32,
|
|
qduration:int32,
|
|
qamp:int32,
|
|
rduration:int32,
|
|
ramp:int32,
|
|
sduration:int32,
|
|
samp:int32,
|
|
raccduration:int32,
|
|
raccamp:int32,
|
|
saccduration:int32,
|
|
saccamp:int32,
|
|
iduration:int32,
|
|
st0:int32,
|
|
st20:int32,
|
|
st40:int32,
|
|
st60:int32,
|
|
st80:int32,
|
|
tposamp:int32,
|
|
tnegamp:int32,
|
|
r2accduration:int32,
|
|
r2accamp:int32,
|
|
s2accduration:int32,
|
|
s2accamp:int32,
|
|
kduration:int32,
|
|
endt:int32,
|
|
qrstype:widechar,
|
|
#[getter(skip)]
|
|
raw_object:RawObject,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum LeadIdentifier{
|
|
#[default]
|
|
I,
|
|
II,
|
|
III,
|
|
AVR,
|
|
AVL,
|
|
AVF,
|
|
V1,
|
|
V2,
|
|
V3,
|
|
V4,
|
|
V5,
|
|
V6,
|
|
V7,
|
|
V3R,
|
|
V5R,
|
|
X,
|
|
Y,
|
|
Z,
|
|
V4R,
|
|
V6R,
|
|
V8,
|
|
V9,
|
|
NONE,
|
|
}
|
|
|
|
pub impl CECGDLeadMeas {
|
|
fn new() -> Self { todo!() }
|
|
}
|
|
impl Object for CECGDLeadMeas{
|
|
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
|
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
|
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies::CECGDLeadMeas) }
|
|
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
|
}
|
|
|
|
impl FmECG for CECGDStatus{}
|
|
#[derive(Getters,Builder,Clone,Debug)]
|
|
pub struct CECGDStatus{
|
|
electrodeoffstatus:ElectrodeOffStatus,
|
|
arrhythmiastatus:byte,
|
|
activeleads:ActiveLeads,
|
|
container:OBJECT::ANY_CLASS,
|
|
#[getter(skip)]
|
|
raw_object:RawObject,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum ElectrodeOffStatus{
|
|
#[default]
|
|
ELECTRODE_RL,
|
|
ELECTRODE_LL,
|
|
ELECTRODE_RA,
|
|
ELECTRODE_LA,
|
|
ELECTRODE_V,
|
|
ELECTRODE_V1,
|
|
ELECTRODE_V2,
|
|
ELECTRODE_V3,
|
|
ELECTRODE_V4,
|
|
ELECTRODE_V5,
|
|
ELECTRODE_V6,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum ActiveLeads{
|
|
#[default]
|
|
ECG_I,
|
|
ECG_II,
|
|
ECG_III,
|
|
ECG_aVR,
|
|
ECG_aVL,
|
|
ECG_aVF,
|
|
ECG_V,
|
|
ECG_V1,
|
|
ECG_V2,
|
|
ECG_V3,
|
|
ECG_V4,
|
|
ECG_V5,
|
|
ECG_V6,
|
|
}
|
|
|
|
pub impl CECGDStatus {
|
|
fn new() -> Self { todo!() }
|
|
}
|
|
impl Object for CECGDStatus{
|
|
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
|
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
|
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies::CECGDStatus) }
|
|
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
|
}
|
|
|
|
impl FmECG for CECGCRhythmReport{}
|
|
#[derive(Getters,Builder,Clone,Debug)]
|
|
pub struct CECGCRhythmReport{
|
|
leadarrangement:LeadArrangement,
|
|
defspeedsetting:DefSpeedSetting,
|
|
stdleadorder:uint8,
|
|
augleadorder:uint8,
|
|
#[getter(skip)]
|
|
raw_object:RawObject,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum LeadArrangement{
|
|
#[default]
|
|
3LEAD,
|
|
6LEAD,
|
|
12LEAD,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum DefSpeedSetting{
|
|
#[default]
|
|
10mm_s,
|
|
25mm_s,
|
|
50mm_s,
|
|
}
|
|
|
|
pub impl CECGCRhythmReport {
|
|
fn new() -> Self { todo!() }
|
|
}
|
|
impl Object for CECGCRhythmReport{
|
|
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
|
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
|
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies::CECGCRhythmReport) }
|
|
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
|
}
|
|
|
|
impl FmECG for CECGCAutoReport{}
|
|
#[derive(Getters,Builder,Clone,Debug)]
|
|
pub struct CECGCAutoReport{
|
|
extmeasurements:boolean,
|
|
interp:boolean,
|
|
copieswithint:boolean,
|
|
unconfreport:boolean,
|
|
abnormalecg:boolean,
|
|
fname:boolean,
|
|
slname:boolean,
|
|
mi:boolean,
|
|
wt:boolean,
|
|
ht:boolean,
|
|
gender:boolean,
|
|
race:boolean,
|
|
med:boolean,
|
|
clinicalhist:boolean,
|
|
bp:boolean,
|
|
comments:boolean,
|
|
custdef1:boolean,
|
|
custdef2:boolean,
|
|
reasonstatementsenabled:boolean,
|
|
ageformat:AgeFormat,
|
|
leadarrangement:LeadArrangement,
|
|
rhythld1:RhythLd1,
|
|
rhythld2:RhythLd2,
|
|
rhythld3:RhythLd3,
|
|
avgcycle:AvgCycle,
|
|
copies:uint16,
|
|
custdef1lbl:widechar,
|
|
custdef2lbl:widechar,
|
|
physician:boolean,
|
|
technician:boolean,
|
|
#[getter(skip)]
|
|
raw_object:RawObject,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum AgeFormat{
|
|
#[default]
|
|
DOB,
|
|
AGE,
|
|
OFF,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum LeadArrangement{
|
|
#[default]
|
|
3X4,
|
|
3X4_1R,
|
|
3X4_3R,
|
|
6X2,
|
|
12X1,
|
|
6X2_50mm,
|
|
6X2_ext,
|
|
2X6_1R,
|
|
NOPRINT,
|
|
6X2_1R,
|
|
2X6,
|
|
3x4_25mm_5sec,
|
|
3x4_50mm,
|
|
3x4_50mm_5sec,
|
|
6x2_25mm,
|
|
6x2_50mm_5sec,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum RhythLd1{
|
|
#[default]
|
|
I,
|
|
II,
|
|
III,
|
|
AVR,
|
|
AVL,
|
|
AVF,
|
|
V1,
|
|
V2,
|
|
V3,
|
|
V4,
|
|
V5,
|
|
V6,
|
|
OFF,
|
|
V7,
|
|
V3R,
|
|
V5R,
|
|
X,
|
|
Y,
|
|
Z,
|
|
V4R,
|
|
V6R,
|
|
V8,
|
|
V9,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum RhythLd2{
|
|
#[default]
|
|
I,
|
|
II,
|
|
III,
|
|
AVR,
|
|
AVL,
|
|
AVF,
|
|
V1,
|
|
V2,
|
|
V3,
|
|
V4,
|
|
V5,
|
|
V6,
|
|
OFF,
|
|
V7,
|
|
V3R,
|
|
V5R,
|
|
X,
|
|
Y,
|
|
Z,
|
|
V4R,
|
|
V6R,
|
|
V8,
|
|
V9,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum RhythLd3{
|
|
#[default]
|
|
I,
|
|
II,
|
|
III,
|
|
AVR,
|
|
AVL,
|
|
AVF,
|
|
V1,
|
|
V2,
|
|
V3,
|
|
V4,
|
|
V5,
|
|
V6,
|
|
OFF,
|
|
V7,
|
|
V3R,
|
|
V5R,
|
|
X,
|
|
Y,
|
|
Z,
|
|
V4R,
|
|
V6R,
|
|
V8,
|
|
V9,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum AvgCycle{
|
|
#[default]
|
|
3x4_3R,
|
|
6x2_6R,
|
|
NOPRINT,
|
|
3x4_2R_25mm,
|
|
3x4_2R,
|
|
3x4_3R_25mm,
|
|
2x6_1R_25mm,
|
|
2x6_1R,
|
|
6x2_2R,
|
|
6x2_1R_25mm,
|
|
6x2_1R,
|
|
}
|
|
|
|
pub impl CECGCAutoReport {
|
|
fn new() -> Self { todo!() }
|
|
}
|
|
impl Object for CECGCAutoReport{
|
|
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
|
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
|
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies::CECGCAutoReport) }
|
|
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
|
}
|
|
|
|
impl FmECG for CECGCMiscellaneous{}
|
|
#[derive(Getters,Builder,Clone,Debug)]
|
|
pub struct CECGCMiscellaneous{
|
|
leadconfig:LeadConfig,
|
|
mains:Mains,
|
|
autoexport:AutoExport,
|
|
electrodelbl:ElectrodeLbl,
|
|
leadtiming:LeadTiming,
|
|
defgainsetting:DefGainSetting,
|
|
defmusclefilter:boolean,
|
|
defbaselinefilter:boolean,
|
|
baselinecenter:boolean,
|
|
autosave:boolean,
|
|
autoreport2:boolean,
|
|
printartifactreport:boolean,
|
|
electrodeplacement:ElectrodePlacement,
|
|
qtcmethod:QTcMethod,
|
|
savereminder:boolean,
|
|
disablemains:boolean,
|
|
ecgautoprint:boolean,
|
|
ecgsetpatientdemographic:boolean,
|
|
remotefolderpath:widechar,
|
|
qrstone:QRSTone,
|
|
printlabel:PrintLabel,
|
|
pacerlead:PacerLead,
|
|
#[getter(skip)]
|
|
raw_object:RawObject,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum LeadConfig{
|
|
#[default]
|
|
STANDARD,
|
|
CABRERA,
|
|
NEHB,
|
|
FRANK,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum Mains{
|
|
#[default]
|
|
OFF,
|
|
50HZ,
|
|
60HZ,
|
|
AUTO,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum AutoExport{
|
|
#[default]
|
|
OFF,
|
|
MEDIACARD,
|
|
FAA,
|
|
FAX,
|
|
WORKSTATION,
|
|
REMOTE,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum ElectrodeLbl{
|
|
#[default]
|
|
AHA,
|
|
IEC,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum LeadTiming{
|
|
#[default]
|
|
SIMOULTANEOUS,
|
|
SEQUENTIAL,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum DefGainSetting{
|
|
#[default]
|
|
5mm_mv,
|
|
10mm_mv,
|
|
20mm_mv,
|
|
AUTO,
|
|
2mm5_mv,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum ElectrodePlacement{
|
|
#[default]
|
|
STANDARD,
|
|
ALTERNATE,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum QTcMethod{
|
|
#[default]
|
|
BAZETT,
|
|
HODGES,
|
|
FRIDERICIA,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum QRSTone{
|
|
#[default]
|
|
NONE,
|
|
FREQ_1KHZ,
|
|
FREQ_2KHZ,
|
|
FREQ_2K67HZ,
|
|
FREQ_3K2HZ,
|
|
FREQ_4KHZ,
|
|
FREQ_5K3HZ,
|
|
FREQ_6K4HZ,
|
|
FREQ_8KHZ,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum PrintLabel{
|
|
#[default]
|
|
NONE,
|
|
PR,
|
|
PQ,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum PacerLead{
|
|
#[default]
|
|
NONE,
|
|
I,
|
|
II,
|
|
V1,
|
|
V2,
|
|
V3,
|
|
V4,
|
|
V5,
|
|
V6,
|
|
V7,
|
|
V8,
|
|
V9,
|
|
V3R,
|
|
V4R,
|
|
V5R,
|
|
V6R,
|
|
}
|
|
|
|
pub impl CECGCMiscellaneous {
|
|
fn new() -> Self { todo!() }
|
|
}
|
|
impl Object for CECGCMiscellaneous{
|
|
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
|
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
|
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies::CECGCMiscellaneous) }
|
|
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
|
}
|
|
|
|
impl FmECG for CECGCSettings{}
|
|
#[derive(Getters,Builder,Clone,Debug)]
|
|
pub struct CECGCSettings{
|
|
activeleads:ActiveLeads,
|
|
mainsfilter:MainsFilter,
|
|
pacerenabled:boolean,
|
|
leadmode:LeadMode,
|
|
vtachthreshold:uint8,
|
|
impedancerespiration:boolean,
|
|
asystolethreshold:uint16,
|
|
#[getter(skip)]
|
|
raw_object:RawObject,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum ActiveLeads{
|
|
#[default]
|
|
ECG_I,
|
|
ECG_II,
|
|
ECG_III,
|
|
ECG_aVR,
|
|
ECG_aVL,
|
|
ECG_aVF,
|
|
ECG_V,
|
|
ECG_V1,
|
|
ECG_V2,
|
|
ECG_V3,
|
|
ECG_V4,
|
|
ECG_V5,
|
|
ECG_V6,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum MainsFilter{
|
|
#[default]
|
|
NONE,
|
|
OFF,
|
|
50HZ,
|
|
60HZ,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum LeadMode{
|
|
#[default]
|
|
NONE,
|
|
UNKNOWN,
|
|
3_LEAD,
|
|
5_LEAD,
|
|
}
|
|
|
|
pub impl CECGCSettings {
|
|
fn new() -> Self { todo!() }
|
|
}
|
|
impl Object for CECGCSettings{
|
|
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
|
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
|
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies::CECGCSettings) }
|
|
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
|
}
|
|
|
|
impl FmECG for CECGPSelector{}
|
|
#[derive(Getters,Builder,Clone,Debug)]
|
|
pub struct CECGPSelector{
|
|
speciesselector:uint32,
|
|
#[getter(skip)]
|
|
raw_object:RawObject,
|
|
}
|
|
|
|
pub impl CECGPSelector {
|
|
fn new() -> Self { todo!() }
|
|
}
|
|
impl Object for CECGPSelector{
|
|
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmECG }
|
|
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnPARAMETER }
|
|
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmECGSpecies::CECGPSelector) }
|
|
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
|
}
|
|
|