Ejemplo n.º 1
0
def on_set_paciente(message):
    bot.send_chat_action(message.chat.id, 'typing')

    parts = re.match(r"^(registrar paciente|rp) ([0-9]*)$",
                     message.text,
                     flags=re.IGNORECASE)

    #Si es un Medico
    if GestorConsultas.validar_medico(message.from_user.id):
        return bot.reply_to(
            message,
            f"\U0001FA7A *Dr(a). {message.from_user.first_name}*, no puede implementar este comando, solo lo pueden usarlo pacientes.",
            parse_mode="Markdown")

    documento = int(parts[2])
    #si existe paciente
    paciente = GestorPacientes.get_paciente(documento)
    if paciente:
        return bot.reply_to(message,
                            f"Paciente ya registrado.",
                            parse_mode="Markdown")

    #si usuario ya registrado
    usuario = GestorConsultas.existencia_usuario(message.from_user.id)
    if usuario:
        return bot.reply_to(
            message,
            f"Este usuario ya está registrado con el documento *{usuario.documento}*",
            parse_mode="Markdown")

    #Usuario no existente se procede al registro
    GestorPacientes.set_paciente(
        message.from_user.id, documento,
        message.chat.first_name + " " + message.chat.last_name, 1)
    return bot.reply_to(message, f"Paciente registrado.")
Ejemplo n.º 2
0
def send_text(message):

    m = message.text.lower()
    for word in words:
        if word in m:
            bot.reply_to(message, 'Не матерись!!!')
            bot.delete_message(message.chat.id, message.message_id)
Ejemplo n.º 3
0
def on_set_cancion(message):
    bot.send_chat_action(message.chat.id, 'typing')
    parts = re.match(r"^(agregar cancion|ag) ([a-zA-Z]{3,20}) ([0-9]{1,2})",
                     message.text, re.IGNORECASE)
    print(parts.groups())

    nombreCancion = (parts[2])
    idtipoMusica = int(parts[3])
    response = ''
    if idtipoMusica > 0:
        nombreUsuario = usuarios.register_usuario(message.from_user.id,
                                                  message.from_user.first_name)
        print(nombreUsuario)
        canciones.register_cancion(nombreCancion, "5", message.from_user.id,
                                   idtipoMusica)
        response = '¡Cancion almacenada con éxito!:'
    else:
        listatipoMusica = tipoMusica.get_tipoMusica()
        if listatipoMusica:
            response = 'Debe seleccionar el ID del tipo de música \n Los tipos de música son: \n'
            for tipomusica in listatipoMusica:
                response += str(
                    tipomusica.id) + ' ' + tipomusica.nombreTipoMusica + '\n'
        else:
            response = 'No existe Tipo de música, debe crearla con {agtm}'

    bot.reply_to(message, f"\U0001F4B0" + response)
Ejemplo n.º 4
0
def on_fallback(message):
    bot.send_chat_action(message.chat.id, 'typing')
    sleep(1)

    response = GestorConversacion.get_fallback_message(
        message.text, message.from_user.first_name, config.COMPANIA_SIGNOS)
    bot.reply_to(message, response, parse_mode="Markdown")
Ejemplo n.º 5
0
def on_get_signos(message):
    bot.send_chat_action(message.chat.id, 'typing')
    parts = re.match(
        r"^(consultar signos|cs) ([0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])) ([0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]))$",
        message.text,
        flags=re.IGNORECASE)
    fecha_inicial = parts[2]
    fecha_final = parts[5]

    id_usuario = int(message.from_user.id)
    nombre_user = message.chat.first_name

    if check_user(message, id_usuario):
        signos = GestorConsultas.get_signos(message.from_user.id,
                                            fecha_inicial, fecha_final)
        # En caso de que el usuario este registrado pero no tenga registros de signos vitales se le mostrara un mensaje
        if not signos:
            return bot.reply_to(
                message,
                "No existe registro de signos para el usuario " + nombre_user +
                "\n\n",
                parse_mode="Markdown")

        #si pasa todas las validaciones
        text = "``` Listado de los signos del usuario: " + nombre_user + "\n"
        text += f" Desde {fecha_inicial} hasta {fecha_final} \n"
        text += f"|ID|Sistolica|Diastolica|F.Cardiaca|Peso|Observación| \n"
        for sv in signos:
            text += f"| {sv.id}|   {sv.pas}   |   {sv.pad}     | {sv.fc}   | {sv.peso} |{sv.observacion}| \n"
        text += "```"
        return bot.reply_to(message, text, parse_mode="Markdown")
Ejemplo n.º 6
0
def on_remove_cancion(message):
    bot.send_chat_action(message.chat.id, 'typing')
    parts = re.match(r"^(agregar cancion|rc) ([a-zA-Z]{3,20}) ([0-9]{1,2})",
                     message.text, re.IGNORECASE)
    print(parts.groups())

    nombreCancion = (parts[2])
    idtipoMusica = int(parts[3])
    response = ''
    if idtipoMusica > 0:
        rowdelete = canciones.remover_cancion(nombreCancion,
                                              message.from_user.id,
                                              idtipoMusica)
        if rowdelete > 0:
            response = '¡Cancion removida con éxito!:'
        else:
            response = '¡No fue posible eliminar la cacion, favor verifica los datos!:'
    else:
        listatipoMusica = tipoMusica.get_tipoMusica()
        if listatipoMusica:
            response = 'Debe indicar el ID del tipo de música \n Los tipos de música son: \n'
            for tipomusica in listatipoMusica:
                response += str(
                    tipomusica.id) + ' ' + tipomusica.nombreTipoMusica + '\n'
        else:
            response = 'No existe Tipo de música, debe crearla con {agtm}'

    bot.reply_to(message, f"\U0001F4B0" + response)
Ejemplo n.º 7
0
def on_get_balance(message):
    bot.send_chat_action(message.chat.id, 'typing')
    balance = logic.get_balance (message.from_user.id)
    text = "\U0000274C Aún no tienes una cuenta asociada, ejecuta /start para arreglarlo."
    if balance != None:
        text = f"Tu saldo actual es ${balance}"
    bot.reply_to(message, text)
Ejemplo n.º 8
0
def on_fallback(message):
    bot.send_chat_action(message.chat.id, 'typing')
    sleep(1)

    bot.reply_to(
        message,
        "\U0001F63F Ups, no entendí lo que me dijiste.")
Ejemplo n.º 9
0
def on_list_earnings(message):
    bot.send_chat_action(message.chat.id, 'typing')
    parts = re.match(r"^(listar ganancias|lg) en ([0-9]{1,2}) de ([0-9]{4})$",
                     message.text,
                     re.IGNORECASE)
    
    #print(parts.groups())
    month = int(parts[2])
    year = int(parts[3])
    
    # Esta forma de validar es un ensayo, para sacar la validación aparte
    mensaje_error = logic.validate_date(month,year)
    if mensaje_error != None:
        bot.reply_to(message, mensaje_error)
        return
    
    earnings = logic.list_earnings (message.from_user.id, month, year)
    text = ""
    total = 0
    
    if not earnings:
        text = f"\U0001F633 No tienes ganancias registradas en {month}/{year}"
    else:
        text = " Listado de ganancias:\n\n"
        for e in earnings:
            total += e.amount
            text += f"| {e.id} | ${e.amount} | ({e.when.strftime('%d/%m/%Y - %H:%M')}) |\n"
        
        text += f"\nTOTAL = ${total}"
        text += "   "
    
    bot.reply_to(message, text, parse_mode="Markdown")
Ejemplo n.º 10
0
def check(message):
    b = message.from_user.id
    if t + 15 < time.time():
        bot.reply_to(g, 'Время вышло')
        bot.send_message(message, 'Можете попробовать снова')
    elif a == b:
        send_covid1(message)
    else:
        #bot.reply_to(message, 'Я отвечаю на команду{}.'.format(c))
        checkAgain(message)
Ejemplo n.º 11
0
def on_fallback(message):
    bot.send_chat_action(message.chat.id, 'typing')
    sleep(1)

    response = logic.get_fallback_message(message.text)
    bot.reply_to(message, response)

    bot.send_message(message.chat.id,
                     logic.get_help_message(),
                     parse_mode="Markdown")
Ejemplo n.º 12
0
def on_earn_money(message):
    bot.send_chat_action(message.chat.id, 'typing')
    parts = re.match(r"^(gane|gané|g) ([+-]?([0-9]*[.])?[0-9]+)$",message.text,re.IGNORECASE)
    # print (parts.groups())
    amount = float(parts[2])
    control = logic.earn_money (message.from_user.id, amount)
    bot.reply_to(
        message,
        f"\U0001F4B0 ¡Dinero ganado!: {amount}" if control == True
        else "\U0001F4A9 Tuve problemas registrando la transacción, ejecuta /start y vuelve a intentarlo")
Ejemplo n.º 13
0
def on_spend_money(message):
    bot.send_chat_action(message.chat.id, 'typing')
    parts = re.match(
        r"^(gaste|gasté|gg) ([+-]?([0-9]*[.])?[0-9]+)$",
        message.text)
    amount = float(parts[2])
    control = logic.spend_money (message.from_user.id, amount)
    bot.reply_to(message,
        f"\U0001F4B8 ¡Dinero gastado!: {amount}" if control == True
        else "\U0001F4A9 Tuve problemas registrando la transacción, ejecuta /start y vuelve a intentarlo")
Ejemplo n.º 14
0
def es(message):
    bot.send_chat_action(message.chat.id, 'typing')
    listacanciones = canciones.get_canciones()
    response = ''
    if listacanciones:
        for cancion in listacanciones:
            response += str(cancion.id) + ' ' + cancion.nombreCancion + '\n'
    else:
        response = 'No tienes canciones almacenadas por el momento'

    bot.reply_to(message, f"\U0001F3BC ¡Tus canciones son: \n" + response)
Ejemplo n.º 15
0
def on_producto(message):
    bot.send_chat_action(message.chat.id, 'typing')
    sleep(1)
    parts = re.match(
        r"^multiplicar ([+-]?([0-9]*[.])?[0-9]+) y ([+-]?([0-9]*[.])?[0-9]+)$",
        message.text)
    # print (parts.groups())
    oper1 = float(parts[1])
    oper2 = float(parts[3])
    result = oper1 * oper2
    bot.reply_to(message, f"\U0001F522 Resultado: {result}")
Ejemplo n.º 16
0
def me_debe_handler(message):
	try:
		names, monto = split_message_multiple(message.text)
		for name in names:
			if not existe_usuario(name):
				agregar_usuario(name)
			agregar_deuda(name, '@' + message.from_user.username, monto)
		bot.reply_to(message, u"👌")
	except Exception as e:
		print e
		bot.reply_to(message, "Mensaje incorrecto")
Ejemplo n.º 17
0
def on_list_accounts(message):
    bot.send_chat_action(message.chat.id, 'typing')
    text = ""
    if logic.check_admin(message.from_user.id):
        accounts = logic.list_accounts()
        text = "``` Listado de cuentas:\n\n"
        for account in accounts:
            text += f"| {account.id} | ${account.balance} |\n"
        text += "```"
    else:
        text = f"\U0000274C Esta funcionalidad sólo está disponible para administradores"
    bot.reply_to(message, text, parse_mode="Markdown")
Ejemplo n.º 18
0
def on_set_tipo(message):
    bot.send_chat_action(message.chat.id, 'typing')
    parts = re.match(r"^(agregar tipo musica|agtm) ([a-zA-Z]{3,20})",
                     message.text, re.IGNORECASE)
    print(parts.groups())
    nombre = (parts[2])
    nombreTipoMusica = tipoMusica.register_tipoMusica(nombre)
    bot.reply_to(
        message, f"\U0001F399 Tipo de música almacenada con éxito!: "
        if nombreTipoMusica == True else
        "\U0001F507Tuve problemas registrando el tipo de música, ejecuta agregar tipo musica ó agtm a intentarlo"
    )
Ejemplo n.º 19
0
def process_semester_step(message):
    chat_id = message.chat.id
    semester = message.text

    if semester not in semester_list.keys():
        bot.reply_to(message, 'אופסס, סמסטר לא תקין')

        start_process(message)
        return

    course = course_dict[chat_id]
    course.semester = semester_list[semester]

    request_params = {
        'courseId': course.courseId,
        'year': course.year,
        'semester': course.semester
    }

    if config.flag:
        config.flag = False
        r = requests.get(url=API_LINK, params=request_params)
        data = r.json()
    else:
        return

    # if no links found
    if not data['success']:
        markup = types.InlineKeyboardMarkup()
        markup.add(
            types.InlineKeyboardButton(
                "📤 להוספת לינק למערכת",
                url="https://bit.ly/openu-bot-add-link"))
        markup.add(
            types.InlineKeyboardButton("🔍 לחיפוש חדש",
                                       callback_data="cb_start"))
        bot.send_message(chat_id, "לא קיים לינק לקבוצה", reply_markup=markup)
        return

    for link in data['data']:
        print_link(bot, chat_id, link, course)

    markup = types.InlineKeyboardMarkup()
    markup.add(
        types.InlineKeyboardButton("🔍 לחיפוש לינק חדש",
                                   callback_data="cb_start"))
    markup.add(
        types.InlineKeyboardButton("🤖 לעמוד הפייסבוק",
                                   url="https://bit.ly/openu-bot-facebook"))
    bot.send_message(chat_id, divider, reply_markup=markup)


# end process_course_id_step #
Ejemplo n.º 20
0
def on_find_cancion(message):
    bot.send_chat_action(message.chat.id, 'typing')
    parts = re.match(r"^(buscar cancion|bc) ([a-zA-Z]{3,20})", message.text,
                     re.IGNORECASE)
    nombreCancion = (parts[2])
    cancion = canciones.find_canciones(nombreCancion)
    if cancion:
        mensaje = "¡Su canción encontrada es: ID: " + str(
            cancion.id
        ) + " NOMBRE: " + cancion.nombreCancion + " DURACION:" + cancion.duracionCancion
    else:
        mensaje = "Tuve problemas buscando la canción, ejecuta /start y vuelve a intentarlo"
    bot.reply_to(message, f"\U0001F941" + mensaje)
Ejemplo n.º 21
0
def on_get_resgistro_paciente(message):
    bot.send_chat_action(message.chat.id, 'typing')

    #Se particiona el mensaje recibido
    parts = re.match(
        r"^(listar registros pacientes|lrp) ([0-9]+) ([0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])) ([0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]))$",
        message.text,
        flags=re.IGNORECASE)

    #Se obtienen las variables
    documento = parts[2]
    fecha_inicial = parts[3]
    fecha_final = parts[6]

    #validar si tiene permiso para este comando
    if not GestorConsultas.validar_medico(message.from_user.id):
        return bot.reply_to(
            message,
            f"\U0001F6AB Este comando solo puede ser utilizado por un * Médico *",
            parse_mode="Markdown")

    #obtener id del paciente
    paciente = GestorPacientes.get_paciente(documento)

    #Si no existe ningun paciente con ese ese documento
    if not paciente:
        return bot.reply_to(
            message,
            f"No existe ningun paciente con el número de documento *{documento}*",
            parse_mode="Markdown")

    #obtener las mediciones del paciente
    mediciones = GestorConsultas.get_signos(paciente.id_user_tel,
                                            fecha_inicial, fecha_final)
    #Si no existe ninguna medicion para la fecha
    if not mediciones:
        return bot.reply_to(
            message,
            f"Desde el día *{fecha_inicial}* hasta el día *{fecha_final}* No existen registros de mediciones para el paciente con cc *{documento}*",
            parse_mode="Markdown")

    #si pasa las validadciones de imprime los listados
    text = f"``` Listado de las mediciones del Paciente: \n {documento} {paciente.nombreCompleto} \n"
    text += f" Desde {fecha_inicial} hasta {fecha_final} \n\n"
    text += f"|ID|Sistolica|Diastolica|F.Cardiaca|Peso|Fecha Toma| \n"
    for m in mediciones:
        fecha_corta = str(m.fecha_toma)[2:10] + str(m.fecha_toma)[10:16]
        text += f"|{m.id} | {m.pas}      | {m.pad}       | {m.fc}       |{m.peso}| {fecha_corta} |\n"
    text += "```"
    bot.reply_to(message, text, parse_mode="Markdown")
Ejemplo n.º 22
0
def on_list_vehiculos(message):
	bot.send_chat_action(message.chat.id, 'typing')

	text = ""	
	vehiculos = logic.list_vehiculos()

	text = "``` Listado de vehiculos:\n\n"

	for vehiculo in vehiculos:
		text += f"| Tipo:  {vehiculo.tipo_vehiculo} | Placa: {vehiculo.placa} | ID: {vehiculo.id_vehiculo}|\n"

	text += "```"
	
	bot.reply_to(message, text, parse_mode="Markdown")
Ejemplo n.º 23
0
def on_remove_record(message):
	bot.send_chat_action(message.chat.id, 'typing')

	parts = re.match(
		r"^(remover|r) (ganancia|g|gasto|gg) ([0-9]+)$", 
		message.text)

	record_type = parts[2]
	index = int(parts[3])
	
	if record_type not in ["ganancia", "g", "gasto", "gg"]:
		bot.reply_to(message, f"Error, tipo de registro inválido: {record_type}")
		return

	if index < 0:
		bot.reply_to(message, f"Error, índice inválido: {index}")
		return

	response = False

	if record_type == "ganancia" or record_type == "g":
		response = logic.remove_earning (message.from_user.id, index)
	elif record_type == "gasto" or record_type == "gg":
		response = logic.remove_spending (message.from_user.id, index)

	if response:
		bot.reply_to(message, f"Registro removido: {record_type}, {index}")
	else:
		bot.reply_to(message, f"No se pudo remover el registro: {index}")
Ejemplo n.º 24
0
def on_in_vehiculo(message):
    bot.send_chat_action(message.chat.id, 'typing')

    parts = re.match(r"(^)registrar ingreso|ingreso|ring placa ([a-zA-Z0-9_ ]*) en la zona ([a-zA-Z0-9_ ]*)($)", message.text, re.IGNORECASE)

    #Ejemplo: ring placa UES070 en la zona ZN02

    try:
        placaVehiculo = parts.group(2)
        zonaVehiculo = parts.group(3)

        obtenerPlaca = logic.get_placa (placaVehiculo)
        
        if  not obtenerPlaca:  
            bot.reply_to(message, f"🚨 El vehículo con placa {placaVehiculo} no se encuentra registrado")
        else:
            disponibilidad = logic.get_disponibilidad_zona(zonaVehiculo)

            estado = float(0); 

            if disponibilidad == True:
                control = logic.ingresar_vehiculo(message.from_user.id, placaVehiculo, zonaVehiculo)
                logic.update_dispo_zona(zonaVehiculo, estado)
                bot.reply_to(
                message,
                f"🚗 Vehículo Ingrezado a la Zona:  {zonaVehiculo}" if control == True
                else "🙈 Tuve problemas ingresando el Vehiculo, ejecuta /start y vuelve a intentarlo") 
            else:    
                bot.reply_to(message, f"⚠️ Zona: {zonaVehiculo} no se encuentra disponible") 
    except:
            bot.reply_to(message, f"💩 Tuve problemas ingresando el Vehiculo, valida la zona y placa, ejecuta /start y vuelve a intentarlo")
Ejemplo n.º 25
0
def on_cociente(message):
    bot.send_chat_action(message.chat.id, 'typing')
    sleep(1)
    parts = re.match(
        r"^dividir ([+-]?([0-9]*[.])?[0-9]+) y ([+-]?([0-9]*[.])?[0-9]+)$",
        message.text)
    print(parts.groups())
    oper1 = float(parts[1])
    oper2 = float(parts[3])

    if oper2 != 0:
        result = oper1 / oper2
        bot.reply_to(message, f"\U0001F522 Resultado: {result}")
    else:
        bot.reply_to(message, f"\U0001F522 No se puede dividir entre 0:")
Ejemplo n.º 26
0
def step_2_eliminar_signos(message, index):
    signo = db.session.query(Medicion).get(index)

    print(signo.id)

    #Confirmacion positiva de eliminar
    if message.text == "1":
        db.session.delete(signo)
        db.session.commit()

        bot.send_message(message.chat.id,"*Registro eliminado con éxito.*",parse_mode="Markdown")
    elif message.text == "2":
        bot.reply_to(message, f"Proceso cancelado por el usuario.")
    else:
        bot.reply_to(message, f"Comando no reconocido, inicie el proceso nuevamente.")
Ejemplo n.º 27
0
def list_tipomusica(message):
    bot.send_chat_action(message.chat.id, 'typing')
    parts = re.match(r"^(listar tipo musica por cancion |ltmc) ([0-9]{1,2})",
                     message.text, re.IGNORECASE)
    idTipoMusica = (parts[2])
    listacanciones = canciones.lista_canciones(idTipoMusica)
    response = ''
    if listacanciones:
        for cancion in listacanciones:
            response += str(cancion.id) + ' ' + cancion.nombreCancion + '\n'
    else:
        response = 'No tienes canciones almacenadas por el momento'

    bot.reply_to(
        message, f"\U0001F3B9	 ¡Tus canciones de la lista " + idTipoMusica +
        " son: \n" + response)
Ejemplo n.º 28
0
def en_cambiar_estado_paquete_fecha(message):
    parts = re.match(
        r"^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2})$",
        message.text, re.IGNORECASE)
    resp = logic.update_evento_fecha(message.chat.id, parts)
    if resp == RESPUESTA_OK:
        bot.send_message(
            message.chat.id,
            f"\U00002705 Se ha cambiado el estado del paquete con éxito.",
            parse_mode="Markdown")
    else:
        bot.reply_to(message, resp, parse_mode="Markdown")
        bot.send_message(
            message.chat.id,
            text=
            "¿Cuál es la fecha y la hora en la que se cambió de estado el paquete?(yyyy-MM-dd HH:mm)",
            reply_markup=telebot.types.ForceReply(selective=False))
Ejemplo n.º 29
0
def on_list_earnings(message):
    bot.send_chat_action(message.chat.id, 'typing')
    
    parts = re.match(
    r"^(ubicar vehiculo|placa) en ([0-9]{1,2}) de ([0-9]{4})$",
    message.text)
    
    zona = logic.get_zona (message.from_user.id)
    text=""  
    
    if not zona:
        text = f"\U0001F633 El vehiculo no está parqueado en ninguna zona"
    else:
        text = "``` La zona en que se encuentra ubicado el vehiculo es:\n\n"
        zona
        
        bot.reply_to(message, text, parse_mode="Markdown")
Ejemplo n.º 30
0
def on_delete_signos(message):
    #se particiona el mensaje
    parts = re.match(r"^(eliminar signos|es) ([0-9]+)$",
                     message.text,
                     flags=re.IGNORECASE)

    #se guarda el id del usuario y id de la medicion
    id_usuario = int(message.from_user.id)
    id_medicion = int(parts[2])

    #Se llama la funcion que consulta en la base de datos las mediciones.
    signo_borrar = GestorConsultas.consulta_signos(id_usuario, id_medicion)
    if check_user(message, id_usuario):
        #si no tiene signos
        if not signo_borrar:
            return bot.reply_to(
                message, f"\U0001F928 *{message.from_user.first_name}*, "
                f"No has regitrado signos con el id: {id_medicion}\n\n"
                "Verifica e intenta nuevamente, puedes usar el comando:\n\n"
                "*consultar signos|cs {Fecha inicial (dd-mm-aaaa)} {Fecha Final (dd-mm-aaaa)}* - para consultar sus signos registrados",
                parse_mode="Markdown")

        #si el signo ya tiene una observacion
        observacion = GestorConsultas.get_signo_observacion(id_medicion)
        if observacion:
            return bot.reply_to(
                message,
                f"\U0001F6AB No puedes eliminar esta medición porque tiene una observación: *\U0000203C {observacion.observacion} \U0000203C*",
                parse_mode="Markdown")

        #Mostar Signo a Eliminar y solicitar confimacion de eliminacion
        bot.send_message(
            message.chat.id,
            GestorConversacion.get_signo_eliminar(
                message.chat.first_name + " " + message.chat.last_name,
                signo_borrar.id, signo_borrar.pas, signo_borrar.pad,
                signo_borrar.fc, signo_borrar.peso, signo_borrar.fecha_toma,
                signo_borrar.fecha_registro),
            parse_mode="Markdown")

        #Recibir confirmacion de elminiacion y ejecutar la acción
        bot.register_next_step_handler(message,
                                       GestorMediciones.step_2_eliminar_signos,
                                       signo_borrar.id)