Why this matters
Safety outputs do more than “fill the clinical study report (CSR).” They:
- Drive benefit–risk discussions in the program team.
- Become the backbone for the product label (Adverse Reactions, Warnings and Precautions, and sometimes a Boxed Warning).
- Must stand up to inspection: coded, consistent, and traceable back to source.
Getting the counting rules, coding, and narratives right early prevents rework at database lock and avoids inconsistencies between tables, listings, and narratives that can delay a submission.
Core concepts & definitions
Adverse Event (AE) Any untoward medical occurrence in a study participant, whether or not related to the product. AEs are usually collected from informed consent, so some start before the first dose.
Treatment‑Emergent Adverse Event (TEAE) An AE that starts or worsens during the protocol‑defined risk window (for example: from first dose until a set number of days after last dose). Define this window clearly in the statistical analysis plan (SAP) and the table shells (empty table layouts agreed in advance). A partial or missing start date is handled conservatively: the AE counts as treatment‑emergent unless the known date parts place it before the first dose.
Seriousness vs Severity
- Seriousness = outcome‑based (death, life‑threatening, hospitalization/prolongation, disability, congenital anomaly, or other important medical event).
- Severity = intensity (mild, moderate, severe). A severe headache is not automatically serious.
Relatedness (Causality) Investigator’s assessment (and sometimes sponsor’s) of whether the AE is possibly/probably/definitely related, or not related, to the study drug or procedure. State which scale you use and how you collapse categories for analysis.
MedDRA (Medical Dictionary for Regulatory Activities) coding
- Code AE text to Lowest Level Term (LLT) and Preferred Term (PT); summarize by PT and System Organ Class (SOC).
- Use the primary SOC for tabulations: a PT can sit in several SOCs, and the primary SOC stops double counting. Lock the dictionary version and record it with the data.
Counting rules
- Subjects with ≥1 event (unique subjects) vs Event counts (every occurrence). A subject counts once per PT, once per SOC and once overall, so the rows do not add up.
- Define how you handle worsening (e.g., mild → severe counts as one event with highest severity) and duplicates (e.g., same AE spanning visits).
- Define analysis populations (e.g., Safety Set, or safety population: anyone who got ≥1 dose, analysed by treatment actually received).
Outcomes Recovered/resolved, recovering/resolving, recovered with sequelae, not recovered (ongoing), fatal, or unknown. Use consistent categories and report outcomes in the narratives and tables.
Narratives A narrative is a short written account of one subject’s event. The CSR normally carries one for each death, each other serious adverse event (SAE), each AE leading to discontinuation, and each adverse event of special interest (AESI): an event the protocol singles out for close monitoring. Medical writers or safety physicians write them from the clinical database and the pharmacovigilance (PV) case; Data Management (DM) supplies clean, coded data. Subjects are identified by subject ID only, never by name or initials.
Exposure‑adjusted rates If treatment duration differs across arms, provide exposure‑adjusted summaries (for example, events per patient‑year: the arm’s number of events divided by its total time at risk). Explain the method in words in shells/SAP.
From study to label Each study’s tables and narratives go into its CSR, and the studies are then pooled in the submission’s integrated safety summaries. From these the sponsor proposes, and the regulator approves, the label’s safety sections: Adverse Reactions (the most common reactions, with incidence by arm), Warnings and Precautions (clinically significant risks and how to monitor them, often built on SAE and AESI narratives) and, for the most serious risks, a Boxed Warning. The label lists adverse reactions: events for which the pooled evidence gives reason to suspect a causal link to the product. That is a judgement on all the data, not the investigator’s relatedness answer for one event, so not every TEAE reaches the label.
From CRF to table to narrative
Sites enter AEs in the electronic data capture (EDC) system; DM raises queries, codes the terms and reconciles SAEs with PV; biostatistics and programming build the tables and listings to the SAP.
Capture & clean AEs
- Collect structured fields (start/stop dates, severity, seriousness criteria, relatedness, outcome).
- The site enters the AE term; keep that verbatim text. For a numbers‑only term like “ALT=95”, DM queries the site for the clinical concept (e.g., “ALT increased”, which codes to “Alanine aminotransferase increased”); DM never rewrites it.
Code with MedDRA
- Store LLT/PT/SOC and the dictionary version.
- Apply the primary SOC for tabulations. Document any manual recoding and why.
Define populations & windows
- Safety set definition and TEAE window.
- Version and archive any derivation logic (e.g., how you classify “treatment‑related” and “treatment‑emergent”).
Build tables & listings
- Core tables, each with one column per treatment arm: by SOC/PT, by severity, by seriousness, by relatedness, by outcome, plus deaths, discontinuations due to AEs, and AESI.
- Provide both subject‑level (≥1 event) and event‑level views when appropriate.
- Include exposure‑adjusted views when exposure differs meaningfully.
Draft narratives
- Use a consistent template: Who, baseline risks, exposure, event timeline, actions, outcome, seriousness criterion, relatedness, and alignment to coded PT/SOC.
- Reference source documents; link them in your e‑narrative system.
- A narrative names the treatment only after unblinding; blinded drafts leave it out.
QC & traceability
- Cross‑check counts between tables, listings, and narratives.
- Verify seriousness, severity, dates, and relatedness in each narrative against the clinical database and the PV case (which holds the source documents the site sent). A mismatch is corrected in the record that is wrong, by its owner: the site in EDC through a query, PV in the safety case, the writer in the narrative. Data are never changed to fit a narrative.
- Preserve an audit trail (coding decisions, dictionary version, derivation code, and outputs).
What good looks like
Well‑labeled table shells (titles, populations, windows, and counting rules):
Table X. TEAEs by System Organ Class and Preferred Term
Population: Safety Set (any subject receiving ≥1 dose), by treatment actually received
Columns: one per treatment arm, headed with that arm’s N
Window: First dose through 30 days after last dose
Cell values: n (%) = subjects with ≥1 event; percentage of the arm’s N
Counting rule: Multiple events under the same PT for a subject are counted once; severity summarized in a separate table by highest severity per subject.
Narratives that match the data
- PT in narrative matches the coded PT.
- Dates in narrative reflect the analysis dataset.
- Seriousness criterion and outcome clearly stated.
- Hyperlinks to source (e.g., hospitalization record, lab report).
Exposure‑aware views
- If Arm A has longer exposure than Arm B, include exposure‑adjusted summaries and say why they’re shown.
Worked examples
This example is self‑contained. It shows how raw AE entries become tables and a defensible narrative.
Mini study context
- Design: 6 subjects (Drug n=4; Placebo n=2).
- TEAE window: First dose to 30 days after last dose.
- Safety Set (N=6): Everyone dosed at least once.
- Layout: The example is set after database lock and unblinding, so the records show each subject’s arm. Final tables have one column per arm, with that arm’s N as denominator. Outputs A‑D show the pooled totals (N = 6), the only view blinded staff have during a study, and give the by‑arm figures beneath.
Mock AE records (already coded to PT/SOC)
| Subject | Arm | SOC | PT | Severity | Serious? | Related? | Outcome |
|---|---|---|---|---|---|---|---|
| S01 | Drug | Gastrointestinal disorders | Nausea | Mild | N | Y | Recovered/Resolved |
| S01 | Drug | Nervous system disorders | Headache | Moderate | N | Y | Recovered/Resolved |
| S02 | Drug | Nervous system disorders | Dizziness | Mild | N | Y | Recovered/Resolved |
| S02 | Drug | Vascular disorders | Hypotension | Severe | Y | N | Recovered/Resolved |
| S03 | Drug | Investigations | Alanine aminotransferase increased | Moderate | N | Y | Recovered/Resolved |
| S03 | Drug | Gastrointestinal disorders | Nausea | Mild | N | N | Recovered/Resolved |
| S04 | Drug | Gastrointestinal disorders | Upper gastrointestinal haemorrhage | Severe | Y | Y | Recovered/Resolved |
| S05 | Placebo | Nervous system disorders | Headache | Mild | N | N | Recovered/Resolved |
| S05 | Placebo | Infections and infestations | Urinary tract infection | Moderate | N | N | Recovered/Resolved |
| S06 | Placebo | — | — | — | — | — | — |
Notes: “Serious?” reflects the ICH seriousness criteria; “Related?” is investigator causality. For subjects with multiple entries under a PT, a subject is counted once per PT in subject‑level tables. All nine events fall inside the TEAE window; an event‑level table would count 9 events (Drug 7, Placebo 2).
Output A — TEAEs by SOC and PT (subjects with ≥1 event)
Population: Safety Set (N = 6). Cell values are n (%).
| SOC | Preferred Term | n (%) |
|---|---|---|
| Gastrointestinal disorders | Nausea | 2 (33.3%) |
| Upper gastrointestinal haemorrhage | 1 (16.7%) | |
| Infections and infestations | Urinary tract infection | 1 (16.7%) |
| Investigations | Alanine aminotransferase increased | 1 (16.7%) |
| Nervous system disorders | Headache | 2 (33.3%) |
| Dizziness | 1 (16.7%) | |
| Vascular disorders | Hypotension | 1 (16.7%) |
Subjects with ≥1 TEAE (any): 5 (83.3%) of 6. By arm: Drug 4 of 4 (100.0%); Placebo 1 of 2 (50.0%).
Output B — TEAEs by highest severity (subjects)
Population: Safety Set (N = 6). Each subject appears once, by their highest severity across all TEAEs.
| Highest severity | n (%) |
|---|---|
| Mild | 0 (0.0%) |
| Moderate | 3 (50.0%) |
| Severe | 2 (33.3%) |
| None (no TEAE) | 1 (16.7%) |
Output C — Serious AEs (subjects with ≥1 SAE) by SOC
Population: Safety Set (N = 6). Seriousness per ICH.
| SOC | n (%) |
|---|---|
| Gastrointestinal disorders | 1 (16.7%) |
| Vascular disorders | 1 (16.7%) |
Subjects with ≥1 SAE (any): 2 (33.3%) of 6. By arm: Drug 2 of 4 (50.0%); Placebo 0 of 2 (0.0%).
Output D — Treatment‑related TEAEs (subjects with ≥1 related TEAE)
Population: Safety Set (N = 6). Definition: “Related” includes possible/probable/definite.
- Subjects with ≥1 related TEAE: 4 (66.7%) of 6. By arm: Drug 4 of 4 (100.0%); Placebo 0 of 2 (0.0%).
Example narrative (for Subject S04, SAE)
Subject S04, adult participant assigned to Drug.
Baseline risks (per medical history/medication list for this example): prior dyspepsia; intermittent NSAID use.
Exposure: First dose on Day 1; on drug at time of event.
Event: On Day 8, the subject developed upper gastrointestinal haemorrhage (coded PT; SOC: Gastrointestinal disorders). The event was associated with melena and a drop in hemoglobin; the subject was hospitalized (seriousness criterion: inpatient hospitalization).
Actions: Study drug stopped on Day 8; subject received proton pump inhibitor and endoscopic therapy.
Outcome: Recovered on Day 12; study drug not restarted (action taken: drug withdrawn).
Severity: Severe.
Causality: Possibly related (investigator).
Concomitants/risks: NSAID exposure noted within 48 hours prior to onset.
Source: Hospital discharge summary and endoscopy report (linked in e‑narrative).
Coding alignment: Narrative term maps to coded PT “Upper gastrointestinal haemorrhage”; dates match AE start/stop in the dataset.
This narrative includes the who/what/when, treatment actions, seriousness criterion, outcome, and explicit alignment to the coded PT/SOC and source—everything a reviewer needs.
Pitfalls & misconceptions
- Confusing seriousness with severity. Seriousness is about outcome (e.g., hospitalization), severity is intensity (mild/moderate/severe).
- Numeric lab values as AE terms. Use the clinical concept (“Alanine aminotransferase increased”), not “ALT 95.”
- Mixing MedDRA versions across pooled studies. Lock and document versions; recode methodically if pooling.
- Changing derivations mid‑study without versioning. Always version derivation logic (TEAE window, relatedness collapse, severity roll‑up).
- Inconsistent counting units. Don’t compare subject counts in one arm to event counts in another.
- Percentages on tiny denominators without context. Show N and the count beside every percentage.
- Narratives that don’t match coded data. PTs, dates, seriousness, and outcomes must reconcile across narrative, listings, and tables.
Practice in the wild (checklist)
- Agree shells early (titles, populations, windows, counting rules) and align with the SAP.
- Lock MedDRA version; archive coding decisions and any recoding.
- Define TEAE window and document derivations (including worsening logic).
- Build both views: subject‑level (≥1) and event‑level where helpful; add exposure‑adjusted if exposure differs.
- Use a narrative template and ensure narratives match coded PT/SOC, dates, seriousness criterion, and outcome.
- QC across outputs: tables ↔ listings ↔ narratives ↔ source.
- Traceability pack: store dictionary version, derivation code, and signed narrative approvals with links to source.
Key points to remember
TEAE definition: Count AEs that start or worsen within the protocol‑defined risk window (e.g., first dose → X days after last dose). State the window in shells/SAP and apply it consistently.
Analysis populations: Specify the Safety Set (≥1 dose) and any other populations up front in table titles and shells.
Seriousness ≠ Severity:
- Seriousness is outcome‑based (e.g., hospitalization, death, important medical event).
- Severity is intensity (mild/moderate/severe). Present them in separate tables; list SAEs with the seriousness criterion.
MedDRA coding fundamentals: Code to LLT/PT and summarize by PT and primary SOC. Lock and record the MedDRA version with the data; do not mix versions across pooled analyses (recode methodically if needed).
Counting conventions (be explicit):
- Subject‑level tables: each subject counted once per PT, once per SOC and once overall.
- Event‑level tables: every occurrence.
- Worsening (e.g., mild → severe): count once for the PT; roll up the subject’s highest severity in the severity table.
- Define handling of duplicates/continuations and relatedness collapses; version all derivations.
Exposure differences: When treatment duration differs across arms, add exposure‑adjusted summaries (e.g., events per patient‑year) and describe the method in shells/SAP.
Outcomes: Use consistent outcome categories (recovered, recovering, recovered with sequelae, not recovered, fatal, unknown) and reflect them in both tables and narratives.
Narratives that match the data: Write one for each death, other SAE, discontinuation due to an AE and AESI. Use a standard template (who/what/when, baseline risks, exposure, actions, seriousness criterion, causality, outcome). Ensure the narrative PT/SOC and dates align to the coded dataset and link to source.
Well‑labeled shells: Titles include population, window, and cell definitions (e.g., n (%), unique subjects vs events); columns are treatment arms, each with its own N. Avoid comparing subject counts to event counts across arms.
Data capture hygiene: Keep original verbatim AE text; use clinical concepts (e.g., “Alanine aminotransferase increased,” not “ALT=95”). The site corrects the term; DM queries.
QC & traceability: Reconcile tables ↔ listings ↔ narratives ↔ source. Preserve an audit trail (coding decisions, dictionary version, derivation code, narrative approvals).
Label readiness: Safety tables and narratives go into the CSR and pooled safety summaries, then flow into the product label, which lists adverse reactions, not every AE; keep outputs consistent, defensible, and traceable to withstand inspection.