AnpherosAnpheros PlatformDevelopers

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

Синтетичні дані пацієнтів для тестування

Порівняння Synthea, персон та даних, згенерованих моделлю, що містять хороші тестові дані, та що сталося, коли ми завантажили пацієнтів Synthea до сервера FHIR.

Синтетичні дані пацієнтів — це вигадані медичні записи — пацієнти, діагнози, ліки, результати лабораторних досліджень, візити — згенеровані так, щоб виглядати та поводитися як справжні, щоб ви могли створювати, тестувати та демонструвати медичне програмне забезпечення, не торкаючись жодної інформації про здоров'я будь-кого. Це стандарт для розробки: справжні дані пацієнтів у тестовому середовищі становлять ризик для конфіденційності та зазвичай є юридичною проблемою. Ця сторінка охоплює основні способи отримання синтетичних даних, їхні переваги та недоліки, як розробляти тести навколо них та як завантажувати їх на FHIR-сервер — зокрема, що сталося, коли ми завантажили пацієнтів Synthea на Anpheros.

Три способи отримати синтетичних пацієнтів

Підхід Приклад Для чого підходить На що звернути увагу
Симуляція на основі правил Synthea (open source, від MITRE): симулює життя від народження за допомогою модулів захворювань та експортує FHIR R4 бандли, C-CDA та CSV Обсяг, повні історії, стандартні формати За замовчуванням орієнтований на США (демографія, ресурси виставлення рахунків, коди); шаблони реалістичні настільки, наскільки реалістичні модулі
Куровані персонажі Пацієнти, розроблені вручну з конкретними станами Демонстрації, граничні випадки, повторювані тести Мало пацієнтів; хтось повинен підтримувати їхню узгодженість
Статистична або ML генерація з реальних даних Моделі, навчені на реальному наборі даних Реалізм досліджень Може призвести до витоку реальних людей, якщо зроблено погано; потребує оцінки конфіденційності, а не просто "це синтетично"

Текст, написаний мовною моделлю на запит, є четвертим, ризикованим джерелом: він добре читається, але часто суперечить сам собі (ліки без захворювання, яке вони лікують, неможливі лабораторні показники) і не повинен бути основою тестів.

Що містить якісні тестові дані

Реалістичних середніх значень недостатньо. Код ламається на крайніх випадках, тому переконайтеся, що ваші дані, синтетичні чи ні, включають:

Завантаження пацієнтів Synthea на FHIR-сервер

Synthea створює один FHIR R4 transaction Bundle на пацієнта. Ми згенерували двох пацієнтів (java -jar synthea-with-dependencies.jar -p 2 -s 4242 Massachusetts) і завантажили їх у локальний екземпляр Anpheros. Bundle першого пацієнта містив 221 запис:

Збережено (типи, які зберігає Anpheros) Видалено (типи, які 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

Завантажувач запитує сервер, які типи він підтримує, зберігає лише їх і надсилає решту як одну транзакцію:

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

Результат: 182 ресурси створено в одній транзакції. urn:uuid посилання між збереженими записами були розв'язані до серверних ідентифікаторів (result DiagnosticReport вказує на існуючий Observation); посилання на 39 видалених записів залишаються як написані, тому перед завантаженням зберіть fullUrl кожного видаленого запису та видаліть або перетворіть збережені посилання, що вказують на них, а Patient/{id}/$summary створив International Patient Summary з 15 проблемами, 6 імунізаціями, 15 результатами та 28 життєвими показниками. $everything повернув 363 записи, включаючи provenance, який платформа додає до кожного запису.

Три речі, які слід знати, перш ніж покладатися на це:

Імена в Synthea містять цифри (Marcelo725 Gulgowski816) навмисно, щоб ніхто не сплутав їх із реальними людьми.

Синтетичні пацієнти в пісочниці Anpheros

Кожен проєкт пісочниці Anpheros отримує власну копію з 30 синтетичних пацієнтів, згенерованих на основі розроблених вручну персонажів: вік від 3 до 85 років, кілька країн та мов ЄС, стани, закодовані в ICD-10, медикаменти в ATC, лабораторні дослідження та життєві показники в LOINC з одиницями UCUM та референтними діапазонами, шестимісячна історія та документи. Свіжостворений проєкт містить 30 пацієнтів, 43 стани, 51 запис про медикаменти, 1 811 спостережень, 57 документів та 6 алергій. Дані є детермінованими — кожен проєкт бачить тих самих людей з тими самими значеннями, лише з різними ідентифікаторами — і скидання відновлює їх. Кожен персонаж зберігає стабільний ідентифікатор, тому Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|p02 завжди знаходить ту саму людину. Див. Безкоштовна база даних FHIR та пісочниця.

Використовуйте персонажів, коли вам потрібні невеликі, узгоджені записи, що охоплюють європейські мови та власні функції платформи; завантажуйте Synthea, коли вам потрібен обсяг або історії в американському стилі.

Часті запитання

Що таке синтетичні дані пацієнтів?

Вигадані медичні записи, які за структурою та шаблонами схожі на реальні, але не описують жодної реальної особи. Це дозволяє розробникам створювати та тестувати, не використовуючи захищену медичну інформацію.

Чи є синтетичні дані анонімними за визначенням?

Дані, згенеровані за правилами, як у Synthea, не містять реальних пацієнтів. Дані, згенеровані моделями, навченими на реальних записах, все ще можуть виявити реальних людей і потребують оцінки конфіденційності перед тим, як їх буде надано.

Чи можу я імпортувати дані Synthea на FHIR сервер?

Так. Synthea експортує транзакційні пакети FHIR R4. Видаліть типи ресурсів, які сервер не підтримує, перевірте, як він обробляє умовні посилання, і надсилайте кожен пакет як транзакцію.

Чи включає пісочниця Anpheros синтетичних пацієнтів?

Так: 30 на проєкт, з шестимісячною кодованою історією, плюс до 50 тестових пацієнтів, яких ви створюєте самостійно.

Пов'язане

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