Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Szintetikus betegadatok teszteléshez
Synthea, perszónák és modellgenerált adatok összehasonlítása, mit tartalmaz a jó tesztadat, és mi történt, amikor Synthea betegeket töltöttünk be egy FHIR szerverre.
A szintetikus betegadatok kitalált orvosi nyilvántartások – betegek, diagnózisok, gyógyszerek, laboreredmények, látogatások – amelyek úgy generálódnak, hogy úgy nézzenek ki és viselkedjenek, mint a valósak, így egészségügyi szoftvereket építhet, tesztelhet és mutathat be anélkül, hogy bárki egészségügyi információihoz hozzányúlna. Ez az alapértelmezett a fejlesztés során: a valós betegadatok tesztkörnyezetben adatvédelmi kockázatot jelentenek, és általában jogi problémát. Ez az oldal a szintetikus adatok beszerzésének fő módjait, az egyes módszerek előnyeit és hátrányait, a köréjük épülő tesztek tervezését, valamint a FHIR szerverre való betöltésüket tárgyalja – beleértve azt is, mi történt, amikor Synthea betegeket töltöttünk be az Anpherosba.
Három módszer szintetikus betegek beszerzésére
| Megközelítés | Példa | Mire jó | Mire figyelj |
|---|---|---|---|
| Szabályalapú szimuláció | Synthea (nyílt forráskódú, a MITRE-től): élettörténeteket szimulál születéstől kezdve betegségmodulokkal, és FHIR R4 bundle-öket, C-CDA-t és CSV-t exportál | Mennyiség, teljes kórtörténetek, szabványos formátumok | Alapértelmezetten USA-központú (demográfiai adatok, számlázási erőforrások, kódok); a mintázatok csak annyira valósághűek, amennyire a modulok |
| Kurált személyiségek | Kézzel tervezett betegek specifikus állapotokkal | Demók, szélső esetek, megismételhető tesztek | Kevés beteg; valakinek koherenssé kell tartania őket |
| Statisztikai vagy ML alapú generálás valós adatokból | Valós adatkészleten tanított modellek | Kutatási valósághűség | Rosszul csinálva valós személyeket szivárogtathat ki; adatvédelmi értékelést igényel, nem csak azt, hogy "szintetikus" |
Egy negyedik, kockázatos forrás a nyelvi modell által kérésre írt szöveg: jól olvasható, de gyakran ellentmondásos (egy olyan gyógyszer, amelyhez nincs meg a kezelt állapot, lehetetlen laborértékek), és nem szabad tesztek alapjául szolgálnia.
Mi legyen a jó tesztadatokban
Reális átlagok nem elegendőek. A kód a szélsőértékeken törik meg, ezért győződjön meg róla, hogy az adatai, legyen az szintetikus vagy sem, tartalmazzák a következőket:
- Hiányzó és részleges adatok: egy laboreredmény referenciatartomány nélkül, egy gyógyszer adagolás nélkül, egy páciens születési dátum nélkül.
- Egységek és formátumok: ugyanaz a teszt mg/dL és mmol/L egységben, tizedesvesszők, időzónával és anélkül megadott időpontok.
- Javítások és előzmények: egy módosított eredmény, egy törölt (
entered-in-error) bejegyzés, egy megszűnt állapot. - Duplikátumok: ugyanaz a jelentés kétszer elküldve.
- Hosszú és rövid előzmények: egy újszülött, valaki tíz évnyi adattal, valaki egyetlen látogatással.
- Több nyelv és ország, ha több piacon is jelen van.
- Hozzájárulási változások: egy alkalmazás, amelynek hozzáférését egy munkamenet közepén visszavonják.
Synthea betegek betöltése FHIR szerverre
A Synthea minden beteghez egy FHIR R4 transaction Bundle-t ír. Mi két beteget (java -jar synthea-with-dependencies.jar -p 2 -s 4242 Massachusetts) generáltunk, és betöltöttük őket az Anpheros egy helyi példányába. Az első beteg bundle-je 221 bejegyzést tartalmazott:
| Megtartva (Anpheros által tárolt típusok) | Eltávolítva (Anpheros által nem tárolt típusok) |
|---|---|
| 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 |
A betöltő megkérdezi a szervert, hogy mely típusokat támogatja, csak azokat tartja meg, és a többit egy tranzakcióként küldi el:
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);
Eredmény: 182 erőforrás jött létre egy tranzakcióban. A megtartott bejegyzések közötti urn:uuid hivatkozások szerver azonosítókra lettek feloldva (egy DiagnosticReport result egy létező Observation-ra mutat); a 39 eldobott bejegyzésre mutató hivatkozások változatlanul maradnak, ezért a betöltés előtt gyűjtse össze az eldobott bejegyzések fullUrl azonosítóit, és távolítsa el vagy alakítsa át azokra mutató megtartott hivatkozásokat, és Patient/{id}/$summary egy International Patient Summary-t generált 15 problémával, 6 immunizálással, 15 eredménnyel és 28 vitalitással. $everything 363 bejegyzést adott vissza, beleértve a platform által minden íráshoz hozzáadott provenance-t.
Három dolog, amit tudnia kell, mielőtt megbízik benne:
- A feltételes hivatkozások változatlanul maradnak. A Synthea feltételes hivatkozásokkal, mint például
Practitioner?identifier=http://hl7.org/fhir/sid/us-npi|9999967398, mutat orvosokra, szervezetekre és helyszínekre. Az Anpheros nem oldja fel a feltételes hivatkozásokat egy tranzakcióban; változatlanul tárolódnak,displayszövegükkel, és nem vezetnek erőforráshoz. Ha a kód követi ezeket a hivatkozásokat, töltse be az orvosokat és szervezeteket külön, és írja át a hivatkozásokat. - A számlázási és ellátási adatok elvesznek. A számlák és a kifizetési magyarázatok központi szerepet játszanak a Synthea amerikai költségmodelljében, és nem részei a klinikai nyilvántartásnak az Anpherosban.
- A vények hiányoznak, nem konvertálódnak. A
MedicationRequesteltávolításra kerül; ha szüksége van a gyógyszerekre a nyilvántartásban, konvertálja őketMedicationStatement-ra a betöltés előtt.
A Synthea neveiben szándékosan szerepelnek számok (Marcelo725 Gulgowski816), hogy senki se tévessze össze őket valós személyekkel.
Szintetikus betegek az Anpheros sandboxban
Minden Anpheros sandbox projekt saját példányt kap 30 szintetikus betegből, amelyeket kézzel tervezett perszónák alapján generáltak: életkor 3-85 év, több EU ország és nyelv, ICD-10 kódolású állapotok, ATC kódolású gyógyszerek, LOINC kódolású laboreredmények és vitális adatok UCUM egységekkel és referenciatartományokkal, hat hónapnyi előzmény és dokumentumok. Egy frissen inicializált projekt 30 beteget, 43 állapotot, 51 gyógyszerbejegyzést, 1811 megfigyelést, 57 dokumentumot és 6 allergiát tartalmaz. Az adatok determinisztikusak – minden projekt ugyanazokat az embereket látja ugyanazokkal az értékekkel, csak eltérő azonosítókkal –, és egy visszaállítás helyreállítja őket. Minden perszóna stabil azonosítót tart fenn, így a Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|p02 mindig ugyanazt a személyt találja meg. Lásd: Ingyenes FHIR adatbázis és sandbox.
Használja a perszónákat, ha kis, koherens rekordokra van szüksége, amelyek lefedik az európai nyelveket és a platform saját funkcióit; töltse be a Synthea-t, ha mennyiségre vagy amerikai stílusú előzményekre van szüksége.
Gyakran ismételt kérdések
Mi a szintetikus betegadat?
Kitalált egészségügyi nyilvántartások, amelyek szerkezetükben és mintázatukban hasonlítanak a valósakhoz, de nem írnak le valós személyt. Lehetővé teszi a fejlesztők számára, hogy védett egészségügyi információk használata nélkül építsenek és teszteljenek.
A szintetikus adat definíció szerint anonim?
A szabályokból, mint például a Synthea esetében, generált adatok nem tartalmaznak valós betegeket. A valós nyilvántartásokon alapuló modellek által generált adatok továbbra is felfedhetik a valós személyeket, és megosztásuk előtt adatvédelmi értékelésre van szükségük.
Importálhatok Synthea adatokat FHIR szerverre?
Igen. A Synthea FHIR R4 tranzakciós kötegeket exportál. Távolítsa el azokat az erőforrás-típusokat, amelyeket a szerver nem támogat, ellenőrizze, hogyan kezeli a feltételes hivatkozásokat, és minden köteget tranzakcióként küldjön el.
Tartalmazza az Anpheros sandbox szintetikus betegeket?
Igen: 30 projektet, hat hónapnyi kódolt történettel, plusz legfeljebb 50 saját magad által létrehozott tesztbeteget.
Kapcsolódó
- Ingyenes FHIR adatbázis és sandbox
- FHIR R4 JSON példák
- Orvosi adatok normalizálása
- Orvosi rekordok tárolása FHIR R4 használatával
- FHIR platform
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card