Пример #1
0
def on_command_start(message):
    bot.send_chat_action(message.chat.id, 'typing')

    print(message.from_user)

    bot.send_message(message.chat.id,
                     GestorConversacion.get_welcome_message(
                         config.ASISTENTE_VIRTUAL, config.COMPANIA_SIGNOS),
                     parse_mode="Markdown")

    #Mensaje de bienvenida donde valida si el usuario usa el bot y el tipo de perfil (Paciente o médico)
    bot.send_message(message.chat.id,
                     GestorConversacion.get_validacion_paciente(
                         message.from_user.id, message.from_user.first_name,
                         config.COMPANIA_SIGNOS),
                     parse_mode="Markdown")
Пример #2
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")
Пример #3
0
def on_set_signos(message):
    bot.send_chat_action(message.chat.id, 'typing')

    parts = re.match(
        r"^(registrar signos|rs) ([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*[.]?[0-9]*) ([0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]))$",
        message.text,
        flags=re.IGNORECASE)

    pas = int(parts[2])
    pad = int(parts[3])
    fc = int(parts[4])
    peso = float(parts[5])
    fecha_toma = parts[6]

    id_usuario = message.from_user.id

    #Pasa todas las validaciones pruebas
    if check_user(message, id_usuario):
        bot.send_message(
            message.chat.id,
            GestorConversacion.get_registro_signos(
                message.chat.first_name + " " + message.chat.last_name, pas,
                pad, fc, peso, fecha_toma),
            parse_mode="Markdown")
        bot.register_next_step_handler(message,
                                       GestorMediciones.step_2_registro_signos,
                                       pas, pad, fc, peso, fecha_toma)
Пример #4
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)
Пример #5
0
def on_set_observaciones(message):
    #se particiona el mensaje
    parts = re.match(
        r"^(ingresar observaciones|io) ([0-9]+) ([A-Za-z_ÑñÁáÉéÍíÓóÚú,;.:¡!¿?'´*%()0123456789 ]+)$",
        message.text,
        flags=re.IGNORECASE)
    #se guarda el id de la medicion
    id_medicion = int(parts[2])
    observacion = str(parts[3])

    id_usuario_medico = message.from_user.id

    #validar si es Medico
    if not GestorConsultas.validar_medico(id_usuario_medico):
        return bot.reply_to(
            message,
            f"\U0001F6AB Este comando solo puede ser utilizado por un * Médico *",
            parse_mode="Markdown")

    #Obtener la medicion que se le añadira la observacion
    medicion = GestorConsultas.consulta_medicion(id_medicion)

    #si no existe ninguna medicion con id_medicion
    if not medicion:
        return bot.reply_to(
            message,
            f"\U0001F928 No exite ninguna medición con el código: {id_medicion}\n\n"
            f"Verifica e intenta nuevamente, puedes usar el comando:\n\n"
            "*listar registros pacientes|lrp {documento paciente} {Fecha inicial (aaaa-mm-dd)} {Fecha Final (aaaa-mm-dd)}* - para consultar la medición de los pacientes",
            parse_mode="Markdown")

    #Mostar Observacion a añedir y solicitar confimacion de guardar
    bot.send_message(message.chat.id,
                     GestorConversacion.get_observacion(
                         id_medicion, observacion),
                     parse_mode="Markdown")

    #Recibir confirmacion de elminiacion y ejecutar la acción
    bot.register_next_step_handler(
        message, GestorObservaciones.step_2_Registrar_observacion, id_medicion,
        id_usuario_medico, observacion)
Пример #6
0
def check_user(message, id_usuario):
    #Si el usuario no está registrado
    if not GestorConsultas.existencia_usuario(id_usuario):
        bot.reply_to(
            message,
            f"\U0001F614 *{message.from_user.first_name}*, no puedes implementar este comando, ya que no esta registrado.",
            parse_mode="Markdown")
        bot.send_message(message.chat.id,
                         GestorConversacion.get_validacion_paciente(
                             id_usuario, message.from_user.first_name,
                             config.COMPANIA_SIGNOS),
                         parse_mode="Markdown")
        return False
    #Si es un Medico
    if GestorConsultas.validar_medico(id_usuario):
        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")
        return False
    return True
Пример #7
0
def on_command_about(message):
    bot.send_chat_action(message.chat.id, 'typing')

    bot.send_message(message.chat.id,
                     GestorConversacion.get_about(config.VERSION),
                     parse_mode="Markdown")
Пример #8
0
def on_command_help(message):
    bot.send_chat_action(message.chat.id, 'typing')

    bot.send_message(message.chat.id,
                     GestorConversacion.get_help(),
                     parse_mode="Markdown")