AnpherosAnpheros PlatformDevelopers

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

Synthetische Patientendaten für Tests

Synthea, Personas und modellgenerierte Daten im Vergleich, was gute Testdaten enthalten und was passierte, als wir Synthea-Patienten in einen FHIR-Server geladen haben.

Synthetische Patientendaten sind erfundene medizinische Aufzeichnungen – Patienten, Diagnosen, Medikamente, Laborergebnisse, Besuche –, die generiert werden, um wie echte auszusehen und sich wie echte zu verhalten, damit Sie Gesundheitssoftware erstellen, testen und vorführen können, ohne auf die Gesundheitsinformationen von jemandem zuzugreifen. Dies ist der Standard für die Entwicklung: Echte Patientendaten in einer Testumgebung stellen ein Datenschutzrisiko dar und sind in der Regel ein rechtliches Problem. Diese Seite behandelt die wichtigsten Möglichkeiten, synthetische Daten zu erhalten, was jede Methode gut und schlecht kann, wie Tests darum herum entworfen werden und wie sie auf einen FHIR-Server geladen werden – einschließlich dessen, was passiert ist, als wir Synthea-Patienten in Anpheros geladen haben.

Drei Wege, synthetische Patienten zu erhalten

Ansatz Beispiel Geeignet für Vorsicht
Regelbasierte Simulation Synthea (Open Source, von MITRE): simuliert Leben ab der Geburt mit Krankheitsmodulen und exportiert FHIR R4 Bundles, C-CDA und CSV Volumen, vollständige Historien, Standardformate Standardmäßig US-zentriert (Demografie, Abrechnungsressourcen, Codes); Muster sind nur so realistisch wie die Module
Kuratierte Personas Handgefertigte Patienten mit spezifischen Bedingungen Demos, Grenzfälle, wiederholbare Tests Wenige Patienten; jemand muss sie kohärent halten
Statistische oder ML-Generierung aus realen Daten Modelle, die auf einem realen Datensatz trainiert wurden Realismus für die Forschung Kann bei schlechter Durchführung reale Personen preisgeben; erfordert Datenschutzbewertung, nicht nur "es ist synthetisch"

Von einem Sprachmodell auf Anfrage erstellter Text ist eine vierte, riskante Quelle: Er liest sich gut, widerspricht sich aber oft (ein Medikament ohne die behandelte Erkrankung, unmögliche Laborwerte) und sollte nicht die Grundlage für Tests bilden.

Was gute Testdaten enthalten

Realistische Durchschnittswerte reichen nicht aus. Code bricht an den Rändern, stellen Sie also sicher, dass Ihre Daten, ob synthetisch oder nicht, Folgendes enthalten:

Laden von Synthea-Patienten in einen FHIR-Server

Synthea schreibt ein FHIR R4 transaction Bundle pro Patient. Wir haben zwei Patienten (java -jar synthea-with-dependencies.jar -p 2 -s 4242 Massachusetts) generiert und sie in eine lokale Instanz von Anpheros geladen. Das Bundle des ersten Patienten enthielt 221 Einträge:

Beibehalten (Typen, die Anpheros speichert) Entfernt (Typen, die Anpheros nicht speichert)
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

Der Loader fragt den Server, welche Typen er unterstützt, behält nur diese und postet den Rest als eine Transaktion:

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);

Ergebnis: 182 Ressourcen in einer Transaktion erstellt. Die urn:uuid Referenzen zwischen den beibehaltenen Einträgen wurden zu Server-IDs aufgelöst (ein result von DiagnosticReport verweist auf eine existierende Observation); Referenzen zu den 39 verworfenen Einträgen bleiben wie geschrieben bestehen. Sammeln Sie daher vor dem Laden die fullUrl jedes verworfenen Eintrags und entfernen oder konvertieren Sie die beibehaltenen Referenzen, die darauf zeigen. Patient/{id}/$summary erzeugte einen International Patient Summary mit 15 Problemen, 6 Immunisierungen, 15 Ergebnissen und 28 Vitalzeichen. $everything gab 363 Einträge zurück, einschließlich der Provenance, die die Plattform zu jedem Schreibvorgang hinzufügt.

Drei Dinge, die Sie wissen sollten, bevor Sie sich darauf verlassen:

Namen in Synthea enthalten absichtlich Zahlen (Marcelo725 Gulgowski816), damit niemand sie mit echten Personen verwechselt.

Synthetische Patienten in der Anpheros Sandbox

Jedes Anpheros Sandbox-Projekt erhält eine eigene Kopie von 30 synthetischen Patienten, die aus handgefertigten Personas generiert wurden: Alter von 3 bis 85 Jahren, mehrere EU-Länder und Sprachen, Bedingungen kodiert in ICD-10, Medikamente in ATC, Labore und Vitalwerte in LOINC mit UCUM-Einheiten und Referenzbereichen, sechs Monate Historie und Dokumente. Ein frisch initialisiertes Projekt enthält 30 Patienten, 43 Bedingungen, 51 Medikamentenaussagen, 1.811 Beobachtungen, 57 Dokumente und 6 Allergien. Die Daten sind deterministisch – jedes Projekt sieht dieselben Personen mit denselben Werten, nur unterschiedliche IDs – und ein Reset stellt sie wieder her. Jede Persona behält eine stabile Kennung, sodass Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|p02 immer dieselbe Person findet. Siehe Kostenlose FHIR-Datenbank und Sandbox.

Verwenden Sie die Personas, wenn Sie kleine, kohärente Datensätze wünschen, die europäische Sprachen und die plattformeigenen Funktionen abdecken; laden Sie Synthea, wenn Sie Volumen oder US-amerikanische Historien benötigen.

Häufig gestellte Fragen

Was sind synthetische Patientendaten?

Erfundene Gesundheitsakten, die in Struktur und Mustern echten ähneln, aber keine reale Person beschreiben. Sie ermöglichen es Entwicklern, zu erstellen und zu testen, ohne geschützte Gesundheitsinformationen zu verwenden.

Sind synthetische Daten per Definition anonym?

Daten, die aus Regeln generiert werden, wie die von Synthea, enthalten keine echten Patienten. Daten, die aus Modellen generiert werden, die auf echten Datensätzen trainiert wurden, können immer noch reale Personen offenbaren und erfordern eine Datenschutzbewertung, bevor sie weitergegeben werden.

Kann ich Synthea-Daten in einen FHIR-Server importieren?

Ja. Synthea exportiert FHIR R4 Transaktionsbündel. Entfernen Sie Ressourcentypen, die der Server nicht unterstützt, überprüfen Sie, wie er mit bedingten Referenzen umgeht, und posten Sie jedes Bündel als Transaktion.

Enthält die Anpheros-Sandbox synthetische Patienten?

Ja: 30 pro Projekt, mit sechs Monaten codierter Historie, plus bis zu 50 Testpatienten, die Sie selbst erstellen.

Verwandte Themen

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