Background and method
Innovations for clinical trials may accelerate bringing new medicines to children, such as through more robustly quantifying treatment effects, combining phases and ages, expanding access, and more often involving patients and their organisations in the design of trials and documenting patient-centric endpoints. The objective of this page is to continually track such innovations using information on clinical trials and to present original insights.
Information from the EU Clinical Trials Register and ClinicalTrials.Gov was used for this analysis . For commenting, the full R code is included below. Paediatric trials were identified based on the protocol-related information that any of the paediatric age groups was to be included in the trial. Interventional trials with medicines were identified in ClinicalTrials.Gov based on type=Drug (which includes agent, pharmaceutical, medications, medicine, medicinal product).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | ### Options for subsequent chunks # # knitr knitr::opts_chunk$set(dev = "svglite", fig.width = 6, fig.height = 4, out.width = "600px", out.height = "400px", width = "600px", echo = TRUE, eval = TRUE, results = "asis", warning = FALSE, message = FALSE, cache = TRUE) ### Helper function # # start date ctgov to posixct start_date_ctgov <- function(x) { # September 30, 2017 -> ok # September 2013 -> September 15, 2013 x <- sub("([a-zA-Z]+) ([0-9]{4})", "\\1 15, \\2", x) as.Date(x, format = "%B %d, %Y") } # normalise_string <- function(x) { x <- gsub(",", "", x) x <- gsub("-", " ", x) x <- tolower(x) x <- tools::toTitleCase(x) x <- gsub("[ ]+", " ", x) x <- trimws(x) x } # normalise_number <- function(x) { x <- gsub("<=|<|≤|=|>", "", x) x <- gsub("(^| )[.]", "0.", x) x <- trimws(x) x <- sapply(x, FUN = function(y) { z <- try(as.numeric(y), silent = TRUE) if (class(z) == "try-error") { NA message(z) } else { z } }) unname(x) } ### Initialise # load libraries # # For plotting: library(ggplot2) library(plotly) library(kableExtra) # # This library was specially written # by Ralf Herold and is available here: # https://github.com/rfhb/ctrdata library(ctrdata) ### Get data, manually if (FALSE) { ## euctr paediatric trials dbc <- nodbi::src_mongo(collection = "all_paed_trials_euctr", db = "users") # tmp.df <- dbQueryHistory(con = dbc) # tmp.qs <- "&age=adolescent&age=children&age=infant-and-toddler&age=newborn&age=preterm-new-born-infants&age=under-18" # ctrLoadQueryIntoDb(queryterm = tmp.qs, con = dbc) ctrLoadQueryIntoDb(querytoupdate = "last", con = dbc) ## euctr adult oncology trials dbc <- nodbi::src_mongo(collection = "all_adult_oncology_trials_euctr", db = "users") # tmp.df <- dbQueryHistory(con = dbc) # tmp.qs <- "https://www.clinicaltrialsregister.eu/ctr-search/search?query=cancer&age=adult&status=completed" # ctrLoadQueryIntoDb(queryterm = tmp.qs, con = dbc, only.count = TRUE) # ctrLoadQueryIntoDb(queryterm = tmp.qs, con = dbc) ctrLoadQueryIntoDb(querytoupdate = "last", con = dbc) ## ctgov dbc <- nodbi::src_mongo(collection = "all_paed_trials_ctgov", db = "users") # tmp.df <- dbQueryHistory(con = dbc) # tmp.qs <- "https://clinicaltrials.gov/ct2/results?type=Intr&age=0&intr=Drug&phase=4&phase=0&phase=1&phase=2&strd_e=12%2F31%2F2010" # tmp.qs <- "https://clinicaltrials.gov/ct2/results?type=Intr&age=0&intr=Drug&phase=4&phase=0&phase=1&phase=2&strd_s=12%2F31%2F2010" # ctrOpenSearchPagesInBrowser(input = tmp.qs) # ctrLoadQueryIntoDb(queryterm = tmp.qs, con = dbc, only.count = TRUE) # ctrLoadQueryIntoDb(queryterm = tmp.qs, con = dbc) ctrLoadQueryIntoDb(querytoupdate = 1L, con = dbc) ctrLoadQueryIntoDb(querytoupdate = 2L, con = dbc) } |
Topics under preparation
- Expansion cohorts of early trials
- Estimation of outcomes
- Patient-reported outcomes
- Clinical trials and disease burden in children
- Integrated non-controlled and randomised trials
- Adaptive trials
Platform trials
A single clinical trial can be designed and used as platform for investigating different diseases and different investigational medicines at the same time . A basket trial, for example, has different arms corresponding to different diseases, thus permitting a broader range of patients to be included. Both, the effects of treatment with a medicine and the susceptibility of the diseases to the treatment may be documented. An umbrellat trial has different arms corresponding to different medicines to which a patient may be allocated. Other terms in the context of platform trials are complex trials, master protocols and matrix trials. Methods to design, conduct and analyse such trials vary much and are increasingly discussed .
In ClinicalTrials.Gov, basket and umbrella trials with children are identified here by non-randomised allocation to one of at least three arms with largely different labels (not counting control arms), and at least as many conditions as arms. In the plot of the trials, larger symbols are more likely basket or umbrella trials (based on dissimilarity of conditions and arms).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | # select database dbc <- nodbi::src_mongo(collection = "all_paed_trials_ctgov", db = "users") # get result set result <- dbGetFieldsIntoDf( c("start_date", "condition", "number_of_arms", "arm_group.arm_group_label", "brief_title", "arm_group.arm_group_type", "intervention.arm_group_label", "detailed_description.textblock", "official_title", "study_design_info.allocation"), con = dbc) # get unique trials result <- result[ result[["_id"]] %in% dbFindIdsUniqueTrials( con = dbc), ] # format data result$start_year <- as.numeric(format(result$start_date, "%Y")) result$number_of_arms <- as.numeric(result$number_of_arms) # count number of conditions result$number_conditions <- sapply(result$condition, FUN = function(x) length(x)) # calculate condition similarity result$condition_similarity <- sapply( result$condition, FUN = function(x) median(RecordLinkage::levenshteinSim(x, rev(x)))) ## similarity of arms # # see https://prsinfo.clinicaltrials.gov/definitions.html#ArmType # remove those arms that are labelled as either # "Active Comparator", "Placebo Comparator", "Sham Comparator", "No Intervention" # keep "Experimental" and "Other" tmp.armskeep <- lapply(result$arm_group.arm_group_type, FUN = function(x) trimws(unlist(x)) %in% c("Experimental", "Other")) # # split arm labels, remove any "group n:" prefixes # tmp.strings[2188] tmp.armsgrp <- lapply(result$arm_group.arm_group_label, FUN = function(x) sub("^.*: (.*)$", "\\1", trimws(unlist(x)))) # # combine, keep only unique labels, keep only labels with relevant information # and with minimum length tmp.remove <- c("arm", "dose", "mg", "placebo", "control", "rollover", "cohort", "group", "treatment", "regimen", "stratum", "strata", "level", "phase", "subjects", "patients", "study", "scheme", "participants", "part", "with", "open", "label", "intervention", " [0-9A-Z] ", "[A-Z0-1][.] ", " [+]", " and") tmp.strings <- lapply(seq_along(tmp.armskeep), FUN = function(x) { tmp <- unique(tmp.armsgrp[[x]][tmp.armskeep[[x]]]) for (i in tmp.remove) tmp <- gsub(i, "", tmp, ignore.case = TRUE) tmp <- trimws(tmp) tmp <- tmp[nchar(tmp) > 3] tmp} ) # # calculate similarity result$arms_similarity <- sapply( tmp.strings, FUN = function(x) median(RecordLinkage::levenshteinSim(x, rev(x)))) # result$arms_strings <- sapply( tmp.strings, FUN = function(x) paste0(x, collapse = " / ")) # # recount number of remaining arms result$number_of_arms_revised <- stringr::str_count(result$arms_strings, pattern = " / ") + 1 # relevance factor result$relevance <- result$number_conditions / result$condition_similarity * result$number_of_arms_revised / result$arms_similarity # the title may increasingly reflect these designs if (FALSE) { with(result, table(grepl("basket study|basket trial|umbrella study|umbrella trial", official_title, ignore.case = TRUE))) } # select trials result <- subset( result, subset = ( number_of_arms_revised >= 3 & ((number_conditions >= number_of_arms_revised) | arms_similarity < 0.2) & # condition_similarity < 0.1) & # grepl("tumo[u]?rs|cancers", condition, ignore.case = TRUE)) & grepl("Non-", study_design_info.allocation) & !grepl("HSCT|transplant", official_title, ignore.case = TRUE) ) | ( grepl("basket study|basket trial|umbrella study|umbrella trial", official_title, ignore.case = TRUE) ), relevance > 0 ) # diagnostics if (FALSE) hist(result$condition_similarity) if (FALSE) hist(result$arms_similarity) if (FALSE) hist(log(result$relevance)) # exp(5) if (FALSE) plot(result$arms_similarity, result$number_of_arms) if (FALSE) plot(result$arms_similarity, result$number_conditions) if (FALSE) plot(result$number_conditions, result$number_of_arms_revised) # format result$title <- paste0(gsub("(.{1,40})(\\s|$)", "\\1<br>", result$brief_title), "<br>arms: ", gsub("(.{1,40})(\\s|$)", "\\1<br>", result$arms_strings)) result$title <- gsub("[^[:ascii:]]", "", result$title, perl = TRUE) vline <- function(x = 0, color = "blue") { list(type = "line", yref = "paper", line = list(color = color), y0 = 0, y1 = 1, x0 = x, x1 = x)} p <- plot_ly(data = result, hoverinfo = "text", text = ~title, x = ~jitter(start_year, factor = 2), y = ~jitter(number_of_arms_revised, factor = 2), color = I("black"), type = "scatter", mode = "markers", width = 600, height = 400, marker = list(opacity = 0.5, sizemode = "diameter", size = ~relevance / 75) ) %>% layout(title = "Paediatric basket or umbrella trials", xaxis = list(title = "Year of trial start", gridcolor = "rgb(255, 255, 255)", ticks = "outside", range = c(2000, 2025)), yaxis = list(title = "Number of arms", gridcolor = "rgb(255, 255, 255)", zeroline = FALSE, ticks = "outside", range = c(1, 18)), font = list(family = "Helvetica", size = 13), autosize = FALSE, shapes = list(vline(as.numeric(Sys.Date()) * 24 * 60 * 60 * 1000)), plot_bgcolor = "rgb(230, 230, 230)" ) %>% add_annotations( x = 2001, y = 17, text = paste0("paediatricdata.eu ", format(Sys.Date(), format = "%Y-%m-%d"), "\nSize indicates likelihood of\nbasket or umbrella design"), xanchor = "left", yanchor = "top", showarrow = FALSE) # # produce code # htmlwidgets::saveWidget(widget = p, file = "baskettrials.html", selfcontained = TRUE) # htmltools::browsable(htmltools::tagList(list(p))) print(htmltools::tagList(p)) |
Randomisation in early phase trials
Randomisation throughout all development phases has recently been recommended when small populations are to be studied such as for personalised medicines , including for possibilities to separate prognostic importance of a biomarker from treatment effects and to faster transition phases.
While a seizable portion of early phase paediatric trials that include randomisation also include randomisation to placebo or to no treatment, it is not yet clear how much such approaches are used across paediatric therapeutic areas.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | # select database dbc <- nodbi::src_mongo(collection = "all_paed_trials_ctgov", db = "users") # get result set result <- dbGetFieldsIntoDf( c("start_date", "brief_title", "study_design_info.allocation", "phase", "arm_group.arm_group_type"), con = dbc) # get unique trials result <- result[ result[["_id"]] %in% dbFindIdsUniqueTrials(con = dbc), ] # format data result$start_year <- as.numeric(format(result$start_date, "%Y")) # select trials result <- subset( result, grepl("^Rando", study_design_info.allocation, ignore.case = TRUE) & grepl("^Phase 1$", phase, ignore.case = TRUE) ) # identify trials of interest result$control <- grepl("(Placebo|No Intervention)", result$arm_group.arm_group_type, ignore.case = TRUE) # plot ggplot(data = result, aes(x = start_year, fill = control)) + geom_histogram(binwidth = 1) + labs(title = "Paediatric phase 1-only interventional trials\nwith randomisation in CT.Gov", x = "Year of first trial authorisation", y = "Number of trials", fill = "Randomisation\nto placebo or\nno intervention?") + xlim(c(2000, 2021)) + ylim(c(0, 100)) + geom_vline(xintercept = as.numeric(format(Sys.Date(), format = "%Y")), colour = "gray") |
Adolescents in “adult” trials
If adolescent patients are included in trials originally planned only for adults, separate and later trials with these paediatric patients may be avoided. Such an age-inclusive approach would build on scientific and medical considerations for the specific trial, and also on general intentions to improve access for these patients and to shorten timelines of developing a medicines of children. Recommendations for oncology were recently put forward by multiple stakeholders . The approach can also be relevant for later phase trials and perhaps other therapeutic areas. Further analyses may be by type of sponsor or by the authorisation status of the medicine.
To track progress with respect to the recommendations, the analysis is limited to the therapeutic area of oncology and to phase 2 trials (search term "cancer" and phase 2 recorded in the EU Clinical Trials Register), because adult phase 1 trials are not be required to be made public in the registers.
However, phase 2 trials may be therapeutic exploratory trials and therefore for a different cancer(s) than in children; therefore, it is expected that only a portion of such trials is relevant for adolescents with a cancer. The number of phase 2 oncology trials open to adolescents seems to be slightly increasing. More analyses will be done on the subset of trials that are for cancers that occur in the paediatric population.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | # select database dbc <- nodbi::src_mongo(collection = "all_adult_oncology_trials_euctr", db = "users") # get result set result <- dbGetFieldsIntoDf( c("a1_member_state_concerned", "f116_adolescents_1217_years", "n_date_of_competent_authority_decision", "a2_eudract_number", "e72_therapeutic_exploratory_phase_ii", "x6_date_on_which_this_record_was_first_entered_in_the_eudract_database"), con = dbc) # limit to phase 1 result <- subset(result, e72_therapeutic_exploratory_phase_ii == TRUE) # calculate start date result$startdate <- ifelse(!is.na(tmp <- result$n_date_of_competent_authority_decision), tmp, result$x6_date_on_which_this_record_was_first_entered_in_the_eudract_database) class(result$startdate) <- "Date" # find first member state to authorise trial tmp <- aggregate(result$startdate, by = list(result$a2_eudract_number), FUN = function(x) min(x)) result <- merge(x = result, y = tmp, by.x = "a2_eudract_number", by.y = "Group.1", all.x = TRUE) names(result)[ncol(result)] <- "startdatefirst" result$startyearfirst <- as.numeric(format(result$startdatefirst, "%Y")) # find if any member state recorded the inclusion of adolescents result$adolescents <- ifelse(result$f116_adolescents_1217_years == TRUE, TRUE, FALSE) tmp <- aggregate(result$adolescents, by = list(result$a2_eudract_number), FUN = function(x) any(x)) result <- merge(x = result, y = tmp, by.x = "a2_eudract_number", by.y = "Group.1", all.x = TRUE) names(result)[ncol(result)] <- "adolescentsanyms" # get unique trials result <- result[ result[["_id"]] %in% dbFindIdsUniqueTrials(con = dbc), ] # plot ggplot(data = result, aes(x = startyearfirst, fill = adolescentsanyms)) + geom_histogram(binwidth = 1) + labs(title = "Adult phase 2 oncology trials in EUCTR", x = "Year of first trial authorisation", y = "Number of trials", fill = "Adolescents\nincluded?") + xlim(c(2000, 2020)) + ylim(c(0, 300)) + geom_vline(xintercept = as.numeric(format(Sys.Date(), format = "%Y")), colour = "gray") |
Involvement of paediatric networks
The involvement of paediatric networks is generally recommended to better prepare and conduct trials of medicinal products with children.
Among paediatric trials in the EU Clinical Trials Register with a commercial sponsor (mostly a pharmaceutical company), excluding phase 4 trials, so far a limited proportion (perhaps some 15%) is documented to involve an investigator network. These networks are tabulated below the histogram. Names of networks are spelled in different ways (not normalised or from a dictionary).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | # select database dbc <- nodbi::src_mongo(collection = "all_paed_trials_euctr", db = "users") # get result set result <- dbGetFieldsIntoDf( c("a1_member_state_concerned", "a2_eudract_number", "b1_sponsor.b31_and_b32_status_of_the_sponsor", "g4_investigator_networks.g4_investigator_network_to_be_involved_in_the_trial", "g4_investigator_networks.g41_name_of_organisation", "e74_therapeutic_use_phase_iv", "n_date_of_competent_authority_decision", "x6_date_on_which_this_record_was_first_entered_in_the_eudract_database"), con = dbc) # calculate start date result$startdate <- ifelse(!is.na(tmp <- result$n_date_of_competent_authority_decision), tmp, result$x6_date_on_which_this_record_was_first_entered_in_the_eudract_database) class(result$startdate) <- "Date" # find first member state to authorise trial tmp <- aggregate(result$startdate, by = list(result$a2_eudract_number), FUN = function(x) min(x)) result <- merge(x = result, y = tmp, by.x = "a2_eudract_number", by.y = "Group.1", all.x = TRUE) names(result)[ncol(result)] <- "startdatefirst" result$startyearfirst <- as.numeric(format(result$startdatefirst, "%Y")) # find if any member state recorded any investigator network involvement tmp <- ifelse( !is.na(result$g4_investigator_networks.g4_investigator_network_to_be_involved_in_the_trial), TRUE, FALSE) tmp <- aggregate(tmp, by = list(result$a2_eudract_number), FUN = function(x) any(x)) result <- merge(x = result, y = tmp, by.x = "a2_eudract_number", by.y = "Group.1", all.x = TRUE) names(result)[ncol(result)] <- "networkanyinvolved" # find if any member state recorded any investigator network names tmp <- ifelse( !is.na(result$g4_investigator_networks.g41_name_of_organisation) & result$g4_investigator_networks.g41_name_of_organisation != "" & !(grepl( paste0("no network|^NA$|^N/A$|not applicable|no aplica|no applica|", "TO BE CONFIRMED|To be completed locally if applicable", "To Be Advised", collapse = ""), result$g4_investigator_networks.g41_name_of_organisation, ignore.case = TRUE)), TRUE, FALSE) tmp <- aggregate(tmp, by = list(result$a2_eudract_number), FUN = function(x) any(x)) result <- merge(x = result, y = tmp, by.x = "a2_eudract_number", by.y = "Group.1", all.x = TRUE) names(result)[ncol(result)] <- "networkanyname" # get names of involved networks tmp.names <- tapply(X = result$g4_investigator_networks.g41_name_of_organisation, INDEX = list(result$a2_eudract_number), FUN = function(x) { tmp <- x tmp <- paste0(tmp, collapse = " / ") # several records tmp <- unlist(strsplit(tmp, " / ")) tmp <- trimws(tmp) tmp <- unique(tmp[tmp != ""]) tmp <- tmp[!grepl( paste0("no network|^NA$|^N/A$|not applicable|no aplica|no applica|", "TO BE CONFIRMED|To be completed locally if applicable", "To Be Advised", collapse = ""), tmp, ignore.case = TRUE)] tmp }) # add names back to trials tmp.names.df <- data.frame( names(tmp.names), sapply(tmp.names, function(x) { tmp <- x tmp <- sort(x) tmp <- paste0(tmp, collapse = " | ") if (tmp == "NA" | tmp == "") tmp <- NA tmp }), stringsAsFactors = FALSE) names(tmp.names.df) <- c("a2_eudract_number", "networknames") result <- merge(x = result, y = tmp.names.df, all.x = TRUE) # get unique trials result <- result[ result[["_id"]] %in% dbFindIdsUniqueTrials( con = dbc, include3rdcountrytrials = FALSE), ] # hist(result$startyearfirst) # select trials # table(result$b1_sponsor.b31_and_b32_status_of_the_sponsor) result <- subset( result, grepl("^Commercial.*|.* Commercial.*", b1_sponsor.b31_and_b32_status_of_the_sponsor, ignore.case = TRUE) & e74_therapeutic_use_phase_iv == FALSE ) # plot ggplot(data = result, aes(x = startyearfirst, fill = networkanyinvolved)) + geom_histogram(binwidth = 1) + labs(title = "Paediatric phase 1 to 3 trials in EUCTR", subtitle = "that have a commercial sponsor", x = "Year of first trial authorisation", y = "Number of trials", fill = "Investigor\nnetwork\ninvolvement\ndocumented?") + xlim(c(2000, 2020)) + ylim(c(0, 250)) + geom_vline(xintercept = as.numeric(format(Sys.Date(), format = "%Y")), colour = "gray") |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | # print most often documented network result <- subset(result, subset = !is.na(networknames), select = c("networknames"))[,1] result <- unlist(strsplit(result, " | ", fixed = TRUE)) # some manual normalisation result <- sapply( result, function(x) switch( x, "Medicines for Children Research Network MCRN" = "Medicines for Children Research Network", "The Medicines for Children Research Network MCRN" = "Medicines for Children Research Network", "Cystic Fibrosis - National Knowledge Service UK CF NKS" = "Cystic Fibrosis - National Knowledge Service", "Cystic Fibrosis - National Knowledge Service UK CF-NKS" = "Cystic Fibrosis - National Knowledge Service", "Cystic Fibrosis - National Knowledge Service UK CFNKS" = "Cystic Fibrosis - National Knowledge Service", x )) result <- table(result) result <- result[rev(order(result))] result <- as.data.frame(result, stringsAsFactors = FALSE) names(result) <- c("Name of investigator network documented to be involved in ...", "... number of trials") # output #knitr::kable(result[1:15], col.names = c("Network name", "Trials")) kable_styling( kable( result[1:40,], col.names = c("Network name", "Trials")), bootstrap_options = c("striped", "hover", "condensed", "responsive"), full_width = FALSE, position = "left") |
Network name | Trials |
---|---|
Medicines for Children Research Network | 26 |
PRINTO | 10 |
PRCSG | 8 |
NIHR CRN | 5 |
Innovative Therapies for Children with Cancer ITCC | 5 |
Cystic Fibrosis Foundation | 5 |
Cystic Fibrosis - National Knowledge Service | 5 |
Cystic Fibrosis Foundation Therapeutics | 4 |
CRN: North Thames Central Office | 4 |
Ancillare | 4 |
Sunovion Pharmaceuticals Inc. | 3 |
European Cystic Fibrosis Society - Clinical Trial Network | 3 |
ECFS CTN | 3 |
Cystische Fibrose - Netzwerk Klinische Studien German CF-NKS | 3 |
Cystic Fibrosis Foundation Therapeutics - Therapeutics Development Network | 3 |
Clinical Research Network CRN | 3 |
Vasculair Research Network VRN | 2 |
TREAT-NMD, The University of Newcastle upon Tyne | 2 |
The Experimental Cancer Medicine Centres | 2 |
Teddy Network | 2 |
NIHR CRN National Coordinating Centre | 2 |
NIHR Clinical Research Network | 2 |
NETSTAP e.V. | 2 |
National Cancer Research Network Coordinating Centre NCRN CC | 2 |
Medicines for Children Network MCRN | 2 |
Medicines for Children Network | 2 |
Medical Research Network Ltd. | 2 |
MCRN Medicines for Children Research Network | 2 |
ITCC | 2 |
IQVIA | 2 |
ICON Clinical Research LLC | 2 |
European Cystic Fibrosis Society Clinical Trials Network ECFS-CTN | 2 |
ECFS Clinical Trials Network | 2 |
Cystic Fibrosis Foundation Therapeutics, Inc | 2 |
Cystic Fibrosis Foundation Therapeutics CFFT Therapeutics Development Network TDN | 2 |
CRN North Thames, NIHR Clinical Research Network CRN | 2 |
Comprehensive Clinical Research Network and Medicines for Children Research Network | 2 |
Clinical Research Network North Thames | 2 |
Childrens Oncology Group Operations Center | 2 |
Childrens Oncology Group | 2 |
1 2 3 4 5 6 7 8 9 10 11 12 | # DT::datatable( # result, # filter = list(position = "top", # clear = FALSE, # plain = TRUE), # options = list( # dom = "lprt", # search = list(regex = TRUE, caseInsensitive = TRUE), # #language = list(search = "Search in any column:"), # searchHighlight = TRUE), # style = "bootstrap") |