Clinwright Public work of Helper Software LLC · free Start free

ADEG

ECG Analysis Dataset

BASIC DATA STRUCTURE · one record per subject per parameter per analysis visit per analysis timepoint · keys USUBJID, PARAMCD, AVISIT

Variables

VariableLabelTypeLengthDerivation
STUDYIDStudy IdentifiertextPredecessor ADSL.STUDYID
SITEIDStudy Site IdentifiertextPredecessor ADSL.SITEID
USUBJIDUnique Subject IdentifiertextPredecessor EG.USUBJID
AGEAgeinteger8Predecessor ADSL.AGE
AGEGR1Pooled Age Group 1textPredecessor ADSL.AGEGR1
AGEGR1NPooled Age Group 1 (N)integer8Predecessor ADSL.AGEGR1N
RACERacetextPredecessor ADSL.RACE
RACENRace (N)integer8Predecessor ADSL.RACEN
SEXSextextPredecessor ADSL.SEX
SAFFLSafety Population FlagtextPredecessor ADSL.SAFFL
TRTSDTDate of First Exposure to Treatmentinteger8Predecessor ADSL.TRTSDT
TRTEDTDate of Last Exposure to Treatmentinteger8Predecessor ADSL.TRTEDT
TRTPPlanned TreatmenttextPredecessor ADSL.TRT01P
TRTPNPlanned Treatment (N)integer8Predecessor ADSL.TRT01PN
TRTAActual TreatmenttextPredecessor ADSL.TRT01A
TRTANActual Treatment (N)integer8Predecessor ADSL.TRT01AN
PARAMCDParameter CodetextPredecessor EG.EGTESTCD
PARAMParametertextPredecessor EG.EGTEST
PARAMNParameter (N)integer8Assigned Sponsor
ADTAnalysis Dateinteger8the date part of EG.EGDTC converted to a SAS date
ADYAnalysis Relative Dayinteger8Predecessor EG.EGDY
AVISITAnalysis VisittextDerived from EG.VISIT for values to be included in a per visit analysis. AVISIT is missing for values from SDTM screening visits, unscheduled visits, and event related visits, e.g. "AMBUL ECG REMOVAL", which are not included in a per visit analysis.
AVISITNAnalysis Visit (N)integer8Assigned Sponsor
AVALAnalysis Valuefloat8
BASEBaseline Valuefloat8EG.EGSTRESN where EGBLFL="Y"
BASETYPEBaseline TypetextPredecessor EG.EGTPT
CHGChange from Baselinefloat8AVAL - BASE, for post baseline records.
PCHGPercent Change from Baselinefloat8100* (CHG/BASE), for post baseline records.
VISITNUMVisit Numberfloat8Predecessor EG.VISITNUM
VISITVisit NametextPredecessor EG.VISIT
EGSEQSequence Numberinteger8Predecessor EG.EGSEQ
ANL01FLAnalysis Flag 01textANL01FL="Y" if the value is to be included in a per visit analysis. ANL01FL is missing for values from SDTM screening visits, unscheduled visits, and event related visits, e.g. "AMBUL ECG REMOVAL"
ABLFLBaseline Record FlagtextPredecessor EG.EGBLFL

Program adeg.sas

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

/*==== 00-header ====*/
/*----------------------------------------------------------------------------
  Data set : ADEG (ECG Analysis Dataset)
  Reporting effort : CSR
  SDTM     : EG
  ADaM     : ADSL
  The header and the finalize step follow from the specification.
----------------------------------------------------------------------------*/
libname sdtm "/work/sdtm" access=readonly;
libname adam "/work/adam";
options validvarname=upcase nofmterr msglevel=i;

/*==== 10-inputs ====*/
/* The EG records of the parameters PARAMCD's codelist lists, with the subject's TRTSDT, TRTEDT, STUDYID, SITEID, AGE, AGEGR1, AGEGR1N, RACE, RACEN, SEX, SAFFL, TRT01P, TRT01PN, TRT01A, TRT01AN from ADSL. */
proc sort data=sdtm.eg(keep=studyid usubjid egseq egtestcd egtest egstresn egblfl visitnum visit egdtc egdy where=(egtestcd in ('HR', 'PR', 'QRS', 'QT', 'QTCF', 'QTCB', 'RR'))) out=work._ds; by usubjid; run;
proc sort data=adam.adsl(keep=usubjid trtsdt trtedt studyid siteid age agegr1 agegr1n race racen sex saffl trt01p trt01pn trt01a trt01an) out=work._adsl; by usubjid; run;
data work._ds;
  merge work._ds(in=_in) work._adsl;
  by usubjid;
  if _in;
  length trtp $200;
  trtp = trt01p;
  trtpn = trt01pn;
  length trta $200;
  trta = trt01a;
  trtan = trt01an;
  length paramcd $200;
  paramcd = egtestcd;
  length param $200;
  select (upcase(egtestcd));
    when ('HR') param = 'Heart Rate (beats/min)';
    when ('PR') param = 'PR Interval (msec)';
    when ('QRS') param = 'QRS Duration (msec)';
    when ('QT') param = 'QT Interval (msec)';
    when ('QTCF') param = 'QTcF Interval (msec)';
    when ('QTCB') param = 'QTcB Interval (msec)';
    when ('RR') param = 'RR Interval (msec)';
    otherwise param = '';
  end;
  if param = '' then do;
  select (upcase(egtest));
    when ('HEART RATE', 'HEART RATE (BEATS/MIN)') param = 'Heart Rate (beats/min)';
    when ('PR INTERVAL', 'PR INTERVAL (MSEC)') param = 'PR Interval (msec)';
    when ('QRS DURATION', 'QRS DURATION (MSEC)') param = 'QRS Duration (msec)';
    when ('QT INTERVAL', 'QT INTERVAL (MSEC)') param = 'QT Interval (msec)';
    when ('QTCF INTERVAL', 'QTCF INTERVAL (MSEC)') param = 'QTcF Interval (msec)';
    when ('QTCB INTERVAL', 'QTCB INTERVAL (MSEC)') param = 'QTcB Interval (msec)';
    when ('RR INTERVAL', 'RR INTERVAL (MSEC)') param = 'RR Interval (msec)';
    otherwise param = egtest;
  end;
  end;
  ady = egdy;
  aval = egstresn;
  length basetype $200;
  /* EG.EGTPT is not in the data: BASETYPE stays empty. */
  length ablfl $200;
  ablfl = egblfl;
run;

/*==== 20-parameters ====*/
/* PARAMN: the code of PARAM. */
proc format;
  invalue paramn_ (upcase just)

    "HEART RATE (BEATS/MIN)" = 1

    "PR INTERVAL (MSEC)" = 2

    "QRS DURATION (MSEC)" = 3

    "QT INTERVAL (MSEC)" = 4

    "QTCF INTERVAL (MSEC)" = 5

    "QTCB INTERVAL (MSEC)" = 6

    "RR INTERVAL (MSEC)" = 7

    other = .;
run;
data work._ds;
  set work._ds;
  if param ne '' then paramn = input(param, paramn_.);
run;

/*==== 30-timing ====*/
/* ADT: EG.EGDTC as a SAS date. */
data work._ds;
  set work._ds;
  length _dtc $10;
  _dtc = egdtc; /* (its first 10 characters: SUBSTR would complain of a shorter variable) */
  if length(_dtc) = 10 then adt = input(_dtc, ?? yymmdd10.);

  format adt date9.;
  drop _dtc;
run;

/*==== 40-visits ====*/
/* AVISIT: from the scheduled visit, by its name; other visits get none. */
data work._ds;
  set work._ds;
  length avisit $40;

  select (upcase(visit));

    when ("CYCLE 1 DAY 1") do; avisitn = 0; avisit = "Baseline"; end;

    when ("WEEK 3") do; avisitn = 3; avisit = "Week 3"; end;

    when ("WEEK 6") do; avisitn = 6; avisit = "Week 6"; end;

    when ("WEEK 9") do; avisitn = 9; avisit = "Week 9"; end;

    when ("WEEK 12") do; avisitn = 12; avisit = "Week 12"; end;

    when ("WEEK 15") do; avisitn = 15; avisit = "Week 15"; end;

    when ("WEEK 18") do; avisitn = 18; avisit = "Week 18"; end;

    when ("WEEK 21") do; avisitn = 21; avisit = "Week 21"; end;

    when ("WEEK 24") do; avisitn = 24; avisit = "Week 24"; end;

    when ("WEEK 27") do; avisitn = 27; avisit = "Week 27"; end;

    when ("WEEK 30") do; avisitn = 30; avisit = "Week 30"; end;

    when ("WEEK 33") do; avisitn = 33; avisit = "Week 33"; end;

    when ("WEEK 36") do; avisitn = 36; avisit = "Week 36"; end;

    when ("WEEK 39") do; avisitn = 39; avisit = "Week 39"; end;

    when ("WEEK 42") do; avisitn = 42; avisit = "Week 42"; end;

    when ("WEEK 45") do; avisitn = 45; avisit = "Week 45"; end;

    when ("WEEK 48") do; avisitn = 48; avisit = "Week 48"; end;

    otherwise call missing(avisit, avisitn);
  end;


run;

/*==== 50-baseline ====*/
/* BASE: AVAL of the baseline record (ABLFL = 'Y'), per subject and PARAMCD, BASETYPE. */
proc sort data=work._ds; by usubjid paramcd basetype; run;
data work._base(keep=usubjid paramcd basetype base);
  set work._ds(where=(ablfl = 'Y'));
  base = aval;
run;
data work._ds;
  merge work._ds work._base;
  by usubjid paramcd basetype;
run;

/* The baseline record without an analysis visit (a screening value, the test not done on the day of the first dose): the Baseline analysis visit. */
data work._ds;
  set work._ds;
  if ablfl = 'Y' and missing(avisit) then do; avisit = 'Baseline'; avisitn = 0; _blvis = 1; end;
run;
/* (Then a record of the same subject and PARAMCD, BASETYPE at the Baseline visit that is not the baseline, the day of the first dose without a value: no analysis visit.) */
proc sort data=work._ds; by usubjid paramcd basetype descending _blvis; run;
data work._ds;
  set work._ds;
  by usubjid paramcd basetype;
  retain _blmov;
  if first.basetype then _blmov = (_blvis = 1);
  if _blmov and ablfl ne 'Y' and avisit = 'Baseline' then call missing(avisit, avisitn);
  drop _blvis _blmov;
run;

/* BASE as the data set keeps it, for what is derived from it. */
data work._ds; set work._ds; if not missing(base) then base = round(base, 1e-1); run;

/* CHG: AVAL - BASE, after baseline only. */
data work._ds;
  set work._ds;
  if nmiss(aval, base) = 0 and ablfl ne 'Y' and adt > trtsdt then chg = aval - base;
run;

/* CHG as the data set keeps it, for what is derived from it. */
data work._ds; set work._ds; if not missing(chg) then chg = round(chg, 1e-1); run;

/* PCHG: 100 * CHG / BASE, where BASE is not 0. */
data work._ds;
  set work._ds;
  if not missing(chg) and base not in (., 0) then pchg = 100 * chg / base;
run;

/*==== 60-flags ====*/
/* ANL01FL: Y on the records with an analysis visit. */
data work._ds;
  set work._ds;
  length anl01fl $1;
  if not missing(avisit) then anl01fl = 'Y';
  else anl01fl = '';
run;

/*==== 89-final ====*/
/* The data set as derived; the finalize step keeps the specification's variables. */
data work._final;
  set work._ds;
run;

/*==== 90-finalize ====*/
/* 90-finalize: from the specification; the variables, their order and attributes are not changed here. */
/* The text variables the specification gives no length: as long as their longest value (at least 1). */
%let _len1 = 1; %let _len2 = 1; %let _len3 = 1; %let _len4 = 1; %let _len5 = 1; %let _len6 = 1; %let _len7 = 1; %let _len8 = 1; %let _len9 = 1; %let _len10 = 1; %let _len11 = 1; %let _len12 = 1; %let _len13 = 1; %let _len14 = 1; %let _len15 = 1; %let _len16 = 1;
data _null_;
  length _ren _asg _siz $32767;
  _dsid = open('work._final');
  if varnum(_dsid, 'STUDYID') > 0 then do; _ren = catx(' ', _ren, 'STUDYID=_rz1'); _asg = catx(' ', _asg, 'STUDYID = _rz1;');
    _siz = catx(' ', _siz, '_len1 = max(_len1, lengthn(STUDYID));'); end;
  if varnum(_dsid, 'SITEID') > 0 then do; _ren = catx(' ', _ren, 'SITEID=_rz2'); _asg = catx(' ', _asg, 'SITEID = _rz2;');
    _siz = catx(' ', _siz, '_len2 = max(_len2, lengthn(SITEID));'); end;
  if varnum(_dsid, 'USUBJID') > 0 then do; _ren = catx(' ', _ren, 'USUBJID=_rz3'); _asg = catx(' ', _asg, 'USUBJID = _rz3;');
    _siz = catx(' ', _siz, '_len3 = max(_len3, lengthn(USUBJID));'); end;
  if varnum(_dsid, 'AGEGR1') > 0 then do; _ren = catx(' ', _ren, 'AGEGR1=_rz4'); _asg = catx(' ', _asg, 'AGEGR1 = _rz4;');
    _siz = catx(' ', _siz, '_len4 = max(_len4, lengthn(AGEGR1));'); end;
  if varnum(_dsid, 'RACE') > 0 then do; _ren = catx(' ', _ren, 'RACE=_rz5'); _asg = catx(' ', _asg, 'RACE = _rz5;');
    _siz = catx(' ', _siz, '_len5 = max(_len5, lengthn(RACE));'); end;
  if varnum(_dsid, 'SEX') > 0 then do; _ren = catx(' ', _ren, 'SEX=_rz6'); _asg = catx(' ', _asg, 'SEX = _rz6;');
    _siz = catx(' ', _siz, '_len6 = max(_len6, lengthn(SEX));'); end;
  if varnum(_dsid, 'SAFFL') > 0 then do; _ren = catx(' ', _ren, 'SAFFL=_rz7'); _asg = catx(' ', _asg, 'SAFFL = _rz7;');
    _siz = catx(' ', _siz, '_len7 = max(_len7, lengthn(SAFFL));'); end;
  if varnum(_dsid, 'TRTP') > 0 then do; _ren = catx(' ', _ren, 'TRTP=_rz8'); _asg = catx(' ', _asg, 'TRTP = _rz8;');
    _siz = catx(' ', _siz, '_len8 = max(_len8, lengthn(TRTP));'); end;
  if varnum(_dsid, 'TRTA') > 0 then do; _ren = catx(' ', _ren, 'TRTA=_rz9'); _asg = catx(' ', _asg, 'TRTA = _rz9;');
    _siz = catx(' ', _siz, '_len9 = max(_len9, lengthn(TRTA));'); end;
  if varnum(_dsid, 'PARAMCD') > 0 then do; _ren = catx(' ', _ren, 'PARAMCD=_rz10'); _asg = catx(' ', _asg, 'PARAMCD = _rz10;');
    _siz = catx(' ', _siz, '_len10 = max(_len10, lengthn(PARAMCD));'); end;
  if varnum(_dsid, 'PARAM') > 0 then do; _ren = catx(' ', _ren, 'PARAM=_rz11'); _asg = catx(' ', _asg, 'PARAM = _rz11;');
    _siz = catx(' ', _siz, '_len11 = max(_len11, lengthn(PARAM));'); end;
  if varnum(_dsid, 'AVISIT') > 0 then do; _ren = catx(' ', _ren, 'AVISIT=_rz12'); _asg = catx(' ', _asg, 'AVISIT = _rz12;');
    _siz = catx(' ', _siz, '_len12 = max(_len12, lengthn(AVISIT));'); end;
  if varnum(_dsid, 'BASETYPE') > 0 then do; _ren = catx(' ', _ren, 'BASETYPE=_rz13'); _asg = catx(' ', _asg, 'BASETYPE = _rz13;');
    _siz = catx(' ', _siz, '_len13 = max(_len13, lengthn(BASETYPE));'); end;
  if varnum(_dsid, 'VISIT') > 0 then do; _ren = catx(' ', _ren, 'VISIT=_rz14'); _asg = catx(' ', _asg, 'VISIT = _rz14;');
    _siz = catx(' ', _siz, '_len14 = max(_len14, lengthn(VISIT));'); end;
  if varnum(_dsid, 'ANL01FL') > 0 then do; _ren = catx(' ', _ren, 'ANL01FL=_rz15'); _asg = catx(' ', _asg, 'ANL01FL = _rz15;');
    _siz = catx(' ', _siz, '_len15 = max(_len15, lengthn(ANL01FL));'); end;
  if varnum(_dsid, 'ABLFL') > 0 then do; _ren = catx(' ', _ren, 'ABLFL=_rz16'); _asg = catx(' ', _asg, 'ABLFL = _rz16;');
    _siz = catx(' ', _siz, '_len16 = max(_len16, lengthn(ABLFL));'); end;
  _rc = close(_dsid);
  if _ren ne '' then _ren = cats('(rename=(', _ren, '))');
  call symputx('_ren', _ren);
  call symputx('_asg', _asg);
  call symputx('_siz', _siz);
run;
data _null_;
  set work._final end=_end;
  retain _len1 1 _len2 1 _len3 1 _len4 1 _len5 1 _len6 1 _len7 1 _len8 1 _len9 1 _len10 1 _len11 1 _len12 1 _len13 1 _len14 1 _len15 1 _len16 1;
  &_siz
  if _end then do;
    call symputx('_len1', _len1);
    call symputx('_len2', _len2);
    call symputx('_len3', _len3);
    call symputx('_len4', _len4);
    call symputx('_len5', _len5);
    call symputx('_len6', _len6);
    call symputx('_len7', _len7);
    call symputx('_len8', _len8);
    call symputx('_len9', _len9);
    call symputx('_len10', _len10);
    call symputx('_len11', _len11);
    call symputx('_len12', _len12);
    call symputx('_len13', _len13);
    call symputx('_len14', _len14);
    call symputx('_len15', _len15);
    call symputx('_len16', _len16);
  end;
run;
data adam.adeg(label="ECG Analysis Dataset");
  attrib
    STUDYID  length=$&_len1 label="Study Identifier"
    SITEID   length=$&_len2 label="Study Site Identifier"
    USUBJID  length=$&_len3 label="Unique Subject Identifier"
    AGE      length=8 label="Age"
    AGEGR1   length=$&_len4 label="Pooled Age Group 1"
    AGEGR1N  length=8 label="Pooled Age Group 1 (N)"
    RACE     length=$&_len5 label="Race"
    RACEN    length=8 label="Race (N)"
    SEX      length=$&_len6 label="Sex"
    SAFFL    length=$&_len7 label="Safety Population Flag"
    TRTSDT   length=8 label="Date of First Exposure to Treatment" format=DATE9.
    TRTEDT   length=8 label="Date of Last Exposure to Treatment" format=DATE9.
    TRTP     length=$&_len8 label="Planned Treatment"
    TRTPN    length=8 label="Planned Treatment (N)"
    TRTA     length=$&_len9 label="Actual Treatment"
    TRTAN    length=8 label="Actual Treatment (N)"
    PARAMCD  length=$&_len10 label="Parameter Code"
    PARAM    length=$&_len11 label="Parameter"
    PARAMN   length=8 label="Parameter (N)"
    ADT      length=8 label="Analysis Date" format=DATE9.
    ADY      length=8 label="Analysis Relative Day"
    AVISIT   length=$&_len12 label="Analysis Visit"
    AVISITN  length=8 label="Analysis Visit (N)"
    AVAL     length=8 label="Analysis Value"
    BASE     length=8 label="Baseline Value"
    BASETYPE length=$&_len13 label="Baseline Type"
    CHG      length=8 label="Change from Baseline"
    PCHG     length=8 label="Percent Change from Baseline"
    VISITNUM length=8 label="Visit Number"
    VISIT    length=$&_len14 label="Visit Name"
    EGSEQ    length=8 label="Sequence Number"
    ANL01FL  length=$&_len15 label="Analysis Flag 01"
    ABLFL    length=$&_len16 label="Baseline Record Flag"
  ;
  set work._final&_ren;
  &_asg
  if not missing(AVAL) then AVAL = round(AVAL, 1e-1);
  if not missing(BASE) then BASE = round(BASE, 1e-1);
  if not missing(CHG) then CHG = round(CHG, 1e-1);
  if not missing(PCHG) then PCHG = round(PCHG, 1e-1);
  if not missing(VISITNUM) then VISITNUM = round(VISITNUM, 1e-1);
  keep STUDYID SITEID USUBJID AGE AGEGR1 AGEGR1N RACE RACEN SEX SAFFL TRTSDT TRTEDT TRTP TRTPN TRTA TRTAN PARAMCD PARAM PARAMN ADT ADY AVISIT AVISITN AVAL BASE BASETYPE CHG PCHG VISITNUM VISIT EGSEQ ANL01FL ABLFL;
run;
proc sort data=adam.adeg; by USUBJID PARAMCD AVISIT; run;

Data (first 20 of 6,915 records, simulated)

STUDYIDSITEIDUSUBJIDAGEAGEGR1AGEGR1NRACERACENSEXSAFFLTRTSDTTRTEDTTRTPTRTPNTRTATRTANPARAMCDPARAMPARAMNADTADYAVISITAVISITNAVALBASEBASETYPECHGPCHGVISITNUMVISITEGSEQANL01FLABLFL
ONCO-EXONCO-EX-701001HRHeart Rate (beats/min)12022-01-25801SCREENING1
ONCO-EXONCO-EX-701001PRPR Interval (msec)22022-01-251571SCREENING3
ONCO-EXONCO-EX-701001QRSQRS Duration (msec)32022-01-25851SCREENING4
ONCO-EXONCO-EX-701001QTQT Interval (msec)42022-01-254511SCREENING5
ONCO-EXONCO-EX-701001QTCFQTcF Interval (msec)52022-01-254181SCREENING6
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1HRHeart Rate (beats/min)12022-02-09-368861SCREENING1
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1HRHeart Rate (beats/min)12022-12-123046386-23-26.790END OF TREATMENT6
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1HRHeart Rate (beats/min)12022-02-121Baseline086862CYCLE 1 DAY 12YY
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1HRHeart Rate (beats/min)12022-05-1189Week 12128486-2-2.36WEEK 123Y
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1HRHeart Rate (beats/min)12022-08-02172Week 24248386-3-3.510WEEK 244Y
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1HRHeart Rate (beats/min)12022-10-24255Week 36368086-6-714WEEK 365Y
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1PRPR Interval (msec)22022-02-09-31451461SCREENING13
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1PRPR Interval (msec)22022-12-12304133146-13-8.990END OF TREATMENT18
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1PRPR Interval (msec)22022-02-121Baseline01461462CYCLE 1 DAY 114YY
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1PRPR Interval (msec)22022-05-1189Week 121215014642.76WEEK 1215Y
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1PRPR Interval (msec)22022-08-02172Week 2424131146-15-10.310WEEK 2416Y
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1PRPR Interval (msec)22022-10-24255Week 3636158146128.214WEEK 3617Y
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1QRSQRS Duration (msec)32022-02-09-371831SCREENING19
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1QRSQRS Duration (msec)32022-12-12304898367.290END OF TREATMENT24
ONCO-EX701ONCO-EX-70100257<651WHITE1FY2022-02-122022-12-10Standard of Care1Standard of Care1QRSQRS Duration (msec)32022-02-121Baseline083832CYCLE 1 DAY 120YY