Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Data o lécích pro aplikace a AI agenty
Seznamy léků pacienta vs. znalosti o lécích: FHIR zdroje, RxNorm, ATC, openFDA a EMA zdroje a otestované spojení FHIR záznamu s RxNorm a FDA štítky.
Zdravotnický software potřebuje dva různé druhy dat o lécích: seznam léků pacienta – co tato osoba užívá, od kdy, v jaké dávce, kdo to zaznamenal – a znalosti o lécích – co produkt obsahuje, jeho oficiální označení, varování a interakce. První patří do záznamu pacienta; druhé pochází z autoritativních databází léků. Jejich záměna je důvodem, proč agenti AI uvádějí fakta o lécích z paměti modelu. Tato stránka vysvětluje obojí, zúčastněné FHIR R4 zdroje a kódové systémy, které veřejné zdroje existují v USA a EU, a funkční příklad, který spojuje seznam pacienta z FHIR záznamu s RxNorm a štítkem FDA.
Dva druhy dat o lécích
| Seznam léků pacienta | Znalosti o léčivech | |
|---|---|---|
| Odpovídá na | Co Ana užívá, od kdy, jak často? | Co je metformin 500 mg, na co jeho příbalový leták upozorňuje? |
| Změny | Když jej aktualizuje pacient nebo lékař | Když jej aktualizuje regulátor nebo vydavatel |
| Nachází se v | Záznamu pacienta (EHR, PHR, FHIR server) | Databáze léčiv a terminologie |
| FHIR | MedicationStatement, MedicationRequest, MedicationAdministration, Medication |
Většinou mimo záznam; informace o produktu mohou být samy o sobě FHIR |
| Kdo si to může přečíst | Pouze se souhlasem pacienta | Veřejné nebo licencované |
Aplikace nebo agent, který odpovídá na otázku "mohu užívat ibuprofen s mým lékem na vysoký krevní tlak?", potřebuje obojí: seznam pacienta, aby věděl, o jaký lék se jedná, a zdroj znalostí o léčivech, aby věděl, co je o kombinaci známo — plus lékaře nebo lékárníka pro odpověď.
FHIR zdroje pro seznam léků
- MedicationStatement: lék, který osoba užívá, užívala nebo ukončila (hlášeno pacientem nebo zaznamenáno lékařem). Obvyklý zdroj pro PHR nebo seznam pro usmíření.
- MedicationRequest: předpis nebo objednávka.
- MedicationAdministration: jedna podaná nebo užitá (nebo vynechaná) dávka, užitečné pro sledování dodržování léčby.
- Medication: samotný produkt, pokud je potřeba více detailů než kód (složky, forma, šarže).
Lék je kódován: v USA pomocí RxNorm (z National Library of Medicine) a kódů produktů NDC; mezinárodně pomocí klasifikace WHO ATC; v Evropě také pomocí národních kódů produktů a stále častěji elektronických informací o produktech EMA založených na FHIR. Statement může obsahovat několik kódování pro stejný lék.
Zdroje znalostí o léčivech
Spojené státy americké
- RxNorm API (NLM): normalizované názvy a identifikátory (RXCUI) pro klinická léčiva; zdarma a s jednou výjimkou není vyžadována žádná licence.
- openFDA drug label API (FDA): strukturované popisky produktů — sekce indikací, varování v rámečku, kontraindikací, lékových interakcí — prohledávatelné pomocí RXCUI.
- DailyMed (NLM): stejné popisky pro čtení.
Evropská unie
- Evropská léková agentura zveřejňuje informace o produktech pro centrálně autorizovaná léčiva a její elektronické informace o produktech (ePI) jsou postaveny na FHIR. Národně autorizované produkty jsou v národních registrech.
- ATC kódy a definované denní dávky jsou spravovány WHO Collaborating Centre for Drug Statistics Methodology.
Interakce jsou nejobtížnější částí. NLM ukončilo své API pro lékové interakce kolem ledna 2024 a komplexní kontrola interakcí dnes spoléhá na licencované databáze klinických znalostí. Sekce interakcí v popisku je text napsaný pro kliniky, nikoli pro kontrolu.
Spojení záznamu s daty o léčivech
Příklad načítá aktivní léky pacienta z Anpheros, překládá každý název na koncept RxNorm a načítá štítek FDA. Byl spuštěn proti lokální instanci platformy a živým API RxNorm a openFDA.
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 pro pacienta, který nahlásil metformin 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}}
Co jsme se naučili při jeho spouštění. Při zadání názvu jako "Enalapril 10 mg tablet" vrátil přibližný shodu RxNorm RXCUI 328290, koncept, který RxNorm již nepopisuje, bez přiřazeného štítku. Při použití plného klinického názvu "enalapril maleate 10 mg oral tablet" vrátil 858817, aktuální klinické léčivo se štítkem. Názvy zadané lidmi jsou přibližné; zkontrolujte, na co se shoda přeloží, uložte kód, jakmile je potvrzen, a ukažte osobě, co bylo shodováno.
Pravidla pro agenty AI
- Nikdy nenechte model dodávat fakta o lécích z paměti. Poskytněte mu seznam pacienta ze záznamu a relevantní text z autoritativního zdroje a požádejte ho, aby je citoval.
- Udržujte oba zdroje viditelné. „Užíváte metformin (váš záznam, zadáno vámi 3. března)“ a „štítek FDA varuje před laktátovou acidózou (štítek nastaven 011de1a5…)" jsou odlišná tvrzení s různými vlastníky.
- Zúžení rozsahu. Agent, který potřebuje pouze seznam léků, by měl získat přístup pro čtení k
MedicationStatement, nikoli k celému záznamu. S Anpheros je to rozsah souhlasu nebo nástroje MCP serveru pouze pro čtení. - Neodpovídejte na to, co vyžaduje klinický pracovník. Interakce, změny dávkování a ukončení užívání léku patří lékárníkovi nebo lékaři; agent může otázku připravit.
Kam Anpheros zapadá
Anpheros ukládá seznam léků: MedicationStatement a MedicationAdministration s kódy ATC nebo jinými kódy, kdo každou položku zaznamenal, historii a souhlas pro jiné aplikace; API kontextu zahrnuje aktivní léky v souhrnu, který připravuje pro model, a MCP server je zpřístupňuje agentům pouze pro čtení. Obsahuje malou podmnožinu ATC (asi 50 běžných léků) pro automatické pojmenování kódů; jakýkoli jiný kód je přijat bez automatického názvu.
Není to databáze léků: neposkytuje příbalové letáky, interakce, dávkování nebo kontraindikace a dnes nepodporuje zdroje MedicationRequest ani Medication.
Často kladené dotazy
Který FHIR zdroj by měl být použit pro seznam léků?
MedicationStatement pro to, co osoba užívá nebo užívala, včetně léků hlášených pacientem. Předpisy jsou MedicationRequest; jednotlivé dávky jsou MedicationAdministration.
Existuje bezplatné API pro databázi léků?
V USA jsou zdarma RxNorm (NLM) pro identifikátory a názvy léků a openFDA pro oficiální produktové informace. V Evropě EMA a národní agentury publikují informace o produktech. Komplexní kontrola interakcí obecně vyžaduje licencovanou databázi znalostí.
Jak by měl AI agent získávat informace o lécích?
Z dvou nástrojů: jeden, který s povolením čte seznam léků pacienta z jeho záznamu, a jeden, který vyhledává v autoritativním zdroji léků. Agent by měl citovat oba a ponechat klinická rozhodnutí na profesionálovi.
Kontroluje Anpheros interakce léků?
Ne. Ukládá, co osoba užívá, s uvedením původu a souhlasu. Kontrola interakcí patří ke zdroji znalostí o lécích a klinickému lékaři.
Související
- AI agenti a lékařská data
- Jak poskytnout AI agentovi přístup k lékařským záznamům
- FHIR MCP server pro AI agenty
- FHIR kódové systémy
- Příklad FHIR R4 MedicationStatement
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card