USE OF THE “STUDY DAY” VARIABLES
The permissible Study Day variables (--DY, --STDY, and --ENDY) describe the relative day of the observation starting with the reference date as Day 1. They are determined by comparing the date portion of the respective date/time variables (--DTC, --STDTC, and --ENDTC) to the date portion of the Subject Reference Start Date (RFSTDTC from the Demographics domain).
The Subject Reference Start Date (RFSTDTC) is designated as Study Day 1. The Study Day value is incremented by 1 for each date following RFSTDTC. Dates prior to RFSTDTC are decremented by 1, with the date preceding RFSTDTC designated as Study Day -1 (there is no Study Day 0). This algorithm for determining Study Day is consistent with how people typically describe sequential days relative to a fixed reference point, but creates problems if used for mathematical calculations because it does not allow for a Day 0. As such, Study Day is not suited for use in subsequent numerical computations, such as calculating duration. The raw date values should be used rather than Study Day in those calculations.
Reference: Study Data Tabulation Model Implementation Guide v3.1.2 (Page No 40).
You will find that you need to create --DY and or --STDY /--ENDY varianles in almost all the SDTM domains. Because the process of the derivation is same, it makes sense to create a macro code and use it across all the domains...
/****************************************************************
*Study Number :ABCD_0123
*Sponsor Protocol Number : ABC1004
*Program Name : studyday.sas
*Program Location : X:\PROJECT\DEPT\ABC1004\Progs\macros
*Description : StudyDAY Macro
*Program Author : Sarath Annapareddy
*Creation Date : 13-Jul-2012
*Macro Parameters:
rfdate: --DTC variable used to calculate Study day variable.
var : --DTC variable used to calculate the Study day to.
dy : Prefix of the Study day variable
dsn : Dataset in which the --DTC variable used to calculate the Study day to exists.
*Notes: Macro must be used outside the datastep.
****************************************************************;
/************* Setup Section ************/
/**************************************************************/
%macro make_studyday(dsn,var,dy,rfdate);
*Getting the Baseline or Reference start date from DM dataset;
proc sort data=interim.dm out=dm(keep=usubjid rfstdtc);
by usubjid;
run;
proc sort data=&dsn;
by usubjid;
run;
data &dsn;
merge &dsn (in=a) dm;
by usubjid;
if a;
/*Numeric date variable;*/
&rfdate._n=input(substr(&rfdate,1,10),anydtdte10.);
&var._n=input(substr(&var,1,10),anydtdte10.);
/*Study day derivation;*/
if nmiss(&var._n,&rfdate._n)=0 then &dy=&var._n-&rfdate._n+(&var._n>=&rfdate._n);
run;
%mend;
A sample macro call of this SAS macro for the Adverse Events (AE) domain might look like this:
%make_studyday(ae,aestdtc,aestdy,rfstdtc);
%make_studyday(ae,aeendtc,aeendy,rfstdtc);
%make_Gstudyday(ae,aedtc,aedy,rfstdtc);
For pre-dose:
studyday= the event/visit date – first dose date
For post-dose:
studyday= the event/visit date – first dose date + 1