mirror of
https://gitlab.com/pholy/OSCAR-code.git
synced 2025-04-07 03:30:44 +00:00
Records RX fixes, Best/Worst AHI sort fix, show some compliance records
This commit is contained in:
parent
7fb3f6ea67
commit
38157a668c
@ -495,18 +495,19 @@ bool RXSort(const RXChange * comp1, const RXChange * comp2) {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
struct DateData {
|
struct UsageData {
|
||||||
DateData() { value=0; }
|
UsageData() { ahi=0; hours=0; }
|
||||||
DateData(QDate d, EventDataType v) { date=d; value=v; }
|
UsageData(QDate d, EventDataType v, EventDataType h) { date=d; ahi=v; hours=h; }
|
||||||
DateData(const DateData & copy) { date=copy.date; value=copy.value; }
|
UsageData(const UsageData & copy) { date=copy.date; ahi=copy.ahi; hours=copy.hours; }
|
||||||
QDate date;
|
QDate date;
|
||||||
EventDataType value;
|
EventDataType ahi;
|
||||||
|
EventDataType hours;
|
||||||
};
|
};
|
||||||
bool operator <(const DateData & c1, const DateData & c2)
|
bool operator <(const UsageData & c1, const UsageData & c2)
|
||||||
{
|
{
|
||||||
if (c1.value < c2.value)
|
if (c1.ahi < c2.ahi)
|
||||||
return true;
|
return true;
|
||||||
if ((c1.value == c2.value) && (c1.date > c1.date)) return true;
|
if ((c1.ahi == c2.ahi) && (c1.date > c2.date)) return true;
|
||||||
return false;
|
return false;
|
||||||
//return c1.value < c2.value;
|
//return c1.value < c2.value;
|
||||||
}
|
}
|
||||||
@ -823,7 +824,7 @@ void MainWindow::on_summaryButton_clicked()
|
|||||||
html+="</table>";
|
html+="</table>";
|
||||||
html+="</div>";
|
html+="</div>";
|
||||||
|
|
||||||
QList<DateData> AHI;
|
QList<UsageData> AHI;
|
||||||
|
|
||||||
//QDate bestAHIdate, worstAHIdate;
|
//QDate bestAHIdate, worstAHIdate;
|
||||||
//EventDataType bestAHI=999.0, worstAHI=0;
|
//EventDataType bestAHI=999.0, worstAHI=0;
|
||||||
@ -838,21 +839,25 @@ void MainWindow::on_summaryButton_clicked()
|
|||||||
Day * day;
|
Day * day;
|
||||||
bool lastchanged=false;
|
bool lastchanged=false;
|
||||||
QVector<RXChange> rxchange;
|
QVector<RXChange> rxchange;
|
||||||
|
EventDataType hours;
|
||||||
|
|
||||||
|
int compliant=0;
|
||||||
do {
|
do {
|
||||||
day=PROFILE.GetGoodDay(date,MT_CPAP);
|
day=PROFILE.GetGoodDay(date,MT_CPAP);
|
||||||
|
|
||||||
if (day) {
|
if (day) {
|
||||||
lastchanged=false;
|
lastchanged=false;
|
||||||
|
|
||||||
EventDataType hours=day->hours();
|
hours=day->hours();
|
||||||
|
|
||||||
|
if (hours > PROFILE.cpap->complianceHours())
|
||||||
|
compliant++;
|
||||||
|
|
||||||
|
EventDataType ahi=day->count(CPAP_Obstructive)+day->count(CPAP_Hypopnea)+day->count(CPAP_Apnea)+day->count(CPAP_ClearAirway);
|
||||||
|
if (PROFILE.general->calculateRDI()) ahi+=day->count(CPAP_RERA);
|
||||||
|
ahi/=hours;
|
||||||
|
AHI.push_back(UsageData(date,ahi,hours));
|
||||||
|
|
||||||
//if (hours>PROFILE.cpap->complianceHours()) {
|
|
||||||
EventDataType ahi=day->count(CPAP_Obstructive)+day->count(CPAP_Hypopnea)+day->count(CPAP_Apnea)+day->count(CPAP_ClearAirway);
|
|
||||||
if (PROFILE.general->calculateRDI()) ahi+=day->count(CPAP_RERA);
|
|
||||||
ahi/=day->hours();
|
|
||||||
AHI.push_back(DateData(date,ahi));
|
|
||||||
//}
|
|
||||||
prelief=(PRTypes)round(day->settings_wavg(CPAP_PresReliefType));
|
prelief=(PRTypes)round(day->settings_wavg(CPAP_PresReliefType));
|
||||||
prelset=round(day->settings_wavg(CPAP_PresReliefSet));
|
prelset=round(day->settings_wavg(CPAP_PresReliefSet));
|
||||||
mode=(CPAPMode)round(day->settings_wavg(CPAP_Mode));
|
mode=(CPAPMode)round(day->settings_wavg(CPAP_Mode));
|
||||||
@ -970,23 +975,36 @@ void MainWindow::on_summaryButton_clicked()
|
|||||||
int z=numdays/2;
|
int z=numdays/2;
|
||||||
if (z>4) z=4;
|
if (z>4) z=4;
|
||||||
|
|
||||||
recbox+=QString("<tr><td colspan=2 align=center><b>%1</b></td></tr>").arg(tr("Best %1").arg(ahitxt));
|
recbox+=QString("<tr><td colspan=2 align=center><b>%1</b></td></tr>").arg(tr("Usage Information"));
|
||||||
|
recbox+=QString("<tr><td>%1</td><td align=right>%2</td></tr>").arg(tr("Total Days")).arg(numdays);
|
||||||
|
if (PROFILE.cpap->showComplianceInfo()) {
|
||||||
|
recbox+=QString("<tr><td>%1</td><td align=right>%2</td></tr>").arg(tr("Compliant Days")).arg(compliant);
|
||||||
|
}
|
||||||
|
int highahi=0;
|
||||||
|
for (int i=0;i<numdays;i++) {
|
||||||
|
if (AHI.at(i).ahi > 5.0)
|
||||||
|
highahi++;
|
||||||
|
}
|
||||||
|
recbox+=QString("<tr><td>%1</td><td align=right>%2</td></tr>").arg(tr("Days AHI >5.0")).arg(highahi);
|
||||||
|
|
||||||
|
|
||||||
|
recbox+=QString("<tr><td colspan=2> </td></tr>");
|
||||||
|
recbox+=QString("<tr><td colspan=2 align=center><b>%1</b></td></tr>").arg(tr("Best %1").arg(ahitxt));
|
||||||
for (int i=0;i<z;i++) {
|
for (int i=0;i<z;i++) {
|
||||||
const DateData & a=AHI.at(i);
|
const UsageData & a=AHI.at(i);
|
||||||
recbox+=QString("<tr><td><a href='daily=%1'>%2</a></td><td align=right>%3</td></tr>")
|
recbox+=QString("<tr><td><a href='daily=%1'>%2</a></td><td align=right>%3</td></tr>")
|
||||||
.arg(a.date.toString(Qt::ISODate))
|
.arg(a.date.toString(Qt::ISODate))
|
||||||
.arg(a.date.toString(Qt::SystemLocaleShortDate))
|
.arg(a.date.toString(Qt::SystemLocaleShortDate))
|
||||||
.arg(a.value,0,'f',decimals);
|
.arg(a.ahi,0,'f',decimals);
|
||||||
}
|
}
|
||||||
recbox+=QString("<tr><td colspan=2> </td></tr>");
|
recbox+=QString("<tr><td colspan=2> </td></tr>");
|
||||||
recbox+=QString("<tr><td colspan=2 align=center><b>%1</b></td></tr>").arg(tr("Worst %1").arg(ahitxt));
|
recbox+=QString("<tr><td colspan=2 align=center><b>%1</b></td></tr>").arg(tr("Worst %1").arg(ahitxt));
|
||||||
for (int i=0;i<z;i++) {
|
for (int i=0;i<z;i++) {
|
||||||
const DateData & a=AHI.at((numdays-1)-i);
|
const UsageData & a=AHI.at((numdays-1)-i);
|
||||||
recbox+=QString("<tr><td><a href='daily=%1'>%2</a></td><td align=right>%3</td></tr>")
|
recbox+=QString("<tr><td><a href='daily=%1'>%2</a></td><td align=right>%3</td></tr>")
|
||||||
.arg(a.date.toString(Qt::ISODate))
|
.arg(a.date.toString(Qt::ISODate))
|
||||||
.arg(a.date.toString(Qt::SystemLocaleShortDate))
|
.arg(a.date.toString(Qt::SystemLocaleShortDate))
|
||||||
.arg(a.value,0,'f',decimals);
|
.arg(a.ahi,0,'f',decimals);
|
||||||
}
|
}
|
||||||
recbox+=QString("<tr><td colspan=2> </td></tr>");
|
recbox+=QString("<tr><td colspan=2> </td></tr>");
|
||||||
}
|
}
|
||||||
@ -999,7 +1017,7 @@ void MainWindow::on_summaryButton_clicked()
|
|||||||
tmpRX[0]->highlight=4; // worst
|
tmpRX[0]->highlight=4; // worst
|
||||||
int ls=tmpRX.size()-1;
|
int ls=tmpRX.size()-1;
|
||||||
tmpRX[ls]->highlight=1; //best
|
tmpRX[ls]->highlight=1; //best
|
||||||
CPAPMode mode=(CPAPMode)(int)PROFILE.calcSettingsMax(CPAP_Mode,MT_CPAP,tmpRX[ls]->first,tmpRX[ls]->first);
|
CPAPMode mode=(CPAPMode)(int)PROFILE.calcSettingsMax(CPAP_Mode,MT_CPAP,tmpRX[ls]->first,tmpRX[ls]->last);
|
||||||
|
|
||||||
if (mode<MODE_APAP) { // is CPAP?
|
if (mode<MODE_APAP) { // is CPAP?
|
||||||
minstr="Pressure";
|
minstr="Pressure";
|
||||||
@ -1037,7 +1055,7 @@ void MainWindow::on_summaryButton_clicked()
|
|||||||
|
|
||||||
recbox+=QString("<tr><td colspan=2> </td></tr>");
|
recbox+=QString("<tr><td colspan=2> </td></tr>");
|
||||||
|
|
||||||
mode=(CPAPMode)(int)PROFILE.calcSettingsMax(CPAP_Mode,MT_CPAP,tmpRX[0]->first,tmpRX[0]->first);
|
mode=(CPAPMode)(int)PROFILE.calcSettingsMax(CPAP_Mode,MT_CPAP,tmpRX[0]->first,tmpRX[0]->last);
|
||||||
if (mode<MODE_APAP) { // is CPAP?
|
if (mode<MODE_APAP) { // is CPAP?
|
||||||
minstr="Pressure";
|
minstr="Pressure";
|
||||||
maxstr="";
|
maxstr="";
|
||||||
@ -1071,8 +1089,6 @@ void MainWindow::on_summaryButton_clicked()
|
|||||||
if (!maxhistr.isEmpty()) recbox+=QString("<tr><td>%1</td><td align=right>%2%3</td></tr>").arg(maxhistr).arg(tmpRX[0]->maxhi,0,'f',1).arg(STR_UNIT_CMH2O);
|
if (!maxhistr.isEmpty()) recbox+=QString("<tr><td>%1</td><td align=right>%2%3</td></tr>").arg(maxhistr).arg(tmpRX[0]->maxhi,0,'f',1).arg(STR_UNIT_CMH2O);
|
||||||
recbox+="</table></td></tr>";
|
recbox+="</table></td></tr>";
|
||||||
|
|
||||||
//recbox+=QString("<tr><td colspan=2>%1: %2</td></tr>").arg(tr("Start")).arg(tmpRX[0]->first.toString(Qt::SystemLocaleShortDate));
|
|
||||||
//recbox+=QString("<tr><td colspan=2>%1: %2</td></tr>").arg(tr("End")).arg(tmpRX[0]->last.toString(Qt::SystemLocaleShortDate));
|
|
||||||
}
|
}
|
||||||
recbox+="</table>";
|
recbox+="</table>";
|
||||||
recbox+="</body></html>";
|
recbox+="</body></html>";
|
||||||
|
Loading…
Reference in New Issue
Block a user