/*! * * Copyright (c) 2024-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 VAdvancedInstitutionalRecord.cpp * \author (last) Nico Ramirez * \date (last) 20-Nov-2025 * \author (original) Nico Ramirez * \date (original) 20-Nov-2025 * */ #include "VAdvancedInstitutionalRecord.h" // Project #include "GuiController.h" #include "format.h" VIEW_DEF_CLASS_ADJUSTMENT(VAdvancedInstitutionalRecord) void View::VAdvancedInstitutionalRecord::initConnections() { ADJUST_VIEW_CONNECTION(AdvancedInstitutionalRequestData) ACTION_VIEW_CONNECTION(AdvancedInstitutionalRecordResponseData) ACTION_VIEW_CONNECTION(SettingsData); ACTION_VIEW_CONNECTION(AdjustAdvancedInstitutionalRecordResponseData) _institutionalList.setRoleNames({ { eRole_Title , "title" }, { eRole_Units , "unit" }, { eRole_Min , "min" }, { eRole_Max , "max" }, { eRole_Step , "step" }, { eRole_Decimal , "decimal" }, { eRole_MinVal , "minVal" }, { eRole_MaxVal , "maxVal" }, { eRole_DefVal , "defVal" }, { eRole_RejectionMin , "rejectionMin" }, { eRole_RejectionMax , "rejectionMax" }, { eRole_RejectionDef , "rejectionDef" }, }); initModel(); } void View::VAdvancedInstitutionalRecord::onActionReceive(const AdvancedInstitutionalRecordResponseData &vData) { adjustment_Accepted ( vData.mAccepted ); adjustment_Reason ( vData.mReason ); _institutionalList.updateData( MinRoRejectionRatio, eRole_MinVal, vData.mMinRORejectionRatioAlarmMin ); _institutionalList.updateData( MinRoRejectionRatio, eRole_MaxVal, vData.mMinRORejectionRatioAlarmMax ); _institutionalList.updateData( MinRoRejectionRatio, eRole_DefVal, vData.mMinRORejectionRatioAlarmDef ); _institutionalList.updateData( DisinfectionFrequency, eRole_MinVal, vData.mDisinfectionFrequencyMin ); _institutionalList.updateData( DisinfectionFrequency, eRole_MaxVal, vData.mDisinfectionFrequencyMax ); _institutionalList.updateData( DisinfectionFrequency, eRole_DefVal, vData.mDisinfectionFrequencyDef ); _institutionalList.updateData( DisinfectionParametersCycleTime, eRole_MinVal, vData.mDisinfectionParametersCycleTimeMin ); _institutionalList.updateData( DisinfectionParametersCycleTime, eRole_MaxVal, vData.mDisinfectionParametersCycleTimeMax ); _institutionalList.updateData( DisinfectionParametersCycleTime, eRole_DefVal, vData.mDisinfectionParametersCycleTimeDef ); _institutionalList.updateData( MaxBloodPumpStopTime, eRole_MinVal, vData.mMaxBloodPumpStopTimeMin ); _institutionalList.updateData( MaxBloodPumpStopTime, eRole_MaxVal, vData.mMaxBloodPumpStopTimeMax ); _institutionalList.updateData( MaxBloodPumpStopTime, eRole_DefVal, vData.mMaxBloodPumpStopTimeDef ); _institutionalList.updateData( InletWaterCondLowThreshold, eRole_MinVal, vData.mInletWaterCondLowThresholdMin ); _institutionalList.updateData( InletWaterCondLowThreshold, eRole_MaxVal, vData.mInletWaterCondLowThresholdMax ); _institutionalList.updateData( InletWaterCondLowThreshold, eRole_DefVal, vData.mInletWaterCondLowThresholdDef ); _institutionalList.updateData( InletWaterCondHighThreshold, eRole_MinVal, vData.mInletWaterCondHighThresholdMin ); _institutionalList.updateData( InletWaterCondHighThreshold, eRole_MaxVal, vData.mInletWaterCondHighThresholdMax ); _institutionalList.updateData( InletWaterCondHighThreshold, eRole_DefVal, vData.mInletWaterCondHighThresholdDef ); _institutionalList.updateData( ChlorineWaterSampleCheck, eRole_MinVal, vData.mChlorineWaterSampleCheckMin ); _institutionalList.updateData( ChlorineWaterSampleCheck, eRole_MaxVal, vData.mChlorineWaterSampleCheckMax ); _institutionalList.updateData( ChlorineWaterSampleCheck, eRole_DefVal, vData.mChlorineWaterSampleCheckDef ); _institutionalList.updateData( WaterSampleTestResultRequired, eRole_MinVal, None ); _institutionalList.updateData( WaterSampleTestResultRequired, eRole_MaxVal, None ); _institutionalList.updateData( WaterSampleTestResultRequired, eRole_DefVal, vData.mWaterSampleTestResultRequiredDef ); // *** has to be the last to let the information to be set and then emit the signal *** // *** otherwise will use the Previous values before being set. *** adjustment ( true ); } void View::VAdvancedInstitutionalRecord::initModel() { _institutionalList.insertRow( MinRoRejectionRatio, {{ eRole_Title, tr("Minimum RO Rejection Ratio Alarm" )}, { eRole_Units, tr("% reject" ) }, { eRole_Decimal, 0 }}); _institutionalList.insertRow( DisinfectionFrequency, {{ eRole_Title, tr("Disinfection Frequency" )}, { eRole_Units, tr("days between cycles") }, { eRole_Decimal, 0 }}); _institutionalList.insertRow( DisinfectionParametersCycleTime, {{ eRole_Title, tr("Disinfection Parameters, Cycle Time")}, { eRole_Units, tr("Time" ) }, { eRole_Decimal, 0 }}); _institutionalList.insertRow( MaxBloodPumpStopTime, {{ eRole_Title, tr("Maximum Blood Pump Stop Time" )}, { eRole_Units, tr("min" ) }, { eRole_Decimal, 0 }}); _institutionalList.insertRow( InletWaterCondLowThreshold, {{ eRole_Title, tr("Inlet Water Cond. Low Threshold" )}, { eRole_Units, tr("uS/cm" ) }, { eRole_Decimal, 0 }}); _institutionalList.insertRow( InletWaterCondHighThreshold, {{ eRole_Title, tr("Inlet Water Cond. High Threshold" )}, { eRole_Units, tr("uS/cm" ) }, { eRole_Decimal, 0 }}); _institutionalList.insertRow( ChlorineWaterSampleCheck, {{ eRole_Title, tr("Chlorine Water Sample Check" )}, { eRole_Units, tr("min" ) }, { eRole_Decimal, 0 }}); _institutionalList.insertRow( WaterSampleTestResultRequired, {{ eRole_Title, tr("Water Sample Test Result Required" )}, { eRole_Units, tr("" ) }, { eRole_Decimal, 0 }}); } void View::VAdvancedInstitutionalRecord::onActionReceive(const AdjustAdvancedInstitutionalRecordResponseData &vData) { _institutionalList.updateData( MinRoRejectionRatio, eRole_RejectionMin, vData.mMinRORejectionRatioAlarmMinRejectionReason ); _institutionalList.updateData( MinRoRejectionRatio, eRole_RejectionMax, vData.mMinRORejectionRatioAlarmMaxRejectionReason ); _institutionalList.updateData( MinRoRejectionRatio, eRole_RejectionDef, vData.mMinRORejectionRatioAlarmDefRejectionReason ); _institutionalList.updateData( DisinfectionFrequency, eRole_RejectionMin, vData.mDisinfectionFrequencyMinRejectionReason ); _institutionalList.updateData( DisinfectionFrequency, eRole_RejectionMax, vData.mDisinfectionFrequencyMaxRejectionReason ); _institutionalList.updateData( DisinfectionFrequency, eRole_RejectionDef, vData.mDisinfectionFrequencyDefRejectionReason ); _institutionalList.updateData( DisinfectionParametersCycleTime, eRole_RejectionMin, vData.mDisinfectionParametersCycleTimeMinRejectionReason ); _institutionalList.updateData( DisinfectionParametersCycleTime, eRole_RejectionMax, vData.mDisinfectionParametersCycleTimeMaxRejectionReason ); _institutionalList.updateData( DisinfectionParametersCycleTime, eRole_RejectionDef, vData.mDisinfectionParametersCycleTimeDefRejectionReason ); _institutionalList.updateData( MaxBloodPumpStopTime, eRole_RejectionMin, vData.mMaxBloodPumpStopTimeMinRejectionReason ); _institutionalList.updateData( MaxBloodPumpStopTime, eRole_RejectionMax, vData.mMaxBloodPumpStopTimeMaxRejectionReason ); _institutionalList.updateData( MaxBloodPumpStopTime, eRole_RejectionDef, vData.mMaxBloodPumpStopTimeDefRejectionReason ); _institutionalList.updateData( InletWaterCondLowThreshold, eRole_RejectionMin, vData.mInletWaterCondLowThresholdMinRejectionReason ); _institutionalList.updateData( InletWaterCondLowThreshold, eRole_RejectionMax, vData.mInletWaterCondLowThresholdMaxRejectionReason ); _institutionalList.updateData( InletWaterCondLowThreshold, eRole_RejectionDef, vData.mInletWaterCondLowThresholdDefRejectionReason ); _institutionalList.updateData( InletWaterCondHighThreshold, eRole_RejectionMin, vData.mInletWaterCondHighThresholdMinRejectionReason ); _institutionalList.updateData( InletWaterCondHighThreshold, eRole_RejectionMax, vData.mInletWaterCondHighThresholdMaxRejectionReason ); _institutionalList.updateData( InletWaterCondHighThreshold, eRole_RejectionDef, vData.mInletWaterCondHighThresholdDefRejectionReason ); _institutionalList.updateData( ChlorineWaterSampleCheck, eRole_RejectionMin, vData.mChlorineWaterSampleCheckMinRejectionReason ); _institutionalList.updateData( ChlorineWaterSampleCheck, eRole_RejectionMax, vData.mChlorineWaterSampleCheckMaxRejectionReason ); _institutionalList.updateData( ChlorineWaterSampleCheck, eRole_RejectionDef, vData.mChlorineWaterSampleCheckDefRejectionReason ); _institutionalList.updateData( WaterSampleTestResultRequired, eRole_RejectionDef, vData.mWaterSampleTestResultRequiredDefRejectionReason ); } void View::VAdvancedInstitutionalRecord::onActionReceive(const SettingsData &) { QString mCategory = Storage::Settings_Category_DataList; bool isConfigsOk = true; // assume configurations are valid 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 ); _institutionalList.updateData ( MinRoRejectionRatio, eRole_Min, _minRORejectionRatioAlarmMin ); _institutionalList.updateData ( MinRoRejectionRatio, eRole_Max, _minRORejectionRatioAlarmMax ); _institutionalList.updateData ( MinRoRejectionRatio, eRole_Step, _minRORejectionRatioAlarmRes ); 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 ); _institutionalList.updateData ( DisinfectionFrequency, eRole_Min, _disinfectionFrequencyMin ); _institutionalList.updateData ( DisinfectionFrequency, eRole_Max, _disinfectionFrequencyMax ); _institutionalList.updateData ( DisinfectionFrequency, eRole_Step, _disinfectionFrequencyRes ); 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 ); _institutionalList.updateData ( DisinfectionParametersCycleTime, eRole_Min, _disinfectionParametersCycleTimeMin ); _institutionalList.updateData ( DisinfectionParametersCycleTime, eRole_Max, _disinfectionParametersCycleTimeMax ); _institutionalList.updateData ( DisinfectionParametersCycleTime, eRole_Step, _disinfectionParametersCycleTimeRes ); 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 ); _institutionalList.updateData ( MaxBloodPumpStopTime, eRole_Min, _maxBloodPumpStopTimeMin ); _institutionalList.updateData ( MaxBloodPumpStopTime, eRole_Max, _maxBloodPumpStopTimeMax ); _institutionalList.updateData ( MaxBloodPumpStopTime, eRole_Step, _maxBloodPumpStopTimeRes ); 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 ); _institutionalList.updateData ( InletWaterCondLowThreshold, eRole_Min, _inletWaterCondLowThresholdMin ); _institutionalList.updateData ( InletWaterCondLowThreshold, eRole_Max, _inletWaterCondLowThresholdMax ); _institutionalList.updateData ( InletWaterCondLowThreshold, eRole_Step, _inletWaterCondLowThresholdRes ); 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 ); _institutionalList.updateData ( InletWaterCondHighThreshold, eRole_Min, _inletWaterCondHighThresholdMin ); _institutionalList.updateData ( InletWaterCondHighThreshold, eRole_Max, _inletWaterCondHighThresholdMax ); _institutionalList.updateData ( InletWaterCondHighThreshold, eRole_Step, _inletWaterCondHighThresholdRes ); 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 ); _institutionalList.updateData ( ChlorineWaterSampleCheck, eRole_Min, _chlorineWaterSampleCheckMin ); _institutionalList.updateData ( ChlorineWaterSampleCheck, eRole_Max, _chlorineWaterSampleCheckMax ); _institutionalList.updateData ( ChlorineWaterSampleCheck, eRole_Step, _chlorineWaterSampleCheckRes ); _institutionalList.updateData ( WaterSampleTestResultRequired, eRole_Min, None ); _institutionalList.updateData ( WaterSampleTestResultRequired, eRole_Max, None ); _institutionalList.updateData ( WaterSampleTestResultRequired, eRole_Step, None ); } void View::VAdvancedInstitutionalRecord::clearRejectionReason(const int &vRow, const int &vRange) { int role = vRange == Min ? eRole_RejectionMin : vRange == Max ? eRole_RejectionMax : vRange == Def ? eRole_RejectionDef : -1; _institutionalList.updateData(vRow, role, 0); }