Puntuación globalPuntuación 0-100 ponderada por bloques (biométrico, metabólico, sueño, actividad, analítica). Historial, comparativa de períodos y evolución por dimensión.
Tablero de saludVista resumen diaria con todos los indicadores clave, alertas activas, puntos del día y comparativa con días anteriores.
Balance energético diarioIngesta real corregida vs. gasto total estimado. Superávit / déficit en kcal. Evolución semanal y mensual.
Análisis nutricional y valoraciones IARespuesta del Lenguaje de Modelo (LLM) con desglose de macros y observaciones contextualizadas con el perfil y objetivos del usuario.
Evolución biométrica y tendenciasRegresiones, medias móviles y tendencias de peso, HRV, FC y sueño. Fotofija periódica del estado global de salud.
Evolución del PesoSepara el peso de fondo de las oscilaciones normales del día (agua, intestino, sal, comidas) y lo cuenta en lenguaje llano: si vas bajando, subiendo, estable o aún sin conclusión, a qué ritmo semanal, cuánto llevas desde tu punto de partida y si el peso de hoy está dentro de lo normal para ti. Gráfico con pesadas, línea de fondo y banda de lo normal. Si te pesas solo de vez en cuando, ofrece una visión general del tramo (cambio total y ritmo medio por semana). Incluye un bloque que explica por qué conviene pesarse cada mañana. No guarda nada: se calcula en el momento.
Evolución longitudinal de analíticas clínicasSeries temporales de más de 50 biomarcadores organizados por sistema fisiológico (lipídico, glucémico, renal, hepático, tiroides, inflamación, micronutrientes, hematología) con gráfica Chart.js por categoría. Matriz comparativa interactiva biomarcadores × fechas con delta Δ codificado por semántica clínica del parámetro. Análisis longitudinal IA asíncrono que interpreta tendencias sostenidas agrupadas por sistema, tomando al propio paciente como referencia — sin baremos poblacionales externos.
SugerenciasIdeas accionables basadas en las reglas activas, los puntos por bloque y la distancia a los objetivos del usuario.
Análisis de impacto etílicoInforme del efecto cuantificado del alcohol: pérdida de peso real vs. contrafactual sin alcohol, coeficiente del modelo (retención de peso a la mañana siguiente por gramo de alcohol), equivalente calórico del período y seguimiento, en series largas, de desviaciones persistentes que puedan indicar un compromiso de la beta-oxidación hepática.
Modelo multiusuario y mensajeríaTres perfiles: profesional (crea pacientes, gestiona sus propios datos y los del paciente en contexto de sesión), paciente (acceso propio, recibe indicaciones y solicitudes de permiso) y usuario autónomo. Mensajería asíncrona profesional → paciente con tipos Indicación y SolicitudPermiso (auditable, con ciclo de estado). Generación asistida por IA de documentos RGPD y contratos profesional-paciente.
Derecho al olvido y copias de seguridad RGPDEl flujo de baja de cuenta (Art. 17 RGPD) genera siempre una copia de seguridad completa de los datos del usuario antes de borrarlos, con periodo de gracia de 7 días si el paciente tiene un profesional vinculado. Independientemente de ese flujo, el panel de administración permite descargar en cualquier momento una copia de seguridad de los datos de un usuario sin iniciar ni requerir ningún proceso de eliminación de cuenta.
Seguridad, acceso y trazabilidadContraseñas de 12 o más caracteres y bloqueo de la cuenta durante 15 minutos tras 5 intentos fallidos. Verificación en dos pasos con aplicación autenticadora: obligatoria para el administrador y voluntaria para el resto (menú de la cuenta). Los tokens de las automatizaciones solo se guardan como hash y se envían por cabecera; los de Oura se cifran. Cuando un profesional consulta a un paciente se comprueba en cada petición que la relación sigue vigente y queda anotado en el registro de accesos (quién, a qué usuario, cuándo y qué petición, sin el contenido); también quedan anotadas las acciones del administrador sobre datos de usuarios. El administrador lo consulta en Administración → Registro de accesos. Antes de enviar datos a la IA se filtran los identificadores y, en las analíticas en PDF, solo viaja el texto sin cabeceras o una imagen que el usuario ha tapado. La evaluación de impacto (EIPD) se mantiene como documento interno editable solo por el administrador.
Restauración de datos de uso desde copia de seguridadEl panel de administración permite restaurar, desde un ZIP de copia de seguridad RGPD, los datos de uso diario (BioData y analítica clínica) que falten en la cuenta de un usuario activo. No restaura perfil ni tablas de históricos derivados (Health Score, Recovery, Energy Daily Balance) — esos se regeneran con los recálculos existentes una vez restaurados los datos crudos — ni sobrescribe nunca una fecha ya presente en BD, que es siempre prioritaria sobre la copia de seguridad. La recreación completa de una cuenta eliminada (perfil, mensajería, RGPD, Oura...) queda fuera de la app, como proceso manual extraordinario de back-office.
Adaptación metabólicaMódulo AdaptacionMetabolica (EnergyManager): compara TDEE teórico (EnergiaGastoTotalKcal) con TDEE real estimado por balance de masa (ingesta corregida − ΔPeso × 7700 kcal/kg) con regresión OLS para filtrar ruido hídrico. Clasifica la adaptación en Sin / Leve / Moderada / Severa. Emite alertas de reactivación metabólica (> 250 kcal) y proteína insuficiente (< 80 %). Serie histórica de 12 ventanas de 28 días en Chart.js. Snapshots persistidos en MetabolicAdaptationSnapshots. La interpretación por IA del histórico añade una serie semanal de ventanas de ~90 días (cálculo transitorio, sin persistir; mínimo 75 días con datos por ventana): las conclusiones sobre presencia o ausencia de adaptación se apoyan en esas ventanas, y sin ellas la IA solo describe la evolución reciente.
Consola sobre datos programados por el usuario (sólo administradores)Gestión de reglas, bloques, modificadores, plantillas de prompts y overrides sin tocar código. Debug declarativo para trazabilidad del scoring.
Panel de Recuperación y comparativa HealthKit vs OuraEl Panel de Recuperación calcula un baseline (media/desviación) independiente por fuente de HRV (SDNN de Apple Watch vs RMSSD de Oura) y compara cada día solo con días de la misma fuente. La página "HealthKit vs Oura" documenta, métrica por métrica, qué datos son equivalentes entre ambos dispositivos y cuáles requieren etiquetado o corrección. Cuando el HRV de una noche se sustituye por la mediana (marcado con asterisco), el detalle permite comprobar contra el export.xml de Apple Health del servidor qué lecturas se tomaron despierto: las lecturas despierto se descartan y el HRV de la noche se recalcula con las restantes dormidas.
Plan semanal y recuperación de sesionesVista con las 3 sesiones de la semana y cualquier sesión abierta de semanas anteriores (Pendiente/Fallida/Rotada/EnProgreso/CompletadaExterna), recuperable a hoy en cualquier momento — permite más de una sesión el mismo día, sin índice único de fecha que lo bloquee. Antes de sellar una sesión vencida como Fallida, comprueba si BiodataDiaria.MinutosEjercicioGym de ese día trae gimnasio real detectado por el wearable fuera del flujo guiado — en ese caso queda como CompletadaExterna ("Entrenaste (reloj)"), cuenta como adherencia real, pero no como sesión de fuerza con detalle (no suma a SesionesCompletadas ni a la valoración IA de progreso, que la reporta aparte). Como el wearable puede sincronizar tarde, también relee cada vez que se entra en el plan/progreso las Fallida ya selladas de la semana en curso y las corrige si para entonces ya hay gimnasio real — no solo en el instante exacto del vencimiento.
Seguimiento de recuperación tras un salto de pesoComplementa al aviso de salto abrupto: SaltoPesoDetector.DetectarRecuperacion busca, dentro de los últimos ~30 días, el salto más reciente que ya tenga pesadas reales posteriores, y compara la última contra la mediana (no un punto suelto) de los 5 días previos al evento — dentro del margen habitual de ese paciente cuenta como "recuperado", con los días que ha tardado. Si hay datos de HRV en la misma ventana, se añaden como comparación puramente informativa (sin veredicto de "normalizado sí/no": la variabilidad natural del HRV es demasiado amplia para fijar un umbral defendible). Inyectado como bloque aparte (SALTO_PESO_RECUPERADO) junto al de salto abrupto, en los mismos análisis IA.
Progreso de fuerzaComparativa de días de entrenamiento, sesiones completadas (con plan y de reloj), minutos de gimnasio y series registradas en la app entre ventanas de 30/60/90 días, progresión por patrón de movimiento, y gráficos Chart.js de evolución (repeticiones, series, descanso real) por ejercicio en un rango de fechas libre elegido por el usuario. Valoración IA asíncrona que cruza el entrenamiento con Recovery, peso y composición corporal.
Sueño: duración, regularidad y despertar precozAnálisis autorreferenciado del episodio principal de sueño de cada noche (SleepAnalysisService), en la zona horaria del perfil, comparado en primer lugar con la basal a largo plazo del propio usuario (hasta 365 días previos y no antes del 1 de abril de 2026, mínimo 28 noches); las referencias generales quedan como contexto o como inicialización sin histórico suficiente. La hora de despertar es el final del último tramo dormido, no la de salir de la cama. Duración media y porcentaje de noches con 7 h o más; regularidad como desviación típica de la hora de acostarse, de despertar y de la duración, con bandas del estudio MESA y un mínimo de 10 noches; despertar precoz cuando la noche termina al menos 90 min antes de la hora habitual de despertar del propio usuario (percentil 75 de las 28 noches anteriores), marcado como frecuente con 3 o más noches por semana en las últimas 4 semanas. El profesional ve además un cruce de noches precoces frente a noches normales cercanas (±14 días) en alcohol, kcal y ejercicio del día anterior y hora de acostarse, presentado como asociación y no como causa. Interpretación IA bajo demanda (prompt SUENO_ANALISIS) limitada a los hallazgos claramente destacados frente a la basal propia, con un máximo de dos sugerencias prudentes de una lista cerrada.
Oxigenación nocturnaCribado orientativo de apnea del sueño (SleepOxygenationService): SDS (Índice de Desaturación del Sueño, 0-100, objetivo) es un z-score de la SpO₂ media nocturna (ventana de sueño real de cada día, con franja de respaldo 22:00-07:00) contra el baseline personal, con la dirección invertida —aquí más alto es peor—, mínimo 5 lecturas/noche y 7 noches de baseline. SAP (Probabilidad de Apnea, 0-100) combina 50% SDS con 50% de un STOP-BANG simplificado de 7 factores, sin pesos diferenciados, renormalizado si faltan datos y marcado como "cribado incompleto" con menos de 4 de 7 disponibles. Lee las muestras de SpO₂ del reloj ya guardadas (SaturacionOxigenoRaw), llegue el dato por exportación automática o por la importación de Apple Health, y se recalcula en cada visita. Ninguna lectura se descarta; cada lectura baja se contrasta con la frecuencia cardiaca y respiratoria de ±15 min (FrecuenciaVitalRaw) frente a lo habitual del usuario en ese punto de la noche y la nota avisa de las que no responden o no se pueden verificar; un SDS "importante" exige además un episodio sostenido de desaturación esa noche, y en las noches poco fiables el SDS pesa un 20 % del SAP en vez de un 50 %. Presentado siempre como cribado, nunca como diagnóstico.
Evolución y calibración de SpO2Captura muestra a muestra (no solo el promedio diario) desde los dos pipelines de HealthKit, separando reposo (ventana de sueño real) de actividad, con mediana/IQR por día y un score 0-100 contra el propio historial. Calibración manual frente a un pulsioxímetro de referencia para activar un factor de corrección, sin tocar el dato que usa el resto de la app. Descarga del detalle diario en JSON para analizarlo en otra herramienta.