{"id":21231,"date":"2026-05-20T15:12:37","date_gmt":"2026-05-20T13:12:37","guid":{"rendered":"https:\/\/www.drugshortage.ch\/?page_id=21231"},"modified":"2026-05-20T15:12:40","modified_gmt":"2026-05-20T13:12:40","slug":"abgeschlossen-2","status":"publish","type":"page","link":"https:\/\/www.drugshortage.ch\/index.php\/abgeschlossen-2\/","title":{"rendered":"Abgeschlossen"},"content":{"rendered":"\n\n<style>\n  #ab-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  #ab-loading { display:flex; align-items:center; gap:12px; padding:30px 20px; color:#718096; font-size:15px; }\n  .ab-spinner { width:24px; height:24px; border:3px solid #e2e8f0; border-top-color:#008000; border-radius:50%; animation:abspin .8s linear infinite; flex-shrink:0; }\n  @keyframes abspin { to { transform:rotate(360deg); } }\n\n  \/* Kennzahl-Karte *\/\n  .ab-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  .ab-karte-zahl { font-size:36px; font-weight:700; color:#008000; line-height:1.1; }\n  .ab-karte-label { font-size:12px; color:#718096; margin-top:4px; }\n  .ab-karte-hinweis { font-size:11px; color:#a0aec0; margin-top:4px; font-style:italic; }\n\n  \/* Abschnittstitel *\/\n  .ab-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  .ab-icon { background:#008000; color:#fff; border-radius:6px; padding:2px 8px; font-size:11px; font-weight:600; }\n\n  \/* Suche *\/\n  #ab-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  #ab-suche:focus { border-color:#008000; box-shadow:0 0 0 3px rgba(0,128,0,.1); }\n\n  \/* Tabellen *\/\n  .ab-table-wrap { overflow-x:auto; width:100%; border-radius:8px; box-shadow:0 1px 4px rgba(0,0,0,.07); margin-bottom:6px; }\n  .ab-table { width:100%; border-collapse:collapse; background:#fff; }\n  .ab-table thead tr { background:#2d3748; }\n  .ab-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  .ab-table th:hover { background:#4a5568; }\n  .ab-table td { padding:7px 12px; border-bottom:1px solid #edf2f7; font-size:13px; vertical-align:middle; }\n  .ab-table tbody tr:last-child td { border-bottom:none; }\n  .ab-table tbody tr:hover td { background:#f7fafc !important; }\n  .ab-table a { color:#008000; text-decoration:none; font-weight:500; }\n  .ab-table a:hover { text-decoration:underline; }\n\n  \/* Hinweis-Boxen *\/\n  .ab-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  .ab-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  .ab-fussnote { font-size:12px; color:#718096; margin:6px 0; line-height:1.5; }\n\n  \/* Footer *\/\n  .ab-footer { font-size:11px; color:#a0aec0; margin-top:12px; text-align:right; }\n<\/style>\n\n<div id=\"ab-outer\">\n  <div id=\"ab-loading\"><div class=\"ab-spinner\"><\/div> Daten werden geladen\u2026<\/div>\n  <div id=\"ab-inhalt\" style=\"display:none;\">\n\n    \n    <div class=\"ab-section-title\"><span class=\"ab-icon\">&#x2705;<\/span> Abgeschlossene Lieferengp\u00e4sse<\/div>\n    <div class=\"ab-karte\">\n      <div class=\"ab-karte-zahl\" id=\"ab-anzahl\">\u2013<\/div>\n      <div class=\"ab-karte-label\">abgeschlossene Lieferengp\u00e4sse<\/div>\n      <div class=\"ab-karte-hinweis\">seit Start der Webseite am 7.9.2015<\/div>\n    <\/div>\n\n    \n    <div class=\"ab-section-title\"><span class=\"ab-icon\">&#x1f3ed;<\/span> Nach Firmen<\/div>\n    <div class=\"ab-table-wrap\">\n      <table class=\"ab-table\" style=\"min-width:600px;\">\n        <thead><tr>\n          <th onclick=\"abSortiereFirmen('firma')\">Firma &#x2195;<\/th>\n          <th style=\"text-align:center;\" onclick=\"abSortiereFirmen('anzahlProdukte')\">Registrierte Produkte Total &#x2195;<\/th>\n          <th style=\"text-align:center;\" onclick=\"abSortiereFirmen('offen')\">Offene Engp\u00e4sse &#x2195;<\/th>\n          <th style=\"text-align:center;\" onclick=\"abSortiereFirmen('abgeschlossen')\">Abgeschlossene Engp\u00e4sse &#x2195;<\/th>\n        <\/tr><\/thead>\n        <tbody id=\"ab-firmen\"><\/tbody>\n      <\/table>\n    <\/div>\n    <p class=\"ab-fussnote\">Hinweis: f\u00fcr die Patienten ist es irrelevant wieviele Produkte die Firma insgesamt vertreibt. Die Zahl hat auch nichts mit dem Stellenwert der Produkte in der Therapie zu tun. Trotzdem gibt sie einen Hinweis auf den Stellenwert des Engpasses f\u00fcr die Firma.<\/p>\n\n    \n    <div class=\"ab-section-title\"><span class=\"ab-icon\">&#x1f48a;<\/span> Nach therapeutischen Gruppen<\/div>\n    <div class=\"ab-table-wrap\">\n      <table class=\"ab-table\" style=\"min-width:400px;\">\n        <thead><tr>\n          <th>ATC Stufe 2<\/th>\n          <th>Bezeichnung<\/th>\n          <th style=\"text-align:center;\">Anzahl<\/th>\n        <\/tr><\/thead>\n        <tbody id=\"ab-atc\"><\/tbody>\n      <\/table>\n    <\/div>\n\n    \n    <div class=\"ab-section-title\"><span class=\"ab-icon\">&#x1f4cb;<\/span> Nach Pr\u00e4paraten<\/div>\n    <div class=\"ab-achtung\">\n      <strong>Achtung:<\/strong> Es ist m\u00f6glich, dass Lieferengp\u00e4sse doppelt aufgef\u00fchrt sind \u2013 bei den offenen wie auch bei den abgeschlossenen. In diesem Fall ist der Lieferengpass erneut aufgetreten, nachdem die Lieferungen wieder geklappt haben.\n    <\/div>\n    <div class=\"ab-hinweis\">\n      Die aufgef\u00fchrten Lieferengp\u00e4sse stammen aus freiwilligen Meldungen von Usern dieser Webseite. Diese sind auch verantwortlich f\u00fcr das Update der Meldungen. Die Angaben haben keinen Anspruch auf Vollst\u00e4ndigkeit.<br>\n      F\u00fcr vollst\u00e4ndige Informationen wenden Sie sich bitte an die zust\u00e4ndige Firma.\n    <\/div>\n    <input type=\"text\" id=\"ab-suche\" placeholder=\"&#x1f50d;  Suche nach Bezeichnung oder Firma\u2026\" \/>\n    <div class=\"ab-table-wrap\">\n      <table class=\"ab-table\" style=\"min-width:800px;\">\n        <thead><tr>\n          <th onclick=\"abSortiere('bezeichnung')\">Bezeichnung &#x2195;<\/th>\n          <th onclick=\"abSortiere('firma')\">Firma &#x2195;<\/th>\n          <th onclick=\"abSortiere('ersteMeldung')\">Datum erste Meldung &#x2195;<\/th>\n          <th onclick=\"abSortiere('mutation')\">Datum letzte Mutation &#x2195;<\/th>\n          <th style=\"text-align:center;\" onclick=\"abSortiere('tage')\">Tage erste bis letzte Meldung &#x2195;<\/th>\n          <th>GTIN<\/th>\n        <\/tr><\/thead>\n        <tbody id=\"ab-tbody\"><\/tbody>\n      <\/table>\n    <\/div>\n    <div class=\"ab-footer\">drugshortage.ch \u00b7 seit 7.9.2015<\/div>\n\n  <\/div>\n<\/div>\n\n<script>\nconst AB_BASE = \"https:\/\/www.drugshortage.ch\";\nconst AB_API  = AB_BASE + \"\/api_abgeschlossen.php\";\n\nlet abAlleDaten   = [];\nlet abFirmenDaten = [];\nlet abSortiereNach      = \"mutation\";\nlet abAufsteigend       = false;\nlet abFirmenSortiereNach = \"abgeschlossen\";\nlet abFirmenAufsteigend  = false;\n\nasync function ladeDaten() {\n  try {\n    const res = await fetch(AB_API);\n    const d = await res.json();\n\n    if (d.fehler) {\n      document.getElementById(\"ab-loading\").innerHTML =\n        \"<div style='color:#c53030;padding:20px;background:#fff5f5;border-radius:8px;width:100%;'>\" +\n        \"<strong>&#x26a0;&#xfe0f; Fehler:<\/strong> \" + d.fehler + \"<\/div>\";\n      return;\n    }\n\n    \/\/ Kennzahl\n    document.getElementById(\"ab-anzahl\").textContent = d.anzahl || \"\u2013\";\n\n    \/\/ Firmen\n    abFirmenDaten = d.firmen || [];\n    abZeigeFirmen(abFirmenDaten);\n\n    \/\/ ATC-Gruppen\n    const atcTbody = document.getElementById(\"ab-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;'>\" + abV(a.anzahl) + \"<\/td>\";\n      atcTbody.appendChild(tr);\n    });\n\n    \/\/ Hauptliste\n    abAlleDaten = d.engpaesse || [];\n    abZeigeTabelle(abAlleDaten);\n\n    document.getElementById(\"ab-loading\").style.display = \"none\";\n    document.getElementById(\"ab-inhalt\").style.display  = \"block\";\n\n  } catch(err) {\n    document.getElementById(\"ab-loading\").innerHTML =\n      \"<div style='color:#c53030;padding:20px;'>&#x274c; Fehler beim Laden: \" + err + \"<\/div>\";\n  }\n}\n\nfunction abZeigeFirmen(daten) {\n  const tbody = document.getElementById(\"ab-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;'>\" + abV(f.anzahlProdukte)  + \"<\/td>\" +\n      \"<td style='text-align:center;'>\" + abV(f.offen)           + \"<\/td>\" +\n      \"<td style='text-align:center;font-weight:600;color:#008000;'>\" + abV(f.abgeschlossen) + \"<\/td>\";\n    tbody.appendChild(tr);\n  });\n}\n\nfunction abZeigeTabelle(daten) {\n  const tbody = document.getElementById(\"ab-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;'>Zur Zeit keine Daten (Start der Datenbank am 1.8.2015)<\/td><\/tr>\";\n    return;\n  }\n  daten.forEach(function(e) {\n    const tr = document.createElement(\"tr\");\n    const detailUrl = AB_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;'>\" + abDatum(e.ersteMeldung) + \"<\/td>\" +\n      \"<td style='white-space:nowrap;'>\" + abDatum(e.mutation)     + \"<\/td>\" +\n      \"<td style='text-align:center;font-weight:600;'>\" + abV(e.tage) + \"<\/td>\" +\n      \"<td style='color:#a0aec0;font-size:12px;'>\" + (e.gtin || \"\u2013\") + \"<\/td>\";\n    tbody.appendChild(tr);\n  });\n}\n\nfunction abSortiere(feld) {\n  abAufsteigend = (abSortiereNach === feld) ? !abAufsteigend : true;\n  abSortiereNach = feld;\n  const q = document.getElementById(\"ab-suche\").value.toLowerCase();\n  let liste = abFiltern(q);\n  liste.sort(function(a, b) {\n    if (feld === \"tage\") return abAufsteigend ? (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 abAufsteigend ? va.localeCompare(vb) : vb.localeCompare(va);\n  });\n  abZeigeTabelle(liste);\n}\n\nfunction abSortiereFirmen(feld) {\n  abFirmenAufsteigend = (abFirmenSortiereNach === feld) ? !abFirmenAufsteigend : true;\n  abFirmenSortiereNach = feld;\n  const liste = abFirmenDaten.slice().sort(function(a, b) {\n    if (feld === \"anzahlProdukte\" || feld === \"offen\" || feld === \"abgeschlossen\") {\n      return abFirmenAufsteigend ? (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 abFirmenAufsteigend ? va.localeCompare(vb) : vb.localeCompare(va);\n  });\n  abZeigeFirmen(liste);\n}\n\nfunction abFiltern(q) {\n  if (!q) return abAlleDaten.slice();\n  return abAlleDaten.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(\"ab-suche\").addEventListener(\"input\", function() {\n    abZeigeTabelle(abFiltern(this.value.toLowerCase()));\n  });\n  ladeDaten();\n});\n\nfunction abV(val)    { return (val !== null && val !== undefined) ? val : \"\u2013\"; }\nfunction abDatum(s)  { return s ? s.substring(0, 10) : \"\u2013\"; }\n<\/script>\n\n\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Daten werden geladen\u2026 &#x2705; Abgeschlossene Lieferengp\u00e4sse \u2013 abgeschlossene Lieferengp\u00e4sse seit Start der Webseite am 7.9.2015 &#x1f3ed; Nach Firmen Firma &#x2195; Registrierte Produkte Total &#x2195; Offene Engp\u00e4sse &#x2195; Abgeschlossene Engp\u00e4sse &#x2195; Hinweis: f\u00fcr die Patienten ist es irrelevant wieviele Produkte die Firma insgesamt vertreibt. Die Zahl hat auch nichts mit dem Stellenwert der Produkte in der&hellip; <a class=\"read-more\" href=\"https:\/\/www.drugshortage.ch\/index.php\/abgeschlossen-2\/\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-fullwidth.php","meta":{"footnotes":""},"class_list":["post-21231","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21231","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=21231"}],"version-history":[{"count":3,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21231\/revisions"}],"predecessor-version":[{"id":21235,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21231\/revisions\/21235"}],"wp:attachment":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/media?parent=21231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}