This is a report focusing on patient notes containing phrases associated with end of life decisions and their implementation by the clinical care team. In particular, we will focus on the National Quality Forum Measure #1626:
Percentage of vulnerable adults admitted to ICU who survive at least 48 hours who have their care preferences documented within 48 hours OR documentation as to why this was not done.
Per the NQF document, this is particularly important as:
Many patients would prefer to die rather than live permanently comatose, mechanically ventilated, or tube fed (Pearlman 1993; Wenger 1998), yet physicians and surrogate decision makers often do not know patients´ preferences concerning life-sustaining treatment (Wenger 1998; Guidelines 1987; AMA 1994, Wenger 2000; Kish 2000). Patients entering ICUs are likely to receive invasive care, making the elicitation and documentation of preferences necessary to guide these potentially burdensome treatments. (Lorenz 2007) Care in United States hospitals tends to be aggressive. Even patients with lung and colorectal cancer enrolled in hospice receive aggressive care when brought to the hospital. (Cintron 2003) In a study of Medicare claims that evaluated patients who died within one year of a diagnosis of lung, breast, colorectal or other gastrointestinal cancer, patients receiving chemotherapy within two weeks of death increased from 13.8% in 1993 to 18.5% in 1996, and patients had more hospitalizations, ER visits, and ICU stays during the latter time period. (Earle 2004) Another retrospective study of 335 breast cancer patients who died in the 1990s found that within approximately two months prior to death, 64% continued to receive endocrine therapy and 20% continued to receive chemotherapy. (Asola 2006)
These data were pulled from MIMIC-III, and represent all patients aged > 75 at the time of admission who had Physicians' Notes logged within that timeframe.
library("corrr") # Correlation Matrices
library("rcompanion") # Pairwise nominal test
attending_check to ensure that all patients’ notes documented during any hospital admission have at least a single attending physician as part of the care team, attending_check will go through each hospital admission and keep only those admissions with attendings who have logged a patient note that was captured by MIMIC-III
attending_check <- function(dat){
## Temporary data frame
tmp_frame <- data.frame()
## Results frame
res <- data.frame()
## For each hospital admission
for (name in unique(dat$HADM_ID)){
## Subset admission
tmp_frame <- dat[dat$HADM_ID == name, ]
## If any care providers are "Attending"
if (any("Attending" %in% tmp_frame$CG_DESCRIPTION)){
## add hospital admission to results
res <- rbind(res, tmp_frame)
}
}
## Return control to outer level
return(res)
}
allDup will return all duplicated values, without dropping any. i.e. The directionality of duplicated() is removed by performing the operation on the vector from both directions
allDup <- function(val){
duplicated(val) | duplicated(val, fromLast = TRUE)
}
plotDat() is a convenient plotting function.
plotDat <- function(dat, column, x_col, bs, mn, xl, yl){
tmp <- as.matrix(table(dat[[column]], dat[[x_col]]))
prop <- prop.table(tmp, margin = 2)#2 for column-wise proportions
par(mar = c(5.0, 4.0, 4.0, 15), xpd = TRUE)
barplot(prop, col = cm.colors(length(rownames(prop))), beside = bs, width = 2, main = mn, xlab = xl, ylab = yl)
legend("topright", inset = c(-0.90,0), fill = cm.colors(length(rownames(prop))), legend=rownames(prop))
}
detach_packages will keep only base R packages, and will remove all other supplementary packages to avoid functional conflicts.
detach_packages <- function(){
basic.packages <- c("package:stats",
"package:graphics",
"package:grDevices",
"package:utils",
"package:datasets",
"package:methods",
"package:base")
package.list <- search()[ifelse(unlist(gregexpr("package:", search())) == 1, TRUE , FALSE)]
package.list <- setdiff(package.list, basic.packages)
if (length(package.list) > 0 ) for (package in package.list) detach(package, character.only=TRUE)
}
Load NQF care measure cohort used for a previous manuscript (ROW_ID refers to NOTEEVENTS), load CAREGIVERS, ADMISSIONS, PATIENTS, and ICUSTAYS for additional data.
Note: FAM, CIM, LIM, CAR and COD refer to human annotations, and will be dropped, as we are intersted in the .machine annotations from NeuroNER.
## Load Labeled Note Data for NQF Caremeasure Cohort (From NOTEEVENTS table)
dat <- read.csv("~/nqf_caregivers/data/note_labels_over75.csv", header = T, stringsAsFactors = F)
## Remove X and note_name (artifact indexing columns) from dat
dat$X <- NULL
dat$note_name <- NULL
## Remove manual annotations
dat$FAM <- NULL
dat$CIM <- NULL
dat$CIM_post <- NULL
dat$LIM <- NULL
dat$CAR <- NULL
dat$COD <- NULL
## Load CAREGIVERS Table for join on CGID
cg <- read.csv("~/nqf_caregivers/data/mimic/CAREGIVERS.csv",
header = T, stringsAsFactors = F)
## Load ADMISSIONS Table to join on HADM_ID
adm <- read.csv("~/nqf_caregivers/data/mimic/ADMISSIONS.csv",
header = T, stringsAsFactors = F)
## Load PATIENTS Table to join on SUBJECT_ID
pat <- read.csv("~/nqf_caregivers/data/mimic/PATIENTS.csv",
header = T, stringsAsFactors = F)
## Load ICUSTAYS Table to join on SUBJECT_ID, HADM_ID
stays <- read.csv("~/nqf_caregivers/data/mimic/ICUSTAYS.csv",
header = T, stringsAsFactors = F)
In MIMIC-III, ROW_ID is an index used for each table, and DESCRIPTION is also a common variable for each table.
ROW_ID from all tables accept dat (from NOTEEVENTS)dat to CAREGIVERS on CGIDdat to ADMISSIONS on HADM_IDdat to PATIENTS on SUBJECT_IDdat to ICUSTAYS on SUBJECT_ID and HADM_IDATTENDING and Resident/Fellow/PA/NPMIMIC## Change column name of "NOTEEVENTS.DESCRIPTION" to explicitly mention that it describes the note
colnames(dat)[which(colnames(dat) == "DESCRIPTION")] <- "NOTE_DESCRIPTION"
## Change column name of "CAREGIVERS. DESCRIPTION" to explicitly mention that it describes the careprovider
colnames(cg)[which(colnames(cg) == "DESCRIPTION")] <- "CG_DESCRIPTION"
## (1)
cg$ROW_ID <- NULL
adm$ROW_ID <- NULL
pat$ROW_ID <- NULL
stays$ROW_ID <- NULL
dim(dat)
## [1] 11575 17
## (2)
dat <- merge(dat, cg, by = "CGID")
dim(dat)
## [1] 11575 19
## (3)
dat <- merge(dat, adm, by = "HADM_ID")
dim(dat)
## [1] 11575 36
## This has duplicated SUBJECT_ID
identical(dat$SUBJECT_ID.x, dat$SUBJECT_ID.y)
## [1] TRUE
## Remove one
dat$SUBJECT_ID.y <- NULL
## Rename the other
colnames(dat)[which(colnames(dat) == "SUBJECT_ID.x")] <- "SUBJECT_ID"
dim(dat)
## [1] 11575 35
## (4)
dat <- merge(dat, pat, by = "SUBJECT_ID")
dim(dat)
## [1] 11575 41
## (5)
dat <- merge(dat, stays, by = c("SUBJECT_ID", "HADM_ID"))
dim(dat)
## [1] 13369 50
## (6)
dat <- dat[!duplicated(dat), ]
dim(dat)
## [1] 11575 50
## (7)
dat <- dat[(dat$CG_DESCRIPTION == "Attending" |
dat$CG_DESCRIPTION == "Resident/Fellow/PA/NP"), ]
dim(dat)
## [1] 11461 50
## (8)
dat <- attending_check(dat)
dim(dat)
## [1] 11104 50
## Cleaning Environment
rm(adm, pat, stays)#, cg)
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 1643612 87.8 3886542 207.6 2663435 142.3
## Vcells 11348603 86.6 29517438 225.3 29517423 225.3
Note: the merge() method we used is an inner join, which is a matrix manipulation that generates the Cartesian Product of two data matrices. The data frame will expand when joined to ICUSTAYS because a single hospital admission can be associated with a number of ICUSTAYS if the patient is transferred to the floor and back.
## Word count
dat$WORD_COUNT <- stringr::str_count(dat$TEXT, "\\W+")
## Count characters
dat$NCHAR <- nchar(dat$TEXT)
plot(dat$WORD_COUNT, dat$NCHAR,
main = "Character Count as a Function of Word Count",
xlab = "Word Count",
ylab = "Character Count")
cor(dat$WORD_COUNT, dat$NCHAR)
## [1] 0.9915004
Unsurprisingly, word count and character count are correlated.
We will want to convert CHARTDATE, representing the date the which the note was charted, to numeric from YYYY-MM-DD format. We will also want ICUSTAYS.INTIME in a similar format. The integer that results will be days since 1970-01-01, per ?as.Date.
## From ADMISSIONS
dat$ADMITTIME <- as.numeric(as.Date(dat$ADMITTIME, "%Y-%m-%d %H:%M:%S"))
## From NOTEEVENTS
dat$CHARTDATE <- as.numeric(as.Date(dat$CHARTDATE, "%Y-%m-%d"))
## from ICUSTAYS
dat$INTIME <- as.numeric(as.Date(dat$INTIME, "%Y-%m-%d %H:%M:%S"))
## TIME_SINCE_ADMISSION from `NOTEEVENTS.CHARTDATE` and `ADMISSIONS.ADMITTIME`
## Calculate time since admission (of logging note)
dat$TIME_SINCE_ADMIT <- dat$CHARTDATE - dat$ADMITTIME
SUBJECT_ID and CGID are integer values that may have overlap. To deal with this, we will add a character prefix to their integer values.
dat$SUBJECT_ID <- paste0("SUBJECT_", dat$SUBJECT_ID)
dat$CGID <- paste0("CG_", dat$CGID)
##Change CAREGIVERS as well
cg$CGID <- paste0("CG_", cg$CGID)
Save data for later analyses.
## Write
#write.csv(dat, file = "~/nqf_caregivers/data/NQF_Att_Res_03Jun18.csv", row.names = F)
boxplot(dat$NCHAR ~ dat$CG_DESCRIPTION,
main = "Character Count By Clinician",
xlab = "Clinician",
ylab = "Character Count")
t.test(dat$NCHAR ~ dat$CG_DESCRIPTION)
##
## Welch Two Sample t-test
##
## data: dat$NCHAR by dat$CG_DESCRIPTION
## t = -8.1183, df = 6913.5, p-value = 5.551e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -544.8963 -332.9304
## sample estimates:
## mean in group Attending mean in group Resident/Fellow/PA/NP
## 6606.670 7045.583
wilcox.test(dat$NCHAR ~ dat$CG_DESCRIPTION)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dat$NCHAR by dat$CG_DESCRIPTION
## W = 12033000, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0
boxplot(dat$WORD_COUNT ~ dat$CG_DESCRIPTION,
main = "Word Count By Clinician",
xlab = "Clinician",
ylab = "Character Count")
t.test(dat$WORD_COUNT ~ dat$CG_DESCRIPTION)
##
## Welch Two Sample t-test
##
## data: dat$WORD_COUNT by dat$CG_DESCRIPTION
## t = -7.396, df = 6875.2, p-value = 1.57e-13
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -72.53459 -42.14015
## sample estimates:
## mean in group Attending mean in group Resident/Fellow/PA/NP
## 888.9681 946.3055
wilcox.test(dat$WORD_COUNT ~ dat$CG_DESCRIPTION)
##
## Wilcoxon rank sum test with continuity correction
##
## data: dat$WORD_COUNT by dat$CG_DESCRIPTION
## W = 12048000, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0
plotDat(dat, "FAM.machine", "CG_DESCRIPTION", bs = F, mn = "FAM Documentation By Caregiver", xl = "Caregiver Group", yl = "Proportion")
test <- table(dat$CG_DESCRIPTION, dat$FAM.machine)
test
##
## 0 1
## Attending 2586 960
## Resident/Fellow/PA/NP 5192 2366
chisq.test(test)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: test
## X-squared = 20.4, df = 1, p-value = 6.283e-06
pairwiseNominalIndependence(
as.matrix(test),
fisher = F, gtest = F, chisq = T, method = "fdr")
## Comparison p.Chisq p.adj.Chisq
## 1 Attending : Resident/Fellow/PA/NP 6.28e-06 6.28e-06
plotDat(dat, "CIM.machine", "CG_DESCRIPTION", bs = F, mn = "CIM Documentation By Caregiver", xl = "Caregiver Group", yl = "Proportion")
test <- table(dat$CG_DESCRIPTION, dat$CIM.machine)
test
##
## 0 1
## Attending 2232 1314
## Resident/Fellow/PA/NP 4409 3149
chisq.test(test)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: test
## X-squared = 21.135, df = 1, p-value = 4.281e-06
pairwiseNominalIndependence(
as.matrix(test),
fisher = F, gtest = F, chisq = T, method = "fdr")
## Comparison p.Chisq p.adj.Chisq
## 1 Attending : Resident/Fellow/PA/NP 4.28e-06 4.28e-06
plotDat(dat, "CIM_post.machine", "CG_DESCRIPTION", bs = F, mn = "CIM_post Documentation By Caregiver", xl = "Caregiver Group", yl = "Proportion")
test <- table(dat$CG_DESCRIPTION, dat$CIM_post.machine)
test
##
## 0 1
## Attending 2048 1498
## Resident/Fellow/PA/NP 3797 3761
chisq.test(test)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: test
## X-squared = 54.405, df = 1, p-value = 1.632e-13
pairwiseNominalIndependence(
as.matrix(test),
fisher = F, gtest = F, chisq = T, method = "fdr")
## Comparison p.Chisq p.adj.Chisq
## 1 Attending : Resident/Fellow/PA/NP 1.63e-13 1.63e-13
plotDat(dat, "LIM.machine", "CG_DESCRIPTION", bs = F, mn = "LIM Documentation By Caregiver", xl = "Caregiver Group", yl = "Proportion")
test <- table(dat$CG_DESCRIPTION, dat$LIM.machine)
test
##
## 0 1
## Attending 2361 1185
## Resident/Fellow/PA/NP 5022 2536
chisq.test(test)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: test
## X-squared = 0.014376, df = 1, p-value = 0.9046
pairwiseNominalIndependence(
as.matrix(test),
fisher = F, gtest = F, chisq = T, method = "fdr")
## Comparison p.Chisq p.adj.Chisq
## 1 Attending : Resident/Fellow/PA/NP 0.905 0.905
plotDat(dat, "CAR.machine", "CG_DESCRIPTION", bs = F, mn = "CAR Documentation By Caregiver", xl = "Caregiver Group", yl = "Proportion")
test <- table(dat$CG_DESCRIPTION, dat$CAR.machine)
test
##
## 0 1
## Attending 2753 793
## Resident/Fellow/PA/NP 4855 2703
chisq.test(test)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: test
## X-squared = 200.29, df = 1, p-value < 2.2e-16
pairwiseNominalIndependence(
as.matrix(test),
fisher = F, gtest = F, chisq = T, method = "fdr")
## Comparison p.Chisq p.adj.Chisq
## 1 Attending : Resident/Fellow/PA/NP 1.8e-45 1.8e-45
plotDat(dat, "COD.machine", "CG_DESCRIPTION", bs = F, mn = "COD Documentation By Caregiver", xl = "Caregiver Group", yl = "Proportion")
test <- table(dat$CG_DESCRIPTION, dat$COD.machine)
test
##
## 0 1
## Attending 1313 2233
## Resident/Fellow/PA/NP 2638 4920
chisq.test(test)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: test
## X-squared = 4.6593, df = 1, p-value = 0.03089
pairwiseNominalIndependence(
as.matrix(test),
fisher = F, gtest = F, chisq = T, method = "fdr")
## Comparison p.Chisq p.adj.Chisq
## 1 Attending : Resident/Fellow/PA/NP 0.0309 0.0309
plotDat(dat, "FAM.machine", "FIRST_CAREUNIT", bs = F, mn = "FAM Documentation By First ICU", xl = "FIRST ICU", yl = "Proportion")
test <- table(dat$FIRST_CAREUNIT, dat$FAM.machine)
test
##
## 0 1
## CCU 1050 493
## CSRU 287 71
## MICU 5084 2283
## SICU 853 282
## TSICU 504 197
chisq.test(test)
##
## Pearson's Chi-squared test
##
## data: test
## X-squared = 39.438, df = 4, p-value = 5.655e-08
pairwiseNominalIndependence(
as.matrix(test),
fisher = F, gtest = F, chisq = T, method = "fdr")
## Comparison p.Chisq p.adj.Chisq
## 1 CCU : CSRU 8.27e-06 4.94e-05
## 2 CCU : MICU 4.77e-01 4.77e-01
## 3 CCU : SICU 7.39e-05 1.85e-04
## 4 CCU : TSICU 7.48e-02 1.07e-01
## 5 CSRU : MICU 9.87e-06 4.94e-05
## 6 CSRU : SICU 6.08e-02 1.01e-01
## 7 CSRU : TSICU 4.32e-03 8.64e-03
## 8 MICU : SICU 3.14e-05 1.05e-04
## 9 MICU : TSICU 1.24e-01 1.51e-01
## 10 SICU : TSICU 1.36e-01 1.51e-01
plotDat(dat, "CIM.machine", "FIRST_CAREUNIT", bs = F, mn = "CIM Documentation By First ICU", xl = "FIRST ICU", yl = "Proportion")
test <- table(dat$FIRST_CAREUNIT, dat$CIM.machine)
test
##
## 0 1
## CCU 988 555
## CSRU 290 68
## MICU 4200 3167
## SICU 719 416
## TSICU 444 257
chisq.test(test)
##
## Pearson's Chi-squared test
##
## data: test
## X-squared = 111.89, df = 4, p-value < 2.2e-16
pairwiseNominalIndependence(
as.matrix(test),
fisher = F, gtest = F, chisq = T, method = "fdr")
## Comparison p.Chisq p.adj.Chisq
## 1 CCU : CSRU 1.05e-09 3.50e-09
## 2 CCU : MICU 4.29e-07 8.58e-07
## 3 CCU : SICU 7.47e-01 8.76e-01
## 4 CCU : TSICU 7.88e-01 8.76e-01
## 5 CSRU : MICU 4.20e-19 4.20e-18
## 6 CSRU : SICU 7.33e-10 3.50e-09
## 7 CSRU : TSICU 5.66e-09 1.42e-08
## 8 MICU : SICU 6.54e-05 1.09e-04
## 9 MICU : TSICU 1.38e-03 1.97e-03
## 10 SICU : TSICU 1.00e+00 1.00e+00
plotDat(dat, "CIM_post.machine", "FIRST_CAREUNIT", bs = F, mn = "CIM_post Documentation By Caregiver", xl = "Caregiver Group", yl = "Proportion")
test <- table(dat$FIRST_CAREUNIT, dat$CIM_post.machine)
test
##
## 0 1
## CCU 819 724
## CSRU 273 85
## MICU 3662 3705
## SICU 682 453
## TSICU 409 292
chisq.test(test)
##
## Pearson's Chi-squared test
##
## data: test
## X-squared = 140.02, df = 4, p-value < 2.2e-16
pairwiseNominalIndependence(
as.matrix(test),
fisher = F, gtest = F, chisq = T, method = "fdr")
## Comparison p.Chisq p.adj.Chisq
## 1 CCU : CSRU 2.16e-15 1.08e-14
## 2 CCU : MICU 1.73e-02 2.16e-02
## 3 CCU : SICU 3.54e-04 5.06e-04
## 4 CCU : TSICU 2.28e-02 2.53e-02
## 5 CSRU : MICU 1.69e-22 1.69e-21
## 6 CSRU : SICU 3.96e-08 7.92e-08
## 7 CSRU : TSICU 1.26e-08 3.15e-08
## 8 MICU : SICU 9.17e-11 3.06e-10
## 9 MICU : TSICU 1.48e-05 2.47e-05
## 10 SICU : TSICU 4.90e-01 4.90e-01
plotDat(dat, "LIM.machine", "FIRST_CAREUNIT", bs = F, mn = "LIM Documentation By First ICU", xl = "FIRST ICU", yl = "Proportion")
test <- table(dat$FIRST_CAREUNIT, dat$LIM.machine)
test
##
## 0 1
## CCU 1117 426
## CSRU 302 56
## MICU 4726 2641
## SICU 777 358
## TSICU 461 240
chisq.test(test)
##
## Pearson's Chi-squared test
##
## data: test
## X-squared = 95.643, df = 4, p-value < 2.2e-16
pairwiseNominalIndependence(
as.matrix(test),
fisher = F, gtest = F, chisq = T, method = "fdr")
## Comparison p.Chisq p.adj.Chisq
## 1 CCU : CSRU 3.81e-06 7.62e-06
## 2 CCU : MICU 7.02e-10 2.34e-09
## 3 CCU : SICU 3.02e-02 3.78e-02
## 4 CCU : TSICU 1.72e-03 2.87e-03
## 5 CSRU : MICU 7.51e-15 7.51e-14
## 6 CSRU : SICU 6.98e-09 1.74e-08
## 7 CSRU : TSICU 2.86e-10 1.43e-09
## 8 MICU : SICU 5.21e-03 7.44e-03
## 9 MICU : TSICU 4.18e-01 4.18e-01
## 10 SICU : TSICU 2.52e-01 2.80e-01
plotDat(dat, "CAR.machine", "FIRST_CAREUNIT", bs = F, mn = "CAR Documentation By First ICU", xl = "FIRST ICU", yl = "Proportion")
test <- table(dat$FIRST_CAREUNIT, dat$CAR.machine)
test
##
## 0 1
## CCU 952 591
## CSRU 292 66
## MICU 4934 2433
## SICU 873 262
## TSICU 557 144
chisq.test(test)
##
## Pearson's Chi-squared test
##
## data: test
## X-squared = 145.66, df = 4, p-value < 2.2e-16
pairwiseNominalIndependence(
as.matrix(test),
fisher = F, gtest = F, chisq = T, method = "fdr")
## Comparison p.Chisq p.adj.Chisq
## 1 CCU : CSRU 1.67e-12 5.57e-12
## 2 CCU : MICU 7.80e-05 1.11e-04
## 3 CCU : SICU 9.48e-17 7.30e-16
## 4 CCU : TSICU 1.46e-16 7.30e-16
## 5 CSRU : MICU 1.16e-08 1.93e-08
## 6 CSRU : SICU 7.53e-02 9.41e-02
## 7 CSRU : TSICU 4.64e-01 4.64e-01
## 8 MICU : SICU 2.62e-11 5.24e-11
## 9 MICU : TSICU 1.68e-11 4.20e-11
## 10 SICU : TSICU 2.24e-01 2.49e-01
plotDat(dat, "COD.machine", "FIRST_CAREUNIT", bs = F, mn = "COD Documentation By Caregiver", xl = "FIRST ICU", yl = "Proportion")
test <- table(dat$FIRST_CAREUNIT, dat$COD.machine)
test
##
## 0 1
## CCU 474 1069
## CSRU 114 244
## MICU 2667 4700
## SICU 428 707
## TSICU 268 433
chisq.test(test)
##
## Pearson's Chi-squared test
##
## data: test
## X-squared = 23.723, df = 4, p-value = 9.078e-05
pairwiseNominalIndependence(
as.matrix(test),
fisher = F, gtest = F, chisq = T, method = "fdr")
## Comparison p.Chisq p.adj.Chisq
## 1 CCU : CSRU 7.25e-01 0.806000
## 2 CCU : MICU 4.71e-05 0.000471
## 3 CCU : SICU 1.84e-04 0.000920
## 4 CCU : TSICU 5.46e-04 0.001820
## 5 CSRU : MICU 1.05e-01 0.175000
## 6 CSRU : SICU 5.13e-02 0.103000
## 7 CSRU : TSICU 4.77e-02 0.103000
## 8 MICU : SICU 3.42e-01 0.428000
## 9 MICU : TSICU 3.05e-01 0.428000
## 10 SICU : TSICU 8.62e-01 0.862000