########################################################################### # # Copyright (c) 2020-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 hd_test_pumps_open_loop.py # # @author (last) Sean Nash # @date (last) 05-Aug-2020 # @author (original) Sean Nash # @date (original) 05-Aug-2020 # ############################################################################ import sys sys.path.append("..") from dialin.hd.constants import RESET, NO_RESET from dialin.hd.constants import PUMP_CONTROL_MODE_CLOSED_LOOP, PUMP_CONTROL_MODE_OPEN_LOOP from dialin.hd.hemodialysis_device import HD from time import sleep import unittest class Test(unittest.TestCase): def hd_test_pumps_open_loop(self): """ Sets the target flow rate for all HD pumps using \returns None """ # Create an instance of the HD Class called hd hd = HD() sleep(1) # Set HD open loop pumps flow rates in mL/min HD_BLOOD_PUMP_FLOW_RATE = 200 HD_DIALYSATE_PUMP_IN_FLOW_RATE = 200 HD_DIALYSATE_PUMP_OUT_FLOW_RATE = 200 # Log in to HD as tester if hd.cmd_log_in_to_hd() == 0: print("HD login failed.") exit(1) sleep(1) # Reset all flow rate broadcast intervals hd.bloodflow.cmd_blood_flow_broadcast_interval_override(RESET, 0) sleep(1) hd.dialysate_inlet_flow.cmd_dialysate_inlet_flow_broadcast_interval_override(RESET, 0) sleep(1) hd.dialysate_outlet_flow.cmd_dialysate_outlet_flow_broadcast_interval_override(RESET, 0) sleep(1) # Reset all flow rate set points hd.bloodflow.cmd_blood_flow_set_point_override(RESET, 0) sleep(1) hd.dialysate_inlet_flow.cmd_dialysate_inlet_flow_set_point_override(RESET, 0) sleep(1) hd.dialysate_outlet_flow.cmd_dialysate_outlet_flow_set_point_override(RESET, 0) sleep(1) # Reset all flow rate measures hd.bloodflow.cmd_blood_flow_measured_override(RESET, 0) sleep(1) hd.dialysate_inlet_flow.cmd_dialysate_inlet_flow_measured_override(RESET, 0) sleep(1) hd.dialysate_outlet_flow.cmd_dialysate_outlet_flow_measured_override(RESET, 0) sleep(1) # Set HD pumps flow rates (open loop) hd.bloodflow.cmd_blood_flow_set_point_override(HD_BLOOD_PUMP_FLOW_RATE, PUMP_CONTROL_MODE_OPEN_LOOP) hd.dialysate_inlet_flow.cmd_dialysate_inlet_flow_set_point_override(HD_DIALYSATE_PUMP_IN_FLOW_RATE, PUMP_CONTROL_MODE_OPEN_LOOP) hd.dialysate_outlet_flow.cmd_dialysate_outlet_flow_set_point_override(HD_DIALYSATE_PUMP_OUT_FLOW_RATE, PUMP_CONTROL_MODE_OPEN_LOOP) sleep(5) print("Blood Flow Target = {}".format(hd.bloodflow.target_blood_flow_rate)) print("Dialysate Flow In Target = {}".format(hd.dialysate_inlet_flow.target_dialysate_inlet_flow_rate)) print("Dialysate Flow Out Target = {}".format(hd.dialysate_outlet_flow.target_dialysate_outlet_flow_rate)) sleep(1) i = 0 while True: sleep(0.5) print("Measured Blood Flow = {} mL/min".format(hd.bloodflow.measured_blood_flow_rate)) print("Measured Dialysate Flow In = {} mL/min".format(hd.dialysate_inlet_flow.measured_dialysate_inlet_flow_rate)) print("Measured Dialysate Flow Out = {} mL/min".format(hd.dialysate_outlet_flow.measured_dialysate_outlet_flow_rate)) if i > 0 and i % 60 == 0: resp = input("Press 'Enter' to continue or 'q' to quit: ") if resp.lower() == "q": break i += 1 if __name__ == '__main__': unittest.main(verbosity=2)