PubMed Database
Usa esta skill cuando una tarea necesite literatura biomédica de PubMed en lugar de una búsqueda web general.
Cuándo Usarla
- Buscar en MEDLINE o en literatura de ciencias de la vida.
- Construir consultas de PubMed con términos MeSH, etiquetas de campo, fechas o tipos de artículo.
- Buscar PMIDs, resúmenes, metadatos de publicaciones o citas relacionadas.
- Realizar pases de búsqueda para revisiones sistemáticas que necesiten cadenas de búsqueda repetibles.
- Usar las E-utilities del NCBI directamente desde Python, shell u otro cliente HTTP.
Construcción de Consultas
Empieza con la pregunta de investigación, divídela en conceptos y luego combínalos con operadores booleanos.
concepto_1 AND concepto_2 AND filtro
sinonimo_a OR sinonimo_b
NOT termino_de_exclusion
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 subencabezados 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 en el artículo. Puede mejorar la precisión pero puede 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
Las E-utilities del NCBI admiten flujos de trabajo API repetibles:
esearch.fcgi: buscar y devolver PMIDs.esummary.fcgi: devolver metadatos ligeros de artículos.efetch.fcgi: obtener resúmenes o registros completos en XML, MEDLINE o texto.elink.fcgi: encontrar artículos relacionados y recursos enlazados.
Usa un correo electrónico y clave API para scripts en producción. Almacena las claves API en variables de entorno, nunca en archivos commiteados o 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 del NCBI (usehistory=y, WebEnv, query_key) en lugar de pasar listas de PMID muy largas a través de URLs.
Disciplina de Salida
Para cada pase de búsqueda, registra:
- cadena de búsqueda exacta
- base de datos buscada
- fecha de búsqueda
- filtros utilizados
- conteo de resultados
- formato de exportación
- cualquier exclusión manual
Ejemplo:
| Database | Date searched | Query | Filters | Results |
| --- | --- | --- | --- | ---: |
| 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 PubMed válidas?
- ¿Están emparejados los términos MeSH 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 manera las respuestas que no sean 200 antes de analizar? - ¿Se respetan los límites de tasa?