EVA CTMS Archive — clinical data ETL pipeline
Archivo EVA CTMS — pipeline ETL de datos clínicos
- ProblemProblema
- A decommissioned Clinical Trial Management System left ~9,925 documents in inconsistently named folders plus a separate 6,830-record patient database, with no archive structure. Everything had to be understood, cleaned, and validated before migration — without exposing patient data to an external AI or cloud service.Un CTMS desmantelado dejó ~9,925 documentos en carpetas con nombres inconsistentes y una base de 6,830 pacientes, sin estructura de archivo. Todo debía entenderse, limpiarse y validarse antes de migrar — sin exponer datos de pacientes a una IA o nube externa.
- What I builtQué construí
- A 10-stage local Python ETL pipeline: capture raw structure, crawl and classify every document, build a patient roster, clean the patient database, cross-validate documents against patients, generate a SharePoint build plan, and tag by study and deviation.Un pipeline ETL local de 10 etapas en Python: capturar la estructura, clasificar cada documento, construir un registro de pacientes, limpiar la base, validar documentos contra pacientes, generar el plan de SharePoint y etiquetar por estudio y desviación.
- ImpactImpacto
- Caught 1,791 documents (18%) whose filename patient IDs matched no real patient — before migration, not after. All processing local, PHI masked in every log, and a searchable SharePoint archive with the Patient Lookup and Deviation views staff asked for.Detectó 1,791 documentos (18%) cuyos IDs no coincidían con ningún paciente real — antes de migrar, no después. Todo local, PHI enmascarado en cada registro y un archivo SharePoint consultable con las vistas que el personal pedía.



