Saltar a contenido

Investigacion: Anonimizacion de Estudios y Tratamientos para Enriquecimiento de Catalogos

Identificador: MTS-INV-011 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 datos de estudios clinicos y tratamientos que los usuarios ingresan en MedTime, permitiendo enriquecer el catalogo publico de estudios (MTS-EST-001) sin comprometer la privacidad del usuario.

1.1. Concepto Clave: Separacion de Identidad

PRINCIPIO FUNDAMENTAL: MedTime usaseparacion de identidad, NO generalizacion a categorias. - SI se envian: Nombres especificos de estudios, resultados en rangos (bucketing), tratamientos - NO se envian: user_id, email, device_id, IP, timestamps exactos, valores exactos de resultados

1.2. 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).

  • Usuario SIN cuenta: Puede usar app localmente sin consentimiento
  • Usuario CON cuenta: DEBE consentir el tratamiento de datos anonimizados

Ver INV-009: Consentimiento Datos de Salud


2. Tipos de Datos Cubiertos

2.1. Estudios de Laboratorio

Categoria Ejemplos Sensibilidad
Hematologia BHC, hemoglobina, plaquetas, VSG PHI Indirecto
Quimica Clinica Glucosa, perfil lipidico, creatinina, PFH PHI Indirecto
Inmunologia ANA, PCR, VIH, Hepatitis PHI Directo (Alto)
Perfil Hormonal TSH, T3, T4, cortisol, testosterona PHI Indirecto
Coagulacion TP/INR, TTP, fibrinogeno PHI Indirecto
Uroananalisis EGO, urocultivo, proteinas 24h PHI Indirecto

2.2. Estudios de Imagen

Categoria Ejemplos Sensibilidad
Radiografia Torax, columna, mamografia PHI Indirecto
Ultrasonido Abdominal, pelvico, obstetrico PHI Directo (si obstetrico)
Tomografia Craneo, torax, abdomen PHI Indirecto
Resonancia Cerebral, columna, articulaciones PHI Indirecto
Medicina Nuclear PET-CT, gammagrama PHI Indirecto

2.3. Tratamientos

Categoria Ejemplos Sensibilidad
Dialisis Hemodialisis, dialisis peritoneal PHI Directo
Oncologicos Quimioterapia, radioterapia PHI Directo
Infusiones Hierro IV, biologicos PHI Indirecto
Fisioterapia Rehabilitacion, hidroterapia PHI Bajo
Salud Mental Psicoterapia, TMS PHI Directo

3. Datos que SI se Envian (Anonimizados)

3.1. Estudios de Laboratorio

interface EstudioLaboratorioAnonimo {
    // Identificador de sesion efimero
    session_token: string;  // 32 bytes aleatorios, nuevo cada sesion

    // Datos del estudio (SI se envian)
    nombre_estudio: string;  // "Glucosa en ayunas" (especifico)
    codigo_loinc: string;    // "2345-7" (estandar)

    // Resultado en RANGO (bucketing)
    resultado_rango: string;  // "140-150 mg/dL" (NO valor exacto)
    unidad: string;           // "mg/dL"
    interpretacion: string;   // "ELEVADO" | "NORMAL" | "BAJO"

    // Metadata generalizada
    region: string;           // "Centro Mexico" (NO ciudad exacta)
    periodo: string;          // "2025-12" (solo mes/año)
    rango_edad: string;       // "40-50" (NO edad exacta)
    sexo: string;             // "M" | "F" (si relevante para interpretacion)
}

3.2. Tratamientos

interface TratamientoAnonimo {
    session_token: string;

    // Datos del tratamiento (SI se envian)
    nombre_tratamiento: string;  // "Hemodialisis" (especifico)
    codigo_icd10pcs: string;     // Codigo estandar
    frecuencia: string;          // "3 veces/semana"

    // Metadata generalizada
    region: string;
    periodo: string;
    rango_edad: string;
}

3.3. Reglas de Bucketing para Resultados

Parametro Buckets Ejemplo
Glucosa 10 mg/dL 145 → "140-150"
Colesterol Total 20 mg/dL 215 → "200-220"
Hemoglobina 0.5 g/dL 12.3 → "12.0-12.5"
TSH 0.5 mUI/L 2.8 → "2.5-3.0"
Creatinina 0.2 mg/dL 1.3 → "1.2-1.4"

4. Datos que NUNCA se Envian

Dato Razon
user_id Identificador directo
email Identificador directo
device_id Identificador de dispositivo
IP Identificador de red
Timestamp exacto Permite correlacion temporal
Valor exacto de resultado Puede ser unico/identificable
Nombre del laboratorio Puede reducir anonimato
Nombre del medico PHI de tercero
Diagnostico asociado PHI directo
Notas/comentarios del usuario Texto libre puede contener PHI

5. Tecnicas de Anonimizacion

5.1. Bucketing de Valores Numericos

El bucketing convierte valores exactos en rangos, reduciendo la precision pero manteniendo utilidad estadistica.

# PSEUDOCODIGO - Bucketing de resultados
def bucketizar_resultado(valor: float, parametro: str) -> str:
    """
    Convierte valor exacto a rango.
    """
    BUCKETS = {
        "glucosa": 10,        # Buckets de 10 mg/dL
        "colesterol": 20,     # Buckets de 20 mg/dL
        "hemoglobina": 0.5,   # Buckets de 0.5 g/dL
        "tsh": 0.5,           # Buckets de 0.5 mUI/L
        "creatinina": 0.2,    # Buckets de 0.2 mg/dL
    }

    bucket_size = BUCKETS.get(parametro, 10)  # Default 10
    lower = (valor // bucket_size) * bucket_size
    upper = lower + bucket_size

    return f"{lower}-{upper}"  # "140-150"

5.2. Supresion por Rareza

Estudios raros (< 1000 usuarios globales) NO se reportan para evitar re-identificacion.

# PSEUDOCODIGO - Supresion de estudios raros
FRECUENCIAS_GLOBALES = cargar_frecuencias()
K_MINIMO = 1000

def debe_reportar(nombre_estudio: str) -> bool:
    freq = FRECUENCIAS_GLOBALES.get(nombre_estudio, 0)
    return freq >= K_MINIMO

5.3. Generalizacion Temporal

Los timestamps exactos se generalizan a periodo (mes/año).

# "2025-12-07T10:30:00Z" → "2025-12"
def generalizar_timestamp(ts: datetime) -> str:
    return ts.strftime("%Y-%m")

5.4. Generalizacion Geografica

La ubicacion exacta se generaliza a region.

REGIONES = {
    "CDMX": "Centro Mexico",
    "Estado de Mexico": "Centro Mexico",
    "Monterrey": "Norte Mexico",
    "Guadalajara": "Occidente Mexico",
    # ...
}

def generalizar_region(ciudad: str) -> str:
    return REGIONES.get(ciudad, "Mexico")

6. Umbrales de Seguridad

6.1. K-Anonymity

Parametro Umbral Descripcion
k-anonymity minimo 1000 Cada combinacion debe tener >= 1000 usuarios
Estudio raro < 1000 usuarios NO reportar
Combinacion rara < 500 usuarios Generalizar o suprimir

6.2. Rangos de Edad

Rango Descripcion
0-18 Pediatrico
19-30 Adulto joven
31-40 Adulto
41-50 Adulto medio
51-60 Adulto mayor
61-70 Tercera edad
71+ Anciano

7. Flujo de Anonimizacion

DISPOSITIVO (Usuario)                    SERVIDOR (MedTime)
+---------------------------+            +---------------------------+
| Usuario ingresa resultado |            |                           |
| Glucosa: 147 mg/dL        |            |                           |
| Fecha: 2025-12-07 10:30   |            |                           |
| Ciudad: CDMX              |            |                           |
+------------+--------------+            |                           |
             |                           |                           |
             v                           |                           |
+---------------------------+            |                           |
| ANONIMIZADOR LOCAL        |            |                           |
|                           |            |                           |
| 1. Bucketizar: 140-150    |            |                           |
| 2. Generalizar fecha:     |            |                           |
|    2025-12                |            |                           |
| 3. Generalizar region:    |            |                           |
|    Centro Mexico          |            |                           |
| 4. Verificar k >= 1000    |            |                           |
| 5. Generar session_token  |            |                           |
|    (efimero, no vinculado)|            |                           |
+------------+--------------+            |                           |
             |                           |                           |
             | Datos anonimizados        |                           |
             v                           v                           |
+---------------------------+     +---------------------------+      |
| PAQUETE ANONIMO           |---->| SERVIDOR RECIBE           |      |
|                           |     |                           |      |
| session_token: a7f2...    |     | Procesa SIN saber:        |      |
| estudio: "Glucosa ayunas" |     | - Quien es el usuario     |      |
| resultado: "140-150"      |     | - Valor exacto (147)      |      |
| region: "Centro Mexico"   |     | - Fecha exacta            |      |
| periodo: "2025-12"        |     | - Ciudad exacta           |      |
+---------------------------+     +---------------------------+      |
                                           |                         |
                                           v                         |
                                  +---------------------------+      |
                                  | CATALOGO ENRIQUECIDO      |      |
                                  |                           |      |
                                  | "Glucosa 140-150 reportada|      |
                                  |  en Centro Mexico,        |      |
                                  |  Dic 2025, adultos 40-50" |      |
                                  +---------------------------+      |

8. Casos Especiales

8.1. Estudios de Alto Riesgo (PHI Directo)

Para estudios que revelan condiciones sensibles (VIH, enfermedades mentales, oncologia):

Estudio Tratamiento Especial
VIH/SIDA NO reportar resultado, solo existencia con k >= 5000
Enfermedades ETS NO reportar, solo estadisticas nacionales
Psiquiatricos Generalizar a "Salud Mental"
Oncologicos Generalizar tipo de cancer a "Oncologico"
Geneticos NO reportar nunca

8.2. Tratamientos de Alto Riesgo

Tratamiento Tratamiento Especial
Quimioterapia Generalizar a "Tratamiento oncologico"
Dialisis Reportar solo si k >= 2000
Psicoterapia Generalizar a "Salud mental"
Tratamiento VIH NO reportar nunca

8.3. Embarazo y Fertilidad

Estudios obstetricos y de fertilidad requieren tratamiento especial:

  • Generalizar a categoria "Salud reproductiva"
  • NO reportar resultados especificos
  • Solo estadisticas agregadas con k >= 5000

9. Validacion y Auditoria

9.1. Pruebas de Re-identificacion

# PSEUDOCODIGO - Prueba de re-identificacion
def test_reidentificacion(datos_anonimizados, conocimiento_auxiliar):
    """
    Umbral: < 0.1% tasa de exito
    """
    exitos = 0
    for registro in datos_anonimizados:
        candidatos = buscar_match(registro, conocimiento_auxiliar)
        if len(candidatos) == 1:
            exitos += 1

    tasa = exitos / len(datos_anonimizados)
    assert tasa < 0.001, f"Tasa muy alta: {tasa}"

9.2. Auditorias Periodicas

Tipo Frecuencia Responsable
Automatizada Continua Sistema
Interna Mensual Equipo Seguridad
Externa Trimestral Auditor independiente
Regulatoria Anual Autoridad (INAI sucesor)

10. Cumplimiento Regulatorio

10.1. Mapeo a Regulaciones

Regulacion Requisito Cumplimiento
LFPDPPP Disociacion de datos Bucketing + supresion identificadores
LGPD Anonimizacao Separacion de identidad
HIPAA De-identification Eliminacion 18 identificadores + bucketing
GDPR Anonymisation Datos no vinculables a persona

10.2. Documentacion Requerida

  • Privacy Impact Assessment (PIA): Anual
  • Registro de consentimientos: Continuo
  • Logs de anonimizacion: 90 dias
  • Auditorias: Archivo 7 años

11. Implementacion

11.1. Checklist

FASE 1: INFRAESTRUCTURA
[ ] Implementar bucketizador para cada parametro de laboratorio
[ ] Configurar tablas de frecuencias globales
[ ] Implementar generador de session_token efimero
[ ] Crear generalizador de region y timestamp

FASE 2: INTEGRACION
[ ] Integrar anonimizador en MTS-ANA-001 (Analisis Clinicos)
[ ] Integrar en MTS-EST-001 (Estudios y Tratamientos)
[ ] Configurar batch processing para envios

FASE 3: VALIDACION
[ ] Ejecutar pruebas k-anonymity
[ ] Pruebas de re-identificacion
[ ] Auditoria de codigo

FASE 4: OPERACION
[ ] Monitoreo continuo
[ ] Actualizacion periodica de frecuencias
[ ] Auditorias trimestrales

12. Referencias

12.1. Documentos MedTime Relacionados

12.2. Estandares Tecnicos

  • LOINC (Logical Observation Identifiers Names and Codes)
  • ICD-10-PCS (Procedure Coding System)
  • HL7 FHIR (formato de intercambio)

Documento generado por SpecQueen - "Tus estudios seran anonimizados... matematicamente."