Calculate if study is likely a platform trial or not
Source:R/f_likelyPlatformTrial.R
f.likelyPlatformTrial.Rd
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 has 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).
Arguments
- df
data frame such as from dbGetFieldsIntoDf. If
NULL, prints fields needed indffor calculating this trial concept, which can be used with dbGetFieldsIntoDf.
Value
data frame with columns _id and .likelyPlatformTrial, a logical,
and two complementary columns, each with lists of identifiers:
.likelyRelatedTrials (based on other identifiers provided in the trial
record, including associatedClinicalTrials from CTIS; listing identifiers
whether or not the trial with the other identifier is in the database
collection) and .maybeRelatedTrials (based on similar short terms in the
first set of brackets or before a colon in the trial title; only listing
identifiers from the database collection).
Details
For EUCTR, requires that 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.77 or higher.
Publication references considered: EU-PEARL WP2 2020 and Williams RJ et al. 2022, doi:10.1136/bmj-2021-067745
Examples
# fields needed
f.likelyPlatformTrial()
#> [[1]]
#> [1] "ctrname"
#>
#> $euctr
#> [1] "subjectDisposition.postAssignmentPeriods.postAssignmentPeriod.title"
#> [2] "e822_placebo"
#> [3] "e823_other"
#> [4] "e824_number_of_treatment_arms_in_the_trial"
#> [5] "subjectDisposition.postAssignmentPeriods.postAssignmentPeriod.arms.arm"
#> [6] "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.drugNames"
#> [4] "interventions.intervention.interventionType"
#> [5] "trialDescription.scientificTitle"
#>
#> $ctis
#> [1] "authorizedPartI.trialDetails.protocolInformation.studyDesign.periodDetails.title"
#> [2] "authorizedPartI.trialDetails.associatedClinicalTrials.ctNumber"
#> [3] "authorizedApplication.authorizedPartI.trialDetails.protocolInformation.studyDesign.periodDetails.title"
#> [4] "authorizedApplication.authorizedPartI.trialDetails.associatedClinicalTrials.ctNumber"
#> [5] "authorizedPartI.productRoleGroupInfos"
#> [6] "authorizedApplication.authorizedPartI.productRoleGroupInfos"
#> [7] "authorizedPartI.trialDetails.clinicalTrialIdentifiers.fullTitle"
#> [8] "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)
#> To review trial concepts details, call 'help("ctrdata-trial-concepts")'
#> Querying database (25 fields)...
#> Typing fields...
#> Calculating f.likelyPlatformTrial...
#> Searching for duplicate trials...
#> - Getting all trial identifiers...
#> (cached)...
#> , 25 found in collection
trialsDf
#> # A tibble: 25 × 4
#> `_id` .likelyPlatformTrial .likelyRelatedTrials
#> <chr> <lgl> <list>
#> 1 12949496 FALSE <chr [2]>
#> 2 13281214 FALSE <chr [2]>
#> 3 17473621 FALSE <lgl [1]>
#> 4 2013-000615-24-BE FALSE <chr [1]>
#> 5 2016-004489-24-DE FALSE <chr [2]>
#> 6 2019-002663-10-ES FALSE <chr [2]>
#> 7 2022-000099-20-DE FALSE <chr [2]>
#> 8 2022-500244-37-00 FALSE <chr [1]>
#> 9 2023-505613-24-00 FALSE <chr [2]>
#> 10 2023-508143-51-01 FALSE <chr [1]>
#> # ℹ 15 more rows
#> # ℹ 1 more variable: .maybeRelatedTrials <list>