0

我有一个 ICD9 和 ICD10 代码列表,如下所示:

706.2

L81.0

D23.5

782

我想将这些解码为英文(疾病的实际名称)。我想在 R 中使用 ICD 包,尤其是“explain_table()”函数,但它只解码 ICD9 代码或 ICD10 代码。不是两个同时。我得到这个:

皮脂腺囊肿

不适用

不适用

涉及皮肤和其他外皮组织的症状

似乎列表中第一个元素的 ICD 代码类型将决定将翻译哪种代码。在我的示例中,第一个是 ICD9 代码,因此只有 ICD9 代码被翻译。中间的两个ICD10代码不是。

建议?

4

2 回答 2

0

您是否也有任何给定代码是 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 仅作为后备。

于 2020-08-25T04:24:15.550 回答
0

这来晚了,但您可以使用icdcoder他们的repo中的库。

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"))
  )
于 2021-06-03T05:10:21.387 回答