Interactive Visualization of Clinical Laboratory Parameters with SAS Stored Processes and jquery AJAX

Similar documents
When Simpler is Better Visualizing Laboratory Data Using SG Procedures Wei Cheng, Isis Pharmaceuticals, Inc., Carlsbad, CA

Converting Annotate to ODS Graphics. Is It Possible?

A Combined AE + CM Graph using SAS

A Macro to replace PROC REPORT!?

ColdFusion and SAS : No Pain Meds Required Carol Martell, UNC Highway Safety Research Center, Chapel Hill, NC

Paper Phil Mason, Wood Street Consultants

Essential ODS Techniques for Creating Reports in PDF Patrick Thornton, SRI International, Menlo Park, CA

Adding A PHP+MySQL Hit Counter to your Website

%EventChart: A Macro to Visualize Data with Multiple Timed Events

CONSORT Diagrams with SG Procedures

HTML5. clicktag implementation

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

What could ODS graphics do about Box Plot?

White Paper - WPY - Order printed material

Introduction to Statistical Graphics Procedures

FILLPATTERNS in SGPLOT Graphs Pankhil Shah, PPD, Morrisville, NC

Deccansoft Software Services

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

Macros for creating a custom report of figures

Summary 4/5. (contains info about the html)

Multiple Graphical and Tabular Reports on One Page, Multiple Ways to Do It Niraj J Pandya, CT, USA

SAS Macro Technique for Embedding and Using Metadata in Web Pages. DataCeutics, Inc., Pottstown, PA

Final Examination Semester 1 / Year 2012

Paper S Data Presentation 101: An Analyst s Perspective

Getting Started with the SGPLOT Procedure

Keeping Track of Database Changes During Database Lock

src1-malan/ajax/ajax1.html ajax1.html Gets stock quote from quote1.php via Ajax, displaying result with alert().

Index. Purchase this book at

Paper An Automated Reporting Macro to Create Cell Index An Enhanced Revisit. Shi-Tao Yeh, GlaxoSmithKline, King of Prussia, PA

SUGI 29 Posters. Paper A Group Scatter Plot with Clustering Xiaoli Hu, Wyeth Consumer Healthcare., Madison, NJ

Forerunner Mobilizer Dashboards

Chapter4: HTML Table and Script page, HTML5 new forms. Asst. Prof. Dr. Supakit Nootyaskool Information Technology, KMITL

To embed the form using an html iframe command, use the script at the end of this document.

Sparrow Client (Front-end) API

A Practical and Efficient Approach in Generating AE (Adverse Events) Tables within a Clinical Study Environment

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

Let SAS Help You Easily Find and Access Your Folders and Files

ODS DOCUMENT, a practical example. Ruurd Bennink, OCS Consulting B.V., s-hertogenbosch, the Netherlands

Journey to the center of the earth Deep understanding of SAS language processing mechanism Di Chen, SAS Beijing R&D, Beijing, China

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

SAS Cloud Analytic Services 3.1: Graphing Your Output

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

COPYRIGHT 2012 DROIDLA LIMITED

Internet, Intranets, and The Web

Design Document V2 ThingLink Startup

HTTP Communication on Tizen

User Interaction: jquery

Purpose of this doc. Most minimal. Start building your own portfolio page!

Web Site Development with HTML/JavaScrip

IMY 110 Theme 11 HTML Frames

PharmaSUG China

Great Time to Learn GTL

Project Look and Qualtrics Integration. Quick Start Guide

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

A Novel Approach to Patient Profiling

Breaking up (Axes) Isn t Hard to Do: An Updated Macro for Choosing Axis Breaks

Fancy Data Visualisations Without Additional Toolkits

ODS in an Instant! Bernadette H. Johnson, The Blaze Group, Inc., Raleigh, NC

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

JavaScript CSCI 201 Principles of Software Development

MACROS TO REPORT MISSING DATA: AN HTML DATA COLLECTION GUIDE Patrick Thornton, University of California San Francisco

This project is based on a fictitious website called Dave's Dog Wash (see Figure 1).

Hyperlinks, Tables, Forms and Frameworks

A340 Laboratory Session #5

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

SAS/GRAPH Introduction. Winfried Jakob, SAS Administrator Canadian Institute for Health Information

Rapt Media Player API v2

In this project, you ll learn how to create your own webpage to tell a story, joke or poem. Think about the story you want to tell.

TEDApps - etendering. Ref: etendering-fus-listservice etendering - CFT List Service Version: Publications Office

ABSTRACT. Paper

Chapter 28 Saving and Printing Tables. Chapter Table of Contents SAVING AND PRINTING TABLES AS OUTPUT OBJECTS OUTPUT OBJECTS...

New for SAS 9.4: A Technique for Including Text and Graphics in Your Microsoft Excel Workbooks, Part 1


Spring 2014 Interim. HTML forms

RWI not REI a Robust report writing tool for your toughest mountaineering challenges.

My Reporting Requires a Full Staff Help!

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

Web-Application Bar Charts without SAS/GRAPH. Steve James, Centers for Disease Control and Prevention, Atlanta, GA

CHAPTER 2 MARKUP LANGUAGES: XHTML 1.0

Internet/Intranet, the Web & SAS

Advanced Visualization using TIBCO Spotfire and SAS

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

Leveraging SAS Visualization Technologies to Increase the Global Competency of the U.S. Workforce

Programing for Digital Media EE1707. Lecture 4 JavaScript By: A. Mousavi & P. Broomhead SERG, School of Engineering Design, Brunel University, UK

Clinical Data Visualization using TIBCO Spotfire and SAS

Iframes when necessity calls for them

About Sven. Using Groovy & Grails since Aug 2006 Grails Podcast, Groovy Series Working at Yahoo!, Inc. Find out yourself

HTML and CSS COURSE SYLLABUS

Post-Processing.LST files to get what you want

Automated Checking Of Multiple Files Kathyayini Tappeta, Percept Pharma Services, Bridgewater, NJ

ABSTRACT MORE THAN SYNTAX ORGANIZE YOUR WORK THE SAS ENTERPRISE GUIDE PROJECT. Paper 50-30

USER DOCUMENTATION CUSTOM SERVICES

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

Figure 1 Forms category in the Insert panel. You set up a form by inserting it and configuring options through the Properties panel.

SoundCloud allows you to share an audio recording of a presentation, speech, song or event. It is the equivalent for audio that YouTube is for video.

Student, Perfect CS-081 Final Exam May 21, 2010 Student ID: 9999 Exam ID: 3122 Page 1 of 6 Instructions:

Why & How To Use SAS Macro Language: Easy Ways To Get More Value & Power from Your SAS Software Tools

SAS Graphs in Small Multiples Andrea Wainwright-Zimmerman, Capital One, Richmond, VA

PhUSE Paper CC03. Fun with Formats. Sarah Berenbrinck, Independent, UK

There s No Such Thing as Normal Clinical Trials Data, or Is There? Daphne Ewing, Octagon Research Solutions, Inc., Wayne, PA

Transcription:

Paper DV06 Interactive Visualization of Clinical Laboratory Parameters with SAS Stored Processes and jquery AJAX Volker Harm, Bayer AG, Berlin, Germany ABSTRACT Starting with an appropriate clinical laboratory parameter data set graphs will be created presenting individual and summary data. To select subjects, treatments, or groups dynamic HTML select tags will be derived from the input data. HTML option tags will be used to determine the appearance of the graph such as axis styles and reference lines. These interface elements will be put together to an interactive dashboard for investigating the laboratory parameters of a clinical study by retrieving and presenting the data dynamically with SAS Stored Processes and jquery AJAX. INTRODUCTION In our department Research and Clinical Sciences Statistics for a certain type of phase I standards could be established that allow to automatically provide laboratory data from new studies in a predefined data structure that allow the creation of standard visualization tools. As a prototype we developed a tool that presents laboratory data in individual and summary form. We will use SAS ODS Graphics to create single graphs, SAS Stored Processes to present them on our Intranet and then we will try to implement a versatile navigation from graph to graph and from to tabular data. Once we have these building blocks the responsiveness of the application will be enhanced by using AJAX techniques. GRAPHICAL PRESENTATION OF CLINICAL LABORATORY PARAMETERS INDIVIDUAL DATA The following graph is created for the individual data of any laboratory parameter using the following code: %macro plotlabvalues (clbparametershort =, morder =); data GraphData; set org.labvalues (where = (clbparametershort = "&clbparametershort." and morder = &morder.)); %m call symputx ('clbparameter', clbparameter); call symputx ('ctreatment', ctreatment); call symputx ('nlblln', nlblln); call symputx ('nlbuln', nlbuln); proc sgplot data = GraphData; title "&ctreatment."; xaxis discreteorder = data display = (nolabel); yaxis label = "&clbparameter."; refline &nlblln. /label = ('lower') labelloc = outside noclip; refline &nlbuln. /label = ('upper') labelloc = outside noclip; series x = clbrt y = nlbvalue /datalabel = RandomID group = RandomID; 1

SUMMARY DATA The following graph is created for the summary data of any laboratory parameter using the following code: %macro plotlabsamplestats (clbparameter =); data GraphData; set der.labsamplestats (where = (clbparameter = "&clbparameter.")); lower = nlbvalue_mean - nlbvalue_std; upper = nlbvalue_mean + nlbvalue_std; call symputx ('nlblln', nlblln); call symputx ('nlbuln', nlbuln); proc sgplot data = GraphData; xaxis discreteorder = data display = (nolabel); yaxis label = "&clbparameter."; series x = clbrt y = nlbvalue_mean /group = ctreatment; scatter x = clbrt y = nlbvalue_mean /group = ctreatment yerrorlower = lower yerrorupper = upper; %m 2

USER INTERFACE ELEMENTS SELECT TAGS 3

set Parameters end=alldone; PhUSE 2017 put '<b>select Parameter: </b>'; put '<select name="parameter">'; if clbparameter ne " " then do; put '<OPTION VALUE="' parameter '">' clbparametershort; if alldone then do; put '</select>'; put '<br><br>'; DASHBOARD SAS STORED PROCESS ARCHITECTURE *ProcessBody; %macro main; %global reqtype _odsstyle; %macro first_request; /* This is the first request. Create an HTML page with Frames. */ thissrv = symget('_url'); thispgm = urlencode(symget('_program')); put '<html>'; put '<table>'; 4

put '<tr>'; put '<td width="20%">'; put '<iframe name="frame1" scrolling="no" width="100%" height="600" src="' thissrv +(-1) '?_program=' thispgm +(-1) '&reqtype=create_selection&_debug=0">'; put '</iframe>'; put '</td>'; put '<td width="80%">'; put '<iframe name="frame2" width="100%" height="600" >'; put '</iframe>'; put '</td></tr>'; put '</table>'; put '</html>'; %mend first_request; %macro create_selection; /* This is the Second Request. Create the Selection Memu. */ /* Get age groups */ proc summary data=sashelp.class; class age; output out=summary; set summary end=alldone; thissrv = symget('_url'); thispgm = symget('_program'); put '<html>'; put '<h3>laboratory Parameters Report</h3>'; put '<FORM ACTION="' thissrv +(-1) '" method=get target="frame2">'; put '<input type="hidden" name="_program" value="' thispgm +(-1) '">'; put '<input type="hidden" name=reqtype value="report">'; proc sort data = org.labvalues out = Parameters nodupkey; by clbparameter; set Parameters end=alldone; put '<b>select Parameter: </b>'; put '<select name="parameter">'; if clbparameter ne " " then do; put '<OPTION VALUE="' parameter '">' clbparametershort; if alldone then do; put '</select>'; put '<br><br>'; 5

put '<input type="submit" value="submit">'; put '</form>'; put '</html>'; %mend create_selection; %macro create_report; /* Produce the report */ %let _odsstyle=barrettsblue; %stpbegin; Title "Students who are age &age"; %plotlabvalues (clbparametershort = HCT, morder = 1); %stp %mend create_report; %if "&reqtype" = "create_selection" %then %do; /* Produce the Selection Menu */ %create_selection; % %else %if "&reqtype" = "report" %then %do; /* Produce the Report */ %create_report; % %else %do; /* Produce the HTML page that contains Frames */ %first_request; % %mend main; %main; POSSIBLE ENHANCEMENTS WITH JQUERY AJAX <div id="ui" style="float:left;"> <form url="&_url" id="myform"> &streamdelim;%include srvrpgs(&formui); <script type="text/javascript"> var frm = $('#myform'); frm.submit(function () { $("#region1").html('<div style="margin-left:50px">' + '<h1>processing... Please Wait... </h1>' + '<img src="images/progress.gif""></div>'); var theurl = "&_url?"+frm.serialize()+'&nocache='+math.random(); $.ajax({ url: theurl, success: function (data) { $("#region1").html(data); toggleui(); } }); return false; }); </script></form> </div> CONCLUSION In this paper we showed the techniques needed to build interactive visualizations using SAS Stored Processes and enhancing the interactivity using jquery AJAX.. 6

REFERENCES Henderson, Don. 2013. SAS Server Pages: Generating Dynamic Content. Cary, NC: SAS Institute Inc. CONTACT INFORMATION Your comments and questions are valued and encouraged. Contact the author at: Volker Harm Bayer AG Muellerstrasse 178 Berlin 13353 Work Phone: 004946811208 Email: volker.harm@bayer.com Brand and product names are trademarks of their respective companies. 7