Для разработчиков

Данные о лекарствах для ИИ-агентов: как кодировать лекарства с помощью ATC и хранить их в FHIR, чтобы модель могла их использовать

Как разработчикам выбрать базу данных лекарств для ИИ-агента: что дают коды ATC, что охватывает пакетный набор терминологии и чего он не охватывает (нет взаимодействий), как структурированы MedicationStatement и MedicationAdministration, и как агент читает и предлагает лекарства через платформу Anpheros.

автор Опубликовано 4 мин чтения

ИИ-агент, который читает «Нолвадекс 20 мг утром», должен знать, что это тамоксифен, антиэстроген, ATC L02BA01, и что это ежедневная пероральная доза, а не однократная. Откуда берется это знание и как хранится лекарство, чтобы следующая система читала его одинаково, — вот настоящий вопрос, стоящий за «какую базу данных лекарств мне использовать». Это руководство отвечает на него для платформы Anpheros и честно говорит о том, что платформа предоставляет, а что нет.

Техническая версия для разработчиков: Данные о лекарствах для ИИ-агентов · Системы кодов FHIR на developers.anpheros.com с запросами, ответами и ограничениями. Эта страница — версия для обычного языка.

Сначала коды: ATC

Анатомо-терапевтическо-химическая классификация ВОЗ присваивает каждому активному веществу код, организованный по тому, на что оно действует и что оно делает: C09AA02 — это эналаприл (C — сердечно-сосудистая система, C09 — ренин-ангиотензиновая система, C09AA — ингибиторы АПФ). ATC бесплатен, интернационален и стабилен, поэтому Anpheros кодирует им каждое лекарство. Название продукта остается в code.text, поэтому человек по-прежнему видит «Nolvadex», а агент видит L02BA01.

Чего ATC не дает: лекарственные формы, размеры упаковки, национальные идентификаторы продуктов, цены или взаимодействия. Это зависит от страны и часто лицензируется. Агенту, которому они нужны, нужен второй источник.

Что предоставляет платформа

  • Собранный поднабор ATC для поиска, достаточный для лекарств, которые люди в Европе реально принимают, с отображаемыми именами, доступный для поиска по адресу GET /v1/terminology/atc?q= и по коду по адресу GET /v1/terminology/atc/{code}. Тот же поднабор лежит в основе инструмента MCP lookup_code. Код вне поднабора все еще может быть использован в ресурсе; поиск просто не имеет для него отображения.
  • Собранный поднабор LOINC для измерений и лабораторных результатов, с теми же конечными точками под /v1/terminology/loinc.
  • Ресурсы FHIR правильной формы: MedicationStatement для плана лечения (что человек принимает, с какого времени, как часто), MedicationAdministration для каждой принятой дозы, связанной с этим заявлением, Immunization с кодами вакцин ATC J07 и AllergyIntolerance с ATC для лекарственных аллергий.

Что платформа не предоставляет: полную базу данных лекарств, проверку взаимодействий, проверку диапазона доз или поддержку принятия клинических решений. Это намеренно вынесено за пределы, потому что это сделало бы платформу медицинским устройством. Если вашему агенту они нужны, используйте лицензированную службу и оставьте платформу в качестве записи.

Как агент читает лекарства

API контекста возвращает активные лекарства с их кодом ATC, текстом, дозировкой и происхождением (кто ввел: пациент, врач, импорт) в пределах бюджетного лимита токенов, поэтому модель видит чистый список, а не кучу ресурсов. Через MCP то же самое — get_patient_context, а search_fhir с MedicationStatement?patient=…&status=active дает необработанные ресурсы.

curl "$BASE/v1/patients/$PID/medications?status=active" -H "Authorization: Bearer $TOKEN"

Как агент записывает лекарства

Он не записывает, он предлагает. MedicationStatement, отправленный приложением, зарегистрированным как ИИ-агент, с согласия человека, проверяется и хранится как предложение. Человек видит «Помощник X хочет добавить тамоксифен 20 мг ежедневно», принимает или отклоняет, и только принятое предложение попадает в запись, помеченное как написанное ИИ. Агент должен отправлять код ATC, когда он уверен, и всегда название продукта в code.text; текстовое описание, читаемое человеком, без кода, все еще принимается и может быть закодировано позже.

Перед отправкой validate_fhir_resource (или POST /fhir/R4/MedicationStatement/$validate) сообщает агенту, является ли ресурс правильно сформированным, поэтому человеку никогда не придется утверждать что-то некорректное.

Выбор второго источника, если он вам нужен

Если агент должен ответить на вопрос «взаимодействует ли это с тем», выберите источник по стране (данные о взаимодействиях и идентификаторы продуктов различаются) и по лицензии (большинство коммерческие). Сохраните результат как свою собственную аннотацию, а не как ресурс в записи человека, если только врач не подтвердит его. Запись должна содержать то, что было принято; слой советов — ваш.

Частые вопросы

Есть ли у Anpheros полная база данных лекарств?

Нет. У нее есть собранный поднабор ATC для кодирования и поиска, и она хранит лекарства как ресурсы FHIR с кодами ATC. Взаимодействия, проверки доз и национальные каталоги продуктов не включены.

Почему ATC, а не RxNorm или национальный список?

ATC является международным и бесплатным, что важно для записи, которая следует за человеком через границы. RxNorm ориентирован на США; национальные списки останавливаются на границе. Приложение может добавить второе кодирование (например, национальный код продукта) рядом с кодом ATC в том же ресурсе.

Может ли агент добавить лекарство в запись человека?

Только в виде предложения, которое человек утверждает. Ничто, отправленное ИИ-агентом, не применяется без этого одобрения.

Как агент узнает, кто ввел лекарство?

Каждый элемент в API контекста несет author_type и источник, а каждый ресурс имеет Provenance. Лекарство, введенное врачом, и лекарство, введенное пациентом, выглядят по-разному для модели, в этом и суть.

Есть ли бесплатный способ попробовать это?

Да: песочница бесплатна, и ее 30 синтетических пациентов имеют реалистичные лекарства с кодами ATC. См. Бесплатный FHIR-сервер: песочница.

Это руководство носит информационный характер и не заменяет консультацию врача. Решения о своём здоровье принимайте вместе с врачом. В экстренной ситуации звоните 112.
Об авторе
Adrian Kereky

Основатель Anpheros. Инженер-электронщик, шесть лет работал в области автономного вождения, в автомобильных проектах в партнёрстве с Samsung и NVIDIA, над архитектурой систем помощи водителю и систем ИИ, работающих на чипах NVIDIA с CUDA. Затем создал Anpheros: медицинскую карту под контролем пациента и платформу HL7 FHIR R4, на которой она работает.

Подробнее об Anpheros и авторе →

Держите медицинскую карту при себе

Anpheros Daily хранит симптомы, анализы, лекарства и документы в одном месте, в стандартном формате и под вашим контролем. Тариф Basic бесплатный.

Скачать Anpheros Daily