用途
ClinicalTrials.gov 是由美国国家医学图书馆维护的全球临床试验研究注册库。本技能用于通过 ClinicalTrials.gov API v2 访问该数据库,检索试验、获取详细研究信息、按多种条件筛选并导出数据以供分析。
适用场景包括:
- 患者匹配:为特定疾病或患者群体查找正在招募的试验
- 研究分析:分析临床试验趋势、结果或研究设计
- 药物/干预措施研究:识别测试特定药物或干预措施的试验
- 地理检索:定位特定地点或区域的试验
- 申办方/机构追踪:查找特定机构开展的试验
- 数据导出:提取临床试验数据用于进一步分析或报告
- 试验监测:跟踪特定试验的状态更新或结果
- 入组资格筛查:审查试验的纳入/排除标准
主要能力
- 按疾病/状况检索:使用 query.cond 参数查找研究特定医学状况或疾病的试验。
- 按干预措施/药物检索:使用 query.intr 参数查找测试特定干预措施、药物、器械或操作的试验。
- 地理检索:使用 query.locn 参数查找特定地点的试验。
- 按申办方/机构检索:使用 query.spons 参数查找特定组织开展的试验。
- 按研究状态筛选:使用 filter.overallStatus 参数按招募或完成状态筛选。有效状态值包括 RECRUITING(正在招募)、NOT_YET_RECRUITING(尚未开始招募)、ENROLLING_BY_INVITATION(仅限邀请入组)、ACTIVE_NOT_RECRUITING(活跃但不再招募)、SUSPENDED(暂停)、TERMINATED(提前终止)、COMPLETED(已完成)、WITHDRAWN(入组前撤回)。
- 获取详细研究信息:通过 NCT ID 获取试验的完整信息,包括入组资格标准、结局指标、联系方式和地点。
- 分页与批量数据获取:使用分页高效处理大量结果集。
- 数据导出为 CSV:将试验数据导出为 CSV 格式,便于在电子表格或数据分析工具中处理。
- 提取与汇总研究信息:提取关键信息用于快速概览或报告。
- 组合查询策略:组合多个筛选条件进行定向检索。
使用方式
基础检索可通过辅助脚本执行:
cd scientific-databases/clinicaltrials-database/scripts
python3 query_clinicaltrials.py
也可直接使用 Python 的 requests 库调用 API:
import requests
url = "https://clinicaltrials.gov/api/v2/studies"
params = {
"query.cond": "breast cancer",
"filter.overallStatus": "RECRUITING",
"pageSize": 10
}
response = requests.get(url, params=params)
data = response.json()
print(f"Found {data['totalCount']} trials")
通过 NCT ID 获取特定试验详情:
import requests
nct_id = "NCT04852770"
url = f"https://clinicaltrials.gov/api/v2/studies/{nct_id}"
response = requests.get(url)
study = response.json()
title = study['protocolSection']['identificationModule']['briefTitle']
status = study['protocolSection']['statusModule']['overallStatus']
脚本提供的主要辅助函数包括:
- search_studies():使用多种筛选条件检索试验
- get_study_details():获取特定试验的完整信息
- search_with_all_results():自动分页获取全部结果
- extract_study_summary():提取关键信息用于快速概览
技术规格
- 基础 URL:https://clinicaltrials.gov/api/v2
- 认证:无需认证(公开 API)
- 速率限制:约每分钟 50 次请求(按 IP)
- 响应格式:JSON(默认)、CSV
- 最大分页大小:每次请求 1000 项研究
- 日期格式:ISO 8601
- 文本格式:富文本字段使用 CommonMark Markdown
- API 版本:2.0(2024 年 3 月发布)
- API 规范:OpenAPI 3.0
限制与注意事项
- API 速率限制约为每分钟 50 次请求。批量获取数据时建议使用最大分页大小(1000)以减少请求次数,在遇到速率限制错误(429 状态)时实施指数退避,并在大规模数据收集时在请求之间添加延迟。
- 并非所有试验都有完整信息,访问字段时应检查字段是否存在(例如使用 .get() 进行安全导航)。
- CSV 格式返回字符串而非 JSON 字典。
- 应始终为网络请求实现适当的错误处理。
- 关于完整技术细节,可参阅 references/api_reference.md。