SRU {ems} | R Documentation |
SRU
calculates the standardized resource use for ICUs (Intensive Care Units) from information regarding individual patients admissions. The resource use is represented by the patients' length of stay (LOS). Therefore the SRU for each unit is defined as the observed LOS divided by the expected LOS for each ICU. To estimate the expected LOS for each ICU one must define a severity score, here defined by the SAPS 3 score. In theory, the 'score' could be any score/probability estimating death for each ICU admission.
The plot.SRU
function will return a SMR
versus SRU scatter plot with its medians and tertiles. Thus, it classifies each unit in the quadrants formed by these two medians: most efficient (ME) is the lower left quadrant (SRU and SMR below the median); least efficient (LE) is the upper right quadrant (SRU and SMR above the median); and least achieving (LA) - the lower right quadrant (SRU below and SMR above the median); and over achieving (OA) - the upper left quadrant (SRU above and SMR below the median).
print.SRU
Prints a object of class 'SRU'.
cut_in
is used to find limits to define severity classes which are used in SRU
function. The severity classes are necessary to calculate average days to produce one survivor and consequently to estimate the expected LOS in each ICU. Its rationale is to find the severity classes limits that yelds a desired average days of survivors. At some point in time, we made a study to test if different arrangements of the severity classes would yeld different classifications in the efficiency quadrants. Despite this study did not show any difference from the original approach, we left the function in the package. Therefore, any arbitrary severity classes should yeild the same results.
SRUcalc
is a simpler function to estimte SRU and returns, for each unit, the SRU value, the observed and expected number of deaths, and the observed and expected LOS.
SRU(prob, death, unit, los, los.exp, class, score, plot = FALSE, type = 1, digits = 2, digits2 = 5, originals = FALSE, myunits = NULL) ## S3 method for class 'SRU' print(x, ...) ## S3 method for class 'SRU' plot(x, ..., xlim = range(x$rates[, 2]), ylim = range(x$rates[, 1]), xlab = "SMR", ylab = "SRU", points.arg = list(pch = 21, col = "white", bg = "cadetblue3", cex = 1.5), med.arg = list(col = "dodgerblue4", lwd = 2, lty = 1), tert.arg = list(col = "darkorange2", lty = 2, lwd = 1), auto.legend = TRUE, leg.arg = list(x = "top", bty = "n", xpd = NA, inset = -0.2, ncol = 2), bty = "n", myunits = x$myunits, myunitspts.arg = list(pch = 21, col = "white", bg = "red", cex = 1.5), myunitstext.arg = list(pos = 1, font = 2, cex = 0.8)) cut_in(score, los, death, unit, days, min = 200, exc.ICU = TRUE, complete = FALSE, digits = 5) SRUcalc(prob, death, unit, los, score, digits = 2)
prob |
Individual predicted death (ranging from 0 to 1) in a vector. |
death |
Observed death. Accepted values are 0 (absence) or 1 (presence) in a vector. |
unit |
A character or factor variable indicating the ICU where the patient is admitted. |
los |
A numeric variable indicating the observed length of stay for each patient. |
los.exp |
Estimated length of stay (LOS). This argument is optional and will be required only if |
class |
A factor variable indicating the class of severity score (e.g. SAPS 3). In the case of SAPS 3, this is a cut in the SAPS 3 score grouping patients into severity classes. This will be required if the argument |
score |
A numeric vector with the Acute Physiology Score (SAPS) 3 score for each admission. The function will use this argument to know to wich severity class each patient will assigned to. It's used only when |
plot |
Logical; If |
type |
Way to calculate SRU. If |
digits, digits2 |
Integer indicating the number of decimals to be used in the output. |
originals |
Logical; If |
myunits |
A character vector with the unit names which one would like to benchmark among all units. These units will be highlighted with dots of different collors in the plot. Default is |
x |
For |
... |
Arguments to be passed to |
xlim, ylim |
Limits of x and y axis for |
xlab, ylab |
Labels of x and y axis for |
points.arg |
List of arguments passed to |
med.arg |
List of arguments passed to |
tert.arg |
List of arguments passed to |
auto.legend |
Logical; If |
leg.arg |
List of arguments passed to |
bty |
A character string which determined the type of box which is drawn about plots. See |
myunitspts.arg |
List of arguments passed to |
myunitstext.arg |
List of arguments passed to |
days |
For |
min |
For |
exc.ICU |
Logical; For |
complete |
Logical; For |
Two tables: one with information about severity classes and the respective quantities required to estimate the expected LOS, and another with information about ICUs classified as Most Efficient (ME) or Least Efficient (LE).
Sev
Severity class.
Total
Total of patients.
Surv
Total of survivors.
Total.LOS
Total length of stay (days).
AvDays
Average days to produce a survivor.
N.Unit
Quantity of ICUs.
N.Pat
Quantity of patients.
SMR
Standardized Mortality Ratio Mean (standard deviation).
SRU
Standardized Resource Use Mean (standard deviation).
Most Efficient ICUs have SRU, SMR < median. Least Efficient ICUs have SRU, SMR > median.
cut_in
returns a vector with the limits to cut the severity score.
SRUcalc
returns a table with:
Unit
ICUs names.
SMR or SRU
Standardized Rate.
N
Number of subjects analyzed.
Observed
Observed number of deaths.
Expected
Expected number of deaths.
LOS_esp
Expected length of stay.
Lunna Borges and Pedro Brasil
Rothen HU, Stricker K, Einfalt J, Bauer P, Metnitz PGH, Moreno RP, Takala J (2007) Variability in outcome and resource use in intensive care units. Intensive Care Med 33:1329-1336
# Loading the dataset data(icu) # Removing data with inapropriate values and some editing icu <- icu[-which(icu$los < 0 ),] icu$Saps3DeathProbabilityStandardEquation <- icu$Saps3DeathProbabilityStandardEquation / 100 # Setting classes acording to limits of SAPS 3 score days <- seq(1,100) cut_lims <- cut_in(icu$Saps3Points, icu$los, icu$UnitDischargeName, icu$Unit, days, exc.ICU = TRUE) icu$class <- cut(icu$Saps3Points, breaks = cut_lims, include.lowest = TRUE) # Estimating the SRU benchmarking myunit A and B x <- SRU(prob = icu$Saps3DeathProbabilityStandardEquation, death = icu$UnitDischargeName, unit = icu$Unit, los = icu$los, score = icu$Saps3Points, originals = TRUE, type = 1, plot = FALSE, myunits = c("A","B")) x plot(x) # To see the units rankings and individual SMR and SRU, ordering by its SRU x$rates[order(x$rates$sru),] # SRU with diferent severity classes created by cut_in function y <- SRU(prob = icu$Saps3DeathProbabilityStandardEquation, death = icu$UnitDischargeName, unit = icu$Unit, los = icu$los, score = icu$Saps3Points, originals = FALSE, type = 1, plot = FALSE, class = icu$class) y # Using SRUcalc SRUcalc(prob = icu$Saps3DeathProbabilityStandardEquation, death = icu$UnitDischargeName, unit = icu$Unit, los = icu$los, score = icu$Saps3Points) rm(x, y, days, icu, cut_lims)