Skip to contents

Trial concept calculated: platform trial, research platform. As operational definition, at least one of these criteria is true: a. trial has "platform", "basket", "umbrella", "multi.?arm", "multi.?stage" or "master protocol" in its title or description (for ISRCTN, this is the only criterion; some trials in EUCTR lack data in English), b. trial has more than 2 active arms with different investigational medicines, after excluding comparator, auxiliary and placebo medicines (calculated with f.numTestArmsSubstances; not used for ISRCTN because it cannot be calculated precisely), c. trial more than 2 periods, after excluding safety run-in, screening, enrolling, extension and follow-up periods (for CTGOV and CTGOV2, this criterion requires results-related data). Requires that EUCTR results have been included in the collection, using ctrLoadQueryIntoDb(queryterm = ..., euctrresults = TRUE, con = ...). Requires packages dplyr and stringdist to be installed; stringdist is used for evaluating terms in brackets in the trial title, where trials may be related if the term similarity is 0.7 or higher.

Usage

f.likelyPlatformTrial(df = NULL)

Arguments

df

data frame such as from dbGetFieldsIntoDf. If `NULL`, prints fields needed in `df` for calculating this trial concept, which can be used with dbGetFieldsIntoDf.

Value

data frame with columns `_id` and `.likelyPlatformTrial`, a logical, `.likelyRelatedTrials`, a list (e.g., from CTIS' `associatedClinicalTrials`) and `.maybeRelatedTrials`, a list (based on similar short terms within a first set of brackets or before a colon in the title).

Details

Publication references considered: E-PEARL WP2 2020 https://tinyurl.com/eupearld21terminology (which did not include all basket trials in the definition, as done here) Williams RJ et al. 2022 https://doi.org/10.1136/bmj-2021-067745

Examples

# fields needed
f.likelyPlatformTrial()
#> [[1]]
#> [1] "ctrname"
#> 
#> $euctr
#> [1] "subjectDisposition.postAssignmentPeriods.postAssignmentPeriod.title"   
#> [2] "e824_number_of_treatment_arms_in_the_trial"                            
#> [3] "e81_controlled"                                                        
#> [4] "subjectDisposition.postAssignmentPeriods.postAssignmentPeriod.arms.arm"
#> [5] "a3_full_title_of_the_trial"                                            
#> 
#> $ctgov
#> [1] "clinical_results.participant_flow.period_list.period.title"
#> [2] "arm_group"                                                 
#> [3] "official_title"                                            
#> 
#> $ctgov2
#> [1] "resultsSection.participantFlowModule.periods.title"
#> [2] "protocolSection.armsInterventionsModule.armGroups" 
#> [3] "protocolSection.identificationModule.officialTitle"
#> 
#> $isrctn
#> [1] "interventions.intervention.interventionType"
#> [2] "trialDesign.secondaryStudyDesign"           
#> [3] "interventions.intervention.interventionType"
#> [4] "interventions.intervention.drugNames"       
#> [5] "trialDescription.scientificTitle"           
#> 
#> $ctis
#> [1] "title"                                                                                                 
#> [2] "authorizedPartI.trialDetails.protocolInformation.studyDesign.periodDetails.title"                      
#> [3] "authorizedApplication.authorizedPartI.trialDetails.protocolInformation.studyDesign.periodDetails.title"
#> [4] "authorizedPartI.productRoleGroupInfos"                                                                 
#> [5] "authorizedApplication.authorizedPartI.productRoleGroupInfos"                                           
#> [6] "authorizedPartI.trialDetails.clinicalTrialIdentifiers.fullTitle"                                       
#> [7] "authorizedApplication.authorizedPartI.trialDetails.clinicalTrialIdentifiers.fullTitle"                 
#> 

# apply trial concept when creating data frame
dbc <- nodbi::src_sqlite(
  dbname = system.file("extdata", "demo.sqlite", package = "ctrdata"),
  collection = "my_trials", flags = RSQLite::SQLITE_RO)
trialsDf <- dbGetFieldsIntoDf(
  calculate = "f.likelyPlatformTrial",
  con = dbc)
#> Querying database (23 fields)...
#> Searching for duplicate trials... 
#> - Getting all trial identifiers...
#> , 31 found in collection
#> - Finding duplicates among registers' and sponsor ids...
trialsDf
#>                  _id .likelyPlatformTrial        .likelyRelatedTrials
#> 1           12949496                FALSE              2014-002988-16
#> 2           13281214                FALSE              2015-004526-33
#> 3           17473621                FALSE                          NA
#> 4  2012-003632-23-CZ                FALSE 2012-003632-23, NCT01818492
#> 5  2012-003632-23-SE                FALSE 2012-003632-23, NCT01818492
#> 6  2014-002606-20-PT                FALSE              2014-002606-20
#> 7  2014-003556-31-GB                FALSE 2014-003556-31, NCT02386839
#> 8  2014-003556-31-SE                FALSE 2014-003556-31, NCT02386839
#> 9  2022-500244-37-00                FALSE                          NA
#> 10 2022-501142-30-00                FALSE                          NA
#> 11 2023-505613-24-00                FALSE                 NCT04665037
#> 12 2023-508143-51-01                FALSE              2021-004994-30
#> 13 2024-510663-34-00                FALSE                 NCT04494412
#> 14          20343063                FALSE                          NA
#> 15          61070850                FALSE                          NA
#> 16          76463425                FALSE                 NCT01727609
#> 17          80181452                FALSE                 NCT01035190
#> 18          88261002                FALSE              2012-004260-22
#> 19       NCT00617929                FALSE                          NA
#> 20       NCT01125800                FALSE              2010-019348-37
#> 21       NCT01483820                FALSE                          NA
#> 22       NCT01505608                FALSE                          NA
#> 23       NCT01592045                FALSE                          NA
#> 24       NCT02620761                FALSE                          NA
#> 25       NCT03280147                FALSE                          NA
#> 26       NCT03325439                FALSE              2015-002756-27
#> 27       NCT03431558                FALSE                          NA
#> 28       NCT03876704                FALSE                          NA
#> 29       NCT04001712                FALSE                          NA
#> 30       NCT04041765                FALSE                          NA
#> 31       NCT05969327                FALSE                          NA
#>    .maybeRelatedTrials
#> 1                   NA
#> 2                   NA
#> 3                   NA
#> 4                   NA
#> 5                   NA
#> 6                   NA
#> 7                   NA
#> 8                   NA
#> 9                   NA
#> 10                  NA
#> 11                  NA
#> 12                  NA
#> 13                  NA
#> 14                  NA
#> 15                  NA
#> 16                  NA
#> 17                  NA
#> 18                  NA
#> 19                  NA
#> 20                  NA
#> 21                  NA
#> 22                  NA
#> 23                  NA
#> 24                  NA
#> 25                  NA
#> 26                  NA
#> 27                  NA
#> 28                  NA
#> 29                  NA
#> 30                  NA
#> 31                  NA