Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Syntetické údaje pacientov na testovanie
Porovnanie Synthea, person a modelom generovaných údajov, čo obsahuje dobrý testovací súbor údajov a čo sa stalo, keď sme nahrali pacientov zo Synthea do FHIR servera.
Syntetické dáta pacientov sú vymyslené lekárske záznamy — pacienti, diagnózy, lieky, výsledky laboratórnych testov, návštevy — generované tak, aby vyzerali a správali sa ako skutočné, takže môžete vytvárať, testovať a predvádzať zdravotnícky softvér bez toho, aby ste sa dotkli akýchkoľvek zdravotných informácií kohokoľvek. Je to štandard pre vývoj: skutočné dáta pacientov v testovacom prostredí predstavujú riziko pre súkromie a zvyčajne aj právny problém. Táto stránka pokrýva hlavné spôsoby získavania syntetických dát, čo je dobré a zlé na každom z nich, ako okolo nich navrhovať testy a ako ich načítať na FHIR server — vrátane toho, čo sa stalo, keď sme načítali pacientov Synthea do Anpheros.
Tri spôsoby získania syntetických pacientov
| Prístup | Príklad | Vhodné pre | Pozor na |
|---|---|---|---|
| Simulácia založená na pravidlách | Synthea (open source, od MITRE): simuluje životy od narodenia s modulmi chorôb a exportuje FHIR R4 zväzky, C-CDA a CSV | Objem, úplné histórie, štandardné formáty | Predvolene zamerané na USA (demografia, fakturačné zdroje, kódy); vzory sú len také realistické, aké sú moduly |
| Kurátorované persony | Ručne navrhnutí pacienti so špecifickými stavmi | Demo ukážky, okrajové prípady, opakovateľné testy | Málo pacientov; niekto ich musí udržiavať konzistentné |
| Štatistická alebo ML generácia z reálnych dát | Modely trénované na reálnej datovej sade | Realizmus výskumu | Môže dôjsť k úniku reálnych osôb, ak sa to urobí zle; vyžaduje posúdenie ochrany osobných údajov, nielen "je to syntetické" |
Text napísaný jazykovým modelom na požiadanie je štvrtým, rizikovým zdrojom: číta sa dobre, ale často si protirečí (liek bez stavu, ktorý lieči, nemožné laboratórne hodnoty) a nemal by byť základom testov.
Čo obsahuje dobrý testovací dátový súbor
Realistické priemery nestačia. Kód zlyháva na okrajoch, preto sa uistite, že vaše dáta, syntetické alebo nie, zahŕňajú:
- Chýbajúce a neúplné dáta: výsledok laboratórneho testu bez referenčného rozsahu, liek bez dávkovania, pacient bez dátumu narodenia.
- Jednotky a formáty: rovnaký test v mg/dL a mmol/L, desatinné čiarky, časy s časovými zónami aj bez nich.
- Opravy a história: upravený výsledok, odstránený (
entered-in-error) záznam, stav, ktorý bol vyriešený. - Duplikáty: rovnaká správa odoslaná dvakrát.
- Dlhé a krátke histórie: novorodenec, niekto s desaťročnou históriou dát, niekto s jednou návštevou.
- Niekoľko jazykov a krajín, ak obsluhujete viac ako jeden trh.
- Zmeny súhlasu: aplikácia, ktorej prístup bol zrušený v strede relácie.
Nahrávanie pacientov zo Synthea na FHIR server
Synthea zapisuje jeden FHIR R4 transaction Bundle na pacienta. Vygenerovali sme dvoch pacientov (java -jar synthea-with-dependencies.jar -p 2 -s 4242 Massachusetts) a nahrali ich do lokálnej inštancie Anpheros. Bundle prvého pacienta mal 221 záznamov:
| Ponechané (typy, ktoré Anpheros ukladá) | Odstránené (typy, ktoré Anpheros neukladá) |
|---|---|
| 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 |
Nahrávač sa pýta servera, aké typy podporuje, ponecháva iba tie a zvyšok odosiela ako jednu transakciu:
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);
Výsledok: 182 zdrojov vytvorených v jednej transakcii. urn:uuid referencie medzi ponechanými záznamami boli preložené na serverové ID (result DiagnosticReport odkazuje na existujúcu Observation); referencie na 39 odhodených záznamov zostávajú tak, ako boli zapísané, takže pred nahrávaním zozbierajte fullUrl každého odhodeného záznamu a odstráňte alebo konvertujte ponechané referencie, ktoré na ne odkazujú, a Patient/{id}/$summary vygeneroval International Patient Summary s 15 problémami, 6 imunizáciami, 15 výsledkami a 28 vitálnymi funkciami. $everything vrátil 363 záznamov, vrátane provenance, ktorú platforma pridáva ku každému zápisu.
Tri veci, ktoré by ste mali vedieť, než sa na to budete spoliehať:
- Podmienené referencie zostávajú tak, ako sú zapísané. Synthea odkazuje na praktických lekárov, organizácie a lokácie pomocou podmienených referencií, ako je
Practitioner?identifier=http://hl7.org/fhir/sid/us-npi|9999967398. Anpheros nerieši podmienené referencie v transakcii; sú uložené tak, ako boli zapísané, s ichdisplaytextom a neriešia sa na zdroj. Ak váš kód sleduje tieto odkazy, nahrajte praktických lekárov a organizácie samostatne a prepíšte referencie. - Fakturačné a dodávateľské údaje sú preč. Nároky a vysvetlenia benefitov sú kľúčové pre americký nákladový model Synthea a nie sú súčasťou klinického záznamu v Anpheros.
- Predpisy sa stanú neprítomnými, nie konvertovanými.
MedicationRequestje odstránené; ak potrebujete lieky v zázname, konvertujte ich naMedicationStatementpred nahrávaním.
Mená v Synthea obsahujú čísla (Marcelo725 Gulgowski816) zámerne, aby si ich nikto nepomýlil so skutočnými ľuďmi.
Syntetickí pacienti v Anpheros sandboxe
Každý Anpheros sandbox projekt dostane vlastnú kópiu 30 syntetických pacientov, generovaných z ručne navrhnutých person: vo veku od 3 do 85 rokov, z viacerých krajín a jazykov EÚ, s podmienkami kódovanými v ICD-10, liekmi v ATC, laboratórnymi výsledkami a vitálnymi funkciami v LOINC s jednotkami UCUM a referenčnými rozsahmi, šesťmesačnou históriou a dokumentmi. Čerstvo inicializovaný projekt obsahuje 30 pacientov, 43 podmienok, 51 liekových záznamov, 1 811 pozorovaní, 57 dokumentov a 6 alergií. Dáta sú deterministické – každý projekt vidí rovnakých ľudí s rovnakými hodnotami, iba s inými identifikátormi – a reset ich obnoví. Každá persona si zachováva stabilný identifikátor, takže Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|p02 vždy nájde rovnakú osobu. Pozri Free FHIR database and sandbox.
Použite persony, keď chcete malé, koherentné záznamy, ktoré pokrývajú európske jazyky a vlastné funkcie platformy; načítajte Synthea, keď potrebujete objem alebo históriu v americkom štýle.
Často kladené otázky
Čo sú syntetické údaje o pacientoch?
Vymyslené zdravotné záznamy, ktoré štruktúrou a vzormi pripomínajú skutočné, ale nepopisujú žiadnu skutočnú osobu. Umožňuje vývojárom stavať a testovať bez použitia chránených zdravotných informácií.
Sú syntetické údaje anonymné z definície?
Údaje generované na základe pravidiel, ako sú tie v Synthea, neobsahujú žiadnych skutočných pacientov. Údaje generované modelmi trénovanými na skutočných záznamoch môžu stále odhaliť skutočných ľudí a vyžadujú posúdenie ochrany súkromia pred ich zdieľaním.
Môžem importovať údaje zo Synthea na FHIR server?
Áno. Synthea exportuje FHIR R4 transakčné balíky. Odstráňte typy zdrojov, ktoré server nepodporuje, skontrolujte, ako spracováva podmienené referencie, a odošlite každý balík ako transakciu.
Obsahuje Anpheros sandbox syntetických pacientov?
Áno: 30 na projekt, so šiestimi mesiacmi kódovanej histórie, plus až 50 testovacích pacientov, ktorých si vytvoríte sami.
Súvisiace
- Bezplatná FHIR databáza a sandbox
- FHIR R4 JSON príklady
- Ako normalizovať lekárske údaje
- Ako ukladať lekárske záznamy pomocou FHIR R4
- FHIR platforma
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card