# Test için Sentetik Hasta Verileri

> Synthea, kişilikler ve model tarafından üretilen verilerin karşılaştırılması, iyi test verilerinin neleri içerdiği ve Synthea hastalarını bir FHIR sunucusuna yüklediğimizde neler olduğu.

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

**Sentetik hasta verileri, gerçek olanlara benzeyecek ve davranacak şekilde oluşturulmuş icat edilmiş tıbbi kayıtlardır — hastalar, teşhisler, ilaçlar, laboratuvar sonuçları, ziyaretler — böylece kimsenin sağlık bilgisine dokunmadan sağlık yazılımları oluşturabilir, test edebilir ve sergileyebilirsiniz.** Geliştirme için varsayılan seçenektir: test ortamındaki gerçek hasta verileri bir gizlilik riski ve genellikle yasal bir sorundur. Bu sayfa, sentetik veri elde etmenin ana yollarını, her birinin nelerde iyi ve kötü olduğunu, etrafında testleri nasıl tasarlayacağınızı ve bunları bir FHIR sunucusuna nasıl yükleyeceğinizi kapsar — Synthea hastalarını Anpheros'a yüklediğimizde neler olduğunu da içerir.

## Sentetik hasta elde etmenin üç yolu

| Yaklaşım | Örnek | Neler için uygundur | Dikkat edilmesi gerekenler |
|---|---|---|---|
| Kural tabanlı simülasyon | [Synthea](https://github.com/synthetichealth/synthea) (açık kaynak, MITRE'den): doğumdan itibaren hastalık modülleriyle hayatları simüle eder ve FHIR R4 paketleri, C-CDA ve CSV olarak dışa aktarır | Hacim, tam geçmişler, standart formatlar | Varsayılan olarak ABD merkezlidir (demografi, faturalandırma kaynakları, kodlar); desenler yalnızca modüller kadar gerçektir |
| Küratörlü kişilikler | Belirli koşullara sahip, el ile tasarlanmış hastalar | Demolar, uç durumlar, tekrarlanabilir testler | Az sayıda hasta; tutarlı olmalarını sağlamak için birinin ilgilenmesi gerekir |
| Gerçek verilerden istatistiksel veya ML ile üretim | Gerçek bir veri kümesi üzerinde eğitilmiş modeller | Gerçekçilik araştırması | Kötü yapılırsa gerçek kişileri sızdırabilir; yalnızca "sentetik" olması değil, gizlilik değerlendirmesi gerektirir |

Dil modeli tarafından talep üzerine yazılan metin dördüncü, riskli bir kaynaktır: iyi okunur ancak sıklıkla kendiyle çelişir (tedavi ettiği koşulu olmayan bir ilaç, imkansız laboratuvar değerleri) ve testlerin temeli olmamalıdır.

## İyi test verileri neleri içerir

Gerçekçi ortalamalar yeterli değildir. Kod kenarlarda bozulur, bu nedenle verilerinizin, ister sentetik ister gerçek olsun, şunları içerdiğinden emin olun:

- **Eksik ve kısmi veriler:** referans aralığı olmayan bir laboratuvar sonucu, dozu olmayan bir ilaç, doğum tarihi olmayan bir hasta.
- **Birimler ve formatlar:** aynı test mg/dL ve mmol/L olarak, ondalık virgüller, saat dilimleri olan ve olmayan saatler.
- **Düzeltmeler ve geçmiş:** düzeltilmiş bir sonuç, silinmiş (`entered-in-error`) bir giriş, düzelmiş bir durum.
- **Kopya kayıtlar:** aynı raporun iki kez gönderilmesi.
- **Uzun ve kısa geçmişler:** yeni doğan, on yıllık verisi olan biri, tek ziyareti olan biri.
- **Birden fazla pazara hizmet veriyorsanız birkaç dil ve ülke.**
- **Onay değişiklikleri:** bir oturumun ortasında erişimi iptal edilen bir uygulama.

## Synthea hastalarını bir FHIR sunucusuna yükleme

Synthea, hasta başına bir FHIR R4 `transaction` Bundle yazar. İki hasta (`java -jar synthea-with-dependencies.jar -p 2 -s 4242 Massachusetts`) oluşturduk ve bunları Anpheros'un yerel bir örneğine yükledik. İlk hastanın bundle'ı 221 giriş içeriyordu:

| Saklanan (Anpheros'un depoladığı türler) | Kaldırılan (Anpheros'un depolamadığı türler) |
|---|---|
| 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 |

Yükleyici, sunucunun hangi türleri desteklediğini sorar, yalnızca desteklenenleri saklar ve geri kalanını tek bir işlem olarak gönderir:

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

Sonuç: Tek bir işlemde 182 kaynak oluşturuldu. Saklanan girişler arasındaki `urn:uuid` referansları sunucu kimliklerine çözümlendi (bir DiagnosticReport'un `result`'sı var olan bir Observation'a işaret eder); bırakılan 39 girdiye yapılan referanslar yazıldığı gibi kalır, bu nedenle yüklemeden önce bırakılan her girdinin `fullUrl`'sini toplayın ve onlara işaret eden saklanan referansları kaldırın veya dönüştürün ve `Patient/{id}/$summary`, 15 sorun, 6 aşılama, 15 sonuç ve 28 vital bulgu içeren bir International Patient Summary üretti. `$everything`, platformun her yazmaya eklediği provenance dahil 363 giriş döndürdü.

Ona güvenmeden önce bilmeniz gereken üç şey:

- **Koşullu referanslar yazıldığı gibi kalır.** Synthea, `Practitioner?identifier=http://hl7.org/fhir/sid/us-npi|9999967398` gibi koşullu referanslarla uygulayıcıları, kuruluşları ve konumları işaret eder. Anpheros, bir işlemdeki koşullu referansları çözmez; yazıldığı gibi, `display` metinleriyle birlikte depolanır ve bir kaynağa çözümlenmez. Kodunuz bu bağlantıları izlerse, uygulayıcıları ve kuruluşları ayrı olarak yükleyin ve referansları yeniden yazın.
- **Faturalama ve tedarik verileri kayboldu.** Talepler ve fayda açıklamaları, Synthea'nın ABD maliyet modelinin merkezindedir ve Anpheros'ta bir klinik kaydın parçası değildir.
- **Reçeteler eksik hale gelir, dönüştürülmez.** `MedicationRequest` kaldırılır; kayıtta ilaçlara ihtiyacınız varsa, yüklemeden önce bunları `MedicationStatement`'e dönüştürün.

Synthea'daki adlar, kimsenin onları gerçek insanlarla karıştırmaması için kasıtlı olarak sayılar içerir (`Marcelo725 Gulgowski816`).

## Anpheros sandbox'ta sentetik hastalar

Her Anpheros sandbox projesi, el ile tasarlanmış kişilerden oluşturulmuş 30 sentetik hastanın kendi kopyasını alır: yaşları 3 ila 85 arasında, çeşitli AB ülkeleri ve dilleri, ICD-10 ile kodlanmış durumlar, ATC'de ilaçlar, UCUM birimleri ve referans aralıkları ile LOINC'de laboratuvar ve yaşamsal bulgular, altı aylık geçmiş ve belgeler. Yeni başlatılan bir proje 30 hasta, 43 durum, 51 ilaç beyanı, 1.811 gözlem, 57 belge ve 6 alerji içerir. Veriler deterministiktir — her proje aynı kişileri aynı değerlerle görür, yalnızca farklı kimlikler — ve bir sıfırlama onu geri yükler. Her kişilik kararlı bir tanımlayıcı tutar, bu nedenle `Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|p02` her zaman aynı kişiyi bulur. [Ücretsiz FHIR veritabanı ve sandbox](https://developers.anpheros.com/tr/guides/free-fhir-database) bölümüne bakın.

Avrupa dillerini ve platformun kendi özelliklerini kapsayan küçük, tutarlı kayıtlar istediğinizde kişilikleri kullanın; hacim veya ABD tarzı geçmişlere ihtiyacınız olduğunda Synthea'yı yükleyin.

## Sıkça Sorulan Sorular

### Sentetik hasta verisi nedir?
Gerçek hasta verilerine yapı ve desen olarak benzeyen ancak gerçek bir kişiyi tanımlamayan uydurma sağlık kayıtlarıdır. Geliştiricilerin korunan sağlık bilgilerini kullanmadan oluşturma ve test etme olanağı sağlar.

### Sentetik veri tanım gereği anonim midir?
Synthea gibi kurallardan üretilen veriler gerçek hastalar içermez. Gerçek kayıtlara dayalı eğitilmiş modellerden üretilen veriler hala gerçek kişileri ortaya çıkarabilir ve paylaşılmadan önce bir gizlilik değerlendirmesi gerektirir.

### Synthea verilerini bir FHIR sunucusuna aktarabilir miyim?
Evet. Synthea, FHIR R4 işlem paketleri (transaction bundles) olarak dışa aktarım yapar. Sunucunun desteklemediği kaynak türlerini (resource types) kaldırın, koşullu referansları (conditional references) nasıl işlediğini kontrol edin ve her paketi bir işlem olarak gönderin.

### Anpheros sandbox'ı sentetik hastalar içeriyor mu?
Evet: proje başına 30 hasta, altı aylık kodlanmış geçmiş ile birlikte, ayrıca kendinizin oluşturduğu 50 adede kadar test hastası içerir.

## İlgili Kaynaklar

- [Ücretsiz FHIR veritabanı ve sandbox](https://developers.anpheros.com/tr/guides/free-fhir-database)
- [FHIR R4 JSON örnekleri](https://developers.anpheros.com/tools/fhir-examples/)
- [Tıbbi veriler nasıl normalize edilir](https://developers.anpheros.com/tr/guides/normalize-medical-data)
- [FHIR R4 kullanılarak tıbbi kayıtlar nasıl saklanır](https://developers.anpheros.com/tr/guides/store-medical-records-fhir)
- [FHIR platformu](https://developers.anpheros.com/tr/guides/fhir)
