A R package for calculating comorbidity indexes (i.e. Charlson Comorbidity Index, Elixhauser Comorbidity Index, and C3 Index) for epidemiologists.
install.packages("devtools")
devtools::install_github("caimiao0714/MiaoCom@miao")
# The master branch is just a initialized branch. The miao branch is the branch that I really work on.
library(MiaoCom)
cci()
is a function that calculates Charlson Comorbidity Index for patients. The ICD-10 coding algorithms for defining comorbidities refers to Hude Quan's paper in 2005. This function returns two Charlson Comorbidity Indexes:
eci()
is a function that calculates Elixhauser Comorbidity Index for patients. The ICD-10 coding algorithms for defining comorbidities also refers to Hude Quan's paper in 2005.
c3()
is a function that calculates C3 Index specifically for cancer patientsnew_data <- cci(data, comorbidity, age)
new_data <- eci(data, comorbidity)
new_data <- c3(data, comorbidity)
data
is a data.frame or alike objects from which you want to calculate comorbidity indexed from.comorbidity
is a vector of the variable names of patients' comorbidity ICD-10 codings in the data. For example, c("comorbidity1", "comorbidity2","comorbidity3","comorbidity4","comorbidity5")
.age
is the variable name of the age of the patients in your data, the name should be surrounded by single or double quotes (i.e. '
, "
).Step 1: Construct a demo dataframe.
demo_data <- data.frame(
comorbidityICD1 = c("I25.105", "I50.907", "I25.903", "I50.907", "I50.907", "I25.903",
"I50.907", "I50.910", "I25.105", "I25.903"),
comorbidityICD2 = c("I25.210", "I25.903", "I50.908", "J44.103", "I10.003", "I50.907",
"K21.001", "J44.101", "I25.203", "I50.907"),
comorbidityICD3 = c("I51.709", "K27.906", "E11.732", "I10.005", "E11.901", "E78.501",
"Z98.8123", "E11.901", "I50.908", "E11.901"),
comorbidityICD4 = c("I49.904", "I10.005", "J44.101", "K73.901", "I63.902", "J98.402",
"B18.106", "E11.221", "E11.423", "E11.2211"),
comorbidityICD5 = c("I45.101", "E11.901", "J96.903", "K70.301", "K76.811", "K72.901",
"K74.602", "I15.002", "J44.003", "N18.916"),
patient_age = c(72, 66, 81, 86, 75, 33, 63, 70, 71, 47)
)
Step 2: Apply
cci()
function to the demo data
newdata1 <- cci(data = demo_data, comorbidity = c("comorbidityICD1", "comorbidityICD2",
"comorbidityICD3", "comorbidityICD4", "comorbidityICD5"), age = "patient_age")
The generated newdata1
data.frame includes multiple new columns. The CCI_1987
and CCI_2011
columns deserve your special attention.
CCI_1987
is the 1987 version CCI developed by Mary E. Charlson;CCI_2011
is the 2011 updated version CCI by Hude Quan.Step 3: Apply
eci()
function to the demo data
newdata2 <- eci(data = demo_data, comorbidity = c("comorbidityICD1", "comorbidityICD2",
"comorbidityICD3", "comorbidityICD4", "comorbidityICD5"))
The generated newdata2
data.frame includes multiple new columns. The Elix_Index
is your desired Elixhauser Comorbidity Index.
Step 4: Apply
c3()
function to the demo data
newdata3 <- c3(data = demo_data, comorbidity = c("comorbidityICD1", "comorbidityICD2",
"comorbidityICD3", "comorbidityICD4", "comorbidityICD5"))
The generated newdata3
data.frame includes multiple new columns. The C3
is your desired C3 Index. Please note that the C3 index is developed specifically for cancer patients. This is just a demonstration of the c3()
function.
Note that CCI includes patient age as a variable for calculating the index. However, patient age is not included in calculating Elixhauser Comorbidity Index and C3 Index.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.