/************************************************************************** * * Copyright (c) 2020-2024 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 Dialysis.h * * @author (last) Dara Navaei * @date (last) 23-Jan-2024 * * @author (original) Sean * @date (original) 15-Jan-2020 * ***************************************************************************/ #ifndef __DIALYSIS_H__ #define __DIALYSIS_H__ #include "HDCommon.h" #include "HDDefs.h" #include "DGInterface.h" /** * @defgroup Dialysis Dialysis * @brief Dialysis sub-mode of treatment mode. The dialysis sub-mode is where * dialysis and (optionally) ultrafiltration are being provided by the system. * Heparin is added to the blood when appropriate. A saline bolus may be requested * by the user; however, dialysis and ultrafiltration would not be provided during * a saline bolus. * * @addtogroup Dialysis * @{ */ // ********** public definitions ********** #pragma pack(push,1) /// 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. F32 bloodLeakZeroingDPi2BLDFlushVolumeML; ///< Blood leak zeroing DPi to BLD flush volume in mL. F32 bloodLeakZeroingRsrvr2DPiFlushVolumeML; ///< Blood leak zeroing reservoir to DPi flush volume in mL. U32 bloodLeakZeroingNeededAfterRsrvrSwitch; ///< Blood leak zeroing needed after reservoir switch. } SALINE_BOLUS_DATA_PAYLOAD_T; #pragma pack(pop) // ********** public function prototypes ********** void initDialysis( void ); void resetSalineBolus( void ); void transitionToDialysis( void ); void execDialysis( void ); void setDialysisBloodPumpFlowRate( U32 bPFlow ); void setDialysisDialInFlowAndUFRate( U32 dPFlow, F32 maxUFVol, F32 uFRate ); void stopDialysis( void ); void startHeparinPump( void ); void signalStartSalineBolus( void ); void signalAbortSalineBolus( void ); DIALYSIS_STATE_T getDialysisState( void ); UF_STATE_T getUltrafiltrationState( void ); SALINE_BOLUS_STATE_T getSalineBolusState( void ); BLOOD_LEAK_ZEROING_STATE_T getBloodLeakZeroingState( void ); F32 getUltrafiltrationVolumeCollected( void ); F32 getUltrafiltrationReferenceVolume( void ); F32 getTotalSalineBolusVolumeDelivered( void ); BOOL pauseUF( void ); BOOL resumeUF( void ); void updateReservoirVolumes( F32 res1Vol, F32 res2Vol ); void setStartReservoirVolume( DG_RESERVOIR_ID_T reservoirID ); void signalReservoirsSwitched( void ); void setFinalReservoirVolume( void ); F32 getReservoirUltrafiltrationVol( DG_RESERVOIR_ID_T reservoirID ); DIALYSIS_STATE_T execBloodLeakZeroing( void ); void requestBloodLeakZeroing( BOOL isRequestFromTreatmentStop ); void resetBloodLeakZeroingVariables( void ); /**@}*/ #endif