*************************************************************************************************; * * CLIENT: ModernaTX, Inc. * PROTOCOL: mRNA-1273-P201 * * PURPOSE: Create analysis dataset admh * * INPUT FILES: SDTM domains * OUTPUT FILES: admh.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; %let DSETNAME =ADMH; %revsupp( libin=TRANS, libout=WORK, ds=MH, supp=SUPPMH, maploc=&G_PROJECTPATH.\&G_toplevel.\Databases\Transformed, mapspec=&G_NICKNAME._mapping_spec.xlsx ); data mhcmq; set mh; mergecmq = MHPTCD; proc sort; by mergecmq; run; data impcmq(keep=mergecmq PTCODE); set import.cmq(where=(CMQNAME = 'AUTOIMMUNE')); mergecmq = input(compress(PTCODE),best.); proc sort; by mergecmq; run; data mh; merge mhcmq(in=a) impcmq(in=b); by mergecmq; if a; if not missing(ptcode) then CQ01NAM = "Autoimmune"; drop ptcode mergecmq; run; proc sort data=mh; by usubjid; run; proc sort data=import.smq out= smq(keep = SMQNAME PT SCOPE) dupout = smqsdups nodupkey; by SMQNAME PT SCOPE; run; proc sql; create table admhsmq1 as select a.*, case b.pt when '' then '' else 'Angioede' end as SMQ02NAM,upcase(b.scope) as SMQ02SC, case c.pt when '' then '' else 'Hypersensitivity' end as SMQ06NAM, upcase(c.scope) as SMQ06SC, case d.pt when '' then '' else 'Anaphylactic Reaction' end as SMQ01NAM, upcase(d.scope) as SMQ01SC from mh a left join smq(where=(smqname="ANGIOEDEMA")) b on a.MHDECOD=b.pt left join smq(where=(smqname="HYPERSENSITIVITY")) c on a.MHDECOD=c.pt left join smq(where=(smqname="ANAPHYLACTIC REACTION")) d on a.MHDECOD=d.pt; quit; data &DSETNAME.; set ADMHSMQ1; if ~missing(CQ01NAM) then CQ01FL = 'Y'; if ~missing(SMQ01NAM) then SMQ01FL = 'Y'; if ~missing(SMQ02NAM) AND SMQ02SC = 'NARROW' then SMQ02FL = 'Y'; if ~missing(SMQ06NAM) AND SMQ06SC = 'NARROW' then SMQ06FL = 'Y'; run; %mergeadsl(&DSETNAME.,keep=usubjid subjid ); %ADaM_Dataset_Update( ds=&DSETNAME. ,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=&ADAM_SPEC, 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=&ADAM_SPEC, map_ct_nm=, map_ct_loc=, debug=N ); %mend;