AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Date despre medicamente pentru aplicații și agenți AI

Liste de medicamente ale pacienților vs. cunoștințe despre medicamente: resurse FHIR, RxNorm, ATC, surse openFDA și EMA și o unire testată a unui fișier FHIR cu etichete RxNorm și FDA.

Software-ul medical necesită două tipuri diferite de date despre medicamente: lista de medicamente a pacientului — ce ia această persoană, de când, la ce doză, cine a înregistrat-o — și cunoștințe despre medicamente — ce conține un produs, eticheta sa oficială, avertismente și interacțiuni. Primul aparține înregistrării pacientului; al doilea provine din baze de date autorizate despre medicamente. Amestecarea lor este motivul pentru care agenții AI ajung să prezinte fapte despre medicamente din memoria modelului. Această pagină explică ambele, resursele FHIR R4 și sistemele de coduri implicate, ce surse publice există în SUA și UE, și un exemplu funcțional care îmbină lista unui pacient dintr-o înregistrare FHIR cu RxNorm și eticheta FDA.

Două tipuri de date despre medicamente

Lista de medicamente a pacientului Cunoștințe despre medicamente
Răspunsuri Ce ia Ana, de când, cât de des? Ce este metformina 500 mg, ce avertismente conține eticheta sa?
Modificări Când o actualizează pacientul sau un clinician Când o actualizează un regulator sau un editor
Locuiește în Fișa pacientului (EHR, PHR, server FHIR) Baze de date și terminologii despre medicamente
FHIR MedicationStatement, MedicationRequest, MedicationAdministration, Medication În mare parte în afara fișei; informațiile despre produs pot fi ele însele FHIR
Cine are voie să o citească Doar cu consimțământul pacientului Public sau licențiat

O aplicație sau un agent care răspunde la întrebarea „pot lua ibuprofen împreună cu pastila mea pentru tensiune arterială?” are nevoie de ambele: lista pacientului pentru a ști despre ce pastilă este vorba și o sursă de cunoștințe despre medicamente pentru a ști ce se cunoaște despre combinație — plus un clinician sau farmacist pentru răspuns.

Resurse FHIR pentru lista de medicamente

Mediculament este codificat: în SUA cu RxNorm (de la National Library of Medicine) și coduri de produs NDC; internațional cu clasificarea ATC a OMS; în Europa, de asemenea, cu coduri naționale de produs și, din ce în ce mai mult, cu informațiile electronice despre produs bazate pe FHIR ale EMA. O declarație poate purta mai multe codificări pentru același medicament.

Surse de cunoștințe despre medicamente

Statele Unite ale Americii

Uniunea Europeană

Interacțiunile sunt cea mai dificilă parte. NLM și-a retras API-ul pentru interacțiuni medicamentoase în jurul lunii ianuarie 2024, iar verificarea cuprinzătoare a interacțiunilor se bazează astăzi pe baze de cunoștințe clinice licențiate. Secțiunea de interacțiuni a unei etichete este text scris pentru clinicieni, nu un verificator.

Alăturarea înregistrării cu cunoștințe despre medicamente

Exemplul citește medicamentele active ale unui pacient din Anpheros, rezolvă fiecare nume la un concept RxNorm și preia eticheta FDA. A fost rulat pe o instanță locală a platformei și pe API-urile live RxNorm și 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 }));
}

Rezultat pentru un pacient care a raportat metformin și 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}}

Ce am învățat rulându-l. Cu numele scris ca „Enalapril 10 mg tablet”, potrivirea aproximativă a RxNorm a returnat RXCUI 328290, un concept pe care RxNorm nu îl mai descrie, fără nicio etichetă în spate. Cu numele clinic complet, „enalapril maleate 10 mg oral tablet”, a returnat 858817, un medicament clinic curent cu o etichetă. Numele tastate de oameni sunt aproximative; verificați la ce se rezolvă o potrivire, stocați codul odată ce este confirmat și arătați persoanei ce a fost potrivit.

Reguli pentru agenții AI

  1. Nu permiteți niciodată modelului să furnizeze informații despre medicamente din memorie. Furnizați-i lista pacientului din dosar și textul relevant dintr-o sursă autorizată și solicitați-i să le citeze.
  2. Păstrați cele două surse vizibile. „Luați metformină (dosarul dvs., introdus de dvs. pe 3 martie)” și „eticheta FDA avertizează cu privire la acidoza lactică (eticheta setată 011de1a5…)” sunt afirmații diferite cu proprietari diferiți.
  3. Restrângeți domeniile de aplicare. Un agent care are nevoie doar de lista de medicamente ar trebui să obțină acces de citire la MedicationStatement, nu la întregul dosar. Cu Anpheros, acesta este un domeniu de consimțământ sau instrumentele de numai citire ale serverului MCP.
  4. Nu răspundeți la ceea ce necesită un clinician. Interacțiunile, modificările dozei și întreruperea unui medicament se adresează unui farmacist sau medic; agentul poate pregăti întrebarea.

Unde se încadrează Anpheros

Anpheros stochează lista de medicamente: MedicationStatement și MedicationAdministration cu coduri ATC sau alte coduri, cine a înregistrat fiecare element, istoricul și consimțământul pentru alte aplicații; API-ul de context include medicamentele active în rezumatul pe care îl pregătește pentru un model, iar serverul MCP le expune agenților doar în mod citire. Acesta include un mic subset ATC (aproximativ 50 de medicamente comune) pentru a denumi automat codurile; orice alt cod este acceptat, fără un nume automat.

Nu este o bază de date de medicamente: nu oferă etichete, interacțiuni, dozaje sau contraindicații și nu suportă resursele MedicationRequest sau Medication în prezent.

Întrebări frecvente

Ce resursă FHIR ar trebui să folosească o listă de medicamente?

MedicationStatement pentru ceea ce ia sau a luat o persoană, inclusiv medicamentele raportate de pacient. Prescripțiile sunt MedicationRequest; dozele individuale sunt MedicationAdministration.

Există un API gratuit pentru baza de date cu medicamente?

În SUA, RxNorm (NLM) pentru identificatori și nume de medicamente, și openFDA pentru etichetele oficiale ale produselor, sunt gratuite. În Europa, EMA și agențiile naționale publică informații despre produse. Verificarea cuprinzătoare a interacțiunilor necesită, în general, o bază de cunoștințe licențiată.

Cum ar trebui un agent AI să obțină informații despre medicamente?

Din două instrumente: unul care citește lista de medicamente a pacientului din dosarul acestuia cu consimțământ și unul care caută o sursă autorizată de medicamente. Agentul ar trebui să citeze ambele și să lase deciziile clinice unui profesionist.

Verifică Anpheros interacțiunile medicamentoase?

Nu. Stochează ceea ce ia o persoană, cu proveniență și consimțământ. Verificarea interacțiunilor aparține unei surse de cunoștințe despre medicamente și unui clinician.

Conexe

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy