Index: leahi_dialin/ui/td_messaging.py =================================================================== diff -u -r1f2bf6d939eb4033dbedb7d7005494cc12fccbc6 -r6c90336ac2cd8cf34ac620cff431a847d9ddf557 --- leahi_dialin/ui/td_messaging.py (.../td_messaging.py) (revision 1f2bf6d939eb4033dbedb7d7005494cc12fccbc6) +++ leahi_dialin/ui/td_messaging.py (.../td_messaging.py) (revision 6c90336ac2cd8cf34ac620cff431a847d9ddf557) @@ -349,8 +349,10 @@ H2_arterial_long : float , H14_venous_long : float , tmp_pressure : float , + tmp_long : float , tmp_min : float , - tmp_max : float ): + tmp_max : float , + barometric : float ): """ Broadcasts the current TD Pressures data (Msg ID: 0x24, 36) Args: @@ -364,8 +366,10 @@ @param H2_arterial_long (float) : Arterial Long @param H14_venous_long (float) : Venous Long @param tmp_pressure (float) : TMP pressure + @param tmp_long (float) : TMP long @param tmp_min (float) : TMP minimum @param tmp_max (float) : TMP maximum + @param barometric (float) : barometric @return: None """ if not self.can_enabled: @@ -382,8 +386,10 @@ payload += conversions.float_to_bytearray (H2_arterial_long ) payload += conversions.float_to_bytearray (H14_venous_long ) payload += conversions.float_to_bytearray (tmp_pressure ) + payload += conversions.float_to_bytearray (tmp_long ) payload += conversions.float_to_bytearray (tmp_min ) payload += conversions.float_to_bytearray (tmp_max ) + payload += conversions.float_to_bytearray (barometric ) message = CAN.CanMessage.build_message( channel_id=CAN.CanChannels.td_sync_broadcast_ch_id, @@ -557,6 +563,50 @@ self.can_interface.send(message, 0) + + def td_water_sample( self, valve : int , + timeout : int ): + """ + Broadcasts the current TD Water Sample data (Msg ID: 0xAB) + Args: + @param valve (int) : water sample valve that is openend + @param timeout (int) : water sample timeout + @return: None + """ + if not self.can_enabled: + raise ValueError("CAN Interface is not enabled") + + + payload = conversions.unsigned_integer_to_bytearray (valve ) + payload += conversions.unsigned_integer_to_bytearray (timeout ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_sync_broadcast_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_WATER_SAMPLE_DATA.value, + payload=payload) + self.can_interface.send(message, 0) + + + def td_water_sample_result_response(self, vAccepted : int , + vRejectionReason : int , + vValue : float ): + """ + the water sample result response message method(Msg ID: 0xXX, XXX) + Args: + None + @return: None + """ + payload = conversions.integer_to_bytearray (vAccepted ) + payload += conversions.integer_to_bytearray (vRejectionReason) + payload += conversions.float_to_bytearray (vValue ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_to_ui_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_WATER_SAMPLE_RESULT_RESPONSE.value, + payload=payload) + self.can_interface.send(message, 0) + + def td_param_ranges(self, min_tx_time_s : int, max_tx_time_s : int, @@ -887,6 +937,7 @@ payload=payload) self.can_interface.send(message, 0) + def td_institutional_response(self, vRejectionReason : int, vBloodFlowMin : int, vBloodFlowMax : int, @@ -1346,21 +1397,27 @@ payload=payload) self.can_interface.send(message, 0) - def td_duration_validate_response(self, vRejectionReason: int, vDuration: int, vUFVolume: float, vUFRate: float): + def td_duration_validate_response(self, vRejectionReason: int, + vDuration: int, + vHeparinDuration: int, + vUFVolume: float, + vUFRate: float): """ the duration validate response message method(Msg ID: 0x84, 132) Args: @param vRejectionReason (int) : response rejection reason, if rejection reason is 0, then accepted (0) will be sent, otherwise rejected (1) @param vDuration (int) : treatment duration (min) - @param vUFVolume (float) : UF volume goal (mL) - @param vUFRate (float) : UF rate (L/hr) + @param vHeparinDuration (int) : heparin duration (min) + @param vUFVolume (float) : UF volume goal (L) + @param vUFRate (float) : UF rate (L/hr) @return: None """ payload = conversions.integer_to_bytearray(1 if vRejectionReason == 0 else 0 ) payload += conversions.integer_to_bytearray(vRejectionReason ) payload += conversions.integer_to_bytearray(vDuration ) + payload += conversions.integer_to_bytearray(vHeparinDuration ) payload += conversions.float_to_bytearray(vUFVolume ) payload += conversions.float_to_bytearray(vUFRate ) @@ -1496,14 +1553,14 @@ payload=payload) self.can_interface.send(message, 0) - def td_blood_set_auto_eject_response(self,vRejectionReason: int): + def td_blood_set_auto_eject_response(self, vAccepted: int, vRejectionReason: int): """ - the heparin adjustment response message method(Msg ID: 0xXX, XXX) + the blood set aito eject response message method(Msg ID: 0xXX, XXX) Args: None @return: None """ - payload = conversions.integer_to_bytearray(1 if vRejectionReason == 0 else 0) + payload = conversions.integer_to_bytearray(vAccepted) payload += conversions.integer_to_bytearray(vRejectionReason) message = CAN.CanMessage.build_message( @@ -1512,6 +1569,84 @@ payload=payload) self.can_interface.send(message, 0) + + def td_pressures_adjustment_response(self, vAccepted : int, + vArterialWindowRejectReason : int, + vVenousWindowRejectReason : int, + vVenousAsymmetricRejectReason: int, + vTmpWindowRejectReason : int): + """ + the pressures adjustment response message method(Msg ID: 0x73, 115) + Args: + None + @return: None + """ + payload = conversions.integer_to_bytearray(vAccepted ) + payload += conversions.integer_to_bytearray(vArterialWindowRejectReason ) + payload += conversions.integer_to_bytearray(vVenousWindowRejectReason ) + payload += conversions.integer_to_bytearray(vVenousAsymmetricRejectReason ) + payload += conversions.integer_to_bytearray(vTmpWindowRejectReason ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_to_ui_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_PRESSURE_LIMITS_CHANGE_RESPONSE.value, + payload=payload) + self.can_interface.send(message, 0) + + + def td_set_points_adjustment_response(self, vAccepted : int, + vBloodFlowRejectReason : int, + vDialysateFlowRateRejectReason : int, + vspnDialysateTempRejectReason : int, + vAcidConcentrateRejectReason : int, + vAcidConcentrateFactorRejectReason: int, + vBicarbConcentrateRejectReason : int, + vTreatmentModalityRejectReason : int, + vHepatitisRejectReason : int, + vSodiumRejectReason : int, + vBicarbonateRejectReason : int): + """ + the set points adjustment response message method(Msg ID: 0x7B, 123) + Args: + None + @return: None + """ + payload = conversions.integer_to_bytearray(vAccepted ) + payload += conversions.integer_to_bytearray(vBloodFlowRejectReason ) + payload += conversions.integer_to_bytearray(vDialysateFlowRateRejectReason ) + payload += conversions.integer_to_bytearray(vspnDialysateTempRejectReason ) + payload += conversions.integer_to_bytearray(vAcidConcentrateRejectReason ) + payload += conversions.integer_to_bytearray(vAcidConcentrateFactorRejectReason ) + payload += conversions.integer_to_bytearray(vBicarbConcentrateRejectReason ) + payload += conversions.integer_to_bytearray(vTreatmentModalityRejectReason ) + payload += conversions.integer_to_bytearray(vHepatitisRejectReason ) + payload += conversions.integer_to_bytearray(vSodiumRejectReason ) + payload += conversions.integer_to_bytearray(vBicarbonateRejectReason ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_to_ui_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_TREATMENT_SET_POINTS_CHANGE_RESPONSE.value, + payload=payload) + self.can_interface.send(message, 0) + + + def td_patient_disconnect_confirm_response(self, vAccepted: int, vRejectionReason: int): + """ + the patient disconnect confirm response message method(Msg ID: 0xXX, XXX) + Args: + None + @return: None + """ + payload = conversions.integer_to_bytearray(vAccepted) + payload += conversions.integer_to_bytearray(vRejectionReason) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_to_ui_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_ADJUST_PATIENT_DISCONNECT_CONFIRM_RESPONSE.value, + payload=payload) + self.can_interface.send(message, 0) + + def td_Treatment_Parameters_CreateRx(self, vRejectionReason: int): """ TD response to in initiate Treatment and enter Create Rx (Msg ID: 0x46, 70) @@ -1532,6 +1667,149 @@ self.can_interface.send(message, 0) + def td_post_tx_logs_response( self, + vAccepted : int, + vRejectionReason : int, + vBloodFlowRate : int, + vBloodFlowRateActual : int, + vDialysateFlowRate : int, + vDialysateFlowRateActual : int, + vTreatmentDuration : int, + vTreatmentDurationActual : int, + vAcidConcentrateType : int, + vAcidConcentrateTypeActual : int, + vBicarbonateCartridgeSize : int, + vBicarbonateCartridgeSizeActual : int, + vPotassiumConcentration : int, + vPotassiumConcentrationActual : int, + vCalciumConcentration : int, + vCalciumConcentrationActual : int, + vBicarbonateConcentration : int, + vBicarbonateConcentrationActual : int, + vSodiumConcentration : int, + vSodiumConcentrationActual : int, + vVitalsInterval : int, + vVitalsIntervalActual : int, + vDialyzerType : int, + vTreatmentStartEpoch : int, + vTreatmentEndEpoch : int, + vFluidBolusVolume : int, + vFluidBolusVolumeActual : int, + vHeparinType : int, + vHeparinDeliveryDuration : int, + vHeparinDeliveryDurationActual : int, + vTreatmentModality : int, + vTreatmentModalityActual : int, + vHDFOperatingMode : int, + vHDFOperatingModeActual : int, + vHepatitisStatus : int, + vDialysateTemperature : float, + vDialysateTemperatureActual : float, + vDialysateVolumeUsed : float, + vHeparinBolusVolume : float, + vHeparinBolusVolumeActual : float, + vHeparinDispenseRate : float, + vHeparinDispenseRateActual : float, + vHeparinDeliveredVolume : float, + vUFVolume : float, + vUFVolumeActual : float, + vUFVolumeTarget : float, + vUFRate : float, + vUFRateActual : float, + vUFRateTarget : float, + vSubstitutionVolume : float, + vSubstitutionVolumeActual : float, + vSubstitutionVolumeTarget : float, + vSubstitutionRate : float, + vSubstitutionRateActual : float, + vSubstitutionRateTarget : float, + vIsoUfVolume : float, + vIsoUfVolumeActual : float, + vIsoUfVolumeTarget : float, + vIsoUfRate : float, + vIsoUfRateActual : float, + vIsoUfRateTarget : float, + vWaterSampleTestResult : float + ): + # """ + # the Post Treatment logs records response message method(Msg ID: 0xXX, XXX) + # Args: + # None + # @return: None + # """ + # if not self.can_enabled: + # raise ValueError("CAN Interface is not enabled") + + payload = conversions.integer_to_bytearray(vAccepted ) + payload += conversions.integer_to_bytearray(vRejectionReason ) + payload += conversions.integer_to_bytearray(vBloodFlowRate ) + payload += conversions.integer_to_bytearray(vBloodFlowRateActual ) + payload += conversions.integer_to_bytearray(vDialysateFlowRate ) + payload += conversions.integer_to_bytearray(vDialysateFlowRateActual ) + payload += conversions.integer_to_bytearray(vTreatmentDuration ) + payload += conversions.integer_to_bytearray(vTreatmentDurationActual ) + payload += conversions.integer_to_bytearray(vAcidConcentrateType ) + payload += conversions.integer_to_bytearray(vAcidConcentrateTypeActual ) + payload += conversions.integer_to_bytearray(vBicarbonateCartridgeSize ) + payload += conversions.integer_to_bytearray(vBicarbonateCartridgeSizeActual ) + payload += conversions.integer_to_bytearray(vPotassiumConcentration ) + payload += conversions.integer_to_bytearray(vPotassiumConcentrationActual ) + payload += conversions.integer_to_bytearray(vCalciumConcentration ) + payload += conversions.integer_to_bytearray(vCalciumConcentrationActual ) + payload += conversions.integer_to_bytearray(vBicarbonateConcentration ) + payload += conversions.integer_to_bytearray(vBicarbonateConcentrationActual ) + payload += conversions.integer_to_bytearray(vSodiumConcentration ) + payload += conversions.integer_to_bytearray(vSodiumConcentrationActual ) + payload += conversions.integer_to_bytearray(vVitalsInterval ) + payload += conversions.integer_to_bytearray(vVitalsIntervalActual ) + payload += conversions.integer_to_bytearray(vDialyzerType ) + payload += conversions.integer_to_bytearray(vTreatmentStartEpoch ) + payload += conversions.integer_to_bytearray(vTreatmentEndEpoch ) + payload += conversions.integer_to_bytearray(vFluidBolusVolume ) + payload += conversions.integer_to_bytearray(vFluidBolusVolumeActual ) + payload += conversions.integer_to_bytearray(vHeparinType ) + payload += conversions.integer_to_bytearray(vHeparinDeliveryDuration ) + payload += conversions.integer_to_bytearray(vHeparinDeliveryDurationActual ) + payload += conversions.integer_to_bytearray(vTreatmentModality ) + payload += conversions.integer_to_bytearray(vTreatmentModalityActual ) + payload += conversions.integer_to_bytearray(vHDFOperatingMode ) + payload += conversions.integer_to_bytearray(vHDFOperatingModeActual ) + payload += conversions.integer_to_bytearray(vHepatitisStatus ) + payload += conversions.float_to_bytearray( vDialysateTemperature ) + payload += conversions.float_to_bytearray( vDialysateTemperatureActual ) + payload += conversions.float_to_bytearray( vDialysateVolumeUsed ) + payload += conversions.float_to_bytearray( vHeparinBolusVolume ) + payload += conversions.float_to_bytearray( vHeparinBolusVolumeActual ) + payload += conversions.float_to_bytearray( vHeparinDispenseRate ) + payload += conversions.float_to_bytearray( vHeparinDispenseRateActual ) + payload += conversions.float_to_bytearray( vHeparinDeliveredVolume ) + payload += conversions.float_to_bytearray( vUFVolume ) + payload += conversions.float_to_bytearray( vUFVolumeActual ) + payload += conversions.float_to_bytearray( vUFVolumeTarget ) + payload += conversions.float_to_bytearray( vUFRate ) + payload += conversions.float_to_bytearray( vUFRateActual ) + payload += conversions.float_to_bytearray( vUFRateTarget ) + payload += conversions.float_to_bytearray( vSubstitutionVolume ) + payload += conversions.float_to_bytearray( vSubstitutionVolumeActual ) + payload += conversions.float_to_bytearray( vSubstitutionVolumeTarget ) + payload += conversions.float_to_bytearray( vSubstitutionRate ) + payload += conversions.float_to_bytearray( vSubstitutionRateActual ) + payload += conversions.float_to_bytearray( vSubstitutionRateTarget ) + payload += conversions.float_to_bytearray( vIsoUfVolume ) + payload += conversions.float_to_bytearray( vIsoUfVolumeActual ) + payload += conversions.float_to_bytearray( vIsoUfVolumeTarget ) + payload += conversions.float_to_bytearray( vIsoUfRate ) + payload += conversions.float_to_bytearray( vIsoUfRateActual ) + payload += conversions.float_to_bytearray( vIsoUfRateTarget ) + payload += conversions.float_to_bytearray( vWaterSampleTestResult ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_to_ui_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_ADJUST_TREATMENT_LOGS_RESPONSE.value, + payload=payload) + self.can_interface.send(message, 0) + + def td_Treatment_Parameters_Validation( self, vAccepted : int = 1, vTreatmentModalityRejectReason : int = 0,