*************************************************************************************************; * * CLIENT: ModernaTX, Inc. * PROTOCOL: mRNA-1273-P301 * * PURPOSE: Create analysis dataset admh * * INPUT FILES: SDTM domains * OUTPUT FILES: ADMH.sas7bdat * * USAGE NOTES: * *************************************************************************************************; * Copyright 2020 Pharmaceutical Product Development, Inc. * All Rights Reserved. *************************************************************************************************; %include "madam.sas"; **Assign global macro variable DSETNAME to reflect the name of the final ADaM dataset**; %global DSETNAME; %let dsetname = admh; %let adslvar=tr01sdt tr01sdtm tr01edt tr01edtm dose2dt dos2dtm; **Merge supplemental data onto parent domain**; %revsupp(libin=trans,libout=work,ds=mh,supp=suppmh,outds=mh_all); proc sort tagsort data=mh_all; by usubjid subjid; run; data admh_all; merge mh_all(in=a where=(UPCASE(mhcat)='GENERAL')) adb.adsl(in=b keep=USUBJID subjid &adslvar.); by usubjid subjid; if a and b; MHTERM = compbl(strip(tranwrd(MHTERM,'0920'x,'2020'x))); drop &adslvar.; run; proc sort data=admh_all; by mhdecod; run; ** IMPORT Data; proc contents data=trans.MH out=cont; run; proc sql noprint; select length into:lencod from cont where NAME='MHDECOD'; quit; %macro create_import(imp=,condi=,var=,aedecod=,kep1=); data &imp._&var.; length mhdecod $&lencod.; set import.&imp.(rename=(&aedecod.=_aedecod)); where &condi.; mhdecod = strip(_aedecod); %if &kep1.^= %then %do; &kep1._&var. = upcase(&kep1.); %end; run; proc sort tagsort data=&imp._&var.(keep=mhdecod %if &kep1.^= %then %do; &kep1._&var. %end;) nodupkey; by mhdecod %if &kep1.^= %then %do; &kep1._&var. %end;; run; %mend create_import; %create_import(imp=cmq_autoimmune,condi=CMQNAME='AUTOIMMUNE',var=auto,aedecod=pt,kep1=); %create_import(imp=cmq,condi=CMQNAME='DERMAL FILLER REACTION POST VACCINATION',var=cmq2,aedecod=pt,kep1=); %create_import(imp=smq,condi=SMQNAME='ANGIOEDEMA',var=smq1,aedecod=pt,kep1=scope); %create_import(imp=smq,condi=SMQNAME='HYPERSENSITIVITY',var=smq2,aedecod=pt,kep1=scope); %create_import(imp=smq,condi=SMQNAME='ANAPHYLACTIC REACTION',var=smq3,aedecod=pt,kep1=scope); ** CQ01NAM; data imp_cq01nam; set import.cmq; where CMQNAME='AUTOIMMUNE'; MHPTCD = input(PTCODE,best.); run; proc sort tagsort data=imp_cq01nam nodupkey; by mhptcd; run; proc sort tagsort data=admh_all; by mhptcd; run; data admh_cq01nam; merge admh_all(in=a) imp_cq01nam(in=cmq); by mhptcd; if a; if cmq then do; CQ01NAM = 'Autoimmune'; CQ01FL = 'Y'; end; else call missing(CQ01NAM,CQ01FL); run; proc sort tagsort data=admh_cq01nam; by mhdecod; run; data admh; merge admh_cq01nam(in=a) cmq_autoimmune_auto(in=auto) cmq_cmq2(in=cmq2) smq_smq1(in=smq1) smq_smq2(in=smq2) smq_smq3(in=smq3); by mhdecod; if a; %if %index("&ADAM_SPEC.",DSMB) %then %do; if auto then AIFL = 'Y'; else AIFL = ''; if smq1 then ADFL = 'Y'; else ADFL = ''; %end; ** CQ02NAM; if cmq2 then CQ02NAM='Dermal Filler Reaction Post Vaccination'; else CQ02NAM=''; if CQ02NAM^='' then CQ02FL='Y'; else CQ02NAM=''; if smq1 then SMQ02NAM = 'Angioedema'; else SMQ02NAM = ''; SMQ02SC = scope_smq1; if ^missing(SMQ02NAM) and SMQ02SC='NARROW' then SMQ02FL = 'Y'; else SMQ02FL = ''; if smq2 then SMQ06NAM = 'Hypersensitivity'; else SMQ06NAM = ''; SMQ06SC = scope_smq2; if ^missing(SMQ06NAM) and SMQ06SC='NARROW' then SMQ06FL = 'Y'; else SMQ06FL = ''; if smq3 then SMQ01NAM = 'Anaphylactic Reaction'; else SMQ01NAM = ''; SMQ01SC = scope_smq3; if ^missing(SMQ01NAM) and SMQ01SC='NARROW' then SMQ01FL = 'Y'; else SMQ01FL = ''; adt=.; adtm=.; run; **Generate final dataset by updating certain attributes. Optionally merge common variables & create sequence variable as needed**; %trta(dsname=&DSETNAME); %adam_dataset_update( ds=&DSETNAME, libin=work, libout=output, adsllib=adb, addcomvar=Y, addseq=, dropinfmt=Y, mapspecfile=&ADAM_SPEC, maploc=&ADAM_SPEC_LOC, debug=N ); **Generate Value Level Metadata values for the ad dataset**; %* dod_vlm( type=ADAM, selmems=&DSETNAME, excmems=, specloc=&ADAM_SPEC_LOC, specname=&ADAM_SPEC, debug=N ); **Generate Enhanced Controlled Terminology for the ad dataset**; %* dod_enhcd_ct( type=ADAM, selmems=&DSETNAME, excmems=, specloc=&ADAM_SPEC_LOC, specname=&ADAM_SPEC, map_ct_nm=, map_ct_loc=, debug=N );