SRU: Standardized Resource Use (SRU)

Description Usage Arguments Value Author(s) References See Also Examples

View source: R/SRU.R

Description

SRU calculates the standardized resource use for ICUs (Intensive Care Units) from information regarding admissions of individual patients. Resource use is represented by the patient's length of stay (LOS). Therefore the SRU for each unit is defined as the observed LOS divided by it's expected LOS. 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 that estimates 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 as: most efficient (ME) which is the lower left quadrant (both SRU and SMR below their medians); least efficient (LE) is the upper right quadrant (both SRU and SMR above their medians); and least achieving (LA) - the lower right quadrant (SRU below and SMR above their medians); and over achieving (OA) - the upper left quadrant (SRU above and SMR below their medians).

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 the average of days to produce one survivor and consequently to estimate the expected LOS in each ICU. Its rationale is to find the limits for the severity classes that yeld a desired average of days to produce one survivor. 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 the fact that this study did not show any difference from each 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.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
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)

Arguments

prob

Individual predicted probability of 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 type = 2. If the user has an alternative model to estimate the individual LOS, the predicted individual LOS should be passed to this argument. If this is the case, the predicted ICU LOS is estimated as the mean of the individual predictions of the LOS of these groups.

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 original = FALSE and NAs are not allowed; if original = TRUE, class is ignored.

score

A numeric vector with the Acute Physiology Score (SAPS) 3 score for each admission. The function will use this argument to know to which severity class each patient will be assigned to. It is used only when originals = TRUE and ignored otherwise. NAs are not allowed.

plot

Logical; If TRUE, plots a SMR versus SRU scatter plot.

type

A Way to calculate SRU. If type = 1, it does as the original article to estimate the ICU's expected LOS (default). First, it multiplies the overall average of days of each severity class by the number of survivors in the same severity class in that ICU. Than, it sums the expected LOS for each severity class in that ICU. If type = 2, the user must provide the los.exp (expected LOS) for each subject (i.e. from a prediction model), and the function will estimate the ICU's expected LOS as the mean of all individual LOS for patients in that ICU.

digits, digits2

Integer indicating the number of decimals to be used in the output.

originals

Logical; If TRUE, it uses the severity classes and average days as the original article and will override the class argument, if any. It requires the score argument and it must be the SAPS 3 score. We recommend not to set it TRUE unless you really know what you are doing. Even if one wishes to have severity classes identical to the original paper, it is better to set the severity classes before running the analysis. This way, the function will estimate the average days from the data instead of using the fixed average days from the original paper.

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 NULL.

x

For print.SRU or plot.SRU, an object of class 'SRU'.

...

Arguments to be passed to plot.default or to print.

xlim, ylim

Limits of x and y axis for plot.SRU.

xlab, ylab

Labels of x and y axis for plot.SRU.

points.arg

List of arguments passed to points for plotting points correponding to ICU's SMR and SRU.

med.arg

List of arguments passed to abline for plotting lines corresponding to SRU's and SMR's medians.

tert.arg

List of arguments passed to abline for plotting lines corresponding to SRU's and SMR's tertiles.

auto.legend

Logical; If TRUE, prints a legend with parameters in leg.arg arguments.

leg.arg

List of arguments passed to legend for plotting legends in plot.SRU.

bty

A character string which determines the type of box that is drawn about plots. See par

myunitspts.arg

List of arguments passed to points for plotting points correponding to myunits's SMR and SRU.

myunitstext.arg

List of arguments passed to text for labelling points correponding to myunits's position.

days

For cut_in, this is a vector of days to get an avarage. See example.

min

For cut_in, this is the minimum desired quantity of patients in each severity class (default = 200) to estimate the average days.

exc.ICU

Logical; For cut_in, if TRUE, ICUs without surviving patients are ignored.

complete

Logical; For cut_in, if TRUE, shows additional information about severity classes.

Value

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).

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:

Author(s)

Lunna Borges and Pedro Brasil

References

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

See Also

SMR, reclass, funnel

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 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)

ems documentation built on May 2, 2019, 3:26 p.m.