SAS Tip: Repeating AEBODSYS on New Page in PROC REPORT Output

HTML LIBNAME AD “G:\TA_ONCO_01_24122024\ADaM”; /*Macro for sorting purpose*/ %MACRO SORT(in= ,out= ,datacon= ,outcon= ,var= ,con= ); PROC SORT DATA=&in &datacon OUT=&out &outcon; BY &var; WHERE &con; RUN; %MEND SORT; %SORT (in=ad.adae ,out=ae ,var=usubjid aebodsys aedecod ,con= (TRTEMFL=”Y”) ,outcon=(keep=usubjid aebodsys aedecod ) ); %SORT (in=ad.adsl ,out=adsl ,var=usubjid ,con= (saffl=”Y”) ,outcon=(keep=usubjid ) ); DATA AE22; SET AE; IF aebodsys=’Gastrointestinal disorders’ THEN aedecod=STRIP(“x”)||STRIP(aedecod); RUN; DATA AE33; SET AE; IF aebodsys=’Gastrointestinal disorders’ THEN aedecod=STRIP(“xX”)||STRIP(aedecod); RUN; DATA AE; SET AE AE22 AE33; RUN; PROC SQL NOPRINT; SELECT COUNT(DISTINCT USUBJID) INTO :N separated by ” FROM adsl ; CREATE TABLE ae1 AS SELECT DISTINCT aebodsys , count(AEBODSYS) AS soc , count(DISTINCT USUBJID) AS n , CALCULATED n * 100 / INPUT (“&N”,BEST.) AS X , INPUT(PUT(CALCULATED X,5.1),BEST.) AS PCT , ( PUT(CALCULATED SOC,3.) ||” (“|| PUT(CALCULATED n ,4.) ||”, “|| PUT(CALCULATED X,4.1) ||”%) ” ) AS tabl FROM ae GROUP BY AEBODSYS OUTER UNION CORR SELECT DISTINCT aedecod , aebodsys , count(aedecod) AS SOC , count(DISTINCT USUBJID) AS n , CALCULATED n * 100 / INPUT (“&N”,BEST.) AS X , INPUT(PUT(CALCULATED X,5.1),BEST.) AS PCT , ( PUT(CALCULATED SOC,3.) ||” (“|| PUT(CALCULATED n ,4.) ||”, “|| PUT(CALCULATED X,4.1) ||”%) ” ) AS tabl FROM ae GROUP BY AEBODSYS , AEDECOD ORDER BY AEBODSYS , SOC DESC , AEDECOD; QUIT; %PUT &N ; DATA ae2; LENGTH NEW $100; SET ae1; by aebodsys descending soc aedecod ; IF AEDECOD EQ “” THEN NEW=AEBODSYS ; ELSE IF AEDECOD NE “” THEN NEW=” “||AEDECOD; RUN; DATA t_ae001; SET ae2; RUN; DATA ADAE2; SET t_ae001; by aebodsys descending soc aedecod ; RETAIN LNT PAG1 0; LNT+1; IF LNT >18 THEN DO; PAG1=PAG1+1; LNT=1; END; /* Show AEBODSYS only on first line of each page */ IF LNT = 1 THEN display_aebodsys = AEBODSYS; ELSE display_aebodsys = “”; LNT=LNT+1; RUN; DATA ADAE3; SET ADAE2; IF display_aebodsys NE ” AND display_aebodsys NE NEW; NEW=STRIP(AEBODSYS)||” (continue……….)”; LNT=1; RUN; DATA ADAE4; SET ADAE2 ADAE3; IF INDEX (NEW,”continue”)>0 THEN tabl=”; RUN; PROC SORT; BY PAG1 LNT aebodsys aedecod new tabl display_aebodsys; RUN; %INCLUDE “G:\TA_ONCO_01_24122024\Macro\RTF.SAS”; TITLE1 J=L “PHARMA Private Limited.”; TITLE2 J=L “Protocol: 043-1-2025”; TITLE3 J=C “Table 14.1.9 ANALYSES ON FOLLOW-UP TIME”; FOOTNOTE1 J=L “G:\TA_ONCO_01_24122024\PGM\L\T_14_1_9”; OPTION ORIENTATION=LANDSCAPE; ODS ESCAPECHAR=’^’; ODS RTF FILE=’G:\TA_ONCO_01_24122024\OUTPUTS\T_14_1_9.RTF’ STYLE=Styles.Test ; PROC REPORT DATA=ADAE4 NOWINDOWS SPLIT=’*’ HEADLINE HEADSKIP MISSING SPACING=2; COLUMN PAG1 aebodsys aedecod new tabl display_aebodsys; DEFINE PAG1 / ORDER NOPRINT; DEFINE aebodsys / ORDER NOPRINT order=DATA; DEFINE aedecod / ORDER NOPRINT order=DATA; DEFINE new / “MedDRA PRIMARY SYSTEM ORGAN CLASS* MedDRA Preferred Term * * *” STYLE(COLUMN)=[cellwidth=70% ASIS=ON] STYLE(HEADER)=[JUST=LEFT ASIS=ON]; DEFINE tabl / ” CDP870 400mg*Q2W Open – Label* (N = &N)* nAE (nPat; % Pat)” STYLE(COLUMN)=[cellwidth=29% ASIS=ON] STYLE(HEADER)=[JUST=LEFT ASIS=ON]; DEFINE display_aebodsys / NOPRINT; COMPUTE BEFORE _PAGE_; LINE@1 “^{STYLE[OUTPUTWIDTH=100% BORDERTOPWIDTH=0.5PT]}”; ENDCOMP; COMPUTE AFTER _PAGE_; LINE@1 “^{STYLE[OUTPUTWIDTH=100% BORDERTOPWIDTH=0.5PT]}”; ENDCOMP; BREAK AFTER PAG1 / PAGE; RUN; ODS _ALL_ CLOSE;

SAS Tip: Repeating AEBODSYS on New Page in PROC REPORT Output Read More »

Q#5 Best Overall Response (BOR) , Objective Response Rate (ORR) ,95% Confidence Interval (CI) &P-value Oncology

Definition of Best Overall Response (BOR) Best Overall Response (BOR) is the best treatment response a patient achieves during a clinical trial. It is determined based on tumor size changes and classified into four categories: 1.Complete Response (CR) – The tumor disappears completely. 2.Partial Response (PR) – The tumor shrinks significantly but is still present. 3.Stable Disease (SD) – The tumor neither shrinks nor grows significantly. 4.Progressive Disease (PD) – The tumor grows or worsens. Imagine 5 patients are taking a new cancer drug. Each patient’s response is tracked over time. •If a patient improves over time, the best response is counted (e.g., PR → CR → CR is recorded as CR). •If a patient worsens after improvement, the worst response is counted if the patient does not recover •(e.g., PR → PD is recorded as PD). Imagine 5 patients are taking a new cancer drug. Each patient’s response is tracked over time. •If a patient improves over time, the best response is counted (e.g., PR → CR → CR is recorded as CR). •If a patient worsens after improvement, the worst response is counted if the patient does not recover •(e.g., PR → PD is recorded as PD). Patient Response Type Best Overall Response (BOR) Patient 1 CR (Tumor disappeared) CR Patient 2 PR (Tumor shrank) PR Patient 3 SD (No significant change) SD Patient 4 PR first, then PD later PD (worst response counts) Patient 5 PR first, then CR later CR (best response counts) PR → CR → CR → CR 👉 BOR = CR (Best was 100%)SD → PR → PR → SD 👉 BOR = PR (Best was 80%)PR → SD → PD → PD 👉 BOR = PD (Got worse at the end)SD → SD → SD → SD 👉 BOR = SD (No change)PR → CR → PD 👉 BOR = PD (Got worse at the end)Definition of Objective Response Rate (ORR) Objective Response Rate (ORR) is a measure used in oncology clinical trials to assess how well a treatment works. It is the percentage of patients whose cancer shrinks (Partial Response – PR) or disappears (Complete Response – CR) after treatment. ORR does not include Stable Disease (SD) or Progressive Disease (PD). A 95% Confidence Interval (CI) is a range of values that tells us where the true result is likely to be. What is a 95% Confidence Interval (CI)? 95% Confidence Interval (CI) for Objective Response Rate •Drug A: (0.1941 – 0.993) → This means we are 95% sure that the true response rate for Drug A is between 19.41% and 99.3%. •Drug B: (0.0250 – 1.000) → The response rate for Drug B is between 2.5% and 100% (very wide range due to low patient count).95% Confidence Interval (CI) for Objective Response Rate •Drug A: (0.1941 – 0.993) → This means we are 95% sure that the true response rate for Drug A is between 19.41% and 99.3%. • •Drug B: (0.0250 – 1.000) → The response rate for Drug B is between 2.5% and 100% (very wide range due to low patient count).Difference in Objective Response Rate •0.75 (75%) → Drug A had a 75% higher response rate than Drug B.95% CI for the Difference in ORR •0.3257 → This means the actual difference could vary, but there’s a 32.57% chance that Drug A is better than Drug B.P-value •0.2207 → The p-value tells us if the difference between Drug A and Drug B is statistically significant. •Since 0.2207 > 0.05, this means the difference is not statistically significant, meaning we cannot be sure that Drug A is truly better than Drug B (the result could be due to chance).

Q#5 Best Overall Response (BOR) , Objective Response Rate (ORR) ,95% Confidence Interval (CI) &P-value Oncology Read More »

All Logs checking macro

HTML /* retrieve all the logs in the specified directory */ %macro checklogs(loc=, /* location of where the log files are stored */ loc2=, /* location of where report is stored (optional) */ fnm=, /* which types of files to look at (optional) */ /* e.g., Tables � t_, Figures � f_, Listings � l_ */ /* separate types of files by delimiter indicated in*/ /* the delm macro parameter (e.g., t_@f_) */ delm=@,/* delimiter used to separate types of files (opt’l)*/ out= /* log report name (optional) */); /* need to determine the environment in which this is executed */ /* syntax for some commands vary from environment to environment */ /* end macro call if environment not Windows or Linux/Unix */ %if &sysscp = WIN %then %do; %let ppcmd = %str(dir); %let slash = \; %end; %else %if &sysscp = LIN X64 %then %do; %let ppcmd = %str(ls -l); %let slash = /; %end; %else %do; %put ENVIRONMENT NOT SPECIFIED; abort abend; %end; /* if a filename is specified then build the where clause */ %if “&fnm” ne “” %then %do; data _null_; length fullwhr $2000.; retain fullwhr; /* read in each log file and check for undesired messages */ %let f = 1; %let typ = %scan(&fnm, &f, “&delm”); /* loop through each type of filename to build the where clause */ /* embed &typ in double quotes in case filename has any special */ /* characters or spaces */ %do %while (“&typ” ne “”); partwhr = catt(“index(flog, ‘”, “&typ”, “‘)”); fullwhr = catx(” or “, fullwhr, partwhr); call symputx(‘fullwhr’, fullwhr); %let f = %eval(&f + 1); %let typ = %scan(&fnm, &f, “&delm”); %end; run; %end; /* need to build pipe directory statement as a macro var */ /* because the statement requires a series of single and */ /* double quotes – by building the directory statement */ /* this allows the user to determine the directory rather */ /* than it being hardcoded into the program */ /* macro var will be of the form:’dir “directory path” ‘ */ data _null_; libnm = “&loc”; dirnm = catx(” “, “‘”, “&ppcmd”, quote(libnm), “‘”); call symputx(‘dirnm’, dirnm); run; /* read in the contents of the directory containing the logs */ filename pdir pipe &dirnm lrecl=32727; data logs (keep = flog fdat ftim filename numtok); infile pdir truncover scanover; input filename $char1000.; length flog $25 fdat ftim $10; /* keep only the logs */ if index(filename, “.log”); /* count the number of tokens (i.e., different parts of filename) */ /* if there are no spaces then there should be 5 tokens for WIN */ /* or 9 tokens for LIN X64 */ numtok = countw(filename,’ ‘,’q’); /* need to build the flog value based on number of tokens */ /* if there are spaces in the log name then need to grab */ /* each piece of the log name */ /* the first token that is retrieved will have ‘.log’ and */ /* it needs to be removed by substituting a blank */ /* also need to parse out the date and time these are in */ /* specific spots within the filename so aren’t based on */ /* number of tokens but will have different locations */ /* depending on environment – so parsing of each piece of */ /* information will be environment dependent */ /* note on the scan function a negative # scans from right*/ /* and a positive # scans from the left */ /*********** WINDOWS ENVIRONMENT ************/ /* the pipe will read in the information in */ /* the format of: date time am/pm size file */ /* e.g. 08/24/2015 09:08 PM 18,498 ae.log */ /* ’08/24/2015′ is first token from left */ /* ‘ae.log’ is first token from right */ %if &sysscp = WIN %then %do; do j = 5 to numtok; tlog = tranwrd(scan(filename, 4 – j, ” “), “.log”, “”); flog = catx(” “, tlog, flog); end; ftim = catx(” “, scan(filename, 2, ” “), scan(filename, 3, ” “)); fdat = put(input(scan(filename, 1, ” “), mmddyy10.), date9.); %end; /***************************** UNIX ENVIRONMENT ******************************/ /* the pipe will read in the information in the format of: permissions, user,*/ /* system environment, file size, month, day, year or time, filename */ /* e.g. -rw-rw-r– 1 userid sysenviron 42,341 Oct 22 2015 ad_adaapasi.log */ /* ‘-rw-rw-r–‘ is first token from left */ /* ‘ad_adaapasi.log’ is first token from right */ %else %if &sysscp = LIN X64 %then %do; do j = 9 to numtok; tlog = tranwrd(scan(filename, 8 – j, ” “), “.log”, “”); flog = catx(” “, tlog, flog); end; _ftim = scan(filename, 8, ” “); /* in Unix if year is current year then time stamp is displayed */ /* otherwise the year last modified is displayed */ /* so if no year is provided then default to today’s year and if*/ /* no time is provided indicated ‘N/A’ */ if anypunct(_ftim) then do; ftim = put(input(_ftim, time5.), timeampm8.); yr = put(year(today()), Z4.); end; else do; ftim = ‘N/A’; yr = _ftim; end; fdat = cats(scan(filename, 7, ” “), upcase(scan(filename, 6, ” “)), yr); %end; run; /* create a list of logs, dates, times and store in macro variables */ proc sql noprint; select flog, fdat, ftim into : currlogs separated by “&delm”, : currdats separated by ” “, : currtims separated by “@” from logs %if “&fnm” ne “” %then where &fullwhr; ; /* need to keep extra semicolon */ quit; /* need to make sure the alllogs data set does not exist before getting into loop */ proc datasets; delete alllogs; quit; /* read in each log file and check for undesired messages */ %let x = 1; %let lg = %scan(&currlogs, &x, “&delm”); %let dt = %scan(&currdats, &x); %let tm = %scan(&currtims, &x, ‘@’); /* loop through each log in the directory and look for undesirable messages */ /* embed &lg in double quotes in case filename has special characters/spaces*/ %do %while (“&lg” ne “”); /*

All Logs checking macro Read More »

Adverse Event ADaM [ADAE] programming SAS

HTML /******************************************************************* * Client: PHARMA Private Limited. * Project: Protocol: 043-1-2025 * Program: ADAE.SAS * * Program Type: ADaM * * Purpose: To produce ADaM * Usage Notes: * * SAS® Version: 9.4 * Operating System: Windows 2010 Standard Edition. * * Author: shiva * Date Created: 28-FEB-2025 * Modification History: *******************************************************************/ LIBNAME SDTM “G:\TA_ONCO_01_24122024\SDTM Data”; LIBNAME ADAM_US “G:\TA_ONCO_01_24122024\ADaM_us”; OPTION VALIDVARNAME=UPCASE; %LET KEEPVAR=STUDYID USUBJID SUBJID SITEID AESEQ SAFFL DLTEVLFL PKEVLFL ENRLFL TRT01P TRT01PN ARMCD ARM ACTARMCD ACTARM TRTSDT TRTEDT TRTP AETERM AEDECOD AEBODSYS AEBDSYCD AELLT AELLTCD AEPTCD AEHLT AEHLTCD AEHLGT AEHLGTCD AESOC AESOCCD AESTDTC ASTDT ASTDTF AEENDTC AENDT AENDTF ADURN ADURU ASTDY AESTDY AENDY AEENDY TRTEMFL AESER AEREL AERELNP AETOX AETOXGR AEACN AEACNOTH AEACNNP AEOUT AEENRF AEDISOFL AEDISNFL AESDTH ; DATA ADSL_AE; MERGE ADAM_US.ADSL (IN=A) SDTM.AE (IN=B); BY USUBJID; IF A AND B; RUN; ***************SUPP– TO MAIN DATASET MERGE********; /*STEP1:*/ DATA SUPPAE; SET SDTM.SUPPAE; AESEQ= INPUT (IDVARVAL,BEST.); RUN; PROC SORT;BY USUBJID AESEQ;RUN; /*STEP2:*/ PROC TRANSPOSE DATA=SUPPAE OUT=SUPPAE_T; BY USUBJID AESEQ; ID QNAM; VAR QVAL; RUN; /*STEP3: BACK MERGE*/ DATA AE2; MERGE ADSL_AE (IN=A) SUPPAE_T (IN=B); BY USUBJID AESEQ; IF A; RUN; DATA AE3; SET AE2 /*(KEEP=AESTDTC TRTSDT AEENDTC TRTEDT)*/ ; TRTSDTC= PUT (TRTSDT,YYMMDD10.); TRTEDTC= PUT (TRTEDT,YYMMDD10.); AEST_YY= STRIP(SUBSTR(AESTDTC,1,4)); AEST_MM= STRIP(SUBSTR(AESTDTC,6,2)); AEST_DD= STRIP(SUBSTR(AESTDTC,9,2)); AEEN_YY= STRIP(SUBSTR(AEENDTC,1,4)); AEEN_MM= STRIP(SUBSTR(AEENDTC,6,2)); AEEN_DD= STRIP(SUBSTR(AEENDTC,9,2)); TRST_YY= STRIP(SUBSTR(TRTSDTC,1,4)); TRST_MM= STRIP(SUBSTR(TRTSDTC,6,2)); TRST_DD= STRIP(SUBSTR(TRTSDTC,9,2)); TREN_YY= STRIP(SUBSTR(TRTEDTC,1,4)); TREN_MM= STRIP(SUBSTR(TRTEDTC,6,2)); TREN_DD= STRIP(SUBSTR(TRTEDTC,9,2)); /*KEEP TRE: AEE:;*/ RUN; DATA AE4_ST; SET AE3; /*2014-10*/ IF AEST_DD EQ ” AND AEST_MM NE ” AND AEST_YY NE ” THEN DO; IF AEST_MM NE TRST_MM THEN AEST_DD=”01″; ELSE IF AEST_MM EQ TRST_MM THEN AEST_DD=TRST_DD; ASTDTF=’D’; END; /*2014*/ IF AEST_DD EQ ” AND AEST_MM EQ ” AND AEST_YY NE ” THEN DO; IF AEST_YY NE TRST_YY THEN DO; AEST_MM=’12’; AEST_DD=’31’; ASTDTF=’M’; END; END; IF AEST_DD EQ ” AND AEST_MM EQ ” AND AEST_YY NE ” THEN DO; IF AEST_YY EQ TRST_YY THEN DO; AEST_MM=TRST_MM; AEST_DD=TRST_DD; ASTDTF=’M’; END; END; IF AEST_DD EQ ” AND AEST_MM EQ ” AND AEST_YY EQ ” THEN DO; AEST_MM=TRST_MM; AEST_DD=TRST_DD; AEST_YY=TRST_YY; ASTDTF=’Y’; END; ASTDTC= CATX (“-“,AEST_YY,AEST_MM,AEST_DD); ASTDT= INPUT (ASTDTC,YYMMDD10.); FORMAT ASTDT DATE9.; RUN; DATA AE4_END; RETAIN &KEEPVAR.; SET AE4_ST; /*Assign the last day of the month.*/ /*2012-01*/ /*/*2012-01-01—-CHAR*/ /*2012-01-01 —NUME*/ /*/*2012-02-01—–intnx 1 month increment*/; /*/*2012-01-31* minus 1 day*/ IF AEEN_DD EQ ” AND AEEN_MM NE ” AND AEEN_YY NE ” THEN DO; AENDTC1= INTNX(“month”,INPUT (STRIP(AEENDTC)||”-01″,yymmdd10.),1)-1; AENDTC1C= PUT (AENDTC1,YYMMDD10.); AENDTF=’D’; AEEN_DD= SUBSTR(AENDTC1C,9,2); end; /*2014*/ IF AEEN_DD EQ ” AND AEEN_MM eq ” AND AEEN_YY NE ” THEN DO; AEEN_MM=’12’; AEEN_DD=’31’; AENDTF=’M’; END; IF AEEN_DD EQ ” AND AEEN_MM eq ” AND AEEN_YY EQ ” THEN DO; AEEN_MM=TREN_MM; AEEN_DD=TREN_DD; AEEN_YY=TREN_YY; AENDTF=’Y’; END; AENDTC= CATX (“-“,AEEN_YY,AEEN_MM,AEEN_DD); AENDT=INPUT (AENDTC,YYMMDD10.); FORMAT AENDT DATE9.; IF AEENRF=’ONGOING’ THEN DO; AENDTC=”; AENDT=.; AENDTF=’ ‘; END; TRTP=TRT01P; IF ASTDT NE . AND TRTSDT NE . THEN DO; ASTDY=ASTDT-TRTSDT; IF ASTDY GE 0 THEN ASTDY=ASTDY+1; END; IF AENDT NE . AND TRTSDT NE . THEN DO; AENDY=AENDT-TRTSDT; IF AENDY GE 0 THEN AENDY=AENDY+1; END; IF AENDY NE . AND ASTDY NE . THEN DO; adurn=AENDY-ASTDY+1; ADURU=”Days”; END; if upcase(aeacn) = ‘DRUG WITHDRAWN’ then aedisofl = ‘Y’; if upcase(aeacnnp) = ‘DRUG WITHDRAWN’ then aedisnfl = ‘Y’; IF ASTDT NE . AND TRTSDT NE . THEN DO; IF ASTDT >= TRTSDT THEN TRTEMFL=’Y’; END; IF TRTEDT NE . THEN TRTEDT_30= TRTEDT+30; IF ASTDT NE . AND TRTSDT NE . AND TRTEDT_30 NE . THEN DO; IF (ASTDT >= TRTSDT) AND (ASTDT

Adverse Event ADaM [ADAE] programming SAS Read More »

Q#4 Please tell recent 5 studies titles, primary and secondary objectives and End points

1. Study Title: A Randomized Phase 3 Study of MRTX949 versus Docetaxel in Patients with Previously Treated Non-Small Cell Lung Cancer (NSCLC) with KRAS G12C Mutation Objectives: Primary Objective: Secondary Objectives: Endpoints: Primary Endpoint: Secondary Endpoints: 2. Study Title: An Open-label Phase 1b Study of ORIC-101 in Combination with Anticancer Therapy in Patients with Advanced or Metastatic Solid Tumors Objectives: Primary Objectives: Secondary Objectives: Exploratory Objectives: Endpoints: Primary Endpoints: Secondary Endpoints: Exploratory Endpoints: 3. Study Title: Phase 1 Trial of Intralesional Immunotherapy with IFx-Hu2.0 Vaccine in Patients with Advanced Merkel Cell Carcinoma or Cutaneous Squamous Cell Carcinoma Objectives: Primary Objective: Secondary Objectives: Exploratory Objectives: Endpoints: Primary Endpoints: Secondary Endpoints: Exploratory Endpoints: 4. Study Title: A Phase-2 Open-label Multicenter Study of Single Agent Enzastaurin in Patients with Relapsed Cutaneous T-cell Lymphoma Objectives: Primary Objective: Secondary Objectives: Endpoints: Primary Endpoint: Secondary Endpoints: 5. Study Title: Evaluating the Efficacy and Safety of Pembrolizumab Versus Placebo in Patients with Advanced Non-Small Cell Lung Cancer (NSCLC): A Phase III Randomized Controlled Trial Objectives: Primary Objective: Secondary Objectives: Exploratory Objectives: Endpoints: Primary Endpoint: Secondary Endpoints: Exploratory Endpoints:

Q#4 Please tell recent 5 studies titles, primary and secondary objectives and End points Read More »

SDTM SE (Subject Element ) Dataset Programming

HTML ******************************************************************* * Client: PHARMA Private Limited. * Project: Protocol: 043-1-2025 * Program: SE.SAS * * Program Type: SDTM * * Purpose: To produce SDTM * Usage Notes: * * SAS® Version: 9.4 * Operating System: Windows 2010 Standard Edition. * * Author: shiva * Date Created: 18-MAR-2025 * Modification History: *******************************************************************/ OPTIONS NOFMTERR; LIBNAME RAW “G:TA_ONCO_01_24122024RAW DATASETS”; OPTION VALIDVARNAME=UPCASE; LIBNAME SDTM_US “G:TA_ONCO_01_24122024SDTM_US”; /*%LET KEEPVAR=*/ PROC DATASETS LIB=WORK KILL; RUN; QUIT; DATA SE1; SET RAW.SV; IF VISDAT NE .; IF VISNAME=’Cycle 2 – Day 1 (1st infusion)’; CYCLE2= PUT (VISDAT,YYMMDD10.); STUDYID=”101-18101″; DOMAIN=’DM’; SITEID=SCAN (SUBNUM,1,”-“); SUBJID=SCAN (SUBNUM,2,”-“); USUBJID=CATX (“-“,STUDYID,SITEID,SUBJID); KEEP USUBJID CYCLE2; RUN; PROC SORT;BY USUBJID ;RUN; DATA SE2; SET RAW.SV; IF VISDAT NE .; IF VISNAME=’Follow-up – 30 Days After Last Dose’; STFUP= PUT (VISDAT,YYMMDD10.); STUDYID=”101-18101″; DOMAIN=’DM’; SITEID=SCAN (SUBNUM,1,”-“); SUBJID=SCAN (SUBNUM,2,”-“); USUBJID=CATX (“-“,STUDYID,SITEID,SUBJID); KEEP USUBJID STFUP; RUN; PROC SORT;BY USUBJID ;RUN; DATA SE3; SET RAW.SV; IF VISDAT NE .; IF VISNAME=’Cycle 3 – Day 1 (1st infusion)’; CYCLE3= PUT (VISDAT,YYMMDD10.); STUDYID=”101-18101″; DOMAIN=’DM’; SITEID=SCAN (SUBNUM,1,”-“); SUBJID=SCAN (SUBNUM,2,”-“); USUBJID=CATX (“-“,STUDYID,SITEID,SUBJID); KEEP USUBJID CYCLE3; RUN; PROC SORT;BY USUBJID ;RUN; DATA SE4; LENGTH ELEMENT EPOCH ETCD $200.; MERGE SDTM_US.DM (DROP=DOMAIN) SE1 SE2 SE3; BY USUBJID; DOMAIN=’SE’; IF RFICDTC NE ” THEN DO; ETCD=’SCRN’; ELEMENT=’Screening’; TAETORD=1; EPOCH=’SCREENING’; SESTDTC=RFICDTC; IF RFXSTDTC NE ” THEN SEENDTC=RFXSTDTC; ELSE SEENDTC=RFPENDTC; OUTPUT; END; IF RFXSTDTC NE ” THEN DO; ETCD=’CYCLE1′; ELEMENT=’Cycle 1′; TAETORD=2; EPOCH=’TREATMENT’; SESTDTC=RFXSTDTC; IF CYCLE2 NE ” THEN SEENDTC=CYCLE2; ELSE IF RFXENDTC NE ” THEN SEENDTC=RFXENDTC; ELSE IF STFUP NE ” THEN SEENDTC=STFUP; ELSE SEENDTC=RFPENDTC; OUTPUT; END; IF CYCLE2 NE ” THEN DO; ETCD=’CYCLE2′; ELEMENT=’Cycle 2′; TAETORD=3; EPOCH=’TREATMENT’; SESTDTC=CYCLE2; IF CYCLE3 NE ” THEN SEENDTC=CYCLE3; ELSE IF RFXENDTC NE ” THEN SEENDTC=RFXENDTC; ELSE IF STFUP NE ” THEN SEENDTC=STFUP; ELSE SEENDTC=RFPENDTC; OUTPUT; END; IF CYCLE3 NE ” THEN DO; ETCD=’CYCLE3′; ELEMENT=’Cycle 3′; TAETORD=4; EPOCH=’TREATMENT’; SESTDTC=CYCLE3; IF RFXENDTC NE ” THEN SEENDTC=RFXENDTC; ELSE IF STFUP NE ” THEN SEENDTC=STFUP; ELSE SEENDTC=RFPENDTC; OUTPUT; END; IF RFXENDTC NE ” THEN DO; ETCD=’SFUP’; ELEMENT=’Safety Follow-Up’; TAETORD=5; EPOCH=’SAFETY FOLLOW-UP’; SESTDTC=RFXENDTC; IF STFUP NE ” THEN SEENDTC=STFUP; ELSE SEENDTC=RFPENDTC; OUTPUT; END; IF STFUP NE ” THEN DO; ETCD=’LTFUP’; ELEMENT=’Long-Term Follow-Up’; TAETORD=6; EPOCH=’LONG-TERM FOLLOW-UP’; SESTDTC=STFUP; SEENDTC=RFPENDTC; OUTPUT; END; KEEP STUDYID DOMAIN USUBJID SESEQ ETCD ELEMENT TAETORD EPOCH SESTDTC SEENDTC; RUN; PROC SORT; BY STUDYID USUBJID TAETORD ETCD SESTDTC; RUN; DATA SE5; SET SE4; BY STUDYID USUBJID TAETORD ETCD SESTDTC; IF FIRST.USUBJID THEN SESEQ=1; ELSE SESEQ+1; RUN; /*ATTRIBUTES*/ LIBNAME SDTM_US “G:TA_ONCO_01_24122024SDTM_US”; DATA SDTM_US.SE (LABEL=”Subject Elements”); RETAIN STUDYID DOMAIN USUBJID SESEQ ETCD ELEMENT TAETORD EPOCH SESTDTC SEENDTC; SET SE5; RUN;

SDTM SE (Subject Element ) Dataset Programming Read More »

Q#3 Please tell recent 5 studies titles, primary and secondary objectives.

1. A Randomized Phase 3 Study of MRTX949 versus Docetaxel in Patients with Previously Treated Non-Small Cell Lung Cancer (NSCLC) with KRAS G12C Mutation Primary Objective: Secondary Objectives: 2. An Open-label Phase 1b Study of ORIC-101 in Combination with Anticancer Therapy in Patients with Advanced or Metastatic Solid Tumors Primary Objectives: Secondary Objectives: Exploratory Objectives: 3. Phase 1 Trial of Intralesional Immunotherapy with IFx-Hu2.0 Vaccine in Patients with Advanced Merkel Cell Carcinoma or Cutaneous Squamous Cell Carcinoma Primary Objective: Secondary Objectives: Exploratory Objectives: 4. A Phase-2 Open-label Multicentre Study of Single Agent Enzastaurin in Patients with Relapsed Cutaneous T-cell Lymphoma Primary Objective: Secondary Objectives: 5. Evaluating the Efficacy and Safety of Pembrolizumab Versus Placebo in Patients with Advanced Non-Small Cell Lung Cancer (NSCLC): A Phase III Randomized Controlled TrialPrimary Objective: Secondary Objectives: Exploratory Objectives:

Q#3 Please tell recent 5 studies titles, primary and secondary objectives. Read More »

Q#2 Can you share your recent 6 study titles, therapeutic areas, and roles?

Overview: With over 11 years of experience in SAS Clinical Programming, I have contributed to multiple high-impact clinical trials across various therapeutic areas. Below is a snapshot of some of my recent projects, highlighting my roles and expertise: Recent Projects 1. Phase 3 Study: MRTX949 vs. Docetaxel in NSCLC with KRAS G12C Mutation 2. Phase 1b Open-label Study: Active Drug + Anticancer Therapy in Advanced/Metastatic Solid Tumors 3. Phase 1 Trial: Intralesional Immunotherapy with Active Drug Vaccine in Merkel Cell and Cutaneous Squamous Cell Carcinoma 4. Phase 2 Multicenter Study: Enzastaurin in Relapsed Cutaneous T-cell Lymphoma 5. Phase 3 RCT: Efficacy and Safety of Pembrolizumab vs. Placebo in Advanced NSCLC 6. Bioequivalence Study: Solifenacin Succinate Tablets in Healthy Adults

Q#2 Can you share your recent 6 study titles, therapeutic areas, and roles? Read More »

Q#1 Sample CV for clinical SAS Programmer

Ravikumar. katkamxxxx.COM+91 9xxxx Professional Summary: Professional Skills: SAS Skills: BASE-SAS, SAS/MACRO, SAS/STAT, SAS/SQL, SAS/GRAPH, SAS/ACCESS, SAS Enterprise Guide.Programming Languages: SQL, SAS.CDISC: SDTM, ADaM. Education: Professional Experience: Senior Statistical Programmer IQVIA (Home-based) – Dec 2014 to Present ———— Recent Projects: Project 1: A Randomized phase 3 study of MRTX949 versus Docetaxel in patients with previously treated Non-small cell lung cancer with KRAS G12C Mutation Project 2: An Open-label Phase 1b Study of Active drug in Combination with Anticancer Therapy in Patients with Advanced or Metastatic Solid Tumours. Project 3: Phase 1 Trial of Intralesional Immunotherapy with Active Drug Vaccine in Patients with Advanced Merkel Cell Carcinoma or Cutaneous Squamous Cell Carcinoma. Project 4: A Phase-2 Open-label Multicentre Study of Single Agent Enzastaurin in Patients with Relapsed Cutaneous T-cell Lymphoma. Project 5: Evaluating the Efficacy and Safety of Pembrolizumab Versus Placebo in Patients with Advanced Non-Small Cell Lung Cancer (NSCLC): A Phase III Randomized Controlled Trial Project 6: An Open-label, Balanced, Randomized, Two-treatment, Two-period, Two-sequence, Single Dose, Crossover, Oral Bioequivalence Study of Solifenacin Succinate Tablets 10 mg with (Solifenacin Succinate) Tablets 10 mg in Healthy, Adult, Human Subjects Under Fasting Conditions. Responsibilities:

Q#1 Sample CV for clinical SAS Programmer Read More »