Clinical Trials Database (CTA) API Guide

Table of contents

Introduction

The Clinical Trials Database provides to the public a listing of specific information relating to phase I, II and III clinical trials in patients. The database is managed by Health Canada and provides a source of information about Canadian clinical trials involving human pharmaceutical and biological drugs.

This Application Programming Interface (API) allows developers to access that information in JSON and XML format for reuse in their own applications. The base URI for the Notice of Compliance Database is https://health-products.canada.ca/api/clinical-trial/ and you can add parameters to it. Any requests are made relative to this URI.

Sponsor

A clinical trial sponsor is an individual, corporate body, institution or organization that conducts a clinical trial. The sponsor is responsible for every aspect of a clinical trial, including ensuring that the trial is carried out under good clinical practices at each clinical trial site.

Each clinical trial site must have a Qualified Investigator, i.e., a licensed physician or dentist. The Qualified Investigator is the person responsible to the sponsor for the conduct of the clinical trial at the clinical trial site.

Parameters

There are three parameters in the request: id, lang and type.

Request parameters
Parameter Meaning Value Required? Note
api/clinical-trial/sponsor/?id= Returns sponsor according to the sponsor identification number specified in the request.
    ##### - identification number of the sponsor
Yes
api/clinical-trial/sponsor/?lang=en Changes the language of the response.
  • en - English
  • fr - French
No, but defaults to English if not specified. Determines whether the response is in English or French.
api/clinical-trial/sponsor/?type=json Changes the format of the result.
  • json - JSON
  • xml - XML
No, but defaults to JSON if not specified. Determines whether the format of the result will be in JSON or XML.

Sponsors can be accessed via these URIs:

Contents of the response

The response consists of a result that contains one or multiple objects.

Each sponsor object consists of the following values:

Sponsor object values
Key Value
manufacturer_id The identification number assigned to a sponsor.
manufacturer_name The name of the sponsor.

Sample response

{"manufacturer_id":1118,"manufacturer_name":"ST JOSEPHS HEALTH CENTRE LONDON"}

jQuery example

Example of a function that search for a sponsor given a sponsor identification number and language selection:

function getSponsor(id, lang) {
      var base = 'https://health-products.canada.ca';
      var uri = base + '/api/clinical-trial/sponsor/?lang=' + lang + '&id=' + id;
      $.ajax({
              url:uri,
              type:'GET',
              Accept:"application/json",
              dataType: 'json',
              success:function(data){
                           console.log(data.manufacturer_name);
                           var frag = document.createDocumentFragment();
                           var h2 = document.createElement("h2");
                           var Sponsor = document.createTextNode(data.manufacturer_name);
                           var p = document.createElement("p");
                           var text = document.createTextNode(data.panels[0].text);
                           h2.appendChild(Sponsor);
                           p.appendChild(text);
                           frag.appendChild(h2);
                           frag.appendChild(p);
                           $("#responses")[0].appendChild(frag);
              },
              error:function(error){
              },
      });
      return;
 };			

Medical Condition

The disease or a description of the intended indication that is being investigated in the clinical trial.

Parameters

There are three parameters in the request: id, lang and type.

Request parameters
Parameter Meaning Value Required? Note
api/clinical-trial/medicalcondition/?id= Returns medical condition according to the medical condition identification number specified in the request.
    ##### - identification number of the medical condition
Yes
api/clinical-trial/medicalcondition/?lang=en Changes the language of the response.
  • en - English
  • fr - French
No, but defaults to English if not specified. Determines whether the response is in English or French.
api/clinical-trial/medicalcondition/?type=json Changes the format of the result.
  • json - JSON
  • xml - XML
No, but defaults to JSON if not specified. Determines whether the format of the result will be in JSON or XML.

Medical Conditions can be accessed via these URIs:

Contents of the response

The response consists of a result that contains one or multiple objects.

Each medical condition object consists of the following values:

Medical Condition object values
Key Value
med_condition_id The identification number assigned to a medical condition.
med_condition The medical condition.

Sample response

{"med_condition_id":154,"med_condition":"MELANOMA"}

jQuery example

Example of a function that search for a medical condition given a medical condition identification number and language selection:

function GetAllMedicalCondition(id, lang) {
      var base = 'https://health-products.canada.ca';
      var uri = base + '/api/clinical-trial/medicalcondition/?lang=' + lang + '&id=' + id;
      $.ajax({
              url:uri,
              type:'GET',
              Accept:"application/json",
              dataType: 'json',
              success:function(data){
                           console.log(data.med_condition);
                           var frag = document.createDocumentFragment();
                           var h2 = document.createElement("h2");
                           var MedicalCondition = document.createTextNode(data.med_condition);
                           var p = document.createElement("p");
                           var text = document.createTextNode(data.panels[0].text);
                           h2.appendChild(MedicalCondition);
                           p.appendChild(text);
                           frag.appendChild(h2);
                           frag.appendChild(p);
                           $("#responses")[0].appendChild(frag);
              },
              error:function(error){
              },
      });
      return;
 };			

Drug Product

Basic information about the drug product, such as the name given to the drug used in the clinical trial. This may be a code name, the chemical name of the active ingredient, the non-proprietary name, or a brand name.

Parameters

There are three parameters in the request: id, lang and type.

Request parameters
Parameter Meaning Value Required? Note
api/clinical-trial/drugproduct/?id= Returns drug product according to the brand identification number specified in the request.
    ##### - identification number of the brand
Yes
api/clinical-trial/drugproduct/?lang=en Changes the language of the response.
  • en - English
  • fr - French
No, but defaults to English if not specified. Determines whether the response is in English or French.
api/clinical-trial/drugproduct/?type=json Changes the format of the result.
  • json - JSON
  • xml - XML
No, but defaults to JSON if not specified. Determines whether the format of the result will be in JSON or XML.

Drug Products can be accessed via these URIs:

Contents of the response

The response consists of a result that contains one or multiple objects.

Each drug product object consists of the following values:

Drug Product object values
Key Value
protocol_id The identification number assigned to a protocol.
submission_no The control number.
brand_id The identification number assigned to a brand.
manufacturer_id The identification number assigned to a sponsor.
manufacturer_name The name of the sponsor.
brand_name The brand name for the drug product.

Sample response

{"protocol_id":35778,"submission_no":"173436","brand_id":155817,"manufacturer_id":4794,"manufacturer_name":"GOVERNORS OF THE UNIVERSITY OF ALBERTA","brand_name":"FECAL MICROBIOTA TRANSPLANTATION"}

jQuery example

Example of a function that search for a drug product given a brand identification number and language selection:

function getDrugProduct(id, lang) {
      var base = 'https://health-products.canada.ca';
      var uri = base + '/api/clinical-trial/drugproduct/?lang=' + lang + '&id=' + id;
      $.ajax({
              url:uri,
              type:'GET',
              Accept:"application/json",
              dataType: 'json',
              success:function(data){
                           console.log(data.brand_name);
                           var frag = document.createDocumentFragment();
                           var h2 = document.createElement("h2");
                           var DrugProduct = document.createTextNode(data.brand_name);
                           var p = document.createElement("p");
                           var text = document.createTextNode(data.panels[0].text);
                           h2.appendChild(DrugProduct);
                           p.appendChild(text);
                           frag.appendChild(h2);
                           frag.appendChild(p);
                           $("#responses")[0].appendChild(frag);
               },
               error:function(error){
               },
      });
      return;
 };			

Protocol

A document that describes the objective(s), design, methodology, statistical considerations and organization of a trial.

Parameters

There are three parameters in the request: id, lang and type.

Request parameters
Parameter Meaning Value Required? Note
api/clinical-trial/protocol/?id= Returns protocol according to the protocol identification number specified in the request.
    ##### - identification number of the protocol
Yes
api/clinical-trial/protocol/?lang=en Changes the language of the response.
  • en - English
  • fr - French
No, but defaults to English if not specified. Determines whether the response is in English or French.
api/clinical-trial/protocol/?type=json Changes the format of the result.
  • json - JSON
  • xml - XML
No, but defaults to JSON if not specified. Determines whether the format of the result will be in JSON or XML.

Protocols can be accessed via these URIs:

Contents of the response

The response consists of a result that contains one or multiple objects.

Each protocol object consists of the following values:

Protocol object values
Key Value
protocol_id The identification number assigned to a protocol.
protocol_no The protocol number.
submission_no The control number.
status_id The identification number assigned to a status.
start_date The study start date.
end_date The study end date.
nol_date The date of the No Objection Letter.
protocol_title The protocol title.
medConditionList The consolidated list of medical conditions for a clinical trial protocol.
     med_condition_id      The identification number assigned to a medical condition.
     med_condition      The medical condition.
studyPopulationList The consolidated list of study populations for a clinical trial protocol.
     study_population_id      The identification number assigned to a study population.
     study_population      The study population.

Sample response

{"protocol_id":27351,"protocol_no":"AMB116457","submission_no":"165540","status_id":1,"start_date":"2013-10-30","end_date":null,"nol_date":"2013-07-05",
    "protocol_title":"AN OPEN-LABEL EXTENSION STUDY OF THE LONG-TERM SAFETY, TOLERABILITY AND EFFICACY OF AMBRISENTAN IN SUBJECTS WITH INOPERABLE CHRONIC THROMBOEMBOLIC PULMONARY HYPERTENSION (CTEPH).",
    "medConditionList":[{"med_condition_id":326,"med_condition":"CHRONIC THROMBOEMBOLIC PULMONARY HYPERTENSION (CTEPH)"},
                        {"med_condition_id":260,"med_condition":"PULMONARY DISORDERS"}],
    "studyPopulationList":[{"study_population_id":1,"study_population":"ADULT MALE"},
                           {"study_population_id":2,"study_population":"ADULT FEMALE"}]}

jQuery example

Example of a function that search for a protocol given a protocol identification number and language selection:

function getProtocol(id, lang) {
      var base = 'https://health-products.canada.ca';
      var uri = base + '/api/clinical-trial/protocol/?lang=' + lang + '&id=' + id;
      $.ajax({
              url:uri,
              type:'GET',
              Accept:"application/json",
              dataType: 'json',
              success:function(data){
                           console.log(data.protocol_title);
                           var frag = document.createDocumentFragment();
                           var h2 = document.createElement("h2");
                           var Protocol = document.createTextNode(data.protocol_title);
                           var p = document.createElement("p");
                           var text = document.createTextNode(data.panels[0].text);
                           h2.appendChild(Protocol);
                           p.appendChild(text);
                           frag.appendChild(h2);
                           frag.appendChild(p);
                           $("#responses")[0].appendChild(frag);
              },
              error:function(error){
              },
      });
      return;
 };			

Trial Status

A "PENDING" status means Health Canada is pending the receipt of information from the sponsor indicating that the trial started. An "ONGOING" status means Health Canada has received information from the sponsor indicating the proposed study start date, and an "ENDED" status means Health Canada has received information from the sponsor indicating that the clinical trial has ended.

Parameters

There are three parameters in the request: id, lang and type.

Request parameters
Parameter Meaning Value Required? Note
api/clinical-trial/status/?id= Returns the trial status according to the status identification number specified in the request.
    ##### - identification number of the status
Yes
api/clinical-trial/status/?lang=en Changes the language of the response.
  • en - English
  • fr - French
No, but defaults to English if not specified. Determines whether the response is in English or French.
api/clinical-trial/status/?type=json Changes the format of the result.
  • json - JSON
  • xml - XML
No, but defaults to Json if not specified. Determines whether the result will be of type JSON or XML.

Trial Status can be accessed via these URIs:

Contents of the response

The response consists of a result that contains one or multiple objects.

Each trial status object consists of the following values:

Trial Status object values
Key Value
status_id The identification number assigned to a status.
status The status of the trial.

Sample response

{"status_id":1,"status":"ONGOING"}

jQuery example

Example of a function that search for a trial status given a status identification number and language selection:

function getStatus(id, lang) {
      var base = 'https://health-products.canada.ca';
      var uri = base + '/api/clinical-trial/status/?lang=' + lang + '&id=' + id;
      $.ajax({
              url:uri,
              type:'GET',
              Accept:"application/json",
              dataType: 'json',
              success:function(data){
                           console.log(data.status);
                           var frag = document.createDocumentFragment();
                           var h2 = document.createElement("h2");
                           var Status = document.createTextNode(data.status);
                           var p = document.createElement("p");
                           var text = document.createTextNode(data.panels[0].text);
                           h2.appendChild(Status);
                           p.appendChild(text);
                           frag.appendChild(h2);
                           frag.appendChild(p);
                           $("#responses")[0].appendChild(frag);
              },
              error:function(error){
              },
      });
      return;
 };			

Study Population

Characteristics of subjects that are eligible to participate in the clinical trial, e.g., adult males and females, children, etc.

Parameters

There are three parameters in the request: id, lang and type.

Request parameters
Parameter Meaning Value Required? Note
api/clinical-trial/studypopulation/?id= Returns study population according to the study population identification number specified in the request.
    ##### - identification number of the study population
Yes
api/clinical-trial/studypopulation/?lang=en Changes the language of the response.
  • en - English
  • fr - French
No, but defaults to English if not specified. Determines whether the response is in English or French.
api/clinical-trial/studypopulation/?type=json Changes the format of the result.
  • json - JSON
  • xml - XML
No, but defaults to JSON if not specified. Determines whether the format of the result will be in JSON or XML.

Population Studies can be accessed via these URIs:

Contents of the response

The response consists of a result that contains one or multiple objects.

Each study population object consists of the following values:

Study Population object values
Key Value
study_population_id The identification number assigned to a study population.
study_population The study population.

Sample response

{"study_population_id":3,"study_population":"PEDIATRIC"}

jQuery example

Example of a function that search for a study population given a study population identification number and language selection:

function getStudyPopulation(id, lang) {
      var base = 'https://health-products.canada.ca';
      var uri = base + '/api/clinical-trial/studypopulation/?lang=' + lang + '&id=' + id;
      $.ajax({
              url:uri,
              type:'GET',
              Accept:"application/json",
              dataType: 'json',
              success:function(data){
                           console.log(data.study_population);
                           var frag = document.createDocumentFragment();
                           var h2 = document.createElement("h2");
                           var StudyPopulation = document.createTextNode(data.study_population);
                           var p = document.createElement("p");
                           var text = document.createTextNode(data.panels[0].text);
                           h2.appendChild(StudyPopulation);
                           p.appendChild(text);
                           frag.appendChild(h2);
                           frag.appendChild(p);
                           $("#responses")[0].appendChild(frag);
               },
               error:function(error){
               },
      });
      return;
 };