ResMed EPR setting fix, SummaryOnly calculation fixes

This commit is contained in:
Mark Watkins 2014-07-02 23:45:53 +10:00
parent 686588663a
commit c549a90bf5
4 changed files with 42 additions and 20 deletions

View File

@ -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);

View File

@ -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<Session *>::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<ValueCount> valcnt;
// Build sorted list of value/counts

View File

@ -954,7 +954,7 @@ QString Daily::getMachineSettings(Day * cpap) {
html+="<tr><td colspan=5>&nbsp;</td></tr>";
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("<tr><td><a class='info' href='#'>%1<span>%2</span></a></td><td colspan=4>%3</td></tr>")
.arg(STR_TR_PrRelief)

View File

@ -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;