Agent Skills
ClinicalCilinical trail
Inclusion Criteria Generator
AIPOCH-AI
Optimizing the Design of Inclusion and Exclusion Criteria for Clinical Trial Subjects
34
1
FILES
inclusion-criteria-gen/
skill.md
scripts
main.py
references
common_pitfalls.md
criteria_templates.json
feasibility_data.json
optimization_guidelines.md
regulatory_guidance.md
SKILL.md
Inclusion Criteria Generator
Generate and optimize clinical trial subject inclusion/exclusion criteria to balance scientific rigor with recruitment feasibility.
Use Cases
- Protocol Design: Create initial eligibility criteria for new clinical trials
- Criteria Optimization: Refine existing criteria to improve enrollment without compromising safety/efficacy
- Competitive Analysis: Analyze eligibility patterns across similar trials
- Recruitment Strategy: Identify and mitigate barriers to enrollment
- Feasibility Assessment: Evaluate if proposed criteria are realistic for target population
Usage
CLI Usage
# Generate criteria from study design
python scripts/main.py generate \
--indication "Type 2 Diabetes" \
--phase "Phase 2" \
--population "adults" \
--duration "24 weeks" \
--output criteria.json
# Optimize existing criteria
python scripts/main.py optimize \
--input current_criteria.json \
--enrollment-target 200 \
--current-enrollment 120 \
--output optimized_criteria.json
# Analyze criteria complexity
python scripts/main.py analyze \
--input criteria.json \
--output analysis_report.json
# Compare with competitor trials
python scripts/main.py benchmark \
--input criteria.json \
--condition "Type 2 Diabetes" \
--output benchmark_report.json
Python API
from scripts.main import CriteriaGenerator, CriteriaOptimizer
# Generate new criteria
generator = CriteriaGenerator()
criteria = generator.generate(
indication="Type 2 Diabetes",
phase="Phase 2",
population="adults",
study_duration="24 weeks",
endpoints=["HbA1c reduction", "weight change"]
)
# Optimize existing criteria
optimizer = CriteriaOptimizer()
optimized = optimizer.optimize(
criteria=existing_criteria,
enrollment_target=200,
current_enrollment=120,
retention_rate=0.85
)
# Analyze criteria complexity
analysis = optimizer.analyze_complexity(criteria)
Input Format
Study Design Parameters
{
"indication": "Type 2 Diabetes Mellitus",
"phase": "Phase 2",
"population": "adults",
"age_range": {"min": 18, "max": 75},
"study_duration": "24 weeks",
"treatment_type": "oral",
"primary_endpoints": ["HbA1c change from baseline"],
"safety_considerations": ["cardiovascular risk"],
"concomitant_meds_allowed": ["metformin"]
}
Existing Criteria Format
{
"inclusion_criteria": [
{
"id": "I1",
"criterion": "Age 18-75 years",
"rationale": "Adult population per regulatory guidance",
"category": "demographics"
}
],
"exclusion_criteria": [
{
"id": "E1",
"criterion": "HbA1c < 7.0% or > 11.0%",
"rationale": "Ensure measurable treatment effect",
"category": "disease_severity"
}
]
}
Output Format
Generated/Optimized Criteria
{
"inclusion_criteria": [
{
"id": "I1",
"criterion": "Age 18-75 years, inclusive",
"category": "demographics",
"rationale": "Adult population; upper limit for safety",
"priority": "required",
"impact": "low"
}
],
"exclusion_criteria": [
{
"id": "E1",
"criterion": "HbA1c < 7.5% or > 10.5% at screening",
"category": "disease_severity",
"rationale": "Optimal range for detecting treatment effect",
"priority": "required",
"impact": "medium",
"flexibility": "widen by 0.5% if enrollment slow"
}
],
"optimization_notes": [
"Widened HbA1c range from 7.0-11.0% to 7.5-10.5% based on feasibility data"
],
"recruitment_metrics": {
"estimated_screen_success_rate": 0.35,
"estimated_enrollment_rate": 0.65,
"key_barriers": ["HbA1c upper limit", "concomitant medication restrictions"]
}
}
Criteria Categories
| Category | Description | Examples |
|---|---|---|
| demographics | Age, sex, race, ethnicity | Age 18-75, women of childbearing potential |
| disease_severity | Disease stage, severity markers | HbA1c range, tumor stage, NYHA class |
| medical_history | Prior conditions, comorbidities | No cardiovascular events within 6 months |
| concomitant_meds | Allowed/prohibited medications | Stable metformin dose allowed |
| laboratory | Lab value requirements | eGFR > 30 mL/min, normal liver function |
| lifestyle | Diet, exercise, habits | Non-smoker, willing to maintain diet |
| compliance | Ability to participate | Able to provide informed consent |
| safety | Risk minimization criteria | No history of severe hypoglycemia |
Optimization Strategies
Common Modifications
| Issue | Strategy | Example |
|---|---|---|
| Narrow age range | Widen limits | 18-70 → 18-75 years |
| Restrictive lab values | Adjust thresholds | eGFR > 60 → eGFR > 30 mL/min |
| Comorbidity exclusions | Add time limits | Exclude "current" vs "history of" |
| Medication washouts | Shorten periods | 4 weeks → 2 weeks |
| Geographic barriers | Add telemedicine | Include remote visits option |
Retention Considerations
- Minimize visit frequency when possible
- Allow window periods for visit timing
- Provide transportation assistance language
- Consider patient-reported outcome burden
Technical Details
- Difficulty: Medium
- Standards: ICH E6(R2) GCP, CDISC Protocol Representation Model
- Data Sources: ClinicalTrials.gov eligibility patterns, literature feasibility data
- Dependencies: None (pure Python)
References
references/criteria_templates.json- Templates by therapeutic areareferences/optimization_guidelines.md- Best practices for criteria optimizationreferences/common_pitfalls.md- Frequent eligibility design mistakesreferences/regulatory_guidance.md- FDA/EMA guidance on eligibility criteriareferences/feasibility_data.json- Screen failure rates by criterion type
Risk Assessment
| Risk Indicator | Assessment | Level |
|---|---|---|
| Code Execution | Python scripts with tools | High |
| Network Access | External API calls | High |
| File System Access | Read/write data | Medium |
| Instruction Tampering | Standard prompt guidelines | Low |
| Data Exposure | Data handled securely | Medium |
Security Checklist
- No hardcoded credentials or API keys
- No unauthorized file system access (../)
- Output does not expose sensitive information
- Prompt injection protections in place
- API requests use HTTPS only
- Input validated against allowed patterns
- API timeout and retry mechanisms implemented
- Output directory restricted to workspace
- Script execution in sandboxed environment
- Error messages sanitized (no internal paths exposed)
- Dependencies audited
- No exposure of internal service architecture
Prerequisites
# Python dependencies
pip install -r requirements.txt
Evaluation Criteria
Success Metrics
- Successfully executes main functionality
- Output meets quality standards
- Handles edge cases gracefully
- Performance is acceptable
Test Cases
- Basic Functionality: Standard input → Expected output
- Edge Case: Invalid input → Graceful error handling
- Performance: Large dataset → Acceptable processing time
Lifecycle Status
- Current Stage: Draft
- Next Review Date: 2026-03-06
- Known Issues: None
- Planned Improvements:
- Performance optimization
- Additional feature support
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
--indication | str | Required | Therapeutic indication |
--phase | str | Required | |
--population | str | "adults" | Target population |
--duration | str | "" | Study duration |
--output | str | Required | Output file path |
--age-min | int | 18 | Minimum age |
--age-max | int | 75 | Maximum age |
--input | str | Required | Input criteria JSON file |
--enrollment-target | int | Required | Target enrollment |
--current-enrollment | int | Required | Current enrollment |
--output | str | Required | Output file path |
--input | str | Required | Input criteria JSON file |
--output | str | Required | Output file path |
--input | str | Required | Input criteria JSON file |
--condition | str | Required | Medical condition |
--output | str | Required | Output file path |