In our project we needed to create a database containing a large number of medical devices from different manufacturers, together with up-to-date information about their approval for sale and use within the European Union.
The EU provides such information through a central registry called EUDAMED (European Database on Medical Devices). This database became the natural reference point for our solution, as it contains the essential regulatory and technical details of medical devices marketed in the EU.
EUDAMED is the official European Union database that collects and provides structured information about medical devices, in vitro diagnostic devices, manufacturers, clinical investigations, certifications, and safety issues.
It is part of the EU Medical Device Regulation (MDR 2017/745) and In Vitro Diagnostic Medical Devices Regulation (IVDR 2017/746). EUDAMED’s role is to:
EUDAMED data is organized around two main identifiers:
This structure enables regulators and companies to track both the overall product family and individual marketed devices.
We aimed to build a medical devices database that links and synchronizes with EUDAMED.
However, EUDAMED’s native structure is not well suited for relational database design. Therefore, we designed a classic hierarchical schema that better reflects our needs while still corresponding closely to the EUDAMED structure:
Stores information about device manufacturers or authorized representatives.
Manufacturer | |
---|---|
manufacturer_id | PK |
name | TEXT |
srn | TEXT |
address | TEXT |
country | TEXT |
contact_email | TEXT |
contact_phone | TEXT |
Represents a group of related devices.
DeviceGroup | |
---|---|
group_id | PK |
manufacturer_id | FK → Manufacturer(manufacturer_id) |
basic_udi_di | TEXT UNIQUE |
issuing_entity | TEXT |
device_model | TEXT |
device_name | TEXT |
system_pack | BOOLEAN |
kit | BOOLEAN |
special_device | BOOLEAN |
legislation | TEXT |
risk_class | TEXT |
clinical_invest_no | TEXT |
clinical_invest_link | TEXT |
ci_non_eu_countries | TEXT |
cert_type | TEXT |
cert_number | TEXT |
cert_revision | TEXT |
cert_date | DATE |
cert_notified_body | TEXT |
characteristics_json | JSONB |
Represents individual devices within a group.
Device | |
---|---|
device_id | PK |
group_id | FK → DeviceGroup(group_id) |
udi_di | TEXT UNIQUE |
issuing_entity | TEXT |
trade_name | TEXT |
catalog_number | TEXT |
product_description | TEXT |
info_url | TEXT |
packaging_json | JSONB |
regulatory_status | TEXT |
device_status | TEXT |
device_substatus | TEXT |
recall_scope | TEXT |
ms_place_on_market | DATE |
nomenclature_code | TEXT |
new_device | BOOLEAN |
non_medical_purpose | BOOLEAN |
safety_info_json | JSONB |
characteristics_json | JSONB |
This schema keeps the logical hierarchy: Manufacturer → Device Group → Device, while remaining flexible enough to store complex EUDAMED attributes.
EUDAMED provides several official approaches for organizations to work with its data:
EUDAMED exposes secure M2M APIs that allow companies to exchange data directly with the system. Access, however, is restricted and requires official registration. There are two main ways to obtain this access:
Both paths enable read and write operations, but the registration and verification process can be complex and not suitable for every project.
For projects that do not require large-scale automated synchronization, EUDAMED also provides a bulk export functionality through its public user interface. Users can download datasets in JSON format, containing device and manufacturer information. These datasets are structured, machine-readable, and can be processed to update local systems.
This method is particularly suitable for smaller projects where:
In our case, we require only periodic synchronization of under 1,000 records per session, making the bulk download approach the most efficient solution.
Although EUDAMED’s bulk download feature is exposed via its web interface, the data is delivered through endpoints that return JSON content. By analyzing the UI network calls, we identified three relevant services:
Using these, we can search for a device, retrieve details for its Basic UDI-DI group, and download detailed information for each specific UDI-DI device. This allows us to synchronize our local relational database with EUDAMED on a regular schedule, ensuring that the information about medical devices remains accurate and compliant with EU regulatory data.