Clinwright Public work of Clinwright examples · free Start free

14-5.02

Incidence of Treatment Emergent Serious Adverse Events by Treatment Group

Made 2026-10-17 from uploaded data.

CDISCPILOT01

Table 14-5.02

Incidence of Treatment Emergent Serious Adverse Events by Treatment Group

Safety Analysis Set

Fisher's Exact p-values
Placebo (N=86)Xanomeline Low (N=84)Xanomeline High (N=84)Placebo vs. Low DosePlacebo vs. High Dose
ANY BODY SYSTEM0 (0.0%) [0]1 (1.2%) [1]2 (2.4%) [2]0.4940.243
NERVOUS SYSTEM DISORDERS0 (0.0%) [0]1 (1.2%) [1]2 (2.4%) [2]0.4940.243
PARTIAL SEIZURES WITH SECONDARY GENERALISATION0 (0.0%) [0]0 (0.0%) [0]1 (1.2%) [1]>0.9990.494
SYNCOPE0 (0.0%) [0]1 (1.2%) [1]1 (1.2%) [1]0.4940.494

Note: Treatment emergent events are defined as events which start on or after the start of treatment.

Note: Adverse events are coded using MedDRA.

Note: Percentages are based on the number of subjects in the safety population within each treatment group.

Note: P-values are based on Fisher's Exact test for the comparison of placebo versus each active treatment group.

Note: The column [AE] represents the total number of times an event was recorded.

Program: t-14-5-02.sas

Program t-14-5-02.sas

Version 1, written from Clinwright's patterns, 2026-10-17, checks passed.

/*==== 00-header ====*/
/*----------------------------------------------------------------------------
  Output  : Table 14-5.02 / Incidence of Treatment Emergent Serious Adverse Events by Treatment Group / Safety Analysis Set
  Program : t-14-5-02.sas   Reporting effort : CSR
  ADaM    : /work/adam (ADSL, ADADAS, ADCIBC, ADLBC, ADLBH, ADNPIX, ADTTE, ADVS, ADAE, ADCM, ADMH, ADEX)
  The header and the report step follow from the shell. The sections between
  them make WORK.FINAL, one record per row of the table, in order:
    _page     the page (1 unless the output is paged); _pagelbl its heading or empty
    _ord      the row's order; _indent the label's indentation (0 = flush left)
    _rowid    the uuid of the shell row it shows (WORK._SHELL); one shell row may
              have several (a category per value); a blank row's is blank-<n>
    _kind     label | stat | blank
    rowlabel  the row's label, as text
    col1      Placebo|(N=xx)
    col2      Xanomeline Low|(N=xx)
    col3      Xanomeline High|(N=xx)
    col4      Placebo|vs.|Low Dose
    col5      Placebo|vs.|High Dose
  and set the big N of the column headers:
    &_bign1    Placebo|(N=xx)
    &_bign2    Xanomeline Low|(N=xx)
    &_bign3    Xanomeline High|(N=xx)
  /work/_lib/clinwright.sas has %ls_bign, %ls_count, %ls_stats, %ls_npct, %ls_num.
----------------------------------------------------------------------------*/
libname adam "/work/adam" access=readonly;
%include "/work/_lib/clinwright.sas";
%ls_setup;

/* The shell's rows, in order, with each column's value pattern (_xx1-_xx5). */
data work._shell;
  length _page 8 _pagelbl $200 _ord 8 _indent 8 _rowid $36 _kind $5 _var $32 rowlabel $200 _xx1 $40 _xx2 $40 _xx3 $40 _xx4 $40 _xx5 $40;
  _page = 1; _pagelbl = '';
  _ord=1; _indent=0; _rowid='ad45eb45-ed50-4f13-a229-318a11291c1e'; _kind='stat'; _var=''; rowlabel='ANY BODY SYSTEM'; _xx1='xx (xx.x%) [xx]'; _xx2='xx (xx.x%) [xx]'; _xx3='xx (xx.x%) [xx]'; _xx4='x.xxx'; _xx5='x.xxx'; output;
  _ord=2; _indent=0; _rowid='blank-2'; _kind='blank'; _var=''; rowlabel=''; _xx1=''; _xx2=''; _xx3=''; _xx4=''; _xx5=''; output;
  _ord=3; _indent=0; _rowid='c771026b-ba2f-4925-9da2-06d4d23cede0'; _kind='stat'; _var=''; rowlabel='[System Organ Class]'; _xx1='xx (xx.x%) [xx]'; _xx2='xx (xx.x%) [xx]'; _xx3='xx (xx.x%) [xx]'; _xx4='x.xxx'; _xx5='x.xxx'; output;
  _ord=4; _indent=1; _rowid='640b5f49-4c1c-43a4-a9bc-25cfad1ce908'; _kind='stat'; _var=''; rowlabel='[Preferred Term]'; _xx1='xx (xx.x%) [xx]'; _xx2='xx (xx.x%) [xx]'; _xx3='xx (xx.x%) [xx]'; _xx4='x.xxx'; _xx5='x.xxx'; output;
run;

/*==== 10-data ====*/
/* Made from the output's analysis: the records of ADAE with TRTEMFL = 'Y' and AESER = 'Y' of the subjects of ADSL with SAFFL = 'Y', by TRT01A. */
/* The population's subjects, in each column they count in. */
data work._popc;
  set adam.adsl(where=(saffl = 'Y'));
  if trt01a in ('Placebo') then do; _col = 1; output; end;
  if trt01a in ('Xanomeline Low Dose') then do; _col = 2; output; end;
  if trt01a in ('Xanomeline High Dose') then do; _col = 3; output; end;
  keep usubjid _col;
run;
data work._pop1; set adam.adsl(where=(saffl = 'Y')); keep usubjid trt01a; run;
proc sort data=work._pop1; by usubjid; run;
/* The records of ADAE with TRTEMFL = 'Y' and AESER = 'Y', of the population's subjects, in each column. */
proc sort data=adam.adae(keep=usubjid saffl aedecod aebodsys aeser trtemfl where=(TRTEMFL = 'Y' and AESER = 'Y')) out=work._rec; by usubjid; run;
data work._an;
  merge work._rec(in=_r) work._pop1(in=_p);
  by usubjid;
  if _r and _p;
  if trt01a in ('Placebo') then do; _col = 1; output; end;
  if trt01a in ('Xanomeline Low Dose') then do; _col = 2; output; end;
  if trt01a in ('Xanomeline High Dose') then do; _col = 3; output; end;
run;
data work._cols; do _col = 1 to 5; output; end; run;
%ls_bign(data=work._popc, trt=_col, values=1|2|3|4|5|1|2|3, names=_lsn1 _lsn2 _lsn3 _lsn4 _lsn5 _bign1 _bign2 _bign3);

/* Subjects and records per column. */
proc sort data=work._an(keep=usubjid _col) out=work._u; by _col usubjid; run;
data work._c;
  set work._u;
  by _col usubjid;
  retain _n _e;
  if first._col then do; _n = 0; _e = 0; end;
  _e = _e + 1;
  if first.usubjid then _n = _n + 1;
  if last._col then output;
  keep _col _n _e;
run;
proc transpose data=work._c out=work._tn(drop=_name_) prefix=_n; id _col; var _n; run;
proc transpose data=work._c out=work._te(drop=_name_) prefix=_e; id _col; var _e; run;
data work._z; _z = 1; run;
data work._g0;
  merge work._z work._tn work._te;
  array _nn{5} _n1-_n5;
  array _ee{5} _e1-_e5;
  do _i = 1 to 5; _nn{_i} = sum(_nn{_i}, 0); _ee{_i} = sum(_ee{_i}, 0); end;
  _tot = sum(of _n1-_n5);
  drop _i _z;
run;
/* ANY BODY SYSTEM: any. */
data work._f; set work._g0; do _col = 1 to 5; output; end; run;
data work._pp4;
  set work._g0;
  array _px{5} _n1-_n5;
  %ls_pcounts(p=_p4, x=_px, cols=1 2, test=fisher);
  keep _p4;
run;
data work._f; if _n_ = 1 then set work._pp4; set work._f; run;
data work._pp5;
  set work._g0;
  array _px{5} _n1-_n5;
  %ls_pcounts(p=_p5, x=_px, cols=1 3, test=fisher);
  keep _p5;
run;
data work._f; if _n_ = 1 then set work._pp5; set work._f; run;
data work._k1;
  length _rowid $36 _label _pagelbl $200 _v $200;
  set work._f;
  array _nn{5} _n1-_n5;
  array _ee{5} _e1-_e5;
  _rowid = 'ad45eb45-ed50-4f13-a229-318a11291c1e';
  _page = 1;
  _pagelbl = '';
  _k0 = 1;
  _k1 = 0; _k2 = 0;
  _k3 = 0; _k4 = 0;
  _label = '';
  if _col = 1 then _v = strip(ifc(missing(_nn{_col}), '-', %ls_num(_nn{_col}, 0))) || ' (' || strip(ifc(missing(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .)), '-', %ls_num(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .), 1))) || '%) [' || strip(ifc(missing(_ee{_col}), '-', %ls_num(_ee{_col}, 0))) || ']';
  else if _col = 2 then _v = strip(ifc(missing(_nn{_col}), '-', %ls_num(_nn{_col}, 0))) || ' (' || strip(ifc(missing(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .)), '-', %ls_num(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .), 1))) || '%) [' || strip(ifc(missing(_ee{_col}), '-', %ls_num(_ee{_col}, 0))) || ']';
  else if _col = 3 then _v = strip(ifc(missing(_nn{_col}), '-', %ls_num(_nn{_col}, 0))) || ' (' || strip(ifc(missing(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .)), '-', %ls_num(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .), 1))) || '%) [' || strip(ifc(missing(_ee{_col}), '-', %ls_num(_ee{_col}, 0))) || ']';
  else if _col = 4 then _v = ifc(missing(_p4), '', ifc(round(sum(_p4, 0), 0.001) < 0.001, '<0.001', ifc(round(sum(_p4, 0), 0.001) > 0.999, '>0.999', strip(put(round(sum(_p4, 0), 0.001), 32.3)))));
  else if _col = 5 then _v = ifc(missing(_p5), '', ifc(round(sum(_p5, 0), 0.001) < 0.001, '<0.001', ifc(round(sum(_p5, 0), 0.001) > 0.999, '>0.999', strip(put(round(sum(_p5, 0), 0.001), 32.3)))));
  keep _rowid _label _page _pagelbl _k0 _k1 _k2 _k3 _k4 _col _v;
run;
/* Per value of aebodsys: subjects and records per column. */
proc sort data=work._an(keep=usubjid _col aebodsys where=(not missing(aebodsys))) out=work._u; by aebodsys _col usubjid; run;
data work._c;
  set work._u;
  by aebodsys _col usubjid;
  retain _n _e;
  if first._col then do; _n = 0; _e = 0; end;
  _e = _e + 1;
  if first.usubjid then _n = _n + 1;
  if last._col then output;
  keep aebodsys _col _n _e;
run;
proc transpose data=work._c out=work._tn(drop=_name_) prefix=_n; by aebodsys; id _col; var _n; run;
proc transpose data=work._c out=work._te(drop=_name_) prefix=_e; by aebodsys; id _col; var _e; run;
data work._g1;
  merge work._tn work._te; by aebodsys;
  array _nn{5} _n1-_n5;
  array _ee{5} _e1-_e5;
  do _i = 1 to 5; _nn{_i} = sum(_nn{_i}, 0); _ee{_i} = sum(_ee{_i}, 0); end;
  _tot = sum(of _n1-_n5);
  drop _i;
run;
proc sort data=work._g1; by  aebodsys; run;
data work._g1;
  set work._g1;
  _o1 = _n_;
run;
/* [System Organ Class]: npct of AEBODSYS. */
data work._f; set work._g1; do _col = 1 to 5; output; end; run;
proc sort data=work._f; by aebodsys _col; run;
data work._pp4;
  set work._g1;
  array _px{5} _n1-_n5;
  %ls_pcounts(p=_p4, x=_px, cols=1 2, test=fisher);
  keep aebodsys _p4;
run;
proc sort data=work._pp4; by aebodsys; run;
data work._f; merge work._f(in=_in) work._pp4; by aebodsys; if _in; run;
data work._pp5;
  set work._g1;
  array _px{5} _n1-_n5;
  %ls_pcounts(p=_p5, x=_px, cols=1 3, test=fisher);
  keep aebodsys _p5;
run;
proc sort data=work._pp5; by aebodsys; run;
data work._f; merge work._f(in=_in) work._pp5; by aebodsys; if _in; run;
data work._k2;
  length _rowid $36 _label _pagelbl $200 _v $200;
  set work._f;
  array _nn{5} _n1-_n5;
  array _ee{5} _e1-_e5;
  _rowid = 'c771026b-ba2f-4925-9da2-06d4d23cede0';
  _page = 1;
  _pagelbl = '';
  _k0 = 3;
  _k1 = _o1; _k2 = 0;
  _k3 = 0; _k4 = 0;
  _label = strip(aebodsys);
  if _col = 1 then _v = strip(ifc(missing(_nn{_col}), '-', %ls_num(_nn{_col}, 0))) || ' (' || strip(ifc(missing(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .)), '-', %ls_num(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .), 1))) || '%) [' || strip(ifc(missing(_ee{_col}), '-', %ls_num(_ee{_col}, 0))) || ']';
  else if _col = 2 then _v = strip(ifc(missing(_nn{_col}), '-', %ls_num(_nn{_col}, 0))) || ' (' || strip(ifc(missing(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .)), '-', %ls_num(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .), 1))) || '%) [' || strip(ifc(missing(_ee{_col}), '-', %ls_num(_ee{_col}, 0))) || ']';
  else if _col = 3 then _v = strip(ifc(missing(_nn{_col}), '-', %ls_num(_nn{_col}, 0))) || ' (' || strip(ifc(missing(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .)), '-', %ls_num(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .), 1))) || '%) [' || strip(ifc(missing(_ee{_col}), '-', %ls_num(_ee{_col}, 0))) || ']';
  else if _col = 4 then _v = ifc(missing(_p4), '', ifc(round(sum(_p4, 0), 0.001) < 0.001, '<0.001', ifc(round(sum(_p4, 0), 0.001) > 0.999, '>0.999', strip(put(round(sum(_p4, 0), 0.001), 32.3)))));
  else if _col = 5 then _v = ifc(missing(_p5), '', ifc(round(sum(_p5, 0), 0.001) < 0.001, '<0.001', ifc(round(sum(_p5, 0), 0.001) > 0.999, '>0.999', strip(put(round(sum(_p5, 0), 0.001), 32.3)))));
  keep _rowid _label _page _pagelbl _k0 _k1 _k2 _k3 _k4 _col _v;
run;
/* Per value of aebodsys and aedecod: subjects and records per column. */
proc sort data=work._an(keep=usubjid _col aebodsys aedecod where=(not missing(aebodsys) and not missing(aedecod))) out=work._u; by aebodsys aedecod _col usubjid; run;
data work._c;
  set work._u;
  by aebodsys aedecod _col usubjid;
  retain _n _e;
  if first._col then do; _n = 0; _e = 0; end;
  _e = _e + 1;
  if first.usubjid then _n = _n + 1;
  if last._col then output;
  keep aebodsys aedecod _col _n _e;
run;
proc transpose data=work._c out=work._tn(drop=_name_) prefix=_n; by aebodsys aedecod; id _col; var _n; run;
proc transpose data=work._c out=work._te(drop=_name_) prefix=_e; by aebodsys aedecod; id _col; var _e; run;
data work._g2;
  merge work._tn work._te; by aebodsys aedecod;
  array _nn{5} _n1-_n5;
  array _ee{5} _e1-_e5;
  do _i = 1 to 5; _nn{_i} = sum(_nn{_i}, 0); _ee{_i} = sum(_ee{_i}, 0); end;
  _tot = sum(of _n1-_n5);
  drop _i;
run;
proc sort data=work._g2; by aebodsys aedecod; run;
data work._g2;
  set work._g2;
  by aebodsys;
  retain _r;
  if first.aebodsys then _r = 0;
  _r = _r + 1;
  _o2 = _r;
  drop _r;
run;
proc sort data=work._g2; by aebodsys; run;
proc sort data=work._g1(keep=aebodsys _o1) out=work._gp; by aebodsys; run;
data work._g2; merge work._g2(in=_in) work._gp; by aebodsys; if _in; run;
/* [Preferred Term]: npct of AEDECOD. */
data work._f; set work._g2; do _col = 1 to 5; output; end; run;
proc sort data=work._f; by aebodsys aedecod _col; run;
data work._pp4;
  set work._g2;
  array _px{5} _n1-_n5;
  %ls_pcounts(p=_p4, x=_px, cols=1 2, test=fisher);
  keep aebodsys aedecod _p4;
run;
proc sort data=work._pp4; by aebodsys aedecod; run;
data work._f; merge work._f(in=_in) work._pp4; by aebodsys aedecod; if _in; run;
data work._pp5;
  set work._g2;
  array _px{5} _n1-_n5;
  %ls_pcounts(p=_p5, x=_px, cols=1 3, test=fisher);
  keep aebodsys aedecod _p5;
run;
proc sort data=work._pp5; by aebodsys aedecod; run;
data work._f; merge work._f(in=_in) work._pp5; by aebodsys aedecod; if _in; run;
data work._k3;
  length _rowid $36 _label _pagelbl $200 _v $200;
  set work._f;
  array _nn{5} _n1-_n5;
  array _ee{5} _e1-_e5;
  _rowid = '640b5f49-4c1c-43a4-a9bc-25cfad1ce908';
  _page = 1;
  _pagelbl = '';
  _k0 = 3;
  _k1 = _o1; _k2 = 4;
  _k3 = _o2; _k4 = 0;
  _label = strip(aedecod);
  if _col = 1 then _v = strip(ifc(missing(_nn{_col}), '-', %ls_num(_nn{_col}, 0))) || ' (' || strip(ifc(missing(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .)), '-', %ls_num(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .), 1))) || '%) [' || strip(ifc(missing(_ee{_col}), '-', %ls_num(_ee{_col}, 0))) || ']';
  else if _col = 2 then _v = strip(ifc(missing(_nn{_col}), '-', %ls_num(_nn{_col}, 0))) || ' (' || strip(ifc(missing(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .)), '-', %ls_num(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .), 1))) || '%) [' || strip(ifc(missing(_ee{_col}), '-', %ls_num(_ee{_col}, 0))) || ']';
  else if _col = 3 then _v = strip(ifc(missing(_nn{_col}), '-', %ls_num(_nn{_col}, 0))) || ' (' || strip(ifc(missing(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .)), '-', %ls_num(ifn(input(symget(cats('_lsn', _col)), 8.) > 0, 100 * _nn{_col} / max(input(symget(cats('_lsn', _col)), 8.), 1), .), 1))) || '%) [' || strip(ifc(missing(_ee{_col}), '-', %ls_num(_ee{_col}, 0))) || ']';
  else if _col = 4 then _v = ifc(missing(_p4), '', ifc(round(sum(_p4, 0), 0.001) < 0.001, '<0.001', ifc(round(sum(_p4, 0), 0.001) > 0.999, '>0.999', strip(put(round(sum(_p4, 0), 0.001), 32.3)))));
  else if _col = 5 then _v = ifc(missing(_p5), '', ifc(round(sum(_p5, 0), 0.001) < 0.001, '<0.001', ifc(round(sum(_p5, 0), 0.001) > 0.999, '>0.999', strip(put(round(sum(_p5, 0), 0.001), 32.3)))));
  keep _rowid _label _page _pagelbl _k0 _k1 _k2 _k3 _k4 _col _v;
run;

data work._cells; set work._k1 work._k2 work._k3; run;
proc sort data=work._cells; by _page _pagelbl _k0 _k1 _k2 _k3 _k4 _rowid _label _col; run;
proc transpose data=work._cells out=work._wide(drop=_name_) prefix=col;
  by _page _pagelbl _k0 _k1 _k2 _k3 _k4 _rowid _label;
  id _col;
  var _v;
run;
proc sort data=work._wide; by _rowid; run;
proc sort data=work._shell(drop=_page _pagelbl) out=work._rows; by _rowid; run;
data work._inst;
  merge work._wide(in=_w) work._rows(in=_s);
  by _rowid;
  if _w and _s;
  if _label ne '' then rowlabel = _label;
run;
data work._fixed;
  set work._shell;
  if _rowid not in ('ad45eb45-ed50-4f13-a229-318a11291c1e' 'c771026b-ba2f-4925-9da2-06d4d23cede0' '640b5f49-4c1c-43a4-a9bc-25cfad1ce908');
  _k0 = _ord; _k1 = 0; _k2 = 0; _k3 = 0; _k4 = 0;
run;
data work.final;
  length col1 col2 col3 col4 col5 $200 _pagelbl $200;
  set work._inst work._fixed;
run;
proc sort data=work.final; by _page _k0 _k1 _k2 _k3 _k4; run;
data work.final;
  set work.final;
  _ord = _n_;
  keep _page _pagelbl _ord _indent _rowid _kind rowlabel col1 col2 col3 col4 col5;
run;

/*==== 90-report ====*/
/* 90-report: from the shell; the titles, columns, headers and footnotes are not changed here. */
%ls_need(_bign1 _bign2 _bign3);
%ls_final_check(columns=_page _pagelbl _ord _indent _rowid _kind rowlabel col1 col2 col3 col4 col5);
proc sort data=work.final out=work._report; by _page _ord; run;
data work._report;
  set work._report;
  /* Two spaces per step of indentation: the label column keeps leading spaces (asis=on). */
  if _indent > 0 then rowlabel = repeat(' ', 2 * _indent - 1) || rowlabel;
run;
%let _lspaged = 0;
proc sql noprint; select count(*) into :_lspaged trimmed from work._report where _pagelbl ne ''; quit;

options orientation=landscape;
ods listing close;
ods rtf file="/work/out/t-14-5-02.rtf" style=journal;
title1 j=l "CDISCPILOT01" j=r "Page ~{thispage} of ~{lastpage}";
title2 j=c "Table 14-5.02";
title3 j=c "Incidence of Treatment Emergent Serious Adverse Events by Treatment Group";
title4 j=c "Safety Analysis Set";
footnote1 j=l "Note: Treatment emergent events are defined as events which start on or after the start of treatment.";
footnote2 j=l "Note: Adverse events are coded using MedDRA.";
footnote3 j=l "Note: Percentages are based on the number of subjects in the safety population within each treatment group.";
footnote4 j=l "Note: P-values are based on Fisher's Exact test for the comparison of placebo versus each active treatment group.";
footnote5 j=l "Note: The column [AE] represents the total number of times an event was recorded.";
footnote6 j=l "Program: t-14-5-02.sas";
%macro _ls_report;
proc report data=work._report nowd split='|' missing style(report)={width=100%};
  column _page _pagelbl _ord _indent _kind rowlabel col1 col2 col3 ("Fisher's Exact|p-values" col4 col5);
  define _page / order order=internal noprint;
  define _pagelbl / order noprint;
  define _ord / order order=internal noprint;
  define _indent / display noprint;
  define _kind / display noprint;
  define rowlabel / display "" style(column)={cellwidth=40% asis=on} style(header)={just=l};
  define col1 / display "Placebo|(N=&_bign1.)" style(column)={cellwidth=12% just=c} style(header)={just=c};
  define col2 / display "Xanomeline Low|(N=&_bign2.)" style(column)={cellwidth=12% just=c} style(header)={just=c};
  define col3 / display "Xanomeline High|(N=&_bign3.)" style(column)={cellwidth=12% just=c} style(header)={just=c};
  define col4 / display "Placebo|vs.|Low Dose" style(column)={cellwidth=12% just=c} style(header)={just=c};
  define col5 / display "Placebo|vs.|High Dose" style(column)={cellwidth=12% just=c} style(header)={just=c};
  %if &_lspaged > 0 %then %do;
  compute before _pagelbl / style={just=l};
    line _pagelbl $200.;
  endcomp;
  %end;
  break after _page / page;
run;
%mend _ls_report;
%_ls_report;
ods rtf close;
ods listing;
%ls_final_export;