PEDALFAST Data

Introduction

The PEDALFAST (PEDiatric vALidation oF vAriableS in TBI) project was a prospective cohort study conducted at multiple American College of Surgeons freestanding level I Pediatric Trauma Centers. The cohort consists of patients under 18 years of age who were admitted to the intensive care unit (ICU) with an acute traumatic brain injury (TBI) diagnosis and Glasgow Coma Scale (GCS) score not exceeding 12 or a neurosurgical procedure (intracranial pressure [ICP] monitor, external ventricular drain [EVD], craniotomy, or craniectomy) within the first 24 hours of admission.

This data set was used for several publications:

  • Bennett, DeWitt, Greene, et al. (2017)
  • Bennett, DeWitt, Dixon, et al. (2017)
  • Bennett et al. (2016)

Funded by NICHD grant number R03HD094912 we retroactively mapped the data collected by the PEDALFAST project the Federal Interagency Traumatic Brain Injury Research (FITBIR) data standard. The R data package *pedalfast.data* provides the data submitted to FITBIR as both raw files and in ready to use R data sets.

The PEDALFAST study data were collected and managed using REDCap electronic data capture tools hosted at the University of Colorado Denver. (Harris et al. 2009) REDCap (Research Electronic Data Capture) is a secure, web-based application designed to support data capture for research studies, providing 1) an intuitive interface for validated data entry; 2) audit trails for tracking data manipulation and export procedures; 3) automated export procedures for seamless data downloads to common statistical packages; and 4) procedures for importing data from external sources.

This vignette documents the provided data set and other utilities of this package.

Provided Data Sets

The *pedalfast.data* package provides the following data objects:

data(package = "pedalfast.data")$results[, c("Item", "Title")]
##      Item                 Title               
## [1,] "pedalfast"          "PEDALFAST Data"    
## [2,] "pedalfast_metadata" "PEDALFAST Metadata"

Each of these objects will be described in detail in the following sections.

The provided data sets are data.frames. Examples for working with the provided data sets will be done using base R, the tidyverse, and data.table. Click the following buttons to have the different data paradigms displayed or not while reading this vignette.

PEDALFAST Data

The data collected during the PEDALFAST study has been provided in two data.frames so the end user may opt into using another paradigm such as *[data.table](https://cran.r-project.org/package=data.table)* or the tidyverse. The following will focus on use of base R methods only.

Reproduction of the examples in this vignette will require the following namespaces.

library(pedalfast.data)

Load the provided data sets into the active session via data as follows.

data(pedalfast,          package = "pedalfast.data")
data(pedalfast_metadata, package = "pedalfast.data")

str(pedalfast,          max.level = 0)
## 'data.frame':    388 obs. of  103 variables:
str(pedalfast_metadata, max.level = 0)
## 'data.frame':    103 obs. of  3 variables:

The pedalfast is a data frame with each row reporting the collected data for one subject, and each column being a unique variable. The pedalfast_metadata data frame is a selection of columns from the data dictionary provided by a REDCap export of the project. In the following you will find examples of specific utilities provided in this package to make formatting the data easier.

Let’s look at the first three columns of pedalfast, and the first three rows of pedalfast_metadata.

head(pedalfast[, 1:3])
##   studyid  age female
## 1     102 1179      0
## 2     103   90      0
## 3     110 1164      1
## 4     112 1413      1
## 5     114  233      0
## 6     116 5791      0
pedalfast_metadata[1:3, ]
##   variable                        description         values
## 1  studyid               PEDALFAST Patient ID           <NA>
## 2      age Age, in days, at time of admission           <NA>
## 3   female             Is the patient female? 0, no | 1, yes

The first column of pedalfast is the studyid, and the first row of pedalfast_metadata is the documentation for the studyid. Similarly, the second column of pedalfast and second row of pedalfast_metadata are for the age of the patient. The first notable change in is in the third row of the pedalfast_metadata where the indicator for female is documented including the mapping from integer to English: 0, no | 1, yes

The rest of this section of the vignette provides details on each of the variables in the data set and provides some examples for data use.

Study ID

The PEDALFAST data was collected at multiple sites. The study id provided is a patient specific random number between 100 and 999 with no mapping to the sites. That is, you should not be able to determine which site provided a specific row of data.

variable description values
studyid PEDALFAST Patient ID
str(pedalfast$studyid)
##  int [1:388] 102 103 110 112 114 116 120 122 123 124 ...

Age

Age of the patient is reported in days.

variable description values
age Age, in days, at time of admission
summary(pedalfast$age)          # in days
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0   679.5  2508.5  2699.3  4635.5  6501.0
summary(pedalfast$age / 365.25) # in years
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   1.860   6.868   7.390  12.691  17.799

The PEDALFAST data has been submitted to the Federal Interagency Traumatic Brain Injury Research (FITBIR) Informatics System. As part of that submission age of the patient was to be reported as the floor of the patients age in years with the exception of those under one year of age. For those under one year of age the reported value was to be the truncated three decimal age in years. For example, a patient more than one month but less than two months would have a reported age of 0.083 (1/12), a 8 month old would have a reported age of 0.666 (8/12). Note the truncation of the decimal. If you require the same rounding scheme we have provided a function in this package round_age to provide the rounding with the truncation. The function will return age as a character by default, a numeric value will be returned when specified.

fitbir_ages <-
  data.frame(age  = pedalfast$age / 365.25,
             char = round_age(pedalfast$age / 365.25),
             num  = round_age(pedalfast$age / 365.25, type = "numeric"))

plot(x = fitbir_ages$age,
     y = fitbir_ages$num,
     xlab = "Age (years)",
     ylab = "FITBIR Age (Years)")

Female/Male

The variable female is an indicator for sex/gender. The category of female/male was made by the attending physicians or reported by the patient/caregivers. This variable was not determined by sex chromosomes genotyping. The intent was to report sex but gender, the social constructed identify of sex, might be more appropriate.

variable description values
female Is the patient female? 0, no | 1, yes
with(pedalfast, {table(female)})
## female
##   0   1 
## 239 149
with(pedalfast, {prop.table(table(female))})
## female
##         0         1 
## 0.6159794 0.3840206

Injury

Three variables related to injury. The source of information for the injury and the injury mechanism (injurymech) are both categorical variables with known values and are presented as character vectors in the pedalfast data.frame. The time from injury to admission (injurytoadmit) is reported in days, if the date of injury was known.

variable description values
sourceinj Source of Injury Information
injurytoadmit Days from injury, if known, to admission.
injurymech Injury mechanism 1, traffic | 2, fall | 3, known or suspected abuse | 4, self-harm | 9, other
summary(pedalfast[, c("sourceinj", "injurytoadmit", "injurymech")])
##   sourceinj         injurytoadmit      injurymech       
##  Length:388         Min.   :  0.000   Length:388        
##  Class :character   1st Qu.:  0.000   Class :character  
##  Mode  :character   Median :  0.000   Mode  :character  
##                     Mean   :  1.415                     
##                     3rd Qu.:  0.000                     
##                     Max.   :366.000                     
##                     NA's   :41

The injurymech is a character vector by default so the end user may build a factor as needed.

table(pedalfast$injurymech, useNA = "always")
## 
##                     Fall Known or suspected abuse                    Other 
##                       72                       91                       77 
##                Self-harm                  Traffic                     <NA> 
##                        6                      142                        0

Emergency Department

Several variables were collected in both the emergency department (ED) and the intensive care unit (ICU). The following are the notes for the variables collected in the ED.

GCS

The Glasgow Coma Score was assessed in one or both of the Emergency Department (ED) and the ICU. There are several variables noted here for GCS with the suffix ‘ed’ which are also reported later from the ICU with the suffix ‘icu’.

variable description values
gcsyned Was a GCS obtained in the ED? 0, no | 1, yes
gcseyeed ED GCS Eye 4, spontaneous | 3, to speech | 2, to pain only | 1, no response
gcsverbaled ED GCS Verbal 5, oriented, appropriate or coos and babbles | 4, confused or irritable cries | 3, inappropriate words or cries to pain | 2, incomprehensible sounds or moans to pain | 1, no response
gcsmotored ED GCS Motor 6, obeys commands | 5, localizes pain or withdraws to touch | 4, withdraws from painful stimuli | 3, abnormal flexion to pain | 2, abnormal extension to pain | 1, no response/flaccid
gcsed ED GCS Total [gcseyeed]+[gcsverbaled]+[gcsmotored]
gcsetted Was the patient intubated at the time of their ED GCS assessment? 0, no | 1, yes
gcsseded Was the patient sedated at the time of their ED GCS assessment? 0, no | 1, yes
gcspared Was the patient chemically paralyzed at the time of their ED GCS assessment? 0, no | 1, yes
gcseyeobed Were the patient’s eyes obscured by injury, swelling, or bandage at the time of their ED GCS assessment? 0, no | 1, yes
summary(pedalfast[, grep("^gcs.*ed$", names(pedalfast))])
##     gcsyned          gcseyeed      gcsverbaled      gcsmotored   
##  Min.   :0.0000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:1.0000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
##  Median :1.0000   Median :1.000   Median :1.000   Median :4.000  
##  Mean   :0.9835   Mean   :1.677   Mean   :1.595   Mean   :3.326  
##  3rd Qu.:1.0000   3rd Qu.:2.000   3rd Qu.:1.000   3rd Qu.:5.000  
##  Max.   :1.0000   Max.   :4.000   Max.   :5.000   Max.   :6.000  
##  NA's   :24       NA's   :20      NA's   :20      NA's   :20     
##      gcsed           gcsetted         gcsseded         gcspared     
##  Min.   : 3.000   Min.   :0.0000   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.: 3.000   1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.0000  
##  Median : 6.000   Median :1.0000   Median :1.0000   Median :0.0000  
##  Mean   : 6.598   Mean   :0.7371   Mean   :0.6158   Mean   :0.1355  
##  3rd Qu.: 9.000   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:0.0000  
##  Max.   :15.000   Max.   :1.0000   Max.   :1.0000   Max.   :1.0000  
##  NA's   :20       NA's   :19       NA's   :21       NA's   :19      
##    gcseyeobed     
##  Min.   :0.00000  
##  1st Qu.:0.00000  
##  Median :0.00000  
##  Mean   :0.04905  
##  3rd Qu.:0.00000  
##  Max.   :1.00000  
##  NA's   :21

GCS for the eye, verbal, and motor can be used as both numeric values (as reported in the pedalfast data.frame) or as a categorical variable. The *pedalfast.data* package provides functions for quickly mapping from the numeric values to a factor for gcs. The functions gcs_as_integer and gcs_as_factor

While GCS is a common assessment, the specific language used may vary. By providing these functions we are able to report the exact language used on the assessment.

Lower numeric values of GCS correspond to lower neurological functioning. To illustrate this consider, mapping the integer values 1 through 6 to the labels for the GCS scales:

data.frame(integer = 1:6,
           eye      = gcs_as_factor(1:6, scale = "eye"),
           motor    = gcs_as_factor(1:6, scale = "motor"),
           verbal   = gcs_as_factor(1:6, scale = "verbal")
           ) |>
  knitr::kable(format = "html", row.names = FALSE, align = "clll") |>
  kableExtra::kable_styling(bootstrap_options = "striped")
integer eye motor verbal
1 No response No response/flaccid No response
2 To pain only Abnormal extension to pain Incomprehensible sounds or moans to pain
3 To speech Abnormal flexion to pain Inappropriate words or cries to pain
4 Spontaneous Withdraws from painful stimuli Confused or irritable cries
5 Localizes pain or withdraws to touch Oriented, appropriate or coos and babbles
6 Obeys commands

By default, the mapping of the integer values to factor levels will map the the integer value of 1 to level 1. The argument highest_first will reverse the order of the levels. This option has been provided to help make setting a logical reference level for modeling. For example, say we want to estimate hospital length of stay by the motor GCS score.

gcs_example_data <-
  data.frame(los       = pedalfast$hosplos,
             motor_int = pedalfast$gcsmotored,
             motor_f1  = gcs_as_factor(pedalfast$gcsmotored, scale = "eye"),
             motor_f2  = gcs_as_factor(pedalfast$gcsmotored, scale = "eye", highest_first = TRUE))

head(gcs_example_data)
##   los motor_int     motor_f1     motor_f2
## 1  22         4  Spontaneous  Spontaneous
## 2  24         2 To pain only To pain only
## 3   9         4  Spontaneous  Spontaneous
## 4   6         5         <NA>         <NA>
## 5  40         6         <NA>         <NA>
## 6  36         5         <NA>         <NA>

Just looking at the summary of the example data set shows the order of the factor is different

summary(gcs_example_data)
##       los           motor_int             motor_f1           motor_f2  
##  Min.   :  0.00   Min.   :1.000   No response :134   Spontaneous : 71  
##  1st Qu.:  4.00   1st Qu.:1.000   To pain only: 15   To speech   : 13  
##  Median :  9.00   Median :4.000   To speech   : 13   To pain only: 15  
##  Mean   : 16.42   Mean   :3.326   Spontaneous : 71   No response :134  
##  3rd Qu.: 20.00   3rd Qu.:5.000   NA's        :155   NA's        :155  
##  Max.   :345.00   Max.   :6.000                                        
##                   NA's   :20

Thus, simple regression models will use either “no response” or “spontaneous” as the reference level. Pick the one you want to use.

summary(lm(los ~ motor_int, data = gcs_example_data))$coef
##               Estimate Std. Error   t value     Pr(>|t|)
## (Intercept) 18.0227121   2.522281  7.145402 4.888884e-12
## motor_int   -0.7029069   0.652196 -1.077754 2.818534e-01
summary(lm(los ~ motor_f1,  data = gcs_example_data))$coef
##                       Estimate Std. Error   t value     Pr(>|t|)
## (Intercept)          14.537313   2.518592 5.7719993 2.530920e-08
## motor_f1To pain only 20.396020   7.937896 2.5694492 1.082070e-02
## motor_f1To speech     3.770379   8.469248 0.4451846 6.566069e-01
## motor_f1Spontaneous   6.941560   4.279624 1.6220022 1.061788e-01
summary(lm(los ~ motor_f2,  data = gcs_example_data))$coef
##                       Estimate Std. Error    t value     Pr(>|t|)
## (Intercept)          21.478873   3.460040  6.2076952 2.498997e-09
## motor_f2To speech    -3.171181   8.795268 -0.3605554 7.187642e-01
## motor_f2To pain only 13.454460   8.284851  1.6239833 1.057550e-01
## motor_f2No response  -6.941560   4.279624 -1.6220022 1.061788e-01

Along with the three component scores of GCS, the total GCS score is provided within the pedalfast data set

summary(pedalfast$gcsed)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   3.000   3.000   6.000   6.598   9.000  15.000      20

Be careful with factors. Recall that factors are numeric vectors with the first level mapped to the value one, regardless if that is logical or not. Thus:

identical(
  pedalfast$gcsed,
  pedalfast$gcseyeed + pedalfast$gcsmotored + pedalfast$gcsverbaled
)
## [1] TRUE

identical(
  pedalfast$gcsed,
  as.integer(gcs_as_factor(pedalfast$gcseyeed,    "eye")) +
    as.integer(gcs_as_factor(pedalfast$gcsmotored,  "motor")) +
    as.integer(gcs_as_factor(pedalfast$gcsverbaled, "verbal"))
)
## [1] TRUE

identical(
  pedalfast$gcsed,
  as.integer(gcs_as_factor(pedalfast$gcseyeed,    "eye",    highest_first = TRUE)) +
    as.integer(gcs_as_factor(pedalfast$gcsmotored,  "motor",  highest_first = TRUE)) +
    as.integer(gcs_as_factor(pedalfast$gcsverbaled, "verbal", highest_first = TRUE))
)
## [1] FALSE

Disposition

Disposition form the emergency department:

variable description values
eddisposition Where did the patient go when they left the ED?
table(pedalfast$eddisposition, useNA = "always")
## 
## Intensive Care Unit      Operating Room               Other                <NA> 
##                 313                  57                   2                  16

Imaging

If the patient had CT imaging the information is provided in one of the variables prefixed by “ct” with the exception of the time from admission to ct.

variable description values
admittoct days between admission at CT imaging Integer (days)
ctskullfrac Is the initial head CT positive for skull fracture? 0, no | 1, yes
ctce Is the initial head CT positive for cerebral edema or brain swelling? 0, no | 1, yes
ctmidlineshift Is the initial head CT positive for midline shift? 0, no | 1, yes
ctcompress Is the initial head CT positive for compression or effacement of the basilar cisterns? 0, no | 1, yes
ctintraparhem Is the initial head CT positive for intraparenchymal hemorrhage? 0, no | 1, yes
ctsubarchhem Is the initial head CT positive for subarachnoid hemorrhage? 0, no | 1, yes
ctintraventhem Is the initial head CT positive for intraventricular hemorrhage? 0, no | 1, yes
ctsubhematoma Is the initial head CT positive for subdural hematoma? 0, no | 1, yes
ctepihematoma Is the initial head CT positive for epidural hematoma? 0, no | 1, yes
pedalfast (N = 388)
admittoct   
   minimum -5
   median (IQR) 0 (0.00, 0.00)
   mean (sd) 4.01 ± 37.12
   maximum 366
   Unknown/Missing 3 (0.77%)
Findings   
   ctskullfrac 194/383 (50.65%)
   ctce 164/385 (42.60%)
   ctmidlineshift 93/385 (24.16%)
   ctcompress 96/385 (24.94%)
   ctintraventhem 49/385 (12.73%)
   ctsubarchhem 126/385 (32.73%)
   ctintraventhem 49/385 (12.73%)
   ctsubhematoma 231/385 (60.00%)
   ctepihematoma 54/385 (14.03%)

ICU

There are several variables groups from the ICU.

Source of information

variable description values
sourceicu Source of Injury Information
table(pedalfast$sourceicu, useNA = "always")
## 
##                ICU MD ICU nursing flowsheet                 Other 
##                   298                    75                     2 
##                  <NA> 
##                    13

Pupil Reactivity

variable description values
puplrcticu Pupillary reaction on ICU admission
table(pedalfast$puplrcticu, useNA = "always")
## 
##    Both Fixed Both Reactive     One Fixed       Unknown          <NA> 
##            62           284            11            27             4

GCS

GCS in the ICU are similar variables as where noted in the emergency department. Variable names are appended by “icu” for the values attended in the ICU

variable description values
gcsynicu Was a GCS obtained on ICU Admission? 0, no | 1, yes
gcseyeicu ICU GCS Eye 4, spontaneous | 3, to speech | 2, to pain only | 1, no response
gcsverbalicu ICU GCS Verbal 5, oriented, appropriate or coos and babbles | 4, confused or irritable cries | 3, inappropriate words or cries to pain | 2, incomprehensible sounds or moans to pain | 1, no response
gcsmotoricu ICU GCS Motor 6, obeys commands | 5, localizes pain or withdraws to touch | 4, withdraws from painful stimuli | 3, abnormal flexion to pain | 2, abnormal extension to pain | 1, no response/flaccid
gcsicu ICU GCS Total [gcseyeicu]+[gcsverbalicu]+[gcsmotoricu]
gcsetticu Was the patient intubated at the time of their ICU GCS assessment? 0, no | 1, yes
gcssedicu Was the patient sedated at the time of their ICU GCS assessment? 0, no | 1, yes
gcsparicu Was the patient chemically paralyzed at the time of their ICU GCS assessment? 0, no | 1, yes
gcseyeobicu Were the patient’s eyes obscured by injury, swelling, or bandage at the time of their ICU GCS assessment? 0, no | 1, yes
summary(pedalfast[, grepl("^gcs.*icu$", names(pedalfast))])
##     gcsynicu        gcseyeicu      gcsverbalicu    gcsmotoricu   
##  Min.   :0.0000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:1.0000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
##  Median :1.0000   Median :1.000   Median :1.000   Median :4.000  
##  Mean   :0.9757   Mean   :1.737   Mean   :1.441   Mean   :3.632  
##  3rd Qu.:1.0000   3rd Qu.:2.000   3rd Qu.:1.000   3rd Qu.:5.000  
##  Max.   :1.0000   Max.   :4.000   Max.   :5.000   Max.   :6.000  
##  NA's   :18       NA's   :8       NA's   :7       NA's   :8      
##      gcsicu         gcsetticu        gcssedicu        gcsparicu     
##  Min.   : 3.000   Min.   :0.0000   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.: 3.000   1st Qu.:1.0000   1st Qu.:1.0000   1st Qu.:0.0000  
##  Median : 6.000   Median :1.0000   Median :1.0000   Median :0.0000  
##  Mean   : 6.811   Mean   :0.8407   Mean   :0.7723   Mean   :0.1273  
##  3rd Qu.: 9.000   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:0.0000  
##  Max.   :15.000   Max.   :1.0000   Max.   :1.0000   Max.   :1.0000  
##  NA's   :8        NA's   :5        NA's   :6        NA's   :11      
##   gcseyeobicu     
##  Min.   :0.00000  
##  1st Qu.:0.00000  
##  Median :0.00000  
##  Mean   :0.09162  
##  3rd Qu.:0.00000  
##  Max.   :1.00000  
##  NA's   :6

Discharge and Readmission to the ICU

The variable admitttoicudc1 is the number of days from admission to discharge from the ICU. If the patient had a readmission to the ICU then the first readmission (second overall admission) occurred admittoicuadmit2 days from admission. The duration of the first readmission (second overall admission) would be the difference between admitttoicudc2 and admittoicuadmit2.

variable description values
admittoicudc1 Days from admit to ICU discharge for the initial ICU admission. integer (days)
admittoicudc2 Days from admit to ICU discharge for the second ICU admission (first readmission) integer (days)
admittoicudc3 Days from admit to ICU discharge for the third ICU admission (second readmission) integer (days)
admittoicuadmit2 Days from admit to second ICU admission (first readmission) integer (days)
admittoicuadmit3 Days from admit to third ICU admission (second readmission) integer (days)
summary(pedalfast[, grepl("^admittoicu", names(pedalfast))])
##  admittoicudc1     admittoicuadmit2 admittoicudc2    admittoicuadmit3
##  Min.   :  0.000   Min.   :  1.00   Min.   :  5.00   Min.   :34      
##  1st Qu.:  1.000   1st Qu.:  5.00   1st Qu.:  7.75   1st Qu.:34      
##  Median :  3.000   Median :  7.50   Median :  9.50   Median :34      
##  Mean   :  6.204   Mean   : 29.71   Mean   : 38.18   Mean   :34      
##  3rd Qu.:  7.750   3rd Qu.: 19.25   3rd Qu.: 23.50   3rd Qu.:34      
##  Max.   :379.000   Max.   :380.00   Max.   :382.00   Max.   :34      
##  NA's   :6         NA's   :360      NA's   :360      NA's   :387     
##  admittoicudc3
##  Min.   :35   
##  1st Qu.:35   
##  Median :35   
##  Mean   :35   
##  3rd Qu.:35   
##  Max.   :35   
##  NA's   :387

Mechanical Ventilation

variable description values
ventyn Did the patient receive invasive Mechanical Ventilation during this admission? 0, no | 1, yes
admittoint Days from admit to intubation integer (days)
admittoext Days from admit to extubation integer (days)
summary(pedalfast[, c("ventyn", "admittoint", "admittoext")])
##      ventyn         admittoint       admittoext    
##  Min.   :0.0000   Min.   :-2.000   Min.   :-2.000  
##  1st Qu.:1.0000   1st Qu.: 0.000   1st Qu.: 0.000  
##  Median :1.0000   Median : 0.000   Median : 0.000  
##  Mean   :0.9304   Mean   : 1.436   Mean   : 2.415  
##  3rd Qu.:1.0000   3rd Qu.: 1.000   3rd Qu.: 3.000  
##  Max.   :1.0000   Max.   :32.000   Max.   :64.000  
##                   NA's   :51       NA's   :34

Intracranial pressure (ICP) monitors

variable description values
46 icpyn1 Did the patient receive an ICP Monitor? 0, no | 1, yes
47 icptype1 First ICP monitor type
48 icptype2 Second ICP monitor type
49 icptype3 Third ICP monitor type
50 admittoicpstart1 Days from admission to first ICP monitor integer (days)
51 admittoicpstart2 Days from admission to second ICP monitor integer (days)
52 admittoicpstart3 Days from admission to third ICP monitor integer (days)
53 admittoicpend1 Days from admission to removal of first ICP monitor integer (days)
54 admittoicpend2 Days from admission to removal of second ICP monitor integer (days)
55 admittoicpend3 Days from admission to removal of third ICP monitor integer (days)
##      icpyn1    icptype1           icptype2           icptype3        
##  Min.   :1   Length:131         Length:131         Length:131        
##  1st Qu.:1   Class :character   Class :character   Class :character  
##  Median :1   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :1                                                           
##  3rd Qu.:1                                                           
##  Max.   :1                                                           
##  NA's   :1                                                           
##  admittoicpstart1 admittoicpend1   admittoicpstart2 admittoicpend2 
##  Min.   :-1.000   Min.   : 0.000   Min.   :-1.000   Min.   : 1.00  
##  1st Qu.: 0.000   1st Qu.: 2.250   1st Qu.: 0.250   1st Qu.: 9.00  
##  Median : 0.000   Median : 4.000   Median : 1.500   Median :11.00  
##  Mean   : 1.454   Mean   : 5.844   Mean   : 4.462   Mean   :14.52  
##  3rd Qu.: 1.000   3rd Qu.: 7.000   3rd Qu.: 4.000   3rd Qu.:14.00  
##  Max.   :91.000   Max.   :68.000   Max.   :57.000   Max.   :71.00  
##  NA's   :1        NA's   :9        NA's   :105      NA's   :106    
##  admittoicpstart3 admittoicpend3
##  Min.   : 1.00    Min.   :7     
##  1st Qu.:24.75    1st Qu.:7     
##  Median :48.50    Median :7     
##  Mean   :48.50    Mean   :7     
##  3rd Qu.:72.25    3rd Qu.:7     
##  Max.   :96.00    Max.   :7     
##  NA's   :129      NA's   :130

ICP monitor types:

There are 3 types of ICP monitors reported in the dataset: Intraparenchymal (Camino or bolt), Ventriculostomy (External Ventricular Drain or EVD), and Other.

icptypes <-
  xtabs( ~ icptype1 + icptype2 + icptype3, data = pedalfast, addNA = TRUE) |>
  as.data.frame()
icptypes <- subset(icptypes, Freq > 0)
icptype1 icptype2 icptype3 Freq
Ventriculostomy (External Ventricular Drain or EVD) Other Intraparenchymal (Camino or bolt) 1
Intraparenchymal (Camino or bolt) Ventriculostomy (External Ventricular Drain or EVD) Ventriculostomy (External Ventricular Drain or EVD) 1
Intraparenchymal (Camino or bolt) Intraparenchymal (Camino or bolt) 4
Ventriculostomy (External Ventricular Drain or EVD) Intraparenchymal (Camino or bolt) 4
Intraparenchymal (Camino or bolt) Other 1
Other Other 1
Intraparenchymal (Camino or bolt) Ventriculostomy (External Ventricular Drain or EVD) 12
Ventriculostomy (External Ventricular Drain or EVD) Ventriculostomy (External Ventricular Drain or EVD) 1
Ventriculostomy (External Ventricular Drain or EVD) 1
Intraparenchymal (Camino or bolt) 74
Other 7
Ventriculostomy (External Ventricular Drain or EVD) 21
260

Invasive Vascular Catheters

variable description values
cathtype1 Type of first invasive vascular catheter
cathtype2 Type of second invasive vascular catheter
cathtype3 Type of third invasive vascular catheter
cathtype4 Type of fourth invasive vascular catheter
admittocathstart1 Days from admission to first catheter integer (days)
admittocathstart2 Days from admission to second catheter integer (days)
admittocathstart3 Days from admission to third catheter integer (days)
admittocathstart4 Days from admission to fourth catheter integer (days)
admittocathend1 Days from admission to removal of first catheter integer (days)
admittocathend2 Days from admission to removal of second catheter integer (days)
admittocathend3 Days from admission to removal of third catheter integer (days)
admittocathend4 Days from admission to removal of fourth catheter integer (days)

First catheter

summary(
  subset(pedalfast,
         !is.na(cathtype1),
         select = grep("cath.*1$", names(pedalfast)))
)
##   cathtype1         admittocathstart1 admittocathend1  
##  Length:243         Min.   :-2.0000   Min.   : -1.000  
##  Class :character   1st Qu.: 0.0000   1st Qu.:  2.000  
##  Mode  :character   Median : 0.0000   Median :  4.000  
##                     Mean   : 0.4033   Mean   :  6.415  
##                     3rd Qu.: 1.0000   3rd Qu.:  7.000  
##                     Max.   : 6.0000   Max.   :368.000  
##                                       NA's   :24
table(pedalfast$cathtype1)
## 
##                             Arterial catheter 
##                                           112 
##                       Central venous catheter 
##                                           115 
## Peripherally inserted central catheter (PICC) 
##                                            16

Second catheter

summary(
  subset(pedalfast,
         !is.na(cathtype2),
         select = grep("cath.*2$", names(pedalfast)))
)
##   cathtype2         admittocathstart2 admittocathend2  
##  Length:166         Min.   :-1.000    Min.   :-59.000  
##  Class :character   1st Qu.: 0.000    1st Qu.:  3.000  
##  Mode  :character   Median : 0.000    Median :  6.000  
##                     Mean   : 1.018    Mean   :  6.622  
##                     3rd Qu.: 1.000    3rd Qu.:  9.000  
##                     Max.   :31.000    Max.   : 93.000  
##                                       NA's   :18
table(pedalfast$cathtype2)
## 
##                             Arterial catheter 
##                                            98 
##                       Central venous catheter 
##                                            52 
## Peripherally inserted central catheter (PICC) 
##                                            16

Third catheter

summary(
  subset(pedalfast,
         !is.na(cathtype3),
         select = grep("cath.*3$", names(pedalfast)))
)
##   cathtype3         admittocathstart3 admittocathend3
##  Length:56          Min.   :-1.000    Min.   : 1.00  
##  Class :character   1st Qu.: 0.250    1st Qu.: 5.75  
##  Mode  :character   Median : 2.000    Median :10.00  
##                     Mean   : 3.796    Mean   :12.62  
##                     3rd Qu.: 5.750    3rd Qu.:14.50  
##                     Max.   :19.000    Max.   :94.00  
##                     NA's   :2         NA's   :8
table(pedalfast$cathtype3)
## 
##                             Arterial catheter 
##                                            16 
##                       Central venous catheter 
##                                            12 
## Peripherally inserted central catheter (PICC) 
##                                            28

Fourth catheter

summary(
  subset(pedalfast,
         !is.na(cathtype4),
         select = grep("cath.*4$", names(pedalfast)))
)
##   cathtype4         admittocathstart4 admittocathend4
##  Length:15          Min.   : 0.000    Min.   : 2.00  
##  Class :character   1st Qu.: 2.000    1st Qu.: 8.00  
##  Mode  :character   Median : 5.000    Median :20.00  
##                     Mean   : 9.333    Mean   :22.93  
##                     3rd Qu.: 9.000    3rd Qu.:36.00  
##                     Max.   :37.000    Max.   :57.00
table(pedalfast$cathtype4)
## 
##                             Arterial catheter 
##                                             4 
##                       Central venous catheter 
##                                             3 
## Peripherally inserted central catheter (PICC) 
##                                             8

Tracheostomy

variable description values
newtrachyn Did the patient receive a new tracheostomy? 0, no | 1, yes
admittotrach Days from admission to tracheostomy integer (days)
summary(pedalfast[pedalfast$newtrachyn == 1, c("newtrachyn", "admittotrach")])
##    newtrachyn  admittotrach  
##  Min.   :1    Min.   : 0.00  
##  1st Qu.:1    1st Qu.: 7.50  
##  Median :1    Median :13.00  
##  Mean   :1    Mean   :15.70  
##  3rd Qu.:1    3rd Qu.:18.75  
##  Max.   :1    Max.   :46.00

Gastrostomy

variable description values
newgastyn Did the patient receive a new gastrostomy? 0, no | 1, yes
admittogast Days from admission to gastrostomy integer (days)
summary(pedalfast[pedalfast$newgastyn == 1, c("newgastyn", "admittogast")])
##    newgastyn  admittogast   
##  Min.   :1   Min.   : 1.00  
##  1st Qu.:1   1st Qu.:12.50  
##  Median :1   Median :21.00  
##  Mean   :1   Mean   :22.78  
##  3rd Qu.:1   3rd Qu.:33.50  
##  Max.   :1   Max.   :50.00

Decompressive craniectomy

variable description values
decomcranyn Did the patient receive a decompressive craniectomy? 0, no | 1, yes
admittocrani Days from admission to decompressive craniectomy integer (days)
summary(pedalfast[pedalfast$decomcranyn == 1, c("decomcranyn", "admittocrani")])
##   decomcranyn  admittocrani    
##  Min.   :1    Min.   :-1.0000  
##  1st Qu.:1    1st Qu.: 0.0000  
##  Median :1    Median : 0.0000  
##  Mean   :1    Mean   : 0.9773  
##  3rd Qu.:1    3rd Qu.: 1.0000  
##  Max.   :1    Max.   :10.0000  
##  NA's   :4    NA's   :4

Lumbar Drain

variable description values
lmbrdrainyn Did the patient receive a new lumbar drain 0, no | 1, yes
admittolmbdrain Days from admission to lumbar drain integer (days)
summary(pedalfast[pedalfast$lmbrdrainyn == 1, c("lmbrdrainyn", "admittolmbdrain")])
##   lmbrdrainyn admittolmbdrain
##  Min.   :1    Min.   : 2.00  
##  1st Qu.:1    1st Qu.: 2.75  
##  Median :1    Median : 4.00  
##  Mean   :1    Mean   : 7.50  
##  3rd Qu.:1    3rd Qu.: 8.75  
##  Max.   :1    Max.   :20.00

Epidural Hematoma Evacuated

variable description values
epihemyn Did the patient have an epidural hematoma evacuated? 0, no | 1, yes
admittoedhevac Days from admission to evacuation of epidural hematoma integer (days)
summary(pedalfast[pedalfast$epihemyn == 1, c("epihemyn", "admittoedhevac")])
##     epihemyn admittoedhevac   
##  Min.   :1   Min.   :-1.0000  
##  1st Qu.:1   1st Qu.: 0.0000  
##  Median :1   Median : 0.0000  
##  Mean   :1   Mean   : 0.1034  
##  3rd Qu.:1   3rd Qu.: 0.0000  
##  Max.   :1   Max.   : 1.0000

Subdural Hematoma Evacuated

variable description values
subhemyn Did the patient have a subdural hematoma evacuated? 0, no | 1, yes
admittosdhevac Days from admission to evacuation of subdural hematoma integer (days)
summary(pedalfast[pedalfast$subhemyn == 1, c("subhemyn", "admittosdhevac")])
##     subhemyn admittosdhevac   
##  Min.   :1   Min.   :-1.0000  
##  1st Qu.:1   1st Qu.: 0.0000  
##  Median :1   Median : 0.0000  
##  Mean   :1   Mean   : 0.6977  
##  3rd Qu.:1   3rd Qu.: 0.5000  
##  Max.   :1   Max.   :11.0000

Medications

subset(pedalfast_metadata, grepl("^rx", variable)) |>
  knitr::kable(format = "html", row.names = FALSE) |>
  kableExtra::kable_styling(bootstrap_options = "striped")
variable description values
rxhypsal Was hypertonic saline ordered? 0, no | 1, yes
rxmann Was mannitol ordered? 0, no | 1, yes
rxbarb Was a barbiturate ordered? 0, no | 1, yes
rxinotrvas Was an inotrope or vasopressor ordered? 0, no | 1, yes
summary(pedalfast[, grepl("^rx", names(pedalfast))])
##     rxhypsal          rxmann          rxbarb         rxinotrvas    
##  Min.   :0.0000   Min.   :0.000   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.:0.000   1st Qu.:0.0000   1st Qu.:0.0000  
##  Median :1.0000   Median :0.000   Median :0.0000   Median :0.0000  
##  Mean   :0.5438   Mean   :0.171   Mean   :0.1068   Mean   :0.3798  
##  3rd Qu.:1.0000   3rd Qu.:0.000   3rd Qu.:0.0000   3rd Qu.:1.0000  
##  Max.   :1.0000   Max.   :1.000   Max.   :1.0000   Max.   :1.0000  
##                   NA's   :2       NA's   :4        NA's   :1

TPN

subset(pedalfast_metadata, variable %in% c("tpnyn", "admittotpn")) |>
  knitr::kable(format = "html", row.names = FALSE) |>
  kableExtra::kable_styling(bootstrap_options = "striped")
variable description values
tpnyn Did the patient receive TPN? 0, no | 1, yes
admittotpn Days from admission to first TPN integer (days)
summary(pedalfast[pedalfast$tpnyn == 1, c("tpnyn", "admittotpn")])
##      tpnyn     admittotpn  
##  Min.   :1   Min.   :0.00  
##  1st Qu.:1   1st Qu.:2.00  
##  Median :1   Median :2.50  
##  Mean   :1   Mean   :3.35  
##  3rd Qu.:1   3rd Qu.:5.00  
##  Max.   :1   Max.   :9.00  
##              NA's   :1

Enteral Nutrition

subset(pedalfast_metadata, variable %in% c("entnutyn", "admittoentnut")) |>
  knitr::kable(format = "html", row.names = FALSE) |>
  kableExtra::kable_styling(bootstrap_options = "striped")
variable description values
entnutyn Did the patient receive enteral nutrition? 0, no | 1, yes
admittoentnut Days from admission to enteral nutrition integer (days)
summary(pedalfast[pedalfast$entnutyn == 1, c("entnutyn", "admittoentnut")])
##     entnutyn admittoentnut     
##  Min.   :1   Min.   :   0.000  
##  1st Qu.:1   1st Qu.:   1.000  
##  Median :1   Median :   2.000  
##  Mean   :1   Mean   :   5.973  
##  3rd Qu.:1   3rd Qu.:   2.000  
##  Max.   :1   Max.   :1098.000

Hospital LOS and Disposition

subset(pedalfast_metadata, variable %in% c("hosplos", "hospdisposition")) |>
  knitr::kable(format = "html", row.names = FALSE) |>
  kableExtra::kable_styling(bootstrap_options = "striped")
variable description values
hosplos Hospital length of stay (days) integer (days)
hospdisposition Where did the patient go when they were discharged from the hospital? character
summary(pedalfast[, c("hosplos", "hospdisposition")])
##     hosplos       hospdisposition   
##  Min.   :  0.00   Length:388        
##  1st Qu.:  4.00   Class :character  
##  Median :  9.00   Mode  :character  
##  Mean   : 16.42                     
##  3rd Qu.: 20.00                     
##  Max.   :345.00

The dispositions are:

qwraps2::summary_table(pedalfast["hospdisposition"])
## 
## 
## |                                          |pedalfast["hospdisposition"] (N = 388) |
## |:-----------------------------------------|:--------------------------------------|
## |**hospdisposition**                       |&nbsp;&nbsp;                           |
## |&nbsp;&nbsp; Discharge TO or WITH Hospice |1 (0)                                  |
## |&nbsp;&nbsp; Home with Skilled Nursing    |7 (2)                                  |
## |&nbsp;&nbsp; Home, no new supports        |236 (61)                               |
## |&nbsp;&nbsp; Inpatient Rehab              |62 (16)                                |
## |&nbsp;&nbsp; Mortality                    |65 (17)                                |
## |&nbsp;&nbsp; Other                        |16 (4)                                 |
## |&nbsp;&nbsp; Short-term Nursing Facility  |1 (0)                                  |

Cardiac Arrest

Indicator and location for cardiac arrest.

subset(pedalfast_metadata, grepl("^cardiac", variable)) |>
  knitr::kable(format = "html", row.names = FALSE) |>
  kableExtra::kable_styling(bootstrap_options = "striped")
variable description values
cardiacarrestyn Did the patient have a cardiac arrest at any time from the time of injury to the time of hospital discharge? 0, no | 1, yes
cardiacarrestprehosp Cardiac arrest pre hospital 0, no | 1, yes
cardiacarrested Cardiac arrest emergency department 0, no | 1, yes
cardiacarrestor Cardiac arrest operating room 0, no | 1, yes
cardiacarrestcu Cardiac arrest ICU 0, no | 1, yes
cardiacarrestoter Cardiac arrest other 0, no | 1, yes
summary(pedalfast[, grepl("^cardiac", names(pedalfast))])
##  cardiacarrestyn  cardiacarrestprehosp cardiacarrested  cardiacarrestor  
##  Min.   :0.0000   Min.   :0.0000       Min.   :0.0000   Min.   :0.00000  
##  1st Qu.:0.0000   1st Qu.:0.0000       1st Qu.:0.0000   1st Qu.:0.00000  
##  Median :0.0000   Median :0.0000       Median :0.0000   Median :0.00000  
##  Mean   :0.1521   Mean   :0.1031       Mean   :0.0232   Mean   :0.01031  
##  3rd Qu.:0.0000   3rd Qu.:0.0000       3rd Qu.:0.0000   3rd Qu.:0.00000  
##  Max.   :1.0000   Max.   :1.0000       Max.   :1.0000   Max.   :1.00000  
##  cardiacarresticu  cardiacarrestother
##  Min.   :0.00000   Min.   :0.000000  
##  1st Qu.:0.00000   1st Qu.:0.000000  
##  Median :0.00000   Median :0.000000  
##  Mean   :0.04124   Mean   :0.005155  
##  3rd Qu.:0.00000   3rd Qu.:0.000000  
##  Max.   :1.00000   Max.   :1.000000

Functional Status Scale

subset(pedalfast_metadata, grepl("fss", variable)) |>
  knitr::kable(format = "html", row.names = FALSE) |>
  kableExtra::kable_styling(bootstrap_options = "striped")
variable description values
admittofss Days from admission to FSS evaluation integer (days)
sourcefss Source of FSS evaluation
fssmental FSS Mental Status 1, Normal sleep/wake periods; appropriate responsiveness | 2, Sleepy but arousable to noise/touch/movement and/or periods of social nonresponsiveness | 3, Lethargic and/or irritable | 4, Minimal arousal to stimuli (stupor) | 5, Unresponsive, coma, and/or vegetative state
fsssensory FSS Sensory 1, Intact hearing and vision and responsive to touch | 2, Suspected hearing or vision loss | 3, Not reactive to one of auditory stimuli or visual stimuli | 4, Not reactive to either auditory or visual stimuli | 5, Abnormal responses to pain or touch
fsscommun FSS Communication 1, Appropriate noncrying vocalizations, interactive facial expressiveness, or gestures | 2, Diminished vocalization, facial expression, and/or social responsiveness | 3, Absence of attention-getting behavior | 4, No demonstration of discomfort | 5, Absence of communication
fssmotor FSS Motor 1, Coordinated body movements, normal muscle control, and awareness of action and reason | 2, One limb functionally impaired | 3, Two or more limbs functionally impaired | 4, Poor head control | 5, Diffuse spasticity, paralysis, or decerebrate/decorticate posturing
fssfeeding FSS Feeding 1, All food taken by mouth with age-appropriate help | 2, Nothing by mouth or need for age-inappropriate help with feeding | 3, Oral and tube feedings | 4, Parenteral nutrition with oral or tube feedings | 5, All parenteral nutrition
fssresp FSS Respiratory 1, Room air and no artificial support or aids | 2, Oxygen treatment and/or suctioning | 3, Tracheostomy for airway | 4, Continuous positive airway pressure (CPAP/BIPAP) for all or part of the day and/or mechanical ventilator support for part of the day | 5, Mechanical ventilatory support for all of the day and night
summary(pedalfast[, grepl("fss", names(pedalfast))])
##    admittofss      sourcefss           fssmental       fsssensory  
##  Min.   : -1.00   Length:388         Min.   :1.000   Min.   :1.00  
##  1st Qu.:  5.00   Class :character   1st Qu.:1.000   1st Qu.:1.00  
##  Median :  9.00   Mode  :character   Median :1.000   Median :1.00  
##  Mean   : 19.97                      Mean   :1.637   Mean   :1.41  
##  3rd Qu.: 15.00                      3rd Qu.:2.000   3rd Qu.:1.00  
##  Max.   :643.00                      Max.   :5.000   Max.   :5.00  
##  NA's   :57                          NA's   :57      NA's   :56    
##    fsscommun        fssmotor       fssfeeding       fssresp     
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
##  Median :1.000   Median :1.000   Median :1.000   Median :1.000  
##  Mean   :1.707   Mean   :1.976   Mean   :1.937   Mean   :1.265  
##  3rd Qu.:2.000   3rd Qu.:3.000   3rd Qu.:3.000   3rd Qu.:1.000  
##  Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
##  NA's   :57      NA's   :56      NA's   :56      NA's   :56

Mapping PEDALFAST to FITBIR

The PEDALFAST data sets have been organized, submitted, and published via the Federal Interagency Traumatic Brain Injury Research (FITBIR) Informatics System.

Funding

The mapping of PEDALFAST data to FITBIR and the construction and release of this R package was funded in part by NIH grant R03HD094912.

The PEDALFAST project was funded in part by NICHD grant number K23HD074620.

References

Bennett, Tellen D, Peter E DeWitt, Rebecca R Dixon, Cory Kartchner, Yamila Sierra, Diane Ladell, Rajendu Srivastava, et al. 2017. “Development and Prospective Validation of Tools to Accurately Identify Neurosurgical and Critical Care Events in Children with Traumatic Brain Injury.” Pediatr Crit Care Med 18 (5): 442–51. https://doi.org/10.1097/PCC.0000000000001120.
Bennett, Tellen D, Peter E DeWitt, Tom H Greene, Rajendu Srivastava, Jay Riva-Cambrin, Michael L Nance, Susan L Bratton, Desmond K Runyan, J Michael Dean, and Heather T Keenan. 2017. “Functional Outcome After Intracranial Pressure Monitoring for Children with Severe Traumatic Brain Injury.” JAMA Pediatrics 171 (October): 965–71. https://doi.org/10.1001/jamapediatrics.2017.2127.
Bennett, Tellen D, Rebecca R Dixon, Cory Kartchner, Peter E DeWitt, Yamila Sierra, Diane Ladell, Allison Kempe, Desmond K Runyan, J Michael Dean, and Heather T Keenan. 2016. “Functional Status Scale in Children with Traumatic Brain Injury: A Prospective Cohort Study.” Pediatric Critical Care Medicine : A Journal of the Society of Critical Care Medicine and the World Federation of Pediatric Intensive and Critical Care Societies, October. https://doi.org/10.1097/PCC.0000000000000934.
Harris, Paul A, Robert Taylor, Robert Thielke, Jonathon Payne, Nathaniel Gonzalez, and Jose G Conde. 2009. “Research Electronic Data Capture (REDCap)—a Metadata-Driven Methodology and Workflow Process for Providing Translational Research Informatics Support.” Journal of Biomedical Informatics 42 (2): 377–81.