Index: leahi.pro
===================================================================
diff -u -r99d10909ee4ee821cd4ab6dc323c3798d9090b39 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- leahi.pro (.../leahi.pro) (revision 99d10909ee4ee821cd4ab6dc323c3798d9090b39)
+++ leahi.pro (.../leahi.pro) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -158,6 +158,7 @@
sources/model/td/adjustment/settings/MAdjustTDSerialNumberResponse.h \
sources/model/td/adjustment/settings/MAdjustTDVersionsRequest.h \
sources/model/td/adjustment/settings/MAdjustTDVersionsResponse.h \
+ sources/model/td/adjustment/treatment/MTreatmentAdjustVitalsResponse.h \
sources/model/td/data/MTDAirBubbleData.h \
sources/model/td/data/MTDAirPumpData.h \
sources/model/td/data/MTDAirTrapData.h \
@@ -174,6 +175,7 @@
sources/model/td/data/treatment/MTreatmentStatesData.h \
sources/model/td/data/treatment/MTreatmentTimeData.h \
sources/model/td/data/treatment/MTreatmentUltrafiltrationData.h \
+ sources/model/td/data/treatment/MTreatmentVitalsData.h \
sources/storage/Settings.h \
sources/storage/TreatmentLog.h \
sources/bluetooth/BluetoothInterface.h \
@@ -206,6 +208,7 @@
sources/view/td/data/VTDOpModeData.h \
\ # ---------- Views - TD - Adjustment - In-Treatment
sources/view/td/adjustment/treatment/VTreatmentAdjustmentSaline.h \
+ sources/view/td/adjustment/treatment/VTreatmentAdjustmentVitals.h \
\ # ---------- Models - TD - Adjustment - In-Treatment
sources/model/td/adjustment/treatment/MTreatmentAdjustSalineResponse.h \
\ # ---------- Models - confirm
@@ -466,6 +469,7 @@
sources/model/td/adjustment/settings/MAdjustTDSerialNumberResponse.cpp \
sources/model/td/adjustment/settings/MAdjustTDVersionsRequest.cpp \
sources/model/td/adjustment/settings/MAdjustTDVersionsResponse.cpp \
+ sources/model/td/adjustment/treatment/MTreatmentAdjustVitalsResponse.cpp \
sources/model/td/data/MTDAirBubbleData.cpp \
sources/model/td/data/MTDAirPumpData.cpp \
sources/model/td/data/MTDAirTrapData.cpp \
@@ -482,6 +486,7 @@
sources/model/td/data/treatment/MTreatmentStatesData.cpp \
sources/model/td/data/treatment/MTreatmentTimeData.cpp \
sources/model/td/data/treatment/MTreatmentUltrafiltrationData.cpp \
+ sources/model/td/data/treatment/MTreatmentVitalsData.cpp \
sources/model/ui/data/MUIBloodPressureData.cpp \
sources/storage/Settings.cpp \
sources/storage/TreatmentLog.cpp \
@@ -632,6 +637,7 @@
sources/view/td/data/VTDOpModeData.cpp \
\ # ---------- Views - TD - Adjustment - In-Treatment
sources/view/td/adjustment/treatment/VTreatmentAdjustmentSaline.cpp \
+ sources/view/td/adjustment/treatment/VTreatmentAdjustmentVitals.cpp \
\ # ---------- Views - CONFIRM
sources/view/confirm/VConfirm.cpp \
\ # ---------- Views - POST
Index: leahi.qrc
===================================================================
diff -u -re1ecb77ba0ff9619b7363f14e1ed3c3e110c4057 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- leahi.qrc (.../leahi.qrc) (revision e1ecb77ba0ff9619b7363f14e1ed3c3e110c4057)
+++ leahi.qrc (.../leahi.qrc) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -54,7 +54,6 @@
resources/images/diality-splash.png
resources/images/ArrowRight.png
resources/images/ArrowLeft.png
- resources/images/logo d Dark Transparent.png
resources/images/Close.png
resources/images/bell-on.png
resources/images/bell-off.png
@@ -99,6 +98,8 @@
resources/images/Information.png
resources/images/Storage.png
resources/images/help.png
+ resources/images/Popup_gradient.png
+ resources/images/backspace.png
sources/gui/qml/components/MainMenu.qml
@@ -141,7 +142,6 @@
sources/gui/qml/components/UltrafiltrationButton.qml
sources/gui/qml/components/ImageWave.qml
sources/gui/qml/components/ImageClock.qml
- sources/gui/qml/components/ImageLogoDDarkTransparent.qml
sources/gui/qml/components/ConfirmTreatmentTableEntry.qml
sources/gui/qml/components/DebugDataColumn.qml
sources/gui/qml/components/RangeSlider.qml
@@ -155,7 +155,6 @@
sources/gui/qml/components/FooterStatic.qml
sources/gui/qml/components/TimeEntry.qml
sources/gui/qml/components/Label.qml
- sources/gui/qml/components/EntryDialog.qml
sources/gui/qml/components/SliderArrows.qml
sources/gui/qml/components/QRCode.qml
sources/gui/qml/components/ContentArea.qml
@@ -164,6 +163,7 @@
sources/gui/qml/components/HeaderBar.qml
sources/gui/qml/components/HeaderBarPopup.qml
sources/gui/qml/components/AlarmButtonRow.qml
+ sources/gui/qml/components/NumPad.qml
sources/gui/qml/compounds/PressureRangeSlider.qml
@@ -271,6 +271,7 @@
sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentUltrafiltrationEdit.qml
sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentUltrafiltrationConfirm.qml
sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentPressuresLimits.qml
+ sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentVitals.qml
sources/gui/qml/pages/endtreatment/EndTreatmentRinsebackStack.qml
Index: sources/canbus/MessageDispatcher.cpp
===================================================================
diff -u -rf2e4eba6e85c5d36537be782926f23cc9dc01037 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision f2e4eba6e85c5d36537be782926f23cc9dc01037)
+++ sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -355,6 +355,17 @@
}
/**
+ * \details This method transmits the Vitals Adjustment Denali message.
+ * \param vData - Data model contains treatment Vitals adjustment state.
+ * \return void
+ */
+void MessageDispatcher::onAdjustment(const AdjustVitalsRequestData &)
+{
+ QVariantList mData;
+ onActionTransmit(GuiActionType::ID_AdjustVitalsReq, mData);
+}
+
+/**
* \details This method transmits the Heparin Adjustment Denali message.
* \param vData - Data model contains treatment Heparin adjustment state.
* \return void
Index: sources/canbus/MessageDispatcher.h
===================================================================
diff -u -rf2e4eba6e85c5d36537be782926f23cc9dc01037 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/canbus/MessageDispatcher.h (.../MessageDispatcher.h) (revision f2e4eba6e85c5d36537be782926f23cc9dc01037)
+++ sources/canbus/MessageDispatcher.h (.../MessageDispatcher.h) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -135,6 +135,7 @@
GuiActionType::ID_AdjustUltrafiltrationEditReq ,
GuiActionType::ID_AdjustUltrafiltrationConfirmReq ,
GuiActionType::ID_AdjustSalineReq ,
+ GuiActionType::ID_AdjustVitalsReq ,
GuiActionType::ID_AdjustHeparinReq ,
GuiActionType::ID_AdjustPressuresLimitsReq ,
// End-Treatment
Index: sources/canbus/MessageGlobals.h
===================================================================
diff -u -r47b25a76644ca44b81b5a4a728346f8e72e1dc3b -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 47b25a76644ca44b81b5a4a728346f8e72e1dc3b)
+++ sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -77,6 +77,7 @@
{Gui::GuiActionType::ID_DialysateOutletFlow , 13 * 4 }, //13 parameters each 4bytes
{Gui::GuiActionType::ID_PressureOcclusion , 12 * 4 }, //12 parameters each 4bytes
{Gui::GuiActionType::ID_Saline , 4 * 4 }, // 4 parameters each 4bytes
+ {Gui::GuiActionType::ID_Vitals , 3 * 4 }, // 3 parameters each 4bytes
{Gui::GuiActionType::ID_Ultrafiltration , 4 * 4 }, // 4 parameters each 4bytes
{Gui::GuiActionType::ID_Heparin , 2 * 4 }, // 2 parameters each 4bytes
{Gui::GuiActionType::ID_Rinseback , 6 * 4 }, // 6 parameters each 4bytes
@@ -208,6 +209,10 @@
{Gui::GuiActionType::ID_AdjustSalineRsp , 3 * 4 }, // 3 parameters each 4bytes
// ----
+ {Gui::GuiActionType::ID_AdjustVitalsReq , 0 * 4 }, // 0 parameter each 4bytes
+ {Gui::GuiActionType::ID_AdjustVitalsRsp , 2 * 4 }, // 2 parameters each 4bytes
+
+ // ----
{Gui::GuiActionType::ID_AdjustHeparinReq , 1 * 4 }, // 1 parameter each 4bytes
{Gui::GuiActionType::ID_AdjustHeparinRsp , 2 * 4 }, // 3 parameters each 4bytes
Index: sources/canbus/MessageInterpreter.cpp
===================================================================
diff -u -r3c07dc803109f716937b692cb4a67a5324bb9ca3 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 3c07dc803109f716937b692cb4a67a5324bb9ca3)
+++ sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -250,6 +250,7 @@
case Gui::GuiActionType::ID_AdjustBloodDialysateReq : INTERPRET_TRANSMIT_MESSAGE(AdjustBloodDialysateRequestData ); break;
case Gui::GuiActionType::ID_AdjustPressuresLimitsReq : INTERPRET_TRANSMIT_MESSAGE(AdjustPressuresLimitsRequestData ); break;
case Gui::GuiActionType::ID_AdjustSalineReq : INTERPRET_TRANSMIT_MESSAGE(AdjustSalineRequestData ); break;
+ case Gui::GuiActionType::ID_AdjustVitalsReq : INTERPRET_TRANSMIT_MESSAGE(AdjustVitalsRequestData ); break;
case Gui::GuiActionType::ID_AdjustHeparinReq : INTERPRET_TRANSMIT_MESSAGE(AdjustHeparinRequestData ); break;
// in-treatment - ultrafiltration
case Gui::GuiActionType::ID_AdjustUltrafiltrationStateReq : INTERPRET_TRANSMIT_MESSAGE(AdjustUltrafiltrationStateRequestData ); break;
@@ -513,6 +514,7 @@
case Gui::GuiActionType::ID_DialysateOutletFlow : ok = notify(vMessage, vData, Gui::GuiActionType::ID_DialysateOutletFlow ); break;
case Gui::GuiActionType::ID_PressureOcclusion : ok = notify(vMessage, vData, Gui::GuiActionType::ID_PressureOcclusion ); break;
case Gui::GuiActionType::ID_Saline : ok = notify(vMessage, vData, Gui::GuiActionType::ID_Saline ); break;
+ case Gui::GuiActionType::ID_Vitals : ok = notify(vMessage, vData, Gui::GuiActionType::ID_Vitals ); break;
case Gui::GuiActionType::ID_Heparin : ok = notify(vMessage, vData, Gui::GuiActionType::ID_Heparin ); break;
case Gui::GuiActionType::ID_Rinseback : ok = notify(vMessage, vData, Gui::GuiActionType::ID_Rinseback ); break;
case Gui::GuiActionType::ID_Recirculate : ok = notify(vMessage, vData, Gui::GuiActionType::ID_Recirculate ); break;
@@ -525,6 +527,7 @@
case Gui::GuiActionType::ID_AdjustBloodDialysateRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustBloodDialysateRsp ); break;
case Gui::GuiActionType::ID_AdjustPressuresLimitsRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustPressuresLimitsRsp ); break;
case Gui::GuiActionType::ID_AdjustSalineRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustSalineRsp ); break;
+ case Gui::GuiActionType::ID_AdjustVitalsRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustVitalsRsp ); break;
case Gui::GuiActionType::ID_AdjustUltrafiltrationStateRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustUltrafiltrationStateRsp ); break;
case Gui::GuiActionType::ID_AdjustHeparinRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustHeparinRsp ); break;
case Gui::GuiActionType::ID_AdjustRinsebackRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustRinsebackRsp ); break;
Index: sources/gui/GuiGlobals.cpp
===================================================================
diff -u -r3c07dc803109f716937b692cb4a67a5324bb9ca3 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/gui/GuiGlobals.cpp (.../GuiGlobals.cpp) (revision 3c07dc803109f716937b692cb4a67a5324bb9ca3)
+++ sources/gui/GuiGlobals.cpp (.../GuiGlobals.cpp) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -124,6 +124,7 @@
#include "VTreatmentAdjustmentUltrafiltrationEdit.h"
#include "VTreatmentAdjustmentUltrafiltrationConfirm.h"
#include "VTreatmentAdjustmentSaline.h"
+#include "VTreatmentAdjustmentVitals.h"
#include "VTreatmentAdjustmentHeparin.h"
#include "VTreatmentAdjustmentRinseback.h"
#include "VTreatmentAdjustmentRecirculate.h"
Index: sources/gui/GuiGlobals.h
===================================================================
diff -u -r99d10909ee4ee821cd4ab6dc323c3798d9090b39 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 99d10909ee4ee821cd4ab6dc323c3798d9090b39)
+++ sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -140,6 +140,7 @@
ID_Recirculate = 0x5A00, // 90
ID_BloodPrime = 0x5900, // 89
ID_TreatmentStop = 0x4900, // 73
+ ID_Vitals = 0x9900, // TESTING -- UPDATE WITH ACTUAL
// Alarm Messages
ID_AlarmStatus = 0x0100, // 01 //// ----- @LEAHIZED
@@ -237,6 +238,9 @@
ID_AdjustSalineReq = 0x5E00, // 94
ID_AdjustSalineRsp = 0x5F00, // 95
+ ID_AdjustVitalsReq = 0x4321, // TESTING -- UPDATE WITH ACTUAL
+ ID_AdjustVitalsRsp = 0x1234, // TESTING -- UPDATE WITH ACTUAL
+
ID_AdjustHeparinReq = 0x4B00, // 75
ID_AdjustHeparinRsp = 0x4C00, // 76
Fisheye: Tag c1d0546e2d1a51ff919b2172ce647003359f0853 refers to a dead (removed) revision in file `sources/gui/qml/components/EntryDialog.qml'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag c1d0546e2d1a51ff919b2172ce647003359f0853 refers to a dead (removed) revision in file `sources/gui/qml/components/ImageLogoDDarkTransparent.qml'.
Fisheye: No comparison available. Pass `N' to diff?
Index: sources/gui/qml/components/ModalDialog.qml
===================================================================
diff -u -rdeaef8b5bdfe9be7293e63fb6ac256a9ce3cd3f4 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/gui/qml/components/ModalDialog.qml (.../ModalDialog.qml) (revision deaef8b5bdfe9be7293e63fb6ac256a9ce3cd3f4)
+++ sources/gui/qml/components/ModalDialog.qml (.../ModalDialog.qml) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -21,6 +21,7 @@
// Project
// Qml imports
import "qrc:/globals"
+import "qrc:/components"
/*!
* \brief The parent item for modal dialogs
@@ -37,6 +38,8 @@
property alias notificationText : _notification.text
property alias notification : _notification
property bool showDropShadow : false
+ property alias numPad : _numPad
+ property bool showGradient : false
width : Variables.dialogWidth
height : Variables.dialogHeight
@@ -60,20 +63,37 @@
}
background: Rectangle { id: _backgroundRect
- color : Colors.backgroundDialog
- radius: Variables.dialogRadius
+ color : Colors.backgroundDialog
+ radius : Variables.dialogRadius
- layer.enabled: showDropShadow
+ layer.enabled : showDropShadow
layer.effect: DropShadow {
id: _dropShadow
horizontalOffset: 4
verticalOffset : 4
radius : 12
samples : 32
- color : "#4DFFF8E1"
+ color : Colors.dropShadowDialogColor
source : _backgroundRect
anchors.fill : _backgroundRect
}
+
+ Image { id: _backgroundImage
+ anchors.fill: parent
+ source : "qrc:/images/iPopupGradient"
+ fillMode : Image.PreserveAspectCrop
+ visible : _root.showGradient
+
+ layer.enabled : true
+ layer.effect: OpacityMask {
+ maskSource: Rectangle {
+ width : _backgroundImage.width
+ height : _backgroundImage.height
+ radius : _root.radius
+ antialiasing : true
+ }
+ }
+ }
}
onVisibleChanged: {
@@ -82,6 +102,15 @@
}
}
+ NumPad { id: _numPad
+ x: Math.round((_root.width - _numPad.width) / 2)
+ y: Math.round((Variables.applicationHeight -_root.y - _numPad.height - Variables.mainMenuHeight * 2))
+
+ onCancel: {
+ _numPad.hide()
+ }
+ }
+
NumberAnimation { id: _autoHideAnimation
running: false
target: _root
Index: sources/gui/qml/components/NumPad.qml
===================================================================
diff -u
--- sources/gui/qml/components/NumPad.qml (revision 0)
+++ sources/gui/qml/components/NumPad.qml (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -0,0 +1,236 @@
+/*!
+ *
+ * Copyright (c) 2020-2025 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 NumPad.qml
+ * \author (last) Nico Ramirez
+ * \date (last) 28-Aug-2025
+ * \author (original) Nico Ramirez
+ * \date (original) 28-Aug-2025
+ *
+ */
+
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+import QtGraphicalEffects 1.12
+
+import "qrc:/components"
+import "qrc:/globals"
+
+Rectangle { id: _root
+ property var settingValue : undefined
+ property alias unit : _unitText.text
+ property alias range : _range.text
+ property alias title : _title.text
+
+ property alias displayValue : _valueLabel.text
+ property int precision : 0
+ property var getter : null
+ property var setter : null
+ property var validator : null
+ readonly property bool isValueValid : validator ? validator(valueInt) : true
+ readonly property var valueInt : isNaN(parseInt(_valueLabel.text)) ? undefined : parseInt(_valueLabel.text)
+ readonly property string backSpace : "qrc:/images/iBackspace"
+
+ signal cancel()
+
+ x: Math.round((Variables.applicationWidth - _root.width) / 2)
+ y: Math.round((Variables.applicationHeight - _root.height))
+
+ function open(entry, title, min, max, unit) {
+ reset()
+ _root.settingValue = Qt.binding(function () { return entry.text })
+ _root.title = title
+ _root.unit = unit
+ _root.range = min.isEmpty &&
+ max.isEmpty ? "" : ("%1 %2 - %3") .arg(qsTr("Range:"))
+ .arg(min)
+ .arg(max)
+ _root.getter = entry.text
+ _root.setter = function (value) { entry.text = value }
+ _root.validator = function (value) { { return value >= min && value <= max } }
+ _keyboard.setVisible(false)
+ show()
+ }
+
+ function show() { if ( ! _root.visible ) { _root.visible = true } }
+
+ function hide() { if ( _root.visible ) { _root.visible = false } }
+
+ function reset() {
+ _numPadGrid.replaceValueText = true
+ _root.getter = null
+ _root.setter = null
+ _root.displayValue = ""
+ }
+
+ onVisibleChanged : if ( ! _root.visible ) { reset() }
+ onDisplayValueChanged : if ( _root.setter ) { _root.setter( _valueLabel.text ) }
+ onSettingValueChanged : _valueLabel.text = _root.settingValue !== undefined ? _root.settingValue : ""
+ width : 450
+ height : 500
+ visible : false
+ radius : 9
+ color : Colors.transparent
+
+ layer.enabled : true
+ layer.effect : DropShadow { id: _dropShadow
+ horizontalOffset: 4
+ verticalOffset : 4
+ radius : 12
+ samples : 32
+ color : Colors.dropShadowDialogColor
+ source : _root
+ anchors.fill : _root
+ }
+
+ Image { id: _backgroundImage
+ anchors.fill: parent
+ source : "qrc:/images/iPopupGradient"
+ fillMode : Image.PreserveAspectCrop
+
+ layer.enabled : true
+ layer.effect: OpacityMask {
+ maskSource: Rectangle {
+ width : _backgroundImage.width
+ height : _backgroundImage.height
+ radius : _root.radius
+ antialiasing : true
+ }
+ }
+ }
+
+ CloseButton { id : _closeButton
+ anchors {
+ top : parent.top
+ left : parent.left
+ margins : 10
+ }
+
+ onClicked: {
+ cancel()
+ reset()
+ }
+ }
+
+ Text { id: _title
+ anchors {
+ top : _root.top
+ topMargin : 5
+ horizontalCenter: _root.horizontalCenter
+
+ }
+ font {
+ pixelSize : 26
+ weight : Font.Medium
+ }
+ color : "white"
+ }
+
+ Rectangle { id: _numRect
+ anchors {
+ top : _root.top
+ topMargin : Variables.defaultMargin * 4
+ horizontalCenter: _root.horizontalCenter
+ }
+ width : 300
+ height : 75
+ radius : 10
+ color : "#324867"
+
+ Text { id: _valueLabel
+ anchors.centerIn: parent
+ font {
+ pixelSize : 65
+ weight : Font.DemiBold
+ }
+ color : isValueValid ? "white" : "gray"
+ text : ""
+ }
+ }
+
+ Text { id: _unitText
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ top : _numRect.bottom
+ topMargin : 10
+ }
+ font.pixelSize : 18
+ color : "white"
+ }
+
+ Text { id: _range
+ anchors {
+ bottom : _numRect.top
+ bottomMargin : 10
+ horizontalCenter: parent.horizontalCenter
+ }
+ font.pixelSize : 20
+ color : "#E0CDA9"
+ }
+
+ Grid { id: _numPadGrid
+ anchors {
+ left : _root.left
+ right : _root.right
+ bottom : _root.bottom
+ margins : _numRect.visible ? 20 : 70
+ }
+ columns : 3
+ columnSpacing : 2
+ rows : 4
+ rowSpacing : 2
+ height : 275
+
+ property bool replaceValueText: true
+ property int cellWidth : _numPadGrid.width / columns
+ property int cellHeight : _numPadGrid.height / rows
+
+ Repeater {
+ model: [ "7", "8", "9",
+ "4", "5", "6",
+ "1", "2", "3",
+ ".", "0", backSpace ]
+
+ delegate: Button { id: _keyButton
+ width : _numPadGrid.cellWidth
+ height : _numPadGrid.cellHeight
+ palette.buttonText : enabled ? "white" : "dimgrey"
+ text : modelData === backSpace ? "" : modelData
+ icon.source : modelData === backSpace ? modelData : ""
+ icon.width : 40
+ icon.height : 40
+ enabled : modelData === "." ? precision > 0 : true
+
+ font {
+ pixelSize : 30
+ bold : true
+ }
+ background: Rectangle { id: _keyBackground
+ color : _keyButton.pressed ? Colors.backgroundButtonSelectDark :
+ modelData === backSpace ? Qt.darker ("#263B57", 1.05) :
+ "#263B57"
+ }
+
+ onPressed: {
+ if (modelData === backSpace ) {
+ _numPadGrid.replaceValueText = false
+ _valueLabel.text = _valueLabel.text.substr(0, _valueLabel.text.length - 1)
+ }
+ else {
+ if (_numPadGrid.replaceValueText) {
+ _valueLabel.text = _keyButton.text
+ _numPadGrid.replaceValueText = false
+ }
+ else if (_valueLabel.text.length < 3) {
+ _valueLabel.text += _keyButton.text
+ }
+ }
+ }
+ }
+ }
+ }
+}
Index: sources/gui/qml/components/TextEntry.qml
===================================================================
diff -u -ra5760947d3ed0d2748ba023a1c25e3c6aa0b1de1 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/gui/qml/components/TextEntry.qml (.../TextEntry.qml) (revision a5760947d3ed0d2748ba023a1c25e3c6aa0b1de1)
+++ sources/gui/qml/components/TextEntry.qml (.../TextEntry.qml) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -36,6 +36,7 @@
property alias text : _input.text
property bool hasCursor : true
property alias lengthMax : _input.maximumLength
+ property bool useQtNumPad : true
readonly property alias isValid : _input.acceptableInput
@@ -62,7 +63,10 @@
if ( _root.hasCursor ) {
_input.selectAll()
}
- _keyboard.setVisible(true)
+
+ if (useQtNumPad) {
+ _keyboard.setVisible(true)
+ }
}
}
Index: sources/gui/qml/compounds/BPHREntry.qml
===================================================================
diff -u -ra5760947d3ed0d2748ba023a1c25e3c6aa0b1de1 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/gui/qml/compounds/BPHREntry.qml (.../BPHREntry.qml) (revision a5760947d3ed0d2748ba023a1c25e3c6aa0b1de1)
+++ sources/gui/qml/compounds/BPHREntry.qml (.../BPHREntry.qml) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -46,40 +46,45 @@
&& _heartRate .isValid
&& _private.isBloodPressureCompareValid
- signal clicked()
-
width : _container.width
height : _container.height
function setFocus(vShowKeyboard) {
if(vShowKeyboard) {
firstInput.textInput.forceActiveFocus()
- _keyboard.setVisible(true)
+ _keyboard.setVisible(false)
+ numPad.show()
}
}
QtObject { id: _private
property bool isBloodPressureCompareValid : (parseInt(_bloodPressureDiastolic.text) <= parseInt(_bloodPressureSystolic.text))
}
- anchors.horizontalCenter: parent.horizontalCenter
- y : Qt.inputMethod.visible && _keyboard.visible ? _root.topMarginContent : ( ( _root.contentRectHeight - _container.height ) / 2 )
- Behavior on y { NumberAnimation { duration: Variables.keybardAnimationDuration } }
+ anchors.fill: parent
Row { id: _container
spacing: 50
anchors.centerIn: parent
- Column { spacing : 25
+ Column {
+ spacing : 25
leftPadding : _root.titleIndent
- Row { spacing : 10
+ Row {
+ spacing : 10
TextEntry { id : _bloodPressureSystolic
text : Variables.notSetVariable(vTreatmentVitals.systolic, 0)
label.text : qsTr("Blood Pressure")
label.width : _root.labelWidth
validator : IntValidator { bottom: vTreatmentVitals.systolicMin; top : vTreatmentVitals.systolicMax }
- onClicked : _root.clicked()
nextInput : _bloodPressureDiastolic
textInput.color: (textInput.acceptableInput && _private.isBloodPressureCompareValid) ? Colors.textMain : Colors.red
+ useQtNumPad : false
+
+ onClicked : numPad.open ( _bloodPressureSystolic,
+ qsTr("Systolic"),
+ vTreatmentVitals.systolicMin,
+ vTreatmentVitals.systolicMax,
+ Variables.unitTextBloodPressure)
}
Label {
text : "/"
@@ -89,25 +94,40 @@
text : Variables.notSetVariable(vTreatmentVitals.diastolic, 0)
label.width : 0
validator : IntValidator { bottom: vTreatmentVitals.diastolicMin; top : vTreatmentVitals.diastolicMax }
- onClicked : _root.clicked()
nextInput : _heartRate
textInput.color: (textInput.acceptableInput && _private.isBloodPressureCompareValid) ? Colors.textMain : Colors.red
+ useQtNumPad : false
+
+ onClicked : numPad.open ( _bloodPressureDiastolic,
+ qsTr("Diastolic"),
+ vTreatmentVitals.diastolicMin,
+ _bloodPressureSystolic.textInput.acceptableInput &&
+ _bloodPressureSystolic.text < vTreatmentVitals.diastolicMax ? _bloodPressureSystolic.text :
+ vTreatmentVitals.diastolicMax,
+ Variables.unitTextBloodPressure)
}
Label {
- text : qsTr("mmHg")
+ text : Variables.unitTextBloodPressure
width : unitWidth
}
}
- Row { spacing : 10
+ Row {
+ spacing : 10
TextEntry { id : _heartRate
text : Variables.notSetVariable(vTreatmentVitals.heartRate, 0)
label.text : qsTr("Heart Rate")
label.width : _root.labelWidth
- onClicked : _root.clicked()
validator : IntValidator { bottom: vTreatmentVitals.heartRateMin; top : vTreatmentVitals.heartRateMax }
+ useQtNumPad : false
+
+ onClicked : numPad.open ( _heartRate,
+ qsTr("Heart Rate"),
+ vTreatmentVitals.heartRateMin,
+ vTreatmentVitals.heartRateMax,
+ Variables.unitTextHeartBeat)
}
Label {
- text : qsTr("BPM")
+ text : Variables.unitTextHeartBeat
width : unitWidth
}
}
Index: sources/gui/qml/globals/Colors.qml
===================================================================
diff -u -rb04fa0fce565a52305f2153f2cb6c5858453ab15 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/gui/qml/globals/Colors.qml (.../Colors.qml) (revision b04fa0fce565a52305f2153f2cb6c5858453ab15)
+++ sources/gui/qml/globals/Colors.qml (.../Colors.qml) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -132,6 +132,7 @@
readonly property color alarmTopBarNoneFg : white
readonly property color createTrProfileID : "#ffbb44"
+ readonly property color dropShadowDialogColor : "#4DFFF8E1"
readonly property color createTreatmentActive : "#3d8eef"
readonly property color createTreatmentInactive : backgroundRangeRect
Index: sources/gui/qml/main.qml
===================================================================
diff -u -re1ecb77ba0ff9619b7363f14e1ed3c3e110c4057 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/gui/qml/main.qml (.../main.qml) (revision e1ecb77ba0ff9619b7363f14e1ed3c3e110c4057)
+++ sources/gui/qml/main.qml (.../main.qml) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -115,6 +115,7 @@
import VTreatmentAdjustmentUltrafiltrationConfirm 0.1
import VTreatmentAdjustmentPressuresLimits 0.1
import VTreatmentAdjustmentSaline 0.1
+import VTreatmentAdjustmentVitals 0.1
import VTreatmentAdjustmentHeparin 0.1
import VTreatmentAdjustmentRinseback 0.1
import VTreatmentAdjustmentRecirculate 0.1
@@ -179,7 +180,7 @@
VTreatmentBloodFlow { id: vTreatmentBloodFlow }
VTreatmentVitals { id: vTreatmentVitals
- interval : vTreatmentCreate.bloodPressureMeasureInterval
+// interval : vTreatmentCreate.bloodPressureMeasureInterval // TESTING FOR 1 MIN TIMER -- REVERT FOR CR
enableDialog: vTDOpMode.inTreatment && vTDTreatmentStates.txTreatment
// As long as UI is in In-Tx BP/HR is updated and the dialog will pop up on interval.
onEnableDialogChanged : {
@@ -254,6 +255,7 @@
VTreatmentRanges { id: vTreatmentRanges }
VTreatmentAdjustmentSaline { id: vTreatmentAdjustmentSaline }
+ VTreatmentAdjustmentVitals { id: vTreatmentAdjustmentVitals }
VTreatmentAdjustmentUltrafiltrationState { id: vTreatmentAdjustmentUltrafiltrationState }
VTreatmentAdjustmentUltrafiltrationEdit { id: vTreatmentAdjustmentUltrafiltrationEdit }
VTreatmentAdjustmentUltrafiltrationConfirm { id: vTreatmentAdjustmentUltrafiltrationConfirm }
Index: sources/gui/qml/pages/treatment/TreatmentHome.qml
===================================================================
diff -u -rf8e37a0cbb537edceebee7a7c5f2676f497d1e26 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/gui/qml/pages/treatment/TreatmentHome.qml (.../TreatmentHome.qml) (revision f8e37a0cbb537edceebee7a7c5f2676f497d1e26)
+++ sources/gui/qml/pages/treatment/TreatmentHome.qml (.../TreatmentHome.qml) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -39,13 +39,10 @@
signal sectionPressuresClicked()
signal sectionTimeClicked()
signal sectionUltrafiltrationClicked()
- signal logVitalTime()
readonly property int cellWidth : (_root.width / 7) - 10 // = screen width / # columns
readonly property int cellHeight: (Variables.screenContentHeight / 2) - Variables.notificationHeight // = screen height / # rows - headerbar
- onLogVitalTime: _treatmentVitals.updateVitalTime()
-
Column { id: _column
objectName: "column"
@@ -90,8 +87,9 @@
color : "gray"
anchors {
top : parent.top
- topMargin : Variables.defaultMargin * 4
+ topMargin : Variables.defaultMargin * 3.5
right : parent.right
+ rightMargin : Variables.defaultMargin
}
horizontalAlignment : Text.AlignHCenter
verticalAlignment : Text.AlignVCenter
Index: sources/gui/qml/pages/treatment/TreatmentStack.qml
===================================================================
diff -u -rea51c0546c7061d225e7b9d8b754554c65f0d1b1 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision ea51c0546c7061d225e7b9d8b754554c65f0d1b1)
+++ sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -34,7 +34,7 @@
onVisibleChanged : { // this should never happen by design, but in tests it can easily happen and will block the screen touch.
_treatmentAdjustmentFlow .close()
- _vitalEntry .close( true ) // vQuit == true
+ _treatmentAdjustmentVitals .close()
_treatmentAdjustmentPressuresLimits .close()
_treatmentAdjustmentDuration .close()
_treatmentUltrafiltrationItem .close()
@@ -80,7 +80,7 @@
_treatmentAdjustmentFlow.open()
}
function onSectionVitalsClicked ( vValue ) {
- _vitalEntry.open()
+ _treatmentAdjustmentVitals.open()
}
function onSectionPressuresClicked ( vValue ) {
_treatmentAdjustmentPressuresLimits.open()
@@ -123,50 +123,8 @@
}
}
- EntryDialog { id: _vitalEntry
- function update(vSystolic, vDiastolic ,vHeartRate) {
- _bphrEntry.systolic = vSystolic ? vSystolic : ""
- _bphrEntry.diastolic = vDiastolic ? vDiastolic : ""
- _bphrEntry.heartRate = vHeartRate ? vHeartRate : ""
- }
+ TreatmentAdjustmentVitals { id: _treatmentAdjustmentVitals }
- titleText : qsTr("VITALS")
- confirmEnabled : _bphrEntry.isValid
- onConfirmClicked : {
- _vitalEntry.close()
- vTreatmentVitals.doConfirm(
- _bphrEntry.systolic ,
- _bphrEntry.diastolic ,
- _bphrEntry.heartRate
- )
- _treatmentHome.logVitalTime()
- }
-
- onCloseClicked : {
- vTreatmentVitals.doSkip() // only for logging
- }
-
- onOpened : vTreatmentVitals.doTimerStop() // Can't be moved to C++, and has to be handled here because it can manually being opened by the user
-
- onClosed : {
- if ( ! vQuit )
- vTreatmentVitals.doTimerStart()
- }
-
- BPHREntry { id : _bphrEntry
- contentRectHeight : _vitalEntry.contentRect.height
- }
-
- Connections { target: vTreatmentVitals
- function onDidTrigger ( vSystolic, vDiastolic, vHeartRate ) {
- if ( vTreatmentVitals.enableDialog ) {
- _vitalEntry.update ( vSystolic, vDiastolic, vHeartRate )
- _vitalEntry.open ()
- }
- }
- }
- }
-
// ---------- Manages Responses ----------
Connections { target: vTreatmentAdjustmentDuration
function onAdjustmentTriggered ( vValue ) {
Index: sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentBase.qml
===================================================================
diff -u -rf8e37a0cbb537edceebee7a7c5f2676f497d1e26 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentBase.qml (.../TreatmentAdjustmentBase.qml) (revision f8e37a0cbb537edceebee7a7c5f2676f497d1e26)
+++ sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentBase.qml (.../TreatmentAdjustmentBase.qml) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -27,14 +27,16 @@
* For all adjustment screens in treatment
*/
ModalDialog { id: _root
- contentItem.objectName: "TreatmentAdjustmentBase" //SquishQt testability
+ contentItem.objectName : "TreatmentAdjustmentBase" //SquishQt testability
+ showGradient : true
property string titleText: ""
property bool closeVisible: true
property bool confirmVisible: true
property bool backVisible: false
property alias information: _information
+ property bool confirmEnabled: true
signal closeClicked()
signal confirmClicked()
@@ -50,6 +52,8 @@
Rectangle { id : _headerRect
ConfirmButton { id : _confirmButton
visible: _root.confirmVisible
+ enabled: _root.confirmEnabled
+
onClicked : confirmClicked()
}
BackButton { id : _backButton
Index: sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentVitals.qml
===================================================================
diff -u
--- sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentVitals.qml (revision 0)
+++ sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentVitals.qml (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -0,0 +1,72 @@
+/*!
+ *
+ * Copyright (c) 2020-2025 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 TreatmentAdjustmentVitals.qml
+ * \author (last) Nico Ramirez
+ * \date (last) 28-Aug-2025
+ * \author (original) Nico Ramirez
+ * \date (original) 28-Aug-2025
+ *
+ */
+
+// Qt
+import QtQuick 2.12
+
+// Project
+
+// Qml imports
+import "qrc:/globals"
+import "qrc:/components"
+import "qrc:/compounds"
+
+TreatmentAdjustmentBase { id: _root
+ contentItem.objectName: "TreatmentAdjustmentVitals"
+
+ titleText : qsTr("VITALS")
+ confirmEnabled : _bphrEntry.isValid
+ height : 400
+ width : 750
+ y : 125
+
+ function update(vSystolic, vDiastolic ,vHeartRate) {
+ _bphrEntry.systolic = vSystolic ? vSystolic : ""
+ _bphrEntry.diastolic = vDiastolic ? vDiastolic : ""
+ _bphrEntry.heartRate = vHeartRate ? vHeartRate : ""
+ }
+
+ onOpened: vTreatmentVitals.doTimerStop()
+
+ onClosed: vTreatmentVitals.doTimerStart()
+
+ onConfirmClicked: {
+ numPad.hide()
+ _root.close()
+ vTreatmentVitals.doConfirm(
+ _bphrEntry.systolic ,
+ _bphrEntry.diastolic ,
+ _bphrEntry.heartRate
+ )
+ }
+
+ onCloseClicked: {
+ numPad.hide()
+ vTreatmentVitals.doSkip()
+ }
+
+ BPHREntry { id : _bphrEntry
+ contentRectHeight : 350
+ }
+
+ Connections { target: vTreatmentVitals
+ function onDidTrigger ( vSystolic, vDiastolic, vHeartRate ) {
+ if ( vTreatmentVitals.enableDialog ) {
+ _root.update ( vSystolic, vDiastolic, vHeartRate )
+ _root.open ()
+ }
+ }
+ }
+}
Index: sources/gui/qml/pages/treatment/sections/TreatmentVitals.qml
===================================================================
diff -u -r7caa737179a8c31825ae6445f593ac7ff5f95080 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/gui/qml/pages/treatment/sections/TreatmentVitals.qml (.../TreatmentVitals.qml) (revision 7caa737179a8c31825ae6445f593ac7ff5f95080)
+++ sources/gui/qml/pages/treatment/sections/TreatmentVitals.qml (.../TreatmentVitals.qml) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -39,7 +39,7 @@
height : 40
width : contentItem.width
topTextFont.pixelSize : Fonts.fontPixelVitals
- topTextFont.weight : Font.Bold
+ topTextFont.weight : Font.Medium
topText : Variables.notSetVariable(vTreatmentVitals.systolic, 2) + bloodSDSeparator + Variables.notSetVariable(vTreatmentVitals.diastolic, 2)
bottomText : Variables.unitTextBloodPressure
bottomTextFont.pixelSize: 20
@@ -51,7 +51,7 @@
height : 45
width : contentItem.width
topTextFont.pixelSize : Fonts.fontPixelVitals
- topTextFont.weight : Font.Bold
+ topTextFont.weight : Font.Medium
topText : Variables.notSetVariable(vTreatmentVitals.heartRate, 2)
bottomText : Variables.unitTextHeartBeat
bottomTextFont.pixelSize: 20
@@ -62,18 +62,14 @@
Text { id: _lastRecorded
height : 30
width : contentItem.width
- text : qsTr("Last Recorded: " )
- font.pixelSize : 18
+ font.pixelSize : 16
font.weight : Font.Normal
verticalAlignment : Text.AlignBottom
color : Colors.textMain
+ text : qsTr("Last Recorded: %1").arg(vTreatmentVitals.lastRead)
}
}
- function updateVitalTime() {
- _lastRecorded.text = qsTr("Last Recorded: " ) + vDateTime.time
- }
-
// TODO
// notification.text: qsTr("Interval:" )
// + " " + (vTreatmentVitals.interval ? (vTreatmentVitals.interval + qsTr("min")) : qsTr("OFF"))
Index: sources/model/MModel.h
===================================================================
diff -u -r3c07dc803109f716937b692cb4a67a5324bb9ca3 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/model/MModel.h (.../MModel.h) (revision 3c07dc803109f716937b692cb4a67a5324bb9ca3)
+++ sources/model/MModel.h (.../MModel.h) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -52,6 +52,7 @@
#include "MTreatmentPressureOcclusionData.h"
#include "MTreatmentRangesData.h"
#include "MTreatmentSalineData.h"
+#include "MTreatmentVitalsData.h"
#include "MTreatmentHeparinData.h"
#include "MTreatmentRinsebackData.h"
#include "MTreatmentRecirculateData.h"
@@ -139,6 +140,7 @@
#include "MTreatmentAdjustUltrafiltrationEditResponse.h"
#include "MTreatmentAdjustUltrafiltrationConfirmResponse.h"
#include "MTreatmentAdjustSalineResponse.h"
+#include "MTreatmentAdjustVitalsResponse.h"
#include "MTreatmentAdjustHeparinResponse.h"
#include "MTreatmentAdjustRinsebackResponse.h"
#include "MTreatmentAdjustRecirculateResponse.h"
@@ -337,6 +339,7 @@
REGISTER_METATYPE( PowerOffData ) \
REGISTER_METATYPE( TreatmentRangesData ) \
REGISTER_METATYPE( TreatmentSalineData ) \
+ REGISTER_METATYPE( TreatmentVitalsData ) \
REGISTER_METATYPE( TreatmentHeparinData ) \
REGISTER_METATYPE( TreatmentRinsebackData ) \
REGISTER_METATYPE( TreatmentRecirculateData ) \
@@ -427,6 +430,7 @@
REGISTER_METATYPE( AdjustUltrafiltrationEditRequestData ) \
REGISTER_METATYPE( AdjustUltrafiltrationConfirmRequestData ) \
REGISTER_METATYPE( AdjustSalineRequestData ) \
+ REGISTER_METATYPE( AdjustVitalsRequestData ) \
REGISTER_METATYPE( AdjustHeparinRequestData ) \
REGISTER_METATYPE( AdjustRinsebackRequestData ) \
REGISTER_METATYPE( AdjustRecirculateRequestData ) \
@@ -466,6 +470,7 @@
REGISTER_METATYPE( AdjustUltrafiltrationEditResponseData ) \
REGISTER_METATYPE( AdjustUltrafiltrationConfirmResponseData ) \
REGISTER_METATYPE( AdjustSalineResponseData ) \
+ REGISTER_METATYPE( AdjustVitalsResponseData ) \
REGISTER_METATYPE( AdjustHeparinResponseData ) \
REGISTER_METATYPE( AdjustRinsebackResponseData ) \
REGISTER_METATYPE( AdjustRecirculateResponseData ) \
@@ -532,6 +537,7 @@
ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, PowerOffData ) \
ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentRangesData ) \
ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentSalineData ) \
+ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentVitalsData ) \
ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentHeparinData ) \
ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentRinsebackData ) \
ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentRecirculateData ) \
@@ -611,6 +617,7 @@
ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AdjustUltrafiltrationEditResponseData ) \
ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AdjustUltrafiltrationConfirmResponseData ) \
ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AdjustSalineResponseData ) \
+ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AdjustVitalsResponseData ) \
ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AdjustHeparinResponseData ) \
ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AdjustRinsebackResponseData ) \
ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AdjustRecirculateResponseData ) \
@@ -649,6 +656,7 @@
ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustUltrafiltrationConfirmRequestData ) \
ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustParametersConfirmRequestData ) \
ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustSalineRequestData ) \
+ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustVitalsRequestData ) \
ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustHeparinRequestData ) \
ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustRinsebackRequestData ) \
ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustRecirculateRequestData ) \
@@ -739,6 +747,7 @@
ACTION_RECEIVE_BRIDGE_DEFINITION( PowerOffData ) \
ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentRangesData ) \
ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentSalineData ) \
+ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentVitalsData ) \
ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentHeparinData ) \
ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentRinsebackData ) \
ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentRecirculateData ) \
@@ -818,6 +827,7 @@
ACTION_RECEIVE_BRIDGE_DEFINITION( AdjustUltrafiltrationEditResponseData ) \
ACTION_RECEIVE_BRIDGE_DEFINITION( AdjustUltrafiltrationConfirmResponseData ) \
ACTION_RECEIVE_BRIDGE_DEFINITION( AdjustSalineResponseData ) \
+ ACTION_RECEIVE_BRIDGE_DEFINITION( AdjustVitalsResponseData ) \
ACTION_RECEIVE_BRIDGE_DEFINITION( AdjustHeparinResponseData ) \
ACTION_RECEIVE_BRIDGE_DEFINITION( AdjustRinsebackResponseData ) \
ACTION_RECEIVE_BRIDGE_DEFINITION( AdjustRecirculateResponseData ) \
@@ -879,6 +889,7 @@
ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustUltrafiltrationEditRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustUltrafiltrationConfirmRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustSalineRequestData ) \
+ ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustVitalsRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustHeparinRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustRinsebackRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustRecirculateRequestData ) \
@@ -939,6 +950,7 @@
ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustUltrafiltrationEditRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustUltrafiltrationConfirmRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustSalineRequestData ) \
+ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustVitalsRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustHeparinRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustRinsebackRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustRecirculateRequestData ) \
@@ -1000,6 +1012,7 @@
ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustUltrafiltrationConfirmRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustPressuresLimitsRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustSalineRequestData ) \
+ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustVitalsRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustHeparinRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustRinsebackRequestData ) \
ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustRecirculateRequestData ) \
@@ -1050,6 +1063,7 @@
ACTION_RECEIVE_SIGNAL( PowerOffData ) \
ACTION_RECEIVE_SIGNAL( TreatmentRangesData ) \
ACTION_RECEIVE_SIGNAL( TreatmentSalineData ) \
+ ACTION_RECEIVE_SIGNAL( TreatmentVitalsData ) \
ACTION_RECEIVE_SIGNAL( TreatmentHeparinData ) \
ACTION_RECEIVE_SIGNAL( TreatmentRinsebackData ) \
ACTION_RECEIVE_SIGNAL( TreatmentRecirculateData ) \
@@ -1130,6 +1144,7 @@
ACTION_RECEIVE_SIGNAL( AdjustUltrafiltrationEditResponseData ) \
ACTION_RECEIVE_SIGNAL( AdjustUltrafiltrationConfirmResponseData ) \
ACTION_RECEIVE_SIGNAL( AdjustSalineResponseData ) \
+ ACTION_RECEIVE_SIGNAL( AdjustVitalsResponseData ) \
ACTION_RECEIVE_SIGNAL( AdjustHeparinResponseData ) \
ACTION_RECEIVE_SIGNAL( AdjustRinsebackResponseData ) \
ACTION_RECEIVE_SIGNAL( AdjustRecirculateResponseData ) \
Index: sources/model/hd/adjustment/treatment/MTreatmentAdjustRequests.h
===================================================================
diff -u -r80d234c6e7374b9f4f7867ffbe2c52f5c1aae4a2 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/model/hd/adjustment/treatment/MTreatmentAdjustRequests.h (.../MTreatmentAdjustRequests.h) (revision 80d234c6e7374b9f4f7867ffbe2c52f5c1aae4a2)
+++ sources/model/hd/adjustment/treatment/MTreatmentAdjustRequests.h (.../MTreatmentAdjustRequests.h) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -250,6 +250,31 @@
};
/*!
+ * \brief The MAdjustVitalsReq class
+ * \details The model to request the Vitals state
+ *
+ * | MSG | CAN ID | M.Box | Type | Ack | Src | Dest | Description |
+ * |:----:|:------:|:-----:|:----:|:---:|:---:|:----:|:--------------------:|
+ * |0xXX00| 0x100 | 9 | Req | Y | UI | TD | Vitals Request |
+ *
+ * | Payload ||
+ * | ||
+ * | None ||
+ *
+ * \sa State
+ * \sa MTreatmentVitals: Vitals Data
+ * \sa MAdjustVitalsResponse : Vitals Response
+ *
+ */
+class MAdjustVitalsReq : public MModel {
+public:
+ static QString toString(const QVariantList &vParameters) {
+ return MModel::toString("AdjustVitals", vParameters);
+ }
+};
+
+
+/*!
* \brief The MAdjustHeparinReq class
* \details The model to request the Heparin state
*
@@ -454,6 +479,7 @@
typedef Model:: MAdjustUltrafiltrationEditReq AdjustUltrafiltrationEditRequestData;
typedef Model::MAdjustUltrafiltrationConfirmReq AdjustUltrafiltrationConfirmRequestData;
typedef Model:: MAdjustSalineReq AdjustSalineRequestData;
+typedef Model:: MAdjustVitalsReq AdjustVitalsRequestData;
typedef Model:: MAdjustHeparinReq AdjustHeparinRequestData;
typedef Model:: MAdjustRinsebackReq AdjustRinsebackRequestData;
typedef Model:: MAdjustRecirculateReq AdjustRecirculateRequestData;
Index: sources/model/td/adjustment/treatment/MTreatmentAdjustVitalsResponse.cpp
===================================================================
diff -u
--- sources/model/td/adjustment/treatment/MTreatmentAdjustVitalsResponse.cpp (revision 0)
+++ sources/model/td/adjustment/treatment/MTreatmentAdjustVitalsResponse.cpp (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -0,0 +1,50 @@
+/*!
+ *
+ * Copyright (c) 2021-2025 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 MTreatmentAdjustVitalsResponse.cpp
+ * \author (last) Nico Ramirez
+ * \date (last) 3-Sep-2025
+ * \author (original) Nico Ramirez
+ * \date (original) 3-Sep-2025
+ *
+ */
+
+#include "MTreatmentAdjustVitalsResponse.h"
+
+using namespace Model;
+
+QVariantList MAdjustVitalsResponse::parameters() const {
+ return {
+ _data.mAccepted.value,
+ _data.mReason .value,
+ };
+}
+
+bool MAdjustVitalsResponse::fromByteArray(const QByteArray &vByteArray, int *vIndex) {
+ int index = 0; // message data start position
+ if ( ! GetValue(vByteArray, index, _data.mAccepted )) goto lError;
+ if ( ! GetValue(vByteArray, index, _data.mReason )) goto lError;
+
+ return true ;
+
+lError:
+ if(vIndex) { *vIndex = index; }
+
+ return false ;
+}
+
+/*!
+ * \brief MAdjustVitalsResponse::data
+ * \details Provides model's Data from the received messages data values
+ * \return Data
+ */
+AdjustVitalsResponseData MAdjustVitalsResponse::data() const {
+ Data data;
+ data.mAccepted = _data.mAccepted.value;
+ data.mReason = _data.mReason .value;
+ return data;
+}
Index: sources/model/td/adjustment/treatment/MTreatmentAdjustVitalsResponse.h
===================================================================
diff -u
--- sources/model/td/adjustment/treatment/MTreatmentAdjustVitalsResponse.h (revision 0)
+++ sources/model/td/adjustment/treatment/MTreatmentAdjustVitalsResponse.h (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -0,0 +1,77 @@
+/*!
+ *
+ * Copyright (c) 2021-2025 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 MTreatmentAdjustVitalsResponse.h
+ * \author (last) Nico Ramirez
+ * \date (last) 3-Sep-2025
+ * \author (original) Nico Ramirez
+ * \date (original) 3-Sep-2025
+ *
+ */
+#pragma once
+
+// Project
+#include "MAbstract.h"
+#include "types.h"
+
+namespace Model {
+
+/*!
+ * \brief The MAdjustSalineResponse class
+ * \details The Saline Bolus adjustment response model
+ *
+ * | MSG | CAN ID | M.Box | Type | Ack | Src | Dest | Description |
+ * |:----:|:------:|:-----:|:----:|:---:|:---:|:----:|:---------------------:|
+ * |0xXX00| 0x020 | 6 | Rsp | Y | TD | UI | Vitals Response |
+ *
+ * | Payload ||
+ * | ||
+ * | #1:(U32) | \ref Data::mAccepted |
+ * | #2:(U32) | \ref Data::mReason |
+ * | #3:(U32) | \ref Data::mTarget |
+ *
+ * \sa Data
+ * \sa MAdjustVitalsReq: Vitals Request
+ * \sa MTreatmentVitals: Vitals Data
+ *
+ *
+ * | ||
+ * | ||
+ * | typeText | Event |
+ * | unitText | TD |
+ * | infoText | AdjustVitals |
+ *
+ */
+class MAdjustVitalsResponse : public MAbstract {
+
+ QVariantList parameters() const override;
+
+ struct {
+ Types::U32 mAccepted;
+ Types::U32 mReason ;
+ } _data;
+
+public:
+
+ Type_Enum typeText () const override { return Type_Enum::eEvent ; }
+ Unit_Enum unitText () const override { return Unit_Enum::eTD ; }
+ QString infoText () const override { return QString("AdjustVitals") ; }
+
+ struct Data {
+ bool mAccepted = 0; /*!< Accepted value of type quint32 extracted out */
+ quint32 mReason = 0; /*!< Reason value of type quint32 extracted out */
+ };
+
+ MAdjustVitalsResponse() {};
+
+
+ bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override;
+ Data data ( ) const ;
+};
+}
+typedef Model::MAdjustVitalsResponse::Data AdjustVitalsResponseData;
+
Index: sources/model/td/data/treatment/MTreatmentVitalsData.cpp
===================================================================
diff -u
--- sources/model/td/data/treatment/MTreatmentVitalsData.cpp (revision 0)
+++ sources/model/td/data/treatment/MTreatmentVitalsData.cpp (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -0,0 +1,53 @@
+/*!
+ *
+ * Copyright (c) 2021-2025 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 MTreatmentVitalsData.h
+ * \author (last) Nico Ramirez
+ * \date (last) 3-Sep-2025
+ * \author (original) Nico Ramirez
+ * \date (original) 3-Sep-2025
+ *
+ */
+
+#include "MTreatmentVitalsData.h"
+
+using namespace Model;
+
+QVariantList MTreatmentVitals::parameters() const {
+ return {
+ _data.mSystolic .value,
+ _data.mDiastolic .value,
+ _data.mHeartRate .value,
+ };
+}
+
+bool MTreatmentVitals::fromByteArray(const QByteArray &vByteArray, int *vIndex) {
+ int index = 0; // message data start position
+ if ( ! GetValue(vByteArray, index, _data.mSystolic )) goto lError;
+ if ( ! GetValue(vByteArray, index, _data.mDiastolic )) goto lError;
+ if ( ! GetValue(vByteArray, index, _data.mHeartRate )) goto lError;
+
+ return true ;
+
+lError:
+ if(vIndex) { *vIndex = index; }
+
+ return false ;
+}
+
+/*!
+ * \brief MTreatmentVitals::data
+ * \details Provides model's Data from the received messages data values
+ * \return Data
+ */
+MTreatmentVitals::Data MTreatmentVitals::data() const {
+ Data data;
+ data.mSystolic = _data.mSystolic .value;
+ data.mDiastolic = _data.mDiastolic .value;
+ data.mHeartRate = _data.mHeartRate .value;
+ return data;
+}
Index: sources/model/td/data/treatment/MTreatmentVitalsData.h
===================================================================
diff -u
--- sources/model/td/data/treatment/MTreatmentVitalsData.h (revision 0)
+++ sources/model/td/data/treatment/MTreatmentVitalsData.h (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -0,0 +1,80 @@
+/*!
+ *
+ * Copyright (c) 2021-2025 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 MTreatmentVitalsData.h
+ * \author (last) Nico Ramirez
+ * \date (last) 3-Sep-2025
+ * \author (original) Nico Ramirez
+ * \date (original) 3-Sep-2025
+ *
+ */
+
+#pragma once
+// Project
+#include "MAbstract.h"
+#include "types.h"
+
+namespace Model {
+
+/*!
+ * \brief The MTreatmentVitalsData class
+ * \details The Saline Bolus adjustment response model
+ *
+ * | MSG | CAN ID | M.Box | Type | Ack | Src | Dest | Description |
+ * |:----:|:------:|:-----:|:----:|:---:|:---:|:----:|:---------------------:|
+ * |0xXX00| 0x100 | 7 | 1 Hz | N | TD | All | Saline Bolus Response |
+ *
+ * | Payload ||
+ * | ||
+ * | #1:(U32) | \ref Data::mSystolic |
+ * | #2:(U32) | \ref Data::mDiastolic |
+ * | #3:(U32) | \ref Data::mHearRate |
+ *
+ * \sa Data
+ * \sa MAdjustVitalsReq: Vitals Request
+ * \sa MAdjustVitalsResponse: Vitals Response
+ *
+ *
+ * | ||
+ * | ||
+ * | typeText | Event |
+ * | unitText | TD |
+ * | infoText | Vitals |
+ *
+ */
+
+class MTreatmentVitals : public MAbstract {
+ QVariantList parameters() const override;
+
+ struct {
+ Types::U32 mSystolic ;
+ Types::U32 mDiastolic ;
+ Types::U32 mHeartRate ;
+ } _data;
+
+public:
+
+ Type_Enum typeText () const override { return Type_Enum::eEvent ; }
+ Unit_Enum unitText () const override { return Unit_Enum::eTD ; }
+ QString infoText () const override { return QString("Vitals") ; }
+
+ struct Data {
+ quint32 mSystolic = 0; /*!< mSystolic value of type quint32 extracted out */
+ quint32 mDiastolic = 0; /*!< mDiastolic value of type quint32 extracted out */
+ quint32 mHeartRate = 0; /*!< mHeartRate value of type quint32 extracted out */
+ };
+
+ MTreatmentVitals () {}
+
+
+ bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override;
+ Data data ( ) const ;
+};
+}
+
+typedef Model::MTreatmentVitals::Data TreatmentVitalsData;
+
Index: sources/view/VView.h
===================================================================
diff -u -r3c07dc803109f716937b692cb4a67a5324bb9ca3 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/view/VView.h (.../VView.h) (revision 3c07dc803109f716937b692cb4a67a5324bb9ca3)
+++ sources/view/VView.h (.../VView.h) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -217,6 +217,7 @@
REGISTER_TYPE( VTreatmentAdjustmentUltrafiltrationEdit ) \
REGISTER_TYPE( VTreatmentAdjustmentUltrafiltrationConfirm ) \
REGISTER_TYPE( VTreatmentAdjustmentSaline ) \
+ REGISTER_TYPE( VTreatmentAdjustmentVitals ) \
REGISTER_TYPE( VTreatmentAdjustmentHeparin ) \
REGISTER_TYPE( VTreatmentAdjustmentRinseback ) \
REGISTER_TYPE( VTreatmentAdjustmentRecirculate ) \
Index: sources/view/hd/adjustment/common/VCommonAdjustmentVitals.cpp
===================================================================
diff -u -ra5760947d3ed0d2748ba023a1c25e3c6aa0b1de1 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/view/hd/adjustment/common/VCommonAdjustmentVitals.cpp (.../VCommonAdjustmentVitals.cpp) (revision a5760947d3ed0d2748ba023a1c25e3c6aa0b1de1)
+++ sources/view/hd/adjustment/common/VCommonAdjustmentVitals.cpp (.../VCommonAdjustmentVitals.cpp) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -20,7 +20,7 @@
// Project
#include "GuiController.h"
#include "TreatmentLog.h"
-#include "BluetoothInterface.h"
+//#include "BluetoothInterface.h"
VIEW_DEF_CLASS_ADJUSTMENT(VTreatmentVitals)
@@ -29,33 +29,54 @@
* \details All the class signal/slot connections are defined here.
*/
void View::VTreatmentVitals::initConnections() {
- ACTION_RECEIVE_BRIDGE_CONNECTION(_BluetoothInterface, UIBloodPressureData);
+// ACTION_RECEIVE_BRIDGE_CONNECTION(_BluetoothInterface, UIBloodPressureData);
+// ACTION_VIEW_CONNECTION(AdjustVitalsResponseData);
+// ADJUST_VIEW_CONNECTION(AdjustVitalsRequestData );
connect(this, SIGNAL( intervalChanged (const quint8 &)),
this, SLOT(onIntervalChanged ( )));
}
+void View::VTreatmentVitals::onActionReceive(const TreatmentVitalsData &vData)
+// void View::VTreatmentVitals::onActionReceive(const AdjustVitalsResponseData &vData)
+{
+ update_rt (vData.mSystolic, vData.mDiastolic, vData.mHeartRate);
+// update (vData.mSystolic, vData.mDiastolic, vData.mHeartRate);
+ emit didTrigger(vData.mSystolic, vData.mDiastolic, vData.mHeartRate);
+
+ qDebug() << tr("**************8Vital received,%1,%2,%3")
+ .arg(vData.mSystolic )
+ .arg(vData.mDiastolic)
+ .arg(vData.mHeartRate);
+
+ LOG_APPED_UI(tr("Vital received,%1,%2,%3")
+ .arg(vData.mSystolic )
+ .arg(vData.mDiastolic)
+ .arg(vData.mHeartRate));
+}
+
+
/*!
* \brief View::VTreatmentVitals::onActionReceive
* \details The data handler which gets the data form GuiControl and GuiController will get the data from BtCuff controller.
* \param vData - Vital values
* \note the accepted and reason in this case should be the BtCuff status which may not necessarily comes front BtCuff itself,
* and the intermediate controller like the GuiController or the BtCuffController can report from BtCuff behalf if it is connected or not responsive.
*/
-void View::VTreatmentVitals::onActionReceive(const UIBloodPressureData &vData)
-{
- // Not used yet.
- // adjustment_Accepted ( vData.mAccepted );
- // adjustment_Reason ( vData.mReason );
+//void View::VTreatmentVitals::onActionReceive(const UIBloodPressureData &vData)
+//{
+// // Not used yet.
+// // adjustment_Accepted ( vData.mAccepted );
+// // adjustment_Reason ( vData.mReason );
- update_rt (vData.mSystolic, vData.mDiastolic, vData.mPulseRate);
- emit didTrigger(vData.mSystolic, vData.mDiastolic, vData.mPulseRate);
- // if the vitals is disabled it means Gui is probably in an incorrect state and is unable to handle the vital information.
- LOG_APPED_UI(tr("Vital received,%1,%2,%3")
- .arg(vData.mSystolic )
- .arg(vData.mDiastolic)
- .arg(vData.mPulseRate));
-}
+// update_rt (vData.mSystolic, vData.mDiastolic, vData.mPulseRate);
+// emit didTrigger(vData.mSystolic, vData.mDiastolic, vData.mPulseRate);
+// // if the vitals is disabled it means Gui is probably in an incorrect state and is unable to handle the vital information.
+// LOG_APPED_UI(tr("Vital received,%1,%2,%3")
+// .arg(vData.mSystolic )
+// .arg(vData.mDiastolic)
+// .arg(vData.mPulseRate));
+//}
/*!
* \brief View::VTreatmentVitals::doConfirm
@@ -174,19 +195,23 @@
if ( ! _timerId ) return; // No timer started or failed starting
if ( ! _interval ) return; // if interval is 0/OFF return
- // DEBUG: qDebug() << __FUNCTION__ << _counter_sec << _counter_min << _interval << _timerId;
+ /* DEBUG:*/ qDebug() << __FUNCTION__ << _counter_sec << _counter_min << _interval << _timerId;
_counter_sec++;
min_left(_counter_min );
sec_left(60 - _counter_sec);
- countdown(QString("%1:%2").arg(_min_left,2,10,QChar('0')).arg(_sec_left,2,10,QChar('0')));
+ countdown(QStringLiteral("%1:%2").arg(_min_left,2,10,QChar('0')).arg(_sec_left,2,10,QChar('0')));
if ( _counter_sec % 60 ) return; // only check every minute
if ( ! _counter_min ) {
timerStop();
- emit didTrigger();
+ AdjustVitalsRequestData mData;
+ emit didAdjustment(mData);
+ qDebug() << "****didAdjustment --- AdjustVitalsRequestData" ;
+
+// emit didTrigger();
}
else {
_counter_min--;
@@ -196,7 +221,7 @@
void View::VTreatmentVitals::onIntervalChanged()
{
- // DEBUG: qDebug() << __FUNCTION__ << _counter_sec << _counter_min << _interval << _timerId;
+ /* DEBUG: */qDebug() << __FUNCTION__ << _counter_sec << _counter_min << _interval << _timerId;
if ( _interval ) timerReset();
else timerStop (); // Timer stop is resetting timer too.
}
@@ -210,7 +235,7 @@
{
if ( _timerId ) killTimer(_timerId); // this typically should not happen.
if ( ! _interval ) return; // if interval is 0/OFF return
- // DEBUG: qDebug() << __FUNCTION__ << _counter_sec << _counter_min << _interval << _timerId;
+ /* DEBUG:*/ qDebug() << __FUNCTION__ << _counter_sec << _counter_min << _interval << _timerId;
timerReset();
_timerId = startTimer(1000); // 1 sec interval which will used as 1 min in timerEvent (easier to debug)
}
@@ -226,7 +251,7 @@
_counter_min = 0;
}
_counter_sec = 0;
- // DEBUG: qDebug() << __FUNCTION__ << _counter_sec << _counter_min << _interval << _timerId;
+ /* DEBUG: */qDebug() << __FUNCTION__ << _counter_sec << _counter_min << _interval << _timerId;
}
/*!
@@ -236,7 +261,7 @@
void View::VTreatmentVitals::timerStop()
{
if ( ! _timerId ) return; // No timer started or failed starting
- // DEBUG: qDebug() << __FUNCTION__ << _counter_sec << _counter_min << _interval << _timerId;
+ /*DEBUG:*/ qDebug() << __FUNCTION__ << _counter_sec << _counter_min << _interval << _timerId;
killTimer(_timerId);
_timerId = 0;
timerReset();
Index: sources/view/hd/adjustment/common/VCommonAdjustmentVitals.h
===================================================================
diff -u -ra58f91b077c8131bea3dbde0fc338adb113fc9f3 -rc1d0546e2d1a51ff919b2172ce647003359f0853
--- sources/view/hd/adjustment/common/VCommonAdjustmentVitals.h (.../VCommonAdjustmentVitals.h) (revision a58f91b077c8131bea3dbde0fc338adb113fc9f3)
+++ sources/view/hd/adjustment/common/VCommonAdjustmentVitals.h (.../VCommonAdjustmentVitals.h) (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -18,8 +18,11 @@
// Project
#include "main.h" // Doxygen : do not remove
+//#include "MTreatmentAdjustVitalsResponse.h"
+//#include "MUIBloodPressureData.h"
+#include "MTreatmentVitalsData.h"
+
#include "VAdjustmentResponseBase.h"
-#include "MUIBloodPressureData.h"
namespace View {
@@ -56,7 +59,7 @@
// timer
PROPERTY( bool , enableDialog , 0) // enable the vital Dialog being triggered (pre-treatment is screen not a dialog)
- PROPERTY( quint8 , interval , 0) // show the vital screen in min
+ PROPERTY( quint8 , interval , 1) // show the vital screen in min
// timestamp
PROPERTY( quint64 , epoch , 0)
@@ -76,7 +79,9 @@
PROPERTY( quint8 , min_left , 0)
PROPERTY( quint8 , sec_left , 0)
- VIEW_DEC_CLASS_ADJUSTMENT(VTreatmentVitals, UIBloodPressureData)
+// VIEW_DEC_CLASS_ADJUSTMENT(VTreatmentVitals, UIBloodPressureData)
+// VIEW_DEC_CLASS_ADJUSTMENT(VTreatmentVitals, AdjustVitalsResponseData)
+ VIEW_DEC(VTreatmentVitals, TreatmentVitalsData)
void update (quint16 vSystolic, quint16 vDiastolic, quint16 vHeartRate);
void update_rt (quint16 vSystolic, quint16 vDiastolic, quint16 vHeartRate);
@@ -110,6 +115,14 @@
* \details the signal to trigger the Gui to notify the user for the vitals measurement
*/
void didTrigger(quint16 vSystolic = 0, quint16 vDiastolic = 0, quint16 vHeartRate = 0);
+
+ /*!
+ * \brief didAdjustment
+ * \details the notification signal to request vitals
+ * \param vData - data model for the duration adjustment request
+ */
+ void didAdjustment(const AdjustVitalsRequestData &vData);
+
};
}
Index: sources/view/td/adjustment/treatment/VTreatmentAdjustmentVitals.cpp
===================================================================
diff -u
--- sources/view/td/adjustment/treatment/VTreatmentAdjustmentVitals.cpp (revision 0)
+++ sources/view/td/adjustment/treatment/VTreatmentAdjustmentVitals.cpp (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -0,0 +1,37 @@
+/*!
+ *
+ * Copyright (c) 2021-2025 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 VTreatmentAdjustmentVitals.h
+ * \author (last) Nico Ramirez
+ * \date (last) 3-Sep-2025
+ * \author (original) Nico Ramirez
+ * \date (original) 3-Sep-2025
+ *
+ */
+
+
+#include "VTreatmentAdjustmentVitals.h"
+
+// Project
+#include "GuiController.h"
+
+VIEW_DEF_CLASS_ADJUSTMENT(VTreatmentAdjustmentVitals)
+
+void VTreatmentAdjustmentVitals::initConnections() {
+ ACTION_VIEW_CONNECTION(AdjustVitalsResponseData);
+ ADJUST_VIEW_CONNECTION(AdjustVitalsRequestData );
+}
+
+void VTreatmentAdjustmentVitals::onActionReceive(const AdjustVitalsResponseData &vData)
+{
+ adjustment_Accepted ( vData.mAccepted );
+ adjustment_Reason ( vData.mReason );
+
+ // *** has to be the last to let the information to be set and then emit the signal ***
+ // *** otherwise will use the previous values before being set. ***
+ adjustment ( true );
+}
Index: sources/view/td/adjustment/treatment/VTreatmentAdjustmentVitals.h
===================================================================
diff -u
--- sources/view/td/adjustment/treatment/VTreatmentAdjustmentVitals.h (revision 0)
+++ sources/view/td/adjustment/treatment/VTreatmentAdjustmentVitals.h (revision c1d0546e2d1a51ff919b2172ce647003359f0853)
@@ -0,0 +1,52 @@
+/*!
+ *
+ * Copyright (c) 2021-2025 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 VTreatmentAdjustmentVitals.h
+ * \author (last) Nico Ramirez
+ * \date (last) 3-Sep-2025
+ * \author (original) Nico Ramirez
+ * \date (original) 3-Sep-2025
+ *
+ */
+#pragma once
+
+// Qt
+#include
+
+// Project
+#include "main.h" // Doxygen : do not remove
+#include "VAdjustmentResponseBase.h"
+#include "MTreatmentAdjustVitalsResponse.h"
+
+namespace View {
+
+/*!
+ * \brief The VTreatmentAdjustmentVitals class
+ * \details View for Model's Data representation.
+ *
+ * \sa Model::MAdjustVitalsResponse
+ *
+ */
+class VTreatmentAdjustmentVitals : public VAdjustmentResponseBase
+{
+ Q_OBJECT
+
+ AdjustVitalsRequestData _data;
+
+ TRIGGER( bool , adjustment , 0 )
+
+ VIEW_DEC_CLASS_ADJUSTMENT(VTreatmentAdjustmentVitals, AdjustVitalsResponseData)
+
+signals:
+ /*!
+ * \brief didAdjustment
+ * \details the notification signal to adjust the vitals
+ * \param vData - data model for the duration adjustment request
+ */
+ void didAdjustment(const AdjustVitalsRequestData &vData);
+};
+}