Tutorials › Biostatistics › Adverse Event Tables: SOC and PT Reporting

Clinical Trial Safety Reporting

Adverse Event Tables: SOC and PT Reporting

A practical guide to building adverse event summary tables by MedDRA System Organ Class (SOC) and Preferred Term (PT), including treatment-emergent adverse events, subject-level counting, severity, seriousness, relatedness, denominator selection, and quality control.

Advanced 18 min read

What You'll Learn

  • How MedDRA SOC and PT levels organize adverse event reporting
  • How treatment-emergent adverse events and analysis denominators are defined
  • Why AE tables generally report subjects, not raw event records
  • How SOC and PT counts are derived when subjects have multiple events
  • How severity, seriousness, and treatment relatedness are summarized
  • How to QC and document an analysis-ready SOC/PT AE table

Introduction

Adverse event tables are among the most frequently reviewed outputs in a clinical study. They appear in statistical analysis plans, tables/listings/ figures specifications, clinical study reports, submission packages, and safety reviews.

A typical safety summary is organized using the Medical Dictionary for Regulatory Activities (MedDRA). Events are commonly presented first at the System Organ Class (SOC) level and then at the Preferred Term (PT) level.

The challenge is that an adverse event dataset contains event records, whereas the headline percentage in an AE table is usually a number of subjects who experienced at least one event in the specified category.

Key idea: For a standard AE summary, the unit being counted is usually the unique subject, not the number of AE records. A subject with three occurrences of the same PT generally contributes one to the PT count, provided all three records meet the table's analysis criteria.

The MedDRA Hierarchy

MedDRA organizes medical concepts through a hierarchical structure. For routine clinical trial safety tables, the levels most relevant to AE reporting are the System Organ Class (SOC), High Level Group Term (HLGT), High Level Term (HLT), and Preferred Term (PT).

The PT is generally the most recognizable row-level concept in a standard SOC/PT AE table. Each PT belongs to a defined hierarchy, allowing related PTs to be grouped under an SOC.

MedDRA level Role in a typical AE table
SOC Broad organ-system category used to group PTs.
HLGT Intermediate grouping below SOC; usually not displayed in a standard SOC/PT summary.
HLT More specific grouping below HLGT; usually not displayed in a standard SOC/PT summary.
PT Standardized medical concept commonly displayed as the detailed event row.
Reporting principle: The exact hierarchy, terminology version, SOC display order, PT ordering, and analysis rules should be prespecified in the study's specifications and should be reproduced consistently in production and QC programs.

What Is a Treatment-Emergent Adverse Event?

Before building the table, the analysis population must be defined. A common safety analysis is based on treatment-emergent adverse events (TEAEs).

Conceptually, a TEAE is an adverse event that starts or worsens after the relevant treatment exposure begins, according to the study's prespecified algorithm.

The exact definition matters. For example, a protocol or SAP may distinguish between events that were present before first dose, events that started after first dose, and pre-existing events that increased in severity after treatment. The analysis specification—not an informal assumption—should determine which records enter the TEAE table.

Do not start with the table shell. Start by defining the analysis flag. If the TEAE population is wrong, every SOC count, PT count, percentage, severity summary, and relatedness summary can be wrong even if the final table looks perfect.

The Denominator

Most AE tables report both a count and a percentage. For treatment group \(g\), let \(N_g\) be the number of subjects in the specified safety analysis set.

If \(n_{gj}\) subjects in treatment group \(g\) experience AE category \(j\), the percentage is:

$$ \text{Percentage}_{gj} = 100\times\frac{n_{gj}}{N_g}. $$

The denominator should correspond to the population defined for the table. In many randomized trials this is the number of subjects in the safety set for the treatment group. However, the SAP may specify a different population or special denominator rules for particular analyses.

Common error: Do not use the number of AE records as the denominator. A subject can contribute many records but is still one subject in the safety denominator.

Subjects, Not Events, Are Usually Counted

Suppose Subject 101 has headache recorded three times. If all three records map to the same PT and meet the analysis criteria, the standard subject-level PT count is still one.

Mathematically, define an indicator for subject \(i\) and AE category \(j\):

$$ I_{ij} = \begin{cases} 1, & \text{if subject }i\text{ has at least one qualifying event in category }j,\\ 0, & \text{otherwise.} \end{cases} $$

Then the number of subjects with category \(j\) in treatment group \(g\) is:

$$ n_{gj}=\sum_{i\in g} I_{ij}. $$

This is the fundamental reason that a simple frequency of AE records can produce incorrect table results.

SOC Counts and PT Counts Are Different

A subject can experience multiple PTs within one SOC. The subject therefore counts once for each applicable PT, but also counts once for the SOC.

For example, if one subject experiences nausea and vomiting, both mapped to a Gastrointestinal disorders SOC, the subject contributes one to the nausea PT, one to the vomiting PT, and one to the Gastrointestinal disorders SOC.

This means the PT percentages within an SOC do not generally add to the SOC percentage. Likewise, PT percentages across different SOCs cannot be summed to obtain an overall percentage.

A Standard SOC/PT Table Structure

A common safety table has one treatment column per study arm. Each row contains a subject count and percentage, often displayed as n (%).

Adverse event category Placebo
N = 100
Drug A
N = 100
Subjects with at least one TEAE 42 (42.0%) 55 (55.0%)
Gastrointestinal disorders 18 (18.0%) 25 (25.0%)
  Nausea 8 (8.0%) 12 (12.0%)
  Vomiting 5 (5.0%) 9 (9.0%)
Nervous system disorders 15 (15.0%) 20 (20.0%)
  Headache 11 (11.0%) 15 (15.0%)
Reading the table: The row "Subjects with at least one TEAE" is an overall subject-level count. The SOC and PT rows are also subject-level counts. They are not event frequencies, and they are not additive across rows.

Ordering SOCs and PTs

The table shell should specify how SOCs and PTs are ordered. A common approach is to order SOCs using the standard MedDRA convention and PTs within an SOC according to a prespecified rule such as descending frequency, alphabetic order, or another study-defined convention.

The important point is not that one ordering method is universally required. The important point is that the ordering rule is explicit, reproducible, and consistent between the production dataset and the QC dataset.

Overall AE Reporting

The overall TEAE row is not obtained by adding the SOC counts. A subject who experiences events in several SOCs must still count only once in the overall row.

If subject-level indicators for the SOCs are \(I_{i1},\ldots,I_{iK}\), the overall indicator is the union:

$$ I_{i,\text{overall}} = \mathbf{1}\!\left(\bigcup_{k=1}^{K}\{I_{ik}=1\}\right). $$

Equivalently, a subject is counted once if at least one qualifying TEAE is present, regardless of how many SOCs or PTs are represented.

Worked Example: Start With the Raw AE Records

Consider a small study with two treatment groups. The following records are illustrative and are intentionally small enough to inspect by hand.

Subject Treatment PT SOC Severity Serious? Related?
001 Placebo Headache Nervous system disorders Mild No No
001 Placebo Headache Nervous system disorders Moderate No No
002 Placebo Nausea Gastrointestinal disorders Mild No Yes
002 Placebo Vomiting Gastrointestinal disorders Moderate No Yes
003 Placebo Headache Nervous system disorders Mild No Yes
004 Drug A Nausea Gastrointestinal disorders Mild No Yes
004 Drug A Nausea Gastrointestinal disorders Moderate No Yes
005 Drug A Headache Nervous system disorders Mild No No
005 Drug A Dizziness Nervous system disorders Moderate No Yes
006 Drug A Vomiting Gastrointestinal disorders Severe Yes Yes
007 Drug A Headache Nervous system disorders Moderate No No

Step 1: Determine the Subject-Level PT Counts

Subject 001 has two headache records, but contributes only one subject to the Headache PT count. Subject 004 has two nausea records, but contributes only one subject to the Nausea PT count.

PT Placebo Drug A
Headache 2 2
Nausea 1 1
Vomiting 1 1
Dizziness 0 1

Step 2: Determine the SOC Counts

For Gastrointestinal disorders, Placebo has Subject 002 and Drug A has Subjects 004 and 006. Therefore the SOC counts are 1 and 2, respectively.

For Nervous system disorders, Placebo has Subjects 001 and 003, while Drug A has Subjects 005 and 007. Therefore the SOC counts are 2 and 2.

SOC Placebo Drug A
Gastrointestinal disorders 1 2
Nervous system disorders 2 2

Step 3: Determine the Overall TEAE Count

Placebo has Subjects 001, 002, and 003 with at least one qualifying TEAE. Therefore the overall count is 3.

Drug A has Subjects 004, 005, 006, and 007 with at least one qualifying TEAE. Therefore the overall count is 4.

Notice that the Drug A SOC counts are 2 + 2 = 4 in this small example only because the two SOC groups happen to contain different subjects. In a real study, a subject may experience events in several SOCs, so summing SOC counts would generally overcount the overall number of subjects.

Step 4: Add Percentages

If each treatment group contains 10 subjects, the overall TEAE percentages are 40.0% for Drug A and 30.0% for Placebo. For the Drug A Gastrointestinal Disorders SOC, the percentage is 20.0%; for Nervous system disorders it is 20.0%.

$$ \text{Drug A GI percentage} =100\times\frac{2}{10}=20.0\%. $$

Severity: Mild, Moderate, and Severe

AE tables often include separate summaries by severity. The categories may be Mild, Moderate, and Severe, or another prespecified scale.

The key question is what to do when one subject has repeated occurrences of a PT at different severities. A common subject-level approach is to assign the subject to the maximum observed severity for that PT, so that a subject with Mild and Moderate headache contributes once to the Moderate headache category rather than once to both.

Prespecify the rule: The handling of multiple severities should be defined in the SAP or table specifications. Do not let the programming implementation determine the rule implicitly.

For subject \(i\) and PT \(j\), a simple maximum-severity rule can be represented as:

$$ S_{ij}^{*}=\max\{S_{ij1},S_{ij2},\ldots,S_{ijm}\}, $$

where the severity categories have first been mapped to an ordered scale such as Mild < Moderate < Severe. This mathematical representation is illustrative; the actual study rule may differ.

Seriousness Is Not the Same as Severity

One of the most important AE reporting distinctions is between severity and seriousness.

Severity describes the intensity of an event, whereas seriousness is a regulatory classification based on defined criteria. A severe event is not necessarily a serious adverse event, and a serious adverse event is not necessarily severe.

Concept Typical interpretation
Severity Intensity or grade of the event, such as Mild, Moderate, or Severe.
Seriousness Whether the event meets prespecified serious adverse event criteria.
Example: A severe headache may be non-serious. Conversely, an event may be serious because it results in hospitalization even if its recorded intensity is not "severe."

Serious Adverse Events

A standard safety package may include a dedicated table for serious adverse events (SAEs). The analysis population and counting principle remain important: the table generally summarizes the number of subjects with at least one qualifying SAE in each SOC/PT category.

A subject with multiple serious events contributing to the same PT should not be counted multiple times in the standard subject-level summary.

Treatment Relatedness

Another common dimension is investigator-assessed relationship to study treatment. The table may report all TEAEs, related TEAEs, or events by a set of relatedness categories depending on the analysis specification.

For a binary relatedness summary, a subject is generally counted once in the PT if the subject has at least one qualifying event meeting the relatedness criterion. The exact algorithm for multiple events should follow the SAP.

Displaying Only Selected PTs

Not every table displays every PT. Common shells include all observed PTs, PTs above a prespecified frequency threshold, or selected medically important categories.

For a frequency threshold of \(c\%\), one possible rule is to display a PT if its incidence in at least one treatment group reaches the threshold:

$$ \max_g\left(100\times\frac{n_{gj}}{N_g}\right)\ge c. $$

Other rules are possible. For example, the SAP may define the threshold using the active-treatment group only, the pooled population, or the overall study population. The threshold must therefore be documented rather than inferred from the final output.

When a PT Is Rare

A rare PT may have a percentage such as 1.0% in one treatment group and 0.0% in another. It should not be discarded merely because its percentage is small if the table specification requires all observed events or all clinically important events to be shown.

This is especially important for safety review: a low-frequency event may be clinically meaningful even when it is not numerically prominent.

Common AE Table Columns

The exact columns depend on the table objective, but common summary dimensions include:

Column or section Purpose
All TEAEs Overall incidence of subjects with at least one treatment-emergent event.
SOC / PT MedDRA hierarchy for organizing event categories.
Severity Summary of subjects by prespecified severity category.
Seriousness Summary of subjects with serious adverse events.
Relatedness Summary according to the prespecified treatment-relatedness rule.
Discontinuation Subjects with events leading to study treatment discontinuation, when required.
Death Subjects with adverse events meeting the table's death-related criteria, when required.

Example of a Final SOC/PT Table

Using the worked example above, suppose there are 10 subjects in each arm. A simplified final table could look like this:

System Organ Class / Preferred Term Placebo
N = 10
Drug A
N = 10
Subjects with at least one TEAE 3 (30.0%) 4 (40.0%)
Gastrointestinal disorders 1 (10.0%) 2 (20.0%)
  Nausea 1 (10.0%) 1 (10.0%)
  Vomiting 1 (10.0%) 1 (10.0%)
Nervous system disorders 2 (20.0%) 2 (20.0%)
  Dizziness 0 (0.0%) 1 (10.0%)
  Headache 2 (20.0%) 2 (20.0%)

The final table should normally follow the exact display convention specified for the study. For example, zero counts might be displayed as 0, 0.0%, or 0 (0.0%), depending on the shell.

Programming Logic

The programming task can be viewed as a sequence of transformations from the analysis-ready AE records to subject-level indicators and then to displayed counts and percentages.

1
Define the safety population. Establish the treatment group and denominator.
2
Apply the TEAE rule. Keep only records that meet the prespecified analysis definition.
3
Confirm MedDRA variables. Verify the terminology version and SOC/PT mappings.
4
Collapse repeated records. Create subject-level indicators for each SOC/PT category.
5
Apply special analysis rules. Handle severity, seriousness, relatedness, treatment discontinuation, and other dimensions.
6
Calculate n (%). Divide subject counts by the appropriate treatment-group denominator.
7
Apply display rules. Order SOCs/PTs and apply any prespecified frequency threshold.
8
QC independently. Reproduce counts from a separate derivation or independent program.

Illustrative R Implementation

The following example uses generic variable names. They are illustrative and should be replaced with the actual variables in the analysis dataset.

# Example variables:
# USUBJID = subject identifier
# TRT01A  = treatment group
# TEAEFL  = treatment-emergent flag
# AESOC   = MedDRA SOC
# AEPT    = MedDRA PT

teae <- ae |>
  dplyr::filter(TEAEFL == "Y")

# Subject-level PT counts
pt_counts <- teae |>
  dplyr::distinct(USUBJID, TRT01A, AESOC, AEPT) |>
  dplyr::count(TRT01A, AESOC, AEPT, name = "n")

# Subject-level SOC counts
soc_counts <- teae |>
  dplyr::distinct(USUBJID, TRT01A, AESOC) |>
  dplyr::count(TRT01A, AESOC, name = "n")

# Overall TEAE count
overall <- teae |>
  dplyr::distinct(USUBJID, TRT01A) |>
  dplyr::count(TRT01A, name = "n")

The critical operation is distinct(). It changes the unit from event records to unique subject/category combinations before the count is performed.

Illustrative SAS Implementation

A similar approach can be implemented in SAS by sorting and removing duplicate subject/category combinations before counting them.

/* Illustrative variable names only */
data teae;
  set ae;
  where TEAEFL = "Y";
run;

proc sort data=teae out=pt_subjects nodupkey;
  by TRT01A USUBJID AESOC AEPT;
run;

proc freq data=pt_subjects;
  tables TRT01A*AESOC*AEPT / norow nocol nopercent;
run;

proc sort data=teae out=soc_subjects nodupkey;
  by TRT01A USUBJID AESOC;
run;

proc freq data=soc_subjects;
  tables TRT01A*AESOC / norow nocol nopercent;
run;

In production programming, the final output usually requires additional steps for denominators, formatting, ordering, zero cells, threshold rules, and shell assembly. The important statistical principle remains the same: count subjects at the requested category level.

ADaM and Analysis Dataset Considerations

The AE analysis dataset should provide the variables needed to reproduce the analysis definition. Depending on the study, these may include subject identifier, treatment variables, event dates, treatment-emergence indicators, MedDRA SOC/PT variables, severity, seriousness, relatedness, and other analysis flags.

The exact variable names depend on the sponsor's ADaM implementation and study specifications. A tutorial example should therefore be treated as conceptual rather than as a universal variable naming standard.

Traceability matters: A reviewer should be able to trace a displayed PT count back to the qualifying subject-level records and then back to the source AE information.

MedDRA Version Control

MedDRA is versioned. The terminology version used for coding and analysis should be documented and controlled throughout the reporting process.

Changing the terminology version can change terminology assignments, hierarchical placement, or available coding concepts. Therefore, production and QC datasets must not silently mix terminology versions.

Quality Control Checks

A strong QC process tests both the statistical derivation and the presentation of the table.

QC check Question
Population Are all and only the intended safety subjects included?
TEAE flag Does every included record satisfy the prespecified TEAE definition?
MedDRA Are SOC and PT values consistent with the controlled terminology version?
Deduplication Are repeated event records collapsed to one subject/category contribution?
Denominator Is the percentage denominator the correct treatment-group population?
Overall row Is the overall count based on subjects with at least one qualifying event rather than summed SOC counts?
Severity Is the multiple-event severity rule implemented exactly as specified?
Ordering Are SOCs and PTs displayed in the specified order?
Formatting Are counts, percentages, zeroes, labels, footnotes, and treatment headers correct?

Independent Reconciliation

One of the strongest QC approaches is to derive key counts independently. For example, a primary programmer can generate the production table while a QC programmer independently creates subject-level SOC/PT counts and compares the results.

For a table cell, the reconciliation target is the subject set itself, not just the final number. If the production program reports \(n=12\), the QC process should be capable of identifying the 12 subjects that generated the count.

$$ \text{QC agreement} \Longleftrightarrow \text{same qualifying subject set for each analysis category}. $$

Common Mistakes

1. Counting AE Records Instead of Subjects

This is the classic error. A subject with five headache records must not become five subjects in a standard incidence table.

2. Summing PTs to Obtain an SOC Percentage

A subject can experience multiple PTs in one SOC, so PT counts are not mutually exclusive. Their percentages should not be summed.

3. Summing SOCs to Obtain Overall Incidence

Subjects can experience events across several SOCs. The overall incidence must be calculated from the union of subjects with at least one qualifying event.

4. Confusing Severity With Seriousness

A severe event is not automatically a serious adverse event. These are separate concepts and should be analyzed using their respective definitions.

5. Using the Wrong Denominator

The denominator must match the analysis population specified for the table. Using randomized subjects when the table calls for safety subjects can produce incorrect percentages even if the numerators are correct.

6. Letting the Code Decide the Analysis Rule

Rules such as treatment emergence, maximum severity, relatedness, and display thresholds should be specified before programming. Code should implement the rule rather than define it implicitly.

7. Mixing MedDRA Versions

A terminology mismatch between production and QC can produce apparently mysterious discrepancies in SOC/PT assignments. The terminology version should be explicitly controlled.

A Practical SOC/PT Reporting Workflow

1
Confirm the safety analysis population and treatment denominators.
2
Confirm the SAP definition of a treatment-emergent adverse event.
3
Verify the MedDRA version and SOC/PT variables.
4
Create the qualifying AE record set.
5
Deduplicate to subject + SOC/PT for incidence counts.
6
Derive severity, seriousness, relatedness, and other requested summaries.
7
Calculate subject counts and percentages using the correct denominators.
8
Apply SOC/PT ordering and any prespecified display thresholds.
9
QC the subject sets, counts, percentages, labels, and formatting.
10
Document the derivation and retain traceability to the analysis data.

What Should Be Specified in the SAP?

The statistical analysis plan should provide enough detail that an independent programmer can reproduce the table without guessing.

  • Safety analysis population
  • Treatment-emergent adverse event definition
  • MedDRA version
  • SOC and PT display levels
  • SOC ordering convention
  • PT ordering convention
  • Subject-level counting rule
  • Handling of repeated events
  • Severity classification and multiple-severity rule
  • Serious adverse event definition and analysis rule
  • Treatment-relatedness definition and analysis rule
  • Frequency thresholds, if any
  • Denominator definition
  • Percentage rounding and display rules
  • Handling of missing or partial data
  • Footnotes and special population rules

Worked Example Summary

The logic of an SOC/PT incidence table can be summarized compactly:

Component Rule
Analysis population Prespecified safety set
Event selection Prespecified TEAE rule
Detailed category MedDRA Preferred Term
Grouping category MedDRA System Organ Class
Counting unit Unique subject within each category
Overall incidence Unique subjects with at least one qualifying event
Percentage \(100n/N\)
Repeated events Do not count the same subject multiple times within the same category
Severity Apply the prespecified subject-level rule
QC Reconcile subject sets, counts, percentages, and display

Key Takeaway

A high-quality adverse event table is not simply a frequency report. It is a carefully specified subject-level incidence analysis built on a controlled safety population, a prespecified treatment-emergence rule, standardized MedDRA terminology, and explicit rules for repeated events and special safety categories.

The most important mental model is: start with qualifying event records, convert them to subject-level indicators for each SOC/PT category, calculate the correct denominators, and only then build the formatted table.

Bottom line: If you can explain exactly which subjects are counted in every displayed SOC and PT cell—and why each subject is counted once—you understand the core logic of standard AE incidence reporting.

References

International Council for Harmonisation (ICH). MedDRA: Medical Dictionary for Regulatory Activities.

International Council for Harmonisation (ICH). E2A: Clinical Safety Data Management: Definitions and Standards for Expedited Reporting.

U.S. Food and Drug Administration. Guidance for Industry: E3 Structure and Content of Clinical Study Reports.

International Council for Harmonisation (ICH). E9 Statistical Principles for Clinical Trials.