Saltar a contenido

Modulo de Alertas y Notificaciones

Identificador: MTS-ALT-001 Version: 1.5.0 Fecha: 2025-12-02 Ultima Revision: Iteracion 10 - ACL9-004 SMS de emergencia para tier Free Autor: SpecQueen


1. Propósito

Este módulo gestiona el sistema de recordatorios y notificaciones para asegurar que el paciente tome sus medicamentos a tiempo, con escalamiento a cuidadores cuando sea necesario.

2. Actores

Actor Descripción
Paciente Recibe alertas y configura preferencias
Cuidador Recibe alertas escaladas
Contacto de Emergencia Recibe alertas críticas
Sistema Programa, envía y escala alertas

3. Tipos de Notificaciones

3.1. Clasificación por Propósito

Tipo Descripción Prioridad
Recordatorio de toma Hora de tomar medicamento Alta
Confirmación pendiente No ha registrado la toma Alta
Toma omitida No tomó el medicamento Alta
Reabastecimiento Medicamento por agotarse Media
Caducidad Medicamento próximo a vencer Media
Cita próxima Recordatorio de cita médica Media
Logro obtenido Gamificacion Baja
Resumen diario Estadisticas del dia Baja
Sistema Actualizaciones, seguridad Variable
Recordatorio medicion Hora de medir (glucosa, presion, etc.) Alta
Valor critico Medicion fuera de rango critico Critica
Recordatorio tratamiento Hora de realizar tratamiento Alta

3.2. Clasificación por Urgencia

Nivel Descripción Comportamiento
CRÍTICA Requiere acción inmediata Sonido persistente, vibración, bypass DND
ALTA Importante, tiempo limitado Sonido, vibración
MEDIA Informativa importante Sonido suave
BAJA Informativa general Silenciosa

4. Funcionalidades

4.1. Recordatorios de Toma (MTS-ALT-001-F01)

4.1.1. Descripción 4.1

Notificaciones programadas para recordar cada toma de medicamento.

4.1.2. Secuencia de Recordatorios

flowchart TD
    A[T-5min: Pre-alerta opcional] --> B[T: Alerta principal]
    B --> C{Usuario responde?}
    C -->|Tomado| D[FIN]
    C -->|Posponer| E[Reprogramar]
    C -->|No responde| F[T+15min: Primer recordatorio]
    F --> G{Usuario responde?}
    G -->|Tomado| D
    G -->|Posponer| E
    G -->|No responde| H[T+30min: Segundo recordatorio]
    H --> I{Usuario responde?}
    I -->|Tomado| D
    I -->|Posponer| E
    I -->|No responde| J[T+60min: Alerta de omisión + notificar cuidador]

    style A fill:#e1f5fe
    style B fill:#fff59d
    style J fill:#ffcdd2

4.1.3. Mensajes por etapa

  • T-5min: "En 5 minutos: Medicinas del desayuno"
  • T: "Hora de tomar: Metformina, Lisinopril" [Tomado] [Posponer] [Ver]
  • T+15min: "Recordatorio: Medicinas del desayuno pendientes"
  • T+30min: "No olvides tus medicinas del desayuno"
  • T+60min: "Toma omitida: Medicinas del desayuno"

4.1.4. Configuración de Recordatorios

Opción Valores Default
Pre-alerta Desactivada, 5min, 10min, 15min Desactivada
Recordatorio 1 5-30 min 15 min
Recordatorio 2 15-60 min 30 min
Marcar omitido 30-120 min 60 min
Sonido Lista de tonos Default del sistema
Vibración Sí/No
LED (Android) Color Azul

4.1.5. Contenido de la Notificación

┌────────────────────────────────────────┐
│ MedTime                          08:00 │
├────────────────────────────────────────┤
│ Hora de tomar tus medicamentos           │
│                                          │
│ 💊 Metformina 850mg                      │
│ 💊 Lisinopril 10mg                       │
│                                          │
│ Con el desayuno                          │
│                                          │
│ [✓ Tomado]  [⏰ Posponer]  [Ver →]       │
└────────────────────────────────────────┘

4.1.6. Privacidad en notificaciones

  • Nombres de medicamentos solo si configurado
  • Opción de mostrar solo "Recordatorio de MedTime"
  • No mostrar en pantalla de bloqueo (configurable)

4.2. Escalamiento a Cuidadores (MTS-ALT-001-F02)

4.2.1. Descripción 4.2

Notificación automática a cuidadores cuando el paciente no responde. Solo disponible para Pro/Perfect.

4.2.2. Disponibilidad por Tier

Tier Escalamiento a Cuidadores Sync de Calendarios
Free No disponible (sin cuidadores) N/A
Pro Disponible con ventana configurable (15-90 min) Máximo 1 cuidador
Perfect Disponible con ventana configurable (15-90 min) Máximo 5 cuidadores

4.2.3. Sincronización de Calendarios con Cuidadores

Los calendarios de tomas se sincronizan con los dispositivos de los cuidadores. Esto permite que:

  • Si el paciente no registra la toma, la alerta se genera localmente en el dispositivo del cuidador
  • Si no hay conexión para enviar actualización, la alerta se genera localmente en el cuidador
  • El cuidador tiene su propia copia del calendario de tomas
flowchart LR
    subgraph DP[Dispositivo Paciente]
        CP[Calendario de Tomas]
        AP[Alerta local para paciente]
        CP --> AP
    end

    subgraph DC[Dispositivo Cuidador]
        CC[Calendario de Tomas - copia]
        AC[Alerta local para cuidador]
        CC --> AC
    end

    CP <-->|sync| CC

    style DP fill:#e3f2fd
    style DC fill:#fff3e0

4.2.4. Flujo de Escalamiento

flowchart TD
    A[Toma no confirmada después de ventana] --> B{Paciente tiene cuidadores con permiso?}
    B -->|No| C[Solo marcar como omitida]
    B -->|Sí| D{Hay conexión?}

    D -->|Sí| E[Servidor notifica a cuidadores]
    D -->|No| F[Alerta local en dispositivo cuidador]

    E --> G[Cuidador recibe alerta]
    F --> G

    G --> H{Acción del cuidador?}
    H -->|Confirmar supervisión| I[Registrar supervisión]
    H -->|Marcar como tomado| J{Tiene permiso?}
    H -->|Contactar paciente| K[Abrir canal comunicación]

    J -->|Sí| L[Registrar toma con nota de cuidador]
    J -->|No| M[Mostrar error de permisos]

    I --> N[Sistema registra evento]
    L --> N
    N --> O[Notificar al paciente del registro]

    style A fill:#fff59d
    style G fill:#81c784
    style L fill:#64b5f6

4.2.5. Configuración de Escalamiento

Opción Descripción Free Pro Perfect
Activar escalamiento Habilitar notificaciones a cuidador N/A
Ventana de espera Tiempo después de hora programada N/A 15-90 min (configurable) 15-90 min (configurable)
Horario de escalamiento Solo en ciertos horarios N/A Configurable Configurable
Medicamentos críticos Escalar solo para ciertos medicamentos N/A Configurable Configurable
Máximo cuidadores con sync Límite de calendarios sincronizados N/A 1 5

Validación Iteración 13: La ventana de espera para escalamiento debe estar entre 15 y 90 minutos. Valores fuera de este rango serán rechazados por la UI y API con código de error VALIDATION_ERROR.


4.3. Alertas de Emergencia (MTS-ALT-001-F03)

4.3.1. Descripción 4.3

Notificaciones a contactos de emergencia en situaciones críticas.

4.4. Alertas de Emergencia para Tier Free (ACL9-004)

Decision del Director Round 9 (PREG-R9-004): Opcion B - SMS local desde telefono del usuario.

4.4.1. Descripcion

Aunque el tier Free es 100% offline y no tiene acceso a servicios de notificacion del servidor, puede enviar SMS de emergencia usando la funcionalidad nativa del telefono.

4.4.2. Funcionamiento

Aspecto Comportamiento
Mecanismo SMS nativo del dispositivo (no requiere servidor)
Costo El usuario paga el SMS segun su plan telefonico
Contenido Mensaje predefinido personalizable
Activacion Manual (boton de panico) o automatica configurable
Contactos Almacenados localmente como referencia

4.4.3. Flujo de Emergencia SMS (Free)

flowchart TD
    A[Usuario Free activa alerta de emergencia] --> B{Tipo de activacion?}

    B -->|Boton de panico| C[Mostrar confirmacion]
    B -->|3 tomas criticas omitidas| D[Sistema sugiere enviar SMS]

    C --> E{Confirma envio?}
    D --> F{Usuario acepta?}

    E -->|Si| G[Preparar SMS]
    E -->|No| H[Cancelar]
    F -->|Si| G
    F -->|No| I[Registrar rechazo]

    G --> J[Abrir app SMS nativa]
    J --> K[Pre-llenar mensaje y destinatarios]
    K --> L[Usuario presiona Enviar]
    L --> M[SMS enviado via operador]

4.4.4. Mensaje de Emergencia Predefinido

ALERTA DE MEDTIME

[Nombre] necesita asistencia.
Ultima actividad: [fecha/hora]

Contactar urgente.

Este mensaje fue enviado desde MedTime.

4.4.5. Configuracion de Emergencia SMS (Free)

+--------------------------------------------------+
| ALERTAS DE EMERGENCIA                             |
+--------------------------------------------------+

Como usuario Free, puedes enviar SMS de emergencia
usando tu telefono. El costo del SMS lo cubre tu
plan telefonico.

Contacto de emergencia 1:
Nombre: [_________________________]
Telefono: [_________________________]
Relacion: [Familiar v]

Contacto de emergencia 2:
Nombre: [_________________________]
Telefono: [_________________________]
Relacion: [Amigo v]

Activacion automatica:
[ ] Sugerir enviar SMS tras 3 tomas criticas omitidas
    (El SMS no se envia automaticamente, solo se sugiere)

[Guardar contactos]
+--------------------------------------------------+

4.4.6. Diferencias con Pro/Perfect

Aspecto Free Pro/Perfect
Mecanismo SMS nativo del telefono Push servidor + SMS incluidos
Automatizacion Solo sugerencia, usuario decide Automatico configurable
Costo SMS Usuario paga Incluido en suscripcion
Contactos 2 maximo 10 maximo
Notificacion a cuidadores No disponible Si

4.4.7. Reglas de Negocio SMS Emergencia Free

ID Regla
RN-EMG-F001 SMS de emergencia Free usa app nativa del telefono
RN-EMG-F002 Maximo 2 contactos de emergencia en Free
RN-EMG-F003 SMS en Free: el TRIGGER es automático (sistema detecta 3 omisiones y sugiere), pero el ENVÍO es siempre manual (usuario confirma y usa app SMS nativa)
RN-EMG-F004 Usuario puede personalizar el mensaje de emergencia
RN-EMG-F005 Costo del SMS es responsabilidad del usuario

Nota para Pro/Perfect: Los contactos de emergencia tienen alertas automaticas via servidor.

4.4.8. Activación del Botón de Pánico (UF-SMS-001)

Decisión Director Iteración 11: Opción C - Shake gesture + widget + acceso desde alertas.

Método de Activación Descripción Disponibilidad
Shake Gesture Agitar el teléfono 3 veces rápidamente Todos los tiers
Widget Pantalla Principal Botón rápido en home screen Todos los tiers
Desde Alerta de Emergencia Botón en notificación de toma crítica omitida Todos los tiers
Menú de la App Configuración > Emergencia > Activar Todos los tiers
4.4.8.1. Configuración de Shake Gesture
+--------------------------------------------------+
| BOTÓN DE PÁNICO                                   |
+--------------------------------------------------+

Shake Gesture:
[X] Activar agitando el teléfono 3 veces
    Sensibilidad: [=====○====] Media

    IMPORTANTE: Solo funciona cuando la app está
    abierta o en segundo plano reciente.

Widget:
[X] Agregar botón de pánico a pantalla principal
    [Agregar Widget]

Confirmación:
[X] Pedir confirmación antes de enviar
    (Evita activaciones accidentales)

Tiempo de espera: [5 segundos v]
(Si no cancela en este tiempo, se envía)

+--------------------------------------------------+
4.4.8.2. Flujo de Activación por Shake
flowchart TD
    A[Usuario agita teléfono 3x] --> B{App en primer plano o background?}
    B -->|Sí| C[Vibrar para confirmar detección]
    B -->|No| D[No detectado]

    C --> E[Mostrar pantalla de confirmación]
    E --> F{Confirmación requerida?}

    F -->|Sí| G[Mostrar countdown 5s]
    F -->|No| H[Enviar alerta inmediatamente]

    G --> I{Usuario cancela?}
    I -->|Sí| J[Cancelar y registrar]
    I -->|No timeout| H

    H --> K[Seguir flujo de emergencia por tier]

4.4.9. Condiciones de Activación

Condición Descripción
Tomas críticas consecutivas 3+ tomas omitidas de medicamentos marcados como críticos
Botón de emergencia / Shake Paciente activa manualmente (shake, widget, o menú)
Patrón anómalo Detección de comportamiento inusual

4.4.10. Flujo de Emergencia

flowchart TD
    A[Sistema detecta condición de emergencia] --> B[Mostrar confirmación al paciente]
    B --> C{Paciente responde?}

    C -->|Cancela| D[No enviar alerta]
    C -->|Confirma| E[Preparar notificación]
    C -->|No responde en 5 min| E

    E --> F[Notificar contactos por prioridad]
    F --> G[Incluir en mensaje:<br/>- Nombre paciente<br/>- Situación detectada<br/>- Última actividad<br/>- Instrucciones contacto]

    G --> H[Sistema registra evento]
    D --> I[Registrar cancelación]

    style A fill:#ffcdd2
    style E fill:#fff59d
    style G fill:#81c784

4.5. Modo No Molestar Inteligente (MTS-ALT-001-F04)

4.5.1. Descripción 4.4

Gestión inteligente de silenciamiento que no compromete tomas críticas.

4.5.2. Configuración

Opción Descripción
Horarios de silencio Rangos de hora sin notificaciones
Excepciones Medicamentos que ignoran el modo
Sincronizar con sistema Respetar DND del teléfono
Override para críticos Alertas críticas siempre suenan

4.5.3. Comportamiento en Modo No Molestar

Tipo de Alerta Comportamiento
Toma regular Silenciada, registrada para mostrar al salir
Toma crítica Suena según configuración de override
Emergencia Siempre suena
Informativas Silenciadas

4.6. Preferencias de Canal (MTS-ALT-001-F05)

Decision ACL6-002: Canales basicos v1.0 (push/SMS/email), WhatsApp placeholder v1.5.

4.6.1. Descripcion 4.5

Configuracion de como recibir diferentes tipos de notificaciones.

4.6.2. Canales Disponibles por Tier

Canal Free Pro Perfect Version
Push local Si Si Si v1.0
Push servidor No Si Si v1.0
SMS No 3/mes 10/mes v1.0
Email No Si Si v1.0
WhatsApp No No Si v1.5
Telegram No No Placeholder v2.0
Llamada automatica No Solo emergencia Emergencia + criticos v1.0

Nota: El tier Free solo tiene acceso a alertas locales (notificaciones del sistema operativo). No tiene acceso a push del servidor, SMS, email ni llamadas.

4.6.3. Personalizacion de Alertas por Tier

Aspecto Free Pro Perfect
Sonidos predefinidos 3 opciones 10 opciones 10 + personalizados
Patrones de vibracion 2 opciones 5 opciones 5 + personalizados
Volumen independiente No Si Si
LED (Android) Color fijo 3 colores Color personalizado
Bypass DND Solo emergencias Criticos + emergencias Configurable

4.6.4. Configuracion por Tipo de Alerta

Alerta Push SMS Email
Recordatorio toma Si Opcional -
Toma omitida Si Opcional -
Escalamiento cuidador Si Si -
Emergencia Si Si Si
Reabastecimiento Si - Opcional
Resumen diario - - Si
Valor critico Si Opcional -
Recordatorio medicion Si - -

4.6.5. Notificaciones para Cuidadores

Tipo Contenido Canales Disponibles
Toma omitida "[Paciente] no ha tomado sus medicinas de las [hora]" Push, SMS
Toma confirmada "[Paciente] tomo sus medicinas" (opcional) Push
Valor critico "[Paciente] registro glucosa [valor] - requiere atencion" Push, SMS, Llamada
Resumen diario "Hoy [Paciente] tuvo adherencia del [X]%" Push, Email

4.6.6. Configuracion de Sonidos

Sonido Descripcion Disponibilidad
Default Sonido del sistema Todos
Suave Tono melodico corto Todos
Urgente Tono alarmante repetitivo Todos
Medicamento Sonido tematico Pro/Perfect
Campanilla Tono de campana Pro/Perfect
Naturaleza Sonidos naturales Pro/Perfect
Personalizado Archivo de usuario Perfect

4.6.7. Patrones de Vibracion

Patron Descripcion Uso Recomendado
Corto Un pulso breve Informativas
Doble Dos pulsos Recordatorios
Largo Pulso continuo 1s Urgentes
Patron 1 Corto-largo-corto Medicamentos
Patron 2 Tres pulsos rapidos Criticos

4.7. Notificaciones Locales Offline (MTS-ALT-001-F06)

4.7.1. Descripción 4.6

Funcionalidad de alertas sin conexión a internet.

4.7.2. Implementación

Plataforma Mecanismo
iOS UNNotificationRequest con trigger de calendario
Android AlarmManager + WorkManager

4.7.3. Comportamiento Offline

  • Alertas programadas funcionan sin conexión (todos los tiers)
  • Registro de tomas se almacena localmente
  • Sincronización al recuperar conexión (Pro/Perfect)
  • Escalamiento a cuidadores: alertas locales en dispositivo del cuidador (ver sección 4.2)
  • Máximo 7 días de alertas pre-programadas

Importante: Gracias a la sincronización de calendarios con cuidadores, las alertas de escalamiento funcionan incluso si el paciente está offline. El cuidador tiene una copia del calendario y genera alertas localmente.


4.8. Alertas de Valores Criticos de Eventos de Salud (MTS-ALT-001-F07)

Decision ACL5-009: Sistema completo pero configurable por usuario. Contacto emergencia requiere consentimiento.

4.8.1. Descripcion

Alertas especiales para mediciones de salud (glucosa, presion arterial, etc.) que detectan valores fuera de rangos seguros.

4.8.2. Niveles de Alerta por Medicion

Medicion Informativo Advertencia Critico
Glucosa ayuno 100-125 mg/dL >125 o <70 >300 o <50 mg/dL
Glucosa post 140-180 mg/dL >180 o <70 >300 o <50 mg/dL
Presion Sistolica 120-139 mmHg >140 o <90 >180 o <70 mmHg
Presion Diastolica 80-89 mmHg >90 o <60 >120 o <50 mmHg
SpO2 94-95% 90-93% <90%
Temperatura 37.3-38.0 C 38.1-39.0 C >40 o <35 C
Frecuencia Cardiaca 100-120 BPM >120 o <50 >150 o <40 BPM

4.8.3. Flujo de Alerta por Valor Critico

flowchart TD
    A[Usuario registra medicion] --> B{Valor en rango?}
    B -->|Normal| C[Guardar sin alerta]
    B -->|Fuera de rango| D{Nivel de criticidad?}

    D -->|Informativo| E[Indicador visual amarillo]
    D -->|Advertencia| F[Push prioritario + sugerencia]
    D -->|Critico| G[Alerta pantalla completa]

    E --> H[Guardar medicion]
    F --> I[Mostrar recomendacion de accion]
    I --> H

    G --> J{Usuario confirma valor correcto?}
    J -->|Si| K{Contacto emergencia configurado?}
    J -->|No, fue error| L[Permitir correccion]
    L --> A

    K -->|Si, con consentimiento| M[Notificar contacto emergencia]
    K -->|No| N[Sugerir configurar contacto]
    M --> O[Mostrar sugerencias de accion inmediata]
    N --> O

    O --> P{Usuario reconoce alerta?}
    P -->|Si| Q[Guardar con flag critico]
    P -->|No responde 5 min| R[Escalar a siguiente contacto]
    R --> Q

4.8.4. Sugerencias de Accion por Tipo de Alerta

Situacion Sugerencia Accion del Sistema
Glucosa < 50 mg/dL "Consume 15g carbohidratos rapidos. Mide en 15 min." Timer de 15 min + recordatorio
Glucosa > 300 mg/dL "Hidratate. Si hay nauseas/confusion, llama emergencias." Boton llamar 911
Presion > 180/120 "Sientate y descansa 5 min. Si persiste, contacta medico." Timer de 5 min + recordatorio
SpO2 < 90% "Si hay dificultad respiratoria, llama emergencias." Boton llamar 911 visible
FC > 150 BPM reposo "Descansa y respira profundo. Si continua, busca atencion." Tecnicas de relajacion
Temperatura > 40 C "Aplica compresas frias. Si no baja, busca atencion." Guia de primeros auxilios

4.8.5. Configuracion de Alertas de Valores Criticos

Opcion Descripcion Default
Alertas activas Habilitar sistema de alertas para mediciones Si
Nivel minimo notificar Desde que nivel notificar (Informativo/Advertencia/Critico) Advertencia
Notificar cuidadores Enviar alertas criticas a cuidadores Si (si tiene)
Contacto emergencia auto Notificar automaticamente en emergencia No (requiere opt-in)
Sonido alertas criticas Bypass modo silencio para criticos Si
Sugerencias de accion Mostrar recomendaciones automaticas Si
Rangos personalizados Usar rangos definidos por el usuario No

4.8.6. Disclaimers Obligatorios

Cada alerta critica incluye:

IMPORTANTE: Esta alerta es informativa. MedTime NO es un dispositivo
medico. En caso de emergencia, contacte a servicios de emergencia
de su localidad o a su profesional de salud.

4.8.7. Reglas de Negocio de Alertas de Valores Criticos

ID Regla
RN-ALT-017 Alertas criticas de valores de salud usan sonido persistente
RN-ALT-018 Contacto de emergencia solo se notifica con consentimiento previo explicito
RN-ALT-019 Sugerencias de accion siempre incluyen disclaimer medico
RN-ALT-020 Usuario puede configurar rangos personalizados (Pro/Perfect)
RN-ALT-021 Historial de alertas criticas se mantiene 6 anos (HIPAA)
RN-ALT-022 Alertas de mediciones funcionan offline con notificacion local

4.9. Acciones desde Notificaciones (MTS-ALT-001-F08)

Decision ACL6-014: Acciones completas desde notificaciones sin abrir app v1.0.

4.9.1. Descripcion 4.8

Sistema de acciones rapidas que el usuario puede ejecutar directamente desde las notificaciones sin necesidad de abrir la aplicacion.

4.9.2. Acciones por Tipo de Notificacion

4.9.2.1. Recordatorio de Toma
Accion Comportamiento Plataforma
Tomado Confirma todas las tomas del evento iOS, Android
Posponer Muestra opciones (15, 30, 60 min) iOS, Android
Ver Abre app en detalle del evento iOS, Android
Agregar nota Quick reply para notas (Android) Android
4.9.2.2. Recordatorio de Medicion
Accion Comportamiento Plataforma
Registrar Abre captura rapida de valor iOS, Android
Posponer Reprograma 15 min iOS, Android
Omitir Marca como omitida iOS, Android
4.9.2.3. Alerta a Cuidador
Accion Comportamiento Plataforma
Ver Abre detalle del paciente iOS, Android
Llamar Inicia llamada al paciente iOS, Android
Mensaje Abre mensajeria con paciente iOS, Android
Marcar visto Confirma que vio la alerta iOS, Android
4.9.2.4. Resumen Diario
Accion Comportamiento Plataforma
Ver detalle Abre estadisticas completas iOS, Android
Compartir Comparte resumen con cuidador iOS, Android

4.9.3. Interfaz de Notificacion Expandida

+------------------------------------------+
| MedTime                           08:00  |
| Hora de tomar tus medicamentos           |
|                                          |
| Metformina 850mg                         |
| Lisinopril 10mg                          |
|                                          |
| [Tomado] [Posponer v] [Ver]              |
+------------------------------------------+

4.9.4. Menu de Posponer

+------------------------------------------+
| Posponer por:                            |
|                                          |
| [15 min] [30 min] [60 min]               |
|                                          |
| [Cancelar]                               |
+------------------------------------------+

4.9.5. Quick Reply para Notas (Android)

+------------------------------------------+
| Agregar nota a la toma:                  |
| [Tome con el desayuno              ]     |
| [Enviar]                                 |
+------------------------------------------+

4.9.6. Flujo de Accion desde Notificacion

flowchart TD
    A[Notificacion aparece] --> B{Usuario interactua?}
    B -->|Si| C{Tipo de accion?}
    B -->|No| D[Mantener notificacion]

    C -->|Tomado| E[Registrar toma inmediatamente]
    C -->|Posponer| F[Mostrar opciones de tiempo]
    C -->|Ver| G[Abrir app en contexto]
    C -->|Nota| H[Mostrar input de texto]

    E --> I[Haptic feedback]
    I --> J[Actualizar notificacion a confirmada]
    J --> K[Cancelar recordatorios pendientes]

    F --> L{Tiempo seleccionado?}
    L -->|15/30/60 min| M[Reprogramar alerta]
    M --> N[Actualizar notificacion]

    G --> O[App se abre en pantalla relevante]

    H --> P[Usuario escribe nota]
    P --> Q[Guardar nota con la toma]
    Q --> E

4.9.7. Reglas de Acciones desde Notificaciones

ID Regla
RN-ALT-023 Accion Tomado registra hora actual como hora de toma
RN-ALT-024 Posponer cancela recordatorios intermedios programados
RN-ALT-025 Quick reply disponible solo en Android
RN-ALT-026 Acciones desde notificacion requieren desbloqueo de dispositivo
RN-ALT-027 Notificacion se actualiza visualmente despues de accion

5. Flujos Detallados

5.1. Flujo Completo de Recordatorio

flowchart TD
    Start[Programación] --> PreAlert[Pre-alerta T-5min<br/>opcional]
    PreAlert --> MainAlert[Alerta Principal T]

    MainAlert --> Q1{Respuesta?}
    Q1 -->|Tomado| End1[FIN]
    Q1 -->|No responde| R1[Recordatorio 1<br/>T+15min]

    R1 --> Q2{Respuesta?}
    Q2 -->|Tomado| End2[FIN]
    Q2 -->|No responde| R2[Recordatorio 2<br/>T+30min]

    R2 --> Q3{Respuesta?}
    Q3 -->|Tomado| End3[FIN]
    Q3 -->|No responde| R3[Marcar Omitido<br/>+ Escalar<br/>T+60min]

    style PreAlert fill:#e1f5fe
    style MainAlert fill:#fff59d
    style R1 fill:#ffcc80
    style R2 fill:#ffab91
    style R3 fill:#ffcdd2
    style End1 fill:#c8e6c9
    style End2 fill:#c8e6c9
    style End3 fill:#c8e6c9

6. Reglas de Negocio

Referencia Canónica (Iteración 11): Las reglas de negocio centrales se encuentran en 06-reglas-de-negocio.md. Ver RN-ALT-001 a RN-ALT-007 y RN-EMG-F001 a RN-EMG-F005 en el documento central para definiciones autoritativas.

ID Regla
RN-ALT-001 Notificaciones de toma no incluyen nombres de medicamentos en preview por defecto
RN-ALT-002 Escalamiento solo ocurre si hay cuidador con permiso de alertas (Pro/Perfect)
RN-ALT-003 Máximo 3 recordatorios antes de marcar como omitido
RN-ALT-004 Alertas de emergencia no pueden silenciarse (Pro/Perfect)
RN-ALT-005 SMS solo disponible para Pro/Perfect (3 SMS/mes incluidos)
RN-ALT-006 Alertas offline se programan para 7 días máximo
RN-ALT-007 Posposición cancela recordatorios intermedios
RN-ALT-008 Toma confirmada cancela recordatorios pendientes (y notifica a cuidadores)
RN-ALT-009 Modo no molestar no afecta alertas marcadas como críticas
RN-ALT-010 Historial de notificaciones se mantiene 90 días
RN-ALT-011 Calendarios se sincronizan con dispositivos de cuidadores (Pro/Perfect)
RN-ALT-012 Alertas a cuidadores se generan localmente si no hay conexión
RN-ALT-013 Ventana de toma: Pro y Perfect = configurable (15-90 min)
RN-ALT-014 Contactos de emergencia con alertas automáticas solo para Pro/Perfect
RN-ALT-015 Máximo cuidadores con sync de calendario: Pro = 1, Perfect = 5
RN-ALT-016 Límite global de cuidadores por paciente: 10 (todos los tiers con cuidadores)

7. Modelo de Datos

7.1. Entidad Notificacion

Notificacion {
  id: UUID (PK)
  usuario_id: UUID (FK)
  tipo: enum
  prioridad: enum [CRITICA, ALTA, MEDIA, BAJA]
  titulo: string
  mensaje: string
  datos: jsonb
  canales: array
  estado: enum [PENDIENTE, ENVIADA, ENTREGADA, LEIDA, FALLIDA]
  programada_para: timestamp
  enviada_at: timestamp
  entregada_at: timestamp
  leida_at: timestamp
  created_at: timestamp
}

7.2. Entidad ConfiguracionAlertas

ConfiguracionAlertas {
  id: UUID (PK)
  usuario_id: UUID (FK)
  pre_alerta_minutos: integer
  recordatorio_1_minutos: integer
  recordatorio_2_minutos: integer
  marcar_omitido_minutos: integer
  sonido: string
  vibracion: boolean
  led_color: string
  mostrar_nombres_medicamentos: boolean
  mostrar_en_pantalla_bloqueo: boolean
  modo_no_molestar: jsonb
  escalamiento_activo: boolean
  escalamiento_minutos: integer
  created_at: timestamp
  updated_at: timestamp
}

7.3. Entidad HistorialNotificacion

HistorialNotificacion {
  id: UUID (PK)
  notificacion_id: UUID (FK)
  evento: enum [CREADA, PROGRAMADA, ENVIADA, ENTREGADA, LEIDA, ACCION, DESCARTADA]
  canal: string
  datos_adicionales: jsonb
  timestamp: timestamp
}

8. Criterios de Aceptación

ID Criterio
AC-001 Paciente recibe notificación push a la hora programada
AC-002 Paciente puede confirmar toma desde la notificación
AC-003 Sistema envía recordatorios si no hay confirmación
AC-004 Cuidador recibe alerta si paciente no responde
AC-005 Alertas funcionan sin conexión a internet
AC-006 Paciente puede configurar horarios de silencio
AC-007 Alertas críticas ignoran modo no molestar
AC-008 Contactos de emergencia reciben alertas en situaciones críticas
AC-009 Paciente puede elegir canales por tipo de alerta
AC-010 Historial de notificaciones disponible por 90 días

9. Casos de Error

9.1. ERR-ALT-F001: App SMS Nativa No Disponible

Campo Valor
Código ERR-ALT-F001
Descripción No se puede abrir la aplicación de SMS del dispositivo
Causa Dispositivo sin app SMS (tablets), app deshabilitada, permisos denegados
Detección Intent/URL scheme de SMS falla al ejecutar
Acción Usuario Mostrar: "No se puede enviar SMS desde este dispositivo. ¿Desea copiar el mensaje?"
Acción Sistema Ofrecer copiar mensaje al clipboard, sugerir canales alternativos (email, WhatsApp)
Severidad Media
Recuperación Usuario elige canal alternativo o copia mensaje manualmente

9.2. ERR-ALT-F002: Número de Contacto Inválido

Campo Valor
Código ERR-ALT-F002
Descripción El número de teléfono del contacto de emergencia es inválido
Causa Número mal formateado, código de país faltante, número dado de baja
Detección Validación de formato falla o carrier rechaza mensaje
Acción Usuario Mostrar: "El número de [Contacto] parece inválido. Por favor verifíquelo."
Acción Sistema Marcar contacto para revisión, intentar con siguiente contacto si existe
Severidad Alta (en contexto de emergencia)
Recuperación Prompt para actualizar número, continuar con otros contactos disponibles

9.3. ERR-ALT-F003: SMS Sin Crédito/Cuota Agotada

Campo Valor
Código ERR-ALT-F003
Descripción Se agotó la cuota mensual de SMS del tier o el servicio no tiene crédito
Causa Cuota de tier alcanzada (Pro: 3/mes, Perfect: 10/mes), error de billing del provider
Detección Contador de SMS >= límite del tier, o error de crédito de Twilio/provider
Acción Usuario Mostrar: "Has alcanzado tu límite mensual de SMS. Considera actualizar tu plan."
Acción Sistema Cambiar automáticamente a push notification, log para analytics de upgrades
Severidad Media
Recuperación Fallback a push notification, ofrecer upgrade de tier
Excepción Alertas de emergencia SIEMPRE se envían sin importar cuota

9.4. Reglas de Manejo de Errores de Alertas

ID Regla
RN-ERR-ALT-001 Errores de SMS no bloquean el envío por otros canales
RN-ERR-ALT-002 Alertas de emergencia ignoran límites de cuota
RN-ERR-ALT-003 Fallo en un contacto no detiene el intento con otros contactos
RN-ERR-ALT-004 Todos los errores de entrega se registran en historial de notificación
RN-ERR-ALT-005 Usuario recibe notificación si su alerta de emergencia no pudo entregarse

9.5. Diagrama de Fallback de Canales

flowchart TD
    A[Enviar Alerta] --> B{Tipo de Alerta?}

    B -->|Regular| C[Intentar Canal Preferido]
    B -->|Emergencia| D[Todos los Canales Simultáneos]

    C --> E{Canal OK?}
    E -->|Si| F[Alerta Enviada]
    E -->|No| G{Hay Fallback?}

    G -->|Si| H[Intentar Siguiente Canal]
    H --> E
    G -->|No| I[Log Error + Notificar Usuario]

    D --> J[Push]
    D --> K[SMS]
    D --> L[Email]
    D --> M[Llamada]

    J --> N{OK?}
    K --> O{OK?}
    L --> P{OK?}
    M --> Q{OK?}

    N -->|No| R[Log ERR-ALT-xxx]
    O -->|No| S[Log ERR-ALT-xxx]
    P -->|No| T[Log ERR-ALT-xxx]
    Q -->|No| U[Log ERR-ALT-xxx]

10. Referencias


Documento generado por SpecQueen - La especificación funcional ES el sistema.