375 lines
7.1 KiB
Rust
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() }
|
|
}
|
|
|