From 2527f2de9c9e2251062070df211479568762e919 Mon Sep 17 00:00:00 2001 From: "Starostecka,Olga (AH GI Clin) BIV-DE-I" Date: Fri, 22 Nov 2024 13:40:00 +0100 Subject: [PATCH] #294 updates after 1 round of comments --- vignettes/adrs_gcig.Rmd | 83 ++++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 39 deletions(-) diff --git a/vignettes/adrs_gcig.Rmd b/vignettes/adrs_gcig.Rmd index af20a5f6..fe0102a5 100644 --- a/vignettes/adrs_gcig.Rmd +++ b/vignettes/adrs_gcig.Rmd @@ -17,7 +17,7 @@ library(admiraldev) ``` 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)](adrs.html). +Note that only the GCIG specific steps are covered in this vignette. To get a detailed guidance on all the steps, refer the [Creating ADRS (Including Non-standard Endpoints)](adrs.html). # Introduction @@ -43,24 +43,24 @@ list_cases %>% However, the CA-125 criteria can be a bit tricky to use in programming, especially when used alongside the RECIST 1.1. -We want to share our experiences and the tools we've developed to help use the GCIG criteria. We hope this will provide a reliable solution for anyone trying to use these guidelines in R programming context. +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 [Definitions for response and progression in ovarian cancer clinical trials incorporating RECIST 1.1 and CA-125 agreed by the Gynecological Cancer Intergroup (GCIG)](https://pubmed.ncbi.nlm.nih.gov/21270624/) +For more information about GCIG criteria user may visit [GCIG guidelines on response criteria in ovarian cancer](https://pubmed.ncbi.nlm.nih.gov/21270624/) ## CA-125 response categories -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: -1. **CA-125 Complete Response**: baseline CA-125 >= 2 * ULRR, later reduced by 50% to normal confirmed at least 4 weeks later. +1. **CA-125 Complete Response**: baseline CA-125 >= 2 * ULRR, later reduced by at least 50% to normal confirmed at least 4 weeks later. -2. **CA-125 Partial Response**: baseline CA-125 CA-125 >= 2 * ULRR, later reduced by 50% but not to normal confirmed at least 4 weeks later. +2. **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. 3. **Stable Disease**: CA-125 level does not meet the criteria for either partial response or progression disease. -4. **Progression**: +4. **Progression**: This is defined as CA-125 >= 2 * ULRR or CA-125 >= 2 * nadir on 2 occasions at least 1 week apart. -- category A: **CA-125 increased at baseline returning to normal after treatment**: CA-125 >= 2 * ULRR on 2 occasions at least 1 week apart. -- category B: **CA-125 increased at baseline not returning to normal after treatment**: CA-125 >= 2 * nadir value (lowest level reached by CA-125) on 2 occasions at least 1 week apart. +- category A: **CA-125 elevated at baseline returning to normal after treatment**: CA-125 >= 2 * ULRR on 2 occasions at least 1 week apart. +- category B: **CA-125 elevated at baseline not returning to normal after treatment**: CA-125 >= 2 * nadir value (lowest level reached by CA-125) on 2 occasions at least 1 week apart. - category C: **CA-125 within reference range at baseline**: CA-125 >= 2 * ULRR on 2 occasions at least 1 week apart. 5. **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. @@ -82,6 +82,8 @@ The CA-125 response categories for ovarian cancer are: ### Assumptions: +For this vignette we made assumptions that following information is collected on the CRF: + 1. CA-125 confirmed responses are collected on the CRF and mapped to `SDTM RS` domain. Please note that we are not programmatically confirming the CA-125 response. 2. The date of CA-125 response is assigned to the date of the first measurement when the CA-125 level is reduced by 50%. The date of CA-125 progression is assigned to the date of the first measurement that meets progression criteria. This is assumed to be collected on the CRF CA-125 response page. 3. CA-125 responses are mapped to `CR`, `PR`, `SD`, `PD`, `NE` as shown below. @@ -104,17 +106,20 @@ knitr::kable(list_resp) ```{r echo=FALSE} list_supp <- tibble::tribble( - ~"QNAM", ~"QLABEL", ~"Purpose", - "CA125EFL", "CA-125 response evaluable", "CA-125 > 2x ULRR and no mouse antibodies at baseline", - "CA2XULRR", "CA-125 pre-treatment 2x ULRR", "CA-125 level at baseline (in range/elevated)", - "MOUSEANT", "Received mouse antibodies", "Prohibited therapy", - "CA50RED", ">50% reduction from baseline", "Response indicator", - "CANORM2X", "CA125 normal, lab increased >=2x ULRR", "PD category A or C", - "CNOTNORM", "CA125 not norm, lab increased >=2x nadir", "PD category B" + ~"QNAM", ~"QLABEL", ~"QVAL", ~"Purpose", ~"Use case", + "CA125EFL", "CA-125 response evaluable", "Y/N", "Indicates population evaluable for CA-125 response (baseline CA-125 >= 2 * ULRR and no mouse antibodies)", "CA125EFL variable", + "CA2XULRR", "CA-125 pre-treatment 2x ULRR", "Y/N", "Indicates CA-125 level at baseline (Y - elevated, N - not elevated)", "Derivation of PD category (MCRIT1/MCRIT1ML/MCRIT1MN)", + "MOUSEANT", "Received mouse antibodies", "Y/N", "Indicates if a prohibited therapy was received", "Derivation of ANL02FL", + "CA50RED", ">50% reduction from baseline", "Y/N", "Indicates response, but does not distinguish between CR and PR", "Not used in further derivations", + "CANORM2X", "CA125 normal, lab increased >=2x ULRR", "Y/N", "Indicates PD category A or C", "Derivation of PD category (MCRIT1/MCRIT1ML/MCRIT1MN)", + "CNOTNORM", "CA125 not norm, lab increased >=2x nadir", "Y/N", "Indicates PD category B", "Derivation of PD category (MCRIT1/MCRIT1ML/MCRIT1MN)" ) knitr::kable(list_supp) ``` + +If the data are collected by other ways and similar information from `SUPPRS` dataset are not available, they should be derived in advance from `LB` CA-125 measurements records. Information on whether the patient has received mouse antibodies should also be taken into account. + # Required Packages The examples of this vignette require the following packages. @@ -196,17 +201,17 @@ param_lookup <- tribble( #CA-125 "CA125", "OVRLRESP", "INVESTIGATOR", "OVRCA125", "CA-125 Overall Response by Investigator", 1, - "Investigator", 1, "CA-125", 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, + "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 ) ``` @@ -408,9 +413,9 @@ adrs <- adrs %>% PARAMCD = "PDCA125", PARAM = "CA-125 Disease Progression by Investigator", PARAMN = 4, - PARCAT1 = "Investigator", + PARCAT1 = "CA-125", PARCAT1N = 1, - PARCAT2 = "CA-125", + PARCAT2 = "Investigator", PARCAT2N = 1, ANL01FL = "Y", ANL02FL = "Y" @@ -514,9 +519,9 @@ adrs <- adrs %>% PARAMCD = "CBORCA", PARAM = "CA-125 Best Confirmed Overall Response by Investigator", PARAMN = 5, - PARCAT1 = "Investigator", + PARCAT1 = "CA-125", PARCAT1N = 1, - PARCAT2 = "CA-125", + PARCAT2 = "Investigator", PARCAT2N = 1, AVAL = aval_resp(AVALC), ANL01FL = "Y", @@ -559,10 +564,10 @@ adrs <- adrs %>% PARAMCD = "BORCA11", PARAM = "Combined Best Unconfirmed Overall Response by Investigator", PARAMN = 6, - PARCAT1 = "Investigator", - PARCAT1N = 1, - PARCAT2 = "Combined", - PARCAT2N = 3, + PARCAT1 = "Combined", + PARCAT1N = 3, + PARCAT2 = "Investigator", + PARCAT2N = 1, AVAL = aval_resp(AVALC), ANL01FL = "Y", ANL02FL = "Y" @@ -654,10 +659,10 @@ covr_r11 <- covr_r11 %>% PARAMCD = "COVRR11", PARAM = "Confirmed RECIST 1.1 Overall Response by Investigator", PARAMN = 7, - PARCAT1 = "Investigator", - PARCAT1N = 1, - PARCAT2 = "RECIST 1.1", - PARCAT2N = 2, + PARCAT1 = "RECIST 1.1", + PARCAT1N = 2, + PARCAT2 = "Investigator", + PARCAT2N = 1, ) adrs <- bind_rows(adrs, covr_r11) @@ -732,10 +737,10 @@ ovr_cbor <- ovr_cbor %>% PARAMCD = "COVR11CA", PARAM = "Combined Overall Response by Investigator (Confirmation of RECIST1.1 Reqired)", PARAMN = 8, - PARCAT1 = "Investigator", - PARCAT1N = 1, - PARCAT2 = "Combined", - PARCAT2N = 3, + PARCAT1 = "Combined", + PARCAT1N = 3, + PARCAT2 = "Investigator", + PARCAT2N = 1, AVAL = aval_resp(AVALC) ) @@ -772,10 +777,10 @@ adrs <- adrs %>% 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"