Index: leahi.pro =================================================================== diff -u -rad57884fca3e8a0916b6d6bf51a69264b9b5263f -r6e41d2d9f431580bb350db71cc52dd40e60e1a28 --- leahi.pro (.../leahi.pro) (revision ad57884fca3e8a0916b6d6bf51a69264b9b5263f) +++ leahi.pro (.../leahi.pro) (revision 6e41d2d9f431580bb350db71cc52dd40e60e1a28) @@ -254,6 +254,7 @@ sources/view/td/data/VTDTemperatureData.h \ sources/view/td/data/VTDValvesData.h \ sources/view/td/data/VTDVoltageData.h \ + sources/view/td/data/VTreatmentRanges.h \ \ # ---------- Views - TD - Data - In-Treatment sources/view/td/data/treatment/VTDTreatmentStatesData.h \ sources/view/td/data/treatment/VTreatmentBloodFlow.h \ @@ -726,6 +727,7 @@ sources/view/td/data/VTDTemperatureData.cpp \ sources/view/td/data/VTDValvesData.cpp \ sources/view/td/data/VTDVoltageData.cpp \ + sources/view/td/data/VTreatmentRanges.cpp \ \ # ---------- Views - TD - Data - In-Treatment sources/view/td/data/treatment/VTDTreatmentStatesData.cpp \ sources/view/td/data/treatment/VTreatmentBloodFlow.cpp \ @@ -813,7 +815,6 @@ sources/view/hd/data/pretreatment/VPreTreatmentSelfTestDryData.cpp \ sources/view/hd/data/pretreatment/VPreTreatmentDisposablesPrimeData.cpp \ \ # ---------- Views - HD - Data - In-Treatment - sources/view/hd/data/VTreatmentRanges.cpp \ sources/view/hd/data/treatment/VTreatmentDialysateFlow.cpp \ sources/view/hd/data/treatment/VTreatmentHeparinData.cpp \ \ # ---------- Views - HD - Data - End-Treatment Index: leahi.qrc =================================================================== diff -u -rad57884fca3e8a0916b6d6bf51a69264b9b5263f -r6e41d2d9f431580bb350db71cc52dd40e60e1a28 --- leahi.qrc (.../leahi.qrc) (revision ad57884fca3e8a0916b6d6bf51a69264b9b5263f) +++ leahi.qrc (.../leahi.qrc) (revision 6e41d2d9f431580bb350db71cc52dd40e60e1a28) @@ -26,7 +26,7 @@ sources/gui/qml/pages/settings/SettingsDecommission.qml sources/gui/qml/pages/settings/SettingsInstitutionalRecord.qml sources/gui/qml/pages/settings/SettingsLocalization.qml - sources/gui/qml/pages/settings/SettingsUserMode.qml + sources/gui/qml/pages/settings/SettingsAdvancedMode.qml sources/gui/qml/pages/settings/SettingsFeatureConfigurations.qml sources/gui/qml/pages/settings/SettingsAdvancedInstitutional.qml @@ -108,6 +108,7 @@ resources/images/Vitals_Red.png resources/images/check_green.png resources/images/eye_closed.png + resources/images/stepCheck.png resources/images/complete_check.png @@ -248,13 +249,11 @@ sources/gui/qml/pages/pretreatment/PreTreatmentStack.qml sources/gui/qml/pages/pretreatment/PreTreatmentWaterSampleStack.qml sources/gui/qml/pages/pretreatment/PreTreatmentConsumablesStack.qml - sources/gui/qml/pages/pretreatment/PreTreatmentDisposablesStack.qml sources/gui/qml/pages/pretreatment/PreTreatmentPrimeStack.qml sources/gui/qml/pages/pretreatment/create/PreTreatmentCreate.qml sources/gui/qml/pages/pretreatment/create/PreTreatmentCreateContent.qml - sources/gui/qml/pages/pretreatment/create/PreTreatmentCreateStack.qml sources/gui/qml/pages/pretreatment/connection/PreTreatmentUltrafiltration.qml Index: sources/gui/GuiGlobals.h =================================================================== diff -u -rbd8d4a0e4e5a34b3187f4b472f1eb385d2a24046 -r6e41d2d9f431580bb350db71cc52dd40e60e1a28 --- sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision bd8d4a0e4e5a34b3187f4b472f1eb385d2a24046) +++ sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 6e41d2d9f431580bb350db71cc52dd40e60e1a28) @@ -83,10 +83,10 @@ // POST ID_HDPostSingleResultData = 0x8E0F, // 142 //// ----- @CRAPIZED: had to change to avoid duplication - ID_HDPostFinalResultData = 0x8F00, // 143 + ID_HDPostFinalResultData = 0x8F0F, // 143 //// ----- @CRAPIZED ID_DGPostSingleResultData = 0x900F, // 144 //// ----- @CRAPIZED: had to change to avoid duplication ID_DGPostFinalResultData = 0x910F, // 145 //// ----- @CRAPIZED: had to change to avoid duplication - ID_UIPostFinalResultData = 0x920F, // 146 // ID_UIFinalResultTxr - UI Final Result response/Data transmit + ID_UIPostFinalResultData = 0x920F, // 146 //// ----- @CRAPIZED: had to change to avoid duplication ID_UIPostFinalResultHDReq = 0xB200, // 178 // ID_HDFinalResultRxq - HD Final Result request received // ----- Settings @@ -138,7 +138,7 @@ ID_Ultrafiltration = 0x3E00, // 62 //// ----- @LEAHIZED ID_Heparin = 0x8C00, // 140 ID_IsolatedUF = 0x9A00, // 154 - ID_Rinseback = 0x5600, // 86 + ID_Rinseback = 0x8F00, // 143 //// ----- @LEAHIZED ID_Recirculate = 0x5A00, // 90 ID_BloodPrime = 0x5900, // 89 ID_TreatmentStop = 0x4900, // 73 @@ -173,8 +173,8 @@ // Pre-Treatment SelfTest NoCartridge Progress Data ID_SelfTestNoCartridgeData = 0x6100, // 97 // there is no specific response message for this request and changing of the state in Pre_Treatment_States is used as the response // Pre-Treatment Disposables Installation Confirm - ID_AdjustDisposablesConfirmReq = 0x6200, // 98 // there is no specific response message for this request and changing of the state in Pre_Treatment_States is used as the response - ID_AdjustDisposablesConfirmRsp = 0xAD00, // 173 // there is no specific response message for this request and changing of the state in Pre_Treatment_States is used as the response + ID_AdjustDisposablesConfirmReq = 0x9200, // 146 // there is no specific response message for this request and changing of the state in Pre_Treatment_States is used as the response + ID_AdjustDisposablesConfirmRsp = 0x9300, // 147 // there is no specific response message for this request and changing of the state in Pre_Treatment_States is used as the response // Pre-Treatment SelfTest Dry Progress Data ID_SelfTestDryData = 0x630F, // 99 //// ----- @CRAPIZED: had to change to avoid duplication // Pre-Treatment Disposable Priming @@ -294,8 +294,8 @@ // End-Treatment // Rinseback - ID_AdjustRinsebackReq = 0x520F, // 82 //// ----- @CRAPIZED: had to change to avoid duplication - ID_AdjustRinsebackRsp = 0x530F, // 83 //// ----- @CRAPIZED: had to change to avoid duplication + ID_AdjustRinsebackReq = 0x9000, // 144 //// ----- @LEAHIZED + ID_AdjustRinsebackRsp = 0x9100, // 145 //// ----- @LEAHIZED // Recirculate ID_AdjustRecirculateReq = 0x540F, // 84 //// ----- @CRAPIZED: had to change to avoid duplication @@ -312,8 +312,8 @@ ID_AdjustPatientDisconnectConfirmRsp = 0x7E0F, // 126 //// ----- @CRAPIZED: had to change to avoid duplication // Disposables Removal - ID_AdjustDisposablesRemovalConfirmReq = 0x730F, // 115 //// ----- @CRAPIZED: had to change to avoid duplication - ID_AdjustDisposablesRemovalConfirmRsp = 0x740F, // 116 //// ----- @CRAPIZED: had to change to avoid duplication + ID_AdjustDisposablesRemovalConfirmReq = 0x9400, // 148 + ID_AdjustDisposablesRemovalConfirmRsp = 0x9500, // 149 // Treatment Log Adjs ID_AdjustTreatmentLogReq = 0x750F, // 117 //// ----- @CRAPIZED: had to change to avoid duplication Index: sources/gui/qml/globals/Fonts.qml =================================================================== diff -u -r41ba9331e6a540df0c8eced0c4d3b8684afa9afa -r6e41d2d9f431580bb350db71cc52dd40e60e1a28 --- sources/gui/qml/globals/Fonts.qml (.../Fonts.qml) (revision 41ba9331e6a540df0c8eced0c4d3b8684afa9afa) +++ sources/gui/qml/globals/Fonts.qml (.../Fonts.qml) (revision 6e41d2d9f431580bb350db71cc52dd40e60e1a28) @@ -82,8 +82,8 @@ readonly property int fontPixelUltrafiltrationAdjustmentMetrics : 30 readonly property int fontPixelUltrafiltrationAdjustmentNotification : 32 readonly property int fontPixelUltrafiltrationAdjustmentConfirmation : 50 - readonly property int fontPixelUltrafiltrationRangeMarker : 32 - readonly property int fontPixelUltrafiltrationMinMaxLabel : 24 + readonly property int fontPixelUltrafiltrationRangeMarker : 24 + readonly property int fontPixelUltrafiltrationMinMaxLabel : 18 readonly property int fontPixelUltrafiltrationRateUnit : 16 readonly property int fontPixelRinsebackAdjustmentButton : 26 Index: sources/gui/qml/globals/Variables.qml =================================================================== diff -u -rad57884fca3e8a0916b6d6bf51a69264b9b5263f -r6e41d2d9f431580bb350db71cc52dd40e60e1a28 --- sources/gui/qml/globals/Variables.qml (.../Variables.qml) (revision ad57884fca3e8a0916b6d6bf51a69264b9b5263f) +++ sources/gui/qml/globals/Variables.qml (.../Variables.qml) (revision 6e41d2d9f431580bb350db71cc52dd40e60e1a28) @@ -42,6 +42,8 @@ readonly property int mainMenuHeight : 80 //// ----- @LEAHIZED readonly property int alarmDialogHeaderHeight : 100 + readonly property int instructionHeight : 73 + readonly property int minVGap : 15 readonly property int minVGap2 : 30 Index: sources/view/td/data/VTreatmentRanges.cpp =================================================================== diff -u --- sources/view/td/data/VTreatmentRanges.cpp (revision 0) +++ sources/view/td/data/VTreatmentRanges.cpp (revision 6e41d2d9f431580bb350db71cc52dd40e60e1a28) @@ -0,0 +1,333 @@ +/*! + * + * Copyright (c) 2020-2024 Diality Inc. - All Rights Reserved. + * \copyright + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * \file VTreatmentRanges.cpp + * \author (last) Behrouz NematiPour + * \date (last) 06-Aug-2023 + * \author (original) Behrouz NematiPour + * \date (original) 26-Aug-2020 + * + */ +#include "VInstitutionalRecord.h" +#include "VTreatmentRanges.h" +#include "VTreatmentCreate.h" + +// Project +#include "ApplicationController.h" +#include "GuiController.h" +#include "StorageGlobals.h" + +VIEW_DEF_CLASS(VTreatmentRanges) + +void VTreatmentRanges::initConnections() { + ACTION_VIEW_CONNECTION(TreatmentRangesData); + ACTION_VIEW_CONNECTION(SettingsData); + ACTION_VIEW_CONNECTION(InstitutionalRecordResponseData); + + // since we do not have access to this object because it is created in QML. + // Connection to the GuiController made here + // It should be defined in the class which wants to connect to signal. + // VTreatmentRanges -> GUIController -> ApplicationController to handle + connect(this , SIGNAL(didTreatmentRangesDone(bool)), + &_GuiController, SLOT( doTreatmentRangesDone(bool))); +} + +void View::VTreatmentRanges::onActionReceive(const TreatmentRangesData &vData) +{ + treatmentRanges_Duration_Min ( vData.mDuration_Min ); + treatmentRanges_Duration_Max ( vData.mDuration_Max ); + treatmentRanges_Ultrafiltration_Volume_Min ( vData.mUltrafiltration_Volume_Min / 1000 ); // mL => L + treatmentRanges_Ultrafiltration_Volume_Max ( vData.mUltrafiltration_Volume_Max / 1000 ); // mL => L + + quint32 mDialysateFlowRateRes = dialysateFlowRateRes(); + treatmentRanges_Dialysate_Flow_Min ( vData.mDialysate_Flow_Min - ( mDialysateFlowRateRes ? vData.mDialysate_Flow_Min % mDialysateFlowRateRes : 0 ) ); + treatmentRanges_Dialysate_Flow_Max ( vData.mDialysate_Flow_Max - ( mDialysateFlowRateRes ? vData.mDialysate_Flow_Min % mDialysateFlowRateRes : 0 ) ); +} + +void View::VTreatmentRanges::onActionReceive(const InstitutionalRecordResponseData &vData) +{ + bloodFlowRateMin ( vData.mBloodFlowMin ); + bloodFlowRateMax ( vData.mBloodFlowMax ); + bloodFlowRateDef ( vData.mBloodFlowDef ); + dialysateFlowRateMin ( vData.mDialysateFlowMin ); + dialysateFlowRateMax ( vData.mDialysateFlowMax ); + dialysateFlowRateDef ( vData.mDialysateFlowDef ); + treatmentDurationMin ( vData.mTreatmentDurationMin ); + treatmentDurationMax ( vData.mTreatmentDurationMax ); + treatmentDurationDef ( vData.mTreatmentDurationDef ); + heparinBolusVolumeMin ( vData.mHepBolusVolumeMin ); + heparinBolusVolumeMax ( vData.mHepBolusVolumeMax ); + heparinBolusVolumeDef ( vData.mHepBolusVolumeDef ); + heparinDispensingRateMin ( vData.mHepDispRateMin ); + heparinDispensingRateMax ( vData.mHepDispRateMax ); + heparinDispensingRateDef ( vData.mHepDispRateDef ); + heparinStopTimeMin ( vData.mHepStopTimeMin ); + + acidConcentratePotassiumMin ( vData.mPotassiumMin ); + acidConcentratePotassiumMax ( vData.mPotassiumMax ); + acidConcentrateCalciumMin ( vData.mCalciumMin ); + acidConcentrateCalciumMax ( vData.mCalciumMax ); + dialysateTempMin ( vData.mDialysateTempMin ); + dialysateTempMax ( vData.mDialysateTempMax ); + dialysateTempDef ( vData.mDialysateTempDef ); + salineBolusVolumeMin ( vData.mFluidBolusVolumeMin ); + salineBolusVolumeMax ( vData.mFluidBolusVolumeMax ); + salineBolusVolumeDef ( vData.mFluidBolusVolumeDef ); +} + +/** + * \brief VTreatmentRanges::doSaveAcidConcentrate + * \param vOption - QString new option to save to config file + * \details Save Acid Concentrate entered by user to config + */ +void View::VTreatmentRanges::doSaveAcidConcentrate (const QString &vOption) +{ + // check if unique + if ( _acidConcentrateOptions.contains(vOption) ) { acidConcentrateAccepted(false); return; } + + if ( ! _acidConcentrate.isEmpty() ) { _acidConcentrateOptions.removeOne(_acidConcentrate); } + + _acidConcentrateOptions.append(vOption); + acidConcentrate(vOption); + + // update + emit acidConcentrateOptionsChanged(_acidConcentrateOptions); + acidConcentrateAccepted(true); +} + +/** + * \brief VTreatmentRanges::doClearAcidConcentrate + * \param vSet - Bool to only clear options list if combobox is active + * \details Clear any custum Acid Concentrate entered by user + */ +void View::VTreatmentRanges::doClearAcidConcentrate (const bool vSet) +{ + if ( ! vSet ) { return; } + + if ( ! _acidConcentrate.isEmpty() ) { _acidConcentrateOptions.removeOne(_acidConcentrate); } + acidConcentrate(""); + + // update + emit acidConcentrateOptionsChanged(_acidConcentrateOptions); +} + +/** + * \brief VTreatmentRanges::doPopulateAcidConcentrate + * \details Check Acid Concentrate selection when popup is displayed and update notifcation + */ +void View::VTreatmentRanges::doPopulateAcidConcentrate (const int &vSet, const int &vIndex) +{ + enum AcidConcentrates { + ePotassium , + eCalcium , + eMagnesium , + }; + + if ( ! vSet ) { return; } + + QString mAcidConcentrate =_acidConcentrateOptions[vIndex]; + QStringList values = mAcidConcentrate.split(QRegExp("[^0-9.]"), Qt::SkipEmptyParts); + potassium (values.value(AcidConcentrates::ePotassium) .toFloat()); + calcium (values.value(AcidConcentrates::eCalcium) .toFloat()); + didPopulateAcidConcentrate(); +} + +/*! + * \brief VTreatmentCreate::onSettingsDone + * \details fills the items below, read from the settings file, when the reading is notified done by ApplicationController. + * acidConcentrateOptions + * bicarbonateConcentrateOptions + * dialyzerTypeOptions + * heparinTypeOptions + * + */ +void View::VTreatmentRanges::onActionReceive(const SettingsData &) +{ + QString mCategory = Storage::Settings_Category_DataList; + + bool isConfigsOk = true; // assume configurations are valid + + FROMVARIANT_WITHRETURN ( bloodFlowRateDef , "Blood Flow Rate Ranges" , "Blood_Flow_Rate_Def" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( bloodFlowRateMin , "Blood Flow Rate Ranges" , "Blood_Flow_Rate_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( bloodFlowRateMax , "Blood Flow Rate Ranges" , "Blood_Flow_Rate_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( bloodFlowRateRes , "Blood Flow Rate Ranges" , "Blood_Flow_Rate_Res" , UInt , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( dialysateFlowRateDef , "Dialysate Flow Rate Ranges" , "Dialysate_Flow_Rate_Def" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateFlowRateMin , "Dialysate Flow Rate Ranges" , "Dialysate_Flow_Rate_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateFlowRateMax , "Dialysate Flow Rate Ranges" , "Dialysate_Flow_Rate_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateFlowRateRes , "Dialysate Flow Rate Ranges" , "Dialysate_Flow_Rate_Res" , UInt , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( treatmentDurationDef , "Treatment Duration Ranges" , "Treatment_Duration_Def" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( treatmentDurationMin , "Treatment Duration Ranges" , "Treatment_Duration_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( treatmentDurationMax , "Treatment Duration Ranges" , "Treatment_Duration_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( treatmentDurationRes , "Treatment Duration Ranges" , "Treatment_Duration_Res" , UInt , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( heparinDispensingRateDef , "Heparin Dispensing Rate Ranges" , "Heparin_Dispensing_Rate_Def" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinDispensingRateMin , "Heparin Dispensing Rate Ranges" , "Heparin_Dispensing_Rate_Min" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinDispensingRateMax , "Heparin Dispensing Rate Ranges" , "Heparin_Dispensing_Rate_Max" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinDispensingRateRes , "Heparin Dispensing Rate Ranges" , "Heparin_Dispensing_Rate_Res" , Float , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( heparinBolusVolumeDef , "Heparin Bolus Volume Ranges" , "Heparin_Bolus_Volume_Def" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinBolusVolumeMin , "Heparin Bolus Volume Ranges" , "Heparin_Bolus_Volume_Min" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinBolusVolumeMax , "Heparin Bolus Volume Ranges" , "Heparin_Bolus_Volume_Max" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinBolusVolumeRes , "Heparin Bolus Volume Ranges" , "Heparin_Bolus_Volume_Res" , Float , isConfigsOk ); + + // heparinStopTime: Def, Max, Res intentionally omitted (see config/configurations/Parameters/DataList.conf) + FROMVARIANT_WITHRETURN ( heparinStopTimeMin , "Heparin Stop Time Ranges" , "Heparin_Stop_Time_Min" , UInt , isConfigsOk ); +// These were removed to ensure the check on the Heparin stop time matches the Treatment Duration. +// FROMVARIANT_WITHRETURN ( heparinStopTimeMax , "Heparin Stop Time Ranges" , "Heparin_Stop_Time_Max" , UInt , isConfigsOk ); +// FROMVARIANT_WITHRETURN ( heparinStopTimeRes , "Heparin Stop Time Ranges" , "Heparin_Stop_Time_Res" , UInt , isConfigsOk ); +// FROMVARIANT_WITHRETURN ( heparinStopTimeDef , "Heparin Stop Time Ranges" , "Heparin_Stop_Time_Def" , UInt , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( acidConcentratePotassiumDef , "Acid Concentrate Ranges" , "Acid_Concentrate_Potassium_Def" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( acidConcentratePotassiumMin , "Acid Concentrate Ranges" , "Acid_Concentrate_Potassium_Min" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( acidConcentratePotassiumMax , "Acid Concentrate Ranges" , "Acid_Concentrate_Potassium_Max" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( acidConcentratePotassiumRes , "Acid Concentrate Ranges" , "Acid_Concentrate_Potassium_Res" , Float , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( acidConcentrateCalciumDef , "Acid Concentrate Ranges" , "Acid_Concentrate_Calcium_Def" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( acidConcentrateCalciumMin , "Acid Concentrate Ranges" , "Acid_Concentrate_Calcium_Min" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( acidConcentrateCalciumMax , "Acid Concentrate Ranges" , "Acid_Concentrate_Calcium_Max" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( acidConcentrateCalciumRes , "Acid Concentrate Ranges" , "Acid_Concentrate_Calcium_Res" , Float , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( dialysateBicarbonateDef , "Dialysate Composition Ranges" , "Dialysate_Composition_Bicarbonate_Def", UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateBicarbonateMin , "Dialysate Composition Ranges" , "Dialysate_Composition_Bicarbonate_Min", UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateBicarbonateMax , "Dialysate Composition Ranges" , "Dialysate_Composition_Bicarbonate_Max", UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateBicarbonateRes , "Dialysate Composition Ranges" , "Dialysate_Composition_Bicarbonate_Res", UInt , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( dialysateSodiumDef , "Dialysate Composition Ranges" , "Dialysate_Composition_Sodium_Def" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateSodiumMin , "Dialysate Composition Ranges" , "Dialysate_Composition_Sodium_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateSodiumMax , "Dialysate Composition Ranges" , "Dialysate_Composition_Sodium_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateSodiumRes , "Dialysate Composition Ranges" , "Dialysate_Composition_Sodium_Res" , UInt , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( salineBolusVolumeDef , "Saline Bolus Volume Ranges" , "Saline_Bolus_Volume_Def" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( salineBolusVolumeMin , "Saline Bolus Volume Ranges" , "Saline_Bolus_Volume_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( salineBolusVolumeMax , "Saline Bolus Volume Ranges" , "Saline_Bolus_Volume_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( salineBolusVolumeRes , "Saline Bolus Volume Ranges" , "Saline_Bolus_Volume_Res" , UInt , isConfigsOk ); + + heparinTypeOptions ( _Settings.keys(mCategory , "Heparin Type Options" )); + acidConcentrateOptions ( _Settings.keys(mCategory , "Acid Concentrate Options" )); + bicarbonateConcentrateOptions ( _Settings.keys(mCategory , "Bicarbonate Concentrate Options" )); + dialyzerTypeOptions ( _Settings.keys(mCategory , "Dialyzer Type Options" )); + bloodPressureMeasureInterval ( _Settings.keys(mCategory , "Vitals Measurement Interval Options" )); + treatmentModalityOptions ( _Settings.keys(mCategory , "Treatment Modality" )); + hdfTreatmentModeOptions ( _Settings.keys(mCategory , "HDF Treatment Mode" )); + dryBicabCartridgeSizeOptions ( _Settings.keys(mCategory , "Dry Bicarb Cartridge Size" )); + waterSampleTestResultRequired ( _Settings.keys(mCategory , "Water Sample Test Result Required" )); + + isConfigsOk = isConfigsOk && !_heparinTypeOptions .isEmpty(); + if ( _heparinTypeOptions.isEmpty() ) { heparinTypeOptions({"-- --"}); } + isConfigsOk = isConfigsOk && !_acidConcentrateOptions .isEmpty(); + isConfigsOk = isConfigsOk && !_bicarbonateConcentrateOptions.isEmpty(); + isConfigsOk = isConfigsOk && !_dialyzerTypeOptions .isEmpty(); + isConfigsOk = isConfigsOk && !_bloodPressureMeasureInterval .isEmpty(); + isConfigsOk = isConfigsOk && !_treatmentModalityOptions .isEmpty(); + isConfigsOk = isConfigsOk && !_hdfTreatmentModeOptions .isEmpty(); + isConfigsOk = isConfigsOk && !_dryBicabCartridgeSizeOptions .isEmpty(); + isConfigsOk = isConfigsOk && !_waterSampleTestResultRequired.isEmpty(); + + FROMVARIANT_WITHRETURN ( dialysateTempDef , "Dialysate Temperature" , "Dialysate_Temperature_Def" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateTempMin , "Dialysate Temperature" , "Dialysate_Temperature_Min" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateTempMax , "Dialysate Temperature" , "Dialysate_Temperature_Max" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateTempRes , "Dialysate Temperature" , "Dialysate_Temperature_Res" , Float , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( transmembranePressureLimitWindowDef , "Transmembrane Pressure Ranges" , "Transmembrane_Adjust_Window_Def" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( transmembranePressureLimitWindowMin , "Transmembrane Pressure Ranges" , "Transmembrane_Adjust_Window_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( transmembranePressureLimitWindowMax , "Transmembrane Pressure Ranges" , "Transmembrane_Adjust_Window_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( transmembranePressureLimitWindowRes , "Transmembrane Pressure Ranges" , "Transmembrane_Adjust_Window_Res" , Int , isConfigsOk ); + + // transmembranePressureMonitor: Def intentionally omitted (see config/configurations/Parameters/DataList.conf) + FROMVARIANT_WITHRETURN ( transmembranePressureMonitorMin , "Transmembrane Pressure Ranges" , "Transmembrane_Monitor_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( transmembranePressureMonitorMax , "Transmembrane Pressure Ranges" , "Transmembrane_Monitor_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( transmembranePressureMonitorRes , "Transmembrane Pressure Ranges" , "Transmembrane_Monitor_Res" , Int , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( arterialPressureLimitWindowDef , "Arterial Blood Pressure Ranges" , "Arterial_Adjust_Window_Def" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( arterialPressureLimitWindowMin , "Arterial Blood Pressure Ranges" , "Arterial_Adjust_Window_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( arterialPressureLimitWindowMax , "Arterial Blood Pressure Ranges" , "Arterial_Adjust_Window_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( arterialPressureLimitWindowRes , "Arterial Blood Pressure Ranges" , "Arterial_Adjust_Window_Res" , Int , isConfigsOk ); + + // arterialPressureMonitor: Def intentionally omitted (see config/configurations/Parameters/DataList.conf) + FROMVARIANT_WITHRETURN ( arterialPressureMonitorMin , "Arterial Blood Pressure Ranges" , "Arterial_Monitor_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( arterialPressureMonitorMax , "Arterial Blood Pressure Ranges" , "Arterial_Monitor_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( arterialPressureMonitorRes , "Arterial Blood Pressure Ranges" , "Arterial_Monitor_Res" , Int , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( venousPressureLimitWindowDef , "Venous Blood Pressure Ranges" , "Venous_Adjust_Window_Def" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureLimitWindowMin , "Venous Blood Pressure Ranges" , "Venous_Adjust_Window_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureLimitWindowMax , "Venous Blood Pressure Ranges" , "Venous_Adjust_Window_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureLimitWindowRes , "Venous Blood Pressure Ranges" , "Venous_Adjust_Window_Res" , Int , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( venousPressureLimitAsymtrcDef , "Venous Blood Pressure Ranges" , "Venous_Adjust_Asymmetric_Def" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureLimitAsymtrcMin , "Venous Blood Pressure Ranges" , "Venous_Adjust_Asymmetric_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureLimitAsymtrcMax , "Venous Blood Pressure Ranges" , "Venous_Adjust_Asymmetric_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureLimitAsymtrcRes , "Venous Blood Pressure Ranges" , "Venous_Adjust_Asymmetric_Res" , Int , isConfigsOk ); + + // venousPressureMonitor: Def intentionally omitted (see config/configurations/Parameters/DataList.conf) + FROMVARIANT_WITHRETURN ( venousPressureMonitorMin , "Venous Blood Pressure Ranges" , "Venous_Monitor_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureMonitorMax , "Venous Blood Pressure Ranges" , "Venous_Monitor_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureMonitorRes , "Venous Blood Pressure Ranges" , "Venous_Monitor_Res" , Int , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( rinsebackFlowRateDef , "Rinseback Flow Rate Ranges" , "Rinseback_Flow_Rate_Def" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( rinsebackFlowRateMin , "Rinseback Flow Rate Ranges" , "Rinseback_Flow_Rate_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( rinsebackFlowRateMax , "Rinseback Flow Rate Ranges" , "Rinseback_Flow_Rate_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( rinsebackFlowRateRes , "Rinseback Flow Rate Ranges" , "Rinseback_Flow_Rate_Res" , UInt , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( rinsebackVolumeDef , "Rinseback Volume Ranges" , "Rinseback_Volume_Def" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( rinsebackVolumeMin , "Rinseback Volume Ranges" , "Rinseback_Volume_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( rinsebackVolumeMax , "Rinseback Volume Ranges" , "Rinseback_Volume_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( rinsebackVolumeRes , "Rinseback Volume Ranges" , "Rinseback_Volume_Res" , UInt , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( ultrafiltrationVolumeDef , "Ultrafiltration Volume Ranges" , "Ultrafiltration_Volume_Def" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( ultrafiltrationVolumeMin , "Ultrafiltration Volume Ranges" , "Ultrafiltration_Volume_Min" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( ultrafiltrationVolumeMax , "Ultrafiltration Volume Ranges" , "Ultrafiltration_Volume_Max" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( ultrafiltrationVolumeRes , "Ultrafiltration Volume Ranges" , "Ultrafiltration_Volume_Res" , Float , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( substitutionVolumeDef , "Substitution Volume Ranges" , "Substitution_Volume_Def" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( substitutionVolumeMin , "Substitution Volume Ranges" , "Substitution_Volume_Min" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( substitutionVolumeMax , "Substitution Volume Ranges" , "Substitution_Volume_Max" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( substitutionVolumeRes , "Substitution Volume Ranges" , "Substitution_Volume_Res" , Float , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( minRORejectionRatioAlarmDef , "Minimum RO Rejection Ratio Alarm" , "Min_RO_Rejection_Ratio_Alarm_Def" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( minRORejectionRatioAlarmMin , "Minimum RO Rejection Ratio Alarm" , "Min_RO_Rejection_Ratio_Alarm_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( minRORejectionRatioAlarmMax , "Minimum RO Rejection Ratio Alarm" , "Min_RO_Rejection_Ratio_Alarm_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( minRORejectionRatioAlarmRes , "Minimum RO Rejection Ratio Alarm" , "Min_RO_Rejection_Ratio_Alarm_Res" , Int , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( disinfectionFrequencyDef , "Disinfection Frequency" , "Disinfection_Frequency_Def" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( disinfectionFrequencyMin , "Disinfection Frequency" , "Disinfection_Frequency_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( disinfectionFrequencyMax , "Disinfection Frequency" , "Disinfection_Frequency_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( disinfectionFrequencyRes , "Disinfection Frequency" , "Disinfection_Frequency_Res" , Int , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( disinfectionParametersCycleTimeDef, "Disinfection Parameters Cycle Time" , "Disinfection_Parameters_Cycle_Time_Def", Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( disinfectionParametersCycleTimeMin, "Disinfection Parameters Cycle Time" , "Disinfection_Parameters_Cycle_Time_Min", Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( disinfectionParametersCycleTimeMax, "Disinfection Parameters Cycle Time" , "Disinfection_Parameters_Cycle_Time_Max", Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( disinfectionParametersCycleTimeRes, "Disinfection Parameters Cycle Time" , "Disinfection_Parameters_Cycle_Time_Res", Int , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( maxBloodPumpStopTimeDef , "Maximum Blood Pump Stop Time" , "Max_Blood_Pump_Stop_Time_Def" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( maxBloodPumpStopTimeMin , "Maximum Blood Pump Stop Time" , "Max_Blood_Pump_Stop_Time_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( maxBloodPumpStopTimeMax , "Maximum Blood Pump Stop Time" , "Max_Blood_Pump_Stop_Time_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( maxBloodPumpStopTimeRes , "Maximum Blood Pump Stop Time" , "Max_Blood_Pump_Stop_Time_Res" , Int , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( inletWaterCondLowThresholdDef , "Inlet Water Cond. Low Threshold" , "Inlet_Water_Cond_Low_Threshold_Def" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( inletWaterCondLowThresholdMin , "Inlet Water Cond. Low Threshold" , "Inlet_Water_Cond_Low_Threshold_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( inletWaterCondLowThresholdMax , "Inlet Water Cond. Low Threshold" , "Inlet_Water_Cond_Low_Threshold_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( inletWaterCondLowThresholdRes , "Inlet Water Cond. Low Threshold" , "Inlet_Water_Cond_Low_Threshold_Res" , Int , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( inletWaterCondHighThresholdDef , "Inlet Water Cond. High Threshold" , "Inlet_Water_Cond_High_Threshold_Def" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( inletWaterCondHighThresholdMin , "Inlet Water Cond. High Threshold" , "Inlet_Water_Cond_High_Threshold_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( inletWaterCondHighThresholdMax , "Inlet Water Cond. High Threshold" , "Inlet_Water_Cond_High_Threshold_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( inletWaterCondHighThresholdRes , "Inlet Water Cond. High Threshold" , "Inlet_Water_Cond_High_Threshold_Res" , Int , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( chlorineWaterSampleCheckDef , "Chlorine Water Sample Check" , "Chlorine_Water_Sample_Check_Def" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( chlorineWaterSampleCheckMin , "Chlorine Water Sample Check" , "Chlorine_Water_Sample_Check_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( chlorineWaterSampleCheckMax , "Chlorine Water Sample Check" , "Chlorine_Water_Sample_Check_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( chlorineWaterSampleCheckRes , "Chlorine Water Sample Check" , "Chlorine_Water_Sample_Check_Res" , Int , isConfigsOk ); + + FROMVARIANT_WITHRETURN ( isolatedUFDurationDef , "Isolated UF Duration Ranges" , "Isolated_UF_Duration_Def" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( isolatedUFDurationMin , "Isolated UF Duration Ranges" , "Isolated_UF_Duration_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( isolatedUFDurationMax , "Isolated UF Duration Ranges" , "Isolated_UF_Duration_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( isolatedUFDurationRes , "Isolated UF Duration Ranges" , "Isolated_UF_Duration_Res" , UInt , isConfigsOk ); + + emit didTreatmentRangesDone( isConfigsOk ); +} Index: sources/view/td/data/VTreatmentRanges.h =================================================================== diff -u --- sources/view/td/data/VTreatmentRanges.h (revision 0) +++ sources/view/td/data/VTreatmentRanges.h (revision 6e41d2d9f431580bb350db71cc52dd40e60e1a28) @@ -0,0 +1,125 @@ +/*! + * + * Copyright (c) 2020-2024 Diality Inc. - All Rights Reserved. + * \copyright + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * \file VTreatmentRanges.h + * \author (last) Behrouz NematiPour + * \date (last) 06-Aug-2023 + * \author (original) Behrouz NematiPour + * \date (original) 26-Aug-2020 + * + */ +#pragma once + +// Qt +#include + +// Project +#include "main.h" // Doxygen : do not remove +#include "VView.h" +#include "MTDInstitutionalRecordResponse.h" +#include "MTreatmentRangesData.h" +#include "MSettings.h" +// namespace +namespace View { + +/*! + * \brief The VTreatmentRanges class + * \details View for Model's data representation. + * + * \sa Model::MTreatmentRanges + * + */ +class VTreatmentRanges : public QObject +{ + Q_OBJECT + + // Real-time properties received from TD from TreatmentRangesData + READONLY( quint32 , treatmentRanges_Duration_Min , 0) + READONLY( quint32 , treatmentRanges_Duration_Max , 0) + READONLY( float , treatmentRanges_Ultrafiltration_Volume_Min , 0) + READONLY( float , treatmentRanges_Ultrafiltration_Volume_Max , 0) + READONLY( quint32 , treatmentRanges_Dialysate_Flow_Min , 0) + READONLY( quint32 , treatmentRanges_Dialysate_Flow_Max , 0) + + // constant properties coming from the settings + + // Create Rx Parameters + RANGESET( quint32 , bloodFlowRate , 0) + RANGESET( quint32 , dialysateFlowRate , 0) + RANGESET( quint32 , treatmentDuration , 0) + RANGESET( float , heparinBolusVolume , 0) + RANGESET( float , heparinDispensingRate , 0) + RANGESET( quint32 , heparinStopTime , 0) + + RANGESET( float , acidConcentratePotassium , 0) + RANGESET( float , acidConcentrateCalcium , 0) + VALUESET( float , potassium , 0) + VALUESET( float , calcium , 0) + READONLY( QStringList , acidConcentrateOptions ,{}) + READONLY( QStringList , bicarbonateConcentrateOptions ,{}) + READONLY( QStringList , dialyzerTypeOptions ,{}) + READONLY( QStringList , bloodPressureMeasureInterval ,{}) + RANGESET( float , dialysateTemp , 0) + RANGESET( quint32 , salineBolusVolume , 0) + + // Institutional + RANGESET( quint32 , dialysateBicarbonate , 0) + RANGESET( quint32 , dialysateSodium , 0) + + READONLY( QStringList , heparinTypeOptions ,{}) + READONLY( QStringList , treatmentModalityOptions ,{}) + READONLY( QStringList , hdfTreatmentModeOptions ,{}) + READONLY( QStringList , dryBicabCartridgeSizeOptions ,{}) + + PROPERTY( QString , acidConcentrate ,"") + TRIGGER ( bool , acidConcentrateAccepted , false) + + RANGESET( qint32 , transmembranePressureLimitWindow , 0) + RANGESET( qint32 , arterialPressureLimitWindow , 0) + RANGESET( qint32 , venousPressureLimitWindow , 0) + RANGESET( qint32 , venousPressureLimitAsymtrc , 0) + RANGESET( quint32 , rinsebackFlowRate , 0) + RANGESET( quint32 , rinsebackVolume , 0) + RANGESET( float , substitutionVolume , 0) + + // Advanced + RANGESET( quint32 , minRORejectionRatioAlarm , 0) + RANGESET( quint32 , disinfectionFrequency , 0) + RANGESET( quint32 , disinfectionParametersCycleTime , 0) + RANGESET( quint32 , maxBloodPumpStopTime , 0) + RANGESET( quint32 , inletWaterCondLowThreshold , 0) + RANGESET( quint32 , inletWaterCondHighThreshold , 0) + RANGESET( quint32 , chlorineWaterSampleCheck , 0) + READONLY( QStringList , waterSampleTestResultRequired ,{}) + + // monitoring ranges + RANGESET( qint32 , transmembranePressureMonitor , 0) + RANGESET( qint32 , arterialPressureMonitor , 0) + RANGESET( qint32 , venousPressureMonitor , 0) + + // ultrafiltration + RANGESET( float , ultrafiltrationVolume , 0) + + // isolated UF + RANGESET( quint32 , isolatedUFDuration , 0) + + VIEW_DEC_CLASS(VTreatmentRanges ) + VIEW_DEC_SLOT(TreatmentRangesData ) + VIEW_DEC_SLOT(SettingsData ) + VIEW_DEC_SLOT(InstitutionalRecordResponseData ) + +signals: + void didTreatmentRangesDone (bool vPass ); + void didPopulateAcidConcentrate ( ); + +public slots: + void doSaveAcidConcentrate (const QString &vOption ); + void doClearAcidConcentrate (const bool vSet ); + void doPopulateAcidConcentrate (const int &vSet , + const int &vIndex ); +}; +}