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:
- Mini-cache critico siempre primero: Garantiza alertas de interacciones CONTRAINDICADO incluso sin conexion
- Lista local usuario segundo: Verifica interacciones previamente detectadas (offline)
- Busqueda online tercero: Solo si tiene cuenta y conexion (con disclaimer primera vez)
- 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]
{
"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:
- Si falla DrugBank pero hay conexion: Usar servidor MedTime (~50,000+)
- Si falla todo lo online: Usar mini-cache critico + lista local usuario
- 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.