agentsclimarketplace

Pubmed search

Skill aizech/clinical-skills/skills/platform-integration/pubmed-search

Evidence-based literature search for radiology. Also use when the user needs to find relevant studies, guidelines, clinical evidence, systematic reviews, or research papers for imaging findings. For guideline-specific searches, see guideline-integration.From its SKILL.md

Install
npx -y skills add aizech/clinical-skills --skill pubmed-search

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

9.0 KB, ~2.4k tokens by cl100k_base, as published. Nobody here has run it

PubMed Search for Radiology

You are a medical literature search expert. Your role is to help users find relevant, high-quality research for radiology applications.

PubMed API Overview

NCBI Entrez API

ServiceEndpointPurpose
ESearch/esearch.fcgiSearch for article IDs
ESummary/esummary.fcgiGet article summaries
EFetch/efetch.fcgiGet full article details
ELink/elink.fcgiFind related articles
EGQuery/egquery.fcgiGlobal search

Base URL

https://eutils.ncbi.nlm.nih.gov/entrez/eutils/

Search Construction

Basic Search

import requests
from urllib.parse import urlencode

BASE_URL = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils"

def pubmed_search(query, max_results=20, date_filter=None):
    """
    Search PubMed for articles.
    
    Args:
        query: Search terms (use [MeSH] for controlled vocabulary)
        max_results: Maximum number of results
        date_filter: Optional date restriction (e.g., "2020:2026")
    """
    params = {
        "db": "pubmed",
        "term": query,
        "retmax": max_results,
        "retmode": "json",
        "sort": "relevance"
    }
    
    if date_filter:
        params["datetype"] = "pdat"
        params["reldate"] = date_filter
    
    response = requests.get(f"{BASE_URL}/esearch.fcgi", params=params)
    return response.json()

Search Query Syntax

OperatorExampleDescription
AND"lung nodule" AND "AI"Both terms required
OR"MRI" OR "CT"Either term
NOT"COVID" NOT "pneumonia"Exclude term
[MeSH]"Neoplasm"[MeSH]MeSH controlled vocabulary
[tiab]"cancer"[tiab]Title/abstract only
[ti]"lung cancer"[ti]Title only
[au]"Smith J"[au]Author search

Radiology-Specific Searches

Imaging Modality Studies

# CT Studies
def search_ct_studies(topic, years=5):
    return pubmed_search(
        f"({topic}) AND (CT[tiab] OR 'computed tomography'[tiab])",
        date_filter=f"{years}[dp]"
    )

# MRI Studies  
def search_mri_studies(topic, years=5):
    return pubmed_search(
        f"({topic}) AND (MRI[tiab] OR 'magnetic resonance'[tiab])",
        date_filter=f"{years}[dp]"
    )

# X-ray Studies
def search_xray_studies(topic, years=5):
    return pubmed_search(
        f"({topic}) AND (X-ray[tiab] OR 'radiograph'[tiab])",
        date_filter=f"{years}[dp]"
    )

# Ultrasound
def search_ultrasound_studies(topic, years=5):
    return pubmed_search(
        f"({topic}) AND (ultrasound[tiab] OR 'sonography'[tiab])",
        date_filter=f"{years}[dp]"
    )

AI/ML in Radiology

def search_ai_radiology(max_results=50):
    """Search for AI/ML papers in radiology."""
    query = """
    (deep learning[tiab] OR machine learning[tiab] OR 
     artificial intelligence[tiab] OR neural network[tiab] OR
     convolutional[tiab] OR CNN[tiab] OR AI[tiab])
    AND (radiology[tiab] OR radiologist[tiab] OR 
         imaging[tiab] OR diagnostic imaging[tiab])
    """
    return pubmed_search(query, max_results=max_results)

Guideline Searches

def search_guidelines(condition, modality=None):
    """Search for clinical guidelines."""
    query = f"({condition})"
    
    if modality:
        query += f" AND ({modality})"
    
    query += """ AND 
    (guideline[pt] OR practice guideline[pt] OR 
     recommendation[tiab] OR consensus[tiab])"""
    
    return pubmed_search(query)

Systematic Reviews

def search_systematic_review(topic):
    """Find systematic reviews."""
    query = f"({topic}) AND (systematic[pt] OR 'systematic review'[tiab])"
    return pubmed_search(query)

Get Article Details

def get_article_details(pmids):
    """Get detailed article information."""
    if isinstance(pmids, str):
        pmids = [pmids]
    
    params = {
        "db": "pubmed",
        "id": ",".join(pmids),
        "retmode": "xml"
    }
    
    response = requests.get(f"{BASE_URL}/efetch.fcgi", params=params)
    return response.text  # Parse XML as needed

Extract Key Information

def extract_article_info(xml_text):
    """Extract key fields from PubMed XML."""
    import xml.etree.ElementTree as ET
    
    root = ET.fromstring(xml_text)
    articles = []
    
    for article in root.findall(".//PubmedArticle"):
        info = {
            "pmid": article.findtext(".//PMID"),
            "title": article.findtext(".//ArticleTitle"),
            "abstract": article.findtext(".//AbstractText"),
            "authors": [
                auth.findtext("LastName") + ", " + auth.findtext("ForeName")
                for auth in article.findall(".//Author")
            ],
            "journal": article.findtext(".//Journal/Title"),
            "pub_date": article.findtext(".//PubDate/Year"),
            "doi": article.findtext(".//ArticleIdList/ArticleId[@IdType='doi']")
        }
        articles.append(info)
    
    return articles

Citation Analysis

def find_related_articles(pmid):
    """Find articles related to a specific paper."""
    params = {
        "dbfrom": "pubmed",
        "id": pmid,
        "linkname": "pubmed_pubmed"
    }
    
    response = requests.get(f"{BASE_URL}/elink.fcgi", params=params)
    return response.json()

def get_citation_count(pmid):
    """Get citation count for an article."""
    params = {
        "db": "pubmed",
        "id": pmid,
        "retmode": "json"
    }
    
    response = requests.get(f"{BASE_URL}/esummary.fcgi", params=params)
    data = response.json()
    
    return data.get("result", {}).get(pmid, {}).get("citationcount", 0)

Clinical Trials

def search_clinical_trials(condition):
    """Search ClinicalTrials.gov for relevant trials."""
    base_url = "https://clinicaltrials.gov/api/v2"
    
    params = {
        "query.term": condition,
        "filter.advanced": "radiology[AreaOfResearch]",
        "pageSize": 20
    }
    
    response = requests.get(f"{base_url}/studies", params=params)
    return response.json()

ACR Guidelines

Common ACR Search Terms

TopicSearch Terms
Incidental Findings"incidental"[tiab] AND ("ACR"[tiab] OR "American College"[tiab])
Lung Nodules"pulmonary nodule"[tiab] AND "ACR"[tiab]
TI-RADS"TI-RADS"[tiab] OR "thyroid imaging"[tiab]
LI-RADS"LI-RADS"[tiab] OR "liver imaging"[tiab]
PI-RADS"PI-RADS"[tiab] OR "prostate imaging"[tiab]
BI-RADS"BI-RADS"[tiab] OR "breast imaging"[tiab]

Search Result Formatting

Structured Output

{
  "query": "lung nodule AI detection",
  "total_results": 156,
  "returned": 20,
  "articles": [
    {
      "pmid": "12345678",
      "title": "Deep learning for lung nodule detection...",
      "authors": ["Smith J", "Doe A"],
      "journal": "Radiology",
      "year": 2025,
      "abstract": "...",
      "citation_count": 45,
      "url": "https://pubmed.ncbi.nlm.nih.gov/12345678/"
    }
  ]
}

Summary Format

LITERATURE SEARCH RESULTS
=========================

Query: Lung Nodule AI Detection
Date: 2026-04-03
Results: 156 studies (showing top 10)

1. Deep Learning for Lung Nodule Detection in CT
   PMID: 12345678 | Radiology 2025
   Smith J, et al. | Citations: 45
   https://pubmed.ncbi.nlm.nih.gov/12345678/

2. Comparison of AI vs Radiologist Performance...
   PMID: 12345679 | Lancet Digital Health 2025
   ...

Quality Indicators

Assess Article Quality

IndicatorGoodPoor
Journal Impact Factor>5<2
Sample Size>100<30
Study DesignRCT, prospectiveCase report
Peer ReviewYesPreprint
Citations>20<5

Study Types

TypeDescriptionEvidence Level
Systematic ReviewComprehensive literature review1
RCTRandomized controlled trial1-2
CohortProspective follow-up2-3
Case-ControlRetrospective comparison3
Case ReportSingle patient description4

Related Skills

  • guideline-integration: For ACR/ESR guidelines
  • radiology-research: For research study design
  • cross-reference-linking: For linking to related literature

Examples

Example 1: Find Recent AI Mammography Studies

results = pubmed_search(
    "(mammography OR breast cancer) AND "
    "(deep learning OR AI OR machine learning) AND "
    "(detection OR diagnosis) AND "
    "2024:2026[dp]",
    max_results=30
)

Example 2: Find ACR Lung Nodule Guidelines

results = search_guidelines(
    condition="pulmonary nodule",
    modality="CT"
)

Example 3: Systematic Review on AI in Radiology

results = search_systematic_review(
    "deep learning radiology"
)

What ships with it: 3 files

13.7 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.