PubMed 데이터베이스
이 스킬은 일반 웹 검색이 아닌 PubMed의 생물의학 문헌이 필요할 때 사용하세요.
사용 시기
- MEDLINE이나 생명과학 문헌 검색
- MeSH 용어, 필드 태그, 날짜, 논문 유형을 사용한 PubMed 질의 구성
- PMID, 초록, 출판 메타데이터, 관련 인용 정보 조회
- 반복 가능한 검색 문자열이 필요한 체계적 리뷰 검색 패스 실행
- Python, 셸, 또는 다른 HTTP 클라이언트에서 직접 NCBI E-utilities 사용
질의 구성
연구 질문으로 시작하여 개념으로 분할한 후 Boolean 연산자로 결합하세요.
개념_1 AND 개념_2 AND 필터
동의어_a OR 동의어_b
NOT 제외_용어
유용한 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를 제목/초록 용어와 결합하세요.
올바른 하위 주제 구문은 하위 주제를 필드 태그 앞에 배치합니다:
diabetes mellitus, type 2/drug therapy[mh]
cardiovascular diseases/prevention & control[mh]
주제가 논문의 중심이어야 하는 경우에만 [majr]을 사용하세요. 정밀도를 높일 수 있지만 관련 연구를 놓칠 수 있습니다.
필터
출판 유형:
clinical trial[pt]meta-analysis[pt]randomized controlled trial[pt]review[pt]systematic review[pt]guideline[pt]
날짜 필터:
2026[dp]
2020:2026[dp]
2026/03/15[dp]
가용성 필터:
free full text[sb]
hasabstract[text]
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)
배치 작업의 경우, URL을 통해 매우 긴 PMID 목록을 전달하는 대신 NCBI 히스토리 서버 매개변수(usehistory=y, WebEnv, query_key)를 선호하세요.
출력 규율
각 검색 패스에 대해 다음을 기록하세요:
- 정확한 검색 문자열
- 검색한 데이터베이스
- 검색 날짜
- 사용된 필터
- 결과 수
- 내보내기 형식
- 수동 제외 사항
예시:
| 데이터베이스 | 검색 날짜 | 질의 | 필터 | 결과 |
| --- | --- | --- | --- | ---: |
| PubMed | 2026-05-11 | `sickle cell disease[mh] AND CRISPR[tiab]` | 2020:2026[dp], English | 42 |
검토 체크리스트
- 필드 태그가 유효한 PubMed 태그인가?
- 최신 주제에 대해 MeSH 용어가 자유 텍스트 동의어와 함께 사용되었는가?
- 날짜 범위가 명시적이고 적절한가?
- 검색 로그에 질의를 재현할 수 있을 만큼 충분한 세부 정보가 포함되어 있는가?
- API 키가 환경에서 로드되었는가?
- HTTP 코드가 파싱 전에
raise_for_status()를 호출하거나 200이 아닌 응답을 처리하는가? - 속도 제한이 준수되었는가?