Fix overview pressure chart for PRS1 pressure setting channels.

This commit is contained in:
sawinglogz 2020-04-27 17:35:50 -04:00
parent 670693dd5f
commit 4a5322c350

View File

@ -27,6 +27,14 @@ gPressureChart::gPressureChart()
addCalc(CPAP_EPAP, ST_90P); addCalc(CPAP_EPAP, ST_90P);
addCalc(CPAP_IPAP, ST_MID); addCalc(CPAP_IPAP, ST_MID);
addCalc(CPAP_IPAP, ST_90P); addCalc(CPAP_IPAP, ST_90P);
// PRS1 reports pressure adjustments instead of observed pressures on some machines
addCalc(CPAP_PressureSet, ST_MID);
addCalc(CPAP_PressureSet, ST_90P);
addCalc(CPAP_EPAPSet, ST_MID);
addCalc(CPAP_EPAPSet, ST_90P);
addCalc(CPAP_IPAPSet, ST_MID);
addCalc(CPAP_IPAPSet, ST_90P);
} }
@ -60,27 +68,50 @@ void gPressureChart::afterDraw(QPainter &, gGraph &graph, QRectF rect)
if (getCalc(CPAP_Pressure)->cnt > 0) { if (getCalc(CPAP_Pressure)->cnt > 0) {
presstr.append(channelRange(CPAP_Pressure, STR_TR_CPAP)); presstr.append(channelRange(CPAP_Pressure, STR_TR_CPAP));
} }
if (getCalc(CPAP_PressureMin, ST_SETMIN)->cnt > 0) { if (getCalc(CPAP_PressureMin, ST_SETMIN)->cnt > 0) {
// TODO: If using machines from different manufacturers in an overview,
// the below may not accurately find the APAP pressure channel for all
// days; but it only affects the summary label at the top.
ChannelID pressure = CPAP_Pressure;
if (getCalc(CPAP_PressureSet, ST_MID)->cnt > 0) {
pressure = CPAP_PressureSet;
}
presstr.append(QString("%1 %2/%3/%4/%5"). presstr.append(QString("%1 %2/%3/%4/%5").
arg(STR_TR_APAP). arg(STR_TR_APAP).
arg(getCalc(CPAP_PressureMin, ST_SETMIN)->min,0,'f',1). arg(getCalc(CPAP_PressureMin, ST_SETMIN)->min,0,'f',1).
arg(getCalc(CPAP_Pressure, ST_MID)->mid(), 0, 'f', 1). arg(getCalc(pressure, ST_MID)->mid(), 0, 'f', 1).
arg(getCalc(CPAP_Pressure, ST_90P)->mid(),0,'f',1). arg(getCalc(pressure, ST_90P)->mid(),0,'f',1).
arg(getCalc(CPAP_PressureMax, ST_SETMAX)->max, 0, 'f', 1)); arg(getCalc(CPAP_PressureMax, ST_SETMAX)->max, 0, 'f', 1));
} }
if (getCalc(CPAP_EPAP)->cnt > 0) { if (getCalc(CPAP_EPAP)->cnt > 0) {
presstr.append(channelRange(CPAP_EPAP, STR_TR_EPAP)); // See CPAP_PressureSet note above.
ChannelID epap = CPAP_EPAP;
if (getCalc(CPAP_EPAPSet, ST_MID)->cnt > 0) {
epap = CPAP_EPAPSet;
} }
presstr.append(channelRange(epap, STR_TR_EPAP));
}
if (getCalc(CPAP_IPAP)->cnt > 0) { if (getCalc(CPAP_IPAP)->cnt > 0) {
presstr.append(channelRange(CPAP_IPAP, STR_TR_IPAP)); // See CPAP_PressureSet note above.
ChannelID ipap = CPAP_IPAP;
if (getCalc(CPAP_IPAPSet, ST_MID)->cnt > 0) {
ipap = CPAP_IPAPSet;
} }
presstr.append(channelRange(ipap, STR_TR_IPAP));
}
if (getCalc(CPAP_EPAPLo)->cnt > 0) { if (getCalc(CPAP_EPAPLo)->cnt > 0) {
presstr.append(channelRange(CPAP_EPAPLo, STR_TR_EPAPLo)); presstr.append(channelRange(CPAP_EPAPLo, STR_TR_EPAPLo));
} }
if (getCalc(CPAP_IPAPHi)->cnt > 0) { if (getCalc(CPAP_IPAPHi)->cnt > 0) {
presstr.append(channelRange(CPAP_IPAPHi, STR_TR_IPAPHi)); presstr.append(channelRange(CPAP_IPAPHi, STR_TR_IPAPHi));
} }
QString txt = presstr.join(" "); QString txt = presstr.join(" ");
graph.renderText(txt, rect.left(), rect.top()-5*graph.printScaleY(), 0); graph.renderText(txt, rect.left(), rect.top()-5*graph.printScaleY(), 0);
@ -142,11 +173,17 @@ void gPressureChart::populate(Day * day, int idx)
if (mode == MODE_CPAP) { if (mode == MODE_CPAP) {
addSlice(CPAP_Pressure); addSlice(CPAP_Pressure);
} else if (mode == MODE_APAP) { } else if (mode == MODE_APAP) {
addSlice(CPAP_PressureMin, ST_SETMIN); addSlice(CPAP_PressureMin, ST_SETMIN);
if (!day->summaryOnly()) { if (!day->summaryOnly()) {
addSlice(CPAP_Pressure, ST_MID); // Handle PRS1 pressure adjustments reported separately from average (EPAP) pressure
addSlice(CPAP_Pressure, ST_90P); ChannelID pressure = CPAP_Pressure;
if (m_day->channelHasData(CPAP_PressureSet)) {
pressure = CPAP_PressureSet;
}
addSlice(pressure, ST_MID);
addSlice(pressure, ST_90P);
} }
addSlice(CPAP_PressureMax, ST_SETMAX); addSlice(CPAP_PressureMax, ST_SETMAX);
@ -163,15 +200,26 @@ void gPressureChart::populate(Day * day, int idx)
addSlice(CPAP_IPAP, ST_90P); addSlice(CPAP_IPAP, ST_90P);
} }
addSlice(CPAP_IPAPHi); addSlice(CPAP_IPAPHi);
} else if ((mode == MODE_BILEVEL_AUTO_VARIABLE_PS) || (mode == MODE_ASV_VARIABLE_EPAP)) { } else if ((mode == MODE_BILEVEL_AUTO_VARIABLE_PS) || (mode == MODE_ASV_VARIABLE_EPAP)) {
addSlice(CPAP_EPAPLo); addSlice(CPAP_EPAPLo);
if (!day->summaryOnly()) { if (!day->summaryOnly()) {
addSlice(CPAP_EPAP, ST_MID); // Handle PRS1 pressure adjustments when reported instead of observed pressures
addSlice(CPAP_EPAP, ST_90P); ChannelID epap = CPAP_EPAP;
addSlice(CPAP_IPAP, ST_MID); if (m_day->channelHasData(CPAP_EPAPSet)) {
addSlice(CPAP_IPAP, ST_90P); epap = CPAP_EPAPSet;
}
ChannelID ipap = CPAP_IPAP;
if (m_day->channelHasData(CPAP_IPAPSet)) {
ipap = CPAP_IPAPSet;
}
addSlice(epap, ST_MID);
addSlice(epap, ST_90P);
addSlice(ipap, ST_MID);
addSlice(ipap, ST_90P);
} }
addSlice(CPAP_IPAPHi); addSlice(CPAP_IPAPHi);
} else if (mode == MODE_ASV) { } else if (mode == MODE_ASV) {
addSlice(CPAP_EPAP); addSlice(CPAP_EPAP);
if (!day->summaryOnly()) { if (!day->summaryOnly()) {
@ -179,5 +227,8 @@ void gPressureChart::populate(Day * day, int idx)
addSlice(CPAP_IPAP, ST_90P); addSlice(CPAP_IPAP, ST_90P);
} }
addSlice(CPAP_IPAPHi); addSlice(CPAP_IPAPHi);
} else if (mode == MODE_AVAPS) {
// TODO
} }
} }