/*! * * 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 VTreatmentCreate.cpp * \author (last) Behrouz NematiPour * \date (last) 21-Nov-2023 * \author (original) Peter Lucia * \date (original) 22-Sep-2020 * */ // Qt // Project #include "ApplicationController.h" #include "VTreatmentCreate.h" #include "FileHandler.h" #include "MsgDefs.h" #include "TreatmentLog.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 ) ACTION_VIEW_CONNECTION(AdjustSerialNumberTDResponseData ) } /** * \brief VCreateTreatment::doValidation * Validates the treatment profile locally, then requests validation of it with FW */ void VTreatmentCreate::doValidation() { AdjustParametersValidationRequestData data; data.mTreatmentModality = _treatmentModality ; data.mHDFTreatmentMode = _hdfTreatmentMode ; data.mBloodFlowRate = _bloodFlowRate ; data.mDialysateFlowRate = _dialysateFlowRate ; data.mTreatmentDuration = _treatmentDuration ; data.mHeparinDeliveryDuration = _heparinDeliveryDuration ; data.mHeparinType = _heparinType ; data.mDryBicarbCartSize = _dryBicarbCartSize ; data.mSodium = _sodium ; data.mBicarbonate = _bicarbonate ; data.mDialyzerType = _dialyzerType ; data.mFluidBolusVolume = _fluidBolusVolume ; data.mBloodPressureMeasureInterval = _bloodPressureMeasureInterval ; data.mPrimeDiscardVolume = _primeDiscardVolume ; data.mRinsebackVolume = _rinsebackVolume ; data.mHepatitusBStatus = _hepatitusBStatus ; data.mSubstitutionFluidVolume = _substitutionFluidVolume ; data.mHeparinBolusVolume = _heparinBolusVolume ; data.mHeparinDispensingRate = _heparinDispensingRate ; data.mDialysateTemp = _dialysateTemp ; // data.mPotassium = _potassium ; // data.mCalcium = _calcium ; parametersConfirmed(false); parametersValidated(false); 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; parametersConfirmed(true); 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; parametersValidated(false); parametersConfirmed(false); 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) { treatmentModalityRejectReason (data.mTreatmentModalityRejectionReason ); hDFTreatmentModeRejectReason (data.mHDFTreatmentModeRejectionReason ); bloodFlowRateRejectReason (data.mBloodFlowRateRejectionReason ); dialysateFlowRateRejectReason (data.mDialysateFlowRateRejectionReason ); treatmentDurationRejectReason (data.mTreatmentDurationRejectionReason ); heparinDeliveryDurationRejectReason (data.mHeparinDeliveryDurationRejectionReason ); heparinTypeRejectReason (data.mHeparinTypeRejectionReason ); dryBicarbCartSizeRejectReason (data.mDryBicarbCartSizeRejectionReason ); sodiumRejectReason (data.mSodiumRejectionReason ); bicarbonateRejectReason (data.mBicarbonateRejectionReason ); dialyzerTypeRejectReason (data.mDialyzerTypeRejectionReason ); fluidBolusVolumeRejectReason (data.mFluidBolusVolumeRejectionReason ); bloodPressureMeasureIntervalRejectReason (data.mBloodPressureMeasureIntervalRejectionReason ); primeDiscardVolumeRejectReason (data.mPrimeDiscardVolumeRejectionReason ); rinsebackVolumeRejectReason (data.mRinsebackVolumeRejectionReason ); hepatitusBStatusRejectReason (data.mHepatitusBStatusRejectionReason ); substitutionFluidVolumeRejectReason (data.mSubstitutionFluidVolumeRejectionReason ); heparinBolusVolumeRejectReason (data.mHeparinBolusVolumeRejectionReason ); heparinDispensingRateRejectReason (data.mHeparinDispensingRateRejectionReason ); dialysateTempRejectReason (data.mDialysateTempRejectionReason ); potassiumRejectReason (data.mPotassiumRejectionReason ); calciumRejectReason (data.mCalciumRejectionReason ); parametersValidated(false); } else { parametersValidated(true); emit didValidationPass(); } } /*! * \brief VTreatmentCreate::onActionReceive * \details This message is received from the HD in POST through the applicationController and GuiController. * This class keeps the serial for any treatment Code (txCode) generation * \param data - the message model data */ void VTreatmentCreate::onActionReceive(const AdjustSerialNumberTDResponseData &data) { _tdSerialNumber = data.mSerialNumber; } /*! * \brief VTreatmentCreate::generateTxCode * \details Generates the txCode by combination of the HD serial number and date and time in yyyyMMddHHmmss * And updates the TreatmenLog class to be saved in the Tx Report. */ void VTreatmentCreate::generateTxCode() { QDateTime datetime = QDateTime::currentDateTime(); QString today = datetime.toString("yyyyMMddHHmmss"); txCode(_tdSerialNumber + today); _TreatmentLog.gTxCode(_txCode); LOG_APPED_UI(QString("Generated Treatment Code is %1").arg(_txCode)); }