Document text
***********************************************************************************
******************************;** Program Name : adc19ef ‐ve‐sev‐ 7pd2‐ cdc‐ wo‐eval.sas
**;
** Date Created : 4Aug2021
**;
** Programmer Name:
**;
** Purpose : Create adc19ef ‐ve‐sev‐ 7pd2‐ cdc‐ wo‐eval.html
**;
** Input data : adc19ef
**;
** Output data : adc19ef ‐ve‐sev‐ 7pd2‐ cdc‐ wo‐eval.html
**;
*****************************************************************************************************************;%let prot=/Volumes/app/cdars/prod/sites/cdars4/prjC459/nda2_unblinded_esub/bla_esub_adam/saseng/cdisc3_0;
libname datvprot "&prot./data_vai" access=readonly;
%let codename=adc19ef ‐ve‐sev‐ 7pd2‐ cdc‐ wo‐eval;
options mprint symbolgen mlogic nocenter missing=" ";
proc datasets library=WORK kill nolist nodetails;
quit;%let outlog=&prot./analysis/esub/logs/&codename..log;
%let outtable=&prot./analysis/esub/output/&codename..html;
proc printto log="&outlog." new;
run;/*** Population Flag **/
proc sql;
create table popf as select distinct usubjid, evaleffl, trt01pn, trt01p,
aai2effl from datvprot.adsl where EVALEFFL='Y' and MULENRFL ne "Y" and
PHASEN
ne 1 and HIVFL='N' order by usubjid;
quit;proc sql;
create table adc19ef as select * from datvprot.adc19ef order by usubjid;
quit;data tpop;
merge adc19ef (in=a) popf (in=b);
by usubjid;
(b) (4)
FDA-CBER-2021-5683-0950203
if a*b;
run;
/***** Total Population ****/
proc sql;
create table dsin as select distinct subjid, trt01pn, trt01p, paramn, paramcd,
param, CDCRMUFL, CDP27FL, PDRMUPFL, aval, avalc, evaleffl, PDP27FL,
pdrmufl,
ILD27FL, filocrfl, usubjid, aai2effl, PDP214FL, ILD214FL, CDRMUPFL, adt,
dvstdt from tpop;
quit;proc sql noprint;
select bign into :n1 ‐ :n2 from (select count(distinct usubjid) as bign,
trt01pn from dsin where PDP27FL="Y" group by trt01pn) order by trt01pn;
quit;/*** Subjects at Risk ****/
proc sql;
create table riskp as select distinct usubjid, trt01pn, trt01p, aval from dsin
where CDRMUPFL="N" and CDP27FL="Y" and PDP27FL="Y" and paramcd in
("STC27SE")
and aval > 0;
quit;proc sql;
create table n2 as select count(distinct usubjid) as n2, trt01pn from riskp
group by trt01pn order by trt01pn;
quit;/***** Events (n1) ****/
proc sql;
create table evnts as select distinct usubjid, param, avalc, trt01pn from dsin
where paramcd in ("CDCSONST") and upcase(ILD27FL)="Y" and
upcase(FILOCRFL)="Y" and
((not missing(DVSTDT) and adt <=DVSTDT) or missing(DVSTDT)) and
usubjid in (select distinct usubjid from riskp) order by usubjid;
quit;proc sql;
create table evtn as select count(distinct usubjid) as smln, trt01pn from
evnts group by trt01pn order by trt01pn;
quit;/**** Make sure All treatment arms are present in EVTN dataset (with 0 cases)
*****/
proc sql noprint;
create table trt_u as select distinct trt01pn from dsin order by trt01pn;
quit;
FDA-CBER-2021-5683-0950204
data evtn;
merge evtn (in=a) trt_u (in=b);
by trt01pn;
if b;
if missing(smln) then
smln=0;
run;
/*** Surveillance Time ****/
proc sql;
create table st as select distinct usubjid, aval, trt01pn, trt01p, paramcd
from dsin where paramcd in ("STC27SE") and usubjid in (select distinct
usubjid from riskp);
quit;proc sql;
create table riskn as select a.*, b.ptyrs, pty from n2 a inner join
(select (sum(aval)/365.25/1000) as ptyrs, sum(aval)/365.25 as pty, trt01pn
from st group by trt01pn) b on a.trt01pn=b.trt01pn;
quit;proc sql;
create table pt as select strip(put(a.smln, best.)) as evtn, b.*, smln/ptyrs
as ir, a.smln, (put(ptyrs, 7.3) || " (" || strip(put(n2, best.))) || ")" as
ptyb from evtn a inner join riskn b on a.trt01pn=b.trt01pn;
quit;/**** Total cases ****/
proc sql noprint;
select sum(smln) into :ncases from pt;
quit;/***** Cases in Vacination Group ****/
proc sql noprint;
select smln into :nv1‐ :nv2 from pt quit;
%let VE = 0.3;
%let alpha=0.05;
proc transpose data=pt out=tr prefix=trt;
var ptyrs;
id trt01pn;
run;data tr;
set tr;
n_p=&ncases ‐ &nv1.;
r=trt8/trt9;
FDA-CBER-2021-5683-0950205
P=R*(1 ‐&VE)/(1+R*(1 ‐&VE));
IR_V=&nv1/trt8;
IR_P=n_p/trt9; alpha=&alpha.; length VE lcl ucl $25.;
VE=strip(put(100*(1 ‐IR_V/IR_P), 7.1));
pr=put(CDF('BETA', p, 0.700102+&nv1, 1+&ncases ‐&nv1), 7.4);
pr_n=CDF('BETA', p, 0.700102+&nv1, 1+&ncases ‐&nv1);
qh_theta=quantile('BETA', 0.975, 0.700102+&nv1, 1+&ncases ‐&nv1);
ql_theta=quantile('BETA', 0.025, 0.700102+&nv1, 1+&ncases ‐&nv1);
QH=round (100*(R ‐ qL_theta*(R+1))/(R*(1 ‐qL_theta)), 0.01);
QL=round (100*(R ‐ qH_theta*(R+1))/(R*(1 ‐qH_theta)), 0.01);
*** Use Clopper ‐Pearson Method to display CI ****;
fu=finv(1 ‐ alpha/2, 2*(&nv1.+1), 2*N_P);
ucl_pi=(&nv1 +1)*fu/(N_P + (&nv1.+1)*fu);
fl=finv(1 ‐alpha/2, 2*(N_P+1), 2*&nv1.);
if &nv1=0 then
lcl_pi=0;
else lcl_pi=&nv1./(&nv1. + fl*(N_P+1));
ucl_theta=ucl_pi/(r*(1 ‐ucl_pi));
lcl_theta=lcl_pi/(r*(1 ‐lcl_pi));
qu=100*(1 ‐ lcl_theta);
ql=100*(1 ‐ ucl_theta);
if not missing(ql) then
lcl=strip(put(ql, 8.1));
else lcl="‐(*ESC*){unicode 221e}";
if not missing(qu) then
ucl=strip(put(qu, 8.1));
else ucl='NE';
vci="(" || strip(lcl) || ", " || strip(ucl) || ")";
**** END ****;
text="First severe COVID‐19 occurrence based on CDC‐ definition from 7 days
after Dose 2";
/**** If probablity is 0 then show <0.0001' and if its 1 then then show >0.9999
*****/ if pr_n < 0.0001 then
pr='<0.0001';
else if pr_n > 0.9999 then
pr='>0.9999';
/**** If VE is missing then show Infinity symbol ****/
if strip(ve)='.' then
do;
FDA-CBER-2021-5683-0950206
ve="‐ (*ESC*){unicode 221e}";
vci="(NA, NA)";
end;
run;
proc transpose data=pt out=trn prefix=trtn;
var evtn;
id trt01pn;
run;proc transpose data=pt out=try prefix=trty;
var ptyb;
id trt01pn;
run;proc sql;
create table final as select a.*, b.*, c.* from trn (drop=_name_) a,
try (drop=_name_) b, tr (drop=_name_) c;
quit;/* Output report */
ods escapechar="~";
ods html file="&outtable.";
title1 "Vaccine Efficacy (*ESC*){unicode 2013} First Severe COVID‐19 Occurrence
Based on CDC‐ Definition From 7 Days After Dose 2";
title2 "(*ESC*){unicode 2013} Blinded Placebo ‐Controlled Follow‐up Period";
title3 "(*ESC*){unicode 2013} Subjects Without Evidence of Infection Prior to 7
Days After Dose 2 (*ESC*){unicode 2013} Evaluable Efficacy (7 Days) Population";
footnote1 "Abbreviations: N‐binding = SARS‐ CoV‐ 2 nucleoprotein(*ESC*){unicode
2013}binding; NAAT = nucleic acid amplification test; ~nSARS‐CoV‐ 2 = severe acute
respiratory syndrome coronavirus 2; VE = vaccine efficacy.";
footnote2 "Note: Subjects who had no serological or virological evidence (prior
to 7 days after receipt of the last dose) of past SARS‐ CoV‐ 2 infection (ie,
N‐binding antibody [serum] negative at Visit 1 and SARS‐ CoV‐ 2 not detected by NAAT
[nasal swab] at Visits 1 and 2), and had negative NAAT (nasal swab) at any
unscheduled visit prior to 7 days after Dose 2 were included in the analysis.";
footnote3 "a.(*ESC*){nbspace 5}N = number of subjects in the specified group.
~nb.(*ESC*){nbspace 5}n1 = Number of subjects meeting the endpoint definition.";
footnote4 "c.(*ESC*){nbspace 5}Total surveillance time in 1000 person‐years for
the given endpoint across all subjects within each group at risk for the endpoint.
Time period for COVID‐19 case accrual is from 7 days after Dose 2 to the end of the
surveillance period.";
footnote5 "d.(*ESC*){nbspace 5}n2 = Number of subjects at risk for the
endpoint.";
footnote6 "e.(*ESC*){nbspace 5}Confidence interval (CI) for VE is derived based
on the Clopper and Pearson method adjusted for surveillance time.";
proc report data=final nowd headline headskip split="*"
style(report)=[borderwidth=10];
column (text ("Vaccine Group (as Randomized)~{line}"
FDA-CBER-2021-5683-0950207
("BNT162b2 (30 ~{unicode 03BC}g)*(N~{super a}=&n1.)" trtn8 trty8)
("Placebo*(N~{super a}=&n2.)" trtn9 trty9)) ve vci);
define text / "Efficacy Endpoint" flow style(header)=[just=l]
style(column)=[cellwidth=3in just=l];
define trtn8 / " n1~{super b}" style(column)=[cellwidth=0.8in just=c];
define trty8 / "Surveillance*Time~{super c} (n2~{super d})"
style(column)=[cellwidth=1.5in just=c];
define trtn9 / " n1~{super b}" style(column)=[cellwidth=0.8in just=c];
define trty9 / "Surveillance*Time~{super c} (n2~{super d})"
style(column)=[cellwidth=1.5in just=c];
define ve / " VE (%)" style(column)=[cellwidth=0.5in just=c];
define vci / " (95% CI~{super e})" style(column)=[cellwidth=0.5in just=c];
run;
ods markup close;
ods HTML close;
proc printto;
run;
FDA-CBER-2021-5683-0950208