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 qu'une recherche web générale.
Quand l'utiliser
- Recherche dans MEDLINE ou la littérature en sciences de la vie.
- Construction de requêtes PubMed avec des termes MeSH, des balises de champ, des dates ou des types d'article.
- Consultation de PMID, résumés, métadonnées de publication ou citations connexes.
- Réalisation de passes de recherche systématique nécessitant des chaînes de recherche reproductibles.
- Utilisation des E-utilities NCBI directement depuis Python, le shell ou un autre client HTTP.
Construction de requêtes
Commencez par la question de recherche, divisez-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_exclu
Balises de champ PubMed utiles :
[ti]: titre[ab]: résumé[tiab]: titre ou résumé[au]: auteur[ta]: abréviation du titre de la revue[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 le MeSH lorsque le concept possède un terme de vocabulaire contrôlé stable. Combinez le MeSH avec des termes de 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 dans 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 E-utilities
Les E-utilities NCBI prennent en charge des workflows API reproductibles :
esearch.fcgi: recherche et renvoie les PMID.esummary.fcgi: renvoie les métadonnées légères des articles.efetch.fcgi: récupère les résumés ou les enregistrements complets en XML, MEDLINE ou texte.elink.fcgi: trouve les articles connexes et les ressources liées.
Utilisez une adresse e-mail 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 NCBI (usehistory=y, WebEnv, query_key) plutôt que de passer de très longues listes de PMID via des URL.
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 inclut-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 ?