Saltar a contenido

MedTime - Integraciones

Identificador: MTS-INT-001 Version: 1.6.1 Fecha: 2025-12-05 Ultima Revision: Iteracion 13 - Referencias a investigaciones de cifrado Autor: SpecQueen



1. Introducción

Este documento describe las integraciones externas del sistema MedTime con servicios de terceros y APIs.

2. Mapa de Integraciones

flowchart TB
    MT[MedTime App]
    MT --> AUTH[Firebase Auth - Social Login]
    MT --> PUSH[Push Notif]
    MT --> OCR[OCR/IA Servidor]
    MT --> DRUG[Drug DB Propia]
    MT --> LOCAL[Almacenamiento Local]
    MT --> CLOUD[Cloud Sync Opcional]
    MT --> FHIR[FHIR futuro]

Arquitectura V1.0: MedTime V1.0 NO tiene backend propio. Toda la autenticacion se delega a Firebase Auth con proveedores sociales (Google/Apple). Los datos se almacenan 100% local con sincronizacion cloud opcional para Pro/Perfect.

Nota: Esta especificación funcional no define proveedores específicos. Las decisiones de implementación serán tomadas por el equipo de desarrollo.

3. Integraciones de Autenticación

3.1. Sistema de Autenticación (Firebase Auth)

OBS-IT13-046: V1.0 NO tiene backend propio. Solo Firebase Auth con proveedores sociales.

Aspecto Especificación
Propósito Gestión de identidad y autenticación
Tipo Firebase Authentication (sin backend propio)
Proveedores V1.0 Google Sign-In, Apple Sign-In
Protocolo OAuth 2.0 / OpenID Connect (gestionado por Firebase)
Flujos soportados Authorization Code + PKCE (automatico Firebase SDK)
Backend NO requerido - Firebase gestiona tokens y sesiones

3.1.1. Funcionalidades Requeridas (V1.0)

OBS-IT13-047: V1.0 solo soporta autenticacion social (Google/Apple). Email/password NO esta disponible en V1.0.

Funcionalidad Uso en MedTime Disponibilidad V1.0
Google Sign-In Autenticacion via cuenta Google Pro/Perfect
Apple Sign-In Autenticacion via Apple ID Pro/Perfect
Cuenta local (sin servidor) Uso offline sin autenticacion cloud Free
~~Email/Password~~ ~~Autenticacion principal~~ NO disponible V1.0
~~MFA~~ ~~TOTP, SMS~~ NO disponible V1.0
Brute Force Protection Gestionado automaticamente por Firebase Pro/Perfect

Nota V1.0: Firebase Auth gestiona toda la seguridad de autenticacion. El tier Free opera 100% offline sin autenticacion cloud (cuenta local sin sincronizacion).

Futuro (V1.5+): Email/password y MFA podrian agregarse si hay demanda de usuarios.

3.1.2. Requisitos de Seguridad (V1.0)

OBS-IT13-048: Politicas de longitud/complejidad/historial de contrasena NO aplican en V1.0 (solo autenticacion social).

Requisito Especificación V1.0 Notas
~~Longitud minima contrasena~~ N/A Solo social login
~~Complejidad~~ N/A Solo social login
~~Historial de contrasenas~~ N/A Solo social login
Proteccion brute force Gestionado por Firebase Auth Automatico
Timeout de sesion inactiva 15 minutos Aplica a sesion local de app
Timeout absoluto de sesion 24 horas Requiere re-autenticacion
Biometria/PIN local Requerido para acceso a app Ver seccion 3.2

Seguridad V1.0: La seguridad de autenticacion es delegada 100% a Firebase Auth y los proveedores de identidad (Google/Apple). Estos proveedores implementan sus propias politicas de seguridad robustas incluyendo MFA opcional del lado del usuario.


3.2. Biometría (Nativa)

Plataforma Tecnología API
iOS Face ID / Touch ID LocalAuthentication Framework
Android Fingerprint / Face BiometricPrompt API

4. Integraciones de Notificaciones

4.1. Notificaciones Push (Android)

Aspecto Especificación
Propósito Push notifications Android y Web
Disponibilidad Pro/Perfect (requiere conexión)
Fallback Notificaciones locales para Free y offline

4.1.1. Tipos de Mensaje

Tipo Uso Prioridad
Notification Recordatorios visibles High
Data Actualizaciones silenciosas Normal
Notification + Data Alertas con acción High

4.2. Notificaciones Push (iOS)

Aspecto Especificación
Propósito Push notifications iOS
Disponibilidad Pro/Perfect (requiere conexión)
Fallback Notificaciones locales para Free y offline

4.2.1. Categorías de Notificación

Categoría Acciones Interrupción
MEDICATION_REMINDER Tomado, Posponer, Ver Time Sensitive
CAREGIVER_ALERT Ver, Contactar Time Sensitive
EMERGENCY Responder Critical
INFO Ver Passive

4.3. Notificaciones SMS

Aspecto Especificación
Propósito Backup para push y alertas críticas
Disponibilidad Pro/Perfect (3 SMS/mes incluidos)
Uso Alertas a cuidadores, emergencias

5. Integraciones de OCR e IA

5.1. Procesamiento OCR de Recetas

Aspecto Especificación
Propósito Extracción de texto de recetas médicas
Disponibilidad por Tier Ver tabla abajo
Requisito Servicio de OCR con detección de texto en documentos

5.1.1. Disponibilidad por Tier

OBS-IT13-049: OCR incluido en suscripcion para Pro y Perfect. La diferencia entre tiers es el limite de usos, no costo adicional.

Tier Funcionalidad OCR Limite Mensual Costo Adicional
Free Solo captura de foto + entrada manual de datos N/A N/A
Pro OCR + IA incluido en suscripcion 50 recetas/mes Incluido
Perfect OCR + IA incluido en suscripcion Ilimitado Incluido

Nota: El OCR es independiente de la sincronizacion cloud. Un usuario Pro/Perfect puede usar OCR incluso si tiene desactivada la sincronizacion.

Diferencia Pro vs Perfect: Ambos tiers incluyen OCR en la suscripcion. La unica diferencia es el limite mensual: Pro tiene 50 recetas/mes, Perfect es ilimitado. NO hay costo adicional por uso de OCR en ninguno de los tiers pagos.

Ver MTS-RX-001 para especificacion completa del modulo de recetas.

5.1.2. Flujo de Procesamiento

OBS-IT13-050: Incluir preprocesamiento de imagen, anonimizacion manual y disclaimer de privacidad.

flowchart TD
    A[Usuario captura imagen de receta] --> B[Preprocesamiento Local]
    B --> C{Usuario revisa preview}
    C -->|Acepta| D[Anonimizacion Manual]
    C -->|Rechaza| A
    D --> E[Muestra disclaimer privacidad]
    E --> F{Usuario acepta enviar?}
    F -->|Si| G[Envio a servidor OCR]
    F -->|No| H[Solo almacenamiento local]
    G --> I[Extraccion OCR]
    I --> J[IA Estructuracion]
    J --> K[Resultado a dispositivo]
    K --> L[Almacenamiento local cifrado]
5.1.2.1. Preprocesamiento de Imagen (Local)
Paso Descripcion Proposito
1. Deteccion de documento Identificar bordes de la receta Recortar solo area relevante
2. Correccion de perspectiva Enderezar imagen inclinada Mejorar precision OCR
3. Mejora de contraste Optimizar legibilidad del texto Mejorar precision OCR
4. Reduccion de ruido Filtrar artefactos de imagen Reducir errores de lectura
5. Compresion optimizada Reducir tamano sin perder calidad Minimizar datos enviados
5.1.2.2. Anonimizacion Manual (Usuario)

Antes de enviar la imagen al servidor OCR, el usuario puede:

Accion Descripcion Herramienta
Ocultar datos personales Cubrir nombre del paciente, direccion, etc. Herramienta de borrado/difuminado
Ocultar datos del medico Opcional: ocultar datos si desea privacidad Herramienta de borrado/difuminado
Preview antes de envio Ver exactamente que se enviara al servidor Vista previa final

Importante: La anonimizacion es MANUAL y OPCIONAL. El usuario decide que ocultar. MedTime no anonimiza automaticamente para no afectar la precision del OCR.

5.1.2.3. Disclaimer de Privacidad

Antes del envio, se muestra al usuario:

AVISO DE PRIVACIDAD - Procesamiento OCR

La imagen de su receta sera enviada temporalmente a un servidor
para extraer el texto. Al continuar, usted acepta que:

- La imagen se procesara y se eliminara del servidor inmediatamente
- Solo el texto extraido se devuelve a su dispositivo
- MedTime NO almacena la imagen en la nube
- Usted puede ocultar datos personales antes del envio

[Ver politica de privacidad completa]

[Cancelar] [Acepto y Continuar]

Cumplimiento: Este flujo cumple con requisitos de consentimiento informado de LGPD, Ley Federal de Proteccion de Datos (Mexico), y mejores practicas HIPAA para transmision de PHI.

5.2. Estructuración con IA

Aspecto Especificación
Propósito Estructuración de texto OCR
Uso Extraer campos de texto libre
Privacidad Sin envío de PII identificable
Disponibilidad Junto con OCR (Pro: 50/mes, Perfect: ilimitado)

5.2.1. Campos a Extraer

OBS-IT13-051: Incluir institucion emisora (hospital, clinica) y datos de contacto.

5.2.2. Datos del Prescriptor

  • Nombre del medico
  • Cedula profesional
  • Especialidad (si aparece)

5.2.3. Institucion Emisora

  • Nombre de la institucion (hospital, clinica, consultorio)
  • Direccion de la institucion
  • Telefono de contacto
  • Email de contacto (si disponible)

5.2.4. Datos de la Receta

  • Fecha de emision
  • Diagnostico (si aparece)
  • Instrucciones especiales

5.2.5. Medicamentos (por cada uno)

  • Nombre del medicamento (generico y/o comercial)
  • Dosis/concentracion
  • Frecuencia de toma
  • Duracion del tratamiento
  • Via de administracion
  • Instrucciones especificas

Nota: La IA extrae todos los campos que pueda identificar. El usuario puede editar/completar campos manualmente. Los campos no encontrados quedan vacios para entrada manual.


6. Integraciones de Base de Datos de Medicamentos

6.1. Base de Datos Propia (v1.0)

Aspecto Especificación
Propósito Catálogo de medicamentos para México
Fuente base Compendio de Medicamentos CSG (Consejo de Salubridad General)
Acceso Base de datos interna
Cobertura México (medicamentos de uso común)
Actualización Periódica (mensual recomendado)
Aspecto Detalle
Institución Consejo de Salubridad General (CSG) - Gobierno de México
Recurso Compendio Nacional de Insumos para la Salud
URL de referencia https://csg.gob.mx/ (sección de Compendio de Medicamentos)
Formato Excel (XLSM) con actualizaciones periódicas
Licencia Datos públicos del gobierno mexicano

6.1.2. Proceso de Curación de Datos

Paso Descripción
1. Extracción Descarga periódica del compendio oficial CSG
2. Transformación Normalización de campos a estructura interna
3. Validación Verificación de integridad y consistencia
4. Enriquecimiento Adición de presentaciones comerciales comunes
5. Revisión Validación por profesional de la salud (recomendado)
6. Publicación Actualización de la base de datos interna

6.1.3. Mecanismo de Colección Anónima

OBS-IT13-052: Todos los datos de medicamentos se colectan de forma anonima. El usuario NO puede hacer opt-out porque es esencial para la base de datos.

Para enriquecer el catálogo con medicamentos no incluidos en CSG:

Aspecto Especificación
Propósito Identificar medicamentos faltantes en el catálogo
Datos colectados Solo nombre del medicamento (100% anonimo)
Privacidad 100% anonimo,SIN trazabilidad al paciente
Vinculacion a usuario NINGUNA - imposible identificar quien busco el medicamento
Proceso Medicamentos no encontrados se envian automaticamente
Curacion Equipo revisa periodicamente y agrega al catalogo
Opt-out NO DISPONIBLE - datos son esenciales y 100% anonimos
flowchart TD
    A[Usuario busca medicamento] --> B{Existe en catalogo?}
    B -->|Si| C[Mostrar resultado]
    B -->|No| D[Permitir entrada manual]
    D --> E[Enviar nombre a cola anonima]
    E --> F[Cola de revision - Solo nombre]
    F --> G[Curacion manual por equipo]
    G --> H[Agregar a catalogo]

Justificacion Legal y Etica: - Los datos colectados son exclusivamente el nombre del medicamento - no hay datos personales - Es imposible vincular una busqueda con un usuario especifico - NO constituye dato personal bajo LGPD, LFPDPPP, ni HIPAA - La coleccion anonima es esencial para mantener un catalogo actualizado y completo - Beneficia a todos los usuarios al enriquecer la base de datos - Similar al modelo de "mejora de productos" anonimo usado por la industria

6.1.4. Estructura de Datos

Campo Descripción
nombre_generico Nombre del principio activo (denominación común internacional)
nombre_comercial Nombres comerciales disponibles en México
presentacion Formas farmacéuticas (tableta, cápsula, solución, etc.)
dosis_disponibles Concentraciones disponibles
indicaciones Usos terapéuticos principales
via_administracion Oral, inyectable, tópica, etc.
interacciones_conocidas Interacciones documentadas
fuente CSG, Colección Anónima, u otra fuente autorizada
fecha_actualizacion Última fecha de verificación del registro

6.2. Expansión Futura (EE.UU., Brasil)

Aspecto Especificación
Propósito Nomenclatura estándar por país
Cobertura Estados Unidos, Brasil (futuro)
Estado Planificado para expansión geográfica
Requisito Fuentes oficiales de cada país

6.3. Verificación de Interacciones

Aspecto Especificación
Propósito Detectar posibles interacciones medicamentosas
Fuente primaria Base de datos local (caché)
Fuente secundaria Consulta con IA (on-demand)
Disponibilidad Ver tabla por tier
Disclaimer OBLIGATORIO: "Información solo orientativa. Consulte siempre con su médico o farmacéutico."

6.3.1. Disponibilidad por Tier

OBS-IT13-053: Free tiene verificacion local limitada a un subconjunto basico de medicamentos criticos.

Tier Verificacion de Interacciones Detalle
Free Verificacion local limitada Solo subconjunto basico de medicamentos criticos
Pro Cache local completa + IA on-demand IA incluida en suscripcion
Perfect Cache local completa + IA ilimitada IA incluida en suscripcion
6.3.1.1. Subconjunto Basico (Free)

El tier Free incluye verificacion de interacciones para medicamentos criticos mas comunes:

Categoria Ejemplos Justificacion
Anticoagulantes Warfarina, Aspirina Alto riesgo de interacciones graves
Antidiabeticos Metformina, Insulina Uso muy comun, interacciones criticas
Cardiovasculares Losartan, Enalapril, Atorvastatina Alta prevalencia, interacciones conocidas
Antibioticos comunes Amoxicilina, Azitromicina Interacciones con warfarina y otros
Analgesicos Paracetamol, Ibuprofeno Uso masivo, interacciones hepaticas/renales

Nota: El subconjunto basico cubre aproximadamente los 100 medicamentos mas prescritos en Mexico con interacciones documentadas mas graves. Para verificacion completa, el usuario debe usar Pro o Perfect.

6.3.2. Flujo de Verificación

OBS-IT13-054: Flujo actualizado: primero BD MedTime, si no existe usa IA servidor, guarda resultado en BD, envia con disclaimer, cachea localmente.

flowchart TD
    A[Usuario agrega medicamento] --> B[Verificar contra Cache Local]
    B --> C{Existe en cache local?}
    C -->|Si - Interaccion| D[Mostrar alerta con disclaimer]
    C -->|Si - Sin interaccion| E[Continuar sin alerta]
    C -->|No existe| F{Tier Pro/Perfect?}
    F -->|No - Free| G[Verificar solo subconjunto basico]
    G --> H{En subconjunto?}
    H -->|Si| I[Mostrar resultado basico]
    H -->|No| J[Sin info - sugerir upgrade]
    F -->|Si| K[Consultar BD MedTime servidor]
    K --> L{Existe en BD MedTime?}
    L -->|Si| M[Obtener interacciones de BD]
    L -->|No| N[Consultar IA servidor]
    N --> O[IA procesa y responde]
    O --> P[Guardar resultado en BD MedTime]
    P --> M
    M --> Q[Enviar resultado con disclaimer]
    Q --> R[Cachear resultado localmente]
    R --> D
6.3.2.1. Jerarquia de Fuentes de Datos
Prioridad Fuente Cuando se usa
1 Cache local Siempre primero (offline-first)
2 BD MedTime servidor Si no existe en cache y usuario Pro/Perfect
3 IA servidor Solo si no existe en BD MedTime
4 Subconjunto basico Free - solo medicamentos criticos
6.3.2.2. Persistencia de Resultados
Accion Descripcion
Guardar en BD MedTime Resultado de IA se guarda en servidor para futuros usuarios
Cachear localmente Usuario Pro/Perfect descarga resultado para uso offline
TTL de cache 30 dias - despues se re-verifica

Beneficio del modelo: Cada consulta a IA enriquece la BD MedTime. Con el tiempo, la BD cubrira la mayoria de combinaciones de medicamentos y las consultas a IA seran minimas.


7. Integraciones de Almacenamiento

OBS-IT13-055: Arquitectura 100% local para todos los tiers. Cloud es cache/backup OPCIONAL para Pro/Perfect. E2E obligatorio para Pro/Perfect.

7.1. Almacenamiento Local (Todos los Tiers) - FUENTE PRIMARIA

Aspecto Especificación
Propósito AlmacenamientoPRIMARIO de todos los datos
Uso 100% de datos para TODOS los tiers
Arquitectura Offline-first - local es la fuente de verdad
Contenido Todos los datos del usuario sin excepcion
Cifrado AES-256 con clave derivada de biometria/PIN
Requisito Base de datos cifrada nativa del sistema operativo

Principio Fundamental: El dispositivo del usuario es la UNICA fuente de verdad. Incluso usuarios Pro/Perfect almacenan 100% de sus datos localmente. El cloud es solo un respaldo opcional.

7.2. Almacenamiento Cloud (Pro/Perfect) - CACHE/BACKUP OPCIONAL

Aspecto Especificación
Propósito Cache/BackupOPCIONAL - no es fuente primaria
Disponibilidad Solo Pro/Perfect
Obligatorio NO - usuario puede desactivar completamente
Contenido Copia cifrada de datos locales (backup)
Cifrado E2E obligatorio - Zero-Knowledge Architecture
Control Usuario puede pausar/desactivar/eliminar en cualquier momento

Zero-Knowledge: MedTime NO puede leer los datos en el cloud. Solo el usuario con su clave puede descifrarlos.

7.2.1. Cifrado End-to-End (E2E) Obligatorio

Aspecto Especificacion
Obligatoriedad OBLIGATORIO para todo dato que suba a cloud
Algoritmo AES-256-GCM con clave derivada del usuario
Clave de cifrado Derivada de biometria/PIN del usuario - NUNCA sale del dispositivo
Zero-Knowledge Servidor almacena solo datos cifrados - imposible leer sin clave usuario
Recuperacion Si usuario pierde clave, datos cloud son irrecuperables
flowchart LR
    A[Datos Usuario] --> B[Cifrado E2E Local]
    B --> C[Datos Cifrados]
    C --> D{Sync habilitado?}
    D -->|Si| E[Upload a Cloud]
    D -->|No| F[Solo Local]
    E --> G[Cloud Storage]
    G --> H[Datos cifrados - MedTime NO puede leer]

Advertencia al Usuario Pro/Perfect: "Sus datos se cifran en su dispositivo antes de sincronizarse. Si pierde acceso a su cuenta y dispositivo, MedTime NO puede recuperar sus datos. Recomendamos activar backup local adicional."

Documentacion tecnica de cifrado: Ver investigaciones INV-008 (Blind Index, Split-Key, Argon2id) e INV-010 (Differential Privacy, k-anonymity).

7.2.2. Estructura Lógica de Almacenamiento

/usuarios/{user_id}/
├── recetas/
   └── {prescription_id}/
├── analisis/
   └── {result_id}/
├── exportaciones/
   └── {export_id}/ (TTL: 24h)
└── backups/
    └── {date}/

7.2.3. Políticas de Retención

Tipo de Dato Acceso Retención
Recetas Privado, URLs temporales 7 años
Análisis Privado, URLs temporales 10 años
Exportaciones Privado, TTL 24h 24 horas
Backups Solo sistema 30 días

8. Integraciones de Calendario (ACL4-013)

Decision Round 4: Usuario elige si exportar tomas de medicamentos a calendario externo.

8.1. Vision General de Integracion

OBS-IT13-056: Exportacion es opt-in POR TIPO DE EVENTO. Informacion sensible se omite o anonimiza segun configuracion de privacidad del usuario.

flowchart TD
    A[MedTime] --> B{Tipo de evento?}
    B -->|Cita medica| C{Opt-in citas?}
    B -->|Cita de estudio| D{Opt-in estudios?}
    B -->|Toma de medicamento| E{Opt-in tomas?}
    C -->|Si| F[Aplicar config privacidad]
    C -->|No| G[Solo en MedTime]
    D -->|Si| F
    D -->|No| G
    E -->|Si| F
    E -->|No| G
    F --> H[Anonimizar info sensible]
    H --> I{Calendario destino?}
    I -->|Google Calendar| J[API Calendar]
    I -->|Apple Calendar| K[EventKit]
    I -->|Outlook| L[Microsoft Graph]

8.1.1. Opt-in por Tipo de Evento

Tipo de Evento Default Configurable Nota
Citas medicas OFF Si Opt-in explicito requerido
Citas de estudios/analisis OFF Si Opt-in explicito requerido
Tomas de medicamentos OFF Si Opt-in explicito requerido
Eventos de salud OFF Si Opt-in explicito requerido

Importante: TODOS los tipos de evento estan desactivados por defecto. El usuario debe activar explicitamente cada tipo que desea exportar.

8.1.2. Anonimizacion de Informacion Sensible

Segun la configuracion de privacidad del usuario, la informacion sensible se:

Config Privacidad Tratamiento de Info Sensible Ejemplo
Privado(default) OMITIDA completamente Titulo: "MedTime - Recordatorio"
Basico ANONIMIZADA parcialmente Titulo: "Cita medica - 10:00"
Detallado Incluida con consentimiento Titulo: "Dr. Garcia - Cardiologia"
8.1.2.1. Informacion Considerada Sensible
Dato Tratamiento Privado Tratamiento Basico Tratamiento Detallado
Nombre del medico Omitido "Medico" Nombre completo
Especialidad Omitida "Especialista" Especialidad real
Nombre de medicamento Omitido "Medicamento" Nombre real
Dosis Omitida Omitida Dosis real
Diagnostico Omitido Omitido Omitido siempre
Tipo de estudio Omitido "Estudio" Tipo real
Ubicacion clinica Omitida Ciudad solamente Direccion completa

Nota: El diagnostico NUNCA se exporta a calendario externo, independientemente del nivel de privacidad configurado.

8.2. Google Calendar API

Aspecto Especificacion
Proposito Sincronizacion de citas y tomas (opcional)
Scopes calendar.events
Autenticacion OAuth 2.0
Direccion Unidireccional (MedTime -> Calendar)

8.3. Apple EventKit

Aspecto Especificacion
Proposito Sincronizacion con Apple Calendar
Framework EventKit
Permisos NSCalendarsUsageDescription
Direccion Unidireccional (MedTime -> Calendar)

8.4. Microsoft Outlook (Futuro v1.5)

Aspecto Especificacion
Proposito Sincronizacion con Outlook Calendar
API Microsoft Graph
Estado Placeholder para v1.5

8.5. Datos Exportados a Calendario

8.5.1. Citas Medicas y Estudios (Siempre Exportables)

Dato Exportado Formato
Titulo Si "MedTime - Cita medica" o personalizado
Fecha y hora Si Fecha/hora de la cita
Duracion Si Default 1 hora o configurado
Ubicacion Si (si disponible) Direccion del consultorio
Recordatorio Si 1 hora y 1 dia antes
Notas Opcional Instrucciones de preparacion

8.5.2. Tomas de Medicamento (Opt-in por Usuario)

Dato Exportado Formato
Titulo Configurable Privado: "MedTime - Recordatorio" / Detallado: "Tomar Metformina"
Fecha y hora Si Hora programada de toma
Duracion Si 15 minutos
Recordatorio Si 5 minutos antes
Descripcion Configurable Solo dosis o instrucciones completas

8.6. Configuracion de Privacidad en Exportacion

Opcion Descripcion Default
Exportar citas Citas medicas y estudios Si
Exportar tomas Tomas de medicamentos No
Nivel de detalle Privado / Basico / Detallado Privado
Calendario destino Cual calendario usar Principal

8.6.1. Niveles de Detalle

Nivel Titulo del Evento Descripcion
Privado "MedTime - Recordatorio" Sin detalles
Basico "Medicamento - 10:00" Solo hora
Detallado "Tomar Metformina 850mg" Nombre y dosis

8.7. Flujo de Exportacion

flowchart TD
    A[Usuario crea cita/medicamento] --> B{Exportacion activa?}
    B -->|No| C[Solo guardar en MedTime]
    B -->|Si| D{Tipo de evento?}
    D -->|Cita| E[Crear evento en calendario]
    D -->|Toma| F{Tomas habilitadas?}
    F -->|No| C
    F -->|Si| G[Aplicar nivel de privacidad]
    G --> E
    E --> H{Exito?}
    H -->|Si| I[Guardar referencia de evento]
    H -->|No| J[Reintentar / Notificar error]
    I --> K[Evento creado]

8.8. Sincronizacion y Conflictos

Escenario Comportamiento
Evento modificado en MedTime Actualizar en calendario externo
Evento eliminado en MedTime Eliminar de calendario externo
Evento modificado en calendario externo NO afecta MedTime
Evento eliminado en calendario externo NO afecta MedTime

Nota: La sincronizacion es unidireccional. Cambios en el calendario externo no se reflejan en MedTime.

8.9. Reglas de Negocio de Calendarios

Actualizado OBS-IT13-056: Todas las exportaciones estan OFF por defecto (opt-in explicito).

ID Regla
RN-CAL-001 Exportacion de citas DESACTIVADA por defecto (opt-in explicito)
RN-CAL-002 Exportacion de tomas DESACTIVADA por defecto (opt-in explicito)
RN-CAL-003 Usuario puede revocar acceso a calendario en cualquier momento
RN-CAL-004 Eventos eliminados en MedTime se eliminan del calendario
RN-CAL-005 Cambios en calendario externo no afectan MedTime
RN-CAL-006 Nivel de detalle "Privado" por defecto para todos los tipos
RN-CAL-007 Re-autenticacion si token expira
RN-CAL-008 Informacion sensible se anonimiza segun nivel de privacidad
RN-CAL-009 Diagnostico NUNCA se exporta a calendario externo

9. Integraciones de Salud (ACL5-010)

Decision Round 5: Health Connect (Android) y HealthKit (iOS) disponibles desde v1.0 para eventos de salud.

OBS-IT13-057: Integraciones Health Connect y HealthKit solo disponibles para tiers Pro y Perfect. Free NO tiene acceso a estas integraciones.

9.1. Disponibilidad por Tier

Integracion Free Pro Perfect
Health Connect (Android) NO Si Si
Apple HealthKit (iOS) NO Si Si
Entrada manual de mediciones Si Si Si

Justificacion: Las integraciones con Health Connect y HealthKit requieren sincronizacion con servicios externos y generan carga en el sistema. Se reservan para usuarios de pago. Los usuarios Free pueden registrar mediciones manualmente.

9.2. Health Connect (Android) - v1.0 (Pro/Perfect)

Aspecto Especificacion
Proposito Sincronizacion bidireccional de mediciones de salud
API Health Connect API (reemplazo de Google Fit)
Version minima Android 9+ (Pie)
Disponibilidad Solo Pro/Perfect

9.2.1. Tipos de Datos Soportados (Lectura/Escritura)

Tipo Health Connect Tipo MedTime Direccion Permisos
BloodGlucose Glucosa Bidireccional HEALTH_PERMISSION_BLOOD_GLUCOSE
BloodPressure Presion arterial Bidireccional HEALTH_PERMISSION_BLOOD_PRESSURE
Weight Peso Bidireccional HEALTH_PERMISSION_WEIGHT
BodyTemperature Temperatura Bidireccional HEALTH_PERMISSION_BODY_TEMPERATURE
HeartRate Frecuencia cardiaca Lectura HEALTH_PERMISSION_HEART_RATE
OxygenSaturation SpO2 Lectura HEALTH_PERMISSION_OXYGEN_SATURATION

9.2.2. Flujo de Integracion Health Connect

flowchart TD
    A[Usuario activa integracion Health Connect] --> B[MedTime solicita permisos]
    B --> C{Usuario autoriza?}
    C -->|Si| D[Leer datos existentes de Health Connect]
    C -->|No| E[Continuar sin integracion]
    D --> F[Importar mediciones como eventos MedTime]
    F --> G[Configurar sincronizacion automatica]
    G --> H{Nueva medicion?}
    H -->|En MedTime| I[Escribir a Health Connect]
    H -->|En otra app| J[Leer de Health Connect]
    I --> K[Dato disponible en ambos sistemas]
    J --> L[Crear evento de salud en MedTime]
    L --> K

9.2.3. Configuracion por Usuario

Opcion Descripcion Default
Sincronizar automaticamente Leer/escribir en tiempo real Si
Importar historico Importar mediciones anteriores Solo ultimos 30 dias
Tipos a sincronizar Seleccionar tipos de medicion Todos habilitados
Direccion Lectura/Escritura/Bidireccional Bidireccional
Notificar importaciones Alertar de datos importados No

9.2.4. Manejo de Conflictos

Escenario Comportamiento
Misma medicion en ambos sistemas Priorizar dato mas reciente (timestamp)
Medicion duplicada No duplicar, marcar como sincronizada
Dato sin fuente conocida Preguntar al usuario si importar
Conexion perdida Encolar y sincronizar al reconectar

9.3. Apple HealthKit (iOS) - v1.0 (Pro/Perfect)

Aspecto Especificacion
Proposito Sincronizacion bidireccional de mediciones de salud
Framework HealthKit
Version minima iOS 14+
Disponibilidad Solo Pro/Perfect

9.3.1. Tipos de Datos Soportados (Lectura/Escritura)

Tipo HealthKit Tipo MedTime Direccion Identificador
HKQuantityTypeIdentifierBloodGlucose Glucosa Bidireccional bloodGlucose
HKQuantityTypeIdentifierBloodPressureSystolic Presion sistolica Bidireccional bloodPressureSystolic
HKQuantityTypeIdentifierBloodPressureDiastolic Presion diastolica Bidireccional bloodPressureDiastolic
HKQuantityTypeIdentifierBodyMass Peso Bidireccional bodyMass
HKQuantityTypeIdentifierBodyTemperature Temperatura Bidireccional bodyTemperature
HKQuantityTypeIdentifierHeartRate Frecuencia cardiaca Lectura heartRate
HKQuantityTypeIdentifierOxygenSaturation SpO2 Lectura oxygenSaturation

9.3.2. Flujo de Integracion HealthKit

flowchart TD
    A[Usuario activa integracion HealthKit] --> B[MedTime solicita permisos via Health app]
    B --> C{Usuario autoriza en Health?}
    C -->|Si| D[Registrar observadores para cambios]
    C -->|No| E[Continuar sin integracion]
    D --> F[Leer datos historicos autorizados]
    F --> G[Importar como eventos MedTime]
    G --> H[Escuchar cambios en background]
    H --> I{Nueva medicion?}
    I -->|En MedTime| J[HKHealthStore.save]
    I -->|En otra app via HealthKit| K[Observer notifica a MedTime]
    J --> L[Dato disponible en Health y MedTime]
    K --> M[Crear evento de salud en MedTime]
    M --> L

9.3.3. Background Delivery

Aspecto Especificacion
HKObserverQuery Notifica cambios mientras app en background
Frecuencia Batch cada 1-2 horas (gestionado por iOS)
Tipos prioritarios Glucosa, Presion arterial
Limitaciones iOS puede limitar en modo bajo consumo

9.4. Reglas de Negocio - Integraciones de Salud

ID Regla
RN-INT-HC-001 Usuario debe autorizar explicitamente cada tipo de dato
RN-INT-HC-002 Datos importados de Health Connect/HealthKit se marcan con fuente externa
RN-INT-HC-003 Usuario puede desactivar sincronizacion en cualquier momento
RN-INT-HC-004 Conflictos se resuelven por timestamp mas reciente
RN-INT-HC-005 No se importan automaticamente datos de mas de 30 dias
RN-INT-HC-006 Alertas de valores criticos aplican a datos importados
RN-INT-HC-007 Datos eliminados en MedTime no se eliminan de Health Connect/HealthKit
RN-INT-HC-008 Integracion disponible SOLO en Pro/Perfect (Free no tiene acceso)

9.5. Comparativa Health Connect vs HealthKit

Aspecto Health Connect (Android) HealthKit (iOS)
Version minima Android 9 (Pie) iOS 14
Permisos Por tipo de dato Por tipo de dato
Background sync Si, con restricciones Si, via observers
Almacenamiento Centralizado en Health Connect Centralizado en Health app
Compartir con otras apps Si Si
Datos de medicamentos Placeholder v1.5 Placeholder v1.5

9.6. Integraciones Directas con Dispositivos (Placeholder v1.5)

Nota: Integraciones directas con dispositivos medicos (glucometros, tensiometros Bluetooth) estan planificadas para v1.5. En v1.0, los datos se obtienen via Health Connect/HealthKit.

Tipo de Dispositivo Estado v1.0 Planificado
Glucometros Bluetooth Via Health Connect/HealthKit v1.5
Tensiometros Bluetooth Via Health Connect/HealthKit v1.5
Basculas inteligentes Via Health Connect/HealthKit v1.5
CGM (Monitoreo Continuo Glucosa) Via Health Connect/HealthKit v1.5
Oximetros de pulso Via Health Connect/HealthKit v1.5

10. Integraciones Futuras (v2.0+)

10.1. HL7 FHIR

Aspecto Especificación
Propósito Interoperabilidad con sistemas de salud
Versión FHIR R4
Recursos Patient, Medication, MedicationRequest, Observation
Estado Planificado v2.0

10.2. Datos de Medicamentos en Health Apps

Aspecto Especificación
Propósito Compartir registros de medicamentos con Health apps
HealthKit HKClinicalTypeIdentifierMedicationRecord
Health Connect MedicationRecord (en desarrollo)
Estado Placeholder v1.5

11. Seguridad en Integraciones

11.1. Gestión de Credenciales

Tipo Almacenamiento
API Keys Gestor de secretos del proveedor cloud
OAuth Tokens Cifrado en BD + cache
Claves de servicio Gestor de secretos

11.2. Comunicación Segura

Requisito Especificación
TLS Mínimo 1.2, preferido 1.3
Certificate Pinning Para APIs críticas
Mutual TLS Para integraciones B2B

11.3. Rate Limiting

Tipo de Integración Límite Recomendado Acción
OCR/IA Según proveedor Cola de espera
Base de datos medicamentos 100/min Cache
Push notifications 5000/min Batch

12. Monitoreo de Integraciones

12.1. Métricas

Métrica Descripción Alerta
Latencia Tiempo de respuesta > 2s
Error Rate % de errores > 1%
Disponibilidad Uptime del servicio < 99%
Cuota Uso de límites > 80%

12.2. Circuit Breaker

Estado Condición Acción
Closed Normal Permitir requests
Open > 50% errores en 1 min Rechazar requests
Half-Open Después de 30s Probar con 1 request

13. Referencias


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