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 |
Sí |
| 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 |
Sí |
Sí |
| 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] |
+------------------------------------------+
+------------------------------------------+
| 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 |
| 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.