SuperAPI AI Directory

pubmed-pico-search

Writing & research

View repository

Updated 10-16 09:03

About this skill

PICO Clinical Question Search

Use this workflow for clinical comparison questions. The MCP server does not semantically parse natural-language clinical questions. The agent extracts P/I/C/O, submits the structured handoff through parse_pico, and then executes the returned template: pico pipeline or an expanded Boolean query.

PICO Elements

Element Meaning Example
P Population / patient group ICU patients requiring sedation
I Intervention / exposure / index test remimazolam
C Comparator, optional propofol
O Outcome, recommended delirium, hypotension, sedation efficacy

Workflow

Agent extracts P/I/C/O
-> parse_pico(description, p, i, c, o)
-> optional generate_search_queries for P/I/C/O expansion
-> unified_search(query=original_question, pipeline=parse_pico.pipeline)

Step 1: Agent Extracts PICO

Do the semantic work in the agent. Do not ask the MCP server to infer P/I/C/O from free text. If P or I is unclear, ask the user before searching. Do not invent missing clinical details.

Step 2: Validate The Handoff

pico = parse_pico(
    description="Is remimazolam better than propofol for ICU sedation?",
    p="ICU patients requiring sedation",
    i="remimazolam",
    c="propofol",
    o="delirium, hypotension, sedation efficacy",
    question_type="therapy",
    sources="pubmed,europe_pmc",
    limit=50,
)

Expected useful fields:

  • validation: whether required P/I fields are present
  • pico: human-readable P/I/C/O
  • query_elements: search fragments that the backend will use
  • pipeline: ready-to-run template: pico YAML
  • next_tool_call: suggested unified_search call

When only description is provided, parse_pico returns a schema and asks the agent to call it again with structured elements.

Step 3: Optional MeSH / Synonym Expansion

Use this when the topic needs controlled vocabulary or systematic-review style coverage.

generate_search_queries(topic="ICU patients")
generate_search_queries(topic="remimazolam")
generate_search_queries(topic="propofol")
generate_search_queries(topic="delirium")

If you build high-quality fragments, pass them back as:

parse_pico(
    description="Is remimazolam better than propofol for ICU sedation?",
    p="ICU patients requiring sedation",
    p_query='("Intensive Care Units"[MeSH] OR ICU[tiab])',
    i="remimazolam",
    i_query="(remimazolam[tiab] OR CNS7056[tiab])",
    c="propofol",
    c_query='("Propofol"[MeSH] OR propofol[tiab])',
    o="delirium",
    o_query='("Delirium"[MeSH] OR delirium[tiab])',
)

Step 4: Execute Search

unified_search(
    query="Is remimazolam better than propofol for ICU sedation?",
    pipeline=pico["pipeline"],
    ranking="quality",
)

The backend PICO pipeline searches O-aware precision and recall variants, deduplicates results, merges ranked lists, and enriches the final set.

Missing Fields

  • Missing C: allowed. Do not invent a comparator.
  • Missing O: allowed but discouraged. Ask the user when the outcome is central.
  • Missing P or I: ask the user before running a structured PICO search.

Recommended Reporting

Always show the final P/I/C/O table, the query or pipeline profile used, and the main limits such as sources, years, species, and clinical query filter.