Base de données PubMed
Utilisez cette compétence lorsqu'une tâche nécessite de la littérature biomédicale provenant de PubMed plutôt que d'une recherche web générale.
Quand utiliser
- Rechercher dans MEDLINE ou la littérature des sciences de la vie.
- Construire des requêtes PubMed avec des termes MeSH, des balises de champ, des dates ou des types d'article.
- Rechercher des PMID, des résumés, des métadonnées de publication ou des citations associées.
- Effectuer des passes de recherche pour des revues systématiques nécessitant des chaînes de recherche reproductibles.
- Utiliser les E-utilities du NCBI directement depuis Python, le shell ou un autre client HTTP.
Construction de requêtes
Commencez par la question de recherche, décomposez-la en concepts, puis combinez les concepts avec des opérateurs booléens.
concept_1 AND concept_2 AND filtre
synonyme_a OR synonyme_b
NOT terme_exclusion
Balises de champ PubMed utiles :
[ti]: titre[ab]: résumé[tiab]: titre ou résumé[au]: auteur[ta]: abréviation du titre du journal[mh]: terme MeSH[majr]: sujet MeSH principal[pt]: type de publication[dp]: date de publication[la]: langue
Exemples :
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 et sous-titres
Préférez MeSH lorsque le concept possède un terme de vocabulaire contrôlé stable. Combinez MeSH avec des termes du titre/résumé lorsque le sujet est nouveau ou que la terminologie varie.
La syntaxe correcte des sous-titres place le sous-titre avant la balise de champ :
diabetes mellitus, type 2/drug therapy[mh]
cardiovascular diseases/prevention & control[mh]
Utilisez [majr] uniquement lorsque le sujet doit être central à l'article. Cela peut améliorer la précision, mais peut manquer des travaux pertinents.
Filtres
Types de publication :
clinical trial[pt]meta-analysis[pt]randomized controlled trial[pt]review[pt]systematic review[pt]guideline[pt]
Filtres de date :
2026[dp]
2020:2026[dp]
2026/03/15[dp]
Filtres de disponibilité :
free full text[sb]
hasabstract[text]
Workflow des E-utilities
Les E-utilities du NCBI prennent en charge des workflows API reproductibles :
esearch.fcgi: rechercher et retourner les PMID.esummary.fcgi: retourner des métadonnées d'article légères.efetch.fcgi: récupérer les résumés ou les enregistrements complets en XML, MEDLINE ou texte.elink.fcgi: trouver des articles connexes et des ressources liées.
Utilisez une adresse email et une clé API pour les scripts de production. Stockez les clés API dans des variables d'environnement, jamais dans des fichiers commités ou l'historique des commandes.
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)
Pour les lots, préférez les paramètres du serveur d'historique du NCBI (usehistory=y, WebEnv, query_key) plutôt que de passer de très longues listes de PMID via les URLs.
Discipline de sortie
Pour chaque passe de recherche, enregistrez :
- chaîne de recherche exacte
- base de données consultée
- date de la recherche
- filtres utilisés
- nombre de résultats
- format d'exportation
- toute exclusion manuelle
Exemple :
| Base de données | Date de recherche | Requête | Filtres | Résultats |
| --- | --- | --- | --- | ---: |
| PubMed | 2026-05-11 | `sickle cell disease[mh] AND CRISPR[tiab]` | 2020:2026[dp], Anglais | 42 |
Liste de vérification
- Les balises de champ sont-elles des balises PubMed valides ?
- Les termes MeSH sont-ils associés à des synonymes en texte libre pour les sujets plus récents ?
- La plage de dates est-elle explicite et appropriée ?
- Le journal de recherche contient-il suffisamment de détails pour reproduire la requête ?
- Les clés API sont-elles chargées depuis l'environnement ?
- Le code HTTP appelle-t-il
raise_for_status()ou gère-t-il autrement les réponses non-200 avant l'analyse ? - Les limites de débit sont-elles respectées ?