ADSL
Subject-Level Analysis
SUBJECT LEVEL ANALYSIS DATASET · one record per subject · keys USUBJID
Variables
| Variable | Label | Type | Length | Derivation |
|---|---|---|---|---|
STUDYID | Study Identifier | text | Predecessor DM.STUDYID | |
USUBJID | Unique Subject Identifier | text | Predecessor DM.USUBJID | |
SUBJID | Subject Identifier for the Study | text | Predecessor DM.SUBJID | |
SITEID | Study Site Identifier | text | Predecessor DM.SITEID | |
SITEGR1 | Pooled Site Group 1 | text | Refer to SAP, Section 7.1. If not pooled then SITEGR1=SITEID. If pooled, SITEGR1 will be 900 | |
ARM | Description of Planned Arm | text | Predecessor DM.ARM | |
TRT01P | Planned Treatment for Period 01 | text | Predecessor DM.ARM | |
TRT01PN | Planned Treatment for Period 01 (N) | integer | 8 | Numeric code for TRT01P which corresponds to the randomized dose |
TRT01A | Actual Treatment for Period 01 | text | TRT01A=TRT01P, i.e., no difference between actual and randomized treatment in this study. | |
TRT01AN | Actual Treatment for Period 01 (N) | integer | 8 | Numeric code for TRT01A which corresponds to the randomized dose |
TRTSDT | Date of First Exposure to Treatment | integer | 8 | SV.SVSTDTC when SV.VISITNUM=3, converted to SAS date |
TRTEDT | Date of Last Exposure to Treatment | integer | 8 | The date of final dose (from the CRF) is EX.EXENDTC on the subject's last EX record. If the date of final dose is missing for the subject and the subject discontinued after visit 3, use the date of discontinuation as the date of last dose. Convert the date to a SAS date. |
TRTDURD | Total Treatment Duration (Days) | integer | 8 | TRTEDT-TRTSDT+1 |
AVGDD | Avg Daily Dose (as planned) | float | 8 | CUMDOSE/TRTDURD |
CUMDOSE | Cumulative Dose (as planned) | float | 8 | For ARMN=0 or 1: CUMDOSE=TRT01PN*TRTDURD. --- For ARMN=2: CUMDOSE will be based on 54mg per day for the # of days subj was in 1st dosing interval (i.e., visit4date-TRTSTDT+1 if 1st interval completed, TRTEDT-TRTSTDT+1 if subj discontinued <=visit 4 and > visit 3), 81mg per day for the # of days subj was in 2nd dosing interval (i.e., visit12date-visit4date if 2nd interval completed, TRTEDT-visit4date if subj discontinued <= visit 12 and > visit 4), and 54mg per day for the # of days subj was in 3rd dosing interval (i.e., TRTEDT - visit12date if subj continued after visit 12). |
AGE | Age | integer | 8 | Predecessor DM.AGE |
AGEGR1 | Pooled Age Group 1 | text | Character variable derived from ADSL.AGEGR1N | |
AGEGR1N | Pooled Age Group 1 (N) | integer | 8 | AGEGR1 = 1 if AGE <65. AGEGR1 = 2 if AGE 65-80. AGEGR1 = 3 if AGE >80. |
AGEU | Age Units | text | Predecessor DM.AGEU | |
RACE | Race | text | Predecessor DM.RACE | |
RACEN | Race (N) | integer | 8 | Numeric code for RACE |
SEX | Sex | text | Predecessor DM.SEX | |
ETHNIC | Ethnicity | text | Predecessor DM.ETHNIC | |
SAFFL | Safety Population Flag | text | Y if ITTFL='Y' and TRTSDT ne missing. N otherwise | |
ITTFL | Intent-To-Treat Population Flag | text | Y if ARMCD ne ' '. N otherwise | |
EFFFL | Efficacy Population Flag | text | Y if SAFFL='Y AND subject has at least one record in QS for ADAS-Cog with VISITNUM>3 AND at least one record in QS for CIBIC+ with VISITNUM>3. N otherwise | |
COMP8FL | Completers of Week 8 Population Flag | text | Y if subject has a SV.VISITNUM=8 and ENDDT >= date of visit 8, N otherwise | |
COMP16FL | Completers of Week 16 Population Flag | text | Y if subject has a SV.VISITNUM=10 and ENDDT>=date of visit 10, N otherwise | |
COMP24FL | Completers of Week 24 Population Flag | text | Y if subject has a SV.VISITNUM=12 and ENDDT>= date of visit 12 , N otherwise | |
DISCONFL | Did the Subject Discontinue the Study? | text | Y if EOSSTT='DISCONTINUED'. Null otherwise | |
DSRAEFL | Discontinued due to AE? | text | Y if DCSREAS='Adverse Event'. Null otherwise | |
DTHFL | Subject Died? | text | Predecessor DM.DTHFL | |
BMIBL | Baseline BMI (kg/m^2) | float | 8 | WEIGHTBL / ((HEIGHTBL*100)**2) |
BMIBLGR1 | Pooled Baseline BMI Group 1 | text | BMIBLGR1=Normal if . < BMIBL <25. BMIBLGR1=Overweight if 25 <=BMIBL <30. BMIBLGR1=Obese if BMIBL >=30. | |
HEIGHTBL | Baseline Height (cm) | float | 8 | VSSTRESN when VS.VSTESTCD='HEIGHT' and VS.VISITNUM=1 |
WEIGHTBL | Baseline Weight (kg) | float | 8 | VSSTRESN when VS.VSTESTCD='WEIGHT' and VS.VISITNUM=3 |
EDUCLVL | Years of Education | integer | 8 | SC.SCSTRESN where SC.SCTESTCD=YEARSEDU |
DISONSDT | Date of Onset of Disease | integer | 8 | MH.MHSTDTC where MHCAT='PRIMARY DIAGNOSIS' converted to SAS date |
DURDIS | Duration of Disease (Months) | float | 8 | number of months between VISIT1DT and DISONSET |
DURDSGR1 | Pooled Disease Duration Group 1 | text | grouping DURDIS values as <12 and >=12 | |
VISIT1DT | Date of Visit 1 | integer | 8 | SV.SVSTDTC when SV.VISITNUM=1, converted to SAS date |
RFSTDTC | Subject Reference Start Date/Time | datetime | Predecessor DM.RFSTDTC | |
RFENDTC | Subject Reference End Date/Time | datetime | Predecessor DM.RFENDTC | |
VISNUMEN | End of Trt Visit (Vis 12 or Early Term.) | integer | 8 | if DS.VISITNUM=13 where DSTERM='PROTCOL COMPLETED' then VISNUMEN=12, otherwise VISNUMEN=DS.VISITNUM where DSTERM='PROTCOL COMPLETED' |
RFENDT | Date of Discontinuation/Completion | integer | 8 | RFENDTC converted to SAS date |
DCDECOD | Standardized Disposition Term | text | DS.DSDECOD where DSCAT='DISPOSITION EVENT' | |
EOSSTT | End of Study Status | text | COMPLETED if ADSL.DCDECOD='COMPLETED'. DISCONTINUED if ADSL.DCDECOD not equal to COMPLETED. | |
DCSREAS | Reason for Discontinuation from Study | text | Grouping of DCDECOD values to support summarizing study completion status and reason for discontinuation | |
MMSETOT | MMSE Total | integer | 8 | Sum of QS.QSSTRESN for the subject, where QSCAT = 'MINI-MENTAL STATE'. |
Program adsl.sas
Version 1, written from Clinwright's patterns, 2026-10-17, checks passed.
/*==== 00-header ====*/
/*----------------------------------------------------------------------------
Data set : ADSL (Subject-Level Analysis)
Reporting effort : CSR
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 ====*/
/* One record per subject of DM assigned an arm (not a screen failure: ARMCD neither SCRNFAIL nor NOTASSGN), with DM's variables. */
data work._ds;
set sdtm.dm(where=(upcase(armcd) not in ('SCRNFAIL', 'NOTASSGN', '')));
length trt01p $200;
trt01p = arm;
run;
/* TRT01A: DM.ARM. */
data work._ds;
set work._ds;
length trt01a $200;
trt01a = arm;
run;
/* TRTSDT: SV.SVSTDTC of the subject's first SV record where VISITNUM=3. */
proc sort data=sdtm.sv(where=(VISITNUM=3)) out=work._trtsdt;
by usubjid svstdtc;
run;
data work._trtsdt(keep=usubjid trtsdt);
set work._trtsdt;
by usubjid;
if first.usubjid;
trtsdt = input(substr(svstdtc, 1, 10), ?? yymmdd10.);
format trtsdt date9.;
run;
data work._ds;
merge work._ds(in=_in) work._trtsdt;
by usubjid;
if _in;
run;
/* HEIGHTBL: VS.VSSTRESN of the subject's first VS record where VSTESTCD='HEIGHT' and VISITNUM=1. */
proc sort data=sdtm.vs(where=(VSTESTCD='HEIGHT' and VISITNUM=1)) out=work._heightbl;
by usubjid ;
run;
data work._heightbl(keep=usubjid heightbl);
set work._heightbl;
by usubjid;
if first.usubjid;
heightbl = vsstresn;
run;
data work._ds;
merge work._ds(in=_in) work._heightbl;
by usubjid;
if _in;
run;
/* HEIGHTBL as the data set keeps it, for what is derived from it. */
data work._ds; set work._ds; if not missing(heightbl) then heightbl = round(heightbl, 1e-1); run;
/* WEIGHTBL: VS.VSSTRESN of the subject's first VS record where VSTESTCD='WEIGHT' and VISITNUM=3. */
proc sort data=sdtm.vs(where=(VSTESTCD='WEIGHT' and VISITNUM=3)) out=work._weightbl;
by usubjid ;
run;
data work._weightbl(keep=usubjid weightbl);
set work._weightbl;
by usubjid;
if first.usubjid;
weightbl = vsstresn;
run;
data work._ds;
merge work._ds(in=_in) work._weightbl;
by usubjid;
if _in;
run;
/* WEIGHTBL as the data set keeps it, for what is derived from it. */
data work._ds; set work._ds; if not missing(weightbl) then weightbl = round(weightbl, 1e-1); run;
/* EDUCLVL: SC.SCSTRESN of the subject's first SC record where SCTESTCD = 'EDLEVEL'. */
proc sort data=sdtm.sc(where=(SCTESTCD = 'EDLEVEL')) out=work._educlvl;
by usubjid ;
run;
data work._educlvl(keep=usubjid educlvl);
set work._educlvl;
by usubjid;
if first.usubjid;
educlvl = scstresn;
run;
data work._ds;
merge work._ds(in=_in) work._educlvl;
by usubjid;
if _in;
run;
/* DISONSDT: MH.MHSTDTC of the subject's first MH record where MHCAT='PRIMARY DIAGNOSIS'. */
proc sort data=sdtm.mh(where=(MHCAT='PRIMARY DIAGNOSIS')) out=work._disonsdt;
by usubjid mhstdtc;
run;
data work._disonsdt(keep=usubjid disonsdt);
set work._disonsdt;
by usubjid;
if first.usubjid;
disonsdt = input(substr(mhstdtc, 1, 10), ?? yymmdd10.);
format disonsdt date9.;
run;
data work._ds;
merge work._ds(in=_in) work._disonsdt;
by usubjid;
if _in;
run;
/* VISIT1DT: SV.SVSTDTC of the subject's first SV record where VISITNUM=1. */
proc sort data=sdtm.sv(where=(VISITNUM=1)) out=work._visit1dt;
by usubjid svstdtc;
run;
data work._visit1dt(keep=usubjid visit1dt);
set work._visit1dt;
by usubjid;
if first.usubjid;
visit1dt = input(substr(svstdtc, 1, 10), ?? yymmdd10.);
format visit1dt date9.;
run;
data work._ds;
merge work._ds(in=_in) work._visit1dt;
by usubjid;
if _in;
run;
/* DCDECOD: DS.DSDECOD of the subject's first DS record where DSCAT='DISPOSITION EVENT'. */
proc sort data=sdtm.ds(where=(DSCAT='DISPOSITION EVENT')) out=work._dcdecod;
by usubjid ;
run;
data work._dcdecod(keep=usubjid dcdecod);
set work._dcdecod;
by usubjid;
if first.usubjid;
dcdecod = dsdecod;
run;
data work._ds;
merge work._ds(in=_in) work._dcdecod;
by usubjid;
if _in;
run;
/*==== 20-parameters ====*/
/* TRT01PN: the code of TRT01P. */
proc format;
invalue trt01pn_ (upcase just)
"PLACEBO" = 0
"XANOMELINE LOW DOSE" = 54
"XANOMELINE HIGH DOSE" = 81
other = .;
run;
data work._ds;
set work._ds;
if trt01p ne '' then trt01pn = input(trt01p, trt01pn_.);
run;
/* TRT01AN: the code of TRT01A. */
proc format;
invalue trt01an_ (upcase just)
"PLACEBO" = 0
"XANOMELINE LOW DOSE" = 54
"XANOMELINE HIGH DOSE" = 81
other = .;
run;
data work._ds;
set work._ds;
if trt01a ne '' then trt01an = input(trt01a, trt01an_.);
run;
/* RACEN: the code of RACE. */
proc format;
invalue racen_ (upcase just)
"WHITE" = 1
"BLACK OR AFRICAN AMERICAN" = 2
"AMERICAN INDIAN OR ALASKA NATIVE" = 6
"ASIAN" = 7
other = .;
run;
data work._ds;
set work._ds;
if race ne '' then racen = input(race, racen_.);
run;
/*==== 30-timing ====*/
/* TRTEDT: the last EX.EXENDTC of records where EXDOSE > 0 or (EXDOSE = 0 and (index(upcase(EXTRT), 'PLACEBO') > 0 or index(upcase(EXTRT), 'VEHICLE') > 0)); when the last record (by its start) has no end, the date of the disposition event. */
data work._ex;
set sdtm.ex(where=(EXDOSE > 0 or (EXDOSE = 0 and (index(upcase(EXTRT), 'PLACEBO') > 0 or index(upcase(EXTRT), 'VEHICLE') > 0))));
_st = input(substr(exstdtc, 1, 10), ?? yymmdd10.);
_en = input(substr(exendtc, 1, 10), ?? yymmdd10.);
if _st > . or _en > .;
keep usubjid _st _en;
run;
proc sort data=work._ex; by usubjid _st _en; run;
proc sort data=sdtm.ds(where=(dscat = 'DISPOSITION EVENT')) out=work._dsend(keep=usubjid dsstdtc);
by usubjid dsstdtc;
run;
data work._dsend(keep=usubjid _dsdt);
set work._dsend;
by usubjid;
if last.usubjid;
_dsdt = input(substr(dsstdtc, 1, 10), ?? yymmdd10.);
run;
data work._trtedt(keep=usubjid trtedt);
merge work._ex(in=_e) work._dsend;
by usubjid;
if _e;
retain _last;
if first.usubjid then _last = .;
_last = max(_last, coalesce(_en, _st));
if last.usubjid then do;
trtedt = ifn(_en = . and _dsdt > ., _dsdt, _last);
output;
end;
format trtedt date9.;
run;
data work._ds;
merge work._ds(in=_in) work._trtedt;
by usubjid;
if _in;
run;
/* TRTDURD: from TRTSDT to TRTEDT, in days, both days counted. */
data work._ds;
set work._ds;
if nmiss(trtsdt, trtedt) = 0 then trtdurd = (trtedt - trtsdt + 1);
run;
/* DURDIS: from DISONSDT to VISIT1DT, in months, both days counted. */
data work._ds;
set work._ds;
if nmiss(disonsdt, visit1dt) = 0 then durdis = (visit1dt - disonsdt + 1) / 30.4375;
run;
/* DURDIS as the data set keeps it, for what is derived from it. */
data work._ds; set work._ds; if not missing(durdis) then durdis = round(durdis, 1e-1); run;
/* RFENDT: DM.RFENDTC as a SAS date. */
data work._ds;
set work._ds;
length _dtc $10;
_dtc = rfendtc; /* (its first 10 characters: SUBSTR would complain of a shorter variable) */
if length(_dtc) = 10 then rfendt = input(_dtc, ?? yymmdd10.);
format rfendt date9.;
drop _dtc;
run;
/*==== 60-flags ====*/
/* SITEGR1: SITEID, or "900" for a site with fewer than 3 subjects in any TRT01P group. */
proc sql noprint;
select count(distinct trt01p) into :_ls_groups trimmed from work._ds where not missing(trt01p);
create table work._sitegr1 as
select siteid, trt01p, count(*) as _n
from work._ds
where not missing(trt01p)
group by siteid, trt01p
order by siteid, trt01p;
quit;
data work._sitegr1(keep=siteid _pooled);
set work._sitegr1;
by siteid;
retain _groups _few;
if first.siteid then do;
_groups = 0;
_few = 0;
end;
_groups + 1;
if _n < 3 then _few = 1;
if last.siteid then do;
_pooled = (_few or _groups < &_ls_groups);
output;
end;
run;
proc sort data=work._ds; by siteid; run;
data work._ds;
merge work._ds(in=_in) work._sitegr1;
by siteid;
if _in;
length sitegr1 $8;
if _pooled then sitegr1 = "900";
else sitegr1 = siteid;
drop _pooled;
run;
proc sort data=work._ds; by usubjid; run;
/* CUMDOSE: the sum over EX records of EXDOSE times the record's days (EXSTDTC to EXENDTC, both counted; TRTEDT for a record without an end). */
proc sort data=sdtm.ex out=work._ex(keep=usubjid exdose exstdtc exendtc);
by usubjid;
run;
data work._cumdose(keep=usubjid _dose);
merge work._ds(in=_in keep=usubjid trtedt) work._ex(in=_ex);
by usubjid;
if _in and _ex;
_st = input(substr(exstdtc, 1, 10), ?? yymmdd10.);
_en = coalesce(input(substr(exendtc, 1, 10), ?? yymmdd10.), trtedt);
if nmiss(_st, _en, exdose) = 0 and _en >= _st then _dose = exdose * (_en - _st + 1);
run;
proc means data=work._cumdose noprint nway;
class usubjid;
var _dose;
output out=work._cumdose(keep=usubjid cumdose) sum=cumdose;
run;
data work._ds;
merge work._ds(in=_in) work._cumdose;
by usubjid;
if _in;
run;
/* CUMDOSE as the data set keeps it, for what is derived from it. */
data work._ds; set work._ds; if not missing(cumdose) then cumdose = round(cumdose, 1e-1); run;
/* AGEGR1: the group of AGE. */
data work._ds;
set work._ds;
length agegr1 $40;
if missing(age) then call missing(agegr1);
else if age < 65 then agegr1 = "<65";
else if age >= 65 and age <= 80 then agegr1 = "65-80";
else if age > 80 then agegr1 = ">80";
run;
/* AGEGR1N: the group of AGE. */
data work._ds;
set work._ds;
if missing(age) then call missing(agegr1n);
else if age < 65 then agegr1n = 1;
else if age >= 65 and age <= 80 then agegr1n = 2;
else if age > 80 then agegr1n = 3;
run;
/* ITTFL: Y if ARMCD ne ' '; otherwise N. */
data work._ds;
set work._ds;
length ittfl $1;
if ARMCD ne ' ' then ittfl = 'Y';
else ittfl = 'N';
run;
/* SAFFL: Y if ITTFL='Y' and not missing(TRTSDT); otherwise N. */
data work._ds;
set work._ds;
length saffl $1;
if ITTFL='Y' and not missing(TRTSDT) then saffl = 'Y';
else saffl = 'N';
run;
/* EFFFL: Y if the subject has a QS record where QSTEST = 'ADAS-COG(11) Subscore' and VISITNUM>3, and a QS record where QSCAT = 'CLINICIAN''S INTERVIEW-BASED IMPRESSION OF CHANGE (CIBIC+)' and VISITNUM>3, and SAFFL='Y'. */
proc sort data=sdtm.qs(where=(QSTEST = 'ADAS-COG(11) Subscore' and VISITNUM>3)) out=work._efffl(keep=usubjid) nodupkey;
by usubjid;
run;
proc sort data=sdtm.qs(where=(QSCAT = 'CLINICIAN''S INTERVIEW-BASED IMPRESSION OF CHANGE (CIBIC+)' and VISITNUM>3)) out=work._efffl2(keep=usubjid) nodupkey;
by usubjid;
run;
data work._ds;
merge work._ds(in=_in) work._efffl(in=_has) work._efffl2(in=_has2);
by usubjid;
if _in;
length efffl $1;
efffl = ifc(_has and _has2 and (SAFFL='Y'), 'Y', 'N');
run;
/* COMP8FL: Y if the subject has a SV record where VISITNUM=8. */
proc sort data=sdtm.sv(where=(VISITNUM=8)) out=work._comp8fl(keep=usubjid) nodupkey;
by usubjid;
run;
data work._ds;
merge work._ds(in=_in) work._comp8fl(in=_has);
by usubjid;
if _in;
length comp8fl $1;
comp8fl = ifc(_has, 'Y', 'N');
run;
/* COMP16FL: Y if the subject has a SV record where VISITNUM=10. */
proc sort data=sdtm.sv(where=(VISITNUM=10)) out=work._comp16fl(keep=usubjid) nodupkey;
by usubjid;
run;
data work._ds;
merge work._ds(in=_in) work._comp16fl(in=_has);
by usubjid;
if _in;
length comp16fl $1;
comp16fl = ifc(_has, 'Y', 'N');
run;
/* COMP24FL: Y if the subject has a SV record where VISITNUM=12. */
proc sort data=sdtm.sv(where=(VISITNUM=12)) out=work._comp24fl(keep=usubjid) nodupkey;
by usubjid;
run;
data work._ds;
merge work._ds(in=_in) work._comp24fl(in=_has);
by usubjid;
if _in;
length comp24fl $1;
comp24fl = ifc(_has, 'Y', 'N');
run;
/* BMIBL: WEIGHTBL / (HEIGHTBL/100)**2. */
data work._ds;
set work._ds;
if weightbl > 0 and heightbl > 0 then bmibl = weightbl / (heightbl / 100)**2;
run;
/* BMIBL as the data set keeps it, for what is derived from it. */
data work._ds; set work._ds; if not missing(bmibl) then bmibl = round(bmibl, 1e-1); run;
/* BMIBLGR1: the group of BMIBL. */
data work._ds;
set work._ds;
length bmiblgr1 $40;
if missing(bmibl) then call missing(bmiblgr1);
else if bmibl < 25 then bmiblgr1 = "<25";
else if bmibl >= 25 and bmibl < 30 then bmiblgr1 = "25-<30";
else if bmibl >= 30 then bmiblgr1 = ">=30";
run;
/* DURDSGR1: the group of DURDIS. */
data work._ds;
set work._ds;
length durdsgr1 $40;
if missing(durdis) then call missing(durdsgr1);
else if durdis < 12 then durdsgr1 = "<12";
else if durdis >= 12 then durdsgr1 = ">=12";
run;
/* EOSSTT: from the subject's DS record where DSCAT = 'DISPOSITION EVENT'. */
/* The subject's last such event (a subject may have several). */
proc sort data=sdtm.ds(where=(dscat = 'DISPOSITION EVENT'))
out=work._eosstt(keep=usubjid dsstdtc dsdecod);
by usubjid dsstdtc;
run;
data work._eosstt(keep=usubjid _decod);
set work._eosstt;
by usubjid;
if last.usubjid;
_decod = dsdecod;
run;
data work._ds;
merge work._ds(in=_in) work._eosstt;
by usubjid;
if _in;
length eosstt $20;
if _decod = 'COMPLETED' then eosstt = 'COMPLETED';
else if _decod ne '' then eosstt = 'DISCONTINUED';
else eosstt = 'ONGOING';
drop _decod;
run;
/* DCSREAS: the reason the subject did not complete (DSDECOD of DSCAT = 'DISPOSITION EVENT'). */
/* The subject's last such event (a subject may have several). */
proc sort data=sdtm.ds(where=(dscat = 'DISPOSITION EVENT')) out=work._dcsreas(keep=usubjid dsstdtc dsdecod);
by usubjid dsstdtc;
run;
data work._dcsreas(keep=usubjid dcsreas);
set work._dcsreas;
by usubjid;
if last.usubjid and dsdecod ne 'COMPLETED';
length dcsreas $200;
select (upcase(dsdecod));
when ("COMPLETED") dcsreas = "Completed";
when ("ADVERSE EVENT") dcsreas = "Adverse Event";
when ("DEATH") dcsreas = "Death";
when ("I/E NOT MET") dcsreas = "I/E Not Met";
when ("LACK OF EFFICACY") dcsreas = "Lack of Efficacy";
when ("LOST TO FOLLOW-UP") dcsreas = "Lost to Follow-up";
when ("PHYSICIAN DECISION") dcsreas = "Physician Decision";
when ("PROTOCOL VIOLATION") dcsreas = "Protocol Violation";
when ("SPONSOR DECISION") dcsreas = "Sponsor Decision";
when ("WITHDREW CONSENT") dcsreas = "Withdrew Consent";
when ("NON-COMPLIANCE WITH STUDY DRUG") dcsreas = "Completed";
when ("PROTOCOL DEVIATION") dcsreas = "Protocol Violation";
when ("SITE TERMINATED BY SPONSOR") dcsreas = "Sponsor Decision";
when ("STUDY TERMINATED BY SPONSOR") dcsreas = "Sponsor Decision";
when ("WITHDRAWAL BY PARENT/GUARDIAN") dcsreas = "Withdrew Consent";
when ("WITHDRAWAL BY SUBJECT") dcsreas = "Withdrew Consent";
otherwise dcsreas = dsdecod;
end;
run;
data work._ds;
merge work._ds(in=_in) work._dcsreas;
by usubjid;
if _in;
run;
/* MMSETOT: sum of QS.QSSTRESN where QSCAT = 'MINI-MENTAL STATE', by subject. */
proc means data=sdtm.qs(where=(QSCAT = 'MINI-MENTAL STATE')) noprint nway;
class usubjid;
var qsstresn;
output out=work._mmsetot(keep=usubjid mmsetot) sum=mmsetot;
run;
data work._ds;
merge work._ds(in=_in) work._mmsetot;
by usubjid;
if _in;
run;
/*==== 70-other ====*/
/* AVGDD = CUMDOSE/TRTDURD. */
data work._ds;
set work._ds;
if nmiss(cumdose, trtdurd) = 0 then avgdd = CUMDOSE/TRTDURD;
run;
/* VISNUMEN (End of Trt Visit (Vis 12 or Early Term.)): if DS.VISITNUM=13 where DSTERM='PROTCOL COMPLETED' then VISNUMEN=12, otherwise VISNUMEN=DS.VISITNUM where DSTERM='PROTCOL COMPLETED' -- to write. */
/* DISCONFL: Y if EOSSTT='DISCONTINUED'; Null otherwise. */
data work._ds;
set work._ds;
length disconfl $4;
if EOSSTT='DISCONTINUED' then disconfl = "Y";
else disconfl = "Null";
run;
/* DSRAEFL: Y if DCSREAS='Adverse Event'; Null otherwise. */
data work._ds;
set work._ds;
length dsraefl $4;
if DCSREAS='Adverse Event' then dsraefl = "Y";
else dsraefl = "Null";
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; %let _len17 = 1; %let _len18 = 1; %let _len19 = 1; %let _len20 = 1; %let _len21 = 1; %let _len22 = 1; %let _len23 = 1; %let _len24 = 1; %let _len25 = 1; %let _len26 = 1; %let _len27 = 1; %let _len28 = 1; %let _len29 = 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, 'USUBJID') > 0 then do; _ren = catx(' ', _ren, 'USUBJID=_rz2'); _asg = catx(' ', _asg, 'USUBJID = _rz2;');
_siz = catx(' ', _siz, '_len2 = max(_len2, lengthn(USUBJID));'); end;
if varnum(_dsid, 'SUBJID') > 0 then do; _ren = catx(' ', _ren, 'SUBJID=_rz3'); _asg = catx(' ', _asg, 'SUBJID = _rz3;');
_siz = catx(' ', _siz, '_len3 = max(_len3, lengthn(SUBJID));'); end;
if varnum(_dsid, 'SITEID') > 0 then do; _ren = catx(' ', _ren, 'SITEID=_rz4'); _asg = catx(' ', _asg, 'SITEID = _rz4;');
_siz = catx(' ', _siz, '_len4 = max(_len4, lengthn(SITEID));'); end;
if varnum(_dsid, 'SITEGR1') > 0 then do; _ren = catx(' ', _ren, 'SITEGR1=_rz5'); _asg = catx(' ', _asg, 'SITEGR1 = _rz5;');
_siz = catx(' ', _siz, '_len5 = max(_len5, lengthn(SITEGR1));'); end;
if varnum(_dsid, 'ARM') > 0 then do; _ren = catx(' ', _ren, 'ARM=_rz6'); _asg = catx(' ', _asg, 'ARM = _rz6;');
_siz = catx(' ', _siz, '_len6 = max(_len6, lengthn(ARM));'); end;
if varnum(_dsid, 'TRT01P') > 0 then do; _ren = catx(' ', _ren, 'TRT01P=_rz7'); _asg = catx(' ', _asg, 'TRT01P = _rz7;');
_siz = catx(' ', _siz, '_len7 = max(_len7, lengthn(TRT01P));'); end;
if varnum(_dsid, 'TRT01A') > 0 then do; _ren = catx(' ', _ren, 'TRT01A=_rz8'); _asg = catx(' ', _asg, 'TRT01A = _rz8;');
_siz = catx(' ', _siz, '_len8 = max(_len8, lengthn(TRT01A));'); end;
if varnum(_dsid, 'AGEGR1') > 0 then do; _ren = catx(' ', _ren, 'AGEGR1=_rz9'); _asg = catx(' ', _asg, 'AGEGR1 = _rz9;');
_siz = catx(' ', _siz, '_len9 = max(_len9, lengthn(AGEGR1));'); end;
if varnum(_dsid, 'AGEU') > 0 then do; _ren = catx(' ', _ren, 'AGEU=_rz10'); _asg = catx(' ', _asg, 'AGEU = _rz10;');
_siz = catx(' ', _siz, '_len10 = max(_len10, lengthn(AGEU));'); end;
if varnum(_dsid, 'RACE') > 0 then do; _ren = catx(' ', _ren, 'RACE=_rz11'); _asg = catx(' ', _asg, 'RACE = _rz11;');
_siz = catx(' ', _siz, '_len11 = max(_len11, lengthn(RACE));'); end;
if varnum(_dsid, 'SEX') > 0 then do; _ren = catx(' ', _ren, 'SEX=_rz12'); _asg = catx(' ', _asg, 'SEX = _rz12;');
_siz = catx(' ', _siz, '_len12 = max(_len12, lengthn(SEX));'); end;
if varnum(_dsid, 'ETHNIC') > 0 then do; _ren = catx(' ', _ren, 'ETHNIC=_rz13'); _asg = catx(' ', _asg, 'ETHNIC = _rz13;');
_siz = catx(' ', _siz, '_len13 = max(_len13, lengthn(ETHNIC));'); end;
if varnum(_dsid, 'SAFFL') > 0 then do; _ren = catx(' ', _ren, 'SAFFL=_rz14'); _asg = catx(' ', _asg, 'SAFFL = _rz14;');
_siz = catx(' ', _siz, '_len14 = max(_len14, lengthn(SAFFL));'); end;
if varnum(_dsid, 'ITTFL') > 0 then do; _ren = catx(' ', _ren, 'ITTFL=_rz15'); _asg = catx(' ', _asg, 'ITTFL = _rz15;');
_siz = catx(' ', _siz, '_len15 = max(_len15, lengthn(ITTFL));'); end;
if varnum(_dsid, 'EFFFL') > 0 then do; _ren = catx(' ', _ren, 'EFFFL=_rz16'); _asg = catx(' ', _asg, 'EFFFL = _rz16;');
_siz = catx(' ', _siz, '_len16 = max(_len16, lengthn(EFFFL));'); end;
if varnum(_dsid, 'COMP8FL') > 0 then do; _ren = catx(' ', _ren, 'COMP8FL=_rz17'); _asg = catx(' ', _asg, 'COMP8FL = _rz17;');
_siz = catx(' ', _siz, '_len17 = max(_len17, lengthn(COMP8FL));'); end;
if varnum(_dsid, 'COMP16FL') > 0 then do; _ren = catx(' ', _ren, 'COMP16FL=_rz18'); _asg = catx(' ', _asg, 'COMP16FL = _rz18;');
_siz = catx(' ', _siz, '_len18 = max(_len18, lengthn(COMP16FL));'); end;
if varnum(_dsid, 'COMP24FL') > 0 then do; _ren = catx(' ', _ren, 'COMP24FL=_rz19'); _asg = catx(' ', _asg, 'COMP24FL = _rz19;');
_siz = catx(' ', _siz, '_len19 = max(_len19, lengthn(COMP24FL));'); end;
if varnum(_dsid, 'DISCONFL') > 0 then do; _ren = catx(' ', _ren, 'DISCONFL=_rz20'); _asg = catx(' ', _asg, 'DISCONFL = _rz20;');
_siz = catx(' ', _siz, '_len20 = max(_len20, lengthn(DISCONFL));'); end;
if varnum(_dsid, 'DSRAEFL') > 0 then do; _ren = catx(' ', _ren, 'DSRAEFL=_rz21'); _asg = catx(' ', _asg, 'DSRAEFL = _rz21;');
_siz = catx(' ', _siz, '_len21 = max(_len21, lengthn(DSRAEFL));'); end;
if varnum(_dsid, 'DTHFL') > 0 then do; _ren = catx(' ', _ren, 'DTHFL=_rz22'); _asg = catx(' ', _asg, 'DTHFL = _rz22;');
_siz = catx(' ', _siz, '_len22 = max(_len22, lengthn(DTHFL));'); end;
if varnum(_dsid, 'BMIBLGR1') > 0 then do; _ren = catx(' ', _ren, 'BMIBLGR1=_rz23'); _asg = catx(' ', _asg, 'BMIBLGR1 = _rz23;');
_siz = catx(' ', _siz, '_len23 = max(_len23, lengthn(BMIBLGR1));'); end;
if varnum(_dsid, 'DURDSGR1') > 0 then do; _ren = catx(' ', _ren, 'DURDSGR1=_rz24'); _asg = catx(' ', _asg, 'DURDSGR1 = _rz24;');
_siz = catx(' ', _siz, '_len24 = max(_len24, lengthn(DURDSGR1));'); end;
if varnum(_dsid, 'RFSTDTC') > 0 then do; _ren = catx(' ', _ren, 'RFSTDTC=_rz25'); _asg = catx(' ', _asg, 'RFSTDTC = _rz25;');
_siz = catx(' ', _siz, '_len25 = max(_len25, lengthn(RFSTDTC));'); end;
if varnum(_dsid, 'RFENDTC') > 0 then do; _ren = catx(' ', _ren, 'RFENDTC=_rz26'); _asg = catx(' ', _asg, 'RFENDTC = _rz26;');
_siz = catx(' ', _siz, '_len26 = max(_len26, lengthn(RFENDTC));'); end;
if varnum(_dsid, 'DCDECOD') > 0 then do; _ren = catx(' ', _ren, 'DCDECOD=_rz27'); _asg = catx(' ', _asg, 'DCDECOD = _rz27;');
_siz = catx(' ', _siz, '_len27 = max(_len27, lengthn(DCDECOD));'); end;
if varnum(_dsid, 'EOSSTT') > 0 then do; _ren = catx(' ', _ren, 'EOSSTT=_rz28'); _asg = catx(' ', _asg, 'EOSSTT = _rz28;');
_siz = catx(' ', _siz, '_len28 = max(_len28, lengthn(EOSSTT));'); end;
if varnum(_dsid, 'DCSREAS') > 0 then do; _ren = catx(' ', _ren, 'DCSREAS=_rz29'); _asg = catx(' ', _asg, 'DCSREAS = _rz29;');
_siz = catx(' ', _siz, '_len29 = max(_len29, lengthn(DCSREAS));'); 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 _len17 1 _len18 1 _len19 1 _len20 1 _len21 1 _len22 1 _len23 1 _len24 1 _len25 1 _len26 1 _len27 1 _len28 1 _len29 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);
call symputx('_len17', _len17);
call symputx('_len18', _len18);
call symputx('_len19', _len19);
call symputx('_len20', _len20);
call symputx('_len21', _len21);
call symputx('_len22', _len22);
call symputx('_len23', _len23);
call symputx('_len24', _len24);
call symputx('_len25', _len25);
call symputx('_len26', _len26);
call symputx('_len27', _len27);
call symputx('_len28', _len28);
call symputx('_len29', _len29);
end;
run;
data adam.adsl(label="Subject-Level Analysis");
attrib
STUDYID length=$&_len1 label="Study Identifier"
USUBJID length=$&_len2 label="Unique Subject Identifier"
SUBJID length=$&_len3 label="Subject Identifier for the Study"
SITEID length=$&_len4 label="Study Site Identifier"
SITEGR1 length=$&_len5 label="Pooled Site Group 1"
ARM length=$&_len6 label="Description of Planned Arm"
TRT01P length=$&_len7 label="Planned Treatment for Period 01"
TRT01PN length=8 label="Planned Treatment for Period 01 (N)"
TRT01A length=$&_len8 label="Actual Treatment for Period 01"
TRT01AN length=8 label="Actual Treatment for Period 01 (N)"
TRTSDT length=8 label="Date of First Exposure to Treatment" format=DATE9.
TRTEDT length=8 label="Date of Last Exposure to Treatment" format=DATE9.
TRTDURD length=8 label="Total Treatment Duration (Days)"
AVGDD length=8 label="Avg Daily Dose (as planned)"
CUMDOSE length=8 label="Cumulative Dose (as planned)"
AGE length=8 label="Age"
AGEGR1 length=$&_len9 label="Pooled Age Group 1"
AGEGR1N length=8 label="Pooled Age Group 1 (N)"
AGEU length=$&_len10 label="Age Units"
RACE length=$&_len11 label="Race"
RACEN length=8 label="Race (N)"
SEX length=$&_len12 label="Sex"
ETHNIC length=$&_len13 label="Ethnicity"
SAFFL length=$&_len14 label="Safety Population Flag"
ITTFL length=$&_len15 label="Intent-To-Treat Population Flag"
EFFFL length=$&_len16 label="Efficacy Population Flag"
COMP8FL length=$&_len17 label="Completers of Week 8 Population Flag"
COMP16FL length=$&_len18 label="Completers of Week 16 Population Flag"
COMP24FL length=$&_len19 label="Completers of Week 24 Population Flag"
DISCONFL length=$&_len20 label="Did the Subject Discontinue the Study?"
DSRAEFL length=$&_len21 label="Discontinued due to AE?"
DTHFL length=$&_len22 label="Subject Died?"
BMIBL length=8 label="Baseline BMI (kg/m^2)"
BMIBLGR1 length=$&_len23 label="Pooled Baseline BMI Group 1"
HEIGHTBL length=8 label="Baseline Height (cm)"
WEIGHTBL length=8 label="Baseline Weight (kg)"
EDUCLVL length=8 label="Years of Education"
DISONSDT length=8 label="Date of Onset of Disease" format=DATE9.
DURDIS length=8 label="Duration of Disease (Months)"
DURDSGR1 length=$&_len24 label="Pooled Disease Duration Group 1"
VISIT1DT length=8 label="Date of Visit 1" format=DATE9.
RFSTDTC length=$&_len25 label="Subject Reference Start Date/Time"
RFENDTC length=$&_len26 label="Subject Reference End Date/Time"
VISNUMEN length=8 label="End of Trt Visit (Vis 12 or Early Term.)"
RFENDT length=8 label="Date of Discontinuation/Completion" format=DATE9.
DCDECOD length=$&_len27 label="Standardized Disposition Term"
EOSSTT length=$&_len28 label="End of Study Status"
DCSREAS length=$&_len29 label="Reason for Discontinuation from Study"
MMSETOT length=8 label="MMSE Total"
;
set work._final&_ren;
&_asg
if not missing(AVGDD) then AVGDD = round(AVGDD, 1e-1);
if not missing(CUMDOSE) then CUMDOSE = round(CUMDOSE, 1e-1);
if not missing(BMIBL) then BMIBL = round(BMIBL, 1e-1);
if not missing(HEIGHTBL) then HEIGHTBL = round(HEIGHTBL, 1e-1);
if not missing(WEIGHTBL) then WEIGHTBL = round(WEIGHTBL, 1e-1);
if not missing(DURDIS) then DURDIS = round(DURDIS, 1e-1);
keep STUDYID USUBJID SUBJID SITEID SITEGR1 ARM TRT01P TRT01PN TRT01A TRT01AN TRTSDT TRTEDT TRTDURD AVGDD CUMDOSE AGE AGEGR1 AGEGR1N AGEU RACE RACEN SEX ETHNIC SAFFL ITTFL EFFFL COMP8FL COMP16FL COMP24FL DISCONFL DSRAEFL DTHFL BMIBL BMIBLGR1 HEIGHTBL WEIGHTBL EDUCLVL DISONSDT DURDIS DURDSGR1 VISIT1DT RFSTDTC RFENDTC VISNUMEN RFENDT DCDECOD EOSSTT DCSREAS MMSETOT;
run;
proc sort data=adam.adsl; by USUBJID; run;
Data (first 20 of 254 records, uploaded)
| STUDYID | USUBJID | SUBJID | SITEID | SITEGR1 | ARM | TRT01P | TRT01PN | TRT01A | TRT01AN | TRTSDT | TRTEDT | TRTDURD | AVGDD | CUMDOSE | AGE | AGEGR1 | AGEGR1N | AGEU | RACE | RACEN | SEX | ETHNIC | SAFFL | ITTFL | EFFFL | COMP8FL | COMP16FL | COMP24FL | DISCONFL | DSRAEFL | DTHFL | BMIBL | BMIBLGR1 | HEIGHTBL | WEIGHTBL | EDUCLVL | DISONSDT | DURDIS | DURDSGR1 | VISIT1DT | RFSTDTC | RFENDTC | VISNUMEN | RFENDT | DCDECOD | EOSSTT | DCSREAS | MMSETOT |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CDISCPILOT01 | 01-701-1015 | 1015 | 701 | 701 | Placebo | Placebo | 0 | Placebo | 0 | 2014-01-02 | 2014-07-02 | 182 | 0 | 0 | 63 | <65 | 1 | YEARS | WHITE | 1 | F | HISPANIC OR LATINO | Y | Y | Y | Y | Y | Y | Null | Null | 25.1 | 25-<30 | 147.3 | 54.4 | 16 | 2010-04-30 | 43.9 | >=12 | 2013-12-26 | 2014-01-02 | 2014-07-02 | 2014-07-02 | COMPLETED | COMPLETED | 23 | |||
| CDISCPILOT01 | 01-701-1023 | 1023 | 701 | 701 | Placebo | Placebo | 0 | Placebo | 0 | 2012-08-05 | 2012-09-01 | 28 | 0 | 0 | 64 | <65 | 1 | YEARS | WHITE | 1 | M | HISPANIC OR LATINO | Y | Y | Y | N | N | N | Y | Y | 30.4 | >=30 | 162.6 | 80.3 | 14 | 2006-03-11 | 76.4 | >=12 | 2012-07-22 | 2012-08-05 | 2012-09-02 | 2012-09-02 | ADVERSE EVENT | DISCONTINUED | Adverse Event | 23 | ||
| CDISCPILOT01 | 01-701-1028 | 1028 | 701 | 701 | Xanomeline High Dose | Xanomeline High Dose | 81 | Xanomeline High Dose | 81 | 2013-07-19 | 2014-01-14 | 180 | 77.7 | 13986 | 71 | 65-80 | 2 | YEARS | WHITE | 1 | M | NOT HISPANIC OR LATINO | Y | Y | Y | Y | Y | Y | Null | Null | 31.4 | >=30 | 177.8 | 99.3 | 16 | 2009-12-16 | 42.8 | >=12 | 2013-07-11 | 2013-07-19 | 2014-01-14 | 2014-01-14 | COMPLETED | COMPLETED | 23 | |||
| CDISCPILOT01 | 01-701-1033 | 1033 | 701 | 701 | Xanomeline Low Dose | Xanomeline Low Dose | 54 | Xanomeline Low Dose | 54 | 2014-03-18 | 2014-03-31 | 14 | 54 | 756 | 74 | 65-80 | 2 | YEARS | WHITE | 1 | M | NOT HISPANIC OR LATINO | Y | Y | Y | N | N | N | Y | Null | 28.8 | 25-<30 | 175.3 | 88.5 | 12 | 2009-08-02 | 55.3 | >=12 | 2014-03-10 | 2014-03-18 | 2014-04-14 | 2014-04-14 | STUDY TERMINATED BY SPONSOR | DISCONTINUED | Sponsor Decision | 23 | ||
| CDISCPILOT01 | 01-701-1034 | 1034 | 701 | 701 | Xanomeline High Dose | Xanomeline High Dose | 81 | Xanomeline High Dose | 81 | 2014-07-01 | 2014-12-30 | 183 | 76.9 | 14067 | 77 | 65-80 | 2 | YEARS | WHITE | 1 | F | NOT HISPANIC OR LATINO | Y | Y | Y | Y | Y | Y | Null | Null | 26.1 | 25-<30 | 154.9 | 62.6 | 9 | 2011-09-29 | 32.9 | >=12 | 2014-06-24 | 2014-07-01 | 2014-12-30 | 2014-12-30 | COMPLETED | COMPLETED | 21 | |||
| CDISCPILOT01 | 01-701-1047 | 1047 | 701 | 701 | Placebo | Placebo | 0 | Placebo | 0 | 2013-02-12 | 2013-03-09 | 26 | 0 | 0 | 85 | >80 | 3 | YEARS | WHITE | 1 | F | NOT HISPANIC OR LATINO | Y | Y | Y | N | N | N | Y | Y | 30.4 | >=30 | 148.6 | 67.1 | 8 | 2009-07-26 | 42 | >=12 | 2013-01-22 | 2013-02-12 | 2013-03-29 | 2013-03-29 | ADVERSE EVENT | DISCONTINUED | Adverse Event | 23 | ||
| CDISCPILOT01 | 01-701-1097 | 1097 | 701 | 701 | Xanomeline Low Dose | Xanomeline Low Dose | 54 | Xanomeline Low Dose | 54 | 2014-01-01 | 2014-07-09 | 190 | 54 | 10260 | 68 | 65-80 | 2 | YEARS | WHITE | 1 | M | NOT HISPANIC OR LATINO | Y | Y | Y | Y | Y | Y | Null | Null | 27.3 | 25-<30 | 168.9 | 78 | 18 | 2005-09-22 | 99.1 | >=12 | 2013-12-23 | 2014-01-01 | 2014-07-09 | 2014-07-09 | COMPLETED | COMPLETED | 10 | |||
| CDISCPILOT01 | 01-701-1111 | 1111 | 701 | 701 | Xanomeline Low Dose | Xanomeline Low Dose | 54 | Xanomeline Low Dose | 54 | 2012-09-07 | 2012-09-16 | 10 | 54 | 540 | 81 | >80 | 3 | YEARS | WHITE | 1 | F | NOT HISPANIC OR LATINO | Y | Y | Y | N | N | N | Y | Y | 23.9 | <25 | 158.2 | 59.9 | 22 | 2009-04-04 | 40.7 | >=12 | 2012-08-25 | 2012-09-07 | 2012-09-17 | 2012-09-17 | ADVERSE EVENT | DISCONTINUED | Adverse Event | 23 | ||
| CDISCPILOT01 | 01-701-1115 | 1115 | 701 | 701 | Xanomeline Low Dose | Xanomeline Low Dose | 54 | Xanomeline Low Dose | 54 | 2012-11-30 | 2013-01-23 | 55 | 54 | 2970 | 84 | >80 | 3 | YEARS | WHITE | 1 | M | NOT HISPANIC OR LATINO | Y | Y | Y | Y | N | N | Y | Y | 23.9 | <25 | 181.6 | 78.9 | 12 | 2004-05-28 | 101.9 | >=12 | 2012-11-23 | 2012-11-30 | 2013-01-23 | 2013-01-23 | ADVERSE EVENT | DISCONTINUED | Adverse Event | 20 | ||
| CDISCPILOT01 | 01-701-1118 | 1118 | 701 | 701 | Placebo | Placebo | 0 | Placebo | 0 | 2014-03-12 | 2014-09-09 | 182 | 0 | 0 | 52 | <65 | 1 | YEARS | WHITE | 1 | M | NOT HISPANIC OR LATINO | Y | Y | Y | Y | Y | Y | Null | Null | 21.9 | <25 | 180.3 | 71.2 | 14 | 2010-06-24 | 44.2 | >=12 | 2014-02-27 | 2014-03-12 | 2014-09-09 | 2014-09-09 | COMPLETED | COMPLETED | 20 | |||
| CDISCPILOT01 | 01-701-1130 | 1130 | 701 | 701 | Placebo | Placebo | 0 | Placebo | 0 | 2014-02-15 | 2014-08-16 | 183 | 0 | 0 | 84 | >80 | 3 | YEARS | WHITE | 1 | M | NOT HISPANIC OR LATINO | Y | Y | Y | Y | Y | Y | Null | Null | 27.6 | 25-<30 | 169.7 | 79.4 | 12 | 2010-05-22 | 44.7 | >=12 | 2014-02-09 | 2014-02-15 | 2014-08-16 | 2014-08-16 | COMPLETED | COMPLETED | 19 | |||
| CDISCPILOT01 | 01-701-1133 | 1133 | 701 | 701 | Xanomeline High Dose | Xanomeline High Dose | 81 | Xanomeline High Dose | 81 | 2012-10-28 | 2013-04-28 | 183 | 77.2 | 14121 | 81 | >80 | 3 | YEARS | WHITE | 1 | F | NOT HISPANIC OR LATINO | Y | Y | Y | Y | Y | Y | Null | Null | 28.1 | 25-<30 | 162.6 | 74.4 | 10 | 2010-03-11 | 31.5 | >=12 | 2012-10-23 | 2012-10-28 | 2013-04-29 | 2013-04-29 | COMPLETED | COMPLETED | 21 | |||
| CDISCPILOT01 | 01-701-1146 | 1146 | 701 | 701 | Xanomeline High Dose | Xanomeline High Dose | 81 | Xanomeline High Dose | 81 | 2013-05-20 | 2013-06-26 | 38 | 70.3 | 2673 | 75 | 65-80 | 2 | YEARS | WHITE | 1 | F | NOT HISPANIC OR LATINO | Y | Y | Y | N | N | N | Y | Y | 24.9 | <25 | 147.3 | 54 | 16 | 2009-11-17 | 41.7 | >=12 | 2013-05-07 | 2013-05-20 | 2013-06-30 | 2013-06-30 | ADVERSE EVENT | DISCONTINUED | Adverse Event | 22 | ||
| CDISCPILOT01 | 01-701-1148 | 1148 | 701 | 701 | Xanomeline High Dose | Xanomeline High Dose | 81 | Xanomeline High Dose | 81 | 2013-08-23 | 2014-02-20 | 182 | 77.1 | 14040 | 57 | <65 | 1 | YEARS | WHITE | 1 | M | NOT HISPANIC OR LATINO | Y | Y | Y | Y | Y | Y | Null | Null | 28.3 | 25-<30 | 175.3 | 87.1 | 15 | 2010-12-12 | 32.1 | >=12 | 2013-08-14 | 2013-08-23 | 2014-02-20 | 2014-02-20 | COMPLETED | COMPLETED | 21 | |||
| CDISCPILOT01 | 01-701-1153 | 1153 | 701 | 701 | Placebo | Placebo | 0 | Placebo | 0 | 2013-09-23 | 2014-03-16 | 175 | 0 | 0 | 79 | 65-80 | 2 | YEARS | WHITE | 1 | F | NOT HISPANIC OR LATINO | Y | Y | Y | Y | Y | Y | Null | Null | 23.8 | <25 | 156.2 | 58.1 | 6 | 2005-05-13 | 99.8 | >=12 | 2013-09-06 | 2013-09-23 | 2014-04-01 | 2014-04-01 | COMPLETED | COMPLETED | 10 | |||
| CDISCPILOT01 | 01-701-1180 | 1180 | 701 | 701 | Xanomeline High Dose | Xanomeline High Dose | 81 | Xanomeline High Dose | 81 | 2013-02-12 | 2013-03-18 | 35 | 70.2 | 2457 | 56 | <65 | 1 | YEARS | WHITE | 1 | M | NOT HISPANIC OR LATINO | Y | Y | Y | N | N | N | Y | Y | 27.6 | 25-<30 | 180.3 | 89.8 | 16 | 2008-09-21 | 52.3 | >=12 | 2013-01-28 | 2013-02-12 | 2013-03-23 | 2013-03-23 | ADVERSE EVENT | DISCONTINUED | Adverse Event | 19 | ||
| CDISCPILOT01 | 01-701-1181 | 1181 | 701 | 701 | Xanomeline High Dose | Xanomeline High Dose | 81 | Xanomeline High Dose | 81 | 2013-12-05 | 2013-12-09 | 5 | 54 | 270 | 79 | 65-80 | 2 | YEARS | WHITE | 1 | F | NOT HISPANIC OR LATINO | Y | Y | Y | N | N | N | Y | Y | 27.8 | 25-<30 | 154.9 | 66.7 | 15 | 2008-08-26 | 63 | >=12 | 2013-11-26 | 2013-12-05 | 2013-12-12 | 2013-12-12 | ADVERSE EVENT | DISCONTINUED | Adverse Event | 10 | ||
| CDISCPILOT01 | 01-701-1188 | 1188 | 701 | 701 | Xanomeline Low Dose | Xanomeline Low Dose | 54 | Xanomeline Low Dose | 54 | 2013-02-15 | 2013-03-24 | 38 | 54 | 2052 | 71 | 65-80 | 2 | YEARS | WHITE | 1 | M | NOT HISPANIC OR LATINO | Y | Y | Y | N | N | N | Y | Y | 32 | >=30 | 177.8 | 101.2 | 16 | 2005-09-14 | 88.7 | >=12 | 2013-02-03 | 2013-02-15 | 2013-03-25 | 2013-03-25 | ADVERSE EVENT | DISCONTINUED | Adverse Event | 23 | ||
| CDISCPILOT01 | 01-701-1192 | 1192 | 701 | 701 | Xanomeline Low Dose | Xanomeline Low Dose | 54 | Xanomeline Low Dose | 54 | 2012-07-22 | 2013-01-20 | 183 | 54 | 9882 | 80 | 65-80 | 2 | YEARS | WHITE | 1 | F | NOT HISPANIC OR LATINO | Y | Y | Y | Y | Y | Y | Null | Null | 27.8 | 25-<30 | 151.1 | 63.5 | 12 | 2009-03-15 | 39.8 | >=12 | 2012-07-08 | 2012-07-22 | 2013-01-20 | 2013-01-20 | COMPLETED | COMPLETED | 23 | |||
| CDISCPILOT01 | 01-701-1203 | 1203 | 701 | 701 | Placebo | Placebo | 0 | Placebo | 0 | 2013-02-02 | 2013-08-03 | 183 | 0 | 0 | 81 | >80 | 3 | YEARS | BLACK OR AFRICAN AMERICAN | 2 | F | NOT HISPANIC OR LATINO | Y | Y | Y | Y | Y | Y | Null | Null | 25.9 | 25-<30 | 160 | 66.2 | 13 | 2011-04-19 | 21.3 | >=12 | 2013-01-25 | 2013-02-02 | 2013-08-03 | 2013-08-03 | COMPLETED | COMPLETED | 21 |