Medical Devices Active Licence Listing (MDALL) API Guide

Table of contents

Introduction

Health Canada is the federal regulator of therapeutic products, including medical devices. We do not provide medical advice on the use of the products identified in this listing.

The Medical Devices Bureau (Bureau) of the Therapeutic Products Directorate, Health Canada is the Canadian federal regulator responsible for licensing medical devices in accordance with the Food and Drugs Act and Regulations and the Medical Devices Regulations.

The Bureau maintains a database of all licensed Class II, III, and IV medical devices offered for sale in Canada. Class I medical devices do not require a medical device licence and are monitored by the Regulatory Operations and Regions Branch (Compliance and Enforcement) through Establishment Licensing.

Only products which appear in this database listing may be offered for general marketing purposes in Canada. Class I Devices, or devices which relate to Investigational Testing Authorization or Special Access do not appear in this listing.

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 Medical Devices Active Licence Listing is https://health-products.canada.ca/api/medical-devices/ and you can add parameters to it. Any requests are made relative to this URI.

Licence

This is the permit that is delivered for a device to a company.

Parameters

There are six parameters in the request: id, state, licence_name, company_id, lang and type.

Request parameters
Parameter Meaning Value Required? Note
api/medical-devices/licence/?id= Returns the licence according to the licence number specified in the request.
    ##### - licence number
Yes
api/medical-devices/licence/?state=active Returns a list of licences that have a specific state.
  • active - Returns the licences without a cancellation date.
  • archived - Returns the licences with a cancellation date.
No, but default to all if not specified. Determines whether the response is for a specific state.
api/medical-devices/licence/?licence_name=flood Returns a list of licences with flood in the licence name.
  • red - %FLOOD% - word flood in the licence name
No, but default to all if not specified. Determines whether the response is for a specific licence name.
api/medical-devices/licence/?company_id=133876 Returns a list of licences for the company identification number 133876.
  • 133876 - %133876% - company identification number 133876
No, but default to all if not specified. Determines whether the response is for a specific company identification number.
api/medical-devices/licence/?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/medical-devices/licence/?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.

Active Licences can be accessed via these URIs:

Archived Licences can be accessed via these URIs:

Contents of the response

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

Each licence object consists of the following values:

Licence object values
Key Value
original_licence_no The licence number.
licence_status The licence status (C=Cancelled, D=Issued/Conditional, I=Issued/Active, M=Merge, O=Discontinued at Renewal, P=Pending signature, R=Cancelled Renowal No Response, S=Suspended, W=Withdrawn, Q=Suspended/Invalid QS Certification, X=Cancelled QS/2003).
appl_risk_class The application risk class.
licence_name The licence name.
first_licence_status_dt The date of the first issued licence.
last_refresh_dt The refresh date of the mdall database.
end_date The date of cancellation of the licence (if active then null).
licence_type_cd The licence type code.
company_id The company identification number.
licence_type_desc The licence type description.

Sample response

{"original_licence_no":1561,"licence_status":"I","appl_risk_class":2,"licence_name":"FLOOD PHANTOM","first_licence_status_dt":"1999-02-23","last_refresh_dt":"2013-01-29","end_date":null,"licence_type_cd":"F","company_id":101500,"licence_type_desc":"Device Family"}

jQuery example

Example of a function that search for licences given a state and a licence name:

function getAllLicence(state, licence_name) {
      var base = 'https://health-products.canada.ca';
      var uri = base + '/api/medical-devices/licence/?state=' + state + '&licence_name=' + licenceName;
      $.ajax({
              url:uri,
              type:'GET',
              Accept:"application/json",
              dataType: 'json',
              success:function(data){
                           console.log(data.licence_name);
                           var frag = document.createDocumentFragment();
                           var h2 = document.createElement("h2");
                           var LicenceName = document.createTextNode(data.licence_name);
                           var p = document.createElement("p");
                           var text = document.createTextNode(data.panels[0].text);
                           h2.appendChild(LicenceName);
                           p.appendChild(text);
                           frag.appendChild(h2);
                           frag.appendChild(p);
                           $("#responses")[0].appendChild(frag);
              },
              error:function(error){
              },
      });
      return;
 };			

Company

This contains the company name and address.

Parameters

There are four parameters in the request: id, status, company_name and type.

Request parameters
Parameter Meaning Value Required? Note
api/medical-devices/company/?id= Returns the company according to the company identification number specified in the request.
    ##### - identification number of the company
Yes
api/medical-devices/company/?status=A Returns a list of companies that have a specific status.
  • A - Active
  • I - Inactive
No, but default to all if not specified. Determines whether the response is for a specific status.
api/medical-devices/company/?company_name=bayer Returns a list of companies with bayer in the company name.
  • %bayer% - word bayer in the company name
No, but default to all if not specified. Determines whether the response is for a specific company name
api/medical-devices/company/?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.

Companies can be accessed via that URI:

Contents of the response

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

Each company object consists of the following values:

Company object values
Key Value
company_id The company identification number.
company_name The company name.
addr_line_1 The address line 1.
addr_line_2 The address line 2.
addr_line_3 The address line 3.
postal_code The postal code.
city The city in the address.
country_cd The country code (2 digit).
region_cd The region code (2 digit).
company_status The company status. (A=Active, I=Inactive)

Sample response

{"company_id":112453,"company_name":"MENNEN MEDICAL LTD","addr_line_1":"4 Ha-Yarden Street","addr_line_2":"","addr_line_3":"","postal_code":"0076100","city":"Yavne","country_cd":"IL","region_cd":"","company_status":"A"}

jQuery example

Example of a function that search for a company given the identification number of a company :

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

Device

This is the device information.

Parameters

There are four parameters in the request: id, state, device_name, and type.

Request parameters
Parameter Meaning Value Required? Note
api/medical-devices/device/?id= Returns the device according to the device identification number specified in the request.
    ##### - device identification number
Yes
api/medical-devices/device/?state=active Returns a list of devices that have a specific state.
  • active - Returns the devices without a removal date.
  • archived - Returns the devices with a removal date.
No, but default to all if not specified. Determines whether the response is for a specific state.
api/medical-devices/device/?device_name=red Returns a list of devices with red in the device name.
    • red - %RED% - word red in the device name
No, but default to all if not specified. Determines whether the response is for a specific device name.
api/medical-devices/device/?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.

Active Devices can be accessed via that URI:

Archived Devices can be accessed via that URI:

Contents of the response

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

Each device object consists of the following values:

Device object values
Key Value
original_licence_no The licence number.
device_id The device identification number.
first_licence_dt The date the device was added in the licence.
end_date The date of removal of the device (if active then null).
trade_name The name of the device.

Sample response

{"original_licence_no":65113,"device_id":189995,"first_licence_dt":"2004-07-08","end_date":null,"trade_name":"'HOPKINS' TELE-OTOSCOPE"}

jQuery example

Example of a function that search for devices given a device name:

function getDevice(deviceName) {
      var base = 'https://health-products.canada.ca';
      var uri = base + '/api/medical-devices/device/?device_name=' + deviceName;
      $.ajax({
              url:uri,
              type:'GET',
              Accept:"application/json",
              dataType: 'json',
              success:function(data){
                           console.log(data.trade_name);
                           var frag = document.createDocumentFragment();
                           var h2 = document.createElement("h2");
                           var DeviceName = document.createTextNode(data.trade_name);
                           var p = document.createElement("p");
                           var text = document.createTextNode(data.panels[0].text);
                           h2.appendChild(DeviceName);
                           p.appendChild(text);
                           frag.appendChild(h2);
                           frag.appendChild(p);
                           $("#responses")[0].appendChild(frag);
              },
              error:function(error){
              },
      });
      return;
 };			

Device Identifier

This is the list of all identifiers that uniquely identify a device (on the label).

Parameters

There are four parameters in the request: id, device_identifier, state and type.

Request parameters
Parameter Meaning Value Required? Note
api/medical-devices/deviceidentifier/?id= Returns a device identifier according to the device identification number specified in the request.
    ##### - device identification number
Yes
api/medical-devices/deviceidentifier/?device_identifier=4017 Returns a list of device identifiers with 4017 in the device identifier.
  • %4017% - 4017 in the device identifier
No, but default to all if not specified. Determines whether the response is for a specific device identifier.
api/medical-devices/deviceidentifier/?state=active Returns a list of device identifiers that have a specific state.
  • active - Returns the device identifiers without a removal date.
  • archived - Returns the device identifiers with a removal date.
No, but default to all if not specified. Determines whether the response is for a specific state.
api/medical-devices/deviceidentifier/?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.

Active Device Identifiers can be accessed via that URI:

Archived Device Identifiers can be accessed via that URI:

Contents of the response

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

Each device identifier object consists of the following values:

Device Identifier object values
Key Value
original_licence_no The licence number.
device_id The device identification number.
first_licence_dt The date the identifier was added in the licence.
end_date The date the identifier was removed from the licence.
device_identifier The identifier.

Sample response

{"original_licence_no":29756,"device_id":408838,"first_licence_dt":"2001-05-24","end_date":null,"device_identifier":"P02-14030"}

jQuery example

Example of a function that search for device identifiers given a device identification number:

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

Licence Type

This contains the list of all licence type codes and their definitions.

Parameters

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

Request parameters
Parameter Meaning Value Required? Note
api/medical-devices/licencetype/?code=D Returns a licence type according to the licence type code specified in the request.
    ##### - code of the licence type
Yes
api/medical-devices/licencetype/?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/medical-devices/licencetype/?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.

Licence Types can be accessed via these URIs:

Contents of the response

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

Each licence type object consists of the following values:

Licence Type object values
Key Value
licence_type_cd The licence type code.
licence_type_desc The definition of the code.

Sample response

{"licence_type_cd":"G","licence_type_desc":"Device Group"}

jQuery example

Example of a function that search for a licence type given a licence type code and language selection:

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

Summary Basis Decision Location

This contains the web site address of the summary basis of decisions.

Parameters

There are two parameters in the request: id and type.

Request parameters
Parameter Meaning Value Required? Note
api/medical-devices/sbdlocation/?id= Returns summary basis decision location according to the licence number specified in the request.
    ##### - licence number
Yes
api/medical-devices/sbdlocation/?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.

Summary Basis Decision Locations can be accessed via that URIs:

Contents of the response

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

Each summary basis decision location object consists of the following values:

Summary Basis Decision Location object values
Key Value
original_licence_no The licence number.
sbd_notice_web_loc The notice of decision web site address.
sbd_web_loc The notice of decision web site address.

Sample response

{"original_licence_no":75574,"sbd_notice_web_loc":"http://www.hc-sc.gc.ca/dhp-mps/prodpharma/sbd-smd/md-im/sbd_smd_2008_elana_122213-eng.php#a2","sbd_web_loc":"http://www.hc-sc.gc.ca/dhp-mps/prodpharma/sbd-smd/md-im/sbd_smd_2008_elana_122213"}

jQuery example

Example of a function that search for a summary basis decision location given a licence number:

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