如何在R中的回归模型中使用ICD10代码?

时间:2019-04-01 07:26:11

标签: r icd

我正在尝试查找导致某些疾病的ICD10代码。但是ICD10具有字母数字分类,例如A00.00。这样的分类有数千种,但是我不确定如何在回归模型中使用它们。请提出任何建议。

数据 患者已有ICD10糖尿病(Y) P1 A00.10 1 P2 A00.20 0 P1 C00.1 1 P3 Z01 1 ....

3 个答案:

答案 0 :(得分:0)

您可能希望对具有一个或多个层的变量中的ICD10进行解码。一种方法可能是生成水平为0(无疾病)和1(疾病)的dat $ diabates变量。一种方法可能是使用grepl。顺便说一下,ICD10码中的糖尿病常见模式是E08(请检查http://eicd10.com/index.php?srchtext=diabetes&Submit=Search&action=search),而A00是霍乱。

dat$diabates <- as.integer(grepl(pattern = "E08", x = dat$ICD10))
###Add to pattern a common pattern in ICD 10 code
as.numeric(as.character(dat$diabetes))->dat$diabetes

如果您有几种不同的模式(针对每种模式重复该过程),则可能会生成新变量并将其合并。 例如:

dat$diabetes_final<-0 
dat$diabetes_final[which(dat$diabetes1 ==1 | dat$diabetes2==1)]<-1

答案 1 :(得分:0)

我建议将“健康”设置为包含诊断的因子变量的参考水平,因为这将为您提供系数,显示当您比较健康患者与患有某种疾病的患者时因变量的变化。当然,您可以按照Jean-Claude Arbaut的建议将疾病归类。

这可能看起来像这样:

# your vector with the diagnosis
diagnosis <- c("healthy", "P1 A00.10 1", "P2 A00.20 0", "P1 C00.1 1", "P3 Z01 1")

# grouping your vector. I have no idea about ICD10 groups, so this is only to show how this would work in R
diagnosis[diagnosis %in% c("P1 A00.10 1", "P2 A00.20 0")] <- "diabetes"
diagnosis[diagnosis %in% c("P1 C00.1 1", "P3 Z01 1")] <- "cancer"

# make the vector a factor with healthy as the reference
diagnosis <- factor(diagnosis)
diagnosis <- relevel(diagnosis, ref = "healthy")

# now you can use the variable in a regression
set.seed(1) # making it reproducible
dv <- rnorm(length(diagnosis)) # generating a dependent variable
summary(lm(dv ~ diagnosis)) # linear regression

# the coeficients look like this
...
Coefficients:
              Estimate Std. Error t value Pr(>|t|)
(Intercept)        -0.6265     0.8126  -0.771    0.521
diagnosiscancer     1.5888     0.9952   1.597    0.251
diagnosisdiabetes   0.3005     0.9952   0.302    0.791
...

答案 2 :(得分:0)

一种有效的方法是使用合并症。我的R软件包icd用于标准化疾病集,例如“糖尿病”,“癌症”,“心脏病”。合并症图有多种选择,因此您可以选择与您的兴趣相符的一种,例如icd中的PCCC地图可用于儿科,其他的则用于成年人,并涵盖多种疾病状态。

例如,如introduction vignette中所述。这些实际上是ICD-9代码,但是您可以使用ICD-10。

patients <- data.frame(
   visit_id = c(1000, 1000, 1000, 1000, 1001, 1001, 1002),
   icd9 = c("40201", "2258", "7208", "25001", "34400", "4011", "4011"),
   poa = c("Y", NA, "N", "Y", "X", "Y", "E"),
   stringsAsFactors = FALSE
   )
patients
  visit_id  icd9  poa
1     1000 40201    Y
2     1000  2258 <NA>
3     1000  7208    N
4     1000 25001    Y
5     1001 34400    X
6     1001  4011    Y
7     1002  4011    E
icd::comorbid_ahrq(patients)
CHF Valvular  PHTN   PVD  HTN Paralysis NeuroOther Pulmonary    DM  DMcx Hypothyroid Renal Liver
1000  TRUE    FALSE FALSE FALSE TRUE     FALSE      FALSE     FALSE  TRUE FALSE       FALSE FALSE FALSE
1001 FALSE    FALSE FALSE FALSE TRUE      TRUE      FALSE     FALSE FALSE FALSE       FALSE FALSE FALSE
1002 FALSE    FALSE FALSE FALSE TRUE     FALSE      FALSE     FALSE FALSE FALSE       FALSE FALSE FALSE
       PUD   HIV Lymphoma  Mets Tumor Rheumatic Coagulopathy Obesity WeightLoss FluidsLytes BloodLoss
1000 FALSE FALSE    FALSE FALSE FALSE      TRUE        FALSE   FALSE      FALSE       FALSE     FALSE
1001 FALSE FALSE    FALSE FALSE FALSE     FALSE        FALSE   FALSE      FALSE       FALSE     FALSE
1002 FALSE FALSE    FALSE FALSE FALSE     FALSE        FALSE   FALSE      FALSE       FALSE     FALSE
     Anemia Alcohol Drugs Psychoses Depression
1000  FALSE   FALSE FALSE     FALSE      FALSE
1001  FALSE   FALSE FALSE     FALSE      FALSE
1002  FALSE   FALSE FALSE     FALSE      FALSE

“ DM”是糖尿病,“ DMcx”是具有并发症,例如视网膜病或肾衰竭的糖尿病。这是美国AHRQ对标准Elixhauser类别的修改。

当您具有疾病状态的二进制标记时,可以在任何统计或机器学习模型中使用它们。