# Uygulamalar ve Yapay Zeka Ajanları İçin İlaç Verileri

> Hasta ilaç listeleri ve ilaç bilgisi: FHIR kaynakları, RxNorm, ATC, openFDA ve EMA kaynakları ve bir FHIR kaydının RxNorm ve FDA etiketleriyle test edilmiş birleştirilmesi.

Source: https://developers.anpheros.com/tr/guides/medication-data-ai-agents

**Sağlık yazılımlarının iki farklı türde ilaç verisine ihtiyacı vardır: hastanın ilaç listesi — bu kişinin ne aldığı, ne zamandan beri, hangi dozda, kimin kaydettiği — ve ilaç bilgisi — bir ürünün ne içerdiği, resmi etiketi, uyarıları ve etkileşimleri.** Birincisi hastanın kaydında yer alır; ikincisi ise yetkili ilaç veritabanlarından gelir. Bunları karıştırmak, yapay zeka ajanlarının model belleğinden ilaç gerçeklerini belirtmesine neden olur. Bu sayfa, her ikisini, ilgili FHIR R4 kaynaklarını ve kod sistemlerini, ABD ve AB'de mevcut olan kamu kaynaklarını ve bir FHIR kaydındaki hastanın listesini RxNorm ve FDA etiketiyle birleştiren çalışan bir örneği açıklamaktadır.

## İki tür ilaç verisi

| | Hastanın ilaç listesi | İlaç bilgisi |
|---|---|---|
| Cevaplar | Ana ne alıyor, ne zamandan beri, ne sıklıkla? | Metformin 500 mg nedir, etiketinde ne gibi uyarılar var? |
| Değişiklikler | Hasta veya bir klinisyen güncellediğinde | Bir düzenleyici veya yayıncı güncellediğinde |
| Bulunduğu yer | Hastanın kaydı (EHR, PHR, FHIR sunucusu) | İlaç veritabanları ve terminolojileri |
| FHIR | `MedicationStatement`, `MedicationRequest`, `MedicationAdministration`, `Medication` | Çoğunlukla kaydın dışında; ürün bilgisi kendi başına FHIR olabilir |
| Kimler okuyabilir | Yalnızca hastanın rızasıyla | Genel veya lisanslı |

"İbuprofen'i tansiyon ilacım ile birlikte alabilir miyim?" sorusunu yanıtlayan bir uygulama veya aracı, her ikisine de ihtiyaç duyar: hangi hap olduğunu bilmek için hastanın listesine ve kombinasyon hakkında bilinenleri bilmek için bir ilaç bilgisi kaynağına ihtiyaç duyar — artı cevap için bir klinisyen veya eczacı.

## İlaç listesi için FHIR kaynakları

- **MedicationStatement:** kişinin aldığı, almış olduğu veya bıraktığı bir ilaç (hasta tarafından bildirilen veya bir klinisyen tarafından kaydedilen). PHR veya bir uzlaştırma listesi için olağan kaynak.
- **MedicationRequest:** bir reçete veya emir.
- **MedicationAdministration:** verilen veya alınan (veya atlanan) bir doz, uyumluluk için kullanışlıdır.
- **Medication:** ürünün kendisi, bir koddandan daha fazla ayrıntı gerektiğinde (bileşenler, form, parti).

İlaç kodlanır: ABD'de **RxNorm** (Ulusal Tıp Kütüphanesi'nden) ve NDC ürün kodları ile; uluslararası olarak WHO **ATC** sınıflandırması ile; Avrupa'da ayrıca ulusal ürün kodları ve giderek artan bir şekilde EMA'nın FHIR tabanlı elektronik ürün bilgileri ile. Bir beyan, aynı ilaç için birden fazla kodlama taşıyabilir.

## İlaç bilgi kaynakları

**Amerika Birleşik Devletleri**

- [RxNorm API](https://lhncbc.nlm.nih.gov/RxNav/APIs/RxNormAPIs.html) (NLM): klinik ilaçlar için normalleştirilmiş adlar ve tanımlayıcılar (RXCUI); ücretsizdir ve bir istisna dışında lisans gerekmez.
- [openFDA ilaç etiketi API'si](https://open.fda.gov/apis/drug/label/) (FDA): yapılandırılmış ürün etiketleri — endikasyonlar, kutulu uyarılar, kontrendikasyonlar, ilaç etkileşimleri bölümleri — RXCUI ile aranabilir.
- DailyMed (NLM): insanlar için okunabilir aynı etiketler.

**Avrupa Birliği**

- Avrupa İlaç Ajansı, merkezi olarak yetkilendirilmiş ilaçlar için ürün bilgileri yayınlar ve elektronik ürün bilgileri (ePI) FHIR üzerine kuruludur. Ulusal olarak yetkilendirilmiş ürünler ulusal kayıtlarda yer alır.
- ATC kodları ve tanımlanmış günlük dozlar, İlaç İstatistikleri Metodolojisi için WHO İşbirliği Merkezi tarafından sürdürülmektedir.

**Etkileşimler** en zor kısımdır. NLM, ilaç-ilaç etkileşim API'sini Ocak 2024 civarında kullanımdan kaldırdı ve kapsamlı etkileşim kontrolü bugün lisanslı klinik bilgi tabanlarına dayanmaktadır. Bir etiketin etkileşimler bölümü, klinisyenler için yazılmış bir metindir, bir denetleyici değildir.

## İlac bilgisiyle kaydı birleştirme

Örnek, Anpheros'tan hastanın aktif ilaçlarını okur, her adı bir RxNorm kavramına çözer ve FDA etiketini çeker. Platformun yerel bir örneği ve canlı RxNorm ve openFDA API'leri üzerinde çalıştırıldı.

```ts
import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });

// 1. What the person takes: from their record (ATC codes, names as they were entered)
const { data: meds } = await anpheros.medications.list(patientId, { status: 'active' });

// 2. What each medicine is: RxNorm (US National Library of Medicine), free, no key
async function rxcui(name: string): Promise<string | null> {
  const r = await fetch(`https://rxnav.nlm.nih.gov/REST/approximateTerm.json?term=${encodeURIComponent(name)}&maxEntries=1`);
  const j: any = await r.json();
  const id = j.approximateGroup?.candidate?.[0]?.rxcui;
  if (!id) return null;
  // An approximate match can be an outdated concept: keep it only if RxNorm still describes it as a drug
  const props: any = await (await fetch(`https://rxnav.nlm.nih.gov/REST/rxcui/${id}/properties.json`)).json();
  return ['SCD', 'SBD', 'GPCK', 'BPCK'].includes(props.properties?.tty) ? id : null;
}

// 3. What the official label says: openFDA drug label API (US FDA), free
async function label(id: string) {
  const r = await fetch(`https://api.fda.gov/drug/label.json?search=openfda.rxcui:%22${id}%22&limit=1`);
  if (!r.ok) return null;
  const doc: any = (await r.json()).results?.[0];
  return doc && { set_id: doc.set_id, boxed_warning: doc.boxed_warning?.[0]?.slice(0, 120), has_interactions_section: !!doc.drug_interactions };
}

for (const m of meds) {
  const id = await rxcui(m.display);
  console.log(JSON.stringify({ record: { display: m.display, atc: m.code, dosage: m.dosage }, rxnorm: id, fda_label: id ? await label(id) : null }));
}
```

Metformin ve enalapril bildiren bir hasta için çıktı:

```
{"record":{"display":"Metformin 500 mg tablet","atc":"A10BA02","dosage":"500 mg twice a day"},"rxnorm":"861007",
 "fda_label":{"set_id":"011de1a5-…","boxed_warning":"BOXED WARNING WARNING: LACTIC ACIDOSIS …","has_interactions_section":true}}
{"record":{"display":"Enalapril maleate 10 mg oral tablet","atc":"C09AA02","dosage":"10 mg once a day"},"rxnorm":"858817",
 "fda_label":{"set_id":"074fe718-…","boxed_warning":"WARNING: FETAL TOXICITY …","has_interactions_section":true}}
```

**Çalıştırırken öğrendiklerimiz.** "Enalapril 10 mg tablet" olarak yazılan adla, RxNorm'un yaklaşık eşleşmesi, artık RxNorm tarafından tanımlanmayan ve arkasında etiket bulunmayan bir kavram olan RXCUI 328290'ı döndürdü. Tam klinik ad olan "enalapril maleate 10 mg oral tablet" ile, bir etiketi olan güncel bir klinik ilaç olan 858817'yi döndürdü. İnsanlar tarafından yazılan adlar yaklaşıktır; bir eşleşmenin neye çözümlendiğini kontrol edin, onaylandıktan sonra kodu saklayın ve kişiye neyin eşleştirildiğini gösterin.

## Yapay Zeka Ajanları İçin Kurallar

1. **Modelin ilaç gerçeklerini hafızadan sağlamasına asla izin vermeyin.** Hastanın kayıttaki listesini ve yetkili bir kaynaktan ilgili metni verin ve alıntı yapmasını isteyin.
2. **İki kaynağı görünür tutun.** "Metformin kullanıyorsunuz (kaydınız, sizin tarafınızdan 3 Mart'ta girildi)" ve "FDA etiketi laktik asidoz konusunda uyarıyor (etiket seti 011de1a5…)" farklı iddialardır ve farklı sahiplere sahiptir.
3. **Kapsamları daraltın.** Yalnızca ilaç listesine ihtiyaç duyan bir ajan, tüm kaydı değil, `MedicationStatement`'ye okuma erişimi almalıdır. Anpheros ile bu bir izin kapsamı veya MCP sunucusunun salt okunur araçlarıdır.
4. **Bir klinisyenin yapması gerekenleri yanıtlamayın.** Etkileşimler, doz değişiklikleri ve ilaçları durdurma işlemleri bir eczacıya veya doktora gider; ajan soruyu hazırlayabilir.

## Anpheros Nerede Yer Alıyor?

Anpheros, ilaç listesini `MedicationStatement` ve `MedicationAdministration` ATC veya diğer kodlarla birlikte, her öğeyi kimin kaydettiğini, geçmişini ve diğer uygulamalar için izni saklar; [bağlam API'si](https://developers.anpheros.com/tr/guides/ai-healthcare), bir model için hazırladığı özette aktif ilaçları içerir ve [MCP sunucusu](https://developers.anpheros.com/tr/guides/mcp), bunları aracılara salt okunur olarak sunar. Otomatik kod adlandırması için küçük bir ATC alt kümesi (yaklaşık 50 yaygın ilaç) içerir; otomatik adlandırma olmadan başka herhangi bir kod kabul edilir.

Bir ilaç veritabanı değildir: etiketler, etkileşimler, dozaj veya kontrendikasyonlar sağlamaz ve bugün `MedicationRequest` veya `Medication` kaynaklarını desteklemez.

## Sıkça Sorulan Sorular

### Bir ilaç listesi hangi FHIR kaynağını kullanmalıdır?
Bir kişinin aldığı veya almış olduğu ilaçlar için `MedicationStatement`, hasta tarafından bildirilen ilaçlar dahil. Reçeteler `MedicationRequest`; bireysel dozlar `MedicationAdministration`.

### Ücretsiz bir ilaç veritabanı API'si var mı?
ABD'de ilaç tanımlayıcıları ve adları için RxNorm (NLM) ve resmi ürün etiketleri için openFDA ücretsizdir. Avrupa'da EMA ve ulusal ajanslar ürün bilgilerini yayınlar. Kapsamlı etkileşim kontrolü genellikle lisanslı bir bilgi tabanı gerektirir.

### Bir yapay zeka aracısı ilaç bilgilerini nasıl almalıdır?
İki araçtan: biri hastanın rızasıyla hastanın kaydından ilaç listesini okuyan, diğeri ise yetkili bir ilaç kaynağını sorgulayan. Araç, her ikisini de belirtmeli ve klinik kararları bir profesyonele bırakmalıdır.

### Anpheros ilaç etkileşimlerini kontrol eder mi?
Hayır. Bir kişinin ne aldığını, kaynağı ve rızasıyla birlikte saklar. Etkileşim kontrolü bir ilaç bilgi kaynağına ve bir klinisyene aittir.

## İlgili Konular

- [Yapay Zeka ajanları ve tıbbi veriler](https://developers.anpheros.com/tr/guides/ai-agents-medical-data)
- [Bir Yapay Zeka ajanına tıbbi kayıtlara erişim izni nasıl verilir](https://developers.anpheros.com/tr/guides/ai-agent-access-medical-records)
- [Yapay Zeka ajanları için FHIR MCP sunucusu](https://developers.anpheros.com/tr/guides/mcp)
- [FHIR kod sistemleri](https://developers.anpheros.com/tr/guides/fhir-code-systems)
- [FHIR R4 MedicationStatement örneği](https://developers.anpheros.com/tools/fhir-examples/medication-statement)
