Presentations by users are the heart of a SAS users group meeting. MWSUG 2026 will feature a variety of papers and presentations organized into several academic sections covering many different topics and experience levels.

Note: Content and schedule are subject to change. Last updated 15-Sep-2026.



AI, Statistics and Analytic methods

Paper No. Author(s) Paper Title (click for abstract)
AS-008 Kirk Paul Lafler Leveraging AI: A Programmer's Roadmap
AS-034 David Corliss Working with Damaged Datasets in SAS
AS-059 Saikrishnareddy Yengannagari Accelerating SAS Macro Validation with AI: A Human-in-the-Loop Approach
AS-067 Kevin Sullivan
& Mary Grzybowski
Developing Epidemiologic SAS Macros with ChatGPT Assistance
AS-068 Danny Modlin How to Modify SAS9 STAT Programs to Run in SAS Viya
AS-070 Sara Richter
& Beth Meyerson
Exploring opioid use disorder and aging within a national dataset using the SURVEYFREQ procedure
AS-075 Anjali Arora
& Santosh Desai
From Stress to Recovery: A Hidden Semi-Markov Model and Stochastic Resilience Index for Wearable Physiology
AS-086 Ryan Paul Lafler Charting Your Organization's AI Roadmap: A Practical Approach from Machine Learning Foundations to Generative and Agentic AI
AS-087 Ryan Paul Lafler Building the 2027 Clinical AI Stack: Secure AI Agents for Clinical Development and Regulatory Submissions
AS-092 Sy Truong When Both Programmers Are AI: Rethinking Independent Validation in Clinical Statistical Programming
AS-099 Zeke Torres Use AI to Your Advantage with Legacy SAS Code
AS-108 Tyler Hicks No PROC DCM? No Problem: Estimating Diagnostic Classification Models with PROC MCMC in SAS


Advanced Programming

Paper No. Author(s) Paper Title (click for abstract)
AP-009 Kirk Paul Lafler Modernizing Legacy SAS Applications and Program Code
AP-016 Paul McDonald Architecture Follows Data: Why Analytics Systems Drift Away from Their Workloads
AP-037 Arpita Deb Standardizing Clinical Research Data Preparation in SAS: Development and Implementation of a Reusable Macro
AP-039 Jayanth Iyengar SAS Programming Techniques for Efficiency and Code Optimization
AP-044 Richann Watson Take CoMmanD of Your Log: Using CMD to Check Your SAS Program Logs
AP-046 Mike Krizan Teaching SAS to Read SAS
AP-061 Joe Madden The SAS Programmer's Roadmap to Modern Analytics Development
AP-062 Anita Michael Extracting Family Information from Collections Data for E-Pedigree Enrichment
AP-072 Melinda Macdougall SAS Keyboard Macros: Helpful tools for common code
AP-077 Josh Horstman Using SAS Macro Variable Lists to Create Dynamic Data-Driven Programs
AP-084 Jim Blum Custom Steps in SAS: A Gateway for Learning Macro Programming
AP-095 John LaBore Refining the Rough: Advanced SAS Techniques for Data Cleaning and Validation
AP-097 Zeke Torres SAS Config - Always useful & seldom used. Customized LOG/LIST outputs with added information
AP-100 John LaBore The Fine-Tuned Programmer: 20 No-Nonsense Tips for Optimal SAS Coding


Basic and Intermediate SAS Coding

Paper No. Author(s) Paper Title (click for abstract)
BI-007 Kirk Paul Lafler
& Josh Horstman
The Battle of the Titans (Part II): PROC REPORT versus PROC TABULATE
BI-043 Piotr Krzystek Remedying Issues with Exporting SAS Data Containing Special Missing Values
BI-050 Nina Werner Why use SAS PROC SUMMARY instead of SQL with GROUP BY
BI-051 Steven First Understanding the SAS DATA Step and the Program Data Vector
BI-079 Josh Horstman Merge with Caution: How to Avoid Common Problems when Combining SAS
BI-080 Josh Horstman Beyond IF THEN ELSE: Techniques for Conditional Execution of SAS Code
BI-094 John LaBore The Essential Dozen: A Step-by-Step Case Study that Solves Complex Data Challenges Using 12 SAS Functions


Data Visualization and Reporting

Paper No. Author(s) Paper Title (click for abstract)
DV-005 Kirk Paul Lafler Ten Practical Rules for Creating Effective Charts, Figures, and Visuals Using SAS
DV-010 Louise Hadden OOTB (Out of the Box) Data Visualizations with SAS: An Introduction to what the ODS Graphics Statement Can Do for You
DV-011 Louise Hadden The (ODS) Output of Your Desires: a Tool-kit for Creating Designer Reports and Data Sets
DV-021 LeRoy Bessler Bessler's Data Graphics Coloring Book
DV-036 Greg Treiman X Marks the Spot: Mapping Spatial Data with SAS Code
DV-040 Shelby Taylor SAS for Microsoft 365: Integrating SAS Programs, Data, and Reports Across the Microsoft 365 Ecosystem
DV-045 Richann Watson
& Louise Hadden
A Map to Success with Data Visualization Using ODS Statistical Graphics
DV-049 Vijaya Lakshmi Cherakam Building a Reusable Python Visualization Framework for Clinical Trial Safety Reporting
DV-071 Melinda Macdougall Plotting by Groups: Comparing PROC SGPLOT and PROC SGPANEL
DV-078 Josh Horstman Creating and Customizing High-Impact Excel Workbooks from SAS with ODS EXCEL
DV-090 LeRoy Bessler Quickly Easily Understood Data Graphics: My Principles, Examples, and Code
DV-091 LeRoy Bessler Gallery of SAS Visual Communication: Maximally Informative Data Graphics
DV-102 Ted Conway %SGPLOTLY: A SAS Macro for Specifying and Creating Plotly Sunburst Charts
DV-106 Chevell Parker The 10 Most Frequently Asked Questions about the Output Delivery System


E-Posters

Paper No. Author(s) Paper Title (click for abstract)
EP-006 Kirk Paul Lafler Soft Skills to Gain a Competitive Edge in the 21st Century Job Market
EP-033 David Horvath NOBS for Noobs
EP-060 Kirk Paul Lafler
& Ryan Paul Lafler
AI-Powered Code Review: Using Generative AI to Improve SAS Program Quality, Consistency, and Maintainability
EP-098 Zeke Torres PROC FORMAT with HTML - Drill Down output in Web and/or Excel
EP-105 LeRoy Bessler How to Communicate with Color


Hands On-Workshops and Live Demos

Paper No. Author(s) Paper Title (click for abstract)
HD-003 Kirk Paul Lafler SAS Performance Tuning Techniques (From Slow to Scalable)
HD-012 Greg Treiman Putting Data on the Map: Geospatial Storytelling with SAS Visual Analytics
HD-013 Paul McDonald IoT/AIoT for SAS Programmers: From Camera to SAS Data to Analytics
HD-018 Amber Dieter Learn to Code
HD-030 Greg Treiman Building SAS Viya Jobs
HD-042 Shelby Taylor From Prompt to Program: How AI Can Accelerate SAS Programming with SAS-Native and External Tools
HD-069 Danny Modlin Bayesian Choice Models in PROC BCHOICE
HD-081 Brian Varney Getting Started with R Clinical Programming
HD-083 Jim Blum Getting Started with SAS Viya Workbench: SAS, Python, and R in One Analytics Environment


Open Source Development and Tools

Paper No. Author(s) Paper Title (click for abstract)
OS-027 Ryan Paul Lafler
& Miguel Bravo Martinez Del Valle
Enhancing Your SAS Viya Workflows with Python: Integrating Python's Open-Source Libraries with SAS using PROC PYTHON
OS-031 David Horvath Working with Open Source in a Highly Regulated Industry
OS-041 Shelby Taylor PROC R: The Newest Way to Integrate R within SAS
OS-048 Mike Krizan Are We Winning the (Vulnerabilities) Battle
OS-073 Santosh Desai
& Urvi Mehta
Bayesian Causal Root-Cause Discovery for Asynchronous Industrial Data
OS-076 Ted Conway No Viya Yet? Try Using DuckDB With SAS 9.4 and SASPy!
OS-082 Brian Varney Introduction to Posit Assistant and Positron IDE
OS-085 Ryan Paul Lafler Building Better Data Science Workflows: Best Practices with Git, GitHub, Data Version Control (DVC), and MLflow for Open-Source Collaboration
OS-093 Sy Truong From SAP to TLF: AI-Assisted ARS Metadata for Traceable Clinical Reporting
OS-103 Chevell Parker We Are Family Practical Tips for Integrating Python, R, and SAS Under One Roof
OS-109 Joe Madden Crossing the Isthmus with PROC PYTHON: A Practical Path from SAS 9 to Modern Analytics
OS-110 Jack Shoemaker The Beneficiary Claims Data API: The Python use case


Pharma and Healthcare

Paper No. Author(s) Paper Title (click for abstract)
PH-019 LeRoy Bessler An HTML-Enabled COVID-19 InfoGeographic Atlas: How Bad Was It and Where
PH-035 Raj Kumar Devarakonda RELREC Demystified: A Practical Guide to Mapping Tumor Relationships in Oncology Clinical Trials
PH-038 Jayanth Iyengar Conducting Survival Analysis in SAS using Medicare Claims as a Real-world data source
PH-047 Doug Thompson Using SAS PROC MIXED to model potentially actionable correlates of unplanned hospital readmissions in the Medicare Shared Savings Program
PH-052 Ellis Williams Beyond Demographics: Exploring Factors That Influence Medical Insurance Costs with SAS Visual Analytics
PH-089 LeRoy Bessler ODS PDF and ODS HTML5, and ODS LAYOUT When Needed for Added Capability
PH-096 Zeke Torres ETL Macro ToolBox Proc Summary - CMS VRDC Version
PH-107 Jack Shoemaker The Beneficiary Claims Data API: A Real-World Example of Using SAS Tools




Abstracts

AI, Statistics and Analytic methods

AS-008 : Leveraging AI: A Programmer's Roadmap
Kirk Paul Lafler, SasNerd

AI is no longer a distant concept; it's embedded in today's programming tools and workflows. This presentation delivers a practical, step-by-step roadmap for programmers looking to thrive in this new environment. Topics include integrating AI into daily work, identifying high-value skills, managing risks, and navigating ethical challenges. Attendees will leave with clear, actionable insights to guide their professional growth in an AI-driven future. The presentation concludes with an interactive Q&A session, so don't miss this chance to learn from, and engage with, leading voices in the field.


AS-034 : Working with Damaged Datasets in SAS
David Corliss, Peace-Work

Real world data is never as neat and clean as we would like. With so many changes in the federal data landscape recently, methods for working with damaged data have become even more important. This presentation addresses situations where data aren't missing but they aren't the same as before. This includes novel heteroscedasticity, where the data becomes more variable than before due to changes in data collection, and data drift, where newer data doesn't look or act like earlier data due to changes in the underlying population. Practical working examples and source code in SAS are included.


AS-059 : Accelerating SAS Macro Validation with AI: A Human-in-the-Loop Approach
Saikrishnareddy Yengannagari, BMS

Validating SAS macros for clinical reporting is essential but time-consuming, requiring analysts to manually author requirements traceability matrices, test cases, and test programs. We present an AI-assisted tool that accelerates this process while keeping qualified reviewers firmly in control. From a macro and its requirements, the tool drafts a structured validation matrix, generates traceable test cases, and produces runnable SAS test programs each with built-in PASS/FAIL summaries and clear test-case-to-program traceability. Designed around Computer Software Assurance (CSA) principles, every AI-generated artifact is reviewed and approved by a human validator, preserving the audit trail and regulatory compliance. Early use shows substantial time savings and improved consistency across validation deliverables. This session shares our methodology, demonstrates the workflow, and discusses practical considerations including limitations, oversight, and qualification for responsibly applying generative AI to GxP validation activities.


AS-067 : Developing Epidemiologic SAS Macros with ChatGPT Assistance
Kevin Sullivan, Epi.Centre
Mary Grzybowski, Epi.Centre

Developing Epidemiologic SAS Macros with ChatGPT Assistance The primary goal of the authors is to develop SAS macros for epidemiologic analyses that are not readily available through existing SAS procedures. Because the authors develop macros only occasionally, creating and refining these programs can be both difficult and time-consuming. Our initial experiences using ChatGPT for SAS macro development were disappointing. However, recent advances have substantially improved its capabilities, and we have found it to be a valuable aid in macro development, provided that all results are carefully reviewed and validated. We used ChatGPT in two ways. First, we improved existing macros. These included a macro for estimating confidence limits and conducting statistical tests for a single rate, as well as a macro for the analysis of 2 2 tables with person-time data that provides estimates of rate ratios and rate differences using a variety of confidence interval methods and statistical tests. Second, we developed a new macro from scratch to assess interaction and confounding in stratified 2 2 tables for risk ratios and risk differences, measures that are not directly available in PROC FREQ. Several important lessons were learned during this process. Developing a robust macro requires considerable time and repeated refinement through an iterative process. Domain expertise remains essential because all calculations must be independently verified, and special attention must be paid to situations involving sparse data or other conditions that can lead to errors. In our experience, ChatGPT performs particularly well in identifying programming errors, improving existing code, generating documentation, and accelerating the overall development process. Although careful review remains essential, ChatGPT appears to be a valuable tool for SAS programmers seeking to improve existing macros or develop new analytical tools.


AS-068 : How to Modify SAS9 STAT Programs to Run in SAS Viya
Danny Modlin, SAS

How can existing SAS 9 programs can be modified to execute in SAS Viya. Code can either run as is on the SAS Compute Server, or it can be modernized to process data in memory and in parallel on the SAS Cloud Analytic Services (CAS) server. This presentation is perfect for statisticians who are new to SAS Viya and want to continue performing their statistical analyses there. We will address questions that are typically asked. 1. Will existing SAS 9 code work in Viya? 2. How can my statistical programs change to take advantage of the new features in Viya?


AS-070 : Exploring opioid use disorder and aging within a national dataset using the SURVEYFREQ procedure
Sara Richter, Richter Statistical Services, LLC
Beth Meyerson, University of Arizona

National publicly available datasets are a valuable source of information, though using them is often complex due to the complicated sampling strategies and weighting methods employed. Thankfully SAS provides a full suite of procedures designed for this purpose the SURVEY procedures. Using data from the National Survey on Drug Use and Health (NSDUH), a publicly available nationally representative dataset, symptoms of opioid use disorder (OUD) are explored by age groups. To appropriately account for the NSDUH's study design, the SAS SURVEY procedures need to be employed. This presentation will review the SURVEY procedures, especially SURVEYFREQ, when to use them, give examples of output from the NSDUH dataset, and show the potential errors in reporting if the SURVEY procedures are not used. Examples shown will use SAS/STAT v9.4 and will be appropriate for those new to using weighted data with intermediate SAS skills.


AS-075 : From Stress to Recovery: A Hidden Semi-Markov Model and Stochastic Resilience Index for Wearable Physiology
Anjali Arora, University of Michigan
Santosh Desai, University of Michigan

Stress research often reduces wearable physiology to a binary classification problem, obscuring how individuals move from activation to recovery. This paper develops a stochastic framework for estimating latent physiological states and quantifying resilience as a dynamic property of recovery. Multimodal signals from freely available stress and wearable datasets, including heart rate, interbeat interval, electrodermal activity, temperature, respiration, and movement, are organized into synchronized analysis windows. Hidden Markov models identify latent regulated, activated, and recovering states; explicit-duration extensions and first-passage calculations are then used to estimate recovery time, state persistence, and relapse risk. The proposed Stochastic Resilience Index combines the probability of timely recovery, expected time to regulation, and the probability of returning to activation after apparent recovery. Its construct validity will be evaluated against questionnaire-based resilience, self-reported stress, and performance during repeated stress exposures, with independent datasets used for sensitivity and replication analyses. The work emphasizes interpretable transition dynamics rather than another stress-versus-rest classifier. Examples will use SAS Viya, including PROC HMM in SAS Econometrics, SAS/IML for custom duration and first-passage calculations, PROC MIXED in SAS/STAT for validation analyses, and ODS Graphics for visualization. No operating-system dependency is expected, although PROC HMM requires a licensed SAS Viya environment with SAS Econometrics. The intended audience is intermediate to advanced and should understand regression and basic probability; prior experience with Markov models is helpful but not required.


AS-086 : Charting Your Organization's AI Roadmap: A Practical Approach from Machine Learning Foundations to Generative and Agentic AI
Ryan Paul Lafler, Premier Analytics Consulting, LLC

Artificial Intelligence (AI) continues to reshape business, technology, science, and research by enabling systems to learn from data, automate workflows, and support more adaptive decision-making. This paper presents a practical roadmap for understanding AI through the progression from machine learning (ML) foundations to modern generative and agentic AI systems. It introduces AI as a broad field and machine learning as a data-driven approach to AI, then examines supervised learning for predictive analytics on labeled data, unsupervised learning for pattern discovery in unlabeled data, and generative learning for representation learning, synthesis, reasoning, and content generation. The paper introduces key algorithms, architectures, use cases, model hyperparameters, and practical considerations such as overfitting, underfitting, and model evaluation to support applied implementation across industry settings. It concludes by connecting deep learning with modern generative model architectures, including encoder models, decoder-only large language models, and encoder-decoder models, to the emerging shift toward agentic AI systems that combine models with retrieval, tools, APIs, and workflow orchestration to support practical industry use cases in 2026, 2027, and beyond.


AS-087 : Building the 2027 Clinical AI Stack: Secure AI Agents for Clinical Development and Regulatory Submissions
Ryan Paul Lafler, Premier Analytics Consulting, LLC

Clinical AI is moving beyond standalone copilots and experimental chatbots, creating a need for secure, traceable systems that can support clinical development and regulatory submission workflows through 2027 and beyond. This paper presents a practical roadmap for applying AI to focused use cases, including protocol and statistical analysis plan review, SDTM and ADaM mapping support, TLF development, CSR contextualization, and submission-readiness checks. It connects these use cases to core components of the clinical AI stack, including AI agents, retrieval-augmented generation, vector search, tool integration, and proprietary or locally deployed language models. Implementation patterns are presented primarily in Python, with connections to R and SAS Viya workflows. This paper presents a staged roadmap for integrating AI workflows that assist clinical and regulatory teams while maintaining QA/QC and human-in-the-loop review.


AS-092 : When Both Programmers Are AI: Rethinking Independent Validation in Clinical Statistical Programming
Sy Truong, Meta-Xceed, Inc.

Independent double programming has long been a cornerstone of quality control in clinical statistical programming. As generative AI begins producing both production and validation programs, however, an important question emerges: does using two different AI models provide the same independence as two human programmers? This paper presents an agentic AI approach in which ADaM specifications imported from Excel and Statistical Analysis Plan content imported from Word are converted into structured, version-controlled metadata and used as context for SAS code generation. Relevant SAP sections are identified dynamically for each analysis. One large language model generates the production program while a second model independently generates the validation program, with PROC COMPARE used to identify differences between results. The workflow also analyzes SAS logs after execution, feeding errors, warnings, and selected NOTE conditions back to the model for iterative correction. Program execution order is derived from CDISC dataset classes, while agentic QC applies configurable CDISC-based and organization- or study-specific validation rules. Findings are retained for human review and disposition. The larger issue is not whether two AI programs look different, but whether their reasoning is sufficiently independent. Two models may use different code structures yet make the same incorrect interpretation of an ambiguous derivation. A zero-difference PROC COMPARE could therefore provide false reassurance. This paper explores how AI changes the meaning of independent validation and argues that human review must increasingly focus on challenging the basis for agreement, not simply confirming that two programs produce identical results.


AS-099 : Use AI to Your Advantage with Legacy SAS Code
Zeke Torres, Code629

Artificial intelligence is reshaping how organizations interact with long standing analytical ecosystems, and legacy SAS programs are no exception. Modern AI engines such as Copilot can interpret decades old SAS code with speed, consistency, and clarity that human reviewers rarely have time to match. This abstract outlines how AI can diagnose structural issues, highlight inefficiencies, and surface hidden dependencies within legacy programs turning opaque codebases into transparent, maintainable assets. Beyond diagnostics, AI excels at code documentation. Copilot can generate readable explanations of macro logic, data step flows, and PROC interactions, even when original authors are long gone. It can also produce visual artifacts such as flow charts that map data lineage, conditional branches, and transformation sequences. These outputs help teams onboard faster, reduce knowledge gaps, and modernize SAS environments without disrupting existing workflows. AI agents also differ in strengths some specialize in pattern recognition, others in summarization, and others in structural analysis. Evaluating which agents perform best for tasks like error detection, optimization suggestions, or metadata extraction allows teams to build a blended AI strategy. This ensures that legacy SAS systems benefit from the right tool for the right job, rather than relying on a single monolithic solution. Finally, AI can assist in drafting requirements for modernization projects, migrations, or compliance documentation. By analyzing existing SAS code and its outputs, Copilot can propose functional requirements, data quality expectations, and transformation rules. This accelerates project planning, reduces ambiguity, and ensures that modernization efforts faithfully preserve business logic while enabling future innovation. If you want, I can expand this into a full paper, create a slide deck, or generate a flow chart ready breakdown of a SAS program.


AS-108 : No PROC DCM? No Problem: Estimating Diagnostic Classification Models with PROC MCMC in SAS
Tyler Hicks, University of Kansas

Diagnostic classification models (DCMs), also known as cognitive or skills diagnosis models, classify individuals according to mastery or nonmastery of multiple discrete attributes. Rather than simply indicating how much of a construct an individual possesses, DCMs can provide diagnostic information about specific patterns of strengths and weaknesses. Despite their usefulness, DCMs are not currently available through a dedicated SAS procedure. Using an example-based approach, this pedagogical paper demonstrates how DCMs can be estimated directly in SAS using the SAS/STAT MCMC procedure. We illustrate the approach using a previously published example involving an English test measuring three grammatical skills that has been used to demonstrate DCM estimation in Mplus. The Log-Linear Cognitive Diagnosis Model (LCDM) is specified in PROC MCMC as a confirmatory latent class model, with latent classes representing possible attribute-mastery profiles. Annotated SAS code demonstrates specification of the Q-matrix, item parameters, latent-class probabilities, and model likelihood. Results obtained using PROC MCMC are compared with the published Mplus results to demonstrate that the model can be successfully reproduced in SAS. The paper concludes by showing how the example code can be adapted to other diagnostic classification applications.


Advanced Programming

AP-009 : Modernizing Legacy SAS Applications and Program Code
Kirk Paul Lafler, SasNerd

Whether you are a novice or experienced SAS programmer tasked with supporting your organization's legacy applications, programs, and code, resources are available to help you modernize and streamline for the 21st century and beyond. This paper examines popular constructs, statements, functions, algorithms, operators, methods, expressions, and programming techniques that can be applied to update and optimize code first introduced as far back as the 1970s. Attendees will learn a variety of approaches to simplify, scale, and modernize legacy applications and program code while improving efficiency, maintainability, and long-term sustainability.


AP-016 : Architecture Follows Data: Why Analytics Systems Drift Away from Their Workloads
Paul McDonald, Independent

Most architecture decisions begin with platforms, tools, or modernization targets. This paper argues that analytics systems are more successful when architecture follows the behavior of the data and the operational workload instead. Analytics and enterprise systems often contain workloads with high data reuse, complex relationships, iterative processing, and tight operational coupling. When these workloads are forced into architectures that do not match their behavior, the results are familiar: rising costs, performance degradation, growing operational friction, and increasing system complexity. These problems are frequently treated as isolated technical failures when they are actually signs of architectural mismatch. This paper introduces the "Architecture Follows Data" model and presents practical methods for evaluating how analytics workloads behave under real operational conditions. Topics include data gravity, workload entanglement, iterative processing, execution patterns, operational constraints, and hybrid architectural approaches. The presentation also discusses how embedded operational knowledge and undocumented governance often become hidden dependencies during modernization efforts. Examples and discussion will reference SAS analytics environments, database platforms, cloud and on-premises systems, AI/ML workloads, and operational reporting environments. The presentation is intended for intermediate to advanced SAS programmers, architects, administrators, technical managers, and analytics professionals involved in modernization, migration, or large-scale analytics systems. Attendees will leave with practical evaluation frameworks and a workload-centered approach for thinking about analytics architecture decisions.


AP-037 : Standardizing Clinical Research Data Preparation in SAS: Development and Implementation of a Reusable Macro
Arpita Deb, Medical College of Wisconsin

Electronic clinical data capture systems such as Advarra OnCore generate data export packages consisting of delimited text or CSV files and accompanying SAS load programs to construct analysis datasets for downstream analysis and reporting. While these exports provide a useful starting point, the accompanying programs often require environment-specific updates to be executed reliably within a local analytics environment. Typical modifications include updating file paths, accommodating different folder structures, assigning local libraries, redirecting output datasets, and resolving formatting inconsistencies. Although each change is relatively straightforward, repeating the same edits for every export is time-consuming and increases the potential for human error in the data preparation process. To address these challenges, we developed a reusable SAS macro that automatically prepares OnCore-generated SAS analysis datasets for use within an institution's SAS environment while preserving their original processing logic. Rather than editing each generated program individually, the macro applies a consistent set of modifications while preserving the original processing logic. This standardized approach simplifies dataset preparation, improves consistency across studies, and reduces the effort required before downstream reporting and analysis. Although this paper focuses on OnCore-generated data exports, the same principles can be applied wherever exported programs require similar customization before execution.


AP-039 : SAS Programming Techniques for Efficiency and Code Optimization
Jayanth Iyengar, Data Systems Consultants LLC

There are multiple ways to measure efficiency in SAS programming; programmers' time, processing or execution time, memory, input/output (I/O) and storage space considerations. As data sets are growing larger in size, efficiency techniques play a larger and larger role in the programmers' toolkit. This need has been compounded further by the need to access and process data stored in the cloud, and due to the pandemic as programmers find themselves working remotely in distributed teams. As a criteria to evaluate code, efficiency has become as important as producing a clean log, or expected output. This paper explores best practices in efficiency from a processing standpoint, as well as others.


AP-044 : Take CoMmanD of Your Log: Using CMD to Check Your SAS Program Logs
Richann Watson, DataRich Consulting

Regardless of the industry, part of writing a SAS program is to ensure that the log is free of any unwanted log messages. When running the program in an interactive SAS session, we can review the log as we execute the program and SAS is good about highlighting ERROR and WARNING messages using colors to draw the eye. Other types of unwanted log messages, such as INFO, uninitialized, character to numeric conversion, may not be so easily spotted. When running the program in batch, each program needs to be opened and scanned for unwanted log message, which is tedious and prone to overlooking a message. There have been several papers illustrating the creation of macros that will check the logs by parsing the logs after the programs have been executed. While these macros are great when you are running a lot of programs for a deliverable and need to check all the logs, these check log macros are not necessarily ideal during development. It is during development that we need to ensure the program is running clean. Although we could possibly use the same macro that is used to check all the programs and filter to run on one program, that would require us to run an extra program. What if there is an easier way? This paper demonstrates the use of the command line interface to execute the program in batch as well as check the log and provide a summary.


AP-046 : Teaching SAS to Read SAS
Mike Krizan, STAT X1, Inc.

Legacy SAS applications often contain years of accumulated DATA step logic, PROC SQL, macros, %INCLUDE files, and embedded business rules. Understanding these applications can become a major obstacle when organizations need to modernize, migrate platforms, assess the impact of changes, or create accurate source-to-target documentation. This presentation demonstrates how standard Base SAS functionality can be used to analyze SAS source code itself. A three-module approach first identifies input and output datasets, then expands macro-generated and included code using SAS system options such as MPRINT and MFILE, and finally applies Perl Regular Expression (PRX) functions to extract structured metadata from the expanded program. Using PRXPARSE, PRXMATCH, and PRXPOSN, the approach identifies SAS syntax and extracts datasets, variables, transformation logic, and business rules to produce source-to-target mappings and variable lineage. A working SAS example illustrates the process from legacy source code through macro expansion and metadata extraction. The result is repeatable documentation that can support modernization, impact analysis, governance, audit readiness, and future migrations all using standard SAS capabilities without requiring external parsing software.


AP-061 : The SAS Programmer's Roadmap to Modern Analytics Development
Joe Madden, SAS

SAS programmers are navigating a rapidly changing analytics landscape one with more languages, deployment models, cloud platforms, and collaboration patterns than ever before. This session offers a practical roadmap for modern SAS development, showing how programmers can move forward without leaving behind the SAS language, trusted code assets, or governed business processes that continue to deliver value. Using Madison as a fitting backdrop, we will explore how today's SAS coding experience is evolving across desktop and server environments, cloud-native workspaces, and software-as-a-service options. Like finding the best route from the Capitol Square to the UW Madison campus, there may be several paths and perhaps a few detours but the destination is clear: simpler, more flexible, code-first analytics development. Attendees will learn how tools such as Visual Studio Code, Jupyter, SAS Studio, Git-based collaboration, elastic compute, and mixed-language workflows with SAS, Python, and R fit into the future of SAS programming. Inspired by Frank Lloyd Wright's Wisconsin-influenced design philosophy, the session emphasizes purposeful modernization: creating an environment where each tool has a clear role and supports the way programmers actually work. In the spirit of UW Madison's tradition of research, experimentation, and practical problem-solving, this session focuses on what SAS users can take back, adapt, and build on as coding tools and the SAS language continue to evolve.


AP-062 : Extracting Family Information from Collections Data for E-Pedigree Enrichment
Anita Michael, Marshfield Clinic Research Institute

Electronic health record (EHR) derived pedigrees provide valuable family relationship information but may contain missing and inconsistent information. This paper demonstrates how SAS can be used to transform administrative data such as Collections data into a resource for enriching EHR derived pedigrees. It will shed light on the practical approaches for integrating multiple collections datasets, extracting relationship roles from free text fields, applying graph-based linkage, recursive merging, fuzzy matching and hierarchical EHR matching to identify families, as well as rule-based relationship inference to infer familial relationships across large administrative datasets. This presentation will illustrate how multiple complementary linkage strategies can be integrated within SAS to identify families and familial relationships that are not explicitly represented in administrative data. Brief Outline: Introduction Source data and family informative records: - KEEP statement, PROC SQL Data standardization and relationship extraction - UPCASE (), STRIP (), VVALUE (), COMPBL (), COMPRESS (), SCAN () Graph-based family reconstruction and recursive merging - PROC SQL (), INNER JOIN (), BY group processing, RETAIN statement Fuzzy linkage for family expansion - UPCASE (), STRIP (), PRXMATCH (), PRXCHANGE (), CATX () Hierarchical EHR matching and MHN enrichment - PROC SQL, LEFT JOIN, MISSING (), COALESCE (), COUNT (DISTINCT) Predicting familial relationships and family structure - IF/THEN/ELSE, UNION ALL, COLALESCE ()


AP-072 : SAS Keyboard Macros: Helpful tools for common code
Melinda Macdougall, Cincinnati Children's Hospital Medical Center

Every SAS user knows the hassle of needing a common block of code, but not remembering every detail or wanting to type it every time they need it in a new program. Maybe you start every program with the same header template. Maybe you know what function you need, but can't remember the order of arguments without looking up the documentation for the syntax (TRANSLATE and TRANSWRD, I'm looking at you ). You've heard of SAS macros that make running repeated code easier. But maybe you haven't heard that SAS also has KEYBOARD macros that requires less typing, less copying/pasting from old code, and less searching the internet for common syntax. Learn the basics and make your everyday coding easier.


AP-077 : Using SAS Macro Variable Lists to Create Dynamic Data-Driven Programs
Josh Horstman, PharmaStat LLC

Hardcoding data values into your SAS programs creates a fragile infrastructure prone to failure whenever upstream data changes. The solution? Let the macro facility write your code for you. This session explores the power of using macro variable lists to create truly dynamic, data-driven programming logic. We will walk through concrete examples illustrating how to capture live data values, store them in macro arrays, and deploy them to generate adaptive SAS code on the fly. Join us to discover how to banish data dependencies from your environment and transition to an automated, resilient programming workflow.


AP-084 : Custom Steps in SAS: A Gateway for Learning Macro Programming
Jim Blum, UNC Wilmington

In the evolving landscape of data analytics, the ability to write modular, reusable, and dynamic code is essential. This presentation introduces students to the power of the SAS macro language through the practical lens of building custom steps in SAS. By starting with the goal of putting a user interface in front of familiar procedural code, students gain an appreciation for how automation and parameterization can enhance their analytical workflows, a natural motivator for learning macro language. The session will walk through the creation of custom steps from concept to implementation creating opportunities to integrate macro variables, conditional logic, and macro functions. Along the way, we will demystify key macro language features and provide best practices for writing maintainable and efficient code. Designed with pedagogy in mind, this approach not only reinforces core programming concepts but also empowers students to think critically about code design and reusability. Attendees will leave with practical examples, teaching strategies, and a framework for incorporating macro programming into their own SAS instruction. Links to files will be posted at: https://blumjuncw.github.io./


AP-095 : Refining the Rough: Advanced SAS Techniques for Data Cleaning and Validation
John LaBore, SAS Institute

Raw data rarely arrives ready for analysis; it often contains inconsistencies, missing values, duplicate entries, and formatting errors that can compromise downstream results. This paper demonstrates ways to transform unrefined datasets into high-integrity assets. Combining powerful Base SAS procedures with dynamic Data step logic and SAS functions leads to good data hygiene and validation. Additionally, the use of condition-based error handling, missing data profiling, and custom rules to flag anomalies are explored. Attendees will gain practical, reusable SAS coding strategies that streamline data preparation, enforce validation standards, and ensure high-quality outputs across complex reporting and analytical workflows.


AP-097 : SAS Config - Always useful & seldom used. Customized LOG/LIST outputs with added information
Zeke Torres, Code629

The SAS config file is powerful and useful. In this example, we show how to customize the names of the Log and List files from the code we run, and obtain a useful new name as the result. The new name of a log file might look like this: 20180904_hhmm_userID_name-of-code-that-was-run.log. The benefit is that when one user or a team of users builds the code, everyone can see its progress. In this way, collaborating is simplified and results are easier for colleagues to share and consume. This is a mock or proposed file name. This macro is intended to inspire you to see what additional SAS System values to add to your style. INTRODUCTION The typical problem encountered is we can run our SAS code and get useful output: LOG/LST (List) but after we run it again that original output is gone. Its overwritten. Or if one of our co-workers or team members runs the same code again now our LOG/LST become harder to pin down who ran that code. This is a solution meant to utilize the SAS Configuration file and a set of SAS Macros to improve the name of the LOG/LST output. There are already ways to customize those with SAS options. I will quickly cover those here. But this is more of a recommended methodology for you to consider. My reason for employing this technique is because often I am searching for information in many LOG/LST. Either to debug, help someone debug (Myself, Team Member, Client) or to track progress on a "Project/Build" of work that is critical to gauge where and how things are. Especially when one or more work on something like this. I will mention the use of GIT or additional methods to consider on how to organize your code. But those are not the focus of how to obtain and enable the improved path/naming of LOG/LST. But knowing GIT is not a requirement of this paper.


AP-100 : The Fine-Tuned Programmer: 20 No-Nonsense Tips for Optimal SAS Coding
John LaBore, SAS Institute

As automated tools start writing basic code, the real value of a programmer shifts from just typing code to writing highly efficient, accurate programs. This paper skips generic advice and delivers 20 practical, straightforward tips to fine-tune SAS skills, speed up work, and stay ahead of the crowd. These 20 tips are organized into three clear steps, beginning with setting the stage to establish the correct environment setup right from the start. Next, the focus shifts to coding mechanics. Finally, the paper highlights methods to accelerate development, helping programmers write code much faster without introducing mistakes. By mastering these 20 hands-on tips, programmers will write cleaner code, cut down on processing times, and get accurate results that automated tools simply cannot match.


Basic and Intermediate SAS Coding

BI-007 : The Battle of the Titans (Part II): PROC REPORT versus PROC TABULATE
Kirk Paul Lafler, SasNerd
Josh Horstman, PharmaStat LLC

Should I use PROC REPORT or PROC TABULATE to produce that report? Which one will give me the control and flexibility to produce the report exactly the way I want it to look? Which one is easier to use? Which one is more powerful? WHICH ONE IS BETTER? If you have these and other questions about the pros and cons of the REPORT and TABULATE procedures, this presentation is for you. We will discuss, using real-life report scenarios, the strengths (and even a few weaknesses) of the two most powerful reporting procedures in SAS (as we see it). We will provide you with the knowledge you need to make that difficult decision about which procedure to use to get the report you really want and need.


BI-043 : Remedying Issues with Exporting SAS Data Containing Special Missing Values
Piotr Krzystek, ICPSR at the University of Michigan

Special missing values are missing values that are coded in letter-based characters instead of being formatted as standard blank values. Because of the range of options for coding these missing values, they can offer programmers numerous indications as to the reasons why certain values are missing. Unfortunately, some statistical programs face limitations that would result in these missing values being processed improperly. The purpose of this paper is to discuss the topic of special missing values and how they can be handled in SAS. The outline for this paper consists of discussing the basics of special missing values, issues that arise with these values in other statistical programs, and how to remedy these issues in SAS. The version of SAS used for this paper is 9.4, and users would need a basic understanding of data step syntax to edit and run the code.


BI-050 : Why use SAS PROC SUMMARY instead of SQL with GROUP BY
Nina Werner, Wisconsin Department of Transportation

PROC SUMMARY NWAY with CLASS will bucket our data into the identical subgroups as SQL with GROUP BY, but with the advantage of an automatic count column _FREQ_ that we do not need to program. If we do not use NWAY, we can get so much more. PROC SUMMARY, which can also be coded as PROC MEANS NOPRINT, will produce subtotal rows for each individual and combination of CLASS variables. I will demonstrate features and options of SUMMARY that add value and enable us to provide the functionality of a "cube," i.e., multi-dimensional summarizations, using the automatic _TYPE_ column. The intended audience is Base SAS users of all experience levels on any platform.


BI-051 : Understanding the SAS DATA Step and the Program Data Vector
Steven First, Systems Seminar Consultants

The SAS system is made up of two major components: SAS PROCs and the SAS DATA Step. The DATA Step provides an excellent, full fledged programming language that allows programs to read and write almost any type of data value, convert and calculate new data, control looping and much, much more. In many ways, the design of the DATA step along with its powerful statements, is what makes the SAS language so popular. This paper will address how the DATA step fits with the rest of the SAS System, DATA step assumptions and defaults, internal structures such as buffers, and the Program Data Vector. It will also look at major DATA step features such as compiler and executable statements.


BI-079 : Merge with Caution: How to Avoid Common Problems when Combining SAS
Josh Horstman, PharmaStat LLC

Although merging is one of the most frequently performed operations when manipulating SAS datasets, there are many problems which can occur, some of which can be rather subtle. This paper examines several common issues, provides examples to illustrate what can go wrong and why, and discusses best practices to avoid unintended consequences when merging.


BI-080 : Beyond IF THEN ELSE: Techniques for Conditional Execution of SAS Code
Josh Horstman, PharmaStat LLC

Nearly every SAS program includes logic that causes certain code to be executed only when specific conditions are met. This is commonly done using the IF THEN ELSE syntax. In this paper, we will explore various ways to construct conditional SAS logic, including some that may provide advantages over the IF statement. Topics will include the SELECT statement, the IFC and IFN functions, the CHOOSE and WHICH families of functions, as well as some more esoteric methods. We'll also make sure we understand the difference between a regular IF and the %IF macro statement.


BI-094 : The Essential Dozen: A Step-by-Step Case Study that Solves Complex Data Challenges Using 12 SAS Functions
John LaBore, SAS Institute

Base SAS functions offer powerful, built-in utility for data manipulation, but syntax documentation alone rarely captures their programmatic synergy in production environments. True mastery requires understanding how these tools interact when applied to a sequential, real-world data pipeline. This paper presents an end-to-end case study that addresses complex data-wrangling challenges by deploying a curated suite of 12 core SAS functions.


Data Visualization and Reporting

DV-005 : Ten Practical Rules for Creating Effective Charts, Figures, and Visuals Using SAS
Kirk Paul Lafler, SasNerd

Effective charts, figures, and visuals are essential for communicating data clearly and accurately, yet their creation is rarely straightforward or automatic. The same dataset can be represented in many ways, such as histograms, scatter plots, bar charts, or pie charts, and even when the same visualization type is used, interpretation can vary widely across audiences. A more inclusive perspective views data visualization as a graphical interface between people and data, emphasizing clarity, accessibility, and intent. This paper builds on the work of Nicolas P. Rougier, Michael Droettboom, and Philip E. Bourne by presenting ten practical rules for improving the design and production of charts, figures, and visuals using SAS .


DV-010 : OOTB (Out of the Box) Data Visualizations with SAS: An Introduction to what the ODS Graphics Statement Can Do for You
Louise Hadden, Independent Consultant

Creating graphic outputs with SAS software has been the subject of many a SAS paper over the years, including my own. Many maintenance releases and a version ago, SAS introduced a pre-production version of ODS GRAPHICS, a new graphics system which was template based, following in the Output Delivery System's footsteps. This new system was moved to BASE SAS from SAS/Graph, and remains there today. In ODS GRAPHICS, many statistical procedures can produce one or more graphic, depending on options within the procedure, etc., simply by having the ODS GRAPHICS statement active. In SAS 9.2, SG family of procedures was introduced, which also interacted with the ODS GRAPHICS statement. Today the ODS GRAPHICS statement is the backbone of visualizations in SAS 9, interacting with other ODS statements, procedures, templates, and GTL (graphics template language). This presentation will focus on the ODS GRAPHICS statement and its many wonderful options, and why users might want to add some OOTB (out of the box) ODS graphics to their SAS toolboxes. Data elements are explored with ODS GRAPHICS visualizations both as single elements (univariate statistics and graphs) and as elements in conjunction with other elements (multivariate statistics and graphs), using the ODS GRAPHICS statement with various options with selected SAS statistical procedures that support ODS GRAPHICS. Although the ODS GRAPHICS statement supports the powerful SG (statistical graphics) procedures and works hand in hand with ODS statements, styles, and templates, this presentation focuses on statistical procedures included in BASE SAS, SAS/STAT, SAS ETS, etc. that produce plots.


DV-011 : The (ODS) Output of Your Desires: a Tool-kit for Creating Designer Reports and Data Sets
Louise Hadden, Independent Consultant

The Output Delivery System (ODS) delivers what used to be printed output in many convenient forms. What many of us don't realize is that "printed output" from procedures (whether the destination is PDF, RTF, or HTML) is the result of SAS packaging a collection of items that come out of a procedure that most people want to see in a predefined order (aka template). This session addresses the opportunity to harness the power of SAS's Output Delivery System (ODS) and ODS Output Objects to create highly customized reports and data sets tailored to specific needs, saving time and enhancing clarity. Attendees will learn how to trace, manipulate, and repurpose ODS output objects using tools like ODS TRACE, ODS OUTPUT, and SAS reporting procedures to extract precise information, coalesce data, and present it in visually appealing formats across multiple ODS destinations. This session provides tools and concepts to transform procedural output into camera-ready, designer-quality reports.


DV-021 : Bessler's Data Graphics Coloring Book
LeRoy Bessler, Bessler Consulting and Research

This is actually a paper, not a book. It's a presentation about Best Practices, based on Bessler's Principles of Communication-Effective Use of Color (excerpted in a concise handout for attendees). The principles are actually software-independent, but any aspects, or methods of implementation, unique to SAS software will be clarified. The principles are, in most cases, also medium-independent. They are applicable whether web page, data graphic, table, map, text, or print. If you want to actually use color for communication, not simply decoration, the two fundamental principles are: (a) make it (the lines, the plot markers, the legend color swatches) actually distinguishable (What IS that color?); and (b) if for text, make that text readable. Color distinguishability and text readability are not automatic. (Worst Cases Seen: Gray text on White, Yellow on White, Black on Blue. Really? WHY?) Both those communication objectives are frequently missed. Inadvertent variance from The Principles does not constitute "coloring outside the lines", but maybe it does. Come to see what's inside the lines. Please do not wear rose-colored glasses. The SAS default color palette lacks vitality. Let me show you other options. A pleasure of childhood is having a book (typically oversized, in my days of boyhood) of empty-outline pictures that you can fill in with crayons. No coloring books and crayons will be distributed to presentation attendees, but showing up will qualify you for a Best Practices tip sheet, including data graphic pictures already colored.


DV-036 : X Marks the Spot: Mapping Spatial Data with SAS Code
Greg Treiman, SAS

Location is at the center of everything we do. Whether your data involves addresses, sales territories, administrative boundaries, or something else, chances are it has a spatial component waiting to be unlocked. This session demonstrates how to use SAS to programmatically access, prepare, and visualize spatial data, turning raw geographic information into insights you can act on. Using SAS Studio, we'll walk through a complete spatial workflow: importing a shapefile of the continental US with PROC MAPIMPORT, examining the resulting map data structure, and discussing how and when to project spatial data to minimize distortion. We'll then build progressively richer visualizations with PROC SGMAP starting with a simple county-level map, layering in a choropleth map shaded by population, and finally adding a scatter layer to highlight a specific location. Attendees will leave with a clear understanding of how SAS handles common spatial data formats, why projection matters for accurate mapping, and how PROC SGMAP's layered approach makes it easy to build attractive, informative maps no GIS background required. This session is appropriate for both SAS Viya and SAS 9.4 users.


DV-040 : SAS for Microsoft 365: Integrating SAS Programs, Data, and Reports Across the Microsoft 365 Ecosystem
Shelby Taylor, SAS Institute

SAS for Microsoft 365 bridges the gap between advanced analytics and everyday productivity tools by integrating SAS Viya directly into Microsoft Excel , Microsoft Word , Microsoft PowerPoint , and Microsoft Outlook . This paper provides an overview of SAS for Microsoft 365 and demonstrates how analysts can prepare data and generate insights in SAS Viya, then seamlessly explore, update, and share results within familiar Microsoft applications. SAS Visual Analytics reports can be accessed, filtered, and embedded as live objects in Excel, enabling users to insert charts and tables that remain linked to the underlying SAS data. The paper also highlights inserting SAS data tables into Excel for local exploration, uploading Excel-based data back into SAS Viya, and executing SAS programs directly from Microsoft applications with results embedded in documents and spreadsheets. Examples include updating report objects based on new filters, enhancing inserted data with native Excel features, and regenerating results after code changes. In addition, SAS for Microsoft 365 simplifies communication by embedding report objects, attaching customized PDF reports, and inserting live report links directly into Outlook emails, as well as creating dynamic Word documents and PowerPoint presentations powered by SAS analytics. By combining the analytical strength of SAS Viya with the accessibility of Microsoft 365, SAS for Microsoft 365 enables more efficient analysis, collaboration, and reporting workflows.


DV-045 : A Map to Success with Data Visualization Using ODS Statistical Graphics
Richann Watson, DataRich Consulting
Louise Hadden, Independent Consultant

Creating custom graphics does not have to be a daunting experience. Anyone who has produced a graph using Output Delivery System (ODS) Graphics has unknowingly used the Graph Template Language (GTL). We take you on a guided tour of how to create a truly custom graph. Our first stop starts with an illustration of a basic plot with little complexity produced with Statistical Graphics (SG) procedures. We then make a pit stop with the TMPLOUT option to help convert the simple plot to GTL. On our road to create a custom graph we need to get out our map to build a map. Our last stop of this adventure takes us to the combining of these two graphs to illustrate the power of GTL to truly customize your graphs.


DV-049 : Building a Reusable Python Visualization Framework for Clinical Trial Safety Reporting
Vijaya Lakshmi Cherakam, California Softtech Inc

Python has become an essential open-source technology for automating data analysis and visualization across many industries, including clinical research. While statistical software remains the primary tool for generating regulatory analysis datasets and tables, producing publication-quality graphics often requires repetitive programming and study-specific customization. This paper presents a reusable Python framework that automates the generation of clinical safety visualizations while demonstrating software engineering practices that improve efficiency, scalability, and reproducibility. The framework leverages Pandas for data preparation and subject level aggregation, and Matplotlib and Seaborn for creating high-quality visualizations. Rather than developing individual scripts for each figure, the solution uses modular functions, parameter-driven execution, and configurable settings to support multiple studies with minimal code changes. Users can dynamically specify treatment groups, analysis populations, filtering criteria, ranking thresholds, severity ordering, color palettes, and output formats through a centralized configuration, eliminating the need to modify core program logic. Using adverse event reporting as a real-world example, the framework automatically generates commonly requested visualizations, including overall incidence plots, severity distribution stacked bar charts, and ranked Preferred Term frequency charts. The workflow incorporates reusable plotting utilities, automated validation checks, standardized styling, and version-controlled code to produce consistent, publication-ready outputs while reducing manual intervention and programming errors. Attendees will gain practical guidance on designing reusable Python applications, organizing project structures, and implementing open-source packages to build scalable visualization pipelines. Although demonstrated using clinical trial safety data, the framework can be readily adapted to other analytical domains requiring automated, reproducible, and high-quality graphical reporting.


DV-071 : Plotting by Groups: Comparing PROC SGPLOT and PROC SGPANEL
Melinda Macdougall, Cincinnati Children's Hospital Medical Center

From simple to complex, SAS Graphics has you covered for all of your visualization needs! PROC SGPLOT is your first stop for simple and informative plots. Have multiple groups or timepoints you need to compare? No problem! PROC SGPLOT can handle many of those tasks as well. When your groups become too much for PROC SGPLOT to handle, PROC SGPANEL comes to the rescue! In this talk, I'll walk through examples of options in both PROC SGPLOT and PROC SGPANEL for comparing results across groups.


DV-078 : Creating and Customizing High-Impact Excel Workbooks from SAS with ODS EXCEL
Josh Horstman, PharmaStat LLC

Love it or hate it, Microsoft Excel is used extensively throughout the business world. As a SAS user, you can enhance the impact of your work by using the ODS EXCEL destination to create high-quality, customized output in Excel format directly from SAS. This paper walks through a series of examples demonstrating the flexibility and power of this approach. In addition to complete control over visual attributes such as fonts, colors, and borders, the ODS EXCEL destination allows the SAS user to take advantage of Excel features such as multiple tabs, frozen or hidden rows and columns, and even Excel formulas to deliver the high-impact results you and your customers want!


DV-090 : Quickly Easily Understood Data Graphics: My Principles, Examples, and Code
LeRoy Bessler, Bessler Consulting and Research

Let me share with you my experience-based principles of communication-effective design, my examples, and my code, so that you can adapt them to your application needs. Since shortly after the birth of the technology, I have searched for, experimented with, and developed so many ways to get the best out of data graphics software.


DV-091 : Gallery of SAS Visual Communication: Maximally Informative Data Graphics
LeRoy Bessler, Bessler Consulting and Research

I have been an enthusiastic exploratory energetic user of SAS data graphics software (and other such software) since 1981, pursuing The Power to Show for 46 Years, providing image PLUS precise numbers for quick easy inference and correct inference. This is a recollection while I persist in creating more to recollect. Though I worked through, and wrote a book about, every kind of chart, plot, or graph (except the vector plot) that SAS ODS Graphics can do, this is only a subset of the possible, but a universally useful subset. It is an update and an addendum to the legacy of William S. Playfair, the founder of statistical graphics. See examples from my forty-six years of data graphics joy, pursuing and enhancing what Playfair began 240 years ago, but also including types of data graphics that he never got to. This gallery comes with SAS coding tools for your data graphics workshop/studio, as well as my principles as to best practices for applying the tools.


DV-102 : %SGPLOTLY: A SAS Macro for Specifying and Creating Plotly Sunburst Charts
Ted Conway, Self

Even when LLM-based agents produce visually effective charts, cautions Microsoft in a just-published research paper, the resulting specifications and generated code are often verbose and fragile. Microsoft's answer to this problem is Flint, its new visualization language that compiles simple, human-editable specifications into complete, executable specifications for multiple target grammars, including Plotly. It's a concept that's very familiar to users of SAS macros, which have enabled SAS programmers for decades to quickly and easily define and use their own high-level language extensions that compile into deterministic executable code. In this session, we'll take a look at SAS macros - designed in the spirit of PROC SGPLOT - that allow one to easily specify the parameters for Plotly Sunburst charts. We'll also touch on options for executing the emitted Python code directly from SAS (e.g., SASPy, X commands, PROC PYTHON). Finally, we'll take a quick look into how non-deterministic LLMs can be used to help get ideas for the deterministic macros (design, code, and documentation!) that constitute our domain-specific language (DSL) for visualization. This session is intended for all levels of SAS programmers.


DV-106 : The 10 Most Frequently Asked Questions about the Output Delivery System
Chevell Parker, SAS Institute

This presentation addresses the ten questions most frequently raised about the Output Delivery System (ODS), practical answers to help better understand its purpose, functionality, and how to better take advantage of day-to-day use. Additionally, it covers an overview of ODS, with key topics such as questions about some of the ODS destinations, issues managing styles, common operational issues, and more. The presentation is designed to provide actionable guidance for using the ODS effectively and efficiently.


E-Posters

EP-006 : Soft Skills to Gain a Competitive Edge in the 21st Century Job Market
Kirk Paul Lafler, SasNerd

Today's economy requires members of the workforce to develop two essential categories of skills: hard skills and soft skills. Hard skills refer to job-specific knowledge and technical abilities that enable individuals to perform specific responsibilities effectively. Examples include SAS, R, Python, and other technical, programming, data analysis, project management, and market research techniques. Soft skills, on the other hand, are less tangible and often difficult to measure. They encompass the personal qualities, attributes, and interpersonal traits that shape how individuals interact and collaborate with others in the workplace. Soft skills are typically developed through life experiences and workplace interactions. The encouraging news is that soft skills can be learned and mastering them provides a significant competitive advantage in today's fast-paced and rapidly evolving job market.


EP-033 : NOBS for Noobs
David Horvath, PhilaSUG

This mini-session will be a short discussion of the NOBS (number of observations) option on the SET statement. This includes one "gotcha" that I've run into with where clauses: NOBS is set before WHERE processing. If you have a reason to know the number of observations after the WHERE clause, another DATA step is needed.


EP-060 : AI-Powered Code Review: Using Generative AI to Improve SAS Program Quality, Consistency, and Maintainability
Kirk Paul Lafler, SasNerd
Ryan Paul Lafler, Premier Analytics Consulting, LLC

As organizations increasingly integrate Artificial Intelligence (AI) into software development, code review has emerged as one of the most practical and valuable applications for Generative AI. Traditional code reviews require significant time and expertise to identify programming errors, inconsistent coding practices, inadequate documentation, and maintainability concerns. Large Language Models (LLMs) can serve as intelligent programming assistants by analyzing SAS code, explaining complex logic, recommending improvements, identifying potential defects, and generating meaningful documentation. This e-poster demonstrates how AI can enhance, not replace, the software development lifecycle by providing rapid, consistent, and context-aware code review recommendations. Through practical SAS programming examples, an AI-assisted review workflow, and real-world best practices, attendees will learn how Generative AI can improve code quality, accelerate review cycles, reduce technical debt, and promote programming standards. The presentation also discusses current limitations of AI-assisted reviews and emphasizes the continuing importance of human expertise in validating business logic, statistical methodology, regulatory compliance, and production readiness.


EP-098 : PROC FORMAT with HTML - Drill Down output in Web and/or Excel
Zeke Torres, Code629

The end users that I support want a quick summary of data. With the ability to explore the results without waiting for more code to run or sifting thru thousands of rows of data in endless spreadsheets. SAS has great features built in with ODS to HTML and ODS to EXCEL. What I'm doing is taking a few simple PROC Formats and embedding some HTML/urls' within them. I place a few macro statements in to facilitate the process. The result is an output that gives a user the feeling of drilling down' into the data. We've all used PROC Format to group and organize results. We have all even exported some output to give to users. Sometimes that's all the end-user asks for. What if we gave them a little bit of ODS, with Formats, some Excel output and it was actually pretty easy? We wont need lots of HTML coding experience this topic covers the basics. INTENDED AUDIENCE This paper is intended for SAS users who have a technical skill level that starts at the higher beginner' level thru intermediate'. The author has made every attempt to keep the examples of the code focused around Base SAS . With this code able to run on PC SAS and SAS University Edition. The use of supplemental software or other languages are general and it is assumed that the audience will obtain sufficient information via this abstract to adequately manage changes required by their own scenarios and OS environment requirements.


EP-105 : How to Communicate with Color
LeRoy Bessler, Bessler Consulting and Research

If you want to actually use color for communication, not simply decoration, the two fundamental principles are: (a) make it (the lines, the plot markers, the legend color swatches) actually distinguishable (What IS that color?); and (b) if for text, make that text READABLE. Color distinguishability and text readability are not automatic. (Worst Cases Seen: Gray text on White, Yellow on White, Black on Blue. Really? WHY?) The SAS default color palette lacks vitality. The e-Poster shows you a better option, and the related MWSUG 2026 paper "The Data Graphics Coloring Book" shows you even more. See the Folly of the Regrettably Popular Use of ALWAYS UNinforming Color Gradient Legends, and What to Do Instead. This a presentation about Best Practices, based on Bessler's Principles of Communication-Effective Use of Color, available in Chapter Two of my book, or via email request. The principles are actually software-independent, but any aspects, or methods of implementation, unique to SAS software are be clarified in the companion paper. The principles are, in most cases, also medium-independent. They are applicable whether web page, data graphic, table, map, text, or print.


Hands On-Workshops and Live Demos

HD-003 : SAS Performance Tuning Techniques (From Slow to Scalable)
Kirk Paul Lafler, SasNerd

In today's data-driven environments, inefficient SAS programs can quickly become bottlenecks, wasting computing resources, delaying insights, and frustrating users. This paper demystifies SAS performance tuning by focusing on practical, high-impact techniques that deliver measurable improvements. Using a synthesized Framingham Heart Study dataset (500 observations, 22 variables), participants will learn how to identify performance issues and apply optimization strategies across DATA steps, PROC SQL, and macro processing. The session emphasizes real-world diagnostics using SAS system options (e.g., STIMER, FULLSTIMER, MSGLEVEL, MPRINT) and demonstrates how to reduce I/O, minimize CPU usage, and streamline execution. Attendees will explore indexing strategies, efficient WHERE clause usage, dataset compression, hash objects, and macro-optimization techniques. Each concept is reinforced through guided exercises that compare inefficient vs. optimized code, enabling participants to quantify performance gains. By the end of the session, participants will have a practical toolkit for diagnosing and resolving SAS performance issues, transforming slow, resource-heavy programs into efficient, production-ready and scalable solutions.


HD-012 : Putting Data on the Map: Geospatial Storytelling with SAS Visual Analytics
Greg Treiman, SAS

Effective data storytelling often requires spatial context, and SAS Visual Analytics provides powerful tools for building interactive geographic reports. This session introduces participants to core geospatial capabilities within SAS Visual Analytics. Attendees will learn how to create and configure geography data items using latitude and longitude values, standardized geographic codes, and built-in lookup methods. Participants will explore a range of mapping techniques, including geo region maps, coordinate maps, and combined region-coordinate visualizations, and learn how each supports different analytical goals. Building on these fundamentals, the session will highlight advanced workflows for creating custom geographic polygons using external spatial data stored as shapefiles or Esri feature services. Using real-world examples, participants will gain insight into best practices for linking spatial and tabular data, selecting appropriate map types, and designing clear, effective visualizations. By the end of the session, attendees will be equipped to incorporate geographic analysis into their reports.


HD-013 : IoT/AIoT for SAS Programmers: From Camera to SAS Data to Analytics
Paul McDonald, Independent

This hands-on workshop introduces SAS programmers to practical IoT/AIoT concepts using inexpensive hardware, real-world event data, and modern analytics workflows. Attendees will follow the path from camera and sensor input through data capture, processing, storage, and analytics using SAS and supporting open-source technologies. A standard camera available on most modern laptops or personal computers is sufficient to get started. The workshop emphasizes applied learning through guided examples and demonstrations. Participants will see how real-world signals can become structured SAS data suitable for reporting, event monitoring, automation, and AI-assisted decision support. Topics include event-driven processing, lightweight data pipelines, image and sensor capture, structured data preparation, and analytics integration. Examples will demonstrate how SAS programmers can extend existing analytics skills into IoT and AIoT environments while continuing to leverage SAS as a core analytics platform. The session also discusses architectural considerations, including data movement, edge processing, governance, and operational constraints commonly encountered in production systems. Attendees should bring a laptop for participation in guided exercises and demonstrations. A current Microsoft Windows operating system, built-in or external camera, and reliable internet connection will provide the best workshop experience. No prior IoT experience is required, although familiarity with SAS programming is recommended. Examples are platform-independent where possible and will reference SAS 9.4, SAS Viya, Python utilities, and lightweight open-source tools. Participants will leave with reusable examples, reference materials, and access to a self-paced training program that can be continued after the conference.


HD-018 : Learn to Code
Amber Dieter, WI DOJ MFCEAU

This presentation is designed to show real world applications of writing SAS code and its superiority over Excel for complex analysis. The presentation walks through the various steps of analyzing data and shows options of how to effectively interact with your data. Starting with a basic review of the data using the ability to analyze all columns with a prebuilt macro, a user would move on to cleaning and preparing the data with do loops, distance calculations, geographical locations, etc. to allow for the use of SAS prebuilt statistical analytics like NPARWAY and ROBUSTREG to create stunning visuals and dashboards for use by non-data people. Any version of SAS, Beginner to Intermediate Level


HD-030 : Building SAS Viya Jobs
Greg Treiman, SAS

Many SAS users write programs that work well for a single, fixed scenario but stop there, missing an easy opportunity to turn that logic into a reusable, shareable tool. This session walks through the process of transforming a working SAS program into a fully interactive SAS Viya job that any end user can run from a browser, no SAS Studio access or programming knowledge required. We'll start with a simple reporting program built with PROC SQL, PROC RANK, and SGPLOT, demonstrate how to convert a SAS program into a job definition, execute it via a shareable URL, and then layer in dynamic behavior using job parameters. From there, we'll explore the two ways SAS Viya lets you put a front end on that logic: hand-coded HTML forms for full design control, and the built-in point-and-click Prompt Designer for fast, no-code form building. By the end of the session, attendees will understand how job definitions, parameters, and forms work together to turn one-off SAS code into governed, end-user-friendly reporting tools. If you want to automate your SAS programs and turn them into self-service tools your colleagues can control and run themselves, this session is for you.


HD-042 : From Prompt to Program: How AI Can Accelerate SAS Programming with SAS-Native and External Tools
Shelby Taylor, SAS Institute

Artificial intelligence (AI) is transforming the way programmers develop, review, and optimize code. This paper explores how AI-powered tools can enhance SAS programming while keeping the SAS programmer at the center of the development process. The discussion begins with best practices for prompting AI tools to generate accurate, efficient, and context-aware SAS code. It then examines SAS-native AI capabilities, including SAS Viya Copilot in SAS Data and AI Studio and the SAS Viya Copilot extension for Visual Studio Code, highlighting how these integrated tools support code generation, explanation, refinement, and documentation within the SAS ecosystem. The paper also explores the use of external AI assistants, including ChatGPT, Microsoft Copilot, Claude, and Gemini, and discusses how these tools can complement SAS programming through code development, troubleshooting, optimization, and learning support. Through practical examples and guidance, this paper demonstrates how AI can serve as a collaborative coding assistant. While AI can accelerate development and improve productivity, the SAS programmer remains responsible for validating generated code, applying domain knowledge, ensuring accuracy, and making final decisions.


HD-069 : Bayesian Choice Models in PROC BCHOICE
Danny Modlin, SAS

This presentation focuses on the BCHOICE procedure that performs Bayesian analysis for discrete choice models. These models are used in marketing research to model decisions makers' choices among alternative products and services.


HD-081 : Getting Started with R Clinical Programming
Brian Varney, Experis

R is quickly becoming more common as a tool for clinical programming side by side with SAS Software. From building CDISC data sets to creating tables, listings, and figures, the same type of processing needs to be accomplished regardless of the computing software being used. The purpose of this workshop is to jump start the R journey for those that are just getting started with R. This workshop will include but not be limited to the following topics: Global Variables Reading and Writing Data Creating Data Frames Sorting Data Creating New Variables Group By Processing Transposing Data Combining Data (Stacking and Joining) This training will focus on Base R and the tidyverse family of packages. We will be using Posit Cloud for this hands-on training.


HD-083 : Getting Started with SAS Viya Workbench: SAS, Python, and R in One Analytics Environment
Jim Blum, UNC Wilmington

SAS Viya Workbench provides a modern, code-first environment for analytic work using SAS, Python, and R. This one-hour demonstration introduces the platform from the perspective of helping new users, including students, become productive quickly. The focus is on understanding the workspace, navigating available tools, and completing practical analytic tasks in a multi-language environment. Topics include launching and orienting to the Workbench environment, working with project files, running SAS code, using Python and R, accessing data, manipulating data, generating summary statistics, creating graphics, and producing simple reports. The demonstration emphasizes tasks that help users understand how the environment fits together: where code lives, where results appear, how files are managed, and how similar analytic workflows can be carried out across different languages. Participants will see examples of basic data analysis in SAS language, Python, and R, with attention to how Viya Workbench supports familiar coding interfaces such as Jupyter, Visual Studio Code, and SAS-oriented workflows. The session is designed for instructors, students, analysts, and programmers who want a practical first look at using Viya Workbench for everyday analytic work.


Open Source Development and Tools

OS-027 : Enhancing Your SAS Viya Workflows with Python: Integrating Python's Open-Source Libraries with SAS using PROC PYTHON
Ryan Paul Lafler, Premier Analytics Consulting, LLC
Miguel Bravo Martinez Del Valle, Premier Analytics LLC

Developers, data scientists, and analysts are increasingly leveraging open-source tools and libraries to integrate with and enhance their existing data engineering and analytical workflows. One of these integrations, built into SAS Viya , is its pre-configured Python runtime integration, PROC PYTHON, that gives SAS programmers access to Python's open-source data science libraries for processing, visualizing, and analyzing data alongside SAS procedures. This presentation demonstrates how to access and use Python libraries in Viya runtimes; understand data-handling in Python and SAS; build Python scripts with reusable methods that import, process, and analyze data; and execute those Python methods to export Pandas DataFrames as SAS datasets.


OS-031 : Working with Open Source in a Highly Regulated Industry
David Horvath, PhilaSUG

The use of open source components within applications is rife with difficulty and risk. The following areas are concerns in all organizations. Timeliness Provenance Correctness Availability In particular, what happens if you lose your tools or it includes malware or specifically targets your organization? How do you mitigate these dangers? In some ways, life is easier in highly regulated industries because those regulators limit how we can use open source components and tools (although those are relaxing over time). We will be reviewing these factors as well as some of the ethical issues involved.


OS-041 : PROC R: The Newest Way to Integrate R within SAS
Shelby Taylor, SAS Institute

R and SAS are often positioned as competing languages. But if you primarily program in R and are new to SAS, or vice versa, you may be surprised by how many ways the two can work together. The newest and arguably most seamless integration method is the R procedure (PROC R), introduced in SAS Viya 2026.03. This paper discusses the functions within PROC R that enable R and SAS to communicate, including converting a SAS table to an R data frame, creating and calling macro variables in R, and rendering R plots with packages like ggplot2 within a SAS program. The paper also covers how to incorporate R into SAS Studio flows, including how to use R code to build custom steps within a flow. By the end of this paper, SAS programmers will have a clear roadmap for incorporating R into their existing workflows, and R programmers will see how their code can extend the power of SAS.


OS-048 : Are We Winning the (Vulnerabilities) Battle
Mike Krizan, STAT X1, Inc.

Vulnerability scanners provide detailed snapshots of an organization's cybersecurity environment, but a single scan cannot answer a more important management question: Are vulnerabilities being remediated faster than new ones are appearing? This presentation demonstrates a repeatable SAS Viya data pipeline for transforming recurring vulnerability scan data into measures of cybersecurity progress. Data from sources such as Splunk, Qualys, and Tenable is standardized and organized around a stable vulnerability key so that individual server vulnerabilities can be compared across reporting periods. Prior and current observations are classified as new, existing, closed, or reopened. The same comparison methodology can then be applied across weekly, monthly, quarterly, and yearly reporting periods to measure remediation progress and longer-term trends. The SAS Viya pipeline follows five stages: ingest, standardize, compare, aggregate, and visualize. Measures such as open backlog, new vulnerabilities, closed vulnerabilities, net change, vulnerability age, and severity provide both operational detail and management-level trend reporting. The objective is to move cybersecurity reporting beyond static vulnerability counts toward a consistent measurement framework that shows whether remediation efforts are producing measurable progress or whether the vulnerability backlog is continuing to grow.


OS-073 : Bayesian Causal Root-Cause Discovery for Asynchronous Industrial Data
Santosh Desai, University of Michigan
Urvi Mehta, University of Michigan

Industrial telemetry often records when a controller publishes a value rather than the exact physical time at which the underlying state changed. Conventional causal discovery can therefore reverse apparent cause and effect, producing unstable root-cause diagnoses. This paper develops a Bayesian framework that treats physical event times, propagation delays, and causal structure as uncertain quantities rather than fixed inputs. The proposed method estimates a posterior distribution over causal graphs and root-cause candidates, and it can abstain when the available evidence does not support a reliable diagnosis. The study uses two freely downloadable public benchmarks: the Causal Chambers light- and wind-tunnel intervention datasets for controlled graph recovery, and the causRCA manufacturing dataset for industrial fault diagnosis with known manipulated variables. Experiments introduce bounded timestamp jitter, publication delays, batching, and missing events to identify when causal direction remains recoverable. Performance is evaluated through structural Hamming distance, directed-edge precision and recall, posterior calibration, root-cause ranking, and confidently incorrect diagnosis rates. The workflow uses SAS Viya 4, PROC CAUSALDISCOVERY, CAS, and PROC PYTHON for custom Bayesian inference and comparison methods. No specific client operating system is required, although access to SAS Viya and supported open-source Python packages is necessary. The presentation is intended for intermediate-to-advanced SAS users with familiarity with statistical modeling; prior Bayesian or causal-inference experience is helpful but not required.


OS-076 : No Viya Yet? Try Using DuckDB With SAS 9.4 and SASPy!
Ted Conway, Self

Want to use DuckDB with SAS but your organization doesn't have Viya with SAS/ACCESS to DuckDB yet? Chin up, Bunky! While not as seamless, you can still make SAS 9.4 and DuckDB play nice together while you're waiting for full-featured Viya access to DuckDB. The DuckDB CLI can read SAS datasets using its read_stat community extension. And thanks to SASPy, the open-source Python package that enables programmers to jump between the SAS and Python worlds, you can also tap into DuckDB's rich SQL extensions from SAS when your needs exceed the capabilities of ANSI standard SQL. In this session, we'll see how SASPy can be used to integrate SAS 9.4 and DuckDB, even across platforms. SASPy can be used in a variety of SAS, Viya and Python deployments. For this session, a laptop-based Microsoft Visual Studio notebook running Python will be used together with Base SAS 9.4 via the Cloud-based SAS OnDemand for Academics to showcase some of DuckDB's advanced SQL tricks. This session is intended for all levels of SAS programmers.


OS-082 : Introduction to Posit Assistant and Positron IDE
Brian Varney, Experis

AI Assistants in coding interfaces are becoming more and more common. The Posit Assistant in RStudio and Positron is a recent development and leverages AI to assist you in your coding endeavors. The Positron IDE is also very recent and we will also demonstrate how it is used for coding. This presentation will focus on demonstrating the following topics: * How to use the Posit Assistant in RStudio * The Positron IDE * How to use the Posit Assistant in Positron


OS-085 : Building Better Data Science Workflows: Best Practices with Git, GitHub, Data Version Control (DVC), and MLflow for Open-Source Collaboration
Ryan Paul Lafler, Premier Analytics Consulting, LLC

This paper presents a practical framework for building reliable, reproducible, and collaborative data science workflows using Git, GitHub, Data Version Control (DVC), and MLflow. It begins by introducing Git as the foundation for tracking code changes and GitHub as a collaboration layer for shared repositories, branching strategies, pull requests, and team-based development. DVC is then presented as an extension to version control that enables datasets, intermediate outputs, and analytical artifacts to be tracked, compared, and restored alongside code without storing large files directly in Git repositories. The paper demonstrates strategies and techniques for meaningful commit practices, managing work-in-progress (WIP) safely, reducing merge conflicts, and maintaining structured project histories across collaborative environments. Building on this foundation, MLflow is introduced as a lightweight experiment tracking and model management layer for machine learning workflows in Python, allowing teams to record training runs, fine-tuning parameters, evaluation metrics, model artifacts, and performance comparisons during iterative development. Together, Git, GitHub, DVC, and MLflow provide an integrated open-source ecosystem for managing code repositories, versioning data, and tracking model experiments across collaborative data science, machine learning, and analytics projects.


OS-093 : From SAP to TLF: AI-Assisted ARS Metadata for Traceable Clinical Reporting
Sy Truong, Meta-Xceed, Inc.

Tables, listings, and figures (TLFs) are among the most labor-intensive clinical programming deliverables, and changes to analysis requirements can create substantial downstream rework. A major challenge is that requirements are often distributed across Statistical Analysis Plans (SAPs), ADaM specifications, dataset metadata, TLF shells, and programming code, making traceability and consistent implementation difficult. This paper presents a metadata-driven approach in DoLoup that uses the CDISC Analysis Results Standard (ARS) as a structured bridge between analysis requirements and TLF development. Relevant SAP sections are identified and combined with ADaM specifications and dataset metadata to generate ARS metadata describing the analysis and expected output. Rather than requiring programmers to work directly with JSON, the metadata is presented through an interactive interface where TLF shells and analysis attributes can be reviewed and modified. Programmers can make targeted changes manually or use AI to perform larger modifications, such as changing display precision or restructuring treatment columns. Configurable QC checks evaluate the ARS against CDISC guidance as well as organization-, project-, and therapeutic-area-specific requirements. Findings are presented through a human-in-the-loop review process where they can be accepted, rejected, manually corrected, or addressed with AI assistance. By making ARS an active component of TLF development rather than a downstream documentation artifact, this approach creates a more traceable connection from SAP requirements through specifications, shells, programs, QC, and final outputs. The result is a reusable framework for reducing TLF rework while improving consistency, reviewability, and metadata-driven automation.


OS-103 : We Are Family Practical Tips for Integrating Python, R, and SAS Under One Roof
Chevell Parker, SAS Institute

In today's analytics landscape, SAS programmers and data analysts often rely on multiple programming languages to perform analysis. This session demonstrates how Python, R, and SAS can work together seamlessly in the Viya environment as one analytical family. We will discuss the integration points of Python and R as well as key features of the Python and R procedures, effective management of your Python and R environments, and troubleshooting tips. Further items discussed involve generating your analysis with Cloud Analytics Services (CAS). Finally, we will take a look at the new and flexible SAS Viya Workbench and how it can expand and accelerate your ecosystem. Whether you are a SAS programmer or data analyst, you will discover that each language has a seat at the table under one unified roof.


OS-109 : Crossing the Isthmus with PROC PYTHON: A Practical Path from SAS 9 to Modern Analytics
Joe Madden, SAS

Madison's isthmus connects two lakes. PROC PYTHON can connect two analytical worlds. Many organizations want to adopt modern SAS, open-source libraries, and innovative analytical techniques, but decades of valuable SAS 9 code are not going away overnight. Rather than rewriting everything (AKA taking the long way around the lake), what if you could take a stroll along the Isthmus worry free? This session demonstrates how PROC PYTHON allows SAS programmers to embed Python directly within familiar SAS workflows, leverage popular open-source packages, and return results to trusted SAS processes. Through practical examples and migration patterns, attendees will learn how to modernize incrementally, preserve existing investments, and create a realistic path available for SAS9 customers today.


OS-110 : The Beneficiary Claims Data API: The Python use case
Jack Shoemaker, Medical Home Network

The Centers for Medicare & Medicaid Services (CMS) provides administrative data through the Beneficiary Claims Data API (BCDA). This session demonstrates a real-world workflow using SAS tools (PROC HTTP and the JSON engine) to submit data requests, track their status, and retrieve NDJSON files upon completion. While BCDA documentation offers cURL examples, we'll show how to translate those templates into PROC HTTP for greater flexibility and control over API responses. Because BCDA requires a multi-step process with asynchronous submissions, we'll also address the orchestration challenges and present a practical solution. Although focused on BCDA, the techniques discussed apply broadly to other APIs for accessing data in modern digital ecosystems.


Pharma and Healthcare

PH-019 : An HTML-Enabled COVID-19 InfoGeographic Atlas: How Bad Was It and Where
LeRoy Bessler, Bessler Consulting and Research

Geographic distribution of a measure is often shown with a color gradient palette and legend. Though indicating Greater versus Lesser, that fails to deliver real insight. It's impossible to: (a) exactly match area to legend color; (b) label every legend color; and (c) know value differences between areas. Instead, color-code by range (e.g., Top/Bottom 10, Above/Below Median, Median) and rank the areas. Provide precise comparison. Add SideNote reference lists of Country, Measure (Cases, Mortalities, Case Rate, Mortality Rate, Population), and Rank of Measure to provide look-up information, with lists two ways: (a) Country by Rank within Each of the Five Ranges; and (b) Countries in Alphabetical Order. The very small countries on a map are a challenge to find, and to get the mouse show their country names and information. Annotating each country with its rank of the map's measure of interest allows the viewer to identify each country, and use the SideNotes lists to find static information that never disappears as the mouse moves. The web-enabled InfoGeographic Atlas includes maps for the World, five continents, and seven regions. Each of the thirteen possible map areas has interlinked maps for the five measures of interest, and each of those maps is linked to a pair of interlinked bar charts (ranked and alphabetic) of all of the information for each country on the map, and an alphabetic spreadsheet of same. Maps are also included that try to show whether high case rate countries possibly induced high case rates in adjacent countries.


PH-035 : RELREC Demystified: A Practical Guide to Mapping Tumor Relationships in Oncology Clinical Trials
Raj Kumar Devarakonda, Fortrea

Oncology trials generate complex, interrelated data across the Tumor Identification (TU), Tumor Results (TR) and Disease Response (RS) SDTM domains, following response evaluation criteria such as RECIST 1.1. Defining accurate relationships between target lesions, their measurements and overall response assessments is essential for regulatory submission and downstream analysis. The SDTM RELREC dataset is the standard mechanism for capturing these relationships, yet building it correctly, especially across multiple visits, lesion types and assessment methods remains a common source of programmer error and reviewer queries. Without a well constructed RELREC, reviewers cannot determine which lesion measurements contributed to a given response assessment. This paper presents a practical, concept driven approach to constructing RELREC in oncology trials using Base SAS. Topics include identifying one to one and one to many relationships between TU and TR records, linking tumor level results to RS overall response determinations, handling non target lesions and new lesions identified post baseline and managing studies that include both investigator and independent radiology assessments. Sample TU, TR, RS and RELREC datasets are presented to illustrate how records across these domains are formally linked using RELID, RDOMAIN, IDVAR and IDVARVAL. The paper also addresses RELID assignment strategy, specifically why deriving RELID from stable lesion or visit identifiers is critical for reproducibility. This paper uses Base SAS 9.4 or later. The intended audience is clinical SAS programmers and statisticians with intermediate SDTM experience.


PH-038 : Conducting Survival Analysis in SAS using Medicare Claims as a Real-world data source
Jayanth Iyengar, Data Systems Consultants LLC

Applications of Survival analysis as a statistical technique extend to longitudinal studies, and other studies in health research. The SAS/STAT package contains multiple procedures for performing and running survival analysis. The most well-known of these are PROC LIFETEST and PROC PHREG. As a data source, Medicare claims are often used in Real-world evidence studies and observational research. In this paper, survival analysis and the SAS procedures for performing it will be explored, and survival analyses will be conducted using Medicare claims data sets to assess patient's prognosis amongst Medicare beneficiaries.


PH-047 : Using SAS PROC MIXED to model potentially actionable correlates of unplanned hospital readmissions in the Medicare Shared Savings Program
Doug Thompson, Rush Health

The Medicare Shared Savings Program (MSSP), launched in 2012, is the largest program in the U.S. designed to manage medical costs while increasing quality of care for traditional Medicare beneficiaries. In 2024, MSSP had over 10 million enrolled Medicare beneficiaries within 476 participating healthcare organizations, and paid out a net of over $4 billion in bonus payments to those organizations. Managing unplanned hospital readmissions is a key success factor for organizations participating in MSSP, impacting both cost and quality. This presentation discusses the results of analyses examining potentially actionable correlates of unplanned readmission rates in the MSSP. The goal is to provide insights on how organizations can improve their MSSP performance by reducing unplanned readmission rates. The analyses used publicly available data from the MSSP Public Use Files (PUF) for 2021 through 2024 (4 years of data). The longitudinal analyses used SAS/STAT 9.04, primarily PROC MIXED. Random effects were used to account for the non-independence of repeated measurements. The presentation will illustrate the application of PROC MIXED to longitudinal healthcare data and discuss handling of missing data, variable scaling, and other methodological issues. Results of the PROC MIXED model suggest that greater rates of patient visits with Advanced Practice Providers (APPs; e.g., physician assistants and nurse practitioners), as well as greater rates of discharge from hospital to skilled nursing facilities, were significantly and negatively associated with unplanned readmission rates. This points to the important role of APPs and appropriate discharge setting in helping to avoid unplanned readmissions.


PH-052 : Beyond Demographics: Exploring Factors That Influence Medical Insurance Costs with SAS Visual Analytics
Ellis Williams, Kansas State University

Healthcare costs in the United States continue to rise, creating challenges for insurance providers, healthcare organizations, and consumers. Understanding the factors that influence medical insurance charges can help organizations improve pricing strategies, risk assessment, and resource allocation. This project investigates how demographic, health, and lifestyle characteristics influence medical insurance costs while exploring the conditions under which these relationships become stronger or weaker. Rather than examining only individual predictors, the analysis seeks to understand how multiple factors contribute to healthcare expenses. A recent U.S. medical insurance dataset containing variables such as age, BMI, smoking status, number of children, region, insurance tier, risk score, and medical insurance charges will be analyzed. SAS Visual Analytics will be used to perform exploratory data analysis through interactive visualizations, summary statistics, and comparisons across demographic and health-related groups. The analysis will identify the factors most strongly associated with insurance charges and explore how combinations of characteristics influence healthcare costs. This presentation demonstrates how SAS Visual Analytics can be used to move beyond simple descriptive analysis and uncover meaningful patterns within healthcare data. No operating system dependencies are required beyond access to SAS Visual Analytics. The material is intended for beginner to intermediate SAS users with an interest in healthcare analytics, business intelligence, or exploratory data analysis. Attendees will gain practical insights into designing visual analyses, interpreting relationships among variables, and using SAS Visual Analytics to support data-driven decision-making.


PH-089 : ODS PDF and ODS HTML5, and ODS LAYOUT When Needed for Added Capability
LeRoy Bessler, Bessler Consulting and Research

When packaged for tabular and/or graphic reporting, data for a SAS application is often delivered in a PDF document, or a web page (or collection of interlinked and/or drillable web pages). ODS LAYOUT empowers you deliver Anything Anywhere All At Once: table, data graphic, text, or non-data-graphic image. A web-delivered graph offers the advantage of data tips (aka mouseover text), but the convenience and accessibility advantage disappears as soon as the mouse moves. A persistent delivery of the whole body of associated information needs to be in a table, on that web page, on a linked web page, or in an Excel worksheet linked from and linked back to the web page. This tutorial presentation of practical examples and code can get you started. No prior experience with ODS (SAS Output Delivery System) is required. ODS HTML5 is a high-value alternative to ODS HTML. If you are an experienced user of ODS HTML, it's time for a tool upgrade.


PH-096 : ETL Macro ToolBox Proc Summary - CMS VRDC Version
Zeke Torres, Code629

The Center for Medicare and Medicaid Services (CMS) Virtual Research Data Center (VRDC) is a resource that has strict stipulations on how to access and report on data. The ETLrelated macros covered in this paper help with understanding the data. Also included is a useful SUMMARY procedure utility to help with obtaining useful facts from data (not just VRDC data). This set of ETL macros also includes a way to set Low Volume Limits and satisfy the reporting requirements of the VRDC. That "Low Volume Limits" format and the function in this tool box allows for an easier way of reporting and downloading data and meeting the requirements of the VRDC. MAIN PROBLEM THIS SOLVES Users who work with the CMS CCW and VRDC will find this paper useful. It covers a typical scenario where reports and results must be created on the VRDC system and downloaded. This download process must be done via a request for approval by an authorized agent at the CMS CCW VRDC. If that request is rejected the process (code) must be revised and a new download request made. With this set of code examples you will see how to quickly enable/disable that Low Volume Limit without the need to revise your code extensively. You'll also have a set of codes to use and customize that are meant to help explore data typically something that has to be explored during ETL stages. I use this code to start with small data to put thru and learn about. Then put thru more data as I learn about the data.


PH-107 : The Beneficiary Claims Data API: A Real-World Example of Using SAS Tools
Jack Shoemaker, Medical Home Network

The Centers for Medicare & Medicaid Services (CMS) provides administrative data through the Beneficiary Claims Data API (BCDA). This session demonstrates a real-world workflow using SAS tools (PROC HTTP and the JSON engine) to submit data requests, track their status, and retrieve NDJSON files upon completion. While BCDA documentation offers cURL examples, we'll show how to translate those templates into PROC HTTP for greater flexibility and control over API responses. Because BCDA requires a multi-step process with asynchronous submissions, we'll also address the orchestration challenges and present a practical solution. Although focused on BCDA, the techniques discussed apply broadly to other APIs for accessing data in modern digital ecosystems.