*************************************************************************************************; * * CLIENT: ModernaTX, Inc. * PROTOCOL: mRNA-1273-P201 * * PURPOSE: Create analysis dataset adex * * INPUT FILES: SDTM domains * OUTPUT FILES: ADEX.sas7bdat * * USAGE NOTES: * *************************************************************************************************; * (c) 2020 PPD * All Rights Reserved. *************************************************************************************************; dm'log;clear;output;clear'; options missing = ' ' validvarname=upcase compress=yes; options mprint nomprint missing=' '; %include "madam.sas"; %let adam_spec = Moderna mRNA1273P201 ADaM spec.xlsm; proc sort data=adb.adsl out=adsl; by studyid usubjid; run; proc sort data=trans.ec out=ec; by studyid usubjid; run; proc sort data=trans.ex out=ex; by studyid usubjid; run; data ex1; merge ADSL (in=ina) ex (in=inex); by studyid usubjid; if ina and inex; run; data ex2; merge adsl (in=ina) ec (in=inec); by studyid usubjid; if ina and inec; if ecoccur = 'N'; run; data ex3; length visit $25 NDOSERS $200;; set ex1(in=ex1 rename=(visit=_visit visitnum=_visitnum)) ex2(in=ex2 rename=(visit=_visit visitnum=_visitnum)); *** ASTDT, AENDT ***; if length(exSTdtc)>=10 then ASTDT=input(substr(exSTdtc,1,10),is8601da.); else ASTDT = .; if length(exENdtc)>=10 then AENDT=input(substr(exENdtc,1,10),is8601da.); else AENDT = .; *** ASTDY, AENDY ***; %calcdy(dt=astdt, dy=astdy); %calcdy(dt=aendt, dy=aendy); *** DOSEYN ***; if not missing(exstdtc) then DOSEYNFL = 'Y'; else if missing(exstdtc) and ecoccur = 'N' then DOSEYNFL = 'N'; *** NDOSERS ***; if not missing(ECREASOC) then NDOSERS = strip(ECREASOC); *** VISIT, VISITNUM and Source variables***; length VISIT $25; if ex1 then do; visit = strip(_visit); visitnum = _visitnum; SRCSEQ = EXSEQ; end; if ex2 then do; visit = strip(_visit); visitnum = _visitnum; SRCSEQ = ECSEQ; end; SRCDOM = DOMAIN; format ASTDT AENDT Date9.; run; proc sort data=ex3; by usubjid visit exseq ecseq; run; data adex; set ex3; by usubjid visit exseq ecseq; retain aseq; if first.usubjid then aseq = 1; else aseq = aseq + 1; drop _visit; run; %ADaM_Dataset_Update( ds=ADEX ,libin=WORK ,libout=output ,adsllib=ADB ,addcomvar=Y ,addseq=N ,dropinfmt=Y ,mapspecfile= &adam_spec. ,maploc=&G_PROJECTPATH.&G_TOPLEVEL.\Documents\Specs\ ,debug=N); %macro dod; **Generate Value Level Metadata values for the ad dataset**; % dod_vlm( type=ADAM, selmems=&DSETNAME, excmems=, specloc=&G_PROJECTPATH.&G_TOPLEVEL.\Documents\Specs\, specname=&G_NICKNAME._ADaM_Spec.xlsm, debug=N ); **Generate Enhanced Controlled Terminology for the ad dataset**; % dod_enhcd_ct( type=ADAM, selmems=&DSETNAME, excmems=, specloc=&G_PROJECTPATH.&G_TOPLEVEL.\Documents\Specs\, specname=&G_NICKNAME._ADaM_Spec.xlsm, map_ct_nm=, map_ct_loc=, debug=N ); %mend;