PubMed 数据库¶
对于需要从 PubMed 获取生物医学文献而非一般网络搜索的任务,请使用此技能。
使用时机¶
- 检索 MEDLINE 或生命科学文献。
- 使用 MeSH 术语、字段标签、日期或文献类型构建 PubMed 查询。
- 检索 PMID、摘要、出版元数据或相关引用。
- 执行需要可复现检索字符串的系统评价检索路径。
- 从 Python、Shell 或其他 HTTP 客户端直接使用 NCBI E-utilities。
构建查询¶
从研究问题开始,将其拆分为概念,并使用布尔运算符组合这些概念。
有用的 PubMed 字段标签:
[ti]: 标题[ab]: 摘要[tiab]: 标题或摘要[au]: 作者[ta]: 期刊标题缩写[mh]: MeSH 术语[majr]: 主要 MeSH 主题[pt]: 出版类型[dp]: 出版日期[la]: 语言
示例:
diabetes mellitus[mh] AND treatment[tiab] AND systematic review[pt] AND 2023:2026[dp]
(metformin[nm] OR insulin[nm]) AND diabetes mellitus, type 2[mh] AND randomized controlled trial[pt]
smith ja[au] AND cancer[tiab] AND 2026[dp] AND english[la]
MeSH 与副标题¶
当概念具有稳定的受控词汇术语时,优先使用 MeSH。如果主题较新或术语多样,请结合 MeSH 与标题/摘要术语。
在正确的副标题语法中,将副标题放在字段标签之前:
[majr] 仅应在该主题必须是论文中心主题时使用。它可以提高精确度,但可能会遗漏相关研究。
过滤器¶
出版类型:
clinical trial[pt]meta-analysis[pt]randomized controlled trial[pt]review[pt]systematic review[pt]guideline[pt]
日期过滤器:
可用性过滤器:
E-utilities 工作流¶
NCBI E-utilities 支持可复现的 API 工作流:
esearch.fcgi: 检索并返回 PMID。esummary.fcgi: 返回轻量级文章元数据。efetch.fcgi: 以 XML、MEDLINE 或文本格式获取摘要或完整记录。elink.fcgi: 检索相关文章和链接资源。
在生产脚本中使用电子邮件地址和 API 密钥。请将 API 密钥保存在环境变量中,切勿将其写入已提交的文件或命令历史。
import os
import time
import requests
BASE = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils"
def esearch(query: str, retmax: int = 20) -> list[str]:
params = {
"db": "pubmed",
"term": query,
"retmode": "json",
"retmax": retmax,
"tool": "ecc-pubmed-search",
"email": os.environ.get("NCBI_EMAIL", ""),
}
api_key = os.environ.get("NCBI_API_KEY")
if api_key:
params["api_key"] = api_key
response = requests.get(f"{BASE}/esearch.fcgi", params=params, timeout=30)
response.raise_for_status()
time.sleep(0.35)
return response.json()["esearchresult"]["idlist"]
pmids = esearch("hypertension[mh] AND randomized controlled trial[pt] AND 2024:2026[dp]")
print(pmids)
对于批量处理,请优先使用 NCBI 历史服务器参数(usehistory=y、WebEnv、query_key),而不是在 URL 中传递非常长的 PMID 列表。
记录输出¶
为每个检索路径记录以下内容:
- 精确的检索字符串
- 检索的数据库
- 检索日期
- 使用的过滤器
- 结果数量
- 导出格式
- 手动排除
示例:
| データベース | 検索日 | クエリ | フィルター | 結果 |
| --- | --- | --- | --- | ---: |
| PubMed | 2026-05-11 | `sickle cell disease[mh] AND CRISPR[tiab]` | 2020:2026[dp], English | 42 |
审查检查清单¶
- 字段标签是否为有效的 PubMed 标签?
- 对于新主题,MeSH 术语是否与自由文本同义词配对?
- 日期范围是否明确且适当?
- 检索日志是否包含足以复现查询的详细信息?
- API 密钥是否从环境中读取?
- 是否在解析前调用
raise_for_status()检查 HTTP 状态码,或处理非 200 响应? - 是否遵守速率限制?
参考文献¶
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC