R/attach_CCI.R

Defines functions attach_CCI

Documented in attach_CCI

#' Charlson Comorbidity Index
#'
#'
#' @param data data
#' @param years years
#' @param Year logical
#'
#' @return Charlson Comorbidity Index
#' @export
#'
attach_CCI <- function(data,years,
                       Year=FALSE){

    diabetes=1
    diabetes_retinopathy=2
    Kidney_failure=2
    Kidney_stones=2
    heart_failure=1
    stroke=1
    liver_disease=2
    arthritis=1
    bladder_cancer=2
    bone_cancer=2
    brain_cancer=2
    breast_cancer=2
    cervical_cancer=2
    colon_cancer=2
    esophageal_cancer=2
    gallbladder_cancer=2
    kidney_cancer=2
    Tracheal_carcinoma=2
    leukemia=2
    liver_cancer=2
    lung_cancer=2
    lymphoma=2
    melanoma=2
    oral_cancer=2
    never_cancer=2
    ovarian_cancer=2
    pancreatic_cancer=2
    prostate_cancer=2
    rectal_cancer=2
    skin_cancer=2
    unknown_skin_cancer=2
    soft_tissue_cancer=2
    stomach_cancer=2
    testicular_cancer=2
    thyroid_cancer=2
    uterine_cancer=2
    other_cancer=2

    years <- data_years(data,years)
    diq <- nhs_tsv('diq',years=years,cat=FALSE)
    kiq <- nhs_tsv('kiq','!~kiq_p',years=years,cat=FALSE)
    mcq <- nhs_tsv('mcq',years=years,cat=FALSE)
    spx <- nhs_tsv('spx',years=years,cat=FALSE)
    d <- nhs_read(
        diq,'diq080:diabetes_retinopathy',
        kiq,
        'kiq020,kiq022:Kidney_failure',
        'kiq026:Kidney_stones',
        mcq,
        'mcq160b:heart_failure',
        'mcq160f:stroke',
        'mcq160l:liver_disease',
        'mcq500:liver_disease.1',
        'mcq160a:arthritis',

        'mcq240a:bladder_cancer',
        'mcq240c:bone_cancer',
        'mcq240d:brain_cancer',
        'mcq240e:breast_cancer',
        'mcq240f:cervical_cancer',
        'mcq240g:colon_cancer',
        'mcq240h:esophageal_cancer',
        'mcq240i:gallbladder_cancer',
        'mcq240j:kidney_cancer',
        'mcq240k:Tracheal_carcinoma',
        'mcq240l:leukemia',
        'mcq240m:liver_cancer',
        'mcq240n:lung_cancer',
        'mcq240o:lymphoma',
        'mcq240p:melanoma',
        'mcq240q:oral_cancer',
        'mcq240r:never_cancer',
        'mcq240s:ovarian_cancer',
        'mcq240t:pancreatic_cancer',
        'mcq240u:prostate_cancer',
        'mcq240v:rectal_cancer',
        'mcq240w:skin_cancer',
        'mcq240x:unknown_skin_cancer',
        'mcq240y:soft_tissue_cancer',
        'mcq240z:stomach_cancer',
        'mcq240aa:testicular_cancer',
        'mcq240bb:thyroid_cancer',
        'mcq240cc:uterine_cancer',
        'mcq240dd:other_cancer',

        spx, 'spq070d:stroke.1',
        lower_cd = TRUE,years=years,cat=FALSE)

    d[is.na(d)] <- 0
    d <- to_NA(d)

    d <- attach_DM(d)
    colnames(d)[colnames(d)=='DM'] <- 'diabetes'
    d$diabetes <- ifelse(grepl('dm',d$diabetes,TRUE),'yes','no')
    if ('liver_disease.1' %in% colnames(d) &
        'liver_disease' %in% colnames(d)){
        d$liver_disease[is.na(d$liver_disease)] <- d$liver_disease.1[is.na(d$liver_disease)]
    }
    if ('stroke.1' %in% colnames(d) &
        'stroke' %in% colnames(d)) {
        d$stroke[d$stroke.1>0] <- 'yes'
    }
    d <- drop_col(d,'liver_disease.1','stroke.1')

    disease <- c("diabetes","diabetes_retinopathy", "Kidney_failure",
                 "Kidney_stones", "heart_failure", "stroke",
                 "liver_disease",
                 "arthritis")
    for (i in disease) {
        if (i %in% colnames(d)){
            eval(parse(text=sprintf('d[,i] <- ifelse(d[,i] %s c(1,"yes","1") ,%s,0)','%in%',i)))
        }
    }

    cancer <- c('bladder_cancer','bone_cancer','brain_cancer','breast_cancer',
                'cervical_cancer','colon_cancer','esophageal_cancer','gallbladder_cancer',
                'kidney_cancer','Tracheal_carcinoma','leukemia','liver_cancer',
                'lung_cancer','lymphoma','melanoma','oral_cancer','never_cancer','ovarian_cancer','pancreatic_cancer',
                'prostate_cancer','rectal_cancer','skin_cancer','unknown_skin_cancer',
                'soft_tissue_cancer','stomach_cancer','testicular_cancer','thyroid_cancer',
                'uterine_cancer','other_cancer')
    for (i in cancer) {
        if (i %in% colnames(d)){
            d[,i] <- as.numeric(do::Replace0(d[,i],' .*'))
            eval(parse(text=sprintf('d[,i] <- ifelse(d[,i] >0,%s,0)',i)))
        }
    }
    d$CCI <- rowSums(d[,-c(1,2)],na.rm = TRUE)
    d <- d[,c("seqn","Year","CCI")]

    attach_return_data(data,d,Year,'seqn')

}
yikeshu0611/nhanesR documentation built on Jan. 29, 2022, 6:08 a.m.