Was macht PubMed-Datenbank?
Verwenden Sie diesen Skill, wenn eine Aufgabe biomedizinische Literatur aus PubMed benötigt anstatt einer allgemeinen Websuche.
Wann zu verwenden
- Durchsuchen von MEDLINE oder lebenswissenschaftlicher Literatur.
- Erstellen von PubMed-Abfragen mit MeSH-Begriffen, Feld-Tags, Daten oder Artikeltypen.
- Suche nach PMIDs, Abstracts, Publikationsmetadaten oder verwandten Zitaten.
- Durchführen von systematischen Review-Suchdurchläufen, die wiederholbare Suchstrings benötigen.
- Direkte Nutzung der NCBI E-utilities aus Python, Shell oder einem anderen HTTP-Client.
Abfragekonstruktion
Beginnen Sie mit der Forschungsfrage, zerlegen Sie sie in Konzepte und kombinieren Sie diese mit Booleschen Operatoren.
konzept_1 AND konzept_2 AND filter
synonym_a OR synonym_b
NOT ausschlussbegriff
Nützliche PubMed-Feld-Tags:
[ti]: Titel[ab]: Abstract[tiab]: Titel oder Abstract[au]: Autor[ta]: Zeitschriftentitel-Abkürzung[mh]: MeSH-Begriff[majr]: Haupt-MeSH-Thema[pt]: Publikationstyp[dp]: Veröffentlichungsdatum[la]: Sprache
Beispiele:
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 und Unterbegriffe
Bevorzugen Sie MeSH, wenn das Konzept einen stabilen kontrollierten Vokabularbegriff hat. Kombinieren Sie MeSH mit Titel-/Abstract-Begriffen, wenn das Thema neu ist oder die Terminologie variiert.
Die korrekte Syntax für Unterbegriffe setzt den Unterbegriff vor das Feld-Tag:
diabetes mellitus, type 2/drug therapy[mh]
cardiovascular diseases/prevention & control[mh]
Verwenden Sie [majr] nur, wenn das Thema zentral für die Arbeit sein muss. Es kann die Präzision verbessern, aber möglicherweise relevante Arbeiten übersehen.
Filter
Publikationstypen:
clinical trial[pt]meta-analysis[pt]randomized controlled trial[pt]review[pt]systematic review[pt]guideline[pt]
Datumsfilter:
2026[dp]
2020:2026[dp]
2026/03/15[dp]
Verfügbarkeitsfilter:
free full text[sb]
hasabstract[text]
E-utilities-Workflow
NCBI E-utilities unterstützt wiederholbare API-Workflows:
esearch.fcgi: Suche und Rückgabe von PMIDs.esummary.fcgi: Rückgabe leichter Artikelmetadaten.efetch.fcgi: Abruf von Abstracts oder vollständigen Datensätzen in XML, MEDLINE oder Text.elink.fcgi: Suche nach verwandten Artikeln und verknüpften Ressourcen.
Verwenden Sie E-Mail und API-Schlüssel für Produktionsskripte. Speichern Sie API-Schlüssel in Umgebungsvariablen, niemals in eingecheckten Dateien oder im Befehlsverlauf.
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)
Für Stapelverarbeitung bevorzugen Sie Parameter des NCBI-Verlaufsservers (usehistory=y, WebEnv, query_key) anstatt sehr langer PMID-Listen über URLs zu übergeben.
Ausgabedisziplin
Für jeden Suchdurchlauf dokumentieren Sie:
- exakter Suchstring
- durchsuchte Datenbank
- Suchdatum
- verwendete Filter
- Ergebnisanzahl
- Exportformat
- etwaige manuelle Ausschlüsse
Beispiel:
| Datenbank | Suchdatum | Abfrage | Filter | Ergebnisse |
| --- | --- | --- | --- | ---: |
| PubMed | 2026-05-11 | `sickle cell disease[mh] AND CRISPR[tiab]` | 2020:2026[dp], Englisch | 42 |
Überprüfungs-Checkliste
- Sind die Feld-Tags gültige PubMed-Tags?
- Sind MeSH-Begriffe für neuere Themen mit Freitext-Synonymen kombiniert?
- Ist der Datumsbereich explizit und angemessen?
- Enthält das Suchprotokoll genügend Details, um die Abfrage zu reproduzieren?
- Werden API-Schlüssel aus der Umgebung geladen?
- Ruft der HTTP-Code
raise_for_status()auf oder behandelt auf andere Weise Nicht-200-Antworten vor dem Parsen? - Werden Ratenbegrenzungen eingehalten?