Chargeur de modules
Charge les modules GMF de Synthea (JSON)
Noyau de machines à états
Sémantique des états et transitions
Évaluateur de conditions
Gardes et expressions
Moteur de modules
Modules actifs et évaluation des états
Generator
Taille de population, graine, configuration et filtres de modules
Échantillonneur démographique
Boucle de simulation
Gestionnaire d’export
Person
Aléatoire à graine, attributs, modules actifs
HealthRecord
Rencontres, pathologies, médicaments, actes, observations
Données de référence
Établissements, payeurs, lieux, démographie, coûts
FHIR R4
Bundles
JSON
Documents patients
CSV
Tables de ressources
Sur mesure
Parquet, bases de données, files de messages
01 - Qu’est-ce que PySynthea
Un simulateur à la Synthea pour une IA de santé pensée en Python.
Les données de santé synthétiques permettent aux équipes de prototyper, d’enseigner, de tester et de comparer sans exposer d’informations de santé protégées. Synthea l’a rendu praticable pour les données longitudinales de DPI, mais beaucoup de chercheurs travaillent aujourd’hui presque entièrement en Python, pandas, Jupyter, PyTorch, Dask et PySpark.
PySynthea conserve le modèle central de Synthea : machines à états modulaires pour les maladies, échantillonnage démographique de la population, historiques patients longitudinaux et export conforme aux standards. La différence est opérationnelle. Il s’installe avec les outils Python standard, fonctionne sans JVM, expose une API Python propre et place les enregistrements générés directement dans les workflows de data science en santé et d’IA appliquée.
L’idée centrale est simple : la génération de données de santé synthétiques devrait être une bibliothèque Python, et non un runtime séparé que les data scientists doivent relier par des fichiers et des commandes shell.
02 - Pourquoi c’est important
Moins de friction à l’installation, une recherche reproductible plus rapide.
Les données réelles de DPI sont contraintes par HIPAA, le RGPD, l’examen institutionnel, les restrictions contractuelles et le risque de réidentification. Les données synthétiques ne remplacent pas une vraie validation clinique, mais elles offrent aux équipes un socle partageable et reproductible pour l’expérimentation et l’ingénierie en amont.
- S’installe via les workflows Python habituels, dont pip et uv.
- pip
- Exécute les modules JSON originaux du Generic Module Framework de Synthea.
- GMF
- Exporte des bundles conformes aux standards pour les tests d’interopérabilité.
- FHIR R4
- Alimente pandas, des tenseurs, des notebooks et des pipelines d’analytique distribuée.
- ML
Objectifs de conception
| Objectif | Ce que cela signifie |
|---|---|
| Accessibilité | Installation et usage natifs Python, sans runtime JVM externe. |
| Interopérabilité | Intégration naturelle avec pandas, NumPy, PyTorch, Dask, PySpark, Airflow et Jupyter. |
| Reproductibilité | Génération déterministe à partir de graines et d’une configuration explicites. |
| Extensibilité | Points d’extension documentés pour les types d’états, les exportateurs, les modules et le comportement de la simulation. |
| Passage à l’échelle | Les cohortes interactives en notebook et les gros traitements par lots parallèles partagent la même API. |
| Fidélité aux standards | FHIR R4, CSV, JSON et des identifiants compatibles Synthea restent des sorties de premier rang. |
03 - Comment ça marche
Générateur, modèle du monde, moteur de modules, exportateurs.
PySynthea est organisé en une seule distribution Python avec quatre paquets principaux : le moteur de simulation, le modèle du monde de la santé, les adaptateurs d’export et des utilitaires pour la configuration et les comportements partagés.
Le Generator coordonne l’échantillonnage démographique, la simulation, l’exécution des modules et l’export. Chaque Person porte un aléatoire déterministe, des attributs, l’état des modules actifs et un HealthRecord. Les modules sont chargés depuis le JSON GMF de Synthea et exécutés comme des machines à états typées, avec rencontres, apparitions de pathologies, prescriptions, observations, actes, plans de soins, dispositifs, comptes rendus diagnostiques, vaccinations et états terminaux.
Le pipeline de génération
Étape 1
Initialiser
Charger la configuration, la graine aléatoire, les établissements, les payeurs, les ressources et les modules.
Étape 2
Échantillonner
Tirer la démographie, la localisation, la date de naissance et le contexte social des distributions configurées.
Étape 3
Simuler
Faire avancer les modules de maladie avec un moteur longitudinal par pas de temps.
Étape 4
Émettre
Écrire les rencontres, pathologies, médicaments, actes, observations et coûts.
Étape 5
Ordonner
Préserver la cohérence temporelle sur des décennies d’historique patient simulé.
Étape 6
Exporter
Produire des sorties FHIR, CSV, JSON, Parquet ou prêtes pour une base de données.
04 - Sorties et workflows
Des cohortes en notebook aux données de test FHIR et aux data lakes.
Comme la génération s’exécute dans le même processus, les enregistrements peuvent être inspectés immédiatement comme objets Python, matérialisés en DataFrames, convertis en séquences prêtes pour les modèles, écrits sur un serveur FHIR ou partitionnés pour des traitements distribués.
| Format | Usage principal |
|---|---|
| FHIR R4 | Chargement de serveurs FHIR, validation, tests d’interopérabilité et développement SMART on FHIR. |
| CSV | Tables de ressources à plat pour pandas, les tableurs et le chargement massif en base de données. |
| JSON | Documents patients imbriqués pour le débogage, les bases de données documentaires et l’inspection de l’historique complet. |
| Parquet | Analytique en colonnes pour les data lakes, PySpark, Dask et les workflows lakehouse. |
| Base relationnelle | Entrepôts de recherche, bases de test et mappings vers des schémas en aval via SQLAlchemy ou pandas. |
Workflows représentatifs
- Génération de cohortes en notebook. Générez une petite cohorte, inspectez les enregistrements et ajustez les paramètres en quelques cellules.
- Construction de patients sur mesure. Construisez un patient déterministe pour l’enseignement, le débogage ou les tests unitaires de modules.
- Génération parallèle par lots. Exécutez des patients indépendants sur des threads, des processus, des workers Dask ou des partitions PySpark.
- Benchmark de ML. Régénérez des cohortes à graine fixe pour comparer des modèles sous des distributions synthétiques maîtrisées.
- Tests d’interopérabilité. Produisez des bundles FHIR maîtrisés pour des tests logiciels et d’intégration de bout en bout.
05 - Compromis et travaux futurs
Une base Python pour la prochaine génération de simulation clinique synthétique.
PySynthea est un moteur indépendant : la parité sémantique exacte avec le Synthea Java d’origine reste donc un objectif de validation continu. Le but est de garder les modules GMF de Synthea comme source commune de contenu clinique tout en rendant le moteur plus facile à étendre, profiler, tester et intégrer pour les utilisateurs Python.
L’article distingue aussi clairement les données synthétiques à la Synthea des modèles génératifs appris. PySynthea est précieux pour des enregistrements structurés, longitudinaux et conformes aux standards, pour l’enseignement, la reproductibilité et les tests de pipelines. Il ne remplace ni la validation clinique sur des cohortes réelles ni un modèle appris reproduisant la distribution d’un établissement donné.
PySynthea réduit le coût d’utilisation des données synthétiques de DPI dans l’IA en santé, mais un déploiement responsable exige toujours validation, gouvernance et une compréhension claire de ce que les données synthétiques peuvent et ne peuvent pas prouver.
Pistes de recherche
- Accélération GPU. Explorer la simulation vectorisée et par lots via CUDA, JAX ou PyTorch.
- Modules assistés par LLM. Rédiger des modules de maladie à partir de recommandations cliniques, avec relecture humaine dans la boucle.
- Simulation multi-agents de patients. Coupler les trajectoires de patients à travers les épidémies, les foyers et la saturation du système.
- Environnements d’apprentissage par renforcement. Exposer l’état patient synthétique et les actions thérapeutiques pour des benchmarks cliniques de RL.
- Données synthétiques multimodales. Relier des historiques de DPI structurés à de l’imagerie et du texte clinique synthétiques.




