""" 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")