/************************************************************************** * * Copyright (c) 2020-2023 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 PresOccl.h * * @author (last) Sean Nash * @date (last) 18-Jul-2023 * * @author (original) Sean * @date (original) 15-Jan-2020 * ***************************************************************************/ #ifndef __PRESSURE_OCCLUSION_H__ #define __PRESSURE_OCCLUSION_H__ #include "HDCommon.h" /** * @defgroup PressureOcclusion PressureOcclusion * @brief Pressure & Occlusion controller/monitor module. Monitors the * venous line pressure sensor (Honeywell HSCMRNN030PDSA3), arterial line * pressure sensor (Memscap 32022-100mm) and pump occlusion sensors (SMD DIA8308). * * @addtogroup PressureOcclusion * @{ */ // ********** public definitions ********** #define USE_NORMAL_STABILIZATION_PERIOD FALSE #define USE_SHORT_STABILIZATION_PERIOD TRUE /// Enumeration of pressure sensors monitored by this module. typedef enum PressureSensors { PRESSURE_SENSOR_ARTERIAL = 0, ///< Arterial blood line pressure sensor PRESSURE_SENSOR_VENOUS, ///< Vensous blood line pressure sensor NUM_OF_PRESSURE_SENSORS ///< Number of pressure sensors } PRESSURE_SENSORS_T; /// Enumeration of occlusion sensors monitored by this module. typedef enum OcclusionSensors { OCCLUSION_SENSOR_BLOOD_PUMP = 0, ///< Blood pump occlusion sensor OCCLUSION_SENSOR_DIAL_IN_PUMP, ///< Dialysate inlet pump occlusion sensor OCCLUSION_SENSOR_DIAL_OUT_PUMP, ///< Dialysate outlet pump occlusion sensor NUM_OF_OCCLUSION_SENSORS ///< Number of occlusion sensors } OCCLUSION_SENSORS_T; /// Enumeration of arterial/venous pressure limits states. typedef enum PressureLimitsStates { PRESSURE_LIMITS_STATE_OFF = 0, ///< Off - not pressure low/high alarms will be detected) PRESSURE_LIMITS_STATE_IDLE, ///< Idle - in Treatment mode state where BP is stopped - no pressure low/high alarms PRESSURE_LIMITS_STATE_WIDE, ///< Wide - in Treatment mode state where BP is running but wide limits apply PRESSURE_LIMITS_STATE_STABILIZATION, ///< Stabilization - in Treatment mode state where BP is running (dialysis or stop), but need to stabilize first PRESSURE_LIMITS_STATE_STABLE, ///< Stable - in Treatment mode state where BP is running (dialysis or stop) and limit windows apply NUM_OF_PRESSURE_LIMITS_STATES ///< Number of pressure limits states } PRESSURE_LIMITS_STATES_T; /// Payload record structure for the pressure & occlusions data message. typedef struct { F32 arterialPressure; ///< Latest arterial pressure (mmHg) F32 venousPressure; ///< Latest venous pressure (mmHg) U32 bldPumpOcclusion; ///< Latest BP occlusion (no units) U32 presLimitState; ///< Current pressure limits state (enum-stabilization or stable) S32 artMinLimit; ///< Current arterial minimum pressure limit (mmHg) S32 artMaxLimit; ///< Current arterial maximum pressure limit (mmHg) S32 venMinLimit; ///< Current venous minimum pressure limit (mmHg) S32 venMaxLimit; ///< Current venous maximum pressure limit (mmHg) F32 arterialLongFilterPres; ///< Latest long filtered arterial pressure (mmHg) F32 venousLongFilterPres; ///< Latest long filtered venous pressure (mmHg) } PRESSURE_OCCLUSION_DATA_T; // ********** public function prototypes ********** void initPresOccl( void ); void execPresOccl( void ); void execPresOcclTest( void ); SELF_TEST_STATUS_T execPresOcclDryTest( void ); SELF_TEST_STATUS_T execPresOcclSelfTest( void ); void setPressureLimitsToOuterBounds( void ); void updatePressureLimitWindows( void ); void signalInitiatePressureStabilization( BOOL useShort ); void resetArtVenPressureOffsets( void ); void setArtVenPressureOffsets( void ); F32 getMeasuredArterialPressure( void ); F32 getFilteredArterialPressure( void ); F32 getLongFilteredArterialPressure( void ); F32 getMeasuredVenousPressure( void ); F32 getFilteredVenousPressure( void ); F32 getLongFilteredVenousPressure( void ); U32 getMeasuredBloodPumpOcclusion( void ); BOOL isCartridgeLoaded( void ); BOOL isCartridgeUnloaded( void ); BOOL isSalineBagEmpty( void ); void setOcclusionInstallLevel( void ); BOOL testSetPresOcclDataPublishIntervalOverride( U32 value ); BOOL testResetPresOcclDataPublishIntervalOverride( void ); BOOL testSetArterialPressureOverride( F32 value ); BOOL testResetArterialPressureOverride( void ); BOOL testSetVenousPressureOverride( F32 value ); BOOL testResetVenousPressureOverride( void ); BOOL testSetBloodPumpOcclusionOverride( U32 value ); BOOL testResetBloodPumpOcclusionOverride( void ); /**@}*/ #endif