#########################################################################
## Nicotine data management
## ----------------------------------------------------------------------

rm(list=ls())
library(sas7bdat)

### timestamp
date()
options(max.print=50000)
#setwd("~/Documents/Exprimo/Clients/JJ/Nicotine/DataManagement/MyDataManagement")

indata<-read.csv('../FinalDataset/input1.csv')

head(indata)


outdata<-indata

table(indata$ADOSE[indata$FORMT==4])

outdata$TSFD<-as.numeric(as.character(outdata$TSFD))
outdata$TSWO<-as.numeric(as.character(outdata$TSWO))
#excluding record with no time
outdata[is.na(outdata$TSWO),]$FLGOBS<-1


#for mouthspray
#generating time since start of period
dosetime<-aggregate(outdata$TSFD[outdata$EVID==1&outdata$PREDOSE==0],list(outdata$PERIOD[outdata$EVID==1&outdata$PREDOSE==0],outdata$ID[outdata$EVID==1&outdata$PREDOSE==0]),min)
names(dosetime)<-c('PERIOD','ID','TFDP')
outdata2<-merge(outdata,dosetime)
outdata2$TSSP<-outdata2$TSFD-outdata2$TFDP
outdata2$TSSP<-round(outdata2$TSSP,3)
outdata2<-outdata2[order(outdata2$ID,outdata2$TSFD),]


#Flagging to ignore one outlier profile 
outdata2[outdata2$ID==214014&outdata2$PERIOD==4,]$FLGOBS<-1
outlier<-outdata2[outdata2$ID==214014&outdata2$PERIOD==4,c('STUDYN','ID','PERIOD','TSFD','DV')]
write.csv(outlier,'outliers.csv')
#correcting value of EVIDM3 after first dose.
outdata2$EVIDM3[outdata2$EVID==1&outdata2$PREDOSE==0]<-1

outdata2<-outdata2[order(outdata2$ID,outdata2$PERIOD,outdata2$TSWO,outdata2$CMT),]

#covariate data, hepatic impairment, from email Anna Hansson, 3 Feb 2017.
#In the iv study 96NNIV003 the following subjects were healthy volunteers: 
#05-RNG, 06-HGO, 08-TAN, 12-UJN, 13-RGN, 14-JPN, 15-SPN, 16-ILN, 
#whereas the following were patients with liver impairment: 
#01-FKY, 04-SRL, 07-CFR, 09-TLR, 10-BAN, 02-LEN, 03-KBN, 11-ZAC.
hep<-data.frame(ID=c(10005,10006,10008,10012,10013,10014,10015,10016,10001,10004,10007,10009,10010,10002,10003,10011),HEPAT=c(rep(0,8),rep(1,8)))

#covariate data, renal impairment, from raw dataset, study 96NNIV005
data005<-read.sas7bdat('../../OriginalData/IV/input2.sas7bdat')

ren1<-unique(data005[,c("SUBJID","ACTTRTG")])#pulling out renal impairment variable
table(ren1$ACTTRTG,as.numeric(as.factor(ren1$ACTTRTG)))# Subjects with missing status are those excluded from study
ren1$RENAL<-as.numeric(as.factor(ren1$ACTTRTG))-2 #making numerical category.
ren1$ID<-as.numeric(as.character(ren1$SUBJID))+30000 #converting ID
ren2<-ren1[,c("ID","RENAL")]

#merging in hepatic and renal indicators

outdata3<-merge(outdata2,hep,all.x=TRUE)
outdata4<-merge(outdata3,ren2,all.x=TRUE)
outdata4[is.na(outdata4$HEPAT),]$HEPAT<-0
outdata4[is.na(outdata4$RENAL),]$RENAL<-0
outdata4<-outdata4[order(outdata4$ID,outdata4$TSFD,outdata4$CMT),]

#Two doses, Buccal & 'inhaled' dosing.
exdose<-outdata4[outdata4$PREDOSE==0&outdata4$AMT!='.'&(outdata4$ROUTE==2|outdata4$ROUTE==4),]
exdose$CMT<-5

outdata5<-rbind(exdose,outdata4)
outdata5<-outdata5[order(outdata5$ID,outdata5$TSFD,outdata5$AMT),]

#adding contraceptive data
contra<-read.sas7bdat("../../OriginalData/input3.sas7bdat")


contra$contra<- -99
contra$contra[contra$Oral_Estrogen=='Y']<- 1
contra$contra[contra$Oral_gestagens=='Y']<- 2
contra$contra[contra$Oral_Combination=='Y']<- 3
contra$contra[contra$Non_oral_hormones=='Y']<- 4
contra$contra[contra$No_hormones=='Y']<- 5
contra$STUDYN<-as.character(contra$study)
contra$STUDYN[contra$study=='NICPAT-9145-003']<-'NICPAT9145003'
contra$STUDYN[contra$study=='NICPAT-9145-004']<-'NICPAT9145004'
contra$STUDYN[contra$study=='NICPAT-9132-005']<-'NICPAT9132005'
contra$STUDYN[contra$study=='NICSOS-9132-005']<-'NICSOS9132005'
contra$STUDYN[contra$study=='NICSOS-9132-006']<-'NICSOS9132006'
contra$STUDYN[contra$study=='980-CHC-1050-004']<-'980CHC1050004'
contra$STUDYN[contra$study=='A6431008']<-'A6431108'
contra$STUDYN[contra$study=='NICTDP1071']<-'nictdp1071'
contra2<-contra[,c(2,10,11)]
names(contra2)<-c('IDO','CONTRA','STUDYN')
outdata6<-merge(outdata5,contra2,all.x=TRUE)
outdata6[is.na(outdata6$CONTRA),]$CONTRA<- -99
outdata6<-outdata6[,c(names(outdata5),'CONTRA')]
outdata6<-outdata6[order(outdata6$ID,outdata6$PERIOD,outdata6$TSWO,outdata6$CMT),]
outdata6[outdata6$PERIOD=='.',]$PERIOD<-1


# no 30 min infusion (rate) for Gum. Dose into 1 and 5
outdata9<-outdata6
#excluding two period with missing ADOSE
outdata9[outdata9$ADOSE=='.',]$FLGOBS<-1
#excluding one period with negative ADOSE (remaining nicotine > initial nicotine)
outdata9[outdata9$ID==162017&outdata9$PERIOD==3,]$FLGOBS<-1
outdata9<-outdata9[order(outdata9$ID,outdata9$PERIOD,outdata9$TSWO,outdata9$AMT),]



#Patch mods
#2 abs 1st order limited, 0 order 16h, sorting RATE=-2 for both
outdata10<-outdata9
outdata10$RATE[outdata10$FORMT==5]<-0
dose<-outdata10[outdata10$AMT!='.'&outdata10$PREDOSE!=1&outdata10$FORMT==5,]
dose$CMT<-5 #additional dosing into the transit compartment
dose$RATE <- -2
outdata11<-rbind(dose,outdata10)
outdata11<-outdata11[order(outdata11$ID,outdata11$PERIOD,outdata11$TSWO,outdata11$AMT),]

#not removing dose into CMT5, Lozenge
#outdata11<-outdata11[!(outdata11$AMT!='.'&outdata11$CMT==5&outdata11$FORMT==4),]
#not removing dose into CMT5, Inhaler
#outdata11<-outdata11[!(outdata11$AMT!='.'&outdata11$CMT==5&outdata11$FORMT==6),]
#repeat dose flag
outdata11$REPEAT<-0
outdata11[outdata11$TMT==11002,]$REPEAT<-1
outdata11[outdata11$TMT==11003,]$REPEAT<-1
outdata11[outdata11$TMT==12003,]$REPEAT<-1
outdata11[outdata11$TMT==12004,]$REPEAT<-1
outdata11[outdata11$TMT==13001,]$REPEAT<-1
outdata11[outdata11$TMT==15005,]$REPEAT<-1
outdata11[outdata11$TMT==19001,]$REPEAT<-1
outdata11[outdata11$TMT==19002,]$REPEAT<-1
outdata11[outdata11$TMT==19003,]$REPEAT<-1
outdata11[outdata11$TMT==19004,]$REPEAT<-1
head(outdata11)

#nominal dose for chewing gum
outdata12<-outdata11

outdata12[outdata12$AMT!='.'&outdata12$FORMT==2&outdata12$PREDOSE==0,]$AMT<-outdata12[outdata12$AMT!='.'&outdata12$FORMT==2&outdata12$PREDOSE==0,]$NDOSE

#Adding lozenge data
outdata13<-outdata12
#remaining repeat doses
outdata13[outdata13$STUDY==5,]$REPEAT<-1
outdata13[outdata13$STUDY==11,]$REPEAT<-1
outdata13[outdata13$STUDY==15,]$REPEAT<-1
outdata13[outdata13$STUDY==19,]$REPEAT<-1
outdata13[outdata13$STUDY==27,]$REPEAT<-1
outdata13[outdata13$STUDY==28,]$REPEAT<-1


#20min 0-order for Inhaled
outdata14<-outdata13

#buccal vs inhaled
outdata14$INHT<--99 #NA
outdata14[outdata14$STUDY==27,]$INHT<-0 #buccal
outdata14[is.element(outdata14$ID,c(270002,270003)),]$INHT<-1 #pulmonary
outdata14[outdata14$STUDY==28,]$INHT<-0 #buccal
outdata14[is.element(outdata14$ID,c(280001,280002,280004,280005,280006,280010,280011,280012,280013,280014,280015,280017,280018,280020,280021,280022)),]$INHT<-1 #pulmonary
outdata14[outdata14$STUDY==29,]$INHT<-0 #buccal
outdata14$RATE[outdata14$FORMT==6&outdata14$AMT!='.'&outdata14$PREDOSE!=1]<-as.numeric(as.character(outdata14$AMT[outdata14$FORMT==6&outdata14$AMT!='.'&outdata14$PREDOSE!=1]))/0.33
outdata14[is.na(outdata14$RATE),]$RATE<-0

write.csv(outdata14,'../JJ_NIC_PK_V1_18JUL17_m.csv',row.names = FALSE,quote=FALSE)


##############
#separate patch (and IV) dataset
##############

#changing rate for CMT1, Patch
outdata18<-outdata14[outdata14$FORMT==5|outdata14$FORMT==1,]
outdata18[outdata18$FORMT==5&outdata18$CMT==1,]$RATE<-'-2'


#correctly assinging treatments, study NICPAT9145004
outdata18$OTRT<-as.character(outdata18$OTRT)
outdata18[outdata18$TMT==26001,]$OTRT<-"NICORETTE_PATCH_25_MG"
outdata18[outdata18$TMT==26002,]$OTRT<-"NNTP_25_MG"
outdata18[outdata18$TMT==26001,]$FORM<-8
outdata18[outdata18$TMT==26002,]$FORM<-9

#correctluy assigning individual doses, study NICPAT9145004
dose2<-unique(outdata18[outdata18$TMT==26001,c('ID','ADOSE','TMT')])
dose1<-unique(outdata18[outdata18$TMT==26002,c('ID','ADOSE','TMT')])
dose1$TMT<-26001
dose2$TMT<-26002
dose<-rbind(dose1,dose2)
names(dose)[2]<-'resnic'
outdata19<-merge(outdata18,dose,all.x=TRUE)

#recalculating actual dose for studies NICPAT9145003, NICPAT9145004. 
#Erroneously ADOSE was provided in rawdata resnic field, 
#This was converted ny SDO as ADOSE=Batch dose-'resnic'
#needs converting back by Batch dose - ADOSE
outdata19$resnic<-as.numeric(as.character(outdata19$resnic))
outdata19$ADOSE<-as.numeric(as.character(outdata19$ADOSE))
outdata19$resnic[outdata19$STUDY==25] <- outdata19$ADOSE[outdata19$STUDY==25]

#Amount in patch from table 6.4.2 in report (study NICPAT9145003)
outdata19[outdata19$TMT==25001,]$ADOSE <- 8.4-outdata19[outdata19$TMT==25001,]$resnic
outdata19[outdata19$TMT==25002,]$ADOSE <- 25.9-outdata19[outdata19$TMT==25002,]$resnic
outdata19[outdata19$TMT==25003,]$ADOSE <- 43.0-outdata19[outdata19$TMT==25003,]$resnic
outdata19[outdata19$TMT==25004,]$ADOSE <- 18.3-outdata19[outdata19$TMT==25004,]$resnic
outdata19[outdata19$TMT==25005,]$ADOSE <- 41.3-outdata19[outdata19$TMT==25005,]$resnic
outdata19[outdata19$TMT==25006,]$ADOSE <- 64.2-outdata19[outdata19$TMT==25006,]$resnic

#Amount in patch from table 6.4.2 in report (study NICPAT9145004)
outdata19[outdata19$TMT==26001,]$ADOSE <- 43.5-outdata19[outdata19$TMT==26001,]$resnic
outdata19[outdata19$TMT==26002,]$ADOSE <- 40.8-outdata19[outdata19$TMT==26002,]$resnic

#For study A6431108, residual patch nicotine concentrations were not available, and so all doses were set to the nominal dose (25mg). 
#For 24h administration, a correction will be estimated using bioavailability

#set doses
outdata19$AMT<-as.numeric(as.character(outdata19$AMT))
outdata19$AMT[outdata19$PREDOSE==0&outdata19$EVID==1]<-outdata19$ADOSE[outdata19$PREDOSE==0&outdata19$EVID==1]
outdata19$AMT[is.na(outdata19$AMT)]<-0
#sort
outdata19<-outdata19[,names(outdata18)]
outdata19<-outdata19[(order(outdata19$ID,outdata19$TSFD,outdata19$CMT)),]

#bolus into cmt1, patch
outdata21<-outdata19
outdata21[outdata21$CMT==1&outdata21$FORMT==5,]$RATE<-'0'
write.csv(outdata21,'../JJ_NIC_PK_V1_18JUL17_u.csv',row.names = FALSE,quote=FALSE)


sessionInfo()



