Index: leahi_dialin/td/proxies/ui_proxy.py =================================================================== diff -u -r47a803c6dd859a5bcc7a6c82e0cb160c350473ea -re45b20cdc5d4c5dcff8cef530b173ca94cb2e422 --- leahi_dialin/td/proxies/ui_proxy.py (.../ui_proxy.py) (revision 47a803c6dd859a5bcc7a6c82e0cb160c350473ea) +++ leahi_dialin/td/proxies/ui_proxy.py (.../ui_proxy.py) (revision e45b20cdc5d4c5dcff8cef530b173ca94cb2e422) @@ -8,20 +8,25 @@ # @file ui_proxy.py # # @author (last) Zoltan Miskolci -# @date (last) 08-Jan-2026 +# @date (last) 05-May-2026 # @author (original) Peter Lucia # @date (original) 02-Apr-2020 # ############################################################################ -import struct +# Module imports from logging import Logger +# Project imports +from leahi_dialin.common import td_enum_repository from leahi_dialin.common.constants import ACCEPTED -from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions, RequestRejectReasons +from leahi_dialin.common.disp_defs_proxy import disp_enum_repository +from leahi_dialin.common.generic_defs import DataTypes +from leahi_dialin.common.msg_defs import RequestRejectReasons +from leahi_dialin.common.msg_ids import MsgIds from leahi_dialin.common.override_templates import cmd_generic_override -from leahi_dialin.protocols.CAN import DenaliMessage, DenaliCanMessenger, DenaliChannels -from leahi_dialin.utils.base import AbstractSubSystem +from leahi_dialin.protocols.CAN import CanMessenger, CanChannels +from leahi_dialin.utils.abstract_classes import AbstractSubSystem from leahi_dialin.utils.conversions import integer_to_bytearray, unsigned_byte_to_bytearray, float_to_bytearray, \ short_to_bytearray @@ -33,54 +38,57 @@ SW_COMPATIBILITY_REV = 0 - def __init__(self, can_interface: DenaliCanMessenger, logger: Logger): + def __init__(self, can_interface: CanMessenger, logger: Logger): """ DDProxy constructor - @param can_interface: the Denali CAN interface object + @param can_interface: the CAN interface object """ super().__init__() self.can_interface = can_interface self.logger = logger if self.can_interface is not None: - channel_id = DenaliChannels.td_to_ui_ch_id - msg_id = MsgIds.MSG_ID_TD_RESP_TREATMENT_PARAMS_TO_VALIDATE.value - self.can_interface.register_receiving_publication_function(channel_id, msg_id, - self._handler_tx_parameters_val_resp_sync) + self.can_interface.register_receiving_publication_function(channel_id = CanChannels.td_to_ui_ch_id, + message_id = MsgIds.MSG_ID_TD_RESP_TREATMENT_PARAMS_TO_VALIDATE.value, + function = self._handler_tx_parameters_val_resp_sync) - channel_id = DenaliChannels.td_to_ui_ch_id - msg_id = MsgIds.MSG_ID_TD_RESP_ULTRAFILTRATION_VOLUME_TO_VALIDATE.value - self.can_interface.register_receiving_publication_function(channel_id, msg_id, - self._handler_uf_val_resp_sync) + self.can_interface.register_receiving_publication_function(channel_id = CanChannels.td_to_ui_ch_id, + message_id = MsgIds.MSG_ID_TD_RESP_ULTRAFILTRATION_VOLUME_TO_VALIDATE.value, + function = self._handler_uf_val_resp_sync) - channel_id = DenaliChannels.td_to_ui_ch_id - msg_id = MsgIds.MSG_ID_TD_RESP_INITIATE_TREATMENT_WORKFLOW.value - self.can_interface.register_receiving_publication_function(channel_id, msg_id, - self._handler_initiate_treatment_resp_sync) + self.can_interface.register_receiving_publication_function(channel_id = CanChannels.td_to_ui_ch_id, + message_id = MsgIds.MSG_ID_TD_RESP_INITIATE_TREATMENT_WORKFLOW.value, + function = self._handler_initiate_treatment_resp_sync) - channel_id = DenaliChannels.td_to_ui_ch_id - msg_id = MsgIds.MSG_ID_TD_UF_PAUSE_RESUME_RESPONSE.value - self.can_interface.register_receiving_publication_function(channel_id, msg_id, - self._handler_uf_pause_resp_sync) + self.can_interface.register_receiving_publication_function(channel_id = CanChannels.td_to_ui_ch_id, + message_id = MsgIds.MSG_ID_TD_UF_PAUSE_RESUME_RESPONSE.value, + function = self._handler_uf_pause_resp_sync) # MSG_ID_TD_RESP_TREATMENT_PARAMS_TO_VALIDATE - self.tx_params_acceptance = 0 - self.tx_params_blood_flow_rr = 0 - self.tx_params_dialysate_flow_rr = 0 - self.tx_params_tx_duration_rr = 0 - self.tx_params_saline_bolus_vol_rr = 0 - self.tx_params_acid_rr = 0 - self.tx_params_bicarb_rr = 0 - self.tx_params_dialyzer_type_rr = 0 - self.tx_params_bp_meas_interval_rr = 0 - self.tx_params_rinseback_flow_rate_rr = 0 - self.tx_params_art_pres_limit_window_rr = 0 - self.tx_params_ven_pres_limit_window_rr = 0 - self.tx_params_ven_pres_limit_asymmetric_rr = 0 - self.tx_params_tmp_pres_limit_window_rr = 0 - self.tx_params_dialysate_temperature_rr = 0 - self.tx_params_uf_volume_rr = 0 + self.tx_params_treatment_modality = td_enum_repository.TDTreatmentModalityTypes.HD.value + self.tx_params_hdf_dilution = td_enum_repository.TDTreatmentHDFDilution.HDF_NOT_APPLICABLE.value + self.tx_params_blood_flow_rate = 0 + self.tx_params_dialysate_flow_rate = 0 + self.tx_params_tx_duration = 0 + self.tx_params_heparin_duration = 0 + self.tx_params_heparin_type = disp_enum_repository.HeparinTypes.HEPARIN_TYPE_FRESENIUS_CENTRISOL.value + self.tx_params_dry_bicarb_cart_size = 0 + self.tx_params_sodium = 0 + self.tx_params_bicarb_concentrate = disp_enum_repository.BicarbTypes.BICARB_08_677753_0.value + self.tx_params_dialyzer_type = disp_enum_repository.DialyzerTypes.DIALYZER_TYPE_BBRAUN_PRO_13H.value + self.tx_params_fluid_bolus_volume = 0 + self.tx_params_bp_interval = 0 + self.tx_params_rinseback_volume = 0 + self.tx_params_hepatitis_b_status = td_enum_repository.TDTreaHeparinStates.HEPARIN_STATE_OFF.value + self.tx_params_acid_concentrate = disp_enum_repository.AcidTypes.ACID_08_1251_1.value + self.tx_params_subst_fluid_volume = 0.0 + self.tx_params_heparin_bolus_volume = 0.0 + self.tx_params_heparin_delivery_rate = 0.0 + self.tx_params_dialysate_temperature = 0.0 + self.tx_params_uf_pre_weight = 0.0 + self.tx_params_uf_est_target_weight = 0.0 + self.tx_params_uf_volume = 0.0 self.tx_params_validate_timestamp = 0 # MSG_ID_TD_RESP_ULTRAFILTRATION_VOLUME_TO_VALIDATE @@ -109,38 +117,33 @@ :param timestamp: timestamp in epoch time of the received message :return: none """ - self.tx_params_acceptance = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.tx_params_blood_flow_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.tx_params_dialysate_flow_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - self.tx_params_tx_duration_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - self.tx_params_saline_bolus_vol_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] - self.tx_params_acid_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - self.tx_params_bicarb_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] - self.tx_params_dialyzer_type_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] - self.tx_params_bp_meas_interval_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] - self.tx_params_rinseback_flow_rate_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10]))[0] - self.tx_params_art_pres_limit_window_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11]))[0] - self.tx_params_ven_pres_limit_window_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_12:MsgFieldPositions.END_POS_FIELD_12]))[0] - self.tx_params_ven_pres_limit_asymmetric_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_13:MsgFieldPositions.END_POS_FIELD_13]))[0] - self.tx_params_tmp_pres_limit_window_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_14:MsgFieldPositions.END_POS_FIELD_14]))[0] - self.tx_params_dialysate_temperature_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_15:MsgFieldPositions.END_POS_FIELD_15]))[0] - self.tx_params_uf_volume_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_16:MsgFieldPositions.END_POS_FIELD_16]))[0] + msg_list = [] + msg_list.append(('self.tx_params_treatment_modality', DataTypes.U32)) + msg_list.append(('self.tx_params_hdf_dilution', DataTypes.U32)) + msg_list.append(('self.tx_params_blood_flow_rate', DataTypes.U32)) + msg_list.append(('self.tx_params_dialysate_flow_rate', DataTypes.U32)) + msg_list.append(('self.tx_params_tx_duration', DataTypes.U32)) + msg_list.append(('self.tx_params_heparin_duration', DataTypes.U32)) + msg_list.append(('self.tx_params_heparin_type', DataTypes.U32)) + msg_list.append(('self.tx_params_dry_bicarb_cart_size', DataTypes.U32)) + msg_list.append(('self.tx_params_sodium', DataTypes.U32)) + msg_list.append(('self.tx_params_bicarb_concentrate', DataTypes.U32)) + msg_list.append(('self.tx_params_dialyzer_type', DataTypes.U32)) + msg_list.append(('self.tx_params_fluid_bolus_volume', DataTypes.U32)) + msg_list.append(('self.tx_params_bp_interval', DataTypes.U32)) + msg_list.append(('self.tx_params_rinseback_volume', DataTypes.U32)) + msg_list.append(('self.tx_params_hepatitis_b_status', DataTypes.U32)) + msg_list.append(('self.tx_params_acid_concentrate', DataTypes.U32)) + msg_list.append(('self.tx_params_subst_fluid_volume', DataTypes.F32)) + msg_list.append(('self.tx_params_heparin_bolus_volume', DataTypes.F32)) + msg_list.append(('self.tx_params_heparin_delivery_rate', DataTypes.F32)) + msg_list.append(('self.tx_params_dialysate_temperature', DataTypes.F32)) + msg_list.append(('self.tx_params_uf_pre_weight', DataTypes.F32)) + msg_list.append(('self.tx_params_uf_est_target_weight', DataTypes.F32)) + msg_list.append(('self.tx_params_uf_volume', DataTypes.F32)) + + self.process_into_vars(decoder_list = msg_list, + message = message) self.tx_params_validate_timestamp = timestamp @@ -153,12 +156,13 @@ :param timestamp: timestamp in epoch time of the received message :return: none """ - self.uf_volume_acceptance = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.uf_volume_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.uf_volume_ml = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] + msg_list = [] + msg_list.append(('self.uf_volume_acceptance', DataTypes.U32)) + msg_list.append(('self.uf_volume_rr', DataTypes.U32)) + msg_list.append(('self.uf_volume_ml', DataTypes.F32)) + + self.process_into_vars(decoder_list = msg_list, + message = message) self.uf_volume_timestamp = timestamp @@ -171,10 +175,12 @@ :param timestamp: timestamp in epoch time of the received message :return: none """ - self.initiate_tx_acceptance = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.initiate_tx_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] + msg_list = [] + msg_list.append(('self.initiate_tx_acceptance', DataTypes.U32)) + msg_list.append(('self.initiate_tx_rr', DataTypes.U32)) + + self.process_into_vars(decoder_list = msg_list, + message = message) self.initiate_tx_timestamp = timestamp @@ -187,82 +193,98 @@ :param timestamp: timestamp in epoch time of the received message :return: none """ - self.uf_pause_resume_acceptance = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.uf_pause_resume_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] + msg_list = [] + msg_list.append(('self.uf_pause_resume_acceptance', DataTypes.U32)) + msg_list.append(('self.uf_pause_resume_rr', DataTypes.U32)) + + self.process_into_vars(decoder_list = msg_list, + message = message) self.uf_pause_resume_timestamp = timestamp - def cmd_send_ui_treatment_param_data(self, blood_flow_rate: int, + def cmd_send_ui_treatment_param_data(self, + final_confirmation: int, + treatment_modality: int, + hdf_dilution: int, + blood_flow_rate: int, dialysate_flow_rate: int, treatment_duration: int, - saline_bolus_volume: int, - heparin_stop_time: int, + heparin_duration: int, heparin_type: int, - acid_concentrate: int, + dry_bicarb_cart_size: int, + sodium: int, bicarb_concentrate: int, dialyzer_type: int, + fluid_bolus_volume: int, bp_interval: int, - rinseback_flow_rate: int, rinseback_volume: int, - arterial_pressure_limit: int, - venous_pressure_limit: int, - venous_pressure_asymmetric: int, - tmp_pressure_limit: int, + hepatitis_b_status: int, + acid_concentrate: int, + subst_fluid_volume: float, + heparin_bolus_volume: float, + heparin_delivery_rate: float, dialysate_temp: float, - heparin_dispense_rate: float, - heparin_bolus_volume: float ) -> None: + uf_pre_weight: float, + uf_est_target_weight: float, + uf_volume: float) -> None: """ Constructs and sends a UI set treatment parameters message. - + :param final_confirmation: (int) 0 - if only validating parameters, 1 - if validating and moving the state forward + :param treatment_modality: (int) type of treatment: 0-HD, 1-HDF + :param hdf_dilution: (int) HDF dilution option (TDTreatmentHDFDilution) :param blood_flow_rate: (int) blood flow rate (in mL/min) :param dialysate_flow_rate: (int) dialysate flow rate (in mL/min) :param treatment_duration: (int) treatment duration (in min) - :param saline_bolus_volume: (int) saline bolus volume (in mL) - :param heparin_stop_time: (int) heparin stop time (in minutes) - :param heparin_type: (int) heparin Type - :param acid_concentrate: (int) acid concentrate type - :param bicarb_concentrate: (int) bicarbonate concentrate type - :param dialyzer_type: (int) dialyzer type + :param heparin_duration: (int) heparin delivery duration (in min) + :param heparin_type: (int) heparin Type (HeparinTypes) + :param dry_bicarb_cart_size: (int) dry bicarb cart size option + :param sodium: (int) sodium (in mEq/L) + :param bicarb_concentrate: (int) bicarbonate concentrate type (BicarbTypes) + :param dialyzer_type: (int) dialyzer type (DialyzerTypes) + :param fluid_bolus_volume: (int) fluid bolus volume (in mL) :param bp_interval: (int) blood pressure measurement interval (in min) - :param rinseback_flow_rate: (int) rinse back flow rate (in mL/min) :param rinseback_volume: (int) rinse back volume (in mL) - :param arterial_pressure_limit: (int) arterial pressure alarm limit window (in mmHg) - :param venous_pressure_limit: (int) venous pressure alarm limit window (in mmHg) - :param venous_pressure_asymmetric: (int) venous pressure alarm limit asymmetric (in mmHg) - :param tmp_pressure_limit: (int) transmembrane pressure alarm limit window (in mmHg) - :param dialysate_temp: (float) dialysate temperature (in deg C) - :param heparin_dispense_rate: (float) heparin dispense rate (in mL/hr) + :param hepatitis_b_status: (int) Hepatitis B status option (TDTreatmentHepatitisB) + :param acid_concentrate: (int) acid concentrate type (AcidTypes) + :param subst_fluid_volume: (float) substitution fluid volume (in L) :param heparin_bolus_volume: (float) heparin bolus volume (in mL) - + :param heparin_delivery_rate: (float) heparin delivery rate (in mL/hr) + :param dialysate_temp: (float) dialysate temperature (in deg C) + :param uf_pre_weight: (float) patient pre weight prior to treatment (in Kilogram) + :param uf_est_target_weight: (float) patient estimated target weight after the treatment (in Kilogram) + :param uf_volume: (float) ultrafiltration volume (in L) :return: None """ - bld = integer_to_bytearray(blood_flow_rate) - dia = integer_to_bytearray(dialysate_flow_rate) - dur = integer_to_bytearray(treatment_duration) - sal = integer_to_bytearray(saline_bolus_volume) - hst = integer_to_bytearray(heparin_stop_time) - het = integer_to_bytearray(heparin_type) - acc = integer_to_bytearray(acid_concentrate) - bic = integer_to_bytearray(bicarb_concentrate) - dzr = integer_to_bytearray(dialyzer_type) - bpi = integer_to_bytearray(bp_interval) - rbf = integer_to_bytearray(rinseback_flow_rate) - rbv = integer_to_bytearray(rinseback_volume) - apw = integer_to_bytearray(arterial_pressure_limit) - vpw = integer_to_bytearray(venous_pressure_limit) - vpa = integer_to_bytearray(venous_pressure_asymmetric) - tmp = integer_to_bytearray(tmp_pressure_limit) - dtp = float_to_bytearray(dialysate_temp) - hdr = float_to_bytearray(heparin_dispense_rate) - hbv = float_to_bytearray(heparin_bolus_volume) - payload = bld + dia + dur + sal + hst + het + acc + bic + dzr + bpi + rbf + rbv + apw + vpw + vpa + tmp + dtp + hdr + hbv + payload = integer_to_bytearray(final_confirmation) + payload += integer_to_bytearray(treatment_modality) + payload += integer_to_bytearray(hdf_dilution) + payload += integer_to_bytearray(blood_flow_rate) + payload += integer_to_bytearray(dialysate_flow_rate) + payload += integer_to_bytearray(treatment_duration) + payload += integer_to_bytearray(heparin_duration) + payload += integer_to_bytearray(heparin_type) + payload += integer_to_bytearray(dry_bicarb_cart_size) + payload += integer_to_bytearray(sodium) + payload += integer_to_bytearray(bicarb_concentrate) + payload += integer_to_bytearray(dialyzer_type) + payload += integer_to_bytearray(fluid_bolus_volume) + payload += integer_to_bytearray(bp_interval) + payload += integer_to_bytearray(rinseback_volume) + payload += integer_to_bytearray(hepatitis_b_status) + payload += integer_to_bytearray(acid_concentrate) + payload += float_to_bytearray(subst_fluid_volume) + payload += float_to_bytearray(heparin_bolus_volume) + payload += float_to_bytearray(heparin_delivery_rate) + payload += float_to_bytearray(dialysate_temp) + payload += float_to_bytearray(uf_pre_weight) + payload += float_to_bytearray(uf_est_target_weight) + payload += float_to_bytearray(uf_volume) + cmd_generic_override(payload = payload, reset = None, - channel_id = DenaliChannels.ui_to_td_ch_id, + channel_id = CanChannels.ui_to_td_ch_id, msg_id = MsgIds.MSG_ID_UI_TREATMENT_PARAMS_TO_VALIDATE, entity_name = 'Sneding UI Treatment Parameter to TD', override_text = 'N/A', @@ -286,7 +308,7 @@ cmd_generic_override(payload = payload, reset = None, - channel_id = DenaliChannels.ui_sync_broadcast_ch_id, + channel_id = CanChannels.ui_sync_broadcast_ch_id, msg_id = MsgIds.MSG_ID_FW_VERSIONS_REQUEST, entity_name = 'UI Version Request', override_text = 'N/A', @@ -306,7 +328,7 @@ cmd_generic_override(payload = payload, reset = None, - channel_id = DenaliChannels.ui_to_td_ch_id, + channel_id = CanChannels.ui_to_td_ch_id, msg_id = MsgIds.MSG_ID_UI_INITIATE_TREATMENT_WORKFLOW, entity_name = 'UI Initiate Treatment Workflow', override_text = 'N/A', @@ -326,7 +348,7 @@ cmd_generic_override(payload = payload, reset = None, - channel_id = DenaliChannels.ui_to_td_ch_id, + channel_id = CanChannels.ui_to_td_ch_id, msg_id = MsgIds.MSG_ID_UI_TREATMENT_PARAMS_CONFIRMED, entity_name = 'UI Confirm Treatment Parameters', override_text = 'N/A', @@ -348,7 +370,7 @@ cmd_generic_override(payload = payload, reset = None, - channel_id = DenaliChannels.ui_to_td_ch_id, + channel_id = CanChannels.ui_to_td_ch_id, msg_id = MsgIds.MSG_ID_UI_UF_PAUSE_RESUME_REQUEST, entity_name = 'UI Pause or Resume UF Request', override_text = 'N/A', @@ -368,7 +390,7 @@ cmd_generic_override(payload = payload, reset = None, - channel_id = DenaliChannels.ui_to_td_ch_id, + channel_id = CanChannels.ui_to_td_ch_id, msg_id = MsgIds.MSG_ID_UI_ULTRAFILTRATION_VOLUME_TO_VALIDATE, entity_name = 'Validate UI Ultrafiltration Volume', override_text = 'N/A', @@ -384,7 +406,7 @@ """ cmd_generic_override(payload = None, reset = None, - channel_id = DenaliChannels.ui_to_td_ch_id, + channel_id = CanChannels.ui_to_td_ch_id, msg_id = MsgIds.MSG_ID_UI_ACTIVE_ALARMS_LIST_REQUEST, entity_name = 'UI Active Alarm List Request', override_text = 'N/A', @@ -404,7 +426,7 @@ cmd_generic_override(payload = payload, reset = None, - channel_id = DenaliChannels.ui_to_td_ch_id, + channel_id = CanChannels.ui_to_td_ch_id, msg_id = MsgIds.MSG_ID_USER_ALARM_SILENCE_REQUEST, entity_name = 'UI Alarm Silence Request', override_text = 'N/A',