########################################################################### # # Copyright (c) 2019-2021 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 hd_defs.py # # @author (last) Dara Navaei # @date (last) 12-Nov-2021 # @author (original) Peter Lucia # @date (original) 04-Dec-2020 # ############################################################################ from enum import unique from ..utils.base import DialinEnum @unique class HDOpModes(DialinEnum): MODE_FAUL = 0 # Fault mode MODE_SERV = 1 # Service mode MODE_INIT = 2 # Initialization & POST mode MODE_STAN = 3 # Standby mode MODE_TPAR = 4 # Treatment Parameters mode MODE_PRET = 5 # Pre-Treatment mode MODE_TREA = 6 # Treatment mode MODE_POST = 7 # Post-Treatment mode NUM_OF_MODES = 8 # Number of HD operation modes @unique class HDOpSubModes(DialinEnum): SUBMODE_START = 0 SUBMODE_WAIT_FOR_TREATMENT = 1 SUBMODE_WAIT_FOR_DISINFECT = 2 SUBMODE_DG_FLUSH_IN_PROGRESS = 3 SUBMODE_DG_HEAT_DISINFECT_IN_PROGRESS = 4 SUBMODE_DG_CHEMICAL_DISINFECT_IN_PROGRESS = 5 NUM_OF_MODES = 6 @unique class HDInitStates(DialinEnum): POST_STATE_START = 0 POST_STATE_FW_INTEGRITY = 1 POST_STATE_AC = 2 POST_STATE_WATCHDOG = 3 POST_STATE_SAFETY_SHUTDOWN = 4 POST_STATE_RTC = 5 POST_STATE_NVDATAMGMT = 6 POST_STATE_BLOOD_FLOW = 7 POST_STATE_DIALYSATE_FLOW = 8 POST_STATE_VALVES = 9 POST_STATE_SYRINGE_PUMP = 10 POST_STATE_ALARM_AUDIO = 11 POST_STATE_ALARM_LAMP = 12 POST_STATE_ACCELEROMETER = 13 POST_STATE_STUCK_BUTTON = 14 POST_STATE_UI_POST = 15 POST_STATE_FW_COMPATIBILITY = 16 POST_STATE_FPGA = 17 POST_STATE_COMPLETED = 18 POST_STATE_FAILED = 19 NUM_OF_POST_STATES = 20 @unique class PreTreatmentSubModes(DialinEnum): HD_PRE_TREATMENT_START_STATE = 0 HD_PRE_TREATMENT_WATER_SAMPLE_STATE = 1 HD_PRE_TREATMENT_CONSUMABLE_SELF_TEST_STATE = 2 HD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE = 3 HD_PRE_TREATMENT_CART_INSTALL_STATE = 4 HD_PRE_TREATMENT_SELF_TEST_DRY_STATE = 5 HD_PRE_TREATMENT_PRIME_STATE = 6 HD_PRE_TREATMENT_RECIRCULATE_STATE = 7 HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE = 8 @unique class PreTreatmentSampleWaterStates(DialinEnum): SAMPLE_WATER_SETUP_STATE = 0 SAMPLE_WATER_STATE = 1 @unique class PreTreatmentConsumableSelfTestStates(DialinEnum): CONSUMABLE_SELF_TESTS_INSTALL = 0 CONSUMABLE_SELF_TESTS_FILL_CMD_STATE = 1 CONSUMABLE_SELF_TESTS_WATER_QUALITY_CHECK_STATE = 2 CONSUMABLE_SELF_TESTS_BICARB_PUMP_CHECK_STATE = 3 CONSUMABLE_SELF_TESTS_ACID_PUMP_CHECK_STATE = 4 CONSUMABLE_SELF_TESTS_COMPLETE_STATE = 5 @unique class PreTreatmentNoCartSelfTestStates(DialinEnum): NO_CART_SELF_TESTS_START_STATE = 0 NO_CART_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE = 1 NO_CART_SELF_TESTS_OCCLUSION_SENSORS_STATE = 2 NO_CART_SELF_TESTS_BLOOD_FLOW_METERS_STATE = 3 NO_CART_SELF_TESTS_DIALYSATE_FLOW_METERS_STATE = 4 NO_CART_SELF_TESTS_PUMPS_STATE = 5 NO_CART_SELF_TESTS_LEAK_DETECTORS_STATE = 6 NO_CART_SELF_TESTS_BOARD_TEMPERATURE_STATE = 7 NO_CART_SELF_TESTS_DOOR_SWITCH_STATE = 8 NO_CART_SELF_TESTS_HOME_VALVES_AND_PUMPS_STATE = 9 NO_CART_SELF_TESTS_HOME_IDLE_STATE = 10 NO_CART_SELF_TESTS_STOPPED_STATE = 11 NO_CART_SELF_TESTS_COMPLETE_STATE = 12 @unique class PreTreatmentDrySelfTestStates(DialinEnum): DRY_SELF_TESTS_START_STATE = 0 DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE = 1 DRY_SELF_TESTS_USED_CARTRIDGE_CHECK_STATE = 2 DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE = 3 DRY_SELF_TESTS_PRESSURE_SENSORS_SETUP_STATE = 4 DRY_SELF_TESTS_PRESSURE_SENSORS_STATE = 5 DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_STATE = 6 DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE = 7 DRY_SELF_TESTS_STOPPED_STATE = 8 DRY_SELF_TESTS_COMPLETE_STATE = 9 @unique class PreTreatmentPrimeStates(DialinEnum): HD_PRIME_START_STATE = 0 HD_PRIME_WAIT_FOR_USER_START_STATE = 1 HD_PRIME_SALINE_SETUP_STATE = 2 HD_PRIME_SALINE_PURGE_AIR_STATE = 3 HD_PRIME_SALINE_CIRC_BLOOD_CIRCUIT_STATE = 4 HD_PRIME_RESERVOIR_ONE_FILL_COMPLETE_STATE = 5 HD_PRIME_DIALYSATE_DIALYZER_STATE = 6 HD_PRIME_RESERVOIR_TWO_FILL_COMPLETE_STATE = 7 HD_PRIME_DIALYSATE_BYPASS_STATE = 8 HD_PRIME_WET_SELF_TESTS_STATE = 9 HD_PRIME_PAUSE = 10 HD_PRIME_COMPLETE = 11 @unique class PreTreatmentRecircStates(DialinEnum): PRE_TREATMENT_RECIRC_STATE = 0 PRE_TREATMENT_RECIRC_STOPPED_STATE = 1 # Heparin states @unique class HeparinStates(DialinEnum): HEPARIN_STATE_OFF = 0 # Heparin treatment parameters set to zero or not yet set HEPARIN_STATE_STOPPED = 1 # Heparin delivery is stopped because treatment paused or not yet started HEPARIN_STATE_PAUSED = 2 # Heparin delivery is paused by user HEPARIN_STATE_INITIAL_BOLUS = 3 # Heparin bolus is currently being delivered HEPARIN_STATE_DISPENSING = 4 # Heparin continuous delivery is in progress HEPARIN_STATE_COMPLETED = 5 # Heparin delivery is completed HEPARIN_STATE_EMPTY = 6 # Heparin syringe is empty # Syringe pump states @unique class SyringePumpStates(DialinEnum): SYRINGE_PUMP_INIT_STATE = 0 # Syringe pump initialize state SYRINGE_PUMP_OFF_STATE = 1 # Syringe pump off state SYRINGE_PUMP_RETRACT_STATE = 2 # Syringe pump retract state SYRINGE_PUMP_SEEK_STATE = 3 # Syringe pump seek state SYRINGE_PUMP_PRIME_STATE = 4 # Syringe pump prime state SYRINGE_PUMP_HEP_BOLUS_STATE = 5 # Syringe pump bolus state SYRINGE_PUMP_HEP_CONTINUOUS_STATE = 6 # Syringe pump continuous state SYRINGE_PUMP_CONFIG_FORCE_SENSOR_STATE = 7 # Syringe pump configure force sensor state # Syringe pump operations @unique class SyringePumpOperations(DialinEnum): SYRINGE_PUMP_OP_STOP = 0 # Stop syringe pump SYRINGE_PUMP_OP_RETRACT = 1 # Retract syringe pump SYRINGE_PUMP_OP_SEEK = 2 # Seek plunger SYRINGE_PUMP_OP_PRIME = 3 # Prime Heparin line SYRINGE_PUMP_OP_BOLUS = 4 # Deliver Heparin bolus of set volume over 5 minutes SYRINGE_PUMP_OP_CONTINUOUS = 5 # Continuous dispense of Heparin at set rate @unique class PostTreatmentStates(DialinEnum): HD_POST_TREATMENT_DRAIN_RESERVOIRS_STATE = 0 HD_POST_TREATMENT_PATIENT_DISCONNECTION_STATE = 1 HD_POST_TREATMENT_DISPOSABLE_REMOVAL_STATE = 2 HD_POST_TREATMENT_VERIFY_STATE = 3 @unique class PreTreatmentModeStates(DialinEnum): HD_PRE_TREATMENT_START_STATE = 0 # Start pre-treatment mode state HD_PRE_TREATMENT_WATER_SAMPLE_STATE = 1 # Water sample state HD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE = 2 # Self tests with no cartridge state HD_PRE_TREATMENT_CART_INSTALL_STATE = 3 # Consumable and cartridge installation state HD_PRE_TREATMENT_SELF_TEST_DRY_STATE = 4 # Self tests dry state HD_PRE_TREATMENT_PRIME_STATE = 5 # Prime blood and dialysate circuits and run wet self-tests state HD_PRE_TREATMENT_RECIRCULATE_STATE = 6 # Re-circulate blood and dialysate circuits state HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE = 7 # Patient connection state NUM_OF_HD_PRE_TREATMENT_STATES = 8 # Number of pre-treatment mode states @unique class PreTreatmentSampleWaterStates(DialinEnum): SAMPLE_WATER_SETUP_STATE = 0 # Sample water setup state of the sample water sub-mode state machine SAMPLE_WATER_STATE = 1 # Sample water state of the sample water sub-mode state machine SAMPLE_WATER_COMPLETE_STATE = 2 # Sample water complete state NUM_OF_SAMPLE_WATER_STATES = 3 # Number of sample water sub-mode states @unique class PreTreatmentConsumableSelfTestStates(DialinEnum): CONSUMABLE_SELF_TESTS_INSTALL_STATE = 0 # Consumable self-tests install state CONSUMABLE_SELF_TESTS_WATER_QUALITY_CHECK_STATE = 1 # Consumable self-tests water quality check state CONSUMABLE_SELF_TESTS_BICARB_PUMP_CHECK_STATE = 2 # Consumable self-tests bicarb concentrate pump check state CONSUMABLE_SELF_TESTS_ACID_PUMP_CHECK_STATE = 3 # Consumable self-tests acid concentrate pump check state CONSUMABLE_SELF_TESTS_COMPLETE_STATE = 4 # Consumable self-tests complete state NUM_OF_CONSUMABLE_SELF_TESTS_STATES = 5 # Number of consumable install sub-mode states @unique class PreTreatmentNoCartSelfTestsStates(DialinEnum): NO_CART_SELF_TESTS_START_STATE = 0 # No cartridge self-tests starting state NO_CART_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE = 1 # Wait for door to be closed before running self-tests NO_CART_SELF_TESTS_OCCLUSION_SENSORS_STATE = 2 # No cartridge occlusion sensors self-test state NO_CART_SELF_TESTS_BLOOD_FLOW_METERS_STATE = 3 # No cartridge blood flow meter self-test state NO_CART_SELF_TESTS_DIALYSATE_FLOW_METERS_STATE = 4 # No cartridge dialysate flow meter self-test state NO_CART_SELF_TESTS_BOARD_TEMPERATURE_STATE = 5 # No cartridge board temperature self-test state NO_CART_SELF_TESTS_HOME_VALVES_STATE = 6 # No cartridge home valves state NO_CART_SELF_TESTS_HOME_SYRINGE_PUMP_STATE = 7 # No cartridge home syringe pump state NO_CART_SELF_TESTS_PUMPS_STATE = 8 # No cartridge self-test for pumps state NO_CART_SELF_TESTS_HOME_IDLE_STATE = 9 # Wait for valves and pumps finish homing state NO_CART_SELF_TESTS_STOPPED_STATE = 10 # No cart self-test stopped state NO_CART_SELF_TESTS_COMPLETE_STATE = 11 # No cartridge self-test complete state NUM_OF_NO_CART_SELF_TESTS_STATES = 12 # Number of no cartridge self-tests states @unique class PreTreatmentCartridgeInstallStates(DialinEnum): CARTRIDGE_INSTALL_STATE = 0 # Pre-treatment Cartridge Install state. NUM_OF_CARTRIDGE_INSTALL_STATES = 1 # Number of pre-treatment Cartridge Install states. @unique class PreTreatmentDrySelfTestsStates(DialinEnum): DRY_SELF_TESTS_START_STATE = 0 # Dry self-tests starting state DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE = 1 # Wait for door to close before executing self-tests DRY_SELF_TESTS_USED_CARTRIDGE_CHECK_STATE = 2 # Used cartridge check dry self-test state DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE = 3 # Occlusion sensors dry self-test state DRY_SELF_TESTS_PRESSURE_SENSORS_SETUP_STATE = 4 # Pressure sensors dry self-test setup valves and pump state DRY_SELF_TESTS_PRESSURE_SENSORS_STATE = 5 # Pressure sensors verify pressure readings state DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_STATE = 6 # Pressure sensors verify normal pressure readings state DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE = 7 # Prime syringe pump state DRY_SELF_TESTS_STOPPED_STATE = 8 # Dry self-test stopped state DRY_SELF_TESTS_COMPLETE_STATE = 9 # Dry self-test complete state NUM_OF_DRY_SELF_TESTS_STATES = 10 # Number of dry self-tests states @unique class PreTreatmentPrimeStates(DialinEnum): HD_PRIME_START_STATE = 0 # Prime start state HD_PRIME_WAIT_FOR_USER_START_STATE = 1 # Wait for user to start prime state HD_PRIME_SALINE_SETUP_STATE = 2 # Saline setup state HD_PRIME_SALINE_PURGE_AIR_STATE = 3 # Saline purge air state HD_PRIME_SALINE_CIRC_BLOOD_CIRCUIT_STATE = 4 # Circulate blood circuit state HD_PRIME_RESERVOIR_ONE_FILL_COMPLETE_STATE = 5 # Wait for reservoir 1 fill complete HD_PRIME_DIALYSATE_DIALYZER_STATE = 6 # Dialysate dialyzer fluid path state HD_PRIME_RESERVOIR_TWO_FILL_COMPLETE_STATE = 7 # Wait for reservoir 2 fill complete HD_PRIME_DIALYSATE_BYPASS_STATE = 8 # Dialysate bypass fluid path state HD_PRIME_WET_SELF_TESTS_STATE = 9 # Perform wet self-tests after priming complete HD_PRIME_PAUSE = 10 # Prime pause state = waits to be resumed HD_PRIME_COMPLETE = 11 # Prime complete state NUM_OF_HD_PRIME_STATES = 12 # Number of prime sub-mode states @unique class PreTreatmentRecircStates(DialinEnum): PRE_TREATMENT_RECIRC_STATE = 0 # Pre-treatment recirculate state. PRE_TREATMENT_RECIRC_STOPPED_STATE = 1 # Pre-treatment recirculate stopped state. NUM_OF_PRE_TREATMENT_RECIRC_STATES = 2 # Number of pre-treatment recirculate states. @unique class PreTreatmentPatientConnectionStates(DialinEnum): PATIENT_CONNECTION_STATE = 0 # Pre-treatment Patient Connection state. NUM_OF_PATIENT_CONNECTION_STATES = 1 # Number of pre-treatment Patient Connection states. @unique class TreatmentParametersStates(DialinEnum): HD_TREATMENT_PARAMS_MODE_STATE_START = 0 HD_TREATMENT_PARAMS_MODE_STATE_WAIT_4_UI_2_SEND = 1 HD_TREATMENT_PARAMS_MODE_STATE_WAIT_4_UI_2_CONFIRM = 2 NUM_OF_HD_TREATMENT_PARAMS_MODE_STATES = 3 @unique class StandbyStates(DialinEnum): STANDBY_START_STATE = 0 # Start standby STANDBY_WAIT_FOR_TREATMENT_STATE = 1 # Wait for treatment STANDBY_WAIT_FOR_DISINFECT_STATE = 2 # Wait for disinfection STANDBY_DG_FLUSH_IN_PROGRESS_STATE = 3 # DG flush operation is in progress STANDBY_DG_HEAT_DISINFECT_IN_PROGRESS_STATE = 4 # DG heat disinfection operation is in progress STANDBY_DG_CHEM_DISINFECT_IN_PROGRESS_STATE = 5 # DG chemical disinfection operation is in progress NUM_OF_STANDBY_STATES = 6 # Number of standby states (sub-modes) @unique class TreatmentStates(DialinEnum): TREATMENT_START_STATE = 0 TREATMENT_BLOOD_PRIME_STATE = 1 TREATMENT_DIALYSIS_STATE = 2 TREATMENT_STOP_STATE = 3 TREATMENT_RINSEBACK_STATE = 4 TREATMENT_RECIRC_STATE = 5 TREATMENT_END_STATE = 6 NUM_OF_TREATMENT_STATES = 7 @unique class TreatmentBloodPrimeStates(DialinEnum): BLOOD_PRIME_RAMP_STATE = 0 NUM_OF_BLOOD_PRIME_STATES = 1 @unique class TreatmentDialysisStates(DialinEnum): DIALYSIS_START_STATE = 0 DIALYSIS_UF_STATE = 1 DIALYSIS_SALINE_BOLUS_STATE = 2 NUM_OF_DIALYSIS_STATES = 3 @unique class TreatmentStopStates(DialinEnum): TREATMENT_STOP_RECIRC_STATE = 0 TREATMENT_STOP_NO_RECIRC_STATE = 1 NUM_OF_TREATMENT_STOP_STATES = 2 @unique class TreatmentRinsebackStates(DialinEnum): RINSEBACK_STOP_INIT_STATE = 0 RINSEBACK_RUN_STATE = 1 RINSEBACK_PAUSED_STATE = 2 RINSEBACK_STOP_STATE = 3 RINSEBACK_RUN_ADDITIONAL_STATE = 4 NUM_OF_RINSEBACK_STATES = 5 @unique class TreatmentRecircStates(DialinEnum): TREATMENT_RECIRC_RECIRC_STATE = 0 TREATMENT_RECIRC_STOPPED_STATE = 1 NUM_OF_TREATMENT_RECIRC_STATES = 2 @unique class TreatmentEndStates(DialinEnum): TREATMENT_END_WAIT_FOR_RINSEBACK_STATE = 0 TREATMENT_END_PAUSED_STATE = 1 NUM_OF_TREATMENT_END_STATES = 2 @unique class HDFaultStates(DialinEnum): HD_FAULT_STATE_START = 0 NUM_OF_HD_FAULT_STATES = 1 @unique class HDEventList(DialinEnum): HD_EVENT_STARTUP = 0 HD_EVENT_OP_MODE_CHANGE = 1 HD_EVENT_SUB_MODE_CHANGE = 2 NUM_OF_HD_EVENT_IDS = 3 @unique class HDEventDataType(DialinEnum): EVENT_DATA_TYPE_NONE = 0 EVENT_DATA_TYPE_U32 = 1 EVENT_DATA_TYPE_S32 = 2 EVENT_DATA_TYPE_F32 = 3 EVENT_DATA_TYPE_BOOL = 4 NUM_OF_EVENT_DATA_TYPES = 5