Clinwright Public work of Helper Software LLC · free Start free

14.2.7.1

Best Percent Change from Baseline in the Sum of Diameters of Target Lesions

Made 2026-10-17 from simulated data.

ONCO-EX

Figure 14.2.7.1

Best Percent Change from Baseline in the Sum of Diameters of Target Lesions

Intent-to-Treat Analysis Set

Best Percent Change from Baseline in the Sum of Diameters of Target Lesions

Each bar is a subject: the best (least) percent change from baseline in the sum of the target lesions' diameters, by the investigator.

Dashed lines: +20% (progressive disease) and -30% (partial response), RECIST 1.1.

Source: ADTR.

Program: g-14-2-7-1.sas

Program g-14-2-7-1.sas

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

/*==== 00-header ====*/
/*----------------------------------------------------------------------------
  Output  : Figure 14.2.7.1 / Best Percent Change from Baseline in the Sum of Diameters of Target Lesions / Intent-to-Treat Analysis Set
  Program : g-14-2-7-1.sas   Reporting effort : CSR
  ADaM    : /work/adam (ADSL, ADLBC, ADLBH, ADVS, ADAE, ADEG, ADCM, ADMH, ADEX, ADRS, ADTR, ADTTE)
  A waterfall plot. The sections after this header make WORK.PLOT, one record per point:
    _series   the group of the point:
                1 Standard of Care
                2 Clinwrightinib 200 mg
    _x        Subjects
    _y        Best change from baseline in the sum of diameters (%)
    _mark     1 for a mark on the line (a censored subject), optional
  Clinwright draws the figure (axes, ticks, legend, at-risk numbers) from them.
----------------------------------------------------------------------------*/
libname adam "/work/adam" access=readonly;
%include "/work/_lib/clinwright.sas";
%ls_setup;

/*==== 10-data ====*/
/* Made from the output's analysis: a bar per subject, its least PCHG (the best response), tallest first, of the records of ADTR with PARAMCD = 'SDIAM' and ANL02FL = 'Y' of the subjects of ADSL with ITTFL = 'Y', by TRT01P. */
data work._pop1; set adam.adsl(where=(ittfl = 'Y')); keep usubjid trt01p; run;
proc sort data=work._pop1; by usubjid; run;
proc sort data=adam.adtr(keep=usubjid trt01p ittfl paramcd pchg anl02fl where=(PARAMCD = 'SDIAM' and ANL02FL = 'Y')) out=work._rec; by usubjid; run;
data work._an;
  merge work._rec(in=_r drop=trt01p) work._pop1(in=_p);
  by usubjid;
  if _r and _p;
  if trt01p in ('Standard of Care') then do; _series = 1; output; end;
  if trt01p in ('Clinwrightinib 200 mg') then do; _series = 2; output; end;
run;
/* Each subject's least value in its group. */
proc sort data=work._an(keep=usubjid _series pchg where=(not missing(pchg))) out=work._wf; by _series usubjid pchg; run;
data work._wf; set work._wf; by _series usubjid; if first.usubjid; run;
proc sort data=work._wf; by descending pchg _series usubjid; run;
data work.plot;
  set work._wf;
  _x = _n_;
  _y = pchg;
  keep _series _x _y;
run;

/*==== 90-report ====*/
/* 90-report: Clinwright draws the figure from WORK.PLOT (and WORK.ATRISK) with the shell's titles, axes and footnotes. */
%ls_plot_check(columns=_series _x _y);
%ls_plot_export;