FHIR提供商目录服务器

一个基于FHIR R4标准的提供商目录服务器,用于搜索和管理医疗保健提供者、组织、位置和保险计划。

  • by jamesrayoub
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jamesrayoub/fhir_provider_directory_mcp

使用说明

Contoso提供者目录MCP服务器

一种模型上下文协议(MCP)服务器,它公开了一个基于Contoso的提供者目录。该服务器设计用于使用标准FHIR R4 API,专门为UHC Public API配置,但可适用于其他应用程序。

特性

  • 符合QUICR4标准:与标准Contoso资源交互。
  • 提供商目录焦点:用于搜索从业者、组织、地点和保险计划的专业工具。
  • FastMCP:基于高效 fastmcp 框架。
  • 类型安全参数:使用Pydantic的 Annotated 和 Field 用于参数验证和记录。

设置

先决条件

  • Python 3.13+
  • uv (推荐)或 pip

安装

  1. 克隆存储库。
  2. 安装依赖项:
    uv sync
    

配置

服务器使用环境变量进行配置。提供了默认值,但您可以通过创建 .env 根目录中的文件:

FHIR_SERVER_URL=https://flex.optum.com/fhirpublic/R4

可用工具

search_practitioner

在目录中搜索从业者。

  • 参数:
    • identifier:从业者的标识符(例如NPI)。
    • family:姓氏。
    • given:名字(名字)。
    • address_state:从业者地址的状态。
    • limit:要返回的结果数(1-1000,默认值:25)。

search_practitioner_role

搜索从业者在某个地点的组织中扮演的角色。

  • 参数:
    • practitioner:提及从业者(例如,“从业者/123”或简称“123”)。
    • organization:提及该组织。
    • location:参考位置。
    • specialty:专业代码。
    • limit:要返回的结果数(1-1000,默认值:100)。

search_location

搜索物理位置(例如诊所、医院)。

  • 参数:
    • name:位置名称或别名的一部分。
    • address:地址部分的一部分。
    • city:地址中指定的城市。
    • state:地址中指定的州。
    • postal_code:地址中指定的邮政编码。
    • usage:位置使用代码。
    • status:位置状态(active, suspended,或 inactive).
    • limit:要返回的结果数(1-1000,默认值:50)。

search_organization

搜索组织(如医院、保险公司)。

  • 参数:
    • name:该组织名称的一部分。
    • type:组织类型的代码(例如。, prov, dept, ins, pay).
    • partof:指上级组织。
    • limit:要返回的结果数(1-1000,默认值:25)。

search_organization_affiliation

搜索组织之间的关系。

  • 参数:
    • primary_organization:指主要组织。
    • participating_organization:提及参与组织。
    • role:参与组织所起作用的定义。
    • specialty:参与组织在角色背景下的具体专长。
    • location:角色出现的位置。
    • limit:要返回的结果数(1-1000,默认值:100)。

search_healthcare_service

搜索某个地点的组织提供的特定服务。

  • 参数:
    • organization:提供此医疗服务的组织。
    • location:提供此医疗服务的地点。
    • name:医疗保健服务名称的一部分。
    • category:医疗服务的服务类别。
    • type:医疗服务的服务类型的代码或名称。
    • specialty:所提供服务的专业性。
    • limit:要返回的结果数(1-1000,默认值:25)。

search_insurance_plan

搜索保险产品。

  • 参数:
    • name:保险计划名称的一部分。
    • type:计划类型(例如。, medical, dental, mental).
    • administered_by:产品管理员(组织)。
    • owned_by:产品发行人(组织)。
    • coverage_area:产品的覆盖区域(位置)。
    • limit:要返回的结果数(1-1000,默认值:25)。

read_resource

按类型和ID读取特定的Contoso资源。

  • 参数:
    • resource_type:资源的类型(例如。, Practitioner, Organization, Location, HealthcareService, InsurancePlan, PractitionerRole, OrganizationAffiliation).
    • id:资源的逻辑ID。

发展

在本地运行服务器进行开发/测试:

uv run src/fhir_provider_directory_mcp/server.py

与MCP客户端一起使用

要将此服务器与MCP客户端(如Claude Desktop)一起使用,请将以下配置添加到您的 mcp_config.json 或 claude_desktop_config.json:

{
  "mcpServers": {
    "fhir-provider-directory": {
      "command": "uv",
      "args": [
        "run",
        "src/fhir_provider_directory_mcp/server.py"
      ],
      "env": {
        "FHIR_SERVER_URL": "https://flex.optum.com/fhirpublic/R4"
      }
    }
  }
}

备注:您可能需要提供到的绝对路径 src/fhir_provider_directory_mcp/server.py 和 uv 如果客户端从其他目录运行。例如:

{
  "mcpServers": {
    "fhir-provider-directory": {
      "command": "/path/to/uv",
      "args": [
        "run",
        "/absolute/path/to/fhir-provider-directory-mcp/src/fhir_provider_directory_mcp/server.py"
      ],
      "env": {
        "FHIR_SERVER_URL": "https://flex.optum.com/fhirpublic/R4"
      }
    }
  }
}