Fisheye: Tag e7b0bdd0190ebfcee1681e7c8320e923b8ac9f0d refers to a dead (removed) revision in file `TD_Bloodset_Auto__Load_Eject/interface.ui'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag e7b0bdd0190ebfcee1681e7c8320e923b8ac9f0d refers to a dead (removed) revision in file `TD_Bloodset_Auto__Load_Eject/loader.py'. Fisheye: No comparison available. Pass `N' to diff? Index: TD_Post_Treatment/interface.ui =================================================================== diff -u --- TD_Post_Treatment/interface.ui (revision 0) +++ TD_Post_Treatment/interface.ui (revision e7b0bdd0190ebfcee1681e7c8320e923b8ac9f0d) @@ -0,0 +1,178 @@ + + + ui_interface + + + + 0 + 0 + 545 + 90 + + + + + 100000 + 100000 + + + + &A Post Treatment/&1 Post Treatment + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 100 + 0 + + + + false + + + QFrame::WinPanel + + + QFrame::Sunken + + + - + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + Reason + + + + + + + 900 + + + + + + + + 100 + 16777215 + + + + Send + + + + + + + + 10 + + + + color: rgb(238, 238, 236); +background-color:rgb(173, 127, 168) + + + Post-Treatment + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 352 + 0 + + + + + 16777215 + 16777215 + + + + + 10 + + + + color: rgb(238, 238, 236); +background-color: rgb(92, 53, 102); + + + + 148 : [0x9400] : Auto Eject + + + Qt::AlignCenter + + + + + + + + + + Index: TD_Post_Treatment/loader.py =================================================================== diff -u --- TD_Post_Treatment/loader.py (revision 0) +++ TD_Post_Treatment/loader.py (revision e7b0bdd0190ebfcee1681e7c8320e923b8ac9f0d) @@ -0,0 +1,79 @@ +""" + The Bloodset auto load/eject loader +""" +# Python +import os +import can +import struct + +# Qt +from PySide2 import QtCore, QtWidgets +from PySide2.QtCore import Slot + +# parent +from engine.dynamicloader import DynamicLoader + +# plugin specific +from leahi_dialin.common.msg_defs import MsgIds +from leahi_dialin.protocols import CAN + +# hd Simulator +from leahi_dialin.ui.td_messaging import TD_Messaging + +class Loader(DynamicLoader): + """ + The ui loader class + + """ + + def __init__(self): + self.td_interface = TD_Messaging() + self.can_interface = self.td_interface.can_interface + super().__init__(os.path.dirname(__file__)) + + if self.can_interface is not None: + channel_id = CAN.DenaliChannels.ui_to_td_ch_id + eject_request_message_id = MsgIds.MSG_ID_UI_ADJUST_DISPOSABLES_REMOVAL_CONFIRM_REQUEST.value + self.can_interface.register_receiving_publication_function(channel_id, + eject_request_message_id, + self.handle_eject_request) + + def _init_loader(self): + """ + finds and creates widgets + :return: none + """ + self.btnAutoEject = self.find_widget(QtWidgets.QPushButton, 'btnAutoEjectSend' ) + self.spnAutoEjectRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnEjectReasonSpinBox' ) + self.lbAutoEject = self.find_widget(QtWidgets.QLabel , 'lbAutoEject' ) + + + def _init_connections(self): + """ + initializes the widgets connections + :return: none + """ + self.btnAutoEject .clicked.connect(self.do_auto_eject) + + def _init_widgets(self): + """ + initializes the widgets' properties + :return: none + """ + self.spnAutoEjectRejectReason .setValue(0) + + + @Slot() + def do_auto_eject(self): + reason = self.spnAutoEjectRejectReason.value() + self.td_interface.td_blood_set_auto_eject_response(reason) + self.lbAutoEject.setText("-") + + @Slot() + def handle_eject_request(self, message, timestamp = 0.0): + """ + Called when the user requests to firmware from UI + @return: None + """ + self.lbAutoEject.setText("Requested") + Index: TD_Pre_Treatment/interface.ui =================================================================== diff -u --- TD_Pre_Treatment/interface.ui (revision 0) +++ TD_Pre_Treatment/interface.ui (revision e7b0bdd0190ebfcee1681e7c8320e923b8ac9f0d) @@ -0,0 +1,1019 @@ + + + ui_interface + + + + 0 + 0 + 754 + 561 + + + + &2 Pre-Treatment/&1 Pre-Treatment + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Reason + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 100 + 16777215 + + + + Validate + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + Blood Flow Rate + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Dialysate Flow Rate + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Treatment Duration + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Saline Bolus Volume + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Heparin Stop Time + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Heparin Type + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Acid Concentrate + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Bicarbonate Concentrate + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Dialyzer Type + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Blood Pressure Measure Interval + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + + + + + Rinseback Flow Rate + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Rinseback Volume + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Arterial Pressure Limit Window + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Venous Pressure Limit Window + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Venous Pressure Limit Asymtrc + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Trancemembrance Pressure Limit Window + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Dialysate Temp + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Heparin Dispensing Rate + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Heparin Bolus Volume + + + + + + + + 100 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + + + + + + + + + + 50 + 16777215 + + + + 900 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 100 + 16777215 + + + + Send + + + + + + + + 0 + 0 + + + + Reason + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + false + + + QFrame::WinPanel + + + QFrame::Sunken + + + - + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 0 + 0 + + + + + 352 + 0 + + + + + 16777215 + 16777215 + + + + + 10 + + + + color: rgb(238, 238, 236); +background-color: rgb(92, 53, 102); + + + + 146 : [0x9200] : Auto Load + + + Qt::AlignCenter + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Standby + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + false + + + QFrame::WinPanel + + + QFrame::Sunken + + + - + + + Qt::AlignCenter + + + + + + + Pre-Treatment + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 10 + + + + color: rgb(238, 238, 236); +background-color:rgb(173, 127, 168) + + + 69 :[0x4500] Pre-Treatment + + + Qt::AlignCenter + + + + + + + + 10 + + + + color: rgb(238, 238, 236); +background-color:rgb(173, 127, 168) + + + Start Treatment + + + Qt::AlignCenter + + + + + + + + 10 + + + + color: rgb(238, 238, 236); +background-color:rgb(173, 127, 168) + + + 53:[0x3500] Create Rx + + + Qt::AlignCenter + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Start Treatment + + + + + + + + 0 + 0 + + + + false + + + QFrame::WinPanel + + + QFrame::Sunken + + + - + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 50 + 16777215 + + + + -2147483647 + + + 2147483647 + + + 3 + + + + + + + Reason + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + btnValidate + + + + Index: TD_Pre_Treatment/loader.py =================================================================== diff -u --- TD_Pre_Treatment/loader.py (revision 0) +++ TD_Pre_Treatment/loader.py (revision e7b0bdd0190ebfcee1681e7c8320e923b8ac9f0d) @@ -0,0 +1,246 @@ +""" +The ui loader class +""" +# Python +import os + +# Qt +from PySide2 import QtWidgets +from PySide2.QtCore import Slot + +# parent +from engine.dynamicloader import DynamicLoader + +# plugin specific + +# dialin +from leahi_dialin.ui.td_messaging import TD_Messaging +from leahi_dialin.common.td_defs import TDOpModes +from leahi_dialin.common.td_defs import TDStandbyStates +from leahi_dialin.protocols import CAN +from leahi_dialin.common.msg_defs import MsgIds + +class Loader(DynamicLoader): + """ + The ui loader class + """ + + def __init__(self): + self.td_interface = TD_Messaging() + self.can_interface = self.td_interface.can_interface + super().__init__(os.path.dirname(__file__)) + + + if self.can_interface is not None: + channel_id = CAN.DenaliChannels.ui_to_td_ch_id + create_tx_request_message_id = MsgIds.MSG_ID_UI_INITIATE_TREATMENT_WORKFLOW.value + self.can_interface.register_receiving_publication_function(channel_id, + create_tx_request_message_id, + self.handle_create_tx_request) + load_request_message_id = MsgIds.MSG_ID_UI_ADJUST_DISPOSABLES_CONFIRM_REQUEST.value + self.can_interface.register_receiving_publication_function(channel_id, + load_request_message_id, + self.handle_load_request) + start_tx_request_message_id = MsgIds.MSG_ID_UI_ADJUST_START_TREATMENT_REQUEST.value + self.can_interface.register_receiving_publication_function(channel_id, + start_tx_request_message_id, + self.handle_start_tx_request) + + def _init_loader(self): + """ + finds and creates widgets + :return: none + """ + self.btnStandby = self.find_widget(QtWidgets.QPushButton, 'btnStandby' ) + self.btnCreate_tx = self.find_widget(QtWidgets.QPushButton, 'btnCreate' ) + self.btnCreateReset = self.find_widget(QtWidgets.QToolButton, 'btnCreateReset' ) + self.btnValidate = self.find_widget(QtWidgets.QPushButton, 'btnValidate' ) + self.btnValidateReset = self.find_widget(QtWidgets.QToolButton, 'btnValidateReset' ) + self.btnStartTreatment = self.find_widget(QtWidgets.QPushButton, 'btnConfirm' ) + self.btnAutoLoad = self.find_widget(QtWidgets.QPushButton, 'btnAutoLoadSend' ) + + self.spnCreateRxRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnCreateRxRejectReason' ) + self.spnAutoLoadRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnLoadReasonSpinBox' ) + self.spnStartTxRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnStartTreatmentRejectReason' ) + + self.lbAutoLoad = self.find_widget(QtWidgets.QLabel , 'lbAutoLoad' ) + self.lbStartTreatment = self.find_widget(QtWidgets.QLabel , 'lbStartTreatment' ) + self.lbCreateTx = self.find_widget(QtWidgets.QLabel , 'lbCreateTx' ) + + self.spnBloodFlowRateRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnBloodFlowRateRejectReason' ) + self.spnDialysateFlowRateRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnDialysateFlowRateRejectReason' ) + self.spnTreatmentDurationRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnTreatmentDurationRejectReason' ) + self.spnSalineBolusVolumeRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnSalineBolusVolumeRejectReason' ) + self.spnHeparinStopTimeRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnHeparinStopTimeRejectReason' ) + self.spnHeparinTypeRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnHeparinTypeRejectReason' ) + self.spnAcidConcentrateRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnAcidConcentrateRejectReason' ) + self.spnBicarbonateConcentrateRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnBicarbonateConcentrateRejectReason' ) + self.spnDialyzerTypeRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnDialyzerTypeRejectReason' ) + self.spnBloodPressureMeasureIntervalRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnBloodPressureMeasureIntervalRejectReason' ) + self.spnRinsebackFlowRateRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnRinsebackFlowRateRejectReason' ) + self.spnRinsebackVolumeRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnRinsebackVolumeRejectReason' ) + self.spnArterialPressureLimitWindowRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnArterialPressureLimitWindowRejectReason' ) + self.spnVenousPressureLimitWindowRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnVenousPressureLimitWindowRejectReason' ) + self.spnVenousPressureLimitAsymtrcRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnVenousPressureLimitAsymtrcRejectReason' ) + self.spnTrancembrncPressureLimitWindowRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnTrancembrncPressureLimitWindowRejectReason' ) + self.spnDialysateTempRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnDialysateTempRejectReason' ) + self.spnHeparinDispensingRateRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnHeparinDispensingRateRejectReason' ) + self.spnHeparinBolusVolumeRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnHeparinBolusVolumeRejectReason' ) + + def _init_widgets(self): + """ + initializes the widgets' properties + :return: none + """ + self.do_validateReset() + self.spnCreateRxRejectReason.setValue(0) + self.spnAutoLoadRejectReason.setValue(0) + self.spnStartTxRejectReason .setValue(0) + + def _init_connections(self): + """ + initializes the widgets connections + :return: + """ + self.btnStandby .clicked.connect(self.do_standby ) + self.btnCreate_tx .clicked.connect(self.do_create_tx ) + self.btnCreateReset .clicked.connect(self.do_createReset ) + self.btnValidate .clicked.connect(self.do_validate ) + self.btnValidateReset .clicked.connect(self.do_validateReset ) + self.btnStartTreatment .clicked.connect(self.do_start ) + self.btnAutoLoad .clicked.connect(self.do_auto_load ) + + @Slot() + def do_standby(self): + self.td_interface.td_operation_mode( + TDOpModes.MODE_STAN.value, + TDStandbyStates.STANDBY_WAIT_FOR_TREATMENT_STATE.value + ) + + @Slot() + def do_create_tx(self): + self.lbCreateTx.setText("-") + if self.spnCreateRxRejectReason.value() == 0 : + self.td_interface.td_Treatment_Parameters_CreateRx (0) + self.td_interface.td_operation_mode( + TDOpModes.MODE_PRET.value, + TDStandbyStates.STANDBY_WAIT_FOR_TREATMENT_STATE.value + ) + else: + self.td_interface.td_Treatment_Parameters_CreateRx (self.spnCreateRxRejectReason.value()) + + @Slot() + def do_createReset(self): + self.spnCreateRxRejectReason.setValue(0) + self.lbCreateTx.setText("-") + + @Slot() + def do_start(self): + self.td_interface.td_operation_mode( + TDOpModes.MODE_TREA.value, + TDStandbyStates.STANDBY_WAIT_FOR_TREATMENT_STATE.value + ) + self.lbStartTreatment.setText("-") + + @Slot() + def do_auto_load(self): + reason = self.spnAutoLoadRejectReason.value() + self.td_interface.td_blood_set_auto_load_response(reason) + self.lbAutoLoad.setText("-") + + @Slot() + def do_validate(self): + """ + send the validation response message + :return: none + """ + accepted = ( + self.spnBloodFlowRateRejectReason .value() + + self.spnDialysateFlowRateRejectReason .value() + + self.spnTreatmentDurationRejectReason .value() + + self.spnSalineBolusVolumeRejectReason .value() + + self.spnHeparinStopTimeRejectReason .value() + + self.spnHeparinTypeRejectReason .value() + + self.spnAcidConcentrateRejectReason .value() + + self.spnBicarbonateConcentrateRejectReason .value() + + self.spnDialyzerTypeRejectReason .value() + + self.spnBloodPressureMeasureIntervalRejectReason .value() + + self.spnRinsebackFlowRateRejectReason .value() + + self.spnRinsebackVolumeRejectReason .value() + + self.spnArterialPressureLimitWindowRejectReason .value() + + self.spnVenousPressureLimitWindowRejectReason .value() + + self.spnVenousPressureLimitAsymtrcRejectReason .value() + + self.spnTransmembranePressureLimitWindowRejectReason.value() + + self.spnDialysateTempRejectReason .value() + + self.spnHeparinDispensingRateRejectReason .value() + + self.spnHeparinBolusVolumeRejectReason .value() + ) == 0 + + self.td_interface.td_Treatment_Parameters_Validation( + 1 if accepted else 0, + self.spnBloodFlowRateRejectReason .value(), + self.spnDialysateFlowRateRejectReason .value(), + self.spnTreatmentDurationRejectReason .value(), + self.spnSalineBolusVolumeRejectReason .value(), + self.spnHeparinStopTimeRejectReason .value(), + self.spnHeparinTypeRejectReason .value(), + self.spnAcidConcentrateRejectReason .value(), + self.spnBicarbonateConcentrateRejectReason .value(), + self.spnDialyzerTypeRejectReason .value(), + self.spnBloodPressureMeasureIntervalRejectReason .value(), + self.spnRinsebackFlowRateRejectReason .value(), + self.spnRinsebackVolumeRejectReason .value(), + self.spnArterialPressureLimitWindowRejectReason .value(), + self.spnVenousPressureLimitWindowRejectReason .value(), + self.spnVenousPressureLimitAsymtrcRejectReason .value(), + self.spnTransmembranePressureLimitWindowRejectReason.value(), + self.spnDialysateTempRejectReason .value(), + self.spnHeparinDispensingRateRejectReason .value(), + self.spnHeparinBolusVolumeRejectReason .value() + ) + + @Slot() + def do_validateReset(self): + self.spnBloodFlowRateRejectReason .setValue(0) + self.spnDialysateFlowRateRejectReason .setValue(0) + self.spnTreatmentDurationRejectReason .setValue(0) + self.spnSalineBolusVolumeRejectReason .setValue(0) + self.spnHeparinStopTimeRejectReason .setValue(0) + self.spnHeparinTypeRejectReason .setValue(0) + self.spnAcidConcentrateRejectReason .setValue(0) + self.spnBicarbonateConcentrateRejectReason .setValue(0) + self.spnDialyzerTypeRejectReason .setValue(0) + self.spnBloodPressureMeasureIntervalRejectReason .setValue(0) + self.spnRinsebackFlowRateRejectReason .setValue(0) + self.spnRinsebackVolumeRejectReason .setValue(0) + self.spnArterialPressureLimitWindowRejectReason .setValue(0) + self.spnVenousPressureLimitWindowRejectReason .setValue(0) + self.spnVenousPressureLimitAsymtrcRejectReason .setValue(0) + self.spnTransmembranePressureLimitWindowRejectReason.setValue(0) + self.spnDialysateTempRejectReason .setValue(0) + self.spnHeparinDispensingRateRejectReason .setValue(0) + self.spnHeparinBolusVolumeRejectReason .setValue(0) + + @Slot() + def handle_load_request(self, message, timestamp = 0.0): + """ + Called when the user requests to firmware from UI + @return: None + """ + self.lbAutoLoad.setText("Requested") + + @Slot() + def handle_create_tx_request(self, message, timestamp = 0.0): + """ + Called when the user requests to firmware from UI + @return: None + """ + self.lbCreateTx.setText("Create Tx Requested") + + @Slot() + def handle_start_tx_request(self, message, timestamp = 0.0): + """ + Called when the user requests to firmware from UI + @return: None + """ + self.lbStartTreatment.setText("Start Tx Requested") Fisheye: Tag e7b0bdd0190ebfcee1681e7c8320e923b8ac9f0d refers to a dead (removed) revision in file `TreatmentParameters/interface.ui'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag e7b0bdd0190ebfcee1681e7c8320e923b8ac9f0d refers to a dead (removed) revision in file `TreatmentParameters/loader.py'. Fisheye: No comparison available. Pass `N' to diff?