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.
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
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!
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 TRT01P
3. Within seconds, the
user changed the default table title and downloaded the R
script4 needed to reproduce the table outside the app: