/************************************************************************** * * Copyright (c) 2025-2026 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 HemoDiaFiltration.h * * @author (last) Steve Jarpe * @date (last) 23-May-2026 * * @author (original) Steve Jarpe * @date (original) 23-May-2026 * ***************************************************************************/ #ifndef __HEMO_DIAFILTRATION_H__ #define ___HEMO_DIAFILTRATION_H__ #include "TDCommon.h" #include "TDDefs.h" /** * @defgroup Hemodiafiltration Hemodiafiltration * @brief Hemodiafiltration control unit. Performs hemodiafiltration functions via a state machine. * * @addtogroup Hemodiafiltration * @{ */ // ********** public definitions ********** #define HDF_MAX_FILTRATION_FRACTION 0.35F ///< HDF maximum filtration fraction (Qs+Quf)/Qb #define HDF_MAX_TMP 400.0F ///< HDF maximum TMP - trans-membrane pressure = (Pb - Pd) #define HDF_MAX_RATE 200.0F ///< Maximum substitution flow rate /// hemodiafiltration states typedef enum { TD_HDF_PAUSED, ///< HDF Paused TD_HDF_RUNNING, ///< HDF Running NUM_OF_TD_HDF_STATES, } HDF_EXEC_STATE_T; /// hemodiafiltration data structure typedef struct { U32 hdfExecState; ///< Hemodiafiltration execution state F32 hdfRequestedRate; ///< Hemodiafiltration requested manual rate F32 hdfTargetTMP; ///< Hemodiafiltration requested target TMP F32 hdfCurrentRate; ///< Hemodiafiltration current set rate F32 hdfCurrentTMP; ///< Hemodiafiltration current TMP (trans-membrane pressure) F32 hdfRequestedVolume; ///< Hemodiafiltration requested maximum volume F32 hdfTotalVolume; ///< Hemodiafiltration total volume delivered U32 isHDFRequested; ///< Hemodiafiltration run or pause request } HDF_DATA_T; typedef struct { U32 hdfStart; ///< HDF start stop boolean. F32 hdfTMPTgt; ///< HDF target pressure to control. F32 hdfVolume; ///< HDF Target volume. F32 hdfRate; ///< HDF open loop rate. } HDF_START_PAYLOAD_T; // ********** public function prototypes ********** void initHemodiafiltration( void ); // Initialize hemodiafiltration unit void transitionToHemodiafiltration( void ); // Prepares for transition to hemodiafiltration execution U32 execHDFControl( void ); // Execute the hemodiafiltration state machine HDF_EXEC_STATE_T getCurrentHDFExecState( void ); // Get the current state of the hemodifiltration execution F32 getCurrentHDFRate( void ); void setHemodiafiltrationParameters( F32 setHDFTMPTarget, F32 setHDFMaximumVolume); void setHemoDiafiltrationManualRate( F32 setHDFManualRate ); void StartHemodiafiltration( void ); void StopHemodiafiltration( void ); BOOL testTDHDFDataPublishIntervalOverride( MESSAGE_T *message ); // To override the HDF data publish interval /**@}*/ #endif