From aa7bf40dbec3c4ae4c633d4b7423e1a25720bf5a Mon Sep 17 00:00:00 2001
From: Stefan Bundfuss This article describes creating an ADRS
ADaM dataset in
ovarian cancer studies based on Gynecological Cancer Intergroup (GCIG)
-criteria. Note that only the sections required for this vignette are
-covered in the following steps. To get a detailed guidance on all the
-steps, refer the Creating ADRS (Including
-Non-standard Endpoints).
We aim to share our current knowledge and experience in implementing +GCIG criteria for ovarian clinical trials. Additionally, we have made +certain assumptions regarding how data is collected on CRFs to perform +response analysis according to the GCIG criteria. We hope this vignette +provides valuable guidance on ADRS programming and highlights key +considerations for data collection in relation to these criteria.
+For more information about GCIG criteria user may visit GCIG guidelines on +response criteria in ovarian cancer
The CA-125 response categories for ovarian cancer are:
+In further considerations, ULRR stands for Upper Limit of Reference +Range. The CA-125 response categories for ovarian cancer are:
CA-125 Complete Response: baseline CA-125 >= -2 * ULRR, later reduced by 50% to normal confirmed at least 4 weeks -later.
CA-125 Partial Response: baseline CA-125 CA-125 ->= 2 * ULRR, later reduced by 50% but not to normal confirmed at +2 * ULRR, later reduced by at least 50% to normal confirmed at least 4 +weeks later.
CA-125 Partial Response: baseline CA-125 >= 2 +* ULRR, later reduced by at least 50% but not to normal confirmed at least 4 weeks later.
Stable Disease: CA-125 level does not meet the criteria for either partial response or progression disease.
Progression:
Progression: This is defined as CA-125 >= 2 * +ULRR or CA-125 >= 2 * nadir on 2 occasions at least 1 week apart.
Not Evaluable: This is when the patient’s +response cannot be evaluated due to various reasons such as receiving +mouse antibodies or having medical/surgical interference with their +peritoneum or pleura during the previous 28 days.
For this vignette we made assumptions that following information is +collected on the CRF:
param_lookup <- tribble(
~RSCAT, ~RSTESTCD, ~RSEVAL,
- ~PARAMCD, ~PARAM, ~PARAMN,
- ~PARCAT1, ~PARCAT1N,~PARCAT2, ~PARCAT2N,
-
- #CA-125
+ ~PARAMCD, ~PARAM, ~PARAMN,
+ ~PARCAT1, ~PARCAT1N, ~PARCAT2, ~PARCAT2N,
+
+ # CA-125
"CA125", "OVRLRESP", "INVESTIGATOR",
"OVRCA125", "CA-125 Overall Response by Investigator", 1,
- "Investigator", 1, "CA-125", 1,
-
- #RECIST 1.1
+ "CA-125", 1, "Investigator", 1,
+
+ # RECIST 1.1
"RECIST 1.1", "OVRLRESP", "INVESTIGATOR",
"OVRR11", "RECIST 1.1 Overall Response by Investigator", 2,
- "Investigator", 1, "RECIST 1.1", 2,
-
- #Combined
+ "RECIST 1.1", 2, "Investigator", 1,
+
+ # Combined
"RECIST 1.1 - CA125", "OVRLRESP", "INVESTIGATOR",
"OVRR11CA", "Combined Overall Response by Investigator", 3,
- "Investigator", 1, "Combined", 3
+ "Combined", 3, "Investigator", 1
)
This lookup may now be joined to the source data and this is how the parameters will look like:
@@ -853,10 +883,10 @@ADT
,
@@ -887,7 +917,7 @@ AVALC
and AVAL
@@ -904,7 +934,7 @@ AVALC
and AVAL
AVAL = aval_resp(AVALC)
)
adrs <- adrs %>%
rename(CA125EFL_ = CA125EFL)
-
- adrs <- adrs %>%
+
+adrs <- adrs %>%
derive_var_merged_exist_flag(
dataset_add = adrs,
by_vars = get_admiral_option("subject_keys"),
@@ -997,7 +1027,7 @@ CA-125 Response Evaluable Flag= (CA125EFL_ == "Y")
)
-#used for derivation of CA-125 PD
+# used for derivation of CA-125 PD
ovr_pd <- filter(adrs, PARAMCD == "OVRCA125" & ANL01FL == "Y" & ANL02FL == "Y")
-#used for derivation of CA-125 response parameters
+# used for derivation of CA-125 response parameters
ovr_ca125 <- filter(adrs, PARAMCD == "OVRCA125" & CA125EFL == "Y" & ANL01FL == "Y" & ANL02FL == "Y")
-#used for derivation of unconfirmed best overall response from RECIST1.1 and confirmed CA-125 together
+# used for derivation of unconfirmed best overall response from RECIST1.1 and confirmed CA-125 together
ovr_ubor <- filter(adrs, PARAMCD == "OVRR11CA" & CA125EFL == "Y" & ANL01FL == "Y" & ANL02FL == "Y")
-#used for derivation of confirmed best overall response from RECIST1.1 and confirmed CA-125 together
+# used for derivation of confirmed best overall response from RECIST1.1 and confirmed CA-125 together
ovr_r11 <- filter(adrs, PARAMCD == "OVRR11" & CA125EFL == "Y" & ANL01FL == "Y" & ANL02FL == "Y")
Now that we have the input records prepared above with any company-specific requirements, we can start to derive new parameter @@ -1047,17 +1077,17 @@
definition_mcrit <- exprs(
- ~PARAMCD, ~condition,
+ ~PARAMCD, ~condition,
~MCRIT1ML, ~MCRIT1MN,
- "PDCA125", CA2XULRR == "Y" & CANORM2X == "Y",
+ "PDCA125", CA2XULRR == "Y" & CANORM2X == "Y",
"Patients with elevated CA-125 before treatment and normalization of CA-125 (A)", 1,
- "PDCA125", CA2XULRR == "Y" & CNOTNORM == "Y",
+ "PDCA125", CA2XULRR == "Y" & CNOTNORM == "Y",
"Patients with elevated CA-125 before treatment, which never normalizes (B)", 2,
- "PDCA125", CA2XULRR == "N" & CANORM2X == "Y",
+ "PDCA125", CA2XULRR == "N" & CANORM2X == "Y",
"Patients with CA-125 in the reference range before treatment (C)", 3
)
@@ -1095,7 +1125,7 @@ CA-125 Progression Category= exprs(PARAMCD)
)
Derivation of the progression category may be more complex if the +
Derivation of the progression category may be more complex if the data is collected in a different way and the user needs to check whether:
Finally Combined Best Confirmed Overall Response parameter can be +
Finally Combined Best Confirmed Overall Response parameter can be
derived based on ovr_cbor
data frame.
ovr <- ovr_cbor
@@ -1487,17 +1518,17 @@ Combined Best Confirmed Overall Response PARAMCD = "CBORCA11",
PARAM = "Combined Best Confirmed Overall Response by Investigator",
PARAMN = 9,
- PARCAT1 = "Investigator",
- PARCAT1N = 1,
- PARCAT2 = "Combined",
- PARCAT2N = 3,
+ PARCAT1 = "Combined",
+ PARCAT1N = 3,
+ PARCAT2 = "Investigator",
+ PARCAT2N = 1,
AVAL = aval_resp(AVALC),
ANL01FL = "Y",
ANL02FL = "Y"
)
)