#pragma once // Qt #include #include #include #include #include #include // Project #include "MPreTreatmentAdjustParametersValidationResponse.h" #include "GuiController.h" #include "StorageGlobals.h" // forward declaration class tst_views; using namespace Storage; using namespace Gui; using namespace Model; #define UNSET 9999 namespace View { /*! * \brief The VCreateTreatment class * * The Create Treatment View manages the pre-treatment parameter selection entry and validation. * * \details The Create Treatment View manages data display and translation between the user interface * and treatment parameter and treatment parameter response models. * * Upon HD messaging with confirmation of the current parameter selection, * the Create Treatment View segues to the Create Treatment confirmation screen. * * Upon HD messaging with a list of one or more invalid parameters, the Create Treatment View * will signal the invalid parameters to the GUI so the user can make adjustments. * * The Create Treatment View replicates the validation function used by FW to mitigate * incompatible parameter selection situations. * * When a user modifies treatment parameters: * - The treatment parameters model is populated with the data * - The data is validated for correctness and compatibility * - The continue button is enabled upon success so FW can validate the parameter selection * * \sa Model::MAdjustParametersValidationResponse * \sa Model::MAdjustParametersConfirmReq * \sa Model::MInitTreatmentReq * \sa Model::MConfirmTreatmentReq * \sa Model::MAdjustInitTreatmentResponse */ class VTreatmentCreate : public QObject { Q_OBJECT // friends friend class::tst_views; public: explicit VTreatmentCreate(QObject *parent = nullptr); private: // mL/min const quint32 bloodFlowRate_Def = 100 ; // PRS 30 const quint32 bloodFlowRate_Min = 100 ; // PRS 30 const quint32 bloodFlowRate_Max = 500 ; // PRS 30 const quint32 bloodFlowRate_Res = 25 ; // PRS 30 // mL/min const quint32 dialysateFlowRate_Def = 100 ; // PRS 345 const quint32 dialysateFlowRate_Min = 100 ; // PRS 345 const quint32 dialysateFlowRate_Max = 600 ; // PRS 345 const quint32 dialysateFlowRate_Res = 50 ; // PRS 345 // minutes const quint32 duration_Def = 60 ; // PRS 346 const quint32 duration_Min = 60 ; // PRS 346 const quint32 duration_Max = 480 ; // PRS 346 const quint32 duration_Res = 15 ; // PRS 346 // mL/hr (0 = off) const qreal heparinDispensingRate_Def = 0.0 ; // PRS 347 const qreal heparinDispensingRate_Min = 0.0 ; // PRS 347 const qreal heparinDispensingRate_Max = 1.0 ; // PRS 347 const qreal heparinDispensingRate_Res = 0.1 ; // PRS 347 // mL const qreal heparinBolusVolume_Def = 0.0 ; // PRS 348 const qreal heparinBolusVolume_Min = 0.0 ; // PRS 348 const qreal heparinBolusVolume_Max = 2.0 ; // PRS 348 const qreal heparinBolusVolume_Res = 0.1 ; // PRS 348 // min const quint32 heparinStopTime_Def = 0 ; // PRS 464 const quint32 heparinStopTime_Min = 0 ; // PRS 464 const quint32 heparinStopTime_Max = 470 ; // PRS 464 const quint32 heparinStopTime_Res = 10 ; // PRS 464 // mL const quint32 salineBolusVolume_Def = 100 ; // PRS 350 const quint32 salineBolusVolume_Min = 100 ; // PRS 350 const quint32 salineBolusVolume_Max = 300 ; // PRS 350 const quint32 salineBolusVolume_Res = 100 ; // PRS 350 const quint32 heparinType_Res = 1 ; // PRS ??? const quint32 acidConcentrate_Res = 1 ; // PRS 35 const quint32 bicarbonateConcentrate_Res = 1 ; // PRS 351 const quint32 dialyzerType_Res = 1 ; // PRS 352 // Celsius const qreal dialysateTemp_Def = 37 ; // PRS 353 const qreal dialysateTemp_Min = 35 ; // PRS 353 const qreal dialysateTemp_Max = 38 ; // PRS 353 const qreal dialysateTemp_Res = 0.5 ; // PRS 353 // mmHg const qint32 arterialPressureLimitLow_Def = -300 ; // PRS 354 const qint32 arterialPressureLimitLow_Min = -300 ; // PRS 354 const qint32 arterialPressureLimitLow_Max = -30 ; // PRS 354 const qint32 arterialPressureLimitLow_Res = 10 ; // PRS 354 // mmHg const qint32 arterialPressureLimitHigh_Def = 0 ; // PRS 355 const qint32 arterialPressureLimitHigh_Min = -270 ; // PRS 355 const qint32 arterialPressureLimitHigh_Max = 0 ; // PRS 355 const qint32 arterialPressureLimitHigh_Res = 10 ; // PRS 355 // mmHg const qint32 venousPressureLimitLow_Def = 20 ; // PRS 356 const qint32 venousPressureLimitLow_Min = 20 ; // PRS 356 const qint32 venousPressureLimitLow_Max = 570 ; // PRS 356 const qint32 venousPressureLimitLow_Res = 10 ; // PRS 356 // mmHg const qint32 venousPressureLimitHigh_Def = 400 ; // PRS 357 const qint32 venousPressureLimitHigh_Min = 50 ; // PRS 357 const qint32 venousPressureLimitHigh_Max = 600 ; // PRS 357 const qint32 venousPressureLimitHigh_Res = 10 ; // PRS 357 // min const quint32 bloodPressureMeasureInterval_Def = 30 ; // PRS 358 const quint32 bloodPressureMeasureInterval_Min = 0 ; // PRS 358 const quint32 bloodPressureMeasureInterval_Max = 60 ; // PRS 358 const quint32 bloodPressureMeasureInterval_Res = 5 ; // PRS 358 // mL/min const quint32 rinsebackFlowRate_Def = 75 ; // PRS 359 const quint32 rinsebackFlowRate_Min = 50 ; // PRS 359 const quint32 rinsebackFlowRate_Max = 150 ; // PRS 359 const quint32 rinsebackFlowRate_Res = 25 ; // PRS 359 enum ACID_ENUM { eAcidUnset = 9999, eAcid01 = 0, eAcid02 , eAcid03 , }; enum BICARBONATE_ENUM { eBicarbUnset= 9999, eBicarb01 = 0, }; enum DIALYZER_ENUM { eDialyzerUnset = 9999, eDialyzer01 = 0, eDialyzer02 , eDialyzer03 , }; enum HEPARIN_ENUM { eHeparinUnset = 9999, eHeparin01 = 0, }; protected: TREATMENT_PARAMETER(quint32, bloodFlowRate, bloodFlowRate_Def, bloodFlowRate_Min, bloodFlowRate_Max, bloodFlowRate_Res) TREATMENT_PARAMETER(quint32, dialysateFlowRate, dialysateFlowRate_Def, dialysateFlowRate_Min, dialysateFlowRate_Max, dialysateFlowRate_Res) TREATMENT_PARAMETER(quint32, duration, duration_Def, duration_Min, duration_Max, duration_Res) TREATMENT_PARAMETER(qreal, heparinDispensingRate, heparinDispensingRate_Def, heparinDispensingRate_Min, heparinDispensingRate_Max, heparinDispensingRate_Res) TREATMENT_PARAMETER(qreal, heparinBolusVolume, heparinBolusVolume_Def, heparinBolusVolume_Min, heparinBolusVolume_Max, heparinBolusVolume_Res) TREATMENT_PARAMETER(quint32, heparinStopTime, heparinStopTime_Def, heparinStopTime_Min, heparinStopTime_Max, heparinStopTime_Res) TREATMENT_PARAMETER(quint32, salineBolusVolume, salineBolusVolume_Def, salineBolusVolume_Min, salineBolusVolume_Max, salineBolusVolume_Res) TREATMENT_PARAMETER(quint32, heparinType, eHeparinUnset, eHeparin01, eHeparin01, heparinType_Res) TREATMENT_PARAMETER(quint32, acidConcentrate, eAcidUnset, eAcid01, eAcid03, acidConcentrate_Res) TREATMENT_PARAMETER(quint32, bicarbonateConcentrate, eBicarbUnset, eBicarb01, eBicarb01, bicarbonateConcentrate_Res) TREATMENT_PARAMETER(quint32, dialyzerType, eDialyzerUnset, eDialyzer01, eDialyzer03, dialyzerType_Res) TREATMENT_PARAMETER(qreal, dialysateTemp, dialysateTemp_Def, dialysateTemp_Min, dialysateTemp_Max, dialysateTemp_Res) TREATMENT_PARAMETER(qint32, arterialPressureLimitLow, arterialPressureLimitLow_Def, arterialPressureLimitLow_Min, arterialPressureLimitLow_Max, arterialPressureLimitLow_Res) TREATMENT_PARAMETER(qint32, arterialPressureLimitHigh, arterialPressureLimitHigh_Def, arterialPressureLimitHigh_Min, arterialPressureLimitHigh_Max, arterialPressureLimitHigh_Res) TREATMENT_PARAMETER(qint32, venousPressureLimitLow, venousPressureLimitLow_Def, venousPressureLimitLow_Min, venousPressureLimitLow_Max, venousPressureLimitLow_Res) TREATMENT_PARAMETER(qint32, venousPressureLimitHigh, venousPressureLimitHigh_Def, venousPressureLimitHigh_Min, venousPressureLimitHigh_Max, venousPressureLimitHigh_Res) TREATMENT_PARAMETER(quint32, bloodPressureMeasureInterval, bloodPressureMeasureInterval_Def, bloodPressureMeasureInterval_Min, bloodPressureMeasureInterval_Max, bloodPressureMeasureInterval_Res) TREATMENT_PARAMETER(quint32, rinsebackFlowRate, rinsebackFlowRate_Def, rinsebackFlowRate_Min, rinsebackFlowRate_Max, rinsebackFlowRate_Res) protected: PROPERTY(QString , patientID , "") PROPERTY(QStringList, heparinTypeOptions , {}) PROPERTY(QStringList, acidConcentrateOptions , {}) PROPERTY(QStringList, bicarbonateConcentrateOptions , {}) PROPERTY(QStringList, dialyzerTypeOptions , {}) PROPERTY(bool , continueEnabled , false) AdjustParametersValidationRequestData treatmentData; // OK bool validate(const AdjustParametersValidationRequestData &vData); void setTreatmentData(); private: QString enumToString(GuiRequestReasons vEnum); signals: void didAdjustment(const AdjustParametersValidationRequestData &data); void didAdjustment(const AdjustParametersConfirmRequestData &data); void resetCreateTreatment(); void fwValidationFailed(QString reason); void fwValidationSuccess(); void scrollToParameter(QString parameter); private slots: bool onActionReceive(AdjustParametersValidationResponseData data); void onSettingsDone(); public slots: void doResetCreateTreatment(); void doValidation(); void doConfirm(); void doCancel(); void doUserModifiedParameters(); QStringList doGetPrescriptionParameterNames(); QStringList doGetPrescriptionParameterValues(); QStringList doGetOperatingParameterNames(); QStringList doGetOperatingParameterValues(); }; }