Index: leahi_dialin/common/td_defs.py =================================================================== diff -u -rac11d0b19db5a1fe024699081a2b472ae27a5357 -r3e2535bbf3d15295a844adc3590824f9e44dbe3d --- leahi_dialin/common/td_defs.py (.../td_defs.py) (revision ac11d0b19db5a1fe024699081a2b472ae27a5357) +++ leahi_dialin/common/td_defs.py (.../td_defs.py) (revision 3e2535bbf3d15295a844adc3590824f9e44dbe3d) @@ -8,18 +8,18 @@ # @file td_defs.py # # @author (last) Zoltan Miskolci -# @date (last) 29-Jan-2026 +# @date (last) 25-Feb-2026 # @author (original) Peter Lucia # @date (original) 04-Dec-2020 # ############################################################################ from enum import unique -from ..utils.base import DialinEnum +from ..utils.enums import DialinEnum -# ================================================== Enum Creators: Operations ================================================== +# ================================================== Enum Creators: Operations Lvl 1 ================================================== @unique class TDOpModes(DialinEnum): MODE_FAUL = 0 # Fault mode @@ -46,6 +46,8 @@ } +# ================================================== Enum Creators: Operations Lvl 2 ================================================== +# TDOpModes.MODE_FAUL sub states @unique class TDFaultStates(DialinEnum): TD_FAULT_DEENERGIZED_STATE = 0 # TD Fault De-energized State @@ -60,6 +62,7 @@ } +# TDOpModes.MODE_SERV sub states @unique class TDServiceStates(DialinEnum): TD_SERVICE_STATE_START = 0 # Start service mode state @@ -72,6 +75,7 @@ } +# TDOpModes.MODE_INIT sub states @unique class TDInitStates(DialinEnum): POST_STATE_START = 0 # Start initialize & POST mode state @@ -120,6 +124,7 @@ } +# TDOpModes.MODE_STAN sub states @unique class TDStandbyStates(DialinEnum): STANDBY_START_STATE = 0 # Start standby (home actuators). @@ -142,6 +147,7 @@ } +# TDOpModes.MODE_TPAR sub states @unique class TDTreatmentParamStates(DialinEnum): TD_TREATMENT_PARAMS_MODE_STATE_WAIT_4_UI_2_SEND = 0 # Wait for UI to send treatment params mode state @@ -156,6 +162,7 @@ } +# TDOpModes.MODE_PRET sub states @unique class TDPreTreatmentModesStates(DialinEnum): TD_PRE_TREATMENT_WATER_SAMPLE_STATE = 0 # Water sample state @@ -165,8 +172,9 @@ TD_PRE_TREATMENT_SELF_TEST_DRY_STATE = 4 # Self-tests when the cartridge is dry state TD_PRE_TREATMENT_PRIME_STATE = 5 # Prime blood and dialysate circuits and run wet self-tests state TD_PRE_TREATMENT_RECIRCULATE_STATE = 6 # Re-circulate blood and dialysate circuits state - TD_PRE_TREATMENT_PATIENT_CONNECTION_STATE = 7 # Patient connection state - NUM_OF_TD_PRE_TREATMENT_STATES = 8 # Number of pre-treatment mode states + TD_PRE_TREATMENT_CONFIRM_RX_STATE = 7 # User reviews and confirms prescription ( Confirm Rx ) + TD_PRE_TREATMENT_PATIENT_CONNECTION_STATE = 8 # Patient connection state + NUM_OF_TD_PRE_TREATMENT_STATES = 9 # Number of pre-treatment mode states TDPreTreatmentModesStates._str_list = { # Official Name : Accepted strings @@ -177,11 +185,13 @@ 'TD_PRE_TREATMENT_SELF_TEST_DRY_STATE': ['self test dry', 'dry self test'], 'TD_PRE_TREATMENT_PRIME_STATE': ['prime', 'blood priming', 'priming'], 'TD_PRE_TREATMENT_RECIRCULATE_STATE': ['recirculate'], + 'TD_PRE_TREATMENT_CONFIRM_RX_STATE': ['confirm rx', 'rx'], 'TD_PRE_TREATMENT_PATIENT_CONNECTION_STATE': ['patient connect'], 'NUM_OF_TD_PRE_TREATMENT_STATES': [], } +# TDOpModes.MODE_TREA sub states @unique class TDTreatmentStates(DialinEnum): TREATMENT_START_STATE = 0 # Start treatment - initialize treatment and go to blood prime state @@ -212,11 +222,12 @@ } +# TDOpModes.MODE_POST sub states @unique class TDPostTreatmentStates(DialinEnum): TD_POST_TREATMENT_DRAIN_RESERVOIRS_STATE = 0 # Drain reservoirs state TD_POST_TREATMENT_PATIENT_DISCONNECTION_STATE = 1 # Patient disconnection state - TD_POST_TREATMENT_DISPOSABLE_REMOVAL_STATE = 2 # Disposable removal state + TD_POST_TREATMENT_DISPOSABLE_REMOVAL_STATE = 2 # Disposable removal state TD_POST_TREATMENT_VERIFY_STATE = 3 # Verify cartridge removed, syringe removed, and reservoirs drained state NUM_OF_TD_POST_TREATMENT_STATES = 4 # Number of post-treatment mode states @@ -230,6 +241,7 @@ } +# TDOpModes.MODE_NLEG sub states @unique class TDNotLegalStates(DialinEnum): NUM_OF_NOT_LEGAL_STATES = 0 # Number of Not Legal states @@ -241,89 +253,124 @@ -# ================================================== Enum Creators: Events ================================================== +# ================================================== Enum Creators: Operations Lvl 3 ================================================== +# TDPreTreatmentModesStates.TD_PRE_TREATMENT_WATER_SAMPLE_STATE sub states @unique -class TDEventList(DialinEnum): - TD_EVENT_STARTUP = 0 # TD startup event - TD_EVENT_OP_MODE_CHANGE = 1 # TD Op mode change event - TD_EVENT_SUB_MODE_CHANGE = 2 # TD Op sub-mode change event - TD_EVENT_DRY_SELF_TEST_CARTRIDGE_RESULT = 3 # TD dry self test cartridge result - TD_EVENT_DRY_SELF_TEST_PRESSURE_RESULT = 4 # TD dry self test pressure result - TD_EVENT_WET_SELF_TEST_DISPLACEMENT_RESULT = 5 # TD wet self test displacement result - TD_EVENT_CPU_RAM_ERROR_STATUS = 6 # TD CPU RAM error status - TD_EVENT_CAL_RECORD_UPDATE = 7 # TD new calibration record updated - TD_EVENT_SYSTEM_RECORD_UPDATE = 8 # TD new system record has been updated - TD_EVENT_SERVICE_UPDATE = 9 # TD new service record has been updated - TD_EVENT_USAGE_INFO_UPDATE = 10 # TD new usage information has been updated - TD_EVENT_SW_CONFIG_UPDATE = 11 # TD new software configuration has been updated - TD_EVENT_BUTTON = 12 # TD button pressed/released - TD_EVENT_SAFETY_LINE = 13 # TD safety line pulled/released - TD_EVENT_SUB_STATE_CHANGE = 14 # TD Op sub-state change event - TD_EVENT_RSRVR_UF_RATE = 15 # TD ultrafiltration measured and expected rates - TD_EVENT_OPERATION_STATUS = 16 # TD operation status event. - TD_EVENT_AIR_TRAP_FILL = 17 # TD initiated an air trap fill (opened VBT briefly). - TD_EVENT_AIR_TRAP_LOWER = 18 # TD started/stopped an air trap lower level operation - TD_EVENT_AIR_PUMP_ON_OFF = 19 # TD turned air pump on or off. - TD_EVENT_DRY_SELF_TEST_PRESSURE_DECAY_WAIT_PERIOD = 20 # TD dry self test pressure decay wait period - TD_EVENT_INSTIT_RECORD_UPDATE = 21 # TD new institutional record has been updated. - TD_EVENT_VALVE_POS_CHANGE = 22 # TD pinch valve position change - TD_EVENT_VALVE_HOMED_POS_SETTING = 23 # TD pinch valve homed encoder positions for A/B/C - NUM_OF_EVENT_IDS = 24 # Total number of TD events +class TDPreTreaSampleWaterStates(DialinEnum): + SAMPLE_WATER_SETUP_STATE = 0 # Sample water setup (flush filter) state + SAMPLE_WATER_STATE = 1 # Sample water state, receiving sample water commands from the user + SAMPLE_WATER_COMPLETE_STATE = 2 # Sample water complete state + NUM_OF_SAMPLE_WATER_STATES = 3 # Number of fault mode NV Data management states -TDEventList._str_list = { +TDPreTreaSampleWaterStates._str_list = { # Official Name : Accepted strings - 'TD_EVENT_STARTUP': ['startup'], - 'TD_EVENT_OP_MODE_CHANGE': ['op mode change', 'operation mode change'], - 'TD_EVENT_SUB_MODE_CHANGE': ['sub mode change'], - 'TD_EVENT_DRY_SELF_TEST_CARTRIDGE_RESULT': ['dry self test cartridge result'], - 'TD_EVENT_DRY_SELF_TEST_PRESSURE_RESULT': ['dry self test pressure result'], - 'TD_EVENT_WET_SELF_TEST_DISPLACEMENT_RESULT': ['wet self test displacement result'], - 'TD_EVENT_CPU_RAM_ERROR_STATUS': ['cpu ram error'], - 'TD_EVENT_CAL_RECORD_UPDATE': ['cal record update', 'calibration record update'], - 'TD_EVENT_SYSTEM_RECORD_UPDATE': ['system record update'], - 'TD_EVENT_SERVICE_UPDATE': ['service update', 'service record update'], - 'TD_EVENT_USAGE_INFO_UPDATE': ['usage info update'], - 'TD_EVENT_SW_CONFIG_UPDATE': ['sw config update', 'software config update'], - 'TD_EVENT_BUTTON': ['button', 'button press', 'button release'], - 'TD_EVENT_SAFETY_LINE': ['safety line'], - 'TD_EVENT_SUB_STATE_CHANGE': ['sub state change'], - 'TD_EVENT_RSRVR_UF_RATE': ['rsrvr uf rate', 'ultrafiltration rate change'], - 'TD_EVENT_OPERATION_STATUS': ['operation status'], - 'TD_EVENT_AIR_TRAP_FILL': ['air trap fill'], - 'TD_EVENT_AIR_TRAP_LOWER': ['air trap lower'], - 'TD_EVENT_AIR_PUMP_ON_OFF': ['air pump', 'air pump on', 'air pump off'], - 'TD_EVENT_DRY_SELF_TEST_PRESSURE_DECAY_WAIT_PERIOD': ['dry self test pressure decay wait period'], - 'TD_EVENT_INSTIT_RECORD_UPDATE': ['instit record update', 'institutional record update'], - 'TD_EVENT_VALVE_POS_CHANGE': ['valve position change', 'valve pos change'], - 'TD_EVENT_VALVE_HOMED_POS_SETTING': ['valve homed to positions'], - 'NUM_OF_EVENT_IDS': [], + 'SAMPLE_WATER_SETUP_STATE': ['setup'], + 'SAMPLE_WATER_STATE': ['running', 'sampling'], + 'SAMPLE_WATER_COMPLETE_STATE': ['complete', 'done'], + 'NUM_OF_SAMPLE_WATER_STATES': [], } +# TDPreTreatmentModesStates.TD_PRE_TREATMENT_SELF_TEST_CONSUMABLE_STATE sub states @unique -class TDEventDataTypes(DialinEnum): - EVENT_DATA_TYPE_NONE = 0 # No Event Data Type - EVENT_DATA_TYPE_U32 = 1 # Unsigned 32bit Event Data Type - EVENT_DATA_TYPE_S32 = 2 # Signed 32bit Event Data Type - EVENT_DATA_TYPE_F32 = 3 # Float 32bit Event Data Type - EVENT_DATA_TYPE_BOOL = 4 # Boolean Event Data Type - NUM_OF_EVENT_DATA_TYPES = 5 # Number of Event Data Types +class TDPreTreaConsumableSelfTestStates(DialinEnum): + CONSUMABLE_SELF_TESTS_INSTALL_STATE = 0 # Consumable self-tests install state + CONSUMABLE_SELF_TESTS_PRIME_STATE = 1 # Consumable self-tests prime concentrate lines state + CONSUMABLE_SELF_TESTS_BICARB_PUMP_CHECK_STATE = 2 # Consumable self-tests bicarbonate 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 -TDEventDataTypes._str_list = { - # Official Name : Accepted strings - 'EVENT_DATA_TYPE_NONE': ['none'], - 'EVENT_DATA_TYPE_U32': ['u32'], - 'EVENT_DATA_TYPE_S32': ['s32'], - 'EVENT_DATA_TYPE_F32': ['f32'], - 'EVENT_DATA_TYPE_BOOL': ['bool', 'boolean'], - 'NUM_OF_EVENT_DATA_TYPES': [], +TDPreTreaConsumableSelfTestStates._str_list = { + # Official Name : Accepted strings + 'CONSUMABLE_SELF_TESTS_INSTALL_STATE': ['install', 'installing'], + 'CONSUMABLE_SELF_TESTS_PRIME_STATE': ['prime', 'priming'], + 'CONSUMABLE_SELF_TESTS_BICARB_PUMP_CHECK_STATE': ['bicarb', 'bicarb pump check'], + 'CONSUMABLE_SELF_TESTS_ACID_PUMP_CHECK_STATE': ['acid', 'acid pump check'], + 'CONSUMABLE_SELF_TESTS_COMPLETE_STATE': ['complete', 'done'], + 'NUM_OF_CONSUMABLE_SELF_TESTS_STATES': [], } +# TDPreTreatmentModesStates.TD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE sub states +@unique +class TDPreTreaNoCartSelfTestStates(DialinEnum): + NO_CART_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE = 0 # Wait for door to be closed before running self-tests + NO_CART_SELF_TESTS_PRESSURE_CHECKS_STATE = 1 # No cartridge pressure sensors self-test state + NO_CART_SELF_TESTS_HOME_VALVES_STATE = 2 # No cartridge home valves state + NO_CART_SELF_TESTS_HOME_SYRINGE_PUMP_STATE = 3 # No cartridge home syringe pump state + NO_CART_SELF_TESTS_PUMPS_STATE = 4 # No cartridge self-test for blood pump, dialysate in pump, dialysate out pump state + NO_CART_SELF_TESTS_HOME_IDLE_STATE = 5 # Wait for valves and pumps finish homing state + NO_CART_SELF_TESTS_STOPPED_STATE = 6 # No cart self-test stopped state + NO_CART_SELF_TESTS_COMPLETE_STATE = 7 # No cartridge self-test complete state + NUM_OF_NO_CART_SELF_TESTS_STATES = 8 # Number of no cartridge self-tests states -# ================================================== Enum Creators: Operations Sub-Modes ================================================== +TDPreTreaNoCartSelfTestStates._str_list = { + # Official Name : Accepted strings + 'NO_CART_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE': ['wait for front door to close', 'wait for door close'], + 'NO_CART_SELF_TESTS_PRESSURE_CHECKS_STATE': ['pressure checks'], + 'NO_CART_SELF_TESTS_HOME_VALVES_STATE': ['home valves'], + 'NO_CART_SELF_TESTS_HOME_SYRINGE_PUMP_STATE': ['home srynge pump'], + 'NO_CART_SELF_TESTS_PUMPS_STATE': ['test pumps'], + 'NO_CART_SELF_TESTS_HOME_IDLE_STATE': ['home idle', 'wait for homing'], + 'NO_CART_SELF_TESTS_STOPPED_STATE': ['stop'], + 'NO_CART_SELF_TESTS_PUMPS_STATE': ['test pumps'], + 'NO_CART_SELF_TESTS_COMPLETE_STATE': ['complete', 'done'], + 'NUM_OF_NO_CART_SELF_TESTS_STATES': [], +} + + +# TDPreTreatmentModesStates.TD_PRE_TREATMENT_SELF_TEST_DRY_STATE sub states @unique -class TDPreTreatmentPrimeStates(DialinEnum): +class TDPreTreaDrySelfTestStates(DialinEnum): + DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE = 0 # Wait for door to close before executing self-tests + DRY_SELF_TESTS_USED_TUBING_CHECK_STATE = 1 # Used tubing check dry self-test state + DRY_SELF_TESTS_TUBING_LOADED_CHECK_STATE = 2 # Tubing loaded check dry self-test state + DRY_SELF_TESTS_TUBING_SET_AUTHENTICATION_STATE = 3 # Tubing set authentication state + DRY_SELF_TESTS_SYRINGE_PUMP_SEEK_STATE = 4 # Syringe pump seek state + DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_SETUP_STATE = 5 # Pressure sensor normal setup state + DRY_SELF_TESTS_PRESSURE_VENOUS_SETUP_STATE = 6 # Venous pressure sensor dry self-test setup valves and pump state + DRY_SELF_TESTS_VENOUS_PRESSURE_STABILIZATION_STATE = 7 # Venous pressure verify pressure stability state + DRY_SELF_TESTS_VENOUS_PRESSURE_LEAK_CHECK_STATE = 8 # Venous pressure leak check state + DRY_SELF_TESTS_VENOUS_PRESSURE_RELIEF_STATE = 9 # Venous pressure relief state + DRY_SELF_TESTS_PRESSURE_ARTERIAL_SETUP_STATE = 10 # Arterial pressure sensor dry self-test setup valves and pump state + DRY_SELF_TESTS_ARTERIAL_PRESSURE_STABILIZATION_STATE = 11 # Arterial pressure verify pressure stability state + DRY_SELF_TESTS_ARTERIAL_PRESSURE_LEAK_CHECK_STATE = 12 # Arterial pressure leak check state + DRY_SELF_TESTS_ARTERIAL_PRESSURE_RELIEF_STATE = 13 # Arterial pressure relief state + DRY_SELF_TESTS_SYRINGE_PRIME_STATE = 14 # Prime syringe pump state + DRY_SELF_TESTS_SYRINGE_PUMP_OCCLUSION_CHECK_STATE = 15 # Occlusion detection state + DRY_SELF_TESTS_COMPLETE_STATE = 16 # Dry self-test complete state + DRY_SELF_TESTS_STOPPED_STATE = 17 # Dry self-test stopped state + NUM_OF_DRY_SELF_TESTS_STATES = 18 # Number of dry self-tests states + +TDPreTreaDrySelfTestStates._str_list = { + # Official Name : Accepted strings + 'DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE': ['wait for front door to close', 'wait for door close'], + 'DRY_SELF_TESTS_USED_TUBING_CHECK_STATE': ['used tubing check'], + 'DRY_SELF_TESTS_TUBING_LOADED_CHECK_STATE': ['tubing loaded check'], + 'DRY_SELF_TESTS_TUBING_SET_AUTHENTICATION_STATE': ['tubing set authentication', 'tubing authentication'], + 'DRY_SELF_TESTS_SYRINGE_PUMP_SEEK_STATE': ['srynge pump seek', 'pump seek'], + 'DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_SETUP_STATE': ['pressure sensors normal setup'], + 'DRY_SELF_TESTS_PRESSURE_VENOUS_SETUP_STATE': ['pressure venous setup', 'venous setup'], + 'DRY_SELF_TESTS_VENOUS_PRESSURE_STABILIZATION_STATE': ['venous pressure stabilization'], + 'DRY_SELF_TESTS_VENOUS_PRESSURE_LEAK_CHECK_STATE': ['venous pressure leak check'], + 'DRY_SELF_TESTS_VENOUS_PRESSURE_RELIEF_STATE': ['venous pressure relief'], + 'DRY_SELF_TESTS_PRESSURE_ARTERIAL_SETUP_STATE': ['pressure arterial setup', 'arterial setup'], + 'DRY_SELF_TESTS_ARTERIAL_PRESSURE_STABILIZATION_STATE': ['arterial pressure stabilization'], + 'DRY_SELF_TESTS_ARTERIAL_PRESSURE_LEAK_CHECK_STATE': ['arterial pressure leak check'], + 'DRY_SELF_TESTS_ARTERIAL_PRESSURE_RELIEF_STATE': ['arterial pressure relief'], + 'DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_STATE': ['presusre normal', 'pressure readings'], + 'DRY_SELF_TESTS_SYRINGE_PRIME_STATE': ['srynge prime'], + 'DRY_SELF_TESTS_SYRINGE_PUMP_OCCLUSION_CHECK_STATE': ['srynge pump occlusion check', 'srynge pump check'], + 'DRY_SELF_TESTS_COMPLETE_STATE': ['complete', 'done'], + 'DRY_SELF_TESTS_STOPPED_STATE': ['stop'], + 'NUM_OF_DRY_SELF_TESTS_STATES': [], +} + + +# TDPreTreatmentModesStates.TD_PRE_TREATMENT_PRIME_STATE sub states +unique +class TDPreTreaPrimeStates(DialinEnum): TD_PRIME_WAIT_FOR_USER_START_STATE = 0 # Wait for user to start prime state TD_PRIME_SALINE_SETUP_STATE = 1 # Saline setup state TD_PRIME_SALINE_PURGE_AIR_STATE = 2 # Saline purge air state @@ -339,7 +386,7 @@ TD_PRIME_COMPLETE = 12 # Prime complete state NUM_OF_TD_PRIME_STATES = 13 # Number of prime sub-mode states -TDPreTreatmentPrimeStates._str_list = { +TDPreTreaPrimeStates._str_list = { # Official Name : Accepted strings 'TD_PRIME_WAIT_FOR_USER_START_STATE': ['wait for user', 'wait for user to start'], 'TD_PRIME_SALINE_SETUP_STATE': ['saline setup', 'saline bolus setup'], @@ -351,78 +398,391 @@ 'TD_PRIME_SALINE_DIALYZER_STATE': ['saline dialyzer'], 'TD_PRIME_RESERVOIR_TWO_FILL_COMPLETE_STATE': ['reservoir 2 fill complete'], 'TD_PRIME_DIALYSATE_BYPASS_STATE': ['dialysate bypass'], - 'TD_PRIME_WET_SELF_TESTS_STATE': ['wet sekf tests'], + 'TD_PRIME_WET_SELF_TESTS_STATE': ['wet self tests'], 'TD_PRIME_PAUSE': ['prime paused', 'priming paused'], 'TD_PRIME_COMPLETE': ['prime completed', 'priming completed'], 'NUM_OF_TD_PRIME_STATES': [], } +# TDPreTreatmentModesStates.TD_PRE_TREATMENT_RECIRCULATE_STATE sub states @unique -class TDDialysisStates(DialinEnum): +class TDPreTreaRecircStates(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 + +TDPreTreaRecircStates._str_list = { + # Official Name : Accepted strings + 'PRE_TREATMENT_RECIRC_STATE': ['running'], + 'PRE_TREATMENT_RECIRC_STOPPED_STATE': ['stop', 'stopped'], + 'NUM_OF_PRE_TREATMENT_RECIRC_STATES': [], +} + + +# TDPreTreatmentModesStates.TD_PRE_TREATMENT_PATIENT_CONNECTION_STATE sub states +@unique +class TDPreTreaPatientConnectStates(DialinEnum): + PRE_TREATMENT_PAT_CONN_WAIT_FOR_UF_VOL_STATE = 0 # Pre-treatment patient connect wait for UF volume setting state + PRE_TREATMENT_PAT_CONN_WAIT_FOR_DLZR_INVERT_STATE = 1 # Pre-treatment patient connect wait for dialyzer inverted state + PRE_TREATMENT_PAT_CONN_WAIT_FOR_USER_CONFIRM_STATE = 2 # Pre-treatment patient connect wait for user confirm state + PRE_TREATMENT_PAT_CONN_WAIT_FOR_TREATMENT_START_STATE = 3 # Pre-treatment patient connect wait for treatment start state + NUM_OF_PRE_TREATMENT_PAT_CONN_STATES = 4 # Number of pre-treatment patient connect states + +TDPreTreaPatientConnectStates._str_list = { + # Official Name : Accepted strings + 'PRE_TREATMENT_PAT_CONN_WAIT_FOR_UF_VOL_STATE': ['ultrafiltration volume', 'uf volume'], + 'PRE_TREATMENT_PAT_CONN_WAIT_FOR_DLZR_INVERT_STATE': ['dialyzer invert', 'invert'], + 'PRE_TREATMENT_PAT_CONN_WAIT_FOR_USER_CONFIRM_STATE': ['user confirm', 'confirm'], + 'PRE_TREATMENT_PAT_CONN_WAIT_FOR_TREATMENT_START_STATE': ['start'], + 'NUM_OF_PRE_TREATMENT_PAT_CONN_STATES': [], +} + + +# TDTreatmentStates.TREATMENT_BLOOD_PRIME_STATE sub states +@unique +class TDTreaBloodPrimeStates(DialinEnum): + BLOOD_PRIME_RAMP_STATE = 0 # Ramp state of the blood prime sub-mode state machine + BLOOD_PRIME_RUN_STATE = 1 # Run state of the blood prime sub-mode state machine + BLOOD_PRIME_PAUSED_STATE = 2 # Paused state of the blood prime sub-mode state machine + NUM_OF_BLOOD_PRIME_STATES = 3 # Number of blood prime sub-mode states + +TDTreaBloodPrimeStates._str_list = { + # Official Name : Accepted strings + 'BLOOD_PRIME_RAMP_STATE': ['ramp', 'ramping'], + 'BLOOD_PRIME_RUN_STATE': ['running', 'priming'], + 'BLOOD_PRIME_PAUSED_STATE': ['paused'], + 'NUM_OF_BLOOD_PRIME_STATES': [], +} + + +# TDTreatmentStates.TREATMENT_DIALYSIS_STATE sub states +@unique +class TDTreaDialysisStates(DialinEnum): DIALYSIS_UF_STATE = 0 # Ultrafiltration state of the dialysis sub-mode state machine DIALYSIS_UF_PAUSED_STATE = 1 # Ultrafiltration Paused state of the dialysis sub-mode state machine NUM_OF_DIALYSIS_STATES = 2 # Number of dialysis sub-mode states -TDDialysisStates._str_list = { +TDTreaDialysisStates._str_list = { # Official Name : Accepted strings 'DIALYSIS_UF_STATE': ['ultrafiltration state'], 'DIALYSIS_UF_PAUSED_STATE': ['paused', 'ultrafiltration paused'], 'NUM_OF_DIALYSIS_STATES': [], } +# TDTreatmentStates.TREATMENT_PAUSED_STATE sub states @unique -class TDTreatmentParameters(DialinEnum): - TREATMENT_PARAM_BLOOD_FLOW = 0 # Blood flow rate (in mL/min) - TREATMENT_PARAM_DIALYSATE_FLOW = 1 # Dialysate flow rate (in mL/min) - TREATMENT_PARAM_TREATMENT_DURATION = 2 # Treatment duration (in minutes) - TREATMENT_PARAM_SALINE_BOLUS_VOLUME = 3 # Saline bolus volume (in mL) - TREATMENT_PARAM_HEPARIN_STOP_TIME = 4 # Heparin stop time (in minutes) - TREATMENT_PARAM_HEPARIN_TYPE = 5 # Heparin type (enum) - TREATMENT_PARAM_ACID_CONCENTRATE = 6 # Acid concentrate type (enum) - TREATMENT_PARAM_BICARB_CONCENTRATE = 7 # Bicarbonate concentrate type (enum) - TREATMENT_PARAM_DIALYZER_TYPE = 8 # Dialysate type (enum) - TREATMENT_PARAM_BP_MEAS_INTERVAL = 9 # Blood pressure measurement interval (in minutes) - TREATMENT_PARAM_RINSEBACK_FLOW_RATE = 10 # Rinseback flow rate (in mL/min) - TREATMENT_PARAM_RINSEBACK_VOLUME = 11 # Rinseback volume (in mL) - TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW = 12 # Arterial pressure alarm limit window (in mmHg) - TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW = 13 # Venous pressure alarm limit window (in mmHg) - TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC = 14 # Venous pressure alarm limit asymmetric (in mmHg) - TREATMENT_PARAM_TMP_PRES_LIMIT_WINDOW = 15 # TMP alarm limit window (in mmHg) - TREATMENT_PARAM_DIALYSATE_TEMPERATURE = 16 # Dialysate temperature (in degC) - TREATMENT_PARAM_HEPARIN_DISPENSE_RATE = 17 # Heparin dispense rate (in mL/hr) - TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME = 18 # Heparin bolus volume (in mL) - TREATMENT_PARAM_UF_VOLUME = 19 # Ultrafiltration volume (in liters) - provided separately by UI - NUM_OF_TREATMENT_PARAMS = 20 # Total number of treatment parameters +class TDTreaPausedStates(DialinEnum): + TREATMENT_PAUSED_RECIRC_STATE = 0 # Dialysate and Blood re-circulation state of the treatment paused sub-mode state machine + TREATMENT_PAUSED_RECIRC_DIALYSATE_ONLY_STATE = 1 # Re-circulate Dialysate only state of the treatment paused sub-mode state machine + TREATMENT_PAUSED_RECIRC_BLOOD_ONLY_STATE = 2 # Re-circulate Blood only state of the treatment paused sub-mode state machine + TREATMENT_PAUSED_NO_RECIRC_STATE = 3 # No re-circulation state of the treatment paused sub-mode state machine + TREATMENT_PAUSED_RECOVER_BLOOD_DETECT_STATE = 4 # Treatment paused recover blood detect state + NUM_OF_TREATMENT_PAUSED_STATES = 5 # Number of treatment paused sub-mode states -TDTreatmentParameters._str_list = { +TDTreaPausedStates._str_list = { # Official Name : Accepted strings - 'TREATMENT_PARAM_BLOOD_FLOW': ['blood flow', 'blood flow rate'], - 'TREATMENT_PARAM_DIALYSATE_FLOW': ['sialysate flow', 'dialysate flow rate'], - 'TREATMENT_PARAM_TREATMENT_DURATION': ['treatment duration'], - 'TREATMENT_PARAM_SALINE_BOLUS_VOLUME': ['saline bolus volume'], - 'TREATMENT_PARAM_HEPARIN_STOP_TIME': ['heparin stop time'], - 'TREATMENT_PARAM_HEPARIN_TYPE': ['heparin', 'heparin type'], - 'TREATMENT_PARAM_ACID_CONCENTRATE': ['acid', 'acid concentrate'], - 'TREATMENT_PARAM_BICARB_CONCENTRATE': ['bicarb', 'bicarb concentrate'], - 'TREATMENT_PARAM_DIALYZER_TYPE': ['dialyzer', 'dialyzer type'], - 'TREATMENT_PARAM_BP_MEAS_INTERVAL': ['blood pressure measure interval', 'bp measure interval'], - 'TREATMENT_PARAM_RINSEBACK_FLOW_RATE': ['rinseback flow rate'], - 'TREATMENT_PARAM_RINSEBACK_VOLUME': ['rinseback volume'], - 'TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW': ['arterial pressure limit window'], - 'TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW': ['venous pressure limit window'], - 'TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC': ['venous asymmetric pressure limit'], - 'TREATMENT_PARAM_TMP_PRES_LIMIT_WINDOW': ['tmp pres limit window'], - 'TREATMENT_PARAM_DIALYSATE_TEMPERATURE': ['dialysate temperature'], - 'TREATMENT_PARAM_HEPARIN_DISPENSE_RATE': ['heparin dispense rate'], - 'TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME': ['heparin volume'], - 'TREATMENT_PARAM_UF_VOLUME': ['uf volume', 'ultrafiltration volume'], - 'NUM_OF_TREATMENT_PARAMS': [], + 'TREATMENT_PAUSED_RECIRC_STATE': ['recirc'], + 'TREATMENT_PAUSED_RECIRC_DIALYSATE_ONLY_STATE': ['recirc dialysate only'], + 'TREATMENT_PAUSED_RECIRC_BLOOD_ONLY_STATE': ['recirc blood only'], + 'TREATMENT_PAUSED_NO_RECIRC_STATE': ['no recirc'], + 'TREATMENT_PAUSED_RECOVER_BLOOD_DETECT_STATE': ['recover blood detect'], + 'NUM_OF_TREATMENT_PAUSED_STATES': [], } +# TDTreatmentStates.TREATMENT_RINSEBACK_STATE sub states +@unique +class TDTreaRinsebackStates(DialinEnum): + RINSEBACK_STOP_INIT_STATE = 0 # Start state (stopped) of the rinseback sub-mode state machine + RINSEBACK_RUN_STATE = 1 # Rinseback running state of the rinseback sub-mode state machine + RINSEBACK_PAUSED_STATE = 2 # Rinseback paused state of the rinseback sub-mode state machine + RINSEBACK_STOP_STATE = 3 # Rinseback stopped (done) state of the rinseback sub-mode state machine + RINSEBACK_RUN_ADDITIONAL_STATE = 4 # Additional rinseback volume (10 mL) state of the rinseback sub-mode state machine + RINSEBACK_RECONNECT_PATIENT_STATE = 5 # Rinseback patient reconnect state of the rinseback sub-mode state machine + NUM_OF_RINSEBACK_STATES = 6 # Number of rinseback sub-mode states +TDTreaRinsebackStates._str_list = { + # Official Name : Accepted strings + 'RINSEBACK_STOP_INIT_STATE': ['start', 'stop init'], + 'RINSEBACK_RUN_STATE': ['run'], + 'RINSEBACK_PAUSED_STATE': ['paused'], + 'RINSEBACK_STOP_STATE': ['stop'], + 'RINSEBACK_RUN_ADDITIONAL_STATE': ['run additional'], + 'RINSEBACK_RECONNECT_PATIENT_STATE': ['reconnect patient'], + 'NUM_OF_RINSEBACK_STATES': [], +} + + +# TDTreatmentStates.TREATMENT_RECIRC_STATE sub states +@unique +class TDTreaRecircStates(DialinEnum): + TREATMENT_RECIRC_DISCONNECT_PATIENT_STATE = 0 # Disconnect patient state of the treatment re-circulate sub-mode state machine + TREATMENT_RECIRC_RECIRC_STATE = 1 # Re-circulate Dialysate state of the treatment re-circulate sub-mode state machine + TREATMENT_RECIRC_STOPPED_STATE = 2 # Stopped state of the treatment re-circulate sub-mode state machine + TREATMENT_RECIRC_RECONNECT_PATIENT_STATE = 3 # Reconnect patient state of the treatment re-circulate sub-mode state machine + NUM_OF_TREATMENT_RECIRC_STATES = 4 # Number of treatment re-circulate sub-mode states + +TDTreaRecircStates._str_list = { + # Official Name : Accepted strings + 'TREATMENT_RECIRC_DISCONNECT_PATIENT_STATE': ['disconnect patient'], + 'TREATMENT_RECIRC_RECIRC_STATE': ['run', 'recirc'], + 'TREATMENT_RECIRC_STOPPED_STATE': ['paused', 'stopped'], + 'TREATMENT_RECIRC_RECONNECT_PATIENT_STATE': ['reconnect patient'], + 'NUM_OF_TREATMENT_RECIRC_STATES': [], +} + + +# TDTreatmentStates.TREATMENT_SALINE_BOLUS_STATE sub states +@unique +class TDTreaBolusStates(DialinEnum): + SALINE_BOLUS_STATE_IDLE = 0 # No saline bolus delivery is in progress + SALINE_BOLUS_STATE_WAIT_FOR_PUMPS_STOP = 1 # Wait for pumps to stop before starting bolus + SALINE_BOLUS_STATE_IN_PROGRESS = 2 # A saline bolus delivery is in progress + NUM_OF_SALINE_BOLUS_STATES = 3 # Number of saline bolus states + +TDTreaBolusStates._str_list = { + # Official Name : Accepted strings + 'SALINE_BOLUS_STATE_IDLE': ['idle'], + 'SALINE_BOLUS_STATE_WAIT_FOR_PUMPS_STOP': ['wait for pumps stop', 'wait for pumps'], + 'SALINE_BOLUS_STATE_IN_PROGRESS': ['in progress', 'running'], + 'NUM_OF_SALINE_BOLUS_STATES': [], +} + + +# TDTreatmentStates. sub states +@unique +class TDTreaHeparinStates(DialinEnum): + HEPARIN_STATE_OFF = 0 # No heparin delivery is in progress + HEPARIN_STATE_STOPPED = 1 # Heparin delivery stopped by alarm or not yet started + HEPARIN_STATE_PAUSED = 2 # Heparin delivery paused + HEPARIN_STATE_INITIAL_BOLUS = 3 # Initial heparin bolus delivery in progress + HEPARIN_STATE_DISPENSING = 4 # Gradual heparin dispensing in progress + HEPARIN_STATE_COMPLETED = 5 # Heparin delivery stopped due to the set stop time before treatment end + HEPARIN_STATE_EMPTY = 6 # Heparin Syringe empty + NUM_OF_HEPARIN_STATES = 7 # Number of saline bolus states + +TDTreaHeparinStates._str_list = { + # Official Name : Accepted strings + 'DIALYSIS_UF_STATE': ['ultrafiltration state'], + 'DIALYSIS_UF_PAUSED_STATE': ['paused', 'ultrafiltration paused'], + 'NUM_OF_DIALYSIS_STATES': [], +} + + +# TDTreatmentStates.TREATMENT_END_STATE sub states +@unique +class TDTreaEndStates(DialinEnum): + TREATMENT_END_WAIT_FOR_RINSEBACK_STATE = 0 # Wait for rinseback state of the treatment end sub-mode state machine + TREATMENT_END_PAUSED_STATE = 1 # Paused state of the treatment end sub-mode state machine + NUM_OF_TREATMENT_END_STATES = 2 # Number of treatment end sub-mode states + +TDTreaEndStates._str_list = { + # Official Name : Accepted strings + 'TREATMENT_END_WAIT_FOR_RINSEBACK_STATE': ['wait for rinseback'], + 'TREATMENT_END_PAUSED_STATE': ['paused'], + 'NUM_OF_TREATMENT_END_STATES': [], +} + + + +# ================================================== Enum Creators: Operations Lvl 4 ================================================== +# TDPreTreatmentModesStates.TD_PRE_TREATMENT_WATER_SAMPLE_STATE.SAMPLE_WATER_STATE sub states +@unique +class TDPreTreaSamplWaterUserActionStates(DialinEnum): + REQUESTED_USER_ACTION_SAMPLE_WATER_STOP = 0 # User requests to stop sample water + REQUESTED_USER_ACTION_SAMPLE_WATER_START = 1 # User requests to start sample water + NUM_OF_REQUESTED_SAMPLE_WATER_USER_ACTIONS = 2 # Number of requested sample water user actions + +TDPreTreaSamplWaterUserActionStates._str_list = { + # Official Name : Accepted strings + 'REQUESTED_USER_ACTION_SAMPLE_WATER_STOP': ['stop', 'sample water stop'], + 'REQUESTED_USER_ACTION_SAMPLE_WATER_START': ['start', 'sample water start'], + 'NUM_OF_REQUESTED_SAMPLE_WATER_USER_ACTIONS': [], +} + + +# TDPreTreatmentModesStates.TDPreTreaPrimeStates.TD_PRIME_WET_SELF_TESTS_STATE sub states +@unique +class TDWetSelfTestsStates(DialinEnum): + WET_SELF_TESTS_START_STATE = 0 # Wet self-tests starting state. + WET_SELF_TESTS_BUBBLE_CHECK_SETUP_STATE = 1 # Setup for wet air bubble self-test state. + WET_SELF_TESTS_BUBBLE_CHECK_STATE = 2 # Wet self-test air bubble detectors state. + WET_SELF_TESTS_PRIME_CHECK_STATE = 3 # Prime check wet self-tests state, checks for primed patient lines. + WET_SELF_TESTS_BLOOD_LEAK_DETECTOR_DEBUBBLE_STATE = 4 # Blood leak detector debubble state. + WET_SELF_TESTS_BLOOD_LEAK_DETECTOR_STATE = 5 # Blood leak detector self-test state. + WET_SELF_TESTS_FIRST_DISPLACEMENT_SETUP_STATE = 6 # Setup valve and start dialysate pump for first displacement. + WET_SELF_TESTS_FIRST_DISPLACEMENT_STATE = 7 # Fill reservoir 2 with 100 mL of dialysate from reservoir 1 state. + WET_SELF_TESTS_FIRST_DISPLACEMENT_VERIFY_STATE = 8 # After first displacement completed verify state. + WET_SELF_TESTS_SECOND_DISPLACEMENT_SETUP_STATE = 9 # Setup valve and start dialysate pump for second displacement. + WET_SELF_TESTS_SECOND_DISPLACEMENT_STATE = 10 # Fill reservoir 1 with 300 mL of dialysate from reservoir 2 state. + WET_SELF_TESTS_SECOND_DISPLACEMENT_VERIFY_STATE = 11 # After first displacement completed verify state. + WET_SELF_TESTS_STOPPED_STATE = 12 # Wet self-test stopped state. + WET_SELF_TESTS_COMPLETE_STATE = 13 # Wet self-test complete state. + NUM_OF_WET_SELF_TESTS_STATES = 14 # Number of wet self-tests states. + +TDWetSelfTestsStates._str_list = { + # Official Name : Accepted strings + 'WET_SELF_TESTS_START_STATE': ['start'], + 'WET_SELF_TESTS_BUBBLE_CHECK_SETUP_STATE': ['bubble check setup', 'air bubble check setup'], + 'WET_SELF_TESTS_BUBBLE_CHECK_STATE': ['bubble check', 'air bubble check'], + 'WET_SELF_TESTS_PRIME_CHECK_STATE': ['prime check'], + 'WET_SELF_TESTS_BLOOD_LEAK_DETECTOR_DEBUBBLE_STATE': ['blood leak detector debubble'], + 'WET_SELF_TESTS_BLOOD_LEAK_DETECTOR_STATE': ['blood leak detector'], + 'WET_SELF_TESTS_FIRST_DISPLACEMENT_SETUP_STATE': ['first displacement setup'], + 'WET_SELF_TESTS_FIRST_DISPLACEMENT_STATE': ['first displacement', 'first displacement running'], + 'WET_SELF_TESTS_FIRST_DISPLACEMENT_VERIFY_STATE': ['first displacement verify'], + 'WET_SELF_TESTS_SECOND_DISPLACEMENT_SETUP_STATE': ['second displacement setup'], + 'WET_SELF_TESTS_SECOND_DISPLACEMENT_STATE': ['second displacement', 'second displacement running'], + 'WET_SELF_TESTS_SECOND_DISPLACEMENT_VERIFY_STATE': ['second displacement verify'], + 'WET_SELF_TESTS_STOPPED_STATE': ['stopped', 'paused'], + 'WET_SELF_TESTS_COMPLETE_STATE': ['complete', 'done'], + 'NUM_OF_WET_SELF_TESTS_STATES': [], +} + + +# TDTreatmentStates.TREATMENT_BLOOD_PRIME_STATE.BLOOD_PRIME_RUN_STATE sub states +@unique +class TDTreaBloodPrimeUserActionStates(DialinEnum): + REQUESTED_USER_ACTION_BLOOD_PRIME_PAUSE = 0 # User requests to pause blood prime operation + REQUESTED_USER_ACTION_BLOOD_PRIME_RESUME = 1 # User requests to resume blood prime operation + NUM_OF_REQUESTED_BLOOD_PRIME_USER_ACTIONS = 2 # Number of requested blood prime user actions + +TDTreaBloodPrimeUserActionStates._str_list = { + # Official Name : Accepted strings + 'REQUESTED_USER_ACTION_BLOOD_PRIME_PAUSE': ['stop', 'pause'], + 'REQUESTED_USER_ACTION_BLOOD_PRIME_RESUME': ['run', 'resume'], + 'NUM_OF_REQUESTED_BLOOD_PRIME_USER_ACTIONS': [], +} + + +# TDTreatmentStates.TDTreaRinsebackStates.RINSEBACK_RUN_STATE sub states +@unique +class TDTreaRinsebackUserActionStates(DialinEnum): + REQUESTED_USER_ACTION_RINSEBACK_CONFIRM_START = 0 # User confirms saline bag clamped, connected to end of arterial line, un-clamped, and ready to start rinseback operation + REQUESTED_USER_ACTION_RINSEBACK_INCREASE_RATE = 1 # User requests increase in rinseback flow rate + REQUESTED_USER_ACTION_RINSEBACK_DECREASE_RATE = 2 # User requests decrease in rinseback flow rate + REQUESTED_USER_ACTION_RINSEBACK_PAUSE = 3 # User requests to pause rinseback operation + REQUESTED_USER_ACTION_RINSEBACK_RESUME = 4 # User requests to resume rinseback operation + REQUESTED_USER_ACTION_RINSEBACK_END = 5 # User requests to end the rinseback operation + REQUESTED_USER_ACTION_RINSEBACK_ADDITIONAL = 6 # User requests an additional 10 mL of rinseback volume + REQUESTED_USER_ACTION_RINSEBACK_CONFIRM_DISCONNECT = 7 # User confirms patient disconnected, saline bag clamped, re-connected to VBA, un-clamped, and lines shunted to start re-circulation + REQUESTED_USER_ACTION_RINSEBACK_END_TREATMENT = 8 # User requests to end treatment + REQUESTED_USER_ACTION_RINSEBACK_BACK_TO_TREATMENT = 9 # User requests to return to treatment + NUM_OF_REQUESTED_RINSEBACK_USER_ACTIONS = 10 # Number of requested rinseback user actions + +TDTreaRinsebackUserActionStates._str_list = { + # Official Name : Accepted strings + 'REQUESTED_USER_ACTION_RINSEBACK_CONFIRM_START': ['start', 'confirm start'], + 'REQUESTED_USER_ACTION_RINSEBACK_INCREASE_RATE': ['increase rate', 'increase rinseback flow rate'], + 'REQUESTED_USER_ACTION_RINSEBACK_DECREASE_RATE': ['decrease rate', 'decrease rinseback flow rate'], + 'REQUESTED_USER_ACTION_RINSEBACK_PAUSE': ['pause', 'paused'], + 'REQUESTED_USER_ACTION_RINSEBACK_RESUME': ['resume', 'resume rinseback'], + 'REQUESTED_USER_ACTION_RINSEBACK_END': ['end', 'end rinseback'], + 'REQUESTED_USER_ACTION_RINSEBACK_ADDITIONAL': ['additional rinseback', 'additional 10ml', 'extra 10ml'], + 'REQUESTED_USER_ACTION_RINSEBACK_CONFIRM_DISCONNECT': ['confirm disconnect', 'confirm patient disconnect'], + 'REQUESTED_USER_ACTION_RINSEBACK_END_TREATMENT': ['end treatment'], + 'REQUESTED_USER_ACTION_RINSEBACK_BACK_TO_TREATMENT': ['back to treatment'], + 'NUM_OF_REQUESTED_RINSEBACK_USER_ACTIONS': [], +} + + +# TDTreatmentStates.TDTreaRinsebackStates.RINSEBACK_RUN_STATE sub states +@unique +class TDTreaRecircUserActionStates(DialinEnum): + REQUESTED_USER_ACTION_TX_RECIRC_RECONNECT = 0 # User requests to re-connect to system (stop re-circulating, clamp arterial and venous lines) + REQUESTED_USER_ACTION_TX_RECIRC_CONFIRM_RECONNECT = 1 # User confirms patient connected, lines un-shunted to return to treatment + REQUESTED_USER_ACTION_TX_RECIRC_RESUME_RC = 2 # User requests to resume re-circulation + REQUESTED_USER_ACTION_TX_RECIRC_END_TREATMENT = 3 # User requests to end treatment + REQUESTED_USER_ACTION_TX_RECIRC_CONFIRM_DISCONNECT = 4 # User confirms patient disconnected, lines shunted to begin re-circulation + NUM_OF_REQUESTED_TX_RECIRC_USER_ACTIONS = 5 # Number of requested treatment re-circ user actions + +TDTreaRecircUserActionStates._str_list = { + # Official Name : Accepted strings + 'REQUESTED_USER_ACTION_TX_RECIRC_RECONNECT': ['reconnect to system'], + 'REQUESTED_USER_ACTION_TX_RECIRC_CONFIRM_RECONNECT': ['confirm patient reconnect'], + 'REQUESTED_USER_ACTION_TX_RECIRC_RESUME_RC': ['resume', 'resume recirculation'], + 'REQUESTED_USER_ACTION_TX_RECIRC_END_TREATMENT': ['end treatment', 'request end treatment'], + 'REQUESTED_USER_ACTION_TX_RECIRC_CONFIRM_DISCONNECT': ['confirm patient disconnect'], + 'NUM_OF_REQUESTED_TX_RECIRC_USER_ACTIONS': [], +} + + +# TDTreatmentStates.TDTreaRinsebackStates.RINSEBACK_RUN_STATE sub states +@unique +class TDTreaEndUserActionStates(DialinEnum): + REQUESTED_USER_ACTION_TX_END_RINSEBACK_START = 0 # User requests to re-connect to system (stop re-circulating, clamp arterial and venous lines) + NUM_OF_REQUESTED_TX_END_USER_ACTIONS = 1 # Number of requested treatment re-circ user actions + +TDTreaEndUserActionStates._str_list = { + # Official Name : Accepted strings + 'REQUESTED_USER_ACTION_TX_END_RINSEBACK_START': ['start', 'end rinseback start'], + 'NUM_OF_REQUESTED_TX_END_USER_ACTIONS': [], +} + + + +# ================================================== Enum Creators: Events ================================================== +@unique +class TDEventList(DialinEnum): + TD_EVENT_STARTUP = 0 # TD startup event + TD_EVENT_OP_MODE_CHANGE = 1 # TD Op mode change event + TD_EVENT_SUB_MODE_CHANGE = 2 # TD Op sub-mode change event + TD_EVENT_DRY_SELF_TEST_CARTRIDGE_RESULT = 3 # TD dry self test cartridge result + TD_EVENT_DRY_SELF_TEST_PRESSURE_RESULT = 4 # TD dry self test pressure result + TD_EVENT_WET_SELF_TEST_DISPLACEMENT_RESULT = 5 # TD wet self test displacement result + TD_EVENT_CPU_RAM_ERROR_STATUS = 6 # TD CPU RAM error status + TD_EVENT_CAL_RECORD_UPDATE = 7 # TD new calibration record updated + TD_EVENT_SYSTEM_RECORD_UPDATE = 8 # TD new system record has been updated + TD_EVENT_SERVICE_UPDATE = 9 # TD new service record has been updated + TD_EVENT_USAGE_INFO_UPDATE = 10 # TD new usage information has been updated + TD_EVENT_SW_CONFIG_UPDATE = 11 # TD new software configuration has been updated + TD_EVENT_BUTTON = 12 # TD button pressed/released + TD_EVENT_SAFETY_LINE = 13 # TD safety line pulled/released + TD_EVENT_SUB_STATE_CHANGE = 14 # TD Op sub-state change event + TD_EVENT_RSRVR_UF_RATE = 15 # TD ultrafiltration measured and expected rates + TD_EVENT_OPERATION_STATUS = 16 # TD operation status event. + TD_EVENT_AIR_TRAP_FILL = 17 # TD initiated an air trap fill (opened VBT briefly). + TD_EVENT_AIR_TRAP_LOWER = 18 # TD started/stopped an air trap lower level operation + TD_EVENT_AIR_PUMP_ON_OFF = 19 # TD turned air pump on or off. + TD_EVENT_DRY_SELF_TEST_PRESSURE_DECAY_WAIT_PERIOD = 20 # TD dry self test pressure decay wait period + TD_EVENT_INSTIT_RECORD_UPDATE = 21 # TD new institutional record has been updated. + TD_EVENT_VALVE_POS_CHANGE = 22 # TD pinch valve position change + TD_EVENT_VALVE_HOMED_POS_SETTING = 23 # TD pinch valve homed encoder positions for A/B/C + NUM_OF_EVENT_IDS = 24 # Total number of TD events + +TDEventList._str_list = { + # Official Name : Accepted strings + 'TD_EVENT_STARTUP': ['startup'], + 'TD_EVENT_OP_MODE_CHANGE': ['op mode change', 'operation mode change'], + 'TD_EVENT_SUB_MODE_CHANGE': ['sub mode change'], + 'TD_EVENT_DRY_SELF_TEST_CARTRIDGE_RESULT': ['dry self test cartridge result'], + 'TD_EVENT_DRY_SELF_TEST_PRESSURE_RESULT': ['dry self test pressure result'], + 'TD_EVENT_WET_SELF_TEST_DISPLACEMENT_RESULT': ['wet self test displacement result'], + 'TD_EVENT_CPU_RAM_ERROR_STATUS': ['cpu ram error'], + 'TD_EVENT_CAL_RECORD_UPDATE': ['cal record update', 'calibration record update'], + 'TD_EVENT_SYSTEM_RECORD_UPDATE': ['system record update'], + 'TD_EVENT_SERVICE_UPDATE': ['service update', 'service record update'], + 'TD_EVENT_USAGE_INFO_UPDATE': ['usage info update'], + 'TD_EVENT_SW_CONFIG_UPDATE': ['sw config update', 'software config update'], + 'TD_EVENT_BUTTON': ['button', 'button press', 'button release'], + 'TD_EVENT_SAFETY_LINE': ['safety line'], + 'TD_EVENT_SUB_STATE_CHANGE': ['sub state change'], + 'TD_EVENT_RSRVR_UF_RATE': ['rsrvr uf rate', 'ultrafiltration rate change'], + 'TD_EVENT_OPERATION_STATUS': ['operation status'], + 'TD_EVENT_AIR_TRAP_FILL': ['air trap fill'], + 'TD_EVENT_AIR_TRAP_LOWER': ['air trap lower'], + 'TD_EVENT_AIR_PUMP_ON_OFF': ['air pump', 'air pump on', 'air pump off'], + 'TD_EVENT_DRY_SELF_TEST_PRESSURE_DECAY_WAIT_PERIOD': ['dry self test pressure decay wait period'], + 'TD_EVENT_INSTIT_RECORD_UPDATE': ['instit record update', 'institutional record update'], + 'TD_EVENT_VALVE_POS_CHANGE': ['valve position change', 'valve pos change'], + 'TD_EVENT_VALVE_HOMED_POS_SETTING': ['valve homed to positions'], + 'NUM_OF_EVENT_IDS': [], +} + + + # ================================================== Enum Creators: Names ================================================== @unique class TDAirPumpNames(DialinEnum): @@ -579,13 +939,23 @@ @unique class TDAirPumpAttributes(DialinEnum): STATE = 0 # TD Air Pump State to command attribute - POWER = 1 # TD Air Pump Power attribute - NUM_OF_AIR_PUMP_ATTRIBUTES = 2 # Number of Air Pump attributes + DUTY_CYCLE = 1 # TD Air Pump Duty Cycle attribute + RPM = 2 # TD Air Pump RPM attribute + # TODO remove after feature validation + FPGA_RPM = 3 # TD Air Pump FPGA_RPM attribute + #TODO remove after feature validation + SCALAR_POWER = 4 # TD Air Pump scalar power + NUM_OF_AIR_PUMP_ATTRIBUTES = 5 # Number of Air Pump attributes TDAirPumpAttributes._str_list = { # Official Name : Accepted strings 'STATE': [], - 'POWER': [], + 'DUTY_CYCLE': [], + 'RPM': [], + # TODO remove after feature validation + 'FPGA_RPM': [], + # TODO remove after feature validation + 'SCALAR_POWER': [], 'NUM_OF_AIR_PUMP_ATTRIBUTES': [], } @@ -679,6 +1049,34 @@ @unique +class TDEjectorStates(DialinEnum): + EJECTOR_STATE_INIT = 0 # Ejector Initial (un-homed) state + EJECTOR_STATE_HOMING = 1 # Ejector Homing state + EJECTOR_STATE_RETRACTED = 2 # Ejector Retracted state + EJECTOR_STATE_EXTENDED = 3 # Ejector Extended state + EJECTOR_STATE_RETRACTING = 4 # Ejector Retracting state + EJECTOR_STATE_EXTENDING = 5 # Ejector Extending state + EJECTOR_STATE_DIR_CHANGE_STOP = 6 # Ejector Direction Change Stop state + EJECTOR_STATE_RETRACT_BACKOFF = 7 # Ejector Backing Off Retracted state + EJECTOR_STATE_ABORT = 8 # Ejector abort state + NUM_OF_EJECTOR_STATES = 9 # Number of ejector states + +TDEjectorStates._str_list = { + # Official Name : Accepted strings + 'EJECTOR_STATE_INIT': ['init'], + 'EJECTOR_STATE_HOMING': ['homing'], + 'EJECTOR_STATE_RETRACTED': ['retracted'], + 'EJECTOR_STATE_EXTENDED': ['extended'], + 'EJECTOR_STATE_RETRACTING': ['retracting'], + 'EJECTOR_STATE_EXTENDING': ['extending'], + 'EJECTOR_STATE_DIR_CHANGE_STOP': ['dir chage stop', 'direction change stop'], + 'EJECTOR_STATE_RETRACT_BACKOFF': ['retract backoff', 'backing off'], + 'EJECTOR_STATE_ABORT': ['abort'], + 'NUM_OF_EJECTOR_STATES': [], +} + + +@unique class TDPressureSensorAttributes(DialinEnum): PRES = 0 # Pressure attribute of pressure sensor LONG_FILTERED_PRESSURE = 1 # Long Filtered Pressure attribute of pressure sensor @@ -713,18 +1111,20 @@ @unique class TDValvePositions(DialinEnum): VALVE_POSITION_NOT_IN_POSITION = 0 # Valve not in Position - VALVE_POSITION_A_INSERT_EJECT = 1 # Insert/Eject Valve Position - VALVE_POSITION_B_OPEN = 2 # Open Valve Position - VALVE_POSITION_C_CLOSE = 3 # Closed Valve Position + VALVE_POSITION_A_INSERT_LOAD = 1 # Insert/Eject Valve Position + VALVE_POSITION_B_OPEN_BLOOD = 2 # Open Valve Position + VALVE_POSITION_C_CLOSE_SALINE = 3 # Closed Valve Position VALVE_POSITION_C_PARTIAL_CLOSE = 4 # Partial Close Valve Position + NUM_OF_VALVE_POSITIONS = 5 # Partial Close Valve Position TDValvePositions._str_list = { # Official Name : Accepted strings 'VALVE_POSITION_NOT_IN_POSITION': ['not in position'], - 'VALVE_POSITION_A_INSERT_EJECT': ['a', 'insert/eject', 'insert', 'eject'], - 'VALVE_POSITION_B_OPEN': ['b', 'open'], - 'VALVE_POSITION_C_CLOSE': ['c', 'close', 'closed'], + 'VALVE_POSITION_A_INSERT_LOAD': ['a', 'insert/eject', 'insert', 'eject', 'load'], + 'VALVE_POSITION_B_OPEN_BLOOD': ['b', 'open', 'blood'], + 'VALVE_POSITION_C_CLOSE_SALINE': ['c', 'close', 'closed', 'saline'], 'VALVE_POSITION_C_PARTIAL_CLOSE': [], + 'NUM_OF_VALVE_POSITIONS': [], } @@ -754,47 +1154,106 @@ } +# ================================================== Enum Creators: Treatment Parameters ================================================== +@unique +class TDTreatmentParameters(DialinEnum): + TREATMENT_PARAM_TREATMENT_MODALITY = 0 # Treatment modality type (enum) + TREATMENT_PARAM_HDF_DILUTION = 1 # HDF dilution (enum) + TREATMENT_PARAM_BLOOD_FLOW = 2 # Blood flow rate (in mL/min) + TREATMENT_PARAM_DIALYSATE_FLOW = 3 # Dialysate flow rate (in mL/min) + TREATMENT_PARAM_TREATMENT_DURATION = 4 # Treatment duration (in minutes) + TREATMENT_PARAM_HEPARIN_DELIVERY_DURATION = 5 # Heparin delivery duration (in minutes) + TREATMENT_PARAM_HEPARIN_TYPE = 6 # Heparin type (enum) + TREATMENT_PARAM_DRY_BICARB_CART_SIZE = 7 # Dry bicarb cartrideg size (enum) + TREATMENT_PARAM_SODIUM = 8 # Sodium concentrate (mEq/L) + TREATMENT_PARAM_BICARB_CONCENTRATE = 9 # Bicarbonate concentrate (mEq/L) + TREATMENT_PARAM_DIALYZER_TYPE = 10 # Dialysate type (enum) + TREATMENT_PARAM_FLUID_BOLUS_VOLUME = 11 # Fluid bolus volume (in mL) + TREATMENT_PARAM_BP_MEAS_INTERVAL = 12 # Blood pressure measurement interval (in minutes) + TREATMENT_PARAM_PRIME_RINSEBACK_VOLUME = 13 # Prime rinseback volume (in mL) + TREATMENT_PARAM_HEPATITIS_B = 14 # Hepatitis B status (enum) + TREATMENT_PARAM_ACID_CONCENTRATE = 15 # Acid concentrate type (enum) + TREATMENT_PARAM_SUBST_FLUID_VOLUME = 16 # Substitution fluid volume (in liters) + TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME = 17 # Heparin bolus volume (in mL) + TREATMENT_PARAM_HEPARIN_DELIVERY_RATE = 18 # Heparin delivery rate (in mL/hr) + TREATMENT_PARAM_DIALYSATE_TEMPERATURE = 19 # Dialysate temperature (in degC) + TREATMENT_PARAM_ACID_CONCENTRATE_CONV_FACTOR = 20 # Acid concentrate conversion factor + TREATMENT_PARAM_PRE_WEIGHT = 21 # Weight of patient prior to treatment + TREATMENT_PARAM_EST_TARGET_WEIGHT = 22 # Estimated target weight of patient post treatment + TREATMENT_PARAM_UF_VOLUME = 23 # Ultrafiltration volume (in liters) - provided separately by UI + NUM_OF_TREATMENT_PARAMS = 24 # Total number of treatment parameters -# ================================================== Creates a singleton ================================================== -class TD_Defs(): +TDTreatmentParameters._str_list = { + # Official Name : Accepted strings + 'TREATMENT_PARAM_TREATMENT_MODALITY': ['treatment modality', 'treatment type'], + 'TREATMENT_PARAM_HDF_DILUTION': ['hdf dilution'], + 'TREATMENT_PARAM_BLOOD_FLOW': ['blood flow', 'blood flow rate'], + 'TREATMENT_PARAM_DIALYSATE_FLOW': ['sialysate flow', 'dialysate flow rate'], + 'TREATMENT_PARAM_TREATMENT_DURATION': ['treatment duration'], + 'TREATMENT_PARAM_HEPARIN_DELIVERY_DURATION': ['heparin delivery duration', 'heparin duration'], + 'TREATMENT_PARAM_HEPARIN_TYPE': ['heparin', 'heparin type'], + 'TREATMENT_PARAM_ACID_CONCENTRATE': ['acid', 'acid concentrate'], + 'TREATMENT_PARAM_BICARB_CONCENTRATE': ['bicarb', 'bicarb concentrate'], + 'TREATMENT_PARAM_DIALYZER_TYPE': ['dialyzer', 'dialyzer type'], + 'TREATMENT_PARAM_FLUID_BOLUS_VOLUME': ['fluid bolus volume', 'fluid bolus'], + 'TREATMENT_PARAM_BP_MEAS_INTERVAL': ['blood pressure measure interval', 'bp measure interval'], + 'TREATMENT_PARAM_PRIME_RINSEBACK_VOLUME': ['rinseback volume', 'prime rinseback volume'], + 'TREATMENT_PARAM_HEPATITIS_B': ['hepatitis', 'hepatitis b'], + 'TREATMENT_PARAM_SUBST_FLUID_VOLUME': ['subst fluid volume', 'substitute fluid volume'], + 'TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME': ['heparin volume'], + 'TREATMENT_PARAM_HEPARIN_DELIVERY_RATE': ['heparin delivery rate'], + 'TREATMENT_PARAM_DIALYSATE_TEMPERATURE': ['dialysate temperature'], + 'TREATMENT_PARAM_ACID_CONCENTRATE_CONV_FACTOR': ['acid concentrate conv factor', 'acid concentrate conversion factor'], + 'TREATMENT_PARAM_PRE_WEIGHT': ['pre weight'], + 'TREATMENT_PARAM_EST_TARGET_WEIGHT': ['est target weight', 'target weight', 'estimated target weight'], + 'TREATMENT_PARAM_UF_VOLUME': ['uf volume', 'ultrafiltration volume'], + 'NUM_OF_TREATMENT_PARAMS': [], +} - TDOpModes = TDOpModes - TDFaultStates = TDFaultStates - TDServiceStates = TDServiceStates - TDInitStates = TDInitStates - TDStandbyStates = TDStandbyStates - TDTreatmentParamStates = TDTreatmentParamStates - TDPreTreatmentModesStates = TDPreTreatmentModesStates - TDTreatmentStates = TDTreatmentStates - TDPostTreatmentStates = TDPostTreatmentStates - TDNotLegalStates = TDNotLegalStates - TDPreTreatmentPrimeStates = TDPreTreatmentPrimeStates - TDDialysisStates = TDDialysisStates - TDTreatmentParameters = TDTreatmentParameters - TDEventList = TDEventList - TDEventDataTypes = TDEventDataTypes +@unique +class TDTreatmentModalityTypes(DialinEnum): + HD = 0 # Treatment modality Hemodialysis + HDF = 1 # Treatment modality Hemodiafiltration + NUM_OF_TREATMENT_MODALITY_TYPES = 2 # Total number of treatment modality types - TDAirPumpNames = TDAirPumpNames - TDAirTrapValveNames = TDAirTrapValveNames - TDAirTrapLevelSensorNames = TDAirTrapLevelSensorNames - TDAirBubbleDetectorNames = TDAirBubbleDetectorNames - TDEjectorNames = TDEjectorNames - TDPressureSensorNames = TDPressureSensorNames - TDTemperatureSensorNames = TDTemperatureSensorNames - TDSwitchNames = TDSwitchNames - TDValveNames = TDValveNames - TDMonitoredVoltages = TDMonitoredVoltages +TDTreatmentModalityTypes._str_list = { + # Official Name : Accepted strings + 'HD': ['treatment modality hd', 'hemodialysis'], + 'HDF': ['treatment modality hdf', 'hemodiafiltration'], + 'NUM_OF_TREATMENT_MODALITY_TYPES': [], +} - TDAirPumpAttributes = TDAirPumpAttributes - TDAirTrapLevelSensorAttributes = TDAirTrapLevelSensorAttributes - TDAirTrapState = TDAirTrapState - TDBloodFlowMotorAttributes = TDBloodFlowMotorAttributes - TDAirBubbleDetectorAttributes = TDAirBubbleDetectorAttributes - TDEjectorAttributes = TDEjectorAttributes - TDPressureSensorAttributes = TDPressureSensorAttributes - TDSwitchStatus = TDSwitchStatus - TDValvePositions = TDValvePositions - TDValveStates = TDValveStates -td_enum_repository = TD_Defs() +@unique +class TDTreatmentHDFDilution(DialinEnum): + HDF_NOT_APPLICABLE = 0 # Treatment HDF not applicable + HDF_PRE_DILUTION = 1 # Treatment HDF pre-dilution + HDF_POST_DILUTION = 1 # Treatment HDF psot-dilution + NUM_OF_TREATMENT_HDF_TYPES = 2 # Total number of HDF treatment dilution types + +TDTreatmentHDFDilution._str_list = { + # Official Name : Accepted strings + 'HDF_NOT_APPLICABLE': ['n/a', 'not applicable'], + 'HDF_PRE_DILUTION': ['pre dilution'], + 'HDF_POST_DILUTION': ['post dilution'], + 'NUM_OF_TREATMENT_HDF_TYPES': [], +} + + +@unique +class TDTreatmentHepatitisB(DialinEnum): + HEPATITIS_B_NOT_APPLICABLE = 0 # Hepatitis B status not applicable + HEPATITIS_B_UNKNOWN = 1 # Hepatitis B status unknowm + HEPATITIS_B_POSITIVE = 1 # Hepatitis B status positive + HEPATITIS_B_NEGATIVE = 1 # Hepatitis B status negative + NUM_OF_HEPATITIS_B_STATUS = 2 # Total number of Hepatitis status types + +TDTreatmentHepatitisB._str_list = { + # Official Name : Accepted strings + 'HEPATITIS_B_NOT_APPLICABLE': ['n/a', 'not applicable'], + 'HEPATITIS_B_UNKNOWN': ['unknown'], + 'HEPATITIS_B_POSITIVE': ['positive'], + 'HEPATITIS_B_NEGATIVE': ['negative'], + 'NUM_OF_HEPATITIS_B_STATUS': [], +}