In below code, for example, if liver diseases' code exists in following columns it should be 1. Even though sometimes it is 1, sometimes it is 0 but it should be 1. For example: CASITE other columns has_livercancer C220 ......... 0
has_livercancer should be 1. Additionaly, this is not the only case. It happens all columns that I create in below.
I cannot provide any data due to privacy issues.
test_ipd <- test_ipd %>%
  group_by(ID_NO) %>%
  mutate(
    ICD9_CODE = first(ICD9_CODE),
    ICD10_CODE = first(ICD10_CODE),
    MDIAG_CODE = first(MDIAG_CODE),
    CONFIRM_MDIAG = first(CONFIRM_MDIAG),
    SDIAG_CODE = first(SDIAG_CODE),
    CASITE = first(CASITE),
    has_diabetes_byicd = ifelse(
      coalesce(str_detect(SDIAG_CODE,"^250|^E1[0-4]"),
               str_detect(ICD9_CODE, "^250|^E1[0-4]"),
               str_detect(ICD10_CODE, "^250|^E1[0-4]"),
               str_detect(MDIAG_CODE,"^250|^E1[0-4]"),
               str_detect(CONFIRM_MDIAG, "^250|^E1[0-4]")), 1, 0),
has_livercancer_byicd = ifelse(
  coalesce(str_detect(SDIAG_CODE,"^155|C220|C22.0|C22.1|C221|C222|C22.2|C22.3|C223|C224|C22.4|C22.7|C22.9|155.0"),
           str_detect(ICD9_CODE, "^155|C220|C22.0|C22.1|C221|C222|C22.2|C22.3|C223|C224|C22.4|C22.7|C22.9|155.0"),
           str_detect(ICD10_CODE,"^155|C220|C22.0|C22.1|C221|C222|C22.2|C22.3|C223|C224|C22.4|C22.7|C22.9|155.0"),
           str_detect(MDIAG_CODE,"^155|C220|C22.0|C22.1|C221|C222|C22.2|C22.3|C223|C224|C22.4|C22.7|C22.9|155.0"),
           str_detect(CONFIRM_MDIAG, "^155|C220|C22.0|C22.1|C221|C222|C22.2|C22.3|C223|C224|C22.4|C22.7|C22.9|155.0"),
           str_detect(CASITE,"155|C220|C22.0|C22.1|C221|C222|C22.2|C22.3|C223|C224|C22.4|C22.7|C22.9|155.0")), 
  1, 
  0
),
    has_chronic_hepatitis_byicd = ifelse(
      coalesce(str_detect(SDIAG_CODE,"^070\\.[23]|^B18\\.[01-2]"),
               str_detect(ICD9_CODE, "^070\\.[23]|^B18\\.[01-2]"),
               str_detect(ICD10_CODE, "^070\\.[23]|^B18\\.[01-2]"),
               str_detect(MDIAG_CODE, "^070\\.[23]|^B18\\.[01-2]"),
               str_detect(CONFIRM_MDIAG, "^070\\.[23]|^B18\\.[01-2]")), 
  1,
  0
),
    has_alcohol_liver_disease_byicd = ifelse(
      coalesce(str_detect(SDIAG_CODE, "^070\\.[23]|^B18\\.[01-2]"),
               str_detect(ICD9_CODE, "^070\\.[23]|^B18\\.[01-2]"),
               str_detect(ICD10_CODE, "^070\\.[23]|^B18\\.[01-2]"),
               str_detect(MDIAG_CODE, "^070\\.[23]|^B18\\.[01-2]"),
               str_detect(CONFIRM_MDIAG, "^571\\.0|^K70")),
      1,
      0
    ),
    has_nafld_byicd = ifelse(
      coalesce(str_detect(SDIAG_CODE,"^571\\.8|^K76\\.0"),
               str_detect(ICD9_CODE, "^571\\.8|^K76\\.0"),
               str_detect(ICD10_CODE, "^571\\.8|^K76\\.0"),
               str_detect(MDIAG_CODE, "^571\\.8|^K76\\.0"),
               str_detect(CONFIRM_MDIAG, "^571\\.8|^K76\\.0")),
      1,
      0
    ),
    has_obesity_byicd = ifelse(
      coalesce(str_detect(SDIAG_CODE, "^278\\.0|^E66"),
               str_detect(ICD9_CODE, "^278\\.0|^E66"),
               str_detect(ICD10_CODE, "^278\\.0|^E66"),
               str_detect(MDIAG_CODE, "^278\\.0|^E66"),
               str_detect(CONFIRM_MDIAG, "^278\\.0|^E66")),
      1,
      0
    ),
    has_cirrhosis_byicd = ifelse(
      coalesce(str_detect(SDIAG_CODE,"^571\\.5|K74|K74.0|K74.1|K74.2|K74.3|K74.4|K74.5|K74.6"),
               str_detect(ICD9_CODE,"^571\\.5|K74|K74.0|K74.1|K74.2|K74.3|K74.4|K74.5|K74.6"),
               str_detect(ICD10_CODE,"^571\\.5|K74|K74.0|K74.1|K74.2|K74.3|K74.4|K74.5|K74.6"),
               str_detect(MDIAG_CODE,"^571\\.5|K74|K74.0|K74.1|K74.2|K74.3|K74.4|K74.5|K74.6"),
               str_detect(CONFIRM_MDIAG, "^571\\.5|K74|K74.0|K74.1|K74.2|K74.3|K74.4|K74.5|K74.6")),
      1,
      0
    )
    )
I want consistency. If the patient's code contains that particular code, it should have that disease.
 
    