#pragma once // TODO REMOVE // General defines #define UI_MSG_BB_STATUS_INDEX 4 #define UI_MSG_BB_PAYLOAD_ID 0x63 #define UI_CONFIRM_MSG_TIMESTAMP_INDEX 0 #define UI_CONFIRM_MSG_STATUS_INDEX 1 #define SECONDS_PER_MINUTE 60 #define MINUTES_PER_HOUR 60 #define MILLISECONDS_PER_SECOND 1000 #define MILLILITERS_PER_LITER 1000 #define ACCEPT_VALUE 1 #define REJECT_VALUE 0 #define NEARLY_ZERO 0.00000001 #define PASS_RESULT 1 // TODO remove #define DEVICE_ID 1234 #define UI_CONFIRM_RESP_TIMOUT_MS (SECONDS_PER_MINUTE * MILLISECONDS_PER_SECOND) // Timer event defines #define DEFAULT_TIMEOUT_S 10 #define QOBJECT_TIMER_TIMEOUT_MS 100 #define PROGRESS_TIME_BC_INTERVAL_MS 1000 #define PRORGESS_TIME_BC_QART_INT_MS 250 #define NUM_OF_COUNTS_TIMER_BC_EMIT (PROGRESS_TIME_BC_INTERVAL_MS / QOBJECT_TIMER_TIMEOUT_MS) #define NUN_OF_COUNTS_QART_BC_EMIT (PRORGESS_TIME_BC_QART_INT_MS / QOBJECT_TIMER_TIMEOUT_MS) #define NUM_OF_COUNTS_TIMER_2_CONTROL (PROGRESS_TIME_BC_INTERVAL_MS / QOBJECT_TIMER_TIMEOUT_MS) #define NUM_OF_COUNTS_TO_BC_MSG 3 // TODO remove // Treatment params #define MIN_DIAL_RATE_MLPM 50 #define MAX_DIAL_RATE_MLPM 600 #define MIN_BLOOD_RATE_MLPM 100 #define MAX_BLOOD_RATE_MLPM 500 #define MIN_TX_TIME_MINS (1 * MINUTES_PER_HOUR) #define MAX_TX_TIME_MINS (8 * MINUTES_PER_HOUR) #define MIN_UF_VOL_L 0.0 #define MAX_UF_VOL_L 8.0 #define MAX_UF_VOL_ML (MAX_UF_VOL_L * MILLILITERS_PER_LITER) #define MIN_UF_RATE_MLPM 0.0 #define MAX_UF_RATE_MLPM (2000.0 / MINUTES_PER_HOUR) #define ACID_TYPES_1251_1_K 1.0 // TODO remove? #define ACID_TYPES_CALCIUM 2.5 #define ACID_TYPES_BICARB 33 #define ACID_TYPES_SODIUM 137 #define DEF_TX_ELAPSED_TIME_S (2 * MINUTES_PER_HOUR) * SECONDS_PER_MINUTE #define DEF_TX_PARAM_PRESCRIBED_DUR_MIN (4 * MINUTES_PER_HOUR) //((4 * MINUTES_PER_HOUR) + 30) // TODO why 30 extra minutes #define DEF_TX_PARAM_PRESCRIBED_DUR_S DEF_TX_PARAM_PRESCRIBED_DUR_MIN * SECONDS_PER_MINUTE #define DEF_TX_PARAM_UF_VOLUME_L 2.0 #define DEF_TX_PARAM_BLOOD_FLOW_RATE_MLPM 400 #define DEF_TX_PARAM_DIAL_FLOW_RATE_MLPM 350 #define DEF_TX_PARAM_SALINE_BOLUS_VOL_ML 100 #define DEF_TX_PARAM_RINSEBACK_FLOW_RATE_MLPM 200 #define DEF_TX_PARAM_RINSEBACK_VOLUME_ML 300 #define DEF_TX_PARAM_ART_PRES_LIMIT_WIN_MMHG 120 #define DEF_TX_PARAM_VEN_PRES_LIMIT_WIN_MMHG 100 #define DEF_TX_PARAM_VEN_PRES_LIMIT_ASYM_WIN_MMHG 20 #define DEF_TX_PARAM_DIA_TEMPERATURE_C 37.0 #define DEF_TX_SYSTOLIC_PRESSURE 120 #define DEF_TX_DIASTOLIC_PRESSURE 80 #define DEF_TX_HEART_BEAT 100 // Arterial /Venous limits #define MIN_ART_PRES_LIMIT_MMHG -300.0 #define MAX_ART_PRES_LIMIT_MMHG 100.0 #define MIN_VEN_PRES_LIMIT_MMHG 20.0 #define MAX_VEN_PRES_LIMIT_MMHG 400.0 #define MAX_TMP_PRES_LIMIT_MMHG 100.0 #define MIN_TMP_PRES_LIMIT_MMHG -500.0 #define OCCLUSION_STABLE_TIME_COUNT (10 * MILLISECONDS_PER_SECOND) / QOBJECT_TIMER_TIMEOUT_MS // Initiate treatment #define INITIATE_TREATMENT 1 #define ALLOW_DIALYSATE_DELIVER 1 #define BYPASS_DIALYSATE_DELIVER 0 #define TRIGGER_STOP_ALARM_TIME_MS (2 * MILLISECONDS_PER_SECOND) // Treatment defines #define BLOOD_PRIME_VOLUME_ML (106.6 + 40) #define BLOOD_PRIME_START_FLOW_MLPM 250 #define BLOOD_PRIME_FLOW_INTEGRATOR (1.0 / (SECONDS_PER_MINUTE * (MILLISECONDS_PER_SECOND / QOBJECT_TIMER_TIMEOUT_MS))) #define BLOOD_PRIME_PAUSE_TIMEOUT_S (5 * SECONDS_PER_MINUTE) #define BLOOD_PRIME_RESUME 1 // Heparin substates #define HEPARIN_OFF_SUBSTATE 0 #define HEPARIN_PAUSED_SUBSTATE 2 #define HEPARIN_DISPENSING_SUBSTATE 4 #define HEPARIN_COMPLETED_SUBSTATE 5 // Ultrafiltration substates #define UF_PAUSESD_STATE 0 #define UF_RUNNING_STATE 1 // Rinseback defines #define RINSEBACK_FLOW_INTEGRATOR 1.0 / (SECONDS_PER_MINUTE * (MILLISECONDS_PER_SECOND / QOBJECT_TIMER_TIMEOUT_MS)) #define RINSEBACK_MIN_FLOW_RATE_MLPM 100 #define RINSEBACK_MAX_RLOW_RATE_MLPM 500 #define RINSEBACK_ADJ_FLOW_RATE_MLPM 10 #define RINSEBACK_BACK_MAX_TIME_MS (5 * SECONDS_PER_MINUTE * MILLISECONDS_PER_SECOND) #define RINSEBACK_ADDITION_VOL_ML 50 #define RINSEBACK_MAX_ADDITION_TIME_MS (25 * MILLISECONDS_PER_SECOND) #define RINSEBACK_END_TREATMENT_SIGNAL 999 // TODO remove? // Fluid Bolus defines #define FLUID_BOLUS_START_CMD 1 #define ENABLE_BOLUS 1 // Alarms #define ALARM_TABLE_PRIORITY_INDEX 0 #define ALARM_TABLE_PROPERTIES_INDEX 1 #define ALARM_NO_ALARM_PROPERTIES 0 #define ALARM_STOP_TX_PROPERTIES 6 enum User_Command_ID { CMD_NONE = -1, CMD_STAND_BY = 0, CMD_PRE_TX = 1, CMD_BLOOD_PRIME = 2, CMD_MAIN_TX = 3, CMD_RINSEBACK = 4, CMD_RICIRCULATE = 5, CMD_END_TX = 6, CMD_DISINFECTION = 12, CMD_HIGH_PRIO_ALARM = 13, CMD_MEDIUM_PRIO_ALARM = 14, CMD_LOW_PRIO_ALARM = 15, NUM_OF_USER_CMDS = 16, }; enum Treatment_States { TREAT_START_STATE = 0, TREAT_BLOOD_PRIME_STATE = 1, TREAT_DIALYSIS_STATE = 2, TREAT_PAUSED_STATE = 3, TREAT_RINSEBACK_STATE = 4, TREAT_RECIRC_STATE = 5, TREAT_END_STATE = 6, TREAT_ISO_UF_STATE = 7, TREAT_SALINE_BOLUS_STATE = 8, TREAT_DIALYSIS_PAUSED_STATE = 9, }; enum Blood_Prime_States { BLOOD_PRIME_RAMP_STATE = 0, BLOOD_PRIME_RUN_STATE = 1, BLOOD_PRIME_PAUSED_STATE = 2, BLOOD_PRIME_FLUID_BOLUS_STATE = 3, }; enum Fluid_Bolus_States { FLUID_BOLUS_IDLE_STATE = 0, FLUID_BOLUS_WAIT_FOR_PUMPS_STOP_STATE = 1, FLUID_BOLUS_SALINE_IN_PROGRESS_STATE = 2, FLUID_BOLUS_SUBSITUTE_IN_PROGRESS_STATE = 3, }; enum Dialysis_States { DIALYSIS_UF_STATE = 0, DIALYSIS_UF_PAUSED_STATE = 1, DIALYSIS_UF_FLUID_BOLUS_STATE = 2, }; enum Rinseback_States { RINSEBACK_STOP_INIT_STATE = 0, RINSEBACK_RUN_STATE = 1, RINSEBACK_PAUSED_STATE = 2, RINSEBACK_STOP_STATE = 3, RINSEBACK_RUN_ADDITIONAL_STATE = 4, }; enum Requested_Rinseback_User_Actions { REQUESTED_USER_ACTION_RINSEBACK_CONFIRM_START = 0, REQUESTED_USER_ACTION_RINSEBACK_INCREASE_RATE = 1, REQUESTED_USER_ACTION_RINSEBACK_DECREASE_RATE = 2, REQUESTED_USER_ACTION_RINSEBACK_PAUSE = 3, REQUESTED_USER_ACTION_RINSEBACK_RESUME = 4, REQUESTED_USER_ACTION_RINSEBACK_ADDITIONAL = 5, REQUESTED_USER_ACTION_RINSEBACK_CONFIRM_RECIRCULATE = 6, REQUESTED_USER_ACTION_RINSEBACK_END_TREATMENT = 7, }; enum Recirculate_States { TREATMENT_RECIRC_DISCONNECT_PATIENT_STATE = 0, TREATMENT_RECIRC_RECIRC_STATE = 1, TREATMENT_RECIRC_STOPPED_STATE = 2, TREATMENT_RECIRC_RECONNECT_PATIENT_STATE = 3, }; enum Requested_Treatment_Recirc_User_Actions { REQUESTED_USER_ACTION_TX_RECIRC_RECONNECT = 0, REQUESTED_USER_ACTION_TX_RECIRC_CONFIRM_RECONNECT = 1, REQUESTED_USER_ACTION_TX_RECIRC_RESUME_RC = 2, REQUESTED_USER_ACTION_TX_RECIRC_END_TREATMENT = 3, REQUESTED_USER_ACTION_TX_RECIRC_CONFIRM_DISCONNECT = 4, }; enum State_Status { STATE_ON_ENTRY = 0, STATE_ON_ACTION, STATE_ON_EXIT, }; enum Broadcast_Type { BC_DELAYED = 0, BC_IMMEDIATELY, }; // Alarm related enums enum Alarm_Priorities { ALARM_PRIORITY_NONE = 0, ALARM_PRIORITY_LOW = 1, ALARM_PRIORITY_MEDIUM = 2, ALARM_PRIORITY_HIGH = 3, }; enum Alarm_User_Actions { ALARM_USER_ACTION_RESUME = 0, ALARM_USER_ACTION_RINSEBACK = 1, ALARM_USER_ACTION_END_TREATMENT = 2, ALARM_USER_ACTION_ACK = 3, ALARM_USER_ACTION_TEMPOARY_BREAK = 4, }; enum Alarm_List { ALARM_ID_NO_ALARM = 0, ALARM_ID_TD_TREATMENT_STOPPED_BY_USER = 96, }; enum Generic_Confirm_Id { GENERIC_CONFIRM_ID_NONE = 0, GENERIC_CONFIRM_ID_SHUT_DOWN = 1, GENERIC_CONFIRM_ID_TREATMENT_END = 2, GENERIC_CONFIRM_ID_RINSEBACK = 3, GENERIC_CONFIRM_ID_TEMPORARY_BREAK = 4, NUM_OF_GENERIC_CONFIRM_IDS = 5, }; enum Generic_Confirm_Command { GENERIC_CONFIRM_CMD_REQUEST_OPEN = 0, GENERIC_CONFIRM_CMD_TIMEOUT_CLOSE = 1, GENERIC_CONFIRM_CMD_REJECT = 2, GENERIC_CONFIRM_CMD_ACCEPT_CLOSE = 3, }; enum Confirmation_Status { CONFIRMATION_REQUEST_STATUS_REJECTED = 0, CONFIRMATION_REQUEST_STATUS_ACCEPTED, CONFIRMATION_REQUEST_STATUS_TIMEOUT, CONFIRMATION_REQUEST_STATUS_PENDING, CONFIRMATION_REQUEST_STATUS_UNUSED, }; // Reject reason enums enum Reject_Reasons { REQUEST_REJECT_REASON_NONE = 0, REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE = 4, REQUEST_REJECT_REASON_TREATMENT_TIME_OUT_OF_RANGE = 6, REQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_CURRENT = 7, REQUEST_REJECT_REASON_UF_VOLUME_OUT_OF_RANGE = 11, REQUEST_REJECT_REASON_UF_RATE_OUT_OF_RANGE = 12, REQUEST_REJECT_REASON_UF_NOT_IN_PROGESS = 14, REQUEST_REJECT_REASON_UF_NOT_PAUSED = 15, REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE = 17, REQUEST_REJECT_REASON_ACTION_DISABLED_IN_CURRENT_STATE = 21, REQUEST_REJECT_REASON_ALARM_IS_ACTIVE = 22, REQUEST_REJECT_REASON_TREATMENT_IS_COMPLETED = 24, REQUEST_REJECT_REASON_CONFIRMATION_NOT_EXPECTED = 58, REQUEST_REJECT_REASON_CONFIRMATION_MISMATCH = 59, };