如何将 ICD9 和 ICD10 代码列表转换为 R 中的含义(英文名称)?

Posted

技术标签:

【中文标题】如何将 ICD9 和 ICD10 代码列表转换为 R 中的含义(英文名称)?【英文标题】:How to convert a list of ICD9 and ICD10 codes into their meaning (English names) in R? 【发布时间】:2020-08-24 22:00:35 【问题描述】:

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

706.2

L81.0

D23.5

782

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

皮脂腺囊肿

不适用

不适用

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

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

建议?

【问题讨论】:

分成两列,一列都是ICD9,另一列是ICD10,然后翻译两个,然后再合并? 使用dput(data)发布一些数据 【参考方案1】:

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

【讨论】:

【参考方案2】:

这来晚了,但您可以使用他们的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"))
  )

【讨论】:

以上是关于如何将 ICD9 和 ICD10 代码列表转换为 R 中的含义(英文名称)?的主要内容,如果未能解决你的问题,请参考以下文章

查找(ICD9 代码)并将括号替换为 |

从 ICD9 码预测 RxNorm 码的卷积网络有意义吗?

访问将通配符值与表进行比较

寻找 ICD10 API [关闭]

R:使用 ICD-9 包创建 IC9 代码描述变量

将 ICD-10 代码 xml 文件导入数据库