Index: dialin/ui/hd_simulator.py =================================================================== diff -u -r1f6af0afb3388e3a491e1446f336fff9997a3dba -r5cf9574c072325f993bae802ef30f50b506bd84b --- dialin/ui/hd_simulator.py (.../hd_simulator.py) (revision 1f6af0afb3388e3a491e1446f336fff9997a3dba) +++ dialin/ui/hd_simulator.py (.../hd_simulator.py) (revision 5cf9574c072325f993bae802ef30f50b506bd84b) @@ -2215,4 +2215,103 @@ message_id=MsgIds.MSG_ID_HD_RESPONSE_SERVICE_MODE_REQUEST.value, payload=payload) + self.can_interface.send(message, 0) + + def cmd_send_hd_institutional_record_response(self, minBloodFlowMLPM: int, maxBloodFlowMLPM: int, minDialysateFlowMLPM: int, maxDialysateFlowMLPM: int, + minTxDurationMIN: int, maxTxDurationMIN: int, minStopHeparinDispBeforeTxEndMIN: int, maxStopHeparinDispBeforeTxEndMIN: int, + minSalineBolusVolumeML: int, maxSalineBolusVolumeML: int, minDialysateTempC: float, maxDialysateTempC: float, + minArtPressLimitWindowMMHG: int, maxArtPressLimitWindowMMHG: int, minVenPressLimitWindowMMHG: int, maxVenPressLimitWindowMMHG: int, + minVenAsymPressLimitMMHG: int, maxVenAsymPressLimitMMHG: int, minUFVolumeL: float, maxUFVolumeL: float, + minHeparinDispRateMLPHR: float, maxHeparinDispRateMLPHR: float, minHeparinBolusVolumeML: float, maxHeparinBolusVolumeML: float, + enableChemicalDisinfect: int) -> None: + + """ + A simulated HD response message of hd institutational record response. + Default values: + _DEFAULT_MIN_BLOOD_FLOW_MLPM = 100 + _DEFAULT_MAX_BLOOD_FLOW_MLPM = 500 + _DEFAULT_MIN_DIALYSATE_FLOW_MLPM = 100 + _DEFAULT_MAX_DIALYSATE_FLOW_MLPM = 600 + _DEFAULT_MIN_TX_DURATION_MIN = 60 + _DEFAULT_MAX_TX_DURATION_MIN = 480 + _DEFAULT_MIN_STOP_HEP_DISP_BEFORE_TX_END_MIN = 0 + _DEFAULT_MAX_STOP_HEP_DISP_BEFORE_TX_END_MIN = 480 + _DEFAULT_MIN_SALINE_BOLUS_VOLUME_ML = 100 + _DEFAULT_MAX_SALINE_BOLUS_VOLUME_ML = 300 + _DEFAULT_MIN_DIALYSATE_TEMPERATURE_C = 35.0 + _DEFAULT_MAX_DIALYSATE_TEMPERATURE_C = 37.0 + _DEFAULT_MIN_ART_PRESS_LIMIT_WINDOW_MMHG = 120 + _DEFAULT_MAX_ART_PRESS_LIMIT_WINDOW_MMHG = 200 + _DEFAULT_MIN_VEN_PRESS_LIMIT_WINDOW_MMHG = 100 + _DEFAULT_MAX_VEN_PRESS_LIMIT_WINDOW_MMHG = 200 + _DEFAULT_MIN_VEN_ASYM_PRESS_LIMIT_WINDOW_MMHG = 20 + _DEFAULT_MAX_VEN_ASYM_PRESS_LIMIT_WINDOW_MMHG = 35 + _DEFAULT_MIN_UF_VOLUME_L = 0.0 + _DEFAULT_MAX_UF_VOLUME_L = 8.0 + _DEFAULT_MIN_HEPARIN_DISP_RATE_MLPHR = 0.0 + _DEFAULT_MAX_HEPARIN_DISP_RATE_MLPHR = 1.0 + _DEFAULT_MIN_HEPARIN_BOLUS_VOLUME_ML = 0.0 + _DEFAULT_MAX_HEPARIN_BOLUS_VOLUME_ML = 2.0 + _DEFAULT_ENABLE_CHEM_DISINFECT = 1 + + @param minBloodFlowMLPM: (int) Min blood flow in mL/min. + @param maxBloodFlowMLPM: (int) Max blood flow in mL/min. + @param minDialysateFlowMLPM: (int) Min dialysate flow in mL/min. + @param maxDialysateFlowMLPM: (int) Max dialysate flow in mL/min. + @param minTxDurationMIN: (int) Min treatment duration in minutes. + @param maxTxDurationMIN: (int) Max treatment duration in minutes. + @param minStopHeparinDispBeforeTxEndMIN: (int) Min stop heparin dispense before treatment end in minutes. + @param maxStopHeparinDispBeforeTxEndMIN: (int) Max stop heparin dispense before treatment end in minutes. + @param minSalineBolusVolumeML: (int) Min saline bolus volume in milliliters. + @param maxSalineBolusVolumeML: (int) Max saline bolus volume in milliliters. + @param minDialysateTempC: (float) Min dialysate temperature in C. + @param maxDialysateTempC: (float) Max dialysate temperature in C. + @param minArtPressLimitWindowMMHG: (int) Min arterial pressure limit window in mmHg. + @param maxArtPressLimitWindowMMHG: (int) Max arterial pressure limit window in mmHg. + @param minVenPressLimitWindowMMHG: (int) Min venous pressure limit window in mmHg. + @param maxVenPressLimitWindowMMHG: (int) Max venous pressure limit window in mmHg. + @param minVenAsymPressLimitMMHG: (int) Min venous asymmetric pressure limit in mmHg. + @param maxVenAsymPressLimitMMHG: (int) Max venous asymmetric pressure limit in mmHg. + @param minUFVolumeL: (float) Min ultrafiltration volume in mL. + @param maxUFVolumeL: (float) Max ultrafiltration volume in mL. + @param minHeparinDispRateMLPHR : (float) Min heparin dispense rate in mL/hr. + @param maxHeparinDispRateMLPHR: (float) Max heparin dispense rate in mL/hr. + @param minHeparinBolusVolumeML: (float) Min heparin bolus volume in mL. + @param maxHeparinBolusVolumeML: (float) Max heparin bolus volume in mL. + @param enableChemicalDisinfect: (int) Enable/disable chemical disinfect. + @return: None + """ + + payload = unsigned_integer_to_bytearray(minBloodFlowMLPM) + payload += unsigned_integer_to_bytearray(maxBloodFlowMLPM) + payload += unsigned_integer_to_bytearray(minDialysateFlowMLPM) + payload += unsigned_integer_to_bytearray(maxDialysateFlowMLPM) + payload += unsigned_integer_to_bytearray(minTxDurationMIN) + payload += unsigned_integer_to_bytearray(maxTxDurationMIN) + payload += unsigned_integer_to_bytearray(minStopHeparinDispBeforeTxEndMIN) + payload += unsigned_integer_to_bytearray(maxStopHeparinDispBeforeTxEndMIN) + payload += unsigned_integer_to_bytearray(minSalineBolusVolumeML) + payload += unsigned_integer_to_bytearray(maxSalineBolusVolumeML) + payload += float_to_bytearray(minDialysateTempC) + payload += float_to_bytearray(maxDialysateTempC) + payload += unsigned_integer_to_bytearray(minArtPressLimitWindowMMHG) + payload += unsigned_integer_to_bytearray(maxArtPressLimitWindowMMHG) + payload += unsigned_integer_to_bytearray(minVenPressLimitWindowMMHG) + payload += unsigned_integer_to_bytearray(maxVenPressLimitWindowMMHG) + payload += unsigned_integer_to_bytearray(minVenAsymPressLimitMMHG) + payload += unsigned_integer_to_bytearray(maxVenAsymPressLimitMMHG) + payload += float_to_bytearray(minUFVolumeL) + payload += float_to_bytearray(maxUFVolumeL) + payload += float_to_bytearray(minHeparinDispRateMLPHR) + payload += float_to_bytearray(maxHeparinDispRateMLPHR) + payload += float_to_bytearray(minHeparinBolusVolumeML) + payload += float_to_bytearray(maxHeparinBolusVolumeML) + payload += unsigned_integer_to_bytearray(enableChemicalDisinfect) + + + + message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, + message_id=MsgIds.MSG_ID_HD_INSTITUTIONAL_RECORD_RESPONSE.value, + payload=payload) + self.can_interface.send(message, 0) \ No newline at end of file