Get Started with {tidyCDISC}

Greetings! The tidyCDISC application is a robust tool set which empowers its users to glean informative knowledge from clinical trial data with little resistance. To prove this, we’ll take you on a brisk tour of the app, traversing all of its wonderful features from each tab of the application. Feel free to follow along with this guide using the demo version of tidyCDISC hosted on shinyapps.io. Note the demo version disables the Data Upload feature and instead uses the CDISC pilot data.


Demo full tidyCDISC app


Throughout all the tabs, there are these little buttons (usually in the top right-hand corners) with question marks printed on them. When clicked, they launch a real-time guide that walks the user through the major components of the current screen/ tab, providing context and suggested workflow. So if this guide doesn’t answer all your questions just click the ? button for assistance!



Without any further adieu, welcome to tidyCDISC’s landing page: the data tab




Data Upload

The app is useless without some ADaM(-ish) data in hand. At a minimum, you’ll need an ADSL sas7bdat file to get started, and the more data you bring, the more features and insights you can explore. We can import data by clicking the ‘Browse’ button and selecting files for upload from your computer or mapped network drives. In this way, the tidyCDISC application is very secure; you must have permissions to certain folders/ study directories to upload said data.

This tutorial will upload five files: An ADSL, ADVS, ADLBC, ADAE, and an ADTTE, all from the CDISC pilot study. You can follow along by clicking the ‘Use CDISC Pilot Data’ button above the upload panel, as was performed below. After the data is uploaded, two things happen: (1) we can take a peek at our data and (2) all the analysis tabs are unlocked, specifically:

Our first stop will be the table generator!



There is more to be said about importing data, like, “What constitutes ADaM-ish data?” or “What if my data set won’t upload?” To learn more on the topic, head over to the article titled Data Upload; you’ll be glad you did!


Table Generator


The Table Generator tab is divided in two: the area to the left is the handy drag-and-drop interface used to define our tables, and on the right is the real-time table output.



Any uploaded data will appear on the left-hand side as “bins”. “Bins” are just containers, showcasing the usable contents of the data when expanded. The ADSL & ADAE bins include the names of all their variables, while any BDS data sets, like the ADVS & ADLBC bins include a list of all the PARAMCD values. For simplicity, both variable & parameters bubbles are called “variable blocks”.

On the right-hand side, there are a list of “Stats”, such as ANOVA, CHG, MEAN, and FREQ to name a few. We call these “STAT Blocks”. And finally, in the middle of it all is the “drop zone”.



In order to build a table, we need only drag a variable block to the “Variable” drop zone and match it up with a corresponding stat block in the “Stats” drop zone. Below, we drag the AGE block from the ADSL and drag the MEAN block from the list of Stats to calculate summary statistics on patient AGE within the trial.



Similarly, we can drag in DIABP from the ADVS and use the MEAN block to calculate summary statistics on parameters. However, because DIABP came from a BDS class data source, we need to select the desired AVISIT to calculate summary statistics for the desired time point.



Using this technique, you can drag in an unlimited number of variable and stat blocks to define a custom table. However, if you’re looking for something more common, the app can help with that too. You could build standard analysis tables from scratch by dragging and dropping pertinent variables into the drop zone, but since the standards are well defined and these tables are so common for regulatory submissions, the tidyCDISC app has built-in support for constructing standard analysis tables. At the time this guide was authored, the Table Generator contains the following ‘recipes’ for standardized outputs:



When data needed to produce certain outputs aren’t present, the list of available tables in this drop down will change. For example, if an ADAE is not uploaded, then all the AE tables will disappear from the above list.

When one of these tables is selected, like disposition (Accounting of Subjects)1, the table generator simply compiles the needed variable and stat blocks in the correct order to generate the desired output2. Notice how the population filter was set automatically, in this case to FASFL = ‘Y’ and the grouping variable set to TRT01P3. Within seconds, the user changed the default table title and downloaded the R script4 needed to reproduce the table outside the app: