Index: SDDs/Treatment_Logs.png =================================================================== diff -u Binary files differ Index: SDDs/Treatment_Logs.puml =================================================================== diff -u --- SDDs/Treatment_Logs.puml (revision 0) +++ SDDs/Treatment_Logs.puml (revision ef7ded49d368a1002b73819d7d71673519b1ae29) @@ -0,0 +1,61 @@ +@startuml Treatment_Logs + + participant TD as TD + participant SW as SW + participant UI as UI + actor USER as US + + 'Possible actions and interaction tuypes + ' 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 ,# certain amount of parameters according to the content] \n + '[x ,X The rest of the parameters do not matter.] \n + + == Log Data Collection == + alt Treatment Log Alarm Data + TD -> SW: MSG: [x6A: #3] Event: \ + \n\t(U32) mAlarmID \ + \n\t(F32) mParam1 \ + \n\t(F32) mParam2 + end + alt Treatment Log Event Data + TD -> SW: MSG: [x6B: #3] Event: \ + \n\t(U32) mEventID \ + \n\t(F32) mOldValue \ + \n\t(F32) mNewValue + end + alt Treatment Log Average Periodic Data + TD -> SW: MSG: [xAD: #7] Event: \ + \n\t(U32) mBloodFlowRate \ + \n\t(F32) mDialysateFlowRate \ + \n\t(F32) mUFRate \ + \n\t(F32) mArterialPressure \ + \n\t(F32) mVenousPressure \ + \n\t(F32) mTMPPressure \ + \n\t(F32) mDialysateTemp + end + alt Post Treatment Logs + UI -> SW: ACT: Post Treatment logs Request + SW -> TD: MSG: [xA9: #0] Req: Post Treatment logs Request + TD -> SW: MSG: [xAA: #62] Rsp: \ + \n\t(U32) mAccepted\ + \n\t(U32) mReason \ + \n\t ... Tx review data + end + + == Write to Log == + SW -> SW: ACT: Populate data model with collected data \ + \n\t Write data to log file \ + \n\t Save log file with unique name + +@enduml Index: leahi.pro =================================================================== diff -u -rb0ad6789ac542b1c24db1d89af3d4e1411a4d4f1 -ref7ded49d368a1002b73819d7d71673519b1ae29 --- leahi.pro (.../leahi.pro) (revision b0ad6789ac542b1c24db1d89af3d4e1411a4d4f1) +++ leahi.pro (.../leahi.pro) (revision ef7ded49d368a1002b73819d7d71673519b1ae29) @@ -109,7 +109,6 @@ sources/model/hd/data/pretreatment \ sources/model/hd/data/treatment \ sources/model/hd/data/posttreatment \ - sources/model/hd/data/treatmentlog \ sources/model/dg/data \ sources/model/dg/data/post \ sources/model/dg/data/pretreatment \ @@ -218,6 +217,7 @@ \ # ---------- Models - TD - Data - Treatment Log sources/model/td/data/treatmentlog/MTreatmentLogAlarmData.h \ sources/model/td/data/treatmentlog/MTreatmentLogEventData.h \ + sources/model/td/data/treatmentlog/MTreatmentLogAvrgeData.h \ \ # ---------- Models - TD - Adjustment - In-Treatment //// ----- @LEAHIZED sources/model/td/adjustment/treatment/MTreatmentAdjustBloodPrimeResponse.h \ sources/model/td/adjustment/treatment/MTreatmentAdjustBloodFlowRateResponse.h \ @@ -399,8 +399,6 @@ sources/model/hd/data/treatment/MTreatmentRecirculateData.h \ sources/model/hd/data/post/MHDRTCEpochData.h \ sources/model/hd/data/MHDUsageInfoResponse.h \ - \ # ---------- Models - HD - Data - Treatment Log - sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.h \ \ # ---------- Models - DG - Adjustment sources/model/dg/adjustment/settings/MAdjustDGRequests.h \ sources/model/dg/adjustment/settings/MAdjustDGCleaningUsageResponse.h \ @@ -610,6 +608,7 @@ \ # ---------- Models - TD - Data - Treatment Log sources/model/td/data/treatmentlog/MTreatmentLogAlarmData.cpp \ sources/model/td/data/treatmentlog/MTreatmentLogEventData.cpp \ + sources/model/td/data/treatmentlog/MTreatmentLogAvrgeData.cpp \ \ # ---------- Models - TD - Adjustment - In-Treatment sources/model/td/adjustment/treatment/MTreatmentAdjustBloodPrimeResponse.cpp \ sources/model/td/adjustment/treatment/MTreatmentAdjustBloodFlowRateResponse.cpp \ @@ -706,9 +705,6 @@ sources/model/hd/data/pretreatment/MPreTreatmentDisposablesPrimeData.cpp \ sources/model/hd/data/pretreatment/MPreTreatmentSelfTestNoCartridgeData.cpp \ sources/model/hd/data/pretreatment/MPreTreatmentSelfTestDryData.cpp \ - \ # ---------- Models - HD - Data - Treatment Log - sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.cpp \ - \ # ---------- Models - DG - Adjustment \ # ---------- Models - DG - Adjustment - Settings sources/model/dg/adjustment/settings/MAdjustDGCleaningUsageResponse.cpp \ \ # ---------- Models - DG - Data - Pre-Treatment - Progress Index: sources/gui/qml/pages/posttreatment/PostTreatmentReview.qml =================================================================== diff -u -r4c6c526a02ea5dec5c13b9a93a58627cfec2a136 -ref7ded49d368a1002b73819d7d71673519b1ae29 --- sources/gui/qml/pages/posttreatment/PostTreatmentReview.qml (.../PostTreatmentReview.qml) (revision 4c6c526a02ea5dec5c13b9a93a58627cfec2a136) +++ sources/gui/qml/pages/posttreatment/PostTreatmentReview.qml (.../PostTreatmentReview.qml) (revision ef7ded49d368a1002b73819d7d71673519b1ae29) @@ -261,8 +261,8 @@ label : [ qsTr("Treatment Start Date, Time") , qsTr("Treatment End Date, Time") ] - initial : [ Qt.formatDateTime(new Date(vPostTreatmentAdjustmentTreatmentLog.treatmentStartEpoch), "yyyy/MM/dd, HH:mm") , - Qt.formatDateTime(new Date(vPostTreatmentAdjustmentTreatmentLog.treatmentEndEpoch) , "yyyy/MM/dd, HH:mm") ] + initial : [ vPostTreatmentAdjustmentTreatmentLog.treatmentStartEpoch, + vPostTreatmentAdjustmentTreatmentLog.treatmentEndEpoch ] actual : [ "" , "" ] units : [ "" , ""] Fisheye: Tag ef7ded49d368a1002b73819d7d71673519b1ae29 refers to a dead (removed) revision in file `sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.cpp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag ef7ded49d368a1002b73819d7d71673519b1ae29 refers to a dead (removed) revision in file `sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.h'. Fisheye: No comparison available. Pass `N' to diff? Index: sources/model/td/data/treatmentlog/MTreatmentLogAlarmData.h =================================================================== diff -u -rbae1ae230d8b41f90b1fcd34b9bccdfa87bf3cd9 -ref7ded49d368a1002b73819d7d71673519b1ae29 --- sources/model/td/data/treatmentlog/MTreatmentLogAlarmData.h (.../MTreatmentLogAlarmData.h) (revision bae1ae230d8b41f90b1fcd34b9bccdfa87bf3cd9) +++ sources/model/td/data/treatmentlog/MTreatmentLogAlarmData.h (.../MTreatmentLogAlarmData.h) (revision ef7ded49d368a1002b73819d7d71673519b1ae29) @@ -33,7 +33,7 @@ * * | MSG | CAN ID | Type | Ack | Src | Dst | Description | * |:----:|:------:|:------:|:---:|:---:|:---:|:-----------:| - * |0x6A00| 0x040 | Event | Y | HD | UI | Treatment Log Alarm Data | + * |0x6A00| 0x040 | Event | Y | TD | UI | Treatment Log Alarm Data | * * | Payload || * | || Index: sources/model/td/data/treatmentlog/MTreatmentLogAvrgeData.cpp =================================================================== diff -u --- sources/model/td/data/treatmentlog/MTreatmentLogAvrgeData.cpp (revision 0) +++ sources/model/td/data/treatmentlog/MTreatmentLogAvrgeData.cpp (revision ef7ded49d368a1002b73819d7d71673519b1ae29) @@ -0,0 +1,62 @@ +/*! + * + * 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 MTreatmentLogAvrgeData.cpp + * \author (last) Behrouz NematiPour + * \date (last) 19-May-2021 + * \author (original) Behrouz NematiPour + * \date (original) 15-May-2021 + * + */ +#include "MTreatmentLogAvrgeData.h" + +// Qt +#include + +using namespace Model; + +QVariantList MTreatmentLogAvrgeData::parameters() const { + return { + _data.mBloodFlowRate .value, + _data.mDialysateFlowRate .value, + _data.mUFRate .value, + _data.mArterialPressure .value, + _data.mVenousPressure .value, + }; +} + +bool MTreatmentLogAvrgeData::fromByteArray(const QByteArray &vByteArray, int *vIndex) { + int index = 0; // message data start position + if ( ! GetValue(vByteArray, index, _data.mBloodFlowRate )) goto lError; + if ( ! GetValue(vByteArray, index, _data.mDialysateFlowRate)) goto lError; + if ( ! GetValue(vByteArray, index, _data.mUFRate )) goto lError; + if ( ! GetValue(vByteArray, index, _data.mArterialPressure )) goto lError; + if ( ! GetValue(vByteArray, index, _data.mVenousPressure )) goto lError; + + return true ; + +lError: + if(vIndex) { *vIndex = index; } + + return false ; +} + +/*! + * \brief MTreatmentLogAvrgeData::data + * \details Provides model's Data from the received messages data values + * \return Data + */ +TreatmentLogAvrgeData MTreatmentLogAvrgeData::data() const { + Data data; + data.mTimeStamp = QDateTime::currentDateTime().toSecsSinceEpoch(); + data.mBloodFlowRate = _data.mBloodFlowRate .value; + data.mDialysateFlowRate = _data.mDialysateFlowRate .value; + data.mUFRate = _data.mUFRate .value; + data.mArterialPressure = _data.mArterialPressure .value; + data.mVenousPressure = _data.mVenousPressure .value; + return data; +} Index: sources/model/td/data/treatmentlog/MTreatmentLogAvrgeData.h =================================================================== diff -u --- sources/model/td/data/treatmentlog/MTreatmentLogAvrgeData.h (revision 0) +++ sources/model/td/data/treatmentlog/MTreatmentLogAvrgeData.h (revision ef7ded49d368a1002b73819d7d71673519b1ae29) @@ -0,0 +1,103 @@ +/*! + * + * 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 MTreatmentLogAvrgeData.h + * \author (last) Behrouz NematiPour + * \date (last) 13-Sep-2023 + * \author (original) Behrouz NematiPour + * \date (original) 15-May-2021 + * + */ +#pragma once + +// Qt +#include + +// Project +#include "MAbstract.h" +#include "types.h" + +// forward declarations +class tst_models; + +namespace Model { + +/*! + * \brief The MTreatmentLogAvrgeData class + * \details The post treatment states data model + * These are states of the post treatment. + * + * | MSG | CAN ID | Type | Ack | Src | Dst | Description | + * |:----:|:------:|:------:|:---:|:---:|:---:|:-----------:| + * |0xAD00| 0x020 | 30 min | Y | TD | UI | Treatment Log Average Periodic Data | + * + * | Payload || + * | || + * | #1:(F32) | \ref Data::mBloodFlowRate | + * | #2:(F32) | \ref Data::mDialysateFlowRate | + * | #3:(F32) | \ref Data::mUFRate | + * | #4:(F32) | \ref Data::mArterialPressure | + * | #5:(F32) | \ref Data::mVenousPressure | + * | #6:(F32) | \ref Data::mTMPPressure | + * | #7:(F32) | \ref Data::mDialysateTemp | + * + * \sa Data + * \sa HD_Post_Treatment_Mode_States + * + *

Logging info

+ * | || + * | || + * | typeText | Datum | + * | unitText | HD | + * | infoText | TreatmentLogAvrge | + * + */ +class MTreatmentLogAvrgeData : public MAbstract { + + // friends + friend class ::tst_models; + + QVariantList parameters() const override; + + struct { + Types::F32 mBloodFlowRate ; ///< (F32) Blood Flow Rate (mL/min) + Types::F32 mDialysateFlowRate ; ///< (F32) Dialysate Flow Rate (mL/min) + Types::F32 mUFRate ; ///< (F32) Ultrafiltration Rate (mmHg) + Types::F32 mArterialPressure ; ///< (F32) Arterial Pressure (mmHg) + Types::F32 mVenousPressure ; ///< (F32) Venous Pressure (mmHg) + Types::F32 mTMPPressure ; ///< (F32) TMP Pressure (mmHg) + Types::F32 mDialysateTemp ; ///< (F32) Dialysate Temperature (°C) + } _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("TreatmentLogAvrge") ; } + + struct Data { + quint64 mTimeStamp = 0; ///< Timestamp of the received message in secs since epoch + float mBloodFlowRate = 0; ///< Blood Flow Rate (mL/min) + float mDialysateFlowRate = 0; ///< Dialysate Flow Rate (mL/min) + float mUFRate = 0; ///< Ultrafiltration Rate (mmHg) + float mArterialPressure = 0; ///< Arterial Pressure (mmHg) + float mVenousPressure = 0; ///< Venous Pressure (mmHg) + float mTMPPressure = 0; ///< TMP Pressure (mmHg) + float mDialysateTemp = 0; ///< Dialysate Temperature (°C) + quint16 mSystolic = 0; ///< Systolic Blood Pressure - This value is not coming from FW and will be get from UI and User. + quint16 mDiastolic = 0; ///< Diastolic Blood Pressure - This value is not coming from FW and will be get from UI and User. + quint16 mHeartRate = 0; ///< Heart Rate - This value is not coming from FW and will be get from UI and User. + }; + + MTreatmentLogAvrgeData() { } + + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; +}; +} + +typedef Model::MTreatmentLogAvrgeData::Data TreatmentLogAvrgeData; Index: sources/model/td/data/treatmentlog/MTreatmentLogEventData.h =================================================================== diff -u -rbae1ae230d8b41f90b1fcd34b9bccdfa87bf3cd9 -ref7ded49d368a1002b73819d7d71673519b1ae29 --- sources/model/td/data/treatmentlog/MTreatmentLogEventData.h (.../MTreatmentLogEventData.h) (revision bae1ae230d8b41f90b1fcd34b9bccdfa87bf3cd9) +++ sources/model/td/data/treatmentlog/MTreatmentLogEventData.h (.../MTreatmentLogEventData.h) (revision ef7ded49d368a1002b73819d7d71673519b1ae29) @@ -33,7 +33,7 @@ * * | MSG | CAN ID | Type | Ack | Src | Dst | Description | * |:----:|:------:|:------:|:---:|:---:|:---:|:-----------:| - * |0x6B00| 0x040 | Event | Y | HD | UI | Treatment Log Event Data | + * |0x6B00| 0x040 | Event | Y | TD | UI | Treatment Log Event Data | * * | Payload || * | || Index: sources/view/td/adjustment/posttreatment/VPostTreatmentAdjustTreatmentLog.cpp =================================================================== diff -u -rdc8969f6c7bbdb46d2de22622e58e457ceb37df4 -ref7ded49d368a1002b73819d7d71673519b1ae29 --- sources/view/td/adjustment/posttreatment/VPostTreatmentAdjustTreatmentLog.cpp (.../VPostTreatmentAdjustTreatmentLog.cpp) (revision dc8969f6c7bbdb46d2de22622e58e457ceb37df4) +++ sources/view/td/adjustment/posttreatment/VPostTreatmentAdjustTreatmentLog.cpp (.../VPostTreatmentAdjustTreatmentLog.cpp) (revision ef7ded49d368a1002b73819d7d71673519b1ae29) @@ -90,8 +90,8 @@ vitalsInterval ( vData.mVitalsInterval ); vitalsIntervalActual ( vData.mVitalsIntervalActual ); dialyzerType ( vData.mDialyzerType ); - treatmentStartEpoch ( vData.mTreatmentStartEpoch ); - treatmentEndEpoch ( vData.mTreatmentEndEpoch ); + treatmentStartEpoch ( Format::fromEpoch( vData.mTreatmentStartEpoch, "yyyy/MM/dd, HH:mm" )); + treatmentEndEpoch ( Format::fromEpoch(vData.mTreatmentEndEpoch, "yyyy/MM/dd, HH:mm" )); fluidBolusVolume ( vData.mFluidBolusVolume ); fluidBolusVolumeActual ( vData.mFluidBolusVolumeActual ); heparinType ( vData.mHeparinType ); Index: sources/view/td/adjustment/posttreatment/VPostTreatmentAdjustTreatmentLog.h =================================================================== diff -u -rdc8969f6c7bbdb46d2de22622e58e457ceb37df4 -ref7ded49d368a1002b73819d7d71673519b1ae29 --- sources/view/td/adjustment/posttreatment/VPostTreatmentAdjustTreatmentLog.h (.../VPostTreatmentAdjustTreatmentLog.h) (revision dc8969f6c7bbdb46d2de22622e58e457ceb37df4) +++ sources/view/td/adjustment/posttreatment/VPostTreatmentAdjustTreatmentLog.h (.../VPostTreatmentAdjustTreatmentLog.h) (revision ef7ded49d368a1002b73819d7d71673519b1ae29) @@ -71,8 +71,8 @@ PROPERTY(quint32 , vitalsInterval , 0 ) PROPERTY(quint32 , vitalsIntervalActual , 0 ) PROPERTY(quint32 , dialyzerType , 0 ) - PROPERTY(quint32 , treatmentStartEpoch , 0 ) - PROPERTY(quint32 , treatmentEndEpoch , 0 ) + PROPERTY(QString , treatmentStartEpoch , "") + PROPERTY(QString , treatmentEndEpoch , "") PROPERTY(quint32 , fluidBolusVolume , 0 ) PROPERTY(quint32 , fluidBolusVolumeActual , 0 ) PROPERTY(quint32 , heparinType , 0 )