/************************************************************************** * * Copyright (c) 2025-2025 Diality Inc. - All Rights Reserved. * * 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 ModeTreatment.h * * @author (last) Sean * @date (last) 25-Mar-2025 * * @author (original) Sean * @date (original) 25-Mar-2025 * ***************************************************************************/ #ifndef __MODE_TREATMENT_H__ #define __MODE_TREATMENT_H__ #include "TDCommon.h" #include "TDDefs.h" /** * @defgroup TDTreatmentMode TDTreatmentMode * @brief Treatment mode unit. * * @addtogroup TDTreatmentMode * @{ */ // ********** public definitions ********** #define MAX_DIALYSATE_FLOW_RATE 600 ///< Maximum dialysate inlet flow rate (in mL/min). #define MIN_DIALYSATE_FLOW_RATE 50 ///< Minimum dialysate inlet flow rate (in mL/min). #pragma pack(push,1) /// Payload record structure for a treatment time status message. typedef struct { U32 treatmentTimePrescribedinSec; ///< Treatment time prescribed in seconds. U32 treatmentTimeElapsedinSec; ///< Treatment time elapsed in seconds. U32 treatmentTimeRemaininginSec; ///< Treatment time remaining in seconds. } TREATMENT_TIME_DATA_T; /// Payload record structure for a treatment state message. typedef struct { U32 treatmentSubMode; ///< Treatment submode. U32 bldPrimeState; ///< Blood prime state. U32 dialysisState; ///< Dialysis state. U32 isoUFState; ///< Isolated ultrafiltration state. U32 txStopState; ///< Treatment stop state. U32 rinsebackState; ///< Rinse back state. U32 txRecircState; ///< Treatment recirc state. U32 txEndState; ///< Treatment end state. } TREATMENT_STATE_DATA_T; /// Payload record structure for a saline bolus data broadcast message. typedef struct { U32 tgtSalineVolumeMl; ///< Target saline volume in mL. F32 cumSalineVolumeMl; ///< Cumulative saline volume in mL. F32 bolSalineVolumeMl; ///< Bolus saline volume in mL. U32 salineBolusState; ///< Saline bolus state. } SALINE_BOLUS_DATA_PAYLOAD_T; /// Payload record structure for a ultrafiltration data broadcast message. typedef struct { F32 setUFVolumeL; ///< Set (prescribed) ultrafiltration in L. F32 tgtUFRateLHr; ///< Calculated target ultrafiltration rate in L/hr. F32 ufVolumeDeliveredL; ///< Ultrafiltration volume delivered in L. U32 ufState; ///< Ultrafiltration state. } UF_DATA_PAYLOAD_T; #pragma pack(pop) // ********** public function prototypes ********** void initTreatmentMode( void ); // Initialize this unit U32 transitionToTreatmentMode( void ); // Prepares for transition to treatment mode U32 execTreatmentMode( void ); // Execute the treatment mode state machine (call from OperationModes) void signalAlarmActionToTreatmentMode( ALARM_ACTION_T action ); // Execute alarm action as appropriate for treatment mode void signalEndTreatment( void ); // Requesting transition to post-treatment mode void broadcastTreatmentTimeAndState( void ); // Broadcast the times and states of this treatment TREATMENT_STATE_T getTreatmentState( void ); // Determine the current treatment sub-mode (state) BOOL isTreatmentCompleted( void ); // Determine whether the treatment has completed BOOL isTreatmentResumeBlocked( void ); // Determine whether the treatment is not allowed to be resumed. U32 getTreatmentTimeRemainingSecs( void ); // Determine number of seconds remaining in the treatment U32 getActualTreatmentTimeSecs( void ); // Determine the actual treatment duration in seconds U32 getTreatmentStartTimeStamp( void ); // Get the treatment start time stamp U32 getTreatmentEndTimeStamp( void ); // Get the treatment end time stamp /**@}*/ #endif