Инструменты EHR с MCP и FHIR
https://youtu.be/K0t6MRyIqZU?si=Mz4d65DcAD3i2YbO
Этот проект действует как специализированный сервер, предоставляющий инструменты для больших языковых моделей (LLM) и других агентов ИИ для взаимодействия с электронными медицинскими картами (EHR). Он использует стандарт SMART на FHIR для безопасного доступа к данным и протокол контекста модели (MCP) для предоставления инструментов.
Думайте об этом как о защищенном шлюзе и наборе инструментов, позволяющих ИИ безопасно получать доступ к данным пациентов из различных систем электронных медицинских карт и анализировать их.
Основная идея
Система работает в три основных этапа:
- SMART на FHIR Client (реализовано в рамках этого проекта): безопасно подключается к EHR с использованием стандартной среды запуска приложений SMART. Извлекает широкий спектр информации о пациентах, включая как структурированные данные (например, состояния, лекарства, анализы), так и неструктурированные клинические заметки или вложения.
- MCP Server (Этот проект): берет извлеченные данные EHR и делает их доступными через набор мощных инструментов, доступных через Model Context Protocol. Эти инструменты позволяют внешним системам (например, моделям ИИ) запрашивать и анализировать данные без необходимости прямого доступа к самой EHR.
- Интерфейс AI/LLM (внешний потребитель): агент AI или большая языковая модель подключается к серверу MCP и использует предоставленные инструменты, чтобы «задавать вопросы» о записях пациента, выполнять поиск или запускать индивидуальные анализы.
Доступные инструменты
Сервер MCP предлагает несколько инструментов для взаимодействия с загруженными данными EHR:
grep_record
: Выполняет поиск текста или регулярных выражений по всем частям извлеченной записи (структурированные данные FHIR + текст из заметок/вложений). Идеально подходит для поиска ключевых слов или конкретных упоминаний (например, «диабет», «аспирин»).query_record
: Выполняет запросы SQLSELECT
только для чтения непосредственно по структурированным данным FHIR. Полезно для точного поиска на основе известных структур ресурсов FHIR (например, поиск определенных лабораторных результатов по коду LOINC).eval_record
: Выполняет пользовательский код JavaScript непосредственно на извлеченных данных (ресурсы FHIR + вложения). Обеспечивает максимальную гибкость для сложных вычислений, объединения данных из нескольких источников или пользовательского форматирования.
Такая настройка позволяет инструментам ИИ использовать комплексные данные электронных медицинских карт через стандартизированный и безопасный интерфейс.
(Подробности настройки и использования для разработчиков можно найти в кодовой базе и документации по конкретному модулю.)
Компоненты и использование
Этот проект предлагает различные способы извлечения данных EHR и их предоставления с помощью инструментов MCP:
1. Автономный SMART на веб-клиенте FHIR
Этот проект включает в себя автономное веб-приложение, которое позволяет пользователям подключаться к своим электронным медицинским картам через SMART на FHIR и извлекать свои данные.
- Размещенная версия: Вы можете использовать публично размещенную версию по адресу:
https://mcp.fhir.me/ehr-connect#deliver-to-opener:$origin
(Замените$origin
фактическим источником окна, открывающего эту ссылку). - Фильтрация брендов (
?brandTags
): Вы можете отфильтровать список поставщиков EHR, отображаемых на странице подключения, добавив параметр запросаbrandTags
к URL-адресу. Укажите список тегов, разделенных запятыми. Будут отображаться только бренды, соответствующие всем предоставленным тегам (из их конфигурации вbrandFiles
). Он поддерживает как логику OR (разделенные запятыми), так и логику AND (разделенные символом вставки^
), причем AND имеет приоритет.?brandTags=epic,sandbox
: Показывает бренды с тегамиepic
ИЛИsandbox
.?brandTags=epic^dev
: Показывает бренды, отмеченные какepic
так иdev
.?brandTags=epic^dev,sandbox^prod
: Показывает бренды, отмеченные тегами (epic
Иdev
) ИЛИ (sandbox
Иprod
).- Если параметр пропущен, по умолчанию отображаются бренды с тегом
prod
. - Пример:
.../ehr-connect?brandTags=hospital^us
: Показывает бренды, отмеченные тегамиhospital
иus
.
- Как это работает: при открытии эта страница предлагает пользователю выбрать своего поставщика EHR. Затем она инициирует стандартный поток запуска приложения SMART, перенаправляя пользователя на страницу входа в EHR. После успешной аутентификации и авторизации клиент извлекает полный набор ресурсов FHIR (пациент, состояния, наблюдения, лекарства, документы и т. д.) и пытается извлечь открытый текст из любых связанных вложений (например, PDF, RTF, HTML, найденных в
DocumentReference
). - Вывод данных (
ClientFullEHR
): После завершения выборки клиент собирает все данные в объектClientFullEHR
JSON. Этот объект содержит:fhir
: словарь, в котором ключами являются типы ресурсов FHIR (например, «Пациент»), а значениями — массивы соответствующих ресурсов FHIR.attachments
: массив обработанных объектов вложений, каждый из которых включает метаданные (исходный ресурс, путь, тип контента) и сам контент (contentBase64
для необработанных данных,contentPlaintext
для извлеченного текста).
- Доставка данных: если открыть с помощью хеша
#deliver-to-opener:$origin
, клиент запросит у пользователя подтверждение, а затем отправит объектClientFullEHR
обратно в открывшее его окно с помощьюwindow.opener.postMessage(data, targetOrigin)
.
2. Локальный сервер MCP через Stdio ( src/cli.ts
)
Этот режим идеально подходит для локального запуска сервера MCP, часто используется с такими инструментами, как Cursor или другими клиентами ИИ с интерфейсом командной строки.
- Двухэтапный процесс:
- Извлечение данных в базу данных: Сначала запустите интерфейс командной строки с флагами
--create-db
и--db
. Это запустит временный веб-сервер и использует ту же логику веб-клиента SMART на FHIR, описанную выше, для извлечения данных. Вместо отправки данных черезpostMessage
он сохраняет данныеClientFullEHR
в локальном файле базы данных SQLite.Следуйте инструкциям (открыв ссылку в браузере), чтобы подключиться к своей электронной медицинской карте. - Запустите сервер MCP: После создания файла базы данных снова запустите CLI, указав только файл базы данных. Это загрузит данные в память и запустит сервер MCP, прослушивающий команды на стандартном вводе/выводе.
- Конфигурация (
config.*.json
): этот процесс опирается на файл конфигурации (например,config.epicsandbox.json
), который определяет доступные бренды/конечные точки EHR в массивеbrandFiles
. Каждая запись в этом массиве указывает данные бренда, включая:url
: Путь/URL к файлу определения бренда (например,static/brands/epic-sandbox.json
).tags
: массив строк (например,["epic", "sandbox"]
), используемый для категоризации или фильтрации.vendorConfig
: Содержит сведения о клиенте SMART на FHIR (clientId
,scopes
).
- Извлечение данных в базу данных: Сначала запустите интерфейс командной строки с флагами
- Конфигурация клиента (например, курсор): Настройте клиент MCP для выполнения этой команды. Важно использовать абсолютные пути как для
src/cli.ts
, так и для файла базы данных.
3. Полный сервер MCP через SSE ( src/sse.ts
/ index.ts
)
Этот режим запускает постоянный сервер, подходящий для сценариев, где несколько клиентов могут подключаться по сети. Он использует Server-Sent Events (SSE) для канала связи MCP.
- Аутентификация: Аутентификация клиента основана на OAuth 2.1, как указано в Model Context Protocol. Сервер предоставляет стандартные конечные точки (
/authorize
,/token
,/register
и т. д.). - Извлечение данных: когда клиент инициирует соединение OAuth, сервер сам обрабатывает поток SMART на FHIR, извлекает данные
ClientFullEHR
во время процесса авторизации и сохраняет их в памяти (или в постоянном сеансе) на время подключения клиента. - Статус: Несмотря на свою функциональность, спецификация MCP для клиентского взаимодействия OAuth 2.1 все еще развивается. Поддержка этого метода аутентификации клиентами в настоящее время крайне ограничена , что затрудняет тестирование этого режима со стандартными клиентами за пределами специализированных инструментов разработчика или отладки. Этот режим SSE следует считать экспериментальным .
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Сервер протокола контекста модели, который подключает инструменты ИИ к электронным медицинским картам с помощью SMART на FHIR, обеспечивая безопасный поиск, запрос и анализ данных пациентов из совместимых электронных медицинских карт.
Related MCP Servers
- -securityFlicense-qualityA Model Context Protocol server for tracking personal health and well-being, offering tools for workout logging, nutrition management, and daily journaling with AI-assisted analysis integration.Last updated -2Python
- -securityAlicense-qualityA Model Context Protocol server that provides health data from the Senechal API to LLM applications, enabling AI assistants to access, analyze, and respond to personal health information.Last updated -PythonGPL 3.0
- -securityAlicense-qualityA Model Context Protocol server that provides seamless interaction with Workato's API through custom AI tools, enabling management of recipes, connections, connectors, folders, and activity logs.Last updated -TypeScriptMIT License
- -securityAlicense-qualityA specialized Model Context Protocol server that enhances AI-assisted medical learning by connecting Claude Desktop to PubMed, NCBI Bookshelf, and user documents for searching, retrieving, and analyzing medical education content.Last updated -PythonMIT License