Lab Data Processing, Reporting and Validating  

Because of the complex structure of lab data, different lab types, lab tests, lab units, absolute and percent values, standard units, and high and low flags, lab data may require up to 80% of your time to develop and validate. A strategy to help validate lab listings inlcude confirming the scope of all patients and lab tests, for selected patients, all visits and derived vairables and for selected lab tests, all variables by visit dates.  

See CDISCProc SQL and Mind map. Sample CDISC dataset.  See What’s your ID? Multiple Ways to Identify LB Baseline Values training session.


About Lab Tests   Normal Range Flags   Normal Range Lookup Table   Lab Unit Conversions



Two sets of Lab Variables

    Result  Char   Num,    Unit        , Lower Limit,    Higher Limit
 ORiginal Lab Values LBORRES,                  LBORRESU, LBORNRLO, LBORNHI 


Types of Lab Data Processes

Brief Description (Case Report Forms)
1. Rawdata carry over

Direct transfer of raw data values

 2. Standard Units

SAS Paper

SI Unit Conversions (Excel), 


Convert to standard units generally requires multiplying by a conversion factor such as 0.454 to convert 'lb' to 'kg'


3. Baseline Values

SQL Subquery

Baseline, Change from baseline, Changes & Differences

a. Calculate baseline value per Lab Test

b. Generally the last visit date BEFORE first dose date

c. Alternative options include the minimum, maximum or mean lab value BEFORE the first dose date 

d. Alternative options also include the screening lab visit or average the visit dates to determine study day BEFORE the first dose date

Change from baseline = LAST_VALUE - BASELINE_VALUE;

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



 4. Derived Lab Tests - New lab tests or standard lab tests

SAS Paper

a. Calculate new Lab Tests such as WBC or differentials in absolute, such as 10^9/L, or % values (same visit date, same support variables for standard lab tests, missing support variables for new lab tests)

b. From % to absolute: Differential (Absolute, K/mm3) = Differential (%) * (Total WBC Count (K/mm3) )/100

c. From absolute to %:  Differential (%) = 100*Differential (Absolute, K/mm3) / (Total WBC Count (K/mm3) )

d. There are five types of differentials, of WBC: Eosinophil, Basophil, Neutrophil, Monocytes and Lymphocytes. All of the
differentials will add up to 100% of the WBC.


5. Visit Windows

SAS Paper, Paper 2

Picture Format

a. Assign visit names based on visit windows

b. If multiple visits, then generally the last or the first lab date within the visit window

6. Support Variables

Process variables such as flags, low end, high end and min/max/mean values within visit window


7. Most Recent Value

SAS Paper, LOCF, LOCF2 Impute


Select, by patient, the most recent lab value

Options are to keep the original dataset records or add visits


8. Statistics Precision

SAS Paper

Display descriptive statistics using common level of precision: Mean (+1 decimal), SD (+2 decimals), Median (+1 decimal), Min/Max (+0 decimals - same precision) 


9. Toxicity Grades (1-4)

SAS Paper,

SAS Paper,


See also Adverse Reporting Tox Grades

Once LB dataset is merged with the TOX_GRADE dataset by LBTESTCD, selected lab test results will be classified by several grade values (1-5) to rank the toxicity.

Generally, for lab tests with the lower range grades, smaller lab values have higher grades such as 4, which are worse then the larger lab values.  A multiplier is not applied to the toxicity lower range values. 

if lbtest = "Calcium" and lbstresn ge 8 and lbstresn lt lbstnrlo then lbtoxgr =1;                             * high lab values are safer;

For lab tests with the higher range grades, the larger lab values have higher grades such as 4, which are worse then the smaller lab values.  Also for the higher range grades, a multiplier of the standard high range value is applied to the toxicity higher range values. 

if lbtest = "Creatinine" and lbstresn gt lbstnrhi and lbstresn le (1.5*lbstnrhi) then lbtoxgr = 1;        * low lab values are safer;


10. Shift Tables

SAS Paper

Cross tabulation between baseline (Low, Normal, High and Missing) and most extreme post-baseline value (Low, Normal, High and Missing).  Note that the same patient is counted twice, as Low and High, if the patient had as least one Low and High post-baseline.


Useful lab data edit checks

a. Confirm non-missing supporting variables such as LAB_UNIT, LOWER and UPPER normal range values, for each lab test.

b. Records exist and are consistent for both absolute (qualitative) and percent (quantitative) values (0 - 100) for each hemotology differential lab test. Create absolute or percent records if missing and decide how best to assign LOWER, and UPPER normal range values.

c. Confirm correct conversion to standard units.

d. Confirm consistency between any corresponding character and numeric version variables.

e. Confirm normal, low or high FLAG value based on LOWER and UPPER normal ranges.

1. That SAS®sy Lab Data, Amie Bissonett [Proc SQL]


1. Lab Unit Conversions: Taking Advantage of 'Expert' External Resources, Sandra Minjoe

2. Don’t run away, it’s only labs, Lucy Wang, Paul Slagle

3. Generate Informative Clinical Laboratory Results Listing, Sai Ma

4. Creating Powerful Laboratory Listings, Bob Hull

5. Considerations for Building an Integrated Safety Database Using SAS, Denise J. Smith, Daniel Schulz, Gayle Kloss, Wei Cheng [ISS]


6. Expedite Processing Central Laboratory Data with Working Practices, Standards and
SAS®, Margaret Hung, Henry Shades, and Michael Acra


7. Controlling your programs with data: An example in pharmaceutical laboratory data reporting, Paul Wehr, Albert Mo


8. Creating Customized Patient Profiles using SAS ODS RTF and PROC TEMPLATE,
Andrea Ritter


9. New Tips and Tricks for Creating a Harmonized, Report-Friendly SDTM and
ADaM Lab Data for a Clinical Study Report, Xiangchen (Bob) Cui, Min Chen, Scott Moseley [SAS Code]


10. One-Step Change from Baseline Calculations, Nancy Brucken


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


12. Clinical Laboratory Results, Old and New Pains, Mario Widel, Scott Bahlavooni


13. Using a Picture Format to Create Visit Windows, Richann Watson


14. CFB: A Programming Pattern for Creating “Change from Baseline” Datasets, Lei Zhang


15. Calculating Changes and Differences Using PROC SQL undefined With Clinical Data Examples, Chang Chung, Lei Zhang


16. Assigning NCI CTC Grades To Laboratory Results, Carol Matthews


17.A SAS® Macro Approach to Assign CTCAE Grades to Laboratory Adverse Experiences, Mei Dey, Lisa Pyle [Worst Grade]


18. Conquering the Fear of Shift Tables, Monal Kohli [SAS Macro]


19. Generate Informative Clinical Laboratory Results Listing, Sai Ma 

20. Implementation Considerations for PARAM/PARAMCD Using ADaM BDS, Karl Miller, J.J. Hantsch

21. Handling Dynamic Variable Types in SAS®, Venkat Lajapathirajan

22. Using CDISC Lab Terminology and Determining Standard Units, Mat Davis [Extendable, ISS, Differentials, MACRO validstresu]


24. Producing Clinical Laboratory Shift Tables From ADaM Data, Rao Bingi [SAS code]

25. Presentation and Handling of Clinical Laboratory Data From Test Tube to Table, Randall K. Carlson, Nate Freimark

26. Keeping Patients on Schedule, The Art of Visit Windows and Cycle Slotting, Paul Slagle

27. Fuzzy SQL Merges with Laboratory Data Normal Ranges, Justina Flavin

28. Different Decimal Places For Different Laboratory Tests, Cecilia Mauldin

29. Transform Incoming Lab Data into SDTM LB Domain with Confidence, Anthony Feliu [Antibody, Macro]

30. Analyze This? Supporting Clinical Decisions Graphically When Not Enough Data is Available A Study Case: Challenges in NCI CTCAE Version 4 Grading, Sheila Dayog

31. Challenges in Processing Clinical Lab Data, Alan Meier [Basics, Test Codes, Units]

32. From ACE to ZINC Examples on the use of SDTM Controlled Terminology for lab tests, Paul Vervuren [Differentials]

33. Dealing with Lab Data – Stacking the Deck in Your Favor, Jennifer Fulton [Differentials]

34. Dynamic Decimal Precision and Alignment in Clinical Trial Laboratory Summary Tables and Patient Data Listings, Stephen Hunt, Brian Fairfield-Carter

35. Laboratory Data Standardization with SAS, Charley Z. Wu, Dona-Lyn Wales


37. Grading Lab Toxicities using NCI- Common Terminology Criteria for Adverse Events (CTCAE), Srinivas Veeragoni, Ankur Mathur [Presentation]

38. An Effective Way to Produce Laboratory Shift Table, Amanda Yi [Macro]

39. Transforming Biomarker Data into an SDTM based Dataset, Kiran Cherukuri

40. Empowering Biomarker Data to Accelerate Personalized Health Care, Xiuting Mi

41. Laboratory Data Standardization with SAS, Charley Wu

42. Use of SAS Reports for External Vendor Data Reconciliation, Soujanya Konda [Data Cleaning, Data option (IN=A)]

43. Complexity in collection of PGx data and challenges in mapping to SDTM, Rama Kudaravalli

44. Bidirectionality to LOINC: Handling the Nitty Gritty of Lab Data, Bhargav Koduru [ LOINC (Logical Observation Identifiers Names and Codes) Blog National Library of Medicine Mapping 1 Mapping 2]

Powered by Wild Apricot Membership Software