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.
Parameter | Meaning | Value | Required? | Note |
---|---|---|---|---|
api/medical-devices/licence/?id= | Returns the licence according to the licence number specified in the request. |
|
Yes | |
api/medical-devices/licence/?state=active | Returns a list of licences that have a specific state. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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:
- https://health-products.canada.ca/api/medical-devices/licence/?state=active&lang=en&type=json
- https://health-products.canada.ca/api/medical-devices/licence/?state=active&lang=fr&type=json
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:
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.
Parameter | Meaning | Value | Required? | Note |
---|---|---|---|---|
api/medical-devices/company/?id= | Returns the company according to the company identification number specified in the request. |
|
Yes | |
api/medical-devices/company/?status=A | Returns a list of companies that have a specific status. |
|
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. |
|
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. |
|
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:
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.
Parameter | Meaning | Value | Required? | Note |
---|---|---|---|---|
api/medical-devices/device/?id= | Returns the device according to the device identification number specified in the request. |
|
Yes | |
api/medical-devices/device/?state=active | Returns a list of devices that have a specific state. |
|
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. |
|
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. |
|
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:
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.
Parameter | Meaning | Value | Required? | Note |
---|---|---|---|---|
api/medical-devices/deviceidentifier/?id= | Returns a device identifier according to the device identification number specified in the request. |
|
Yes | |
api/medical-devices/deviceidentifier/?device_identifier=4017 | Returns a list of device identifiers with 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. |
|
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. |
|
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:
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.
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. |
|
Yes | |
api/medical-devices/licencetype/?lang=en | Changes the language of the response. |
|
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. |
|
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:
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.
Parameter | Meaning | Value | Required? | Note |
---|---|---|---|---|
api/medical-devices/sbdlocation/?id= | Returns summary basis decision location according to the licence number specified in the request. |
|
Yes | |
api/medical-devices/sbdlocation/?type=json | Changes the format of the result. |
|
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:
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; };