Index: sources/gui/qml/components/GridSelection.qml =================================================================== diff -u -r2dd4e9c952d65e68f1c81a1cfc13d1f96b0d7d43 -re5ae6f8513673d1c09bd04ec3da08e71bfded5e2 --- sources/gui/qml/components/GridSelection.qml (.../GridSelection.qml) (revision 2dd4e9c952d65e68f1c81a1cfc13d1f96b0d7d43) +++ sources/gui/qml/components/GridSelection.qml (.../GridSelection.qml) (revision e5ae6f8513673d1c09bd04ec3da08e71bfded5e2) @@ -47,6 +47,25 @@ height : _root.rowCount * _root.optionHeight + _title.height + _grid.anchors.topMargin width : _root.colCount * _root.optionWidth + function resetSelection() { + curIndex = -1 + active = false + selectionResetted() + } + + function setSelection(vWhichIndex) { + if(vWhichIndex < _root._itemCount) { + curIndex = vWhichIndex + } else { + curIndex = -1 + } + + clicked(curIndex) + active = true + } + + signal selectionResetted() + signal clicked(int vIndex) Text { id : _title @@ -73,7 +92,7 @@ width : _root.optionWidth radius : Variables.dialogRadius Binding on selected { - when : _root.curIndex > -1 + when : _root.curIndex >= -1 value : index === _root.curIndex } onClicked: { Index: sources/gui/qml/components/SliderCreateTreatment.qml =================================================================== diff -u -rfcfa029b4a6d30ff8aa8162de7573545f3cf7052 -re5ae6f8513673d1c09bd04ec3da08e71bfded5e2 --- sources/gui/qml/components/SliderCreateTreatment.qml (.../SliderCreateTreatment.qml) (revision fcfa029b4a6d30ff8aa8162de7573545f3cf7052) +++ sources/gui/qml/components/SliderCreateTreatment.qml (.../SliderCreateTreatment.qml) (revision e5ae6f8513673d1c09bd04ec3da08e71bfded5e2) @@ -54,6 +54,19 @@ anchors.horizontalCenter: parent.horizontalCenter + function resetParameter() { + _slider.reset(defaultValue) + _root.active = false + } + + function prepopulate(vNewValue) { + // Due to how the slider behaves, the ordering of setting it active first before + // setting the value is important. If we set the activeness after the value, the + // value gets set incorrectly due to the onActiveChanged handling + setActiveValid() + _slider.reset(vNewValue) + } + function reset(vValue) { _slider.reset(vValue) } Index: sources/gui/qml/pages/pretreatment/create/PreTreatmentConfirm.qml =================================================================== diff -u -r159f2bb0317c7c3c0336e4cb80c7fef3f87e329a -re5ae6f8513673d1c09bd04ec3da08e71bfded5e2 --- sources/gui/qml/pages/pretreatment/create/PreTreatmentConfirm.qml (.../PreTreatmentConfirm.qml) (revision 159f2bb0317c7c3c0336e4cb80c7fef3f87e329a) +++ sources/gui/qml/pages/pretreatment/create/PreTreatmentConfirm.qml (.../PreTreatmentConfirm.qml) (revision e5ae6f8513673d1c09bd04ec3da08e71bfded5e2) @@ -39,6 +39,8 @@ // anchors.leftMargin : Variables.minVGap2 // } + onConfirmClicked: vTreatmentCreate.doConfirmParameters() // Updated the confirmed parameters for future prepopulation option + Flickable { id: _flickable objectName: "_PreTreatmentConfirmFlickable" interactive: false Index: sources/gui/qml/pages/pretreatment/create/PreTreatmentCreate.qml =================================================================== diff -u -rfcfa029b4a6d30ff8aa8162de7573545f3cf7052 -re5ae6f8513673d1c09bd04ec3da08e71bfded5e2 --- sources/gui/qml/pages/pretreatment/create/PreTreatmentCreate.qml (.../PreTreatmentCreate.qml) (revision fcfa029b4a6d30ff8aa8162de7573545f3cf7052) +++ sources/gui/qml/pages/pretreatment/create/PreTreatmentCreate.qml (.../PreTreatmentCreate.qml) (revision e5ae6f8513673d1c09bd04ec3da08e71bfded5e2) @@ -66,6 +66,31 @@ } } + function resetParameters() { + scrollTo(_titleTextPrescription) + + _bloodFlowRate .resetParameter() + _dialysateFlowRate .resetParameter() + _duration .resetParameter() + + _heparinDispensingRateSwitch.resetSwitch () + _heparinDispensingRate .resetParameter() + + _heparinBolusVolumeSwitch .resetSwitch () + _heparinBolusVolume .resetParameter() + + _heparinStopTime .resetParameter() + _salineBolus .resetParameter() + _heparinType .resetSelection() + _acidConcentrate .resetSelection() + _bicarbonateConcentrate .resetSelection() + _dialyzerType .resetSelection() + _dialysateTemperature .resetParameter() + + _bloodPressureIntervalSwitch.resetSwitch () + _bloodPressureInterval .resetParameter() + } + function setInteractive(vInteractive) { _flickable.interactive = vInteractive } @@ -74,7 +99,6 @@ _flickable.contentY = vItem.mapToItem(_flickable.contentItem, 0, 0).y } - ScrollBar { flickable : _flickable anchors.fill: _flickable @@ -109,6 +133,37 @@ font.bold: true } + TouchRect { id: _prepopulateApplyButton + textString: qsTr("Pre-populate last parameters") + anchors.horizontalCenter: parent.horizontalCenter + enabled : vTreatmentCreate.isLastConfirmedParametersPopulated + onClicked : { + _bloodFlowRate.prepopulate(vTreatmentCreate.bloodFlowRate_confirmed) + _dialysateFlowRate .prepopulate(vTreatmentCreate.dialysateFlowRate_confirmed) + _duration .prepopulate(vTreatmentCreate.treatmentDuration_confirmed) + + // zero for the heparinDispensingRate is considered OFF + _heparinDispensingRateSwitch.setSwitchActive(vTreatmentCreate.heparinDispensingRate_confirmed != 0) + _heparinDispensingRate .prepopulate(vTreatmentCreate.heparinDispensingRate_confirmed) + + _heparinBolusVolumeSwitch.setSwitchActive(vTreatmentCreate.heparinBolusVolume_confirmed != 0) + _heparinBolusVolume .prepopulate(vTreatmentCreate.heparinBolusVolume_confirmed) + + _heparinStopTime .prepopulate(vTreatmentCreate.heparinStopTime_confirmed) + _salineBolus .prepopulate(vTreatmentCreate.salineBolusVolume_confirmed) + + _heparinType .setSelection(vTreatmentCreate.heparinType_confirmed) + _acidConcentrate .setSelection(vTreatmentCreate.acidConcentrate_confirmed) + _bicarbonateConcentrate .setSelection(vTreatmentCreate.bicarbonateConcentrate_confirmed) + _dialyzerType .setSelection(vTreatmentCreate.dialyzerType_confirmed) + + _dialysateTemperature .prepopulate(vTreatmentCreate.dialysateTemp_confirmed) + + _bloodPressureIntervalSwitch.setSwitchActive(vTreatmentCreate.bloodPressureMeasureInterval_confirmed !== 0) + _bloodPressureInterval .prepopulate(vTreatmentCreate.bloodPressureMeasureInterval_confirmed) + } + } + SliderCreateTreatment { id: _bloodFlowRate objectName : "_bloodFlowRate" label : qsTr("Blood Flow Rate") @@ -218,6 +273,20 @@ // This is a full implementation of a Switch Switch { id: _heparinDispensingRateSwitch property bool active: false + + function resetSwitch() { + // order of setting active and checked matters, need to set checked to + // false first before active to false to obtain the correct behavior. + checked = false + active = false + } + function setSwitchActive(vChecked) { + // order of setting active and checked matters, need to set active to + // true first before checked to passed value to obtain the correct behavior. + active = true + checked = vChecked + } + onActiveChanged : { _heparinDispensingRate.active = active } @@ -309,6 +378,19 @@ _heparinBolusVolume.active = ! checked } + function resetSwitch() { + // order of setting active and checked matters, need to set checked to + // false first before active to false to obtain the correct behavior. + checked = false + active = false + } + function setSwitchActive(vChecked) { + // order of setting active and checked matters, need to set active to + // true first before checked to passed value to obtain the correct behavior. + active = true + checked = vChecked + } + x : width * -1.5 y : Variables.createTreatmentSwitchYDisplacement // these values are set to align the switch with slider width : 75 // these values are set to align the switch with slider @@ -416,6 +498,11 @@ valid : ! vTreatmentCreate.heparinTypeRejectReason onCurIndexChanged : vTreatmentCreate.heparinTypeRejectReason = Variables.noRejectReason + onSelectionResetted:{ + // not resetting enabled state since that is bind to checked state of swtiches + vTreatmentCreate.heparinType = -1 + vTreatmentCreate.heparinTypeSet = false + } } GridSelection { id : _acidConcentrate @@ -426,6 +513,11 @@ valid : ! vTreatmentCreate.acidConcentrateRejectReason onCurIndexChanged : vTreatmentCreate.acidConcentrateRejectReason = Variables.noRejectReason + onSelectionResetted:{ + // not resetting enabled state since that is bind to checked state of swtiches + vTreatmentCreate.acidConcentrate = -1 + vTreatmentCreate.acidConcentrateSet = false + } } GridSelection { id : _bicarbonateConcentrate @@ -436,6 +528,11 @@ valid : ! vTreatmentCreate.bicarbonateConcentrateRejectReason onCurIndexChanged : vTreatmentCreate.bicarbonateConcentrateRejectReason = Variables.noRejectReason + onSelectionResetted:{ + // not resetting enabled state since that is bind to checked state of swtiches + vTreatmentCreate.bicarbonateConcentrate = -1 + vTreatmentCreate.bicarbonateConcentrateSet = false + } } GridSelection { id : _dialyzerType @@ -446,6 +543,11 @@ valid : ! vTreatmentCreate.dialyzerTypeRejectReason onCurIndexChanged : vTreatmentCreate.dialyzerTypeRejectReason = Variables.noRejectReason + onSelectionResetted:{ + // not resetting enabled state since that is bind to checked state of swtiches + vTreatmentCreate.dialyzerType = -1 + vTreatmentCreate.dialyzerTypeSet = false + } } Item { height: 1; width: 1 /* TODO : there is a design flaw in here, this is a workaround */ } @@ -764,6 +866,19 @@ } + function resetSwitch() { + // order of setting active and checked matters, need to set checked to + // false first before active to false to obtain the correct behavior. + checked = false + active = false + } + function setSwitchActive(vChecked) { + // order of setting active and checked matters, need to set active to + // true first before checked to passed value to obtain the correct behavior. + active = true + checked = vChecked + } + x : width * -1.5 y : Variables.createTreatmentSwitchYDisplacement // these values are set to align the switch with slider width : 75 // these values are set to align the switch with slider Index: sources/gui/qml/pages/pretreatment/create/PreTreatmentCreateStack.qml =================================================================== diff -u -rfe8135c784a6c5ad2f35957d39af96f31d7c5618 -re5ae6f8513673d1c09bd04ec3da08e71bfded5e2 --- sources/gui/qml/pages/pretreatment/create/PreTreatmentCreateStack.qml (.../PreTreatmentCreateStack.qml) (revision fe8135c784a6c5ad2f35957d39af96f31d7c5618) +++ sources/gui/qml/pages/pretreatment/create/PreTreatmentCreateStack.qml (.../PreTreatmentCreateStack.qml) (revision e5ae6f8513673d1c09bd04ec3da08e71bfded5e2) @@ -101,6 +101,7 @@ Connections { target: _pretreatmentPatientID function onBackClicked ( ) { vPreTreatmentAdjustmentInitTreatment.doCancel ()} function onConfirmClicked ( ) { setPatientID ( _root.patientID ) + _pretreatmentCreate.resetParameters() // clear the parameters to default state page( _pretreatmentCreate )} } Index: sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustRequests.h =================================================================== diff -u -r159f2bb0317c7c3c0336e4cb80c7fef3f87e329a -re5ae6f8513673d1c09bd04ec3da08e71bfded5e2 --- sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustRequests.h (.../MPreTreatmentAdjustRequests.h) (revision 159f2bb0317c7c3c0336e4cb80c7fef3f87e329a) +++ sources/model/hd/adjustment/pretreatment/MPreTreatmentAdjustRequests.h (.../MPreTreatmentAdjustRequests.h) (revision e5ae6f8513673d1c09bd04ec3da08e71bfded5e2) @@ -66,8 +66,8 @@ }; /*! - * \brief The MAdjustParametersValidationReq class - * \details The model used to request treatment parameters validation + * \brief The MParameters class + * \details The base model class to hold the treatment parameters * * | MSG | CAN ID | M.Box | Type | Ack | Src | Dest | Description | * |:----:|:------:|:-----:|:----:|:---:|:---:|:----:|:-----------------------------------------:| @@ -94,9 +94,8 @@ * | #17:(F32) | \ref mDialysateTemp | * */ -class MAdjustParametersValidationReq : public MModel { +class MParameters : public MModel { public: - quint32 mBloodFlowRate = 0; // mL/min quint32 mDialysateFlowRate = 0; // mL/min quint32 mTreatmentDuration = 0; // minutes @@ -115,28 +114,61 @@ float mHeparinBolusVolume = 0; // mL float mDialysateTemp = 0; // Celsius + QVariantList getParametersList() { + return(QVariantList({ + mBloodFlowRate , + mDialysateFlowRate , + mTreatmentDuration , + mHeparinStopTime , + mSalineBolus , + mAcidConcentrate , + mBicarbonateConcentrate , + mDialyzerType , + mHeparinType , //FIXME: DEN-15377: to set the heparintype to not selected (-1) is used which is incorrect, since the type is unsigned. (No issue for now but is not correct.) + mBloodPressureMeasureInterval , + mRinsebackFlowRate , + mArterialPressureLimitWindow , + mVenousPressureLimitWindow , + mVenousPressureLimitAsymtrc , + mHeparinDispensingRate , + mHeparinBolusVolume , + mDialysateTemp , + })); + } + + void copy(const MParameters &vParams) { + //DEBUG: qDebug()<< Q_FUNC_INFO; + + mBloodFlowRate = vParams.mBloodFlowRate; + mDialysateFlowRate = vParams.mDialysateFlowRate; + mTreatmentDuration = vParams.mTreatmentDuration; + mHeparinStopTime = vParams.mHeparinStopTime; + mSalineBolus = vParams.mSalineBolus; + mAcidConcentrate = vParams.mAcidConcentrate; + mBicarbonateConcentrate = vParams.mBicarbonateConcentrate; + mDialyzerType = vParams.mDialyzerType; + mHeparinType = vParams.mHeparinType; + mBloodPressureMeasureInterval = vParams.mBloodPressureMeasureInterval; + mRinsebackFlowRate = vParams.mRinsebackFlowRate; + mArterialPressureLimitWindow = vParams.mArterialPressureLimitWindow; + mVenousPressureLimitWindow = vParams.mVenousPressureLimitWindow; + mVenousPressureLimitAsymtrc = vParams.mVenousPressureLimitAsymtrc; + mHeparinDispensingRate = vParams.mHeparinDispensingRate; + mHeparinBolusVolume = vParams.mHeparinBolusVolume; + mDialysateTemp = vParams.mDialysateTemp; + } +}; + +/*! + * \brief The MAdjustParametersValidationReq class + * \details The model used to request treatment parameters validation + */ +class MAdjustParametersValidationReq : public MParameters { +public: // disabled coco begin validated : Has been validated manually. // This object is used statically for now, kept the logic for later usage. QString toString() { - return toString({ - mBloodFlowRate , - mDialysateFlowRate , - mTreatmentDuration , - mHeparinStopTime , - mSalineBolus , - mAcidConcentrate , - mBicarbonateConcentrate , - mDialyzerType , - mHeparinType , //FIXME: DEN-15377: to set the heparintype to not selected (-1) is used which is incorrect, since the type is unsigned. (No issue for now but is not correct.) - mBloodPressureMeasureInterval , - mRinsebackFlowRate , - mArterialPressureLimitWindow , - mVenousPressureLimitWindow , - mVenousPressureLimitAsymtrc , - mHeparinDispensingRate , - mHeparinBolusVolume , - mDialysateTemp , - }); + return toString(getParametersList()); } // disabled coco end static QString toString(const QVariantList &vParameters) { @@ -145,6 +177,23 @@ }; /*! + * \brief The MAdjustParametersStored class + * \details The model used to store the unconfirmed treatement parameters for pre-populating + */ +class MAdjustParametersStored: public MParameters { +public: + // disabled coco begin validated : Has been validated manually. + // This object is used statically for now, kept the logic for later usage. + QString toString() { + return toString(getParametersList()); + } + // disabled coco end + static QString toString(const QVariantList &vParameters) { + return MModel::toString("PrepopulateParameters", vParameters); + } +}; + +/*! * \brief The MAdjustParametersConfirmReq class * \details The model to tell HD treatment parameters have been confirmed * @@ -435,3 +484,4 @@ typedef Model:: MAdjustUltrafiltrationInitReq AdjustUltrafiltrationInitRequestData; typedef Model:: MAdjustPatientConnectionConfirmReq AdjustPatientConnectionConfirmRequestData; typedef Model:: MAdjustStartTreatmentReq AdjustStartTreatmentRequestData; +typedef Model:: MAdjustParametersStored AdjustParametersStoredData; Index: sources/view/VTreatmentCreate.cpp =================================================================== diff -u -r159f2bb0317c7c3c0336e4cb80c7fef3f87e329a -re5ae6f8513673d1c09bd04ec3da08e71bfded5e2 --- sources/view/VTreatmentCreate.cpp (.../VTreatmentCreate.cpp) (revision 159f2bb0317c7c3c0336e4cb80c7fef3f87e329a) +++ sources/view/VTreatmentCreate.cpp (.../VTreatmentCreate.cpp) (revision e5ae6f8513673d1c09bd04ec3da08e71bfded5e2) @@ -59,6 +59,11 @@ data.mBloodPressureMeasureInterval = _bloodPressureMeasureInterval ; data.mRinsebackFlowRate = _rinsebackFlowRate ; + // copy unconfirmed/unvalidated parameters into temporary model + _storedParameters.copy(data); + + //DEBUG: qDebug()<< "Unconfirmed Parameters : " << _storedParameters.toString(); + emit didAdjustment(data); } @@ -198,3 +203,32 @@ << ( _bloodPressureMeasureInterval ? QString("%0 min").arg(_bloodPressureMeasureInterval) : tr("OFF") ) << QString("%0 mL/min" ).arg(_rinsebackFlowRate ); } + +/** + * \brief VCreateTreatment::doConfirmParameters + * \details Copies confirmed treatment parameters into the properties for pre-populating applying + */ +void VTreatmentCreate::doConfirmParameters() { + + isLastConfirmedParametersPopulated(true); + + _bloodFlowRate_confirmed = _storedParameters.mBloodFlowRate ; + _dialysateFlowRate_confirmed = _storedParameters.mDialysateFlowRate ; + _treatmentDuration_confirmed = _storedParameters.mTreatmentDuration ; + _heparinDispensingRate_confirmed = _storedParameters.mHeparinDispensingRate ; + _heparinBolusVolume_confirmed = _storedParameters.mHeparinBolusVolume ; + _heparinStopTime_confirmed = _storedParameters.mHeparinStopTime ; + _salineBolusVolume_confirmed = _storedParameters.mSalineBolus ; + _heparinType_confirmed = _storedParameters.mHeparinType ; + _acidConcentrate_confirmed = _storedParameters.mAcidConcentrate ; + _bicarbonateConcentrate_confirmed = _storedParameters.mBicarbonateConcentrate ; + _dialyzerType_confirmed = _storedParameters.mDialyzerType ; + _dialysateTemp_confirmed = _storedParameters.mDialysateTemp ; + _arterialPressureLimitWindow_confirmed = _storedParameters.mArterialPressureLimitWindow ; + _venousPressureLimitWindow_confirmed = _storedParameters.mVenousPressureLimitWindow ; + _venousPressureLimitAsymtrc_confirmed = _storedParameters.mVenousPressureLimitAsymtrc ; + _bloodPressureMeasureInterval_confirmed = _storedParameters.mBloodPressureMeasureInterval ; + _rinsebackFlowRate_confirmed = _storedParameters.mRinsebackFlowRate ; + + //DEBUG: qDebug()<< Q_FUNC_INFO << " isPopulated : " << _isLastConfirmedParametersPopulated << _storedParameters.toString(); +} Index: sources/view/VTreatmentCreate.h =================================================================== diff -u -r159f2bb0317c7c3c0336e4cb80c7fef3f87e329a -re5ae6f8513673d1c09bd04ec3da08e71bfded5e2 --- sources/view/VTreatmentCreate.h (.../VTreatmentCreate.h) (revision 159f2bb0317c7c3c0336e4cb80c7fef3f87e329a) +++ sources/view/VTreatmentCreate.h (.../VTreatmentCreate.h) (revision e5ae6f8513673d1c09bd04ec3da08e71bfded5e2) @@ -37,6 +37,15 @@ #define UNSET 9999 +/* PARAMETER_PAIR macro allows defining two properties for each parameter. + * One property for the current value used towards treatment and a secondary for pre-populating + * a treatement on the create treatment screen. Done this way for better syncing when adding/removing + * a parameter. Adding here since it's only used here, in VTreatmentCreate + */ +#define PARAMETER_PAIR( vTYPE , vVARIABLE , vDEFVALUE ) \ + VALUESET( vTYPE , vVARIABLE , vDEFVALUE ) \ + VALUESET( vTYPE , vVARIABLE##_confirmed , vDEFVALUE ) + namespace View { /*! @@ -74,26 +83,28 @@ // friends friend class::tst_views; - VALUESET(quint32 , bloodFlowRate , 0) - VALUESET(quint32 , dialysateFlowRate , 0) - VALUESET(quint32 , treatmentDuration , 0) - VALUESET(float , heparinDispensingRate , 0) - VALUESET(float , heparinBolusVolume , 0) - VALUESET(quint32 , heparinStopTime , 0) - VALUESET(quint32 , salineBolusVolume , 0) + PARAMETER_PAIR(quint32 , bloodFlowRate , 0) + PARAMETER_PAIR(quint32 , dialysateFlowRate , 0) + PARAMETER_PAIR(quint32 , treatmentDuration , 0) + PARAMETER_PAIR(float , heparinDispensingRate , 0) + PARAMETER_PAIR(float , heparinBolusVolume , 0) + PARAMETER_PAIR(quint32 , heparinStopTime , 0) + PARAMETER_PAIR(quint32 , salineBolusVolume , 0) - VALUESET(quint32 , heparinType , 0) - VALUESET(quint32 , acidConcentrate , 0) - VALUESET(quint32 , bicarbonateConcentrate , 0) - VALUESET(quint32 , dialyzerType , 0) + PARAMETER_PAIR(quint32 , heparinType , 0) + PARAMETER_PAIR(quint32 , acidConcentrate , 0) + PARAMETER_PAIR(quint32 , bicarbonateConcentrate , 0) + PARAMETER_PAIR(quint32 , dialyzerType , 0) - VALUESET(qreal , dialysateTemp , 0) - VALUESET(qint32 , arterialPressureLimitWindow , 0) - VALUESET(qint32 , venousPressureLimitWindow , 0) - VALUESET(qint32 , venousPressureLimitAsymtrc , 0) - VALUESET(quint32 , bloodPressureMeasureInterval , 0) - VALUESET(quint32 , rinsebackFlowRate , 0) + PARAMETER_PAIR(qreal , dialysateTemp , 0) + PARAMETER_PAIR(qint32 , arterialPressureLimitWindow , 0) + PARAMETER_PAIR(qint32 , venousPressureLimitWindow , 0) + PARAMETER_PAIR(qint32 , venousPressureLimitAsymtrc , 0) + PARAMETER_PAIR(quint32 , bloodPressureMeasureInterval , 0) + PARAMETER_PAIR(quint32 , rinsebackFlowRate , 0) + PROPERTY( bool , isLastConfirmedParametersPopulated , false ) // for enabling/disabling the populate button in QML + VALUESET(QString , patientID ,"") VALUESET(bool , continueEnabled , 0) @@ -117,12 +128,12 @@ TRIGGER (quint32 , bloodPressureMeasureIntervalRejectReason , 0 ) TRIGGER (quint32 , rinsebackFlowRateRejectReason , 0 ) - VIEW_DEC_CLASS(VTreatmentCreate) VIEW_DEC_SLOT(AdjustParametersValidationResponseData) private: QString enumToString(GuiRequestReasons vEnum); + AdjustParametersStoredData _storedParameters; signals: void didAdjustment(const AdjustParametersValidationRequestData &data); @@ -138,5 +149,7 @@ QStringList doGetPrescriptionParameterValues(); QStringList doGetOperatingParameterValues(); + + void doConfirmParameters(); }; }