# Liekové dáta pre aplikácie a AI agentov

> Zoznamy liekov pacienta vs. znalosti o liekoch: FHIR zdroje, RxNorm, ATC, openFDA a EMA zdroje, a otestované spojenie FHIR záznamu s RxNorm a FDA štítkami.

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

**Zdravotnícky softvér potrebuje dva rôzne druhy liekových dát: zoznam liekov pacienta — čo táto osoba užíva, od kedy, v akej dávke, kto to zaznamenal — a znalosti o liekoch — čo produkt obsahuje, jeho oficiálny štítok, varovania a interakcie.** Prvé patrí do záznamu pacienta; druhé pochádza z autoritatívnych databáz liekov. Ich zmiešanie je dôvodom, prečo AI agenti uvádzajú fakty o liekoch z pamäte modelu. Táto stránka vysvetľuje obe, zúčastnené FHIR R4 zdroje a kódové systémy, ktoré verejné zdroje existujú v USA a EÚ, a funkčný príklad, ktorý spája zoznam pacienta z FHIR záznamu s RxNorm a FDA štítkom.

## Dva druhy údajov o liekoch

| | Zoznam liekov pacienta | Informácie o lieku |
|---|---|---|
| Odpovede | Čo Ana užíva, odkedy, ako často? | Čo je metformín 500 mg, na čo upozorňuje jeho príbalový leták? |
| Zmeny | Keď ho aktualizuje pacient alebo lekár | Keď ho aktualizuje regulátor alebo vydavateľ |
| Nachádza sa v | Zázname pacienta (EHR, PHR, FHIR server) | Databázy liekov a terminológie |
| FHIR | `MedicationStatement`, `MedicationRequest`, `MedicationAdministration`, `Medication` | Väčšinou mimo záznamu; informácie o produkte môžu byť samy osebe FHIR |
| Kto si to môže prečítať | Len s pacientovým súhlasom | Verejne alebo na základe licencie |

Aplikácia alebo agent, ktorý odpovedá na otázku „Môžem užívať ibuprofén s mojimi liekmi na krvný tlak?“, potrebuje oboje: zoznam pacienta, aby vedel, o aký liek ide, a zdroj informácií o lieku, aby vedel, čo je o kombinácii známe – plus lekára alebo lekárnika pre samotnú odpoveď.

## FHIR zdroje pre zoznam liekov

- **MedicationStatement:** osoba užíva, užívala alebo prestala užívať liek (hlásené pacientom alebo zaznamenané lekárom). Bežný zdroj pre PHR alebo zoznam na reconciliáciu.
- **MedicationRequest:** predpis alebo objednávka.
- **MedicationAdministration:** podaná alebo užitá (alebo vynechaná) dávka, užitočné pre adherenciu.
- **Medication:** samotný produkt, ak je potrebných viac detailov ako kód (zložky, forma, šarža).

Lieky sú kódované: v USA pomocou **RxNorm** (z National Library of Medicine) a NDC produktových kódov; medzinárodne pomocou klasifikácie WHO **ATC**; v Európe tiež pomocou národných produktových kódov a čoraz častejšie elektronických informácií o produktoch EMA založených na FHIR. Vyhlásenie môže niesť niekoľko kódovaní pre ten istý liek.

## Zdroje liekových poznatkov

**Spojené štáty americké**

- [RxNorm API](https://lhncbc.nlm.nih.gov/RxNav/APIs/RxNormAPIs.html) (NLM): normalizované názvy a identifikátory (RXCUI) pre klinické lieky; bezplatné a s jednou výnimkou nevyžaduje licenciu.
- [openFDA drug label API](https://open.fda.gov/apis/drug/label/) (FDA): štruktúrované produktové štítky — indikácie, upozornenia v rámčeku, kontraindikácie, sekcie liekových interakcií — vyhľadávateľné podľa RXCUI.
- DailyMed (NLM): rovnaké štítky na čítanie pre ľudí.

**Európska únia**

- Európska lieková agentúra zverejňuje informácie o produktoch pre centrálne autorizované lieky a jej elektronické informácie o produkte (ePI) sú založené na FHIR. Národne autorizované produkty sú v národných registroch.
- ATC kódy a definované denné dávky spravuje WHO Collaborating Centre for Drug Statistics Methodology.

**Interakcie** sú najťažšou časťou. NLM ukončil podporu svojho API pre liekové interakcie okolo januára 2024 a komplexná kontrola interakcií sa dnes spolieha na licencované klinické znalostné bázy. Sekcia interakcií v štítku je text napísaný pre klinických lekárov, nie kontrolný nástroj.

## Spojenie záznamu s liekovými znalosťami

Príklad číta aktívne lieky pacienta z Anpheros, rozlíši každý názov na RxNorm koncept a získa FDA štítok. Bol spustený proti lokálnej inštancii platformy a živým RxNorm a openFDA API.

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

Výstup pre pacienta, ktorý hlásil metformín a enalapril:

```
{"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}}
```

**Čo sme sa naučili pri jeho spustení.** Pri názve napísanom ako "Enalapril 10 mg tablet", RxNorm aproximatívne zhodnotenie vrátilo RXCUI 328290, koncept, ktorý RxNorm už nepopisuje, bez štítku. S plným klinickým názvom "enalapril maleate 10 mg oral tablet" vrátil 858817, aktuálny klinický liek so štítkom. Názvy zadané ľuďmi sú aproximatívne; skontrolujte, na čo sa zhodnotenie rozlíši, uložte kód po jeho potvrdení a ukážte osobe, čo bolo zhodnotené.

## Pravidlá pre AI agentov

1. **Nikdy nedovoľte modelu poskytovať informácie o liekoch z pamäte.** Poskytnite mu zoznam pacienta zo záznamu a relevantný text z autoritatívneho zdroja a požiadajte ho, aby ich citoval.
2. **Udržujte oba zdroje viditeľné.** "Užívate metformín (váš záznam, zadaný vami 3. marca)" a "štítok FDA varuje pred laktátovou acidózou (štítok nastavený na 011de1a5…)" sú odlišné tvrdenia s odlišnými vlastníkmi.
3. **Zúžte rozsahy.** Agent, ktorý potrebuje iba zoznam liekov, by mal mať prístup na čítanie k `MedicationStatement`, nie k celému záznamu. S Anpherosom je to rozsah súhlasu alebo nástroje na čítanie iba v rámci MCP servera.
4. **Neodpovedajte na to, čo vyžaduje lekár.** Interakcie, zmeny dávkovania a ukončenie užívania lieku patria lekárnikovi alebo lekárovi; agent môže pripraviť otázku.

## Kam Anpheros zapadá

Anpheros ukladá zoznam liekov: `MedicationStatement` a `MedicationAdministration` s ATC alebo inými kódmi, kto zaznamenal každú položku, históriu a súhlas pre iné aplikácie; [API kontextu](https://developers.anpheros.com/sk/guides/ai-healthcare) zahŕňa aktívne lieky v súhrne, ktorý pripravuje pre model, a [MCP server](https://developers.anpheros.com/sk/guides/mcp) ich sprístupňuje agentom iba na čítanie. Obsahuje malú podmnožinu ATC (asi 50 bežných liekov) na automatické pomenovanie kódov; akýkoľvek iný kód je akceptovaný bez automatického názvu.

Nie je to databáza liekov: neposkytuje príbalové letáky, interakcie, dávkovanie ani kontraindikácie a dnes nepodporuje zdroje `MedicationRequest` ani `Medication`.

## Často kladené otázky

### Ktorý FHIR zdroj by mal byť použitý pre zoznam liekov?
`MedicationStatement` pre to, čo osoba užíva alebo užívala, vrátane liekov nahlásených pacientom. Predpisy sú `MedicationRequest`; jednotlivé dávky sú `MedicationAdministration`.

### Existuje bezplatné API pre databázu liekov?
V USA sú RxNorm (NLM) pre identifikátory a názvy liekov a openFDA pre oficiálne produktové štítky bezplatné. V Európe EMA a národné agentúry zverejňujú informácie o produktoch. Komplexná kontrola interakcií vo všeobecnosti vyžaduje licencovanú znalostnú bázu.

### Ako by mal AI agent získať informácie o liekoch?
Z dvoch nástrojov: jeden, ktorý si prečíta zoznam liekov pacienta z jeho záznamu so súhlasom, a jeden, ktorý vyhľadá autoritatívny zdroj liekov. Agent by mal citovať oba a klinické rozhodnutia nechať na profesionála.

### Kontroluje Anpheros interakcie liekov?
Nie. Ukladá, čo osoba užíva, s uvedením pôvodu a súhlasu. Kontrola interakcií patrí k zdroju znalostí o liekoch a ku klinickému lekárovi.

## Súvisiace

- [AI agenti a lekárske dáta](https://developers.anpheros.com/sk/guides/ai-agents-medical-data)
- [Ako udeliť AI agentovi prístup k lekárskym záznamom](https://developers.anpheros.com/sk/guides/ai-agent-access-medical-records)
- [FHIR MCP server pre AI agentov](https://developers.anpheros.com/sk/guides/mcp)
- [FHIR kódové systémy](https://developers.anpheros.com/sk/guides/fhir-code-systems)
- [Príklad FHIR R4 MedicationStatement](https://developers.anpheros.com/tools/fhir-examples/medication-statement)
