Saltar a contenido

Investigacion: Anonimizacion de Efectos Secundarios Reportados

Identificador: MTS-INV-014 Version: 1.0.0 Fecha: 2025-12-07 Autor: SpecQueen Solicitado por: Director del Proyecto Estado: Completado


1. Resumen Ejecutivo

Esta investigacion define el proceso de anonimizacion para efectos secundarios que los usuarios reportan sobre medicamentos, permitiendo enriquecer el catalogo de efectos secundarios sin comprometer la privacidad.

1.1. Riesgo Elevado - PHI Directo

ADVERTENCIA: Los efectos secundarios son datos dePHI DIRECTO con alto riesgo de re-identificacion. Un efecto secundario raro + medicamento especifico puede identificar a un individuo.

Ejemplo de riesgo: "Hemorragia gastrointestinal masiva con Imatinib" es tan especifico que puede identificar a una persona en una region.

1.2. Concepto Clave: Supresion Agresiva + Generalizacion

A diferencia de otros datos anonimizados, los efectos secundarios requieren:

  1. Supresion agresiva: Solo reportar si >= 1000 usuarios reportan el mismo efecto
  2. Generalizacion de efectos: "Nausea severa" → "Malestar gastrointestinal"
  3. Differential Privacy: Agregar ruido (15% falsos positivos) para proteccion adicional

1.3. Consentimiento Obligatorio

IMPORTANTE: Para usuarios CON cuenta, el consentimiento para el tratamiento de datos anonimizados es OBLIGATORIO y requisito para usar la aplicacion (no es opt-in).

Ver INV-009: Consentimiento Datos de Salud


2. Tipos de Efectos Secundarios

2.1. Clasificacion por Severidad

Severidad Ejemplos Frecuencia Tipica Riesgo Identificacion
Leve Nausea, dolor de cabeza, fatiga Alta (>10% usuarios) Bajo
Moderado Rash, insomnio, mareos Media (1-10% usuarios) Medio
Severo Hemorragia, anafilaxia, hepatotoxicidad Baja (<1% usuarios) ALTO
Grave Infarto, paro cardiaco, muerte Muy baja (<0.1%) CRITICO

2.2. Clasificacion por Sistema Afectado

Sistema Ejemplos Tratamiento Anonimizacion
Gastrointestinal Nausea, vomito, diarrea Generalizar a "GI"
Neurologico Cefalea, mareos, convulsiones Generalizar a "Neurologico"
Cardiovascular Palpitaciones, hipotension Generalizar a "Cardiovascular"
Dermatologico Rash, urticaria, fotosensibilidad Generalizar a "Dermatologico"
Hematologico Anemia, trombocitopenia Suprimir (muy especifico)
Hepatico Hepatotoxicidad, ictericia Suprimir (muy especifico)
Renal Nefrotoxicidad Suprimir (muy especifico)

3. Datos que SI se Envian (Anonimizados)

3.1. Estructura de Datos

interface EfectoSecundarioAnonimo {
    // Token efimero (no vinculado a usuario)
    session_token: string;  // 32 bytes, nuevo cada sesion

    // Medicamento (SI se envia especifico)
    medicamento: string;  // "Metformina" (nombre generico preferido)
    dosis_rango: string;  // "500-1000 mg" (bucketing)

    // Efecto secundario (GENERALIZADO)
    efecto_categoria: string;  // "Gastrointestinal" (NO "diarrea severa")
    severidad: string;         // "LEVE" | "MODERADO" (NO "severo")

    // Metadata minima
    region: string;     // "Mexico" (pais, NO region especifica)
    periodo: string;    // "2025-Q4" (trimestre, NO mes)
    rango_edad: string; // "40-60" (rangos amplios)
}

3.2. Lo que SI se Reporta

Dato Ejemplo Original Ejemplo Anonimizado
Medicamento "Metformina 850mg" "Metformina" (sin dosis exacta)
Efecto "Diarrea severa con sangre" "Gastrointestinal"
Severidad "Severo - hospitalizado" NO SE REPORTA
Duracion "5 dias" NO SE REPORTA
Region "CDMX" "Mexico" (pais)
Fecha "2025-12-07" "2025-Q4" (trimestre)

4. Datos que NUNCA se Envian

Dato Razon
user_id, email, device_id, IP Identificadores directos
Efecto especifico (ej: "diarrea") Puede ser unico con medicamento
Severidad "Severo" o "Grave" Efectos raros son identificables
Duracion exacta Puede ser unica
Medico que prescribio PHI de tercero
Diagnostico asociado PHI directo
Notas del usuario Texto libre puede contener PHI
Timestamp exacto Permite correlacion
Region especifica Reduce anonimato

5. Tecnicas de Anonimizacion

5.1. Supresion Agresiva

Los efectos secundarios requieren umbrales MUY altos para reportar:

# PSEUDOCODIGO - Supresion agresiva
UMBRAL_EFECTO = 1000  # Minimo 1000 usuarios con mismo efecto+medicamento
UMBRAL_SEVERO = float('inf')  # NUNCA reportar efectos severos/graves

def debe_reportar_efecto(medicamento: str, efecto: str, severidad: str) -> bool:
    # Efectos severos/graves NUNCA se reportan
    if severidad in ["SEVERO", "GRAVE"]:
        return False

    # Verificar frecuencia global
    freq = obtener_frecuencia(medicamento, efecto)
    return freq >= UMBRAL_EFECTO

5.2. Generalizacion Jerarquica

Los efectos se generalizan a categorias del sistema afectado:

GENERALIZACION_EFECTOS = {
    # Gastrointestinal
    "nausea": "Gastrointestinal",
    "vomito": "Gastrointestinal",
    "diarrea": "Gastrointestinal",
    "dolor abdominal": "Gastrointestinal",
    "constipacion": "Gastrointestinal",

    # Neurologico
    "cefalea": "Neurologico",
    "mareos": "Neurologico",
    "somnolencia": "Neurologico",
    "insomnio": "Neurologico",

    # Cardiovascular
    "palpitaciones": "Cardiovascular",
    "hipotension": "Cardiovascular",
    "taquicardia": "Cardiovascular",

    # Dermatologico
    "rash": "Dermatologico",
    "prurito": "Dermatologico",
    "urticaria": "Dermatologico",

    # Musculoesqueletico
    "mialgia": "Musculoesqueletico",
    "artralgia": "Musculoesqueletico",

    # General
    "fatiga": "General",
    "malestar": "General",
}

def generalizar_efecto(efecto_especifico: str) -> str:
    return GENERALIZACION_EFECTOS.get(efecto_especifico.lower(), "Otro")

5.3. Differential Privacy (Randomized Response)

Para proteccion adicional, se agregan "falsos positivos" controlados:

# PSEUDOCODIGO - Randomized Response
EPSILON = 2.0  # Parametro de privacidad
P_REAL = exp(EPSILON) / (1 + exp(EPSILON))  # ~0.88

def aplicar_differential_privacy(reportar: bool) -> bool:
    """
    Con 88% probabilidad reporta valor real.
    Con 12% probabilidad reporta valor aleatorio.
    """
    if random() < P_REAL:
        return reportar  # Valor real
    else:
        return random_bool()  # Valor aleatorio (ruido)

Efecto: El servidor recibe ~12% de falsos positivos/negativos, haciendo imposible saber con certeza si un usuario especifico reporto un efecto.


6. Umbrales de Seguridad

6.1. Umbrales por Severidad

Severidad Umbral k-anonymity Accion
Leve >= 1000 Reportar generalizado
Moderado >= 2000 Reportar generalizado
Severo INFINITO NUNCA reportar
Grave INFINITO NUNCA reportar

6.2. Combinaciones Prohibidas

Ciertas combinaciones NUNCA se reportan por alto riesgo:

Medicamento Efecto Razon
Antirretrovirales Cualquiera Revela VIH
Quimioterapicos Cualquiera Revela cancer
Psiquiatricos Cualquiera Revela salud mental
Inmunosupresores Cualquiera Revela transplante/autoinmune

6.3. Regiones con Restriccion

Para regiones con < 100,000 usuarios activos, todos los efectos se agregan a nivel nacional:

def obtener_region(usuario_region: str, usuarios_region: int) -> str:
    if usuarios_region < 100000:
        return "Mexico"  # Agregar a nacional
    return generalizar_region(usuario_region)

7. Flujo de Anonimizacion

DISPOSITIVO                              SERVIDOR
+---------------------------+            +---------------------------+
| Usuario reporta:          |            |                           |
| Medicamento: Metformina   |            |                           |
| Efecto: Diarrea severa    |            |                           |
| Severidad: Moderado       |            |                           |
| Duracion: 3 dias          |            |                           |
| Region: Monterrey         |            |                           |
+------------+--------------+            |                           |
             |                           |                           |
             v                           |                           |
+---------------------------+            |                           |
| ANONIMIZADOR LOCAL        |            |                           |
|                           |            |                           |
| 1. Verificar medicamento  |            |                           |
|    ¿Es sensible?          |            |                           |
|    Metformina → OK        |            |                           |
|                           |            |                           |
| 2. Generalizar efecto     |            |                           |
|    "Diarrea severa" →     |            |                           |
|    "Gastrointestinal"     |            |                           |
|                           |            |                           |
| 3. Verificar severidad    |            |                           |
|    "Moderado" → OK        |            |                           |
|    (Severo → NO reportar) |            |                           |
|                           |            |                           |
| 4. Verificar k-anonymity  |            |                           |
|    Metformina+GI >= 1000? |            |                           |
|    SI → Continuar         |            |                           |
|                           |            |                           |
| 5. Aplicar DP (12% ruido) |            |                           |
|                           |            |                           |
| 6. Generalizar region     |            |                           |
|    "Monterrey" → "Mexico" |            |                           |
|                           |            |                           |
| 7. Generalizar tiempo     |            |                           |
|    "2025-12" → "2025-Q4"  |            |                           |
+------------+--------------+            |                           |
             |                           |                           |
             v                           v                           |
+---------------------------+     +---------------------------+      |
| PAQUETE ANONIMO           |---->| SERVIDOR RECIBE           |      |
|                           |     |                           |      |
| session_token: x9k2...    |     | NO SABE:                  |      |
| medicamento: "Metformina" |     | - Quien reporto           |      |
| efecto: "Gastrointestinal"|     | - Efecto especifico       |      |
| severidad: "LEVE-MOD"     |     | - Si es real o ruido DP   |      |
| region: "Mexico"          |     | - Duracion                |      |
| periodo: "2025-Q4"        |     | - Region exacta           |      |
+---------------------------+     +---------------------------+      |

8. Validacion y Auditoria

8.1. Pruebas de Re-identificacion

Para efectos secundarios, el umbral es MAS ESTRICTO:

def test_reidentificacion_efectos(datos, conocimiento_auxiliar):
    """
    Umbral: < 0.01% (10x mas estricto que otros datos)
    """
    tasa = calcular_tasa_exito(datos, conocimiento_auxiliar)
    assert tasa < 0.0001, f"Tasa muy alta: {tasa}"

8.2. Auditorias

Tipo Frecuencia Responsable
Automatizada Diaria Sistema (verificar umbrales)
Interna Semanal Equipo Seguridad
Externa Mensual Auditor independiente
Regulatoria (COFEPRIS) Semestral Autoridad sanitaria

9. Farmacovigilancia

9.1. Reportes a Autoridades

Los efectos secundarios graves se reportan a autoridades sanitarias SIN pasar por el sistema de anonimizacion de enriquecimiento:

FLUJO FARMACOVIGILANCIA (separado de enriquecimiento):

1. Usuario reporta efecto GRAVE
2. Sistema marca para revision manual
3. Equipo medico contacta usuario (consentimiento explicito)
4. Si procede, reporte a COFEPRIS con datos identificables
5. Este flujo es SEPARADO del enriquecimiento de catalogos

NOTA: Farmacovigilancia tiene requisitos legales diferentes.
      No se anonimiza porque las autoridades NECESITAN identificar.

10. Cumplimiento Regulatorio

10.1. NOM-220-SSA1-2016

La Norma Oficial Mexicana de Farmacovigilancia requiere:

Requisito Cumplimiento
Reporte de sospechas RAM Canal separado (no anonimizado)
Notificacion a COFEPRIS Via oficial, no por enriquecimiento
Proteccion de identidad Anonimizacion para catalogos

10.2. HIPAA / LGPD / LFPDPPP

Regulacion Requisito Cumplimiento
LFPDPPP Datos sensibles de salud Supresion agresiva + generalizacion
HIPAA De-identification Eliminacion identificadores + DP
LGPD Anonimizacao Datos no vinculables

11. Referencias

11.1. Documentos MedTime

11.2. Normativas

  • NOM-220-SSA1-2016 (Farmacovigilancia Mexico)
  • ICH E2D (Post-approval safety data management)
  • MedDRA (Medical Dictionary for Regulatory Activities)

Documento generado por SpecQueen - "Tus efectos secundarios seran anonimizados... con supresion agresiva."