AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Données de patients synthétiques pour les tests

Synthea, personas et données générées par modèle comparés, ce que contiennent de bonnes données de test et ce qui s'est passé lorsque nous avons chargé des patients Synthea dans un serveur FHIR.

Les données de patients synthétiques sont des dossiers médicaux inventés — patients, diagnostics, médicaments, résultats de laboratoire, visites — générés pour ressembler et se comporter comme de vrais dossiers, afin que vous puissiez construire, tester et présenter des logiciels de santé sans toucher aux informations de santé de qui que ce soit. C'est la norme pour le développement : les données de patients réelles dans un environnement de test présentent un risque pour la vie privée et constituent généralement un problème juridique. Cette page couvre les principales façons d'obtenir des données synthétiques, ce que chacune fait bien et moins bien, comment concevoir des tests autour d'elles, et comment les charger dans un serveur FHIR — y compris ce qui s'est passé lorsque nous avons chargé des patients Synthea dans Anpheros.

Trois façons d'obtenir des patients synthétiques

Approche Exemple Idéal pour À surveiller
Simulation basée sur des règles Synthea (open source, de MITRE) : simule des vies dès la naissance avec des modules de maladies et exporte des bundles FHIR R4, C-CDA et CSV Volume, historiques complets, formats standards Centré sur les États-Unis par défaut (démographie, ressources de facturation, codes) ; les modèles ne sont réalistes que dans la mesure de la qualité des modules
Personas sélectionnés Patients conçus manuellement avec des conditions spécifiques Démonstrations, cas limites, tests reproductibles Peu de patients ; quelqu'un doit maintenir leur cohérence
Génération statistique ou ML à partir de données réelles Modèles entraînés sur un jeu de données réel Réalisme de la recherche Peut divulguer des personnes réelles si mal fait ; nécessite une évaluation de la confidentialité, pas seulement "c'est synthétique"

Le texte écrit par un modèle linguistique sur demande est une quatrième source, risquée : il se lit bien mais se contredit souvent (un médicament sans la condition qu'il traite, des valeurs de laboratoire impossibles) et ne devrait pas servir de base aux tests.

Ce que contiennent de bonnes données de test

Les moyennes réalistes ne suffisent pas. Le code casse sur les cas limites, alors assurez-vous que vos données, synthétiques ou non, incluent :

Chargement des patients Synthea dans un serveur FHIR

Synthea écrit un Bundle FHIR R4 transaction par patient. Nous avons généré deux patients (java -jar synthea-with-dependencies.jar -p 2 -s 4242 Massachusetts) et les avons chargés dans une instance locale d'Anpheros. Le bundle du premier patient contenait 221 entrées :

Conservé (types stockés par Anpheros) Supprimé (types non stockés par Anpheros)
Observation 61, Procedure 48, DiagnosticReport 24, Condition 15, Encounter 12, DocumentReference 12, Immunization 6, Patient, CareTeam, CarePlan, Provenance Claim 13, ExplanationOfBenefit 13, SupplyDelivery 9, Device 2, ImagingStudy 1, MedicationRequest 1

Le chargeur interroge le serveur sur les types qu'il prend en charge, ne conserve que ceux-ci et publie le reste en une seule transaction :

import { readFile } from 'node:fs/promises';
import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });   // sk_test_… key
const SUPPORTED = new Set(((await anpheros.fhir.metadata()) as any).rest[0].resource.map((r: any) => r.type));
const bundle = JSON.parse(await readFile(process.argv[2], 'utf8'));            // one Synthea patient file
const kept = bundle.entry.filter((e: any) => SUPPORTED.has(e.resource.resourceType));
const out: any = await anpheros.fhir.transaction({ ...bundle, entry: kept } as any);
console.log('created', out.entry.length);

Résultat : 182 ressources créées en une seule transaction. Les références urn:uuid entre les entrées conservées ont été résolues en identifiants serveur (un result de DiagnosticReport pointe vers une Observation existante) ; les références aux 39 entrées supprimées restent telles quelles. Avant le chargement, collectez donc les fullUrl de chaque entrée supprimée et supprimez ou convertissez les références conservées qui y pointent. Patient/{id}/$summary a produit un Résumé International de Patient (IPS) avec 15 problèmes, 6 immunisations, 15 résultats et 28 signes vitaux. $everything a retourné 363 entrées, y compris la provenance que la plateforme ajoute à chaque écriture.

Trois points à savoir avant de vous y fier :

Les noms dans Synthea incluent des nombres (Marcelo725 Gulgowski816) intentionnellement, afin que personne ne les confonde avec de vraies personnes.

Patients synthétiques dans le bac à sable Anpheros

Chaque projet de bac à sable Anpheros reçoit sa propre copie de 30 patients synthétiques, générés à partir de personas conçus manuellement : âges de 3 à 85 ans, plusieurs pays et langues de l'UE, conditions codées en ICD-10, médicaments en ATC, laboratoires et signes vitaux en LOINC avec unités UCUM et plages de référence, six mois d'historique et de documents. Un projet fraîchement initialisé contient 30 patients, 43 conditions, 51 déclarations de médicaments, 1 811 observations, 57 documents et 6 allergies. Les données sont déterministes — chaque projet voit les mêmes personnes avec les mêmes valeurs, seulement des identifiants différents — et une réinitialisation les restaure. Chaque persona conserve un identifiant stable, ainsi Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|p02 trouvera toujours la même personne. Voir Base de données FHIR gratuite et bac à sable.

Utilisez les personas lorsque vous souhaitez des dossiers petits et cohérents couvrant les langues européennes et les fonctionnalités de la plateforme ; chargez Synthea lorsque vous avez besoin de volume ou d'historiques de style américain.

Foire aux questions

Qu'est-ce que les données de patients synthétiques ?

Des dossiers de santé inventés qui ressemblent à des dossiers réels en termes de structure et de modèles, mais qui ne décrivent aucune personne réelle. Cela permet aux développeurs de construire et de tester sans utiliser d'informations de santé protégées.

Les données synthétiques sont-elles anonymes par définition ?

Les données générées à partir de règles, comme celles de Synthea, ne contiennent pas de patients réels. Les données générées par des modèles entraînés sur des dossiers réels peuvent toujours révéler des personnes réelles et nécessitent une évaluation de la confidentialité avant d'être partagées.

Puis-je importer des données Synthea dans un serveur FHIR ?

Oui. Synthea exporte des lots de transactions FHIR R4. Supprimez les types de ressources que le serveur ne prend pas en charge, vérifiez comment il gère les références conditionnelles et publiez chaque lot sous forme de transaction.

Le sandbox Anpheros inclut-il des patients synthétiques ?

Oui : 30 par projet, avec six mois d'historique codé, plus jusqu'à 50 patients de test que vous créez vous-même.

Liens connexes

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy