Index: dialin/common/hd_defs.py =================================================================== diff -u -r687f8ee052cbdbe5da435ca459e592f0bd8e3c3b -r72ccfeb1ecf609cecffa714e6e332131149d8100 --- dialin/common/hd_defs.py (.../hd_defs.py) (revision 687f8ee052cbdbe5da435ca459e592f0bd8e3c3b) +++ dialin/common/hd_defs.py (.../hd_defs.py) (revision 72ccfeb1ecf609cecffa714e6e332131149d8100) @@ -389,11 +389,12 @@ TREATMENT_PARAM_RINSEBACK_FLOW_RATE_ML_MIN = 10 TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW = 11 TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW = 12 - TREATMENT_PARAM_HEPARIN_DISPENSE_RATE_ML_HR = 13 - TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME_ML = 14 - TREATMENT_PARAM_DIALYSATE_TEMPERATURE_C = 15 - TREATMENT_PARAM_UF_VOLUME_L = 16 - NUM_OF_TREATMENT_PARAMS = 17 + TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC = 13 + TREATMENT_PARAM_HEPARIN_DISPENSE_RATE_ML_HR = 14 + TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME_ML = 15 + TREATMENT_PARAM_DIALYSATE_TEMPERATURE_C = 16 + TREATMENT_PARAM_UF_VOLUME_L = 17 + NUM_OF_TREATMENT_PARAMS = 18 class Acid_Concentrates(DialinEnum): ACID_CONC_TYPE_FRESENIUS_08_1251_1 = 0 Index: dialin/hd/treatment.py =================================================================== diff -u -r428c5c0a653129867b1cb32b5e64f89f68191c4b -r72ccfeb1ecf609cecffa714e6e332131149d8100 --- dialin/hd/treatment.py (.../treatment.py) (revision 428c5c0a653129867b1cb32b5e64f89f68191c4b) +++ dialin/hd/treatment.py (.../treatment.py) (revision 72ccfeb1ecf609cecffa714e6e332131149d8100) @@ -43,14 +43,13 @@ HD_TREATMENT_PARAMETER_HEPARIN_TYPE = 8 HD_TREATMENT_PARAMETER_BP_MEAS_INTERVAL = 9 HD_TREATMENT_PARAMETER_RINSEBACK_FLOW_RATE = 10 - HD_TREATMENT_PARAMETER_ART_PRESSURE_LOW_LIMIT = 11 - HD_TREATMENT_PARAMETER_ART_PRESSURE_HIGH_LIMIT = 12 - HD_TREATMENT_PARAMETER_VEN_PRESSURE_LOW_LIMIT = 13 - HD_TREATMENT_PARAMETER_VEN_PRESSURE_HIGH_LIMIT = 14 - HD_TREATMENT_PARAMETER_HEPARIN_DISPENSE_RATE = 15 - HD_TREATMENT_PARAMETER_HEPARIN_BOLUS_VOLUME = 16 - HD_TREATMENT_PARAMETER_DIALYSATE_TEMPERATURE = 17 - HD_TREATMENT_PARAMETER_UF_VOLUME = 18 + HD_TREATMENT_PARAMETER_ART_PRESSURE_LIMIT_WINDOW = 11 + HD_TREATMENT_PARAMETER_VEN_PRESSURE_LIMIT_WINDOW = 12 + HD_TREATMENT_PARAMETER_VEN_PRESSURE_LIMIT_ASYMMETRIC = 13 + HD_TREATMENT_PARAMETER_HEPARIN_DISPENSE_RATE = 14 + HD_TREATMENT_PARAMETER_HEPARIN_BOLUS_VOLUME = 15 + HD_TREATMENT_PARAMETER_DIALYSATE_TEMPERATURE = 16 + HD_TREATMENT_PARAMETER_UF_VOLUME = 17 # Dialyzer Type IDs DIALYZER_TYPE_BBRAUN_PRO_13H = 0 # BBraun Diacap Pro 13H @@ -180,10 +179,9 @@ self.current_heparin_type = 0 self.current_blood_pressure_measurement_interval = 0 self.current_rinseback_flow_rate = 0 - self.current_arterial_low = 0 - self.current_arterial_high = 0 - self.current_venous_low = 0 - self.current_venous_high = 0 + self.current_arterial_pressure_window = 0 + self.current_venous_pressure_window = 0 + self.current_venous_pressure_asymmetric = 0 self.current_heparin_bolus = 0 self.current_heparin_dispense = 0 self.current_dialysate_temp = 0 @@ -474,10 +472,9 @@ "heparin_type" : self.current_heparin_type, "blood_pressure_interval" : self.current_blood_pressure_measurement_interval, "rinseback_flow_rate" : self.current_rinseback_flow_rate, - "arterial_low" : self.current_arterial_low, - "arterial_high" : self.current_arterial_high, - "venous_low" : self.current_venous_low, - "venous_high" : self.current_venous_high, + "arterial_pressure_window" : self.current_arterial_pressure_window, + "venous_pressure_window" : self.current_venous_pressure_window, + "venous_pressure_asymmetric" : self.current_venous_pressure_asymmetric, "heparin_bolus" : self.current_heparin_bolus, "heparin_dispense" : self.current_heparin_dispense, "dialysate_temp" : self.current_dialysate_temp, @@ -703,9 +700,8 @@ "current_treatment_duration", "current_heparin_pre_stop", "current_saline_bolus_volume", "current_acid_concentrate", "current_bicarb_concentrate", "current_dialyzer_type", "current_heparin_type", "current_blood_pressure_measurement_interval", "current_rinseback_flow_rate", - "current_arterial_low", "current_arterial_high", "current_venous_low", - "current_venous_high", "current_heparin_bolus", "current_heparin_dispense", - "current_dialysate_temp", "current_uf_volume"]) + "current_arterial_pressure_window", "current_venous_pressure_window", "current_venous_pressure_asymmetric", + "current_heparin_bolus", "current_heparin_dispense", "current_dialysate_temp", "current_uf_volume"]) def _handler_treatment_current_parameters(self, message, timestamp=0.0) -> None: """ Handles published current treatment parameters messages. @@ -737,22 +733,20 @@ message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11])) rbfr = struct.unpack(' int: + def cmd_set_arterial_pressure_alarm_limit_window(self, window: int) -> int: """ - Constructs and sends the set arterial pressure lower alarm limit parameter command. + Constructs and sends the set arterial pressure alarm limit window parameter command. Constraints: Must be logged into HD. - Pressure must be integer and should be between -300 and +0 mmHg + Window must be integer and should be between 100 and 200 mmHg - @param pres: integer - set arterial pressure lower alarm limit (in mmHg) + @param window: integer - set arterial pressure alarm limit window (in mmHg) @return: 1 if successful, zero otherwise """ - par = integer_to_bytearray(self.HD_TREATMENT_PARAMETER_ART_PRESSURE_LOW_LIMIT) - pre = integer_to_bytearray(pres) - payload = par + pre + par = integer_to_bytearray(self.HD_TREATMENT_PARAMETER_ART_PRESSURE_LIMIT_WINDOW) + win = integer_to_bytearray(window) + payload = par + win message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, message_id=MsgIds.MSG_ID_HD_SET_PARAMETER_TREATMENT_PARAMETER.value, payload=payload) - self.logger.debug("setting arterial pressure lower alarm limit parameter") + self.logger.debug("setting arterial pressure alarm limit window parameter") # Send message received_message = self.can_interface.send(message) # If there is content... if received_message is not None: # self.logger.debug(received_message) - str_pre = str(pres) - self.logger.debug("Arterial pressure lower alarm limit parameter set to " + str_pre + ": " + + str_win = str(window) + self.logger.debug("Arterial pressure alarm limit window parameter set to " + str_win + ": " + str(received_message['message'][DenaliMessage.PAYLOAD_START_INDEX])) # response payload is OK or not OK return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] else: self.logger.debug("Timeout!!!!") return False - def cmd_set_arterial_pressure_high_alarm_limit(self, pres: int) -> int: + def cmd_set_venous_pressure_alarm_limit_window(self, window: int) -> int: """ - Constructs and sends the set arterial pressure upper alarm limit parameter command. + Constructs and sends the set venous pressure alarm limit window parameter command. Constraints: Must be logged into HD. - Pressure must be integer and should be between -300 and +0 mmHg + Window must be integer and should be between +100 and +200 mmHg - @param pres: integer - set arterial pressure upper alarm limit (in mmHg) + @param window: integer - set venous pressure alarm limit window (in mmHg) @return: 1 if successful, zero otherwise """ - par = integer_to_bytearray(self.HD_TREATMENT_PARAMETER_ART_PRESSURE_HIGH_LIMIT) - pre = integer_to_bytearray(pres) - payload = par + pre + par = integer_to_bytearray(self.HD_TREATMENT_PARAMETER_VEN_PRESSURE_LIMIT_WINDOW) + win = integer_to_bytearray(window) + payload = par + win message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, message_id=MsgIds.MSG_ID_HD_SET_PARAMETER_TREATMENT_PARAMETER.value, payload=payload) - self.logger.debug("setting arterial pressure upper alarm limit parameter") + self.logger.debug("setting venous pressure alarm limit window parameter") # Send message received_message = self.can_interface.send(message) # If there is content... if received_message is not None: # self.logger.debug(received_message) - str_pre = str(pres) - self.logger.debug("Arterial pressure upper alarm limit parameter set to " + str_pre + ": " + + str_win = str(window) + self.logger.debug("Venous pressure alarm limit window parameter set to " + str_win + ": " + str(received_message['message'][DenaliMessage.PAYLOAD_START_INDEX])) # response payload is OK or not OK return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] else: self.logger.debug("Timeout!!!!") return False - def cmd_set_venous_pressure_low_alarm_limit(self, pres: int) -> int: + def cmd_set_venous_pressure_alarm_limit_asymmetric(self, asym: int) -> int: """ - Constructs and sends the set venous pressure lower alarm limit parameter command. + Constructs and sends the set venous pressure alarm limit asymmetric parameter command. Constraints: Must be logged into HD. - Pressure must be integer and should be between +20 and +600 mmHg + Asymmetric must be integer and should be between 20 and 30 mmHg - @param pres: integer - set venous pressure lower alarm limit (in mmHg) + @param asym: integer - set venous pressure alarm limit asymmetric (in mmHg) @return: 1 if successful, zero otherwise """ - par = integer_to_bytearray(self.HD_TREATMENT_PARAMETER_VEN_PRESSURE_LOW_LIMIT) - pre = integer_to_bytearray(pres) - payload = par + pre + par = integer_to_bytearray(self.HD_TREATMENT_PARAMETER_VEN_PRESSURE_LIMIT_ASYMMETRIC) + asy = integer_to_bytearray(asym) + payload = par + asy message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, message_id=MsgIds.MSG_ID_HD_SET_PARAMETER_TREATMENT_PARAMETER.value, payload=payload) - self.logger.debug("setting venous pressure lower alarm limit parameter") + self.logger.debug("setting venous pressure alarm limit asymmetric parameter") # Send message received_message = self.can_interface.send(message) # If there is content... if received_message is not None: # self.logger.debug(received_message) - str_pre = str(pres) - self.logger.debug("Venous pressure lower alarm limit parameter set to " + str_pre + ": " + + str_asy = str(asym) + self.logger.debug("Venous pressure upper alarm limit parameter set to " + str_asy + ": " + str(received_message['message'][DenaliMessage.PAYLOAD_START_INDEX])) # response payload is OK or not OK return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] else: self.logger.debug("Timeout!!!!") return False - def cmd_set_venous_pressure_high_alarm_limit(self, pres: int) -> int: - """ - Constructs and sends the set venous pressure upper alarm limit parameter command. - Constraints: - Must be logged into HD. - Pressure must be integer and should be between +20 and +600 mmHg - - @param pres: integer - set venous pressure upper alarm limit (in mmHg) - @return: 1 if successful, zero otherwise - """ - - par = integer_to_bytearray(self.HD_TREATMENT_PARAMETER_VEN_PRESSURE_HIGH_LIMIT) - pre = integer_to_bytearray(pres) - payload = par + pre - - message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, - message_id=MsgIds.MSG_ID_HD_SET_PARAMETER_TREATMENT_PARAMETER.value, - payload=payload) - - self.logger.debug("setting venous pressure upper alarm limit parameter") - - # Send message - received_message = self.can_interface.send(message) - - # If there is content... - if received_message is not None: - # self.logger.debug(received_message) - str_pre = str(pres) - self.logger.debug("Venous pressure upper alarm limit parameter set to " + str_pre + ": " + - str(received_message['message'][DenaliMessage.PAYLOAD_START_INDEX])) - # response payload is OK or not OK - return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] - else: - self.logger.debug("Timeout!!!!") - return False - def cmd_set_heparin_dispense_rate(self, rate: float) -> int: """ Constructs and sends the set Heparin dispense rate parameter command. Index: dialin/hd/ui_proxy.py =================================================================== diff -u -r8ac75cccb937866cb13c49a97e91bb9e1060a9d8 -r72ccfeb1ecf609cecffa714e6e332131149d8100 --- dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision 8ac75cccb937866cb13c49a97e91bb9e1060a9d8) +++ dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision 72ccfeb1ecf609cecffa714e6e332131149d8100) @@ -17,7 +17,6 @@ from enum import unique from collections import OrderedDict from logging import Logger -from enum import unique from ..common.msg_defs import MsgIds, RequestRejectReasons, MsgFieldPositions from ..common.hd_defs import TreatmentParameters @@ -539,10 +538,9 @@ U32 heparin type. \n U32 BP measurement interval. \n U32 rinseback flow rate. \n - S32 arterial pressure low alarm limit. \n - S32 arterial pressure high alarm limit. \n - S32 venous pressure low alarm limit. \n - S32 venous pressure high alarm limit. \n + S32 arterial pressure alarm limit window. \n + S32 venous pressure alarm limit window. \n + S32 venous pressure alarm limit asymmetric. \n F32 Heparin dispense rate. \n F32 Heparin bolus volume. \n F32 dialysate temperature. \n @@ -571,20 +569,18 @@ message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10])) rbf = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11])) - apl = struct.unpack('i', bytearray( + apw = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_12:MsgFieldPositions.END_POS_FIELD_12])) - aph = struct.unpack('i', bytearray( + vpw = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_13:MsgFieldPositions.END_POS_FIELD_13])) - vpl = struct.unpack('i', bytearray( + vpa = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_14:MsgFieldPositions.END_POS_FIELD_14])) - vph = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_15:MsgFieldPositions.END_POS_FIELD_15])) hdr = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_16:MsgFieldPositions.END_POS_FIELD_16])) + message['message'][MsgFieldPositions.START_POS_FIELD_15:MsgFieldPositions.END_POS_FIELD_15])) hbv = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_17:MsgFieldPositions.END_POS_FIELD_17])) + message['message'][MsgFieldPositions.START_POS_FIELD_16:MsgFieldPositions.END_POS_FIELD_16])) tmp = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_18:MsgFieldPositions.END_POS_FIELD_18])) + message['message'][MsgFieldPositions.START_POS_FIELD_17:MsgFieldPositions.END_POS_FIELD_17])) self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_BLOOD_FLOW_RATE_ML_MIN.value] = bld[0] self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_DIALYSATE_FLOW_RATE_ML_MIN.value] = dia[0] @@ -597,10 +593,9 @@ self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_HEPARIN_TYPE.value] = hpr[0] self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_BLOOD_PRESSURE_MEAS_INTERVAL_MIN.value] = bpi[0] self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_RINSEBACK_FLOW_RATE_ML_MIN.value] = rbf[0] - self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_ARTERIAL_PRESSURE_LOW_LIMIT_MMHG.value] = apl[0] - self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_ARTERIAL_PRESSURE_HIGH_LIMIT_MMHG.value] = aph[0] - self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_VENOUS_PRESSURE_LOW_LIMIT_MMHG.value] = vpl[0] - self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_VENOUS_PRESSURE_HIGH_LIMIT_MMHG.value] = vph[0] + self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW.value] = apw[0] + self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW.value] = vpw[0] + self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC.value] = vpa[0] self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_HEPARIN_DISPENSE_RATE_ML_HR.value] = hdr[0] self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME_ML.value] = hbv[0] self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_DIALYSATE_TEMPERATURE_C.value] = tmp[0] @@ -646,10 +641,9 @@ U32 Reject reason code for heparin type (0=valid). \n U32 Reject reason code for BP measurement interval (0=valid). \n U32 Reject reason code for rinseback flow rate (0=valid). \n - U32 Reject reason code for arterial pressure low alarm limit (0=valid). \n - U32 Reject reason code for arterial pressure high alarm limit (0=valid). \n - U32 Reject reason code for venous pressure low alarm limit (0=valid). \n - U32 Reject reason code for venous pressure high alarm limit (0=valid). \n + U32 Reject reason code for arterial pressure alarm limit window (0=valid). \n + U32 Reject reason code for venous pressure alarm limit window (0=valid). \n + U32 Reject reason code for venous pressure alarm limit asymmetric (0=valid). \n U32 Reject reason code for Heparin dispense rate (0=valid). \n U32 Reject reason code for Heparin bolus volume (0=valid). \n U32 Reject reason code for dialysate temperature (0=valid). \n @@ -680,20 +674,18 @@ message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11])) rbf = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_12:MsgFieldPositions.END_POS_FIELD_12])) - apl = struct.unpack('i', bytearray( + apw = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_13:MsgFieldPositions.END_POS_FIELD_13])) - aph = struct.unpack('i', bytearray( + vpw = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_14:MsgFieldPositions.END_POS_FIELD_14])) - vpl = struct.unpack('i', bytearray( + vpa = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_15:MsgFieldPositions.END_POS_FIELD_15])) - vph = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_16:MsgFieldPositions.END_POS_FIELD_16])) hdr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_17:MsgFieldPositions.END_POS_FIELD_17])) + message['message'][MsgFieldPositions.START_POS_FIELD_16:MsgFieldPositions.END_POS_FIELD_16])) hbv = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_18:MsgFieldPositions.END_POS_FIELD_18])) + message['message'][MsgFieldPositions.START_POS_FIELD_17:MsgFieldPositions.END_POS_FIELD_17])) tmp = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_19:MsgFieldPositions.END_POS_FIELD_19])) + message['message'][MsgFieldPositions.START_POS_FIELD_18:MsgFieldPositions.END_POS_FIELD_18])) if val[0] == 1: self.treatment_parameters_valid = True @@ -710,10 +702,9 @@ self.treatment_parameters_reject_reasons[TreatmentParameters.TREATMENT_PARAM_HEPARIN_TYPE.value] = hpr[0] self.treatment_parameters_reject_reasons[TreatmentParameters.TREATMENT_PARAM_BLOOD_PRESSURE_MEAS_INTERVAL_MIN.value] = bpi[0] self.treatment_parameters_reject_reasons[TreatmentParameters.TREATMENT_PARAM_RINSEBACK_FLOW_RATE_ML_MIN.value] = rbf[0] - self.treatment_parameters_reject_reasons[TreatmentParameters.TREATMENT_PARAM_ARTERIAL_PRESSURE_HIGH_LIMIT_MMHG.value] = aph[0] - self.treatment_parameters_reject_reasons[TreatmentParameters.TREATMENT_PARAM_ARTERIAL_PRESSURE_LOW_LIMIT_MMHG.value] = apl[0] - self.treatment_parameters_reject_reasons[TreatmentParameters.TREATMENT_PARAM_VENOUS_PRESSURE_HIGH_LIMIT_MMHG.value] = vph[0] - self.treatment_parameters_reject_reasons[TreatmentParameters.TREATMENT_PARAM_VENOUS_PRESSURE_LOW_LIMIT_MMHG.value] = vpl[0] + self.treatment_parameters_reject_reasons[TreatmentParameters.TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW.value] = apw[0] + self.treatment_parameters_reject_reasons[TreatmentParameters.TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW.value] = vpw[0] + self.treatment_parameters_reject_reasons[TreatmentParameters.TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC.value] = vpa[0] self.treatment_parameters_reject_reasons[TreatmentParameters.TREATMENT_PARAM_HEPARIN_DISPENSE_RATE_ML_HR.value] = hdr[0] self.treatment_parameters_reject_reasons[TreatmentParameters.TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME_ML.value] = hbv[0] self.treatment_parameters_reject_reasons[TreatmentParameters.TREATMENT_PARAM_DIALYSATE_TEMPERATURE_C.value] = tmp[0] @@ -1093,6 +1084,24 @@ self.alarm_list_response = (al1, al2, al3, al4, al5, al6, al7, al8, al9, al10) self.hd_active_alarm_list_timestamp = timestamp + @publish(["hd_disinfection_standby_timestamp", "disinfects_hd_submode", "disinfects_dg_mode"]) + def _handler_disinfects_data_publish(self, message: dict, timestamp=0.0) -> None: + """ + Handles published disinfect mode and submode that is published to UI + + @param message: published RO pump data message + + @return: None + """ + dg_submode = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] + hd_state = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] + + self.disinfects_hd_submode = hd_state + self.disinfects_dg_mode = dg_submode + self.hd_disinfection_standby_timestamp = timestamp + def cmd_ui_checkin_with_hd(self) -> None: """ Constructs and sends the ui check-in message @@ -1333,10 +1342,9 @@ dialyzer: int = 0, hep_type: int = 0, dia_temp: float = 37.0, - art_low: int = -280, - art_high: int = 70, - ven_low: int = 40, - ven_high: int = 290, + art_win: int = 100, + ven_win: int = 100, + ven_asy: int = 20, bp_intvl: int = 30, rb_flow: int = 75) -> None: """ @@ -1356,10 +1364,9 @@ @param dialyzer: (int) dialyzer type @param hep_type: (int) heparin type @param dia_temp: (float) dialysate temperature (in deg C) - @param art_low: (int) arterial pressure low alarm limit (in mmHg) - @param art_high: (int) arterial pressure high alarm limit (in mmHg) - @param ven_low: (int) venous pressure low alarm limit (in mmHg) - @param ven_high: (int) venous pressure high alarm limit (in mmHg) + @param art_win: (int) arterial pressure alarm limit window (in mmHg) + @param ven_win: (int) venous pressure alarm limit window (in mmHg) + @param ven_asy: (int) venous pressure alarm limit asymmetric (in mmHg) @param bp_intvl: (int) blood pressure measurement interval (in min) @param rb_flow: (int) rinseback flow rate (in mL/min) @@ -1376,10 +1383,9 @@ self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_HEPARIN_TYPE.value] = hep_type self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_BLOOD_PRESSURE_MEAS_INTERVAL_MIN.value] = bp_intvl self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_RINSEBACK_FLOW_RATE_ML_MIN.value] = rb_flow - self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_ARTERIAL_PRESSURE_LOW_LIMIT_MMHG.value] = art_low - self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_ARTERIAL_PRESSURE_HIGH_LIMIT_MMHG.value] = art_high - self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_VENOUS_PRESSURE_LOW_LIMIT_MMHG.value] = ven_low - self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_VENOUS_PRESSURE_HIGH_LIMIT_MMHG.value] = ven_high + self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW.value] = art_win + self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW.value] = ven_win + self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC.value] = ven_asy self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_HEPARIN_DISPENSE_RATE_ML_HR.value] = hep_rate self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME_ML.value] = hep_bol self.treatment_parameters[TreatmentParameters.TREATMENT_PARAM_DIALYSATE_TEMPERATURE_C.value] = dia_temp @@ -1395,15 +1401,13 @@ hpr = integer_to_bytearray(hep_type) bpi = integer_to_bytearray(bp_intvl) rbf = integer_to_bytearray(rb_flow) - apl = integer_to_bytearray(art_low) - aph = integer_to_bytearray(art_high) - vpl = integer_to_bytearray(ven_low) - vph = integer_to_bytearray(ven_high) + apw = integer_to_bytearray(art_win) + vpw = integer_to_bytearray(ven_win) hdr = float_to_bytearray(hep_rate) hbv = float_to_bytearray(hep_bol) tmp = float_to_bytearray(dia_temp) - payload = bld + dia + dur + hps + sal + acc + bic + dzr + hpr + bpi + rbf + apl + aph + vpl + vph + hdr + hbv + tmp + payload = bld + dia + dur + hps + sal + acc + bic + dzr + hpr + bpi + rbf + apw + vpw + hdr + hbv + tmp message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, message_id=MsgIds.MSG_ID_UI_NEW_TREATMENT_PARAMS.value, payload=payload) @@ -1803,24 +1807,6 @@ self.logger.debug("Timeout!!!!") return False - @publish(["hd_disinfection_standby_timestamp", "disinfects_hd_submode", "disinfects_dg_mode"]) - def _handler_disinfects_data_publish(self, message: dict, timestamp=0.0) -> None: - """ - Handles published disinfect mode and submode that is published to UI - - @param message: published RO pump data message - - @return: None - """ - dg_submode = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - hd_state = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - - self.disinfects_hd_submode = hd_state - self.disinfects_dg_mode = dg_submode - self.hd_disinfection_standby_timestamp = timestamp - def cmd_ui_send_alarm_list_request(self) -> None: """ Constructs and sends a ui message to request the HD active alarm list.