RustXMLParseTest/FmSPO2_objects.rs

375 lines
7.1 KiB
Rust

use crate::datatypes;
use super::{Object, ObjectSpecies, RawObject};
use derive_getters::Getters;
use derive_builder::Builder;
use downcast_rs::Downcast
pub trait FmSPO2:Downcast{}
#[derive(Clone,Debug)]
pub enum FmSPO2Species{
SpSTANDARD,
SpDATA,
SpDATAMODIFIED,
SpSELECTOR,
}
impl ObjectSpecies for FmSPO2Species{}
impl FmSPO2 for CSpO2DStd{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSpO2DStd{
stime:chrono::NaiveDateTime,
status:Status,
sat:uint16,
hr:uint16,
extstatus:ExtStatus,
source:Source,
mode:Mode,
method:Method,
#[getter(skip)]
raw_object:RawObject,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum Status{
#[default]
DATA_NOT_AVAIL,
DATA_COMPLETE,
DATA_FAILURE,
DATA_EXCEPTION,
DATA_PROCESSING,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum ExtStatus{
#[default]
NONE,
SPO2_NOPROBE,
SPO2_NOTAVAIL,
SPO2_OUT_OF_TRACK,
SPO2_BAD,
SPO2_WAIT,
SPO2_SENSOR_BAD,
SPO2_FROZEN,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum Source{
#[default]
NONE,
UNKNOWN,
NONIN,
NELLCOR_MP205,
NELLCOR_MP506,
MASIMO_MS11,
NELLCOR_NELL3,
NELLCOR_NELL1,
MASIMO_MS2011,
MASIMO_MX,
NELLCOR,
NELLCOR_PMB05N,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum Mode{
#[default]
NONE,
UNKNOWN,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum Method{
#[default]
NONE,
UNKNOWN,
MANUAL,
DEVICE,
REMOTE,
}
pub impl CSpO2DStd {
fn new() -> Self { todo!() }
}
impl Object for CSpO2DStd{
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmSPO2 }
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmSPO2Species::CSpO2DStd) }
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmSPO2 for CSpO2DData{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSpO2DData{
stime:chrono::NaiveDateTime,
extstatus:ExtStatus,
source:Source,
sat:OBJECT::CNumDStd,
hr:OBJECT::CNumDStd,
pi:OBJECT::CNumDStd,
status:Status,
elapsedsatseconds:OBJECT::CNumDStd,
totalsatseconds:OBJECT::CNumDStd,
satconfidence:OBJECT::CNumDStd,
hrconfidence:OBJECT::CNumDStd,
piconfidence:OBJECT::CNumDStd,
pviconfidence:OBJECT::CNumDStd,
pvi:OBJECT::CNumDStd,
mode:Mode,
method:Method,
#[getter(skip)]
raw_object:RawObject,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum ExtStatus{
#[default]
PULSE_FOUND,
SEARCHING_FOR_BOARD,
NO_PROBE,
INCORRECT_PROBE,
SEARCHING_FOR_PULSE,
BAD_PROBE,
PROBE_EXPIRED,
NO_CABLE,
INCORRECT_CABLE,
BAD_CABLE,
CABLE_EXPIRED,
VALUE_NOT_ACQUIRED,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum Source{
#[default]
NONE,
UNKNOWN,
NONIN,
NELLCOR_MP205,
NELLCOR_MP506,
MASIMO_MS11,
NELLCOR_NELL3,
NELLCOR_NELL1,
MASIMO_MS2011,
MASIMO_MX,
NELLCOR,
NELLCOR_PMB05N,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum Status{
#[default]
DATA_NOT_AVAIL,
DATA_COMPLETE,
DATA_FAILURE,
DATA_EXCEPTION,
DATA_PROCESSING,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum Mode{
#[default]
NONE,
UNKNOWN,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum Method{
#[default]
NONE,
UNKNOWN,
MANUAL,
DEVICE,
REMOTE,
}
pub impl CSpO2DData {
fn new() -> Self { todo!() }
}
impl Object for CSpO2DData{
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmSPO2 }
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmSPO2Species::CSpO2DData) }
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmSPO2 for CSpO2DDataModified{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSpO2DDataModified{
spo2data:OBJECT::CSpO2DData,
o2flowrate:uint8,
o2concentration:uint8,
o2method:O2Method,
location:Location,
#[getter(skip)]
raw_object:RawObject,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum O2Method{
#[default]
NONE,
UNKNOWN,
AEROSOL_HUMIDIFIED_MASK,
FACE_TENT,
MASK,
NASAL_CANNULA,
NON_REBREATHER,
PARTIAL_REBREATHER,
T_PIECE,
TRACHEOSTOMY_COLLAR,
VENTILATOR,
VENTURI_MASK,
ROOM_AIR,
OXYMIZER,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum Location{
#[default]
NONE,
UNKNOWN,
EAR,
FINGER,
TOE,
FOREHEAD,
}
pub impl CSpO2DDataModified {
fn new() -> Self { todo!() }
}
impl Object for CSpO2DDataModified{
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmSPO2 }
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmSPO2Species::CSpO2DDataModified) }
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmSPO2 for CSpO2CStd{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSpO2CStd{
enabled:boolean,
installedmodule:InstalledModule,
#[getter(skip)]
raw_object:RawObject,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum InstalledModule{
#[default]
NONE,
UNKNOWN,
NONIN,
NELLCOR_MP205,
NELLCOR_MP506,
MASIMO_MS11,
NELLCOR_NELL3,
NELLCOR_NELL1,
MASIMO_MS2011,
MASIMO_MX,
NELLCOR,
NELLCOR_PMB05N,
}
pub impl CSpO2CStd {
fn new() -> Self { todo!() }
}
impl Object for CSpO2CStd{
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmSPO2 }
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmSPO2Species::CSpO2CStd) }
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmSPO2 for CSpO2CData{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSpO2CData{
satexponent:int8,
piexponent:int8,
satalarms:OBJECT::CNumCStd,
hralarms:OBJECT::CNumCStd,
fastsat:FastSat,
sensitivity:Sensitivity,
averagingtime:AveragingTime,
satsecondslimit:SatSecondsLimit,
smarttone:SmartTone,
pviexponent:int8,
#[getter(skip)]
raw_object:RawObject,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum FastSat{
#[default]
NONE,
OFF,
ON,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum Sensitivity{
#[default]
NONE,
NORMAL,
MAXIMUM,
APOD,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum AveragingTime{
#[default]
NONE,
2_TO_4_SEC,
4_TO_6_SEC,
8_SEC,
10_SEC,
12_SEC,
14_SEC,
16_SEC,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum SatSecondsLimit{
#[default]
NONE,
DISABLED,
10_SEC,
25_SEC,
50_SEC,
100_SEC,
}
#[derive(Clone,Copy,Debug,Default)]
pub enum SmartTone{
#[default]
NONE,
OFF,
ON,
}
pub impl CSpO2CData {
fn new() -> Self { todo!() }
}
impl Object for CSpO2CData{
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmSPO2 }
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmSPO2Species::CSpO2CData) }
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmSPO2 for CSpO2PSelector{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSpO2PSelector{
value:uint32,
#[getter(skip)]
raw_object:RawObject,
}
pub impl CSpO2PSelector {
fn new() -> Self { todo!() }
}
impl Object for CSpO2PSelector{
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmSPO2 }
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnPARAMETER }
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmSPO2Species::CSpO2PSelector) }
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}