Clinical Data Reporting   

Clinical data reporting is the heart of the FDA submission.  For each list and table produced, format guidelines must be applied.  Below is a collection of SAS papers and tips to help process all data types except lab data.  Mind map.  See also ODSProc Report, Macro Programming and New Clinical SAS Programmer.



Reporting Best Practices 


 Excel files - MetaData Driven


 ODS - Global Settings, Destinations, RTF


 Proc Template - Layout, Format


 SAS Macro Programming - Loops


 Proc SQL Metadata - Unique Lists, Count, etc.


 Proc Report - Options


 Macro Testing and Documentation




(Mostly Proc Report for all RTF files to customize formatting - bold, space, alignment, etc.) 

 Listing  Proc Report 

 Summary Tables
 Proc Report for Frequencies of Categorical variables

 Proc Report after Proc Means/Proc Tabulate to get descriptive statistics

 Proc Report after building datasets of Proc Means/Proc Tabulate and Proc Freq results 


 General Links

FDA Electronic Format Guidelines

PDF as Standard for FDA Submissions

Safety Tables - Development and Validation


Style Template Using SAS® ODS to Enhance Clinical Data Summaries: Meeting eSub Guidelines, Steven Light, Kathleen Greene

%PRINT Utility %Print Macros, Paul Wehr

Dose Calculations: NUMDOSES, AVGDOSE, and MAXDOSE

 create table dosevars as
 select distinct subjid, cycle, count(*) as numdoses,
 sum(dose)/count(*) as avgdose, max(dose) as maxdose
 from ex
 where dose > 0
 group by subjid, cycle
 order by subjid, cycle
quit ;


 Processing Longitudinal Data - SAS Syntax for Time Series Data

1) Enrollment

2) Drug Admin 

3) End of Study 
Drug A or Drug B

10 mg every month to 6 months
Completed, AE related to Drug A, Lost to Followup, Death, etc.

(Last measurement within visit window
before first dose date
and at least one non-missing post-baseline - this is important to define which records to select and baseline value)
First Dose Date 


(One measurement per visit based on visit window - this is important to select post-baseline value)

Amount and % Change from Baseline 

(Summary stats for each visit - this is important for primary/secondary endpoint)

Change from baseline = LAST_VALUE - BASELINE_VALUE;

% Change from baseline = ((LAST_VALUE - BASELINE_VALUE)/BASELINE_VALUE) * 100;

5, 50%

1. Intro to Longitudinal Data: A Grad Student “How-To” Paper, Elisa Priest,Ashley Collinsworth

2. Are You Taking it Day by Day or Having an Episode? Identifying and Describing Patterns in Longitudinal Data, Sarah Short, Dave Miller

3. Longitudinal Data Techniques: Looking Across Observations, Ronald Cody

4. Before and after: “Critical event” analysis with longitudinal data using SAS®, Robert Bauserman, Doug Thompson

5. Linking Unlinked Data in Different Datasets:PROC SQL and PROC SORT Can Do It, Merle Hamburger, Thomas Sukalac

6. Identifying Continuity in Longitudinal Data Merle Hamburger, Thomas Sukalac

7. A Dynamic Way to Manipulate Longitudinal Data with SAS®, Nora Ruel, Arthur Li

8. Analysis Datasets for Baseline Characteristics and Exposure Time for Multi-stage Clinical Trials, Kimberly Umans, Katherine Riester, Manjit McNeill, Wei Liu, Lukasz Kniola [Presentation]

9. Challenges in Developing ADSL with Baseline Data, Hongyu Liu, Hang Pang

10. Analysis Datasets for Baseline Characteristics and Exposure Time for Multi-stage Clinical Trials [Presentation]

11. It’s Simpler Than You Think: An Example of a Patient Summary Report Using SAS® and ODS PDF


 Adverse Events

select count(distinct patient) from aedata;

select count(distinct patient), bodysys from aedata group by bodysys;

select count(distinct patient), bodysys, prefterm from aedata

group by bodysys, prefterm;

Adverse Event Terms    MedDRA     ODS SG Plots

AE Dataset Macros   AE Summary Tables Macros     

Treatment Emergent Adverse Events are generally defined as adverse events after (datetime) the first dose date and before (datetime) the followup completion date. Another definition may be non-missing AE start and end dates on or after the first dose date.  Also, in general, the Adverse Events dataset should be sorted by patient aedate and aeterm to count each new aeterm occurence. Be careful not to double count patients when summarizing Adverse Event occurrences. Also, be aware of uncoded Adverse Events.  

See also Dates for overlap AEs.

AE Summary Tables Techniques steps:
 a - Notsorted format yn to display Y and N.
 b - Assign 1 if meets condition else 0, assign to yn format.
 c - Proc means by usubjid with autoname option, output dataset saves formatted values as actual values Y/N.
 d - Proc Tabulate to count all records with preloadfmt, missing, misstext and printmiss options.
 e - Unique patient count with AEs.

AE Patient Narratives steps:

 a- Template to identify the type, data and location of data to display.  Best to use ADaMs instead of SDTMs.

 b - Create a collection of macro variables and naming convention for each custom variable.  One method may be to create one dataset containing all patient specific values and each macro variable names and then use this dataset to automatically create the macro variables.

 c - Loop through all patients to create patient specific files containing only patient specific data using narrative template.

 d - In general, use one of these methods to create files: PROC DOCUMENT and ODS Layout to reply SAS procedure outputs from PROC PRINT, PROC REPORT for longer data listings instead of in paragraphs, etc, ODS RTF TEXT = for narrative paragraphs with word formats. CATX() may be useful to concatenate multiple strings and character variables.

 e - May PROC SGPLOT to include graphic images such as plots or charts.


1. Multiple Adverse Event Tables without Surgical Intervention, Adel Fahmy & Carol Matthews (Footnote)

2. Identifying and Verifying Treatment-Emergent Adverse Events and Concomitant Medications by Date Specificity, Tom Santopoli

3. PROGRAMMER’S SAFETY KIT: Important Points to Remember While Programming or Validating Safety Tables Sneha Sarmukadam, Sandeep Sawant [QC]

4. Using SAS® Software to Aid in the ICD-10 Code Set Implementation, Alexander Pakalniskis, Nilesh Bharadwaj, Caren Jones, Alein T. Chun

5. Can Coding MedDRA and WHO Drug be as Easy as a Google Search?, Sy Truong, Na Li

6. Using the WHO Drug Dictionary for Reporting Clinical Trials, Thomas E Peppard

7. A SAS Macro for Creating Adverse Event Analysis Dataset, Daniel Li, Suwen Li, Stephanie Sproule [Proc REPORT, AE Summary Tables Macro]

8. Statistical Analysis of Adverse Events in Randomized Clinical Trials Using SAS, Dongsun Cao, Xiaomin He

9. A Practical and Efficient Approach in Generating AE (Adverse Events) Tables
within a Clinical Study Environment, Jiannan Hu

10. When Asked for Subject Incidences, Go Ahead and FREQ OUT, Rod Norman

11. Adventures in ODS: Producing Customized Reports Using Output from Multiple SAS® Procedures, Stuart Long, Jeff Abolafia, Lawrence Park (Presentation)

12. CodEX: when Excel meets SAS to code clinical data,  Stéphane Chollet, Catherine Scoupe

13. Automation of Patient Narratives Using SAS ® and Analysis Datasets, David Izard, Eric Simms

14. Using SAS to Automate the Production of Medical Writing Narratives, Andy York, Joe Martin


16. Programmed Assisted Patient Narratives (PANs) with New SAS® ODS and Graphical Approaches, Faye Yeh, Melvin Munsaka [Macro]

17. Developing a Complete Picture of Patient Safety in Clinical Trials, Richard Zink, Russell Wolfinger

18. One at a Time; Producing Patient Profiles and Narratives, J. Hantsch, Janet Stuelpner

19. Operational Uses of Patient Profiles … Even in an eCTD and SDTM World, Terek Peterson, Sanjiv Ramalingam

20. A Practical Approach to Create Adverse Event Summary by Toxicity Grade Table, Zhengxin (Cindy) Yang [Macro]

21. Guidance for Industry Toxicity Grading Scale for Healthy Adult and Adolescent Volunteers Enrolled in Preventive Vaccine Clinical Trials

22. Statistical Analysis Reporting Tool (StART) From Concept to Table Production, David Hartman

23. Smart Programming and SAE Reconciliation, Haibin Shu, Ronen Mansuri, Maggie Jiang

24. Collapsing Adverse Event Records, Haiqiang Luo [Prolong Adverse Events Macro]

25. Collapsing Adverse Experiences Records, Shi-Tao Yeh

26. Pattern of Adverse Events: The Use of Boxplot, Jui-Fu Huang

27. Utilizing PRELOADFMT Option with User-defined Formats to Create Summary Tables, Suwen Li, Yi Hua, Daniel Li, Bob Lan

28. Missing Categories from categorical summary report? PRELOADFMT comes to your rescue, Sapan Raval, Niraj Pandya


30. Labor-saving SQL Constructs, Brian Fairfield-Carter, David Carr [AE Summary Tables]

31. Data Monitoring Committee Protocol [DMC]

32. Programming for Early and Late Phase ± really that different?, Katherine Macey

33. Disparities in the receipt of cardiac revascularization procedures, Perry Brown, Jontae Sanders

34. Making the Days Count: Counting Distinct Days in Overlapping or Disjoint Date Intervals, Noory Kim

35. Reporting Tips for No Observations W. Jodi Auyuen [Zero Reporting]


Concomitant Medication

1. A Simplified Way to Create Flags for the Three-Dimensional Prior, Concomitant, and Post Medication Classification, Aileen L. Yam

2. Analysis of Concomitant Medication Data J.J. Hantsch, Karl Miller

3. Programmatic Challenges of Dose Tapering Using SAS, Iuliana Barbalau, Chen Shi, Yang Yang

4. Concomitant Medications: What a Programmer Needs to Know, Irving Dark


Drug Exposure

In the EX dataset below, units play an important role to assure correct calculations.  Note that the DA dataset may be used as compliance for drug accountability data.


PT #










 1  1/1/00  2/1/00  30  50  100  0.5  15
 2  2/1/00 3/1/00   30  50  150  0.33  9.9


 Clinical Data Reporting -

1. ODS to RTF: Tips and Tricks, Paul Hamilton

2. Presentation-Quality Tabular Output via ODS, Brian Schellenberger

3. Seven Steps to Regulatory Publication Style With Proc Report, Dennis Gianneschi

4. General Methods to Use Special Characters, Dennis Gianneschi

5. Special Characters

6. Program Templates for Report Generation, Roger DeAngelis

7. Creating Complex Reports, Cynthia Zender

8. Electronic Clinical Study Reports (e-CSR) using ODS in SAS® V8e, HIROSHI OTSU, TADAYUKI KITAGAWA

9. Creating Clinical Trials Summary Tables Containing P-Values: A Practical Approach Using Standard SAS Macros, un Juo, and Carl Haske

10. A Regulatory Compliant Process for Developing SAS-Based Reports, Chuck Reap

11. ODS Statistical Graphics for Clinical Research, Wei Cheng

12. Duration Calculation from a Clinical Programmer’s Perspective, Alice Cheng

13. PROC Report: Various reporting layouts in clinical study reports and Advance Techniques,
Santosh Bari

14. Using SAS® ODS to Create Professional-Quality Reports, Rob Krajcik

15. IT’S THE LINES PER PAGE THAT COUNTS, Jonathan Squire, Johnny Tai

16. Your Place or Mine: Data-Driven Summary Statistic Precision, Nancy Brucken

17. Hassle-Free Presentation Quality Tables for Epidemiology Research, Claire Chiang and Sue Su

18. A SAS Macro Application to Create Mock Tables in Statistical Analysis Plans for Phase I Clinical Studies, Yao Huang

19. Developing Standardized Requirements, Specifications and Programs for Clinical
Trials Reports, Nancy Brucken, Deborah Harper, and Christopher Makowski

20. Kick It Old School - Creating Reports with the DATA _NULL_ Step, Sai Ma and Minlan Li

21. Rediscovering the DATA _NULL_ for Creating a Report, and Putting That Text File into RTF in a Single DATA Step, David Franklin

22. Macro to Generate Summary and Descriptive Statistics Tables, Yogesh Pande

23. Macro for Managing Date Variable(s) in Oncology Research, Jagannath Ghosh

24. Automate Compiling Clinical Appendix Tables and Listings into a Review Package with a Hyper-Linked Table of Contents, Xiangchen (Bob) Cui, Wei Zhang

25. PROC Report: Various reporting layouts in clinical study reports and Advance Techniques
Santosh Bari

26. Using PROC REPORT to Summarize Clinical Safety Data, Justina Flavin

27. SAS® version 8 ODS for Drug Safety Reporting (Without Use of HTML), Rene E. Laurencot 


29. Now There Is an Easy Way to Get to Word, Just Use PROC TEMPLATE, PROC REPORT, and
ODS RTF, Bob Hull

30. Using One PUT Statement to Write Customized Tables, Kristin Latour

31. Something Old, Something New... Flexible Reporting with DATA Step-based Tools, Pete Lund

32. Automatic Creation of a Makefile for Clinical Trial, Vikas Gaddu

33. Combining Summary Level Data with Individual Records, Frank Ivis

34. That’s All Right: More Complex Reports, Cynthia Zender

35. The Fantastic Four: Running Your Report Using the TABULATE, TRANSPOSE, REPORT, or SQL Procedure, Joshua Horstman


37. Combining Contiguous Events and Calculating Duration in Kaplan-Meier Analysis Using a Single Data Step, Hui Song, George Laskaris

38. Jack of all Listings, A New Approach for Review of Clinical Data, Hardik Panchal

39. One at a Time; Producing Patient Profiles and Narratives, J. Hantsch, Janet Stuelpner

40. Spotting DILI for FDA submissions, Sven Greiner, Nicola Tambascia [Hy's Law]

41. %SummaryTable: A SAS ® Macro to Produce a Summary Table in Clinical Trial, Yinmei Zhou, Lijun Zhang, Michael Hancock

42. A Method for Simultaneously Programming Mock and Computed Tables, Michael Williams

43. Reading and Writing RTF Documents as Data: Automatic Completion of CONSORT Flow Diagrams, Art Carpenter, Dennis Fisher

44.  %disposition_plot: A Macro Application for Clinical Study Disposition Analysis, Yao Huang

45. Easy Button: A process for generating standardized safety and non-safety related Clinical Trial Reports, Xiangchen (Bob) Cui, Mominul Islam, Jiannan Hu, Yanwei Han, Sanjiv Ramalingam [Report Types]

46. Reporting Statistical Results with PROC REPORT, Nestor Rohowsky

47. An Introduction to Visit Window Challenges and Solutions, Mai Ngo

48. The TFL Workbench: From Pilot to Production, Iain Humphreys, Hansjörg Frenzel

49. Using the TFL Workbench for Standards Governance, Hansjörg Frenzel, Iain Humphreys

50. A Drug Safety Reporting System in SAS, Yang Wang, Shawn Hopkins, Norm Fox, Raghu Kumbharathi, Tom Hunter

51. It’s About Time! A Primer on Time-Slotting of Data Using SAS Maria Reiss

52. A Tool to Organize SAS Programs, Output and More for a Clinical Study, Yang Gao [TOC Table of Contents]

53. The Disposition Table Make it Easy, Endri Endri, Benedikt Trenggono

54. Practical solutions when analyzing incomplete disposition data, Srinivas Veeragoni, Dr. Juergen Lembcke, David Wei, Bayer [Presentation]

Powered by Wild Apricot Membership Software