/************************************************************************** * * Copyright (c) 2024-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 AlarmDefs.h * * @author (last) Sean * @date (last) 16-Sep-2024 * * @author (original) Sean * @date (original) 30-Jul-2024 * ***************************************************************************/ #ifndef __ALARM_DEFINITIONS_H__ #define __ALARM_DEFINITIONS_H__ // ********** public definitions ********** /** * @addtogroup AlarmManagement * @{ */ /// Enumeration of alarm IDs. enum Alarm_List { ALARM_ID_NO_ALARM = 0, ///< Indication for when no alarms is a possible situation ALARM_ID_TD_SOFTWARE_FAULT = 1, ///< TD Software fault. Software found itself in an unexpected state ALARM_ID_DD_SOFTWARE_FAULT = 2, ///< DD software fault. Software found itself in an unexpected state ALARM_ID_RO_SOFTWARE_FAULT = 3, ///< RO software fault. Software found itself in an unexpected state ALARM_ID_TD_FPGA_POST_TEST_FAILED = 4, ///< TD FPGA POST failure ALARM_ID_TD_WATCHDOG_POST_TEST_FAILED = 5, ///< TD Watchdog POST failure ALARM_ID_TD_UI_COMM_POST_FAILED = 6, ///< TD UI communication POST failure. UI failed to communicate within a reasonable time after power up ALARM_ID_TD_FPGA_CLOCK_SPEED_CHECK_FAILURE = 7, ///< TD processor clock speed checks against FPGA clock failure ALARM_ID_TD_FPGA_COMM_TIMEOUT = 8, ///< TD FPGA communication down for too long ALARM_ID_TD_UI_COMM_TIMEOUT = 9, ///< TD UI communication timeout ALARM_ID_TD_DD_COMM_TIMEOUT = 10, ///< TD DD communication timeout ALARM_ID_TD_COMM_TOO_MANY_BAD_CRCS = 11, ///< TD too many bad communications CRC ALARM_ID_TD_CAN_MESSAGE_NOT_ACKED_BY_UI = 12, ///< TD didn't get ACK on message to UI that required acknowledgment ALARM_ID_TD_CAN_MESSAGE_NOT_ACKED_BY_DD = 13, ///< TD didn't get ACK on message to DD that required acknowledgment ALARM_ID_TD_CRITICAL_DATA_ERROR = 14, ///< TD critical data integrity check failed ALARM_ID_DD_CRITICAL_DATA_ERROR = 15, ///< DD critical data integrity check failed ALARM_ID_TD_WATCHDOG_EXPIRED = 16, ///< TD watchdog expired ALARM_ID_DD_WATCHDOG_EXPIRED = 17, ///< DD watchdog expired ALARM_ID_DD_COMM_TOO_MANY_BAD_CRCS = 18, ///< DD too many bad communications CRC ALARM_ID_DD_CAN_MESSAGE_NOT_ACKED_BY_RO = 19, ///< DD didn't get ACK on message to RO that required acknowledgment ALARM_ID_DD_CAN_MESSAGE_NOT_ACKED_BY_TD = 20, ///< DD didn't get ACK on message to TD that required acknowledgment ALARM_ID_DD_FPGA_POST_TEST_FAILED = 21, ///< DD FPGA POST failure ALARM_ID_DD_FPGA_CLOCK_SPEED_CHECK_FAILURE = 22, ///< DD processor clock speed checks against FPGA clock failure ALARM_ID_DD_FPGA_COMM_TIMEOUT = 23, ///< DD FPGA communication down for too long ALARM_ID_TD_ALARM_AUDIO_SELF_TEST_FAILURE = 24, ///< TD alarm audio failed POST ALARM_ID_DD_VALVE_CONTROL_FAILURE = 25, ///< DD FPGA not accepting commanded valve states ALARM_ID_TD_ARTERIAL_SENSOR_TIMEOUT_FAULT = 26, ///< TD arterial pressure sensor freshness/error timeout fault ALARM_ID_TD_VENOUS_SENSOR_TIMEOUT_FAULT = 27, ///< TD venous pressure sensor freshness/error timeout fault ALARM_ID_DD_HYD_OUTLET_PRES_TIMEOUT_FAULT = 28, ///< DD hydraulics outlet pressure sensor freshness/error timeout fault ALARM_ID_DD_BIBAG_PRES_TIMEOUT_FAULT = 29, ///< DD bibag pressure sensor freshness/error timeout fault ALARM_ID_DD_SPENT_DIALYSATE_PRES_TIMEOUT_FAULT = 30, ///< DD spent dialysate pressure sensor freshness/error timeout fault ALARM_ID_DD_FRESH_DIALYSATE_PRES_TIMEOUT_FAULT = 31, ///< DD fresh dialysate pressure sensor freshness/error timeout fault ALARM_ID_DD_TRANSMEMB_PRES_TIMEOUT_FAULT = 32, ///< DD transmembrane pressure sensor freshness/error timeout fault ALARM_ID_TD_VOLTAGE_OUT_OF_RANGE = 33, ///< TD voltage out of range fault ALARM_ID_TD_AC_POWER_LOST = 34, ///< TD AC power lost ALARM_ID_TD_AC_POWER_LOST_IN_TREATMENT = 35, ///< TD AC power lost during treatment ALARM_ID_DD_CD1_SENSOR_FPGA_FAULT = 36, ///< DD CD1 conductivity sensor freshness/error timeout fault ALARM_ID_DD_CD2_SENSOR_FPGA_FAULT = 37, ///< DD CD2 conductivity sensor freshness/error timeout fault ALARM_ID_DD_CD3_SENSOR_FPGA_FAULT = 38, ///< DD CD3 conductivity sensor freshness/error timeout fault ALARM_ID_DD_CD4_SENSOR_FPGA_FAULT = 39, ///< DD CD4 conductivity sensor freshness/error timeout fault ALARM_ID_TD_VENOUS_BUBBLE_DETECTED = 40, ///< TD venous bubble detected ALARM_ID_TD_CARTRIDGE_DOOR_OPENED = 41, ///< TD front door open ALARM_ID_TD_STUCK_BUTTON_TEST_FAILED = 42, ///< TD stuck button self test failure ALARM_ID_TD_ARTERIAL_PRESSURE_LOW = 43, ///< TD arterial pressure low ALARM_ID_TD_ARTERIAL_PRESSURE_HIGH = 44, ///< TD arterial pressure high ALARM_ID_TD_ARTERIAL_PRESSURE_OUT_OF_RANGE = 45, ///< TD arterial pressure out of range fault ALARM_ID_TD_ARTERIAL_PRESSURE_SELF_TEST_FAILURE = 46, ///< TD arterial pressure self-test failure ALARM_ID_TD_VENOUS_PRESSURE_LOW = 47, ///< TD venous pressure low ALARM_ID_TD_VENOUS_PRESSURE_HIGH = 48, ///< TD venous pressure high ALARM_ID_TD_VENOUS_PRESSURE_OUT_OF_RANGE = 49, ///< TD venous pressure out of range fault ALARM_ID_TD_VENOUS_PRESSURE_SELF_TEST_FAILURE = 50, ///< TD venous pressure self-test failure ALARM_ID_TD_PRE_TREATMENT_DRY_PRESSURE_TEST_FAILURE = 51, ///< TD set pressure offset is out or range fault NUM_OF_ALARM_IDS ///< Number of alarms }; typedef enum Alarm_List ALARM_ID_T; ///< Type for alarm list enumeration /// Enumeration of alarm priorities. enum Alarm_Priorities { ALARM_PRIORITY_NONE = 0, ///< Indicates not an alarm or no alarms active at this time ALARM_PRIORITY_LOW = 1, ///< Low priority alarm ALARM_PRIORITY_MEDIUM = 2, ///< Medium priority alarm ALARM_PRIORITY_HIGH = 3, ///< High priority alarm NUM_OF_ALARM_PRIORITIES ///< Total number of alarm priorities }; typedef enum Alarm_Priorities ALARM_PRIORITY_T; ///< Type for alarm priorities enumeration /// Alarm data types list. enum Alarm_Data_Types { ALARM_DATA_TYPE_NONE = 0, ///< No data given. ALARM_DATA_TYPE_U32 = 1, ///< Alarm data is unsigned 32-bit integer type. ALARM_DATA_TYPE_S32 = 2, ///< Alarm data is signed 32-bit integer type. ALARM_DATA_TYPE_F32 = 3, ///< Alarm data is 32-bit floating point type. ALARM_DATA_TYPE_BOOL = 4, ///< Alarm data is 32-bit boolean type. NUM_OF_ALARM_DATA_TYPES ///< Total number of alarm data types. }; typedef enum Alarm_Data_Types ALARM_DATA_TYPES_T; ///< Type for data type of triggered alarm. /// Enumeration of alarm sources. enum Alarm_Sources { ALARM_SOURCE_UI = 0, ///< User interface alarm source ALARM_SOURCE_TD, ///< TD firmware alarm source ALARM_SOURCE_DD, ///< DD firmware alarm source ALARM_SOURCE_RO, ///< RO firmware alarm source NUMBER_OF_ALARM_SOURCES ///< Number of alarm sources }; typedef enum Alarm_Sources ALARM_SOURCE_T; ///< Type for alarm sources enumeration /**@}*/ /** * @addtogroup AlarmManagementTD * @{ */ /// Enumeration of alarm silence commands. enum Alarm_Silence_Commands { ALARM_SILENCE_CMD_CANCEL = 0, ///< Cancel alarm silence command. ALARM_SILENCE_CMD_START = 1, ///< Start alarm silence command. NUM_OF_ALARM_SILENCE_CMDS ///< Total number of alarm silence commands. }; typedef enum Alarm_Silence_Commands ALARM_SILENCE_CMD_T; ///< Type for alarm silence commands /// Enumeration of alarm user actions. enum Alarm_User_Actions { ALARM_USER_ACTION_RESUME = 0, ///< User selected resume from alarm recovery options ALARM_USER_ACTION_RINSEBACK, ///< User selected rinseback from alarm recovery options ALARM_USER_ACTION_END_TREATMENT, ///< User selected end treatment from alarm recovery options ALARM_USER_ACTION_ACK, ///< User selected acknowledge (ok) from alarm recovery options NUMBER_OF_ALARM_USER_ACTIONS ///< Number of alarm user actions }; typedef enum Alarm_User_Actions ALARM_USER_ACTION_T; ///< Type for alarm user actions enumeration /// Enumeration of alarm state flags bit positions in periodic broadcast enum Alarm_State_Flag_Bit_Positions { ALARM_STATE_FLAG_BIT_POS_SYSTEM_FAULT = 0, ///< One or more system faults has been triggered ALARM_STATE_FLAG_BIT_POS_STOP = 1, ///< Alarm(s) have stopped treatment/activity and placed system in a safe state ALARM_STATE_FLAG_BIT_POS_NO_CLEAR = 2, ///< One or more active alarms is not recoverable ALARM_STATE_FLAG_BIT_POS_NO_RESUME = 3, ///< The "resume" user recovery option is disabled ALARM_STATE_FLAG_BIT_POS_NO_RINSEBACK = 4, ///< The "rinseback" user recovery option is disabled ALARM_STATE_FLAG_BIT_POS_NO_END_TREATMENT = 5, ///< The "end treatment" user recovery option is disabled ALARM_STATE_FLAG_BIT_POS____AVAILABLE = 6, ///< Not used - available for use ALARM_STATE_FLAG_BIT_POS_OK_BUTTON_ONLY = 7, ///< The "ok" user recovery option is enabled ALARM_STATE_FLAG_BIT_POS_ALARMS_TO_ESCALATE = 8, ///< One or more active alarms will escalate in time ALARM_STATE_FLAG_BIT_POS_ALARMS_SILENCED = 9, ///< Alarms have been temporarily silenced by user ALARM_STATE_FLAG_BIT_POS_LAMP_ON = 10, ///< Alarm lamp is currently on (for syncing to UI) ALARM_STATE_FLAG_BIT_POS_NO_RETRIGGER = 11, ///< Alarm block re-trigger flag is set ALARM_STATE_FLAG_BIT_POS_BLOOD_RECIRC = 12, ///< Blood recirculation is disabled ALARM_STATE_FLAG_BIT_POS_DIALYSATE_RECIRC = 13, ///< Dialysate recirculation is disabled ALARM_STATE_FLAG_BIT_POS_NO_MINIMIZE = 14, ///< Prevent user from minimizing alarm window ALARM_STATE_FLAG_BIT_POS_TOP_CONDITION = 15, ///< The top alarm's condition is still being detected NUM_OF_ALARM_STATE_FLAG_BIT_POS = 16 ///< The number of alarm state flag bit positions }; typedef enum Alarm_State_Flag_Bit_Positions ALARM_STATE_FLAG_BIT_POSITIONS_T; /**@}*/ /** * @addtogroup AlarmManagement * @{ */ /// Record defining the properties of each individual alarm. struct AlarmsStateRecord { ALARM_PRIORITY_T alarmPriority; ///< Priority of alarm U32 alarmSubRank; ///< Alarm's rank within it's priority BOOL alarmIsFault; ///< Alarm is a system fault? BOOL alarmIsDDFault; ///< Alarm is a fault for DD? BOOL alarmStops; ///< Alarm activation should cause a controlled stop BOOL alarmConditionClearImmed; ///< Alarm condition is cleared immediately (does not persist after alarm triggered) BOOL alarmNoClear; ///< Alarm cannot be cleared (unrecoverable)? BOOL alarmNoResume; ///< Alarm prevents treatment resume BOOL alarmNoRinseback; ///< Alarm prevents rinseback BOOL alarmNoEndTreatment; ///< Alarm prevents ending treatment BOOL alarmBlockRinseback; ///< Alarm should not trigger while in rinseback states BOOL alarmBlockEndTx; ///< Alarm should not trigger while in post-treatment mode BOOL alarmNoBloodRecirc; ///< Alarm prevents blood re-circulation BOOL alarmNoDialysateRecirc; ///< Alarm prevents dialysate re-circulation BOOL alarmClearOnly; ///< Clear only this alarm on user acknowledgment BOOL alarmTreatmentLog; ///< Log alarm to treatment log if active during treatment ALARM_ID_T alarmID; ///< Alarm ID }; typedef struct AlarmsStateRecord ALARM_T; /// Record defining the ranking of each individual alarm. struct AlarmsRankRecord { U32 alarmSubRank; ///< Alarm's rank within it's priority ALARM_ID_T alarmID; ///< Alarm ID }; typedef struct AlarmsRankRecord ALARM_RANK_T; #ifdef __ALARM_MGMT_C__ /// Table of alarms and their static properties. const ALARM_T ALARM_TABLE[] = { // Priority Rank Fault DDFault Stops ClrIm NoClr NoRes NoRin NoEnd BlkRB BlkET NoBRcr NoDRcr ClrOnly TxLog ID { ALARM_PRIORITY_NONE, 999, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, ALARM_ID_NO_ALARM }, { ALARM_PRIORITY_HIGH, 10, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_SOFTWARE_FAULT }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_SOFTWARE_FAULT }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_RO_SOFTWARE_FAULT }, { ALARM_PRIORITY_HIGH, 1, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_FPGA_POST_TEST_FAILED }, { ALARM_PRIORITY_HIGH, 1, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_WATCHDOG_POST_TEST_FAILED }, { ALARM_PRIORITY_HIGH, 1, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_UI_COMM_POST_FAILED }, { ALARM_PRIORITY_HIGH, 10, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_FPGA_CLOCK_SPEED_CHECK_FAILURE }, { ALARM_PRIORITY_HIGH, 10, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_FPGA_COMM_TIMEOUT }, { ALARM_PRIORITY_HIGH, 10, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_UI_COMM_TIMEOUT }, { ALARM_PRIORITY_HIGH, 111, FALSE, FALSE, TRUE , FALSE, FALSE, TRUE , FALSE, FALSE, TRUE , FALSE, FALSE, TRUE , FALSE, TRUE , ALARM_ID_TD_DD_COMM_TIMEOUT }, { ALARM_PRIORITY_HIGH, 10, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_COMM_TOO_MANY_BAD_CRCS }, { ALARM_PRIORITY_HIGH, 10, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_CAN_MESSAGE_NOT_ACKED_BY_UI }, { ALARM_PRIORITY_HIGH, 111, FALSE, FALSE, TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_TD_CAN_MESSAGE_NOT_ACKED_BY_DD }, { ALARM_PRIORITY_HIGH, 10, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_CRITICAL_DATA_ERROR }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_CRITICAL_DATA_ERROR }, { ALARM_PRIORITY_HIGH, 10, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_WATCHDOG_EXPIRED }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_WATCHDOG_EXPIRED }, { ALARM_PRIORITY_HIGH, 10, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_DD_COMM_TOO_MANY_BAD_CRCS }, { ALARM_PRIORITY_HIGH, 111, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_CAN_MESSAGE_NOT_ACKED_BY_RO }, { ALARM_PRIORITY_HIGH, 111, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_CAN_MESSAGE_NOT_ACKED_BY_TD }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_FPGA_POST_TEST_FAILED }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_FPGA_CLOCK_SPEED_CHECK_FAILURE }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, TRUE , FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_FPGA_COMM_TIMEOUT }, { ALARM_PRIORITY_HIGH, 1, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_ALARM_AUDIO_SELF_TEST_FAILURE }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_VALVE_CONTROL_FAILURE }, // Priority Rank Fault DDFault Stops ClrIm NoClr NoRes NoRin NoEnd BlkRB BlkET NoBRcr NoDRcr ClrOnly TxLog ID { ALARM_PRIORITY_HIGH, 10, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_ARTERIAL_SENSOR_TIMEOUT_FAULT }, { ALARM_PRIORITY_HIGH, 10, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_VENOUS_SENSOR_TIMEOUT_FAULT }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_HYD_OUTLET_PRES_TIMEOUT_FAULT }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_BIBAG_PRES_TIMEOUT_FAULT }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_SPENT_DIALYSATE_PRES_TIMEOUT_FAULT }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_FRESH_DIALYSATE_PRES_TIMEOUT_FAULT }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_TRANSMEMB_PRES_TIMEOUT_FAULT }, { ALARM_PRIORITY_HIGH, 10, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_VENOUS_SENSOR_TIMEOUT_FAULT }, { ALARM_PRIORITY_LOW , 852, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, ALARM_ID_TD_AC_POWER_LOST }, { ALARM_PRIORITY_HIGH, 100, FALSE, FALSE, TRUE , FALSE, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, TRUE , TRUE , FALSE, TRUE , ALARM_ID_TD_AC_POWER_LOST_IN_TREATMENT }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_CD1_SENSOR_FPGA_FAULT }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_CD2_SENSOR_FPGA_FAULT }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_CD3_SENSOR_FPGA_FAULT }, { ALARM_PRIORITY_HIGH, 110, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, ALARM_ID_DD_CD4_SENSOR_FPGA_FAULT }, { ALARM_PRIORITY_HIGH, 12, FALSE, FALSE, TRUE , TRUE , FALSE, TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , TRUE , FALSE, TRUE , ALARM_ID_TD_VENOUS_BUBBLE_DETECTED, }, { ALARM_PRIORITY_HIGH, 210, FALSE, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_CARTRIDGE_DOOR_OPENED }, { ALARM_PRIORITY_HIGH, 1, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_STUCK_BUTTON_TEST_FAILED }, { ALARM_PRIORITY_HIGH, 202, FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, TRUE , ALARM_ID_TD_ARTERIAL_PRESSURE_LOW }, { ALARM_PRIORITY_HIGH, 203, FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, TRUE , ALARM_ID_TD_ARTERIAL_PRESSURE_HIGH }, { ALARM_PRIORITY_HIGH, 10, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_ARTERIAL_PRESSURE_OUT_OF_RANGE }, { ALARM_PRIORITY_LOW, 700, FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, ALARM_ID_TD_ARTERIAL_PRESSURE_SELF_TEST_FAILURE }, { ALARM_PRIORITY_HIGH, 200, FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, TRUE , ALARM_ID_TD_VENOUS_PRESSURE_LOW }, { ALARM_PRIORITY_HIGH, 201, FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE , FALSE, FALSE, TRUE , ALARM_ID_TD_VENOUS_PRESSURE_HIGH }, { ALARM_PRIORITY_HIGH, 10, TRUE , FALSE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, ALARM_ID_TD_VENOUS_PRESSURE_OUT_OF_RANGE }, { ALARM_PRIORITY_LOW, 700, FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, ALARM_ID_TD_VENOUS_PRESSURE_SELF_TEST_FAILURE }, // Priority Rank Fault DDFault Stops ClrIm NoClr NoRes NoRin NoEnd BlkRB BlkET NoBRcr NoDRcr ClrOnly TxLog ID { ALARM_PRIORITY_LOW, 710, FALSE, FALSE, TRUE , TRUE , FALSE, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, ALARM_ID_TD_PRE_TREATMENT_DRY_PRESSURE_TEST_FAILURE }, }; // Priority Rank Fault DDFault Stops ClrIm NoClr NoRes NoRin NoEnd BlkRB BlkET NoBRcr NoDRcr ClrOnly TxLog ID /// Table of alarms and their rank. const ALARM_RANK_T ALARM_RANK_TABLE[] = { { 1, ALARM_ID_TD_FPGA_POST_TEST_FAILED }, { 1, ALARM_ID_TD_WATCHDOG_POST_TEST_FAILED }, { 1, ALARM_ID_TD_UI_COMM_POST_FAILED }, { 1, ALARM_ID_TD_ALARM_AUDIO_SELF_TEST_FAILURE }, { 1, ALARM_ID_TD_STUCK_BUTTON_TEST_FAILED }, { 10, ALARM_ID_TD_SOFTWARE_FAULT }, { 10, ALARM_ID_TD_UI_COMM_TIMEOUT }, { 10, ALARM_ID_TD_COMM_TOO_MANY_BAD_CRCS }, { 10, ALARM_ID_TD_CAN_MESSAGE_NOT_ACKED_BY_UI }, { 10, ALARM_ID_TD_FPGA_COMM_TIMEOUT }, { 10, ALARM_ID_TD_CRITICAL_DATA_ERROR }, { 10, ALARM_ID_TD_FPGA_CLOCK_SPEED_CHECK_FAILURE }, { 10, ALARM_ID_TD_WATCHDOG_EXPIRED }, { 10, ALARM_ID_DD_COMM_TOO_MANY_BAD_CRCS }, { 10, ALARM_ID_TD_ARTERIAL_SENSOR_TIMEOUT_FAULT }, { 10, ALARM_ID_TD_VENOUS_SENSOR_TIMEOUT_FAULT }, { 10, ALARM_ID_TD_VOLTAGE_OUT_OF_RANGE }, { 10, ALARM_ID_TD_ARTERIAL_PRESSURE_OUT_OF_RANGE }, { 10, ALARM_ID_TD_VENOUS_PRESSURE_OUT_OF_RANGE }, { 12, ALARM_ID_TD_VENOUS_BUBBLE_DETECTED }, { 100, ALARM_ID_TD_AC_POWER_LOST_IN_TREATMENT }, { 110, ALARM_ID_DD_CRITICAL_DATA_ERROR }, { 110, ALARM_ID_DD_WATCHDOG_EXPIRED }, { 110, ALARM_ID_DD_SOFTWARE_FAULT }, { 110, ALARM_ID_RO_SOFTWARE_FAULT }, { 110, ALARM_ID_DD_FPGA_POST_TEST_FAILED }, { 110, ALARM_ID_DD_FPGA_CLOCK_SPEED_CHECK_FAILURE }, { 110, ALARM_ID_DD_FPGA_COMM_TIMEOUT }, { 110, ALARM_ID_DD_VALVE_CONTROL_FAILURE }, { 110, ALARM_ID_DD_HYD_OUTLET_PRES_TIMEOUT_FAULT }, { 110, ALARM_ID_DD_BIBAG_PRES_TIMEOUT_FAULT }, { 110, ALARM_ID_DD_SPENT_DIALYSATE_PRES_TIMEOUT_FAULT }, { 110, ALARM_ID_DD_FRESH_DIALYSATE_PRES_TIMEOUT_FAULT }, { 110, ALARM_ID_DD_TRANSMEMB_PRES_TIMEOUT_FAULT }, { 110, ALARM_ID_DD_CD1_SENSOR_FPGA_FAULT }, { 110, ALARM_ID_DD_CD2_SENSOR_FPGA_FAULT }, { 110, ALARM_ID_DD_CD3_SENSOR_FPGA_FAULT }, { 110, ALARM_ID_DD_CD4_SENSOR_FPGA_FAULT }, { 111, ALARM_ID_TD_DD_COMM_TIMEOUT }, { 111, ALARM_ID_TD_CAN_MESSAGE_NOT_ACKED_BY_DD }, { 111, ALARM_ID_DD_CAN_MESSAGE_NOT_ACKED_BY_RO }, { 111, ALARM_ID_DD_CAN_MESSAGE_NOT_ACKED_BY_TD }, { 200, ALARM_ID_TD_VENOUS_PRESSURE_LOW }, { 201, ALARM_ID_TD_VENOUS_PRESSURE_HIGH }, { 202, ALARM_ID_TD_ARTERIAL_PRESSURE_LOW }, { 203, ALARM_ID_TD_ARTERIAL_PRESSURE_HIGH }, { 210, ALARM_ID_TD_CARTRIDGE_DOOR_OPENED }, { 700, ALARM_ID_TD_ARTERIAL_PRESSURE_SELF_TEST_FAILURE }, { 700, ALARM_ID_TD_VENOUS_PRESSURE_SELF_TEST_FAILURE }, { 710, ALARM_ID_TD_PRE_TREATMENT_DRY_PRESSURE_TEST_FAILURE }, { 852, ALARM_ID_TD_AC_POWER_LOST }, { 999, ALARM_ID_NO_ALARM }, }; #endif // included by AlarmMgmt.c /**@}*/ #ifdef __MANUAL_ALARMS__ // Manual alarm table. These fields must be filled by a user even if we have to get the data from other departments // This part is only compiled when the checkAlarms.sh creates a .c file to check the alarm tables. This code is not used in the firmware. // The character fields are separated by | instead of , so the parser script can distinguish the end of each field column from the other it does not // get confused with the , in the text. struct AlarmsManualRecord { U32 alarmNumber; ///< Alarm number ALARM_ID_T alarmID; ///< Alarm ID char field[2000]; ///< Alarm text field }; typedef struct AlarmsManualRecord ALARM_MANUAL_T; const ALARM_MANUAL_T ALARM_MANUAL_TABLE[] = { // Num Alarm ID Device Display Title Instructions Alarm List Title Description Trigger Condition { 0 , ALARM_ID_NO_ALARM , "N/A | | | | Indication for when no alarms is a possible situation | N/A | "}, { 1 , ALARM_ID_TD_SOFTWARE_FAULT , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | HD Fault: SW Invalid State | HD Software fault. Software found itself in an unexpected state | If the specific software faults listed in alarm management SW faults has been detected | "}, { 2 , ALARM_ID_DD_SOFTWARE_FAULT , "DD | Service Required: Dialysate Device | A problem was detected with the dialysate device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Fault: Software Invalid State | DD software fault. Software found itself in an unexpected state | If the specific software faults listed in alarm management SW faults has been detected | "}, { 3 , ALARM_ID_RO_SOFTWARE_FAULT , "DD | Service Required: Dialysate Device | A problem was detected with the dialysate device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Fault: Software Invalid State | DD software fault. Software found itself in an unexpected state | If the specific software faults listed in alarm management SW faults has been detected | "}, { 4 , ALARM_ID_TD_FPGA_POST_TEST_FAILED , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | HD POST: FPGA Compatibility | HD FPGA POST failure | Minimum HD FPGA major revision is not compatible with this version of HD firmware or the FPGA Id is not correct. | "}, { 5 , ALARM_ID_TD_WATCHDOG_POST_TEST_FAILED , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | HD POST: WD Safestate | HD Watchdog POST failure | If the following are not observed after 500ms of not petting the WD: 1. WD exp pin=low 2. 24V <= 5V 3. audio current >= 200mA If the following are not observed after 500ms of resumed WD petting at proper timing: 1. WD exp pin=high 2. 24V >= 22.6V 3. audio current <= 10 mA | "}, { 6 , ALARM_ID_TD_UI_COMM_POST_FAILED , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | HD POST: Proc- UI Comm | UI communication POST failure. UI failed to communicate within a reasonable time after power up | If the UI failed to checkin via the CAN bus within 40 seconds | "}, { 7 , ALARM_ID_TD_FPGA_CLOCK_SPEED_CHECK_FAILURE , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | HD Fault: Proc- FPGA Clock | HD processor clock speed checks against FPGA clock failure | If during initialization mode, the difference between the processor clock speed and the FPGA clock speed > 1. | "}, { 8 , ALARM_ID_TD_FPGA_COMM_TIMEOUT , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | HD Fault: FPGA Com | HD FPGA communication down for too long | If there are more than 3 comm errors in a 1 min period. | "}, { 9 , ALARM_ID_TD_UI_COMM_TIMEOUT , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | HD Fault: UI Comm | User interface communication timeout | If the sub-system communication timeout has occurred. UI is 5 seconds. DD is 2 seconds. | "}, { 10 , ALARM_ID_TD_DD_COMM_TIMEOUT , "TD | Communication Error | A communication problem has been detected.\n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | Loss of DD Comm (Timeout) | Dialysate generator communication timeout | If DD communication timeout is detected for more than 2 seconds. | "}, { 11 , ALARM_ID_TD_COMM_TOO_MANY_BAD_CRCS , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | HD Fault: CAN CRC Com | Too many bad CRCs detected on received system messages | If too many bad messages CRCs are received within a set period of time | "}, { 12 , ALARM_ID_TD_CAN_MESSAGE_NOT_ACKED_BY_UI , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | HD Fault: CAN ACK UI Com | System message that required acknowledgment was not acknowledged | If no retries left in the pending acknowlegement list. | "}, { 13 , ALARM_ID_TD_CAN_MESSAGE_NOT_ACKED_BY_DD , "TD | Communication Error | A communication problem has been detected.\n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | Loss of DD Comm (DD ACK) | HD to DD comm error. | HD message to DD that requires acknowledge was not acknowledged within a certain time. | "}, { 14 , ALARM_ID_TD_CRITICAL_DATA_ERROR , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | HD Fault: Critical Data Err | HD critical data integrity check failed | If the critical data failed range check. | "}, { 15 , ALARM_ID_DD_CRITICAL_DATA_ERROR , "DD | Service Required: Dialysate Device | A problem was detected with the dialysate device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Fault: Critical Data Err | DD critical data integrity check failed | If the critical data failed range check. | "}, { 16 , ALARM_ID_TD_WATCHDOG_EXPIRED , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | HD Fault: WD Error | HD watchdog expired | If the watchdog signal is low while not in POST. | "}, { 17 , ALARM_ID_DD_WATCHDOG_EXPIRED , "DD | Service Required: Dialysate Device | A problem was detected with the dialysate device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Fault: WD Error | DD watchdog expired | If the watchdog signal is low while not in POST. | "}, { 18 , ALARM_ID_DD_COMM_TOO_MANY_BAD_CRCS , "DD | Service Required: Dialysate Device | A problem was detected with the dialysate device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Fault: CAN CRC Com | Too many bad CRCs detected on received system messages | If too many bad messages CRCs are received within a set period of time | "}, { 19 , ALARM_ID_DD_CAN_MESSAGE_NOT_ACKED_BY_RO , "DD | Service Required: Dialysate Device | A problem was detected with the dialysate device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | Loss of RO Comm (RO ACK) | DD to RO comm error | DD message to RO that requires acknowledge was not acknowledged within a certain time. | "}, { 20 , ALARM_ID_DD_CAN_MESSAGE_NOT_ACKED_BY_TD , "DD | Service Required: Dialysate Device | A problem was detected with the dialysate device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | Loss of TD Comm (TD ACK) | DD to TD comm error | DD message to TD that requires acknowledge was not acknowledged within a certain time. | "}, { 21 , ALARM_ID_DD_FPGA_POST_TEST_FAILED , "DD | Service Required: Dialysate Device | A problem was detected with the dialysate device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD POST: FPGA Compatibility | DD FPGA POST failure | Minimum DD FPGA major and minor revision are not equal to the FPGA major and minor revision in FPGA header | "}, { 22 , ALARM_ID_DD_FPGA_CLOCK_SPEED_CHECK_FAILURE , "DD | Service Required: Dialysate Device | A problem was detected with the dialysate device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Fault: Proc- FPGA Clock | FPGA clock speed failure | If the FPGA clock speed is relatively close to the processor clock for a certain period of time. | "}, { 23 , ALARM_ID_DD_FPGA_COMM_TIMEOUT , "DD | Service Required: Dialysate Device | A problem was detected with the dialysate device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Fault: FPGA Com | DD FPGA communication down for too long | If retries for commands exceeds limit or FPGA reports comm error. | "}, { 24 , ALARM_ID_HD_ALARM_AUDIO_SELF_TEST_FAILURE , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | HD POST: Primary Alarm Current | HD alarm audio failed POST | If alarm audio current is NOT in expected range for than 1 second while alarm tone is being output | "}, { 25 , ALARM_ID_DD_VALVE_CONTROL_FAILURE , "DD | Service Required: Dialysate Device | A problem was detected with the dialysate device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Fault: Valve Control | DD FPGA not accepting commanded valve states | If the read back FPGA valve states does not match the commanded valve states for a certain amount of time. | "}, // Num Alarm ID Device Display Title Instructions Alarm List Title Description Trigger Condition { 26 , ALARM_ID_TD_ARTERIAL_SENSOR_TIMEOUT_FAULT , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | TD Arterial Pressure Sensor Error | TD arterial pressure sensor reporting error or not being read successfully | Arterial pressure sensor is reporting an error or FPGA is failing to read sensor. | "}, { 27 , ALARM_ID_TD_VENOUS_SENSOR_TIMEOUT_FAULT , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | TD Venous Pressure Sensor Error | TD venous pressure sensor reporting error or not being read successfully | Venous pressure sensor is reporting an error or FPGA is failing to read sensor. | "}, { 28 , ALARM_ID_DD_HYD_OUTLET_PRES_TIMEOUT_FAULT , "DD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Hyd outlet Pressure Sensor Error | DD hydraulics outlet pressure sensor reporting error or not being read successfully | Hydraulics outlet pressure sensor is reporting an error or FPGA is failing to read sensor. | "}, { 29 , ALARM_ID_DD_BIBAG_PRES_TIMEOUT_FAULT , "DD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Bibag Pressure Sensor Error | DD bibag pressure sensor reporting error or not being read successfully | Bibag pressure sensor is reporting an error or FPGA is failing to read sensor. | "}, { 30 , ALARM_ID_DD_SPENT_DIALYSATE_PRES_TIMEOUT_FAULT , "DD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Spent Dial Pressure Sensor Error | DD spent dialysate pressure sensor reporting error or not being read successfully | Spent dialysate pressure sensor is reporting an error or FPGA is failing to read sensor. | "}, { 31 , ALARM_ID_DD_FRESH_DIALYSATE_PRES_TIMEOUT_FAULT , "DD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Fresh Dial Pressure Sensor Error | DD fresh dialysate pressure sensor reporting error or not being read successfully | Fresh dialysate pressure sensor is reporting an error or FPGA is failing to read sensor. | "}, { 32 , ALARM_ID_DD_TRANSMEMB_PRES_TIMEOUT_FAULT , "DD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Transmemb Pressure Sensor Error | DD transmembrane sensor reporting error or not being read successfully | Transmembrane pressure sensor is reporting an error or FPGA is failing to read sensor. | "}, { 33 , ALARM_ID_TD_VOLTAGE_OUT_OF_RANGE , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | TD Fault: Voltage Monitor | TD monitored voltage is out of range | If the TD monitored voltages are out of range for a certain period of time. | "}, { 34 , ALARM_ID_TD_AC_POWER_LOST , "TD | Power Loss | AC Power has been lost.\n- Check all electrical connections.\n- Press Resume/OK to return to welcome screen. | Loss of AC Power | TD AC power lost alarm | The TD Software shall trigger an alarm if an AC power loss is detected while the TD system is in standby, service, or treatment parameters mode. | "}, { 35 , ALARM_ID_TD_AC_POWER_LOST_IN_TREATMENT , "TD | Power Loss | Treatment must be terminated due to a power loss.\n- Follow clinic instructions on when to initiate manual rinseback.\n- Check all electrical connections.\n- If power returns within 5 minutes of outage, \n- rinseback will be allowed. | Blood Stop: Loss of AC Power | TD AC power lost alarm | The TD Software shall trigger an alarm if an AC power loss is detected while the TD system is in pre-treatment, treatment, or post-treatment mode. | "}, { 36 , ALARM_ID_DD_CD1_SENSOR_FPGA_FAULT , "DD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Conductivity Sensor (CD1) Error | DD conductivity sensor located before balancing chamber reporting error or not being read successfully | Conductvity Sensor (CD1) is reporting an error or FPGA is failing to read sensor. | "}, { 37 , ALARM_ID_DD_CD2_SENSOR_FPGA_FAULT , "DD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Conductivity Sensor (CD2) Error | DD conductivity sensor located after balancing chamber reporting error or not being read successfully | Conductvity Sensor (CD2) is reporting an error or FPGA is failing to read sensor. | "}, { 38 , ALARM_ID_DD_CD3_SENSOR_FPGA_FAULT , "DD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Conductivity Sensor (CD3) Error | DD conductivity sensor located after balancing chamber reporting error or not being read successfully | Conductvity Sensor (CD3) is reporting an error or FPGA is failing to read sensor. | "}, { 39 , ALARM_ID_DD_CD4_SENSOR_FPGA_FAULT , "DD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | DD Conductivity Sensor (CD4) Error | DD conductivity sensor located in spent dialysate path reporting error or not being read successfully | Conductvity Sensor (CD4) is reporting an error or FPGA is failing to read sensor. | "}, { 40 , ALARM_ID_TD_VENOUS_BUBBLE_DETECTED , "TD | Venous Air Detected | Air detected in the venous air trap.\n- Confirm arterial access placement and confirm\nconnections are secure.\n- Treatment must be terminated without rinseback. | Blood Stop: Venous Air Bubble | TD venous air bubble detected alarm | If bubbles are detected during the treatment. | "}, { 41 , ALARM_ID_TD_CARTRIDGE_DOOR_OPENED , "TD | Blood Pump Stopped: Door Open | The device door is open.\n Close the device door. \n- Press Resume/OK to continue. | Blood Stop: Door Open | TD cartridge door opened alarm | If the cartridge door is opened as reported by the FPGA. | "}, { 42 , ALARM_ID_TD_STUCK_BUTTON_TEST_FAILED , "TD | Stuck Button | A button was pressed during start up and appears stuck. \n- Press and release the power and stop buttons on the\nfront of the device.\n- Turn device off, then back on.\n- If problem continues, call service to schedule a repair. | TD POST: Stuck Button | TD Stuck button POST failure. Stop or Off button detected to be pressed for at least 1 second during test shortly after power up | Stop or Off button are pressed for more than 1 sec during POST. | "}, { 43 , ALARM_ID_TD_ARTERIAL_PRESSURE_LOW , "TD | Low Arterial Pressure | Arterial pressure is low.\n- Inspect arterial bloodlines for kinks or clamps.\n- Check needle placement or access position.\n- Resolve access issues, if applicable.\n- Check to ensure transducers are securely connected.\n- Inspect transducer for moisture and change if applicable.\n- If clots are present, end treatment without rinseback. | Blood Stop: Arterial Pres. Low | Arterial pressure too low during treatment | If the arterial pressure < TREATMENT_PARAM_ART_PRESSURE_LOW_LIMIT. Or expanded pressure limits based on mode of operation. | "}, { 44 , ALARM_ID_TD_ARTERIAL_PRESSURE_HIGH , "TD | High Arterial Pressure | Arterial pressure is high.\n- Check venous bloodlines for kinks or clamps.\n- Check needle placement and/or access position.\n- Resolve access issues if applicable.\n- Check to ensure transducers are securely connected.\n- Inspect transducer for moisture and change if applicable.\n- If clots are present, end treatment without rinseback. | Blood Stop: Arterial Pres. High | Arterial pressure too high during treatment | If the arterial pressure > TREATMENT_PARAM_ART_PRESSURE_HIGH_LIMIT. Or expanded pressure limits based on mode of operation. | "}, { 45 , ALARM_ID_TD_ARTERIAL_PRESSURE_OUT_OF_RANGE , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | TD Fault: Arterial Press Range | TD arterial pressure sensor is reading out of range | If the arterial pressure > 2000.0 mmHg or < -1500.0 mmHg. | "}, { 46 , ALARM_ID_TD_ARTERIAL_PRESSURE_SELF_TEST_FAILURE , "TD | Self Test: Cartridge | A cartridge has been detected during self- test.\n- Open door\n- Remove cartridge\n- Close door\n- Press Resume/OK | Process: Pre- Tx Remove Cartridge | TD arterial pressure self-test failure alarm | If arterial pressure < -300 or > 100 mmHg | "}, { 47 , ALARM_ID_TD_VENOUS_PRESSURE_LOW , "TD | Low Venous Pressure | Venous pressure is low.\n- Ensure venous access connections are properly secured.\n- Check needle placement and resolve access issues, \nif applicable.\n- Check air trap for foam and that transducers are secured.\n- Inspect transducer for moisture and change, if applicable.\n- Inspect dialyzer for clots. If clots are present, follow\n facility policy to end treatment.\n- Press Resume/OK to continue treatment. | Blood Stop: Venous Pres. Low | Venous pressure too low during treatment | If the venous pressure < TREATMENT_PARAM_VEN_PRESSURE_LOW_LIMIT. Or expanded pressure limits based on mode of operation. | "}, { 48 , ALARM_ID_TD_VENOUS_PRESSURE_HIGH , "TD | High Venous Pressure | Venous pressure is high. \n- Check venous bloodlines for kinks or clamps.\n- Check needle placement and/or access position.\n- Resolve access issues, if applicable.\n- Check air trap for foam and that transducers are secured.\n- Inspect transducer for moisture and change, if applicable.\n- If clots are present, end treatment without rinseback.\n- Press Resume/OK to continue treatment. | Blood Stop: Venous Pres. High | Venous pressure too high during treatment | If the venous pressure > TREATMENT_PARAM_VEN_PRESSURE_HIGH_LIMIT. Or expanded pressure limits based on mode of operation. | "}, { 49 , ALARM_ID_TD_VENOUS_PRESSURE_OUT_OF_RANGE , "TD | Service Required: Hemodialysis Device | A problem was detected with the hemodialysis device. \n- Treatment must be terminated.\n- Locate the ID code found in the bottom left corner\nof the alarm screen.\n- Call service to report the issue and schedule a repair. | TD Fault: Venous Press Range | TD venous pressure sensor is reading out of range | If the venous pressure > 2000.0 mmHg or < -1500.0 mmHg. | "}, { 50 , ALARM_ID_TD_VENOUS_PRESSURE_SELF_TEST_FAILURE , "TD | Self Test: Cartridge | A cartridge was detected during self- test.\n- Open door\n- Remove cartridge\n- Close door\n- Press Resume/OK | Process: Pre- Tx Remove Cartridge | TD venous pressure self-test failure alarm | If the venous pressure < -100 or > 600 mmHg | "}, // Num Alarm ID Device Display Title Instructions Alarm List Title Description Trigger Condition { 51 , ALARM_ID_TD_PRE_TREATMENT_DRY_PRESSURE_TEST_FAILURE , "TD | Self Test: Cartridge Check | A problem has been detected during self- test. \n- Confirm cartridge is properly installed without kinks or clamps.\n- Ensure all connections are secure. \n- Press Resume/OK to resume. \n- If problem persists, install a new cartridge. | Process: Pre- Tx Dry Self- Test | TD pre-treatment mode dry self-tests failure | If the following dry self tests have failed: 1. handleDrySelfTestPressureSensorsState 2. handleDrySelfTestPressureSensorsNormalState | "}, }; #endif // manual alarms #endif