diff --git a/sleepyhead/SleepLib/loader_plugins/resmed_loader.cpp b/sleepyhead/SleepLib/loader_plugins/resmed_loader.cpp index d789fdeb..b9f13986 100644 --- a/sleepyhead/SleepLib/loader_plugins/resmed_loader.cpp +++ b/sleepyhead/SleepLib/loader_plugins/resmed_loader.cpp @@ -684,12 +684,13 @@ void ResmedImport::run() if (R.mode >= 0) sess->settings[CPAP_Mode] = R.mode; if (R.epr >= 0) { - sess->settings[RMS9_EPR] = R.epr; + sess->settings[RMS9_EPR] = (int)R.epr; sess->settings[CPAP_PresReliefType] = (int)PR_EPR; + sess->settings[CPAP_PresReliefSet] = (int)R.epr; } if (R.epr_set >= 0) { - sess->settings[RMS9_EPRSet] = R.epr_set; - sess->settings[CPAP_PresReliefSet] = R.epr_set; + sess->settings[RMS9_EPRSet] = (int)R.epr_set; + sess->settings[CPAP_PresReliefMode] = (int)R.epr_set; } // Ignore all the rest of the sumary data, because there is enough available to calculate it with higher accuracy. @@ -804,12 +805,13 @@ void ResmedImportStage2::run() if (R.min_ipap >= 0) sess->settings[CPAP_IPAPLo] = R.min_ipap; if (R.mode >= 0) sess->settings[CPAP_Mode] = R.mode; if (R.epr >= 0) { - sess->settings[RMS9_EPR] = R.epr; + sess->settings[RMS9_EPR] = (int)R.epr; sess->settings[CPAP_PresReliefType] = (int)PR_EPR; + sess->settings[CPAP_PresReliefSet] = (int)R.epr; } if (R.epr_set >= 0) { - sess->settings[RMS9_EPRSet] = R.epr_set; - sess->settings[CPAP_PresReliefSet] = R.epr_set; + sess->settings[RMS9_EPRSet] = (int)R.epr_set; + sess->settings[CPAP_PresReliefMode] = (int)R.epr_set; } if (R.leakmax >= 0) sess->setMax(CPAP_Leak, R.leakmax); if (R.leakmax >= 0) sess->setMin(CPAP_Leak, 0); diff --git a/sleepyhead/SleepLib/profiles.cpp b/sleepyhead/SleepLib/profiles.cpp index 15b3ee1c..43ea9de5 100644 --- a/sleepyhead/SleepLib/profiles.cpp +++ b/sleepyhead/SleepLib/profiles.cpp @@ -975,8 +975,10 @@ EventDataType Profile::calcAvg(ChannelID code, MachineType mt, QDate start, QDat Day *day = GetGoodDay(date, mt); if (day) { - val += day->sum(code); - cnt++; + if (!day->summaryOnly() || day->hasData(code, ST_AVG)) { + val += day->sum(code); + cnt++; + } } date = date.addDays(1); @@ -1011,10 +1013,12 @@ EventDataType Profile::calcWavg(ChannelID code, MachineType mt, QDate start, QDa Day *day = GetGoodDay(date, mt); if (day) { - tmph = day->hours(); - tmp = day->wavg(code); - val += tmp * tmph; - hours += tmph; + if (!day->summaryOnly() || day->hasData(code, ST_WAVG)) { + tmph = day->hours(); + tmp = day->wavg(code); + val += tmp * tmph; + hours += tmph; + } } date = date.addDays(1); @@ -1051,11 +1055,14 @@ EventDataType Profile::calcMin(ChannelID code, MachineType mt, QDate start, QDat Day *day = GetGoodDay(date, mt); if (day) { - tmp = day->Min(code); + if (!day->summaryOnly() || day->hasData(code, ST_MIN)) { + tmp = day->Min(code); - if (min > tmp) { - min = tmp; + if (min > tmp) { + min = tmp; + } } + } date = date.addDays(1); @@ -1085,10 +1092,12 @@ EventDataType Profile::calcMax(ChannelID code, MachineType mt, QDate start, QDat Day *day = GetGoodDay(date, mt); if (day) { - tmp = day->Max(code); + if (!day->summaryOnly() || day->hasData(code, ST_MAX)) { + tmp = day->Max(code); - if (max < tmp) { - max = tmp; + if (max < tmp) { + max = tmp; + } } } @@ -1215,11 +1224,16 @@ EventDataType Profile::calcPercentile(ChannelID code, EventDataType percent, Mac qint64 SN = 0; bool timeweight; + bool summaryOnly = false; do { Day *day = GetGoodDay(date, mt); if (day) { + if (day->summaryOnly()) { + summaryOnly = true; + break; + } for (int i = 0; i < day->size(); i++) { for (QList::iterator s = day->begin(); s != day->end(); s++) { if (!(*s)->enabled()) { @@ -1277,6 +1291,12 @@ EventDataType Profile::calcPercentile(ChannelID code, EventDataType percent, Mac date = date.addDays(1); } while (date <= end); + + if (summaryOnly) { + // abort percentile calculation, there is not enough data + return 0; + } + QVector valcnt; // Build sorted list of value/counts diff --git a/sleepyhead/daily.cpp b/sleepyhead/daily.cpp index 5718c585..22c1054a 100644 --- a/sleepyhead/daily.cpp +++ b/sleepyhead/daily.cpp @@ -954,7 +954,7 @@ QString Daily::getMachineSettings(Day * cpap) { html+=" "; if (cpap->settingExists(CPAP_PresReliefType)) { int i=cpap->settings_max(CPAP_PresReliefType); - int j=cpap->settings_max(CPAP_PresReliefSet); + int j=cpap->settings_max(CPAP_PresReliefMode); QString flexstr=(i>1) ? schema::channel[CPAP_PresReliefType].option(i)+" x"+QString::number(j) : STR_TR_None; html+=QString("%1%2%3") .arg(STR_TR_PrRelief) diff --git a/sleepyhead/statistics.cpp b/sleepyhead/statistics.cpp index d4b4fbda..72b4f565 100644 --- a/sleepyhead/statistics.cpp +++ b/sleepyhead/statistics.cpp @@ -764,7 +764,7 @@ QString Statistics::GenerateHTML() AHI.push_back(UsageData(date, ahi, hours)); prelief = (PRTypes)(int)round(day->settings_wavg(CPAP_PresReliefType)); - prelset = round(day->settings_wavg(CPAP_PresReliefSet)); + prelset = round(day->settings_max(CPAP_PresReliefSet)); mode = (CPAPMode)(int)round(day->settings_wavg(CPAP_Mode)); mach = day->machine;