Cargador de módulos
Carga módulos GMF de Synthea (JSON)
Núcleo de máquinas de estados
Semántica de estados y transiciones
Evaluador de condiciones
Guardas y expresiones
Motor de módulos
Módulos activos y evaluación de estados
Generator
Tamaño de población, semilla, configuración y filtros de módulos
Muestreador demográfico
Bucle de simulación
Gestor de exportación
Person
Aleatoriedad con semilla, atributos, módulos activos
HealthRecord
Encuentros, condiciones, medicación, procedimientos, observaciones
Datos de referencia
Proveedores, financiadores, ubicaciones, demografía, costes
FHIR R4
Bundles
JSON
Documentos de paciente
CSV
Tablas de recursos
A medida
Parquet, bases de datos, colas de mensajes
01 - Qué es PySynthea
Un simulador al estilo de Synthea para la IA sanitaria pensada en Python.
Los datos sanitarios sintéticos permiten a los equipos prototipar, enseñar, probar y comparar sin exponer información sanitaria protegida. Synthea lo hizo práctico para datos longitudinales de historia clínica, pero muchos investigadores trabajan hoy casi por completo en Python, pandas, Jupyter, PyTorch, Dask y PySpark.
PySynthea mantiene el modelo central de Synthea: máquinas de estados modulares para enfermedades, muestreo demográfico de la población, historias longitudinales de pacientes y exportación conforme a estándares. La diferencia es operativa. Está diseñado para instalarse con las herramientas estándar de Python, ejecutarse sin una JVM, ofrecer una API de Python limpia y llevar los registros generados directamente a los flujos de trabajo de ciencia de datos sanitarios e IA aplicada.
La idea central es sencilla: la generación de datos sanitarios sintéticos debería ser una librería de Python, no un runtime aparte con el que los científicos de datos tengan que conectar mediante ficheros y comandos de shell.
02 - Por qué importa
Menos fricción de configuración, investigación reproducible más rápida.
Los datos reales de historia clínica están limitados por HIPAA, el RGPD, la revisión institucional, las restricciones contractuales y el riesgo de reidentificación. Los datos sintéticos no sustituyen la validación clínica real, pero dan a los equipos una base compartible y reproducible para la experimentación y la ingeniería tempranas.
- Se instala con los flujos normales de Python, incluidos pip y uv.
- pip
- Ejecuta módulos JSON originales del Generic Module Framework de Synthea.
- GMF
- Exporta bundles conformes a estándares para pruebas de interoperabilidad.
- FHIR R4
- Alimenta pandas, tensores, notebooks y pipelines de analítica distribuida.
- ML
Objetivos de diseño
| Objetivo | Qué significa |
|---|---|
| Accesibilidad | Instalación y uso nativos de Python, sin runtime JVM externo. |
| Interoperabilidad | Integración natural con pandas, NumPy, PyTorch, Dask, PySpark, Airflow y Jupyter. |
| Reproducibilidad | Generación determinista a partir de semillas y configuración explícitas. |
| Extensibilidad | Puntos de extensión documentados para tipos de estado, exportadores, módulos y comportamiento de la simulación. |
| Escalabilidad | Las cohortes interactivas en notebook y los trabajos por lotes paralelos más grandes comparten la misma API. |
| Fidelidad a los estándares | FHIR R4, CSV, JSON e identificadores compatibles con Synthea siguen siendo salidas de primer nivel. |
03 - Cómo funciona
Generador, modelo del mundo, motor de módulos, exportadores.
PySynthea se organiza como una única distribución de Python con cuatro paquetes principales: el motor de simulación, el modelo sanitario del mundo, los adaptadores de exportación y utilidades auxiliares para la configuración y el comportamiento compartido.
El Generator coordina el muestreo demográfico, la simulación, la ejecución de módulos y la exportación. Cada Person lleva aleatoriedad determinista, atributos, estado de los módulos activos y un HealthRecord. Los módulos se cargan desde JSON GMF de Synthea y se ejecutan como máquinas de estados tipadas, incluidos encuentros, aparición de condiciones, prescripciones, observaciones, procedimientos, planes de cuidados, dispositivos, informes diagnósticos, vacunaciones y estados terminales.
El pipeline de generación
Paso 1
Inicializar
Carga la configuración, la semilla de aleatoriedad, proveedores, financiadores, recursos y módulos.
Paso 2
Muestrear
Extrae datos demográficos, ubicación, fecha de nacimiento y contexto social de las distribuciones configuradas.
Paso 3
Simular
Avanza los módulos de enfermedad con un motor longitudinal basado en pasos de tiempo.
Paso 4
Emitir
Escribe encuentros, condiciones, medicación, procedimientos, observaciones y costes.
Paso 5
Ordenar
Mantiene la coherencia temporal a lo largo de décadas de historia simulada del paciente.
Paso 6
Exportar
Produce salidas FHIR, CSV, JSON, Parquet o listas para base de datos.
04 - Salidas y flujos de trabajo
De cohortes en notebook a datos de prueba FHIR y data lakes.
Como la generación se ejecuta en el mismo proceso, los registros pueden inspeccionarse al instante como objetos de Python, materializarse como DataFrames, convertirse en secuencias listas para modelos, escribirse en un servidor FHIR o particionarse para trabajos distribuidos.
| Formato | Uso principal |
|---|---|
| FHIR R4 | Carga en servidores FHIR, validación, pruebas de interoperabilidad y desarrollo SMART on FHIR. |
| CSV | Tablas planas de recursos para pandas, hojas de cálculo y carga masiva en bases de datos. |
| JSON | Documentos de paciente anidados para depuración, bases de datos documentales e inspección de la historia completa. |
| Parquet | Analítica columnar para data lakes, PySpark, Dask y flujos de lakehouse. |
| BD relacional | Almacenes de investigación, bases de datos de prueba y mapeos a esquemas posteriores mediante SQLAlchemy o pandas. |
Flujos de trabajo representativos
- Generación de cohortes en notebook. Genera una cohorte pequeña, inspecciona los registros e itera los parámetros en unas pocas celdas.
- Construcción de pacientes a medida. Crea un paciente determinista para docencia, depuración o pruebas unitarias de módulos.
- Generación paralela por lotes. Ejecuta pacientes independientes en hilos, procesos, workers de Dask o particiones de PySpark.
- Benchmarking de ML. Regenera cohortes con semilla fija para comparar modelos con distribuciones sintéticas controladas.
- Pruebas de interoperabilidad. Produce bundles FHIR controlados para pruebas de software e integración de extremo a extremo.
05 - Compromisos y trabajo futuro
Una base en Python para la próxima generación de simulación clínica sintética.
PySynthea es un motor independiente, así que la paridad semántica exacta con el Synthea original en Java sigue siendo un objetivo de validación continuo. La meta es mantener los módulos GMF de Synthea como fuente compartida de contenido clínico y, a la vez, hacer que el motor sea más fácil de ampliar, perfilar, probar e integrar para los usuarios de Python.
El artículo también distingue con claridad entre los datos sintéticos al estilo de Synthea y los modelos generativos aprendidos. PySynthea es valioso para registros estructurales, longitudinales y conformes a estándares, para la docencia, la reproducibilidad y las pruebas de pipelines. No sustituye la validación clínica con cohortes reales ni un modelo aprendido que reproduzca la distribución de una institución concreta.
PySynthea reduce el coste de usar datos sintéticos de historia clínica en la IA sanitaria, pero un despliegue responsable sigue exigiendo validación, gobierno y una comprensión clara de lo que los datos sintéticos pueden y no pueden demostrar.
Líneas de investigación
- Aceleración por GPU. Explorar la simulación vectorizada y por lotes con CUDA, JAX o PyTorch.
- Módulos asistidos por LLM. Redactar módulos de enfermedad a partir de guías clínicas con revisión humana en el circuito.
- Simulación multiagente de pacientes. Acoplar trayectorias de pacientes a través de brotes, hogares y congestión del sistema.
- Entornos de aprendizaje por refuerzo. Exponer el estado sintético del paciente y las acciones terapéuticas para benchmarks clínicos de RL.
- Datos sintéticos multimodales. Vincular historias clínicas estructuradas con imagen y texto clínico sintéticos.




