Search EUDAMED

The EU's official European Database on Medical Devices: economic operators, devices (UDI-DI), notified-body certificates, and market surveillance. Filter, combine, and export to Excel or Word.

Live data from the official EUDAMED public database (European Commission).
Home EUDAMED Search
Devices
Manufacturers
Certificates
Market Surveillance
Combine criteria: all fields apply together. Separate values with ; to match any (e.g. stent; catheter).

Details

'; downloadBlob('' + html, 'application/msword', exportName('doc')); }function updateExportButtons() { var selCount = Object.keys(state.selected).length; var pageCount = (state.lastData && state.lastData.content && state.lastData.content.length) || 0; var has = selCount > 0 || pageCount > 0; ['mdn-eu-x-csv', 'mdn-eu-x-xlsx', 'mdn-eu-x-doc'].forEach(function (id) { el(id).disabled = !has; }); el('mdn-eu-sel-lbl').textContent = selCount ? (selCount + ' selected →') : (pageCount ? 'Export page →' : ''); }// ── Saved searches (presets, per tab, in localStorage) ─────────────────────── var PKEY = 'mdnEudamedPresets'; function loadPresets() { try { return JSON.parse(localStorage.getItem(PKEY) || '{}'); } catch (e) { return {}; } } function savePresets(p) { try { localStorage.setItem(PKEY, JSON.stringify(p)); } catch (e) {} } function refreshPresetList() { var all = loadPresets()[state.tab] || {}; el('mdn-eu-presets').innerHTML = '' + Object.keys(all).map(function (n) { return ''; }).join(''); } function applyPreset(params) { var cfg = TABS[state.tab]; if (cfg.segmented && params[cfg.segmented.key]) { var seg = el('mdn-eu-fields').querySelector('.mdn-eu-seg'); if (seg) seg.querySelectorAll('button').forEach(function (b) { b.classList.toggle('active', b.getAttribute('data-val') === params[cfg.segmented.key]); }); } Object.keys(params).forEach(function (k) { if (cfg.segmented && k === cfg.segmented.key) return; setFieldValue(k, params[k]); }); }// ── Tab switching ──────────────────────────────────────────────────────────── function setTab(tab) { state.tab = tab; state.page = 0; state.lastData = null; state.selected = {}; document.querySelectorAll('.mdn-eu-tab').forEach(function (t) { t.classList.toggle('active', t.getAttribute('data-tab') === tab); }); buildFields(); refreshPresetList(); el('mdn-eu-count').textContent = ''; el('mdn-eu-pager').style.display = 'none'; renderState('

Enter a search term or filter, then press Search.

'); updateExportButtons(); }// ── Wire up ────────────────────────────────────────────────────────────────── el('mdn-eu-tabs').addEventListener('click', function (e) { var t = e.target.closest('.mdn-eu-tab'); if (t) setTab(t.getAttribute('data-tab')); }); el('mdn-eu-search').addEventListener('click', function () { state.page = 0; search(); }); el('mdn-eu-clear').addEventListener('click', function () { buildFields(); }); el('mdn-eu-save-preset').addEventListener('click', function () { var params = collectParams(); if (!Object.keys(params).length) { alert('Enter some filters first, then Save.'); return; } var name = prompt('Save this search as:'); if (!name) return; var all = loadPresets(); all[state.tab] = all[state.tab] || {}; all[state.tab][name] = params; savePresets(all); refreshPresetList(); el('mdn-eu-presets').value = name; }); el('mdn-eu-presets').addEventListener('change', function () { var name = this.value; if (!name) return; var params = (loadPresets()[state.tab] || {})[name]; if (!params) return; applyPreset(params); state.page = 0; search(); }); el('mdn-eu-prev').addEventListener('click', function () { if (state.page > 0) { state.page--; search(); window.scrollTo({ top: 0, behavior: 'smooth' }); } }); el('mdn-eu-next').addEventListener('click', function () { state.page++; search(); window.scrollTo({ top: 0, behavior: 'smooth' }); }); el('mdn-eu-modal-bg').addEventListener('click', closeModal); el('mdn-eu-modal-close').addEventListener('click', closeModal); document.addEventListener('keydown', function (e) { if (e.key === 'Escape') closeModal(); }); el('mdn-eu-x-csv').addEventListener('click', exportCSV); el('mdn-eu-x-xlsx').addEventListener('click', exportXLSX); el('mdn-eu-x-doc').addEventListener('click', exportDOC);// Load reference data for dropdowns, then render the initial tab. fetch(API + 'refdata').then(function (r) { return r.json(); }).then(function (d) { if (d && typeof d === 'object') REF = d; }).catch(function () {}).finally(function () { setTab('devices'); }); })();
Scroll to Top