Translate ICD-9 to Injury Severity Score. This is rewritten from STATA into R package based on ICDPIC. The reference was seen here: https://ideas.repec.org/c/boc/bocode/s457028.html. The dictionary of mapping ICD9 to body region and severity score were also downloaded from ICDPIC.
Function injury_score
requires the input dataset has at
least two variables. One is patient id and the other is the icd9 code.
The icd9 code must be character. The icd9 code could be
with or without dot and is indicated through has_dot
parameter. ## Output Output dataset will use the patient id as the
primary key and contains variable iss
which is the injury
severity score. For the definition of injury severity score, go to
https://en.wikipedia.org/wiki/Injury_Severity_Score. Other variables
br1-br6
are the maximum score for each body region.
9
indicated unknown score and 0
indicated no
valid injury code under that body region. And max1-max3 are the top 3
scores out of all.
A score of 99 for iss
indicates that
valid injury ICD-9 exists but none had known injury score. ## Example 1
(ICD code with dot) 1. If you don’t have the package, install through
one of the following: *
install.packages('InjurySeverityScore')
*
install.packages("devtools"); devtools::install_github("dajuntian/InjurySeverityScore")
2. Generate sample dataset
<- c(2,2,2,2,2,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1)
pat_id <- c('874.2', '874.8', '900.81', '900.82', '900.89', '805.06',
icd9 'E966', '805.07', 'V14.0', '807.02', 'V70.4', '821.01', '823.20',
'860.0', '861.01', '861.21', '861.22', '863.84', '864.04', '865.04',
'865.09', '866.02', '868.04', '958.4')
<- data.frame(subj = pat_id, code = icd9, stringsAsFactors = FALSE) sample_data
library(InjurySeverityScore)
::injury_score #see help
?InjurySeverityScoreinjury_score(sample_data, subj, code, has_dot = T)
<- c(2,2,2,2,2,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1)
pat_id <- c('8742', '8748', '90081', '90082', '90089', '80506',
icd9 'E966', '80507', 'V140', '80702', 'V704', '82101', '82320',
'8600', '86101', '86121', '86122', '86384', '86404', '86504',
'86509', '86602', '86804', '9584')
<- data.frame(subj = pat_id, code = icd9, stringsAsFactors = FALSE)
sample_data injury_score(sample_data, subj, code, has_dot = F)
# subj br_1 br_2 br_3 br_4 br_5 br_6 max_1 max_2 max_3 iss
#1 2 3 0 0 0 0 1 3 1 0 10
#2 1 2 0 3 5 3 0 5 3 3 43
<- data.frame(pid = c(1,2), diag1 = c('900.89', '805.06'),
data2 diag2 = c('863.84', '865.04'),stringsAsFactors = FALSE)
# pid diag1 diag2
#1 1 900.89 863.84
#2 2 805.06 865.04
injury_score(data2, pid, diag, tall = FALSE)