我有一个ICD9和ICD10代码列表,如下所示:
706.2
L81.0
D23.5
782
我想把它们解码成英文(到疾病的实际名称)。我想在R中使用ICD包,特别是"explain_table()“函数,但它只能解码ICD9代码或ICD10代码。而不是同时出现这两种情况。我得到了这个:
皮脂腺囊肿
不可用
不可用
涉及皮肤和其他表皮组织的症状
似乎列表中第一个元素的ICD代码的类型将决定将翻译哪种代码。在我的例子中,第一个是ICD9代码,所以只翻译了ICD9代码。中间的两个ICD10代码不是。
有什么建议吗?
发布于 2020-08-25 12:24:16
你是否也有一个指示器来指示任何给定的代码是ICD9还是ICD10?没有一种“安全”的方法可以可靠地覆盖所有可能的代码,特别是在使用短代码的情况下。例如,"E882“在ICD9是从建筑物上意外坠落,在ICD10是未分类的脂肪瘤。
Icd::explain_table()的“有帮助”的默认S3方法是检查第一个代码是否是有效的ICD10代码,如果是,则一切都是ICD10,否则一切都是ICD9。
如果你不知道任何给定的代码是ICD9还是ICD10,但是总是想要使用ICD10,如果一个代码在两个系统中都有,你可以采取如下方法:
my_icd9 <- structure(my_character_vector, class = "icd10")
my_icd10 <- structure(my_character_vector, class = "icd9")
dplyr::coalesce(
explain_table(my_icd10)$short_desc,
explain_table(my_icd9)$short_desc
)
如果存在,它将为您提供ICD10的简短描述;如果没有与字符元素匹配的ICD10代码,则仅将ICD9作为备用方法。
发布于 2021-06-03 13:10:21
这是迟来的,但你可以从他们的repo使用icdcoder
库。
library(tidyverse)
library(devtools)
devtools::install_github("wtcooper/icdcoder")
library(icdcoder)
df <- tibble("codes" = c("706.2", "L81.0", "D23.5", "782")) %>%
mutate(
codes_mod = toupper(gsub("\\.","", codes)) # Remove dots.
)
res <- df %>%
filter(codes_mod %in% icd10Hierarchy$icd10) %>% # First handle ICD10 codes.
left_join(icd10Hierarchy, by = c("codes_mod" = "icd10")) %>%
bind_rows( # Then handle and append ICD9 codes.
df %>%
filter(codes_mod %in% icd9Hierarchy$icd9) %>%
left_join(icd9Hierarchy, by = c("codes_mod" = "icd9"))
)
https://stackoverflow.com/questions/63569261
复制相似问题