Document text
file:///J/...ts/c4591001/analysis/adam/programs-6mth/125742-45_S211_M5_c4591001-A_6mth-P-adc19ef-ve-cov-7pd2-peds-wo-eval-sas.txt[7/5/2023 10:22:59 AM]************************************************************************************************
*****************;** Program Name : adc19ef-ve-cov-7pd2-peds-wo-eval.sas **;** Date Created : 15Nov2021 **;
** Programmer Name:
**;
** Purpose : Create adc19ef-ve-cov-7pd2-peds-wo-eval.html **;** Input data : adsl, adc19ef **;** Output data : adc19ef-ve-cov-7pd2-peds-eval.html **;*****************************************************************************************************************;%let prot=/Volumes/app/cdars/prod/sites/cdars4/
prjC459/ nda2_unblinded_esub/sbla1215_esub_adam/saseng/cdisc3_0/;
libname datvprot "&prot./data_vai" access=readonly;%let codename=adc19ef-ve-cov-7pd2-peds-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;
*Formating;proc format;
picture perc1b (round) 0.0=' ' 0.0<-<0.1='(<0.1)' (noedit)
0.1-99.9='0009.9)' (prefix='(') 100='(100.0)' (noedit);
value ord 1="First COVID-19 occurrence from 7 days after Dose 2" 7="(*ESC*){nbspace 3}(*ESC*){unicode
2265}7 days after Dose 2 to (*ESC*){unicode 003c}2 Months after Dose 2" 8="(*ESC*){nbspace 3}(*ESC*){unicode
2265}2 Months after Dose 2 to (*ESC*){unicode 003c}4 Months after Dose 2"
11="(*ESC*){nbspace 3}(*ESC*){unicode 2265}4 Months after Dose 2";
run;
/*** Population Flag **/
proc sql;
create table popf as select distinct usubjid, evaleffl, trt01pn, trt01p,
aai2effl, dvstdt from datvprot.adsl where EVALEFFL='Y' and PHASEN ne 1 and
HIVFL='N' and 12 <=agetr01 <=15 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;
if a*b;
run;
(b) (4), (b)
(6)
FDA-CBER-2022-5812-0071789
file:///J/...ts/c4591001/analysis/adam/programs-6mth/125742-45_S211_M5_c4591001-A_6mth-P-adc19ef-ve-cov-7pd2-peds-wo-eval-sas.txt[7/5/2023 10:22:59 AM]/***** Total Population ****/
proc sql;
create table dsin as select distinct subjid, trt01pn, trt01p, paramn, paramcd,
param, adt, vax101dt, vax102dt, pdrmupfl, dvstdt, aval, avalc, evaleffl,
PDP1FL, PDP27FL, pdrmufl, ILD1FL, ILD27FL, filocrfl, usubjid, aai2effl,
PDP214FL, ILD214FL, astdt, aendt, unblnddt from tpop;
quit;
proc sort data=dsin out=case_pos (keep=adt usubjid rename=adt=adt_s) nodupkey;
by usubjid adt;
where paramcd in ("C19ONST") and upcase(ILD27FL)="Y" and upcase(FILOCRFL)="Y"
and ((not missing(DVSTDT) and adt <=DVSTDT) or missing(DVSTDT));
run;data dsin;
length flg flg1 flg2 $15.;
merge dsin (in=a) case_pos (in=b);
by usubjid;
if a and b then
do;
if (not missing(vax102dt) and not missing(vax101dt) and
vax101dt <=adt_s < vax102dt) or
(missing(vax102dt) and not missing(vax101dt) and vax101dt <=adt_s) then
do;
flgn=1;
flg='PD1BD2';
end;
else if not missing(vax102dt) and vax102dt <=adt_s < vax102dt + 7 then
do;
flgn=2;
flg='PD2';
end;
else if not missing(vax102dt) and adt_s >=vax102dt + 7 then
do;
flgn=3;
flg='PD2A7';
end;
if not missing(vax101dt) and vax101dt <=adt_s < vax101dt + 11 then
do;
flg1n=1.4;
flg1='PD10PD1';
end;
if (not missing(vax102dt) and not missing(vax101dt) and
vax101dt + 11 <=adt_s < vax102dt) or
(missing(vax102dt) and not missing(vax101dt) and adt_s >=vax101dt + 11)
then
do;
flg1n=1.5;
flg1='PD10BD2';
end;
FDA-CBER-2022-5812-0071790
file:///J/...ts/c4591001/analysis/adam/programs-6mth/125742-45_S211_M5_c4591001-A_6mth-P-adc19ef-ve-cov-7pd2-peds-wo-eval-sas.txt[7/5/2023 10:22:59 AM] if not missing(vax102dt) and vax102dt + 7 <=adt_s < vax102dt + 56 then
do;
flg1n=3.1;
flg1='PD2A72M';
end;
if not missing(vax102dt) and vax102dt + 56 <=adt_s < vax102dt + 112 then
do;
flg1n=3.2;
flg1='PD2A2M4M';
end;
if not missing(vax102dt) and adt_s >=vax102dt + 112 then
do;
flg1n=3.3;
flg1='PD2A4M';
end;
if not missing(vax102dt) and vax102dt + 56 <=adt_s < vax102dt + 84 then
do;
flg2n=3.21;
flg2='PD2A2M3M';
end;
if not missing(vax102dt) and vax102dt + 84 <=adt_s < vax102dt + 112 then
do;
flg2n=3.22;
flg2='PD2A3M4M';
end;
if not missing(vax102dt) and vax102dt + 112 <=adt_s < vax102dt + 140 then
do;
flg2n=3.31;
flg2='PD2A4M5M';
end;
if not missing(vax102dt) and adt_s >=vax102dt + 140 then
do;
flg2n=3.32;
flg2='PD2A5M';
end;
end;
else if a and not b then
do;
flgn=4;
flg='RISK';
end;
run;
***** First COVID-19 occurrence after Dose 1 *****;
***** >=7 days after Dose 2 to <2 Months after Dose 2 *****;
data c19_chk6 (keep=usubjid subjid paramcd astdt aendt aval vax101dt vax102dt
FDA-CBER-2022-5812-0071791
file:///J/...ts/c4591001/analysis/adam/programs-6mth/125742-45_S211_M5_c4591001-A_6mth-P-adc19ef-ve-cov-7pd2-peds-wo-eval-sas.txt[7/5/2023 10:22:59 AM] unblnddt flg: adt_s _: trt01p: PDRMUPFL PDP27FL dvstdt);
set dsin (rename=(astdt=_astdt aendt=_aendt aval=_aval));
where paramcd='ST27PD';
paramcd='PD2A72M';
astdt=vax102dt + 7;
if missing(vax102dt) or . < _aendt < vax102dt + 56 then
do;
aendt=_aendt;
aval=AENDT - ASTDT + 1;
end;
else if not missing(vax102dt) and . < vax102dt + 56 <=_aendt then
do;
aendt=vax102dt +
55;
aval=AENDT - ASTDT + 1;
end;
if aval < 0 then
AVAL=0;
format ASTDT AENDT date9.;
run;
***** >=2 Months after Dose 2 to <4 Months after Dose 2 *****;data c19_chk7 (keep=usubjid subjid paramcd astdt aendt aval vax101dt vax102dt
unblnddt flg: adt_s _: trt01p: PDRMUPFL PDP27FL dvstdt);
set dsin (rename=(astdt=_astdt aendt=_aendt aval=_aval));
where paramcd='ST27PD';
paramcd='PD2A2M4M';
astdt=vax102dt + 56;
if missing(vax102dt) or . < _aendt < vax102dt + 112 then
do;
aendt=_aendt;
aval=AENDT - ASTDT + 1;
end;
else if not missing(vax102dt) and . < vax102dt + 112 <=_aendt then
do;
aendt=vax102dt +
111;
aval=AENDT - ASTDT + 1;
end;
if aval < 0 then
AVAL=0;
format ASTDT AENDT date9.;
run;***** >=4 Months after Dose 2 *****;data c19_chk8 (keep=usubjid subjid paramcd astdt aendt aval vax101dt vax102dt
unblnddt flg: adt_s _: trt01p: PDRMUPFL PDP27FL dvstdt);
set dsin (rename=(astdt=_astdt aendt=_aendt aval=_aval));
where paramcd='ST27PD';
paramcd='PD2A4M';
FDA-CBER-2022-5812-0071792
file:///J/...ts/c4591001/analysis/adam/programs-6mth/125742-45_S211_M5_c4591001-A_6mth-P-adc19ef-ve-cov-7pd2-peds-wo-eval-sas.txt[7/5/2023 10:22:59 AM] astdt=vax102dt + 112;
aendt=_aendt;
aval=AENDT - ASTDT + 1;
if aval < 0 then
AVAL=0;
format ASTDT AENDT date9.;
run;
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;%let alpha=0.05;%macro sbgrp (cond=, ord=, out=, grp=, st1=, st2=, g_a_subset2=, g_a_subset4=,
dsin1=);
/*** Subjects at Risk ****/
proc sql;
create table riskp as select distinct usubjid, trt01pn, trt01p, aval
from &dsin1.
where &g_a_subset2. and &st1.;
quit;
/*** If there are no subjects in a subgroup, populate 0 ****/
proc sql noprint;
select count(*) into :tobs from riskp;
quit;
%put &tobs.;
%if &tobs > 0 %then
%do;
data dmny;
do trt01pn=8
to 9;
output;
end;
run;
proc sql;
create table n2 as select count(distinct usubjid) as n2, trt01pn from riskp
group by trt01pn order by trt01pn;
quit;
data n2;
merge dmny
(in=a)n2;
by trt01pn;
if a;
if missing(n2)
then
n2=0;
FDA-CBER-2022-5812-0071793
file:///J/...ts/c4591001/analysis/adam/programs-6mth/125742-45_S211_M5_c4591001-A_6mth-P-adc19ef-ve-cov-7pd2-peds-wo-eval-sas.txt[7/5/2023 10:22:59 AM] run;
/***** Events (n1) ****/
proc sql;
create table evnts as select distinct usubjid, param, avalc, trt01pn from
dsin where paramcd in ("C19ONST") and upcase(ILD27FL)="Y" and
upcase(FILOCRFL)="Y" and ((not missing(DVSTDT) and adt <=DVSTDT) or
missing(DVSTDT)) and &st2. 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;
data evtn;
merge dmny
(in=a) evtn;
by trt01pn;
if a;
if missing(smln)
then
smln=0;
run;
/*** Surveillance Time ****/
proc sql;
create table st as select distinct usubjid, aval, trt01pn, trt01p, paramcd
from &dsin1.
where &g_a_subset4. and usubjid in (select distinct usubjid from riskp);
quit;
proc sql;
create table riskn as select a.*, b.ptyrs from n2 a inner join
(select (sum(aval)/365.25/1000) as ptyrs, trt01pn from st group by trt01pn) b
on a.trt01pn=b.trt01pn;
quit;
data riskn;
merge dmny
(in=a) riskn;
by trt01pn;
if a;
if missing(ptyrs)
then
ptyrs=0;
if missing(n2)
then
n2=0;
run;
proc sql;
create table &out._pt as select strip(put(a.smln, best.)) as evtn, b.*,
FDA-CBER-2022-5812-0071794
file:///J/...ts/c4591001/analysis/adam/programs-6mth/125742-45_S211_M5_c4591001-A_6mth-P-adc19ef-ve-cov-7pd2-peds-wo-eval-sas.txt[7/5/2023 10:22:59 AM] smln/ptyrs as ir, a.smln, (put(ptyrs, 7.3) || " (" || strip(put(n2,
best.))) || ")" as ptyb from evtn a left join riskn b on
a.trt01pn=b.trt01pn;
quit;
/**** Total cases ****/
proc sql
noprint;
select sum(smln) into :ncases from &out._pt;
quit;
%let ncases = &ncases.;
/***** Cases in Vacination Group ****/
proc sql
noprint;
select smln into :nv1-:nv2 from &out._pt;
quit;
%let nv1 = &nv1;
%let nv2 = &nv2;
%let ncases = &ncases;
%put No. of Cases in Vacination group are &nv1.;
%put Total No. of Cases in the trial are &ncases.;
proc transpose data=&out._pt out=&out._tr prefix=trt;
var ptyrs;
id trt01pn;
run;
%put &nv1
&nv2;
data &out._tr;
set &out._tr;
if &nv1 > 0 or &nv2 > 0 then
do;
r=trt8/trt9;
n_p=&ncases -
&nv1.;
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), 10.1));
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);
FDA-CBER-2022-5812-0071795
file:///J/...ts/c4591001/analysis/adam/programs-6mth/125742-45_S211_M5_c4591001-A_6mth-P-adc19ef-ve-cov-7pd2-peds-wo-eval-sas.txt[7/5/2023 10:22:59 AM] /* vci = "(" || strip(put(ql,8.1)) || ", " || strip(put(qu,8.1)) || ")"; */
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;
else
do;
ve="NE";
call missing(pr,
vci);
end;
grp=&grp;
ord=⩝
*drop ql qh irr qu_:;
if strip(ve)='.'
then
do;
ve="-(*ESC*){unicode 221e}";
vci="(NA, NA)";
end;
run;
proc transpose data=&out._pt out=trn prefix=trtn;
var evtn;
id trt01pn;
run;
proc transpose data=&out._pt out=try prefix=trty;
var ptyb;
id trt01pn;
run;
proc sql;
create table f_&out. as select a.*, b.*, c.* from trn (drop=_name_) a,
try (drop=_name_) b, &out._tr (drop=_name_) c;
quit;
%end;
%else
%do;
data f_&out.;
length ve vci trtn8 trtn9 $50 trty8 trty9 $100;
grp=&grp;
ord=&ord.;
ve="NE";
vci=" ";
FDA-CBER-2022-5812-0071796
file:///J/...ts/c4591001/analysis/adam/programs-6mth/125742-45_S211_M5_c4591001-A_6mth-P-adc19ef-ve-cov-7pd2-peds-wo-eval-sas.txt[7/5/2023 10:22:59 AM] trtn8="0";
trtn9="0";
trty8=" 0.00
(0)";
trty9=" 0.00
(0)";
run;
%end;
%mend sbgrp;
*** Overall ***;
%sbgrp (cond=%str(), ord=1, grp=1, out=ovr, st1=flgn in (1, 2, 3, 4), st2=flgn
in (1, 2, 3, 4), g_a_subset2=PDRMUPFL="N" and PDP27FL="Y" and paramcd
in ("ST27PD") and aval > 0, dsin1=dsin, g_a_subset4=paramcd in ("ST27PD"));
*** >=7 days after Dose 2 to <2 Months after Dose 2 ***;%sbgrp (cond=%str(), ord=7, grp=1, out=pd6, st1=flgn in (3, 4), st2=flg1n
in (3.1), g_a_subset2=PDRMUPFL="N" and PDP27FL="Y" and paramcd in ("PD2A72M")
and aval > 0, dsin1=c19_chk6, g_a_subset4=paramcd in ("PD2A72M"));
*** >=2 Months after Dose 2 to <4 Months after Dose 2 ***;%sbgrp (cond=%str(), ord=8, grp=1, out=pd7, st1=flgn in (3, 4), st2=flg1n
in (3.2), g_a_subset2=PDRMUPFL="N" and PDP27FL="Y" and paramcd in ("PD2A2M4M")
and aval > 0, dsin1=c19_chk7, g_a_subset4=paramcd in ("PD2A2M4M"));
*** >=4 Months after Dose 2 ***;%sbgrp (cond=%str(), ord=11, grp=1, out=pd8, st1=flgn in (3, 4), st2=flg1n
in (3.3), g_a_subset2=PDRMUPFL="N" and PDP27FL="Y" and paramcd in ("PD2A4M")
and aval > 0, dsin1=c19_chk8, g_a_subset4=paramcd in ("PD2A4M"));
data final;
length vci $100. trtn8 trtn9 $50.;
set f_:;
run;
proc sort data=final;
by ord grp;
run;data dummy;
do ord=1 to 13;
output;
end;
run;data dummy;
set dummy;
grp=1;
run;proc sort;
by ord grp;
run;data rf;
merge dummy (in=a) final;
by ord grp;
FDA-CBER-2022-5812-0071797
file:///J/...ts/c4591001/analysis/adam/programs-6mth/125742-45_S211_M5_c4591001-A_6mth-P-adc19ef-ve-cov-7pd2-peds-wo-eval-sas.txt[7/5/2023 10:22:59 AM] if a;
text=put(ord, ord.);
if strip(trtn8)='0' and strip(trtn9)='0' then
delete;
if ord in (1, 7, 8, 11);
run;
/* Output report */
ods escapechar="~";ods html file="&outtable.";title1 "Vaccine Efficacy (*ESC*){unicode 2013} First COVID-19 Occurrence From 7 Days After Dose 2";title2 "(*ESC*){unicode 2013} Blinded Placebo-Controlled Follow-up Period";title3 "(*ESC*){unicode 2013} Subjects 12 Through 15 Years of Age and Without Evidence of Infection Prior to 7 Days After Dose 2";title4 "(*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 for the overall row and from start to the end of the range stated for each time interval.";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=rf nowd headline headskip split="*"
style(report)=[borderwidth=10];
column grp ord (text ("Vaccine Group (as Randomized)~{line}" ("BNT162b2 (30 ~{unicode 03BC}g)*(N~{super
a}=&n1.)"
trtn8 trty8) ("Placebo*(N~{super a}=&n2.)" trtn9 trty9)) ve vci);
define ord / order noprint;
define grp / order noprint;
define text / "Efficacy Endpoint*~{nbspace 5}Subgroup" 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;
FDA-CBER-2022-5812-0071798
file:///J/...ts/c4591001/analysis/adam/programs-6mth/125742-45_S211_M5_c4591001-A_6mth-P-adc19ef-ve-cov-7pd2-peds-wo-eval-sas.txt[7/5/2023 10:22:59 AM]proc printto;
run;
FDA-CBER-2022-5812-0071799