Base de Datos PubMed
Usa esta habilidad cuando una tarea necesite literatura biomédica de PubMed en lugar de una búsqueda web general.
Cuándo Usarlo
- Buscar en MEDLINE o literatura de ciencias de la vida.
- Construir consultas PubMed con términos MeSH, etiquetas de campo, fechas o tipos de artículo.
- Buscar PMIDs, resúmenes, metadatos de publicación o citas relacionadas.
- Realizar pases de búsqueda de revisión sistemática que necesiten cadenas de búsqueda reproducibles.
- Usar NCBI E-utilities directamente desde Python, shell u otro cliente HTTP.
Construcción de Consultas
Empieza con la pregunta de investigación, divídela en conceptos, luego combina los conceptos con operadores booleanos.
concepto_1 AND concepto_2 AND filtro
sinónimo_a OR sinónimo_b
NOT término_exclusión
Etiquetas de campo útiles de PubMed:
[ti]: título[ab]: resumen[tiab]: título o resumen[au]: autor[ta]: abreviatura del título de la revista[mh]: término MeSH[majr]: tema MeSH principal[pt]: tipo de publicación[dp]: fecha de publicación[la]: idioma
Ejemplos:
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 y Subencabezados
Prefiere MeSH cuando el concepto tenga un término de vocabulario controlado estable. Combina MeSH con términos de título/resumen cuando el tema sea nuevo o la terminología varíe.
La sintaxis correcta de subencabezado coloca el subencabezado antes de la etiqueta de campo:
diabetes mellitus, type 2/drug therapy[mh]
cardiovascular diseases/prevention & control[mh]
Usa [majr] solo cuando el tema deba ser central para el artículo. Puede mejorar la precisión, pero podría omitir trabajos relevantes.
Filtros
Tipos de publicación:
clinical trial[pt]meta-analysis[pt]randomized controlled trial[pt]review[pt]systematic review[pt]guideline[pt]
Filtros de fecha:
2026[dp]
2020:2026[dp]
2026/03/15[dp]
Filtros de disponibilidad:
free full text[sb]
hasabstract[text]
Flujo de Trabajo con E-utilities
NCBI E-utilities admite flujos de trabajo API reproducibles:
esearch.fcgi: buscar y devolver PMIDs.esummary.fcgi: devolver metadatos ligeros del artículo.efetch.fcgi: recuperar resúmenes o registros completos en XML, MEDLINE o texto.elink.fcgi: encontrar artículos relacionados y recursos vinculados.
Usa un correo electrónico y una clave API para scripts de producción. Almacena las claves API en variables de entorno, nunca en archivos confirmados ni en el historial de comandos.
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)
Para lotes, prefiere los parámetros del servidor de historial de NCBI (usehistory=y, WebEnv, query_key) en lugar de pasar listas muy largas de PMIDs a través de URLs.
Disciplina de Resultados
Para cada pase de búsqueda, registra:
- cadena de búsqueda exacta
- base de datos consultada
- fecha de consulta
- filtros utilizados
- número de resultados
- formato de exportación
- cualquier exclusión manual
Ejemplo:
| Base de datos | Fecha de consulta | Consulta | Filtros | Resultados |
| --- | --- | --- | --- | ---: |
| PubMed | 2026-05-11 | `sickle cell disease[mh] AND CRISPR[tiab]` | 2020:2026[dp], English | 42 |
Lista de Verificación
- ¿Son las etiquetas de campo etiquetas válidas de PubMed?
- ¿Están los términos MeSH emparejados con sinónimos de texto libre para temas más nuevos?
- ¿Es el rango de fechas explícito y apropiado?
- ¿Incluye el registro de búsqueda suficiente detalle para reproducir la consulta?
- ¿Se cargan las claves API desde el entorno?
- ¿El código HTTP llama a
raise_for_status()o maneja de otra forma las respuestas no 200 antes de analizar? - ¿Se respetan los límites de velocidad?