# بيانات المرضى الاصطناعية للاختبار

> Synthea، والشخصيات، والبيانات التي تم إنشاؤها بواسطة النموذج مقارنة، وما تحتويه بيانات الاختبار الجيدة، وما حدث عندما قمنا بتحميل مرضى Synthea إلى خادم FHIR.

Source: https://developers.anpheros.com/ar/guides/synthetic-patient-data

**بيانات المرضى الاصطناعية هي سجلات طبية مخترعة — مرضى، تشخيصات، أدوية، نتائج مختبر، زيارات — تم إنشاؤها لتبدو وتتصرف مثل السجلات الحقيقية، حتى تتمكن من بناء واختبار وعرض برامج الرعاية الصحية دون المساس بمعلومات صحة أي شخص.** إنها الخيار الافتراضي للتطوير: بيانات المرضى الحقيقية في بيئة اختبار تشكل خطرًا على الخصوصية وعادة ما تكون مشكلة قانونية. تغطي هذه الصفحة الطرق الرئيسية للحصول على بيانات اصطناعية، وما هو جيد وسيء في كل منها، وكيفية تصميم الاختبارات حولها، وكيفية تحميلها إلى خادم FHIR — بما في ذلك ما حدث عندما قمنا بتحميل مرضى Synthea إلى Anpheros.

## ثلاث طرق للحصول على مرضى اصطناعيين

| النهج | مثال | مناسب لـ | احذر من |
|---|---|---|---|
| محاكاة قائمة على القواعد | [Synthea](https://github.com/synthetichealth/synthea) (مفتوح المصدر، من MITRE): يحاكي الحياة من الولادة بوحدات أمراض ويصدر حزم FHIR R4، و C-CDA، و CSV | الحجم، السجلات الكاملة، التنسيقات القياسية | يركز على الولايات المتحدة افتراضيًا (التركيبة السكانية، موارد الفوترة، الرموز)؛ الأنماط واقعية فقط بقدر الوحدات |
| شخصيات منسقة | مرضى مصممون يدويًا بحالات محددة | العروض التوضيحية، الحالات القصوى، الاختبارات المتكررة | عدد قليل من المرضى؛ يجب على شخص ما الحفاظ على تماسكهم |
| توليد إحصائي أو بالتعلم الآلي من بيانات حقيقية | نماذج مدربة على مجموعة بيانات حقيقية | واقعية البحث | يمكن أن تتسرب أشخاص حقيقيون إذا تم ذلك بشكل سيء؛ يحتاج إلى تقييم الخصوصية، وليس مجرد "إنه اصطناعي" |

النص المكتوب بواسطة نموذج لغوي عند الطلب هو مصدر رابع، محفوف بالمخاطر: يقرأ جيدًا ولكنه غالبًا ما يتناقض مع نفسه (دواء بدون الحالة التي يعالجها، قيم مختبر مستحيلة) ويجب ألا يكون أساسًا للاختبارات.

## ما الذي تحتويه بيانات الاختبار الجيدة

المتوسطات الواقعية ليست كافية. الكود يتعطل عند الحواف، لذا تأكد من أن بياناتك، سواء كانت اصطناعية أو غير ذلك، تتضمن:

- **بيانات مفقودة وجزئية:** نتيجة مختبر بدون نطاق مرجعي، دواء بدون جرعة، مريض بدون تاريخ ميلاد.
- **وحدات وتنسيقات:** نفس الاختبار بوحدات mg/dL و mmol/L، فواصل عشرية، أوقات مع مناطق زمنية وبدونها.
- **تصحيحات وسجل:** نتيجة معدلة، إدخال تم حذفه (`entered-in-error`)، حالة تم حلها.
- **تكرارات:** نفس التقرير تم إرساله مرتين.
- **سجلات طويلة وقصيرة:** حديث الولادة، شخص لديه عشر سنوات من البيانات، شخص لديه زيارة واحدة.
- **عدة لغات وبلدان** إذا كنت تخدم أكثر من سوق واحد.
- **تغييرات الموافقة:** تطبيق تم إلغاء الوصول إليه في منتصف الجلسة.

## تحميل مرضى Synthea إلى خادم FHIR

يكتب Synthea حزمة FHIR R4 `transaction` لكل مريض. قمنا بإنشاء مريضين (`java -jar synthea-with-dependencies.jar -p 2 -s 4242 Massachusetts`) وقمنا بتحميلهما إلى نسخة محلية من Anpheros. احتوت حزمة المريض الأولى على 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 |

يطلب المحمل من الخادم أنواع الموارد التي يدعمها، ويحتفظ فقط بتلك الأنواع وينشر الباقي كمعاملة واحدة:

```ts
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 إلى الممارسين والمنظمات والمواقع باستخدام مراجع شرطية مثل `Practitioner?identifier=http://hl7.org/fhir/sid/us-npi|9999967398`. لا يقوم Anpheros بحل المراجع الشرطية في معاملة؛ يتم تخزينها كما هي مكتوبة، مع نص `display` الخاص بها، ولا يتم حلها إلى مورد. إذا كان الكود الخاص بك يتبع هذه الروابط، فقم بتحميل الممارسين والمنظمات بشكل منفصل وأعد كتابة المراجع.
- **بيانات الفوترة والإمداد مفقودة.** المطالبات وشروحات المنافع مركزية لنموذج تكلفة الولايات المتحدة في Synthea وليست جزءًا من السجل السريري في Anpheros.
- **الوصفات الطبية تصبح غائبة، وليست محوّلة.** يتم إزالة `MedicationRequest`؛ إذا كنت بحاجة إلى الأدوية في السجل، فقم بتحويلها إلى `MedicationStatement` قبل التحميل.

تتضمن الأسماء في Synthea أرقامًا (`Marcelo725 Gulgowski816`) عن قصد، حتى لا يخلط أحد بينها وبين أشخاص حقيقيين.

## المرضى الاصطناعيون في Anpheros sandbox

يحصل كل مشروع Anpheros sandbox على نسخته الخاصة من 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 مجانية و sandbox](https://developers.anpheros.com/ar/guides/free-fhir-database).

استخدم الشخصيات عندما تريد سجلات صغيرة ومتماسكة تغطي اللغات الأوروبية وميزات المنصة الخاصة؛ قم بتحميل Synthea عندما تحتاج إلى حجم أو تاريخ على الطراز الأمريكي.

## أسئلة متكررة

### ما هي بيانات المرضى الاصطناعية؟
سجلات صحية مُختلقة تشبه السجلات الحقيقية في هيكلها وأنماطها ولكنها لا تصف أي شخص حقيقي. تسمح للمطورين بالبناء والاختبار دون استخدام معلومات صحية محمية.

### هل البيانات الاصطناعية مجهولة الهوية بحكم تعريفها؟
البيانات التي تم إنشاؤها من قواعد، مثل Synthea's، لا تحتوي على مرضى حقيقيين. البيانات التي تم إنشاؤها بواسطة نماذج تم تدريبها على سجلات حقيقية يمكن أن تكشف عن أشخاص حقيقيين وتتطلب تقييمًا للخصوصية قبل مشاركتها.

### هل يمكنني استيراد بيانات Synthea إلى خادم FHIR؟
نعم. تقوم Synthea بتصدير حزم معاملات FHIR R4. قم بإزالة أنواع الموارد التي لا يدعمها الخادم، وتحقق من كيفية تعامله مع المراجع الشرطية، وانشر كل حزمة كمعاملة.

### هل تتضمن بيئة Anpheros التجريبية مرضى اصطناعيين؟
نعم: 30 لكل مشروع، مع ستة أشهر من التاريخ المشفر، بالإضافة إلى ما يصل إلى 50 مريضًا اختباريًا تقوم بإنشائهم بنفسك.

## ذات الصلة

- [قاعدة بيانات FHIR مجانية وبيئة اختبار](https://developers.anpheros.com/ar/guides/free-fhir-database)
- [أمثلة FHIR R4 JSON](https://developers.anpheros.com/tools/fhir-examples/)
- [كيفية تطبيع البيانات الطبية](https://developers.anpheros.com/ar/guides/normalize-medical-data)
- [كيفية تخزين السجلات الطبية باستخدام FHIR R4](https://developers.anpheros.com/ar/guides/store-medical-records-fhir)
- [منصة FHIR](https://developers.anpheros.com/ar/guides/fhir)
