Retour au blog

PySynthea : des données de santé synthétiques natives Python

Une professionnelle expérimentée levant les yeux

Une réimplémentation de Synthea native Python pour générer des dossiers patients synthétiques à grande échelle, avec export FHIR, notebooks, pandas et workflows de ML.

Moteur

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

Génération

Generator

Taille de population, graine, configuration et filtres de modules

Échantillonneur démographique

Boucle de simulation

Gestionnaire d’export

Modèle du monde

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

Exportateurs

FHIR R4

Bundles

JSON

Documents patients

CSV

Tables de ressources

Sur mesure

Parquet, bases de données, files de messages

Architecture du système. PySynthea organise la génération de patients synthétiques autour d’un Generator Python, d’instances Person déterministes, d’un moteur de modules compatible GMF et de couches d’export vers FHIR, JSON, CSV et des formats adaptés à l’analytique.

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

ObjectifCe 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’échelleLes cohortes interactives en notebook et les gros traitements par lots parallèles partagent la même API.
Fidélité aux standardsFHIR 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

  1. Étape 1

    Initialiser

    Charger la configuration, la graine aléatoire, les établissements, les payeurs, les ressources et les modules.

  2. Étape 2

    Échantillonner

    Tirer la démographie, la localisation, la date de naissance et le contexte social des distributions configurées.

  3. Étape 3

    Simuler

    Faire avancer les modules de maladie avec un moteur longitudinal par pas de temps.

  4. Étape 4

    Émettre

    Écrire les rencontres, pathologies, médicaments, actes, observations et coûts.

  5. Étape 5

    Ordonner

    Préserver la cohérence temporelle sur des décennies d’historique patient simulé.

  6. É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.

FormatUsage principal
FHIR R4Chargement de serveurs FHIR, validation, tests d’interopérabilité et développement SMART on FHIR.
CSVTables de ressources à plat pour pandas, les tableurs et le chargement massif en base de données.
JSONDocuments patients imbriqués pour le débogage, les bases de données documentaires et l’inspection de l’historique complet.
ParquetAnalytique en colonnes pour les data lakes, PySpark, Dask et les workflows lakehouse.
Base relationnelleEntrepô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.

Lire l’article completVoir le dépôt

Ouvrir la voie à la santé.