Showing posts from July, 2009
Why is XML so Difficult for SAS Programmers? There must be a better way than PROC CDISC.

Why is XML so Difficult for SAS Programmers?

The FDA has adopted the use of XML as a standard file format for everything from a standard product labeling file format to electronic submission. This standard file format is widely used on the Internet and is useful for storing data along with metadata that explains the context of the data values. I am a team member of the SDS , part of CDISC establishing the way we use XML in the DEFINE.XML used to document clinical data in a submission. The XML is very well suited for the storage of the metadata describing how each variable is derived and detailing its code lists (controlled terms). One challenge I find is that most users that work with clinical data are either data managers or SAS analysts who are responsible on generating the DEFINE.XML, do not understand XML. Syntactically, XML is a mark up language and the schema it uses is not rocket science. However, its requires a very different skill set since most users are familiar with SAS or SQL and does not really normally work
invited to teach a course on Clinical Data Management Software in Amman, Jordan. Before I sign my life away, any suggestions?
Teaching a two day course on CDISC SDTM and DEFINE.XML for U.S. Military HIV Research
A useful free directory of CDISC software and services Wiki.
Generating DEFINE.XML for CDISC SDS team with latest draft guidelines. Still in draft but getting close.

Facebook Identity Crisis with SAS

Facebook has become the most popular social networking site and have users spending more time on its site than any other leaving Yahoo and Google behind. It is becoming the entry point for many users as they log on. It is therefore a natural integration point for applications such as SAS any my humble little free data viewer Syview :). In the past, it has been challenging to share and view SAS data since it requires the user receiving the data to either have SAS or the right version of a viewer and on specific OS or platform. I have been experimenting with a method where a Facebook account can be synchronized with Syview so that users do not have to use separate accounts. In this case, the user can use their Facebook account and also log into Syview to view SAS datasets . I have an identify crisis sometimes with my personal use of social network and my professional online persona. Wouldn ’t it be nice if I can reconcile this identity crisis. At the very least, with the user I
helping answer CDISC and SAS questions at new forum ... needs a new logo :)
I have been invited to host and moderate a CDISC Panel Discussion in September. How cool is that?

CDISC Panel Discussion

I have been invited to host and moderate a panel discussion at the next Western Users of SAS Software (WUSS) conference in San Jose. This will be in the CDISC section so we will be discussing meta data . I will share with you some general information about the discussion below. Title DEFINE.XML - A Practical Hands on Real World Experiences on Data Definition Date Wednesday, September 2, 2009 Time 5:30-6:30pm Where Fairmont San Jose in San Jose, California Abstract As CDISC guidelines nears becoming a regulation, it becomes apparent for the need of an effective method for documenting and communicating metadata to facilitate the review of clinical data during a submission. DEFINE.XML has proven in initial implementations and FDA pilot project to be an essential part in helping reviewers navigate data and related reports while also pointing out the needed improvements and challenges from implementing this in XML. This panel discussion will highlight real world examples of various app
Is the long tail of software killing software as we know it? How niche apps will displace the block buster apps.

The Long Tail of Software

In the traditional software model where we purchase it on CD and it comes in a shrink wrap box with a user manual is becoming extinct in a similar way that memos became extinct when email came along. The way software is delivered has dramatically changed in a “flat world” as Thomas Friedman describes our world is flattening as high speed internet connection becomes more ubiquitous. Some software is delivered directly as a service across the web (or the cloud) as Google and companies like is incorporating it into browsers. What is more interesting is the proliferation of smaller applications developed for niche usage delivered to mobile devices such as the iPhone available through the AppStore. In Chris Anderson’s book, The Long Tail , his thesis was how the efficiency gains in distribution have created a proliferation of products on the tail of a distribution curve which becomes very long compared to its head. Although he uses examples of pop culture products such a

Setting Up SAS Application Server for iPhone

An application “server” in this context is essentially a SAS session waiting to receive requests from the user. Once a request is received, it would execute the specified SAS scripts and then deliver its output back to the user. One application server can serve many users at once. The server is able to do this when queuing up multiple requests and then executes it one at a time. Each application server is assigned a set of SAS libraries to easily access predefined data and related programs.The SAS program that is requested by the user also resides on the server as defined to a library. This can be pre-assigned similar to how you can assign a LIBNAME or FILENAME in an AUTOEXEC file used during an execution of a SAS program. The assignment of these libraries is established when the application server is setup. Each application server communicates to its corresponding iPhone application through its own assigned TCP Socket port. This ensures that there is no collision between multiple app
How do you execute a SAS macro from an iPhone?

SAS Macro on the iPhone

In the traditional batch environment, users specify the options for a macro by typing the selected values in a SAS program script when invoking a macro. The entered values would then be processed by the macro by inserting them into the specified parameter in the code. An example macro call is: *** Generate Report of data by specific subset ***; %dataview (indata=mylib.demog, sortby = subjid startdt, reptitle = Demographic data sorted by subject ID and start date); In this example, there are three parameters including: INDATA, SORTBY, and REPTITLE. The iPhone application makes this more user friendly as compared to having the user write a SAS macro call. In this case, the iPhone user selects the values from a macro parameter through the multi touch interface of the iPhone user interface. The user would therefore access and execute the %dataview macro by performing the following steps. Step 1 – Selecting Macro The user would navigate to the macro section by tapping on

Viewing SAS Datasets on iPhone

SAS macros are very effective at allowing users to perform analysis by dynamically requesting for reports or views of the data. However, there are times when all the user needs is to view the actual raw data. On the Windows desktop environment, you may use the SAS data viewer . The iPhone has different capabilities such as multi touch pinch to zoom and swipe to slide the views. This can be used to view the data directly and easily. The following illustrates the steps taken to view SAS data on the iPhone. Step 1 – Selecting Library SAS datasets are stored in libraries which points to physical folders on the server. This is also refereed to as SAS LIBNAMEs. The main datasets screen on the iPhone contains the latest list of datasets. The first item on this list is the library that is currently being viewed. By taping on the library right arrow labeled “datlib”, the user drills down to a list of libraries that the user has permissions to. The current selected library is identified with a c
Distributing SAS Applications on IPhone, things will never be the same...

Distributing SAS Applications on IPhone

The distribution of products and services has radically changed in recent years as it becomes more efficient for companies like Google, eBay and Amazon to take advantage of efficiencies of Internet distribution . Rather than concentrating on the top few block buster products, these companies are finding that the many niche products such as specialized advertisement on Google and esoteric books on Amazon add up to be just as significant in total sales as their supper sellers. The cost for them to distribute the large array of solutions has become profitable when efficiently delivered across the internet as compared to shrink wrap boxes sold in stores. This shift in the market is also taking shape in how software is being delivered. Apple has been at the forefront with this type of distribution with smaller unknown musical artist on its ITunes store. It is now extending that making the AppStore a new way in distributing more specialized software within this hyper efficient distr

SAS iPhone App Architecture

The delivery of SAS data and reports to an iPhone application is unique and requires a different architecture as compared to traditional client server systems. This is similar to web applications in how it is delivered to a browser but in this case, the application replaces the browser. The diagram below illustrates the components of the iPhone SAS application architecture including: the iPhone application , a web server and the BI Flash server. In this example, the iPhone application on the iPhone communicates through standard TCP / IP protocol to a web server. The web server then communicates to an application server which is actually a SAS session processing SAS programs and data. The output resulting from the SAS program is then delivered back to the iPhone in a similar way a web browser would access a web page the serer. The distinction however is that the iPhone application is not a web browser and the SAS session running on the server is more dynamic compare to
just received my WUSS registration mailer, ready to wussout in San Jose in September.
Interesting new video on verifying controlled terminology against CDISC