""" 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 self.can_interface.register_receiving_publication_function(channel_id, MsgIds.MSG_ID_UI_ADJUST_DISPOSABLES_REMOVAL_CONFIRM_REQUEST.value, self.handle_eject_request) self.can_interface.register_receiving_publication_function(channel_id, MsgIds.MSG_ID_UI_ADJUST_PATIENT_DISCONNECT_CONFIRM_REQUEST.value, self.handle_patient_disconnect_request) self.can_interface.register_receiving_publication_function(channel_id, MsgIds.MSG_ID_UI_ADJUST_TREATMENT_LOGS_REQUEST.value, self.handle_tx_logs_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.cbEjectAccepted = self.find_widget(QtWidgets.QCheckBox , 'cbEjectAccepted' ) self.lbAutoEject = self.find_widget(QtWidgets.QLabel , 'lbAutoEject' ) self.btnPatientDisconnectSend = self.find_widget(QtWidgets.QPushButton, 'btnPatientDisconnectSend' ) self.spnPatientDisconnectReasonSpinBox = self.find_widget(QtWidgets.QSpinBox , 'spnPatientDisconnectReasonSpinBox' ) self.cbPatientDisconnectAccepted = self.find_widget(QtWidgets.QCheckBox , 'cbPatientDisconnectAccepted' ) self.lbPatientDisconnect = self.find_widget(QtWidgets.QLabel , 'lbPatientDisconnect' ) self.lbTxLogs = self.find_widget(QtWidgets.QLabel , 'lbTxLogs' ) self.btnTxLogsSend = self.find_widget(QtWidgets.QPushButton, 'btnTxLogsSend' ) self.spnTxLogsReasonSpinBox = self.find_widget(QtWidgets.QSpinBox , 'spnTxLogsReasonSpinBox' ) self.cbTxLogsAccepted = self.find_widget(QtWidgets.QCheckBox , 'cbTxLogsAccepted' ) self.spnBloodFlow = self.find_widget(QtWidgets.QSpinBox , 'spnBloodFlow' ) self.spnBloodFlowActual = self.find_widget(QtWidgets.QSpinBox , 'spnBloodFlowActual' ) self.spnDialysateFlow = self.find_widget(QtWidgets.QSpinBox , 'spnDialysateFlow' ) self.spnDialysateFlowActual = self.find_widget(QtWidgets.QSpinBox , 'spnDialysateFlowActual' ) self.spnTreatmentDuration = self.find_widget(QtWidgets.QSpinBox , 'spnTreatmentDuration' ) self.spnTreatmentDurationActual = self.find_widget(QtWidgets.QSpinBox , 'spnTreatmentDurationActual' ) self.spnAcidConcentrate = self.find_widget(QtWidgets.QSpinBox , 'spnAcidConcentrate' ) self.spnAcidConcentrateActual = self.find_widget(QtWidgets.QSpinBox , 'spnAcidConcentrateActual' ) self.spnBicarbonateCartridgeSize = self.find_widget(QtWidgets.QSpinBox , 'spnBicarbonateCartridgeSize' ) self.spnBicarbonateCartridgeSizeActual = self.find_widget(QtWidgets.QSpinBox , 'spnBicarbonateCartridgeSizeActual' ) self.spnPotassiumConcentration = self.find_widget(QtWidgets.QSpinBox , 'spnPotassiumConcentration' ) self.spnPotassiumConcentrationActual = self.find_widget(QtWidgets.QSpinBox , 'spnPotassiumConcentrationActual' ) self.spnCalciumConcentration = self.find_widget(QtWidgets.QSpinBox , 'spnCalciumConcentration' ) self.spnCalciumConcentrationActual = self.find_widget(QtWidgets.QSpinBox , 'spnCalciumConcentrationActual' ) self.spnBicarbonateConcentration = self.find_widget(QtWidgets.QSpinBox , 'spnBicarbonateConcentration' ) self.spnBicarbonateConcentrationActual = self.find_widget(QtWidgets.QSpinBox , 'spnBicarbonateConcentrationActual' ) self.spnSodiumConcentration = self.find_widget(QtWidgets.QSpinBox , 'spnSodiumConcentration' ) self.spnSodiumConcentrationActual = self.find_widget(QtWidgets.QSpinBox , 'spnSodiumConcentrationActual' ) self.spnVitalsInterval = self.find_widget(QtWidgets.QSpinBox , 'spnVitalsInterval' ) self.spnVitalsIntervalActual = self.find_widget(QtWidgets.QSpinBox , 'spnVitalsIntervalActual' ) self.spnDialyzerType = self.find_widget(QtWidgets.QSpinBox , 'spnDialyzerType' ) self.spnTreatmentStart = self.find_widget(QtWidgets.QSpinBox , 'spnTreatmentStart' ) self.spnTreatmentEnd = self.find_widget(QtWidgets.QSpinBox , 'spnTreatmentEnd' ) self.spnFluidBolusVolume = self.find_widget(QtWidgets.QSpinBox , 'spnFluidBolusVolume' ) self.spnFluidBolusVolumeActual = self.find_widget(QtWidgets.QSpinBox , 'spnFluidBolusVolumeActual' ) self.spnHeparinType = self.find_widget(QtWidgets.QSpinBox , 'spnHeparinType' ) self.spnHeparinDeliveryDuration = self.find_widget(QtWidgets.QSpinBox , 'spnHeparinDeliveryDuration' ) self.spnHeparinDeliveryDurationActual = self.find_widget(QtWidgets.QSpinBox , 'spnHeparinDeliveryDurationActual' ) self.spnTreatmentModality = self.find_widget(QtWidgets.QSpinBox , 'spnTreatmentModality' ) self.spnTreatmentModalityActual = self.find_widget(QtWidgets.QSpinBox , 'spnTreatmentModalityActual' ) self.spnHDFOperationMode = self.find_widget(QtWidgets.QSpinBox , 'spnHDFOperationMode' ) self.spnHDFOperationModeActual = self.find_widget(QtWidgets.QSpinBox , 'spnHDFOperationModeActual' ) self.spnHepatitisStatus = self.find_widget(QtWidgets.QSpinBox , 'spnHepatitisStatus' ) self.spnDialysateTemperature = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnDialysateTemperature' ) self.spnDialysateTemperatureActual = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnDialysateTemperatureActual' ) self.spnDialysateVolumeUsed = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnDialysateVolumeUsed' ) self.spnHeparinBolusVolume = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnHeparinBolusVolume' ) self.spnHeparinBolusVolumeActual = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnHeparinBolusVolumeActual' ) self.spnHeparinDispensingRate = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnHeparinDispensingRate' ) self.spnHeparinDispensingRateActual = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnHeparinDispensingRateActual' ) self.spnHeparinDeliveredVolume = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnHeparinDeliveredVolume' ) self.spnUFVolume = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnUFVolume' ) self.spnUFVolumeActual = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnUFVolumeActual' ) self.spnUFVolumeTarget = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnUFVolumeTarget' ) self.spnUFRate = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnUFRate' ) self.spnUFRateActual = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnUFRateActual' ) self.spnUFRateTarget = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnUFRateTarget' ) self.spnSubstitutionVolume = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnSubstitutionVolume' ) self.spnSubstitutionActual = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnSubstitutionActual' ) self.spnSubstitutionVolumeTarget = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnSubstitutionVolumeTarget' ) self.spnSubstitutionRate = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnSubstitutionRate' ) self.spnSubstitutionRateActual = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnSubstitutionRateActual' ) self.spnSubstitutionRateTarget = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnSubstitutionRateTarget' ) self.spnIsoUFVolume = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnIsoUFVolume' ) self.spnIsoUFVolumeActual = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnIsoUFVolumeActual' ) self.spnIsoUFVolumeTarget = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnIsoUFVolumeTarget' ) self.spnIsoUFRate = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnIsoUFRate' ) self.spnIsoUFRateActual = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnIsoUFRateActual' ) self.spnIsoUFRateTarget = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnIsoUFRateTarget' ) self.spnWaterSampleResult = self.find_widget(QtWidgets.QDoubleSpinBox , 'spnWaterSampleResult' ) def _init_connections(self): """ initializes the widgets connections :return: none """ self.btnAutoEject .clicked.connect(self.do_auto_eject ) self.btnPatientDisconnectSend .clicked.connect(self.do_patient_disconnect ) self.btnTxLogsSend .clicked.connect(self.do_treatment_logs ) def _init_widgets(self): """ initializes the widgets' properties :return: none """ self.spnAutoEjectRejectReason .setValue(0) self.spnBloodFlow .setValue(0) self.spnBloodFlowActual .setValue(0) self.spnDialysateFlow .setValue(0) self.spnDialysateFlowActual .setValue(0) self.spnTreatmentDuration .setValue(0) self.spnTreatmentDurationActual .setValue(0) self.spnAcidConcentrate .setValue(0) self.spnAcidConcentrateActual .setValue(0) self.spnBicarbonateCartridgeSize .setValue(0) self.spnBicarbonateCartridgeSizeActual .setValue(0) self.spnPotassiumConcentration .setValue(0) self.spnPotassiumConcentrationActual .setValue(0) self.spnCalciumConcentration .setValue(0) self.spnCalciumConcentrationActual .setValue(0) self.spnBicarbonateConcentration .setValue(0) self.spnBicarbonateConcentrationActual .setValue(0) self.spnSodiumConcentration .setValue(0) self.spnSodiumConcentrationActual .setValue(0) self.spnVitalsInterval .setValue(0) self.spnVitalsIntervalActual .setValue(0) self.spnDialyzerType .setValue(0) self.spnTreatmentStart .setValue(0) self.spnTreatmentEnd .setValue(0) self.spnFluidBolusVolume .setValue(0) self.spnFluidBolusVolumeActual .setValue(0) self.spnHeparinType .setValue(0) self.spnHeparinDeliveryDuration .setValue(0) self.spnHeparinDeliveryDurationActual .setValue(0) self.spnTreatmentModality .setValue(0) self.spnTreatmentModalityActual .setValue(0) self.spnHDFOperationMode .setValue(0) self.spnHDFOperationModeActual .setValue(0) self.spnHepatitisStatus .setValue(0) self.spnDialysateTemperature .setValue(0) self.spnDialysateTemperatureActual .setValue(0) self.spnDialysateVolumeUsed .setValue(0) self.spnHeparinBolusVolume .setValue(0) self.spnHeparinBolusVolumeActual .setValue(0) self.spnHeparinDispensingRate .setValue(0) self.spnHeparinDispensingRateActual .setValue(0) self.spnHeparinDeliveredVolume .setValue(0) self.spnUFVolume .setValue(0) self.spnUFVolumeActual .setValue(0) self.spnUFVolumeTarget .setValue(0) self.spnUFRate .setValue(0) self.spnUFRateActual .setValue(0) self.spnUFRateTarget .setValue(0) self.spnSubstitutionVolume .setValue(0) self.spnSubstitutionActual .setValue(0) self.spnSubstitutionVolumeTarget .setValue(0) self.spnSubstitutionRate .setValue(0) self.spnSubstitutionRateActual .setValue(0) self.spnSubstitutionRateTarget .setValue(0) self.spnIsoUFVolume .setValue(0) self.spnIsoUFVolumeActual .setValue(0) self.spnIsoUFVolumeTarget .setValue(0) self.spnIsoUFRate .setValue(0) self.spnIsoUFRateActual .setValue(0) self.spnIsoUFRateTarget .setValue(0) self.spnWaterSampleResult .setValue(0) @Slot() def do_auto_eject(self): accepted = self.cbEjectAccepted .isChecked() reason = self.spnAutoEjectRejectReason .value() self.td_interface.td_blood_set_auto_eject_response(accepted, 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") @Slot() def do_patient_disconnect(self): accepted = self.cbPatientDisconnectAccepted .isChecked() reason = self.spnPatientDisconnectReasonSpinBox .value() self.td_interface.td_patient_disconnect_confirm_response(accepted, reason) self.lbPatientDisconnect.setText("-") @Slot() def handle_patient_disconnect_request(self, message, timestamp = 0.0): """ Called when the user requests to firmware from UI @return: None """ self.lbPatientDisconnect.setText("Requested") @Slot() def do_treatment_logs(self): self.lbTxLogs.setText("-") self.td_interface.td_post_tx_logs_response( self.cbTxLogsAccepted .isChecked(), self.spnTxLogsReasonSpinBox .value(), self.spnBloodFlow .value(), # vBloodFlowRate self.spnBloodFlowActual .value(), # vBloodFlowRateActual self.spnDialysateFlow .value(), # vDialysateFlowRate self.spnDialysateFlowActual .value(), # vDialysateFlowRateActual self.spnTreatmentDuration .value(), # vTreatmentDuration self.spnTreatmentDurationActual .value(), # vTreatmentDurationActual self.spnAcidConcentrate .value(), # vAcidConcentrateType self.spnAcidConcentrateActual .value(), # vAcidConcentrateTypeActual self.spnBicarbonateCartridgeSize .value(), # vBicarbonateCartridgeSize self.spnBicarbonateCartridgeSizeActual .value(), # vBicarbonateCartridgeSizeActual self.spnPotassiumConcentration .value(), # vPotassiumConcentration self.spnPotassiumConcentrationActual .value(), # vPotassiumConcentrationActual self.spnCalciumConcentration .value(), # vCalciumConcentration self.spnCalciumConcentrationActual .value(), # vCalciumConcentrationActual self.spnBicarbonateConcentration .value(), # vBicarbonateConcentration self.spnBicarbonateConcentrationActual .value(), # vBicarbonateConcentrationActual self.spnSodiumConcentration .value(), # vSodiumConcentration self.spnSodiumConcentrationActual .value(), # vSodiumConcentrationActual self.spnVitalsInterval .value(), # vVitalsInterval self.spnVitalsIntervalActual .value(), # vVitalsIntervalActual self.spnDialyzerType .value(), # vDialyzerType self.spnTreatmentStart .value(), # vTreatmentStartEpoch self.spnTreatmentEnd .value(), # vTreatmentEndEpoch self.spnFluidBolusVolume .value(), # vFluidBolusVolume self.spnFluidBolusVolumeActual .value(), # vFluidBolusVolumeActual self.spnHeparinType .value(), # vHeparinType self.spnHeparinDeliveryDuration .value(), # vHeparinDeliveryDuration self.spnHeparinDeliveryDurationActual .value(), # vHeparinDeliveryDurationActual self.spnTreatmentModality .value(), # vTreatmentModality self.spnTreatmentModalityActual .value(), # vTreatmentModalityActual self.spnHDFOperationMode .value(), # vHDFOperatingMode self.spnHDFOperationModeActual .value(), # vHDFOperatingModeActual self.spnHepatitisStatus .value(), # vHepatitisStatus self.spnDialysateTemperature .value(), # vDialysateTemperature self.spnDialysateTemperatureActual .value(), # vDialysateTemperatureActual self.spnDialysateVolumeUsed .value(), # vDialysateVolumeUsed self.spnHeparinBolusVolume .value(), # vHeparinBolusVolume self.spnHeparinBolusVolumeActual .value(), # vHeparinBolusVolumeActual self.spnHeparinDispensingRate .value(), # vHeparinDispenseRate self.spnHeparinDispensingRateActual .value(), # vHeparinDispenseRateActual self.spnHeparinDeliveredVolume .value(), # vHeparinDeliveredVolume self.spnUFVolume .value(), # vUFVolume self.spnUFVolumeActual .value(), # vUFVolumeActual self.spnUFVolumeTarget .value(), # vUFVolumeTarget self.spnUFRate .value(), # vUFRate self.spnUFRateActual .value(), # vUFRateActual self.spnUFRateTarget .value(), # vUFRateTarget self.spnSubstitutionVolume .value(), # vSubstitutionVolume self.spnSubstitutionActual .value(), # vSubstitutionVolumeActual self.spnSubstitutionVolumeTarget .value(), # vSubstitutionVolumeTarget self.spnSubstitutionRate .value(), # vSubstitutionRate self.spnSubstitutionRateActual .value(), # vSubstitutionRateActual self.spnSubstitutionRateTarget .value(), # vSubstitutionRateTarget self.spnIsoUFVolume .value(), # vIsoUfVolume self.spnIsoUFVolumeActual .value(), # vIsoUfVolumeActual self.spnIsoUFVolumeTarget .value(), # vIsoUfVolumeTarget self.spnIsoUFRate .value(), # vIsoUfRate self.spnIsoUFRateActual .value(), # vIsoUfRateActual self.spnIsoUFRateTarget .value(), # vIsoUfRateTarget self.spnWaterSampleResult .value()) # vWaterSampleTestResult @Slot() def handle_tx_logs_request(self, message, timestamp = 0.0): """ Called when the user requests to firmware from UI @return: None """ self.lbTxLogs.setText("Requested")