Skip to main content

prismalab-evidence-extraction

Extract structured data from research papers using Azure Document Intelligence and GPT-4.1 vision. Automates PICO extraction, risk of bias assessment, and data table population.

Jump to install

Source facts

Repository
Insightpulseai/odoo
Last source activity
April 18, 2026 at 08:34
Detected SKILL.md language
English
Stars
6
Forks
2

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
prismalab-evidence-extraction
description
Extract structured data from research papers using Azure Document Intelligence and GPT-4.1 vision. Automates PICO extraction, risk of bias assessment, and data table population.
# PrismaLab Evidence Extraction Skill ## When to Use - User needs to extract data from included studies (PDFs) - User needs PICO elements extracted from abstracts/full text - User needs risk of bias assessment (RoB 2, ROBINS-I, Newcastle-Ottawa) - User needs to populate data extraction forms ## Azure Services Used - **Document Intelligence** (`docai-ipai-dev`): PDF text/table extraction (prebuilt-read, prebuilt-layout) - **Azure AI Foundry** (`ipai-copilot-resource`): GPT-4.1 for structured extraction + GPT-4.1 vision for figures/tables - **Azure AI Search** (`srch-ipai-dev-sea`): RAG for methodology guidance ## Extraction Pipeline ### Step 1: PDF Ingestion ```python # Azure Document Intelligence — extract text + tables from study PDF from azure.ai.documentintelligence import DocumentIntelligenceClient client = DocumentIntelligenceClient( endpoint="https://docai-ipai-dev.cognitiveservices.azure.com", credential=DefaultAzureCredential() ) poller = client.begin_analyze_document( "prebuilt-layout", document=pdf_bytes, output_content_format="markdown" ) result = poller.result() # result.content = full markdown with tables preserved ``` ### Step 2: PICO Extraction ```python # GPT-4.1 structured extraction extraction_prompt = """ Extract the following from this study: 1. Population: age, sex, condition, setting, sample size per arm 2. Intervention: type, dose/intensity, duration, frequency 3. Comparator: type, description 4. Outcomes: primary outcome(s), secondary outcome(s), measurement tools, timepoints 5. Study design: RCT/cohort/case-control/cross-sectional 6. Follow-up duration 7. Funding source 8. Country/setting Return as structured JSON. """ ``` ### Step 3: Numerical Data Extraction For meta-analysis input, extract: ```json { "study_id": "Smith2024", "outcome": "HbA1c reduction", "intervention": {"n": 150, "mean": -1.2, "sd": 0.8}, "control": {"n": 148, "mean": -0.4, "sd": 0.7}, "timepoint_weeks": 24 } ``` For dichotomous outcomes: ```json { "study_id": "Jones2023", "outcome": "Complete remission", "intervention": {"events": 45, "total": 120}, "control": {"events": 28, "total": 118} } ``` ### Step 4: Risk of Bias Assessment Use GPT-4.1 to pre-assess, human confirms: **RoB 2 (for RCTs):** | Domain | Assessment | Support | |--------|-----------|---------| | Randomization | Low/High/Some concerns | Quote from paper | | Deviations from intervention | Low/High/Some concerns | Quote | | Missing outcome data | Low/High/Some concerns | Quote | | Outcome measurement | Low/High/Some concerns | Quote | | Selection of reported result | Low/High/Some concerns | Quote | **ROBINS-I (for non-randomized):** Domains: confounding, selection, classification, deviations, missing data, measurement, reported result ### Step 5: Figure/Table Extraction (GPT-4.1 Vision) ```python # For studies where key data is in figures (e.g., Kaplan-Meier curves) response = client.chat.completions.create( model="gpt-4.1", messages=[{ "role": "user", "content": [ {"type": "text", "text": "Extract the survival rates at 6, 12, and 24 months from this Kaplan-Meier curve. Return as JSON."}, {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{base64_image}"}} ] }] ) ``` ## Quality Standards - All AI-extracted data must be verified by a human reviewer - Double extraction recommended (AI + human, or two humans) - Report extraction agreement rate - Flag uncertain extractions for manual review - Preserve source quotes for traceability
View on GitHub