#ifndef VCREATETREATMENT_H #define VCREATETREATMENT_H // Qt #include #include #include #include #include #include // Project #include "mtreatmentparameters.h" #include "mtreatmentparametersresp.h" #include "guicontroller.h" #include "storageglobals.h" #include "filesaver.h" using namespace Storage; using namespace Gui; namespace View { class VCreateTreatment : public QObject { Q_OBJECT public: explicit VCreateTreatment(QObject *parent = nullptr); protected: TREATMENT_PARAMETER(quint32, bloodFlowRate, 100) // mL/min TREATMENT_PARAMETER(quint32, dialysateFlowRate, 100) // mL/min TREATMENT_PARAMETER(quint32, duration, 60) // minutes TREATMENT_PARAMETER(quint32, heparinDispensingRate, 0) // mL/hr TREATMENT_PARAMETER(quint32, heparinBolusVolume, 100) // mL TREATMENT_PARAMETER(quint32, heparinStopTime, 1000) // mL TREATMENT_PARAMETER(quint32, salineBolusVolume, 9999) // mL TREATMENT_PARAMETER(quint32, acidConcentrate, 9999) // lookup idx TREATMENT_PARAMETER(quint32, bicarbonateConcentrate, 9999) // lookup idx TREATMENT_PARAMETER(quint32, dialyzerType, 9999) // lookup idx TREATMENT_PARAMETER(quint32, dialysateTemp, 35) // Celsius TREATMENT_PARAMETER(quint32, arterialPressureLimitLow, 0) // mmHg TREATMENT_PARAMETER(quint32, arterialPressureLimitHigh, 0) // mmHg TREATMENT_PARAMETER(quint32, venousPressureLimitLow, 0) // mmHg TREATMENT_PARAMETER(quint32, venousPressureLimitHigh, 0) // mmHg TREATMENT_PARAMETER(quint32, bloodPressureMeasureInterval, 0) // minutes TREATMENT_PARAMETER(quint32, rinsebackFlowRate, 50) // mL/min protected: // ranges PROPERTY(quint32, bloodFlowRateMin, 100) PROPERTY(quint32, bloodFlowRateMax, 500) PROPERTY(quint32, dialysateFlowRateMin, 100) PROPERTY(quint32, dialysateFlowRateMax, 600) PROPERTY(quint32, durationMin, 60) PROPERTY(quint32, durationMax, 480) PROPERTY(quint32, heparinDispensingRateMin, 0) PROPERTY(quint32, heparinDispensingRateMax, 1000) PROPERTY(quint32, heparinBolusVolumeMin, 100) PROPERTY(quint32, heparinBolusVolumeMax, 2000) PROPERTY(quint32, heparinStopTimeMin, 1000) PROPERTY(quint32, heparinStopTimeMax, 2000) PROPERTY(QStringList, salineBolusOptions, QStringList() << "100 mL" << "200 mL" << "300 mL") PROPERTY(QStringList, acidConcentrateOptions, QStringList() << "08-1251-1" << "08-2251-0" << "08-3251-9") PROPERTY(QStringList, bicarbonateConcentrateOptions, QStringList() << "Dimesol - BC-201") PROPERTY(QStringList, dialyzerTypeOptions, QStringList() << "Nipro Elisio-H 17" << "Nipro Elisio-H 19" << "Fresenius Optiflux F160NRe" << "Fresenius Optiflux F180NRe") PROPERTY(quint32, dialysateTempMin, 35) PROPERTY(quint32, dialysateTempMax, 39) PROPERTY(qint32, arterialPressureLimitLowMin, -300) PROPERTY(qint32, arterialPressureLimitLowMax, 200) PROPERTY(qint32, arterialPressureLimitHighMin, -300) PROPERTY(qint32, arterialPressureLimitHighMax, 200) PROPERTY(qint32, venousPressureLimitLowMin, -100) PROPERTY(qint32, venousPressureLimitLowMax, 600) PROPERTY(qint32, venousPressureLimitHighMin, 0) PROPERTY(qint32, venousPressureLimitHighMax, 600) PROPERTY(quint32, bloodPressureMeasureIntervalMin, 0) PROPERTY(quint32, bloodPressureMeasureIntervalMax, 30) PROPERTY(quint32, rinsebackFlowRateMin, 50) PROPERTY(quint32, rinsebackFlowRateMax, 150) PROPERTY(bool, continueEnabled, false) PROPERTY(bool, saveTreatmentProfile, false) TreatmentData treatmentData; bool validate(const TreatmentData &vData); void saveNewTreatment(QJsonObject obj); QJsonObject loadTreatmentParameterRanges(); QStringList jsonArrayToStringList(const QJsonArray &arr); bool indexInItems(quint32 idx, const QStringList &items); void setTreatmentData(); private: enum UIRejectReasons { OUT_OF_RANGE, LOW_HIGH_INCOMPATIBLE }; QHash uiRejections { { OUT_OF_RANGE, "The selected value is out of range." }, { LOW_HIGH_INCOMPATIBLE, "The low and high selections are incompatible." }, }; QString enumToString(GuiRequestReasons vEnum); private slots: void onFinishedSaveNewTreatment(bool result); signals: void didCreateTreatment(TreatmentData); void showConfirm(); void showPrime(); void showBegin(); void validateParamsWithFW(GuiActionType,QVariantList); void resetCreateTreatment(); void fwValidationFailed(QString reason); public slots: void onResetCreateTreatment(); void onFinishedCreate(); void onFinishedConfirm(); void onFinishedPrime(); void onStart(); void onFWValidationResponse(GuiActionType actionType, QVariantList messageData); void onUserModifiedParameters(); }; } #endif // VCREATETREATMENT_H