项目简介
OMOPSync 是一个基于 Model Context Protocol (MCP) 的应用后端,旨在将大型语言模型 (LLM) 与医疗领域的 OMOP Common Data Model (CDM) 数据集成。它允许 LLM 通过预定义的工具访问、处理和分析 OMOP 数据,从而实现更智能、更便捷的医疗数据应用。
主要功能点
OMOPSync 作为 MCP 服务器,提供以下核心功能:
- 数据库结构准备: 确保OMOP数据所需的数据库模式(schemas)正确创建。
- 数据加载与转换 (ETL): 将原始 Synthea CSV 数据集加载并转换为标准的 OMOP CDM 格式。
- 数据查询: 允许执行任意 SQL 查询,并以 JSON 格式返回结果,方便LLM解析。
- 数据可视化: 根据 SQL 查询结果,生成图表(如线图、柱状图、热力图、散点图),并保存为图片文件。
- 数据质量检查 (DQD): 运行全面的数据质量规则,评估OMOP数据的合规性和准确性。
- 数据特征描述 (Achilles): 执行人群水平的数据分析,生成关于数据内容的标准报告。
- 一键执行: 提供一个工具,按顺序执行所有关键的ETL和分析步骤。
这些功能都通过标准化的 MCP 工具接口暴露给 LLM 客户端。
安装步骤
- 克隆仓库:
git clone https://github.com/aumsathwara/OMOPSync.git cd OMOPSync - 创建并激活Python虚拟环境:
python -m venv .venv # Windows: .venv\Scripts\activate # macOS/Linux: source .venv/bin/activate - 安装依赖:
pip install -r requirements.txt - 设置环境变量:
- 设置您的 Gemini API 密钥:
export GEMINI_API_KEY="YOUR_API_KEY" # 或者在 .env 文件中设置 - 设置 R 的安装路径(如果未在系统路径中):
export R_HOME="/path/to/your/R/installation"
- 设置您的 Gemini API 密钥:
- 安装并配置 PostgreSQL 数据库:
- 确保安装 PostgreSQL 15+ 版本。
- 创建一个名为 'omop' 的数据库。
- 根据 'server.py' 中的配置(默认为用户 'postgres',密码 'user'),确保数据库可访问,或修改配置。
- 准备 Synthea 数据:
- 下载 Synthea 生成的 CSV 数据。
- 将 CSV 文件放在项目的 'data/csv/' 目录下。
- 准备 OHDSI 词汇表:
- 下载 OHDSI 标准化词汇表 CSV 文件。
- 将 CSV 文件放在项目的 'vocabulary_csv/' 目录下。
- 安装 R 及其依赖:
- 确保安装 R 4.3 或更新版本。
- 根据需要安装 Rtools (Windows) 或构建工具 (Linux/Mac) 以便编译 R 包。项目的 ETL 脚本会在首次运行时自动尝试安装所需的 R 包(ETL-Synthea, Achilles, DataQualityDashboard)。
服务器配置
OMOPSync MCP 服务器 ('server.py') 通常作为 MCP 客户端 ('client.py') 的子进程启动。对于任何兼容的 MCP 客户端,连接到此服务器所需的配置信息如下:
- 服务器名称 (server name): OMOPSync
- 启动命令 (command): 用于执行 Python 脚本的可执行文件路径,通常是 'python' 或 'python3'。
- 命令参数 (args): 启动服务器脚本所需的参数列表,对于此项目,参数为 '["server.py"]'。
- 传输协议 (transport): stdio (标准输入/输出)
典型的客户端配置(JSON格式)可能类似于:
{ "name": "OMOPSync Server", "description": "Connects LLM to OMOP data via MCP", "transport": "stdio", "params": { "command": "python", "args": ["path/to/OMOPSync/server.py"], "env": {} // 可选:设置环境变量 } }
请注意,'path/to/OMOPSync/server.py' 应替换为实际的 'server.py' 文件路径。
基本使用方法
- 完成安装和配置步骤。
- 在终端中,确保您已激活Python虚拟环境并位于项目根目录。
- 使用客户端脚本启动服务器并开始交互:
python client.py server.py - 客户端连接成功后,您将看到可用的工具列表。
- 输入自然语言查询,LLM 将解析您的请求并调用相应的 MCP 工具。例如:
- 'Ensure all schemas in database' (调用 'ensure_schemas' 工具)
- 'Run etl process for me' (调用 'run_etl' 工具)
- 'Get me list of all person from cdm54 schema and person table' (LLM可能会将此转换为调用 'query_database' 工具并提供适当的SQL)
- 'Plot admissions by sex bar chart' (LLM可能会将此转换为调用 'plot_query' 工具并提供适当的SQL和参数)
- 输入 'quit' 退出客户端。
信息
分类
数据库与文件