***********************************************************************************************; ** Program Name : addv.sas **; ** Date Created : 09Mar2021 **; ** Programmer Name : XIONGR03 **; ** Purpose : Create addv dataset **; ** Input data : dv suppdv adsl **; ** Output data : addv.sas7bdat **; ***********************************************************************************************; options mprint mlogic symbolgen mprint symbolgen mlogic nocenter missing=" "; proc datasets library=WORK kill nolist nodetails; quit; **Setup the environment**; %let oprot=/Volumes/app/cdars/prod/sites/cdars4/prjC459/nda2_unblinded_esub/bla_euaext_esub_sdtm/saseng/cdisc3_0; %let prot=/Volumes/app/cdars/prod/sites/cdars4/prjC459/nda2_unblinded_esub/bla_esub_adam/saseng/cdisc3_0; libname dataprot "&oprot./data" access=readonly; libname datvprot "&prot./data_vai"; proc printto print="&prot./analysis/esub/output/addv.rpt" log="&prot./analysis/esub/logs/addv.log" new; run; proc sort data=dataprot.suppdv out=suppdv; by usubjid idvarval qnam; run; proc transpose data=suppdv out=suppdv1(drop=_NAME_ _LABEL_); by usubjid idvarval; var qval; id qnam; idlabel qlabel; run; data suppdv1; set suppdv1; dvseq=input(idvarval, best.); run; proc sort; by usubjid dvseq; run; proc sort data=dataprot.dv out=dv; by usubjid dvseq; run; data _dv1; merge dv suppdv1; by usubjid dvseq; proc sort; by usubjid; run; proc sort data=datvprot.adsl out=adsl; by usubjid; run; data _dv2; merge _dv1(in=a) adsl(in=b); by usubjid; if a; run; data _dv3; set _dv2; format ASTDT date9. aphasdt date9. aphaedt date9.; length aphase $40. aperiodc $20.; label ASTDT='Analysis Start Date' APHASE='Phase' APERIOD='Period' APERIODC='Period (C)' PREFL='Pre-treatment Flag' TRPFL='On Treatment Flag'; p2dt=min(VAX201DT, unblnddt); if dvstdtc ne "" then astdt=input(dvstdtc, yymmdd10.); if brthdt<=astdt<=(trtsdt-1) then do; aphase='PRE-TREATMENT'; end; else if (.