Charlson score is calculated in the basis of the Quan revision of Deyo's ICD-9 mapping. (Peptic ulcer disease no longer warrants a point.) Quan published an updated set of scores, but it seems most people use the original scores for easier comparison between studies, even though Quan's were more predictive.

charlson(x, visit_name = NULL, scoring_system = c("original",
  "charlson", "quan"), return_df = FALSE,
  stringsAsFactors = getOption("stringsAsFactors"), ...)

# S3 method for data.frame
charlson(x, visit_name = NULL,
  scoring_system = c("original", "charlson", "quan"),
  return_df = FALSE, stringsAsFactors = getOption("stringsAsFactors"),
  ...)

Arguments

x

data frame containing a column of visit or patient identifiers, and a column of ICD-9 codes. It may have other columns which will be ignored. By default, the first column is the patient identifier and is not counted. If visit_name is not specified, the first column is used.

visit_name

The name of the column in the data frame which contains the patient or visit identifier. Typically this is the visit identifier, since patients come leave and enter hospital with different ICD-9 codes. It is a character vector of length one. If left empty, or NULL, then an attempt is made to guess which field has the ID for the patient encounter (not a patient ID, although this can of course be specified directly). The guesses proceed until a single match is made. Data frames may be wide with many matching fields, so to avoid false positives, anything but a single match is rejected. If there are no successful guesses, and visit_id was not specified, then the first column of the data frame is used.

scoring_system

One of original, charlson, or quan. The first two will give the original Charlson weights for each comorbidity, whereas quan uses the updated weights from Quan 2011.

return_df

single logical value, if TRUE, a two column data frame will be returned, with the first column named as in input data frame (i.e., visit_name), containing all the visits, and the second column containing the Charlson Comorbidity Index.

stringsAsFactors

single logical, passed on when constructing data.frame if return_df is TRUE. If the input data frame x has a factor for the visit_name, this is not changed, but a non-factor visit_name may be converted or not converted according to your system default or this setting.

...

further arguments to pass on to icd9_comorbid_quan_deyo, e.g. name

Details

When used, hierarchy is applied per Quan, “The following comorbid conditions were mutually exclusive: diabetes with chronic complications and diabetes without chronic complications; mild liver disease and moderate or severe liver disease; and any malignancy and metastatic solid tumor.” The Quan scoring weights come from the 2011 paper. The comorbidity weights were recalculated using updated discharge data, and some changes, such as Myocardial Infarction decreasing from 1 to 0, may reflect improved outcomes due to advances in treatment since the original weights were determined in 1984.

Methods (by class)

  • data.frame: Charlson scores from data frame of visits and ICD-9 codes. ICD-10 Charlson can be calculated simply by getting the Charlson (e.g. Quan Deyo) comorbidities, then calling charlson_from_comorbid.

Examples

mydf <- data.frame( visit_name = c("a", "b", "c"), icd9 = c("441", "412.93", "042") ) charlson(mydf)
#> a b c #> 1 1 6
cmb <- icd9_comorbid_quan_deyo(mydf) cmb
#> MI CHF PVD Stroke Dementia Pulmonary Rheumatic PUD LiverMild DM #> a FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE #> b TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE #> c FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE #> DMcx Paralysis Renal Cancer LiverSevere Mets HIV #> a FALSE FALSE FALSE FALSE FALSE FALSE FALSE #> b FALSE FALSE FALSE FALSE FALSE FALSE FALSE #> c FALSE FALSE FALSE FALSE FALSE FALSE TRUE
# can specify short_code directly instead of guessing charlson(mydf, short_code = FALSE, return_df = TRUE)
#> visit_name Charlson #> 1 a 1 #> 2 b 1 #> 3 c 6
#> a b c #> 1 1 6