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
on shinyapps.io. Note the demo version disables the Data
Upload feature and instead uses the CDISC pilot data.
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
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
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!
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
ADAE bins include the
names of all their variables, while any
BDS data sets, like
ADLBC bins include a list of
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
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
ADSL and drag the
MEAN block from the list
of Stats to calculate summary statistics on patient
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
came from a
BDS class data source, we need to select the
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: