AnpherosAnpheros PlatformDevelopers

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

Syntetyczne dane pacjentów do testów

Porównanie Synthea, person i danych generowanych przez modele, co zawierają dobre dane testowe i co się stało, gdy załadowaliśmy pacjentów Synthea do serwera FHIR.

Syntetyczne dane pacjentów to wymyślone dokumentacje medyczne – pacjenci, diagnozy, leki, wyniki badań laboratoryjnych, wizyty – generowane tak, aby wyglądały i zachowywały się jak prawdziwe, dzięki czemu można tworzyć, testować i prezentować oprogramowanie medyczne bez dotykania informacji o zdrowiu kogokolwiek. Jest to domyślne rozwiązanie dla środowisk deweloperskich: prawdziwe dane pacjentów w środowisku testowym stanowią ryzyko naruszenia prywatności i zazwyczaj są problemem prawnym. Ta strona omawia główne sposoby pozyskiwania danych syntetycznych, ich mocne i słabe strony, sposoby projektowania testów wokół nich oraz sposoby ładowania ich na serwer FHIR – w tym, co się stało, gdy załadowaliśmy pacjentów Synthea do Anpheros.

Trzy sposoby na uzyskanie syntetycznych pacjentów

Podejście Przykład Dobre dla Na co uważać
Symulacja oparta na regułach Synthea (open source, od MITRE): symuluje życie od urodzenia za pomocą modułów chorobowych i eksportuje pakiety FHIR R4, C-CDA i CSV Wolumen, pełne historie, standardowe formaty Domyślnie skoncentrowany na USA (demografia, zasoby rozliczeniowe, kody); wzorce są tak realistyczne, jak moduły
Wyselekcjonowane persony Pacjenci zaprojektowani ręcznie z określonymi schorzeniami Dema, przypadki brzegowe, powtarzalne testy Niewielka liczba pacjentów; ktoś musi zachować ich spójność
Generowanie statystyczne lub ML na podstawie rzeczywistych danych Modele wytrenowane na rzeczywistym zbiorze danych Realizm badań Może ujawnić rzeczywiste osoby, jeśli zostanie wykonane źle; wymaga oceny prywatności, a nie tylko "jest syntetyczne"

Tekst napisany przez model językowy na żądanie jest czwartym, ryzykownym źródłem: czyta się go dobrze, ale często jest wewnętrznie sprzeczny (lek bez schorzenia, które leczy, niemożliwe wartości laboratoryjne) i nie powinien stanowić podstawy testów.

Co zawiera dobre dane testowe

Realistyczne średnie wartości nie wystarczą. Kod łamie się na skrajnościach, dlatego upewnij się, że Twoje dane, syntetyczne lub nie, zawierają:

Ładowanie pacjentów Synthea na serwer FHIR

Synthea zapisuje jeden pakiet FHIR R4 transaction na pacjenta. Wygenerowaliśmy dwóch pacjentów (java -jar synthea-with-dependencies.jar -p 2 -s 4242 Massachusetts) i załadowaliśmy ich do lokalnej instancji Anpheros. Pakiet pierwszego pacjenta zawierał 221 wpisów:

Zachowane (typy przechowywane przez Anpheros) Usunięte (typy nieprzechowywane przez 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

Program ładujący pyta serwer, jakie typy obsługuje, zachowuje tylko te, a resztę wysyła jako jedną transakcję:

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

Wynik: 182 zasoby utworzone w jednej transakcji. urn:uuid odniesienia między zachowanymi wpisami zostały rozwiązane do identyfikatorów serwera (result DiagnosticReport wskazuje na istniejącą Observation); odniesienia do 39 usuniętych wpisów pozostają niezmienione, więc przed załadowaniem należy zebrać fullUrl każdego usuniętego wpisu i usunąć lub przekonwertować zachowane odniesienia, które do nich wskazują, a Patient/{id}/$summary wygenerował Międzynarodowe Podsumowanie Pacjenta z 15 problemami, 6 szczepieniami, 15 wynikami i 28 danymi o parametrach życiowych. $everything zwrócił 363 wpisy, w tym provenance, którą platforma dodaje do każdego zapisu.

Trzy rzeczy, o których należy wiedzieć, zanim zaczniesz na nich polegać:

Nazwy w Synthea celowo zawierają liczby (Marcelo725 Gulgowski816), aby nikt nie pomylił ich z prawdziwymi ludźmi.

Pacjenci syntetyczni w piaskownicy Anpheros

Każdy projekt piaskownicy Anpheros otrzymuje własną kopię 30 pacjentów syntetycznych, wygenerowanych na podstawie ręcznie zaprojektowanych person: w wieku od 3 do 85 lat, z kilku krajów i języków UE, schorzenia zakodowane w ICD-10, leki w ATC, badania laboratoryjne i parametry życiowe w LOINC z jednostkami UCUM i zakresami referencyjnymi, sześć miesięcy historii i dokumentów. Świeżo zainicjowany projekt zawiera 30 pacjentów, 43 schorzenia, 51 stwierdzeń dotyczących leków, 1 811 obserwacji, 57 dokumentów i 6 alergii. Dane są deterministyczne — każdy projekt widzi te same osoby z tymi samymi wartościami, jedynie z innymi identyfikatorami — a reset przywraca je. Każda persona zachowuje stabilny identyfikator, dzięki czemu Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|p02 zawsze odnajduje tę samą osobę. Zobacz Darmowa baza danych FHIR i piaskownica.

Używaj person, gdy potrzebujesz małych, spójnych rekordów obejmujących języki europejskie i własne funkcje platformy; załaduj Synthea, gdy potrzebujesz dużej ilości danych lub historii w stylu amerykańskim.

Najczęściej zadawane pytania

Czym są syntetyczne dane pacjentów?

Wymyślone historie medyczne, które pod względem struktury i wzorców przypominają prawdziwe, ale nie opisują żadnej rzeczywistej osoby. Pozwala to programistom na tworzenie i testowanie bez używania chronionych informacji o stanie zdrowia.

Czy dane syntetyczne są z definicji anonimowe?

Dane generowane na podstawie reguł, takie jak Synthea, nie zawierają danych prawdziwych pacjentów. Dane generowane przez modele wytrenowane na rzeczywistych rekordach mogą nadal ujawniać informacje o prawdziwych osobach i wymagają oceny prywatności przed udostępnieniem.

Czy mogę zaimportować dane Synthea na serwer FHIR?

Tak. Synthea eksportuje pakiety transakcyjne FHIR R4. Usuń typy zasobów, których serwer nie obsługuje, sprawdź, jak obsługuje odniesienia warunkowe i publikuj każdy pakiet jako transakcję.

Czy piaskownica Anpheros zawiera syntetycznych pacjentów?

Tak: 30 na projekt, z sześciomiesięczną historią kodowania, plus do 50 pacjentów testowych, których tworzysz samodzielnie.

Powiązane

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