{"id":21782,"date":"2026-06-13T16:26:02","date_gmt":"2026-06-13T14:26:02","guid":{"rendered":"https:\/\/www.drugshortage.ch\/?page_id=21782"},"modified":"2026-06-13T16:26:05","modified_gmt":"2026-06-13T14:26:05","slug":"penuries-de-medicaments-resolues","status":"publish","type":"page","link":"https:\/\/www.drugshortage.ch\/index.php\/penuries-de-medicaments-resolues\/","title":{"rendered":"P\u00e9nuries de m\u00e9dicaments r\u00e9solues"},"content":{"rendered":"\n<!-- ============================================================\n     ANLEITUNG: In WordPress als \"Benutzerdefiniertes HTML\"-Block einf\u00fcgen.\n     Version fran\u00e7aise \u2013 p\u00e9nuries termin\u00e9es\n     ============================================================ -->\n<style>\n  #abfr-outer { width:100%; box-sizing:border-box; font-family:'Segoe UI',Arial,sans-serif; font-size:13px; color:#2d3748; }\n  .container,.container-fluid,.entry-content,.post-content,.page-content,\n  .site-content,.content-area,#content,#primary,main,article {\n    max-width:100% !important; overflow:visible !important;\n  }\n\n  \/* Ladeanimation *\/\n  #abfr-loading { display:flex; align-items:center; gap:12px; padding:30px 20px; color:#718096; font-size:15px; }\n  .abfr-spinner { width:24px; height:24px; border:3px solid #e2e8f0; border-top-color:#008000; border-radius:50%; animation:abfrspin .8s linear infinite; flex-shrink:0; }\n  @keyframes abfrspin { to { transform:rotate(360deg); } }\n\n  \/* Kennzahl-Karte *\/\n  .abfr-karte { display:inline-block; background:#fff; border:1px solid #e2e8f0; border-radius:10px; padding:16px 24px; box-shadow:0 1px 4px rgba(0,0,0,.06); margin-bottom:20px; }\n  .abfr-karte-zahl { font-size:36px; font-weight:700; color:#008000; line-height:1.1; }\n  .abfr-karte-label { font-size:12px; color:#718096; margin-top:4px; }\n  .abfr-karte-hinweis { font-size:11px; color:#a0aec0; margin-top:4px; font-style:italic; }\n\n  \/* Abschnittstitel *\/\n  .abfr-section-title { font-size:15px; font-weight:700; color:#2d3748; margin:24px 0 10px 0; padding-bottom:6px; border-bottom:2px solid #008000; display:flex; align-items:center; gap:8px; }\n  .abfr-icon { background:#008000; color:#fff; border-radius:6px; padding:2px 8px; font-size:11px; font-weight:600; }\n\n  \/* Suche *\/\n  #abfr-suche { width:100%; padding:10px 14px; margin-bottom:12px; border:1px solid #e2e8f0; border-radius:8px; font-size:13px; box-sizing:border-box; outline:none; transition:border-color .2s; }\n  #abfr-suche:focus { border-color:#008000; box-shadow:0 0 0 3px rgba(0,128,0,.1); }\n\n  \/* Tabellen *\/\n  .abfr-table-wrap { overflow-x:auto; width:100%; border-radius:8px; box-shadow:0 1px 4px rgba(0,0,0,.07); margin-bottom:6px; }\n  .abfr-table { width:100%; border-collapse:collapse; background:#fff; }\n  .abfr-table thead tr { background:#2d3748; }\n  .abfr-table th { padding:9px 12px; text-align:left; font-size:13px; font-weight:600; color:#fff; white-space:nowrap; cursor:pointer; user-select:none; }\n  .abfr-table th:hover { background:#4a5568; }\n  .abfr-table td { padding:7px 12px; border-bottom:1px solid #edf2f7; font-size:13px; vertical-align:middle; }\n  .abfr-table tbody tr:last-child td { border-bottom:none; }\n  .abfr-table tbody tr:hover td { background:#f7fafc !important; }\n  .abfr-table a { color:#008000; text-decoration:none; font-weight:500; }\n  .abfr-table a:hover { text-decoration:underline; }\n\n  \/* Hinweis-Boxen *\/\n  .abfr-hinweis { background:#fffbeb; border:1px solid #fbd38d; border-radius:8px; padding:10px 14px; font-size:12px; color:#744210; line-height:1.6; margin-bottom:12px; }\n  .abfr-achtung { background:#fff5f5; border-left:4px solid #e53e3e; border-radius:0 8px 8px 0; padding:10px 14px; font-size:12px; color:#742a2a; line-height:1.6; margin-bottom:12px; }\n  .abfr-fussnote { font-size:12px; color:#718096; margin:6px 0; line-height:1.5; }\n\n  \/* Footer *\/\n  .abfr-footer { font-size:11px; color:#a0aec0; margin-top:12px; text-align:right; }\n<\/style>\n\n<div id=\"abfr-outer\">\n  <div id=\"abfr-loading\"><div class=\"abfr-spinner\"><\/div> Chargement des donn\u00e9es\u2026<\/div>\n  <div id=\"abfr-inhalt\" style=\"display:none;\">\n\n    <!-- Titel + Kennzahl -->\n    <div class=\"abfr-section-title\"><span class=\"abfr-icon\">&#x2705;<\/span> P\u00e9nuries de livraison termin\u00e9es<\/div>\n    <div class=\"abfr-karte\">\n      <div class=\"abfr-karte-zahl\" id=\"abfr-anzahl\">\u2013<\/div>\n      <div class=\"abfr-karte-label\">p\u00e9nuries termin\u00e9es<\/div>\n      <div class=\"abfr-karte-hinweis\">depuis le lancement du site le 7.9.2015<\/div>\n    <\/div>\n\n    <!-- Par entreprise -->\n    <div class=\"abfr-section-title\"><span class=\"abfr-icon\">&#x1f3ed;<\/span> Par entreprise<\/div>\n    <div class=\"abfr-table-wrap\">\n      <table class=\"abfr-table\" style=\"min-width:600px;\">\n        <thead><tr>\n          <th onclick=\"abfrSortiereFirmen('firma')\">Entreprise &#x2195;<\/th>\n          <th style=\"text-align:center;\" onclick=\"abfrSortiereFirmen('anzahlProdukte')\">Produits enregistr\u00e9s au total &#x2195;<\/th>\n          <th style=\"text-align:center;\" onclick=\"abfrSortiereFirmen('offen')\">P\u00e9nuries ouvertes &#x2195;<\/th>\n          <th style=\"text-align:center;\" onclick=\"abfrSortiereFirmen('abgeschlossen')\">P\u00e9nuries termin\u00e9es &#x2195;<\/th>\n        <\/tr><\/thead>\n        <tbody id=\"abfr-firmen\"><\/tbody>\n      <\/table>\n    <\/div>\n    <p class=\"abfr-fussnote\">Remarque : pour les patients, le nombre total de produits distribu\u00e9s par l&#8217;entreprise n&#8217;est pas pertinent. Ce chiffre n&#8217;a rien \u00e0 voir avec l&#8217;importance des produits dans la th\u00e9rapie. Il donne n\u00e9anmoins une indication de l&#8217;importance de la p\u00e9nurie pour l&#8217;entreprise.<\/p>\n\n    <!-- Par groupes th\u00e9rapeutiques -->\n    <div class=\"abfr-section-title\"><span class=\"abfr-icon\">&#x1f48a;<\/span> Par groupes th\u00e9rapeutiques<\/div>\n    <div class=\"abfr-table-wrap\">\n      <table class=\"abfr-table\" style=\"min-width:400px;\">\n        <thead><tr>\n          <th>ATC niveau 2<\/th>\n          <th>D\u00e9signation<\/th>\n          <th style=\"text-align:center;\">Nombre<\/th>\n        <\/tr><\/thead>\n        <tbody id=\"abfr-atc\"><\/tbody>\n      <\/table>\n    <\/div>\n\n    <!-- Hauptliste -->\n    <div class=\"abfr-section-title\"><span class=\"abfr-icon\">&#x1f4cb;<\/span> Par pr\u00e9paration<\/div>\n    <div class=\"abfr-achtung\">\n      <strong>Attention :<\/strong> il est possible que des p\u00e9nuries soient r\u00e9pertori\u00e9es deux fois \u2013 parmi les p\u00e9nuries ouvertes comme parmi les termin\u00e9es. Dans ce cas, la p\u00e9nurie est r\u00e9apparue apr\u00e8s que les livraisons aient repris.\n    <\/div>\n    <div class=\"abfr-hinweis\">\n      Les p\u00e9nuries r\u00e9pertori\u00e9es proviennent de d\u00e9clarations volontaires d&#8217;utilisateurs de ce site. Ces derniers sont \u00e9galement responsables de la mise \u00e0 jour des d\u00e9clarations. Les informations ne pr\u00e9tendent pas \u00eatre exhaustives.<br>\n      Pour des informations compl\u00e8tes, veuillez contacter l&#8217;entreprise concern\u00e9e.\n    <\/div>\n    <input type=\"text\" id=\"abfr-suche\" placeholder=\"&#x1f50d;  Rechercher par d\u00e9signation ou entreprise\u2026\">\n    <div class=\"abfr-table-wrap\">\n      <table class=\"abfr-table\" style=\"min-width:800px;\">\n        <thead><tr>\n          <th onclick=\"abfrSortiere('bezeichnung')\">D\u00e9signation &#x2195;<\/th>\n          <th onclick=\"abfrSortiere('firma')\">Entreprise &#x2195;<\/th>\n          <th onclick=\"abfrSortiere('ersteMeldung')\">Date 1\u00e8re notification &#x2195;<\/th>\n          <th onclick=\"abfrSortiere('mutation')\">Date derni\u00e8re mutation &#x2195;<\/th>\n          <th style=\"text-align:center;\" onclick=\"abfrSortiere('tage')\">Jours 1\u00e8re \u00e0 derni\u00e8re notification &#x2195;<\/th>\n          <th>GTIN<\/th>\n        <\/tr><\/thead>\n        <tbody id=\"abfr-tbody\"><\/tbody>\n      <\/table>\n    <\/div>\n    <div class=\"abfr-footer\">drugshortage.ch \u00b7 depuis le 7.9.2015<\/div>\n\n  <\/div>\n<\/div>\n\n<script>\nconst ABFR_BASE = \"https:\/\/www.drugshortage.ch\";\nconst ABFR_API  = \"https:\/\/www.drugshortage.ch\/ds.php?a=abgeschlossen_fr\";\nconst HMAC_SECRET = \"N8xK3mV7qP1rT9cY5wH2zL6dF4sJ0uB8eR7nQ3kW1pX9tM5vC2yD6hG4aZ8fL1\";\n\nasync function hmacSign(apiName) {\n  const timestamp = Math.floor(Date.now() \/ 1000).toString();\n  const nonce     = Math.random().toString(36).substring(2, 15);\n  const msg       = timestamp + '|' + nonce + '|' + apiName;\n  const key       = await crypto.subtle.importKey(\n    'raw', new TextEncoder().encode(HMAC_SECRET),\n    {name: 'HMAC', hash: 'SHA-256'}, false, ['sign']\n  );\n  const sig = await crypto.subtle.sign('HMAC', key, new TextEncoder().encode(msg));\n  const hex = Array.from(new Uint8Array(sig)).map(b => b.toString(16).padStart(2,'0')).join('');\n  return {'X-Timestamp': timestamp, 'X-Nonce': nonce, 'X-Signature': hex};\n}\n\nlet abfrAlleDaten   = [];\nlet abfrFirmenDaten = [];\nlet abfrSortiereNach      = \"mutation\";\nlet abfrAufsteigend       = false;\nlet abfrFirmenSortiereNach = \"abgeschlossen\";\nlet abfrFirmenAufsteigend  = false;\n\nasync function ladeDaten() {\n  try {\n    const hmacHeaders = await hmacSign('api_abgeschlossen_fr');\n    const res = await fetch(ABFR_API, {headers: {'X-Requested-With': 'XMLHttpRequest', ...hmacHeaders}});\n    const d = await res.json();\n\n    if (d.fehler) {\n      document.getElementById(\"abfr-loading\").innerHTML =\n        \"<div style='color:#c53030;padding:20px;background:#fff5f5;border-radius:8px;width:100%;'>\" +\n        \"<strong>&#x26a0;&#xfe0f; Erreur:<\/strong> \" + d.fehler + \"<\/div>\";\n      return;\n    }\n\n    document.getElementById(\"abfr-anzahl\").textContent = d.anzahl || \"\u2013\";\n\n    abfrFirmenDaten = d.firmen || [];\n    abfrZeigeFirmen(abfrFirmenDaten);\n\n    const atcTbody = document.getElementById(\"abfr-atc\");\n    (d.atcGruppen || []).forEach(function(a) {\n      const tr = document.createElement(\"tr\");\n      tr.innerHTML =\n        \"<td><strong>\" + (a.cdval || \"\u2013\") + \"<\/strong><\/td>\" +\n        \"<td>\" + (a.dscrd || \"\u2013\") + \"<\/td>\" +\n        \"<td style='text-align:center;font-weight:600;'>\" + abfrV(a.anzahl) + \"<\/td>\";\n      atcTbody.appendChild(tr);\n    });\n\n    abfrAlleDaten = d.engpaesse || [];\n    abfrZeigeTabelle(abfrAlleDaten);\n\n    document.getElementById(\"abfr-loading\").style.display = \"none\";\n    document.getElementById(\"abfr-inhalt\").style.display  = \"block\";\n\n  } catch(err) {\n    document.getElementById(\"abfr-loading\").innerHTML =\n      \"<div style='color:#c53030;padding:20px;'>&#x274c; Erreur lors du chargement : \" + err + \"<\/div>\";\n  }\n}\n\nfunction abfrZeigeFirmen(daten) {\n  const tbody = document.getElementById(\"abfr-firmen\");\n  tbody.innerHTML = \"\";\n  daten.forEach(function(f) {\n    const tr = document.createElement(\"tr\");\n    tr.innerHTML =\n      \"<td>\" + (f.firma || \"\u2013\") + \"<\/td>\" +\n      \"<td style='text-align:center;'>\" + abfrV(f.anzahlProdukte)  + \"<\/td>\" +\n      \"<td style='text-align:center;'>\" + abfrV(f.offen)           + \"<\/td>\" +\n      \"<td style='text-align:center;font-weight:600;color:#008000;'>\" + abfrV(f.abgeschlossen) + \"<\/td>\";\n    tbody.appendChild(tr);\n  });\n}\n\nfunction abfrZeigeTabelle(daten) {\n  const tbody = document.getElementById(\"abfr-tbody\");\n  tbody.innerHTML = \"\";\n  if (!daten.length) {\n    tbody.innerHTML = \"<tr><td colspan='6' style='padding:16px;color:#718096;text-align:center;font-style:italic;'>Aucune donn\u00e9e pour le moment (lancement de la base de donn\u00e9es le 1.8.2015)<\/td><\/tr>\";\n    return;\n  }\n  daten.forEach(function(e) {\n    const tr = document.createElement(\"tr\");\n    const detailUrl = ABFR_BASE + \"\/index.php\/detail-lieferengpass\/?ID=\" + e.id;\n    tr.innerHTML =\n      \"<td style='white-space:nowrap;'><a href='\" + detailUrl + \"' target='_blank'>\" + (e.bezeichnung || \"\u2013\") + \"<\/a><\/td>\" +\n      \"<td style='white-space:nowrap;'>\" + (e.firma || \"\u2013\") + \"<\/td>\" +\n      \"<td style='white-space:nowrap;'>\" + abfrDatum(e.ersteMeldung) + \"<\/td>\" +\n      \"<td style='white-space:nowrap;'>\" + abfrDatum(e.mutation)     + \"<\/td>\" +\n      \"<td style='text-align:center;font-weight:600;'>\" + abfrV(e.tage) + \"<\/td>\" +\n      \"<td style='color:#a0aec0;font-size:12px;'>\" + (e.gtin || \"\u2013\") + \"<\/td>\";\n    tbody.appendChild(tr);\n  });\n}\n\nfunction abfrSortiere(feld) {\n  abfrAufsteigend = (abfrSortiereNach === feld) ? !abfrAufsteigend : true;\n  abfrSortiereNach = feld;\n  const q = document.getElementById(\"abfr-suche\").value.toLowerCase();\n  let liste = abfrFiltern(q);\n  liste.sort(function(a, b) {\n    if (feld === \"tage\") return abfrAufsteigend ? (a.tage||0)-(b.tage||0) : (b.tage||0)-(a.tage||0);\n    const va = (a[feld]||\"\").toLowerCase();\n    const vb = (b[feld]||\"\").toLowerCase();\n    return abfrAufsteigend ? va.localeCompare(vb) : vb.localeCompare(va);\n  });\n  abfrZeigeTabelle(liste);\n}\n\nfunction abfrSortiereFirmen(feld) {\n  abfrFirmenAufsteigend = (abfrFirmenSortiereNach === feld) ? !abfrFirmenAufsteigend : true;\n  abfrFirmenSortiereNach = feld;\n  const liste = abfrFirmenDaten.slice().sort(function(a, b) {\n    if (feld === \"anzahlProdukte\" || feld === \"offen\" || feld === \"abgeschlossen\") {\n      return abfrFirmenAufsteigend ? (a[feld]||0)-(b[feld]||0) : (b[feld]||0)-(a[feld]||0);\n    }\n    const va = (a[feld]||\"\").toLowerCase();\n    const vb = (b[feld]||\"\").toLowerCase();\n    return abfrFirmenAufsteigend ? va.localeCompare(vb) : vb.localeCompare(va);\n  });\n  abfrZeigeFirmen(liste);\n}\n\nfunction abfrFiltern(q) {\n  if (!q) return abfrAlleDaten.slice();\n  return abfrAlleDaten.filter(function(e) {\n    return (e.bezeichnung||\"\").toLowerCase().includes(q) ||\n           (e.firma||\"\").toLowerCase().includes(q);\n  });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n  document.getElementById(\"abfr-suche\").addEventListener(\"input\", function() {\n    abfrZeigeTabelle(abfrFiltern(this.value.toLowerCase()));\n  });\n  ladeDaten();\n});\n\nfunction abfrV(val)    { return (val !== null && val !== undefined) ? val : \"\u2013\"; }\nfunction abfrDatum(s)  { return s ? s.substring(0, 10) : \"\u2013\"; }\n<\/script>\n\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Chargement des donn\u00e9es\u2026 &#x2705; P\u00e9nuries de livraison termin\u00e9es \u2013 p\u00e9nuries termin\u00e9es depuis le lancement du site le 7.9.2015 &#x1f3ed; Par entreprise Entreprise &#x2195; Produits enregistr\u00e9s au total &#x2195; P\u00e9nuries ouvertes &#x2195; P\u00e9nuries termin\u00e9es &#x2195; Remarque : pour les patients, le nombre total de produits distribu\u00e9s par l&#8217;entreprise n&#8217;est pas pertinent. Ce chiffre n&#8217;a rien \u00e0&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-21782","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21782","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/comments?post=21782"}],"version-history":[{"count":1,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21782\/revisions"}],"predecessor-version":[{"id":21783,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21782\/revisions\/21783"}],"wp:attachment":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/media?parent=21782"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}