mirror of
https://gitlab.com/pholy/OSCAR-code.git
synced 2025-04-06 03:00:43 +00:00
Split resmedEDFinfo class into new files
This commit is contained in:
parent
433c60f195
commit
eeed7c29bc
93
oscar/SleepLib/loader_plugins/resmed_EDFinfo.cpp
Normal file
93
oscar/SleepLib/loader_plugins/resmed_EDFinfo.cpp
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
/* SleepLib ResMed Loader Implementation
|
||||||
|
*
|
||||||
|
* Copyright (c) 2019 The OSCAR Team
|
||||||
|
* Copyright (c) 2011-2018 Mark Watkins <mark@jedimark.net>
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file COPYING in the main directory of the source code
|
||||||
|
* for more details. */
|
||||||
|
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QString>
|
||||||
|
#include <QDateTime>
|
||||||
|
#include <QDir>
|
||||||
|
#include <QFile>
|
||||||
|
#include <QMessageBox>
|
||||||
|
#include <QTextStream>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QStringList>
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
|
#include "SleepLib/session.h"
|
||||||
|
#include "SleepLib/calcs.h"
|
||||||
|
|
||||||
|
// #include "SleepLib/loader_plugins/resmed_loader.h"
|
||||||
|
#include "SleepLib/loader_plugins/resmed_EDFinfo.h"
|
||||||
|
|
||||||
|
|
||||||
|
ResMedEDFInfo::ResMedEDFInfo() :EDFInfo() { }
|
||||||
|
ResMedEDFInfo::~ResMedEDFInfo() { }
|
||||||
|
|
||||||
|
bool ResMedEDFInfo::Parse(QByteArray * fileData ) // overrides and calls the super's Parse
|
||||||
|
{
|
||||||
|
EDFInfo::Parse( fileData );
|
||||||
|
|
||||||
|
// Now massage some stuff into OSCAR's layout
|
||||||
|
int snp = edfHdr.recordingident.indexOf("SRN=");
|
||||||
|
serialnumber.clear();
|
||||||
|
|
||||||
|
for (int i = snp + 4; i < edfHdr.recordingident.length(); i++) {
|
||||||
|
if (edfHdr.recordingident[i] == ' ') {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
serialnumber += edfHdr.recordingident[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!edfHdr.startdate_orig.isValid()) {
|
||||||
|
qDebug() << "Invalid date time retreieved parsing EDF File " << filename;
|
||||||
|
sleep(1);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
startdate = qint64(edfHdr.startdate_orig.toTime_t()) * 1000LL;
|
||||||
|
//startdate-=timezoneOffset();
|
||||||
|
if (startdate == 0) {
|
||||||
|
qDebug() << "Invalid startdate = 0 in EDF File " << filename;
|
||||||
|
sleep(1);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
dur_data_record = (edfHdr.duration_Seconds * 1000.0L);
|
||||||
|
|
||||||
|
enddate = startdate + dur_data_record * qint64(edfHdr.num_data_records);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
extern QHash<ChannelID, QStringList> resmed_codes;
|
||||||
|
|
||||||
|
// Looks up foreign language Signal names that match this channelID
|
||||||
|
EDFSignal *ResMedEDFInfo::lookupSignal(ChannelID ch)
|
||||||
|
{
|
||||||
|
// Get list of all known foreign language names for this channel
|
||||||
|
auto channames = resmed_codes.find(ch);
|
||||||
|
if (channames == resmed_codes.end()) {
|
||||||
|
// no alternatives strings found for this channel
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is bad, because ResMed thinks it was a cool idea to use two channels with the same name.
|
||||||
|
|
||||||
|
// Scan through EDF's list of signals to see if any match
|
||||||
|
for (auto & name : channames.value()) {
|
||||||
|
EDFSignal *sig = lookupLabel(name);
|
||||||
|
if (sig)
|
||||||
|
return sig;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Failed
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
243
oscar/SleepLib/loader_plugins/resmed_EDFinfo.h
Normal file
243
oscar/SleepLib/loader_plugins/resmed_EDFinfo.h
Normal file
@ -0,0 +1,243 @@
|
|||||||
|
/* SleepLib RESMED EDFinfo Header
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011-2018 Mark Watkins <mark@jedimark.net>
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file COPYING in the main directory of the source code
|
||||||
|
* for more details. */
|
||||||
|
|
||||||
|
#ifndef RESMED_EDFINFO_H
|
||||||
|
#define RESMED_EDFINFO_H
|
||||||
|
|
||||||
|
#include <QVector>
|
||||||
|
#include "SleepLib/machine.h" // Base class: MachineLoader
|
||||||
|
#include "SleepLib/machine_loader.h"
|
||||||
|
#include "SleepLib/profiles.h"
|
||||||
|
#include "SleepLib/loader_plugins/edfparser.h"
|
||||||
|
|
||||||
|
enum EDFType { EDF_UNKNOWN, EDF_BRP, EDF_PLD, EDF_SAD, EDF_EVE, EDF_CSL };
|
||||||
|
|
||||||
|
EDFType lookupEDFType(const QString & text);
|
||||||
|
|
||||||
|
const QString resmed_class_name = STR_MACH_ResMed;
|
||||||
|
|
||||||
|
class STRFile; // forward
|
||||||
|
|
||||||
|
class ResMedEDFInfo : public EDFInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ResMedEDFInfo();
|
||||||
|
~ResMedEDFInfo();
|
||||||
|
|
||||||
|
virtual bool Parse(QByteArray * fileData) override; // overrides and calls the super's Parse
|
||||||
|
|
||||||
|
virtual qint64 GetDurationMillis() { return dur_data_record; } // overrides the super
|
||||||
|
|
||||||
|
EDFSignal *lookupSignal(ChannelID ch);
|
||||||
|
|
||||||
|
//! \brief The following are computed from the edfHdr data
|
||||||
|
QString serialnumber;
|
||||||
|
qint64 dur_data_record;
|
||||||
|
qint64 startdate;
|
||||||
|
qint64 enddate;
|
||||||
|
};
|
||||||
|
|
||||||
|
class EDFduration
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
EDFduration() { start = end = 0; type = EDF_UNKNOWN; }
|
||||||
|
EDFduration(quint32 start, quint32 end, QString path) :
|
||||||
|
start(start), end(end), path(path) {}
|
||||||
|
|
||||||
|
quint32 start;
|
||||||
|
quint32 end;
|
||||||
|
QString path;
|
||||||
|
QString filename;
|
||||||
|
EDFType type;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class STRRecord
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
STRRecord() {
|
||||||
|
maskon.clear();
|
||||||
|
maskoff.clear();
|
||||||
|
maskdur = 0;
|
||||||
|
maskevents = -1;
|
||||||
|
mode = -1;
|
||||||
|
rms9_mode = -1;
|
||||||
|
set_pressure = -1;
|
||||||
|
epap = -1;
|
||||||
|
max_pressure = -1;
|
||||||
|
min_pressure = -1;
|
||||||
|
max_epap = -1;
|
||||||
|
min_epap = -1;
|
||||||
|
max_ps = -1;
|
||||||
|
min_ps = -1;
|
||||||
|
ps = -1;
|
||||||
|
ipap = -1;
|
||||||
|
max_ipap = -1;
|
||||||
|
min_ipap = -1;
|
||||||
|
epr = -1;
|
||||||
|
epr_level = -1;
|
||||||
|
sessionid = 0;
|
||||||
|
|
||||||
|
ahi = -1;
|
||||||
|
oai = -1;
|
||||||
|
ai = -1;
|
||||||
|
hi = -1;
|
||||||
|
uai = -1;
|
||||||
|
cai = -1;
|
||||||
|
csr = -1;
|
||||||
|
|
||||||
|
leak50 = -1;
|
||||||
|
leak95 = -1;
|
||||||
|
leakmax = -1;
|
||||||
|
|
||||||
|
rr50 = -1;
|
||||||
|
rr95 = -1;
|
||||||
|
rrmax = -1;
|
||||||
|
|
||||||
|
mv50 = -1;
|
||||||
|
mv95 = -1;
|
||||||
|
mvmax = -1;
|
||||||
|
|
||||||
|
ie50 = -1;
|
||||||
|
ie95 = -1;
|
||||||
|
iemax = -1;
|
||||||
|
|
||||||
|
tv50 = -1;
|
||||||
|
tv95 = -1;
|
||||||
|
tvmax = -1;
|
||||||
|
|
||||||
|
mp50 = -1;
|
||||||
|
mp95 = -1;
|
||||||
|
mpmax = -1;
|
||||||
|
|
||||||
|
tgtepap50 = -1;
|
||||||
|
tgtepap95 = -1;
|
||||||
|
tgtepapmax = -1;
|
||||||
|
|
||||||
|
tgtipap50 = -1;
|
||||||
|
tgtipap95 = -1;
|
||||||
|
tgtipapmax = -1;
|
||||||
|
|
||||||
|
s_RampTime = -1;
|
||||||
|
s_RampEnable = -1;
|
||||||
|
s_EPR_ClinEnable = -1;
|
||||||
|
s_EPREnable = -1;
|
||||||
|
|
||||||
|
s_PtAccess = -1;
|
||||||
|
s_ABFilter = -1;
|
||||||
|
s_Mask = -1;
|
||||||
|
s_Tube = -1;
|
||||||
|
s_ClimateControl = -1;
|
||||||
|
s_HumEnable = -1;
|
||||||
|
s_HumLevel = -1;
|
||||||
|
s_TempEnable = -1;
|
||||||
|
s_Temp = -1;
|
||||||
|
s_SmartStart = -1;
|
||||||
|
|
||||||
|
ramp_pressure = -1;
|
||||||
|
|
||||||
|
date=QDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
STRRecord(const STRRecord & copy) = default;
|
||||||
|
|
||||||
|
// All the data members
|
||||||
|
|
||||||
|
QVector<quint32> maskon;
|
||||||
|
QVector<quint32> maskoff;
|
||||||
|
|
||||||
|
EventDataType maskdur;
|
||||||
|
EventDataType maskevents;
|
||||||
|
EventDataType mode;
|
||||||
|
EventDataType rms9_mode;
|
||||||
|
EventDataType set_pressure;
|
||||||
|
EventDataType max_pressure;
|
||||||
|
EventDataType min_pressure;
|
||||||
|
EventDataType epap;
|
||||||
|
EventDataType max_ps;
|
||||||
|
EventDataType min_ps;
|
||||||
|
EventDataType ps;
|
||||||
|
EventDataType max_epap;
|
||||||
|
EventDataType min_epap;
|
||||||
|
EventDataType ipap;
|
||||||
|
EventDataType max_ipap;
|
||||||
|
EventDataType min_ipap;
|
||||||
|
EventDataType epr;
|
||||||
|
EventDataType epr_level;
|
||||||
|
quint32 sessionid;
|
||||||
|
EventDataType ahi;
|
||||||
|
EventDataType oai;
|
||||||
|
EventDataType ai;
|
||||||
|
EventDataType hi;
|
||||||
|
EventDataType uai;
|
||||||
|
EventDataType cai;
|
||||||
|
EventDataType csr;
|
||||||
|
EventDataType leak50;
|
||||||
|
EventDataType leak95;
|
||||||
|
EventDataType leakmax;
|
||||||
|
EventDataType rr50;
|
||||||
|
EventDataType rr95;
|
||||||
|
EventDataType rrmax;
|
||||||
|
EventDataType mv50;
|
||||||
|
EventDataType mv95;
|
||||||
|
EventDataType mvmax;
|
||||||
|
EventDataType tv50;
|
||||||
|
EventDataType tv95;
|
||||||
|
EventDataType tvmax;
|
||||||
|
EventDataType mp50;
|
||||||
|
EventDataType mp95;
|
||||||
|
EventDataType mpmax;
|
||||||
|
EventDataType ie50;
|
||||||
|
EventDataType ie95;
|
||||||
|
EventDataType iemax;
|
||||||
|
EventDataType tgtepap50;
|
||||||
|
EventDataType tgtepap95;
|
||||||
|
EventDataType tgtepapmax;
|
||||||
|
EventDataType tgtipap50;
|
||||||
|
EventDataType tgtipap95;
|
||||||
|
EventDataType tgtipapmax;
|
||||||
|
|
||||||
|
EventDataType ramp_pressure;
|
||||||
|
QDate date;
|
||||||
|
|
||||||
|
EventDataType s_RampTime;
|
||||||
|
int s_RampEnable;
|
||||||
|
int s_EPR_ClinEnable;
|
||||||
|
int s_EPREnable;
|
||||||
|
|
||||||
|
int s_PtAccess;
|
||||||
|
int s_ABFilter;
|
||||||
|
int s_Mask;
|
||||||
|
int s_Tube;
|
||||||
|
int s_ClimateControl;
|
||||||
|
int s_HumEnable;
|
||||||
|
EventDataType s_HumLevel;
|
||||||
|
int s_TempEnable;
|
||||||
|
EventDataType s_Temp;
|
||||||
|
int s_SmartStart;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class STRFile
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
STRFile() :
|
||||||
|
filename(QString()), edf(nullptr) {}
|
||||||
|
STRFile(QString name, ResMedEDFInfo *str) :
|
||||||
|
filename(name), edf(str) {}
|
||||||
|
STRFile(const STRFile & copy) = default;
|
||||||
|
|
||||||
|
virtual ~STRFile() {}
|
||||||
|
|
||||||
|
QString filename;
|
||||||
|
ResMedEDFInfo * edf;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // RESMED_EDFINFO_H
|
@ -18,11 +18,12 @@
|
|||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include "resmed_loader.h"
|
|
||||||
|
|
||||||
#include "SleepLib/session.h"
|
#include "SleepLib/session.h"
|
||||||
#include "SleepLib/calcs.h"
|
#include "SleepLib/calcs.h"
|
||||||
|
|
||||||
|
#include "SleepLib/loader_plugins/resmed_loader.h"
|
||||||
|
#include "SleepLib/loader_plugins/resmed_EDFinfo.h"
|
||||||
|
|
||||||
#ifdef DEBUG_EFFICIENCY
|
#ifdef DEBUG_EFFICIENCY
|
||||||
#include <QElapsedTimer> // only available in 4.8
|
#include <QElapsedTimer> // only available in 4.8
|
||||||
#endif
|
#endif
|
||||||
@ -58,70 +59,6 @@ QHash<ChannelID, QStringList> resmed_codes;
|
|||||||
const QString STR_ext_TGT = "tgt";
|
const QString STR_ext_TGT = "tgt";
|
||||||
const QString STR_ext_CRC = "crc";
|
const QString STR_ext_CRC = "crc";
|
||||||
|
|
||||||
|
|
||||||
ResMedEDFInfo::ResMedEDFInfo() :EDFInfo() { }
|
|
||||||
ResMedEDFInfo::~ResMedEDFInfo() { }
|
|
||||||
|
|
||||||
bool ResMedEDFInfo::Parse(QByteArray * fileData ) // overrides and calls the super's Parse
|
|
||||||
{
|
|
||||||
EDFInfo::Parse( fileData );
|
|
||||||
|
|
||||||
// Now massage some stuff into OSCAR's layout
|
|
||||||
int snp = edfHdr.recordingident.indexOf("SRN=");
|
|
||||||
serialnumber.clear();
|
|
||||||
|
|
||||||
for (int i = snp + 4; i < edfHdr.recordingident.length(); i++) {
|
|
||||||
if (edfHdr.recordingident[i] == ' ') {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
serialnumber += edfHdr.recordingident[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!edfHdr.startdate_orig.isValid()) {
|
|
||||||
qDebug() << "Invalid date time retreieved parsing EDF File " << filename;
|
|
||||||
sleep(1);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
startdate = qint64(edfHdr.startdate_orig.toTime_t()) * 1000LL;
|
|
||||||
//startdate-=timezoneOffset();
|
|
||||||
if (startdate == 0) {
|
|
||||||
qDebug() << "Invalid startdate = 0 in EDF File " << filename;
|
|
||||||
sleep(1);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
dur_data_record = (edfHdr.duration_Seconds * 1000.0L);
|
|
||||||
|
|
||||||
enddate = startdate + dur_data_record * qint64(edfHdr.num_data_records);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Looks up foreign language Signal names that match this channelID
|
|
||||||
EDFSignal *ResMedEDFInfo::lookupSignal(ChannelID ch)
|
|
||||||
{
|
|
||||||
// Get list of all known foreign language names for this channel
|
|
||||||
auto channames = resmed_codes.find(ch);
|
|
||||||
if (channames == resmed_codes.end()) {
|
|
||||||
// no alternatives strings found for this channel
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is bad, because ResMed thinks it was a cool idea to use two channels with the same name.
|
|
||||||
|
|
||||||
// Scan through EDF's list of signals to see if any match
|
|
||||||
for (auto & name : channames.value()) {
|
|
||||||
EDFSignal *sig = lookupLabel(name);
|
|
||||||
if (sig)
|
|
||||||
return sig;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Failed
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if given string matches any alternative signal names for this channel
|
// Check if given string matches any alternative signal names for this channel
|
||||||
bool matchSignal(ChannelID ch, const QString & name)
|
bool matchSignal(ChannelID ch, const QString & name)
|
||||||
{
|
{
|
||||||
@ -604,6 +541,7 @@ void ResmedLoader::ParseSTR(Machine *mach, QMap<QDate, STRFile> & STRmap, QDate
|
|||||||
// sleep(3);
|
// sleep(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ResmedLoader::ResmedLoader() {
|
ResmedLoader::ResmedLoader() {
|
||||||
#ifndef UNITTEST_MODE
|
#ifndef UNITTEST_MODE
|
||||||
const QString RMS9_ICON = ":/icons/rms9.png";
|
const QString RMS9_ICON = ":/icons/rms9.png";
|
||||||
|
@ -14,225 +14,17 @@
|
|||||||
#include "SleepLib/machine_loader.h"
|
#include "SleepLib/machine_loader.h"
|
||||||
#include "SleepLib/profiles.h"
|
#include "SleepLib/profiles.h"
|
||||||
#include "SleepLib/loader_plugins/edfparser.h"
|
#include "SleepLib/loader_plugins/edfparser.h"
|
||||||
|
#include "SleepLib/loader_plugins/resmed_EDFinfo.h"
|
||||||
|
|
||||||
//********************************************************************************************
|
//********************************************************************************************
|
||||||
/// IMPORTANT!!!
|
/// IMPORTANT!!!
|
||||||
//********************************************************************************************
|
//********************************************************************************************
|
||||||
// Please INCREMENT the following value when making changes to this loaders implementation.
|
// Please INCREMENT the following value when making changes to this loaders implementation.
|
||||||
//
|
//
|
||||||
const int resmed_data_version = 11;
|
const int resmed_data_version = 12;
|
||||||
//
|
//
|
||||||
//********************************************************************************************
|
//********************************************************************************************
|
||||||
|
|
||||||
enum EDFType { EDF_UNKNOWN, EDF_BRP, EDF_PLD, EDF_SAD, EDF_EVE, EDF_CSL };
|
|
||||||
|
|
||||||
EDFType lookupEDFType(const QString & text);
|
|
||||||
|
|
||||||
const QString resmed_class_name = STR_MACH_ResMed;
|
|
||||||
|
|
||||||
class ResMedEDFInfo : public EDFInfo
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
ResMedEDFInfo();
|
|
||||||
~ResMedEDFInfo();
|
|
||||||
|
|
||||||
virtual bool Parse(QByteArray * fileData) override; // overrides and calls the super's Parse
|
|
||||||
|
|
||||||
virtual qint64 GetDurationMillis() { return dur_data_record; } // overrides the super
|
|
||||||
|
|
||||||
EDFSignal *lookupSignal(ChannelID ch);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//! \brief The following are computed from the edfHdr data
|
|
||||||
QString serialnumber;
|
|
||||||
qint64 dur_data_record;
|
|
||||||
qint64 startdate;
|
|
||||||
qint64 enddate;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
class EDFduration
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
EDFduration() { start = end = 0; type = EDF_UNKNOWN; }
|
|
||||||
EDFduration(quint32 start, quint32 end, QString path) :
|
|
||||||
start(start), end(end), path(path) {}
|
|
||||||
|
|
||||||
quint32 start;
|
|
||||||
quint32 end;
|
|
||||||
QString path;
|
|
||||||
QString filename;
|
|
||||||
EDFType type;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class STRRecord
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
STRRecord() {
|
|
||||||
maskon.clear();
|
|
||||||
maskoff.clear();
|
|
||||||
maskdur = 0;
|
|
||||||
maskevents = -1;
|
|
||||||
mode = -1;
|
|
||||||
rms9_mode = -1;
|
|
||||||
set_pressure = -1;
|
|
||||||
epap = -1;
|
|
||||||
max_pressure = -1;
|
|
||||||
min_pressure = -1;
|
|
||||||
max_epap = -1;
|
|
||||||
min_epap = -1;
|
|
||||||
max_ps = -1;
|
|
||||||
min_ps = -1;
|
|
||||||
ps = -1;
|
|
||||||
ipap = -1;
|
|
||||||
max_ipap = -1;
|
|
||||||
min_ipap = -1;
|
|
||||||
epr = -1;
|
|
||||||
epr_level = -1;
|
|
||||||
sessionid = 0;
|
|
||||||
|
|
||||||
ahi = -1;
|
|
||||||
oai = -1;
|
|
||||||
ai = -1;
|
|
||||||
hi = -1;
|
|
||||||
uai = -1;
|
|
||||||
cai = -1;
|
|
||||||
csr = -1;
|
|
||||||
|
|
||||||
leak50 = -1;
|
|
||||||
leak95 = -1;
|
|
||||||
leakmax = -1;
|
|
||||||
|
|
||||||
rr50 = -1;
|
|
||||||
rr95 = -1;
|
|
||||||
rrmax = -1;
|
|
||||||
|
|
||||||
mv50 = -1;
|
|
||||||
mv95 = -1;
|
|
||||||
mvmax = -1;
|
|
||||||
|
|
||||||
ie50 = -1;
|
|
||||||
ie95 = -1;
|
|
||||||
iemax = -1;
|
|
||||||
|
|
||||||
tv50 = -1;
|
|
||||||
tv95 = -1;
|
|
||||||
tvmax = -1;
|
|
||||||
|
|
||||||
mp50 = -1;
|
|
||||||
mp95 = -1;
|
|
||||||
mpmax = -1;
|
|
||||||
|
|
||||||
tgtepap50 = -1;
|
|
||||||
tgtepap95 = -1;
|
|
||||||
tgtepapmax = -1;
|
|
||||||
|
|
||||||
tgtipap50 = -1;
|
|
||||||
tgtipap95 = -1;
|
|
||||||
tgtipapmax = -1;
|
|
||||||
|
|
||||||
s_RampTime = -1;
|
|
||||||
s_RampEnable = -1;
|
|
||||||
s_EPR_ClinEnable = -1;
|
|
||||||
s_EPREnable = -1;
|
|
||||||
|
|
||||||
s_PtAccess = -1;
|
|
||||||
s_ABFilter = -1;
|
|
||||||
s_Mask = -1;
|
|
||||||
s_Tube = -1;
|
|
||||||
s_ClimateControl = -1;
|
|
||||||
s_HumEnable = -1;
|
|
||||||
s_HumLevel = -1;
|
|
||||||
s_TempEnable = -1;
|
|
||||||
s_Temp = -1;
|
|
||||||
s_SmartStart = -1;
|
|
||||||
|
|
||||||
ramp_pressure = -1;
|
|
||||||
|
|
||||||
date=QDate();
|
|
||||||
}
|
|
||||||
|
|
||||||
STRRecord(const STRRecord & copy) = default;
|
|
||||||
|
|
||||||
// All the data members
|
|
||||||
|
|
||||||
QVector<quint32> maskon;
|
|
||||||
QVector<quint32> maskoff;
|
|
||||||
|
|
||||||
EventDataType maskdur;
|
|
||||||
EventDataType maskevents;
|
|
||||||
EventDataType mode;
|
|
||||||
EventDataType rms9_mode;
|
|
||||||
EventDataType set_pressure;
|
|
||||||
EventDataType max_pressure;
|
|
||||||
EventDataType min_pressure;
|
|
||||||
EventDataType epap;
|
|
||||||
EventDataType max_ps;
|
|
||||||
EventDataType min_ps;
|
|
||||||
EventDataType ps;
|
|
||||||
EventDataType max_epap;
|
|
||||||
EventDataType min_epap;
|
|
||||||
EventDataType ipap;
|
|
||||||
EventDataType max_ipap;
|
|
||||||
EventDataType min_ipap;
|
|
||||||
EventDataType epr;
|
|
||||||
EventDataType epr_level;
|
|
||||||
quint32 sessionid;
|
|
||||||
EventDataType ahi;
|
|
||||||
EventDataType oai;
|
|
||||||
EventDataType ai;
|
|
||||||
EventDataType hi;
|
|
||||||
EventDataType uai;
|
|
||||||
EventDataType cai;
|
|
||||||
EventDataType csr;
|
|
||||||
EventDataType leak50;
|
|
||||||
EventDataType leak95;
|
|
||||||
EventDataType leakmax;
|
|
||||||
EventDataType rr50;
|
|
||||||
EventDataType rr95;
|
|
||||||
EventDataType rrmax;
|
|
||||||
EventDataType mv50;
|
|
||||||
EventDataType mv95;
|
|
||||||
EventDataType mvmax;
|
|
||||||
EventDataType tv50;
|
|
||||||
EventDataType tv95;
|
|
||||||
EventDataType tvmax;
|
|
||||||
EventDataType mp50;
|
|
||||||
EventDataType mp95;
|
|
||||||
EventDataType mpmax;
|
|
||||||
EventDataType ie50;
|
|
||||||
EventDataType ie95;
|
|
||||||
EventDataType iemax;
|
|
||||||
EventDataType tgtepap50;
|
|
||||||
EventDataType tgtepap95;
|
|
||||||
EventDataType tgtepapmax;
|
|
||||||
EventDataType tgtipap50;
|
|
||||||
EventDataType tgtipap95;
|
|
||||||
EventDataType tgtipapmax;
|
|
||||||
|
|
||||||
EventDataType ramp_pressure;
|
|
||||||
QDate date;
|
|
||||||
|
|
||||||
EventDataType s_RampTime;
|
|
||||||
int s_RampEnable;
|
|
||||||
int s_EPR_ClinEnable;
|
|
||||||
int s_EPREnable;
|
|
||||||
|
|
||||||
int s_PtAccess;
|
|
||||||
int s_ABFilter;
|
|
||||||
int s_Mask;
|
|
||||||
int s_Tube;
|
|
||||||
int s_ClimateControl;
|
|
||||||
int s_HumEnable;
|
|
||||||
EventDataType s_HumLevel;
|
|
||||||
int s_TempEnable;
|
|
||||||
EventDataType s_Temp;
|
|
||||||
int s_SmartStart;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class ResmedLoader;
|
class ResmedLoader;
|
||||||
|
|
||||||
@ -260,23 +52,6 @@ protected:
|
|||||||
ResMedDay * resday;
|
ResMedDay * resday;
|
||||||
};
|
};
|
||||||
|
|
||||||
class STRFile
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
STRFile() :
|
|
||||||
filename(QString()), edf(nullptr) {}
|
|
||||||
STRFile(QString name, ResMedEDFInfo *str) :
|
|
||||||
filename(name), edf(str) {}
|
|
||||||
STRFile(const STRFile & copy) = default;
|
|
||||||
|
|
||||||
virtual ~STRFile() {}
|
|
||||||
|
|
||||||
QString filename;
|
|
||||||
ResMedEDFInfo * edf;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*! \class ResmedLoader
|
/*! \class ResmedLoader
|
||||||
\brief Importer for ResMed S9 Data
|
\brief Importer for ResMed S9 Data
|
||||||
*/
|
*/
|
||||||
|
@ -286,6 +286,7 @@ SOURCES += \
|
|||||||
SleepLib/loader_plugins/mseries_loader.cpp \
|
SleepLib/loader_plugins/mseries_loader.cpp \
|
||||||
SleepLib/loader_plugins/prs1_loader.cpp \
|
SleepLib/loader_plugins/prs1_loader.cpp \
|
||||||
SleepLib/loader_plugins/resmed_loader.cpp \
|
SleepLib/loader_plugins/resmed_loader.cpp \
|
||||||
|
SleepLib/loader_plugins/resmed_EDFinfo.cpp \
|
||||||
SleepLib/loader_plugins/somnopose_loader.cpp \
|
SleepLib/loader_plugins/somnopose_loader.cpp \
|
||||||
SleepLib/loader_plugins/zeo_loader.cpp \
|
SleepLib/loader_plugins/zeo_loader.cpp \
|
||||||
translation.cpp \
|
translation.cpp \
|
||||||
@ -356,6 +357,7 @@ HEADERS += \
|
|||||||
SleepLib/loader_plugins/mseries_loader.h \
|
SleepLib/loader_plugins/mseries_loader.h \
|
||||||
SleepLib/loader_plugins/prs1_loader.h \
|
SleepLib/loader_plugins/prs1_loader.h \
|
||||||
SleepLib/loader_plugins/resmed_loader.h \
|
SleepLib/loader_plugins/resmed_loader.h \
|
||||||
|
SleepLib/loader_plugins/resmed_EDFinfo.h \
|
||||||
SleepLib/loader_plugins/somnopose_loader.h \
|
SleepLib/loader_plugins/somnopose_loader.h \
|
||||||
SleepLib/loader_plugins/zeo_loader.h \
|
SleepLib/loader_plugins/zeo_loader.h \
|
||||||
translation.h \
|
translation.h \
|
||||||
|
Loading…
Reference in New Issue
Block a user