import os from dialin.dg.dialysate_generator import DG from dialin.hd.hemodialysis_device import HD from dialin.dg.load_cells import DGLoadCellNames from dialin.hd.switches import HDSwitchesNames, HDSwitchStatus from dialin.hd.ui_proxy import TreatmentParameters from dialin.hd.constants import RESET, NO_RESET from dialin.ui.hd_simulator import HDSimulator from dialin.common.dg_defs import DGHeatDisinfectStates, DGHeatDisinfectUIStates from dialin.dg.heat_disinfect import HeatCancellationModes, NelsonSupportModes from dialin.common.dg_defs import DGChemicalDisinfectStates, DGChemDisinfectUIStates from dialin.common.dg_defs import DGChemDisinfectFlushStates, DGChemDisinfectFlushUIStates from dialin.dg.chemical_disinfect import ChemCancellationModes from dialin.dg.drain_pump import DrainPumpStates, DrainPumpRPMFeedBackSensors from dialin.dg.thermistors import ThermistorsNames from dialin.dg.temperatures import DGTemperaturesNames from dialin.dg.dialysate_generator import DGOperationModes from dialin.hd.temperatures import HDTemperaturesNames from dialin.dg.concentrate_pumps import DGConcentratePumpsStates from dialin.dg.uv_reactors import ReactorsNames from dialin.common.hd_defs import HDOpModes, HDStandbyStates, PreTreatmentWetSelfTestStates, PostTreatmentStates, \ PreTreatmentDrySelfTestsStates from dialin.hd.post_treatment import HDPostTreatmentDrainStates from dialin.common.dg_defs import DGEventList from dialin.common.hd_defs import HDEventList from dialin.hd.reservoirs import HDReservoirStates from dialin.dg.reservoirs import DGReservoirsNames from dialin.common.dg_defs import DGGenIdleModeBadFillSubStates from dialin.common.alarm_defs import AlarmList from dialin.dg.fans import DGFansNames from dialin.dg.pressures import DGPressures from dialin.dg.conductivity_sensors import ConductivitySensorsEnum from dialin.dg.voltages import DGMonitoredVoltages from dialin.dg.valves import DGValveNames from dialin.hd.valves import HDValves from dialin.hd.voltages import HDMonitoredVoltages from dialin.hd.pretreatment import PreTreatmentRsrvrState from dialin.common.dg_defs import DGFlushStates, DGHeatDisinfectActiveCoolStates from dialin.common.test_config_defs import DGTestConfigOptions, HDTestConfigOptions from time import sleep from datetime import datetime import sys sys.path.append("..") def expedite_pretreatment(): counter = 1 #dg.load_cells.cmd_get_load_cells_tare_values() # For testing only. Use the get function to get the actual tare values during the development of this script and # the procedure for this dg.load_cells.load_cells_tare_values[DGLoadCellNames.LOAD_CELL_RESERVOIR_1_PRIMARY.name] = 1726.822998046875 dg.load_cells.load_cells_tare_values[DGLoadCellNames.LOAD_CELL_RESERVOIR_1_BACKUP.name] = 1716.2781982421875 dg.load_cells.load_cells_tare_values[DGLoadCellNames.LOAD_CELL_RESERVOIR_2_PRIMARY.name] = 1716.46484375 dg.load_cells.load_cells_tare_values[DGLoadCellNames.LOAD_CELL_RESERVOIR_2_BACKUP.name] = 1712.1719970703125 while True: if counter == 1 and \ dg.load_cells.load_cells_tare_values[DGLoadCellNames.LOAD_CELL_RESERVOIR_1_PRIMARY.name] != 0.0: # Received the load cells tare values from DG. Reset both stacks dg.cmd_dg_software_reset_request() hd.cmd_hd_software_reset_request() sleep(1) counter += 1 if counter == 2 and dg.dg_operation_mode == 3: # After reset log in again dg.cmd_log_in_to_dg() # Wait to make sure the log in really happened sleep(1) counter += 1 if counter == 3: dg.load_cells.cmd_set_load_cells_tare_values() counter += 1 if counter == 4 and hd.hd_operation_mode == 3: hd.cmd_log_in_to_hd() # Wait to make sure the log in really happened sleep(1) counter += 1 if counter == 5: # Set the operation mode is pre-treatment before commanding the start DG hd.cmd_hd_set_operation_mode(4) counter += 1 if counter == 6 and hd.hd_operation_mode == 4: # Start DG cannot be when HD is in standby dg.hd_proxy.cmd_start_stop_dg() counter += 1 if counter == 7 and dg.dg_operation_mode == 5 and dg.dg_operation_sub_mode == 1: # This section is for testing only to make sure we always have fluid in the reservoir. This part is not # needed in the actual test procedure dg.hd_proxy.cmd_fill(1600) sleep(1) counter += 1 if counter == 8 and dg.dg_operation_mode == 5 and dg.dg_operation_sub_mode == 1: hd.test_configs.cmd_set_test_config(HDTestConfigOptions.TEST_CONFIG_EXPEDITE_PRE_TREATMENT.value) sleep(1) hd.test_configs.cmd_set_test_config(HDTestConfigOptions.TEST_CONFIG_SKIP_BLOOD_PRIME.value) sleep(0.5) counter += 1 if counter == 9: hd.ui.cmd_set_treatment_parameters() sleep(1) counter += 1 if counter == 10: hd.ui.cmd_ui_confirm_treatment_parameters(1) sleep(1) counter += 1 if counter == 11: hd.ui.cmd_ui_uf_volume_set(0.0) sleep(1) counter += 1 if counter == 12: hd.switches.cmd_hd_switch_status_override(HDSwitchesNames.FRONT_DOOR.value, HDSwitchStatus.OPEN.value) sleep(2) counter += 1 if counter == 13: hd.switches.cmd_hd_switch_status_override(HDSwitchesNames.FRONT_DOOR.value, HDSwitchStatus.OPEN.value, RESET) sleep(0.5) counter += 1 if counter == 14: hd.ui.cmd_ui_patient_connection_confirm() sleep(0.5) counter += 1 if counter == 15: hd.ui.cmd_ui_start_treatment_request() counter += 1 sleep(0.5) if __name__ == "__main__": dg = DG(log_level='DEBUG') dg.cmd_log_in_to_dg() sleep(1) hd = HD(log_level='DEBUG') hd.cmd_log_in_to_hd() sleep(1) expedite_pretreatment()