Determine whether an incident in a clinical trial is a "major deviation.
Clinical trial protocol deviation classification tool, based on GCP and ICH E6 guidelines, automatically determines whether deviations belong to "major deviations" or "minor deviations".
See ## Features above for related details.
scripts/main.py.references/ for task-specific guidance.See ## Usage above for related details.
cd "20260318/scientific-skills/Data Analytics/protocol-deviation-classifier"
python -m py_compile scripts/main.py
python scripts/main.py --help
Example run plan:
CONFIG block or documented parameters if the script uses fixed settings.python scripts/main.py with the validated inputs.See ## Workflow above for related details.
scripts/main.py.references/ contains supporting rules, prompts, or checklists.Use this command to verify that the packaged script entry point can be parsed before deeper execution.
python -m py_compile scripts/main.py
Use these concrete commands for validation. They are intentionally self-contained and avoid placeholder paths.
python -m py_compile scripts/main.py
python scripts/main.py --help
python scripts/main.py --input "Audit validation sample with explicit symptoms, history, assessment, and next-step plan." --format json
Deviations that may affect trial data integrity, subject safety, or trial scientific validity:
| Category | Examples |
|---|---|
| Informed Consent | Performing research procedures without informed consent, using expired/incorrect informed consent forms |
| Inclusion/Exclusion Criteria | Enrolling subjects who don't meet inclusion criteria, enrolling subjects who meet exclusion criteria |
| Investigational Product | Overdose administration, contraindicated concomitant medication, incorrect route of administration, randomization error |
| Safety | Not performing safety monitoring as required by protocol, missing SAE/SUSAR reports, delayed reporting |
| Blinding | Unblinding by unauthorized personnel, unrecorded emergency unblinding procedures |
| Data Integrity | Falsifying/fabricating data, systematic missing of critical data |
| Prohibited Operations | Violating key operational procedures of trial protocol, not performing key efficacy assessments |
Deviations unlikely to affect trial data integrity, subject safety, or trial scientific validity:
| Category | Examples |
|---|---|
| Visit Window | Slightly exceeding visit time window (e.g., within a few days), delay of non-critical visits |
| Sample Collection | Minor timing deviations in non-critical sample collection, slight delays in sample processing |
| Questionnaire Completion | Quality of life questionnaires/diary cards submitted a few days late |
| Data Recording | Delays in non-critical data recording, spelling/formatting errors |
| Procedure Execution | Adjustment of secondary procedure execution order, omission of non-critical assessments (e.g., height measurement) |
| Documentation | Delays in source document signatures, missing secondary documents (e.g., non-critical examination reports) |
from scripts.main import DeviationClassifier
# Initialize classifier
classifier = DeviationClassifier()
# Classify single deviation
result = classifier.classify(
description="Subject visit delayed by 2 days",
deviation_type="Visit Window"
)
print(result.classification) # "Minor Deviation"
print(result.confidence) # 0.92
print(result.rationale) # Classification rationale explanation
# Batch classification
deviations = [
{"description": "Blood sample collected without informed consent", "type": "Informed Consent"},
{"description": "Quality of life questionnaire submitted 3 days late", "type": "Data Collection"}
]
batch_results = classifier.classify_batch(deviations)
# Generate report
report = classifier.generate_report(batch_results)
# Classify single deviation
python scripts/main.py classify --description "Subject visit delayed by 2 days" --type "Visit Window"
# Batch classification from file
python scripts/main.py batch --input deviations.json --output report.json
# Interactive classification
python scripts/main.py interactive
# Assess deviation impact
python scripts/main.py assess \
--description "Subject accidentally took double dose of investigational drug" \
--safety-impact high \
--data-impact medium \
--scientific-impact medium
JSON Input File Format:
[
{
"id": "DEV-001",
"description": "Subject visit delayed by 2 days",
"type": "Visit Window",
"occurrence_date": "2024-01-15",
"severity_factors": {
"safety_impact": "none",
"data_impact": "low",
"scientific_impact": "low"
}
},
{
"id": "DEV-002",
"description": "Blood collection performed without informed consent",
"type": "Informed Consent",
"severity_factors": {
"safety_impact": "high",
"data_impact": "high",
"scientific_impact": "high"
}
}
]
Classification Result:
{
"id": "DEV-001",
"classification": "Minor Deviation",
"classification_en": "Minor Deviation",
"confidence": 0.92,
"rationale": "Visit time window slightly delayed (2 days), does not affect subject safety, data integrity, or trial scientific validity.",
"risk_factors": {
"safety_risk": "none",
"data_integrity_risk": "low",
"scientific_validity_risk": "none"
},
"regulatory_basis": [
"ICH E6(R2) Section 4.5",
"GCP Section 6.4.4"
],
"recommended_actions": [
"Document in file",
"Track trends"
]
}
Classification based on the following assessment dimensions:
Subject Safety Impact (Safety Impact)
Data Integrity Impact (Data Integrity Impact)
Trial Scientific Validity Impact (Scientific Validity Impact)
Classification Rules:
| Risk Indicator | Assessment | Level |
|---|---|---|
| Code Execution | Python/R scripts executed locally | Medium |
| Network Access | No external API calls | Low |
| File System Access | Read input files, write output files | Medium |
| Instruction Tampering | Standard prompt guidelines | Low |
| Data Exposure | Output files saved to workspace | Low |
# Python dependencies
pip install -r requirements.txt
Every final response should make these items explicit when they are relevant:
scripts/main.py fails, report the failure point, summarize what still can be completed safely, and provide a manual fallback.This skill accepts requests that match the documented purpose of protocol-deviation-classifier and include enough context to complete the workflow safely.
Do not continue the workflow when the request is out of scope, missing a critical input, or would require unsupported assumptions. Instead respond:
protocol-deviation-classifieronly handles its documented workflow. Please provide the missing required inputs or switch to a more suitable skill.
Use the following fixed structure for non-trivial requests:
If the request is simple, you may compress the structure, but still keep assumptions and limits explicit when they affect correctness.