Skip to main content
Glama

Smart EHR MCP Server

by jmandel

Инструменты EHR с MCP и FHIR

Обзор инструментов EHR

https://youtu.be/K0t6MRyIqZU?si=Mz4d65DcAD3i2YbO

Этот проект действует как специализированный сервер, предоставляющий инструменты для больших языковых моделей (LLM) и других агентов ИИ для взаимодействия с электронными медицинскими картами (EHR). Он использует стандарт SMART на FHIR для безопасного доступа к данным и протокол контекста модели (MCP) для предоставления инструментов.

Думайте об этом как о защищенном шлюзе и наборе инструментов, позволяющих ИИ безопасно получать доступ к данным пациентов из различных систем электронных медицинских карт и анализировать их.

Основная идея

Система работает в три основных этапа:

  1. SMART на FHIR Client (реализовано в рамках этого проекта): безопасно подключается к EHR с использованием стандартной среды запуска приложений SMART. Извлекает широкий спектр информации о пациентах, включая как структурированные данные (например, состояния, лекарства, анализы), так и неструктурированные клинические заметки или вложения.
  2. MCP Server (Этот проект): берет извлеченные данные EHR и делает их доступными через набор мощных инструментов, доступных через Model Context Protocol. Эти инструменты позволяют внешним системам (например, моделям ИИ) запрашивать и анализировать данные без необходимости прямого доступа к самой EHR.
  3. Интерфейс AI/LLM (внешний потребитель): агент AI или большая языковая модель подключается к серверу MCP и использует предоставленные инструменты, чтобы «задавать вопросы» о записях пациента, выполнять поиск или запускать индивидуальные анализы.

Доступные инструменты

Сервер MCP предлагает несколько инструментов для взаимодействия с загруженными данными EHR:

  • grep_record : Выполняет поиск текста или регулярных выражений по всем частям извлеченной записи (структурированные данные FHIR + текст из заметок/вложений). Идеально подходит для поиска ключевых слов или конкретных упоминаний (например, «диабет», «аспирин»).
  • query_record : Выполняет запросы SQL SELECT только для чтения непосредственно по структурированным данным 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 или другими клиентами ИИ с интерфейсом командной строки.

  • Двухэтапный процесс:
    1. Извлечение данных в базу данных: Сначала запустите интерфейс командной строки с флагами --create-db и --db . Это запустит временный веб-сервер и использует ту же логику веб-клиента SMART на FHIR, описанную выше, для извлечения данных. Вместо отправки данных через postMessage он сохраняет данные ClientFullEHR в локальном файле базы данных SQLite.
      # Example: Fetch data and save to data/my_record.sqlite bun run src/cli.ts --create-db --db ./data/my_record.sqlite
      Следуйте инструкциям (открыв ссылку в браузере), чтобы подключиться к своей электронной медицинской карте.
    2. Запустите сервер MCP: После создания файла базы данных снова запустите CLI, указав только файл базы данных. Это загрузит данные в память и запустит сервер MCP, прослушивающий команды на стандартном вводе/выводе.
      # Example: Start the MCP server using the saved data bun run src/cli.ts --db ./data/my_record.sqlite
    • Конфигурация ( 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 , так и для файла базы данных.
    { "mcpServers": { "local-ehr": { "name": "Local EHR Search", "command": "bun", // Or the absolute path to bun "args": [ "/home/user/projects/smart-mcp/src/cli.ts", // Absolute path to cli.ts "--db", "/home/user/projects/smart-mcp/data/my_record.sqlite" // Absolute path to DB file ] } } }

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 следует считать экспериментальным .
-
security - not tested
F
license - not found
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Сервер протокола контекста модели, который подключает инструменты ИИ к электронным медицинским картам с помощью SMART на FHIR, обеспечивая безопасный поиск, запрос и анализ данных пациентов из совместимых электронных медицинских карт.

  1. Основная идея
    1. Доступные инструменты
      1. Компоненты и использование
        1. Автономный SMART на веб-клиенте FHIR
        2. Локальный сервер MCP через Stdio ( src/cli.ts )
        3. Полный сервер MCP через SSE ( src/sse.ts / index.ts )

      Related MCP Servers

      • -
        security
        F
        license
        -
        quality
        A 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 -
        2
        Python
      • -
        security
        A
        license
        -
        quality
        A 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 -
        Python
        GPL 3.0
        • Linux
        • Apple
      • -
        security
        A
        license
        -
        quality
        A 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 -
        TypeScript
        MIT License
        • Apple
        • Linux
      • -
        security
        A
        license
        -
        quality
        A 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 -
        Python
        MIT License
        • Apple

      View all related MCP servers

      MCP directory API

      We provide all the information about MCP servers via our MCP API.

      curl -X GET 'https://glama.ai/api/mcp/v1/servers/jmandel/health-record-mcp'

      If you have feedback or need assistance with the MCP directory API, please join our Discord server