lección 1
Bienvenido a MediTrack
Conoce la plataforma de telemedicina, el equipo, los 500K pacientes con datos de categoría especial GDPR y la regulación que puede cerrar la empresa.
⏱ 30 min
### El salto a la salud -- donde los datos son PERSONAS
FlashRoute te dio experiencia en ownership completo de un dominio y en sistemas real-time. Aprendiste a gestionar GPS en tiempo real, a mantener la calma cuando 100.000 envíos dependían de tu pipeline y a optimizar bajo presión extrema durante aquel Black Friday donde todo casi explota. Pero querías algo diferente. Algo con impacto social.
MediTrack te atrajo porque los datos que manejas aquí afectan directamente a la salud de 500.000 pacientes reales. Un error en FlashRoute significaba un paquete retrasado. Aquí, un error puede significar que un paciente no recibe su medicación a tiempo, o que alguien lee el historial psiquiátrico de una persona sin su consentimiento. La escala de responsabilidad es completamente diferente.
Rosa Martinez, la DPO de MediTrack, te entrevistó personalmente. Tiene 45 años y una mirada que te atraviesa cuando habla de privacidad. Ex-inspectora de la AEPD durante 5 años -- sabe exactamente qué buscan en una auditoría porque ella las hacía. "Necesito a alguien que entienda de data lakes y pipelines pero que también entienda que estos datos son PERSONAS. Has trabajado con GDPR antes?" Le contaste lo de NeoBank -- las peticiones de borrado, el proceso de anonimización básico que implementaste. Rosa asintió lentamente: "Bien. Aquí es lo mismo pero con datos de categoría especial. Si la AEPD nos audita y encuentra algo mal, no es una multa de 50.000 euros -- es el cierre de la plataforma. Hasta 20 millones de euros o el 4% de facturación global."
La entrevista con Laura Sanchez, tu futura Tech Lead, fue diferente. Laura tiene 37 años, lleva 3 en MediTrack y diseñó la arquitectura actual del data lake. Es técnica, directa y exige que todo tenga tests. "Aquí no hay PRs sin tests. Si tu función de anonimización no tiene un test que verifique que realmente no se puede reidentificar a nadie, no se mergea. Punto." Te gustó su estilo. Claro, sin ambigüedades.
### MediTrack -- Plataforma de telemedicina
MediTrack nació en 2019 en Valencia, fundada por un equipo de médicos y tecnólogos que veían la oportunidad de democratizar el acceso a la salud. La pandemia de 2020 los catapultó: de 5.000 consultas mensuales pasaron a 180.000 en menos de dos años. Hoy son la tercera plataforma de telemedicina más grande de España, con presencia en 8 comunidades autónomas.
- Pacientes registrados: 500.000 activos (700.000 históricos)
- Consultas al mes: ~180.000 (60% videollamada, 40% chat médico)
- Médicos en plataforma: 1.200 (plantilla propia + colaboradores externos)
- Especialidades cubiertas: 28 (medicina general, psiquiatría, cardiología, endocrinología, dermatología...)
- Dispositivos IoT conectados: ~45.000 (pulseras, tensiómetros, glucómetros)
- Empleados totales: ~150 personas (equipo de datos: 6 personas)
- Facturación anual: ~35M EUR (B2C + B2B con aseguradoras)
- Regulación aplicable: GDPR Art. 9 (datos de salud), LOPDGDD, directivas AEPD
- Certificaciones: ISO 27001, ENS nivel medio, HIPAA (para expansión USA)
### Por qué los datos de salud son diferentes a TODO lo anterior
En NeoBank aprendiste que los datos financieros son sensibles. En MediTrack vas a descubrir que los datos de salud están un NIVEL por encima. El GDPR los clasifica como "categoría especial" (Artículo 9) -- junto con datos de etnia, orientación sexual y afiliación política. La razón es simple pero brutal: si alguien ve tu saldo bancario, es malo pero recuperable. Si alguien lee que tienes VIH, depresión mayor, un historial de intentos de suicidio o un aborto reciente, puede destruir tu vida profesional y personal de forma irreversible.
- 01.Datos de categoría especial requieren consentimiento EXPLICITO e inequívoco (no vale el "aceptó cookies" genérico)
- 02.La base legal para procesarlos es mucho más estricta -- investigación médica requiere aprobación del comité de ética
- 03.Las multas son las MAXIMAS del GDPR: hasta 20M EUR o 4% de facturación global (lo que sea mayor)
- 04.La AEPD puede ordenar el CESE INMEDIATO del tratamiento -- es decir, cerrar la plataforma hasta que se corrija
- 05.El derecho al olvido tiene excepciones complejas: no puedes borrar si hay obligación legal de conservar (recetas activas, diagnósticos de notificación obligatoria)
- 06.Existe obligación de notificar brechas en 72 horas -- si un dato de salud se filtra, reloj en marcha
Diferencia crítica con NeoBank: en banca, si borras datos de un cliente por GDPR, pierdes información financiera que se puede reconstruir desde los extractos bancarios. En salud, si borras datos por GDPR pero hay una prescripción activa, el paciente puede NO recibir su medicación. El borrado en salud NUNCA es un simple DELETE -- siempre hay que verificar que no existe una obligación legal de conservación que sea SUPERIOR al derecho al olvido.
### El stack técnico
- Data Lake: AWS S3 con encriptación AES-256 en reposo + TLS 1.3 en tránsito
- Zonas del lake: raw (encriptado, acceso ultra-restringido), silver (pseudonimizado), gold (anonimizado para BI)
- Base operacional: PostgreSQL 15 con Row-Level Security (RLS) activado
- Procesamiento batch: Python 3.11 + Pandas, orquestado con Airflow 2.8
- Modelado: dbt Core con tests de privacidad custom
- Wearables: ingesta via MQTT -> Kafka -> S3 (45K dispositivos, ~2M eventos/día)
- BI: Metabase conectado SOLO a la zona gold (datos 100% anonimizados)
- Audit: tabla PostgreSQL append-only con triggers automáticos
- Backup: 3 copias geográficamente separadas (Madrid, Frankfurt, Irlanda), cifradas
- Acceso: VPN obligatoria + MFA + certificado cliente para acceso a datos raw
### Tu equipo
El equipo de datos de MediTrack es pequeño (6 personas) pero con una responsabilidad enorme. Rosa no contrata a nadie que no pase su "test de empatía": te cuenta el caso real de una paciente cuyo historial de salud mental se filtró a su empresa y fue despedida. Te pregunta cómo te haría sentir. Si no lo tomas en serio, no entras.
### Los personajes que vas a conocer esta semana
Rosa Martinez (45 años) -- DPO (Data Protection Officer). Abogada de formación que se especializó en protección de datos cuando nadie sabía qué era el GDPR. Trabajó 5 años como inspectora en la AEPD -- literalmente hacía las auditorías que ahora le preocupan. Tiene un máster en ciberseguridad y conoce el reglamento artículo por artículo. No es rígida por capricho: ha visto en primera persona lo que pasa cuando se filtra un historial médico. Una paciente cuyo diagnóstico de VIH llegó a su empresa y fue despedida "por reorganización". Un menor cuyo historial psiquiátrico apareció en redes por una brecha de un hospital. Rosa protege a los pacientes con la misma fiereza que un guardián. Cuando dice "no", es NO. Frase típica: "Artículo 17 del RGPD. El paciente tiene derecho a supresión EXCEPTO cuando hay obligación legal de retención. En sanidad: 5 años mínimo para prescripciones."
Dr. Alejandro Martin (52 años) -- Director Médico. Cardiólogo de formación con 25 años de experiencia clínica, se pasó a la telemedicina porque creía que la tecnología podía mejorar la atención primaria en zonas rurales. Necesita datos para investigación clínica: estudios de eficacia de tratamientos, patrones epidemiológicos, adherencia a medicación. Entiende que la privacidad manda, pero se frustra: "Con datos completamente anónimos no puedo hacer seguimiento longitudinal de pacientes. Necesito poder agrupar por individuo sin saber QUIEN es." Es respetuoso pero insistente. Cuando cree que la burocracia de privacidad bloquea la ciencia, lo dice sin rodeos. Frase típica: "Mira, yo no necesito saber que ese paciente es Juan Garcia de Valencia. Pero necesito saber que el paciente X del grupo de hipertensión sigue viniendo a consulta 6 meses después. Si me quitas eso, no puedo investigar adherencia."
Laura Sanchez (37 años) -- Tech Lead. Tu jefa directa. Ingeniera informática con experiencia previa en Sanitas y en una startup de health-tech en Londres. Lleva 3 años en MediTrack y diseñó la arquitectura actual del data lake con las zonas de privacidad. Es técnica sólida, exige tests en todo, revisa código con ojo crítico pero constructivo. Nunca te dice "esto está mal" sin explicarte por qué y cómo mejorarlo. Es tu aliada principal esta semana: te explica dónde están los datos, cómo fluyen, qué trampas tienen y qué errores se cometieron antes de que tú llegaras. Frase típica: "El campo diagnostico_principal parece texto libre pero en realidad es CIE-10 codificado. No lo trates como string genérico -- tiene estructura."
Javier Fernandez (24 años) -- Junior Data Engineer. Tu compañero directo. Entró hace 2 meses, recién salido de un bootcamp de data engineering. Es entusiasta, rápido aprendiendo y con buenas intenciones, pero le falta contexto sobre regulación y las consecuencias de acceder a datos sin autorización. Tú eres su mentor informal -- Laura te pidió que "le eches un ojo y le guíes". Javier va a cometer un error grave esta semana (acceder a datos de pacientes sin consentimiento), no por maldad sino por ignorancia de las reglas. Cómo gestiones ese momento define tu madurez profesional. Frase típica: "Oye, he visto que hay una tabla de pacientes con diagnósticos y quería hacer una query rápida para el dashboard de Operaciones. No pasa nada, no? Solo es un SELECT..."
### Las dinámicas del equipo
- Rosa y Dr. Martin: tensión profesional constante. El quiere datos; ella pone límites. Se respetan mutuamente pero chocan en reuniones. Rosa gana siempre en lo legal; el Dr. Martin gana cuando demuestra que hay una forma de cumplir la ley Y hacer investigación.
- Laura y Rosa: buena relación. Laura implementa lo que Rosa dicta. Se entienden porque Laura piensa en privacidad como requisito técnico, no como obstáculo.
- Laura y tú: tu jefa directa. Confía en tu experiencia previa pero te evalúa en las primeras semanas. Si le demuestras que piensas en edge cases y tests, te dará más autonomía rápidamente.
- Javier y tú: lo mentorizas. Es tu primera vez teniendo esa responsabilidad. Tienes que equilibrar dejarle aprender solo con evitar que cometa errores graves con datos sensibles.
- Dr. Martin y Javier: peligrosa. El Dr. Martin a veces le pide cosas directamente a Javier saltándose a Laura. Javier, queriendo agradar, ejecuta sin preguntar si tiene permiso.
### Los datos que maneja MediTrack
Laura te sienta el primer día y te hace un tour por el catálogo de datos. Abre una wiki interna con un diagrama de entidad-relación y te señala cada tabla: "Todo lo que ves aquí son datos de categoría especial. TODO. No hay una sola tabla que no contenga información protegida por el Art. 9 del GDPR. Incluso la tabla de consultas -- porque saber que alguien tuvo una cita de psiquiatría el martes ya es un dato de salud."
1-- Esquema principal del data lake de MediTrack2-- TODAS las tablas contienen datos de categoría especial GDPR Art. 934-- Tabla de pacientes (PII directa -- nivel máximo de proteccion)5CREATE TABLE pacientes (6 id VARCHAR(12) PRIMARY KEY, -- PAC-XXXXXX7 nombre VARCHAR(100) NOT NULL,8 apellidos VARCHAR(150) NOT NULL,9 dni VARCHAR(9) UNIQUE,10 fecha_nacimiento DATE NOT NULL,11 sexo CHAR(1), -- M/F/X12 email VARCHAR(200),13 telefono VARCHAR(15),14 dirección TEXT,15 codigo_postal VARCHAR(5),16 provincia VARCHAR(50),17 grupo_sanguineo VARCHAR(5),18 fecha_registro TIMESTAMP DEFAULT NOW(),19 estado VARCHAR(20) DEFAULT 'activo' -- activo/inactivo/suprimido20);2122-- Historiales clinicos (máxima sensibilidad)23CREATE TABLE historiales (24 id SERIAL PRIMARY KEY,25 paciente_id VARCHAR(12) REFERENCES pacientes(id),26 fecha DATE NOT NULL,27 diagnostico_cie10 VARCHAR(10), -- Codigo CIE-10 estandar28 diagnostico_texto TEXT, -- Descripcion legible29 notas_medicas TEXT, -- Texto libre del medico (PELIGRO)30 medico_id VARCHAR(12),31 especialidad VARCHAR(50),32 gravedad VARCHAR(20), -- leve/moderado/grave/crítico33 seguimiento_requerido BOOLEAN DEFAULT false34);3536-- Prescripciones farmacéuticas37CREATE TABLE prescripciones (38 id SERIAL PRIMARY KEY,39 paciente_id VARCHAR(12) REFERENCES pacientes(id),40 medicamento VARCHAR(200) NOT NULL,41 principio_activo VARCHAR(100),42 dosis VARCHAR(50),43 frecuencia VARCHAR(50),44 fecha_inicio DATE NOT NULL,45 fecha_fin DATE, -- NULL = tratamiento cronico46 medico_prescriptor VARCHAR(12),47 estado VARCHAR(20) DEFAULT 'activa' -- activa/finalizada/cancelada48);4950-- Consultas de telemedicina51CREATE TABLE consultas (52 id SERIAL PRIMARY KEY,53 paciente_id VARCHAR(12) REFERENCES pacientes(id),54 medico_id VARCHAR(12),55 fecha_hora TIMESTAMP NOT NULL,56 tipo VARCHAR(10), -- video/chat/presencial57 duracion_min INTEGER,58 motivo TEXT,59 resumen_medico TEXT,60 diagnostico_cie10 VARCHAR(10),61 seguimiento TEXT,62 satisfaccion INTEGER -- 1-5 (encuesta post-consulta)63);6465-- Datos de wearables/IoT (telemetria de salud)66CREATE TABLE wearables (67 id BIGSERIAL PRIMARY KEY,68 device_id VARCHAR(20),69 paciente_id VARCHAR(12) REFERENCES pacientes(id),70 timestamp_utc TIMESTAMP NOT NULL,71 tipo_medicion VARCHAR(30), -- heart_rate/blood_pressure/glucose/spo272 valor DECIMAL(10,2),73 unidad VARCHAR(10), -- bpm/mmHg/mg_dL/%74 alerta BOOLEAN DEFAULT false -- true si valor fuera de rango75);7677-- Tabla de consentimientos (base legal del tratamiento)78CREATE TABLE consentimientos (79 id SERIAL PRIMARY KEY,80 paciente_id VARCHAR(12) REFERENCES pacientes(id),81 finalidad VARCHAR(50) NOT NULL, -- asistencial/investigacion/marketing/compartir_aseguradora82 estado VARCHAR(20) DEFAULT 'otorgado', -- otorgado/revocado83 fecha_otorgado TIMESTAMP NOT NULL,84 fecha_revocado TIMESTAMP,85 version_politica VARCHAR(10),86 canal VARCHAR(30), -- app/web/presencial/telefono87 ip_origen VARCHAR(45),88 evidencia_url TEXT -- documento firmado en S389);
Esquema completo -- cada tabla es categoría especial GDPR Art. 9
Consejo de senior: En salud, la regla de oro es "mínimo privilegio, máximo rastro". Nadie accede a más datos de los que necesita para su función, y CADA acceso queda registrado con timestamp, usuario, IP, query ejecutada y número de registros devueltos. Si no puedes demostrar quién accedió a qué y cuándo, la AEPD asume lo peor.
### Tu primera semana -- la hoja de ruta
Rosa convoca una reunión el primer día con Laura, tú y Javier. Te entrega una hoja impresa (sí, impresa -- "los emails se hackean, el papel no") con las prioridades de la semana:
1PRIORIDADES SEMANA -- EQUIPO DE DATOS2=====================================3DPO: Rosa Martinez4Fecha: 4 de marzo 202456DIA 1 (Lunes):7 - Solicitud ARCO de supresión (paciente PAC-284719)8 - Disenar e implementar proceso de right-to-be-forgotten9 - DEADLINE LEGAL: 30 días (Art. 12.3 GDPR)1011DIA 2 (Martes):12 - Dr. Martin necesita dataset para estudio de adherencia13 - Implementar k-anonymity con k=5 mínimo14 - Aprobacion comite de etica necesaria ANTES de entregar1516DIA 3 (Miercoles mañana):17 - Nuevo requisito regulatorio: audit trail inmutable18 - Registrar TODOS los accesos a datos de pacientes19 - SLA: poder responder a AEPD en < 72h sobre cualquier acceso2021DIA 3 (Miercoles tarde):22 - INCIDENTE: acceso no autorizado detectado23 - Investigacion y contencion inmediata24 - Documentacion del incidente para registro interno2526DIA 4 (Jueves):27 - Implementar Row-Level Security post-incidente28 - Dynamic data masking para entornos no-producción29 - Cada rol solo ve lo que necesita -- ZERO TRUST3031DIA 5 (Viernes):32 - Presentacion al compliance board33 - Consent management: pipeline aware de consentimientos34 - Resumen ejecutivo de controles para el CEO3536RECORDATORIO: Cada accion debe ser AUDITABLE.37Si no lo puedes demostrar, no existe.3839-- Rosa
La hoja de Rosa -- clara, con deadlines legales, sin negociación
### Los canales de Slack que usaras
- #data-team -- Canal del equipo de datos. Standups diarios a las 9:30.
- #data-privacy -- Canal donde Rosa comunica directivas de privacidad. Solo ella escribe; los demás leemos.
- #data-incidents -- Canal para incidentes de seguridad. Esperemos no usarlo mucho.
- #research-data -- Canal donde Dr. Martin pide datasets para investigación. Requiere aprobación de Rosa.
- #alerts-pipeline -- Alertas automáticas de Airflow cuando algo falla.
A partir de la siguiente lección empezarás a implementar código real de privacidad. Este es un caso Mid-Senior: se te da el problema y las restricciones, pero TU diseñas la solución. No hay paso a paso detallado -- se espera que con tu experiencia previa (FlashRoute, NeoBank) puedas proponer e implementar soluciones. Laura revisa, Rosa aprueba.
Respira. En FlashRoute gestionabas 100K envíos en real-time. Aquí no es velocidad lo que importa -- es PRECISION. Un dato mal borrado, un acceso no auditado, una anonimización reversible... cualquiera de esas cosas puede acabar en un titular de periódico. Bienvenido a MediTrack. Aquí la ingeniería de datos protege personas.
Trabajarás con datos de salud con PII simulada (nunca reales): pacientes, citas, diagnósticos, prescripciones, consentimientos, wearables y el log de accesos. Descárgalos desde el apartado de datasets del caso. Trátalos con el mismo cuidado que datos reales: es parte del ejercicio profesional.
volver a la visión del caso y descargar los datasetsInventario de descargables del caso (guárdalos en una carpeta datos/ junto a tus scripts): datos/pacientes.csv, datos/profesionales.csv, datos/citas.csv, datos/diagnosticos.csv, datos/prescripciones.csv, datos/consentimientos.csv, datos/dispositivos.csv, datos/lecturas_wearable.csv, datos/peticiones_supresion.csv y datos/access_log_sample.json (formato JSON Lines: un objeto JSON por línea). Importante sobre los ids: en los CSV el identificador de paciente es la columna id (numérica, sin prefijo). Los ejercicios de diseño usan ids ilustrativos como PAC-284719 o PAC-001234 que NO existen literalmente en los ficheros: por eso esas queries son ejercicios conceptuales de diseño, no se ejecutan contra los datos.
## ejercicios
Explorar el modelo de datos sensible
Escribe queries SQL que identifiquen los datos más sensibles del sistema: cuenta registros por tabla, identifica campos PII directos vs quasi-identificadores, y clasifica el nivel de riesgo de cada tabla. Este es tu primer inventario de privacidad.
Consulta de consentimientos activos por paciente
Escribe una query que muestre el estado de consentimiento de un paciente específico para TODAS las finalidades posibles. Debe indicar claramente: finalidad, estado (otorgado/revocado/nunca_solicitado), fecha, y si el paciente puede ser incluido en pipelines de cada tipo.
Regístrate para guardar tu progreso.
## comentarios
Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.
Inicia sesión para comentar y responder.
cargando comentarios...