0% found this document useful (0 votes)
11 views

DS

Uploaded by

madhurimulli2020
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

DS

Uploaded by

madhurimulli2020
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 6

/*---------------------------------------------------------------------*

Study Number :
Study :
Program Name : DS
Purpose : Craeting Disposition Domain
Author : xxxxxxx
Date of Creation : DDMMM2024
Input Data :
Output : SDTM.DS
Assumptions : Taken from xxx
--------------------------------------------------------------------------
Modification History :
--------------------------------------------------------------------------
Modified By : xxxx
Modification Date :
Modification Description :
---------------------------------------------------------------------------*/

dm "log" clear;

proc datasets lib=work memtype=data kill;


quit;

options validvarname=upcase;

/* To bring Rawdatasets */

libname raw "E:\C DATA\my data DUSKTOP\Desktop\Altryx Solution\A3_8am\Raw


datasets";

/* To store final output dataset*/

libname sdtm "E:\C DATA\my data DUSKTOP\Desktop\Altryx Solution\A3_8am\outputs";

/* Final Variables in Dataset */

option validvarname = upcase;

/* Usubjid Macro creation */

%macro usubjid (out=,in=);


data &out;
set raw.∈
if subjid ne "" then usubjid = catx("-",project,sitenumber,subjid);
else usubjid = catx("-",project,sitenumber,scrnid);
run;
%mend usubjid;

%usubjid (in=ds_ic, out=ic1);


%usubjid (in=death, out=death1);
%usubjid (in=scrfail, out=scrfail_);
%usubjid (in=enroll, out=enroll_);

/* Inform consent Obtained */

data ic2;
set ic1;
dsspid = catx("-",sitenumber,scrnid,subjid);
dscat = "PROTOCOL MILESTONE";
dsscat = "";
dsterm = "INFORMED CONSENT OBTAINED";
dsdecod = "INFORMED CONSENT OBTAINED";

if S_ICDT ne . then dsstdtc = put(datepart(S_ICDT),yymmdd10.);


dsdtc = dsstdtc;

run;

/* Death Records*/

data death2;
set death1;
dsspid = catx("-",sitenumber,scrnid,subjid);

if DEATHDT_RAW ne "" then do;

dscat = "DISPOSITION EVENT";


dsscat = "DEATH";
dsterm = strip(DEATHCAU);
dsdecod = "DEATH";

if DEATHDT ne . then dsstdtc = put(datepart(DEATHDT),yymmdd10.);


dsdtc = dsstdtc;
end;
run;

/* Screening */

data scrfail1;
set scrfail_;
dsspid = catx("-",sitenumber,scrnid,subjid);

if XFREAS ne "" then dsterm = strip(XFREAS);


else dsterm = "SCREEN FAILURE";
dsdecod = "SCREEN FAILURE";
dscat = "DISPOSITION EVENT";
dsscat = "SCREENING";

if RECORDDATE ne . then dsstdtc = put(datepart(RECORDDATE),yymmdd10.);


dsdtc = dsstdtc;

run;

/* Enrolled */

data enroll1;
set enroll_;
dsspid = catx("-",sitenumber,scrnid,subjid);
dsterm = "ENROLLED";
dsdecod = "ENROLLED";
dscat = "PROTOCOL MILESTONE";
dsscat = "ENROLLMENT";

if RECORDDATE ne . then dsstdtc = put(datepart(RECORDDATE),yymmdd10.);


dsdtc = dsstdtc;
run;

/* Completion status of treatment*/

/* Completion status of study(follow-up)*/

/* Setting all datasets */

data ds1;
length dsterm $200. dsscat $30. ;
set ic2 death2 scrfail1 enroll1;
run;

proc sort data=ds1; by usubjid; run;

/* Getting DM Data */

proc sort data=sdtm.dm out=dm1; by usubjid; run;

data ds2;
merge ds1(in=a) dm1(in=b drop=siteid);
by usubjid;
if a;

rfstdtc_n = input(rfstdtc,yymmdd10.);
if dsstdtc ne "" then dsstdtc_n = input(dsstdtc,yymmdd10.);

if rfstdtc_n ne . and dsstdtc_n ne . then do;


if dsstdtc_n >= rfstdtc_n then dsstdy = (dsstdtc_n - rfstdtc_n)+1;
else dsstdy = (dsstdtc_n - rfstdtc_n);
end;

dsdy = dsstdy;
run;

/* Deriving EPOCH */

data epoch;
set ds2;

if dsstdtc ne "" then do;


if (RFXSTDTC = "") or (dsstdtc < RFXSTDTC) then EPOCH = "SCREENING";
else if (RFXSTDTC <= dsstdtc <= RFXENDTC) and RFXENDTC ^= "" then EPOCH
= "TREATMENT";
else if dsstdtc > RFXSTDTC and RFXENDTC = "" then EPOCH = "TREATMENT";
else if dsstdtc > RFXENDTC and RFXENDTC ^= "" then EPOCH = "FOLLOW-UP";
end;
run;

data ds3;
set epoch;

if dscat = "PROTOCOL MILESTONE" then epoch = "";


if dscat = "DISPOSITION EVENT" and dsscat = "SCREENING" then epoch =
"SCREENING";
if dsterm ne "" ;
run;

proc sort data=ds3;


by usubjid dsstdtc dsdecod;
run;

/* SEQ creation */

data fin;
set ds3;
by usubjid dsstdtc dsdecod;

if first.usubjid then dsseq = 1;


else dsseq+1;

domain = "DS";
studyid = "GS-US-322-0206";
run;

/* Final Dataset Creation */

data sdtm.ds(label="Disposition");

retain STUDYID DOMAIN USUBJID DSSEQ DSSPID DSTERM DSDECOD DSCAT DSSCAT EPOCH
DSDTC DSSTDTC DSDY DSSTDY;

keep STUDYID DOMAIN USUBJID DSSEQ DSSPID DSTERM DSDECOD DSCAT DSSCAT EPOCH
DSDTC DSSTDTC DSDY DSSTDY;

attrib STUDYID label ='Study Identifier' length = $15


DOMAIN label ='Domain Abbreviation' length = $2
USUBJID label ='Unique Subject Identifier' length = $30
DSSEQ label ='Sequence Number' length = 8
DSSPID label ='Sponsor-Defined Identifier' length = $30
DSTERM label ='Reported Term for the Disposition Event' length = $200
DSDECOD label ='Standardized Disposition Term' length = $200
DSCAT label ='Category for Disposition Event' length = $20
DSSCAT label ='Subcategory for Disposition Event' length = $30
EPOCH label= 'Epoch' length =$200
DSDTC label ='Date/Time of Collection' length = $20
DSSTDTC label ='Start Date/Time of Disposition Event' length = $20
DSDY label='Study Day of Collection' length = 8
DSSTDY label ='Study Day of Start of Disposition Event' length = 8;

set fin;
run;

/* Libname for .XPT conversion of sas dataset*/

libname xpt xport "E:\C DATA\my data DUSKTOP\Desktop\Altryx Solution\A3_8am\xpt\


ds.xpt";

proc copy in = sdtm out = xpt;


select ds;
run;

/* SUPPDS Creation */
data supp(rename=(S_PVERDT_=S_PVERDT));
set fin;
if S_PVERDT ne . then S_PVERDT_ = put(datepart(S_PVERDT),yymmdd10.);
keep studyid usubjid dsseq deathcau PREGS6624 ENROLNUM IETESTCD S_PVERDT_;
run;
proc sort data=supp out=supp_; by studyid usubjid dsseq; run;

proc transpose data=supp_ out=supp_t;


by studyid usubjid dsseq;
var S_PVERDT deathcau PREGS6624 ENROLNUM IETESTCD;
run;

data supp_fin(where =(qval ne ""));


length qlabel $40. qnam $8. qval $200.;
set supp_t;

rdomain = "DS";
idvar = "DSSEQ";
idvarval = strip(put(dsseq,best.));
qorig = "CRF page";
qeval = "";

if _name_ = "S_PVERDT" then do;


qnam = "S_PVERDT";
qlabel = "Protocol Version Date";
qval = strip(col1);
output;
end;

/* if _name_ = "DEATHCAU" then do;*/


/* qnam = "DEATHCAU";*/
/* qlabel = "Immediate Cause of Death";*/
/* qval = strip(col1);*/
/* output;*/
/* end;*/

if _name_ = "PREGS6624" then do;


qnam = "PREGS6624";
qlabel = "Previous GS-6624 Study";
qval = strip(col1);
output;
end;

if _name_ = "ENROLNUM" then do;


qnam = "ENROLNUM";
qlabel = "4-Digit Subject Number";
qval = strip(col1);
output;
end;

if _name_ = "IETESTCD" then do;


qnam = "IETESTCD";
qlabel = "For ineligible subj,specfy all crit not satisfied";
qval = strip(col1);
output;
end;

run;
/* Final SUPPDM creation */

data sdtm.suppds(label="Supplementary for Disposition");


retain STUDYID RDOMAIN USUBJID IDVAR IDVARVAL QNAM QLABEL QVAL QORIG QEVAL;

keep STUDYID RDOMAIN USUBJID IDVAR IDVARVAL QNAM QLABEL QVAL QORIG QEVAL;

attrib STUDYID label ='Study Identifier' length = $14


RDOMAIN label ='Related Domain Abbreviation' length = $2
USUBJID label ='Unique Subject Identifier' length = $30
IDVAR label ='Identifying Variable' length = $8
IDVARVAL label ='Identifying Variable Value' length = $200
QNAM label ='Qualifier Variable Name' length = $8
QLABEL label ='Qualifier Variable Label' length = $40
QVAL label ='Data Value' length = $200
QORIG label ='Origin' length = $40
QEVAL label ='Evaluator' length = $40;
;

set supp_fin;
run;

/* Libname for .XPT conversion of sas dataset*/

libname xpt xport "E:\C DATA\my data DUSKTOP\Desktop\Altryx Solution\A3_8am\xpt\


suppds.xpt";

proc copy in = sdtm out = xpt;


select suppds;
run;

*proc printto log = "E:\C DATA\my data DUSKTOP\Desktop\Altryx Solution\A3_8am\log\


dslog.txt" new;

/************ End of Program ******************/

You might also like