/*! * * Copyright (c) 2020-2022 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 VTreatmentCreate.cpp * \author (last) Behrouz NematiPour * \date (last) 20-Jul-2022 * \author (original) Peter Lucia * \date (original) 22-Sep-2020 * */ // Qt // Project #include "ApplicationController.h" #include "VTreatmentCreate.h" #include "FileHandler.h" #include "MsgDefs.h" using namespace Gui; using namespace View; using namespace Storage; VTreatmentCreate::VTreatmentCreate(QObject *parent) : QObject(parent) { ADJUST_VIEW_CONNECTION(AdjustParametersValidationRequestData ) ACTION_VIEW_CONNECTION(AdjustParametersValidationResponseData ) ADJUST_VIEW_CONNECTION(AdjustParametersConfirmRequestData ) } /** * \brief VCreateTreatment::doValidation * Validates the treatment profile locally, then requests validation of it with FW */ void VTreatmentCreate::doValidation() { AdjustParametersValidationRequestData data; data.bloodFlowRate = _bloodFlowRate; data.dialysateFlowRate = _dialysateFlowRate; data.treatmentDuration = _treatmentDuration; data.heparinDispensingRate = _heparinDispensingRate; data.heparinBolusVolume = _heparinBolusVolume; data.heparinStopTime = _heparinStopTime; data.salineBolus = _salineBolusVolume; data.heparinType = _heparinType; data.acidConcentrate = _acidConcentrate; data.bicarbonateConcentrate = _bicarbonateConcentrate; data.dialyzerType = _dialyzerType; data.dialysateTemp = _dialysateTemp; data.arterialPressureLimitLow = _arterialPressureLimitLow; data.arterialPressureLimitHigh = _arterialPressureLimitHigh; data.venousPressureLimitLow = _venousPressureLimitLow; data.venousPressureLimitHigh = _venousPressureLimitHigh; data.bloodPressureMeasureInterval = _bloodPressureMeasureInterval; data.rinsebackFlowRate = _rinsebackFlowRate; emit didAdjustment(data); } /** * \brief VCreateTreatment::doConfirm * \details Emits treatment data to GUI controller, * who emits to application controller * \note Finished create treatment confirm... */ void VTreatmentCreate::doConfirm() { AdjustParametersConfirmRequestData confirmTreatmentRequest; confirmTreatmentRequest.requestedState = AdjustParametersConfirmRequestData::eConfirm; emit didAdjustment(confirmTreatmentRequest); } /** * \brief VCreateTreatment::doCancel * \details Notifies FW the user has canceled confirming the treatment parameters * \note Telling FW user is canceling confirm treatment parameters... */ void VTreatmentCreate::doCancel() { AdjustParametersConfirmRequestData confirmTreatmentRequest; confirmTreatmentRequest.requestedState = AdjustParametersConfirmRequestData::eCancel; emit didAdjustment(confirmTreatmentRequest); } /** * \brief VCreateTreatment::enumToString * Convenience function to convert an enum to a string * \param vEnum - the enum value * \return QString - the enum name */ QString VTreatmentCreate::enumToString(GuiRequestReasons vEnum) { return Gui::enumString(vEnum, "[%1] Unknown Rejection Reason"); } /** * \brief VCreateTreatment::onFWValidationResponse * Slot to handle a validation response from FW * \param actionType The action type must be a create treatment response * \param messageData The message data must contain the reject reason codes for all parameters * \returns True if FW OK's treatment parameters, false otherwise */ void VTreatmentCreate::onActionReceive(const AdjustParametersValidationResponseData &data) { if (! data.mAccepted) { emit fwValidationFailed(""); } else { emit fwValidationSuccess(); } } /*! * \brief VCreateTreatment::doGetPrescriptionParameterValues * \details Gets a list of the prescription parameter values * \return (QStringList) The list of parameter values with units */ QStringList VTreatmentCreate::doGetPrescriptionParameterValues() { return QStringList() << QString("%0 mL/min").arg(_bloodFlowRate) << QString("%0 mL/min").arg(_dialysateFlowRate) << QString("%0 min").arg(_treatmentDuration) << ( _heparinDispensingRate ? QString("%0 mL/hr").arg(_heparinDispensingRate) : tr("OFF") ) << ( _heparinBolusVolume ? QString("%0 mL" ).arg(_heparinBolusVolume ) : tr("OFF") ) << QString("%0 min").arg(_heparinStopTime) << QString("%0 mL").arg(_salineBolusVolume); } /*! * \brief VCreateTreatment::doGetOperatingParameterValues * \details Gets the operating parameter values * \return (QStringList) The list of operating parameter values with units where applicable */ QStringList VTreatmentCreate::doGetOperatingParameterValues() { QString mHeparinType ; QString mAcidConcentrate ; QString mBicarbonateConcentrate ; QString mDialyzerType ; QStringList mHeparinTypeOptions ; QStringList mAcidConcentrateOptions ; QStringList mBicarbonateConcentrateOptions ; QStringList mDialyzerTypeOptions ; QString mCategory = Storage::Settings_Category_ConfigurationsDataList; if ( heparinTypeSet () ) { mHeparinTypeOptions = _Settings.keys(mCategory, "Heparin Type Options" ); if ((int) _heparinType < mHeparinTypeOptions .length()) mHeparinType = mHeparinTypeOptions .at( _heparinType ); } else { mHeparinType = tr("NONE"); } if ( acidConcentrateSet () ) { mAcidConcentrateOptions = _Settings.keys(mCategory, "Acid Concentrate Options" ); if ((int) _acidConcentrate < mAcidConcentrateOptions .length()) mAcidConcentrate = mAcidConcentrateOptions .at( _acidConcentrate ); } else { mAcidConcentrate = tr("NONE"); } if ( bicarbonateConcentrateSet () ) { mBicarbonateConcentrateOptions = _Settings.keys(mCategory, "Bicarbonate Concentrate Options" ); if ((int) _bicarbonateConcentrate < mBicarbonateConcentrateOptions .length()) mBicarbonateConcentrate = mBicarbonateConcentrateOptions .at( _bicarbonateConcentrate ); } else { mBicarbonateConcentrate = tr("NONE"); } if ( dialyzerTypeSet () ) { mDialyzerTypeOptions = _Settings.keys(mCategory, "Dialyzer Type Options" ); if ((int) _dialyzerType < mDialyzerTypeOptions .length()) mDialyzerType = mDialyzerTypeOptions .at( _dialyzerType ); } else { mDialyzerType = tr("NONE"); } return QStringList() << mHeparinType << mAcidConcentrate << mBicarbonateConcentrate << mDialyzerType << QString("%0 °C" ).arg(_dialysateTemp ) << QString("%0 mmHg" ).arg(_arterialPressureLimitLow ) << QString("%0 mmHg" ).arg(_arterialPressureLimitHigh ) << QString("%0 mmHg" ).arg(_venousPressureLimitLow ) << QString("%0 mmHg" ).arg(_venousPressureLimitHigh ) << QString("%0 min" ).arg(_bloodPressureMeasureInterval ) << QString("%0 mL/min" ).arg(_rinsebackFlowRate ); }