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("<", "<", 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)
}
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 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?`)
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:`)
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:" )
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?`)
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?`, "")
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", .))
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?`)
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?`)
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`
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)
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?`)
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$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)
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 <- 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 <- 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"
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")
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")
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("::"), ":")
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")
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
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" )
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")
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")
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)
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)
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")
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")
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")
** 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
/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"
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;
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"
ingredients %>% dplyr::select(ingredientConcept.ingredientName) %>% unique() %>% DT::datatable(rownames = F)
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)
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"
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")
https://lhncbc.nlm.nih.gov/RxNav/APIs/api-RxClass.getClassByRxNormDrugId.html
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")
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")
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")
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()
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")
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 )
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")
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()
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")
#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")
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")
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")
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")
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")
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")
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")
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<-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))
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)
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))
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]
)
}
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))
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))
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))
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))
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))
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))
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))
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))
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%) |
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))
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))
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))
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<-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")
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")
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")
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"