Index: SDDs/Blood_Prime.png =================================================================== diff -u Binary files differ Index: SDDs/Blood_Prime.puml =================================================================== diff -u --- SDDs/Blood_Prime.puml (revision 0) +++ SDDs/Blood_Prime.puml (revision 9cd2d1e8daf48222977349cc29d06fb3d8015e71) @@ -0,0 +1,45 @@ +@startuml Blood Prime + + participant TD as TD + participant SW as SW + participant UI as UI + actor USER as US + + 'Possible actions and interaction types + ' TD -> SW: MSG: Message + ' SW -> TD: MSG: Message + ' SW -> UI: CMD: command + ' UI -> SW: ACT: Action + ' US -> UI: User actions are: + ' ENT: User enters a value or string + ' TCH: User touches a button (RadioButton, CheckBox, ...) + ' SET: User sets/slides a slider + ' SCL: User scrolls a flipable area + ' + 'Messages conventions: + '[x \n ,] + '[x \n ,# certain amount of parameters according to the content] + '[x \n ,X The rest of the parameters do not matter.] + + == Blood Prime Progess == + TD -> SW: MSG: Blood Prime Progress [x82 Dat #2]\ + \n\t(F32) targetVol\ + \n\t(F32) deliveredVol + SW -> UI: CMD: Blood Prime Progress Data + UI -> US: ACT: Display Blood Prime Progress + + == Fluid Bolus Infusion == + note over UI + See Fluid Bolus Infusion diagram for details + end note + + == Fluid Bolus Volume Adjustment == + note over UI + See Fluid Bolus Volume Adjustment diagram for details + end note + + == Pressures Display == + note over UI + See Main Treatment Screen diagram for details + end note +@enduml Index: leahi.pro =================================================================== diff -u -rc9764bd0ad823c5c1725d7c7f556290c2c459d4d -r9cd2d1e8daf48222977349cc29d06fb3d8015e71 --- leahi.pro (.../leahi.pro) (revision c9764bd0ad823c5c1725d7c7f556290c2c459d4d) +++ leahi.pro (.../leahi.pro) (revision 9cd2d1e8daf48222977349cc29d06fb3d8015e71) @@ -186,6 +186,7 @@ sources/model/td/data/MTDValvesData.h \ sources/model/td/data/MTDVoltageData.h \ sources/model/td/data/treatment/MTreatmentBloodFlowData.h \ + sources/model/td/data/treatment/MTreatmentBloodPrimeData.h \ sources/model/td/data/treatment/MTreatmentParametersSetPointData.h \ sources/model/td/data/treatment/MTreatmentPressureOcclusionData.h \ sources/model/td/data/treatment/MTreatmentSalineData.h \ @@ -346,7 +347,6 @@ sources/model/hd/data/treatment/MTreatmentHeparinData.h \ sources/model/hd/data/treatment/MTreatmentRinsebackData.h \ sources/model/hd/data/treatment/MTreatmentRecirculateData.h \ - sources/model/hd/data/treatment/MTreatmentBloodPrimeData.h \ sources/model/hd/data/treatment/MTreatmentStopData.h \ sources/model/hd/data/post/MHDRTCEpochData.h \ sources/model/hd/data/MHDUsageInfoResponse.h \ @@ -452,7 +452,6 @@ sources/view/hd/data/treatment/VTreatmentHeparinData.h \ sources/view/hd/data/treatment/VTreatmentRinsebackData.h \ sources/view/hd/data/treatment/VTreatmentRecirculateData.h \ - sources/view/hd/data/treatment/VTreatmentBloodPrimeData.h \ sources/view/hd/data/treatment/VTreatmentStopData.h \ \ # ---------- Views - DG - Data - Pre-Treatment - Progress sources/view/dg/data/pretreatment/VDGFilterFlushData.h \ @@ -481,6 +480,7 @@ sources/view/td/data/VTDVoltageData.h \ sources/view/td/data/treatment/VTDTreatmentStatesData.h \ sources/view/td/data/treatment/VTreatmentBloodFlow.h \ + sources/view/td/data/treatment/VTreatmentBloodPrimeData.h \ sources/view/td/data/treatment/VTreatmentParametersSetPointData.h \ sources/view/td/data/treatment/VTreatmentPressureOcclusion.h \ sources/view/td/data/treatment/VTreatmentSalineData.h \ @@ -534,6 +534,7 @@ sources/model/td/data/MTDValvesData.cpp \ sources/model/td/data/MTDVoltageData.cpp \ sources/model/td/data/treatment/MTreatmentBloodFlowData.cpp \ + sources/model/td/data/treatment/MTreatmentBloodPrimeData.cpp \ sources/model/td/data/treatment/MTreatmentParametersSetPointData.cpp \ sources/model/td/data/treatment/MTreatmentPressureOcclusionData.cpp \ sources/model/td/data/treatment/MTreatmentSalineData.cpp \ @@ -656,7 +657,6 @@ sources/model/hd/data/treatment/MTreatmentHeparinData.cpp \ sources/model/hd/data/treatment/MTreatmentRinsebackData.cpp \ sources/model/hd/data/treatment/MTreatmentRecirculateData.cpp \ - sources/model/hd/data/treatment/MTreatmentBloodPrimeData.cpp \ sources/model/hd/data/treatment/MTreatmentStopData.cpp \ sources/model/hd/data/post/MHDRTCEpochData.cpp \ sources/model/hd/data/MHDUsageInfoResponse.cpp \ @@ -788,7 +788,6 @@ sources/view/hd/data/treatment/VTreatmentDialysateFlow.cpp \ sources/view/hd/data/treatment/VTreatmentHeparinData.cpp \ \ # ---------- Views - HD - Data - End-Treatment - sources/view/hd/data/treatment/VTreatmentBloodPrimeData.cpp \ sources/view/hd/data/treatment/VTreatmentRinsebackData.cpp \ sources/view/hd/data/treatment/VTreatmentRecirculateData.cpp \ sources/view/hd/data/treatment/VTreatmentStopData.cpp \ @@ -819,6 +818,7 @@ sources/view/td/data/VTDVoltageData.cpp \ sources/view/td/data/treatment/VTDTreatmentStatesData.cpp \ sources/view/td/data/treatment/VTreatmentBloodFlow.cpp \ + sources/view/td/data/treatment/VTreatmentBloodPrimeData.cpp \ sources/view/td/data/treatment/VTreatmentParametersSetPointData.cpp \ sources/view/td/data/treatment/VTreatmentPressureOcclusion.cpp \ sources/view/td/data/treatment/VTreatmentSalineData.cpp \ Index: sources/gui/GuiGlobals.h =================================================================== diff -u -rc9764bd0ad823c5c1725d7c7f556290c2c459d4d -r9cd2d1e8daf48222977349cc29d06fb3d8015e71 --- sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision c9764bd0ad823c5c1725d7c7f556290c2c459d4d) +++ sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 9cd2d1e8daf48222977349cc29d06fb3d8015e71) @@ -83,7 +83,7 @@ // POST ID_HDPostSingleResultData = 0x8E0F, // 142 //// ----- @CRAPIZED: had to change to avoid duplication - ID_HDPostFinalResultData = 0x8F00, // 143 + ID_HDPostFinalResultData = 0x8F0F, // 143 //// ----- @CRAPIZED: had to change to avoid duplication ID_DGPostSingleResultData = 0x9000, // 144 ID_DGPostFinalResultData = 0x9100, // 145 ID_UIPostFinalResultData = 0x9200, // 146 // ID_UIFinalResultTxr - UI Final Result response/Data transmit @@ -139,7 +139,7 @@ ID_Heparin = 0x8C00, // 140 ID_Rinseback = 0x5600, // 86 ID_Recirculate = 0x5A00, // 90 - ID_BloodPrime = 0x5900, // 89 + ID_BloodPrime = 0x8F00, // 143 ID_TreatmentStop = 0x4900, // 73 ID_Vitals = 0x6500, // 101 Index: sources/gui/qml/pages/treatment/TreatmentBloodPrime.qml =================================================================== diff -u -r77ba0083b790f7c1c851c60ecaeaa4f2e7eff7a8 -r9cd2d1e8daf48222977349cc29d06fb3d8015e71 --- sources/gui/qml/pages/treatment/TreatmentBloodPrime.qml (.../TreatmentBloodPrime.qml) (revision 77ba0083b790f7c1c851c60ecaeaa4f2e7eff7a8) +++ sources/gui/qml/pages/treatment/TreatmentBloodPrime.qml (.../TreatmentBloodPrime.qml) (revision 9cd2d1e8daf48222977349cc29d06fb3d8015e71) @@ -20,6 +20,7 @@ // Qml imports import "qrc:/globals" import "qrc:/components" +import "qrc:/pages/treatment" import "qrc:/pages/treatment/sections" /*! @@ -28,6 +29,26 @@ ScreenItem { id: _root objectName: "_TreatmentBloodPrime" + signal pauseClicked () + signal resumeClicked () + signal endClicked () + + signal accelerateClicked () + signal deccelerateClicked () + + signal sectionSalineClicked() + + Connections { target: vTreatmentAdjustmentBloodFlowRate + function onAdjustmentTriggered ( vValue ) { + if (vTreatmentAdjustmentBloodFlowRate.adjustment_Accepted) { + _notification.text = "" + } + else { + _notification.text = vTreatmentAdjustmentBloodFlowRate.text() + } + } + } + Text { id: _title anchors { top: parent.top @@ -39,51 +60,93 @@ font.pixelSize: Fonts.fontPixelTitle } - ProgressCircle { id: _circle - diameter: 335 - anchors.centerIn: parent - minimum : 0 - maximum : vTreatmentBloodPrime.target - value : vTreatmentBloodPrime.current + ProgressCircle { id: _volumeProgress + objectName : "_volumeProgress" + anchors { + left : parent.left + leftMargin : Variables.defaultMargin * 3 + verticalCenter : parent.verticalCenter + } + thickness : 35 + circleShadowColor : Colors.mainTreatmentLighterBlue + circleFillColor : Colors.mainTreatmentDarkerBlue + minimum : 0 + maximum : vTreatmentBloodPrime.target + value : vTreatmentBloodPrime.current - Text { id: _textVolume + Text { id: _volumeText + objectName : "_volumeText" anchors.centerIn: parent - color: Colors.textMain - text: vTreatmentBloodPrime.current.toFixed(0) + " " + qsTr(Variables.unitTextFluid) - font.pixelSize: 76 - font.weight: Font.ExtraLight + height : contentHeight + font { + pixelSize : 76 + weight : Font.Light + } + color : Colors.textMain + text : vTreatmentBloodPrime.current.toFixed(0) + " " + qsTr(Variables.unitTextFluid) } + } - Text { id: _labelRate + TreatmentSection { id: _bloodFlow + objectName: "_bloodFlow" + anchors { + right : _treatmentSaline.left + rightMargin : Variables.defaultMargin + verticalCenter : parent.verticalCenter + } + width : 285 + height : 420 + header.title : qsTr("Blood Flow" ) + header.showEdit : false + + TreatmentFlowsComponent { id: _bloodFlowComponent + objectName : "bloodFlowComponent" anchors { - top: parent.bottom - topMargin: 20 - horizontalCenter: parent.horizontalCenter + top : _bloodFlow.header.bottom + left : parent.left + leftMargin : Variables.defaultMargin + right : parent.right + rightMargin : Variables.defaultMargin } - color: Colors.textMain - text: vTreatmentBloodFlow.setFlowRate.toFixed(0) + " " + qsTr(Variables.unitTextFlowRate) - font.pixelSize: 23 + height : 250 + value : vTreatmentParametersSetPoint.bloodFlow + precision : Variables.bloodFlowPrecision + minimum : vTreatmentRanges.bloodFlowRateMin + maximum : vTreatmentRanges.bloodFlowRateMax + step : vTreatmentRanges.bloodFlowRateRes + unitText : Variables.unitTextFlowRate + buttonsEnabled : editEnabled + color : "transparent" + + onIncrement : function(newValue) { vTreatmentAdjustmentBloodFlowRate.doAdjustment(newValue) } + onDecrement : function(newValue) { vTreatmentAdjustmentBloodFlowRate.doAdjustment(newValue) } } } - TreatmentPressures { id: _pressuresTouchArea - // maybe now it makes sense for the ranges to be displayed - // arterialLowerBound : 0 // requested to hide the bounds - // arterialUpperBound : 0 // requested to hide the bounds - // venousLowerBound : 0 // requested to hide the bounds - // venousUpperBound : 0 // requested to hide the bounds + TreatmentSaline { id: _treatmentSaline + objectName : "_treatmentSaline" + anchors { + right : _treatmentPressures.left + rightMargin : Variables.defaultMargin + verticalCenter : parent.verticalCenter + } + width : _bloodFlow.width + height : _bloodFlow.height -// isTouchable : false -// x : Variables.screenGridLeftColumnX -// y : Variables.screenGridRow1Y -// width : Variables.screenGridAreaWidth -// height : Variables.screenGridAreaHeightRow1 + onEditClicked: sectionSalineClicked() } - Line { x: 0; y: Variables.screenGridRow1LineY; length: Variables.screenGridLineLength } - onVisibleChanged: { - if (visible) { - _mainMenu.hidden = true + TreatmentPressures { id: _treatmentPressures + objectName : "_treatmentPressures" + anchors { + right : parent.right + rightMargin : _volumeProgress.anchors.leftMargin + verticalCenter : parent.verticalCenter } + width : 750 + height : _bloodFlow.height + header.showEdit : false } + + NotificationBarSmall { id: _notification ; height: 60} } Index: sources/gui/qml/pages/treatment/TreatmentStack.qml =================================================================== diff -u -rc9764bd0ad823c5c1725d7c7f556290c2c459d4d -r9cd2d1e8daf48222977349cc29d06fb3d8015e71 --- sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision c9764bd0ad823c5c1725d7c7f556290c2c459d4d) +++ sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision 9cd2d1e8daf48222977349cc29d06fb3d8015e71) @@ -74,8 +74,13 @@ // Components TreatmentBloodPrime { id: _treatmentBloodPrime } - TreatmentHome { id: _treatmentHome } + Connections { target: _treatmentBloodPrime + function onSectionSalineClicked ( vValue ) { + _treatmentAdjustmentBolusVolume.open() + } + } + TreatmentHome { id: _treatmentHome } Connections { target: _treatmentHome function onSectionFlowClicked ( vValue ) { _treatmentAdjustmentSetPoints.open() Fisheye: Tag 9cd2d1e8daf48222977349cc29d06fb3d8015e71 refers to a dead (removed) revision in file `sources/model/hd/data/treatment/MTreatmentBloodPrimeData.cpp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 9cd2d1e8daf48222977349cc29d06fb3d8015e71 refers to a dead (removed) revision in file `sources/model/hd/data/treatment/MTreatmentBloodPrimeData.h'. Fisheye: No comparison available. Pass `N' to diff? Index: sources/model/td/data/treatment/MTreatmentBloodPrimeData.cpp =================================================================== diff -u --- sources/model/td/data/treatment/MTreatmentBloodPrimeData.cpp (revision 0) +++ sources/model/td/data/treatment/MTreatmentBloodPrimeData.cpp (revision 9cd2d1e8daf48222977349cc29d06fb3d8015e71) @@ -0,0 +1,49 @@ +/*! + * + * Copyright (c) 2021-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 MTreatmentBloodPrimeData.cpp + * \author (last) Behrouz NematiPour + * \date (last) 16-Aug-2022 + * \author (original) Behrouz NematiPour + * \date (original) 11-Apr-2021 + * + */ +#include "MTreatmentBloodPrimeData.h" + +using namespace Model; + +QVariantList MTreatmentBloodPrime::parameters() const { + return { + _data.mTarget .value, + _data.mCurrent.value, + }; +} + +bool MTreatmentBloodPrime::fromByteArray(const QByteArray &vByteArray, int *vIndex) { + int index = 0; // message data start position + if ( ! GetValue(vByteArray, index, _data.mTarget )) goto lError; + if ( ! GetValue(vByteArray, index, _data.mCurrent)) goto lError; + + return true ; + +lError: + if(vIndex) { *vIndex = index; } + + return false ; +} + +/*! + * \brief MTreatmentBloodPrime::data + * \details Provides model's Data from the received messages data values + * \return Data + */ +MTreatmentBloodPrime::Data MTreatmentBloodPrime::data() const { + Data data; + data.mTarget = _data.mTarget .value; + data.mCurrent = _data.mCurrent.value; + return data; +} Index: sources/model/td/data/treatment/MTreatmentBloodPrimeData.h =================================================================== diff -u --- sources/model/td/data/treatment/MTreatmentBloodPrimeData.h (revision 0) +++ sources/model/td/data/treatment/MTreatmentBloodPrimeData.h (revision 9cd2d1e8daf48222977349cc29d06fb3d8015e71) @@ -0,0 +1,83 @@ +/*! + * + * Copyright (c) 2021-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 MTreatmentBloodPrimeData.h + * \author (last) Behrouz NematiPour + * \date (last) 22-Mar-2023 + * \author (original) Behrouz NematiPour + * \date (original) 11-Apr-2021 + * + */ +#pragma once + +// Qt +#include + +// Project +#include "MAbstract.h" +#include "types.h" + +// forward declarations +class tst_models; + +namespace Model { + +/*! + * \brief The MTreatmentBloodPrime class + * \details The treatment BloodPrime bolus data model + * + * | MSG | CAN ID | Type | Ack | Src | Dst | Description | + * |:----:|:------:|:------:|:---:|:---:|:---:|:-----------: | + * |0x8F00| 0x020 | 1 Hz | N | TD | UI | Blood Prime Progress Data | + * + * | Payload || + * | || + * | #1:(F32) | \ref Data::mTarget | + * | #2:(F32) | \ref Data::mCurrent | + * + * \sa Data + * + *

Logging info

+ * | || + * | || + * | typeText | Datum | + * | unitText | TD | + * | infoText | BloodPrime | + * + */ +class MTreatmentBloodPrime : public MAbstract { + + // friends + friend class ::tst_models; + + QVariantList parameters() const override; + + struct { + Types::F32 mTarget ; + Types::F32 mCurrent; + } _data; + +public: + + Type_Enum typeText() const override { return Type_Enum::eDatum ; } + Unit_Enum unitText() const override { return Unit_Enum::eTD ; } + QString infoText() const override { return QString("BloodPrime") ; } + + struct Data { + float mTarget = 0; ///< Target volume of BloodPrime delivery + float mCurrent = 0; ///< Current volume of BloodPrime delivery + }; + +public: + MTreatmentBloodPrime () { } + + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; +}; +} + +typedef Model::MTreatmentBloodPrime::Data TreatmentBloodPrimeData; Fisheye: Tag 9cd2d1e8daf48222977349cc29d06fb3d8015e71 refers to a dead (removed) revision in file `sources/view/hd/data/treatment/VTreatmentBloodPrimeData.cpp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 9cd2d1e8daf48222977349cc29d06fb3d8015e71 refers to a dead (removed) revision in file `sources/view/hd/data/treatment/VTreatmentBloodPrimeData.h'. Fisheye: No comparison available. Pass `N' to diff? Index: sources/view/td/data/treatment/VTreatmentBloodPrimeData.cpp =================================================================== diff -u --- sources/view/td/data/treatment/VTreatmentBloodPrimeData.cpp (revision 0) +++ sources/view/td/data/treatment/VTreatmentBloodPrimeData.cpp (revision 9cd2d1e8daf48222977349cc29d06fb3d8015e71) @@ -0,0 +1,26 @@ +/*! + * + * Copyright (c) 2021-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 VTreatmentBloodPrimeData.cpp + * \author (last) Behrouz NematiPour + * \date (last) 16-Aug-2022 + * \author (original) Behrouz NematiPour + * \date (original) 11-Apr-2021 + * + */ +#include "VTreatmentBloodPrimeData.h" + +// Project +#include "GuiController.h" + +VIEW_DEF(VTreatmentBloodPrime, TreatmentBloodPrimeData) + +void VTreatmentBloodPrime::onActionReceive(const TreatmentBloodPrimeData &vData) +{ + target (vData.mTarget ); + current(vData.mCurrent); +} Index: sources/view/td/data/treatment/VTreatmentBloodPrimeData.h =================================================================== diff -u --- sources/view/td/data/treatment/VTreatmentBloodPrimeData.h (revision 0) +++ sources/view/td/data/treatment/VTreatmentBloodPrimeData.h (revision 9cd2d1e8daf48222977349cc29d06fb3d8015e71) @@ -0,0 +1,44 @@ +/*! + * + * Copyright (c) 2021-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 VTreatmentBloodPrimeData.h + * \author (last) Behrouz NematiPour + * \date (last) 16-Aug-2022 + * \author (original) Behrouz NematiPour + * \date (original) 11-Apr-2021 + * + */ +#pragma once + +// Qt +#include + +// Project +#include "main.h" // Doxygen : do not remove +#include "VView.h" +#include "MTreatmentBloodPrimeData.h" + +// namespace +namespace View { + +/*! + * \brief The VTreatmentBloodPrime class + * \details View for Model's data representation. + * + * \sa Model::MTreatmentBloodPrime + * + */ +class VTreatmentBloodPrime : public QObject +{ + Q_OBJECT + + PROPERTY( float , target , 0) + PROPERTY( float , current , 0) + + VIEW_DEC(VTreatmentBloodPrime, TreatmentBloodPrimeData) +}; +}