Date/Time of Define-XML document generation: 2026-03-21T11:56:16
Define-XML version: 2.0.0
Stylesheet version: 2018-11-21
Datasets
| Dataset | Description | Class | Structure | Purpose | Keys | Documentation | Location |
|---|---|---|---|---|---|---|---|
| ADSL | Subject-Level Analysis Dataset | ADSL | One row per subject | Analysis | The ADSL (Subject‑Level Analysis Dataset) is built by merging subject demographics and baseline characteristics from SDTM.DM (Demographics), treatment exposure dates from SDTM.EX (Exposure), visit timing and sequence from SDTM.SV (Subject Visits), vital sign observations from SDTM.VS (Vital Signs), and tumor identification records from SDTM.TU (Tumor Identification). |
ADSL.xpt | |
| ADTTE | Time-to-Event Analysis Dataset | BDS | One record per subject per analysis parameter | Analysis | This dataset combines disease response information from SDTM.RS (Disease Response) and subject‑level treatment exposure, death, and study timeline data from ADAM.ADSL (Subject‑Level Analysis Dataset) to support time‑to‑event analyses. |
ADTTE.xpt | |
| ADRESP | Response Analysis Dataset | BDS | One record per subject per parameter per timepoint | Analysis | This dataset combines disease response assessments from SDTM.RS (Disease Response) with subject‑level treatment exposure and eligibility information from ADAM.ADSL (Subject‑Level Analysis Dataset). |
ADRESP.xpt | |
| ADVS | Vital Signs Analysis Dataset | BDS | One record per subject per parameter per timepoint | Analysis | This dataset combines subject demographic and treatment information from ADAM.ADSL (Subject‑Level Analysis Dataset) with raw vital sign measurements from SDTM.VS (Vital Signs) to support analysis of blood pressure, heart rate, and other vital parameters over time. |
ADVS.xpt |
Go to the top of the Define-XML document
Subject-Level Analysis Dataset (ADSL)
| Variable | Label / Description | Type | Length or Display Format | Controlled Terms or ISO Format | Origin / Source / Method / Comment |
|---|---|---|---|---|---|
| STUDYID | Study Identifier | text | 20 | Predecessor: SDTM.DM.STUDYID |
|
| USUBJID | Unique Subject Identifier | text | 20 |
Predecessor: NA
USUBJID is taken directly from SDTM Demographics domain (SDTM.DM.USUBJID).
|
|
| DOMAIN | Domain Abbreviation | text | 20 |
Predecessor: NA
"ADSL"
|
|
| TRT01P | Planned Treatment 1 | text | 20 |
Predecessor: NA
Set TRTP01P to the value of ARMCD from the SDTM DM domain (SDTM.DM), removing any leading or trailing blanks.
|
|
| TRT01PN | Planned Treatment 1(N) | integer | 8 |
Predecessor: NA
TRT01PN records the planned treatment number by converting the arm code (ARMCD) from SDTM.DM into a numeric identifier, assigning distinct values for the VERICURE and CONTROL arms and a default value for all other arms.
It is generated in the ADaM ADSL dataset as the primary treatment variable. Derivation Details: 1. Obtain the arm code for each subject from the source dataset SDTM.DM, variable ARMCD. a. Ensure the SDTM.DM dataset is sorted by USUBJID so that each subject's record is uniquely identified. 2. In the ADaM ADSL data step, create or update the target variable TRT01PN based on the value of ARMCD. a. For each observation, evaluate ARMCD and assign TRT01PN as follows: i. If ARMCD equals "VERICURE", set TRT01PN to 1. ii. Else if ARMCD equals "CONTROL", set TRT01PN to 2. iii. For any other ARMCD value, set TRT01PN to 99. |
|
| TRT01A | Actual Treatment 1 | text | 20 |
Predecessor: NA
TRT01A is created by taking the value of ARMCD from the SDTM.DM dataset and removing any leading or trailing blank spaces before assigning it to the variable.
|
|
| TRT01AN | Actual Treatment 1(N) | integer | 8 |
Predecessor: NA
TRT01AN is derived by copying the numeric value of TRT01PN from the source dataset ADaM.ADSL for each record.
|
|
| AGE | Age | integer | 8 | Predecessor: SDTM.DM.AGE |
|
| AGEU | Age Units | text | 20 | Predecessor: SDTM.DM.AGEU |
|
| SEX | Sex | text | 10 | Predecessor: SDTM.DM.SEX |
|
| RACE | Race | text | 50 | Predecessor: SDTM.DM.RACE |
|
| COUNTRY | Country | text | 20 |
Predecessor: NA
Set COUNTRY to "USA" when the site identifier (SDTM.DM.SITEID) is either "03" or "12". For all other SITEID values, keep the original COUNTRY value from the source dataset (SDTM.DM.COUNTRY).
|
|
| ETHNIC | Ethnicity | text | 50 |
Predecessor: NA
The variable ETHNIC is taken directly from the source dataset ADSL_ALL and placed into the analysis dataset ADAM.ADSL.
|
|
| WEIGHTBL | Weight (kg) at Baseline | float | 8 |
Predecessor: NA
WEIGHTBL is populated with the baseline weight value taken directly from the VSSTRESN variable in the SDTM.VS dataset.
|
|
| HEIGHTBL | Height (cm) at Baseline | integer | 8 |
Predecessor: NA
Height (cm) at Baseline (HEIGHTBL) is taken from the numeric result VSSTRESN in the SDTM.VS domain. When the original units variable VSORRESU equals 'inch', the VSSTRESN value is converted to centimeters using the conversion factor of 2.54 centimeters per inch; the resulting value is assigned to HEIGHTBL.
|
|
| BMIBL | Body Mass Index (kg/m2) at Baseline | float | 8 |
Predecessor: NA
BMIBL is calculated from baseline height and weight recorded in the vital signs domain (SDTM.VS).
Height values are converted to meters, BMI is computed as weight divided by height squared, and the result is rounded to two decimal places. The final BMI value is merged into the subject‑level analysis dataset (ADSL). Derivation Details: 1. From the merged height‑weight dataset (originating from SDTM.VS) evaluate each subject record: a. Verify that HEIGHT_MTR (height in meters) and WEIGHT are both non‑missing. i. When both are present, compute a temporary BMI value as WEIGHT divided by (HEIGHT_MTR * HEIGHT_MTR). 2. Assign the target variable BMIBL by rounding the temporary BMI to two decimal places (BMIBL = round(BMI,0.01)). 3. Merge BMIBL into the subject‑level analysis dataset ADAM.ADSL: a. Perform a merge on USUBJID between ADAM.ADSL and the dataset containing BMIBL. b. Retain the BMIBL value for each subject, overwriting any prior BMIBL content. |
|
| TRTSDT | Treatment Start Date | date | DATE9 |
Predecessor: NA
For each record, if the character variable SDTM.DM.RFSTDTC is non‑missing, strip any leading or trailing blanks, convert the cleaned string to a SAS date using the IS8601DA informat (ISO‑8601 date format), and assign that date to TRTSDT (Treatment Start Date). If RFSTDTC is missing, TRTSDT is left missing.
|
|
| DTHDT | Date of Death | date | DATE9 |
Predecessor: NA
For each record, the variable DTHDT is created from the source variable DTHDTC in SDTM.DM.
If DTHDTC contains a non‑missing value, any leading or trailing blanks are removed and the character string is interpreted as an ISO‑8601 calendar day (YYYY‑MM‑DD). The resulting numeric representation of that day is assigned to DTHDT. If DTHDTC is missing, DTHDT is set to missing. |
|
| DTHDY | Death Day | integer | 8 |
Predecessor: NA
DTHDY is derived from the date of death (ADaM.ADSL.DTHDT) and the treatment start date (TRTSDT) that originates from the reference start date (SDTM.DM.RFSTDTC).
It represents the study day on which death occurred, calculated as the number of days from treatment start to death, counting the start day as day 1. The value is assigned only when both the date of death and the treatment start date are present. Derivation Details: 1. For each record in the ADaM ADSL dataset: a. Verify that the death date variable DTHDT (from ADaM.ADSL) and the treatment start date variable TRTSDT (derived from SDTM.DM.RFSTDTC) are both non‑missing. b. When both dates are present, compute DTHDY as DTHDT ‑ TRTSDT + 1 and assign this value to DTHDY. c. If either DTHDT or TRTSDT is missing, do not assign a value; DTHDY remains missing. |
|
| DTHDTC | Death Date | text | 20 | Predecessor: SDTM.DM.DTHDTC |
|
| DTHFL | Death Flag | text | 1 |
Predecessor: NA
The variable DTHFL in ADAM.ADSL indicates whether a death date is recorded. It is set to the character Y when the source variable DTHDTC from SDTM.DM is non‑missing; if DTHDTC is missing, DTHFL is set to a blank (empty) character.
|
|
| DTHCAUS | Cause of Death | text | 200 |
Predecessor: NA
The variable DTHCAUS (Cause of Death) is taken directly from the source ADaM subject‑level dataset ADSL and placed into the final analysis dataset ADAM.ADSL without any transformation or conditional logic.
|
|
| EOSDT | End of Study Date | date | DATE9 |
Predecessor: NA
EOSDT is derived from the visit end date (SVENDTC) in the SDTM.SV dataset.
If a subject's death date (DTHDT) from ADaM.ADSL is present and occurs before the visit end date, the death date replaces it. The final value is stored as a DATE9‑formatted end‑of‑study date. Derivation Details: 1. a. Sort SDTM.SV by USUBJID and VISITNUM to establish a unique ordering for each subject's visit. b. Sort ADaM.ADSL by USUBJID to align subject‑level information. c. Merge the sorted SDTM.SV with ADaM.ADSL on USUBJID, creating a working dataset that contains SVENDTC and DTHDT for each observation. 2. a. For each observation where SVENDTC is not missing, convert SVENDTC from its character representation to a SAS date using the IS8601DA. informat. b. Assign the converted SAS date to EOSDT. 3. a. If DTHDT is not missing and DTHDT is earlier than the current EOSDT value, replace EOSDT with DTHDT. 4. a. Apply the DATE9. format to EOSDT so that the final value is stored as a DATE9‑formatted end‑of‑study date. |
|
| EOSDY | Study Day of Study Termination | integer | 8 |
Predecessor: NA
EOSDY records the study day on which a subject's participation ended. It is derived by counting the days from the treatment start date (SDTM.DM.RFSTDTC) to the study end date (SDTM.SV.SVENDTC), using the date of death (ADaM.ADSL.DTHDT) if it occurs earlier, and includes the start day.
Derivation Details: 1. Ensure prerequisite date variables are available in ADAM.ADSL for each subject. a. TRTSDT must contain the SAS date derived from SDTM.DM.RFSTDTC. b. EOSDT must contain the SAS date derived from SDTM.SV.SVENDTC, with the value replaced by ADaM.ADSL.DTHDT when death occurs earlier. 2. Derive the study‑day termination variable EOSDY. a. For each subject record, evaluate the relationship between TRTSDT and EOSDT. i. If TRTSDT is less than or equal to EOSDT, assign EOSDY the value of EOSDT minus TRTSDT plus 1. ii. If TRTSDT is greater than EOSDT, do not assign EOSDY, leaving it missing. |
|
| EOSSTT | End of Study Status | text | 200 |
Predecessor: NA
In the ADAM.ADSL dataset, the variable EOSSTT (End of Study Status) is set to the text value COMPLETED for any record whose VISITNUM (Visit Number) from the SDTM.SV source equals 48.
|
|
| EOTDT | End of Treatment Date | date | DATE9 |
Predecessor: NA
EOTDT records the end of treatment date for each subject.
It is derived from the exposure end date (EXENDTC) in SDTM.EX, and if a subject's death date (DTHDT) in ADaM.ADSL occurs earlier, the death date is used instead. Derivation Details: 1. a. Identify the source variables needed for the derivation. i. From SDTM.EX obtain EXENDTC for each USUBJID. ii. From ADaM.ADSL obtain DTHDT for each USUBJID. 2. a. Merge the source records on the subject identifier. i. Perform a one‑to‑one merge of the exposure record (containing EXENDTC) with the subject‑level record (containing DTHDT) using USUBJID as the key, retaining all subjects present in the exposure dataset. 3. a. Create the provisional End of Treatment Date. i. If EXENDTC is not missing, convert the character value to a SAS date using the IS8601DA informat and assign the result to EOTDT. ii. If EXENDTC is missing, leave EOTDT missing (no assignment). 4. a. Apply the death‑date rule to adjust EOTDT. i. Compare the provisional EOTDT with DTHDT. ii. If the provisional EOTDT is later than DTHDT, replace EOTDT with DTHDT. 5. a. Format the final variable for reporting. i. Apply the DATE9. format to EOTDT. |
|
| EOTDY | Study day of Treatment disc. | integer | 8 |
Predecessor: NA
EOTDY represents the study day on which treatment was discontinued. It is calculated as the number of days from the treatment start date (derived from SDTM.DM.RFSTDTC) to the end‑of‑treatment date (derived from SDTM.EX.EXENDTC), adjusted to the subject's death date (ADaM.ADSL.DTHDT) if the recorded end date occurs later, and then adding one day. The calculation is performed in the ADaM ADSL dataset.
Derivation Details: 1. Ensure the working ADaM subject‑level dataset contains the three source variables: a. RFSTDTC from SDTM.DM (character reference start date) b. EXENDTC from SDTM.EX (character end‑of‑treatment date) c. DTHDT from ADaM.ADSL (numeric date of death) i. These variables are merged or joined to the ADaM dataset prior to any calculation. 2. Create the numeric treatment‑start date (TRTSDT): a. If RFSTDTC is not missing, apply the INPUT function with the IS8601DA informat to convert the character value to a SAS date and assign the result to TRTSDT. 3. Create the numeric end‑of‑treatment date (EOTDT): a. If EXENDTC is not missing, apply the INPUT function with the IS8601DA informat to convert the character value to a SAS date and assign the result to EOTDT. 4. Adjust EOTDT for subjects who died before the recorded end‑of‑treatment date: a. If both EOTDT and DTHDT are non‑missing and EOTDT > DTHDT, then set EOTDT = DTHDT. 5. Derive the study day of treatment discontinuation (EOTDY): a. If TRTSDT and the adjusted EOTDT are non‑missing and TRTSDT <= EOTDT, then compute EOTDY as EOTDT ‑ TRTSDT + 1. b. If the condition in step 5a is not satisfied, leave EOTDY missing. 6. The resulting EOTDY variable is retained in the final ADaM.ADSL dataset as the study day of treatment discontinuation. |
|
| EOTSTT | End of Treatment Status | text | 100 |
Predecessor: NA
For each record, if the visit number (VISITNUM) from the SDTM.SV dataset equals 48, assign the value "COMPLETED" to the variable EOTSTT.
|
|
| DCTREAS | Reason for Discontinuation of Treatment | text | 200 |
Predecessor: NA
DCTREAS captures the reason a subject discontinued treatment. It is set to "DEATH" when the end‑of‑treatment date derived from EX.EXENDTC is later than the subject's date of death (ADSL.DTHDT).
Derivation Details: 1. Merge the exposure records from SDTM.EX with the subject‑level records from ADaM.ADSL using USUBJID as the key, creating a combined working dataset. a. Ensure each record retains the original EXENDTC value from SDTM.EX and the DTHDT value from ADaM.ADSL. 2. Convert the character variable EXENDTC to a SAS date variable named EOTDT. a. Apply the IS8601DA informat to EXENDTC after stripping any leading or trailing blanks. 3. Evaluate the relationship between the derived end‑of‑treatment date (EOTDT) and the subject's death date (DTHDT). a. If EOTDT is greater than DTHDT, assign the character value "DEATH" to DCTREAS. b. This assignment overwrites any existing value of DCTREAS for that record. 4. For all other records where the condition in step 3 is not met, leave DCTREAS unchanged (it remains missing or retains any prior value). |
|
| DCSREAS | Reason for Discontinuation from Study | text | 200 |
Predecessor: NA
The variable DCSREAS captures the reason for a subject's discontinuation from the study. It is assigned the value 'DEATH' when the subject's date of death (ADaM.ADSL.DTHDT) is earlier than the study end date derived from the visit end date (SDTM.SV.SVENDTC).
Derivation Details: 1. For each subject record that contains the visit end date SVENDTC (from SDTM.SV) and the death date DTHDT (from ADaM.ADSL), evaluate the condition: DTHDT is not missing AND the study‑end date EOSDT (the SAS date conversion of SVENDTC) is greater than DTHDT. If the condition is true, assign the character value 'DEATH' to DCSREAS; if the condition is false, leave DCSREAS unchanged (remain missing). |
|
| STUDYDUR | Duration of Study | integer | 8 |
Predecessor: NA
STUDYDUR represents the length of a subject's participation in the study, expressed in months.
It is calculated from the treatment start date (derived from SDTM.DM.RFSTDTC) and the treatment end date (derived from SDTM.EX.EXENDTC, but limited to the subject's death date ADaM.ADSL.DTHDT when that occurs earlier). The difference in days between these dates is converted to months using the average days per month and then rounded to two decimal places. Derivation Details: 1. Confirm that the variables TRTSDT (treatment start date) and TRTEDT (treatment end date) are available in the current data set. TRTSDT is derived from SDTM.DM.RFSTDTC and TRTEDT is derived from SDTM.EX.EXENDTC, with a possible cap at ADaM.ADSL.DTHDT. 2. Compute the raw study duration in months and assign it to STUDYDUR: a. Calculate the day difference: (TRTEDT ‑ TRTSDT + 1). b. Convert days to months by dividing the result by the average days per month (30.4375). c. Store the computed value in STUDYDUR. 3. Round STUDYDUR to two decimal places: a. Apply the ROUND function with a rounding unit of 0.01 to the value in STUDYDUR. b. The rounded value replaces the previous STUDYDUR value. 4. The final STUDYDUR now reflects the subject's participation length in the study, expressed in months and rounded to two decimal places. |
|
| ITTFL | Intent to Treat Flag | text | 1 |
Predecessor: NA
ITTF L is assigned the character value 'Y' for a subject when the source variable TRT01PN from the ADaM ADSL dataset is non‑missing (i.e., contains a value).
|
|
| SAFFL | Safety Flag | text | 1 |
Predecessor: NA
In the ADaM ADSL dataset, SAFFL is assigned the character value "Y" for any record where the source variable TRT01AN (Actual Treatment 1(N)) is non‑missing.
|
|
| RANDDT | Randomization Date | date | DATE9 |
Predecessor: NA
RANDDT is derived from the reference start date SDTM.DM.RFSTDTC. When RFSTDTC contains a non‑missing value, the character string is interpreted as an ISO‑8601 date and converted to a SAS date variable called TRTSDT. RANDDT is then assigned the calendar day that occurs immediately before TRTSDT (one day earlier).
|
|
| AGEGR1 | Age Group | text | 60 |
Predecessor: NA
Derives the AGEGR1 variable by assigning each subject to a categorical age band based on their AGE value. The resulting age groups are used to classify subjects into predefined clinical age brackets.
Derivation Details: 1. In the DATA step that creates the ADSL_FLG dataset (which contains the variable AGE sourced from SDTM.DM.AGE), assign AGEGR1 based on the value of AGE: a. If AGE is less than 60, set AGEGR1 to "<60". b. If AGE is greater than or equal to 60 and less than 65, set AGEGR1 to "60 to 64". c. If AGE is between 65 and 74 inclusive, set AGEGR1 to "65 to 74". d. If AGE is between 75 and 85 inclusive, set AGEGR1 to "75 to 85". e. For all other values (AGE greater than 85), set AGEGR1 to "85+". |
|
| RFICDT | Informed Consent date | date | DATE9 |
Predecessor: NA
RFICDT is derived from the character variable RFICDTC in the SDTM.DM dataset. For each record, if RFICDTC contains a non‑missing value, that value is interpreted as an ISO 8601 date (e.g., YYYY‑MM‑DD) and stored as the numeric Informed Consent date. If RFICDTC is missing, RFICDT is left missing.
|
|
| NUMLESBL | Number of Lesion at baseline | integer | 8 |
Predecessor: NA
For each subject (USUBJID), assign NUMLESBL the value of COUNTER, where COUNTER is set to 1 for the first record of that subject and increased by 1 for each additional record. This results in NUMLESBL representing the total count of baseline lesions for the subject.
|
Go to the top of the Define-XML document
Time-to-Event Analysis Dataset (ADTTE)
| Variable | Label / Description | Type | Length or Display Format | Controlled Terms or ISO Format | Origin / Source / Method / Comment |
|---|---|---|---|---|---|
| STUDYID | Study Identifier | text | 20 | Predecessor: SDTM.DM.STUDYID |
|
| USUBJID | Unique Subject Identifier | text | 20 |
Predecessor: NA
USUBJID is taken directly from SDTM Demographics domain (SDTM.DM.USUBJID).
|
|
| DOMAIN | Domain Abbreviation | text | 20 |
Predecessor: NA
"ADTTE"
|
|
| ASEQ | Analysis Sequence Number | integer | 8 |
Predecessor: NA
ASEQ assigns a sequential record number for each subject in the ADTTE analysis dataset, restarting the count when a new USUBJID begins.
Derivation Details: 1. Process the ADTTE dataset using BY‑group logic on USUBJID (and any additional BY variables) so that the first record of each subject can be identified. 2. For every observation, assign ASEQ the current value of the sequential counter that increments with each record and automatically resets when a new USUBJID begins, thereby providing a subject‑specific record number. |
|
| TRT01P | Planned Treatment 1 | text | 20 | Predecessor: ADAM.ADSL.TRT01P |
|
| TRT01PN | Planned Treatment 1 (N) | integer | 8 | Predecessor: ADAM.ADSL.TRT01PN |
|
| TRT01A | Actual Treatment 1 | text | 20 | Predecessor: ADAM.ADSL.TRT01A |
|
| TRT01AN | Actual Treatment 1 (N) | integer | 8 | Predecessor: ADAM.ADSL.TRT01AN |
|
| ADT | Analysis Date | date | DATE9 |
Predecessor: NA
ADT is the analysis date used for each time‑to‑event record. It is set to the relevant event date‑‑death date for overall survival, the earlier of progression or death for progression‑free survival, and progression or death (whichever is later) for duration of response‑‑otherwise it is assigned a censoring date derived from the last known alive date, last assessment date, or randomization date. The dates are sourced from ADaM.ADSL (DTHDT, DTHFL, RANDDT, EOSDT, EOTDT) and SDTM.RS (RSDTC).
Derivation Details: 1. Derive the subject's last known alive date (LSTALVDT) from ADaM.ADSL. a. If ADaM.ADSL.DTHFL = "Y" then set LSTALVDT = ADaM.ADSL.DTHDT. b. Otherwise set LSTALVDT to the first non‑missing value among ADaM.ADSL.EOSDT, ADaM.ADSL.EOTDT, and ADaM.ADSL.RANDDT. 2. Obtain the first progression date (PDDT) from SDTM.RS. a. Identify records where the progression flag is true and keep the earliest SDTM.RS.RSDTC per USUBJID. b. Convert the character date SDTM.RS.RSDTC to a SAS date and store as PDDT. 3. Obtain the last assessment date (LSTAESDT) from SDTM.RS. a. Keep the latest SDTM.RS.RSDTC per USUBJID. b. Convert the character date to a SAS date and store as LSTAESDT. 4. Compute the overall‑survival censoring date (OS_CNSRDT). a. If both LSTALVDT and LSTAESDT are non‑missing, set OS_CNSRDT = MAX(LSTALVDT, LSTAESDT). b. If only LSTALVDT is non‑missing, set OS_CNSRDT = LSTALVDT. c. If only LSTAESDT is non‑missing, set OS_CNSRDT = LSTAESDT. d. If neither is available, set OS_CNSRDT = ADaM.ADSL.RANDDT + 365 days (default one‑year censor). 5. Compute the progression‑free‑survival censoring date (PFS_CNSRDT). a. If LSTAESDT is non‑missing, set PFS_CNSRDT = MAX(LSTAESDT, OS_CNSRDT). b. Otherwise set PFS_CNSRDT = OS_CNSRDT. 6. Assign ADT for overall‑survival (OS) records. a. If ADaM.ADSL.DTHFL = "Y" then set ADT = LSTALVDT (death date). b. Otherwise set ADT = OS_CNSRDT (censoring date). 7. Assign ADT for progression‑free‑survival (PFS) records. a. If a progression event exists (PD_FL = "Y" and PDDT is non‑missing) then: i. If a death event also exists (ADaM.ADSL.DTHFL = "Y" and LSTALVDT is non‑missing) then compare dates: ‑ If PDDT <= LSTALVDT, set ADT = PDDT (earlier progression). ‑ Else set ADT = LSTALVDT (earlier death). ii. If no death event, set ADT = PDDT (progression date). b. Else if no progression but a death event exists, set ADT = LSTALVDT (death date). c. Else (no progression and no death), set ADT = PFS_CNSRDT (censoring date). 8. Assign ADT for duration‑of‑response (DOR) records (responders only). a. If both progression date (prog_date) and death date (death_date) are non‑missing, set ADT = MAX(prog_date, death_date) (later of the two). b. Else if only prog_date is non‑missing, set ADT = prog_date. c. Else if only death_date is non‑missing, set ADT = death_date. d. Else set ADT = last_assessment_date (censoring at last assessment). |
|
| STARTDT | Time-to-Event Origin Date for Subject | date | DATE9 |
Predecessor: NA
For each record in the ADTTE analysis dataset, the variable STARTDT is set as follows:
1. If the record represents an overall survival (OS) or progression‑free survival (PFS) event, STARTDT is taken directly from the subject's randomization date (RANDDT) in the ADAM.ADSL dataset. 2. If the record represents a duration‑of‑response (DOR) event, STARTDT is the first response date. The first response date is obtained from the response date/time variable RSDTC in the SDTM.RS dataset; when RSDTC is not missing, its date component is extracted and used as STARTDT. Thus, STARTDT is either the randomization date (for OS and PFS) or the first response date (for DOR), depending on the type of event represented by the record. |
|
| PARAM | Parameter | text | 40 |
Predecessor: NA
When constructing the ADTTE dataset, the character variable PARAM is set according to the type of time‑to‑event record:
* For records representing overall survival, PARAM is assigned the value "Overall Survival". * For records representing progression‑free survival, PARAM is assigned the value "Progression Free Survival". * For records representing duration of response, PARAM is assigned the value "Duration of Response". |
|
| PARAMCD | Parameter Code | text | 8 |
Predecessor: NA
When creating the ADTTE records, the variable PARAMCD is set to a fixed character value that identifies the type of time‑to‑event measurement. For every observation originating from the dataset WORK.ADTTE_DOR, PARAMCD is assigned the value "DOR". For every observation originating from the dataset WORK.ADTTE_OS, PARAMCD is assigned the value "OS". For every observation originating from the dataset WORK.ADTTE_PFS, PARAMCD is assigned the value "PFS". These assignments are made directly in the respective data steps before the datasets are combined and sorted into ADAM.ADTTE.
|
|
| AVAL | Analysis Value | float | 8 |
Predecessor: NA
AVAL is the number of days from the observation start date to the event or censoring date for each time‑to‑event record (overall survival, progression‑free survival, or duration of response).
The start date is the randomization date for OS and PFS and the first response date for DOR; the event date is death, progression, or the appropriate censoring date, and any negative difference is reset to zero. Derivation Details: 1. For overall survival (OS) records: a. Determine the analysis date (ADT) as either the death date (LSTALVDT) when DTHFL='Y' or the censoring date (OS_CNSRDT) otherwise. b. Set the start date (STARTDT) to the randomization date (RANDDT) from ADaM.ADSL. c. Compute AVAL as the difference in days between ADT and STARTDT. d. If the computed AVAL is negative, reset AVAL to zero. 2. For progression‑free survival (PFS) records: a. Choose ADT based on the earliest of progression date (PDDT) and death date (LSTALVDT) when both are present; otherwise use the available event date or the censoring date (PFS_CNSRDT). b. Set STARTDT to RANDDT from ADaM.ADSL. c. Compute AVAL as ADT minus STARTDT. d. Apply the non‑negative rule: if AVAL < 0 then AVAL = 0. 3. For duration of response (DOR) records (responders only): a. Determine ADT as the later of progression date (PROG_DATE) and death date (DEATH_DATE) when both exist; otherwise use the available event date or the last assessment date (LAST_ASSESSMENT_DATE) for censoring. b. Set STARTDT to the first response date (FIRST_RESP_DATE) derived from SDTM.RS.RSDTC. c. Compute AVAL as ADT minus STARTDT. d. Enforce non‑negative values: if AVAL < 0 then AVAL = 0. |
|
| CNSR | Censor | integer | 8 |
Predecessor: NA
The CENSOR variable indicates whether a subject's time‑to‑event observation is censored (1) or an event occurred (0). For overall survival it is set to 0 when a death is recorded in ADaM.ADSL.DTHFL/DTHDT and to 1 otherwise. For progression‑free survival and duration‑of‑response it is 0 when the earliest of progression (from SDTM.RS.RSDTC) or death occurs, and 1 when the subject remains alive and progression‑free at the last assessment date.
Derivation Details: 1. Overall Survival (OS) records a. Retrieve the death flag from ADAM.ADSL.DTHFL. b. If DTHFL equals "Y" then assign CNSR = 0 to indicate an event (death) occurred. c. Otherwise assign CNSR = 1 to indicate the observation is censored. 2. Progression‑Free Survival (PFS) records a. Obtain the first progression date (PDDT) from the first PD record in SDTM.RS. b. Obtain the last alive date (LSTALVDT) from ADAM.ADSL: if DTHFL = "Y" then LSTALVDT = ADAM.ADSL.DTHDT, else LSTALVDT = the earliest non‑missing of ADAM.ADSL.EOSDT, ADAM.ADSL.EOTDT, ADAM.ADSL.RANDDT. c. Evaluate the presence of progression and death: i. If both PDDT and DTHFL = "Y" are present, compare dates: ‑ If PDDT <= LSTALVDT then assign CNSR = 1 (progression is the first event). ‑ Otherwise assign CNSR = 0 (death occurs first and counts as the event for PFS). ii. If only progression is present (PDDT not missing and DTHFL not "Y"), assign CNSR = 1. iii. If only death is present (DTHFL = "Y" and PDDT missing), assign CNSR = 0. iv. If neither progression nor death is present, use the last assessment date from SDTM.RS (LSTAESDT) and assign CNSR = 1 (censored at last assessment). 3. Duration of Response (DOR) records for responders a. Retrieve the progression‑after‑response date (PROG_DATE) from the first PD after response in SDTM.RS. b. Retrieve the death date (DEATH_DATE) from ADAM.ADSL.DTHDT when DTHFL = "Y". c. Determine the event status: i. If PROG_DATE is not missing or DEATH_DATE is not missing, assign CNSR = 0 (event occurred ‑ either progression or death after response). ii. If both PROG_DATE and DEATH_DATE are missing, retrieve the last assessment date (LAST_ASSESSMENT_DATE) from SDTM.RS and assign CNSR = 1 (censored at last assessment). 4. Consolidation a. After CNSR is set in each of the OS, PFS, and DOR data steps, combine the three record types into ADAM.ADTTE using a SET statement. b. The final ADAM.ADTTE dataset contains CNSR correctly flagged for each analysis record. |
|
| EVNTDESC | Event or Censoring Description | text | 200 |
Predecessor: NA
EVNTDESC records the description of the event that ends each time‑to‑event record, indicating either "Death", "Progression", or leaving the field blank when the observation is censored. The value is derived from the death flag/date in ADaM.ADSL and the progression date from SDTM.RS, with the earliest occurring event determining the description.
Derivation Details: 1. Derive the subject's last alive date (LSTALVDT) from ADaM.ADSL. a. If ADaM.ADSL.DTHFL = "Y" then set LSTALVDT = ADaM.ADSL.DTHDT. b. Otherwise set LSTALVDT to the earliest non‑missing date among ADaM.ADSL.EOSDT, ADaM.ADSL.EOTDT, and ADaM.ADSL.RANDDT. 2. Obtain the progression date (PROG_DATE) from SDTM.RS. a. Convert SDTM.RS.RSDTC (character) to a SAS date value and assign to PROG_DATE. 3. Create a flag indicating the presence of a progression event (PD_FL). a. If PROG_DATE is not missing then set PD_FL = "Y"; otherwise set PD_FL = "N". 4. Assign EVNTDESC for overall survival (OS) records. a. If ADaM.ADSL.DTHFL = "Y" then EVNTDESC = "Death". b. If ADaM.ADSL.DTHFL is not "Y" then EVNTDESC = "" (blank). 5. Assign EVNTDESC for progression‑free survival (PFS) records. a. If PD_FL = "Y" and PROG_DATE <= LSTALVDT then EVNTDESC = "Progression". b. Else if PD_FL = "Y" and ADaM.ADSL.DTHFL = "Y" and LSTALVDT < PROG_DATE then EVNTDESC = "Death". c. Else if ADaM.ADSL.DTHFL = "Y" then EVNTDESC = "Death". d. Else EVNTDESC = "" (blank). 6. Assign EVNTDESC for duration‑of‑response (DOR) records (events after response). a. If both PROG_DATE and ADaM.ADSL.DTHDT are present and PROG_DATE <= ADaM.ADSL.DTHDT then EVNTDESC = "Progression". b. Else if both are present and ADaM.ADSL.DTHDT < PROG_DATE then EVNTDESC = "Death". c. Else if only PROG_DATE is present then EVNTDESC = "Progression". d. Else if only ADaM.ADSL.DTHDT is present then EVNTDESC = "Death". e. Else EVNTDESC = "" (blank). |
|
| CNSDTDSC | Censor Date Description | text | 200 |
Predecessor: NA
The CENSOR DATE DESCRIPTION (CNSDTDSC) provides a textual label describing the censoring condition for each time‑to‑event record in the ADTTE dataset. When a record is censored (CNSR=1), it indicates "Alive, Last assessment date added" for overall survival (PARAMCD='OS') or "Alive, No Progression" for progression‑free survival and duration of response (PARAMCD='PFS' or 'DOR'); otherwise the field is left blank.
Derivation Details: 1. Iterate over each observation in the ADaM.ADTTE dataset. a. Evaluate the censor indicator variable CNSR. i. If CNSR equals 1, then assess the parameter code variable PARAMCD. ‑ When PARAMCD is 'OS', assign the character string "Alive, Last assessment date added" to CNSDTDSC. ‑ When PARAMCD is either 'PFS' or 'DOR', assign the character string "Alive, No Progression" to CNSDTDSC. ii. If CNSR does not equal 1, assign an empty string to CNSDTDSC. |
Go to the top of the Define-XML document
Response Analysis Dataset (ADRESP)
| Variable | Label / Description | Type | Length or Display Format | Controlled Terms or ISO Format | Origin / Source / Method / Comment |
|---|---|---|---|---|---|
| STUDYID | Study Identifier | text | 20 | Predecessor: SDTM.DM.STUDYID |
|
| USUBJID | Unique Subject Identifier | text | 20 | Predecessor: ADAM.ADSL.USUBJID |
|
| DOMAIN | Domain Abbreviation | text | 20 |
Predecessor: NA
"ADRESP"
|
|
| ASEQ | Analysis Sequence Number | integer | 8 |
Predecessor: NA
ASEQ assigns a running number to each response record for a subject, starting at 1 for the first record and increasing by one for each subsequent record. The sequence restarts when a new USUBJID is encountered.
Derivation Details: 1. Within the DATA step that creates ADRS from ADRESP_STRUCT, retain a counter variable SEQ and initialize it to zero before the first observation is read. 2. Process the data with a BY statement on USUBJID so that the automatic flag FIRST.USUBJID is available for each record. a. When FIRST.USUBJID is true, reset SEQ to zero to start a new sequence for the new subject. b. Increment SEQ by one for the current observation (SEQ = SEQ + 1). 3. Assign the target variable ASEQ the current value of SEQ for each observation, thereby creating a running number that restarts for each USUBJID. |
|
| TRT01P | Planned Treatment 1 | text | 20 | Predecessor: ADAM.ADSL.TRT01P |
|
| TRT01PN | Planned Treatment 1 (N) | integer | 8 | Predecessor: ADAM.ADSL.TRT01PN |
|
| TRT01A | Actual Treatment 1 | text | 20 | Predecessor: ADAM.ADSL.TRT01A |
|
| TRT01AN | Actual Treatment 1 (N) | integer | 8 | Predecessor: ADAM.ADSL.TRT01AN |
|
| TRTSDT | Treatment Start Date | date | DATE9 | Predecessor: ADAM.ADSL.TRTSDT |
|
| ITTFL | Intent to Treat Flag | text | 1 | Predecessor: ADAM.ADSL.ITTFL |
|
| SAFFL | Safety Flag | text | 1 | Predecessor: ADAM.ADSL.SAFFL |
|
| PARAMCD | Parameter Code | text | 8 |
Predecessor: NA
Starting with the source ADaM dataset ADRS, each record is assigned PARAMCD the constant value "BOR". Then, a subsequent processing step checks each record; if PARAMCD equals "BOR", it is overwritten with the constant value "OR". No other conditions or modifications are applied to PARAMCD.
|
|
| PARAM | Parameter | text | 40 |
Predecessor: NA
Start with the source dataset ADRESP_STRUCT, which contains the variable PARAMCD. For every record where PARAMCD equals "BOR", create a record and assign PARAM the constant value "Best Overall Response". Then, for each of those BOR records, create an additional record representing Objective Response and assign PARAM the constant value "Objective Response". No other conditions or transformations are applied to PARAM.
|
|
| PARCAT1 | Parameter Category 1 | text | 200 |
Predecessor: NA
In the ADRESP_STRUCT dataset the variable PARCAT1 (Parameter Category 1) is defined. In the subsequent ADRS_BOR_1 dataset, PARCAT1 is assigned the literal value "TUMOR RESPONSE" for every record. This value is then retained when the data are sorted into the final analysis dataset ADAM.ADRESP.
|
|
| PARCAT2 | Parameter Category 1 | text | 200 |
Predecessor: NA
For each subject (USUBJID) in the SDTM.RS dataset, identify the response record that has the smallest numeric value of RESPONSE_ORDER. Take the VISIT value from that record and assign it to PARCAT2. In other words, PARCAT2 receives the visit name associated with the best (minimum RESPONSE_ORDER) response for each subject.
|
|
| AVALC | Analysis Value (C) | text | 20 |
Predecessor: NA
AVALC records the subject's disease response derived from the RSSTRESC variable in the SDTM RS domain. Missing responses are set to "NE" (Not Evaluable). For records representing Best Overall Response (PARAMCD= "BOR"), a complete response is coded as "Y", any other evaluable response as "N", and not evaluable responses remain "NE".
Derivation Details: 1. Aggregate the disease response information from the SDTM.RS dataset (library sdtm) to determine each subject's best response: a. For each USUBJID, evaluate all records of RSSTRESC and select the value associated with the smallest response_order (the best response). b. Store this selected value in a temporary variable named BEST_RESPONSE. c. Create a working ADRESP record (ADRS_BOR) and assign AVALC the value of BEST_RESPONSE for each subject. 2. Handle subjects who have no post‑baseline response records: a. After the BEST_RESPONSE assignment, check if AVALC is missing. b. If missing, set AVALC to the character string "NE" to indicate Not Evaluable. 3. Derive the AVALC records where PARAMCD equals "BOR": a. For each BOR record, examine the current value of AVALC. b. If AVALC equals "CR", replace AVALC with "Y" to indicate a complete response. c. Else, if AVALC is any value other than "NE", replace AVALC with "N" to indicate an evaluable but non‑complete response. d. Else (when AVALC is already "NE"), retain AVALC as "NE". 4. The final AVALC values, after applying the above rules, are written to the ADRESP analysis dataset in the ADAM library. |
|
| ADT | Analysis Date | date | DATE9 |
Predecessor: NA
For each subject (USUBJID), locate the response record in SDTM.RS that has the smallest response_order value (i.e., the best response). From that record, take the response date contained in the variable RSDTC (originally a character date/time). Assign this date to ADT in the ADRESP analysis dataset. The ADT value therefore represents the date of the best response for each subject.
|
|
| ADY | Analysis Day | integer | 8 |
Predecessor: NA
When both the analysis date (ADT) ‑ which originates from the response date derived from SDTM.RS.RSDTC ‑ and the treatment start date (TRTSDT) from ADaM.ADSL are present, ADY is set to the number of days between them, calculated as ADT minus TRTSDT.
|
|
| ANL01FL | Analysis Flag | text | 1 |
Predecessor: NA
In the final ADAM.ADRESP dataset, ANL01FL is derived from the disease‑response information in SDTM.RS. For each subject (USUBJID), the best response is identified as the RSSTRESC value that has the smallest RESPONSE_ORDER. If this best response is present (i.e., not missing), ANL01FL is set to "Y". If no best response is present (the best response is missing), ANL01FL is set to a blank string, indicating the record is not included in the primary analysis.
|
Go to the top of the Define-XML document
Vital Signs Analysis Dataset (ADVS)
| Variable | Label / Description | Type | Length or Display Format | Controlled Terms or ISO Format | Origin / Source / Method / Comment |
|---|---|---|---|---|---|
| STUDYID | Study Identifier | text | 20 | Predecessor: SDTM.DM.STUDYID |
|
| DOMAIN | text | 4 |
Predecessor: NA
"ADVS".
|
||
| USUBJID | Unique Subject Identifier | text | 40 |
Predecessor: NA
USUBJID is taken directly from SDTM Demographics domain (SDTM.DM.USUBJID).
|
|
| ASEQ | Analysis Sequence | integer | 8 |
Predecessor: NA
ASEQ is assigned the value of VSSEQ from the SDTM.VS dataset.
|
|
| PARAMCD | Parameter Code | text | 8 |
Predecessor: NA
PARAMCD is set equal to the value of VSTESTCD from the source dataset SDTM.VS. The assignment is a direct copy, and the value is carried forward unchanged to the final ADaM dataset.
|
|
| PARAM | Parameter Name | text | 142 |
Predecessor: NA
The variable PARAM is created by taking the test name from SDTM.VS.VSTEST, appending an opening parenthesis, then the result value from SDTM.VS.VSSTRESU after removing all spaces, then a closing parenthesis. The resulting string is then collapsed so that any consecutive spaces are reduced to a single space.
|
|
| AVAL | Analysis Value | float | 8 |
Predecessor: NA
AVAL is assigned the value of VSSTRESN from the SDTM.VS dataset. The value is carried forward unchanged through the subsequent ADaM processing steps.
|
|
| AVALCAT1 | Category of Analysis Parameter | text | 23 |
Predecessor: NA
In the initial ADVS0 dataset, the variable AVALCAT1 is assigned the constant value "VITAL SIGNS MEASUREMENT" for every record. This value is retained unchanged through subsequent processing steps and appears in the final ADAM.ADVS dataset.
|
|
| ABLFL | Analysis Baseline Flag | text | 1 |
Predecessor: NA
ABLFL flags records that represent the analysis baseline by assigning a value of 'Y' when the visit number (AVISITN) equals 0 and the analysis value (AVAL) is present. The flag is derived from the ADAM.ADVS source dataset.
Derivation Details: 1. Start with the source ADAM.ADVS dataset which contains the variables AVISITN and AVAL. a. Ensure each record retains its original AVISITN and AVAL values. b. Create the variable ABLFL as missing for every record because it does not exist in the source. 2. In the step that generates the intermediate dataset (e.g., ADV..._CHG), apply the baseline flag logic: a. Evaluate whether AVISITN equals 0 for the current observation. b. Simultaneously check that AVAL is not missing. c. If both conditions are true, assign the character value 'Y' to ABLFL. d. If either condition is false, leave ABLFL unchanged (remains missing). 3. Carry forward the ABLFL variable unchanged through subsequent processing steps (retain it in the dataset's KEEP/RETAIN list) so that the flag assigned in step 2 appears in the final ADAM.ADVS output. |
|
| BASE | Baseline Value | float | 8 |
Predecessor: NA
The BASE variable captures the baseline measurement for each observation, sourced from the original analysis value (AVAL). It serves as the reference value for subsequent change calculations. Baseline values are retained only for appropriate baseline records.
Derivation Details: 1. Merge the original analysis dataset with the baseline dataset to create BASE. a. Read ADaM.ADVS as ADVS0, which provides the variable AVAL. b. Read the baseline source ADVS_BASE, which also contains AVAL representing the baseline measurement. c. Execute a MERGE of ADVS0 (IN=A) and ADVS_BASE, renaming ADVS_BASE.AVAL to BASE, without specifying a BY clause so that every record from ADVS0 is retained and BASE is attached where available. 2. Clear BASE for records that are not baseline visits. a. For each observation in the merged dataset, examine the visit number variable AVISITN (from ADaM.ADVS). b. If AVISITN is less than or equal to 0, assign a missing value to BASE. |
|
| CHG | Change from Baseline | float | 8.1 |
Predecessor: NA
For each observation, if the analysis value (AVAL) and the baseline value (BASE) from the ADaM.ADVS dataset are both non‑missing, calculate CHG as the difference: CHG = AVAL ‑ BASE.
If either AVAL or BASE is missing, CHG remains missing. |
|
| PCHG | Percent Change from Baseline | float | 8.1 |
Predecessor: NA
PCHG represents the percent change from baseline for each vital sign observation.
It is calculated as (AVAL ‑ BASE) divided by BASE multiplied by 100, using the analysis value (AVAL) and baseline value (BASE) from ADaM.ADVS. If either AVAL or BASE is missing, or if BASE equals zero, PCHG is set to missing. Derivation Details: 1. For each observation in ADAM.ADVS, evaluate the availability of the analysis and baseline values. a. If both AVAL and BASE are non‑missing, compute the change from baseline (CHG) as AVAL minus BASE. b. Then assess the baseline value for zero. i. When BASE is not zero, calculate the percent change (PCHG) as (CHG divided by BASE) multiplied by 100. ii. When BASE equals zero, set PCHG to missing to avoid division by zero. c. If either AVAL or BASE is missing, set PCHG to missing. |
|
| ADT | Analysis Study Date | date | DATE9 |
Predecessor: NA
ADT records the date of the vital‑signs observation (derived from SDTM.VS.VSDTC) as a SAS date, but only when both the treatment start date (ADaM.ADSL.TRTSDT) and the vital‑signs collection date are present. It serves as the analysis study date for each record in the ADVS dataset.
Derivation Details: 1. Obtain the treatment start date (TRTSDT) from ADaM.ADSL for each subject (USUBJID). 2. Obtain the vital‑signs collection date character variable (VSDTC) from SDTM.VS for each observation. 3. Merge the VS records with the corresponding ADSL record on USUBJID (and any additional keys required to keep observation‑level alignment) so that each VS observation carries the subject's TRTSDT. 4. For each merged observation, evaluate the presence of both dates: a. If TRTSDT is not missing and VSDTC is not missing, then: i. Convert VSDTC from its character representation to a SAS date value using the INPUT function with the YYMMDD10. informat. ii. Assign the resulting numeric date to ADT. iii. Apply the DATE9. format to ADT for display. b. If either TRTSDT or VSDTC is missing, leave ADT missing (no assignment). |
|
| ADY | Analysis Study Day | integer | 8 |
Predecessor: NA
ADY is the analysis study day for each vital signs observation, indicating the number of days relative to the subject's treatment start date. It is derived by converting the collection date (VSDTC) from SDTM.VS to a numeric date, subtracting the treatment start date (TRTSDT) from ADaM.ADSL, and adding one when the collection date is on or after the start date.
Derivation Details: 1. Identify the source variables required for ADY. a. VSDTC from SDTM.VS (date/time of collection). b. TRTSDT from ADaM.ADSL (treatment start date). 2. For each vital‑sign observation, bring the subject's TRTSDT into the record by matching on USUBJID. 3. Verify that both TRTSDT and VSDTC are present. a. If either variable is missing, do not assign ADY; it remains missing. 4. Convert the character collection date VSDTC to a SAS date value. a. Apply the YYMMDD10. informat to VSDTC, creating a numeric date variable (e.g., VS_DATE_NUM). b. If the conversion yields a missing value, ADY is not assigned and stays missing. 5. Compute ADY when the numeric collection date is available. a. Calculate the day difference: VS_DATE_NUM ‑ TRTSDT. b. Add 1 to the difference when VS_DATE_NUM is on or after TRTSDT (i.e., VS_DATE_NUM >= TRTSDT); otherwise add 0. c. Assign the resulting value to ADY. 6. The resulting ADY represents the analysis study day for that vital‑sign observation. |
|
| TRTSDT | Treatment Start Date | date | DATE9 | Predecessor: ADAM.ADSL.TRTSDT |
|
| VSORRESU | Orginal Units | text | 100 | Predecessor: SDTM.VS.VSORRESU |
|
| VISIT | Visit Name | text | 20 | Predecessor: SDTM.TV.VISIT |
|
| VISITNUM | Visit Number | integer | 8 | Predecessor: SDTM.TV.VISITNUM |
|
| VSDTC | Date/Time of Collection | text | 19 | Predecessor: SDTM.VS.VSDTC |
|
| AGE | Age | integer | 8 | Predecessor: SDTM.DM.AGE |
|
| SEX | Sex | text | 10 | Predecessor: SDTM.DM.SEX |
|
| RACE | Race | text | 50 | Predecessor: SDTM.DM.RACE |
|
| AVISITN | float | 8 |
Predecessor: NA
AVISITN is derived by taking the value of VISITNUM from the SDTM.VS dataset and dividing it by 6. The result of this division is assigned directly to AVISITN.
|
||
| AVISIT | text | 200 |
Predecessor: NA
AVISIT is created by taking the numeric visit number AVISITN from the ADaM.ADVS dataset, converting it to a character string, trimming any blanks, and then concatenating the word "Cycle" and the trimmed visit number with a single space between them. The resulting text is stored in AVISIT.
|
||
| TRTPN | integer | 8 |
Predecessor: NA
TRTPN is derived from the variable TRT01PN in the ADAM.ADSL dataset. For each subject, the planned treatment number (TRT01PN) is used as the value of TRTPN.
|
||
| TRTAN | integer | 8 |
Predecessor: NA
TRTAN is assigned the value of TRT01AN from the ADAM.ADSL dataset for each subject.
|
||
| TRTP | text | 20 |
Predecessor: NA
TRTP is taken directly from the variable TRT01P in the ADaM.ADSL dataset without any modification.
|
||
| TRTA | text | 20 |
Predecessor: NA
TRTA is assigned the value of TRT01A from the ADaM.ADSL dataset for each record.
|
||
| POSTBL | Post-Baseline Record Flag | text | 1 |
Predecessor: NA
Set POSTBL to "Y" when the visit number (AVISITN) from ADaM.ADVS is greater than 0.
|
|
| CRIT1FL | Criterion Flag | text | 20 |
Predecessor: NA
CRIT1FL assigns a clinical category flag for each vital‑sign observation based on the parameter code (PARAMCD) and its measured value (AVAL). The flag reflects predefined categories such as hypotension, hypertension, bradycardia, tachycardia, fever, hypothermia, and related conditions for systolic blood pressure, diastolic blood pressure, heart rate, temperature, and pulse oximetry. The variable is derived directly from ADaM.ADVS.PARAMCD and ADaM.ADVS.AVAL.
Derivation Details: 1. Process each observation in ADaM.ADVS. a. Initialize CRIT1FL to a blank value before any conditional checks. 2. Apply a branching logic based on the value of ADaM.ADVS.PARAMCD. a. When PARAMCD equals "SYSBP": i. If ADaM.ADVS.AVAL is less than 90, assign CRIT1FL = "HYPOTENSION". ii. Else if ADaM.ADVS.AVAL is greater than 180, assign CRIT1FL = "HYPERTENSION". iii. Otherwise, assign CRIT1FL = "NORMAL". b. When PARAMCD equals "DIABP": i. If ADaM.ADVS.AVAL is less than 60, assign CRIT1FL = "LOW DIASTOLIC". ii. Else if ADaM.ADVS.AVAL is greater than 100, assign CRIT1FL = "HIGH DIASTOLIC". iii. Otherwise, assign CRIT1FL = "NORMAL". c. When PARAMCD equals "HR": i. If ADaM.ADVS.AVAL is less than 60, assign CRIT1FL = "BRADYCARDIA". ii. Else if ADaM.ADVS.AVAL is greater than 100, assign CRIT1FL = "TACHYCARDIA". iii. Otherwise, assign CRIT1FL = "NORMAL". d. When PARAMCD equals "TEMP": i. If ADaM.ADVS.AVAL exceeds 38.0, assign CRIT1FL = "FEVER". ii. Else if ADaM.ADVS.AVAL is below 36.0, assign CRIT1FL = "HYPOTHERMIA". iii. Otherwise, assign CRIT1FL = "NORMAL". e. When PARAMCD equals "PULOX": i. If ADaM.ADVS.AVAL is less than 90, assign CRIT1FL = "SEVERE HYPOXEMIA". ii. Else if ADaM.ADVS.AVAL is less than 95, assign CRIT1FL = "HYPOXEMIA". iii. Otherwise, assign CRIT1FL = "NORMAL". f. For any other PARAMCD values, set CRIT1FL to a blank value. |
Go to the top of the Define-XML document
Methods
| Method | Type | Description |
|---|---|---|
| ADRESP.ADT derivation | Computation | For each subject (USUBJID), locate the response record in SDTM.RS that has the smallest response_order value (i.e., the best response). From that record, take the response date contained in the variable RSDTC (originally a character date/time). Assign this date to ADT in the ADRESP analysis dataset. The ADT value therefore represents the date of the best response for each subject. |
| ADRESP.ADY derivation | Computation | When both the analysis date (ADT) ‑ which originates from the response date derived from SDTM.RS.RSDTC ‑ and the treatment start date (TRTSDT) from ADaM.ADSL are present, ADY is set to the number of days between them, calculated as ADT minus TRTSDT. |
| ADRESP.ANL01FL derivation | Computation | In the final ADAM.ADRESP dataset, ANL01FL is derived from the disease‑response information in SDTM.RS. For each subject (USUBJID), the best response is identified as the RSSTRESC value that has the smallest RESPONSE_ORDER. If this best response is present (i.e., not missing), ANL01FL is set to "Y". If no best response is present (the best response is missing), ANL01FL is set to a blank string, indicating the record is not included in the primary analysis. |
| ADRESP.ASEQ derivation | Computation | ASEQ assigns a running number to each response record for a subject, starting at 1 for the first record and increasing by one for each subsequent record. The sequence restarts when a new USUBJID is encountered. Derivation Details: 1. Within the DATA step that creates ADRS from ADRESP_STRUCT, retain a counter variable SEQ and initialize it to zero before the first observation is read. 2. Process the data with a BY statement on USUBJID so that the automatic flag FIRST.USUBJID is available for each record. a. When FIRST.USUBJID is true, reset SEQ to zero to start a new sequence for the new subject. b. Increment SEQ by one for the current observation (SEQ = SEQ + 1). 3. Assign the target variable ASEQ the current value of SEQ for each observation, thereby creating a running number that restarts for each USUBJID. |
| ADRESP.AVALC derivation | Computation | AVALC records the subject's disease response derived from the RSSTRESC variable in the SDTM RS domain. Missing responses are set to "NE" (Not Evaluable). For records representing Best Overall Response (PARAMCD= "BOR"), a complete response is coded as "Y", any other evaluable response as "N", and not evaluable responses remain "NE". Derivation Details: 1. Aggregate the disease response information from the SDTM.RS dataset (library sdtm) to determine each subject's best response: a. For each USUBJID, evaluate all records of RSSTRESC and select the value associated with the smallest response_order (the best response). b. Store this selected value in a temporary variable named BEST_RESPONSE. c. Create a working ADRESP record (ADRS_BOR) and assign AVALC the value of BEST_RESPONSE for each subject. 2. Handle subjects who have no post‑baseline response records: a. After the BEST_RESPONSE assignment, check if AVALC is missing. b. If missing, set AVALC to the character string "NE" to indicate Not Evaluable. 3. Derive the AVALC for records where PARAMCD equals "BOR": a. For each BOR record, examine the current value of AVALC. b. If AVALC equals "CR", replace AVALC with "Y" to indicate a complete response. c. Else, if AVALC is any value other than "NE", replace AVALC with "N" to indicate an evaluable but non‑complete response. d. Else (when AVALC is already "NE"), retain AVALC as "NE". 4. The final AVALC values, after applying the above rules, are written to the ADRESP analysis dataset in the ADAM library. |
| ADRESP.DOMAIN derivation | Computation | "ADRESP" |
| ADRESP.PARAM derivation | Computation | Start with the source dataset ADRESP_STRUCT, which contains the variable PARAMCD. For every record where PARAMCD equals "BOR", create a record and assign PARAM the constant value "Best Overall Response". Then, for each of those BOR records, create an additional record representing Objective Response and assign PARAM the constant value "Objective Response". No other conditions or transformations are applied to PARAM. |
| ADRESP.PARAMCD derivation | Computation | Starting with the source ADaM dataset ADRS, each record is assigned PARAMCD the constant value "BOR". Then, a subsequent processing step checks each record; if PARAMCD equals "BOR", it is overwritten with the constant value "OR". No other conditions or modifications are applied to PARAMCD. |
| ADRESP.PARCAT1 derivation | Computation | In the ADRESP_STRUCT dataset the variable PARCAT1 (Parameter Category 1) is defined. In the subsequent ADRS_BOR_1 dataset, PARCAT1 is assigned the literal value "TUMOR RESPONSE" for every record. This value is then retained when the data are sorted into the final analysis dataset ADAM.ADRESP. |
| ADRESP.PARCAT2 derivation | Computation | For each subject (USUBJID) in the SDTM.RS dataset, identify the response record that has the smallest numeric value of RESPONSE_ORDER. Take the VISIT value from that record and assign it to PARCAT2. In other words, PARCAT2 receives the visit name associated with the best (minimum RESPONSE_ORDER) response for each subject. |
| ADSL.AGEGR1 derivation | Computation | Derives the AGEGR1 variable by assigning each subject to a categorical age band based on their AGE value. The resulting age groups are used to classify subjects into predefined clinical age brackets. Derivation Details: 1. In the DATA step that creates the ADSL_FLG dataset (which contains the variable AGE sourced from SDTM.DM.AGE), assign AGEGR1 based on the value of AGE: a. If AGE is less than 60, set AGEGR1 to "<60". b. If AGE is greater than or equal to 60 and less than 65, set AGEGR1 to "60 to 64". c. If AGE is between 65 and 74 inclusive, set AGEGR1 to "65 to 74". d. If AGE is between 75 and 85 inclusive, set AGEGR1 to "75 to 85". e. For all other values (AGE greater than 85), set AGEGR1 to "85+". |
| ADSL.BMIBL derivation | Computation | BMIBL is calculated from baseline height and weight recorded in the vital signs domain (SDTM.VS). Height values are converted to meters, BMI is computed as weight divided by height squared, and the result is rounded to two decimal places. The final BMI value is merged into the subject‑level analysis dataset (ADSL). Derivation Details: 1. From the merged height‑weight dataset (originating from SDTM.VS) evaluate each subject record: a. Verify that HEIGHT_MTR (height in meters) and WEIGHT are both non‑missing. i. When both are present, compute a temporary BMI value as WEIGHT divided by (HEIGHT_MTR * HEIGHT_MTR). 2. Assign the target variable BMIBL by rounding the temporary BMI to two decimal places (BMIBL = round(BMI,0.01)). 3. Merge BMIBL into the subject‑level analysis dataset ADAM.ADSL: a. Perform a merge on USUBJID between ADAM.ADSL and the dataset containing BMIBL. b. Retain the BMIBL value for each subject, overwriting any prior BMIBL content. |
| ADSL.COUNTRY derivation | Computation | Set COUNTRY to "USA" when the site identifier (SDTM.DM.SITEID) is either "03" or "12". For all other SITEID values, keep the original COUNTRY value from the source dataset (SDTM.DM.COUNTRY). |
| ADSL.DCSREAS derivation | Computation | The variable DCSREAS captures the reason for a subject's discontinuation from the study. It is assigned the value 'DEATH' when the subject's date of death (ADaM.ADSL.DTHDT) is earlier than the study end date derived from the visit end date (SDTM.SV.SVENDTC). Derivation Details: 1. For each subject record that contains the visit end date SVENDTC (from SDTM.SV) and the death date DTHDT (from ADaM.ADSL), evaluate the condition: DTHDT is not missing AND the study‑end date EOSDT (the SAS date conversion of SVENDTC) is greater than DTHDT. If the condition is true, assign the character value 'DEATH' to DCSREAS; if the condition is false, leave DCSREAS unchanged (remain missing). |
| ADSL.DCTREAS derivation | Computation | DCTREAS captures the reason a subject discontinued treatment. It is set to "DEATH" when the end‑of‑treatment date derived from EX.EXENDTC is later than the subject's date of death (ADSL.DTHDT). Derivation Details: 1. Merge the exposure records from SDTM.EX with the subject‑level records from ADaM.ADSL using USUBJID as the key, creating a combined working dataset. a. Ensure each record retains the original EXENDTC value from SDTM.EX and the DTHDT value from ADaM.ADSL. 2. Convert the character variable EXENDTC to a SAS date variable named EOTDT. a. Apply the IS8601DA informat to EXENDTC after stripping any leading or trailing blanks. 3. Evaluate the relationship between the derived end‑of‑treatment date (EOTDT) and the subject's death date (DTHDT). a. If EOTDT is greater than DTHDT, assign the character value "DEATH" to DCTREAS. b. This assignment overwrites any existing value of DCTREAS for that record. 4. For all other records where the condition in step 3 is not met, leave DCTREAS unchanged (it remains missing or retains any prior value). |
| ADSL.DOMAIN derivation | Computation | "ADSL" |
| ADSL.DTHCAUS derivation | Computation | The variable DTHCAUS (Cause of Death) is taken directly from the source ADaM subject‑level dataset ADSL and placed into the final analysis dataset ADAM.ADSL without any transformation or conditional logic. |
| ADSL.DTHDT derivation | Computation | For each record, the variable DTHDT is created from the source variable DTHDTC in SDTM.DM. If DTHDTC contains a non‑missing value, any leading or trailing blanks are removed and the character string is interpreted as an ISO‑8601 calendar day (YYYY‑MM‑DD). The resulting numeric representation of that day is assigned to DTHDT. If DTHDTC is missing, DTHDT is set to missing. |
| ADSL.DTHDY derivation | Computation | DTHDY is derived from the date of death (ADaM.ADSL.DTHDT) and the treatment start date (TRTSDT) that originates from the reference start date (SDTM.DM.RFSTDTC). It represents the study day on which death occurred, calculated as the number of days from treatment start to death, counting the start day as day 1. The value is assigned only when both the date of death and the treatment start date are present. Derivation Details: 1. For each record in the ADaM ADSL dataset: a. Verify that the death date variable DTHDT (from ADaM.ADSL) and the treatment start date variable TRTSDT (derived from SDTM.DM.RFSTDTC) are both non‑missing. b. When both dates are present, compute DTHDY as DTHDT ‑ TRTSDT + 1 and assign this value to DTHDY. c. If either DTHDT or TRTSDT is missing, do not assign a value; DTHDY remains missing. |
| ADSL.DTHFL derivation | Computation | The variable DTHFL in ADAM.ADSL indicates whether a death date is recorded. It is set to the character Y when the source variable DTHDTC from SDTM.DM is non‑missing; if DTHDTC is missing, DTHFL is set to a blank (empty) character. |
| ADSL.EOSDT derivation | Computation | EOSDT is derived from the visit end date (SVENDTC) in the SDTM.SV dataset. If a subject's death date (DTHDT) from ADaM.ADSL is present and occurs before the visit end date, the death date replaces it. The final value is stored as a DATE9‑formatted end‑of‑study date. Derivation Details: 1. a. Sort SDTM.SV by USUBJID and VISITNUM to establish a unique ordering for each subject's visit. b. Sort ADaM.ADSL by USUBJID to align subject‑level information. c. Merge the sorted SDTM.SV with ADaM.ADSL on USUBJID, creating a working dataset that contains SVENDTC and DTHDT for each observation. 2. a. For each observation where SVENDTC is not missing, convert SVENDTC from its character representation to a SAS date using the IS8601DA. informat. b. Assign the converted SAS date to EOSDT. 3. a. If DTHDT is not missing and DTHDT is earlier than the current EOSDT value, replace EOSDT with DTHDT. 4. a. Apply the DATE9. format to EOSDT so that the final value is stored as a DATE9‑formatted end‑of‑study date. |
| ADSL.EOSDY derivation | Computation | EOSDY records the study day on which a subject's participation ended. It is derived by counting the days from the treatment start date (SDTM.DM.RFSTDTC) to the study end date (SDTM.SV.SVENDTC), using the date of death (ADaM.ADSL.DTHDT) if it occurs earlier, and includes the start day. Derivation Details: 1. Ensure prerequisite date variables are available in ADAM.ADSL for each subject. a. TRTSDT must contain the SAS date derived from SDTM.DM.RFSTDTC. b. EOSDT must contain the SAS date derived from SDTM.SV.SVENDTC, with the value replaced by ADaM.ADSL.DTHDT when death occurs earlier. 2. Derive the study‑day termination variable EOSDY. a. For each subject record, evaluate the relationship between TRTSDT and EOSDT. i. If TRTSDT is less than or equal to EOSDT, assign EOSDY the value of EOSDT minus TRTSDT plus 1. ii. If TRTSDT is greater than EOSDT, do not assign EOSDY, leaving it missing. |
| ADSL.EOSSTT derivation | Computation | In the ADAM.ADSL dataset, the variable EOSSTT (End of Study Status) is set to the text value COMPLETED for any record whose VISITNUM (Visit Number) from the SDTM.SV source equals 48. |
| ADSL.EOTDT derivation | Computation | EOTDT records the end of treatment date for each subject. It is derived from the exposure end date (EXENDTC) in SDTM.EX, and if a subject's death date (DTHDT) in ADaM.ADSL occurs earlier, the death date is used instead. Derivation Details: 1. a. Identify the source variables needed for the derivation. i. From SDTM.EX obtain EXENDTC for each USUBJID. ii. From ADaM.ADSL obtain DTHDT for each USUBJID. 2. a. Merge the source records on the subject identifier. i. Perform a one‑to‑one merge of the exposure record (containing EXENDTC) with the subject‑level record (containing DTHDT) using USUBJID as the key, retaining all subjects present in the exposure dataset. 3. a. Create the provisional End of Treatment Date. i. If EXENDTC is not missing, convert the character value to a SAS date using the IS8601DA informat and assign the result to EOTDT. ii. If EXENDTC is missing, leave EOTDT missing (no assignment). 4. a. Apply the death‑date rule to adjust EOTDT. i. Compare the provisional EOTDT with DTHDT. ii. If the provisional EOTDT is later than DTHDT, replace EOTDT with DTHDT. 5. a. Format the final variable for reporting. i. Apply the DATE9. format to EOTDT. |
| ADSL.EOTDY derivation | Computation | EOTDY represents the study day on which treatment was discontinued. It is calculated as the number of days from the treatment start date (derived from SDTM.DM.RFSTDTC) to the end‑of‑treatment date (derived from SDTM.EX.EXENDTC), adjusted to the subject's death date (ADaM.ADSL.DTHDT) if the recorded end date occurs later, and then adding one day. The calculation is performed in the ADaM ADSL dataset. Derivation Details: 1. Ensure the working ADaM subject‑level dataset contains the three source variables: a. RFSTDTC from SDTM.DM (character reference start date) b. EXENDTC from SDTM.EX (character end‑of‑treatment date) c. DTHDT from ADaM.ADSL (numeric date of death) i. These variables are merged or joined to the ADaM dataset prior to any calculation. 2. Create the numeric treatment‑start date (TRTSDT): a. If RFSTDTC is not missing, apply the INPUT function with the IS8601DA informat to convert the character value to a SAS date and assign the result to TRTSDT. 3. Create the numeric end‑of‑treatment date (EOTDT): a. If EXENDTC is not missing, apply the INPUT function with the IS8601DA informat to convert the character value to a SAS date and assign the result to EOTDT. 4. Adjust EOTDT for subjects who died before the recorded end‑of‑treatment date: a. If both EOTDT and DTHDT are non‑missing and EOTDT > DTHDT, then set EOTDT = DTHDT. 5. Derive the study day of treatment discontinuation (EOTDY): a. If TRTSDT and the adjusted EOTDT are non‑missing and TRTSDT <= EOTDT, then compute EOTDY as EOTDT ‑ TRTSDT + 1. b. If the condition in step 5a is not satisfied, leave EOTDY missing. 6. The resulting EOTDY variable is retained in the final ADaM.ADSL dataset as the study day of treatment discontinuation. |
| ADSL.EOTSTT derivation | Computation | For each record, if the visit number (VISITNUM) from the SDTM.SV dataset equals 48, assign the value "COMPLETED" to the variable EOTSTT. |
| ADSL.ETHNIC derivation | Computation | The variable ETHNIC is taken directly from the source dataset ADSL_ALL and placed into the analysis dataset ADAM.ADSL. |
| ADSL.HEIGHTBL derivation | Computation | Height (cm) at Baseline (HEIGHTBL) is taken from the numeric result VSSTRESN in the SDTM.VS domain. When the original units variable VSORRESU equals 'inch', the VSSTRESN value is converted to centimeters using the conversion factor of 2.54 centimeters per inch; the resulting value is assigned to HEIGHTBL. |
| ADSL.ITTFL derivation | Computation | ITTF L is assigned the character value 'Y' for a subject when the source variable TRT01PN from the ADaM ADSL dataset is non‑missing (i.e., contains a value). |
| ADSL.NUMLESBL derivation | Computation | For each subject (USUBJID), assign NUMLESBL the value of COUNTER, where COUNTER is set to 1 for the first record of that subject and increased by 1 for each additional record. This results in NUMLESBL representing the total count of baseline lesions for the subject. |
| ADSL.RANDDT derivation | Computation | RANDDT is derived from the reference start date SDTM.DM.RFSTDTC. When RFSTDTC contains a non‑missing value, the character string is interpreted as an ISO‑8601 date and converted to a SAS date variable called TRTSDT. RANDDT is then assigned the calendar day that occurs immediately before TRTSDT (one day earlier). |
| ADSL.RFICDT derivation | Computation | RFICDT is derived from the character variable RFICDTC in the SDTM.DM dataset. For each record, if RFICDTC contains a non‑missing value, that value is interpreted as an ISO 8601 date (e.g., YYYY‑MM‑DD) and stored as the numeric Informed Consent date. If RFICDTC is missing, RFICDT is left missing. |
| ADSL.SAFFL derivation | Computation | In the ADaM ADSL dataset, SAFFL is assigned the character value "Y" for any record where the source variable TRT01AN (Actual Treatment 1(N)) is non‑missing. |
| ADSL.STUDYDUR derivation | Computation | STUDYDUR represents the length of a subject's participation in the study, expressed in months. It is calculated from the treatment start date (derived from SDTM.DM.RFSTDTC) and the treatment end date (derived from SDTM.EX.EXENDTC, but limited to the subject's death date ADaM.ADSL.DTHDT when that occurs earlier). The difference in days between these dates is converted to months using the average days per month and then rounded to two decimal places. Derivation Details: 1. Confirm that the variables TRTSDT (treatment start date) and TRTEDT (treatment end date) are available in the current data set. TRTSDT is derived from SDTM.DM.RFSTDTC and TRTEDT is derived from SDTM.EX.EXENDTC, with a possible cap at ADaM.ADSL.DTHDT. 2. Compute the raw study duration in months and assign it to STUDYDUR: a. Calculate the day difference: (TRTEDT ‑ TRTSDT + 1). b. Convert days to months by dividing the result by the average days per month (30.4375). c. Store the computed value in STUDYDUR. 3. Round STUDYDUR to two decimal places: a. Apply the ROUND function with a rounding unit of 0.01 to the value in STUDYDUR. b. The rounded value replaces the previous STUDYDUR value. 4. The final STUDYDUR now reflects the subject's participation length in the study, expressed in months and rounded to two decimal places. |
| ADSL.TRT01A derivation | Computation | TRT01A is created by taking the value of ARMCD from the SDTM.DM dataset and removing any leading or trailing blank spaces before assigning it to the variable. |
| ADSL.TRT01AN derivation | Computation | TRT01AN is derived by copying the numeric value of TRT01PN from the source dataset ADaM.ADSL for each record. |
| ADSL.TRT01P derivation | Computation | Set TRTP01P to the value of ARMCD from the SDTM DM domain (SDTM.DM), removing any leading or trailing blanks. |
| ADSL.TRT01PN derivation | Computation | TRT01PN records the planned treatment number by converting the arm code (ARMCD) from SDTM.DM into a numeric identifier, assigning distinct values for the VERICURE and CONTROL arms and a default value for all other arms. It is generated in the ADaM ADSL dataset as the primary treatment variable. Derivation Details: 1. Obtain the arm code for each subject from the source dataset SDTM.DM, variable ARMCD. a. Ensure the SDTM.DM dataset is sorted by USUBJID so that each subject's record is uniquely identified. 2. In the ADaM ADSL data step, create or update the target variable TRT01PN based on the value of ARMCD. a. For each observation, evaluate ARMCD and assign TRT01PN as follows: i. If ARMCD equals "VERICURE", set TRT01PN to 1. ii. Else if ARMCD equals "CONTROL", set TRT01PN to 2. iii. For any other ARMCD value, set TRT01PN to 99. |
| ADSL.TRTSDT derivation | Computation | For each record, if the character variable SDTM.DM.RFSTDTC is non‑missing, strip any leading or trailing blanks, convert the cleaned string to a SAS date using the IS8601DA informat (ISO‑8601 date format), and assign that date to TRTSDT (Treatment Start Date). If RFSTDTC is missing, TRTSDT is left missing. |
| ADSL.USUBJID derivation | Computation | USUBJID is taken directly from SDTM Demographics domain (SDTM.DM.USUBJID). |
| ADSL.WEIGHTBL derivation | Computation | WEIGHTBL is populated with the baseline weight value taken directly from the VSSTRESN variable in the SDTM.VS dataset. |
| ADTTE.ADT derivation | Computation | ADT is the analysis date used for each time‑to‑event record. It is set to the relevant event date‑‑death date for overall survival, the earlier of progression or death for progression‑free survival, and progression or death (whichever is later) for duration of response‑‑otherwise it is assigned a censoring date derived from the last known alive date, last assessment date, or randomization date. The dates are sourced from ADaM.ADSL (DTHDT, DTHFL, RANDDT, EOSDT, EOTDT) and SDTM.RS (RSDTC). Derivation Details: 1. Derive the subject's last known alive date (LSTALVDT) from ADaM.ADSL. a. If ADaM.ADSL.DTHFL = "Y" then set LSTALVDT = ADaM.ADSL.DTHDT. b. Otherwise set LSTALVDT to the first non‑missing value among ADaM.ADSL.EOSDT, ADaM.ADSL.EOTDT, and ADaM.ADSL.RANDDT. 2. Obtain the first progression date (PDDT) from SDTM.RS. a. Identify records where the progression flag is true and keep the earliest SDTM.RS.RSDTC per USUBJID. b. Convert the character date SDTM.RS.RSDTC to a SAS date and store as PDDT. 3. Obtain the last assessment date (LSTAESDT) from SDTM.RS. a. Keep the latest SDTM.RS.RSDTC per USUBJID. b. Convert the character date to a SAS date and store as LSTAESDT. 4. Compute the overall‑survival censoring date (OS_CNSRDT). a. If both LSTALVDT and LSTAESDT are non‑missing, set OS_CNSRDT = MAX(LSTALVDT, LSTAESDT). b. If only LSTALVDT is non‑missing, set OS_CNSRDT = LSTALVDT. c. If only LSTAESDT is non‑missing, set OS_CNSRDT = LSTAESDT. d. If neither is available, set OS_CNSRDT = ADaM.ADSL.RANDDT + 365 days (default one‑year censor). 5. Compute the progression‑free‑survival censoring date (PFS_CNSRDT). a. If LSTAESDT is non‑missing, set PFS_CNSRDT = MAX(LSTAESDT, OS_CNSRDT). b. Otherwise set PFS_CNSRDT = OS_CNSRDT. 6. Assign ADT for overall‑survival (OS) records. a. If ADaM.ADSL.DTHFL = "Y" then set ADT = LSTALVDT (death date). b. Otherwise set ADT = OS_CNSRDT (censoring date). 7. Assign ADT for progression‑free‑survival (PFS) records. a. If a progression event exists (PD_FL = "Y" and PDDT is non‑missing) then: i. If a death event also exists (ADaM.ADSL.DTHFL = "Y" and LSTALVDT is non‑missing) then compare dates: ‑ If PDDT <= LSTALVDT, set ADT = PDDT (earlier progression). ‑ Else set ADT = LSTALVDT (earlier death). ii. If no death event, set ADT = PDDT (progression date). b. Else if no progression but a death event exists, set ADT = LSTALVDT (death date). c. Else (no progression and no death), set ADT = PFS_CNSRDT (censoring date). 8. Assign ADT for duration‑of‑response (DOR) records (responders only). a. If both progression date (prog_date) and death date (death_date) are non‑missing, set ADT = MAX(prog_date, death_date) (later of the two). b. Else if only prog_date is non‑missing, set ADT = prog_date. c. Else if only death_date is non‑missing, set ADT = death_date. d. Else set ADT = last_assessment_date (censoring at last assessment). |
| ADTTE.ASEQ derivation | Computation | ASEQ assigns a sequential record number for each subject in the ADTTE analysis dataset, restarting the count when a new USUBJID begins. Derivation Details: 1. Process the ADTTE dataset using BY‑group logic on USUBJID (and any additional BY variables) so that the first record of each subject can be identified. 2. For every observation, assign ASEQ the current value of the sequential counter that increments with each record and automatically resets when a new USUBJID begins, thereby providing a subject‑specific record number. |
| ADTTE.AVAL derivation | Computation | AVAL is the number of days from the observation start date to the event or censoring date for each time‑to‑event record (overall survival, progression‑free survival, or duration of response). The start date is the randomization date for OS and PFS and the first response date for DOR; the event date is death, progression, or the appropriate censoring date, and any negative difference is reset to zero. Derivation Details: 1. For overall survival (OS) records: a. Determine the analysis date (ADT) as either the death date (LSTALVDT) when DTHFL='Y' or the censoring date (OS_CNSRDT) otherwise. b. Set the start date (STARTDT) to the randomization date (RANDDT) from ADaM.ADSL. c. Compute AVAL as the difference in days between ADT and STARTDT. d. If the computed AVAL is negative, reset AVAL to zero. 2. For progression‑free survival (PFS) records: a. Choose ADT based on the earliest of progression date (PDDT) and death date (LSTALVDT) when both are present; otherwise use the available event date or the censoring date (PFS_CNSRDT). b. Set STARTDT to RANDDT from ADaM.ADSL. c. Compute AVAL as ADT minus STARTDT. d. Apply the non‑negative rule: if AVAL < 0 then AVAL = 0. 3. For duration of response (DOR) records (responders only): a. Determine ADT as the later of progression date (PROG_DATE) and death date (DEATH_DATE) when both exist; otherwise use the available event date or the last assessment date (LAST_ASSESSMENT_DATE) for censoring. b. Set STARTDT to the first response date (FIRST_RESP_DATE) derived from SDTM.RS.RSDTC. c. Compute AVAL as ADT minus STARTDT. d. Enforce non‑negative values: if AVAL < 0 then AVAL = 0. |
| ADTTE.CNSDTDSC derivation | Computation | The CENSOR DATE DESCRIPTION (CNSDTDSC) provides a textual label describing the censoring condition for each time‑to‑event record in the ADTTE dataset. When a record is censored (CNSR=1), it indicates "Alive, Last assessment date added" for overall survival (PARAMCD='OS') or "Alive, No Progression" for progression‑free survival and duration of response (PARAMCD='PFS' or 'DOR'); otherwise the field is left blank. Derivation Details: 1. Iterate over each observation in the ADaM.ADTTE dataset. a. Evaluate the censor indicator variable CNSR. i. If CNSR equals 1, then assess the parameter code variable PARAMCD. ‑ When PARAMCD is 'OS', assign the character string "Alive, Last assessment date added" to CNSDTDSC. ‑ When PARAMCD is either 'PFS' or 'DOR', assign the character string "Alive, No Progression" to CNSDTDSC. ii. If CNSR does not equal 1, assign an empty string to CNSDTDSC. |
| ADTTE.CNSR derivation | Computation | The CENSOR variable indicates whether a subject's time‑to‑event observation is censored (1) or an event occurred (0). For overall survival it is set to 0 when a death is recorded in ADaM.ADSL.DTHFL/DTHDT and to 1 otherwise. For progression‑free survival and duration‑of‑response it is 0 when the earliest of progression (from SDTM.RS.RSDTC) or death occurs, and 1 when the subject remains alive and progression‑free at the last assessment date. Derivation Details: 1. Overall Survival (OS) records a. Retrieve the death flag from ADAM.ADSL.DTHFL. b. If DTHFL equals "Y" then assign CNSR = 0 to indicate an event (death) occurred. c. Otherwise assign CNSR = 1 to indicate the observation is censored. 2. Progression‑Free Survival (PFS) records a. Obtain the first progression date (PDDT) from the first PD record in SDTM.RS. b. Obtain the last alive date (LSTALVDT) from ADAM.ADSL: if DTHFL = "Y" then LSTALVDT = ADAM.ADSL.DTHDT, else LSTALVDT = the earliest non‑missing of ADAM.ADSL.EOSDT, ADAM.ADSL.EOTDT, ADAM.ADSL.RANDDT. c. Evaluate the presence of progression and death: i. If both PDDT and DTHFL = "Y" are present, compare dates: ‑ If PDDT <= LSTALVDT then assign CNSR = 1 (progression is the first event). ‑ Otherwise assign CNSR = 0 (death occurs first and counts as the event for PFS). ii. If only progression is present (PDDT not missing and DTHFL not "Y"), assign CNSR = 1. iii. If only death is present (DTHFL = "Y" and PDDT missing), assign CNSR = 0. iv. If neither progression nor death is present, use the last assessment date from SDTM.RS (LSTAESDT) and assign CNSR = 1 (censored at last assessment). 3. Duration of Response (DOR) records for responders a. Retrieve the progression‑after‑response date (PROG_DATE) from the first PD after response in SDTM.RS. b. Retrieve the death date (DEATH_DATE) from ADAM.ADSL.DTHDT when DTHFL = "Y". c. Determine the event status: i. If PROG_DATE is not missing or DEATH_DATE is not missing, assign CNSR = 0 (event occurred ‑ either progression or death after response). ii. If both PROG_DATE and DEATH_DATE are missing, retrieve the last assessment date (LAST_ASSESSMENT_DATE) from SDTM.RS and assign CNSR = 1 (censored at last assessment). 4. Consolidation a. After CNSR is set in each of the OS, PFS, and DOR data steps, combine the three record types into ADAM.ADTTE using a SET statement. b. The final ADAM.ADTTE dataset contains CNSR correctly flagged for each analysis record. |
| ADTTE.DOMAIN derivation | Computation | "ADTTE" |
| ADTTE.EVNTDESC derivation | Computation | EVNTDESC records the description of the event that ends each time‑to‑event record, indicating either "Death", "Progression", or leaving the field blank when the observation is censored. The value is derived from the death flag/date in ADaM.ADSL and the progression date from SDTM.RS, with the earliest occurring event determining the description. Derivation Details: 1. Derive the subject's last alive date (LSTALVDT) from ADaM.ADSL. a. If ADaM.ADSL.DTHFL = "Y" then set LSTALVDT = ADaM.ADSL.DTHDT. b. Otherwise set LSTALVDT to the earliest non‑missing date among ADaM.ADSL.EOSDT, ADaM.ADSL.EOTDT, and ADaM.ADSL.RANDDT. 2. Obtain the progression date (PROG_DATE) from SDTM.RS. a. Convert SDTM.RS.RSDTC (character) to a SAS date value and assign to PROG_DATE. 3. Create a flag indicating the presence of a progression event (PD_FL). a. If PROG_DATE is not missing then set PD_FL = "Y"; otherwise set PD_FL = "N". 4. Assign EVNTDESC for overall survival (OS) records. a. If ADaM.ADSL.DTHFL = "Y" then EVNTDESC = "Death". b. If ADaM.ADSL.DTHFL is not "Y" then EVNTDESC = "" (blank). 5. Assign EVNTDESC for progression‑free survival (PFS) records. a. If PD_FL = "Y" and PROG_DATE <= LSTALVDT then EVNTDESC = "Progression". b. Else if PD_FL = "Y" and ADaM.ADSL.DTHFL = "Y" and LSTALVDT < PROG_DATE then EVNTDESC = "Death". c. Else if ADaM.ADSL.DTHFL = "Y" then EVNTDESC = "Death". d. Else EVNTDESC = "" (blank). 6. Assign EVNTDESC for duration‑of‑response (DOR) records (events after response). a. If both PROG_DATE and ADaM.ADSL.DTHDT are present and PROG_DATE <= ADaM.ADSL.DTHDT then EVNTDESC = "Progression". b. Else if both are present and ADaM.ADSL.DTHDT < PROG_DATE then EVNTDESC = "Death". c. Else if only PROG_DATE is present then EVNTDESC = "Progression". d. Else if only ADaM.ADSL.DTHDT is present then EVNTDESC = "Death". e. Else EVNTDESC = "" (blank). |
| ADTTE.PARAM derivation | Computation | When constructing the ADTTE dataset, the character variable PARAM is set according to the type of time‑to‑event record: * For records representing overall survival, PARAM is assigned the value "Overall Survival". * For records representing progression‑free survival, PARAM is assigned the value "Progression Free Survival". * For records representing duration of response, PARAM is assigned the value "Duration of Response". |
| ADTTE.PARAMCD derivation | Computation | When creating the ADTTE records, the variable PARAMCD is set to a fixed character value that identifies the type of time‑to‑event measurement. For every observation originating from the dataset WORK.ADTTE_DOR, PARAMCD is assigned the value "DOR". For every observation originating from the dataset WORK.ADTTE_OS, PARAMCD is assigned the value "OS". For every observation originating from the dataset WORK.ADTTE_PFS, PARAMCD is assigned the value "PFS". These assignments are made directly in the respective data steps before the datasets are combined and sorted into ADAM.ADTTE. |
| ADTTE.STARTDT derivation | Computation | For each record in the ADTTE analysis dataset, the variable STARTDT is set as follows: 1. If the record represents an overall survival (OS) or progression‑free survival (PFS) event, STARTDT is taken directly from the subject's randomization date (RANDDT) in the ADAM.ADSL dataset. 2. If the record represents a duration‑of‑response (DOR) event, STARTDT is the first response date. The first response date is obtained from the response date/time variable RSDTC in the SDTM.RS dataset; when RSDTC is not missing, its date component is extracted and used as STARTDT. Thus, STARTDT is either the randomization date (for OS and PFS) or the first response date (for DOR), depending on the type of event represented by the record. |
| ADTTE.USUBJID derivation | Computation | USUBJID is taken directly from SDTM Demographics domain (SDTM.DM.USUBJID). |
| ADVS.ABLFL derivation | Computation | ABLFL flags records that represent the analysis baseline by assigning a value of 'Y' when the visit number (AVISITN) equals 0 and the analysis value (AVAL) is present. The flag is derived from the ADAM.ADVS source dataset. Derivation Details: 1. Start with the source ADAM.ADVS dataset which contains the variables AVISITN and AVAL. a. Ensure each record retains its original AVISITN and AVAL values. b. Create the variable ABLFL as missing for every record because it does not exist in the source. 2. In the step that generates the intermediate dataset (e.g., ADV..._CHG), apply the baseline flag logic: a. Evaluate whether AVISITN equals 0 for the current observation. b. Simultaneously check that AVAL is not missing. c. If both conditions are true, assign the character value 'Y' to ABLFL. d. If either condition is false, leave ABLFL unchanged (remains missing). 3. Carry forward the ABLFL variable unchanged through subsequent processing steps (retain it in the dataset's KEEP/RETAIN list) so that the flag assigned in step 2 appears in the final ADAM.ADVS output. |
| ADVS.ADT derivation | Computation | ADT records the date of the vital‑signs observation (derived from SDTM.VS.VSDTC) as a SAS date, but only when both the treatment start date (ADaM.ADSL.TRTSDT) and the vital‑signs collection date are present. It serves as the analysis study date for each record in the ADVS dataset. Derivation Details: 1. Obtain the treatment start date (TRTSDT) from ADaM.ADSL for each subject (USUBJID). 2. Obtain the vital‑signs collection date character variable (VSDTC) from SDTM.VS for each observation. 3. Merge the VS records with the corresponding ADSL record on USUBJID (and any additional keys required to keep observation‑level alignment) so that each VS observation carries the subject's TRTSDT. 4. For each merged observation, evaluate the presence of both dates: a. If TRTSDT is not missing and VSDTC is not missing, then: i. Convert VSDTC from its character representation to a SAS date value using the INPUT function with the YYMMDD10. informat. ii. Assign the resulting numeric date to ADT. iii. Apply the DATE9. format to ADT for display. b. If either TRTSDT or VSDTC is missing, leave ADT missing (no assignment). |
| ADVS.ADY derivation | Computation | ADY is the analysis study day for each vital signs observation, indicating the number of days relative to the subject's treatment start date. It is derived by converting the collection date (VSDTC) from SDTM.VS to a numeric date, subtracting the treatment start date (TRTSDT) from ADaM.ADSL, and adding one when the collection date is on or after the start date. Derivation Details: 1. Identify the source variables required for ADY. a. VSDTC from SDTM.VS (date/time of collection). b. TRTSDT from ADaM.ADSL (treatment start date). 2. For each vital‑sign observation, bring the subject's TRTSDT into the record by matching on USUBJID. 3. Verify that both TRTSDT and VSDTC are present. a. If either variable is missing, do not assign ADY; it remains missing. 4. Convert the character collection date VSDTC to a SAS date value. a. Apply the YYMMDD10. informat to VSDTC, creating a numeric date variable (e.g., VS_DATE_NUM). b. If the conversion yields a missing value, ADY is not assigned and stays missing. 5. Compute ADY when the numeric collection date is available. a. Calculate the day difference: VS_DATE_NUM ‑ TRTSDT. b. Add 1 to the difference when VS_DATE_NUM is on or after TRTSDT (i.e., VS_DATE_NUM >= TRTSDT); otherwise add 0. c. Assign the resulting value to ADY. 6. The resulting ADY represents the analysis study day for that vital‑sign observation. |
| ADVS.ASEQ derivation | Computation | ASEQ is assigned the value of VSSEQ from the SDTM.VS dataset. |
| ADVS.AVAL derivation | Computation | AVAL is assigned the value of VSSTRESN from the SDTM.VS dataset. The value is carried forward unchanged through the subsequent ADaM processing steps. |
| ADVS.AVALCAT1 derivation | Computation | In the initial ADVS0 dataset, the variable AVALCAT1 is assigned the constant value "VITAL SIGNS MEASUREMENT" for every record. This value is retained unchanged through subsequent processing steps and appears in the final ADAM.ADVS dataset. |
| ADVS.AVISIT derivation | Computation | AVISIT is created by taking the numeric visit number AVISITN from the ADaM.ADVS dataset, converting it to a character string, trimming any blanks, and then concatenating the word "Cycle" and the trimmed visit number with a single space between them. The resulting text is stored in AVISIT. |
| ADVS.AVISITN derivation | Computation | AVISITN is derived by taking the value of VISITNUM from the SDTM.VS dataset and dividing it by 6. The result of this division is assigned directly to AVISITN. |
| ADVS.BASE derivation | Computation | The BASE variable captures the baseline measurement for each observation, sourced from the original analysis value (AVAL). It serves as the reference value for subsequent change calculations. Baseline values are retained only for appropriate baseline records. Derivation Details: 1. Merge the original analysis dataset with the baseline dataset to create BASE. a. Read ADaM.ADVS as ADVS0, which provides the variable AVAL. b. Read the baseline source ADVS_BASE, which also contains AVAL representing the baseline measurement. c. Execute a MERGE of ADVS0 (IN=A) and ADVS_BASE, renaming ADVS_BASE.AVAL to BASE, without specifying a BY clause so that every record from ADVS0 is retained and BASE is attached where available. 2. Clear BASE for records that are not baseline visits. a. For each observation in the merged dataset, examine the visit number variable AVISITN (from ADaM.ADVS). b. If AVISITN is less than or equal to 0, assign a missing value to BASE. |
| ADVS.CHG derivation | Computation | For each observation, if the analysis value (AVAL) and the baseline value (BASE) from the ADaM.ADVS dataset are both non‑missing, calculate CHG as the difference: CHG = AVAL ‑ BASE. If either AVAL or BASE is missing, CHG remains missing. |
| ADVS.CRIT1FL derivation | Computation | CRIT1FL assigns a clinical category flag for each vital‑sign observation based on the parameter code (PARAMCD) and its measured value (AVAL). The flag reflects predefined categories such as hypotension, hypertension, bradycardia, tachycardia, fever, hypothermia, and related conditions for systolic blood pressure, diastolic blood pressure, heart rate, temperature, and pulse oximetry. The variable is derived directly from ADaM.ADVS.PARAMCD and ADaM.ADVS.AVAL. Derivation Details: 1. Process each observation in ADaM.ADVS. a. Initialize CRIT1FL to a blank value before any conditional checks. 2. Apply a branching logic based on the value of ADaM.ADVS.PARAMCD. a. When PARAMCD equals "SYSBP": i. If ADaM.ADVS.AVAL is less than 90, assign CRIT1FL = "HYPOTENSION". ii. Else if ADaM.ADVS.AVAL is greater than 180, assign CRIT1FL = "HYPERTENSION". iii. Otherwise, assign CRIT1FL = "NORMAL". b. When PARAMCD equals "DIABP": i. If ADaM.ADVS.AVAL is less than 60, assign CRIT1FL = "LOW DIASTOLIC". ii. Else if ADaM.ADVS.AVAL is greater than 100, assign CRIT1FL = "HIGH DIASTOLIC". iii. Otherwise, assign CRIT1FL = "NORMAL". c. When PARAMCD equals "HR": i. If ADaM.ADVS.AVAL is less than 60, assign CRIT1FL = "BRADYCARDIA". ii. Else if ADaM.ADVS.AVAL is greater than 100, assign CRIT1FL = "TACHYCARDIA". iii. Otherwise, assign CRIT1FL = "NORMAL". d. When PARAMCD equals "TEMP": i. If ADaM.ADVS.AVAL exceeds 38.0, assign CRIT1FL = "FEVER". ii. Else if ADaM.ADVS.AVAL is below 36.0, assign CRIT1FL = "HYPOTHERMIA". iii. Otherwise, assign CRIT1FL = "NORMAL". e. When PARAMCD equals "PULOX": i. If ADaM.ADVS.AVAL is less than 90, assign CRIT1FL = "SEVERE HYPOXEMIA". ii. Else if ADaM.ADVS.AVAL is less than 95, assign CRIT1FL = "HYPOXEMIA". iii. Otherwise, assign CRIT1FL = "NORMAL". f. For any other PARAMCD values, set CRIT1FL to a blank value. |
| ADVS.DOMAIN derivation | Computation | "ADVS" |
| ADVS.PARAM derivation | Computation | The variable PARAM is created by taking the test name from SDTM.VS.VSTEST, appending an opening parenthesis, then the result value from SDTM.VS.VSSTRESU after removing all spaces, then a closing parenthesis. The resulting string is then collapsed so that any consecutive spaces are reduced to a single space. |
| ADVS.PARAMCD derivation | Computation | PARAMCD is set equal to the value of VSTESTCD from the source dataset SDTM.VS. The assignment is a direct copy, and the value is carried forward unchanged to the final ADaM dataset. |
| ADVS.PCHG derivation | Computation | PCHG represents the percent change from baseline for each vital sign observation. It is calculated as (AVAL ‑ BASE) divided by BASE multiplied by 100, using the analysis value (AVAL) and baseline value (BASE) from ADaM.ADVS. If either AVAL or BASE is missing, or if BASE equals zero, PCHG is set to missing. Derivation Details: 1. For each observation in ADAM.ADVS, evaluate the availability of the analysis and baseline values. a. If both AVAL and BASE are non‑missing, compute the change from baseline (CHG) as AVAL minus BASE. b. Then assess the baseline value for zero. i. When BASE is not zero, calculate the percent change (PCHG) as (CHG divided by BASE) multiplied by 100. ii. When BASE equals zero, set PCHG to missing to avoid division by zero. c. If either AVAL or BASE is missing, set PCHG to missing. |
| ADVS.POSTBL derivation | Computation | Set POSTBL to "Y" when the visit number (AVISITN) from ADaM.ADVS is greater than 0. |
| ADVS.TRTA derivation | Computation | TRTA is assigned the value of TRT01A from the ADaM.ADSL dataset for each record. |
| ADVS.TRTAN derivation | Computation | TRTAN is assigned the value of TRT01AN from the ADAM.ADSL dataset for each subject. |
| ADVS.TRTP derivation | Computation | TRTP is taken directly from the variable TRT01P in the ADaM.ADSL dataset without any modification. |
| ADVS.TRTPN derivation | Computation | TRTPN is derived from the variable TRT01PN in the ADAM.ADSL dataset. For each subject, the planned treatment number (TRT01PN) is used as the value of TRTPN. |
| ADVS.USUBJID derivation | Computation | USUBJID is taken directly from SDTM Demographics domain (SDTM.DM.USUBJID). |
Go to the top of the Define-XML document