Saltar a contenido

Modulo del Motor de Interacciones Medicamentosas

Identificador: MTS-INT-001 Version: 2.0.0 Fecha: 2025-12-08 Ultima Revision: Alineacion con Directiva del Director - Regla de 100 Registros (TECH-CS-001 seccion 3.2.3.1) Autor: SpecQueen Prioridad: ALTA (Esencial para seguridad del paciente) Dependencias: MTS-CAT-001, MTS-MED-001, TECH-CS-001

NOTA DE VERSION 2.0.0: Este documento fue actualizado para cumplir con la directiva del director que establece que NINGUN catalogo mayor a 100 registros puede descargarse al dispositivo. El modelo anterior de "cache local de 50,000 interacciones" ha sido reemplazado por una arquitectura hibrida de mini-cache critico (<100) + busqueda online.


1. Proposito

Este modulo implementa el motor de deteccion de interacciones medicamentosas, incluyendo:

  • Verificacion de interacciones entre medicamentos del paciente
  • Clasificacion por severidad
  • Alertas y advertencias
  • Recomendaciones de accion

DISCLAIMER LEGAL: Toda la informacion sobre interacciones es solo orientativa y no sustituye el consejo medico profesional. El usuario siempre debe consultar con su medico o farmaceutico.

2. Actores

Actor Descripcion
Paciente Recibe alertas y toma decisiones sobre su tratamiento
Sistema Detecta interacciones y genera alertas
Motor IA Analiza interacciones complejas (Pro/Perfect)

3. Fuentes de Datos de Interacciones (ACL9-007)

Decision del Director Round 9 (PREG-R9-007): Base de datos propietaria + DrugBank para validacion comercial.

DIRECTIVA DEL DIRECTOR - Regla de 100 Registros: Ningun catalogo mayor a 100 registros puede descargarse al dispositivo. Ver TECH-CS-001 seccion 3.2.3.1.

3.1. Arquitectura de Datos de Interacciones

La deteccion de interacciones utiliza una arquitectura hibrida que cumple con la Regla de 100 Registros:

ARQUITECTURA DE INTERACCIONES (v2.0):
+------------------------------------------------------------------+
|  1. MINI-CACHE EMBEBIDO (<100 registros)                          |
|     - Interacciones CONTRAINDICADO mas criticas y frecuentes      |
|     - Disponible OFFLINE para TODOS los tiers                     |
|     - Actualizado con cada release de la app                      |
|                                                                    |
|  2. BUSQUEDA ONLINE (servidor MedTime)                            |
|     - Base completa de ~50,000+ interacciones                     |
|     - Requiere cuenta de usuario + conexion                       |
|     - Resultados se guardan en lista local del usuario            |
|                                                                    |
|  3. LISTA LOCAL DEL USUARIO                                       |
|     - Solo interacciones DETECTADAS para sus medicamentos         |
|     - Crece organicamente segun medicamentos agregados            |
|     - Sincronizada con cuenta (Pro/Perfect)                       |
+------------------------------------------------------------------+

3.2. Fuentes y Prioridad

Prioridad Fuente Tipo Ubicacion Disponibilidad
1 Mini-cache critico Embebido Dispositivo (<100) Todos los tiers, offline
2 Lista local usuario Detectadas Dispositivo Todos los tiers, offline
3 Base MedTime Servidor Online Free con cuenta, Pro, Perfect
4 DrugBank Comercial Online Pro, Perfect
5 IA Claude Analisis Online Perfect

3.3. Cobertura por Fuente

Fuente Interacciones Ubicacion Actualizacion Costo
Mini-cache embebido <100 pares CONTRAINDICADO Dispositivo Con release app Incluido
Lista local usuario Variable (sus medicamentos) Dispositivo Automatica Incluido
Base MedTime servidor ~50,000+ pares Servidor Continua Requiere cuenta
DrugBank ~1,000,000+ pares Servidor Diario Por consulta API
RxNorm ~100,000 pares Servidor Mensual Gratis

3.4. Licenciamiento y Compliance

Fuente Licencia Restricciones HIPAA
DrugBank Comercial Atribucion requerida Compatible
RxNorm Publica (NIH) Ninguna Compatible
Base propia Propietaria Uso interno Compatible

Requisitos HIPAA (Iteración 11): Ver sección 3.5 de Requisitos Regulatorios para detalles de BAA requeridos con DrugBank y Anthropic.


4. Funcionalidades

4.1. Deteccion de Interacciones (MTS-INT-001-F01)

4.1.1. Disponibilidad por Tier

Tier Mini-Cache Critico (<100) Lista Local Usuario Busqueda Online DrugBank IA Analisis
Free sin cuenta Si (offline) Si (manual) NO NO NO
Free con cuenta Si (offline) Si (auto) Si (servidor MedTime) NO NO
Pro Si (offline) Si (auto+sync) Si (servidor MedTime) Si (on-demand) NO
Perfect Si (offline) Si (auto+sync) Si (servidor MedTime) Si (incluido) Si (incluido)

Explicacion de componentes:

Componente Descripcion Tamano Offline
Mini-cache critico <100 interacciones CONTRAINDICADO embebidas en app <100 registros 100%
Lista local usuario Interacciones detectadas para medicamentos del usuario Variable 100%
Busqueda online Consulta contra base MedTime servidor (~50,000+) N/A NO
DrugBank Consulta API comercial (~1M+ interacciones) N/A NO
IA Analisis Analisis contextual con Claude N/A NO

4.1.2. Flujo de Deteccion (v2.0 - Arquitectura Hibrida)

flowchart TD
    A[Usuario agrega/modifica medicamento] --> B[Verificar mini-cache critico]
    B --> C{Interaccion CONTRAINDICADO<br/>en mini-cache?}

    C -->|Si| D[ALERTA INMEDIATA BLOQUEANTE<br/>Funciona OFFLINE]
    C -->|No| E{Tiene cuenta?}

    E -->|No| F[Verificar lista local usuario]
    E -->|Si| G{Hay conexion?}

    G -->|No| F
    G -->|Si| H{Primera busqueda<br/>automatica?}

    H -->|Si| I[Mostrar DISCLAIMER PRIVACIDAD]
    H -->|No| J[Consultar servidor MedTime]

    I --> K{Usuario acepta?}
    K -->|Si| J
    K -->|No| F

    J --> L[Servidor busca en base completa]
    L --> M{Interacciones encontradas?}

    M -->|Si| N[Retornar interacciones detectadas]
    M -->|No| O[Sin interacciones conocidas]

    N --> P[Guardar en lista local usuario]
    P --> Q[Clasificar por severidad]

    Q --> R{Severidad?}
    R -->|CONTRAINDICADO| D
    R -->|SERIO| S[Alerta prominente]
    R -->|MODERADO| T[Advertencia]
    R -->|MENOR| U[Nota informativa]

    F --> V{Interaccion en<br/>lista local?}
    V -->|Si| Q
    V -->|No| W[Sin alertas offline<br/>Verificar con conexion]

    D --> X{Usuario Pro/Perfect?}
    X -->|Si| Y[Ofrecer verificacion DrugBank]
    X -->|No| Z[Mostrar alerta con disclaimer]

    Y --> AA{Verificar con DrugBank?}
    AA -->|Si| AB[Consultar DrugBank API]
    AA -->|No| Z

    AB --> AC[Enriquecer informacion]
    AC --> Z

Notas del flujo:

  1. Mini-cache critico siempre primero: Garantiza alertas de interacciones CONTRAINDICADO incluso sin conexion
  2. Lista local usuario segundo: Verifica interacciones previamente detectadas (offline)
  3. Busqueda online tercero: Solo si tiene cuenta y conexion (con disclaimer primera vez)
  4. Resultados se guardan: Las interacciones detectadas se agregan a la lista local del usuario

4.2. Clasificacion de Severidad (MTS-INT-001-F02)

4.2.1. Niveles de Severidad

Nivel Codigo Descripcion Comportamiento UI
CONTRAINDICADO 4 No deben usarse juntos Bloqueo con confirmacion explicita
SERIO 3 Riesgo significativo Alerta prominente, requiere ack
MODERADO 2 Precaucion necesaria Advertencia informativa
MENOR 1 Riesgo minimo Nota discreta

4.2.2. Matriz de Decision

flowchart LR
    A[Principio Activo A] --> M[Matriz de Severidad]
    B[Principio Activo B] --> M

    M --> R["4 = CONTRAINDICADO (Rojo)"]
    M --> O["3 = SERIO (Naranja)"]
    M --> Y["2 = MODERADO (Amarillo)"]
    M --> Bl["1 = MENOR (Azul)"]
    M --> G["0 = Sin Interacción"]

    style R fill:#ff4444,stroke:#cc0000,color:#fff
    style O fill:#ff8c00,stroke:#cc6600,color:#fff
    style Y fill:#ffcc00,stroke:#cc9900,color:#000
    style Bl fill:#4444ff,stroke:#0000cc,color:#fff
    style G fill:#44ff44,stroke:#00cc00,color:#000

4.3. Estructura de Interaccion (MTS-INT-001-F03)

4.3.1. Modelo de Datos

InteraccionMedicamento {
  id: UUID (PK)

  // Medicamentos involucrados
  medicamento_a_id: UUID (FK -> MedicamentoCatalogo)
  medicamento_b_id: UUID (FK -> MedicamentoCatalogo)
  principio_a: string
  principio_b: string

  // Clasificacion
  severidad: enum [CONTRAINDICADO, SERIO, MODERADO, MENOR]
  tipo: enum [FARMACOCINETICA, FARMACODINAMICA, MIXTA]
  categoria: string (ej: "CYP450", "QT prolongation", etc.)

  // Descripcion
  descripcion: text
  mecanismo: text
  efecto_esperado: text
  sintomas_posibles: array<string>

  // Recomendacion
  recomendacion_clinica: text
  accion_sugerida: enum [EVITAR, MONITOREAR, AJUSTAR_DOSIS, ESPACIAR, INFORMAR]
  monitoreo_requerido: text

  // Fuente y evidencia
  fuente_primaria: string
  fuentes_adicionales: array<string>
  nivel_evidencia: enum [ALTA, MEDIA, BAJA]
  referencias_pubmed: array<string>
  fecha_actualizacion: date

  // Metadata
  paises_aplica: array<string>
  notas_regionales: map<pais, texto>
  activa: boolean

  created_at: timestamp
  updated_at: timestamp
}

4.4. Alertas de Interaccion (MTS-INT-001-F04)

4.4.1. Pantalla de Alerta CONTRAINDICADO

+--------------------------------------------------+
| ⚠ INTERACCION CONTRAINDICADA                      |
+--------------------------------------------------+

Los siguientes medicamentos NO deben tomarse juntos:

  Warfarina + Aspirina

RIESGO: Alto riesgo de sangrado

MECANISMO:
Ambos afectan la coagulacion sanguinea por
mecanismos diferentes, potenciando el efecto.

RECOMENDACION:
Consulte con su medico antes de tomar estos
medicamentos juntos.

+--------------------------------------------------+
| FUENTE: DrugBank | Ultima actualizacion: Nov 2025 |
+--------------------------------------------------+

[ ] Entiendo el riesgo y deseo continuar
    (Solo si mi medico lo ha autorizado)

[Cancelar]              [He consultado con mi medico]

+--------------------------------------------------+
IMPORTANTE: Esta informacion es solo orientativa.
Consulte siempre con su medico o farmaceutico.
+--------------------------------------------------+

4.4.2. Pantalla de Advertencia SERIO/MODERADO

+--------------------------------------------------+
| ADVERTENCIA DE INTERACCION                        |
+--------------------------------------------------+

Metformina + Alcohol

SEVERIDAD: Moderada

EFECTO: El alcohol puede aumentar el riesgo de
acidosis lactica con metformina.

RECOMENDACION:
- Limite el consumo de alcohol
- No beba con el estomago vacio
- Monitoree sintomas: nausea, debilidad

+--------------------------------------------------+
| FUENTE: Base MedTime | Act: Nov 2025              |
+--------------------------------------------------+

[Entendido]

+--------------------------------------------------+

4.5. Motor de IA para Interacciones (MTS-INT-001-F05)

Disponible solo para Tier Perfect

4.5.1. Capacidades del Motor IA

Capacidad Descripcion
Analisis multi-medicamento Evalua combinaciones de 3+ medicamentos
Contexto del paciente Considera edad, condiciones, etc.
Interacciones emergentes Detecta patrones no documentados
Explicacion en lenguaje natural Traduce informacion tecnica

4.5.2. Flujo de Analisis IA

flowchart TD
    A[Usuario Perfect solicita analisis] --> B[Recopilar contexto]
    B --> C[Medicamentos activos]
    C --> D[Condiciones de salud del perfil]
    D --> E[Enviar a Claude API]

    E --> F[Analisis de interacciones conocidas]
    F --> G[Analisis de combinaciones]
    G --> H[Generacion de recomendaciones]

    H --> I[Respuesta estructurada]
    I --> J[Mostrar al usuario]
    J --> K[Incluir disclaimer prominente]

4.5.3. Formato de Respuesta IA

{
  "resumen": "Se encontraron 2 interacciones relevantes...",
  "interacciones_detectadas": [
    {
      "medicamentos": ["Lisinopril", "Potasio"],
      "severidad": "SERIO",
      "explicacion": "...",
      "recomendacion": "..."
    }
  ],
  "consideraciones_adicionales": [
    "Dado su historial de..., considere..."
  ],
  "disclaimer": "Esta informacion es generada por IA...",
  "fuentes_consultadas": ["DrugBank", "PubMed", "Base MedTime"],
  "fecha_analisis": "2025-12-02T10:30:00Z"
}

4.5.4. Cumplimiento HIPAA en Motor IA (HIPAA-INT-002)

Añadido Iteración 11: Requisitos de privacidad para integración con Claude IA.

ID Requisito Implementación
IA-HIPAA-001 Sanitización de datos NUNCA enviar PII (nombre, fecha nac., IDs)
IA-HIPAA-002 Modo no-log Usar API con "no training, no retention"
IA-HIPAA-003 BAA con Anthropic Requerido antes de producción
IA-HIPAA-004 Datos enviados Solo principios activos + dosis genéricas
IA-HIPAA-005 Retención 0 días en Anthropic (modo efímero)
IA-HIPAA-006 Audit local Log de solicitudes (sin contenido PHI) por 6 años

Proceso de Sanitización:

ENTRADA (del perfil):        ENVIADO A IA:
- Juan Pérez, 45 años    →   - Paciente adulto
- Metformina 850mg       →   - Metformina 850mg
- Lisinopril 10mg        →   - Lisinopril 10mg
- Diabetes tipo 2        →   - Condición metabólica

4.6. Fallback API DrugBank (GAP-INT-001)

Añadido Iteración 11: Comportamiento cuando DrugBank API no está disponible.

4.6.1. Escenarios de Fallback

Escenario Timeout Acción
DrugBank timeout > 3 segundos Fallback a base local
DrugBank error 5xx Inmediato Fallback a base local
DrugBank rate limited (429) Inmediato Esperar + fallback a cache
Sin conexión a internet Inmediato Usar base local offline

4.6.2. Flujo de Fallback

flowchart TD
    A[Usuario Pro/Perfect agrega medicamento] --> B[Verificar interacciones]
    B --> C{Hay conexión?}

    C -->|No| D[Usar base local offline]
    C -->|Sí| E[Consultar DrugBank API]

    E --> F{Respuesta en < 3s?}
    F -->|Sí| G{HTTP 200?}
    F -->|No timeout| H[Fallback: base local + cache]

    G -->|Sí| I[Procesar respuesta]
    G -->|No 5xx| J[Fallback: base local + cache]
    G -->|429 rate limit| K[Esperar + reintentar 1x]

    K --> L{Reintento exitoso?}
    L -->|Sí| I
    L -->|No| H

    H --> M[Mostrar mensaje al usuario]
    J --> M
    D --> M

    M --> N["Interacciones verificadas con datos locales.
             Para verificación completa, intente más tarde."]

    I --> O[Guardar en cache local]
    O --> P[Mostrar interacciones]

4.6.3. Datos Locales para Fallback

IMPORTANTE - Regla de 100 Registros: Esta seccion ha sido actualizada. Ya NO existe una "base local de 50,000 interacciones".

Componente Cobertura Uso en Fallback
Mini-cache critico <100 pares CONTRAINDICADO Siempre disponible offline
Lista local usuario Interacciones detectadas Disponible offline

Comportamiento de fallback:

  1. Si falla DrugBank pero hay conexion: Usar servidor MedTime (~50,000+)
  2. Si falla todo lo online: Usar mini-cache critico + lista local usuario
  3. Para combinaciones no en local: Mostrar "Sin datos offline, verificar con conexion"

4.6.4. Mensaje al Usuario

Escenario Mensaje
Mini-cache critico alerta "ALERTA: Interaccion CONTRAINDICADA detectada (verificacion offline). Consulte a su medico."
Lista local con resultado "Interaccion detectada en su historial local. Para informacion actualizada, conectese a internet."
Sin datos locales "No hay datos offline para esta combinacion. Recomendamos verificar con conexion a internet."
Fallback a servidor MedTime "DrugBank no disponible. Verificacion realizada con base MedTime."
Error persistente "Servicio temporalmente no disponible. Sus medicamentos se verificaran automaticamente cuando haya conexion."

4.6.5. Cola de Verificación Pendiente

Si la verificación falla, el sistema agenda una verificación automática:

Campo Descripción
medicamento_id ID del medicamento agregado
fecha_agregado Cuándo se agregó
intentos Número de reintentos (máx 5)
ultimo_intento Timestamp del último intento
estado pendiente / verificado / fallido

El sistema reintenta automáticamente cada hora hasta 5 veces, luego notifica al usuario si no puede verificar.


4.7. Almacenamiento Local de Interacciones (MTS-INT-001-F06)

IMPORTANTE - Regla de 100 Registros: Esta seccion ha sido actualizada para cumplir con la directiva del director. El modelo anterior de "cache de 50,000 interacciones" ha sido reemplazado.

4.7.1. Estructura del Almacenamiento Local

El almacenamiento local de interacciones tiene dos componentes:

Componente Tamano Maximo Actualizacion Contenido
Mini-cache critico <100 registros Con release app Interacciones CONTRAINDICADO mas criticas
Lista local usuario Variable Automatica Interacciones detectadas de sus medicamentos
ESTRUCTURA EN DISPOSITIVO:
+------------------------------------------------------------------+
|  MINI-CACHE CRITICO EMBEBIDO (inmutable)                          |
|  +------------------------------------------------------------+  |
|  | ~90 pares de principios activos CONTRAINDICADO              |  |
|  | Ej: Warfarina + NSAIDs, MAOIs + SSRIs, etc.                 |  |
|  | Actualizado SOLO con nuevas versiones de la app             |  |
|  +------------------------------------------------------------+  |
|                                                                    |
|  LISTA LOCAL DEL USUARIO (crece organicamente)                    |
|  +------------------------------------------------------------+  |
|  | Interacciones detectadas al buscar sus medicamentos         |  |
|  | Se agregan conforme el servidor retorna resultados          |  |
|  | Sincronizada con cuenta (Pro/Perfect)                       |  |
|  +------------------------------------------------------------+  |
+------------------------------------------------------------------+

4.7.2. Mini-Cache Critico (<100 Registros)

Referencia: Ver TECH-CS-001 seccion 3.2.3.5

Aspecto Valor
Proposito Alertas de seguridad OFFLINE para casos mas criticos
Tamano <100 pares de principios activos
Severidad Solo CONTRAINDICADO (severidad 4)
Seleccion Interacciones mas frecuentes y peligrosas
Actualizacion Con cada release de la aplicacion
Disponibilidad TODOS los tiers (incluso Free sin cuenta)
Editable NO (embebido, inmutable)

Ejemplo de contenido del mini-cache:

Principio A Principio B Riesgo
Warfarina NSAIDs Sangrado severo
MAOIs SSRIs Sindrome serotoninergico
Metotrexato NSAIDs Toxicidad renal/hepatica
Litio NSAIDs Toxicidad de litio
Digoxina Amiodarona Toxicidad cardiaca
... ... ...

NOTA: El mini-cache NO reemplaza la consulta medica profesional. Es una red de seguridad minima para los casos mas criticos y frecuentes.

4.7.3. Lista Local del Usuario

La lista local del usuario contiene solo las interacciones detectadas para los medicamentos que ha agregado:

Aspecto Valor
Proposito Almacenar interacciones relevantes para el usuario
Tamano Variable (crece con medicamentos agregados)
Contenido Solo interacciones detectadas de sus medicamentos
Actualizacion Automatica al detectar nuevas interacciones online
Disponibilidad Todos los tiers
Sincronizacion Pro/Perfect (cifrado E2E)
# Pseudocodigo: Flujo de poblacion de lista local
def verificar_interacciones_online(nuevos_medicamentos, usuario):
    """
    Llamado cuando usuario agrega medicamentos Y tiene conexion + cuenta
    """
    # 1. Primero verificar mini-cache critico (siempre, offline)
    criticas = mini_cache.buscar(nuevos_medicamentos, usuario.medicamentos_activos)
    if criticas:
        mostrar_alerta_bloqueante(criticas)

    # 2. Si tiene cuenta y conexion, buscar online
    if usuario.tiene_cuenta and hay_conexion():
        # Consultar servidor (solo principios activos, SIN PII)
        response = servidor.buscar_interacciones(
            principios_nuevos=[m.principio_activo for m in nuevos_medicamentos],
            principios_existentes=[m.principio_activo for m in usuario.medicamentos_activos]
        )

        # 3. Guardar en lista local SOLO las interacciones encontradas
        for interaccion in response.interacciones:
            usuario.lista_local.agregar(interaccion)

        return response.interacciones

    # 3. Si no hay conexion, usar lista local existente
    return usuario.lista_local.buscar(nuevos_medicamentos)

4.7.4. Algoritmo de Deteccion Local Hibrido

# Pseudocodigo del motor de deteccion v2.0
def detectar_interacciones(medicamentos_paciente, usuario):
    interacciones = []

    for i, med_a in enumerate(medicamentos_paciente):
        for med_b in medicamentos_paciente[i+1:]:
            for pa_a in med_a.principios_activos:
                for pa_b in med_b.principios_activos:
                    # PASO 1: Verificar mini-cache critico (siempre primero)
                    critica = MINI_CACHE_CRITICO.buscar(pa_a, pa_b)
                    if critica:
                        interacciones.append(critica)
                        continue  # Encontrada en mini-cache

                    # PASO 2: Verificar lista local del usuario
                    local = usuario.lista_local.buscar(pa_a, pa_b)
                    if local:
                        interacciones.append(local)

    # Ordenar por severidad (CONTRAINDICADO primero)
    interacciones.sort(key=lambda x: x.severidad, reverse=True)

    return interacciones

5. Reglas de Negocio

ID Regla
RN-INT-001 Toda interaccion mostrada incluye disclaimer legal
RN-INT-002 Interacciones CONTRAINDICADAS requieren confirmacion explicita
RN-INT-003 Mini-cache critico (<100) funciona 100% offline para TODOS los tiers
RN-INT-004 Busqueda online requiere cuenta de usuario + conexion
RN-INT-005 Solo interacciones DETECTADAS se guardan en lista local del usuario
RN-INT-006 Fuente y fecha de actualizacion siempre visibles
RN-INT-007 Interacciones nuevas desde DrugBank se notifican al usuario
RN-INT-008 Historial de alertas de interacciones se mantiene 6 anos (HIPAA)
RN-INT-009 REGLA DE 100: Ningun catalogo >100 registros se descarga al dispositivo
RN-INT-010 Disclaimer de privacidad obligatorio en primera busqueda automatica
RN-INT-011 Servidor VE principios activos consultados pero NO identidad del usuario
RN-INT-012 Verificacion DrugBank solo disponible para Pro/Perfect
RN-INT-013 Analisis IA solo disponible para Perfect

6. Integraciones

6.1. Con Catalogo de Medicamentos (MTS-CAT-001)

Integracion Descripcion
Codigos Usa codigos normalizados del catalogo
Principios activos Mapea interacciones por principio activo
Actualizaciones Se sincroniza con actualizaciones del catalogo

6.2. Con Medicamentos del Paciente (MTS-MED-001)

Integracion Descripcion
Trigger Se ejecuta al agregar/modificar medicamento
Contexto Accede a lista completa de medicamentos activos
Alertas Envia alertas al modulo de notificaciones

6.3. Con Alertas (MTS-ALT-001)

Integracion Descripcion
Notificaciones Genera alertas segun severidad
Historial Registra alertas mostradas
Configuracion Respeta preferencias de usuario

7. Disclaimers Obligatorios

7.1. Disclaimer General (siempre visible)

AVISO IMPORTANTE: La informacion sobre interacciones
medicamentosas proporcionada por MedTime es solo
orientativa y NO sustituye el consejo de un profesional
de la salud. Siempre consulte con su medico o
farmaceutico antes de iniciar, modificar o suspender
cualquier tratamiento.

7.2. Disclaimer por Fuente

Fuente Disclaimer Adicional
DrugBank "Datos de DrugBank. Uso con fines informativos."
IA "Analisis generado por IA. Requiere validacion profesional."
Base MedTime "Fuente: Base de datos MedTime. Actualizado: [fecha]"

7.3. Disclaimer de Limitaciones

LIMITACIONES:
- No todas las interacciones estan documentadas
- Nuevas interacciones se descubren constantemente
- La respuesta individual puede variar
- Algunos medicamentos/suplementos pueden no estar en la base

7.4. Disclaimer de Privacidad para Busquedas Online

NUEVO en v2.0: Requerido por Regla de 100 Registros y Directiva del Director. Referencia: TECH-CS-001 seccion 3.2.3.6

7.4.1. Momentos de Visualizacion

Momento Condicion Obligatorio
Primera busqueda automatica Usuario activa busqueda de interacciones por primera vez SI
Busqueda manual Cada vez que el usuario inicia busqueda manual Toggle para automatizar
Cambio de configuracion Cuando activa/desactiva busqueda automatica SI

7.4.2. Contenido del Disclaimer

+------------------------------------------------------------------+
| AVISO DE PRIVACIDAD - Busqueda de Interacciones                   |
+------------------------------------------------------------------+

Para verificar interacciones entre sus medicamentos, necesitamos
consultar nuestra base de datos en linea.

LO QUE ENVIAMOS AL SERVIDOR:
  - Nombres de los principios activos de sus medicamentos
  - Dosis genericas (ej: "500mg", sin marca)

LO QUE NO ENVIAMOS:
  - Su nombre, email o cualquier dato personal
  - Su historial medico completo
  - Informacion que lo identifique

COMO FUNCIONA:
  1. Enviamos solo los principios activos a consultar
  2. El servidor busca interacciones conocidas
  3. Solo las interacciones encontradas se guardan en su dispositivo
  4. El servidor NO guarda un registro de su consulta

[ ] Entiendo y acepto verificar interacciones en linea
[ ] Activar verificacion automatica para futuros medicamentos

[Cancelar]                          [Aceptar y Verificar]

+------------------------------------------------------------------+
| Puede cambiar esta preferencia en Configuracion > Privacidad      |
+------------------------------------------------------------------+

7.4.3. Reglas del Disclaimer

ID Regla
DISC-INT-001 Disclaimer se muestra ANTES de la primera busqueda online
DISC-INT-002 Usuario puede rechazar y usar solo mini-cache critico
DISC-INT-003 Toggle de automatizacion es OPCIONAL, default OFF
DISC-INT-004 Configuracion guardada en preferencias locales del usuario
DISC-INT-005 Servidor NO almacena logs de consultas con identificador de usuario

8. Criterios de Aceptacion

ID Criterio
AC-001 Deteccion contra mini-cache critico en < 100ms (offline)
AC-002 Deteccion contra lista local usuario en < 500ms (offline)
AC-003 Interacciones CONTRAINDICADAS bloquean hasta confirmacion
AC-004 Disclaimer visible en todas las pantallas de interacciones
AC-005 Mini-cache critico funciona 100% offline para TODOS los tiers
AC-006 Busqueda online disponible para usuarios con cuenta
AC-007 Verificacion DrugBank disponible para Pro/Perfect
AC-008 Analisis IA disponible exclusivamente para Perfect
AC-009 Fuente y fecha de actualizacion siempre visibles
AC-010 Disclaimer de privacidad mostrado en primera busqueda online
AC-011 Interacciones detectadas se guardan en lista local del usuario
AC-012 Mini-cache embebido contiene <100 registros (Regla de 100)

9. Metricas de Calidad

Metrica Objetivo Medicion
Precision > 95% Interacciones reales detectadas
Recall > 90% Interacciones detectadas vs existentes
Falsos positivos < 5% Alertas innecesarias
Tiempo respuesta < 1s Deteccion local

10. Casos de Error

10.1. ERR-INT-001: DrugBank API Timeout

Campo Valor
Código ERR-INT-001
Descripción La API de DrugBank no responde dentro del tiempo límite
Causa Latencia de red, sobrecarga del servicio, problemas de conectividad
Detección Timeout > 3 segundos en llamada API
Acción Usuario Mostrar: "Verificando con datos locales. Resultado puede no incluir interacciones recientes."
Acción Sistema Fallback automático a base local, encolar verificación para reintento posterior
Severidad Media
Recuperación Cola de verificación reintenta cada hora, máximo 5 intentos

10.2. ERR-INT-002: DrugBank API Error 5xx

Campo Valor
Código ERR-INT-002
Descripción La API de DrugBank retorna error de servidor
Causa Mantenimiento programado, falla del servicio, error interno
Detección Código de respuesta HTTP 500-599
Acción Usuario Mostrar: "Servicio de verificación temporalmente no disponible. Usando datos locales."
Acción Sistema Log del error, fallback a base local, notificar a monitoreo si persiste >1 hora
Severidad Media
Recuperación Reintento automático con backoff exponencial (1min, 5min, 15min, 1hr)

10.3. ERR-INT-003: Motor IA No Responde

Campo Valor
Código ERR-INT-003
Descripción El servicio de Claude IA no procesa la consulta
Causa Rate limiting, error de API, problema de autenticación
Detección Timeout > 10 segundos o error de respuesta de Anthropic API
Acción Usuario Mostrar: "Análisis IA no disponible en este momento. Mostrando información estándar."
Acción Sistema Mostrar interacciones de base de datos sin análisis contextual, log evento
Severidad Baja (funcionalidad Premium degradada)
Recuperación Usuario puede reintentar manualmente, sistema reintenta en siguiente consulta
Tier Afectado Solo Perfect

10.4. ERR-INT-004: Combinacion No En Datos Locales

Campo Valor
Codigo ERR-INT-004
Descripcion Combinacion de medicamentos no presente en mini-cache ni lista local
Causa Medicamento nuevo, combinacion inusual, usuario sin cuenta/conexion
Deteccion Lookup en mini-cache y lista local retorna null
Accion Usuario Si offline: "Sin datos offline para esta combinacion. Verificar con conexion."
Accion Sistema Si online + cuenta: Consulta servidor MedTime, guardar en lista local
Severidad Baja
Recuperacion Online: consultar servidor. Offline sin cuenta: solo alertas de mini-cache critico

10.5. Diagrama de Manejo de Errores (v2.0)

flowchart TD
    A[Consulta Interacciones] --> B{Mini-cache critico?}
    B -->|Hit CONTRAINDICADO| C[ALERTA BLOQUEANTE]
    B -->|Miss| D{Lista local usuario?}

    D -->|Hit| E[Retornar de lista local]
    D -->|Miss| F{Tiene cuenta?}

    F -->|No| G[ERR-INT-004: Solo mini-cache disponible]
    F -->|Si| H{Online?}

    H -->|No| I[ERR-INT-004: Verificar con conexion]
    H -->|Si| J[Consultar servidor MedTime]

    J --> K{Respuesta OK?}
    K -->|Si| L[Guardar en lista local]
    K -->|Error| M[Fallback: mini-cache + lista local]

    L --> N{Tier Pro/Perfect?}
    N -->|Si| O[Ofrecer DrugBank]
    N -->|No| P[Mostrar resultado]

    O --> Q{DrugBank OK?}
    Q -->|Si| R[Enriquecer info]
    Q -->|Error| P

    R --> P

    C --> S{Tier Perfect?}
    S -->|Si| T[Ofrecer analisis IA]
    S -->|No| P

    T --> U{IA OK?}
    U -->|Si| V[Agregar contexto]
    U -->|No| P

    V --> P
    E --> P
    G --> P
    I --> P
    M --> P

11. Referencias

11.1. Documentos MedTime

11.2. Documentos de Arquitectura (Regla de 100 Registros)

11.3. Fuentes Externas


Documento generado por SpecQueen - La especificacion funcional ES el sistema.