Clinical Guidelines Search & Retrieval
Search and retrieve evidence-based clinical practice guidelines from 12+ authoritative sources spanning 41 tools. Covers disease management guidelines, society recommendations, pharmacogenomics guidance, and patient resources.
KEY PRINCIPLES:
- Multi-source search — Search ≥3 databases in parallel for comprehensive coverage
- Source-appropriate queries — Match query style to each database's strengths
- Condition + society specific — When user names a disease or society, use targeted tools
- English queries first — Use English medical terms in all tool calls; respond in user's language
- Cite sources — Every guideline result must include source organization and URL
When to Use
Apply when user asks:
- "What are the guidelines for [condition]?"
- "What does [ADA/AHA/NCCN/NICE/WHO] say about [topic]?"
- "Standard of care for [disease]?"
- "Drug-gene interactions for [drug/gene]?" (pharmacogenomics)
- "Screening recommendations for [condition]?"
- "Is there a guideline for [clinical question]?"
- "What do guidelines say about [treatment/drug]?"
- "Clinical recommendations for [oncology topic]?"
Phase 0: Tool Verification (MANDATORY FIRST STEP)
Before searching, verify tools load:
from tooluniverse import ToolUniverse
tu = ToolUniverse()
tu.load_tools()
assert hasattr(tu.tools, 'NICE_Clinical_Guidelines_Search')
Correct call pattern (use either approach):
# Option A: direct attribute access
result = tu.tools.NICE_Clinical_Guidelines_Search(query='diabetes', limit=5)
# Option B: run_one_function
result = tu.run_one_function({'name': 'NICE_Clinical_Guidelines_Search', 'arguments': {'query': 'diabetes', 'limit': 5}})
Phase 1: Identify Query Strategy
Determine which tools to use based on the user's question:
| Query type | Primary tools | Secondary tools |
|---|---|---|
| General disease guideline | NICE, TRIP, GIN | PubMed, EuropePMC, CMA |
| Cardiology | AHA_ACC_search_guidelines, AHA_list_guidelines | NICE, TRIP |
| Oncology | NCCN_search_guidelines, NCCN_list_patient_guidelines | NICE, GIN |
| Diabetes / endocrinology | ADA_search_standards, ADA_list_standards_sections | NICE, SIGN |
| Pharmacogenomics | CPIC_get_gene_drug_pairs, CPIC_list_guidelines | CPIC_get_gene_info |
| Canadian guidelines | CMA_Guidelines_Search, CTFPHC_search_guidelines | — |
| Scottish/UK guidelines | SIGN_search_guidelines, NICE | CMA |
| International guidelines | GIN_Guidelines_Search | OpenAlex, EuropePMC |
| Living guidelines | MAGICapp_list_guidelines | GIN |
| Full-text retrieval | NICE_Guideline_Full_Text, WHO_Guideline_Full_Text, AHA_ACC_get_guideline | — |
Phase 2: Multi-Source Search
2.1 General Search (Use ≥3 databases)
NICE_Clinical_Guidelines_Search ⭐ (Best general source)
- Parameters:
query(string, required),limit(integer, required) - Returns: list directly (NOT wrapped in dict) —
[{title, url, summary, content, date}, ...] - Handle:
result = tu.tools.NICE_Clinical_Guidelines_Search(...); isinstance(result, list) - Example:
NICE_Clinical_Guidelines_Search(query='type 2 diabetes management', limit=5)
GIN_Guidelines_Search ⭐ (Best multi-society aggregator)
- Parameters:
query(string, required),limit(integer, required) - Returns: list directly —
[{title, url, description, source, organization}, ...] - Example:
GIN_Guidelines_Search(query='colorectal cancer screening', limit=5)
TRIP_Database_Guidelines_Search
- Parameters:
query(string, required),limit(integer, required),search_type(string, required — must be'guidelines') - Returns: list directly —
[{title, url, description, content, publication}, ...] - Example:
TRIP_Database_Guidelines_Search(query='diabetes', limit=5, search_type='guidelines')
WHO_Guidelines_Search ⚠️ (Limited relevance)
- Parameters:
query(string, required),limit(integer, required) - Returns: list directly —
[{title, url, description, content, source}, ...] - LIMITATION: Does not reliably filter by topic. May return unrelated recent WHO publications.
- Use for broad international queries; do not rely on for specific disease searches.
- Example:
WHO_Guidelines_Search(query='diabetes', limit=5)
CMA_Guidelines_Search (Canadian)
- Parameters:
query(string, required),limit(integer, required) - Returns: list directly —
[{title, url, description, content, date}, ...] - Example:
CMA_Guidelines_Search(query='diabetes', limit=5)
SIGN_search_guidelines (Scottish/UK)
- Parameters:
query(string, required — NOTq),limit(integer, optional) - Returns: list directly —
[{number, title, topic, published, url}, ...] - Example:
SIGN_search_guidelines(query='diabetes', limit=5)
CTFPHC_search_guidelines (Canadian prevention)
- Parameters:
query(string, required — NOTq),limit(integer, optional) - Returns: list directly —
[{title, url, year}, ...] - Example:
CTFPHC_search_guidelines(query='colorectal cancer', limit=5)
OpenAlex_Guidelines_Search
- Parameters:
query(string, required),limit(integer, required),year_from(integer, optional),year_to(integer, optional) - Returns: list directly —
[{title, authors, institutions, year, doi}, ...] - Example:
OpenAlex_Guidelines_Search(query='diabetes management', limit=5)(year params optional) - With years:
OpenAlex_Guidelines_Search(query='diabetes management', limit=5, year_from=2020, year_to=2024)
EuropePMC_Guidelines_Search
- Parameters:
query(string, required),limit(integer, required) - Returns: list directly —
[{title, pmid, pmcid, doi, authors}, ...] - Note: May return loosely relevant results; use for literature discovery not definitive guidelines
- Example:
EuropePMC_Guidelines_Search(query='diabetes guideline', limit=5)
PubMed_Guidelines_Search
- Parameters:
query(string, required),limit(integer, required),api_key(string, optional — use''for anonymous) - Returns: list directly —
[{title, pmid, pmcid, doi}, ...] - Example:
PubMed_Guidelines_Search(query='diabetes guideline', limit=5)(api_key optional)
2.2 Society-Specific Search
ADA Standards of Care (Diabetes)
ADA_list_standards_sections() — No parameters. Lists all 19 sections of ADA Standards of Care (2026).
- Returns list of section titles with PMIDs
ADA_search_standards(query, limit) — Search within ADA Standards.
- Returns: list —
[{title, ...}] - Note: Uses PubMed corporate author filter. Use broad medical terms, not specific phrases.
- ✅ Works:
'glycemic targets','pharmacologic approaches','cardiovascular risk' - ❌ May fail: very specific phrases like
'first-line medication metformin'
ADA_get_standards_section(section_number) — Get metadata for a specific section.
- Returns dict with section abstract (not full PMC text)
AHA/ACC Cardiology
AHA_ACC_search_guidelines(query, limit) — Search AHA/ACC guidelines.
- Returns: list directly —
[{title, ...}] - Example:
AHA_ACC_search_guidelines(query='heart failure management', limit=5)
AHA_list_guidelines(limit) / ACC_list_guidelines(limit) — List recent guidelines.
AHA_ACC_get_guideline(pmid) — Get full text of AHA/ACC guideline by PMID (via PMC).
- Returns dict with full text
- Example:
AHA_ACC_get_guideline(pmid='37952199')
NCCN Oncology
NCCN_list_patient_guidelines(limit) — List all NCCN patient guideline resources (up to 74).
- Returns: list directly —
[{cancer_type, url, category}, ...] - ⚠️ Field is
cancer_type, NOTtitle - Use
r[i]['cancer_type']to get the cancer name,r[i]['url']for URL
NCCN_search_guidelines(query, limit) — Search NCCN publications.
- Returns: list directly —
[{title, ...}] - Note: Returns PubMed abstracts of NCCN articles (JNCCN), not proprietary guideline text
NCCN_get_patient_guideline(url) — Get full text of a patient guideline.
- Parameter:
url(string) — the full URL from NCCN_list_patient_guidelines - Example:
NCCN_get_patient_guideline(url='https://www.nccn.org/patientresources/patient-resources/guidelines-for-patients/guidelines-for-patients-details?patientGuidelineId=61') - ⚠️ Do NOT pass an integer ID — pass the full URL string
MAGICapp Living Guidelines
MAGICapp_list_guidelines(limit) — List living guidelines.
- Returns: dict wrapped —
r.get('data', [])gives the list - ⚠️ Field is
name, NOTtitle; useitem['name']for guideline title - Use
item['guidelineId']for follow-up calls
MAGICapp_get_guideline(guideline_id) — Get full guideline details.
MAGICapp_get_recommendations(guideline_id) — Get recommendations for a guideline.
MAGICapp_get_sections(guideline_id) — Get sections.
NCI Resources ⚠️ (Research tools catalog, NOT clinical guidelines)
NCI_search_cancer_resources(q, size) — Search NCI Research Resources for Researchers (R4R).
- ⚠️ This is a catalog of bioinformatics tools, datasets, and lab instruments — NOT a clinical guidelines database
- Parameters:
q(NOTquery),size(NOTlimit— usesizefor result count) - Returns: dict —
r.get('data', {}).get('results', [])gives the list - Useful for: finding analysis tools, datasets, bioinformatics resources related to a cancer type
- Example:
NCI_search_cancer_resources(q='colorectal cancer screening', size=5)
2.3 Pharmacogenomics Search (CPIC)
Recommended workflow for gene-drug queries:
Step 1: CPIC_get_gene_info(genesymbol='GENE') → gene overview
Step 2: CPIC_get_gene_drug_pairs(genesymbol='GENE') → all drug pairs + CPIC levels
Step 3: CPIC_list_guidelines(limit=50) → find guideline_id for gene+drug
Step 4: CPIC_get_recommendations(guideline_id=N) → specific dosing recommendations
Step 5: CPIC_get_alleles(genesymbol='GENE') → allele definitions
All CPIC tools return dict-wrapped: use r.get('data', []) to access results.
CPIC_get_gene_info(genesymbol) — Gene overview.
- Example:
CPIC_get_gene_info(genesymbol='CYP2D6')
CPIC_get_gene_drug_pairs(genesymbol, limit) — All gene-drug interactions with CPIC levels.
- Returns:
data= list of{genesymbol, drugid, cpiclevel, pgkbcalevel, usedforrecommendation, ...} cpiclevelA/B/C/D: A = strongest evidence
CPIC_list_guidelines(limit) — All CPIC guidelines.
- Returns:
data= list of{name: 'GENE and Drug', guidelineId, url, ...} - Use to find the
guidelineIdfor a specific gene+drug pair
CPIC_get_recommendations(guideline_id, limit) — Get dosing recommendations.
- ⚠️ Parameter is
guideline_id(integer), NOTgenesymbol - Workflow: first find guideline_id from
CPIC_list_guidelines, then call this - Example:
CPIC_get_recommendations(guideline_id=100416, limit=20) - Returns duplicate records per allele combination — deduplicate by phenotype before presenting
CPIC_get_alleles(genesymbol, limit) — Allele definitions.
- Use
clinicalfunctionalstatusfield (NOTfunctionalstatuswhich is always null) - Example:
CPIC_get_alleles(genesymbol='CYP2D6', limit=10)
CPIC_get_drug_info(drugname) — Drug details.
- Example:
CPIC_get_drug_info(drugname='codeine')
CPIC_search_gene_drug_pairs(genesymbol, limit) — Search gene-drug pairs.
- ⚠️ Requires PostgREST filter syntax:
genesymbol='eq.CYP2D6'(not just'CYP2D6') - Example:
CPIC_search_gene_drug_pairs(genesymbol='eq.CYP2D6', limit=5)
2.4 Full-Text Retrieval
NICE_Guideline_Full_Text(url) — Get NICE guideline text.
- Use URL from NICE_Clinical_Guidelines_Search results
- Returns dict (may have empty data for some guidelines; try chapter URLs like
.../chapter/Recommendations)
WHO_Guideline_Full_Text(url) — Get WHO guideline text.
- Note: Most WHO T2D content is in PDFs; tool may return PDF link not full text
AHA_ACC_get_guideline(pmid) — Get AHA/ACC guideline text via PMC.
Phase 3: Synthesize Results
3.1 Report Structure
# Clinical Guidelines: [Topic]
## Summary
[2-3 sentence overview of what guidelines say]
## Key Recommendations
### [Source 1: NICE/ADA/NCCN/etc.]
[Key recommendations with evidence grade, URL]
### [Source 2]
[Key recommendations]
## Pharmacogenomics (if applicable)
[CPIC phenotype-to-recommendation table]
## References
[All URLs cited]
3.2 Evidence Grading
- Grade A (ADA) / Class I (AHA) / Strong (SIGN) = high confidence
- Grade B/C = moderate confidence; Grade D / Consensus = expert opinion
- CPIC Level A = strongest PGx evidence; B = moderate; C/D = limited
- Note recommendation year — guidelines vary in currency (SIGN 2025, ADA 2026, NICE Feb 2026)
3.3 CPIC Recommendation Deduplication
CPIC returns multiple records for the same phenotype (one per allele combination). Before presenting:
seen_phenotypes = set()
unique_recs = []
for rec in recs:
phenotype = rec.get('phenotype') or rec.get('lookupkey', '')
if phenotype not in seen_phenotypes:
seen_phenotypes.add(phenotype)
unique_recs.append(rec)
Phase 4: Decision Logic
General disease guideline:
- NICE (
query,limit) — UK, high quality - GIN (
query,limit) — multi-society aggregator ⭐ best for breadth - TRIP (
query,limit,search_type='guidelines') - If cardiac → add AHA_ACC_search_guidelines
- If cancer → add NCCN_search_guidelines + NCCN_list_patient_guidelines
- If diabetes → add ADA_list_standards_sections + ADA_search_standards
Pharmacogenomics:
CPIC_get_gene_info(genesymbol)→ overviewCPIC_get_gene_drug_pairs(genesymbol)→ all drugs with CPIC levelsCPIC_list_guidelines(limit=50)→ find guideline_id for target gene+drugCPIC_get_recommendations(guideline_id=N)→ specific recs (deduplicate by phenotype)
Full text retrieval:
- Find guideline URL/PMID from search results
- NICE URL → NICE_Guideline_Full_Text
- AHA/ACC PMID → AHA_ACC_get_guideline
- WHO URL → WHO_Guideline_Full_Text
- NCCN patient guideline URL → NCCN_get_patient_guideline
Fallback strategy:
- If NICE returns empty → try TRIP or GIN
- If ADA returns 0 results → broaden query terms (e.g.,
'pharmacologic approaches'instead of'metformin first-line') - If WHO returns irrelevant results → skip WHO, use GIN or EuropePMC instead
- If CPIC returns no recommendations → list gene-drug pairs with CPIC levels as a proxy
Critical Parameter Notes (Verified by Testing)
| Tool | CORRECT | WRONG |
|---|---|---|
| NICE_Clinical_Guidelines_Search | query='...', limit=N (both required) | ❌ q='...' |
| TRIP_Database_Guidelines_Search | search_type='guidelines' required | ❌ omitting search_type |
| OpenAlex_Guidelines_Search | year_from/year_to are optional | ❌ treating as required |
| PubMed_Guidelines_Search | api_key is optional (omit or use '') | ❌ treating api_key as required |
| GIN_Guidelines_Search | limit=N required | ❌ omitting limit |
| CMA_Guidelines_Search | limit=N required | ❌ omitting limit |
| SIGN_search_guidelines | query='...' (NOT q) | ❌ q='...' |
| CTFPHC_search_guidelines | query='...' (NOT q) | ❌ q='...' |
| NCI_search_cancer_resources | q='...', size=N (NOT limit) | ❌ query=... or limit=N |
| NCCN_list_patient_guidelines | field cancer_type (not title) | ❌ .get('title') |
| NCCN_get_patient_guideline | url='https://...' (full URL string) | ❌ integer patientGuidelineId |
| MAGICapp_list_guidelines | r.get('data', []) for list | ❌ accessing r directly as list |
| MAGICapp_* items | field name (not title) | ❌ .get('title') |
| CPIC_* tools | r.get('data', []) for list | ❌ accessing r directly |
| CPIC_get_recommendations | guideline_id=N (integer) | ❌ genesymbol='CYP2D6' |
| CPIC_search_gene_drug_pairs | genesymbol='eq.CYP2D6' (PostgREST) | ❌ genesymbol='CYP2D6' |
| CPIC_get_alleles | use clinicalfunctionalstatus field | ❌ functionalstatus (always null) |
| NCI_search_cancer_resources | r.get('data',{}).get('results',[]) | ❌ r.get('data', []) |
Response Format Reference
| Tool | Return type | Access pattern |
|---|---|---|
| NICE_Clinical_Guidelines_Search | list (raw) | result[0]['title'] |
| GIN_Guidelines_Search | list (raw) | result[0]['title'] |
| TRIP_Database_Guidelines_Search | list (raw) | result[0]['title'] |
| WHO_Guidelines_Search | list (raw) | result[0]['title'] |
| EuropePMC_Guidelines_Search | list (raw) | result[0]['title'] |
| PubMed_Guidelines_Search | list (raw) | result[0]['title'] |
| CMA_Guidelines_Search | list (raw) | result[0]['title'] |
| SIGN_search_guidelines | list (raw) | result[0]['title'] |
| CTFPHC_search_guidelines | list (raw) | result[0]['title'] |
| ADA_search_standards | list (raw) | result[0]['title'] |
| AHA_ACC_search_guidelines | list (raw) | result[0]['title'] |
| NCCN_search_guidelines | list (raw) | result[0]['title'] |
| NCCN_list_patient_guidelines | list (raw) | result[0]['cancer_type'] |
| OpenAlex_Guidelines_Search | list (raw) | result[0]['title'] |
| CPIC_list_guidelines | dict → data | r.get('data', [])[0]['name'] |
| CPIC_get_gene_drug_pairs | dict → data | r.get('data', [])[0]['genesymbol'] |
| CPIC_get_recommendations | dict → data | r.get('data', [])[0] |
| CPIC_get_gene_info | dict → data | r.get('data', {}) |
| MAGICapp_list_guidelines | dict → data | r.get('data', [])[0]['name'] |
| NCI_search_cancer_resources | dict nested | r.get('data',{}).get('results',[])[0]['title'] |
Known Limitations
- WHO_Guidelines_Search: Returns recently-published WHO docs regardless of query topic — results may be irrelevant for specific diseases. Supplement with GIN for international guidelines.
- NCI_search_cancer_resources: Catalogs research tools/datasets, NOT clinical practice guidelines.
- NICE_Guideline_Full_Text: Retrieves overview page only; recommendation sub-pages (
.../chapter/Recommendations) may need direct URL - SIGN: No full-text tool; guideline text only available as PDFs
- ADA_get_standards_section: Returns abstract only, not full PMC text
- CPIC_get_recommendations: Returns many duplicate records per allele combination; deduplicate by phenotype
- NCCN_search_guidelines: Returns PubMed/JNCCN abstracts, not proprietary NCCN guideline text
- TRIP content: Some TRIP results link to PDF-gated URLs; content extraction may fail with 403
Missing Sources (Potential Future Tools)
- USPSTF (US Preventive Services Task Force) — primary US screening recommendations
- ACG (American College of Gastroenterology) — gastroenterology guidelines
- AGA (American Gastroenterological Association)
- Cochrane Reviews — systematic reviews on clinical interventions
- AHRQ — Agency for Healthcare Research and Quality