diff --git a/oscar/SleepLib/loader_plugins/prisma_loader.cpp b/oscar/SleepLib/loader_plugins/prisma_loader.cpp
index 201fa244..9ae1f938 100644
--- a/oscar/SleepLib/loader_plugins/prisma_loader.cpp
+++ b/oscar/SleepLib/loader_plugins/prisma_loader.cpp
@@ -45,9 +45,9 @@
//********************************************************************************************
// parameters
-ChannelID Prisma_Mode = 0, Prisma_SoftPAP = 0, Prisma_PSoft = 0, Prisma_PSoft_Min = 0, Prisma_AutoStart = 0, Prisma_Softstart_Time = 0, Prisma_Softstart_TimeMax = 0, Prisma_TubeType = 0, Prisma_PMaxOA = 0;
+ChannelID Prisma_Mode = 0, Prisma_SoftPAP = 0, Prisma_PSoft = 0, Prisma_PSoft_Min = 0, Prisma_AutoStart = 0, Prisma_Softstart_Time = 0, Prisma_Softstart_TimeMax = 0, Prisma_Softstart_Pressure = 0, Prisma_TubeType = 0, Prisma_PMaxOA = 0, Prisma_EEPAP_Min = 0, Prisma_EEPAP_Max = 0, Prisma_HumidifierLevel = 0, Prisma_Warning = 0;
// waveforms
-ChannelID Prisma_ObstructLevel = 0, Prisma_rMVFluctuation = 0, Prisma_rRMV= 0, Prisma_PressureMeasured = 0, Prisma_FlowFull = 0, Prisma_SPRStatus = 0;
+ChannelID Prisma_ObstructLevel = 0, Prisma_rMVFluctuation = 0, Prisma_rRMV= 0, Prisma_PressureMeasured = 0, Prisma_FlowFull = 0, Prisma_SPRStatus = 0, Prisma_EEPAP = 0;
// events
ChannelID Prisma_Artifact = 0, Prisma_CriticalLeak = 0, Prisma_eSO = 0, Prisma_eMO = 0, Prisma_eS = 0, Prisma_eF = 0, Prisma_DeepSleep = 0;
@@ -157,36 +157,148 @@ void PrismaImport::run()
// set session parameters
auto parameters = eventFile->getParameters();
- // TODO AXT: extract
- switch(parameters[PRISMA_MODE]) {
- case PRISMA_MODE_CPAP:
- session->settings[CPAP_Mode] = (int)MODE_CPAP;
- session->settings[Prisma_Mode] = (int)PRISMA_COMBINED_MODE_CPAP;
- break;
- case PRISMA_MODE_APAP:
- session->settings[CPAP_Mode] = (int)MODE_APAP;
- switch (parameters[PRISMA_APAP_DYNAMIC])
- {
- case PRISMA_APAP_MODE_STANDARD:
- session->settings[Prisma_Mode] = (int)PRISMA_COMBINED_MODE_APAP_STD;
- break;
- case PRISMA_APAP_MODE_DYNAMIC:
- session->settings[Prisma_Mode] = (int)PRISMA_COMBINED_MODE_APAP_DYN;
- break;
- }
- break;
+ // TODO AXT: extract
+ if (parameters.contains(PRISMA_SMART_MODE)) {
+ switch(parameters[PRISMA_SMART_MODE]) {
+ case PRISMA_MODE_CPAP:
+ session->settings[CPAP_Mode] = (int)MODE_CPAP;
+ session->settings[Prisma_Mode] = (int)PRISMA_COMBINED_MODE_CPAP;
+ break;
+ case PRISMA_MODE_APAP:
+ session->settings[CPAP_Mode] = (int)MODE_APAP;
+ switch (parameters[PRISMA_SMART_APAP_DYNAMIC])
+ {
+ case PRISMA_APAP_MODE_STANDARD:
+ session->settings[Prisma_Mode] = (int)PRISMA_COMBINED_MODE_APAP_STD;
+ break;
+ case PRISMA_APAP_MODE_DYNAMIC:
+ session->settings[Prisma_Mode] = (int)PRISMA_COMBINED_MODE_APAP_DYN;
+ break;
+ }
+
+ break;
+ }
+ session->settings[CPAP_PressureMin] = parameters[PRISMA_SMART_PRESSURE] / 100;
+ session->settings[CPAP_PressureMax] = parameters[PRISMA_SMART_PRESSURE_MAX] / 100;
+ session->settings[Prisma_SoftPAP] = parameters[PRISMA_SMART_SOFTPAP];
+ session->settings[Prisma_PSoft] = parameters[PRISMA_SMART_PSOFT] / 100.0;
+ session->settings[Prisma_PSoft_Min] = parameters[PRISMA_SMART_PSOFT_MIN] / 100;
+ session->settings[Prisma_AutoStart] = parameters[PRISMA_SMART_AUTOSTART];
+
+ session->settings[Prisma_Softstart_Time] = parameters[PRISMA_SMART_SOFTSTART_TIME];
+ session->settings[Prisma_Softstart_TimeMax] = parameters[PRISMA_SMART_SOFTSTART_TIME_MAX];
+
+ if (parameters.contains(PRISMA_SMART_TUBE_TYPE)) {
+ session->settings[Prisma_TubeType] = parameters[PRISMA_SMART_TUBE_TYPE] / 10.0;
+ }
+
+ session->settings[Prisma_PMaxOA] = parameters[PRISMA_SMART_PMAXOA] / 100;
+
+ // session->settings[Prisma_HumidifierLevel] = parameters[PRISMA_SMART_HUMIDLEVEL];
}
- session->settings[CPAP_PressureMin] = parameters[PRISMA_PRESSURE] / 100;
- session->settings[CPAP_PressureMax] = parameters[PRISMA_PRESSURE_MAX] / 100;
- session->settings[Prisma_SoftPAP] = parameters[PRISMA_SOFTPAP];
- session->settings[Prisma_PSoft] = parameters[PRISMA_PSOFT] / 100.0;
- session->settings[Prisma_PSoft_Min] = parameters[PRISMA_PSOFT_MIN] / 100;
- session->settings[Prisma_AutoStart] = parameters[PRISMA_AUTOSTART] / 100;
- session->settings[Prisma_Softstart_Time] = parameters[PRISMA_SOFTSTART_TIME];
- session->settings[Prisma_Softstart_TimeMax] = parameters[PRISMA_SOFTSTART_TIME_MAX];
- session->settings[Prisma_TubeType] = parameters[PRISMA_TUBE_TYPE];
- session->settings[Prisma_PMaxOA] = parameters[PRISMA_PMAXOA] / 100;
+
+ bool found = true;
+ if (parameters.contains(PRISMA_LINE_MODE)) {
+ switch(parameters[PRISMA_LINE_MODE]) {
+ case PRISMA_MODE_AUTO_ST:
+ //TODO AXT
+ // session->settings[CPAP_Mode] = (int)MODE_BILEVEL_AUTO_VARIABLE_PS;
+ session->settings[Prisma_Mode] = (int)PRISMA_COMBINED_MODE_AUTO_ST;
+
+ session->settings[Prisma_EEPAP_Min] = parameters[PRISMA_LINE_EEPAP_MIN] / 100.0;
+ session->settings[Prisma_EEPAP_Max] = parameters[PRISMA_LINE_EEPAP_MAX] / 100.0;
+ session->settings[CPAP_EPAP] = parameters[PRISMA_LINE_EPAP] / 100.0;
+ session->settings[CPAP_IPAP] = parameters[PRISMA_LINE_IPAP] / 100.0;
+ session->settings[CPAP_IPAPHi] = parameters[PRISMA_LINE_IPAP_MAX] / 100.0;
+ /*
+ param_SoftStartPress
+ param_PdiffNorm
+ param_PdiffMax
+ */
+ session->settings[Prisma_AutoStart] = parameters[PRISMA_LINE_AUTOSTART];
+ session->settings[Prisma_Softstart_Time] = parameters[PRISMA_LINE_SOFT_START_TIME];
+
+ if (parameters.contains(PRISMA_SMART_TUBE_TYPE)) {
+ session->settings[Prisma_TubeType] = parameters[PRISMA_LINE_TUBE_TYPE] / 10.0;
+ }
+
+ session->settings[Prisma_Warning] = 2;
+ break;
+ case PRISMA_MODE_ACSV:
+ session->settings[CPAP_Mode] = (int)MODE_ASV;
+ // session->settings[CPAP_Mode] = (int)MODE_ASV_VARIABLE_EPAP;
+ session->settings[Prisma_Mode] = (int)PRISMA_COMBINED_MODE_ACSV;
+ session->settings[Prisma_EEPAP_Min] = parameters[PRISMA_LINE_EEPAP_MIN] / 100.0;
+ session->settings[Prisma_EEPAP_Max] = parameters[PRISMA_LINE_EEPAP_MAX] / 100.0;
+ session->settings[CPAP_EPAP] = parameters[PRISMA_LINE_EPAP] / 100.0;
+ session->settings[CPAP_PSMin] = parameters[PRISMA_LINE_PDIFF_NORM] / 100.0;
+ session->settings[CPAP_PSMax] = parameters[PRISMA_LINE_PDIFF_MAX] / 100.0;
+ session->settings[Prisma_Softstart_Time] = parameters[PRISMA_LINE_SOFT_START_TIME];
+ session->settings[Prisma_Softstart_Pressure] = parameters[PRISMA_LINE_SOFT_START_PRESS] / 100.0;
+ if (parameters.contains(PRISMA_SMART_TUBE_TYPE)) {
+ session->settings[Prisma_TubeType] = parameters[PRISMA_LINE_TUBE_TYPE] / 10.0;
+ }
+
+ session->settings[Prisma_Warning] = 2;
+ break;
+
+ case PRISMA_MODE_APAP:
+ session->settings[CPAP_Mode] = (int)MODE_APAP;
+ switch (parameters[PRISMA_LINE_APAP_DYNAMIC])
+ {
+ case PRISMA_APAP_MODE_STANDARD:
+ session->settings[Prisma_Mode] = (int)PRISMA_COMBINED_MODE_APAP_STD;
+ break;
+ case PRISMA_APAP_MODE_DYNAMIC:
+ session->settings[Prisma_Mode] = (int)PRISMA_COMBINED_MODE_APAP_DYN;
+ break;
+ }
+ session->settings[CPAP_PressureMin] = parameters[PRISMA_LINE_EPAP] / 100.0;
+ session->settings[CPAP_PressureMax] = parameters[PRISMA_LINE_IPAP] / 100.0;
+ session->settings[Prisma_AutoStart] = parameters[PRISMA_LINE_AUTOSTART];
+ session->settings[Prisma_SoftPAP] = parameters[PRISMA_LINE_SOFT_PAP_LEVEL];
+ session->settings[Prisma_Softstart_Time] = parameters[PRISMA_LINE_SOFT_START_TIME];
+ session->settings[Prisma_Softstart_Pressure] = parameters[PRISMA_LINE_SOFT_START_PRESS] / 100.0;
+ if (parameters.contains(PRISMA_SMART_TUBE_TYPE)) {
+ session->settings[Prisma_TubeType] = parameters[PRISMA_LINE_TUBE_TYPE] / 10.0;
+ }
+ break;
+
+ default:
+ found = false;
+ break;
+ }
+
+
+ if (!found) {
+ session->settings[Prisma_Warning] = 1;
+ }
+
+
+
+
+ }
+
+/* PRISMA_LINE_TI = 1011,
+ PRISMA_LINE_TE = 1012,
+ PRISMA_LINE_TARGET_VOLUME = 1016,
+ PRISMA_LINE_IPAP_SPEED = 1017,
+ PRISMA_LINE_HUMIDLEVEL = 1083,
+ PRISMA_LINE_AUTOSTART = 1084,
+ PRISMA_LINE_TUBE_TYPE = 1091,
+ PRISMA_LINE_BACTERIUMFILTER = 1092,
+ PRISMA_LINE_SOFT_PAP_LEVEL = 1123,
+ PRISMA_LINE_SOFT_START_PRESS = 1125,
+ PRISMA_LINE_SOFT_START_TIME = 1127,
+ PRISMA_LINE_EEPAP_MIN = 1138,
+ PRISMA_LINE_EEPAP_MAX = 1139,
+ PRISMA_LINE_PDIFF_NORM = 1140,
+ PRISMA_LINE_PDIFF_MAX = 1141,
+ PRISMA_LINE_IPAP_MAX = 1199,
+ PRISMA_LINE_IPAP = 1200,
+ PRISMA_LINE_EPAP = 1201,
+ */
// add waveforms
// common
@@ -213,10 +325,8 @@ void PrismaImport::run()
// AddWaveform(CPAP_RespRate, "BreathFrequency");
// AddWaveform(CPAP_TidalVolume, "BreathVolume");
// AddWaveform(CPAP_IE, "InspExpirRel");
-
// AddWaveform(OXI_Pulse, "HeartFrequency");
// AddWaveform(OXI_SPO2, "SpO2");
-
// AddWaveform(CPAP_LeakTotal, QString("TotalLeakage"));
// AddWaveform(CPAP_Test1, QString("RSBI"));
@@ -543,6 +653,7 @@ MachineInfo PrismaLoader::PeekInfoFromConfig(const QString & selectedPath)
info.modelnumber=configObj["devid"].toString();
info.model = s_PrismaModelInfo.Name(info.modelnumber);
info.serial = devObj["sn"].toString();
+ info.series = devObj["hwversion"].toString();
// TODO AXT load props
info.properties["cica"] = "mica";
return info;
@@ -650,9 +761,13 @@ void PrismaLoader::initChannels()
QObject::tr("PAP Mode"),
QObject::tr("PAP Mode"),
"", LOOKUP, Qt::green));
+ chan->addOption(PRISMA_COMBINED_MODE_UNKNOWN, QObject::tr("UNKNOWN"));
chan->addOption(PRISMA_COMBINED_MODE_CPAP, QObject::tr("CPAP"));
chan->addOption(PRISMA_COMBINED_MODE_APAP_STD, QObject::tr("APAP (std)"));
chan->addOption(PRISMA_COMBINED_MODE_APAP_DYN, QObject::tr("APAP (dyn)"));
+ chan->addOption(PRISMA_COMBINED_MODE_AUTO_S, QObject::tr("Auto S"));
+ chan->addOption(PRISMA_COMBINED_MODE_AUTO_ST, QObject::tr("Auto S/T"));
+ chan->addOption(PRISMA_COMBINED_MODE_ACSV, QObject::tr("AcSV"));
channel.add(GRP_CPAP, chan = new Channel(Prisma_SoftPAP=0xe401, SETTING, MT_CPAP, SESSION,
"Prisma_SoftPAP",
@@ -668,13 +783,13 @@ void PrismaLoader::initChannels()
"Prisma_PSoft", QObject::tr("PSoft"),
QObject::tr("PSoft"),
QObject::tr("PSoft"),
- STR_UNIT_CMH2O, LOOKUP, Qt::green));
+ STR_UNIT_CMH2O, DEFAULT, Qt::green));
channel.add(GRP_CPAP, new Channel(Prisma_PSoft_Min=0xe403, SETTING, MT_CPAP, SESSION,
"Prisma_PSoft_Min", QObject::tr("PSoftMin"),
QObject::tr("PSoftMin"),
QObject::tr("PSoftMin"),
- STR_UNIT_CMH2O, LOOKUP, Qt::green));
+ STR_UNIT_CMH2O, DEFAULT, Qt::green));
channel.add(GRP_CPAP, chan = new Channel(Prisma_AutoStart=0xe404, SETTING, MT_CPAP, SESSION,
"Prisma_AutoStart", QObject::tr("AutoStart"),
@@ -696,18 +811,50 @@ void PrismaLoader::initChannels()
QObject::tr("Softstart_TimeMax"),
STR_UNIT_Minutes, LOOKUP, Qt::green));
- channel.add(GRP_CPAP, new Channel(Prisma_TubeType=0xe407, SETTING, MT_CPAP, SESSION,
- "Prisma_TubeType", QObject::tr("TubeType"),
- QObject::tr("TubeType"),
- QObject::tr("TubeType"),
- STR_UNIT_CM, LOOKUP, Qt::green));
+ channel.add(GRP_CPAP, new Channel(Prisma_Softstart_Pressure=0xe407, SETTING, MT_CPAP, SESSION,
+ "Prisma_Softstart_Pressure", QObject::tr("Softstart_Pressure"),
+ QObject::tr("Softstart_Pressure"),
+ QObject::tr("Softstart_Pressure"),
+ STR_UNIT_CMH2O, DEFAULT, Qt::green));
channel.add(GRP_CPAP, new Channel(Prisma_PMaxOA=0xe408, SETTING, MT_CPAP, SESSION,
"Prisma_PMaxOA", QObject::tr("PMaxOA"),
QObject::tr("PMaxOA"),
QObject::tr("PMaxOA"),
+ STR_UNIT_CMH2O, DEFAULT, Qt::green));
+
+ channel.add(GRP_CPAP, new Channel(Prisma_EEPAP_Min=0xe409, SETTING, MT_CPAP, SESSION,
+ "Prisma_EEPAPMin", QObject::tr("EEPAPMin"),
+ QObject::tr("EEPAPMin"),
+ QObject::tr("EEPAPMin"),
STR_UNIT_CMH2O, LOOKUP, Qt::green));
+ channel.add(GRP_CPAP, new Channel(Prisma_EEPAP_Max=0xe40a, SETTING, MT_CPAP, SESSION,
+ "Prisma_EEPAPMax", QObject::tr("EEPAPMax"),
+ QObject::tr("EEPAPMax"),
+ QObject::tr("EEPAPMax"),
+ STR_UNIT_CMH2O, LOOKUP, Qt::green));
+
+ channel.add(GRP_CPAP, new Channel(Prisma_HumidifierLevel=0xe40b, SETTING, MT_CPAP, SESSION,
+ "Prisma_HumidLevel", QObject::tr("HumidifierLevel"),
+ QObject::tr("HumidifierLevel"),
+ QObject::tr("HumidifierLevel"),
+ "", DEFAULT, Qt::green));
+
+ channel.add(GRP_CPAP, new Channel(Prisma_TubeType=0xe40c, SETTING, MT_CPAP, SESSION,
+ "Prisma_TubeType", QObject::tr("TubeType"),
+ QObject::tr("TubeType"),
+ QObject::tr("TubeType"),
+ STR_UNIT_CM, DEFAULT, Qt::green));
+
+ channel.add(GRP_CPAP, chan = new Channel(Prisma_Warning=0xe40d, SETTING, MT_CPAP, SESSION,
+ "Prisma_Warning", QObject::tr("Warning"),
+ QObject::tr("Warning"),
+ QObject::tr("Warning"),
+ "", LOOKUP, Qt::green));
+ chan->addOption(1, "Mode is not supported yet");
+ chan->addOption(2, "Mode partially supported");
+
channel.add(GRP_CPAP, chan = new Channel(Prisma_ObstructLevel=0xe440, WAVEFORM, MT_CPAP, SESSION,
"Prisma_ObstructLevel",
diff --git a/oscar/SleepLib/loader_plugins/prisma_loader.h b/oscar/SleepLib/loader_plugins/prisma_loader.h
index ac47da83..2d893727 100644
--- a/oscar/SleepLib/loader_plugins/prisma_loader.h
+++ b/oscar/SleepLib/loader_plugins/prisma_loader.h
@@ -31,29 +31,58 @@ const QString prisma_class_name = STR_MACH_Prisma;
//********************************************************************************************
enum Prisma_Parameters {
- PRISMA_MODE = 6,
- PRISMA_PRESSURE = 9,
- PRISMA_PRESSURE_MAX = 10,
- PRISMA_PSOFT_MIN = 11,
- PRISMA_PSOFT = 12,
- PRISMA_SOFTPAP = 13,
- PRISMA_APAP_DYNAMIC = 15,
- PRISMA_HUMIDLEVEL = 16,
- PRISMA_AUTOSTART = 17,
- PRISMA_SOFTSTART_TIME_MAX = 18,
- PRISMA_SOFTSTART_TIME = 19,
- PRISMA_TUBE_TYPE = 21,
- PRISMA_PMAXOA = 38
+ PRISMA_SMART_MODE = 6,
+ PRISMA_SMART_PRESSURE = 9,
+ PRISMA_SMART_PRESSURE_MAX = 10,
+ PRISMA_SMART_PSOFT_MIN = 11,
+ PRISMA_SMART_PSOFT = 12,
+ PRISMA_SMART_SOFTPAP = 13,
+ PRISMA_SMART_APAP_DYNAMIC = 15,
+ PRISMA_SMART_HUMIDLEVEL = 16,
+ PRISMA_SMART_AUTOSTART = 17,
+ PRISMA_SMART_SOFTSTART_TIME_MAX = 18,
+ PRISMA_SMART_SOFTSTART_TIME = 19,
+ PRISMA_SMART_TUBE_TYPE = 21,
+ PRISMA_SMART_PMAXOA = 38,
+
+ PRISMA_LINE_MODE = 1003,
+ PRISMA_LINE_TI = 1011,
+ PRISMA_LINE_TE = 1012,
+ PRISMA_LINE_TARGET_VOLUME = 1016,
+ PRISMA_LINE_IPAP_SPEED = 1017,
+ PRISMA_LINE_HUMIDLEVEL = 1083,
+ PRISMA_LINE_AUTOSTART = 1084,
+ PRISMA_LINE_TUBE_TYPE = 1091,
+ PRISMA_LINE_BACTERIUMFILTER = 1092,
+ PRISMA_LINE_SOFT_PAP_LEVEL = 1123,
+ PRISMA_LINE_SOFT_START_PRESS = 1125,
+ PRISMA_LINE_SOFT_START_TIME = 1127,
+ PRISMA_LINE_EEPAP_MIN = 1138,
+ PRISMA_LINE_EEPAP_MAX = 1139,
+ PRISMA_LINE_PDIFF_NORM = 1140,
+ PRISMA_LINE_PDIFF_MAX = 1141,
+ PRISMA_LINE_IPAP_MAX = 1199,
+ PRISMA_LINE_IPAP = 1200,
+ PRISMA_LINE_EPAP = 1201,
+ // PRISMA_LINE_ALARM_LEAK_ACTIVE = 1202,
+ // PRISMA_LINE_ALARM_DISCONNECTION_ACTIVE = 1203,
+ PRISMA_LINE_APAP_DYNAMIC = 1209
+
};
enum Prisma_Mode {
PRISMA_MODE_CPAP = 1,
PRISMA_MODE_APAP = 2,
+
+ PRISMA_MODE_ACSV = 3,
+
+ PRISMA_MODE_AUTO_S = 9,
+ PRISMA_MODE_AUTO_ST = 10,
};
enum Prisma_APAP_Mode {
PRISMA_APAP_MODE_STANDARD = 1,
- PRISMA_APAP_MODE_DYNAMIC = 2,
+ PRISMA_APAP_MODE_DYNAMIC = 2,
};
enum Prisma_SoftPAP_Mode {
@@ -66,6 +95,12 @@ enum Prisma_Combined_Mode {
PRISMA_COMBINED_MODE_CPAP = 1,
PRISMA_COMBINED_MODE_APAP_STD = 2,
PRISMA_COMBINED_MODE_APAP_DYN = 3,
+
+ PRISMA_COMBINED_MODE_AUTO_S = 4,
+ PRISMA_COMBINED_MODE_AUTO_ST = 5,
+ PRISMA_COMBINED_MODE_ACSV = 6,
+
+ PRISMA_COMBINED_MODE_UNKNOWN = -1,
};
enum Prisma_Event_Type {
@@ -91,6 +126,8 @@ enum Prisma_Event_Type {
PRISMA_EVENT_EPOCH_DEEPSLEEP = 261,
};
+
+
//********************************************************************************************
class WMEDFInfo : public EDFInfo {