{"id":21609,"date":"2026-06-04T11:57:22","date_gmt":"2026-06-04T09:57:22","guid":{"rendered":"https:\/\/www.drugshortage.ch\/?page_id=21609"},"modified":"2026-06-04T12:05:28","modified_gmt":"2026-06-04T10:05:28","slug":"statistik","status":"publish","type":"page","link":"https:\/\/www.drugshortage.ch\/index.php\/statistik\/","title":{"rendered":"Statistik"},"content":{"rendered":"\n<!-- ============================================================\n     drugshortage.ch Auswertungs-Charts\n     \u00d6ffentlich sichtbar\n     ============================================================ -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@4.4.0\/dist\/chart.umd.min.js\"><\/script>\n<style>\n  #aw-outer { width:100%; box-sizing:border-box; font-family:'Segoe UI',Arial,sans-serif; font-size:13px; color:#2d3748; }\n  .aw-header { margin-bottom:20px; }\n  .aw-header h2 { font-size:18px; font-weight:700; color:#1a202c; margin-bottom:4px; }\n  .aw-header p  { font-size:13px; color:#718096; }\n  .aw-meta { font-size:11px; color:#a0aec0; margin-top:4px; }\n\n  \/* Tabs *\/\n  .aw-tabs { display:flex; gap:4px; flex-wrap:wrap; margin-bottom:20px; border-bottom:2px solid #e2e8f0; padding-bottom:0; }\n  .aw-tab {\n    padding:8px 16px; border:none; background:none; font-size:12px; font-weight:600;\n    color:#718096; cursor:pointer; border-bottom:2px solid transparent; margin-bottom:-2px;\n    transition:all .15s; border-radius:6px 6px 0 0;\n  }\n  .aw-tab:hover { color:#2d3748; background:#f7fafc; }\n  .aw-tab.active { color:#e53e3e; border-bottom-color:#e53e3e; background:#fff; }\n\n  \/* Zeitraum-Buttons *\/\n  .aw-range { display:flex; gap:6px; margin-bottom:16px; flex-wrap:wrap; }\n  .aw-range-btn {\n    padding:5px 12px; border:1px solid #e2e8f0; border-radius:6px;\n    background:#fff; font-size:11px; font-weight:600; color:#718096; cursor:pointer;\n    transition:all .15s;\n  }\n  .aw-range-btn:hover { border-color:#e53e3e; color:#e53e3e; }\n  .aw-range-btn.active { background:#e53e3e; color:#fff; border-color:#e53e3e; }\n\n  \/* Chart Cards *\/\n  .aw-chart-card {\n    background:#fff; border:1px solid #e2e8f0; border-radius:12px;\n    padding:20px 20px 16px; margin-bottom:20px; box-shadow:0 1px 4px rgba(0,0,0,.05);\n  }\n  .aw-chart-title { font-size:13px; font-weight:700; color:#2d3748; margin-bottom:14px; }\n  .aw-chart-wrap { position:relative; height:280px; }\n\n  \/* Loading *\/\n  .aw-loading { text-align:center; padding:60px; color:#718096; }\n  .aw-spinner { display:inline-block; width:32px; height:32px; border:4px solid #e2e8f0; border-top-color:#e53e3e; border-radius:50%; animation:awspin .8s linear infinite; margin-bottom:12px; }\n  @keyframes awspin { to { transform:rotate(360deg); } }\n\n  \/* Panel *\/\n  .aw-panel { display:none; }\n  .aw-panel.active { display:block; }\n<\/style>\n\n<div id=\"aw-outer\">\n  <div class=\"aw-header\">\n    <h2>&#x1f4ca; Auswertungen<\/h2>\n    <p>Zeitliche Entwicklung der Schweizer Arzneimittel-Lieferengp\u00e4sse<\/p>\n    <div class=\"aw-meta\" id=\"aw-meta\"><\/div>\n  <\/div>\n\n  <div id=\"aw-loading\" class=\"aw-loading\">\n    <div class=\"aw-spinner\"><\/div><br>Daten werden geladen\u2026\n  <\/div>\n\n  <div id=\"aw-content\" style=\"display:none;\">\n\n    <!-- Tabs -->\n    <div class=\"aw-tabs\">\n      <button class=\"aw-tab active\" onclick=\"awTab(this,'zeitreihe')\">\u00dcbersicht<\/button>\n      <button class=\"aw-tab\" onclick=\"awTab(this,'bwlwho')\">BWL \/ WHO<\/button>\n      <button class=\"aw-tab\" onclick=\"awTab(this,'dauer')\">Dauer<\/button>\n      <button class=\"aw-tab\" onclick=\"awTab(this,'sl')\">SL \/ Generika<\/button>\n      <button class=\"aw-tab\" onclick=\"awTab(this,'preis')\">Preisklassen<\/button>\n      <button class=\"aw-tab\" onclick=\"awTab(this,'ex')\">Ex Factory<\/button>\n      <button class=\"aw-tab\" onclick=\"awTab(this,'theoret')\">Theoret. Preis<\/button>\n    <\/div>\n\n    <!-- Zeitraum -->\n    <div class=\"aw-range\">\n      <button class=\"aw-range-btn\" onclick=\"awRange(this,30)\">30 Tage<\/button>\n      <button class=\"aw-range-btn\" onclick=\"awRange(this,90)\">90 Tage<\/button>\n      <button class=\"aw-range-btn active\" onclick=\"awRange(this,180)\">6 Monate<\/button>\n      <button class=\"aw-range-btn\" onclick=\"awRange(this,365)\">1 Jahr<\/button>\n      <button class=\"aw-range-btn\" onclick=\"awRange(this,730)\">2 Jahre<\/button>\n      <button class=\"aw-range-btn\" onclick=\"awRange(this,1825)\">5 Jahre<\/button>\n      <button class=\"aw-range-btn\" onclick=\"awRange(this,9999)\">Alles<\/button>\n    <\/div>\n\n    <!-- Panel: \u00dcbersicht -->\n    <div class=\"aw-panel active\" id=\"panel-zeitreihe\">\n      <div class=\"aw-chart-card\">\n        <div class=\"aw-chart-title\">Anzahl Produkte im Engpass<\/div>\n        <div class=\"aw-chart-wrap\"><canvas id=\"chart-anzahl\"><\/canvas><\/div>\n      <\/div>\n      <div class=\"aw-chart-card\">\n        <div class=\"aw-chart-title\">Offene Engp\u00e4sse &amp; betroffene Wirkstoffe<\/div>\n        <div class=\"aw-chart-wrap\"><canvas id=\"chart-offen\"><\/canvas><\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Panel: BWL\/WHO -->\n    <div class=\"aw-panel\" id=\"panel-bwlwho\">\n      <div class=\"aw-chart-card\">\n        <div class=\"aw-chart-title\">Nur BWL \/ Nur WHO \/ BWL und WHO \/ Ohne Zuordnung<\/div>\n        <div class=\"aw-chart-wrap\"><canvas id=\"chart-bwlwho\"><\/canvas><\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Panel: Dauer -->\n    <div class=\"aw-panel\" id=\"panel-dauer\">\n      <div class=\"aw-chart-card\">\n        <div class=\"aw-chart-title\">Dauer der Lieferengp\u00e4sse<\/div>\n        <div class=\"aw-chart-wrap\"><canvas id=\"chart-dauer\"><\/canvas><\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Panel: SL \/ Generika -->\n    <div class=\"aw-panel\" id=\"panel-sl\">\n      <div class=\"aw-chart-card\">\n        <div class=\"aw-chart-title\">SL \/ Nicht-SL<\/div>\n        <div class=\"aw-chart-wrap\"><canvas id=\"chart-sl\"><\/canvas><\/div>\n      <\/div>\n      <div class=\"aw-chart-card\">\n        <div class=\"aw-chart-title\">Original \/ Generikum \/ Listen A-D<\/div>\n        <div class=\"aw-chart-wrap\"><canvas id=\"chart-gen\"><\/canvas><\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Panel: Publikumspreis -->\n    <div class=\"aw-panel\" id=\"panel-preis\">\n      <div class=\"aw-chart-card\">\n        <div class=\"aw-chart-title\">Publikumspreis-Klassen<\/div>\n        <div class=\"aw-chart-wrap\"><canvas id=\"chart-preis\"><\/canvas><\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Panel: Ex Factory -->\n    <div class=\"aw-panel\" id=\"panel-ex\">\n      <div class=\"aw-chart-card\">\n        <div class=\"aw-chart-title\">Ex Factory Preis-Klassen<\/div>\n        <div class=\"aw-chart-wrap\"><canvas id=\"chart-ex\"><\/canvas><\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Panel: Theoret. Preis -->\n    <div class=\"aw-panel\" id=\"panel-theoret\">\n      <div class=\"aw-chart-card\">\n        <div class=\"aw-chart-title\">Theoretischer Publikumspreis-Klassen<\/div>\n        <div class=\"aw-chart-wrap\"><canvas id=\"chart-theoret\"><\/canvas><\/div>\n      <\/div>\n    <\/div>\n\n  <\/div>\n<\/div>\n\n<script>\nconst AW_API = \"https:\/\/www.drugshortage.ch\/api\/api_auswertung.php\";\n\n\/\/ Farben\nconst COLORS = {\n  red:    '#e53e3e', redL:  'rgba(229,62,62,.15)',\n  blue:   '#3182ce', blueL: 'rgba(49,130,206,.15)',\n  green:  '#38a169', greenL:'rgba(56,161,105,.15)',\n  orange: '#dd6b20', orangeL:'rgba(221,107,32,.15)',\n  purple: '#805ad5', purpleL:'rgba(128,90,213,.15)',\n  teal:   '#319795', tealL:  'rgba(49,151,149,.15)',\n  pink:   '#d53f8c', pinkL:  'rgba(213,63,140,.15)',\n  gray:   '#718096', grayL:  'rgba(113,128,150,.15)',\n  navy:   '#2b6cb0', navyL:  'rgba(43,108,176,.15)',\n};\n\nconst PALETTE = Object.values(COLORS).filter((_,i) => i % 2 === 0);\n\nlet awData = null;\nlet awDays = 180;\nconst awCharts = {};\n\nconst CHART_DEFAULTS = {\n  type: 'line',\n  options: {\n    responsive: true, maintainAspectRatio: false,\n    interaction: { mode: 'index', intersect: false },\n    plugins: {\n      legend: { position: 'bottom', labels: { boxWidth: 12, font: { size: 11 } } },\n      tooltip: { bodyFont: { size: 11 }, titleFont: { size: 11 } }\n    },\n    scales: {\n      x: { ticks: { maxTicksLimit: 10, font: { size: 10 } }, grid: { display: false } },\n      y: { ticks: { font: { size: 10 } }, grid: { color: '#f0f0f0' } }\n    },\n    elements: { point: { radius: 0, hitRadius: 10 }, line: { tension: 0.3, borderWidth: 2 } }\n  }\n};\n\nfunction awFilter(arr) {\n  if (!arr || !arr.length) return [];\n  return arr.slice(-awDays);\n}\n\nfunction awLabels(arr) {\n  return awFilter(arr).map(r => r.datum);\n}\n\nfunction awDs(arr, key, label, color, colorL) {\n  return {\n    label, data: awFilter(arr).map(r => r[key]),\n    borderColor: color, backgroundColor: colorL, fill: true,\n  };\n}\n\nfunction awMakeChart(id, datasets, labels) {\n  if (awCharts[id]) { awCharts[id].destroy(); }\n  const ctx = document.getElementById(id);\n  if (!ctx) return;\n  awCharts[id] = new Chart(ctx, {\n    ...CHART_DEFAULTS,\n    data: { labels, datasets }\n  });\n}\n\nfunction awBuild() {\n  if (!awData) return;\n  const d = awData;\n\n  \/\/ \u00dcbersicht\n  const lblZ = awLabels(d.zeitreihe);\n  awMakeChart('chart-anzahl', [\n    awDs(d.zeitreihe, 'anzahl', 'Produkte im Engpass', COLORS.red, COLORS.redL),\n  ], lblZ);\n  awMakeChart('chart-offen', [\n    awDs(d.zeitreihe, 'offen',      'Offene Engp\u00e4sse',       COLORS.blue,   COLORS.blueL),\n    awDs(d.zeitreihe, 'wirkstoffe', 'Wirkstoffe\/Kombinationen', COLORS.orange, COLORS.orangeL),\n  ], lblZ);\n\n  \/\/ BWL\/WHO\n  const lblB = awLabels(d.bwlWho);\n  awMakeChart('chart-bwlwho', [\n    awDs(d.bwlWho, 'nurBwl',        'Nur BWL',               COLORS.red,    COLORS.redL),\n    awDs(d.bwlWho, 'nurWho',        'Nur WHO',               COLORS.blue,   COLORS.blueL),\n    awDs(d.bwlWho, 'bwlUndWho',     'BWL und WHO',           COLORS.purple, COLORS.purpleL),\n    awDs(d.bwlWho, 'ohneZuordnung', 'Ohne Zuordnung',        COLORS.gray,   COLORS.grayL),\n  ], lblB);\n\n  \/\/ Dauer\n  const lblD = awLabels(d.dauer);\n  awMakeChart('chart-dauer', [\n    awDs(d.dauer, 'lt2w',    '< 2 Wochen',          COLORS.green,  COLORS.greenL),\n    awDs(d.dauer, 'w2bis6',  '2\u20136 Wochen',          COLORS.teal,   COLORS.tealL),\n    awDs(d.dauer, 'w6bis26', '6 Wo.\u2013\u00bd Jahr',        COLORS.blue,   COLORS.blueL),\n    awDs(d.dauer, 'm6bis12', '\u00bd\u20131 Jahr',            COLORS.orange, COLORS.orangeL),\n    awDs(d.dauer, 'y1bis2',  '1\u20132 Jahre',           COLORS.pink,   COLORS.pinkL),\n    awDs(d.dauer, 'gt2y',    '> 2 Jahre',           COLORS.red,    COLORS.redL),\n  ], lblD);\n\n  \/\/ SL\n  const lblSL = awLabels(d.slVerteilung);\n  awMakeChart('chart-sl', [\n    awDs(d.slVerteilung, 'sl',      'SL',      COLORS.blue,  COLORS.blueL),\n    awDs(d.slVerteilung, 'nichtSl', 'Nicht-SL', COLORS.gray, COLORS.grayL),\n  ], lblSL);\n\n  const lblG = awLabels(d.genOriginal);\n  awMakeChart('chart-gen', [\n    awDs(d.genOriginal, 'original',  'Original m. gen. Alt.',   COLORS.blue,   COLORS.blueL),\n    awDs(d.genOriginal, 'generikum', 'Generikum',               COLORS.green,  COLORS.greenL),\n    awDs(d.genOriginal, 'ohneAlt',   'Original o. gen. Alt.',   COLORS.gray,   COLORS.grayL),\n    awDs(d.genOriginal, 'listeA',    'Liste A',                 COLORS.red,    COLORS.redL),\n    awDs(d.genOriginal, 'listeB',    'Liste B',                 COLORS.orange, COLORS.orangeL),\n    awDs(d.genOriginal, 'listeC',    'Liste C',                 COLORS.purple, COLORS.purpleL),\n    awDs(d.genOriginal, 'listeD',    'Liste D',                 COLORS.teal,   COLORS.tealL),\n  ], lblG);\n\n  \/\/ Publikumspreis\n  const lblP = awLabels(d.preisPubl);\n  const preisPublLabels = ['0\u20139.59','9.60\u201320.29','20.30\u201328.79','28.80\u201332.79','32.80\u201349.99','50\u201369.99','70\u201399.99','>100','Kein Preis'];\n  awMakeChart('chart-preis', preisPublLabels.map((lbl, i) => ({\n    label: 'CHF ' + lbl,\n    data: awFilter(d.preisPubl).map(r => r['p'+i]),\n    borderColor: PALETTE[i % PALETTE.length],\n    backgroundColor: PALETTE[i % PALETTE.length].replace(')',', .15)').replace('rgb','rgba'),\n    fill: false,\n  })), lblP);\n\n  \/\/ Ex Factory\n  const lblE = awLabels(d.preisEx);\n  const exLabels = ['0\u20134.99','5\u201310.99','11\u201314.99','15\u201324.99','25\u201349.99','50\u201369.99','70\u201399.99','>100','Nicht vorhanden'];\n  awMakeChart('chart-ex', exLabels.map((lbl, i) => ({\n    label: 'CHF ' + lbl,\n    data: awFilter(d.preisEx).map(r => r['e'+i]),\n    borderColor: PALETTE[i % PALETTE.length],\n    backgroundColor: 'transparent',\n    fill: false,\n  })), lblE);\n\n  \/\/ Theoret. Preis\n  const lblT = awLabels(d.preisTheoret);\n  const theoretLabels = ['0\u20139.59','9.60\u201320.29','20.30\u201328.79','28.80\u201332.79','32.80\u201349.99','50\u201369.99','70\u201399.99','>100','Nicht errechenbar'];\n  awMakeChart('chart-theoret', theoretLabels.map((lbl, i) => ({\n    label: 'CHF ' + lbl,\n    data: awFilter(d.preisTheoret).map(r => r['t'+i]),\n    borderColor: PALETTE[i % PALETTE.length],\n    backgroundColor: 'transparent',\n    fill: false,\n  })), lblT);\n}\n\nfunction awTab(btn, panel) {\n  document.querySelectorAll('.aw-tab').forEach(b => b.classList.remove('active'));\n  document.querySelectorAll('.aw-panel').forEach(p => p.classList.remove('active'));\n  btn.classList.add('active');\n  document.getElementById('panel-' + panel).classList.add('active');\n}\n\nfunction awRange(btn, days) {\n  document.querySelectorAll('.aw-range-btn').forEach(b => b.classList.remove('active'));\n  btn.classList.add('active');\n  awDays = days;\n  awBuild();\n}\n\nasync function ladeDaten() {\n  try {\n    const res = await fetch(AW_API, {headers: {'X-Requested-With': 'XMLHttpRequest'}});\n    const d   = await res.json();\n    if (d.fehler) {\n      document.getElementById('aw-loading').innerHTML =\n        \"<div style='color:#c53030;'>&#x26a0;&#xfe0f; \" + d.fehler + \"<\/div>\";\n      return;\n    }\n    awData = d;\n    document.getElementById('aw-loading').style.display = 'none';\n    document.getElementById('aw-content').style.display = 'block';\n    if (d._meta) {\n      document.getElementById('aw-meta').textContent =\n        'Stand: ' + d._meta.datum + ' \u00b7 Aufbereitet: ' + (d._meta.erstelltAm || '').substring(0,16);\n    }\n    awBuild();\n  } catch(err) {\n    document.getElementById('aw-loading').innerHTML =\n      \"<div style='color:#c53030;'>Fehler beim Laden: \" + err + \"<\/div>\";\n  }\n}\n\ndocument.addEventListener('DOMContentLoaded', ladeDaten);\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>&#x1f4ca; Auswertungen Zeitliche Entwicklung der Schweizer Arzneimittel-Lieferengp\u00e4sse Daten werden geladen\u2026 \u00dcbersicht BWL \/ WHO Dauer SL \/ Generika Preisklassen Ex Factory Theoret. Preis 30 Tage 90 Tage 6 Monate 1 Jahr 2 Jahre 5 Jahre Alles Anzahl Produkte im Engpass Offene Engp\u00e4sse &amp; betroffene Wirkstoffe Nur BWL \/ Nur WHO \/ BWL und WHO \/&#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-21609","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21609","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=21609"}],"version-history":[{"count":2,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21609\/revisions"}],"predecessor-version":[{"id":21611,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21609\/revisions\/21611"}],"wp:attachment":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/media?parent=21609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}