Index: sources/view/td/data/VTreatmentRanges.cpp =================================================================== diff -u --- sources/view/td/data/VTreatmentRanges.cpp (revision 0) +++ sources/view/td/data/VTreatmentRanges.cpp (revision 2412bc874fd22ad193af84aacec73e830fae938f) @@ -0,0 +1,330 @@ +/*! + * + * 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 ); + vitalsInterval ( vData.mVitalsIntervalDef ); + 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(); + + vitalsInterval(_bloodPressureMeasureInterval.indexOf(_vitalsDef)); + + 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 ); + + 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 2412bc874fd22ad193af84aacec73e830fae938f) @@ -0,0 +1,126 @@ +/*! + * + * 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 + + const QString _vitalsDef = "30"; // LEAHI_PRS_215 + + // 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 ,{}) + VALUESET( quint32 , vitalsInterval , 0) + + 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) + + 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 ); +}; +}