Last Ran: 2023-07-15

trim_periodcommas <- function(x){
  x<-trimws(x)
  x<-if_else(str_starts(x, "/"), substring(x, 2, str_length(x)),x)
  x<- if_else(str_ends(x, "/"), substring(x, 1, str_length(x)-1),x)
  x<-if_else(str_starts(x, "[.]"), substring(x, 2, str_length(x)),x)
  x<-if_else(str_starts(x, ","), substring(x, 2, str_length(x)),x)
  x<-trimws(x)
  x<-if_else(str_ends(x, "[.]"), substring(x, 1, str_length(x)-1),x)
  x<- if_else(str_ends(x, ","), substring(x, 1, str_length(x)-1),x)
  x<- if_else(str_ends(x, ";"), substring(x, 1, str_length(x)-1),x)
  trimws(x)
}

missing_dat<-function(x) {
  x<-if_else(is.na(x), "", x)
return(x)
  
}

pvalue <- function(x, ...) {
    # Construct vectors of data y, and groups (strata) g
    y <- unlist(x)
    g <- factor(rep(1:length(x), times=sapply(x, length)))
    if (is.numeric(y)) {
        # For numeric variables, perform a standard 2-sample t-test
        p1 <- aov(y ~ g)
        p<-summary(p1)[[1]][["Pr(>F)"]][1]
    } else {
        # For categorical variables, perform a chi-squared test of independence
        p <- chisq.test(table(y, g))$p.value
    }
    # Format the p-value, using an HTML entity for the less-than sign.
    # The initial empty string places the output on the line below the variable label.
    c("", sub("<", "&lt;", format.pval(p, digits=3, eps=0.001)))
}
library(httr)
library(tidyverse)
library(jsonlite)
library(dplyr)
library(stringr)
library(dplyr)
library(readr)
knitr::opts_chunk$set(echo = TRUE, eval=FALSE, scipen=999)
#options(scipen=999)

setwd("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/code/")

trim_periodcommas <- function(x){
  x<-trimws(x)
  x<-if_else(str_starts(x, "/"), substring(x, 2, str_length(x)),x)
  x<- if_else(str_ends(x, "/"), substring(x, 1, str_length(x)-1),x)
  x<-if_else(str_starts(x, "[.]"), substring(x, 2, str_length(x)),x)
  x<-if_else(str_starts(x, ","), substring(x, 2, str_length(x)),x)
  x<-trimws(x)
  x<-if_else(str_ends(x, "[.]"), substring(x, 1, str_length(x)-1),x)
  x<- if_else(str_ends(x, ","), substring(x, 1, str_length(x)-1),x)
  x<- if_else(str_ends(x, ";"), substring(x, 1, str_length(x)-1),x)
  trimws(x)
}

IGNITE_MISSING <- function(x) {
  x<-if_else(is.na(x), "-99994", as.character(x))
  return(x)
}

- PRE-PROCESS -

require(dplyr)
HHQ <- read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/HHQ/data/IGNITE_BS_Alc_Caff_Smoke_Medu_recoded_2022_10_9.csv")
RAW <-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/RAW/IGNITEDatabase_DATA_LABELS_2023-02-20_1029.csv",quoted_na = FALSE)
RAW <- RAW %>% filter(`Event Name`=="Pre-Intervention" & str_length(`Record ID`)==5 & !str_detect(`Record ID`, "-"))
HHQ_RedCap<-read_csv('/Volumes/IGNITE_Admin/R_IGNITE/RedCap/HHQ/data/IGNITEDatabase-IGNITEBaselineTHQHHA_DATA_LABELS_2022-03-17_1209.csv')
HHQ_RedCap_surgery<-HHQ_RedCap %>% dplyr::select(`Record ID`, `21). Have you recently had any surgical procedures?`, `22). If Yes to question 21, please explain:`)
#read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/PRE/IGNITE_BS_ACELL_ASHS_DXA_COG_GEO_MEDS.csv")
RAW<-RAW %>% filter(`Record ID` %in% HHQ$record_id)
RAW_FULL<-RAW
class(HHQ_RedCap_surgery$`Record ID`)<-"character"
RAW_surgeries<-full_join(HHQ_RedCap_surgery, RAW)
RAW_surgeries$`Prescription Medicine Notes:`<-if_else(RAW_surgeries$`Record ID`=="31257",paste0("Medications #1&#2 removed:  Novacain & oxycodon; Tooth surgey ", difftime("2021-03-19","2021-02-26"), " days prior to cog1 session"), RAW_surgeries$`Prescription Medicine Notes:`)
RAW<-RAW[,c(1:2, 15:52)]
RAW$`OTC Medicine Notes:`<-""
RAW$`OTC Medicine Notes:` <- if_else(RAW$`OTC Medicine Notes:`=="" & str_detect(RAW$`Prescription Medicine Notes:`, "OTC") ,RAW$`Prescription Medicine Notes:` ,RAW$`OTC Medicine Notes:`)
RAW$`OTC Medicine Notes:`<-if_else(is.na(RAW$`OTC Medicine Notes:`), "",RAW$`OTC Medicine Notes:`)
EXTRA_OTC_NOTE<-RAW %>% filter(str_detect(RAW$`Please list any over the counter or supplement containers not seen.`,regex("picture of meds viewed on participant's phone"))) %>% dplyr::select(`Please list any over the counter or supplement containers not seen.`) %>% unlist() 
RAW$`OTC Medicine Notes:`<-if_else(is.na(RAW$`OTC Medicine Notes:`), "",RAW$`OTC Medicine Notes:`)
RAW$`Please list any over the counter or supplement containers not seen.`<-if_else(is.na(RAW$`Please list any over the counter or supplement containers not seen.`), "",RAW$`Please list any over the counter or supplement containers not seen.`)


RAW$`OTC Medicine Notes:`<-if_else(RAW$`OTC Medicine Notes:`=="" & 
                                     str_detect(RAW$`Please list any over the counter or supplement containers not seen.`,"picture of meds viewed on participant's phone"), 
                                   EXTRA_OTC_NOTE, RAW$`OTC Medicine Notes:`)


RAW$`Were all Over the Counter Medications and Supplement Containers Seen?`<-if_else(RAW$`Were all Over the Counter Medications and Supplement Containers Seen?`=="No" & str_detect(RAW$`OTC Medicine Notes:`,"picture of meds viewed on participant's phone"), "Yes", RAW$`Were all Over the Counter Medications and Supplement Containers Seen?`)

Expand Extra Entries

RX

RAW$`Prescription Medicine Notes:` <- if_else(str_detect( RAW$`Prescription Medicine Notes:`, regex("No prescription meds taken.|none|Not applicable to subject")), "",RAW$`Prescription Medicine Notes:`)
RAW$`Prescription Medicine Notes:`  <- str_remove_all(RAW$`Prescription Medicine Notes:`,"[#]|[)]|[(]|[()]|Prescription Medications Cont'd:" )
RAW$`Prescription Medicine Notes:` <- if_else(str_detect( RAW$`Prescription Medicine Notes:`, "OTC"), "",RAW$`Prescription Medicine Notes:`)
RAW$EXTRA_ENTRTIES<-if_else(str_detect(RAW$`Prescription Medicine Notes:`, "16"), RAW$`Prescription Medicine Notes:`, "")
RAW$EXTRA_ENTRTIES=trimws(RAW$EXTRA_ENTRTIES)
RAW<-RAW %>% 
  separate(EXTRA_ENTRTIES, sep = "17.", into=c(
  "Prescription medication Number 16    (MEDICATION STRENGTH UNIT FREQUENCY CODE)","Prescription medication Number 17    (MEDICATION STRENGTH UNIT FREQUENCY CODE)"), remove=TRUE) %>% 
  separate( "Prescription medication Number 17    (MEDICATION STRENGTH UNIT FREQUENCY CODE)", sep = "18.", into=c(
  "Prescription medication Number 17    (MEDICATION STRENGTH UNIT FREQUENCY CODE)","Prescription medication Number 18    (MEDICATION STRENGTH UNIT FREQUENCY CODE)"), remove=FALSE) %>% 
  separate( "Prescription medication Number 18    (MEDICATION STRENGTH UNIT FREQUENCY CODE)", sep = "19.", into=c(
  "Prescription medication Number 18    (MEDICATION STRENGTH UNIT FREQUENCY CODE)","Prescription medication Number 19    (MEDICATION STRENGTH UNIT FREQUENCY CODE)"), remove=FALSE) %>% 
  separate( "Prescription medication Number 19    (MEDICATION STRENGTH UNIT FREQUENCY CODE)", sep = "20.", into=c(
  "Prescription medication Number 19    (MEDICATION STRENGTH UNIT FREQUENCY CODE)","Prescription medication Number 20    (MEDICATION STRENGTH UNIT FREQUENCY CODE)"), remove=FALSE)%>% 
  separate( "Prescription medication Number 20    (MEDICATION STRENGTH UNIT FREQUENCY CODE)", sep = "21.", into=c(
  "Prescription medication Number 20    (MEDICATION STRENGTH UNIT FREQUENCY CODE)","Prescription medication Number 21    (MEDICATION STRENGTH UNIT FREQUENCY CODE)"), remove=FALSE)

RAW$`Prescription medication Number 16    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`<-str_remove(RAW$`Prescription medication Number 16    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`, "16.")
RAW$`Prescription medication Number 16    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`<-str_remove(RAW$`Prescription medication Number 16    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`, "16 ")
RAW$`Prescription medication Number 16    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`<-na_if(RAW$`Prescription medication Number 16    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`,"")
RAW$`Prescription Medicine Notes:`<-if_else(!is.na(RAW$`Prescription medication Number 16    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`), "",RAW$`Prescription Medicine Notes:`)

OTC

RAW$`OTC Medicine Notes:`<-trimws(RAW$`OTC Medicine Notes:`)
RAW$`OTC Medicine Notes:`  <- str_remove_all(RAW$`OTC Medicine Notes:`,EXTRA_OTC_NOTE )

RAW$`OTC Medicine Notes:`  <- str_remove_all(RAW$`OTC Medicine Notes:`,"[#]|[)]|[(]|[()]|OTC Medications Cont'd:|Medications 1-27; picture of meds viewed on participant's phone. Additional OTC meds given not entered into REDCAP, 16-27: " )
RAW$EXTRA_ENTRIES<-RAW$`OTC Medicine Notes:`
RAW<-RAW %>% 
  separate(EXTRA_ENTRIES, sep = "17.", into=c(
  "OTC OR SUPPLEMENT Number 16 (List NAME,STRENGTH UNIT FREQUENCY CODE)", "OTC OR SUPPLEMENT Number 17 (List NAME,STRENGTH UNIT FREQUENCY CODE)"), remove=TRUE) %>% 
  separate("OTC OR SUPPLEMENT Number 17 (List NAME,STRENGTH UNIT FREQUENCY CODE)", sep = "18.", into=c(
  "OTC OR SUPPLEMENT Number 17 (List NAME,STRENGTH UNIT FREQUENCY CODE)", "OTC OR SUPPLEMENT Number 18 (List NAME,STRENGTH UNIT FREQUENCY CODE)"), remove=FALSE) %>% 
  separate("OTC OR SUPPLEMENT Number 18 (List NAME,STRENGTH UNIT FREQUENCY CODE)", sep = "19.", into=c(
  "OTC OR SUPPLEMENT Number 18 (List NAME,STRENGTH UNIT FREQUENCY CODE)", "OTC OR SUPPLEMENT Number 19 (List NAME,STRENGTH UNIT FREQUENCY CODE)"), remove=FALSE) %>% 
  separate("OTC OR SUPPLEMENT Number 19 (List NAME,STRENGTH UNIT FREQUENCY CODE)", sep = "20.", into=c(
  "OTC OR SUPPLEMENT Number 19 (List NAME,STRENGTH UNIT FREQUENCY CODE)", "OTC OR SUPPLEMENT Number 20 (List NAME,STRENGTH UNIT FREQUENCY CODE)"), remove=FALSE) %>% 
  separate("OTC OR SUPPLEMENT Number 20 (List NAME,STRENGTH UNIT FREQUENCY CODE)", sep = "21.", into=c(
  "OTC OR SUPPLEMENT Number 20 (List NAME,STRENGTH UNIT FREQUENCY CODE)", "OTC OR SUPPLEMENT Number 21 (List NAME,STRENGTH UNIT FREQUENCY CODE)"), remove=FALSE)  %>% 
  separate("OTC OR SUPPLEMENT Number 21 (List NAME,STRENGTH UNIT FREQUENCY CODE)", sep = "22.", into=c(
  "OTC OR SUPPLEMENT Number 21 (List NAME,STRENGTH UNIT FREQUENCY CODE)", "OTC OR SUPPLEMENT Number 22 (List NAME,STRENGTH UNIT FREQUENCY CODE)"), remove=FALSE)  %>% 
  separate("OTC OR SUPPLEMENT Number 22 (List NAME,STRENGTH UNIT FREQUENCY CODE)", sep = "23.", into=c(
  "OTC OR SUPPLEMENT Number 22 (List NAME,STRENGTH UNIT FREQUENCY CODE)", "OTC OR SUPPLEMENT Number 23 (List NAME,STRENGTH UNIT FREQUENCY CODE)"), remove=FALSE) %>% 
  separate("OTC OR SUPPLEMENT Number 23 (List NAME,STRENGTH UNIT FREQUENCY CODE)", sep = "24.", into=c(
  "OTC OR SUPPLEMENT Number 23 (List NAME,STRENGTH UNIT FREQUENCY CODE)", "OTC OR SUPPLEMENT Number 24 (List NAME,STRENGTH UNIT FREQUENCY CODE)"), remove=FALSE) %>% 
  separate("OTC OR SUPPLEMENT Number 24 (List NAME,STRENGTH UNIT FREQUENCY CODE)", sep = "25.", into=c(
  "OTC OR SUPPLEMENT Number 24 (List NAME,STRENGTH UNIT FREQUENCY CODE)", "OTC OR SUPPLEMENT Number 25 (List NAME,STRENGTH UNIT FREQUENCY CODE)"), remove=FALSE) %>% 
  separate("OTC OR SUPPLEMENT Number 25 (List NAME,STRENGTH UNIT FREQUENCY CODE)", sep = "26.", into=c(
  "OTC OR SUPPLEMENT Number 25 (List NAME,STRENGTH UNIT FREQUENCY CODE)", "OTC OR SUPPLEMENT Number 26 (List NAME,STRENGTH UNIT FREQUENCY CODE)"), remove=FALSE) %>% 
  separate("OTC OR SUPPLEMENT Number 26 (List NAME,STRENGTH UNIT FREQUENCY CODE)", sep = "27.", into=c(
  "OTC OR SUPPLEMENT Number 26 (List NAME,STRENGTH UNIT FREQUENCY CODE)", "OTC OR SUPPLEMENT Number 27 (List NAME,STRENGTH UNIT FREQUENCY CODE)"), remove=FALSE) 

RAW$`OTC OR SUPPLEMENT Number 16 (List NAME,STRENGTH UNIT FREQUENCY CODE)`<-str_remove(RAW$`OTC OR SUPPLEMENT Number 16 (List NAME,STRENGTH UNIT FREQUENCY CODE)`, "16 ")
RAW$`OTC OR SUPPLEMENT Number 16 (List NAME,STRENGTH UNIT FREQUENCY CODE)`<-str_remove(RAW$`OTC OR SUPPLEMENT Number 16 (List NAME,STRENGTH UNIT FREQUENCY CODE)`, "16.")
RAW$`OTC OR SUPPLEMENT Number 16 (List NAME,STRENGTH UNIT FREQUENCY CODE)` <-trimws(RAW$`OTC OR SUPPLEMENT Number 16 (List NAME,STRENGTH UNIT FREQUENCY CODE)`)
#RAW[,c(7:length(RAW))]<-na_if(RAW[,c(7:length(RAW))], "")
RAW$`OTC Medicine Notes:`<-if_else(!is.na(RAW$`OTC OR SUPPLEMENT Number 16 (List NAME,STRENGTH UNIT FREQUENCY CODE)`), "", RAW$`OTC Medicine Notes:`)
RAW<-RAW  %>% dplyr::select(
  "Record ID",
  "Event Name",
  "Did study participant take any prescription or non-prescription medications in the past 4 weeks?", 
  "Did the participant take any prescription medications in the past 4 weeks?",                              
  "Were all Prescription Medication Containers Seen?" ,                                                       
  "Please list any medication containers not seen?" ,                                                         
  "Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)"
,"Please specify Prescription Medication Number 2 (List Med name, strength, unit, frequency code)"          
,"Please specify Prescription Medication Number 3 (List Med name, strength, unit, frequency code)"          
,"Please specify Prescription Medication Number 4 (List Med name, strength, unit, frequency code)"          
,"Please specify Prescription Medication Number 5 (List Med name, strength, unit, frequency code)"          
,"Please specify Prescription Medication Number 6 (List Med name, strength, unit, frequency code)"          
, "Please specify Prescription Medication Number 7 (List Med name, strength, unit, frequency code)"          
, "Please specify Prescription Medication Number 8 (List Med name, strength, unit, frequency code)"          
, "Please specify Prescription Medication Number 9 (List Med name, strength, unit, frequency code)"          
, "Please specify Prescription Medication Number 10 (List Med name, strength, unit, frequency code)"         
, "Please specify Prescription Medication Number 11 (List Med name, strength, unit, frequency code)"         
, "Please specify Prescription Medication Number 12 (List Med name, strength, unit, frequency code)"         
, "Please specify Prescription Medication Number 13 (List Med name, strength, unit, frequency code)"         
, "Please specify Prescription Medication Number 14 (List Med name, strength, unit, frequency code)"         
, "Please specify Prescription Medication Number 15 (List Med name, strength, unit, frequency code)"    
, "Prescription medication Number 16    (MEDICATION STRENGTH UNIT FREQUENCY CODE)"                           
, "Prescription medication Number 17    (MEDICATION STRENGTH UNIT FREQUENCY CODE)"                           
, "Prescription medication Number 18    (MEDICATION STRENGTH UNIT FREQUENCY CODE)"                           
, "Prescription medication Number 19    (MEDICATION STRENGTH UNIT FREQUENCY CODE)"                           
, "Prescription medication Number 20    (MEDICATION STRENGTH UNIT FREQUENCY CODE)"                           
, "Prescription medication Number 21    (MEDICATION STRENGTH UNIT FREQUENCY CODE)"    
,"Prescription Medicine Notes:" ,                                                                            
"Did the participant take any non-prescription (OTC) medications in the past 4 weeks?"                     
, "Were all Over the Counter Medications and Supplement Containers Seen?"                                    
,"Please list any over the counter or supplement containers not seen."                                      
, "OTC OR SUPPLEMENT Number 1 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                      
, "OTC OR SUPPLEMENT Number 2 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                      
, "OTC OR SUPPLEMENT Number 3 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                      
, "OTC OR SUPPLEMENT Number 4 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                      
, "OTC OR SUPPLEMENT Number 5 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                      
, "OTC OR SUPPLEMENT Number 6 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                      
, "OTC OR SUPPLEMENT Number 7 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                      
, "OTC OR SUPPLEMENT Number 8 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                      
,"OTC OR SUPPLEMENT Number 9 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                      
,"OTC OR SUPPLEMENT Number 10 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 11 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 12 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 13 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 14 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 15 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 16 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 17 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 18 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 19 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 20 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 21 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 22 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 23 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 24 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 25 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 26 (List NAME,STRENGTH UNIT FREQUENCY CODE)"                                     
, "OTC OR SUPPLEMENT Number 27 (List NAME,STRENGTH UNIT FREQUENCY CODE)"
, "OTC Medicine Notes:"   )   

Remove invalid entries

RX

  • {Needles|Truvia, 1/day, 1, Prescribed for: Diabetes|Novocaine|NO LONGER TAKING|prescribed but didnt take|meter|test strip| Kit|(tooth operation)|NO LONGER TAKING| None|No prescription meds taken|ONE TOUCH DELICA|HOUR PRIOR TO PROCEDURE}
ENTRIES<-RAW[,7:27]
Not_entries<-RAW[,c(1:6, 28)]

ENTRIES<-as.data.frame(ENTRIES)
na_predicate <- function(x, fn) {
  predicate <- rlang::as_function(fn)
  x[predicate(x)] <- NA
  x
}
entrynames<-names(ENTRIES)
#ENTRIES %>%
#filter(
#  if_any(
#    .cols = contains( "Needles",ignore.case = T),
#    ~ grepl(
#     "Needles","NO LONGER TAKING",
#      ignore.case = TRUE,
#      x = .))))
RAW <-  RAW %>% mutate_at(vars(entrynames), na_predicate, ~str_detect(., pattern=regex(" year before dentist|not taking anymore|no longer needed|years ago|whenever procedures done|when traveling|Insulin Needles|Needles|NO LONGER TAKING|Test Strip|Strips|Truvia, 1/day, 1, Prescribed for: Diabetes|Novocaine|prescribed but didnt take|NO LONGER TAKING|glucose meter|test strip| Kit|(tooth operation)|None|No prescription meds taken|One Touch Delica|toothpaste|BEFORE DENTIST|PRIOR TO PROCEDURE|Eye Drops, PRN, 7|NAC 600 The Essentials|finished|(stopped)|(Stopped)|Cough and cold medicine-Mucinex DM, 4 weeks ago|prior to air travel|2 / year before dentist", ignore_case = T)))

ENTRIES<-RAW[,7:27]

ENTRIES_1 = as.data.frame(t(apply(ENTRIES,1, function(x) { return(c(x[!is.na(x)],x[is.na(x)]) )} ))) #shift empty cells where invalid was replaced with NA.
names(ENTRIES_1)=names(ENTRIES) # Assign old column names  
RX_raw<-cbind(Not_entries,ENTRIES_1) 
RX_raw<-as.data.frame(RX_raw)
#RX_raw[,(1:length(RX_raw))]<-na_if(RX_raw[,(1:length(RX_raw))], "")
RX_raw$NAs<-rowSums(is.na(RX_raw[,c(8:28)]))
RX_raw$`Did the participant take any prescription medications in the past 4 weeks?`<-if_else((RX_raw$`Did the participant take any prescription medications in the past 4 weeks?`=="Yes" | 
                                                                                                is.na(RX_raw$`Did the participant take any prescription medications in the past 4 weeks?`))& 
                                                                                               RX_raw$NAs=="21", "No", RX_raw$`Did the participant take any prescription medications in the past 4 weeks?`)

RX_raw$`Did the participant take any prescription medications in the past 4 weeks?`<-if_else( is.na(RX_raw$`Did the participant take any prescription medications in the past 4 weeks?`) & !is.na(RX_raw$`Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`), "Yes",RX_raw$`Did the participant take any prescription medications in the past 4 weeks?`)

OTC

ENTRIES<-RAW[,c(32:58)]
Not_entries<-RAW[,c(1:2,29:31,59)]

ENTRIES<-as.data.frame(ENTRIES)
na_predicate <- function(x, fn) {
  predicate <- rlang::as_function(fn)
  x[predicate(x)] <- NA
  x
}
entrynames<-names(ENTRIES)

#ENTRIES %>%
#filter(
#  if_any(
#    .cols = contains( "Needles",ignore.case = T),
#    ~ grepl(
#     "Needles","NO LONGER TAKING",
#      ignore.case = TRUE,
#      x = .))))

RAW <-  RAW %>% mutate_at(vars(entrynames), na_predicate, ~str_detect(., pattern=regex(" year before dentist|not taking anymore|no longer needed|years ago|whenever procedures done|when traveling|Insulin Needles|Needles|NO LONGER TAKING|Test Strip|Strips|Truvia, 1/day, 1, Prescribed for: Diabetes|Novocaine|prescribed but didnt take|NO LONGER TAKING|glucose meter|test strip| Kit|(tooth operation)|None|No prescription meds taken|One Touch Delica|toothpaste|BEFORE DENTIST|PRIOR TO PROCEDURE|Eye Drops, PRN, 7|NAC 600 The Essentials|7 day cycle finished 10 days ago|(Stopped)|(stopped)|Cough and cold medicine-Mucinex DM, 4 weeks ago|prior to air travel|2 / year before dentist", ignore_case = T)))
ENTRIES<-RAW[,c(32:58)]


ENTRIES_1 = as.data.frame(t(apply(ENTRIES,1, function(x) { return(c(x[!is.na(x)],x[is.na(x)]) )} ))) #shift empty cells where invalid was replaced with NA.
names(ENTRIES_1)=names(ENTRIES) # Assign old column names  
OTC_raw<-cbind(Not_entries,ENTRIES_1) 
#OTC_raw[,c(1:length(OTC_raw))]<-na_if(OTC_raw[,c(1:length(OTC_raw))], "")
OTC_raw$NAs<-rowSums(is.na(OTC_raw[,c(7:33)]))

OTC_raw$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`<-if_else((OTC_raw$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`=="Yes"|is.na(OTC_raw$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`))& OTC_raw$NAs=="27", "No", OTC_raw$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`)
OTC_raw$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`<-if_else(is.na(OTC_raw$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`) & !is.na(OTC_raw$`OTC OR SUPPLEMENT Number 1 (List NAME,STRENGTH UNIT FREQUENCY CODE)`), "Yes", OTC_raw$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`)
RX_raw<-RX_raw %>% dplyr::select(-NAs)
OTC_raw<-OTC_raw %>% dplyr::select(-NAs)

RAW_1<-full_join(RX_raw, OTC_raw)
RAW<-RAW_1

RAW$`Please list any medication containers not seen?`<- if_else(!is.na(RAW$`Please list any medication containers not seen?`) &RAW$`Did the participant take any prescription medications in the past 4 weeks?`=="No" , "", RAW$`Please list any medication containers not seen?`)
RAW$`Please list any medication containers not seen?`<-na_if(RAW$`Please list any medication containers not seen?`, "")

Modify Labeled Factors (as.is)

RAW$`Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)` <- na_if(RAW$`Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`, "")
RAW$`OTC OR SUPPLEMENT Number 1 (List NAME,STRENGTH UNIT FREQUENCY CODE)` <- na_if( RAW$`OTC OR SUPPLEMENT Number 1 (List NAME,STRENGTH UNIT FREQUENCY CODE)`, "")
RAW$`Please specify Prescription Medication Number 2 (List Med name, strength, unit, frequency code)` <- na_if( RAW$`Please specify Prescription Medication Number 2 (List Med name, strength, unit, frequency code)`,"None|none")
RAW$`OTC OR SUPPLEMENT Number 1 (List NAME,STRENGTH UNIT FREQUENCY CODE)` <- na_if( RAW$`OTC OR SUPPLEMENT Number 1 (List NAME,STRENGTH UNIT FREQUENCY CODE)`,"None|none")
RAW$`Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)` <- na_if( RAW$`Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`,"None|none")
RAW$`Did the participant take any prescription medications in the past 4 weeks?` <- if_else( !is.na( RAW$`Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`),"Yes", RAW$`Did the participant take any prescription medications in the past 4 weeks?`)
RAW$`Did the participant take any prescription medications in the past 4 weeks?` <- if_else( is.na( RAW$`Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`),"No", RAW$`Did the participant take any prescription medications in the past 4 weeks?`)
RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?` <- if_else(!is.na(RAW$`OTC OR SUPPLEMENT Number 1 (List NAME,STRENGTH UNIT FREQUENCY CODE)`),"Yes",RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?` )
RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?` <- if_else(is.na(RAW$`OTC OR SUPPLEMENT Number 1 (List NAME,STRENGTH UNIT FREQUENCY CODE)`), "No",RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?` )
RAW$`OTC Medicine Notes:`<- (str_remove(RAW$`OTC Medicine Notes:`, "Medications 1-27; picture of meds viewed on participant's phone. Additional OTC meds given not entered into REDCAP, 16-27:"))
RAW$`OTC Medicine Notes:` <- str_remove(RAW$`OTC Medicine Notes:`,"OTC Medications Cont'd:")
RAW$`OTC Medicine Notes:`<-na_if(RAW$`OTC Medicine Notes:`, "")
length(unique(RAW$`Record ID`))

10247 Hydrochlorothiazide, 20331

mis_vars<-names(RAW[,c(8:28,33:59)])
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ trim_periodcommas(.))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.," m g", " mg"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("units,|units |unit,|unit ", ignore_case=T)," IU"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex(" Vit |Vit. |Vit ", ignore_case = T)," Vitamin "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_remove_all(.,fixed('"')))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_remove_all(.,fixed("[")))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_remove_all(.,fixed("]")))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(.,"- | -","-"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(.,fixed("- "),"-"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(.,fixed(" -"),"-"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(.,"/"," / "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(.,fixed("  ")," "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(" .500mg"),", 500mg"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(., "-,-", ""))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(" MI,")," ML,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(", 5/10,"),", 10,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("B 12"),"B12"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Finacia"),"Finacea"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("aleve 220"),"aleve, 220"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("CoQu10", ignore_case = T),"CoQ10"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"[=]",":"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"[=]",":"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"=",":"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("--"),"-"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(", %"),"%"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("(prescription)"), ""))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("by Dr"), ""))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("="),":"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("="),":"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"=",":"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("w /", ignore_case = T)," / "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(,)(\\sZinc)", "\\2",., perl=TRUE), ignore_case=T)
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(,)(\\sand)", "\\2",., perl=TRUE), ignore_case=T)

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Pro Air"),"ProAir"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("CA[.] ", ignore_case = T),"Calcium "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("CoenzQ10", ignore_case = T),"CoQ10"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("/XR", ignore_case = T)," XR"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("MG"),"mg"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("^B,"),"Vitamin B"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(" D.")," D"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("D35000", ignore_case = T),"D3, 5000"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("d-3", ignore_case = T),"D3"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("B-12"),"B12"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("D-2"),"D2"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Multi Complex"),"Multivitamin"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("+D", ignore_case = F)," Vitamin D"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("-XR", ignore_case = F)," XR"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("/ D ", ignore_case=T),"Vitamin D "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("/ D,", ignore_case=T),"Vitamin D,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(";"),":"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("/ C"),"/ Vitamin C"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("+ D3"),"/ Vitamin D3"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("/ D3"),"/ Vitamin D3"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("with D3"),"/ Vitamin D3"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Vit[.]", ignore_case = T),"Vitamin "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"^D2","Vitamin D2"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("^D3"),"Vitamin D3"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("^B Complex,", ignore_case = T),"Vitamin B Complex,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(,)(\\s[C,|\\sD,])", "\\1 Vitamin \\2",., perl=TRUE))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("^B12"), "vitamin B12"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.," hci,",  " hcl,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("12,+3"), "12+3"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("375/25"),"375-25mg"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("vitamin-B12"), "vitamin B12"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Daily-Vile"), "Daily-Vite"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("NyQuil", ignore_case=T),"Vicks-NyQuil"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Vicks-Vicks"),"Vicks-"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(" HCL"),  " hydrochloride"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(" hcl"),  " hydrochloride"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Taken got:"),"Taken for:"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Allertec",  "Aller-Tec"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Aller-tec",  "Aller-Tec"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Permfya",  "Tremfya"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Flonaze"),"Flonase"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("setraline", ignore_case = T),"sertraline"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("prednizone", ignore_case = T),"prednisone"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("buprop ", ignore_case = T),"bupropion "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("eythromycin", ignore_case = T),"erythromycin"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Selium", ignore_case = T),"Selenium"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Centrim", ignore_case = T),"Centrum"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Cholestaff,", ignore_case = T),"Nature Made CholestOff Plus,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Cholestoff,", ignore_case = T),"Nature Made CholestOff Plus,"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Fluoxitine", ignore_case = T),"Fluoxetine"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Flonisolide", ignore_case = T),"Flunisolide"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Loratidine", ignore_case = T),"Loratadine"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Pseudophedrine", ignore_case = T),"Pseudoephedrine"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("calcium, magnesium and zinc", ignore_case = T),"calcium magnesium and zinc"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_remove(.,fixed("(womens)")))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("2, Bone health", ignore_case = T),"2, For: Bone health"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Flexeril", ignore_case = T),"Cyclobenzaprine"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Tofranil", ignore_case = T),"Imipramine"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("levotyroxine", ignore_case = T),"levothyroxine"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("L-Thyroxine", ignore_case = T),"levothyroxine"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("hydrocodeine, 10mg", ignore_case = T),"hydrocodone, 10mg"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("maxide,", ignore_case = T),"Maxzide,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Hydrochloroquine,", ignore_case = T),"Hydroxychloroquine,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("flucicinose", ignore_case = T),"Fluticasone"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("MSN", ignore_case = T),"MSM"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Lethicin", ignore_case = T),"Lecithin"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Sumatripton"),"Sumatriptan"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Cholestyramine"),"cholestyramine resin"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Lorazepram"),"Lorazepam"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Coenzyme Q10"),"CoQ10"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Pred. Forte"), "Pred Forte"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Multi Vitamins", ignore_case = T),"Multivitamins"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"amalactin","amlactin"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Calcium Citracal,", ignore_case=T),"Citracal (Calcium Citrate / Vitamin D3)"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Cyanocobalamin"),"vitamin B12"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Maxide"),"Maxzide"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("metotprolol", ignore_case = T), "metoprolol"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("chlorothalidone"), "chlorthalidone"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("triamcinolene", ignore_case = T), "triamcinolone"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("diavan hydrochlorathyazide", ignore_case = T), "Diovan HCT"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Nasa-cort", ignore_case = T),"Nasacort"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("atovastatin", ignore_case = T),"atorvastatin"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Centrum Silver,","Centrum Silver Multivitamin,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Multi$"),"Multivitamin"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Levothyroid","Levothyroxine"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Multivitamin Silver", ignore_case = T),"Centrum Silver Multivitamin"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Losartan/Potassium"),"Losartan Potassium"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Triamaterene"),"Triamterene"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("given by PCP as recommended,"),"PRN"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(" gm,"), " mg,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Calcium, Magnesium, Vitamin D3,","Calcium Magnesium Vitamin D3,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Multi-vitamin",ignore_case=T),"Multivitamin"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Alprazolan", ignore_case = T),"Alprazolam"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Acetaminophen PM", ignore_case = T),"Tylenol PM"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex(" as needed", ignore_case = T)," PRN"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("mcg."),"mcg,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Escitalopram / Lexapro"),"Escitalopram (Lexapro)"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex(", 12,+3", ignore_case = T)," 1 2 + 3"  ))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Trimethoprin"), "trimethoprim"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Calcitrate"),"Calcium Citrate"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Thyroxine"),"Levothyroxine"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Trospium Chloride (sactura),"),"Sanctura (trospium chloride)"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Puroxetine"),"Paroxetine"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Estrodiol"),"Estradiol"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Methyltestos"),"Methyltestosterone"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Propanolol"),"Propranolol"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Chlorothalidone"),"Chlorthalidone"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Melatonin DR,"),"Melatonin,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Ichthammol Topical,"),"ichthammol,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(.,regex("NyQuil", ignore_case=T),"Vicks-NyQuil"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Joint movement", "Joint movement,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Divalproex", "Sodium valproate"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Anit-Diarrheal (Loperamide)"), "Loperamide"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Lanoxin / Digoxin"),"Lanoxin"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Curamed 750,", ignore_case = T),"Terry Naturally CuraMed,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("ER/SR"),"ER"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Vitamin C / D", ignore_case = T),"Vitamin C / Vitamin D"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(., "Q-10", "Q10"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex(" acidophilus", ignore_case=T),"Lactobacillus acidophilus"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Lactobacillus Lactobacillus", ignore_case=T),"Lactobacillus "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Citrus Citrate,", ignore_case = T),"magnesium citrate,"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Trazadone"),"Trazodone"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Prempro"),"Conjugated estrogens / Medroxyprogesterone acetate"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Jantovan"),"Jantoven"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Hydrochloroquine"),"Hydroxychloroquine"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("benbonatate"),"benzonatate"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Mens one daily,"),"Mens One Daily Multivitamin,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("1 A Day"),"One A Day"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("generic for", ignore_case = T), "/"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(", Biotin Supplement,")," Biotin Supplement,"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Members mark vision multi 50+ supplement, ", ignore_case = T),
                                                        "Members mark vision multi 50+ supplement (Lutein / Zeaxanthin / Omega-3 fatty acids),"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_remove(.,fixed("Douglas Laboratories")))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Just once multivitamin,"),"Rainbow Light Just Once,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Potassium CL", ignore_case=T),"potassium chloride"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Sulfate +"),"Sulfate /"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Kirkland Brand"),"Kirkland Signature" ))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Vision Essentials Gold,", ignore_case = T),"Vision Essentials Gold, Lutein, 40mg,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Dayquil,","DayQuil Cough,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("CO Q10,"),"CoQ10,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Raw Probiotics Women 50 and Wiser", "Women 50 and Wiser Raw Probiotics"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Vitamin D2, 50000,"),"Vitamin D2, 50000IU,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("3.75-25,"),"37.5-25mg,"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Calcium supplement ("),"Calcium supplement, ("))




##REMOVE
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_remove(.,fixed("(Relief for stress-related fatigue)", ignore_case = T)))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(.,fixed(",,"),"," ))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_remove(.,fixed(", 2x5mg/AM, 1x5mg/PM"))) ###### special case
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_remove(.,fixed(" for rash &cold", ignore_case = T)))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_remove(.,fixed("(for poison ivy)", ignore_case = T)))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_remove(.,fixed(" for rash & cold", ignore_case = T)))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_remove(.,fixed("(for restless leg)", ignore_case = T)))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_remove(.,regex("(generic)", ignore_case=T)))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_remove(.,regex("Costco", ignore_case=T)))
## EXPAND:
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("5-HTP"),"5-Hydroxytryptophan"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(" MSM"),"Methylsulfonylmethane,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("(DHEA)"),"Dehydroepiandrosterone"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("DHEA"), "Dehydroepiandrosterone"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("(DHA)"),"Docosahexaenoic acid"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("(EPA)"), "Eicosapentaenoic Acid"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(" EPA"), "Eicosapentaenoic Acid"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(" DHA"),"Docosahexaenoic acid"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(" EPA"),"Eicosapentaenoic acid acid"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("for a cold$"), "Prescribed for: for a cold"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Ocusight,", ignore_case = T),"Ocuvite Lutein,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("magnesiumcitrate", ignore_case=T),"magnesium citrate"))


## Special Cases:

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ if_else(str_detect(., "Calcium") & 
                                                      str_detect(., regex("Citracel", ignore_case=T)), 
                                                    str_replace(.,regex("Citracel", ignore_case = T),"Citracal"),.))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ if_else(str_detect(., "9") & str_detect(., regex("Proliva", ignore_case=T)),
                                                    str_replace(.,regex("Proliva,", ignore_case = T),"Prolia,"),.))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("(1 40mg tab + 1 20mg tab)"),", (40mg tablet + 1 20mg tablet)," ))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Vitamin D / C", ignore_case=T), "Vitamin C / Vitamin D"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Vitamin C / D", ignore_case=T), "Vitamin C / Vitamin D"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Calcium 600 oral, 600mg, 1 / day","Calcium, 600mg, 1 / day, 1"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Hair, Skin, Nails", ignore_case=T),"Hair Skin Nails"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Oysco 500 Vitamin D3"),"Oysco 500 with D,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("OYSCO, 500mg,"),"Oysco 500 with D,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("NuQuin HP 4% Cream (Hydroxyquinone usp, 4%), 4%,"),"NuQuin HP (Hydroxyquinone), 4%,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Phernetmine-3, 7.5mg", ignore_case = T), "Phentermine, 37.5mg"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(" IR XR")," XR"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Advil PM", ignore_case = T),"Motrin PM"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Ozurdex, 7-9", ignore_case=T), "Ozurdex, 9"))
RAW <- RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Kirkland Sleep Aid", ignore_case = T), "Kirkland Signature Sleep Aid, Doxylamine Succinate: 25mg"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("22.3mg, 6.8mL,"),"22.3mg/6.8mL,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Allergy Relief, Cetirizine Hydrochloride: 10mg,", ignore_case = T),"Allergy Relief (Cetirizine Hydrochloride), 10mg,"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Oxycodone / Acetaminophen (Percocet) Prescribed for: for kidney pain, 325mg, PRN, 1"),"Oxycodone / Acetaminophen (Percocet), 325mg, PRN, Prescribed for: for kidney pain, 1"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Kyolic", ignore_case = T),"Kyolic (Aged Garlic Extract powder with lecithin), 300mg"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(.,regex("Mito2 Max|Mito2Max Energy / Stamina Complex", ignore_case = T),"Mito2Max (Acetyl L-Carnitine HCL/Alpha Lipoic Acid/Coenzyme Q10/Oligonol/Fruit Extract/Green Tea Leaf Polyphenol Extract/Cordyceps/Ginseng/KSM-66 Ashwagandha Root Extract/Vegatable Hypromellose/Microcrystalline Cellulose/Vegetable Fatty Acid/Silica), "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("AMPK, 1000 IU,", ignore_case = T),"AMPK (calcium carbonate), 1000IU"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("FDgard,", ignore_case = T),"FDgard (caraway oil / l-Menthol 50mg/41.5mg), "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("MacuHealth", ignore_case = T),"MacuHealth (lutein / zeaxanthin)"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Curamed 750", ignore_case = T),"Terry Naturally CuraMed, Medium chain triglycerides: 750mg, "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("OmegAvail TG1000", ignore_case = T),"OmegAvail TG1000 (eicosapentaenoic acid: 600mg / dexahexapentaeonic acid: 400mg),"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Pain Atrate, Camphor(3.25%)/Menthol(1.5%)/Methyl Salicylate(15%),"),"Pain Atrate (Camphor:3.25% / Menthol:1.5% / Methyl Salicylate:15%),"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Posture-D Calcium, vitamin D, magnesium, 600mg, 1x/day, 1"),"Posture-D (Calcium vitamin D magnesium), 600mg, 1x/day, 1"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("1-A-Day Multi-vitamin", ignore_case = T),"One-A-Day Adult Multivitamin"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(., fixed("One Daily Women's 50+ with Vitamin D3 Rite Aid,"), "Rite Aid® One Daily Women's 50+ with Vitamin D-3,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Polyethylene Glycol 3350 NF,"),"polyethylene glycol 3350,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Garlique", ignore_case = T),"Garlique (Vitamin C / Vitamin B6 / Folate / Vitamin B12 / Magnesium / Garlic powder),"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Preservision, Vitamin C / 250mg/Vitamin E/90mg/Zinc/40mg/Copper/1mg,", 
                                                        "Preservision, (Vitamin C: 250mg, Vitamin E: 90mg, Zinc:40mg, Copper:1mg),"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ if_else(str_detect(., "Multivitamin") & str_detect(., fixed("Rite Aid")), "Central-Vite", .))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ if_else(str_detect(., "Multivitamin") &str_detect(., fixed("CVS")),"Spectravite Multivitamin, 1/Day", .))


RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,
                                                        fixed("Calcium (Calcitrate), D3: 500IU, C: 630mg, Zinc: 515mg,"),
                                                        "Calcitrate (Calcium:630mg, Vitamin D3: 500IU, Zinc: 515mg),"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Glucosamine + Chondroitin + Methylsulfonylmethane"),
                                                        "chondroitin sulfates / glucosamine / methylsulfonylmethane"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Glucosamine Chondroitin Methylsulfonylmethane",
                                                        "chondroitin sulfates / glucosamine / methylsulfonylmethane"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ 
                            str_replace(.,regex("GLUCOSAMINE + CHONDROITIN|Glucosamine / Chondroitin|Glucosamine- Chondroitin|Glucosamine chondroitin",ignore_case=T),
                                        "chondroitin sulfates / glucosamine"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Turmeric Curcumin, 500mg, 1/day, 2, Taken for: joint painTurmeric Curamin, 500 mg, 1/day, 2, Taken for: Joint Pain","Turmeric Curcumin, 500mg, 1/day, 2, Taken for: joint pain"))


RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("([0-9])(,)([0-9])", "\\1\\3",., perl=TRUE)) ## remove commas in numbers
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ trim_periodcommas(.))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(., "0.005, 7,", "0.005%, 7,"))
#RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("triamterene 3"),"triamterene, 3"))



RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Vitamin Vitamin", ignore_case = T),"Vitamin "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,": :", ":"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("CoQ10", ignore_case=T),"ubidecarenone"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ if_else(str_detect(., fixed("Omega Rx 2,")), 
                                                    "eicosapentaenoic acid (EPA) / docosahexaenoic acid (DHA), :2g/2g, 4/day", .))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Magnesium,","magnesium chloride,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Calcium 630mg, Vitamin D 500IU,", "(Calcium: 630mg, Vitamin D: 500IU),"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"Collagen youtheory ", "Collagen youtheory,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Vitamin C"),"ascorbic acid"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("vitamin vitamin", ignore_case=T),"vitamin "))
#RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("calcium ", ignore_case=T),"calcium acetate "))
#RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("calcium,", ignore_case=T),"calcium acetate,"))
#RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("calcium acetate Carbonate,", ignore_case=T),"Calcium Carbonate,"))
#RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("calcium acetate Carbonate ", ignore_case=T),"Calcium Carbonate "))
#RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Atorvastatin calcium acetate "),"Atorvastatin calcium "))
#RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("acetate Acetate"),"acetate"))




# Hydrochlorothiazide
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("HCTZ", ignore_case=T),"Hydrochlorothiazide"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("HydroChLor,"),"Hydrochlorothiazide,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Hydrochlorot,"),"Hydrochlorothiazide,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Hydrocholorothiazide"),"Hydrochlorothiazide"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("hydrocholorothiazide"),"Hydrochlorothiazide"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Hydrochlorothiozide"),"Hydrochlorothiazide"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("- Hydrochlorothiazide"),"/ Hydrochlorothiazide"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("-Hydrochlorothiazide"),"/ Hydrochlorothiazide"))


# Combinations :
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Irbesartan / Hydrochlorothiazide"),"hydrochlorothiazide / irbesartan"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Irbesartan Hydrochlorothiazide"),"hydrochlorothiazide / irbesartan"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Losartan Potassium / Hydrochlorothiazide"),"hydrochlorothiazide / losartan"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Losartan / Hydrochlorothiazide"),"hydrochlorothiazide / losartan"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Losartan Hydrochlorothiazide"),"hydrochlorothiazide / losartan"))

#RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ if_else(str_detect(., fixed("Losartan Potassium, 100/37.5-25mg,")),
                                          #          str_replace(.,fixed("Losartan Potassium, 100/37.5-25mg,"), 
                                                               # "Losartan Potassium, 100/25mg,"), .))

#RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Losartan / Potassium/Hydrochlorothiazide,", ignore_case=T),"hydrochlorothiazide / losartan"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Quinapril / Hydrochlorothiazide"),"hydrochlorothiazide / quinapril"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Quinapril Hydrochlorothiazide", ignore_case=T),"hydrochlorothiazide / quinapril"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Lisinopril / Hydrochlorothiazide", ignore_case=T),"hydrochlorothiazide / lisinopril"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Lisinopril Hydrochlorothiazide", ignore_case=T),"hydrochlorothiazide / lisinopril"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Bisoprolol Fumarate / Hydrochlorothiazide", ignore_case=T),"bisoprolol / hydrochlorothiazide"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Bisoprolol / Hydrochlorothiazide", ignore_case=T),"bisoprolol / hydrochlorothiazide"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Multivitamin, One a day,", ignore_case=T),"One A Day Multivitamin,"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ 
                            str_replace(.,regex("Triamterene Hydrochlorothiazide|Hydrochlorothiazide Triamterene", ignore_case=T),
                                        "hydrochlorothiazide / triamterene"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("triamt / hctz", ignore_case = T),"hydrochlorothiazide / triamterene"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Triamterene / Hydrochlorothiazide", ignore_case = T),"hydrochlorothiazide / triamterene"))


###### other combos
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Oxycodone / Acetaminophen"),"acetaminophen / oxycodone"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Guaifenesin codeine"),"codeine / guaifenesin"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("butalbital / aspirin or caffeine"),"aspirin / butalbital / caffeine"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Amlodipine Valsartan"),"amlodipine / valsartan"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Hydrocodone / APAP"),"acetaminophen / hydrocodone"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Tramadol-Acetaminophen"),"acetaminophen / tramadol"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Tramadol / Acetaminophen", ignore_case=T),"acetaminophen / tramadol"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Hydrocodone Acetaminophen"),"acetaminophen / hydrocodone"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Loratadine Triamcinolone"),"Loratadine"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("ipratropium-albuterol"),"albuterol / ipratropium"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Ipratropium Bromide / Albuterol Sulfate"),"albuterol / ipratropium"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Formoterol Fumarate and Budesonide"),"budesonide / formoterol"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Hydrocodone-Acetaminophen"),"acetaminophen / hydrocodone"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Propionate Bromide,"),"ipratropium bromide,")) #### GUESSING
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Sulfacetamide Sodium-Sulfur Topical,"), "sulfacetamide / sulfur,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("oxycodone / Acetaminophen"), "acetaminophen / oxycodone"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Testosterone Cyp / Estradiol, "), "estradiol / testosterone,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Fluticasone Propionate + Salmeterol,"),"fluticasone / salmeterol,"))
RAW <- RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex("Probenecid-Colchicine", ignore_case = T),"Colchicine / Probenecid"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Calcium supplement ("),"Calcium supplement, ("))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Conjugated estrogens / Medroxyprogesterone acetate,"), "estrogens conjugated (USP) / medroxyprogesterone,"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(" now, "), " now "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("(50000IU)"),"50000IU"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(" .025 / .05mg")," 0.025mg/0.05mg"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,"3.75 / 25,", ":37.5mg / :25mg,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("AM, 1/"),"AM 1/"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("AM, 1 puff"),"AM 1 puff"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(" MWF, 1/Tu")," MWF 1/Tu"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("day, 2/every"),"day 2/every"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("1 / day, 1/day, "),"1/day, "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,regex(" days, 1X ", ignore_case=T)," days 1X "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(", 1 / morning, 2/afternoon, 2/night"),", 1 / morning 2/afternoon 2/night"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("x daily"), "/day"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("2X daily"), "2/day"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed(", daily,"),", 1/day,"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("(0.5 in AM, 0.5 in PM)"),"1 / day"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("(AM-2, PM-2)"),"2/AM 2/PM"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("1 / day, 6days/week,"), "1 / day 6days/week,"))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ 
                            str_replace(.,fixed("1/week now, 2g/day for 7 days, then 2g for 3 days/week"),
                                                        "1/week now 2g/day for 7 days then 2g for 3 days/week"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("day, 2/right"), "day 2/right"))


RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("Mon / Thurs: 2/day, Tues/Weds/Fri/Sat/Sun: 1.5/day,"),
                                                        "Mon / Thurs 2/day and Tues/Weds/Fri/Sat/Sun 1.5/day,"))

RAW <- RAW %>% mutate_at(vars(mis_vars), ~ if_else(str_detect(.,regex("days, [1-9]/day", ignore_case = T)),
                                                   str_replace_all(., "days, ", "days "), .))
RAW <- RAW %>% mutate_at(vars(mis_vars), ~ if_else(str_detect(.,regex("days, [1-9]/day, [0-12]", ignore_case = T)),
                                                   str_replace_all(., "days, [1-9]/day, [0-12]", "days [1-9]/day, [0-12]"), .))


RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed("3 tablets on day 1, 2 tablets on day 2, 1 tablet every day thereafter until finished"),"3 tablets on day 1 then 2 tablets on day 2 then 1 tablet every day thereafter until finished"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,",,",","))
min1<-paste(c("mg", "mcg", "ml", "g"), collapse = "|")
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(\\s)(-)","\\2",.))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(-)(\\s)","\\1",.))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ trim_periodcommas(.))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace(.,fixed('()'), ""))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(.,fixed('(.)'), ""))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(,)", "\\1 ", .))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(., "  "," "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(/)", " \\1 ", .))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(., "  "," "))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(\\s)(-)","\\2",.))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(-)(\\s)","\\1",.))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(\\d+)(unit|units)", "\\1IU", .))


 
 
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(\\s)(\\.\\d+)", "\\10\\2", .))


RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub(paste0("(",min1,")", "(\\s)","(/)"), "\\1\\3", ., perl=T, ignore.case=T))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub(paste0("(/)", "(\\s)","(", min1,")"), "\\1\\3", ., perl=T, ignore.case=T))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(\\d+\\s)(/)(\\s\\d+)",  "\\1-\\3", .))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(\\d+)(\\s/\\s)(\\d+)", "\\1-\\3", .))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(\\s)(-)","\\2",.))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(-)(\\s)","\\1",.))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(\\s|,\\s|,)(cc|mg|mcg|IU|%|ppm|ml|grams|MEQ Cp|MEQ|mg/ml|mg/g|g)(,)", "\\2\\3", ., perl = T, ignore.case=T))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(\\s|,\\s|,)(cc|mg|mcg|IU|%|ppm|ml|grams|MEQ Cp|MEQ|mg/ml|mg/g|g)", "\\2", ., perl = T, ignore.case=T))


RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(\\d+)(\\s)(days|day|months|month|weeks|week|wk|AM|PM|hours|hrs|years|year)", "\\1\\3", ., perl = T, ignore.case=T))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(/)(\\s)(days|day|months|month|weeks|week|wk|AM|PM|hours|hrs|years|year)", "\\1\\3", ., perl = T, ignore.case=T))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(., "X daily","/day"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(., "x daily","/day"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(., "/ daily","/day"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~gsub(paste0("[(]","(\\d+)(cc|mg|mcg|IU|%|ppm|ml|grams|MEQ Cp|MEQ|mg/ml|mg/g|g)","[)]" ), "\\1\\2\\3", .))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(\\d+)(\\s)(eye drops|eye drop|drops|drop|sprays|spray|puffs|puff)", "\\1\\3", ., perl = T, ignore.case=T))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(/)(\\s)(day|month|week|wk|hours|hrs|hr|AM|PM|year|night|morning)", "\\1\\3", ., perl = T, ignore.case=T))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(\\d+)(\\s)(/)(day|month|week|wk|hours|hrs|hr|AM|PM|year|night|morning)", "\\1\\3\\4", ., perl = T, ignore.case=T))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(\\d|\\d+|\\d+\\.\\d+|\\d+-\\d+|\\d+\\.\\d+-\\d+\\.\\d+|\\d+\\.\\d+-\\d+)(cc|mg|mcg|IU|%|ppm|ml|grams|MEQ Cp|MEQ|mg/ml|mg/g|g)", ":\\1\\2", ., perl = T, ignore.case=T))


RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(., "[::]", ":"))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(., "[.][:]","."))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ str_replace_all(., "[:][.]","."))


RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(,)(\\sZinc,)", "\\2",., perl=TRUE, ignore.case=T))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(,)(\\s and,)", "\\2",., perl=TRUE,ignore.case=T))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(1)(,)(\\s)(2 and)", "\\1\\3\\4",., perl=TRUE,ignore.case=T))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(,)(\\swith\\s)", "\\2",., perl=TRUE,ignore.case=T))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(,\\s)([+]3)", "\\2",., perl=TRUE))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ trim_periodcommas(.))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(,)(\\s[C,|\\sD,])", "Vitamin \\2",., perl=TRUE),ignore_case=T)
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~  gsub("(mg|mcg)(,\\s)([A-Z]:)", "\\1/\\3",., perl=TRUE, ignore.case=T))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~  gsub("(\\d+)(-)(\\d+)(,)", ":\\1\\2\\3\\4",., perl=TRUE, ignore.case=T))

RAW <-  RAW %>% mutate_at(vars(mis_vars), ~  gsub("(0\\.0\\d+)", ":\\1",.))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~  gsub("(\\d)(x |X )(/)", "\\1\\3", .))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~  gsub("(\\d)(x |X )(/)", "\\1\\3", .))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~  gsub("(\\d|\\d+)(\\s)(/)", "\\1\\3", .))
RAW <-  RAW %>% mutate_at(vars(mis_vars), ~  gsub("(\\d|\\d+)(\\s)(/)", "\\1\\3", .))

Ensure labeled factors coincide with missing medication entries.

Rx

if (sum(is.na(RAW$`Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`))==sum(RAW$`Did the participant take any prescription medications in the past 4 weeks?`=="No") ) { 
  print("RX counts good") 
  NO_RXs<-RAW %>% filter(`Did the participant take any prescription medications in the past 4 weeks?`=="No")
  } else { print("Stop and check RX factor counts") }
table(RAW$`Did the participant take any prescription medications in the past 4 weeks?`)

OTC

if (sum(is.na(RAW$`OTC OR SUPPLEMENT Number 1 (List NAME,STRENGTH UNIT FREQUENCY CODE)`))==sum(RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`=="No")) { 
  print("OTC counts good") 
  NO_OTCs<-RAW %>% filter(`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`=="No")
} else { print("Stop and check OTC factor counts") }

table(RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`)

FULL

RAW$`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`<-if_else(!is.na(RAW$`Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`)|
          !is.na(RAW$`OTC OR SUPPLEMENT Number 1 (List NAME,STRENGTH UNIT FREQUENCY CODE)`), "Yes",RAW$`Did study participant take any prescription or non-prescription medications in the past 4 weeks?` )

RAW$`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`<-if_else(is.na(RAW$`Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`) & 
          is.na(RAW$`OTC OR SUPPLEMENT Number 1 (List NAME,STRENGTH UNIT FREQUENCY CODE)`), "No",RAW$`Did study participant take any prescription or non-prescription medications in the past 4 weeks?` )

if (sum(is.na(RAW$`Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`)&is.na(RAW$`OTC OR SUPPLEMENT Number 1 (List NAME,STRENGTH UNIT FREQUENCY CODE)`))==sum(RAW$`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`=="No") ) { print("Medication counts good") 
NOMEDS<-RAW %>% filter(`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`=="No")
} else { print("Stop and check Medication counts") }
table(RAW$`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`)
checknomes<-NOMEDS$`Record ID`

Double Check

RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?` <- if_else(!is.na(RAW$`OTC OR SUPPLEMENT Number 1 (List NAME,STRENGTH UNIT FREQUENCY CODE)`), "Yes",as.character(RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`))
RAW$OTC_Medication.factor <- RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`
RAW$OTC_Medication.factor <- if_else(RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`=="Yes" , "1",RAW$OTC_Medication.factor)
RAW$OTC_Medication.factor <- if_else(RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`=="No","0",RAW$OTC_Medication.factor)
RAW$OTC_Medication.factor <- if_else(RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`=="No","0",RAW$OTC_Medication.factor)
RAW$OTC_Medication.factor <- if_else(RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`=="Yes","1",RAW$OTC_Medication.factor)
RAW$RX_Medication.factor <- RAW$`Did the participant take any prescription medications in the past 4 weeks?`
RAW$RX_Medication.factor <- if_else(RAW$`Did the participant take any prescription medications in the past 4 weeks?`=="Yes" , "1",RAW$RX_Medication.factor)
RAW$RX_Medication.factor <- if_else(RAW$`Did the participant take any prescription medications in the past 4 weeks?`=="No","0",RAW$RX_Medication.factor)

RAW$OTCRX_Medication.factor<-if_else(RAW$`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`=="Yes",1 , 0)
RAW$OTCRX_Medication.factor<-if_else(RAW$`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`=="No",0 ,RAW$OTCRX_Medication.factor )

write_csv(RAW,"/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/IGNITE_BS_COG1MEDS1_Revised_Raw.csv")
table(RAW$OTCRX_Medication.factor)
table(RAW$RX_Medication.factor)
table(RAW$OTC_Medication.factor)
date<-RAW_FULL %>% dplyr::select(`Record ID`, `Date of  Cognitive Session 1`,`Event Name`)
RAW<-full_join(RAW,date)

Confirm whether medications were taken during past 4 weeks.

Prescriptions

Correct RedCap Entries:

RAW$`Did the participant take any prescription medications in the past 4 weeks?`<-if_else(
  RAW$`Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`=="None"|
    RAW$`Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`=="",
  "No", as.character(RAW$`Did the participant take any prescription medications in the past 4 weeks?` ))

RAW$`Did the participant take any prescription medications in the past 4 weeks?` <- if_else(
  (is.na(RAW$`Did the participant take any prescription medications in the past 4 weeks?`) | 
    RAW$`Did the participant take any prescription medications in the past 4 weeks?`=="No") &
    !is.na(RAW$`Section A    Please specify Prescription medication Number 1    (MEDICATION STRENGTH UNIT FREQUENCY CODE)`),
  "Yes", RAW$`Did the participant take any prescription medications in the past 4 weeks?`)

Generate factor

RAW$RX_Medication.factor<-RAW$`Did the participant take any prescription medications in the past 4 weeks?`
RAW$RX_Medication.factor<-if_else(RAW$`Did the participant take any prescription medications in the past 4 weeks?`=="Yes" , "1",RAW$RX_Medication.factor)
RAW$RX_Medication.factor<-if_else(RAW$`Did the participant take any prescription medications in the past 4 weeks?`=="No","0",RAW$RX_Medication.factor)

OTCs

Generate factor

RAW$OTC_Medication.factor<-RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`

RAW$OTC_Medication.factor<-if_else(RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`=="Yes" , "1",RAW$OTC_Medication.factor)

RAW$OTC_Medication.factor<-if_else(RAW$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`=="No","0",RAW$OTC_Medication.factor)
OTC_CHECK<-RAW %>% dplyr::select(`Record ID`,OTC_Medication.factor)

Curate Datasets

NO_MEDS_DATA<-RAW %>% filter(`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`=="No")

NO_MEDS_DATA<-RAW %>% filter(`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`=="No")
#RAW_0<-RAW %>% filter(`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`=="Yes")

RX WIDE

rx_WIDE <- RAW %>% dplyr::select( `Record ID`, `Date of  Cognitive Session 1`,`Event Name`,
                      `Did study participant take any prescription or non-prescription medications in the past 4 weeks?`,
                      `Did the participant take any prescription medications in the past 4 weeks?`,RX_Medication.factor,
                      `Were all Prescription Medication Containers Seen?`,`Please list any medication containers not seen?`, 
                      `Prescription Medicine Notes:`,contains(c("Prescription Medication Number")) )
names(rx_WIDE) <- c("Record ID","Date of  Cognitive Session 1", "Event Name", 
                    "Did study participant take any prescription or non-prescription medications in the past 4 weeks?",
                    "Did the participant take any prescription medications in the past 4 weeks?","RX_Medication.factor","Rx_Seen.Factor", 
                    "Unseen Rxs","Rx Medicine Notes",
                    "RX1","RX2", "RX3","RX4",
                    "RX5","RX6","RX7" ,"RX8",
                    "RX9", "RX10", "RX11", "RX12", 
                    "RX13","RX14", "RX15", 
                    "RX16", "RX17","RX18",
                    "RX19","RX20","RX21")
#rx_WIDE[,c(25:30)]<-na_if(rx_WIDE[,c(25:30)],"")
nrow(rx_WIDE)
df <- RAW %>% dplyr::select( `Record ID`, `Date of  Cognitive Session 1`,`Event Name`,
                      `Did study participant take any prescription or non-prescription medications in the past 4 weeks?`,
                      `Did the participant take any prescription medications in the past 4 weeks?`,RX_Medication.factor,
                      `Were all Prescription Medication Containers Seen?`,`Please list any medication containers not seen?`, 
                      `Prescription Medicine Notes:`,contains(c("Prescription Medication Number")) )

names(df) <- c("Record ID","Date of  Cognitive Session 1","Event Name", 
               "Did study participant take any prescription or non-prescription medications in the past 4 weeks?",
               "Did the participant take any prescription medications in the past 4 weeks?","Medication.factor","Seen.factor", 
               "Unseen Medications","Medicine Notes",
               "1","2", "3","4",
               "5","6","7" ,"8",
               "9", "10", "11", "12", 
               "13","14", "15", 
               "16", "17","18",
               "19","20","21")
#df[,20:30] <- na_if(df[,20:30], "")
rx_WIDE_0 <- df
NO_RX_MEDS<-rx_WIDE_0 %>% filter(`Did the participant take any prescription medications in the past 4 weeks?`=="No")
RX_MEDS<-rx_WIDE_0 %>% filter(`Did the participant take any prescription medications in the past 4 weeks?`=="Yes")
RX_4_merge <- reshape2::melt(rx_WIDE_0, id.vars=c( "Record ID","Date of  Cognitive Session 1","Event Name", 
               "Did study participant take any prescription or non-prescription medications in the past 4 weeks?",
               "Did the participant take any prescription medications in the past 4 weeks?","Medication.factor","Seen.factor",
               "Unseen Medications","Medicine Notes"))
RX_4_merge$value<-na_if(RX_4_merge$value, "")
RX_4_merge$variable <- if_else(is.na(RX_4_merge$value) & RX_4_merge$variable=="1" & RX_4_merge$Medication.factor=="0", "0",as.character(RX_4_merge$variable))
RX_4_merge$value <- if_else( RX_4_merge$variable=="0", "",RX_4_merge$value)

RX_4_merge$Medication.factor <- if_else(RX_4_merge$Medication.factor=="1", "RX", "")

OTC WIDE

otc_WIDE <- RAW %>% dplyr::select( `Record ID`, `Date of  Cognitive Session 1`,`Event Name`,`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`, `Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`,OTC_Medication.factor,`Were all Over the Counter Medications and Supplement Containers Seen?`,`Please list any over the counter or supplement containers not seen.`, `OTC Medicine Notes:`,contains(c("OTC OR SUPP")))

names(otc_WIDE) <- c("Record ID", "Date of  Cognitive Session 1","Event Name","Did study participant take any prescription or non-prescription medications in the past 4 weeks?", "Did the participant take any non-prescription (OTC) medications in the past 4 weeks?","OTC_Medication.factor","OTC_Seen.Factor", "Unseen OTCs","OTC Medicine Notes",
             "OTC1","OTC2", "OTC3","OTC4",
             "OTC5","OTC6","OTC7" ,"OTC8",
             "OTC9", "OTC10", "OTC11", "OTC12", 
             "OTC13","OTC14", "OTC15", 
             "OTC16", "OTC17","OTC18",
             "OTC19","OTC20","OTC21","OTC22","OTC23","OTC24", "OTC25", "OTC26", "OTC27")
nrow(otc_WIDE)
rx_WIDEpreproc<-rx_WIDE %>% dplyr::select(`Record ID`,`Date of  Cognitive Session 1`,`Event Name`,`Unseen Rxs`,`Rx Medicine Notes`,
                   `Did study participant take any prescription or non-prescription medications in the past 4 weeks?`,
                   `Did the participant take any prescription medications in the past 4 weeks?`,
                   "RX1","RX2", "RX3","RX4",
                    "RX5","RX6","RX7" ,"RX8",
                    "RX9", "RX10", "RX11", "RX12", 
                    "RX13","RX14", "RX15", 
                    "RX16", "RX17","RX18",
                    "RX19","RX20","RX21" )
otc_WIDEpreproc<-otc_WIDE %>% dplyr::select(`Record ID`,`Date of  Cognitive Session 1`,`Event Name`,`Unseen OTCs`,`OTC Medicine Notes`,
                   `Did study participant take any prescription or non-prescription medications in the past 4 weeks?`,
                  `Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`,
                    "OTC1","OTC2", "OTC3","OTC4",
                   "OTC5","OTC6","OTC7" ,"OTC8",
                   "OTC9", "OTC10", "OTC11", "OTC12", 
                   "OTC13","OTC14", "OTC15", 
                   "OTC16", "OTC17","OTC18",
                   "OTC19","OTC20","OTC21","OTC22","OTC23","OTC24", "OTC25", "OTC26", "OTC27" )
merged_redcap <- full_join(rx_WIDEpreproc, otc_WIDEpreproc)
merged_redcap <- as.data.frame(merged_redcap)
nrow(merged_redcap)
df <- RAW %>% dplyr::select( `Record ID`, `Date of  Cognitive Session 1`,`Event Name`,`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`, `Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`,OTC_Medication.factor,`Were all Over the Counter Medications and Supplement Containers Seen?`,`Please list any over the counter or supplement containers not seen.`, `OTC Medicine Notes:`,contains(c("OTC OR SUPP")) )
names(df) <- c("Record ID","Date of  Cognitive Session 1","Event Name","Did study participant take any prescription or non-prescription medications in the past 4 weeks?", "Did the participant take any non-prescription (OTC) medications in the past 4 weeks?","Medication.factor","Seen.factor", "Unseen Medications","Medicine Notes",
             "1","2", "3","4",
             "5","6","7" ,"8",
             "9", "10", "11", "12", 
             "13","14", "15", 
             "16", "17","18",
             "19","20","21","22","23","24", "25", "26", "27")
#df[,7:length(df)] <- na_if(df[,7:length(df)], "")
otc_WIDE_0 <- df
length(unique(otc_WIDE_0$`Record ID`))
NO_OTC_MEDICATIONS<-otc_WIDE_0 %>% filter(`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`=="No")
OTC_4_merge <- reshape2::melt(otc_WIDE_0, id.vars=c("Record ID","Date of  Cognitive Session 1","Event Name","Did study participant take any prescription or non-prescription medications in the past 4 weeks?", "Did the participant take any non-prescription (OTC) medications in the past 4 weeks?","Medication.factor","Seen.factor", "Unseen Medications","Medicine Notes"))
OTC_4_merge$value<-na_if(OTC_4_merge$value,"")
OTC_4_merge$Medication.factor <- if_else(OTC_4_merge$Medication.factor=="1", "OTC", "")
table(OTC_4_merge$Seen.factor)
table(RX_4_merge$Seen.factor)
OTC_4_merge$`Medicine Notes` <- if_else(str_detect(OTC_4_merge$`Medicine Notes`, "Prescr"), "", OTC_4_merge$`Medicine Notes`)
OTC_4_merge$`Medicine Notes` <- if_else(str_detect(OTC_4_merge$`Medicine Notes`, "Swap"), "", OTC_4_merge$`Medicine Notes`)
RX_4_merge$`Medicine Notes` <- if_else(str_detect(RX_4_merge$`Medicine Notes`,"#"), "",RX_4_merge$`Medicine Notes`)
RX_4_merge$`Medicine Notes` <- if_else(str_detect(RX_4_merge$`Medicine Notes`,"16."), "",RX_4_merge$`Medicine Notes`)
RX_4_merge <- RX_4_merge[,-c(5)]
OTC_4_merge <- OTC_4_merge[,-c(5)]
RX_4_merge$Medication.factor<-"RX"
OTC_4_merge$Medication.factor<-"OTC"

Only Rx for now…

NO_RX_MEDS<-NO_RX_MEDS[!duplicated(NO_RX_MEDS$`Record ID`),]
NO_RX_MEDS<-NO_RX_MEDS[rep(seq_len(nrow(NO_RX_MEDS)), each = 16), ]
rownames(NO_RX_MEDS)<-NULL
NO_RX_MEDS$Medication.factor<-"RX" 
NO_RX_MEDS<-NO_RX_MEDS %>% dplyr::select(`Record ID`, Medication.factor )
NO_RX_MEDS$`Record ID`<-as.factor(NO_RX_MEDS$`Record ID`)
NO_RX_MEDS<-NO_RX_MEDS %>% 
  dplyr::select(`Record ID`,Medication.factor) %>%
    group_by(`Record ID`, Medication.factor, add=T) %>% summarise("variable"=1:nrow(.))
NO_RX_MEDS <-NO_RX_MEDS[NO_RX_MEDS$variable<17,]
NO_RX_MEDS$index<-paste0(NO_RX_MEDS$`Record ID`, "_",NO_RX_MEDS$Medication.factor,NO_RX_MEDS$variable)
write_csv(NO_RX_MEDS,"/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/NO_RX_MEDS.csv")

Unseen Medication Factor & List

rownames(RX_NORM_DF)<-NULL
RX_NORM_DF$variable<-as.character(RX_NORM_DF$variable)
RX_NORM_DF$`Unseen Medications`<-str_replace(RX_NORM_DF$`Unseen Medications`, "Aplrazolam", "Alprazolam")
RX_NORM_DF$`Unseen Medications`<-str_replace(RX_NORM_DF$`Unseen Medications`, "Diavan", "Diovan")
RX_NORM_DF$Check_Unseen_Medications<-gsub("\\s*(\\([^()]*(?:(?1)[^()]*)*\\))", "", RX_NORM_DF$`Unseen Medications`, perl=TRUE)
RX_NORM_DF$Check_Unseen_Medications<-str_remove_all(RX_NORM_DF$Check_Unseen_Medications, "[/]")
RX_NORM_DF$Check_Unseen_Medications<-str_remove_all(RX_NORM_DF$Check_Unseen_Medications, "[/]")
RX_NORM_DF$Check_Unseen_Medications<-str_remove(RX_NORM_DF$Check_Unseen_Medications, regex("MedicationsSupplements|Medications|Medication|Medciation|meds|med|Rx|OTCS|OTC|Supplements|supplement", ignore_case =T))
RX_NORM_DF$Check_Unseen_Medications<-str_remove(RX_NORM_DF$Check_Unseen_Medications, regex("MedicationsSupplements|Medications|Medication|Medciation|meds|med|Rx|OTCS|OTC|Supplements|supplement", ignore_case =T))
RX_NORM_DF$Check_Unseen_Medications<-str_replace(RX_NORM_DF$Check_Unseen_Medications, " and ", ",")
RX_NORM_DF$Check_Unseen_Medications<-str_replace(RX_NORM_DF$Check_Unseen_Medications, "[+]", ",")
RX_NORM_DF$Check_Unseen_Medications<-str_replace(RX_NORM_DF$Check_Unseen_Medications, "[&]", ",")
RX_NORM_DF$Check_Unseen_Medications<-str_replace(RX_NORM_DF$Check_Unseen_Medications, " , ", ",")
RX_NORM_DF$Check_Unseen_Medications<-str_replace(RX_NORM_DF$Check_Unseen_Medications, ", ", ",")
RX_NORM_DF$Check_Unseen_Medications<-str_replace(RX_NORM_DF$Check_Unseen_Medications, ", ", ",")
RX_NORM_DF$Check_Unseen_Medications<-str_remove(RX_NORM_DF$Check_Unseen_Medications, regex("medciation |medications |medciation|supplement |supplements |supplements|med |meds |med", ignore_case =T))
RX_NORM_DF$Check_Unseen_Medications<-str_replace(RX_NORM_DF$Check_Unseen_Medications, "--", "-")
RX_NORM_DF$Check_Unseen_Medications<-str_remove_all(RX_NORM_DF$Check_Unseen_Medications, regex("[#]", ignore_case =T ))
RX_NORM_DF$Check_Unseen_Medications<-trimws(RX_NORM_DF$Check_Unseen_Medications)
RX_NORM_DF$Check_Unseen_Medications<-str_replace_all(RX_NORM_DF$Check_Unseen_Medications,pattern =  " - ", "-" )
RX_NORM_DF$Check_Unseen_Medications<-if_else(str_starts(RX_NORM_DF$Check_Unseen_Medications,"OCT "), substring(RX_NORM_DF$Check_Unseen_Medications, 5, str_length(RX_NORM_DF$Check_Unseen_Medications)), RX_NORM_DF$Check_Unseen_Medications)
RX_NORM_DF<-RX_NORM_DF %>% arrange(str_count(Check_Unseen_Medications, ","))
RX_NORM_DF$Check_Unseen_Medications<-str_replace(RX_NORM_DF$Check_Unseen_Medications, "Vicks-NyQuil,DayQuil", "Vicks NyQuil DayQuil")

RX_NORM_DF$Check_Unseen_Medications<-str_replace(RX_NORM_DF$Check_Unseen_Medications, "generic,1 sprayday nostril,8", "")
RX_NORM_DF$Check_Unseen_Medications<-if_else(is.na(RX_NORM_DF$`Unseen Medications`),"Not Applicable", RX_NORM_DF$Check_Unseen_Medications)
RX_NORM_DF$variable<-if_else(RX_NORM_DF$variable=="0", "1", RX_NORM_DF$variable)
ENDORCE_Q<-RAW %>% dplyr::select(`Record ID`,`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`,
                          `Did the participant take any prescription medications in the past 4 weeks?` ,
                          `Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`)
RX_NORM_DF<-full_join(RX_NORM_DF,ENDORCE_Q)


RX_NORM_DF$Check_Unseen_Medications<-if_else(RX_NORM_DF$`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`=="No", "Not Applicable", RX_NORM_DF$Check_Unseen_Medications)
RX_NORM_DF$Check_Unseen_Medications<-if_else(RX_NORM_DF$`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`=="No", "Not Applicable", RX_NORM_DF$Check_Unseen_Medications)
RX_NORM_DF$Check_Unseen_Medications<-if_else(RX_NORM_DF$Medication.factor=="RX" & RX_NORM_DF$`Did the participant take any prescription medications in the past 4 weeks?`=="No" , "Not Applicable", RX_NORM_DF$Check_Unseen_Medications)
RX_NORM_DF$Check_Unseen_Medications<-if_else(RX_NORM_DF$Medication.factor=="OTC" & RX_NORM_DF$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`=="No" , "Not Applicable", RX_NORM_DF$Check_Unseen_Medications)
RX_NORM_DF$Check_Unseen_Medications<-if_else(str_detect(RX_NORM_DF$Check_Unseen_Medications,"viewed on participant's phone"), "Not Applicable", RX_NORM_DF$Check_Unseen_Medications)
#RX_NORM_DF %>%filter(RX_NORM_DF$Medication.factor=="" & RX_NORM_DF$`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`=="Yes" ) )

RX_NORM_DF$Unseen_Medication.List<-if_else(RX_NORM_DF$Check_Unseen_Medications!="Not Applicable", "Unchecked",RX_NORM_DF$Check_Unseen_Medications )
i=1
for (i in 1:nrow(RX_NORM_DF)) {
  if (RX_NORM_DF$Check_Unseen_Medications[i]=="Not Applicable") { next }
  if (RX_NORM_DF$Unseen_Medication.List[i]!="Unchecked") { next }
  if (is.character(RX_NORM_DF$Check_Unseen_Medications[i]) && str_detect(RX_NORM_DF$Check_Unseen_Medications[i], regex( c("JAN|FEB|MAR|APR|JUN|JUL|SEP|OCT|NOV|DEC"),ignore_case = T))) {
     RX_NORM_DF$Unseen_Medication.List[i]<-"Manually Check cog1 form"
  } else {
    ID<- RX_NORM_DF$`Record ID`[i]
    UNSEEN <- as.tibble(RX_NORM_DF$Check_Unseen_Medications[i])
    Ncommas<-str_count(UNSEEN$value, ",")
    Ndashes<-str_count(UNSEEN$value, "-")
    Nnumbers<-str_count(UNSEEN$value, "[:digit:]")
    Ncolon<-str_count(UNSEEN$value, "[:]")

    Ncharacters<-str_count(UNSEEN$value, "[:alpha:]")
    UNSEEN_list<-str_split_fixed(UNSEEN,",", n=str_count(UNSEEN, ",")+1)

    if (Ncommas==0 && Ndashes==0 && Ncharacters==0 && str_length(UNSEEN)<=2) {
      RX_NORM_DF$Unseen_Medication.List[i]<-RX_NORM_DF$Check_Unseen_Medications[i] 
       } 
    else if (Ncommas==0 && Nnumbers==0 && Ndashes==0 &&  Ncharacters>2  && str_length(UNSEEN)>4 && str_length(UNSEEN)<35) {
     x<- substr(UNSEEN, 1,5)
      Unseen_Medication <-RX_NORM_DF %>% 
        filter(`Record ID`==ID & str_starts(value, regex(x, ignore_case = T))) %>% dplyr::select(variable) %>% unlist()
      RX_NORM_DF$Unseen_Medication.List[i]<-paste(Unseen_Medication)
       }
    else if (Ncharacters==0 && Ncommas==0 && Ndashes==1 && Nnumbers>1) {
      UNSEEN<- UNSEEN %>%  separate(value,  into = c("y", "z"), "-", remove = FALSE, extra = "merge")
      RX_NORM_DF$Unseen_Medication.List[i] <- paste(seq.int(UNSEEN$y,UNSEEN$z), collapse = ",") 
    }
    else if (Ncharacters==0 && Ncommas==0 && Ndashes==0 && Nnumbers>1 && Ncolon==1) {
      UNSEEN<- UNSEEN %>%  separate(value,  into = c("y", "z"), ":", remove = FALSE, extra = "merge")
      RX_NORM_DF$Unseen_Medication.List[i] <- paste(seq.int(UNSEEN$y,UNSEEN$z), collapse = ",") 
       }
   else if (Nnumbers==1 && str_length(UNSEEN)==1)  { 
      RX_NORM_DF$Unseen_Medication.List[i]<-RX_NORM_DF$Check_Unseen_Medications[i]
    }
   else if (Ncharacters==0 && Nnumbers>0 &  Ncommas>0 && Ndashes==0) {
       RX_NORM_DF$Unseen_Medication.List[i]<-paste(UNSEEN)
   }
   else if (Ncharacters==0 && Nnumbers>0 &  Ncommas==1 && Ndashes==2) {
        UNSEEN.df<- UNSEEN %>%  separate(value,  into = c("y", "z"), ",", remove = FALSE, extra = "merge") 
                  UNSEEN_range.df<- UNSEEN.df %>%  separate(y,  into = c("y", "z"), "-", remove = FALSE, extra = "merge") 
                  range1 <- paste(seq.int(UNSEEN_range.df$y,UNSEEN_range.df$z), collapse = ",") 
                  
                  UNSEEN_range.df<- UNSEEN.df %>%  separate(z,  into = c("y", "z"), "-", remove = FALSE, extra = "merge") 
                  range2 <- paste(seq.int(UNSEEN_range.df$y,UNSEEN_range.df$z), collapse = ",")
                  RX_NORM_DF$Unseen_Medication.List[i]<- paste0(range1,",",range2 )
        }
   else if (Ncharacters==0 && Nnumbers>0 &  Ncommas==1 && Ndashes==1) {
        UNSEEN.df<- UNSEEN %>%  separate(value,  into = c("y", "z"), ",", remove = FALSE, extra = "merge") 
        if (str_detect(UNSEEN.df$y, "-")) {
                  UNSEEN_range.df<- UNSEEN.df %>%  separate(y,  into = c("y", "z"), "-", remove = FALSE, extra = "merge") 
                  RX_NORM_DF$Unseen_Medication.List[i] <- paste(seq.int(UNSEEN_range.df$y,UNSEEN_range.df$z), collapse = ",") 
                  RX_NORM_DF$Unseen_Medication.List[i]<-paste0( RX_NORM_DF$Unseen_Medication.List[i], ",",UNSEEN.df$z)
        } else {
                  UNSEEN_range.df<- UNSEEN.df %>%  separate(z,  into = c("y", "z"), "-", remove = FALSE, extra = "merge") 
                  RX_NORM_DF$Unseen_Medication.List[i] <- paste(seq.int(UNSEEN_range.df$y,UNSEEN_range.df$z), collapse = ",")
                  RX_NORM_DF$Unseen_Medication.List[i]<-paste0(RX_NORM_DF$Unseen_Medication.List[i], ",",UNSEEN.df$y)
        }}}}

for (i in 1:nrow(RX_NORM_DF)) {
  if (RX_NORM_DF$Check_Unseen_Medications[i]=="Not Applicable") { next }
  if (RX_NORM_DF$Unseen_Medication.List[i]!="Unchecked") { next }
  if (RX_NORM_DF$Check_Unseen_Medications[i]=="Manually Check cog1 form") { next }
else {
  ID<- RX_NORM_DF$`Record ID`[i]
  UNSEEN <- as.tibble(RX_NORM_DF$Check_Unseen_Medications[i])
    Ncommas<-str_count(UNSEEN$value, ",")
    Ndashes<-str_count(UNSEEN$value, "-")
    Nnumbers<-str_count(UNSEEN$value, "[:digit:]")
    Ncharacters<-str_count(UNSEEN$value, "[:alpha:]")
    UNSEEN_list<-str_split_fixed(UNSEEN,",", n=str_count(UNSEEN, ",")+1)
          for (j in 1:length(UNSEEN_list)) { 
            if (j==1) {
            Unseen_Medication_n<-trimws(UNSEEN_list[j])
             x <-substring(Unseen_Medication_n,1,5)
            Unseen_Medication_n.var <- RX_NORM_DF %>%
              filter(`Record ID`==ID & str_starts(Drug,regex(x, ignore_case = T))) %>%
                       dplyr::select(variable) %>% unlist()
            RX_NORM_DF$Unseen_Medication.List[i]<-paste(Unseen_Medication_n.var)
            } else {
              Unseen_Medication_n<-trimws(UNSEEN_list[j])
              first5 <-substring(Unseen_Medication_n,1,5)
              Unseen_Medication_n.var <- RX_NORM_DF %>%
                filter(`Record ID`==ID & str_starts(Drug,regex(first5, ignore_case = T)))
              RX_NORM_DF$Unseen_Medication.List[i]<-paste(RX_NORM_DF$Unseen_Medication.List[i],Unseen_Medication_n.var$variable, sep=",")
         }}}
}

RX_NORM_DF$Unseen_Medication.List<-if_else(str_detect(RX_NORM_DF$Unseen_Medication.List,",,"), 
                                             "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27", 
                                             RX_NORM_DF$Unseen_Medication.List)

RX_NORM_DF$Unseen_medication<-""
for (i in 1:nrow(RX_NORM_DF)) {
  print(i)
  row<-RX_NORM_DF[i,]
  OTCRX<-row$Medication.factor
  ID<- row$`Record ID`
  var<-row$variable
 list_unseen<-unlist(str_split( RX_NORM_DF$Unseen_Medication.List[i], ","))
  if (is.na(RX_NORM_DF$Unseen_Medication.List[i])) { next } 
  else if (RX_NORM_DF$Unseen_Medication.List[i]=="Not Applicable") { next }
  else if (RX_NORM_DF$Unseen_Medication.List[i]=="Manually Check cog1 form") { next }
  else {
    for (j in 1:length(list_unseen)) {
      print(list_unseen[j])
      unseen_n<-list_unseen[j]
      RX_NORM_DF$Unseen_medication<- if_else(RX_NORM_DF$`Record ID`==ID &
                                                  RX_NORM_DF$variable==var &
                                                  RX_NORM_DF$Medication.factor==OTCRX &
                                                  RX_NORM_DF$variable==unseen_n , "1",RX_NORM_DF$Unseen_medication)

    }

  }
}

RX_NORM_DF$Unseen_medication<-if_else(RX_NORM_DF$`Did the participant take any prescription medications in the past 4 weeks?`=="No" & RX_NORM_DF$Medication.factor=="RX","-99993, Not Applicable", RX_NORM_DF$Unseen_medication)
RX_NORM_DF$Unseen_medication<-if_else(RX_NORM_DF$`Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`=="No" & RX_NORM_DF$Medication.factor=="OTC","-99993, Not Applicable", RX_NORM_DF$Unseen_medication)

RX_NORM_DF$Unseen_medication<-if_else(RX_NORM_DF$Unseen_Medication.List=="Not Applicable", "-99993, Not Applicable", RX_NORM_DF$Unseen_medication)
RX_NORM_DF$Unseen_medication<-if_else(RX_NORM_DF$`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`=="No", "-99993, Not Applicable", RX_NORM_DF$Unseen_medication)
RX_NORM_DF$Unseen_medication<-if_else(RX_NORM_DF$Unseen_medication=="", "0", RX_NORM_DF$Unseen_medication)
RX_NORM_DF$Unseen_medication.factor<-factor(RX_NORM_DF$Unseen_medication, levels=c(0,1), labels=c("seen", "unseen"))


TMP<-RX_NORM_DF %>% dplyr::select(`Record ID`,`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`,
                        `Did the participant take any prescription medications in the past 4 weeks?`,
                         `Did the participant take any non-prescription (OTC) medications in the past 4 weeks?`,
                           Medication.factor, variable, Unseen_medication.factor) %>%
  pivot_wider(.,id_cols = c("Record ID", "Did study participant take any prescription or non-prescription medications in the past 4 weeks?",
                             "Did the participant take any prescription medications in the past 4 weeks?",
                           "Did the participant take any non-prescription (OTC) medications in the past 4 weeks?"),
              names_from = c("Medication.factor", "variable"), values_from = "Unseen_medication.factor")

write_csv(TMP, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_FULL_unseen_medlist.csv")



names(RX_NORM_DF)[6]<-"Were all Prescription Medication Containers Seen?"
TMPrx<-RX_NORM_DF %>% filter(Medication.factor=="RX") 
TMPrx<-TMPrx%>% dplyr::select(`Record ID`,Medication.factor,`Were all Prescription Medication Containers Seen?`,`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`,
                           `Did the participant take any prescription medications in the past 4 weeks?`, variable, Unseen_medication.factor) %>%
  pivot_wider(.,id_cols = c("Record ID", "Did study participant take any prescription or non-prescription medications in the past 4 weeks?",
                             "Did the participant take any prescription medications in the past 4 weeks?", "Were all Prescription Medication Containers Seen?"),
              names_from = c("Medication.factor", "variable"), values_from = "Unseen_medication.factor")
write_csv(TMPrx,"/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_RX_unseen_medlist.csv")


names(RX_NORM_DF)[6]<-"Were all OTC Medication Containers Seen?"
RX_NORM_DF$Unseen_medication<-if_else(RX_NORM_DF$`Were all OTC Medication Containers Seen?`=="Yes","", RX_NORM_DF$Unseen_medication)
RX_NORM_DF$Unseen_medication.factor<-factor(RX_NORM_DF$Unseen_medication, levels=c(0,1), labels=c("seen", "unseen"))
TMPotc<-RX_NORM_DF %>% filter(Medication.factor=="OTC") 
TMPotc<-TMPotc%>% dplyr::select(`Record ID`,Medication.factor,"Were all OTC Medication Containers Seen?",`Did study participant take any prescription or non-prescription medications in the past 4 weeks?`,
                           `Did the participant take any prescription medications in the past 4 weeks?`, variable, Unseen_medication.factor) %>%
  pivot_wider(.,id_cols = c("Record ID", "Did study participant take any prescription or non-prescription medications in the past 4 weeks?",
                             "Did the participant take any prescription medications in the past 4 weeks?", "Were all OTC Medication Containers Seen?"),
              names_from = c("Medication.factor", "variable"), values_from = "Unseen_medication.factor")

RX_NORM_DF %>% dplyr::select(`Record ID`, Medication.factor, variable, Unseen_medication) %>%
  pivot_wider(.,id_cols = c("Record ID"),
              names_from = c("Medication.factor", "variable"), values_from = "Unseen_medication")

unseen_medlist<-RX_NORM_DF %>% dplyr::select( `Record ID`,Medication.factor, variable,Unseen_Medication.List, Check_Unseen_Medications,Unseen_medication, Unseen_medication.factor)
unseen_medlist<-unseen_medlist[!duplicated(unseen_medlist),]
RX_NORM_DF<-left_join(RX_NORM_DF, unseen_medlist)
write.csv(RX_NORM_DF,"/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/BS_PREPROC_LONG.csv")

PRN.factor

RX_NORM_DF<-plyr::rbind.fill(RX_4_merge,OTC_4_merge)

RX_NORM_DF$value<-str_replace_all(RX_NORM_DF$value, "  ", " ")
RX_NORM_DF$RAW<-RX_NORM_DF$value

RX_NORM_DF$Drug<-sapply(strsplit(RX_NORM_DF$value, ","), "[", 1)
RX_NORM_DF$value<-str_remove(RX_NORM_DF$value, RX_NORM_DF$Drug)

RX_NORM_DF$value2<-sapply(strsplit(RX_NORM_DF$value, ","), "[")


RX_NORM_DF$value<-str_replace(RX_NORM_DF$value, fixed("(trospium chloride) :" ), "(trospium chloride), :" )




mins<-c("calcium acetate", "calcium", "magnesium", "zinc","Iron Zinc","Folic Acid","Biotin Supplement","Calcium","Magnesium", "Zinc","Skin")
esxp<-paste0("(",paste(mins, collapse = "|"),")","(,)","(\\s)","(",paste(mins, collapse = "|"),")")

RX_NORM_DF$value2 <- gsub(esxp, "\\1\\3\\4",RX_NORM_DF$value, perl=TRUE)
#RAW <-  RAW %>% mutate_at(vars(mis_vars), ~ gsub("(\\d)(x|X)(\\s)","\\1\\3",.))

RX_NORM_DF$value

#RX_NORM_DF$value<-str_replace(RX_NORM_DF$value, "triamterene 75","triamterene, :75")
RX_NORM_DF$Alt_Dose<-str_extract(RX_NORM_DF$value,regex("gummies|gummmy|soft gels|soft gel|softgels|softgel| gel", ignore_case = T))

RX_NORM_DF$Drug<-str_replace(RX_NORM_DF$Drug,"estrogens conjugated (USP) / medroxyprogesterone","estrogens, conjugated (USP) / medroxyprogesterone")


RX_NORM_DF$value<-str_remove(RX_NORM_DF$value, regex("gummy|soft gels|soft gel|softgels|softgel| gel", ignore_case = T))

RX_NORM_DF$index<-paste0(RX_NORM_DF$`Record ID`,"_",RX_NORM_DF$Medication.factor,RX_NORM_DF$variable)
RX_NORM_DF$Drug<-str_replace_all(RX_NORM_DF$Drug, "  ", " ")
RX_NORM_DF$PRN.factor<-if_else(str_detect(RX_NORM_DF$value, regex("PRN|As Needed|Occationally|with symptoms|when needed", ignore_case = T)), 1,0)

RX_NORM_DF$value<-str_remove(RX_NORM_DF$value, fixed("()"))

RX_NORM_DF$value<-trim_periodcommas(RX_NORM_DF$value)


# Tapered dose 
RX_NORM_DF$AltTaper_dose.factor<-if_else(str_detect(RX_NORM_DF$value, regex("Alternating|dose pack| max|1 more month|   
Will begin|tomorrow|depending|was taking|will ", ignore_case = T)), 1,0)


### IC Factor   
RX_NORM_DF$IC.factor<-if_else(str_starts(RX_NORM_DF$value, regex("IC ", ignore.case=T)), 1,0)
RX_NORM_DF$value<-str_remove(RX_NORM_DF$value, regex(" IC| IC,"))
RX_NORM_DF$variable<-if_else(RX_NORM_DF$variable=="0", "1", RX_NORM_DF$variable)
row.names(RX_NORM_DF)<-NULL
RX_NORM_DF$value<-na_if(RX_NORM_DF$value,"")

reattach_long<-RX_NORM_DF %>% filter(is.na(RX_NORM_DF$value))
ALL_RX_INDEX<-RX_NORM_DF %>% filter(Medication.factor=="RX")
RX_NORM_DF<-RX_NORM_DF %>% filter(!is.na(RX_NORM_DF$value))
RX_NORM_DF$value<-trim_periodcommas(RX_NORM_DF$value)
RX_NORM_DF$value<-gsub("(\\s)(mg|mcg|mL|MEQ|IU)", "\\2", RX_NORM_DF$value)

value1<-RX_NORM_DF$value
TMP <- str_split_fixed(value1,regex("PRN for |Prescribed:|Taken fo:|Taken for;|Prescribed fir:|Taken for:|Prescribed for: |Prescibed for:|took to|for:|Prescribed for|, for ", ignore_case = T), n=2)
mat   <-  matrix(unlist(TMP), ncol=2)
melt.df.2    <-  as.data.frame(mat)
RX_NORM_DF$Reason <- trim_periodcommas(melt.df.2$V2)
RX_NORM_DF$value <- trim_periodcommas(melt.df.2$V1)
RX_NORM_DF$form<-if_else(str_ends(RX_NORM_DF$value, regex("[0-9]|[1-9]/[0-9]")),
                          substring(RX_NORM_DF$value, str_length(RX_NORM_DF$value)-2, 
                                    str_length(RX_NORM_DF$value)), "")

RX_NORM_DF$form<-str_remove_all(RX_NORM_DF$form, "[A-Za-z]")
RX_NORM_DF$form<-trim_periodcommas(RX_NORM_DF$form)
RX_NORM_DF$value<-if_else(str_ends(RX_NORM_DF$value, RX_NORM_DF$form), substring(RX_NORM_DF$value, 1, str_length(RX_NORM_DF$value)-str_length(RX_NORM_DF$form)), RX_NORM_DF$value)
RX_NORM_DF$value<-trim_periodcommas(RX_NORM_DF$value)
RX_NORM_DF$form<-na_if(RX_NORM_DF$form, "")
RX_NORM_DF$Reason<-na_if(RX_NORM_DF$Reason, "")
RX_NORM_DF$value<-trim_periodcommas(RX_NORM_DF$value)
RX_NORM_DF$value<-if_else(str_ends(RX_NORM_DF$value, regex("[0-9]")),
        substring(RX_NORM_DF$value, 1,str_length(RX_NORM_DF$value)-1),
        RX_NORM_DF$value)
RX_NORM_DF$value<-trim_periodcommas(RX_NORM_DF$value)
RX_NORM_DF$value<-trim_periodcommas(RX_NORM_DF$value)
RX_NORM_DF$value<-str_remove(RX_NORM_DF$value, fixed(RX_NORM_DF$Drug))
RX_NORM_DF$value<-trim_periodcommas(RX_NORM_DF$value)
RX_NORM_DF$value<-str_replace_all(RX_NORM_DF$value, fixed("("), " ")
RX_NORM_DF$value<-str_replace_all(RX_NORM_DF$value, fixed(")"), " ")
RX_NORM_DF$value<-str_replace_all(RX_NORM_DF$value, fixed(": :"), ":")
RX_NORM_DF$value<-str_replace_all(RX_NORM_DF$value, fixed("::"), ":")

Strength_Unit Dose - Using semi colon anchor set in pre-processing

RX_NORM_DF$semi<-str_count(RX_NORM_DF$value, ":")

RX_NORM_DF$Strength_Unit_Dose_P<-sapply(strsplit(RX_NORM_DF$value,")"), "[",1)
TMP<-as.data.frame(str_split_fixed(RX_NORM_DF$Strength_Unit_Dose_P, ",\\s*(?=[^,]+$)", n = 2))
TMP$RAW<-RX_NORM_DF$Strength_Unit_Dose_P

RX_NORM_DF$Strength_Unit_Dose<-sapply(strsplit(RX_NORM_DF$value,","), "[",1)
RX_NORM_DF$Strength_Unit_Dose<-if_else(str_detect(RX_NORM_DF$Strength_Unit_Dose, regex("eye|nighttime|wk|daily| year|sparingly| day|night|month| wks|week| AM| PM|drop|PRN|hrs", ignore_case=T)), "", RX_NORM_DF$Strength_Unit_Dose)
#RX_NORM_DF$Strength_Unit_Dose<-str_replace_all(RX_NORM_DF$Strength_Unit_Dose, ":","")
#RX_NORM_DF$value<-str_replace_all(RX_NORM_DF$value, ":","")

RX_NORM_DF$Strength_Unit_Dose<-na_if(RX_NORM_DF$Strength_Unit_Dose, "")
RX_NORM_DF$Dose_Freq<-if_else(!is.na(RX_NORM_DF$Strength_Unit_Dose), 
        str_remove(RX_NORM_DF$value, RX_NORM_DF$Strength_Unit_Dose),
        RX_NORM_DF$value)
RX_NORM_DF$Dose_Freq<-trim_periodcommas(RX_NORM_DF$Dose_Freq)

RX_NORM_DF$Dose_1<-if_else(str_detect(RX_NORM_DF$Strength_Unit_Dose, "sprays|drop|eye|puff"),RX_NORM_DF$Strength_Unit_Dose,"")

RX_NORM_DF$Strength_Unit<-if_else(RX_NORM_DF$Strength_Unit_Dose==RX_NORM_DF$Dose_1, "", RX_NORM_DF$Strength_Unit_Dose)
RX_NORM_DF$Strength_Unit<-na_if(RX_NORM_DF$Strength_Unit, "")
RX_NORM_DF$Dose_2<-if_else(RX_NORM_DF$Dose_1=="" & 
          str_detect(RX_NORM_DF$Dose_Freq, regex("sprays|drop|eye|puff", ignore_case=T)),
        RX_NORM_DF$Dose_Freq, RX_NORM_DF$Dose_1)

#RX_NORM_DF$Dose_2<-str_remove(RX_NORM_DF$Dose_2, "PRN")
RX_NORM_DF$Dose_2<-gsub("([1-9])(\\s)([A-Za-z]+)", "\\1\\3",RX_NORM_DF$Dose_2)
RX_NORM_DF$Dose_2<-gsub("(\\s)(/)(\\s)", "\\2", RX_NORM_DF$Dose_2)
RX_NORM_DF$Dose_2<-trim_periodcommas(RX_NORM_DF$Dose_2)
RX_NORM_DF$Dose_2<-str_replace_all(RX_NORM_DF$Dose_2, regex(" every | per | in each | each "), "/")
RX_NORM_DF$Dose_2<-str_replace_all(RX_NORM_DF$Dose_2, fixed("hrs"), "hours")
RX_NORM_DF$Dose_2<-str_replace_all(RX_NORM_DF$Dose_2, fixed("hr"), "hour")
RX_NORM_DF$Dose_2<-str_replace(RX_NORM_DF$Dose_2, fixed("/every"), "/")
RX_NORM_DF$Dose_2<-str_replace(RX_NORM_DF$Dose_2, fixed("/each"), "/")
RX_NORM_DF$Dose_2<-str_replace(RX_NORM_DF$Dose_2, fixed("/day"), " /day")
RX_NORM_DF$App_Area<-str_extract(RX_NORM_DF$Dose_2, regex("L eye|R eye|both eyes|eye|nostril", ignore_case = T))
RX_NORM_DF$Dose_2<-gsub("([1-9])(\\s)(/)", "\\1\\3",RX_NORM_DF$Dose_2)
RX_NORM_DF$Dose_2<-str_replace(RX_NORM_DF$Dose_2, paste0(RX_NORM_DF$App_Area), " ")
RX_NORM_DF$Dose_2<-trim_periodcommas(RX_NORM_DF$Dose_2)
RX_NORM_DF$Dose_2<-str_replace_all(RX_NORM_DF$Dose_2, "  "," ")
RX_NORM_DF$TMP<-sapply(strsplit(RX_NORM_DF$Dose_2,RX_NORM_DF$App_Area), "[",1)

RX_NORM_DF$Dosing_Unit<-str_extract(RX_NORM_DF$Dose_2, regex("sprays|spray|puffs|puff|drops|drop", ignore_case = T))

RX_NORM_DF$Dose_3<-str_replace(RX_NORM_DF$Dose_2,RX_NORM_DF$Dosing_Unit, "---")
RX_NORM_DF$TMP<-sapply(strsplit(RX_NORM_DF$Dose_3,"---"), "[",1)
RX_NORM_DF$Dose<-paste0(RX_NORM_DF$TMP, RX_NORM_DF$Dosing_Unit)
RX_NORM_DF$Dose<-na_if(RX_NORM_DF$Dose,"NANA")
RX_NORM_DF$Dose_2<-str_remove(RX_NORM_DF$Dose_2, fixed(RX_NORM_DF$Dose))
RX_NORM_DF$Dose_2<-str_remove(RX_NORM_DF$Dose_2, "PRN")
RX_NORM_DF$Dose_2<-str_replace(RX_NORM_DF$Dose_2, "12hours", " 2/day" )


RX_NORM_DF$Dose_2<-trim_periodcommas(RX_NORM_DF$Dose_2)
RX_NORM_DF$Dose_2<-trim_periodcommas(RX_NORM_DF$Dose_2)

RX_NORM_DF$Dose_2<-trim_periodcommas(RX_NORM_DF$Dose_2)
RX_NORM_DF<-RX_NORM_DF %>% dplyr::select(-TMP, -Dose_3)
RX_NORM_DF$Dose2<-if_else(str_length(RX_NORM_DF$Dose_2)==1 & 
          str_detect(RX_NORM_DF$Dose_2, regex("[1-9]")),
        paste0(RX_NORM_DF$Dose_2, RX_NORM_DF$Dosing_Unit, "s"), 
        RX_NORM_DF$Dose)
RX_NORM_DF$Dose_2<-if_else(str_length(RX_NORM_DF$Dose_2)==1 & 
          str_detect(RX_NORM_DF$Dose_2, regex("[1-9]")),
          "", RX_NORM_DF$Dose_2)
RX_NORM_DF$Dose<-RX_NORM_DF$Dose2
RX_NORM_DF<-RX_NORM_DF %>% dplyr::select(-Dose2)
RX_NORM_DF$Dose_2<-trim_periodcommas(RX_NORM_DF$Dose_2)
RX_NORM_DF$Dose_2<-na_if(RX_NORM_DF$Dose_2,"")
RX_NORM_DF$Dose_3<-if_else(str_count(RX_NORM_DF$Dose_2, " ")==0 &
          !str_detect(RX_NORM_DF$Dose_2, regex("[0-9]")),
        paste0("1/",RX_NORM_DF$Dose_2), RX_NORM_DF$Dose_2)

RX_NORM_DF$Dose_2<-if_else(!str_detect(word(RX_NORM_DF$Dose_3,1), "/"), 
        paste0("1/", RX_NORM_DF$Dose_3),
        RX_NORM_DF$Dose_3)
RX_NORM_DF$Freq_1<-str_remove(RX_NORM_DF$Dose_2, "puff")
RX_NORM_DF<-RX_NORM_DF %>% dplyr::select(-Dose_2, -Dose_3, -Dose_1)
RX_NORM_DF$Dose_Freq<-gsub("([1-9])(\\s)(puffs|sprays|puff|spray|drops|drop)", "\\1\\3", RX_NORM_DF$Dose_Freq)
RX_NORM_DF$Freq_1<-str_replace(RX_NORM_DF$Freq_1,"1/6hours", "4/day" )
RX_NORM_DF$Freq_1<-str_replace(RX_NORM_DF$Freq_1,"1/AM 1/PM", "2/day" )

RX_NORM_DF$Freq_1<-if_else(RX_NORM_DF$Freq_1=="1/AM"|
                                 RX_NORM_DF$Freq_1=="1/PM"|
                                 RX_NORM_DF$Freq_1=="1/morning"|
                                 RX_NORM_DF$Freq_1=="1/evening"|
                                 RX_NORM_DF$Freq_1=="1/night",
                               "1/day",RX_NORM_DF$Freq_1  )

RX_NORM_DF$App_Area<-if_else(!str_detect(RX_NORM_DF$App_Area, regex("L |R ")), paste0(RX_NORM_DF$App_Area, "s"), RX_NORM_DF$App_Area)
RX_NORM_DF$App_Area<-str_replace(RX_NORM_DF$App_Area, "both eyess", "eyes")

Freqency Dose (w/ tapered dose factor…)

RX_NORM_DF$Tapered.factor<-if_else(str_detect(RX_NORM_DF$RAW,
                                              regex(" now| then|for 1week", ignore_case = T)), 1,0)
RX_NORM_DF<-RX_NORM_DF %>% separate(Dose_Freq, into=c("Freq_1_0", "Freq_2"), "now |now,",remove = F)
RX_NORM_DF$Freq_current<-if_else(is.na(RX_NORM_DF$Freq_1), RX_NORM_DF$Freq_1_0,  RX_NORM_DF$Freq_1)
RX_NORM_DF<-RX_NORM_DF %>% dplyr::select(-Freq_1_0)
RX_NORM_DF$Freq_current<-trim_periodcommas(RX_NORM_DF$Freq_current)

RX_NORM_DF$Freq_current<-str_replace(RX_NORM_DF$Freq_current,regex("every 6months|every 6 months"),"2/year" )
RX_NORM_DF$Freq_current<-str_replace(RX_NORM_DF$Freq_current,regex("twice monthly|1/ every 2weeks", ignore_case=T),"2/month" )
RX_NORM_DF$Freq_current<-str_replace(RX_NORM_DF$Freq_current,"1/ daily","1/day" )
RX_NORM_DF$Freq_current<-str_replace(RX_NORM_DF$Freq_current,"5 days / week","5/week" )
RX_NORM_DF$Freq_current<-str_replace_all(RX_NORM_DF$Freq_current,"/ ","/" )
RX_NORM_DF$Freq_current<-str_replace_all(RX_NORM_DF$Freq_current," /","/" )
RX_NORM_DF$Freq_current<-trim_periodcommas(RX_NORM_DF$Freq_current)
RX_NORM_DF$comma<-str_count(RX_NORM_DF$Freq_current,",")
"5 days / week"



RX_NORM_DF$Freq_current<-str_replace(RX_NORM_DF$Freq_current,"1/ PRN","PRN")
#RX_NORM_DF$Freq_current<-str_remove(RX_NORM_DF$Freq_current, "PRN")
RX_NORM_DF$Freq_current<-trim_periodcommas(RX_NORM_DF$Freq_current)
RX_NORM_DF$Freq_2<-if_else(is.na(RX_NORM_DF$Freq_2), sapply(str_split(RX_NORM_DF$Freq_current," now,"),"[",2), RX_NORM_DF$Freq_2)
RX_NORM_DF$Strength_Unit<-str_remove_all(RX_NORM_DF$Strength_Unit,":")
RX_NORM_DF$Freq_current<-if_else(is.na(RX_NORM_DF$Freq_current), RX_NORM_DF$Dose_Freq, RX_NORM_DF$Freq_current)
RX_NORM_DF$Freq_current<-if_else(RX_NORM_DF$Freq_current=="weekly", "1/week", RX_NORM_DF$Freq_current)
RX_NORM_DF$Freq_current1<-str_replace(RX_NORM_DF$Freq_current, RX_NORM_DF$Freq_2,"")
RX_NORM_DF$Freq_current<-if_else(is.na(RX_NORM_DF$Freq_current1), RX_NORM_DF$Freq_current, RX_NORM_DF$Freq_current1)
RX_NORM_DF<-RX_NORM_DF %>% dplyr::select(-Freq_current1)
RX_NORM_DF$Freq_current<-trim_periodcommas(RX_NORM_DF$Freq_current)
RX_NORM_DF$Dose<-if_else(is.na(RX_NORM_DF$Dose) & RX_NORM_DF$Freq_current=="1/ left /day, 2/ right /day", "1/L eye, 2/R eye",RX_NORM_DF$Dose )
RX_NORM_DF$Freq_current<-if_else(RX_NORM_DF$Freq_current=="1/ left /day, 2/ right /day","1/day",RX_NORM_DF$Freq_current )
RX_NORM_DF$Freq_current<-str_replace_all(RX_NORM_DF$Freq_current, "tab ", "tablet ")
RX_NORM_DF$Freq_current<-str_replace_all(RX_NORM_DF$Freq_current, "tabs ", "tablets ")
RX_NORM_DF$Freq_current<-str_replace_all(RX_NORM_DF$Freq_current, "pill ", "pills ")
RX_NORM_DF$Freq_current<-gsub("(\\s)(pills|pill|tablets|tablet|drops|drop)","\\2",RX_NORM_DF$Freq_current)
RX_NORM_DF$Freq_current<-str_remove_all(RX_NORM_DF$Freq_current, regex("/PRN|/ PRN|PRN"))

####### PULL TABS AND PILLS TO DOSE, and convert freq, then youll be done.


RX_NORM_DF$`Medicine Notes` <-if_else(RX_NORM_DF$AltTaper_dose.factor==1,RX_NORM_DF$Freq_current, RX_NORM_DF$`Medicine Notes` )
RX_NORM_DF$`Medicine Notes`<-trim_periodcommas(RX_NORM_DF$`Medicine Notes`)

RX_NORM_DF$Freq_current <-if_else(RX_NORM_DF$AltTaper_dose.factor==1,"",RX_NORM_DF$Freq_current)
RX_NORM_DF$Freq_current<-na_if(RX_NORM_DF$Freq_current,"")
RX_NORM_DF$Medicine_Notes<-if_else(str_detect(RX_NORM_DF$Reason, "Will begin"), RX_NORM_DF$Reason, RX_NORM_DF$`Medicine Notes`)
RX_NORM_DF$`Medicine Notes`<- RX_NORM_DF$Medicine_Notes
RX_NORM_DF<-RX_NORM_DF %>% dplyr::select(-Medicine_Notes)
RX_NORM_DF$Freq_current<-str_replace_all(RX_NORM_DF$Freq_current, "x", "/")
RX_NORM_DF$Freq_current<-str_replace(RX_NORM_DF$Freq_current, fixed("//"), "/")
RX_NORM_DF$Freq_current<-str_replace_all(RX_NORM_DF$Freq_current, "daily", "day")

App_Area: application area

Form Factor / Dosage Form

RX_NORM_DF$form.factor<-if_else(RX_NORM_DF$form=="1", "oral tablet", "")
RX_NORM_DF$form.factor<-if_else(RX_NORM_DF$form=="2", "oral capsule", RX_NORM_DF$form.factor)
RX_NORM_DF$form.factor<-if_else(RX_NORM_DF$form=="3", "oral chewable", RX_NORM_DF$form.factor)
RX_NORM_DF$form.factor<-if_else(RX_NORM_DF$form=="4", "oral, liquid", RX_NORM_DF$form.factor)
RX_NORM_DF$form.factor<-if_else(RX_NORM_DF$form=="5", "topical cream, lotion, ointment", RX_NORM_DF$form.factor)
RX_NORM_DF$form.factor<-if_else(RX_NORM_DF$form=="6", "powder", RX_NORM_DF$form.factor)
RX_NORM_DF$form.factor<-if_else(RX_NORM_DF$form=="7", "ophthalmic", RX_NORM_DF$form.factor)
RX_NORM_DF$form.factor<-if_else(RX_NORM_DF$form=="8", "inhaled or nasal", RX_NORM_DF$form.factor)
RX_NORM_DF$form.factor<-if_else(RX_NORM_DF$form=="9", "injected", RX_NORM_DF$form.factor)
RX_NORM_DF$form.factor<-if_else(RX_NORM_DF$form=="10", "rectal or vaginal", RX_NORM_DF$form.factor)
RX_NORM_DF$form.factor<-if_else(RX_NORM_DF$form=="11", "patch", RX_NORM_DF$form.factor)
RX_NORM_DF$form.factor<-if_else(RX_NORM_DF$form=="12", "other", RX_NORM_DF$form.factor)

RX_NORM_DF$Dosage_form<-if_else(RX_NORM_DF$form=="1", "oral tablet", "")
RX_NORM_DF$Dosage_form<-if_else(RX_NORM_DF$form=="2", "oral capsule", RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(RX_NORM_DF$form=="3", "chewable tablet", RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(RX_NORM_DF$form=="4", "rince, oral, solution", RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(RX_NORM_DF$form=="5", "cream, topical", RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(RX_NORM_DF$form=="6", "powder", RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(RX_NORM_DF$form=="7", "ophthalmic solution", RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(RX_NORM_DF$form=="8", "inhaler", RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(RX_NORM_DF$form=="9", "injectable solution", RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(RX_NORM_DF$form=="10", "topical", RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(RX_NORM_DF$form=="11", "patch", RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(str_detect(RX_NORM_DF$value, regex("OZURDEX", ignore_case = T)), "implant",RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(str_detect(RX_NORM_DF$value,  regex("SOFTGEL", ignore_case = T)), "softgel",RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(str_detect(RX_NORM_DF$value,  regex("gummy", ignore_case = T)), "gummy",RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(str_detect(RX_NORM_DF$value,  regex(" HFA")), "HFA",RX_NORM_DF$Dosage_form)

RX_NORM_DF$Dosage_form<-if_else(str_detect(RX_NORM_DF$Reason, regex(" EAR", ignore_case = T))&
                                 RX_NORM_DF$form=="12",
                                "ointment",
                               RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(str_detect(RX_NORM_DF$value,"KETOCONAZOLE") &
                                  RX_NORM_DF$form!="12",
                                  "cream",
                               RX_NORM_DF$Dosage_form)
RX_NORM_DF$Dosage_form<-if_else(str_detect(RX_NORM_DF$value,"KETOCONAZOLE") &
                                  RX_NORM_DF$form=="12",
                                  "shampoo",
                               RX_NORM_DF$Dosage_form)

RX_NORM_DF$Dosage_form<-if_else(RX_NORM_DF$form=="8" &
                                       str_detect(RX_NORM_DF$value,regex( "SPRAY|NOSTRIL", ignore_case = T)) &
                                       !str_detect(RX_NORM_DF$value,regex( "PUFF", ignore_case = T)) &
                                       !str_detect(RX_NORM_DF$value,regex( "ACTUATION", ignore_case = T)),
                "nasal spray",
                RX_NORM_DF$Dosage_form)


RX_NORM_DF$Dosage_form<-if_else(RX_NORM_DF$form=="12" &
                                       str_detect(RX_NORM_DF$value,regex( "eye drop|ophthal", ignore_case = T)),
                "ophthalmic",
                RX_NORM_DF$Dosage_form)

RX_NORM_DF$Dosage_form<-if_else(RX_NORM_DF$Dosage_form=="" & str_detect(RX_NORM_DF$value,regex( "topical", ignore_case = T)),
                "topical",
                RX_NORM_DF$Dosage_form)

RX_NORM_DF$TMP<-str_replace(RX_NORM_DF$Drug,"\\(","")
RX_NORM_DF$TMP<-str_replace(RX_NORM_DF$TMP, "\\)","")
RX_NORM_DF$TMP<-str_replace(RX_NORM_DF$TMP, "Butalbital / Acetaminophen/Caffeine", "Acetaminophen / Butalbital / Caffeine" )

User-Specified Brands & Concepts

df<-RX_NORM_DF
brands<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Quantified_Codebook.csv")
brands<-brands[!str_detect(brands$conceptProperties_name, regex("vaccine|antigen")),]
brands<-brands[!duplicated(brands),]
brands$PM<-if_else(str_detect(brands$name, " PM|Nighttime|Night Time|Sleep|Unisom|ZZZ"), 1,0)
brands$SBD_Brand<-sub(".*\\[([^][]+)].*", "\\1", brands$name)
brands$SBD_Brand<-if_else(str_detect(brands$name, "\\]"),  brands$SBD_Brand,"")
brands$SBD_Brand2<-toupper(brands$SBD_Brand)
brands$SBD_Brand2<-na_if(brands$SBD_Brand2,"")
brands$check<-if_else(brands$SBD_Brand2=="RID" |
                 brands$SBD_Brand2 =="MEDROX"|
                        brands$SBD_Brand2=="ALO" |
                   brands$SBD_Brand2== "ALOXI"|
                    brands$SBD_Brand2=="S-2"|
                  toupper(brands$name)=="ALLI"  |
                   brands$brandName =="ACULAR"|
                  toupper(brands$conceptProperties_name)=="WATER" |
                  toupper(brands$name)=="XEPI",1,0)

brands<-brands[brands$check==0|is.na(brands$check),]
brands<-brands %>% arrange(desc(str_length(brandName)))
BN_SCD_SBD<-as.data.frame(str_extract_all(toupper(df$TMP),regex(paste(unique(toupper(brands$brandName)), collapse = "|")), simplify = T))
BN_SCD_SBD<-cbind(BN_SCD_SBD,df$RAW)
BN_SCD_SBD[,1]<-na_if(BN_SCD_SBD[,1], "")
BN_SCD_SBD[,2]<-na_if(BN_SCD_SBD[,2], "")
BN_SCD_SBD[,2]<-na_if(BN_SCD_SBD[,2], "NA")
BN_SCD_SBD[,1]<-na_if(BN_SCD_SBD[,1], "NA")
BN_SCD_SBD<-BN_SCD_SBD %>% dplyr::select(-V3) ### WELLBUTRIN MISMATCH LADY
BN_SCD_SBD$V2<-if_else(BN_SCD_SBD$V1==BN_SCD_SBD$V2,"",BN_SCD_SBD$V2)

names(BN_SCD_SBD)<-c("USER_BRAND_1", "USER_BRAND_2","RAW")
BN_SCD_SBD$USER_BRAND_1<-na_if(BN_SCD_SBD$USER_BRAND_1,"")
BN_SCD_SBD$USER_BRAND_2<-na_if(BN_SCD_SBD$USER_BRAND_2,"")
BN_SCD_SBD$USER_BRAND_1<-trim_periodcommas(BN_SCD_SBD$USER_BRAND_1)
BN_SCD_SBD$USER_BRAND_2<-trim_periodcommas(BN_SCD_SBD$USER_BRAND_2)

BN_SCD_SBD$USER_BRAND_2<-if_else(BN_SCD_SBD$USER_BRAND_2==BN_SCD_SBD$USER_BRAND_1, "",BN_SCD_SBD$USER_BRAND_2)
BN_SCD_SBD$USER_BRAND_2<-na_if(BN_SCD_SBD$USER_BRAND_2,"")
BN_SCD_SBD$USER_BRAND_2<-if_else(BN_SCD_SBD$USER_BRAND_2=="ACULAR"|BN_SCD_SBD$USER_BRAND_2=="S-2" |BN_SCD_SBD$USER_BRAND_2=="ALLI"|BN_SCD_SBD$USER_BRAND_2=="XEPI"|BN_SCD_SBD$USER_BRAND_2=="DOXY"|BN_SCD_SBD$USER_BRAND_2=="RINGL"| BN_SCD_SBD$USER_BRAND_2=="ICAR"|BN_SCD_SBD$USER_BRAND_2=="SPS"|BN_SCD_SBD$USER_BRAND_2=="ELEASE"|
                                    BN_SCD_SBD$USER_BRAND_2=="ERY"|BN_SCD_SBD$USER_BRAND_2=="TING","", BN_SCD_SBD$USER_BRAND_2)
BN_SCD_SBD$USER_BRAND_1<-na_if(BN_SCD_SBD$USER_BRAND_1,"")
BN_SCD_SBD$USER_BRAND_1<-if_else((BN_SCD_SBD$USER_BRAND_1=="ACULAR"|BN_SCD_SBD$USER_BRAND_1=="S-2"|BN_SCD_SBD$USER_BRAND_1=="ALLI"|BN_SCD_SBD$USER_BRAND_1=="ELESS"|BN_SCD_SBD$USER_BRAND_1=="SPS" |BN_SCD_SBD$USER_BRAND_1=="DOXY"|BN_SCD_SBD$USER_BRAND_1=="URELLE"|BN_SCD_SBD$USER_BRAND_1=="LTA"|BN_SCD_SBD$USER_BRAND_1=="ELEASE"|BN_SCD_SBD$USER_BRAND_1=="XEPI"|
                                   BN_SCD_SBD$USER_BRAND_1 =="ALOXI"| BN_SCD_SBD$USER_BRAND_1 =="EFENSE"|
                                    BN_SCD_SBD$USER_BRAND_1=="SOMA"|BN_SCD_SBD$USER_BRAND_1=="THRIVE"|
                                    BN_SCD_SBD$USER_BRAND_1=="ICAR"| 
                                    BN_SCD_SBD$USER_BRAND_1=="ERY"|BN_SCD_SBD$USER_BRAND_1=="TING"|
                                   BN_SCD_SBD$USER_BRAND_1=="CYLATE"),
                                  "",  BN_SCD_SBD$USER_BRAND_1)
BN_SCD_SBD$USER_BRAND_1<-na_if(BN_SCD_SBD$USER_BRAND_1, "")
BN_SCD_SBD$USER_BRAND_2<-na_if(BN_SCD_SBD$USER_BRAND_2, "")
BN_SCD_SBD$USER_BRAND<-if_else(is.na(BN_SCD_SBD$USER_BRAND_1) & !is.na(BN_SCD_SBD$USER_BRAND_2),BN_SCD_SBD$USER_BRAND_2, BN_SCD_SBD$USER_BRAND_1 )


brand_KEY<-brands %>% dplyr::select(SBD_Brand2,conceptProperties_name)
names(brand_KEY)[1]<-"USER_BRAND"
BN_SCD_SBD$conceptProperties_name<-""

for (i in 1:nrow(BN_SCD_SBD)) {
  if (is.na(BN_SCD_SBD$USER_BRAND[i])) { next } else {
     key<-brand_KEY %>% filter(USER_BRAND== BN_SCD_SBD$USER_BRAND[i])
     key<-key[!duplicated(key),]
     BN_SCD_SBD$conceptProperties_name[i]<-key$conceptProperties_name
  }
  
}

df$USER_BRAND<-BN_SCD_SBD$USER_BRAND
df$conceptProperties_name<-BN_SCD_SBD$conceptProperties_name

df$Drug<-str_replace(df$Drug ,"  ", " ")
df$Drug<-trim_periodcommas(df$Drug)
df$Drug<-if_else(df$Drug=="Conjugated estrogens / Medroxyprogesterone acetate","estrogens, conjugated (USP) / medroxyprogesterone",df$Drug)
df$Drug<-if_else(df$Drug=="Estrogen Conjugated","estrogens, conjugated (USP)",df$Drug)
#table(RX_NORM_DF$index %in% df$index)
df$conceptProperties_name<-na_if(df$conceptProperties_name,"")
BRANDED<-df %>% filter(!is.na(conceptProperties_name))
df<-df %>% filter(is.na(conceptProperties_name))
df$multiple_ing<-if_else(str_detect(df$Drug, regex("/| and| with|[+]| - ", ignore_case = T, dotall = T)),1,0)
df$TMP<-str_replace(df$TMP, regex("[(]"),"")
df$TMP<-str_replace(df$TMP, regex("[)]"),"")
df$TMP<-if_else(!str_detect(df$TMP,regex("-Dot|-Con", ignore_case = T)), str_replace(df$TMP, regex("-"),"/"), df$TMP)
df$TMP<-str_replace(df$TMP, regex("[+]"),"/")
df$TMP<-str_replace(df$TMP, regex(" and "),"/")
df$TMP<-str_replace(df$TMP, regex(" with "),"/")

conceptProperties_names<-df %>% dplyr::select(index,TMP,USER_BRAND, multiple_ing)
brands<-brands %>%   arrange(desc(str_length(conceptProperties_name)))### IF arranged by desc you get PIN if ascending you get IN tty


  conceptProperties_names<-as.data.frame(as.matrix(str_extract_all(toupper(conceptProperties_names$TMP),
                                     regex(paste(toupper(unique(brands$conceptProperties_name)), collapse = "|",sep="|"),ignore_case=T, dotall = T), simplify = T)))
 
 conceptProperties_names$V2<-na_if(conceptProperties_names$V2,"NA")
 conceptProperties_names$V1<-na_if(conceptProperties_names$V1,"NA")

  conceptProperties_names$V1<-if_else(conceptProperties_names$V1=="",df$TMP, conceptProperties_names$V1)
  
conceptProperties_names$V22<-if_else(str_detect(conceptProperties_names$V1, "/"), sapply( strsplit(conceptProperties_names$V1,"/"), "[",2),conceptProperties_names$V2)
conceptProperties_names$V2<-conceptProperties_names$V22
conceptProperties_names$V11<-str_replace(conceptProperties_names$V1,paste0("/",conceptProperties_names$V22),"")
conceptProperties_names$V1<-conceptProperties_names$V11
conceptProperties_names$V1<-str_replace(conceptProperties_names$V1, regex(" VALERATE| PROPIONATE| FUMARATE| BITARTRATE| BROMIDE| SODIUM| ACETONIDE| TARTRATE| CALCIUM| DIHYDROCHLORIDE| HYDROCHLORIDE| CHLORIDE| POTASSIUM| Diskus| Inhalation Powder| inhaler| lotion| body lotion| eye drops| SULFATE| benzoate", ignore_case=T), "")

conceptProperties_names$V2<-str_replace(conceptProperties_names$V2, regex(" VALERATE| PROPIONATE| FUMARATE| BITARTRATE| BROMIDE| SODIUM| ACETONIDE| TARTRATE| CALCIUM| DIHYDROCHLORIDE| HYDROCHLORIDE| CHLORIDE| POTASSIUM| Diskus| Inhalation Powder| inhaler| lotion| body lotion| eye drops| SULFATE| benzoate", ignore_case=T), "")


conceptProperties_names<-conceptProperties_names %>% dplyr::select(-V22, -V11)
conceptProperties_names<-as.data.frame(conceptProperties_names)
conceptProperties_names$V1<-na_if(conceptProperties_names$V1, "")
conceptProperties_names$V2<-na_if(conceptProperties_names$V2, "")
conceptProperties_names[,1:length(conceptProperties_names)]<-sapply(conceptProperties_names[,1:length(conceptProperties_names)], trim_periodcommas)
conceptProperties_names$ordered = apply(conceptProperties_names, 1, function(x) identical(order(as.character(x)), seq_along(x)))

conceptProperties_names$V1<-if_else(is.na(conceptProperties_names$V1), "",conceptProperties_names$V1)
conceptProperties_names$V2<-if_else(is.na(conceptProperties_names$V2), "",conceptProperties_names$V2)
conceptProperties_names$USER_conceptProperties_1<-conceptProperties_names$V1
conceptProperties_names$USER_conceptProperties_2<-conceptProperties_names$V2

conceptProperties_names$USER_SPECIFIED_INGREDIENTS<- if_else(conceptProperties_names$ordered==TRUE, paste0(conceptProperties_names$USER_conceptProperties_1, " / ", conceptProperties_names$USER_conceptProperties_2), "")
conceptProperties_names$USER_SPECIFIED_INGREDIENTS<-trim_periodcommas(conceptProperties_names$USER_SPECIFIED_INGREDIENTS)
conceptProperties_names$USER_SPECIFIED_INGREDIENTS11<- if_else(conceptProperties_names$USER_SPECIFIED_INGREDIENTS=="" &
                                                                conceptProperties_names$ordered==FALSE, paste0(conceptProperties_names$USER_conceptProperties_2, " / ", conceptProperties_names$USER_conceptProperties_1), "")

conceptProperties_names$USER_SPECIFIED_INGREDIENTS<-if_else(conceptProperties_names$USER_SPECIFIED_INGREDIENTS=="", trim_periodcommas(conceptProperties_names$USER_SPECIFIED_INGREDIENTS11),conceptProperties_names$USER_SPECIFIED_INGREDIENTS)
conceptProperties_names[,1:length(conceptProperties_names)]<-sapply(conceptProperties_names[,1:length(conceptProperties_names)], tolower)



conceptProperties_names<-conceptProperties_names %>% dplyr::select(USER_conceptProperties_1,USER_conceptProperties_2,USER_SPECIFIED_INGREDIENTS )
#df<-df %>% dplyr::select(-USER_conceptProperties_1,-USER_conceptProperties_2, -USER_SPECIFIED_INGREDIENTS)
df<-cbind(df, conceptProperties_names)

df[,1:length(df)]<-sapply(df[,1:length(df)], trim_periodcommas)

df$conceptProperties_name<-na_if(df$conceptProperties_name,"")
df$USER_SPECIFIED_INGREDIENTS<-na_if(df$USER_SPECIFIED_INGREDIENTS,"")
df$USER_conceptProperties_1<-na_if(df$USER_conceptProperties_1,"")
df$USER_conceptProperties_2<-na_if(df$USER_conceptProperties_2,"")

df$USER_BRAND<-na_if(df$USER_BRAND,"")
df$CHECK<-if_else(is.na(df$USER_BRAND) & is.na(df$USER_SPECIFIED_INGREDIENTS) & !is.na(df$Drug),1,0 )
df$USER_SPECIFIED_INGREDIENTS<-if_else(df$CHECK==1 & str_detect(df$Drug, "conjugated"), "estrogens, conjugated (USP)",df$USER_SPECIFIED_INGREDIENTS)

df<-df %>% dplyr::select(-TMP)
df1<-plyr::rbind.fill(df,BRANDED)
df<-df1
df$USER_SPECIFIED_INGREDIENTS<-if_else(is.na(df$USER_SPECIFIED_INGREDIENTS), df$conceptProperties_name, df$USER_SPECIFIED_INGREDIENTS)
df$USER_SPECIFIED_INGREDIENTS<-trimws(df$USER_SPECIFIED_INGREDIENTS)
df$USER_SPECIFIED_INGREDIENTS<-if_else(df$USER_SPECIFIED_INGREDIENTS=="potassium", "potassium chloride", df$USER_SPECIFIED_INGREDIENTS)
df$USER_SPECIFIED_INGREDIENTS<-if_else(df$USER_SPECIFIED_INGREDIENTS=="ferrous", "ferrous sulfate", df$USER_SPECIFIED_INGREDIENTS)
df$USER_SPECIFIED_INGREDIENTS<-if_else(df$USER_SPECIFIED_INGREDIENTS=="magnesium", "magnesium chloride", df$USER_SPECIFIED_INGREDIENTS)
df$USER_SPECIFIED_INGREDIENTS<-if_else(df$USER_SPECIFIED_INGREDIENTS=="magnesium", "magnesium chloride", df$USER_SPECIFIED_INGREDIENTS)
df$USER_SPECIFIED_INGREDIENTS<-if_else(df$USER_SPECIFIED_INGREDIENTS=="estrogen conjugated","estrogens, conjugated (USP)", df$USER_SPECIFIED_INGREDIENTS)
df$USER_SPECIFIED_INGREDIENTS<-str_replace(df$USER_SPECIFIED_INGREDIENTS, "benzoate / ", "")
df$USER_SPECIFIED_INGREDIENTS<-str_replace(df$USER_SPECIFIED_INGREDIENTS, "lithium carbonate", "lithium")
df$USER_SPECIFIED_INGREDIENTS<-if_else(df$USER_SPECIFIED_INGREDIENTS=="mct oil", "Medium-chain triglycerides", df$USER_SPECIFIED_INGREDIENT)
df$USER_SPECIFIED_INGREDIENTS<-if_else(is.na(df$USER_SPECIFIED_INGREDIENTS), df$Drug, df$USER_SPECIFIED_INGREDIENTS)
df$ingredients<-df$USER_SPECIFIED_INGREDIENTS

for_merge<-df %>% dplyr::select(index,`Record ID`, USER_BRAND, ingredients)
#nrow(for_merge)
#df$index[(df$index %in% RX_NORM_DF$index)==FALSE]
#RX_NORM_DF$index[!(df$index %in% RX_NORM_DF$index)]
RX_NORM_DF<-merge(RX_NORM_DF,for_merge)

reattach_long$index<-str_replace(reattach_long$index, "RX0", "RX1")
reattach_long<-reattach_long %>% dplyr::select(index, `Record ID`,Medication.factor, variable)
ing<-plyr::rbind.fill(RX_NORM_DF, reattach_long)

USER_SPECIFIED_INGREDIENTS<-ing %>% 
  dplyr::select(`Record ID`,Medication.factor, variable,ingredients, Dosage_form) %>% 
  pivot_wider(id_cols = c("Record ID","Medication.factor"),
              names_from=c("variable"),
              values_from=c("ingredients"))
USER_SPECIFIED_INGREDIENTS<-USER_SPECIFIED_INGREDIENTS %>% dplyr::select(`Record ID`,Medication.factor, "1","2","3","4","5","6","7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21")

USER_SPECIFIED_INGREDIENTS[,1:length(USER_SPECIFIED_INGREDIENTS)]<-sapply(USER_SPECIFIED_INGREDIENTS[,1:length(USER_SPECIFIED_INGREDIENTS)], as.character)
USER_SPECIFIED_INGREDIENTS[,1:length(USER_SPECIFIED_INGREDIENTS)]<-sapply(USER_SPECIFIED_INGREDIENTS[,1:length(USER_SPECIFIED_INGREDIENTS)], IGNITE_MISSING)
USER_SPECIFIED_INGREDIENTS[,1:length(USER_SPECIFIED_INGREDIENTS)]<-sapply(USER_SPECIFIED_INGREDIENTS[,1:length(USER_SPECIFIED_INGREDIENTS)], as.character)

write_csv(USER_SPECIFIED_INGREDIENTS,"/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_RX_Medications_NMAX21.csv")



form.df<-ing %>% 
  dplyr::select(`Record ID`,Medication.factor, variable,ingredients, form.factor) %>% 
  pivot_wider(id_cols = c("Record ID","Medication.factor"),
              names_from=c("variable"),
              values_from=c("form.factor"))
form.df[,1:length(form.df)]<-sapply(form.df[,1:length(form.df)], as.character)
form.df<-form.df %>% dplyr::select(`Record ID`,Medication.factor, "1","2","3","4","5","6","7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21")

form.df[,1:length(form.df)]<-sapply(form.df[,1:length(form.df)], IGNITE_MISSING)
form.df[,1:length(form.df)]<-sapply(form.df[,1:length(form.df)], as.character)

write_csv(form.df,"/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/Prescription_Medication_FORMCODES_N21.csv")
STEP1_USER_BRAND_CONCEPTS0<-df %>% dplyr::select(`Record ID`, Medication.factor, variable, value,USER_BRAND,conceptProperties_name,  USER_SPECIFIED_INGREDIENTS)
STEP1_USER_BRAND_CONCEPTS0$N_Medications<-if_else(complete.cases(STEP1_USER_BRAND_CONCEPTS0$value), 1,0)
STEP1_USER_BRAND_CONCEPTS0$USER_BRAND.factor<-if_else(complete.cases(STEP1_USER_BRAND_CONCEPTS0$USER_BRAND), 1,0)

STEP1_USER_BRAND_CONCEPTS0$USER_SPECIFIED_INGREDIENTS.factor<-if_else(complete.cases(STEP1_USER_BRAND_CONCEPTS0$USER_SPECIFIED_INGREDIENTS), 1,0)
STEP1_USER_BRAND_CONCEPTS0$Likely_Proprietary.factor<-if_else(complete.cases(STEP1_USER_BRAND_CONCEPTS0$value)==TRUE, 1,0)

TMP<-STEP1_USER_BRAND_CONCEPTS0 %>% group_by(`Record ID`,Medication.factor) %>% 
  dplyr::summarise("N_Medications"=sum(N_Medications),
                   "N Non-Standardized Entries"=(sum(Likely_Proprietary.factor)),
                   "% Brand Name Parsed From User Entry"=round((sum(USER_BRAND.factor)/N_Medications)*100,0),
                   "% Ingredients Extracted From User Entry"=round((sum(USER_SPECIFIED_INGREDIENTS.factor)/N_Medications)*100,0))



  STEP1_USER_BRAND_CONCEPTS0<-df %>% dplyr::select(`Record ID`, Medication.factor, variable, value,USER_BRAND,conceptProperties_name,  USER_SPECIFIED_INGREDIENTS)
STEP1_USER_BRAND_CONCEPTS0$N_Medications<-if_else(complete.cases(STEP1_USER_BRAND_CONCEPTS0$value), 1,0)
STEP1_USER_BRAND_CONCEPTS0$N_OTC_Medications<-if_else(complete.cases(STEP1_USER_BRAND_CONCEPTS0$value) & (STEP1_USER_BRAND_CONCEPTS0$Medication.factor=="OTC"), 1,0)
STEP1_USER_BRAND_CONCEPTS0$N_RX_Medications<-if_else(complete.cases(STEP1_USER_BRAND_CONCEPTS0$value) & (STEP1_USER_BRAND_CONCEPTS0$Medication.factor=="RX"), 1,0)
STEP1_USER_BRAND_CONCEPTS0$USER_BRAND.factor<-if_else(complete.cases(STEP1_USER_BRAND_CONCEPTS0$USER_BRAND), 1,0)
STEP1_USER_BRAND_CONCEPTS0$OTC_USER_BRAND.factor<-if_else(complete.cases(STEP1_USER_BRAND_CONCEPTS0$USER_BRAND) & STEP1_USER_BRAND_CONCEPTS0$Medication.factor=="OTC", 1,0)
STEP1_USER_BRAND_CONCEPTS0$RX_USER_BRAND.factor<-if_else(complete.cases(STEP1_USER_BRAND_CONCEPTS0$USER_BRAND) & STEP1_USER_BRAND_CONCEPTS0$Medication.factor=="RX", 1,0)
STEP1_USER_BRAND_CONCEPTS0$USER_SPECIFIED_INGREDIENTS.factor<-if_else(complete.cases(STEP1_USER_BRAND_CONCEPTS0$USER_SPECIFIED_INGREDIENTS), 1,0)
STEP1_USER_BRAND_CONCEPTS0$Medication.factor<-as.factor(STEP1_USER_BRAND_CONCEPTS0$Medication.factor)
TMP<-STEP1_USER_BRAND_CONCEPTS0 %>% 
  dplyr::select(`Record ID`, Medication.factor ,N_Medications:USER_SPECIFIED_INGREDIENTS.factor) %>% group_by(`Record ID`,Medication.factor) %>% 
  dplyr::summarise("N_Medications"=sum(N_Medications),
                   "% Brand Name Parsed From User Entry"=round((sum(USER_BRAND.factor)/N_Medications)*100,0),
                   "% Ingredients Extracted From User Entry"=round((sum(USER_SPECIFIED_INGREDIENTS.factor)/N_Medications)*100,0))





write_csv(TMP, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/STEP1_SUMMARY.csv")

PROCESSING -

getApproximateMatch()

https://lhncbc.nlm.nih.gov/RxNav/APIs/api-RxNorm.getApproximateMatch.html.

i=1
row<-RX_NORM_DF
new.df<-as.data.frame("")
RX_NORM_DF$ID<-""
library(httr)
for (i  in 1:nrow(RX_NORM_DF)) {
 row<- RX_NORM_DF[i,]
  x<-stringi::stri_enc_toutf8(row$APPROX_QUERY)
  query1<-list(term=x, option="1")
  call<-paste0("https://rxnav.nlm.nih.gov/REST/Prescribe/approximateTerm.json?")
  API<-GET(call,
           query=query1,
           add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                        `content-encoding`="UTF-8"),
           `content_type`="application/json")
     data1=jsonlite::fromJSON(rawToChar(API$content))
     data1<-as.data.frame(data1$approximateGroup$candidate)
     data<-flatten(data1)
     if (nrow(data)==0) {
       RX_NORM_DF$ID[i]<-"0"
       row$ID<-"0"
       new.df<-plyr::rbind.fill(row, new.df)
       next
     } else {
       RX_NORM_DF$ID[i]<-"1"
       row$ID<-"1"
       data$stringscore<-stringdist::stringsim( data$name, row$APPROX_QUERY)
       if_else(data$source=="RXNORM",data$stringscore+1, data$stringscore )
       data<-data %>% arrange(desc(stringscore)) %>% filter(row_number()==1)
       row_union<-cbind(row, data)
       new.df<-plyr::rbind.fill(row_union, new.df)
     }
}
new.df<-new.df[!duplicated(new.df),]
new.df<-new.df[complete.cases(new.df$`Record ID`),]
new.df<-janitor::remove_empty(new.df,"cols")
new.df$rxcui<-na_if(new.df$rxcui,"")

write_csv(new.df, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_LONG.csv")

No Match -

new.df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_LONG.csv")
new.df %>% filter(ID=="0") %>% dplyr::select(ingredients, name, form.factor)

Flagged Topical QA Errors-

new.df$RAW<-str_remove_all(new.df$RAW, ":")
new.df  %>% filter((form=="5"|form=="10"|str_detect(RAW, regex("Topical|cream| VAC", ignore_case=T))) & str_detect(name,regex("oral|pill|tablet",ignore_case=T))) %>% dplyr::select(APPROX_QUERY,form, Reason, name)

Flagged Non-Topical QA Errors-

new.df  %>% filter((!(form=="5"| form=="10"| str_detect(RAW, regex("Topical|cream| VAC", ignore_case=T)))) &  str_detect(name, regex("Topical|cream| VAC", ignore_case=T))) %>% dplyr::select(APPROX_QUERY, Reason, name)
#write_csv(new.df, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_LONG.csv")

getRxcuiHistoryStatus()

Attributes, meta, and deff features -

new.df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_LONG.csv")
new.df$history_status<-""
new.df<-new.df[complete.cases(new.df$`Record ID`),]
new.df2<-as.data.frame("")

for (i in 1:nrow(new.df)) {
  row<-new.df[i,]
   if (new.df$rxcui[i]==""||is.na(new.df$rxcui[i])) {
    new.df2<-plyr::rbind.fill(new.df2,row)
   } else {
     row<-new.df[i,]
      call<-paste0("https://rxnav.nlm.nih.gov/REST/rxcui/",row$rxcui,"/historystatus.json")
      API<-GET(call,
            add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                                           `content-encoding`="UTF-8"),
                                           `content_type`="application/json")
      data =jsonlite::fromJSON(rawToChar(API$content)) 
      if (length(data)>0) {
      row$history_status<-  "1"
      new.df$history_status[i]<-1
      definitionalFeatures<-as.data.frame(data$rxcuiStatusHistory$definitionalFeatures$ingredientAndStrength)
      metaData<-as.data.frame(data$rxcuiStatusHistory$metaData)
      attributes<- as.data.frame(data$rxcuiStatusHistory$attributes)
          if (nrow(attributes)>0) {
              row<- cbind(row, attributes)
              }
            if (nrow(metaData)>0) {
              row<- cbind(row, metaData)
              }
            if (nrow(definitionalFeatures)>0) {
              row<- cbind(row, definitionalFeatures)
            }
    new.df2<-plyr::rbind.fill(new.df2,row)
      } else {
      new.df$history_status[i]<-"0"
      row$history_status<-"0"
      new.df2<-plyr::rbind.fill(new.df2,row)
        }
    }
}
new.df2<-new.df2[complete.cases(new.df2$`Record ID`),]
new.df2<-janitor::remove_empty(new.df2,"cols")

Ingredients Database -

new.df2$derived_concepts<-""
new.df2$rxcui<-if_else(new.df2$index=="20527_RX1", "1170619",new.df2$rxcui)
new.df3<-as.data.frame("")
##### INGREDIENTS/derived_concepts DB
for (i in 1:nrow(new.df2)) {
  row<-new.df2[i,]
   if (new.df2$rxcui[i]==""||is.na(new.df2$rxcui[i])) {
    new.df3<-plyr::rbind.fill(new.df3,row)
   } else {
     row<-new.df2[i,]
      call<-paste0("https://rxnav.nlm.nih.gov/REST/rxcui/",row$rxcui,"/historystatus.json")
      API<-GET(call,
            add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                                           `content-encoding`="UTF-8"),
                                           `content_type`="application/json")
      data =jsonlite::fromJSON(rawToChar(API$content)) 
      data<- as.data.frame(data$rxcuiStatusHistory$derivedConcepts)
      if (nrow(data)>0) {
      row$derived_concepts<-  "1"
      new.df2$derived_concepts[i]<-"1"
      row<- cbind(data,row)
      new.df3<-plyr::rbind.fill(new.df3,row)
      } else {
      new.df2$derived_concepts[i]<-"0"
      row$derived_concepts<-"0"
      new.df3<-plyr::rbind.fill(new.df3,row)
        }
    }
}

new.df3<-new.df3[complete.cases(new.df3$`Record ID`),]
new.df3<-janitor::remove_empty(new.df3, "cols")
write_csv(new.df3,"/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_LONG_hs.csv")

Datasets/filenames include the following:

** There are iterations of with/without topical/ophthalmic ingredients (i.e. these are denoted the variable RX_Medication.factor).
- Prescription Medications
- No Prescription Medications
- TOP/OPTH Prescription Medications ONLY

For files with ophthalmic ingredients included (e.g. timidol/dorz ), see:

/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/ (310 unique ingredients).

new.df3<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_LONG_hs.csv")
new.df3$form<-if_else(is.na(new.df3$form), "",as.character(new.df3$form))
new.df3$RAW<-str_remove_all(new.df3$RAW, ":")
topicals<-new.df3 %>% filter((form=="5"|form=="10"|form=="7") |
                             (form=="" & str_detect(RAW, regex("Topical|Vaginal| VAC", ignore_case=T))) |
                              str_detect(RAW, regex("Topical|Vaginal| VAC|Cream", ignore_case=T))) %>% dplyr::select(APPROX_QUERY,form, name, index)
ingredients<-new.df3 %>% filter(!(index %in% topicals$index))
if (nrow(new.df3)-nrow(ingredients)==nrow(topicals)) {
   Study_Ingred<- ingredients %>% dplyr::select(ingredientConcept.ingredientName) %>% unique() %>% nrow()
  print(paste0(Study_Ingred, " unique non- topical/ophthalmic ingredients detected"))
  ingredients$ingredientConcept.ingredientName<-if_else(is.na(ingredients$ingredientConcept.ingredientName), "No RXNORM Concepts Identified",ingredients$ingredientConcept.ingredientName)

}
## [1] "293 unique non- topical/ophthalmic ingredients detected"

ALL multivitamin ingredients imputed as…

Due to codebook parsing in pre-processing, all strings with the indication of being a multivitamin are automatically coded as the following (this however, may be customized to a different form, brand, etc.):

[MultiVitamin with Fluoride Chewable]
- VITAMIN A ACETATE;
- ASCORBIC ACID;
- CHOLECALCIFEROL;
- .ALPHA.-TOCOPHEROL ACETATE;
- THIAMINE HYDROCHLORIDE;
- RIBOFLAVIN;
- NIACINAMIDE;
- PYRIDOXINE HYDROCHLORIDE;
- FOLIC ACID;
- CYANOCOBALAMIN;
- SODIUM FLUORIDE;

Detect 2019 BEERs Anticholinergics

BEERS<-c("Promethazine",
"Pyrilamine",
"Triprolidine",
"Disopyramide",
"Amitriptyline",
"Amoxapine",
"Clomipramine",
"Desipramine",
"Doxepin" ,
"Imipramine",
"Nortriptyline",
"Paroxetine",
"Protriptyline",
"Trimipramine",
"Darifenacin",
"Fesoterodine",
"Flavoxate",
"Oxybutynin",
"Solifenacin",
"Tolterodine",
"Trospium",
"Prochlorperazine", 
"Promethazine",
"Benztropine",
"Trihexyphenidyl",
"Brompheniramine" ,
"Carbinoxamine" ,
"Chlorpheniramine", 
"Clemastine",
"Cyproheptadine",
"Dexbrompheniramine",
"Dexchlorpheniramine",
"Dimenhydrinate",
"Diphenhydramine",
"Doxylamine",
"Hydroxyzine",
"Chlorpromazine",
"Clozapine",
"Loxapine",
"Olanzapine",
"Perphenazine",
"Thioridazine",
"Trifluoperazine",
"Meclizine",
"Clidinium-chlordiazepoxide",
"Dicyclomine",
"Homatropine",
"Hyoscyamine",
"Methscopolamine",
"Propantheline",
"Atropine",
"Belladonna alkaloids",
"Scopolamine" ,
"Cyclobenzaprine",
"Orphenadrine")

missing_data_fill_0<-function(x) {
 x<- as.character(x)
  x<-if_else(is.na(x) ,"0", as.character(x))
x<-as.numeric(x)
  return(x)
}




NO_RX_MEDS<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/NO_RX_MEDS.csv")
NO_RX_MEDS<-NO_RX_MEDS[!duplicated(NO_RX_MEDS),]
NO_RX_MEDS<-NO_RX_MEDS %>%dplyr::select(`Record ID`)
NO_RX_MEDS<-NO_RX_MEDS[!duplicated(NO_RX_MEDS),]
BEERS<-tolower(BEERS)
BEERS_ing<-  ingredients %>%dplyr::select(index,`Record ID`, PRN.factor, Seen.factor,form.factor, ingredientConcept.ingredientName)
BEERS_ing<-BEERS_ing[!duplicated(BEERS_ing),]
BEERS_ing %>% filter(ingredientConcept.ingredientName %in% BEERS) 
BEERS_ing$BEERS<-if_else(BEERS_ing$ingredientConcept.ingredientName %in% BEERS, 1,0)
BEERS_ing$BEERS_PRN<-if_else(BEERS_ing$ingredientConcept.ingredientName %in% BEERS & 
                             BEERS_ing$PRN.factor==1, 1,0)
BEERS_ing$BEERS_Daily<-if_else(BEERS_ing$ingredientConcept.ingredientName %in% BEERS & 
                             BEERS_ing$PRN.factor==0, 1,0)

BEERS_ing<-BEERS_ing %>% select(index, `Record ID`, PRN.factor,ingredientConcept.ingredientName, BEERS, BEERS_PRN, BEERS_Daily)
BEERS_ing<-BEERS_ing[!duplicated(BEERS_ing),]

BEERS_RX.df<-BEERS_ing %>% select(`Record ID`,BEERS, BEERS_PRN, BEERS_Daily)

beer_rx_ach2019.df<-BEERS_RX.df %>% 
  group_by(`Record ID`) %>% 
  summarise(across(everything(), sum)) %>%
  as.data.frame()


NO_RX_MEDS$RX_Medication.factor<-"No Prescription Medications"  
beer_rx_ach2019.df$RX_Medication.factor<-"Oral Prescription Medications"
a_beer_rx_ach2019.df2<-plyr::rbind.fill(beer_rx_ach2019.df,NO_RX_MEDS)
a_beer_rx_ach2019.df2[,2:4]<-sapply(a_beer_rx_ach2019.df2[,2:4], missing_data_fill_0)
MISSING_RAW<-RAW$`Record ID`[!(RAW$`Record ID` %in% a_beer_rx_ach2019.df2$`Record ID`)]
MISSING_NO_MEDS<-NO_RX_MEDS$`Record ID`[!(NO_RX_MEDS$record_id %in% a_beer_rx_ach2019.df2$`Record ID`)]

MISSING_RAW<-MISSING_RAW[!MISSING_RAW %in% MISSING_NO_MEDS]
MISSING_RAW<-as.data.frame(MISSING_RAW)
names(MISSING_RAW)[1]<-"Record ID"

MISSING_RAW$RX_Medication.factor<-"Non Oral Prescriptions"
a_beer_rx_ach2019.df3<-plyr::rbind.fill(a_beer_rx_ach2019.df2,MISSING_RAW)

view(a_beer_rx_ach2019.df3)
write_csv(a_beer_rx_ach2019.df3, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_SUM_DUMMY_ach2019.csv")
a_beer_rx_ach2019.df3$RX_Medication.factor<-as.factor(a_beer_rx_ach2019.df3$RX_Medication.factor)

a_beer_rx_ach2019.df4 <- a_beer_rx_ach2019.df3 %>% 
  group_by(`Record ID`,RX_Medication.factor, add=T) %>% 
  mutate(across(everything(),~ if_else(.>1, 1,.))) %>%
  as.data.frame()
view(a_beer_rx_ach2019.df4)
a_beer_rx_ach2019.df4[,2:4]<-sapply(a_beer_rx_ach2019.df4[,2:4], missing_data_fill_0)

readr::write_csv(a_beer_rx_ach2019.df4, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_DUMMY_CODED_ach2019.csv")


#Previous
#"10026 20242   20322   30910   10030   10107   10110   10190   10375   10395   10399   10436   10499   10568   10721   10788   10968   11031   11077   11114   11126   11163   11178   20025   20034   20035   20076   20145   20166   20175   20208   20224   20275   20277   20379   20385   20396   20397   20398   20407   20415   30222   30279   30314   30350   30446   30448   30526   30536   30681   30711   30769   30773   30803   30927"

List of Ingredients

ingredients %>% dplyr::select(ingredientConcept.ingredientName) %>% unique()  %>% DT::datatable(rownames = F)

Ingredients consumed by more than 10% of sample

rev_ingredients_dummy<-ingredients %>% dplyr::select(`Record ID`,variable,ingredientConcept.ingredientName) %>% fastDummies::dummy_cols("Record ID")
rev_ingredients_dummy<-rev_ingredients_dummy[!duplicated(rev_ingredients_dummy),]

rev_ingredients_dummy<-rev_ingredients_dummy %>% dplyr::select(-`Record ID`,-variable)
rownames(rev_ingredients_dummy)<-NULL
names(rev_ingredients_dummy)<-str_remove(names(rev_ingredients_dummy), "Record ID_")
rev_ingredients_dummy[2:length(rev_ingredients_dummy)]<-sapply(rev_ingredients_dummy[2:length(rev_ingredients_dummy)], as.numeric)

rev_ingredients_dummy_w<-rev_ingredients_dummy %>%
 group_by(ingredientConcept.ingredientName) %>% 
  summarise(across(everything(), sum)) %>%
  as.data.frame()
rev_ingredients_dummy_w[2:length(rev_ingredients_dummy_w)]<-sapply(rev_ingredients_dummy_w[2:length(rev_ingredients_dummy_w)], as.numeric)

rev_ingredients_dummy_w$TOTAL<-rowSums(rev_ingredients_dummy_w[,2:length(rev_ingredients_dummy_w)])
write_csv(rev_ingredients_dummy_w, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/DummyCoded_RecordID_INGRED_REV.csv")
view(rev_ingredients_dummy_w)
rev_ingredients_dummy_w<-rev_ingredients_dummy_w %>% arrange(desc(TOTAL))
rev_ingredients_dummy_w$perc_sample<-round((rev_ingredients_dummy_w$TOTAL/648)*100, 2)

rev_ingredients_dummy_w %>% filter(perc_sample>=10) %>% dplyr::select(ingredientConcept.ingredientName,TOTAL,perc_sample)

Unidentified & topical ingredients removed..

Unidentified / No Identification

ingredients %>% filter(ingredientConcept.ingredientName=="No RXNORM Concepts Identified") %>% dplyr::select(ID, derived_concepts,APPROX_QUERY, form.factor, Freq_current, Reason)
NO_RX_MEDS<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/NO_RX_MEDS.csv")
NO_RX_MEDS<-NO_RX_MEDS[!duplicated(NO_RX_MEDS),]
NO_RX_MEDS<-NO_RX_MEDS %>% dplyr::select(`Record ID`)
ingredients$`Record ID`<-as.factor(ingredients$`Record ID`)
ingredients$ingredientConcept.ingredientName<-as.factor(ingredients$ingredientConcept.ingredientName)
ingredients_dummy<-ingredients %>% dplyr::select(`Record ID`, variable, ingredientConcept.ingredientName) %>% fastDummies::dummy_cols(select_columns = "ingredientConcept.ingredientName")
names(ingredients_dummy)<-str_remove(names(ingredients_dummy), "ingredientConcept.ingredientName_")
ingredients_dummy<-ingredients_dummy %>% dplyr::select(-variable, -ingredientConcept.ingredientName)

ingredients_dummy[,c(2:length(ingredients_dummy))]<-sapply(ingredients_dummy[,c(2:length(ingredients_dummy))], as.numeric)

ingredients_dummy_w<-ingredients_dummy %>%
 group_by(`Record ID`) %>% 
  summarise(across(everything(), sum)) %>%
  as.data.frame()
rownames(ingredients_dummy_w)<-NULL
ingredients_dummy_w$`Record ID`<-as.character(ingredients_dummy_w$`Record ID`)
names(NO_RX_MEDS)[1]<-"Record ID"
NO_RX_MEDS<-NO_RX_MEDS[!duplicated(NO_RX_MEDS),]
#NO_RX_MEDS<-NO_RX_MEDS %>%ungroup(Medication.factor) %>%dplyr::select(`Record ID`)
NO_RX_MEDS$RX_Medication.factor<-"No Prescription Medications"
ingredients_dummy_w$RX_Medication.factor<-"Oral Prescription Medications"
NO_RX_MEDS$`Record ID`<-as.character(NO_RX_MEDS$`Record ID`)
IGNITE_MISSING_0_dummy <- function(x) {
  x<-if_else(is.na(x), "0", as.character(x))
  x<-as.numeric(x)
  return(x)
}
TMP<-plyr::rbind.fill(ingredients_dummy_w,NO_RX_MEDS)
TMP[,1:length(TMP)]<-sapply(TMP[,1:length(TMP)], IGNITE_MISSING_0_dummy)
TMP<-TMP[complete.cases(TMP$`Record ID`),]

MISSING_RAW<-RAW$`Record ID`[!(RAW$`Record ID` %in% ingredients_dummy_w$`Record ID`)]
NO_MEDS_DATA<-NO_RX_MEDS$`Record ID`[!(NO_RX_MEDS$`Record ID` %in% ingredients_dummy_w$`Record ID`)]
MISSING_TOPICAL_ONLY<-MISSING_RAW[!MISSING_RAW %in%NO_MEDS_DATA]
MISSING_TOPICAL_ONLY<-as.data.frame(MISSING_TOPICAL_ONLY)
names(MISSING_TOPICAL_ONLY)[1]<-"Record ID"
MISSING_TOPICAL_ONLY$RX_Medication.factor<-"TOP/OPTH Prescription Medications ONLY"

Only prescribed topicals medications…

DUMMY_ORAL_final<-plyr::rbind.fill(TMP,MISSING_TOPICAL_ONLY)
variables_dummed<-names(DUMMY_ORAL_final)[!(names(DUMMY_ORAL_final)=="Record ID"  &  names(DUMMY_ORAL_final)=="RX_Medication.factor")]
DUMMY_ORAL_final<-DUMMY_ORAL_final %>% dplyr::select( `Record ID`, RX_Medication.factor,variables_dummed )
DUMMY_ORAL_final[,3:295]<-sapply(DUMMY_ORAL_final[,3:295], IGNITE_MISSING_0_dummy)
readr::write_csv(DUMMY_ORAL_final, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_SUM_DUMMY_ORAL_INGREDIENTS_NoOpthmalic.csv")

DUMMY_ORAL_final$RX_Medication.factor<-factor(DUMMY_ORAL_final$RX_Medication.factor, levels=c("Oral Prescription Medications","TOP/OPTH Prescription Medications ONLY", "No Prescription Medications"))


DUMMY_ORAL_final[,3:295]<-sapply(DUMMY_ORAL_final[,3:295], as.numeric)
DUMMY_ORAL_final$`Record ID`<-as.factor(DUMMY_ORAL_final$`Record ID`)
DUMMY_ORAL_final$RX_Medication.factor<-as.factor(DUMMY_ORAL_final$RX_Medication.factor)
DUMMY_ORAL_final_w <- DUMMY_ORAL_final %>% 
  group_by(`Record ID`,RX_Medication.factor, add=T) %>% 
  mutate(across(everything(),~ if_else(.>1, 1,.))) %>%
  as.data.frame()
table(DUMMY_ORAL_final_w$RX_Medication.factor)
DUMMY_ORAL_final_w$RX_Medication.factor<-if_else(DUMMY_ORAL_final_w$`Record ID` %in% NO_RX_MEDS$`Record ID`,"No Presciption Medications", DUMMY_ORAL_final_w$RX_Medication.factor )
DUMMY_ORAL_final_w$RX_Medication.factor<-if_else(is.na(DUMMY_ORAL_final_w$RX_Medication.factor), "Prescription Medications",DUMMY_ORAL_final_w$RX_Medication.factor)
readr::write_csv(DUMMY_ORAL_final_w, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_DUMMY_CODED_ORAL_INGREDIENTS_NoOpthmalic.csv")

getClassByRxNormDrugId()

https://lhncbc.nlm.nih.gov/RxNav/APIs/api-RxClass.getClassByRxNormDrugId.html

ATC -

df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_LONG_hs.csv")
df<-df[complete.cases(df$`Record ID`),]
df<-janitor::remove_empty(df, "cols")
df$ATC<-""
df<-df %>% arrange(`Record ID`)
class.df<-as.data.frame("")
rownames(df)<-NULL
for (i  in 1:nrow(df)) {
   row<- df[i,]
  if (df$ingredientConcept.ingredientRxcui[i]==""||is.na(df$ingredientConcept.ingredientRxcui[i])) {
    class.df<-plyr::rbind.fill(row, class.df)
    class.df<-class.df[complete.cases(class.df$`Record ID`),]
   } else {
  x<-stringi::stri_enc_toutf8(row$ingredientConcept.ingredientRxcui)
    query1<-list(rxcui=x, relaSource="ATC") #relas="has_moa"
  call<-paste0("https://rxnav.nlm.nih.gov/REST/rxclass/class/byRxcui.json?")
  API<-GET(call,
           query=query1,
           add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                        `content-encoding`="UTF-8"),
           `content_type`="application/json")
     data1=jsonlite::fromJSON(rawToChar(API$content))
     data1<-as.data.frame(data1$rxclassDrugInfoList)
     data<-flatten(data1)
     if (nrow(data)==0) {
        row$class<-"0"
        df$ATC[i]<-""
        class.df<-plyr::rbind.fill(row, class.df)
        class.df<-class.df[complete.cases(class.df$`Record ID`),]

     } else {
       row$class<-"1"
       df$ATC[i]<-"1"
         row_union<-cbind(row, data)
        class.df<-plyr::rbind.fill(row_union, class.df)
        class.df<-class.df[complete.cases(class.df$`Record ID`),]
     }
  }
}

class.df0<-class.df

#class.df<-class.df0

class.df[,1:length(class.df)]<-sapply(class.df[,1:length(class.df)], as.character)
class.df<-class.df[complete.cases(class.df$`Record ID`),]
class.df<-janitor::remove_empty(class.df, "cols")
names(class.df)<-str_replace(names(class.df), "rxclassDrugInfo.","")
write_csv(class.df,"/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_ATC_CLASSIFIED_LONG_incTOPICAL.csv")

No ATC Coverage (unique ingredients highlighted)

class.df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_ATC_CLASSIFIED_LONG_incTOPICAL.csv")
class.df %>% filter(class==0) %>% dplyr::select( ingredientConcept.ingredientName) %>% unique()
class.df<-class.df %>% dplyr::select(index,`Record ID`,variable, RAW,Reason, form, form.factor, Strength_Unit, Freq_current,USER_BRAND, ingredients, APPROX_QUERY,ID,name, history_status, derived_concepts,class,  ingredientConcept.ingredientRxcui, ingredientConcept.ingredientName, rela:rxclassMinConceptItem.classType)
class.df$TOPICAL<-if_else(class.df$form.factor=="topical cream, lotion, ointment"|
                            class.df$form.factor=="rectal or vaginal"|
                            class.df$ingredients=="clobetasol", 1,0)

class.df$rxclassMinConceptItem.className<-if_else(is.na(class.df$rxclassMinConceptItem.className) &
                                                    class.df$class=="0",
                                                  "No ATC Class Available",
                                                  class.df$rxclassMinConceptItem.className )
class.df$rxclassMinConceptItem.className<-if_else(is.na(class.df$rxclassMinConceptItem.className) &
                                                    class.df$name=="No Concepts Available",
                                                  "No ATC Class Available",
                                                  class.df$rxclassMinConceptItem.className )
class.df$rxclassMinConceptItem.className<-if_else(is.na(class.df$rxclassMinConceptItem.className),
                                                  "No ATC Class Available",
                                                  class.df$rxclassMinConceptItem.className )
class.df$`Record ID`<-as.factor(class.df$`Record ID`)
#table(class.df$rxclassMinConceptItem.className=="No ATC Class Available")

VA -

df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_LONG_hs.csv")
df<-df[complete.cases(df$`Record ID`),]
df<-janitor::remove_empty(df, "cols")
df$VA<-""
df<-df %>% arrange(`Record ID`)
class.df<-as.data.frame("")
rownames(df)<-NULL
#table(HHQ$record_id %in% new.df$`Record ID`)
#table(HHQ$record_id %in% NO_RXs$`Record ID`)
class.df<-as.data.frame("")
for (i  in 1:nrow(df)) {
   row<- df[i,]
  if (is.na(df$ingredientConcept.ingredientRxcui[i]) |df$ingredientConcept.ingredientRxcui[i]=="") {
    df$VA[i]<-"1"
    class.df<-plyr::rbind.fill(row, class.df)
    class.df<-class.df[complete.cases(class.df$`Record ID`),]
   } else {
     x<-stringi::stri_enc_toutf8(row$ingredientConcept.ingredientRxcui)
     query1<-list(rxcui=x, relaSource="VA") #relas="has_moa"
     call<-paste0("https://rxnav.nlm.nih.gov/REST/rxclass/class/byRxcui.json?")
     API<-GET(call,
           query=query1,
           add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                        `content-encoding`="UTF-8"),
           `content_type`="application/json")
     data1=jsonlite::fromJSON(rawToChar(API$content))
     data1<-as.data.frame(data1$rxclassDrugInfoList)
     data<-flatten(data1)
     if (nrow(data)==0) {
       df$VA[i]<-"0"
        row$class<-"0"
        class.df<-plyr::rbind.fill(row, class.df)
            class.df<-class.df[complete.cases(class.df$`Record ID`),]

     } else {
      df$VA[i]<-"1"
       row$class<-"1"
         row_union<-cbind(row, data)
        class.df<-plyr::rbind.fill(row_union, class.df)
            class.df<-class.df[complete.cases(class.df$`Record ID`),]

     }
   }
}
#class.df[,1:length(class.df)]<-sapply(class.df[,1:length(class.df)], as.character)
class.df<-class.df[complete.cases(class.df$`Record ID`),]
class.df<-janitor::remove_empty(class.df, "cols")
names(class.df)<-str_replace(names(class.df), "rxclassDrugInfo.","")
class.df$rxclassMinConceptItem.className<-if_else(is.na(class.df$rxclassMinConceptItem.className) &
                                                    class.df$class=="0",
                                                  "No VA Class Available",
                                                  class.df$rxclassMinConceptItem.className )
class.df$rxclassMinConceptItem.className<-if_else(is.na(class.df$rxcui),
                                                  "No VA Class Available",
                                                  class.df$rxclassMinConceptItem.className )

class.df<-class.df[!duplicated(class.df),]
class.df$`Record ID`<-as.factor(class.df$`Record ID`)
tmp <- class.df %>% dplyr::select(class, form, name, rxclassMinConceptItem.className)
write_csv(class.df,"/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_VA_CLASSIFIED_LONG.csv")

No VA Coverage

class.df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_VA_CLASSIFIED_LONG.csv")
class.df %>% filter(class==0) %>% dplyr::select( ingredientConcept.ingredientName)  %>% unique()

has_epc

df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_LONG_hs.csv")
df<-df[complete.cases(df$`Record ID`),]
df<-janitor::remove_empty(df, "cols")
df$has_epc<-""
df<-df %>% arrange(`Record ID`)
class.df<-as.data.frame("")
rownames(df)<-NULL
#table(HHQ$record_id %in% new.df$`Record ID`)
#table(HHQ$record_id %in% NO_RXs$`Record ID`)
df$has_epc<-""
df<-df[complete.cases(df$`Record ID`),]
df<-janitor::remove_empty(df, "cols")
class.df<-as.data.frame("")
for (i  in 1:nrow(df)) {
 row<- df[i,]
  if (is.na(df$ingredientConcept.ingredientRxcui[i]) |df$ingredientConcept.ingredientRxcui[i]=="") {
    df$has_epc[i]<-"1"
    class.df<-plyr::rbind.fill(row, class.df)
    class.df<-class.df[complete.cases(class.df$`Record ID`),]
   } else {
  x<-stringi::stri_enc_toutf8(row$ingredientConcept.ingredientRxcui)
    query1<-list(rxcui=x, relas="has_epc") #relas="has_moa"
  call<-paste0("https://rxnav.nlm.nih.gov/REST/rxclass/class/byRxcui.json?")
  API<-GET(call,
           query=query1,
           add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                        `content-encoding`="UTF-8"),
           `content_type`="application/json")
     data1=jsonlite::fromJSON(rawToChar(API$content))
     data1<-as.data.frame(data1$rxclassDrugInfoList)
     data<-flatten(data1)
     if (nrow(data)==0) {
        row$class<-"0"
        df$has_epc[i]<-"0"
        class.df<-plyr::rbind.fill(row, class.df)
     } else {
       row$class<-"1"
       df$has_epc[i]<-"1"
         row_union<-cbind(row, data)
        class.df<-plyr::rbind.fill(row_union, class.df)
     }
}
}

class.df<-class.df[complete.cases(class.df$`Record ID`),]
class.df<-janitor::remove_empty(class.df, "cols")
names(class.df)<-str_remove(names(class.df),"rxclassDrugInfo.")


write_csv(class.df,"/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/EPC_LONG.csv")

No EPC Coverage

class.df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/EPC_LONG.csv")
class.df %>% filter(class=="0") %>% dplyr::select(ingredientConcept.ingredientName) %>% unique()
class.df$rxclassMinConceptItem.className<-if_else(is.na(class.df$rxclassMinConceptItem.className),"NO EPC Available",class.df$rxclassMinConceptItem.className )

MESH -

df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_LONG_hs.csv")
df<-df[complete.cases(df$`Record ID`),]
df<-janitor::remove_empty(df, "cols")
df$MESH<-""
df<-df %>% arrange(`Record ID`)
class.df<-as.data.frame("")
rownames(df)<-NULL
i=1
for (i  in 1:nrow(df)) {
   row<- df[i,]
  if (df$ingredientConcept.ingredientRxcui[i]==""||is.na(df$ingredientConcept.ingredientRxcui[i])) {
      row$class<-"0"
      df$MESH[i]<-""
    class.df<-plyr::rbind.fill(row, class.df)
    class.df<-class.df[complete.cases(class.df$`Record ID`),]
   } else {
  x<-stringi::stri_enc_toutf8(row$ingredientConcept.ingredientRxcui)
    query1<-list(rxcui=x, relaSource="MESH") #relas="has_moa"
  call<-paste0("https://rxnav.nlm.nih.gov/REST/rxclass/class/byRxcui.json?")
  API<-GET(call,
           query=query1,
           add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                        `content-encoding`="UTF-8"),
           `content_type`="application/json")
     data1=jsonlite::fromJSON(rawToChar(API$content))
     data1<-as.data.frame(data1$rxclassDrugInfoList)
     data<-flatten(data1)
     if (nrow(data)==0) {
        row$class<-"0"
        df$MESH[i]<-""
        class.df<-plyr::rbind.fill(row, class.df)
        class.df<-class.df[complete.cases(class.df$`Record ID`),]

     } else {
       row$class<-"1"
       df$MESH[i]<-"1"
      data$simQ<- stringdist::stringsim(data$rxclassDrugInfo.minConcept.name,
                                        row$ingredientConcept.ingredientName)
      TTY<- data %>%
        group_by("tty"=as.factor(data$rxclassDrugInfo.minConcept.tty)) %>% 
        summarise(Q=sum(simQ)) %>% arrange(desc(Q)) %>% filter(row_number()==1)
        data<- data %>% filter(rxclassDrugInfo.minConcept.tty %in% paste0(droplevels(TTY$tty)))
         row_union<-cbind(row, data)
        class.df<-plyr::rbind.fill(row_union, class.df)
        class.df<-class.df[complete.cases(class.df$`Record ID`),]
     }
  }
}

class.df0<-class.df
class.df[,1:length(class.df)]<-sapply(class.df[,1:length(class.df)], as.character)
class.df<-class.df[complete.cases(class.df$`Record ID`),]
class.df<-janitor::remove_empty(class.df, "cols")
names(class.df)<-str_replace(names(class.df), "rxclassDrugInfo.","")
write_csv(class.df,"/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_MESH_CLASSIFIED_LONG_incTOPICAL.csv")

No MESH Coverage -

class.df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_MESH_CLASSIFIED_LONG_incTOPICAL.csv")
class.df %>% filter(class=="0") %>% dplyr::select(ingredientConcept.ingredientName) %>% unique() %>% drop_na()

Coding

MESH

class.df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_MESH_CLASSIFIED_LONG_incTOPICAL.csv")
class.df<-class.df %>% dplyr::select(`Record ID`,variable, ingredientConcept.ingredientName,name,minConcept.name ,class, rxclassMinConceptItem.classId, rxclassMinConceptItem.className)

names(class.df)<-c("Record ID", "variable","ingredientName","name","minConcept.name","class","classId","className")
class.df<-class.df[!duplicated(class.df),]
class.df$`Record ID`<-as.factor(class.df$`Record ID`)
class.df$className<-as.factor(class.df$className)
class.df$class<-as.factor(class.df$class)
class.df$className<-if_else(is.na(class.df$className),"NO MESH Available",class.df$className )

class_w<-class.df %>% dplyr::select(`Record ID`, className) %>% fastDummies::dummy_cols(., select_columns = "className")
view(class_w[,c(1:2,214)])

class_w<-class_w %>% dplyr::select(-className)

names(class_w)<-str_replace(names(class_w),"className_", "")
class_w[,c(2:length(class_w))]<-sapply(class_w[,c(2:length(class_w))], as.numeric)

class_df_w<-class_w %>%
 group_by(`Record ID`) %>% 
  summarise(across(everything(), sum)) %>%
  as.data.frame()
rownames(class_df_w)<-NULL
class_df_w$`Record ID`<-as.character(class_df_w$`Record ID`)

NO_RX_MEDS<-NO_RX_MEDS[!duplicated(NO_RX_MEDS),]
NO_RX_MEDS<-NO_RX_MEDS  %>%dplyr::select(`Record ID`)
NO_RX_MEDS$RX_Medication.factor<-"0"
class_df_w$RX_Medication.factor<-"1"
NO_RX_MEDS$`Record ID`<-as.character(NO_RX_MEDS$`Record ID`)
TMP<-plyr::rbind.fill(class_df_w,NO_RX_MEDS)
TMP<-TMP[complete.cases(TMP$`Record ID`),]
TMP<-TMP[!duplicated(TMP),]
TMP[,c(2:length(TMP))]<-sapply(TMP[,c(2:length(TMP))], as.character)
TMP[,2:length(TMP)]<-sapply(TMP[,2:length(TMP)], IGNITE_MISSING_0_dummy)
readr::write_csv(TMP, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_SUM_DUMMY_MESH.csv")


TMP[,2:length(TMP)]<-sapply(TMP[,2:length(TMP)], as.numeric)
TMP_2 <- TMP %>% group_by(`Record ID`) %>% 
  mutate(across(everything(),~ if_else(.>1, 1,.))) %>%
  as.data.frame()
TMP_2[,2:length(TMP_2)]<-sapply(TMP_2[,2:length(TMP_2)], IGNITE_MISSING_0_dummy)
view(TMP_2)
readr::write_csv(TMP_2, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_MESH.csv")

EPC

#class.df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/EPC_LONG.csv")
epc<-class.df %>% dplyr::select(`Record ID`,variable, ingredientConcept.ingredientName,name,minConcept.name ,class, rxclassMinConceptItem.classId, rxclassMinConceptItem.className)
names(epc)<-c("Record ID", "variable","ingredientName","name","minConcept.name","class","classId","className")
epc<-epc[!duplicated(epc),]

epc$`Record ID`<-as.factor(epc$`Record ID`)
epc$className<-as.factor(epc$className)
epc$class<-as.factor(epc$class)

epc_w<-epc %>% dplyr::select(`Record ID`, className) %>% fastDummies::dummy_cols(., select_columns = "className")
epc_w<-epc_w %>% dplyr::select(-className)
names(epc_w)<-str_replace(names(epc_w),"className_", "")

view(epc_w)
epc_w[,c(2:length(epc_w))]<-sapply(epc_w[,c(2:length(epc_w))], as.numeric)

ATC_1.df_w<-epc_w %>%
 group_by(`Record ID`) %>% 
  summarise(across(everything(), sum)) %>%
  as.data.frame()
rownames(ATC_1.df_w)<-NULL
ATC_1.df_w$`Record ID`<-as.character(ATC_1.df_w$`Record ID`)
NO_RX_MEDS<-NO_RX_MEDS[!duplicated(NO_RX_MEDS),]
NO_RX_MEDS<-NO_RX_MEDS  %>%dplyr::select(`Record ID`)
NO_RX_MEDS$RX_Medication.factor<-"0"
ATC_1.df_w$RX_Medication.factor<-"1"
NO_RX_MEDS$`Record ID`<-as.character(NO_RX_MEDS$`Record ID`)
TMP<-plyr::rbind.fill(ATC_1.df_w,NO_RX_MEDS)
TMP<-TMP[complete.cases(TMP$`Record ID`),]


TMP<-TMP[!duplicated(TMP),]
TMP[,c(2:length(TMP))]<-sapply(TMP[,c(2:length(TMP))], as.character)
TMP[,2:length(TMP)]<-sapply(TMP[,2:length(TMP)], IGNITE_MISSING_0_dummy)

readr::write_csv(TMP, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_SUM_DUMMY_EPC.csv")


TMP[,2:length(TMP)]<-sapply(TMP[,2:length(TMP)], as.numeric)
TMP_2 <- TMP %>% group_by(`Record ID`) %>% 
  mutate(across(everything(),~ if_else(.>1, 1,.))) %>%
  as.data.frame()

readr::write_csv(TMP_2, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_EPC.csv")

ATC Primary

class.df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_ATC_CLASSIFIED_LONG_incTOPICAL.csv")
ATC_1.df<-class.df %>% dplyr::select(`Record ID`,variable, ingredientConcept.ingredientName,name,minConcept.name ,class, rxclassMinConceptItem.classId)
names(ATC_1.df)<-c("Record ID", "variable","ingredientName","name","minConcept.name","class","classId")

ATC_1.df$classId<-if_else(is.na(ATC_1.df$classId)|ATC_1.df$classId=="-9", "-9999", ATC_1.df$classId)
ATC_1.df<-ATC_1.df[!duplicated(ATC_1.df),]
ATC_1.df$classId<-substring(ATC_1.df$classId, 1,1)

codebook<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/RedCap_Vars/ATC14.csv")
codebook$len<-str_length(codebook$classId)
codebook<-codebook %>% filter(str_length(classId)==1)
#codebook<-codebook[!str_detect(codebook$className, "topical"),]
ATC.df<-left_join(ATC_1.df, codebook)
ATC.df<-ATC.df[!duplicated(ATC.df),]
ATC.df$className<-if_else(ATC.df$class==0, "No ATC Class Available", ATC.df$className)
ATC.df$className<-if_else(is.na(ATC.df$class), "No ATC Class Available", ATC.df$className)

#ATC.df<-ATC.df[!duplicated(ATC.df),]
ATC.df$`Record ID`<-as.factor(ATC.df$`Record ID`)

ATC.df$className<-as.factor(ATC.df$className)
ATC.df$class<-as.factor(ATC.df$class)

ATC.df_w<-ATC.df %>% dplyr::select(`Record ID`, className) %>% fastDummies::dummy_cols(., select_columns = "className")
ATC.df_w<-ATC.df_w %>% dplyr::select(-className)
names(ATC.df_w)<-str_replace(names(ATC.df_w),"className_", "")

ATC.df_w[,c(2:length(ATC.df_w))]<-sapply(ATC.df_w[,c(2:length(ATC.df_w))], as.numeric)
ATC_1.df_w<-ATC.df_w %>%
 group_by(`Record ID`) %>% 
  summarise(across(everything(), sum)) %>%
  as.data.frame()
rownames(ATC_1.df_w)<-NULL
names(ATC_1.df_w)[1]<-"record_id"
NO_RX_MEDS<-NO_RX_MEDS %>%dplyr::select(record_id, RX_Medication.factor)
NO_RX_MEDS$RX_Medication.factor<-"0"
ATC_1.df_w$RX_Medication.factor<-"1"
a_ATC1_RX_dummy.df<-plyr::rbind.fill(ATC_1.df_w,NO_RX_MEDS)
a_ATC1_RX_dummy.df<-a_ATC1_RX_dummy.df[complete.cases(a_ATC1_RX_dummy.df$record_id),]


a_ATC1_RX_dummy.df<-a_ATC1_RX_dummy.df[!duplicated(a_ATC1_RX_dummy.df),]
a_ATC1_RX_dummy.df[,c(2:length(a_ATC1_RX_dummy.df))]<-sapply(a_ATC1_RX_dummy.df[,c(2:length(a_ATC1_RX_dummy.df))], as.character)

IGNITE_MISSING_0_dummy <- function(x) {
  x<-if_else(is.na(x), "0", as.character(x))
  x<-as.numeric(x)
  return(x)
}
a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)]<-sapply(a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)], IGNITE_MISSING_0_dummy)



readr::write_csv(a_ATC1_RX_dummy.df, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_SUM_DUMMY_ATC_Primary.csv")


a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)]<-sapply(a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)], as.numeric)
agg_ATC1_dummy2 <- a_ATC1_RX_dummy.df %>% group_by(record_id) %>% 
  mutate(across(everything(),~ if_else(.>1, 1,.))) %>%
  as.data.frame()
view(agg_ATC1_dummy2)
readr::write_csv(agg_ATC1_dummy2, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_DUMMY_CODE_ATC_Primary.csv")

ATC 3 digit

class.df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_ATC_CLASSIFIED_LONG_incTOPICAL.csv")
ATC_1.df<-class.df %>% dplyr::select(`Record ID`,variable, ingredientConcept.ingredientName,name,minConcept.name ,class, rxclassMinConceptItem.classId)
names(ATC_1.df)<-c("Record ID", "variable","ingredientName","name","minConcept.name","class","classId")

ATC_1.df$classId<-if_else(is.na(ATC_1.df$classId), "-9999", ATC_1.df$classId)
ATC_1.df<-ATC_1.df[!duplicated(ATC_1.df),]
ATC_1.df$classId<-substring(ATC_1.df$classId, 1,3)

codebook<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/RedCap_Vars/ATC14.csv")
codebook<-codebook %>% filter(str_length(classId)==3)
ATC.df<-left_join(ATC_1.df, codebook)
ATC.df$className<-if_else(ATC.df$class==0, "No ATC Class Available", ATC.df$className)
ATC.df$className<-if_else(is.na(ATC.df$class),"No ATC Class Available",ATC.df$className)
ATC.df<-ATC.df[!duplicated(ATC.df),]
ATC.df$`Record ID`<-as.factor(ATC.df$`Record ID`)

ATC.df$className<-as.factor(ATC.df$className)
ATC.df$class<-as.factor(ATC.df$class)

ATC.df_w<-ATC.df %>% dplyr::select(`Record ID`, className) %>% fastDummies::dummy_cols(., select_columns = "className")
view(ATC.df_w[,c(1:3, 70:72)])
ATC.df_w<-ATC.df_w %>% dplyr::select(-className)
names(ATC.df_w)<-str_replace(names(ATC.df_w),"className_", "")


ATC.df_w[,c(2:length(ATC.df_w))]<-sapply(ATC.df_w[,c(2:length(ATC.df_w))], as.numeric)
ATC_1.df_w<-ATC.df_w %>%
 group_by(`Record ID`) %>% 
  summarise(across(everything(), sum)) %>%
  as.data.frame()
rownames(ATC_1.df_w)<-NULL
names(ATC_1.df_w)[1]<-"record_id"
NO_RX_MEDS<-NO_RX_MEDS %>%dplyr::select(record_id, RX_Medication.factor)
NO_RX_MEDS<-NO_RX_MEDS[!duplicated(NO_RX_MEDS),]
NO_RX_MEDS$RX_Medication.factor<-"0"
ATC_1.df_w$RX_Medication.factor<-"1"
a_ATC1_RX_dummy.df<-plyr::rbind.fill(ATC_1.df_w,NO_RX_MEDS)
a_ATC1_RX_dummy.df<-a_ATC1_RX_dummy.df[!duplicated(a_ATC1_RX_dummy.df),]
a_ATC1_RX_dummy.df[,c(2:length(a_ATC1_RX_dummy.df))]<-sapply(a_ATC1_RX_dummy.df[,c(2:length(a_ATC1_RX_dummy.df))], as.character)

a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)]<-sapply(a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)], IGNITE_MISSING_0_dummy)

view(a_ATC1_RX_dummy.df)
readr::write_csv(a_ATC1_RX_dummy.df, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_SUM_DUMMY_ATC3class.csv")

a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)]<-sapply(a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)], as.numeric)
agg_ATC1_dummy2 <- a_ATC1_RX_dummy.df %>% group_by(record_id) %>% 
  mutate(across(everything(),~ if_else(.>1, 1,.))) %>%
  as.data.frame()
view(agg_ATC1_dummy2)
readr::write_csv(agg_ATC1_dummy2, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_DUMMY_CODE_ATC3class.csv")

ATC 4 digit

class.df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_ATC_CLASSIFIED_LONG_incTOPICAL.csv")
ATC_1.df<-class.df %>% dplyr::select(`Record ID`,variable, ingredientConcept.ingredientName,name,minConcept.name ,class, rxclassMinConceptItem.classId)
names(ATC_1.df)<-c("Record ID", "variable","ingredientName","name","minConcept.name","class","classId")

ATC_1.df<-class.df %>% dplyr::select(`Record ID`, variable,ingredients,name,minConcept.name ,class, rxclassMinConceptItem.classId)
names(ATC_1.df)<-c("Record ID","variable", "Drug", "name","minConcept.name","class","classId")

ATC_1.df$classId<-if_else(is.na(ATC_1.df$classId), "-9999", ATC_1.df$classId)
ATC_1.df<-ATC_1.df[!duplicated(ATC_1.df),]
ATC_1.df$classId<-substring(ATC_1.df$classId, 1,4)

codebook<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/RedCap_Vars/ATC14.csv")
codebook<-codebook %>% filter(str_length(classId)==4)
#codebook<-codebook[!str_detect(codebook$className, "topical"),]
ATC.df<-left_join(ATC_1.df, codebook)
ATC.df$className<-if_else(ATC.df$class==0, "No ATC Class Available", ATC.df$className)
ATC.df$className<-if_else(is.na(ATC.df$class), "No ATC Class Available", ATC.df$className)

ATC.df<-ATC.df[!duplicated(ATC.df),]
ATC.df$`Record ID`<-as.factor(ATC.df$`Record ID`)

ATC.df$className<-as.factor(ATC.df$className)
ATC.df$class<-as.factor(ATC.df$class)

ATC.df_w<-ATC.df %>% dplyr::select(`Record ID`, className) %>% fastDummies::dummy_cols(., select_columns = "className")
ATC.df_w<-ATC.df_w %>% dplyr::select(-className)
names(ATC.df_w)<-str_replace(names(ATC.df_w),"className_", "")


ATC.df_w[,c(2:length(ATC.df_w))]<-sapply(ATC.df_w[,c(2:length(ATC.df_w))], as.numeric)

ATC_1.df_w<-ATC.df_w %>%
 group_by(`Record ID`) %>% 
  summarise(across(everything(), sum)) %>%
  as.data.frame()
rownames(ATC_1.df_w)<-NULL
names(ATC_1.df_w)[1]<-"record_id"

NO_RX_MEDS<-NO_RX_MEDS %>%dplyr::select(record_id, RX_Medication.factor)
NO_RX_MEDS<-NO_RX_MEDS[!duplicated(NO_RX_MEDS),]
NO_RX_MEDS$RX_Medication.factor<-"0"
ATC_1.df_w$RX_Medication.factor<-"1"
a_ATC1_RX_dummy.df<-plyr::rbind.fill(ATC_1.df_w,NO_RX_MEDS)
a_ATC1_RX_dummy.df<-a_ATC1_RX_dummy.df[!duplicated(a_ATC1_RX_dummy.df),]
a_ATC1_RX_dummy.df[,c(2:length(a_ATC1_RX_dummy.df))]<-sapply(a_ATC1_RX_dummy.df[,c(2:length(a_ATC1_RX_dummy.df))], as.character)

a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)]<-sapply(a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)], IGNITE_MISSING_0_dummy)
view(a_ATC1_RX_dummy.df)


readr::write_csv(a_ATC1_RX_dummy.df, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_SUM_DUMMY_ATC4class.csv")


a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)]<-sapply(a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)], as.numeric)
agg_ATC1_dummy2 <- a_ATC1_RX_dummy.df %>% group_by(record_id) %>% 
  mutate(across(everything(),~ if_else(.>1, 1,.))) %>%
  as.data.frame()

view(agg_ATC1_dummy2)
readr::write_csv(agg_ATC1_dummy2, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_DUMMY_CODE_ATC4class.csv")

ATC 5 digit

class.df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_ATC_CLASSIFIED_LONG_incTOPICAL.csv")
ATC_1.df<-class.df %>% dplyr::select(`Record ID`,variable, ingredientConcept.ingredientName,name,minConcept.name ,class, rxclassMinConceptItem.classId, rxclassMinConceptItem.className)
names(ATC_1.df)<-c("Record ID", "variable","ingredientName","name","minConcept.name","class","classId","className")

ATC_1.df$classId<-if_else(is.na(ATC_1.df$classId), "-9999", ATC_1.df$classId)
ATC_1.df$classId<-if_else(is.na(ATC_1.df$classId), "-9999", ATC_1.df$classId)

ATC_1.df<-ATC_1.df[!duplicated(ATC_1.df),]
ATC.df_w<-ATC_1.df %>% dplyr::select(`Record ID`, className) %>% fastDummies::dummy_cols(., select_columns = "className")
ATC.df_w<-ATC.df_w %>% dplyr::select(-className)
names(ATC.df_w)<-str_replace(names(ATC.df_w),"className_", "")


ATC.df_w[,c(2:length(ATC.df_w))]<-sapply(ATC.df_w[,c(2:length(ATC.df_w))], as.numeric)

ATC_1.df_w<-ATC.df_w %>%
 group_by(`Record ID`) %>% 
  summarise(across(everything(), sum)) %>%
  as.data.frame()
rownames(ATC_1.df_w)<-NULL
names(ATC_1.df_w)[1]<-"record_id"

NO_RX_MEDS<-NO_RX_MEDS %>%dplyr::select(record_id, RX_Medication.factor)
NO_RX_MEDS<-NO_RX_MEDS[!duplicated(NO_RX_MEDS),]
NO_RX_MEDS$RX_Medication.factor<-"0"
ATC_1.df_w$RX_Medication.factor<-"1"
a_ATC1_RX_dummy.df<-plyr::rbind.fill(ATC_1.df_w,NO_RX_MEDS)

a_ATC1_RX_dummy.df[,c(2:length(a_ATC1_RX_dummy.df))]<-sapply(a_ATC1_RX_dummy.df[,c(2:length(a_ATC1_RX_dummy.df))], as.character)

a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)]<-sapply(a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)], IGNITE_MISSING_0_dummy)



readr::write_csv(a_ATC1_RX_dummy.df, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_SUM_DUMMY_ATC5class.csv")


a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)]<-sapply(a_ATC1_RX_dummy.df[,2:length(a_ATC1_RX_dummy.df)], as.numeric)
agg_ATC1_dummy2 <- a_ATC1_RX_dummy.df %>% group_by(record_id) %>% 
  mutate(across(everything(),~ if_else(.>1, 1,.))) %>%
  as.data.frame()
view(agg_ATC1_dummy2)
readr::write_csv(agg_ATC1_dummy2, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_DUMMY_CODE_ATC5class.csv")

VA 2 digit

missing_data_fill_0<-function(x) {
 x<- as.character(x)
  x<-if_else(is.na(x) ,"0", as.character(x))
x<-as.numeric(x)
  return(x)
}
NO_RX_MEDS<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/NO_RX_MEDS.csv")
NO_RX_MEDS<-NO_RX_MEDS[!duplicated(NO_RX_MEDS),]
class.df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_VA_CLASSIFIED_LONG.csv")
class.df<-class.df %>% dplyr::select(`Record ID`,variable, ingredientConcept.ingredientName,name ,class, rxclassMinConceptItem.classId, rxclassMinConceptItem.className)
names(class.df)<-c("Record ID", "variable","ingredientName","name","class","classId","className")


class.df$classId<-if_else(is.na(class.df$classId), "-9999", class.df$classId)
class.df<-class.df[!duplicated(class.df),]
class.df$classId<-substring(class.df$classId, 1,2)
class.df<-class.df[!duplicated(class.df),]


codebook<-readxl::read_excel("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/RedCap_Vars/VADrugClass2132012.xls")
codebook$Class<-substring(codebook$`VA Class`, str_length(codebook$`VA Class`)-2,str_length(codebook$`VA Class`) )
VA_primary<-codebook %>% filter(Class=="000")
VA_primary<-VA_primary[,c(2:3)]
names(VA_primary)[2]<-"classId"
VA.df<-left_join(class.df, VA_primary)
VA.df<-VA.df[!duplicated(VA.df),]
VA.df$`VA Category`<-as.character(VA.df$`VA Category`)
VA.df$`VA Category`<-if_else(is.na(VA.df$`VA Category`),"No Classification Available", VA.df$`VA Category`)
VA.df$`Record ID`<-as.factor(VA.df$`Record ID`)
VA.df$`VA Category`<-as.factor(VA.df$`VA Category`)
VA.df$classId<-as.factor(VA.df$classId)

VA.df_w<-VA.df %>% dplyr::select(`Record ID`, `VA Category`) %>% fastDummies::dummy_cols(., select_columns = "VA Category")
view(VA.df_w)
VA.df_w<-VA.df_w %>% dplyr::select(-`VA Category`)
names(VA.df_w)<-str_replace(names(VA.df_w), "VA Category_", "")

missclass<-VA.df %>% filter(`VA Category`=="No Classification Available") %>% dplyr::select(`Record ID`) # FOR QA
missclass.df<-missclass %>% group_by(`Record ID`) %>% summarise(N=n())               # FOR QA

VA.df_w[,c(2:length(VA.df_w))]<-sapply(VA.df_w[,c(2:length(VA.df_w))], as.numeric)
VA.df_w<-VA.df_w %>%
 group_by(`Record ID`) %>% 
  summarise(across(everything(), sum)) %>%
  as.data.frame()

rownames(VA.df_w)<-NULL
names(VA.df_w)[1]<-"record_id"
names(NO_RX_MEDS)[1]<-"record_id"
NO_RX_MEDS<-NO_RX_MEDS %>% dplyr::select(record_id)
NO_RX_MEDS$RX_Medication.factor<-"No Oral Prescriptions"

NO_RX_MEDS<-NO_RX_MEDS %>%dplyr::select(record_id, RX_Medication.factor)
NO_RX_MEDS<-NO_RX_MEDS[!duplicated(NO_RX_MEDS),]
VA.df_w$RX_Medication.factor<-"Oral Prescriptions"
a_VA.df_w<-plyr::rbind.fill(VA.df_w,NO_RX_MEDS)
missing_data_fill_0<-function(x) {
 x<- as.character(x)
  x<-if_else(is.na(x) ,"0", as.character(x))
x<-as.numeric(x)
  return(x)
}

a_VA.df_w[,1:length(a_VA.df_w)]<-sapply(a_VA.df_w[,1:length(a_VA.df_w)], missing_data_fill_0)
view(a_VA.df_w)
#missing<-RAW$`Record ID` [!(RAW$`Record ID` %in% VA.df_w$record_id)]
#noMEDS<-NO_RX_MEDS$record_id [!(NO_RX_MEDS$record_id %in% VA.df_w$record_id )]
#noMEDS<-NO_RX_MEDS$record_id[!(NO_RX_MEDS$record_id %in% oral_ing_df_w$record_id )]
#noMEDS<-unique(noMEDS)
#missing<-missing[!(missing %in% noMEDS)]
#missing.df<-as.data.frame(missing)
#names(missing.df)[1]<-"record_id"
#missing.df$RX_Medication.factor<-"ONLY Topical Prescriptions"
#a_VA.df_w<-plyr::rbind.fill(a_VA.df_w,missing.df)
#table(a_VA.df_w$RX_Medication.factor)
#a_VA.df_w[,c(2:length(a_VA.df_w))]<-sapply(a_VA.df_w[,c(2:length(a_VA.df_w))], as.character)
#a_VA.df_w[,2:length(a_VA.df_w)]<-sapply(a_VA.df_w[,2:length(a_VA.df_w)], IGNITE_MISSING)
readr::write_csv(a_VA.df_w, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_SUM_DUMMY_VA_PRIMARY.csv")

a_VA.df_w[,2:length(a_VA.df_w)]<-sapply(a_VA.df_w[,2:length(a_VA.df_w)], as.double)
a_VA.df_w <- a_VA.df_w %>% group_by(record_id) %>%
  mutate(across(everything(),~ if_else(.>1, 1,.))) %>%
  as.data.frame()
view(a_VA.df_w)
readr::write_csv(a_VA.df_w, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_DUMMY_CODE_VA_PRIMARY.csv")

VA 5 digit

class.df<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Pre_Proc/BS_PrescriptionIngredientConcepts_VA_CLASSIFIED_LONG.csv")
class.df<-class.df %>% dplyr::select(`Record ID`,variable, ingredientConcept.ingredientName,name ,class, rxclassMinConceptItem.classId, rxclassMinConceptItem.className)
names(class.df)<-c("Record ID", "variable","ingredientName","name","class","classId","className")
class.df<-class.df[!duplicated(class.df),]
class.df$classId<-if_else(is.na(class.df$classId), "-9999", class.df$classId)
class.df<-class.df[!duplicated(class.df),]
class.df$className<-if_else(is.na(class.df$className),"No Classification Available", class.df$className)
class.df$`Record ID`<-as.factor(class.df$`Record ID`)
class.df$className<-as.factor(class.df$className)
class.df$classId<-as.factor(class.df$classId)

VA.df_w<-class.df %>% dplyr::select(`Record ID`,className) %>% fastDummies::dummy_cols(., select_columns = "className")
VA.df_w<-VA.df_w %>% dplyr::select(-className)
names(VA.df_w)<-str_replace(names(VA.df_w), "className_", "")

missclass<-VA.df %>% filter(`VA Category`=="No Classification Available") %>% dplyr::select(`Record ID`) # FOR QA
missclass.df<-missclass %>% group_by(`Record ID`) %>% summarise(N=n())               # FOR QA

VA.df_w[,c(2:length(VA.df_w))]<-sapply(VA.df_w[,c(2:length(VA.df_w))], as.numeric)
VA.df_w<-VA.df_w %>%
 group_by(`Record ID`) %>% 
  summarise(across(everything(), sum)) %>%
  as.data.frame()

rownames(VA.df_w)<-NULL
names(VA.df_w)[1]<-"record_id"
NO_RX_MEDS<-NO_RX_MEDS %>%dplyr::select(record_id, RX_Medication.factor)
NO_RX_MEDS<-NO_RX_MEDS[!duplicated(NO_RX_MEDS),]
NO_RX_MEDS$RX_Medication.factor<-"No Oral Prescriptions"
VA.df_w$RX_Medication.factor<-"Oral Prescriptions"
a_VA.df_w<-plyr::rbind.fill(VA.df_w,NO_RX_MEDS)
#missing<-RAW$`Record ID` [!(RAW$`Record ID` %in% VA.df_w$record_id)]
#noMEDS<-NO_RX_MEDS$record_id [!(NO_RX_MEDS$record_id %in% VA.df_w$record_id )]
#noMEDS<-NO_RX_MEDS$record_id[!(NO_RX_MEDS$record_id %in% oral_ing_df_w$record_id )]
#noMEDS<-unique(noMEDS)
#missing<-missing[!(missing %in% noMEDS)]
#missing.df<-as.data.frame(missing)
#names(missing.df)[1]<-"record_id"
#missing.df$RX_Medication.factor<-"ONLY Topical Prescriptions"
#a_VA.df_w<-plyr::rbind.fill(a_VA.df_w,missing.df)
a_VA.df_w[,c(2:length(a_VA.df_w))]<-sapply(a_VA.df_w[,c(2:length(a_VA.df_w))], as.character)



missing_data_fill_0<-function(x) {
 x<- as.character(x)
  x<-if_else(is.na(x) ,"0", as.character(x))
x<-as.numeric(x)
  return(x)
}

a_VA.df_w[,2:length(a_VA.df_w)]<-sapply(a_VA.df_w[,2:length(a_VA.df_w)], missing_data_fill_0)
readr::write_csv(a_VA.df_w, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_SUM_DUMMY_VA.csv")



a_VA.df_w[,2:length(a_VA.df_w)]<-sapply(a_VA.df_w[,2:length(a_VA.df_w)], as.double)
a_VA.df_w <- a_VA.df_w %>% group_by(record_id) %>%
  mutate(across(everything(),~ if_else(.>1, 1,.))) %>%
  as.data.frame()

a_VA.df_w[,1:length(a_VA.df_w)]<-sapply(a_VA.df_w[,1:length(a_VA.df_w)], missing_data_fill_0)



readr::write_csv(a_VA.df_w, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_DUMMY_CODE_VA.csv")

_

Redcap

missing_data_fill<-function(x) {
 x<- as.character(x)
  x<-if_else(str_starts(x, "-999"), "", as.character(x))
  x<-na_if(x, "")
return(x)
  
}  # Converts -99994 to NA
HHQ <- read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/HHQ/data/IGNITE_BS_Alc_Caff_Smoke_Medu_recoded_2022_10_9.csv")
source("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/IGNITEDatabase_R_2023-07-06_1542.r")
data$cog1_date<-labelled::remove_labels(data$cog1_date)
data$BMI<-(as.numeric(data$vo2_data_weight)/(as.numeric(data$vo2_data_height)*.01)^2)
data$cog1_date<-na_if(data$cog1_date, "")
data<-data[complete.cases(data$cog1_date),]
data<-data %>% filter(str_length(record_id)==5)
data<-data %>% filter(record_id %in% HHQ$record_id)

data[,2:length(data)]<-sapply(data[,2:length(data)], missing_data_fill)
data$screen_phy_mod<-if_else(data$screen_phy_mod.factor=="More than 20 minutes, 3 days per week (+60 minutes), STOP", 2,1)
data$screen_phy_vig<-if_else(data$screen_phy_vig.factor=="More than 20 minutes, 3 days per week (+60 minutes), STOP", 2,1)
data<-data %>%filter(redcap_event_name=="preintervention_arm_2" & str_length(record_id)==5 & !str_detect(record_id, "-")  &complete.cases(cog1_date) & record_id %in%HHQ$record_id ) 
data$record_id<-labelled::remove_var_label(data$record_id)
data$screen_race.factor<-if_else( data$screen_race.factor!="Caucasian / White" &data$screen_race.factor!="African American / Black", "Other",  data$screen_race.factor )
data$screen_race.factor<-factor(data$screen_race.factor, levels=c("Caucasian / White" ,"African American / Black", "Other"))
data$site.factor<-if_else(str_starts(data$record_id, "1"), "UPitt","")
data$site.factor<-if_else(str_starts(data$record_id, "2"), "Kansas",as.character(data$site.factor))
data$site.factor<-if_else(str_starts(data$record_id, "3"), "Northeastern",as.character(data$site.factor))
data$site.factor<-factor(data$site.factor, levels=c("UPitt","Northeastern", "Kansas"))
data<-data %>% dplyr::select(-vo2_data_height)
TMP<-data %>% dplyr::select(record_id, adj_labels.factor) %>% fastDummies::dummy_cols("adj_labels.factor")
TMP<-TMP %>% dplyr::select(-adj_labels.factor)
class(data$record_id)<-"character"
class(TMP$record_id)<-"character"
TMP<-TMP %>% dplyr::select(-`adj_labels.factor_3=Performing poorly on non-memory tests; subjective complaints not used for classification`)
names(TMP)<-str_replace(names(TMP),"adj_labels.factor_","")
names(TMP)<-str_replace(names(TMP),"reported","")
names(TMP)<-str_replace(names(TMP)," =  "," ")
names(TMP)<-str_replace(names(TMP)," = "," ")
data<-full_join(data,TMP)
data$adj_factor1<-if_else(data$adj_labels=="1" |
                            data$adj_labels=="2",
                          "Performing within normal ranges on tests","")
data$adj_factor1<-if_else(data$adj_labels=="5" | 
                            data$adj_labels=="8","Performing poorly on MEMORY tests",data$adj_factor1)   

data$adj_factor1<-if_else(data$adj_labels=="4"
                          | data$adj_labels=="7" |
                            data$adj_labels=="3",
                          "Performing poorly on NON-MEMORY tests",data$adj_factor1) 


data$adj_factor_complaints<-if_else(data$adj_labels=="1"
                          | data$adj_labels=="4" |
                            data$adj_labels=="5",
                          "No subjective memory complaints","") 

data$adj_factor_complaints<-if_else(data$adj_labels=="2"
                          | data$adj_labels=="7" |
                            data$adj_labels=="8",
                          "Subjective memory complaints",data$adj_factor_complaints) 
data$adj_factor_complaints<-na_if(data$adj_factor_complaints,"")
data$adj_mem_complaints.factor<-factor(data$adj_factor_complaints, levels=c("No subjective memory complaints","Subjective memory complaints"))
data$adj_mem_complaints<-as.numeric(data$adj_mem_complaints.factor)

data$adj_factor1<-factor(data$adj_factor1, levels=c("Performing within normal ranges on tests",
                                                    "Performing poorly on MEMORY tests",
                                                    "Performing poorly on NON-MEMORY tests"))

data$ADJ_Typical<-if_else(data$adj_factor1=="Performing within normal ranges on tests", 1,0)
data$ADJ_PoorMemory<-if_else(data$adj_factor1== "Performing poorly on MEMORY tests", 1,0)
data$ADJ_Poor_NON_memory<-if_else(data$adj_factor1=="Performing poorly on NON-MEMORY tests", 1,0)

data$adjfactor0<-data$adj_factor1<-if_else(data$adj_labels=="1" |
                            data$adj_labels=="2",
                          "Performing within normal ranges","Performing poorly")
data$adjfactor0<-factor(data$adjfactor0, levels=c("Performing within normal ranges","Performing poorly"))
data$adj_poorly<-as.numeric(data$adjfactor0)

#data$hvlt_delay_recall_error_mc<-scale(data$hvlt_delay_recall_error, center=T, scale=F)
data$moca_total_score_mc<-scale(as.numeric(data$moca_total_score), center=T, scale=F)
data$screen_med_diab.factor<-if_else(data$screen_med_diab.factor=="Yes", "Diabetes", "No Diabetes")
data$screen_med_diab.factor<-factor(data$screen_med_diab.factor, levels=c("No Diabetes", "Diabetes"))
data$screen_med_diab<-if_else(data$screen_med_diab.factor=="No", "0", data$screen_med_diab)
data$dsst_error_mc<-scale(as.numeric(data$dsst_error), center=T, scale=F)
data$hvlt_recall_errors_mc<-scale(as.numeric(data$hvlt_recall_errors), center=T, scale=F)
data$adj_labels.factor<-as.factor(data$adj_labels.factor)
data$moca_total_score<-as.numeric(data$moca_total_score)
data$ADJ_Poor_objective_memory_Subjective_Memory_Complaints<-as.factor(data$`4a Performing poorly on NON-MEMORY tests, subjective memory complaints .`)



error.df<-data %>% dplyr::select(record_id, contains("error") & !contains("_mc") & !contains("trial"))
error.df[,2:length(error.df)]<-sapply(error.df[,2:length(error.df)], as.numeric)
error.df$error_avg<-rowMeans(error.df[,2:21])
error.df<-error.df %>% dplyr::select(record_id,error_avg)
data<-full_join(data,error.df)
ggplot(data, aes(screen_age,error_avg ))+geom_point()

median_center <- function(x) {  as.numeric(x)-median(as.numeric(x), na.rm=T) }

error.df<-data %>% dplyr::select(record_id, contains("error") & !contains("_mc") & !contains("trial") & !contains("error_avg"))
error.df[,2:length(error.df)]<-sapply(error.df[,2:length(error.df)], as.numeric)
error.df[,2:length(error.df)]<-sapply(error.df[,2:length(error.df)], median_center)
error.df$error_mdc_sum<-rowSums(error.df[,2:21])
error.df$error_mdc_sum<-as.numeric(error.df$error_mdc_sum)
error.df<-error.df %>% dplyr::select(record_id,error_mdc_sum)
data<-full_join(data,error.df)

ggplot(data, aes(screen_age,error_mdc_sum ))+geom_point()

error.df<-data %>% dplyr::select(record_id, contains("error") & !contains("_mc") & !contains("trial") & !contains("_mdc_"))
error.df[,2:length(error.df)]<-sapply(error.df[,2:length(error.df)], as.numeric)
error.df[,2:length(error.df)]<-sapply(error.df[,2:length(error.df)], scale)
error.df$errorZ_sum<-rowSums(error.df[,2:21])
hist(error.df$errorZ_sum)

error.df<-error.df %>% dplyr::select(record_id,errorZ_sum)
data<-full_join(data,error.df)
ggplot(data, aes(screen_age,errorZ_sum ))+geom_point()

data$screen_age<-as.numeric(data$screen_age)
data$screen_gender<-as.numeric(data$screen_gender)
data$screen_gender<-as.numeric(data$screen_med_diab.factor)
data$screen_med_diab<-if_else(data$screen_med_diab=="2", 0,1)
data$vcap_ant_rt<-as.numeric(data$vcap_ant_rt)
data$vcap_syn_rt<-as.numeric(data$vcap_syn_rt)
data$ecog_lang<-as.numeric(data$ecog_lang)
data$ecog_executive<-as.numeric(data$ecog_executive)
data$ecog_plan<-as.numeric(data$ecog_plan)
data$ecog_org<-as.numeric(data$ecog_org)
data$ecog_visio<-as.numeric(data$ecog_visio)
data$ecog_score_ecog<-as.numeric(data$ecog_score_ecog)
data$ecog_atten<-as.numeric(data$ecog_atten)
class(data$dsst_tscore)<-"numeric"
class(data$dsst_tscore)<-"numeric"
class(data$hvlt_delay_recall_error)<-"numeric"
#class(data$hvlt_recall_errors_mc)<-"numeric"
class(data$hvlt_recall_errors)<-"numeric"
class(data$bvmt_recall_tscore)<-"numeric"
class(data$BMI)<-"numeric"
class(data$animal_errors)<-"numeric"
class(data$dsst_error)<-"numeric"
class(data$hvlt_recall_r_errors)<-"numeric"
class(data$letter_error)<-"numeric"

BEERS 2019

beers<-readr::read_csv( "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_DUMMY_CODED_ach2019.csv")
names(beers)[1]<-"record_id"
beers$record_id<-as.character(beers$record_id)
data$adj_factor1<-as.factor(data$adj_factor1)
data$adj_poorly
##   [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1
##  [38] 1 1 1 1 1 1 1 2 1 1 2 1 1 2 1 1 1 2 1 1 2 1 1 2 2 1 1 2 1 2 2 1 1 1 1 1 1
##  [75] 2 1 2 1 1 2 2 2 1 1 1 1 1 2 1 1 2 2 1 1 1 1 1 2 1 1 1 1 2 1 1 1 1 1 1 1 2
## [112] 1 1 1 1 1 1 1 1 2 1 1 2 1 1 2 1 1 2 1 2 1 1 1 1 2 1 1 2 2 1 2 1 1 1 1 1 2
## [149] 1 2 2 1 2 1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 2 1 2 1 1 1 1 2 1 1 2 1 1 1 1
## [186] 2 1 2 2 1 2 2 1 1 1 1 1 1 2 1 1 2 1 1 1 2 1 1 1 2 2 1 1 1 1 1 1 1 2 1 1 1
## [223] 1 1 2 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 2 1 1 2 1 1 1 2 1 1 1 1 1 1 1
## [260] 2 2 2 1 1 1 1 1 1 2 1 1 1 2 1 2 1 1 1 1 1 2 1 2 2 1 2 2 2 1 1 1 1 1 1 1 1
## [297] 2 2 2 2 1 2 2 2 2 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1
## [334] 2 1 2 1 1 2 2 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 2 2 2 1 2 1 2 1 2 1 2 1 1 2 1
## [371] 2 1 2 1 1 2 2 1 1 2 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 1 2 1 1 2 1 1 1 2 2 1
## [408] 1 2 1 1 2 1 2 1 1 1 1 1 1 1 1 2 1 2 1 2 1 1 1 2 2 1 1 2 1 1 1 2 1 2 1 1 1
## [445] 1 1 1 1 1 1 1 2 1 1 1 1 2 2 1 2 1 1 1 2 1 1 1 1 2 1 1 2 1 2 2 1 1 2 1 2 1
## [482] 1 1 1 1 1 1 1 1 2 2 1 2 1 1 2 1 1 1 2 2 1 1 2 1 1 1 1 2 2 2 2 1 1 1 2 1 1
## [519] 1 1 1 2 1 1 1 1 2 2 1 1 1 1 1 2 1 1 1 2 2 1 1 1 2 1 1 2 1 1 1 2 1 1 2 1 1
## [556] 2 2 1 2 2 1 2 2 1 2 1 2 2 2 1 1 2 1 1 2 2 2 1 1 2 1 2 2 1 1 1 1 1 1 1 1 1
## [593] 1 1 2 1 1 1 1 1 2 2 1 2 1 2 2 1 2 2 2 2 2 2 2 1 1 2 1 2 1 1 2 1 1 2 1 2 1
## [630] 1 1 2 2 1 2 2 2 2 2 1 1 2 2 2 1 1 2 1
table(data$record_id %in% beers$record_id)
## 
## TRUE 
##  648
tmp<-data %>% select(record_id, screen_site, adj_poorly, ADJ_Typical, ADJ_Poor_NON_memory,ADJ_PoorMemory)
beers[,2:4]<-sapply(beers[,2:4], as.factor)
AAA_beers_data<-full_join(beers,data)
AAA_beers_data$adj_factor_complaints<-as.factor(AAA_beers_data$adj_factor_complaints)
AAA_beers_data$hvlt_delay_recall_tscore<-as.numeric(AAA_beers_data$hvlt_delay_recall_tscore)
table(is.na(AAA_beers_data$BEERS_Daily))
## 
## FALSE 
##   648
adj.tmp<-data %>% select(ADJ_Typical, ADJ_Poor_NON_memory,ADJ_PoorMemory)

table1::table1(~adj_factor_complaints+ hvlt_delay_recall_tscore+ BEERS+ BEERS_PRN|BEERS_Daily,data=AAA_beers_data,  overall=F, extra.col=list(`P-value`=pvalue))
0
(N=615)
1
(N=33)
P-value
adj_factor_complaints
No subjective memory complaints 299 (48.6%) 14 (42.4%) 0.664
Subjective memory complaints 307 (49.9%) 18 (54.5%)
Missing 9 (1.5%) 1 (3.0%)
hvlt_delay_recall_tscore
Mean (SD) 51.6 (8.64) 53.7 (8.82) 0.176
Median [Min, Max] 53.0 [21.0, 64.0] 56.0 [25.0, 64.0]
BEERS
0 605 (98.4%) 0 (0%) <0.001
1 10 (1.6%) 33 (100%)
BEERS_PRN
0 605 (98.4%) 31 (93.9%) 0.239
1 10 (1.6%) 2 (6.1%)
tmp1<-AAA_beers_data %>% select(adj_mem_complaints,ADJ_Typical, ADJ_Poor_NON_memory,ADJ_PoorMemory, BEERS, BEERS_PRN, BEERS_Daily)
tmp1[,1:length(tmp1)]<-sapply(tmp1[,1:length(tmp1)], as.numeric)
view(tmp1)

M<-cor(tmp1,use = "pairwise.complete.obs")
testRes = corrplot::cor.mtest(tmp1, conf.level = 0.95)
fcorr<-flattenCorrMatrix(M,testRes$p)
fcorr$rowN<-""
fcorr$colN<-""
for (i in 1:nrow(fcorr)) {
  rown<-fcorr$row[i]
  rown<-tmp1 %>% select(rown)
  fcorr$rowN[i]<-sum(rown, na.rm=T)

  coln<-fcorr$column[i]
  coln<-tmp1 %>% select(coln)
  fcorr$colN[i]<-sum(coln,na.rm=T)


}
fcorr$row_perc<-(as.numeric(fcorr$rowN)/648)*100
fcorr$col_perc<-(as.numeric(fcorr$colN)/648)*100
fcorr$p<-round(fcorr$p, 4)
view(fcorr)


table1::table1(~ BEERS+ BEERS+ BEERS_PRN+ BEERS_Daily|screen_site.factor ,data=AAA_beers_data,  overall=F, extra.col=list(`P-value`=pvalue))

Oral Ingredients

ing<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/BS_RX_SUM_DUMMY_ORAL_INGREDIENTS_NoOpthmalic.csv")
names(ing)[1]<-"record_id"

df<-ing[,c(1,3:length(ing))]
tdf<-t(df)
tdf<-as.data.frame(tdf)
names(tdf)<-tdf[1,]
tdf<-tdf[-c(1),]
tdf[,1:length(tdf)]<-sapply(tdf[,1:length(tdf)], as.numeric)
tdf$TOTAL<-rowSums(tdf)
tdf$perc_sample<-round((tdf$TOTAL/648)*100,2)
tdf %>% dplyr::select(TOTAL,perc_sample) %>% filter(perc_sample>=10) %>% arrange(desc(perc_sample))
pulltop10<-tdf %>% dplyr::select(TOTAL,perc_sample) %>% filter(perc_sample>=10) %>% arrange(desc(perc_sample))
ing$N_Oral_Ingredients<-rowSums(ing[,3:length(ing)])
ing$record_id<-as.character(ing$record_id)
ing_db<-full_join(data,ing)
ing_db$site<-as.numeric(ing_db$site.factor)
ing$RX_Medication_level<-as.numeric(ing$RX_Medication.factor)

forcor<-ing_db %>% dplyr::select(site,adj_mem_complaints,adj_poorly, ADJ_Typical, ADJ_PoorMemory, ADJ_Poor_NON_memory, N_Oral_Ingredients, screen_med_diab, screen_age, BMI, rownames(pulltop10)
,diphenhydramine,diazepam, lorazepam, ondansetron,semaglutide, mirtazapine, tramadol,ibuprofen,aspirin) 
forcor[1:length(forcor)]<-sapply(forcor[1:length(forcor)], as.numeric)
M<-cor(forcor,use = "pairwise.complete.obs")

testRes = corrplot::cor.mtest(forcor, conf.level = 0.95)
corrplot::corrplot(M, p.mat = testRes$p, method = 'color',type="upper", diag = FALSE,tl.cex =0.5,
         sig.level = c(0.001, 0.01, 0.05), pch.cex = 0.5,tl.srt = 45,
         insig = 'label_sig', pch.col = 'grey20')

drugs<-read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/RedCap_Vars/Concept2Class/ATC.csv")
diabetic_drugs<-drugs %>% filter(str_starts(rxclassMinConceptItem.classId, "A10")) %>% dplyr::select(minConcept.name) %>% unlist() %>% paste0()
IGNITE_diab_drugs<-names(ing)[ names(ing) %in% diabetic_drugs]

#table1::table1(~ .|adjfactor0 ,data=x.df,  overall=F, extra.col=list(`P-value`=pvalue))
ing2<-ing %>% dplyr::select(record_id,semaglutide, mirtazapine, tramadol,ibuprofen,aspirin,IGNITE_diab_drugs )
data<-full_join(data,ing2 )

error.df<-data %>% dplyr::select(record_id, contains("error") & !contains("_mc") & !contains("trial") & !contains("_mdc_"))

IGNITE_diab_drug_Error<-data %>% dplyr::select( names(error.df),names(IGNITE_diab_drugs)[2:length(IGNITE_diab_drugs)] ,-record_id, screen_age)
IGNITE_diab_drug_Error[,1:length(IGNITE_diab_drug_Error)]<-sapply(IGNITE_diab_drug_Error[,1:length(IGNITE_diab_drug_Error)], as.numeric)
ing_db<-full_join(ing,data)

MESH

options(scipen=999)

df<-readr::read_csv( "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_MESH.csv")
names(df)[1]<-"record_id"
class(df$record_id)<-"character"
data_mesh<-full_join(data,df )
df.tmp<-df %>% dplyr::select(record_id,`NO MESH Available`,"5-alpha Reductase Inhibitors"   :`Wakefulness-Promoting Agents`)
tmp<-data %>% dplyr::select(record_id, adjfactor0)
class(tmp$record_id)<-"character"
tmp<-full_join(tmp,df.tmp)
tmp<-tmp %>% dplyr::select(-record_id)
tmp[,1:length(tmp)]<-sapply(tmp[,1:length(tmp)], as.factor)
forcor<-data_mesh %>% dplyr::select(`NO MESH Available`,"5-alpha Reductase Inhibitors"   :`Wakefulness-Promoting Agents`) 

corrplot::corrplot(M, p.mat = testRes$p, method = 'color', diag = FALSE,tl.cex =0.15,
         sig.level = c(0.001, 0.01, 0.05), pch.cex = 0.1,tl.srt = 45,
         insig = 'label_sig', pch.col = 'grey20', order="hclust", tl.pos = "n")

#table1::table1(~.|adjfactor0 ,data=tmp,  overall=F, extra.col=list(`P-value`=pvalue))
tdf<-t(df[,c(1:213)])
tdf<-as.data.frame(tdf)
names(tdf)<-tdf[1,]
tdf<-tdf[-c(1),]
tdf[1:length(tdf)]<-sapply(tdf[1:length(tdf)], as.numeric)
tdf$TOTAL<-rowSums(tdf)
tdf$perc_sample<-round((tdf$TOTAL/648)*100,2)
tdf %>% dplyr::select(TOTAL,perc_sample) %>% filter(perc_sample>=10) %>% arrange(desc(perc_sample))

EPC (157)

df<-readr::read_csv( "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_EPC.csv")
names(df)[1]<-"record_id"
class(df$record_id)<-"character"
data_EPC<-full_join(data,df )
df.tmp<-df %>% dplyr::select(record_id,`NO EPC Available`,`5-alpha Reductase Inhibitor`:`Xanthine Oxidase Inhibitor`)
tmp<-data %>% dplyr::select(record_id, adjfactor0)
class(tmp$record_id)<-"character"
tmp<-full_join(tmp,df.tmp)
tmp<-tmp %>% dplyr::select(-record_id)
tmp[,1:length(tmp)]<-sapply(tmp[,1:length(tmp)], as.factor)
forcor<-data_EPC %>% dplyr::select(adj_mem_complaints,adj_poorly, ADJ_Typical, ADJ_PoorMemory, ADJ_Poor_NON_memory, screen_med_diab, screen_age, `NO EPC Available`,`5-alpha Reductase Inhibitor`:`Xanthine Oxidase Inhibitor`) 
forcor[1:length(forcor)]<-sapply(forcor[1:length(forcor)], as.numeric)
M<-cor(forcor,use = "pairwise.complete.obs")

testRes = corrplot::cor.mtest(forcor, conf.level = 0.95)
corrplot::corrplot(M, p.mat = testRes$p, method = 'color',type="lower", diag = FALSE,tl.cex =0.2,
         sig.level = c(0.001, 0.01, 0.05), pch.cex = 0.1,tl.srt = 45,
         insig = 'label_sig', pch.col = 'grey20', order="AOE")

#table1::table1(~.|adjfactor0 ,data=tmp,  overall=F, extra.col=list(`P-value`=pvalue))

tdf<-t(df)
tdf<-as.data.frame(tdf)
names(tdf)<-tdf[1,]
tdf<-tdf[-c(1),]
tdf[1:length(tdf)]<-sapply(tdf[1:length(tdf)], as.numeric)
tdf$TOTAL<-rowSums(tdf)
tdf$perc_sample<-round((tdf$TOTAL/648)*100,2)
tdf %>% dplyr::select(TOTAL,perc_sample) %>% filter(perc_sample>=10) %>% arrange(desc(perc_sample))
M<-cor(df.tmp[,2:length(df.tmp)],use = "pairwise.complete.obs")
testRes = corrplot::cor.mtest(df.tmp[,2:length(df.tmp)], conf.level = 0.95)
fcorr<-flattenCorrMatrix(M,testRes$p)
fcorr$rowN<-""
fcorr$colN<-""
for (i in 1:nrow(fcorr)) {
  rown<-fcorr$row[i]
  rown<-df.tmp %>% select(rown)
  fcorr$rowN[i]<-sum(rown)

  coln<-fcorr$column[i]
  coln<-df.tmp %>% select(coln)
  fcorr$colN[i]<-sum(coln)


}
view(fcorr)
fcorr$p<-round(fcorr$p, 4)
fcorr$row_perc<-(as.numeric(fcorr$rowN)/648)*100
fcorr$col_perc<-(as.numeric(fcorr$colN)/648)*100
ggplot(fcorr, aes(row_perc,col_perc))+geom_point()
fcorrf<-fcorr %>% filter(as.numeric(fcorr$rowN)>1& as.numeric(fcorr$colN)>1 & as.numeric(fcorr$p)<0.1)
t_forcor<-t(agent_forcor)
t_forcor<-as.data.frame(t_forcor)
names(t_forcor)<-rownames(t_forcor)
forcor[1:length(forcor)]<-sapply(forcor[1:length(forcor)], as.numeric)

# ++++++++++++++++++++++++++++
# flattenCorrMatrix
# ++++++++++++++++++++++++++++
# cormat : matrix of the correlation coefficients
# pmat : matrix of the correlation p-values
flattenCorrMatrix <- function(cormat, pmat) {
  ut <- upper.tri(cormat)
  data.frame(
    row = rownames(cormat)[row(cormat)[ut]],
    column = rownames(cormat)[col(cormat)[ut]],
    cor  =(cormat)[ut],
    p = pmat[ut]
    )
}

ATC1

missing_data_fill_0<-function(x) {
 x<- as.character(x)
  x<-if_else(str_starts(x, "-999"), "0", as.character(x))
x<-as.numeric(x)
  return(x)
  
} # Fills -9999s with zeros (non-Rxmedication users).

df<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_ATC_Primary.csv")
df[,2:length(df)]<-sapply(df[,2:length(df)], missing_data_fill_0)
names(df)[1]<-"record_id"
class(df$record_id)<-"character"
data_ATC1<-full_join(data,df )
df.tmp<-df %>% dplyr::select(record_id,`No ATC Class Available`,`ALIMENTARY TRACT AND METABOLISM`:VARIOUS)
tmp<-data %>% dplyr::select(record_id, adjfactor0)
class(tmp$record_id)<-"character"
tmp<-full_join(tmp,df.tmp)
tmp<-tmp %>% dplyr::select(-record_id)
tmp[,1:length(tmp)]<-sapply(tmp[,1:length(tmp)], as.factor)
forcor<-data_ATC1 %>% dplyr::select(adj_mem_complaints,adj_poorly, ADJ_Typical, ADJ_PoorMemory, ADJ_Poor_NON_memory, screen_med_diab, screen_age, `ALIMENTARY TRACT AND METABOLISM`:VARIOUS) 

forcor[1:length(forcor)]<-sapply(forcor[1:length(forcor)], as.numeric)
M<-cor(forcor,use = "pairwise.complete.obs")

testRes = corrplot::cor.mtest(forcor, conf.level = 0.95)
corrplot::corrplot(M, p.mat = testRes$p, method = 'color',type="lower", diag = FALSE,tl.cex =0.3,
         sig.level = c(0.001, 0.01, 0.05), pch.cex = 0.2,tl.srt = 45,
         insig = 'label_sig', pch.col = 'grey20')

#table1::table1(~.|adjfactor0 ,data=tmp,  overall=F, extra.col=list(`P-value`=pvalue))

ATC1- more than 10% of sample

df<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_ATC_Primary.csv")
df[,2:length(df)]<-sapply(df[,2:length(df)], missing_data_fill_0)
tdf<-t(df)
tdf<-as.data.frame(tdf)
names(tdf)<-tdf[1,]
tdf<-tdf[-c(1),]
tdf$TOTAL<-rowSums(tdf)
tdf$perc_sample<-round((tdf$TOTAL/648)*100,2)
tdf %>% dplyr::select(TOTAL,perc_sample) %>% filter(perc_sample>=10 & rownames(tdf)!="RX_Medication.factor"
 ) %>% arrange(desc(perc_sample))

ATC-3 (69)

missing_data_fill_0<-function(x) {
 x<- as.character(x)
  x<-if_else(str_starts(x, "-999"), "0", as.character(x))
x<-as.numeric(x)
  return(x)
  
} # Fills -9999s with zeros (non-Rxmedication users).

df<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_ATC3class.csv")
df[,2:length(df)]<-sapply(df[,2:length(df)], missing_data_fill_0)
names(df)[1]<-"record_id"
class(df$record_id)<-"character"
data_ATC3<-full_join(data,df )

df.tmp<-df %>% dplyr::select(record_id,`No ATC Class Available`,ANALGESICS:VITAMINS)
tmp<-data %>% dplyr::select(record_id, adjfactor0)
class(tmp$record_id)<-"character"
tmp<-full_join(tmp,df.tmp)
tmp<-tmp %>% dplyr::select(-record_id)
tmp[,1:length(tmp)]<-sapply(tmp[,1:length(tmp)], as.factor)
forcor<-data_ATC3 %>% dplyr::select(adj_mem_complaints,adj_poorly, ADJ_Typical, ADJ_PoorMemory, ADJ_Poor_NON_memory, screen_med_diab, screen_age, `AGENTS ACTING ON THE RENIN-ANGIOTENSIN SYSTEM`:VITAMINS) 
forcor<-forcor %>% dplyr::select(-`ANTIFUNGALS FOR DERMATOLOGICAL USE`,-`DIAGNOSTIC AGENTS`,-`OPHTHALMOLOGICAL AND OTOLOGICAL PREPARATIONS`, -`EMOLLIENTS AND PROTECTIVES`,-`MEDICATED DRESSINGS`,-`MEDICATED DRESSINGS`, -contains("DERMATOLOGICAL"),-contains("GENITAL"),-`ANTISEPTICS AND DISINFECTANTS`, -contains("GYNECOLOGICAL"),-contains("TOPICAL"),-contains("ANTIBACTERIALS"),-ANTIPSORIATICS,-`ANTI-ACNE PREPARATIONS`,-`ANTISEPTICS AND DISINFECTANTS`,-`STOMATOLOGICAL PREPARATIONS`,-`ALL OTHER THERAPEUTIC PRODUCTS`,-`CARDIAC THERAPY`)
forcor[1:length(forcor)]<-sapply(forcor[1:length(forcor)], as.numeric)
M<-cor(forcor,use = "pairwise.complete.obs")

testRes = corrplot::cor.mtest(forcor, conf.level = 0.95)
corrplot::corrplot(M, p.mat = testRes$p, method = 'color',type="lower", diag = FALSE,tl.cex =0.3,
         sig.level = c(0.001, 0.01, 0.05), pch.cex = 0.2,tl.srt = 45,
         insig = 'label_sig', pch.col = 'grey20')

#table1::table1(~.|adjfactor0 ,data=tmp,  overall=F, extra.col=list(`P-value`=pvalue))

ATC3- more than 10% of sample

df<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_ATC3class.csv")
df[,2:length(df)]<-sapply(df[,2:length(df)], missing_data_fill_0)
tdf<-t(df)
tdf<-as.data.frame(tdf)
names(tdf)<-tdf[1,]
tdf<-tdf[-c(1),]
tdf$TOTAL<-rowSums(tdf)
tdf$perc_sample<-round((tdf$TOTAL/648)*100,2)
tdf %>% dplyr::select(TOTAL,perc_sample) %>% filter(perc_sample>=10 & rownames(tdf)!="RX_Medication.factor") %>% arrange(desc(perc_sample))

ATC-4 (136)

df<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_ATC4class.csv")
df[,2:length(df)]<-sapply(df[,2:length(df)], missing_data_fill_0)
names(df)[1]<-"record_id"
class(df$record_id)<-"character"
#table1::table1(~.|screen_race.factor ,data=tmp,  overall=F, extra.col=list(`P-value`=pvalue))
df<-df %>% dplyr::select(record_id,`No ATC Class Available`, `ACE INHIBITORS, COMBINATIONS`:`VITAMIN K AND OTHER HEMOSTATICS`)
tmp<-data %>% dplyr::select(record_id,adjfactor0)
class(tmp$record_id)<-"character"
tmp<-full_join(tmp,df)
tmp<-tmp %>% dplyr::select(-record_id)
tmp[,1:length(tmp)]<-sapply(tmp[,1:length(tmp)], as.factor)

#table1::table1(~.|adjfactor0 ,data=tmp,  overall=F, extra.col=list(`P-value`=pvalue))

ATC-4- more than 10% of sample

df<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_ATC4class.csv")
df[,2:length(df)]<-sapply(df[,2:length(df)], missing_data_fill_0)
tdf<-t(df)
tdf<-as.data.frame(tdf)
names(tdf)<-tdf[1,]
tdf<-tdf[-c(1),]
tdf$TOTAL<-rowSums(tdf)
tdf$perc_sample<-round((tdf$TOTAL/648)*100,2)
tdf %>% dplyr::select(TOTAL,perc_sample) %>% filter(perc_sample>=10 & rownames(tdf)!="RX_Medication.factor") %>% arrange(desc(perc_sample))

ATC-5 (241)

df<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_ATC5class.csv")
df[,2:length(df)]<-sapply(df[,2:length(df)], missing_data_fill_0)
names(df)[1]<-"record_id"
class(df$record_id)<-"character"

df.tmp<-df %>% dplyr::select(record_id,`No ATC Class Available`,`3-oxoandrosten (4) derivatives`:`Xanthine derivatives`)
tmp<-data %>% dplyr::select(record_id,adjfactor0)
class(tmp$record_id)<-"character"
tmp<-full_join(tmp,df.tmp)
tmp<-tmp %>% dplyr::select(-record_id)
tmp[,1:length(tmp)]<-sapply(tmp[,1:length(tmp)], as.factor)

#table1::table1(~.|adjfactor0 ,data=tmp,  overall=F, extra.col=list(`P-value`=pvalue))

ATC-5- more than 10% of sample

df<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_ATC5class.csv")
df[,2:length(df)]<-sapply(df[,2:length(df)], missing_data_fill_0)
tdf<-t(df)
tdf<-as.data.frame(tdf)
names(tdf)<-tdf[1,]
tdf<-tdf[-c(1),]
tdf$TOTAL<-rowSums(tdf)
tdf$perc_sample<-round((tdf$TOTAL/648)*100,2)
tdf %>% dplyr::select(TOTAL,perc_sample) %>% filter(perc_sample>=10 & rownames(tdf)!="RX_Medication.factor") %>% arrange(desc(perc_sample))

VA primary (25)

df<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_VA_PRIMARY.csv")
names(df)[1]<-"record_id"
class(df$record_id)<-"character"
df.tmp<-df %>% dplyr::select(record_id,`ANTIDOTES,DETERRENTS AND POISON CONTROL`:VITAMINS)
tmp<-data %>% dplyr::select(record_id,adjfactor0)
class(tmp$record_id)<-"character"
tmp<-full_join(tmp,df.tmp)
tmp<-tmp %>% dplyr::select(-record_id)
tmp[,1:length(tmp)]<-sapply(tmp[,1:length(tmp)], as.factor)
t<-paste(names(tmp)[!names(tmp)=="No Classification Available" & !names(tmp)=="adjfactor0"], collapse = "`+`",sep = '`')

table1::table1(~`No Classification Available`+`ANTIDOTES,DETERRENTS AND POISON CONTROL`+`ANTIHISTAMINES`+`ANTIMICROBIALS`+`ANTINEOPLASTICS`+`ANTIPARASITICS`+`AUTONOMIC MEDICATIONS`+`BLOOD PRODUCTS/MODIFIERS/VOLUME EXPANDERS`+`CARDIOVASCULAR MEDICATIONS`+`CENTRAL NERVOUS SYSTEM MEDICATIONS`+`DENTAL AND ORAL AGENTS,TOPICAL`+`DERMATOLOGICAL AGENTS`+`GASTROINTESTINAL MEDICATIONS`+`GENITOURINARY MEDICATIONS`+`HERBS/ALTERNATIVE THERAPIES`+`HORMONES/SYNTHETICS/MODIFIERS`+`IMMUNOLOGICAL AGENTS`+`IRRIGATION/DIALYSIS SOLUTIONS`+`MUSCULOSKELETAL MEDICATIONS`+`NASAL AND THROAT AGENTS,TOPICAL`+`OPHTHALMIC AGENTS`+`OTIC AGENTS`+`PHARMACEUTICAL AIDS/REAGENTS`+`RECTAL,LOCAL`+`RESPIRATORY TRACT MEDICATIONS`+`THERAPEUTIC NUTRIENTS/MINERALS/ELECTROLYTES`+`VITAMINS`|adjfactor0 ,data=tmp,  overall=F, extra.col=list(`P-value`=pvalue))
Performing poorly
(N=202)
Performing within normal ranges
(N=446)
P-value
No Classification Available
0 187 (92.6%) 433 (97.1%) 0.016
1 15 (7.4%) 13 (2.9%)
ANTIDOTES,DETERRENTS AND POISON CONTROL
0 202 (100%) 443 (99.3%) 0.587
1 0 (0%) 3 (0.7%)
ANTIHISTAMINES
0 193 (95.5%) 429 (96.2%) 0.864
1 9 (4.5%) 17 (3.8%)
ANTIMICROBIALS
0 191 (94.6%) 409 (91.7%) 0.262
1 11 (5.4%) 37 (8.3%)
ANTINEOPLASTICS
0 191 (94.6%) 421 (94.4%) 1
1 11 (5.4%) 25 (5.6%)
ANTIPARASITICS
0 197 (97.5%) 438 (98.2%) 0.787
1 5 (2.5%) 8 (1.8%)
AUTONOMIC MEDICATIONS
0 199 (98.5%) 438 (98.2%) 1
1 3 (1.5%) 8 (1.8%)
BLOOD PRODUCTS/MODIFIERS/VOLUME EXPANDERS
0 161 (79.7%) 376 (84.3%) 0.184
1 41 (20.3%) 70 (15.7%)
CARDIOVASCULAR MEDICATIONS
0 65 (32.2%) 142 (31.8%) 1
1 137 (67.8%) 304 (68.2%)
CENTRAL NERVOUS SYSTEM MEDICATIONS
0 120 (59.4%) 257 (57.6%) 0.734
1 82 (40.6%) 189 (42.4%)
DENTAL AND ORAL AGENTS,TOPICAL
0 195 (96.5%) 431 (96.6%) 1
1 7 (3.5%) 15 (3.4%)
DERMATOLOGICAL AGENTS
0 152 (75.2%) 362 (81.2%) 0.106
1 50 (24.8%) 84 (18.8%)
GASTROINTESTINAL MEDICATIONS
0 143 (70.8%) 330 (74.0%) 0.451
1 59 (29.2%) 116 (26.0%)
GENITOURINARY MEDICATIONS
0 167 (82.7%) 387 (86.8%) 0.211
1 35 (17.3%) 59 (13.2%)
HERBS/ALTERNATIVE THERAPIES
0 200 (99.0%) 441 (98.9%) 1
1 2 (1.0%) 5 (1.1%)
HORMONES/SYNTHETICS/MODIFIERS
0 109 (54.0%) 263 (59.0%) 0.268
1 93 (46.0%) 183 (41.0%)
IMMUNOLOGICAL AGENTS
0 194 (96.0%) 433 (97.1%) 0.648
1 8 (4.0%) 13 (2.9%)
IRRIGATION/DIALYSIS SOLUTIONS
0 194 (96.0%) 436 (97.8%) 0.33
1 8 (4.0%) 10 (2.2%)
MUSCULOSKELETAL MEDICATIONS
0 157 (77.7%) 364 (81.6%) 0.294
1 45 (22.3%) 82 (18.4%)
NASAL AND THROAT AGENTS,TOPICAL
0 167 (82.7%) 391 (87.7%) 0.114
1 35 (17.3%) 55 (12.3%)
OPHTHALMIC AGENTS
0 168 (83.2%) 384 (86.1%) 0.394
1 34 (16.8%) 62 (13.9%)
OTIC AGENTS
0 200 (99.0%) 439 (98.4%) 0.825
1 2 (1.0%) 7 (1.6%)
PHARMACEUTICAL AIDS/REAGENTS
0 200 (99.0%) 446 (100%) 0.18
1 2 (1.0%) 0 (0%)
RECTAL,LOCAL
0 197 (97.5%) 437 (98.0%) 0.937
1 5 (2.5%) 9 (2.0%)
RESPIRATORY TRACT MEDICATIONS
0 147 (72.8%) 348 (78.0%) 0.174
1 55 (27.2%) 98 (22.0%)
THERAPEUTIC NUTRIENTS/MINERALS/ELECTROLYTES
0 177 (87.6%) 410 (91.9%) 0.111
1 25 (12.4%) 36 (8.1%)
VITAMINS
0 191 (94.6%) 421 (94.4%) 1
1 11 (5.4%) 25 (5.6%)

VA primary- more than 10% of sample

df<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_VA_PRIMARY.csv")
df[,2:length(df)]<-sapply(df[,2:length(df)], missing_data_fill_0)
tdf<-t(df)
tdf<-as.data.frame(tdf)
names(tdf)<-tdf[1,]
tdf<-tdf[-c(1),]
tdf$TOTAL<-rowSums(tdf)
tdf$perc_sample<-round((tdf$TOTAL/648)*100,2)
tdf %>% dplyr::select(TOTAL,perc_sample) %>% filter(perc_sample>=10 & rownames(tdf)!="RX_Medication.factor") %>% arrange(desc(perc_sample))

VA full classification (135)

df<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_VA.csv")
df[,2:length(df)]<-sapply(df[,2:length(df)], missing_data_fill_0)

names(df)[1]<-"record_id"
class(df$record_id)<-"double"
df<-as.data.frame(df)
df<-df[,c(1,3:length(df))]
tmp<-data %>% dplyr::select(record_id,adjfactor0,site.factor,screen_race.factor, screen_med_diab.factor,screen_race_la_his.factor)
tmp$record_id<-as.character(tmp$record_id)
class(tmp$record_id)<-"double"
tmp<-full_join(df, tmp)
tmp<-tmp %>% dplyr::select(-record_id)
tmp[,1:length(tmp)]<-sapply(tmp[,1:length(tmp)], as.factor)

#table1::table1(~.|adjfactor0 ,data=tmp,  overall=F, extra.col=list(`P-value`=pvalue))

VA primary- more than 10% of sample

df<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/Proc/7_12_23/BS_RX_DUMMY_CODE_VA.csv")
df[,2:length(df)]<-sapply(df[,2:length(df)], missing_data_fill_0)
tdf<-t(df)
tdf<-as.data.frame(tdf)
names(tdf)<-tdf[1,]
tdf<-tdf[-c(1),]
tdf$TOTAL<-rowSums(tdf)
tdf$perc_sample<-round((tdf$TOTAL/648)*100,2)
tdf %>% dplyr::select(TOTAL,perc_sample) %>% filter(perc_sample>=10 & rownames(tdf)!="RX_Medication.factor") %>% arrange(desc(perc_sample))

___

CODEBOOKS:

Brand2MinConcept

 library(httr)

  call<-paste0("https://rxnav.nlm.nih.gov/REST/RxTerms/allconcepts.json")
  API<-GET(call,
           #query=query1,
           add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                        `content-encoding`="UTF-8"),
           `content_type`="application/json")
     data1=jsonlite::fromJSON(rawToChar(API$content))
     data1<-as.data.frame(data1$minConceptGroup$minConcept)
     terms<-flatten(data1)

  
  
remove_DFGs<-c("Medicated Pad",
"Medicated Patch",
"Medicated Tape",
"Powder Spray",
"Topical Cream",
"Topical Foam",
"Topical Gel",
"Topical Liquefied Gas",
"Topical Lotion",
"Topical Oil",
"Topical Ointment",
"Topical Powder",
"Topical Solution",
"Shampoo",
"Topical Spray",
"Topical Suspension",
"Topical", "lotion", "Cream", "Gel", "Ointment", "Gum")


not_needed<-c("influenza A virus", "vaccine")
terms<-terms[!str_detect(terms$fullName, regex(paste(remove_DFGs, collapse = "|"))),]
terms<-terms[!str_detect(terms$fullName, regex(paste(not_needed, collapse = "|"))),]
    
     
terms$Brand<-if_else(str_detect(terms$fullName,fixed("[")), sub(".*\\[([^][]+)].*", "\\1", terms$fullName), "")
terms$Brand<-na_if(terms$Brand,"")
terms<-terms[complete.cases(terms$Brand),]



for (i in 1:nrow(terms)) {
  x<-round((i/nrow(terms))*100,2)
  row<-terms[i,]
     print(paste0(x ,"%"))
     call<-paste0("https://rxnav.nlm.nih.gov/REST/rxcui/",row$rxcui,"/historystatus.json")
     API<-GET(call,
              add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                                           `content-encoding`="UTF-8"),
                                           `content_type`="application/json")
    data =jsonlite::fromJSON(rawToChar(API$content)) 
    attributes <-as.data.frame(data$rxcuiStatusHistory$attributes)
    terms$status[i]<-data$rxcuiStatusHistory$metaData$status
    terms$isMultipleIngredient[i]<-if_else(terms$isMultipleIngredient[i]=="", attributes$isMultipleIngredient, terms$isMultipleIngredient[i])
    terms$isBranded[i]<-if_else(terms$isBranded[i]=="", attributes$isBranded, terms$isBranded[i])
    row<- row %>% dplyr::select(-names(row)[names(row) %in% names(attributes)])
    terms$history[i]<-"1"
    row<-cbind(row, attributes)
    ingredientConcept<-as.data.frame(data$rxcuiStatus$derivedConcepts$ingredientConcept)
    if (nrow(ingredientConcept)>1) {
      terms$ingredientConcept.factor[i]<-"2"
      ing<-as.data.frame(t(data$rxcuiStatusHistory$derivedConcepts$ingredientConcept))
            ing %>% filter("ingredientName" %in% rownames(ing))
            names<- ing[2,]
            ingredients<-paste(names, collapse = " / ")
            terms$ingredientName[i]<-ingredients
            cuis<- ing[1,]
            cuis<-paste(cuis, collapse = ", ")
            terms$ingredientRxcui[i]<-as.character(cuis)
            row<- cbind.data.frame(row, ing)
    } else if (nrow(ingredientConcept)==1) {
      terms$ingredientConcept.factor[i]<-"1"
      terms$ingredientName[i] <-data$rxcuiStatusHistory$derivedConcepts$ingredientConcept$ingredientName
      row$ingredientName <-data$rxcuiStatusHistory$derivedConcepts$ingredientConcept$ingredientName
      row$ingredientRxcui<-data$rxcuiStatusHistory$derivedConcepts$ingredientConcept$ingredientRxcui
       terms$ingredientRxcui[i]<-data$rxcuiStatusHistory$derivedConcepts$ingredientConcept$ingredientRxcui
      } else if (nrow(ingredientConcept)==0) {
          terms$ingredientConcept.factor[i]<-"0"
      }
}
   

terms$ingredientRxcui
terms<-terms %>% dplyr::select(Brand:ingredientRxcui)
terms<-terms[!duplicated(terms),]

readr::write_csv(terms, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/finalized/All_Terms_Brand2MinConcept_codebook.csv")

ATC Concept Codebook

atc<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/Concept2Class/ATC.csv")
atc<-janitor::remove_empty(atc, "cols")
atc_0<-atc %>% filter(ATC.factor=="0") %>% dplyr::select(fullName:ATC.factor)
atc_0$Brand<-if_else(str_detect(atc_0$fullName,fixed("[")), sub(".*\\[([^][]+)].*", "\\1", atc_0$fullName), "")
atc_0$Brand<-na_if(atc_0$Brand,"")
atc_0<-atc_0[complete.cases(atc_0$Brand),]

library(httr)
i=1

atc_0$isMultipleIngredient<-""
atc_0$status<-""
   atc_0$ingredientConcept.factor<-""
    atc_0$ingredientRxcui<-""
   atc_0$ingredientName<-""
   atc_0$isBranded<-""
for (i in 1:nrow(atc_0)) {
  x<-round((i/nrow(atc_0))*100,2)
  row<-atc_0[i,]
     print(paste0(x ,"%"))
     call<-paste0("https://rxnav.nlm.nih.gov/REST/rxcui/",row$rxcui,"/historystatus.json")
     API<-GET(call,
              add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                                           `content-encoding`="UTF-8"),
                                           `content_type`="application/json")
    data =jsonlite::fromJSON(rawToChar(API$content)) 
    attributes <-as.data.frame(data$rxcuiStatusHistory$attributes)
    atc_0$status[i]<-data$rxcuiStatusHistory$metaData$status
    atc_0$isMultipleIngredient[i]<-if_else(atc_0$isMultipleIngredient[i]=="", attributes$isMultipleIngredient, atc_0$isMultipleIngredient[i])
    atc_0$isBranded[i]<-if_else(atc_0$isBranded[i]=="", attributes$isBranded, atc_0$isBranded[i])
    row<- row %>% dplyr::select(-names(row)[names(row) %in% names(attributes)])
    atc_0$history[i]<-"1"
    row<-cbind(row, attributes)
    ingredientConcept<-as.data.frame(data$rxcuiStatus$derivedConcepts$ingredientConcept)
    if (nrow(ingredientConcept)>1) {
      atc_0$ingredientConcept.factor[i]<-"2"
      ing<-as.data.frame(t(data$rxcuiStatusHistory$derivedConcepts$ingredientConcept))
            ing %>% filter("ingredientName" %in% rownames(ing))
            names<- ing[2,]
            ingredients<-paste(names, collapse = " / ")
            atc_0$ingredientName[i]<-ingredients
            cuis<- ing[1,]
            cuis<-paste(cuis, collapse = ", ")
            atc_0$ingredientRxcui[i]<-as.character(cuis)
            row<- cbind.data.frame(row, ing)
    } else if (nrow(ingredientConcept)==1) {
      atc_0$ingredientConcept.factor[i]<-"1"
      atc_0$ingredientName[i] <-data$rxcuiStatusHistory$derivedConcepts$ingredientConcept$ingredientName
      row$ingredientName <-data$rxcuiStatusHistory$derivedConcepts$ingredientConcept$ingredientName
      row$ingredientRxcui<-data$rxcuiStatusHistory$derivedConcepts$ingredientConcept$ingredientRxcui
       atc_0$ingredientRxcui[i]<-data$rxcuiStatusHistory$derivedConcepts$ingredientConcept$ingredientRxcui
      } else if (nrow(ingredientConcept)==0) {
          atc_0$ingredientConcept.factor[i]<-"0"
      }
}
   
atc_0$ingredientName<-as.factor(atc_0$ingredientName)
atc_0$check<-word(atc_0$Brand, 1)
atc_0<-atc_0[!duplicated(atc_0$check),]
atc_0<-atc_0 %>% dplyr::select(ATC.factor:isBranded)
atc_0<-atc_0[!duplicated(atc_0),]


atc_1<-atc %>% filter(ATC.factor=="1")
atc_1$Brand<-if_else(str_detect(atc_1$fullName,fixed("[")), sub(".*\\[([^][]+)].*", "\\1", atc_1$fullName), "")
atc_1<-atc_1 %>% dplyr::select(ATC.factor:Brand)
atc_1$minConcept.rxcui<-as.factor(atc_1$minConcept.rxcui)
atc_1$rxclassMinConceptItem.classId<-as.factor(atc_1$rxclassMinConceptItem.classId)
atc_1$Brand<-na_if(atc_1$Brand,"")

key<-atc_1 %>% dplyr::select(minConcept.name, Brand)
key<-key[complete.cases(key$Brand),]
atc_2<-right_join(atc_1, key)
atc_2<-atc_2[!duplicated(atc_2),]
atc_1<-atc_2
ATC<-plyr::rbind.fill(atc_0,atc_1)



IGNITE_MISSING <- function(x) {
  x<-if_else(is.na(x), "-99994", as.character(x))
  return(x)
}

ATC[,c(9:15)]<-sapply(ATC[,c(9:15)], IGNITE_MISSING)

readr::write_csv(ATC, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/Concept2Class/quantified_0/ATC14_codebook_concepts.csv")

VA Concept Codebook.

x<-readr::read_csv("/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/Concept2Class/VA.csv")
x<-janitor::remove_empty(x, "cols")
x_0<-x %>% filter(ATC.factor=="0") %>% dplyr::select(fullName:ATC.factor)
x_0$Brand<-if_else(str_detect(x_0$fullName,fixed("[")), sub(".*\\[([^][]+)].*", "\\1", x_0$fullName), "")
x_0$Brand<-na_if(x_0$Brand,"")
x_0<-x_0[complete.cases(x_0$Brand),]
library(httr)
i=1

atc_0$isMultipleIngredient<-""
atc_0$status<-""
   atc_0$ingredientConcept.factor<-""
    atc_0$ingredientRxcui<-""
   atc_0$ingredientName<-""
   atc_0$isBranded<-""
for (i in 1:nrow(atc_0)) {
  x<-round((i/nrow(atc_0))*100,2)
  row<-atc_0[i,]
     print(paste0(x ,"%"))
     call<-paste0("https://rxnav.nlm.nih.gov/REST/rxcui/",row$rxcui,"/historystatus.json")
     API<-GET(call,
              add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                                           `content-encoding`="UTF-8"),
                                           `content_type`="application/json")
    data =jsonlite::fromJSON(rawToChar(API$content)) 
    attributes <-as.data.frame(data$rxcuiStatusHistory$attributes)
    atc_0$status[i]<-data$rxcuiStatusHistory$metaData$status
    atc_0$isMultipleIngredient[i]<-if_else(atc_0$isMultipleIngredient[i]=="", attributes$isMultipleIngredient, atc_0$isMultipleIngredient[i])
    atc_0$isBranded[i]<-if_else(atc_0$isBranded[i]=="", attributes$isBranded, atc_0$isBranded[i])
    row<- row %>% dplyr::select(-names(row)[names(row) %in% names(attributes)])
    atc_0$history[i]<-"1"
    row<-cbind(row, attributes)
    ingredientConcept<-as.data.frame(data$rxcuiStatus$derivedConcepts$ingredientConcept)
    if (nrow(ingredientConcept)>1) {
      atc_0$ingredientConcept.factor[i]<-"2"
      ing<-as.data.frame(t(data$rxcuiStatusHistory$derivedConcepts$ingredientConcept))
            ing %>% filter("ingredientName" %in% rownames(ing))
            names<- ing[2,]
            ingredients<-paste(names, collapse = " / ")
            atc_0$ingredientName[i]<-ingredients
            cuis<- ing[1,]
            cuis<-paste(cuis, collapse = ", ")
            atc_0$ingredientRxcui[i]<-as.character(cuis)
            row<- cbind.data.frame(row, ing)
    } else if (nrow(ingredientConcept)==1) {
      atc_0$ingredientConcept.factor[i]<-"1"
      atc_0$ingredientName[i] <-data$rxcuiStatusHistory$derivedConcepts$ingredientConcept$ingredientName
      row$ingredientName <-data$rxcuiStatusHistory$derivedConcepts$ingredientConcept$ingredientName
      row$ingredientRxcui<-data$rxcuiStatusHistory$derivedConcepts$ingredientConcept$ingredientRxcui
       atc_0$ingredientRxcui[i]<-data$rxcuiStatusHistory$derivedConcepts$ingredientConcept$ingredientRxcui
      } else if (nrow(ingredientConcept)==0) {
          atc_0$ingredientConcept.factor[i]<-"0"
      }
}
   
atc_0$ingredientName<-as.factor(atc_0$ingredientName)
atc_0$check<-word(atc_0$Brand, 1)
atc_0<-atc_0[!duplicated(atc_0$check),]
atc_0<-atc_0 %>% dplyr::select(ATC.factor:isBranded)
atc_0<-atc_0[!duplicated(atc_0),]


atc_1<-atc %>% filter(ATC.factor=="1")
atc_1$Brand<-if_else(str_detect(atc_1$fullName,fixed("[")), sub(".*\\[([^][]+)].*", "\\1", atc_1$fullName), "")
atc_1<-atc_1 %>% dplyr::select(ATC.factor:Brand)
atc_1$minConcept.rxcui<-as.factor(atc_1$minConcept.rxcui)
atc_1$rxclassMinConceptItem.classId<-as.factor(atc_1$rxclassMinConceptItem.classId)
atc_1$Brand<-na_if(atc_1$Brand,"")

key<-atc_1 %>% dplyr::select(minConcept.name, Brand)
key<-key[complete.cases(key$Brand),]
atc_2<-right_join(atc_1, key)
atc_2<-atc_2[!duplicated(atc_2),]
atc_1<-atc_2
ATC<-plyr::rbind.fill(atc_0,atc_1)



IGNITE_MISSING <- function(x) {
  x<-if_else(is.na(x), "-99994", as.character(x))
  return(x)
}

ATC[,c(9:15)]<-sapply(ATC[,c(9:15)], IGNITE_MISSING)

readr::write_csv(ATC, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/Concept2Class/quantified_0/ATC14_codebook_concepts.csv")

TERM CODEBOOKS

  library(httr)

  call<-paste0("https://rxnav.nlm.nih.gov/REST/RxTerms/allconcepts.json")
  API<-GET(call,
           #query=query1,
           add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                        `content-encoding`="UTF-8"),
           `content_type`="application/json")
     data1=jsonlite::fromJSON(rawToChar(API$content))
     data1<-as.data.frame(data1$minConceptGroup$minConcept)
     terms<-flatten(data1)

  
  
remove_DFGs<-c("Medicated Pad",
"Medicated Patch",
"Medicated Tape",
"Powder Spray",
"Topical Cream",
"Topical Foam",
"Topical Gel",
"Topical Liquefied Gas",
"Topical Lotion",
"Topical Oil",
"Topical Ointment",
"Topical Powder",
"Topical Solution",
"Shampoo",
"Topical Spray",
"Topical Suspension",
"Topical", "lotion", "Cream", "Gel", "Ointment", "Gum")


not_needed<-c("influenza A virus", "vaccine")
  terms<-terms[!str_detect(terms$fullName, regex(paste(remove_DFGs, collapse = "|"))),]
    terms<-terms[!str_detect(terms$fullName, regex(paste(not_needed, collapse = "|"))),]
    terms$factor<-""
     terms$concept.tty<-""
class.df<-as.data.frame("")
for (i  in 1:nrow(terms)) {
 row<- terms[i,]
 x<-stringi::stri_enc_toutf8(row$rxcui)

 query1<-list(rxcui=x , relaSource="STRUCT") #relas="has_moa" source="ATC1-4" 
  call<-paste0("https://rxnav.nlm.nih.gov/REST/rxclass/class/byRxcui.json?")
   API<-GET(call,
            query=query1,
           add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                        `content-encoding`="UTF-8"),
           `content_type`="application/json")
     data1=jsonlite::fromJSON(rawToChar(API$content))
     if (length(data1)==0) {
        print("0")
       terms$factor[i]<-"0"
       row$factor<-"0"
        terms$concept.tty<-""
       class.df<-  plyr::rbind.fill(row, class.df)
       next
     } else {
       data<-as.data.frame(data1$rxclassDrugInfoList$rxclassDrugInfo)
       data<-flatten(data)
       terms$concept.tty[i]<-paste(unique(data1$rxclassDrugInfoList$rxclassDrugInfo$minConcept$tty), collapse = ",")
      terms$factor[i]<-"1"
      row$factor<-"1"
      row<-cbind(row, data)
      class.df<-  plyr::rbind.fill(row, class.df)
}}

class.df<-class.df[complete.cases(class.df$rxcui),]
class.df<-janitor::remove_empty(class.df, "cols")
 write_csv(class.df, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/Concept2Class/MESHPA.csv")

CLASS CODEBOOKS

  query1<-list(source="STRUCT+CHEM" ) #relas="has_moa" source="ATC1-4" 
  call<-paste0("https://rxnav.nlm.nih.gov/REST/rxclass/allClasses.json?")
  API<-GET(call,
           #query=query1,
           add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                        `content-encoding`="UTF-8"),
           `content_type`="application/json")
     data1=jsonlite::fromJSON(rawToChar(API$content))
     data1<-as.data.frame(data1$rxclassMinConceptList)
     VA.df<-flatten(data1)

  
  library(httr)
  
remove_DFGs<-c("Medicated Pad",
"Medicated Patch",
"Medicated Tape",
"Powder Spray",
"Topical Cream",
"Topical Foam",
"Topical Gel",
"Topical Liquefied Gas",
"Topical Lotion",
"Topical Oil",
"Topical Ointment",
"Topical Powder",
"Topical Solution",
"Shampoo",
"Topical Spray",
"Topical Suspension",
"Topical", "lotion", "Cream", "Gel", "Ointment", "Gum")
VA.df<-VA.df %>% filter(rxclassMinConcept.classType!="VA")
  i=5
VA.df$Class_Members<-""
for (i  in 1:nrow(VA.df)) {
 row<- VA.df[i,]
  call<-paste0("https://rxnav.nlm.nih.gov/REST/rxclass/classMembers.json?relaSource=MEDRT&rela=has_Ingredient&classId=",row$rxclassMinConcept.classId, "&trans=1")
   API<-GET(call,
           add_headers( `Authorization`="Bearer 1927dcc0-1f79-48eb-a6e7-74f357a84b1b",
                        `content-encoding`="UTF-8"),
           `content_type`="application/json")
     data1=jsonlite::fromJSON(rawToChar(API$content))
     if (length(data1)==0) {
        print("0")

       VA.df$Class_Members[i]<-""
       next
       
     } else {
      data_frame1<- as.data.frame(data1$drugMemberGroup$drugMember$minConcept)
      rownames(data_frame1)<-NULL
      
      data_frame1<-data_frame1 %>% filter(!str_detect(name,regex(paste0(remove_DFGs, collapse = "|"),ignore_case=T )))
       print(paste0(row$rxclassMinConcept.classType, ": ",nrow(data_frame1)))

    VA.df$Class_Members[i]<- paste(data1$drugMemberGroup$drugMember$minConcept$rxcui, collapse = ", ")
     }}




VA.df$Class_Members<-na_if(VA.df$Class_Members,"")
VA.df1<-VA.df[complete.cases(VA.df$Class_Members),]

 write_csv(VA.df1, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/Class_Source_Member_CUIS/MEDRT_has_Ingredient_NO_TOPICAL_trans1.csv")
 
 
 
 trans0<- read_csv( "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/Class_Source_Member_CUIS/MEDRT_has_Ingredient_NO_TOPICAL_trans0.csv")
trans0$Class_Members<-na_if(trans0$Class_Members,"")
trans0<-trans0[complete.cases(trans0$Class_Members),]
 write_csv(trans0, "/Volumes/IGNITE_Admin/R_IGNITE/RedCap/Medications/Class_Source_Member_CUIS/MEDRT_has_Ingredient_NO_TOPICAL_trans0.csv")

trans0$node<-"DIRECT/INDIRECT"

___