Adverse Event Narrative Generator
Overview
Regulatory-grade narrative generation tool that transforms adverse event case data into CIOMS-compliant ICSR narratives suitable for submission to FDA, EMA, and other health authorities.
Key Capabilities:
- - CIOMS I Compliance: Standardized narrative structure per international guidelines
- ICH E2B Integration: Electronic submission format compatibility
- Temporal Analysis: Timeline reconstruction and causality assessment
- Medical Accuracy: Clinical terminology and MedDRA coding
- Multi-Case Processing: Batch narrative generation for periodic reporting
- Quality Validation: Automated checks for completeness and consistency
When to Use
✅ Use this skill when:
- - Drafting ICSR narratives for regulatory submissions
- Converting safety case data to standardized text
- Preparing adverse event reports for health authorities
- Generating case summaries for signal detection
- Creating pharmacovigilance documentation for clinical trials
- Standardizing narrative format across safety teams
- Training new drug safety associates on narrative writing
❌ Do NOT use when:
- - Case requires medical judgment or causality assessment → Use qualified safety physician
- Narrative for litigation or legal proceedings → Use legal documentation standards
- Patient-facing communications → Use INLINECODE0
- Aggregate safety summaries → Use INLINECODE1
- Coding MedDRA terms from verbatim → Use INLINECODE2
Integration:
- - Upstream:
meddra-coder (MedDRA term coding), clinical-data-cleaner (data preparation) - Downstream:
safety-summary-reports (aggregate analysis), regulatory-submission-prep (FDA/EMA filing)
Core Capabilities
1. CIOMS I Narrative Structure
Generate standardized sections per CIOMS guidelines:
CODEBLOCK0
Standard Sections:
- 1. Patient Demographics - Age, sex, weight, relevant characteristics
- Medical History - Significant pre-existing conditions
- Concomitant Medications - Other drugs at time of event
- Suspect Drug(s) - Medication(s) in question with dosing
- Adverse Event - Detailed reaction description with MedDRA terms
- Diagnostic Results - Lab values, imaging, procedures
- Treatment - Medical management of the event
- Dechallenge/Rechallenge - Effect of drug withdrawal/reintroduction
- Outcome - Final patient status and sequelae
- Causality Assessment - Reporter's relationship evaluation
2. Temporal Relationship Analysis
Reconstruct timeline and assess temporal plausibility:
CODEBLOCK1
Assessments Generated:
- - Time to onset (latency period)
- Dechallenge response (positive/negative/unknown)
- Rechallenge response (if applicable)
- Temporal plausibility (consistent with known drug profile)
3. Causality Evaluation Support
Structure causality assessment per WHO-UMC criteria:
CODEBLOCK2
WHO-UMC Categories:
- - Certain - Event reproduced on rechallenge
- Probable/Likely - Reasonable time, positive dechallenge, alternative causes unlikely
- Possible - Compatible time, but alternative causes possible
- Unlikely - Incompatible time or alternative cause probable
- Conditional/Unclassified - Insufficient information
- Unassessable/Unclassifiable - Data contradictory or incomplete
4. Multi-Format Output
Generate narratives for different regulatory contexts:
CODEBLOCK3
Common Patterns
Pattern 1: Serious Adverse Event (Hospitalization)
Scenario: Patient hospitalized for severe drug reaction.
CODEBLOCK4
Narrative Emphasis:
- - Hospitalization details (admission/discharge dates)
- Severity markers (ICU stay, intubation)
- Lactate levels and trend
- Renal function status
- Complete recovery timeline
Pattern 2: Fatal Outcome Case
Scenario: Death suspected to be drug-related.
CODEBLOCK5
Critical Elements:
- - Complete medical history relevant to death
- Concomitant medications contributing
- Autopsy findings (if performed)
- Cause of death per death certificate
- Alternative causes ruled out
- Reporter's opinion on contribution to death
Pattern 3: Rechallenge Case
Scenario: Positive rechallenge confirms drug causation.
Key Documentation:
- - First exposure dates and reaction
- Dechallenge response
- Rechallenge dates and circumstances
- Recurrence of same reaction
- Any differences in severity
- Conclusion on causality
Narrative Structure:
CODEBLOCK6
Pattern 4: Multi-Drug Reaction
Scenario: Multiple suspect drugs, need to identify most likely culprit.
Analysis Approach:
- - Temporal sequence of drug initiations
- Time to onset for each drug
- Known adverse reaction profiles
- Dechallenge attempts (if any)
- Rechallenge data (if any)
- Reporter's primary suspect
Narrative Organization:
- 1. List all suspect drugs with indication and dates
- Describe temporal relationship for each
- Discuss dechallenge/rechallenge for each
- Present reporter's causality assessment
- Include alternative explanations
Complete Workflow Example
From case data to regulatory submission:
CODEBLOCK7
Python API:
CODEBLOCK8
Quality Checklist
Pre-Generation:
- - [ ] Case ID unique and formatted per SOP
- [ ] Patient age/sex complete
- [ ] Suspect drug(s) clearly identified
- [ ] Adverse event(s) coded with MedDRA PT
- [ ] Dates consistent (no future dates)
- [ ] Reporter information included
Narrative Content:
- - [ ] All CIOMS I sections present
- [ ] Temporal sequence clear and logical
- [ ] Dechallenge/rechallenge described (if applicable)
- [ ] Lab values with reference ranges
- [ ] Concomitant medications listed
- [ ] Medical history relevant to event
- [ ] Outcome clearly stated
- [ ] Causality assessment justified
Post-Generation:
- - [ ] MedDRA terms accurate and current
- [ ] No contradictory information
- [ ] Language objective and factual
- [ ] No speculation or opinion (except causality section)
- [ ] Patient identifiers removed or de-identified
- [ ] CRITICAL: Medical review completed
- [ ] CRITICAL: Causality assessment by qualified physician
Common Pitfalls
Completeness Issues:
- - ❌ Missing dechallenge information → Cannot assess causality
- ✅ Always document effect after drug discontinuation
- - ❌ Vague temporal information → "Recently started" vs. specific dates
- ✅ Use exact dates when available
- - ❌ Incomplete concomitant medication list → Alternative causes missed
- ✅ Include all medications within relevant timeframe
Medical Accuracy Issues:
- - ❌ Incorrect MedDRA coding → Wrong medical concept
- ✅ Use current MedDRA version; verify with medical reviewer
- - ❌ Confusing correlation with causation → Temporal = causal
- ✅ Clearly state "temporally associated" vs. "causally related"
- - ❌ Omitting alternative diagnoses → Biased toward drug causation
- ✅ Include all differential diagnoses considered
Regulatory Issues:
- - ❌ Opinion in narrative body → "Clearly caused by drug"
- ✅ Reserve opinion for causality section; narrative should be factual
- - ❌ Patient identifiers → HIPAA/privacy violation
- ✅ De-identify per regulatory requirements
- - ❌ Abbreviations not defined → Assumes reader knowledge
- ✅ Spell out on first use in each narrative
References
Available in references/ directory:
- -
cioms_i_guidelines.pdf - CIOMS I international reporting standards - INLINECODE9 - ICH E2B(R3) electronic format details
- INLINECODE10 - MedDRA terminology and coding principles
- INLINECODE11 - WHO causality assessment criteria
- INLINECODE12 - FDA Form 3500A instructions
- INLINECODE13 - EU Good Pharmacovigilance Practices
- INLINECODE14 - Example narratives by case type
Scripts
Located in scripts/ directory:
- -
main.py - CLI interface for narrative generation - INLINECODE17 - Core narrative composition engine
- INLINECODE18 - Timeline reconstruction and analysis
- INLINECODE19 - Causality evaluation support
- INLINECODE20 - Medical terminology and coding
- INLINECODE21 - Completeness and quality checks
- INLINECODE22 - Convert between CIOMS, E2B, MedWatch formats
- INLINECODE23 - Multi-case narrative generation
Limitations
- - Medical Review Required: Generates draft only; requires physician review before submission
- Causality Assessment: Structures reporter's assessment; does not perform independent causality evaluation
- MedDRA Version: Uses installed MedDRA version; may not have latest terms
- Language: Optimized for English; other languages may need translation
- Literature Integration: Does not automatically search literature for similar cases
- Signal Detection: Individual case narratives only; aggregate analysis requires other tools
- Legal Proceedings: Not suitable for litigation support or expert witness reports
⚠️ CRITICAL: This tool generates draft narratives for efficiency. All adverse event narratives require review by qualified drug safety physicians before regulatory submission. Causality assessment must be performed by healthcare professionals with access to complete medical records.
不良事件叙述生成器
概述
符合监管要求的叙述生成工具,可将不良事件病例数据转化为符合CIOMS标准的ICSR叙述,适用于向FDA、EMA及其他卫生监管机构提交。
关键能力:
- - CIOMS I合规性:按照国际指南构建标准化叙述结构
- ICH E2B集成:兼容电子提交格式
- 时间分析:时间线重建与因果关系评估
- 医学准确性:临床术语与MedDRA编码
- 多病例处理:批量生成定期报告所需叙述
- 质量验证:自动检查完整性与一致性
使用时机
✅ 适用场景:
- - 起草用于监管提交的ICSR叙述
- 将安全病例数据转换为标准化文本
- 为卫生监管机构准备不良事件报告
- 生成用于信号检测的病例摘要
- 创建临床试验药物警戒文档
- 跨安全团队统一叙述格式
- 培训新药品安全专员撰写叙述
❌ 不适用场景:
- - 病例需要医学判断或因果关系评估 → 使用合格安全医师
- 用于诉讼或法律程序的叙述 → 使用法律文档标准
- 面向患者的沟通内容 → 使用lay-summary-gen
- 汇总安全性摘要 → 使用safety-summary-reports
- 从原始描述编码MedDRA术语 → 使用meddra-coder
集成关系:
- - 上游:meddra-coder(MedDRA术语编码)、clinical-data-cleaner(数据准备)
- 下游:safety-summary-reports(汇总分析)、regulatory-submission-prep(FDA/EMA提交)
核心能力
1. CIOMS I叙述结构
按照CIOMS指南生成标准化章节:
python
from scripts.narrative_generator import NarrativeGenerator
generator = NarrativeGenerator()
生成完整叙述
narrative = generator.generate(
case
data=casejson,
format=cioms
i, # 或 iche2b、fda_medwatch
include_meddra=True
)
narrative.save(ICSR2024001_narrative.txt)
标准章节:
- 1. 患者人口学信息 - 年龄、性别、体重、相关特征
- 病史 - 重要的既往疾病
- 合并用药 - 事件发生时使用的其他药物
- 可疑药物 - 涉及的可疑药物及剂量
- 不良事件 - 使用MedDRA术语的详细反应描述
- 诊断结果 - 实验室数值、影像学检查、操作
- 治疗措施 - 事件处理的医疗管理
- 停药/再用药 - 药物停用/重新使用的影响
- 结局 - 患者最终状态及后遗症
- 因果关系评估 - 报告者的关系评价
2. 时间关系分析
重建时间线并评估时间合理性:
python
分析时间关系
timeline = generator.analyze_timeline(
drug_start=2024-01-15,
drug_stop=2024-02-01,
ae_onset=2024-01-28,
dechallenge_date=2024-02-01,
rechallenge_date=None
)
输出显示时间评估结果
不良事件在用药后13天发生,停药后24小时内呈阳性反应
生成的评估内容:
- - 发病时间(潜伏期)
- 停药反应(阳性/阴性/未知)
- 再用药反应(如适用)
- 时间合理性(与已知药物特征一致)
3. 因果关系评估支持
按照WHO-UMC标准构建因果关系评估:
python
生成因果关系章节
causality = generator.assess_causality(
case_data=case,
criteria=who_umc, # 或 naranjo、cochrane
include_rationale=True
)
输出结构化评估,包含各标准评分
WHO-UMC分类:
- - 确定 - 再用药后事件重现
- 很可能/可能 - 时间合理,停药阳性,其他原因可能性低
- 可能 - 时间相符,但其他原因也可能
- 不可能 - 时间不符或可能由其他原因导致
- 条件性/未分类 - 信息不足
- 不可评估/不可分类 - 数据矛盾或不完整
4. 多格式输出
为不同监管环境生成叙述:
python
FDA MedWatch 3500A表格
fda_narrative = generator.generate(
case_data=case,
format=fda_medwatch,
max_length=2000 # 字符限制
)
EMA E2B(R3)电子格式
ema_narrative = generator.generate(
case_data=case,
format=ich_e2b,
version=R3
)
CIOMS I纸质格式
cioms_narrative = generator.generate(
case_data=case,
format=cioms_i
)
常见模式
模式1:严重不良事件(住院)
场景:患者因严重药物反应住院。
json
{
case_id: 2024-SAE-001,
patient_age: 58岁,
patient_sex: 女性,
suspect_drugs: [{
drug_name: 二甲双胍,
dose: 1000 mg 每日两次,
dates: 2024-01-15 至 2024-02-01
}],
adverse_events: [{
meddra_pt: 乳酸酸中毒,
seriousness: 住院,
onset: 2024-01-28
}],
outcome: 痊愈伴后遗症
}
叙述重点:
- - 住院详情(入院/出院日期)
- 严重程度标志(ICU住院、插管)
- 乳酸水平及变化趋势
- 肾功能状态
- 完整恢复时间线
模式2:死亡结局病例
场景:疑似与药物相关的死亡。
python
死亡病例处理
narrative = generator.generate(
case
data=fatalcase,
format=cioms_i,
include_autopsy=True,
cause
ofdeath_analysis=True
)
关键要素:
- - 与死亡相关的完整病史
- 可能起作用的合并用药
- 尸检结果(如进行)
- 死亡证明上的死因
- 已排除的其他原因
- 报告者对药物导致死亡的意见
模式3:再用药病例
场景:阳性再用药结果确认药物因果关系。
关键记录:
- - 首次暴露日期及反应
- 停药反应
- 再用药日期及情况
- 相同反应复发
- 严重程度的差异
- 因果关系结论
叙述结构:
首次暴露:
- - 药物X开始使用 [日期]
- 不良事件发生 [日期],[描述]
- 药物停用 [日期]
- 停药反应:[阳性/阴性]
再用药:
- - 药物X重新使用 [日期]
- 相同不良事件复发 [日期]
- 药物停用 [日期]
- 结局:[状态]
因果关系:确定(阳性再用药)
模式4:多药反应
场景:多种可疑药物,需确定最可能的致因药物。
分析方法:
- - 各药物开始使用的时间顺序
- 每种药物的发病时间
- 已知的不良反应特征
- 停药尝试(如有)
- 再用药数据(如有)
- 报告者主要怀疑的药物
叙述组织:
- 1. 列出所有可疑药物及其适应症和日期
- 描述每种药物的时间关系
- 讨论每种药物的停药/再用药情况
- 呈现报告者的因果关系评估
- 包括替代解释
完整工作流程示例
从病例数据到监管提交:
bash
步骤1:生成叙述
python scripts/main.py \
--input case_data.json \
--format cioms_i \
--output narrative.txt
步骤2:验证完整性
python scripts/validate.py \
--narrative narrative.txt \
--check cioms_completeness \
--output validation_report.txt
步骤3:生成电子提交的E2B格式
python scripts/main.py \
--input case_data.json \
--format ich_e2b \
--output e2b_narrative.xml
步骤4:医学审查标注
python scripts/review.py \
--narrative narrative.txt \
--output review_version.txt
Python API:
python
from scripts.narrative_generator import NarrativeGenerator
from scripts.validator import NarrativeValidator
初始化
generator = NarrativeGenerator()
validator = NarrativeValidator()
加载病例数据
import json
with open(case_001.json, r) as f:
case = json.load(f)
生成叙述
narrative = generator.generate(
case_data=case,
format=ci