ABC Macro and Performance Chart with Benchmarks Annotation

Similar documents
It s Not All Relative: SAS/Graph Annotate Coordinate Systems

Developing a Dashboard to Aid in Effective Project Management

Displaying Multiple Graphs to Quickly Assess Patient Data Trends

100 THE NUANCES OF COMBINING MULTIPLE HOSPITAL DATA

Creating Population Tree Charts (Using SAS/GRAPH Software) Robert E. Allison, Jr. and Dr. Moon W. Suh College of Textiles, N. C.

Creating Forest Plots Using SAS/GRAPH and the Annotate Facility

AURA ACADEMY SAS TRAINING. Opposite Hanuman Temple, Srinivasa Nagar East, Ameerpet,Hyderabad Page 1

Customized Flowcharts Using SAS Annotation Abhinav Srivastva, PaxVax Inc., Redwood City, CA

PharmaSUG 2013 CC26 Automating the Labeling of X- Axis Sanjiv Ramalingam, Vertex Pharmaceuticals, Inc., Cambridge, MA

Correcting for natural time lag bias in non-participants in pre-post intervention evaluation studies

Missing Pages Report. David Gray, PPD, Austin, TX Zhuo Chen, PPD, Austin, TX

Out of Control! A SAS Macro to Recalculate QC Statistics

The Evolution of a SAS/GRAPH Application Jenine Eason, AutoTrader.com, Atlanta, GA

The Power of PROC SQL Techniques and SAS Dictionary Tables in Handling Data

Give me EVERYTHING! A macro to combine the CONTENTS procedure output and formats. Lynn Mullins, PPD, Cincinnati, Ohio

Six Cool Things You Can Do In Display Manager Jenine Milum, Charlotte, NC Wachovia Bank

SAS Training BASE SAS CONCEPTS BASE SAS:

Create Flowcharts Using Annotate Facility. Priya Saradha & Gurubaran Veeravel

Data Edit-checks Integration using ODS Tagset Niraj J. Pandya, Element Technologies Inc., NJ Vinodh Paida, Impressive Systems Inc.

Effective Forecast Visualization With SAS/GRAPH Samuel T. Croker, Lexington, SC

THE IMPACT OF DATA VISUALIZATION IN A STUDY OF CHRONIC DISEASE

Clinical Data Visualization using TIBCO Spotfire and SAS

IPUMS Training and Development: Requesting Data

Fly over, drill down, and explore

Using SAS/GRAPH Software to Create Graphs on the Web Himesh Patel, SAS Institute Inc., Cary, NC Revised by David Caira, SAS Institute Inc.

PROC CATALOG, the Wish Book SAS Procedure Louise Hadden, Abt Associates Inc., Cambridge, MA

SparkLines Using SAS and JMP

Data Explore Matrix Quality Control by Exploring and Mining Data in Clinical Study

Want to Do a Better Job? - Select Appropriate Statistical Analysis in Healthcare Research

SESUG 2014 IT-82 SAS-Enterprise Guide for Institutional Research and Other Data Scientists Claudia W. McCann, East Carolina University.

Choosing the Right Technique to Merge Large Data Sets Efficiently Qingfeng Liang, Community Care Behavioral Health Organization, Pittsburgh, PA

Data Quality Review for Missing Values and Outliers

Coders' Corner. Scaling Mount GCHART: Using a MACRO to Dynamically Reset the Scale Nina L. Werner, Dean Health Plan, Inc., Madison, WI.

Presentation Quality Graphics with SAS/GRAPH

Building Sequential Programs for a Routine Task with Five SAS Techniques

Data Annotations in Clinical Trial Graphs Sudhir Singh, i3 Statprobe, Cary, NC

SAS CLINICAL SYLLABUS. DURATION: - 60 Hours

Usinq the VBAR and BBAR statements and the TEMPLATE Facility to Create side-by-side, Horizontal Bar Charts with Shared Vertical Axes Labels

Automating Comparison of Multiple Datasets Sandeep Kottam, Remx IT, King of Prussia, PA

Application of Modular Programming in Clinical Trial Environment Mirjana Stojanovic, CALGB - Statistical Center, DUMC, Durham, NC

A SAS Macro for Producing Benchmarks for Interpreting School Effect Sizes

Tips to Customize SAS/GRAPH... for Reluctant Beginners et al. Claudine Lougee, Dualenic, LLC, Glen Allen, VA

User Manual. phr.mtbc.com

An Introduction to Visit Window Challenges and Solutions

Tales from the Help Desk 6: Solutions to Common SAS Tasks

Using PROC SQL to Generate Shift Tables More Efficiently

ehealth Technologies improves healthcare delivery by providing clinically informed referrals from a connected and engaged physician network.

KEYWORDS Metadata, macro language, CALL EXECUTE, %NRSTR, %TSLIT

PharmaSUG Paper TT11

USING SAS HASH OBJECTS TO CUT DOWN PROCESSING TIME Girish Narayandas, Optum, Eden Prairie, MN

Converting Annotate to ODS Graphics. Is It Possible?

Internet/Intranet, the Web & SAS

A SAS/AF Application for Linking Demographic & Laboratory Data For Participants in Clinical & Epidemiologic Research Studies

The Power of Combining Data with the PROC SQL

Sorting big datasets. Do we really need it? Daniil Shliakhov, Experis Clinical, Kharkiv, Ukraine

Create a Format from a SAS Data Set Ruth Marisol Rivera, i3 Statprobe, Mexico City, Mexico

MWSUG 2013 Best Papers

How to Create Data-Driven Lists

Annotate Dictionary CHAPTER 11

INTRODUCTION TO SAS HOW SAS WORKS READING RAW DATA INTO SAS

Multiple Forest Plots and the SAS System

Using MACRO and SAS/GRAPH to Efficiently Assess Distributions. Paul Walker, Capital One

To conceptualize the process, the table below shows the highly correlated covariates in descending order of their R statistic.

Module 2: Health Information Exchange Services

Web Enabled Graphics with a SAS Data Warehouse Diane E. Brown, TEC Associates, Indianapolis, IN

Data Driven Annotations: An Introduction to SAS/GRAPH s Annotate Facility

Not Just Merge - Complex Derivation Made Easy by Hash Object

An Efficient Method to Create Titles for Multiple Clinical Reports Using Proc Format within A Do Loop Youying Yu, PharmaNet/i3, West Chester, Ohio

A Macro to Manage Table Templates Mark Mihalyo, Community Care Behavioral Health Organization, Pittsburgh, PA

ABC s of Graphs in Version 8 Caroline Bahler, Meridian Software, Inc.

Making Presentations More Fun with DATA Step Graphics Interface (DSGI) Hui-Ping Chen, Eli Lilly and Company, Indianapolis, Indiana

Obtaining the Patient Most Recent Time-stamped Measurements

Reducing SAS Dataset Merges with Data Driven Formats

Tracking Dataset Dependencies in Clinical Trials Reporting

Engagement Portal. Physician Engagement User Guide Press Ganey Associates, Inc.

Validation Summary using SYSINFO

Are you Still Afraid of Using Arrays? Let s Explore their Advantages

Generating Participant Specific Figures Using SAS Graphic Procedures Carry Croghan and Marsha Morgan, EPA, Research Triangle Park, NC

Picturing Statistics Diana Suhr, University of Northern Colorado

CMISS the SAS Function You May Have Been MISSING Mira Shapiro, Analytic Designers LLC, Bethesda, MD

Advanced Visualization using TIBCO Spotfire and SAS

Paper A Simplified and Efficient Way to Map Variable Attributes of a Clinical Data Warehouse

Taming a Spreadsheet Importation Monster

An Efficient Solution to Efficacy ADaM Design and Implementation

Base and Advance SAS

Reading in Data Directly from Microsoft Word Questionnaire Forms

PharmaSUG Paper TT10 Creating a Customized Graph for Adverse Event Incidence and Duration Sanjiv Ramalingam, Octagon Research Solutions Inc.

Statistics and Data Analysis. Common Pitfalls in SAS Statistical Analysis Macros in a Mass Production Environment

Contents. About This Book...1

Using PROC REPORT to Cross-Tabulate Multiple Response Items Patrick Thornton, SRI International, Menlo Park, CA

A Macro for Systematic Treatment of Special Values in Weight of Evidence Variable Transformation Chaoxian Cai, Automated Financial Systems, Exton, PA

INTRODUCTION TO THE SAS ANNOTATE FACILITY

Automation of SDTM Programming in Oncology Disease Response Domain Yiwen Wang, Yu Cheng, Ju Chen Eli Lilly and Company, China

If You Need These OBS and These VARS, Then Drop IF, and Keep WHERE Jay Iyengar, Data Systems Consultants LLC

Techdata Solution. SAS Analytics (Clinical/Finance/Banking)

What's the Difference? Using the PROC COMPARE to find out.

Automating Preliminary Data Cleaning in SAS

OS/390 DASD I/O Drill Down Computer Performance Chart Using ODS SAS/GRAPH & MXG Software

CC13 An Automatic Process to Compare Files. Simon Lin, Merck & Co., Inc., Rahway, NJ Huei-Ling Chen, Merck & Co., Inc., Rahway, NJ

Something for Nothing! Converting Plots from SAS/GRAPH to ODS Graphics

Transcription:

Paper CC09 ABC Macro and Performance Chart with Benchmarks Annotation Jing Li, AQAF, Birmingham, AL ABSTRACT The achievable benchmark of care (ABC TM ) approach identifies the performance of the top 10% of healthcare providers as the benchmark. Comparing individual performance with peer performance should be a powerful motivator to change behavior and improve quality of healthcare. This paper presents a SAS Macro to calculate ABC, also presents the utilization of Annotate data set to label ABCs on individual clinician s performance bar chart. INTRODUCTION Benchmarking is generally considered to be an important tool for quality improvement. Achievable Benchmarks of Care (ABCs), calculated from existing performance data, represent attainable levels of excellence for a performance measure. ABCs allow individual healthcare provider to compare the outcomes for their patients relative to overall performance of the peer-group. As the Quality Improvement Organization (QIO) for the state of Alabama, AQAF works in partnership with physicians, hospitals, nursing homes and home health agencies to improve the quality of health care in Alabama. Historically, a provider s performance has been compared to the average performance of peer-group for assessment. To help healthcare providers set attainable goal and make them more involved and proactive in quality improvement, we include both peer-group averages and ABCs in individual performance charts, which is a powerful motivator for providers to change behavior and provide appropriate care to patients. We are working with different healthcare providers on almost 50 clinical measures, and for each measure we have similar data layout: provider #, measure, period, numerator, denominator, and rate. Using a separate module would make the programming and the debugging a lot easier. By utilizing SAS Macro, we created the ABC Macro to calculate ABCs. Once ABCs are calculated, we use Annotate data set to label ABCs on providers performance charts to enhance graphics output. ABC MACRO This Macro has 8 parameters: benchmark(lib=,dataset=,provvar=,numvar=,denvar=,measure=,period=, range=) This paper will use diabetes mellitus (DM) patients receiving annual eye examinations as an example for illustration. Performance is measured by the proportion of DM patients having claims data reflecting an eye exam. Assume you have a LIB named SESUG, in which there is a SAS data set called Diab_Eye_2006Q3 with the following layout. Provider MEASURE_PERIOD Eye_NUM Eye_DEN Eye_PCT #1 2006Q3 25 46 54.35% #2 2006Q3 33 47 70.21% State 2006Q3 41293 81867 50.44% The key steps for ABC calculation are: determine eligible patient s breakpoint, calculate the Bayesian Adjusted Performance Fraction (APF), and identify 10% Bayesian adjusted performance and any tied performance. The ABC Macro utilizes Macro variables, retain variable, and PROC SQL procedure to calculate ABC and save it into a SAS data set. Below are the steps for ABC Macro. See appendix for complete program. ABC Macro Calculation Steps First, create a copy of data set, renaming fields for calculation. Step 1: Determine eligible patient s breakpoint. Assign the value to a Macro variable. Step 2: Create provider data set, excluding the record with overall data, like state average. Step 3: Calculate the Bayesian Adjusted Performance Fraction (APF) for each provider. Step 4: Rank all provider data in descending order of their APF. - 1 -

Step 5: Use retain variable to calculate cumulative count of patients in rank ordered data. Step 6: Identify 10% Bayesian adjusted performance. Assign the corresponding APF to a Macro variable. Step 7: Create top 10% (tied) performance data set, use PROC SQL to calculate benchmark and save it into a SAS data set. Call ABC Macro %let path = H:\SESUG\; %let lib_name = SESUG; libname &lib_name "&path"; %include "&path.abc.sas" /source2; /* to include ABC macro*/ %benchmark(lib=&lib_name, dataset=diab_eye_2006q3, ProvVar=provider, NumVar=eye_num, DenVar=eye_den, measure=diab_eye, period=2006q3, range=state); ANNOTATE GRAPHICS The Annotate facility enables us to generate an Annotate data set with graphics commands, from which we can produce graphics output to enhance graphs generated from SAS/GRAPH procedures. Our goal is to have a vertical bar chart showing individual healthcare provider performance and peer-group average performance over time, with ABCs labeled for each time period. See appendix for Annotate graphics example. We now have one provider chart Macro for each clinical measure. Same as above, we use DM patients receiving annual eye examination as an example for illustration. Assume you have a LIB named SESUG, in which there are SAS data sets called Diab_Eye_PCT and Diab_Eye_ABCs with the following layouts: Diab_Eye_PCT Diab_Eye_ABCs Prov_Num Prov_Name Period PCT Measure Period Benchmark #001 Physician A Baseline 58.46% Diab_Eye Baseline 0.7324 Diab_Eye Interim1 0.7443 State State Baseline 49.00% Diab_Eye Interim2 0.7429 Interim1 The Diab_Eye_Chart Macro creates one PDF file for each provider and it is easy to be called: %Diab_Eye_Chart(ProvNum); Create Annotate data set In order to create Annotate graphics, we first need to build an Annotate data set of graphics commands using the Annotate variables and functions. The Annotate facility labels benchmark for each period. The coordinates that position the labels are derived from the values of the GCHART procedure variables Period (the group variable) and Prov_Name (the chart / midpoint variable). These variables are assigned to the corresponding Annotate variable. The Annotate data set benchmark_anno has the following features: Annotate Function: LABEL Annotate Variables: MIDPOINT, POSITION, GROUP, XSYS, YSYS, Y, WHEN, SIZE, STYLE, COLOR, TEXT Below is the Annotate data set code section in Diab_Eye_Chart Macro. data benchmark_anno; merge &ProvNum._Diab_Eye (in=x) /* subset from Diab_Eye_PCT */ &lib_name..diab_eye_abcs; by period; format benchmark percent8.2; length function $ 8 style $ 20 color $ 8; retain function 'label' position '6' xsys ysys '2' when 'a'; Page 2 of 6

style='swissb'; color='blue'; size=0.8; group=period; midpoint=prov_name; y=benchmark; text=cat('benchmark ',left(put(benchmark,percent8.2))); if x and provider = "&ProvNum" then output; Generate a vertical bar chart and assign the Annotate data set to the VBAR statement Now we have Annotate data set generated, next step is to submit a SAS/GRAPH procedure to produce the graphics output. We use PROC GCHART with ANNO function to create bar chart. Below is the PROC GCHART code section in Diab_Eye_Chart Macro. proc gchart data=&provnum._diab_eye; vbar prov_name / type=mean sumvar=pct frame maxis=axis1 raxis=axis2 autoref clipref cautoref=cxc0c0c0 legend=legend1 group=period g100 gaxis=axis3 subgroup=prov_name anno=benchmark_anno discrete; quit; By calling Diab_Eye_Chart Macro, we could have 500 providers charts in 2 minutes. Our quality staffs carry the charts to healthcare providers during their site visits. Usually these providers pay immediate attention to the chart and express willingness to be the benchmark. CONCLUSION Having a separate ABC Macro, which is well programmed, the Macro can be accessed from any project as long as the data set is generated. Using this approach, we did avoid one single long program for each clinical measure and provided more efficient way of programming. Using Annotate facility to enhance graphics output, we provided healthcare providers more impressive and informative charts for quality improvement. REFERENCES ABC User Manual, Dr. Catarina Kiefe, Center for Outcomes and Effectiveness Research and Education (COERE), University of Alabama at Birmingham ACKNOWLEDGMENTS Thanks to Bart Prevallet at AQAF who encouraged me to write this paper and provided editorial advice. CONTACT INFORMATION Your comments and questions are valued and encouraged. Contact the author at: Jing Li AQAF Two Perimeter Park South, Suite 200 West Birmingham, AL 35243 Phone: (205) 970-1600 ext. 3514 Fax: (205) 970-1624 E-mail: jli@aqaf.com SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. indicates USA registration. The Achievable Benchmark of Care (ABC TM ) system is trademarked by the University of Alabama at Birmingham Other brand and product names are trademarks of their respective companies. Page 3 of 6

APPENDIX ABC MACRO Program /* Macro to calculate ABC benchmark */ %macro benchmark(lib=, dataset=, ProvVar=, NumVar=, DenVar=, measure=, period=, range=); /* 'State', 'Nation', or project name like 'SOW' */ /* Rename variable name to calculate benchmark */ data data_var_rename (rename=(&provvar=provider &NumVar=num &DenVar=den)); set &lib..&dataset.; /* Step 1: Determine eligible patients breakpoint for clinical indicator */ data _null_; set data_var_rename; if provider = "&Range" then call symput('break_point',put(round(den/10,1),6.)); /* Step 2: Create provider data set */ data raw; set data_var_rename; if provider ne "&Range"; /* Step 3: Calculate Bayesian Adjusted Performance Fraction (APF) */ set raw; format apf_n 3. apf_d 3. apf_rate percent8.2; apf_n = num + 1; apf_d = den + 2; apf_rate = round(apf_n/apf_d,.0001); Page 4 of 6

/* Step 4: Rank data in descending order of Bayesian Estimator */ proc sort data=apf; by descending apf_rate descending den; /* Step 5: Calculate cummulative number of patients in rank ordered dataset */ retain cum_patient; cum_patient + den; /* Step 6: Identify cut-off provider and corresponding rate */ retain i; if cum_patient ge &break_point then i+1; data _null_; if i = 1 then call symput('break_percent',put(apf_rate,6.4)); /* Step 7: Ceate cut-off subset and calculate "paired mean" - Benchmark */ if apf_rate ge &break_percent; proc sql; create table benchmark_&measure._&period as select "&range." as Range,"&measure." as Measure, "&period." as period, round(sum(num)/sum(den),.0001) as Benchmark format percent8.2 from apf; quit; %mend benchmark; Page 5 of 6

Example of Annotate Graphics Page 6 of 6