AnpherosAnpheros PlatformDevelopers

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

Дані про ліки для додатків та ШІ-агентів

Списки ліків пацієнтів проти знань про ліки: ресурси FHIR, RxNorm, ATC, джерела openFDA та EMA, а також перевірене об'єднання запису FHIR з мітками RxNorm та FDA.

Медичне програмне забезпечення потребує двох різних видів даних про медикаменти: список медикаментів пацієнта — що ця людина приймає, з якого часу, в якій дозі, хто це записав — і знання про ліки — що містить продукт, його офіційна етикетка, попередження та взаємодії. Перше належить до запису пацієнта; друге надходить з авторитетних баз даних ліків. Їх змішування призводить до того, що ШІ-агенти надають факти про ліки з пам'яті моделі. Ця сторінка пояснює обидва, ресурси FHIR R4 та задіяні кодові системи, які загальнодоступні джерела існують у США та ЄС, а також робочий приклад, який об'єднує список пацієнта з запису FHIR з RxNorm та етикеткою FDA.

Два типи даних про лікарські засоби

Список ліків пацієнта Знання про препарат
Відповіді Що приймає Ана, відколи, як часто? Що таке метформін 500 мг, про що попереджає його етикетка?
Зміни Коли пацієнт або клініцист оновлює його Коли регулятор або видавець оновлює його
Зберігається в Запис пацієнта (EHR, PHR, FHIR-сервер) Бази даних препаратів та термінології
FHIR MedicationStatement, MedicationRequest, MedicationAdministration, Medication Переважно поза записом; інформація про продукт може бути сама по собі FHIR
Хто може читати Тільки за згодою пацієнта Публічно або за ліцензією

Додаток або агент, який відповідає на запитання "чи можу я приймати ібупрофен разом із моїми ліками від тиску?", потребує обох: списку пацієнта, щоб знати, які ліки, і джерела знань про препарати, щоб знати, що відомо про комбінацію — плюс клініциста або фармацевта для відповіді.

Ресурси FHIR для списку медикаментів

Ліки кодуються: у США за допомогою RxNorm (від Національної медичної бібліотеки США) та кодів продуктів NDC; на міжнародному рівні за класифікацією ATC ВООЗ; у Європі також за національними кодами продуктів і, все частіше, за електронною інформацією про продукт EMA на основі FHIR. Заява може містити кілька кодувань для одних і тих самих ліків.

Джерела інформації про лікарські засоби

Сполучені Штати

Європейський Союз

Взаємодії — найскладніша частина. NLM припинило роботу свого API взаємодії ліків приблизно в січні 2024 року, і комплексний перевірка взаємодії сьогодні покладається на ліцензовані бази клінічних знань. Розділ взаємодії етикетки — це текст, написаний для клініцистів, а не для перевірки.

Об'єднання запису з інформацією про ліки

Приклад зчитує активні медикаменти пацієнта з Anpheros, співставляє кожну назву з концепцією RxNorm та отримує етикетку FDA. Він був запущений проти локального екземпляра платформи та живих API RxNorm і 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 }));
}

Результат для пацієнта, який повідомив про метформін та еналаприл:

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

Що ми дізналися під час запуску. З назвою, написаною як "Enalapril 10 mg tablet", приблизний збіг RxNorm повернув RXCUI 328290, концепцію, яку RxNorm більше не описує, без відповідної етикетки. З повним клінічним ім'ям, "enalapril maleate 10 mg oral tablet", він повернув 858817, поточний клінічний препарат з етикеткою. Назви, введені людьми, є приблизними; перевіряйте, до чого призводить збіг, зберігайте код після його підтвердження та показуйте людині, що було співставлено.

Правила для ШІ-агентів

  1. Ніколи не дозволяйте моделі надавати факти про ліки з пам'яті. Надайте їй список пацієнта з запису та відповідний текст з авторитетного джерела, і попросіть процитувати їх.
  2. Тримайте два джерела видимими. "Ви приймаєте метформін (ваш запис, внесений вами 3 березня)" та "інструкція FDA попереджає про лактоацидоз (інструкція ⟦011de1a5…⟧)" є різними твердженнями з різними власниками.
  3. Звужуйте області. Агент, якому потрібен лише список ліків, повинен мати доступ для читання до MedicationStatement, а не до всього запису. З Anpheros це є область згоди або інструменти MCP сервера тільки для читання.
  4. Не відповідайте на те, що потребує клініциста. Взаємодії, зміни дозування та припинення прийому ліків передаються фармацевту або лікарю; агент може підготувати запитання.

Де Anpheros вписується

Anpheros зберігає список медикаментів: MedicationStatement та MedicationAdministration з кодами ATC або іншими кодами, хто записав кожен елемент, історію та згоду для інших додатків; API контексту включає активні медикаменти у зведенні, яке він готує для моделі, а MCP сервер надає до них доступ агентам у режимі читання. Він містить невеликий підмножину ATC (близько 50 поширених ліків) для автоматичного найменування кодів; будь-який інший код приймається без автоматичного найменування.

Це не база даних ліків: вона не надає етикеток, взаємодій, дозування або протипоказань, і наразі не підтримує ресурси MedicationRequest або Medication.

Часті запитання

Який ресурс FHIR слід використовувати для списку ліків?

MedicationStatement для того, що людина приймає або приймала, включаючи ліки, повідомлені пацієнтом. Рецепти — це MedicationRequest; окремі дози — це MedicationAdministration.

Чи існує безкоштовний API бази даних ліків?

У США RxNorm (NLM) для ідентифікаторів та назв ліків, а також openFDA для офіційних етикеток продуктів є безкоштовними. У Європі EMA та національні агентства публікують інформацію про продукти. Комплексна перевірка взаємодій зазвичай потребує ліцензованої бази знань.

Як агент зі штучним інтелектом має отримувати інформацію про ліки?

За допомогою двох інструментів: один, який зчитує список ліків пацієнта з його запису за згодою, і один, який шукає авторитетне джерело ліків. Агент повинен цитувати обидва та залишати клінічні рішення професіоналу.

Чи перевіряє Anpheros взаємодії ліків?

Ні. Він зберігає те, що людина приймає, з походженням та згодою. Перевірка взаємодій належить до джерела знань про ліки та клініциста.

Пов'язане

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