window.Page_erste_hilfe = (() => { let _container = null; let _appState = null; async function init(container, appState, params = {}) { _container = container; _appState = appState; _render(); if (params.tab) _activateTab(params.tab); } function refresh() {} function onDogChange() {} // ---------------------------------------------------------------- // DATA // ---------------------------------------------------------------- const NOTFALLNUMMERN = [ { label: 'Tiergiftzentrale München', tel: '+4989 19240', display: '+49 89 19240' }, { label: 'Tiergiftzentrale Berlin', tel: '+4930 19240', display: '+49 30 19240' }, { label: 'Tiergiftzentrale Wien', tel: '+431 4064343', display: '+43 1 4064343' }, ]; const SCHNELL = [ { notfall: 'Vergiftung / Giftköder', massnahme: 'Ruhig halten, NICHT erbrechen lassen', tierarzt: 'Sofort' }, { notfall: 'Hitzschlag', massnahme: 'Kühlen, Wasser anbieten', tierarzt: 'Sofort' }, { notfall: 'Bewusstlosigkeit', massnahme: 'Atemwege frei, Stabile Seitenlage', tierarzt: 'Sofort' }, { notfall: 'Starke Blutung', massnahme: 'Druckverband anlegen', tierarzt: 'Sofort' }, { notfall: 'Knochenbruch', massnahme: 'Ruhigstellen, nicht bewegen', tierarzt: 'Sofort' }, { notfall: 'Zeckenbiss', massnahme: 'Zecke entfernen, Stelle beobachten', tierarzt: 'Bei Entzündung' }, { notfall: 'Pfotenverletzung', massnahme: 'Reinigen, Verband', tierarzt: 'Bei tiefer Wunde' }, { notfall: 'Fremdkörper verschluckt', massnahme: 'Beobachten, nicht erbrechen lassen', tierarzt: 'Bei Symptomen' }, { notfall: 'Bisswunde', massnahme: 'Reinigen, Wunde beurteilen', tierarzt: 'Bei tiefer Wunde' }, { notfall: 'Epileptischer Anfall', massnahme: 'Nicht festhalten, sichern', tierarzt: 'Nach dem Anfall' }, ]; const KATEGORIEN = [ { id: 'lebensgefahr', label: 'Lebensbedrohliche Notfälle', color: 'var(--c-danger, #ef4444)', icon: 'warning', eintraege: [ { titel: 'Vergiftung / Giftköder', icon: 'skull', symptome: ['Erbrechen, Durchfall, übermäßiges Speicheln','Zittern, Krämpfe, Muskelzucken','Taumeln, Orientierungslosigkeit','Blasse oder blaue Schleimhäute','Plötzliche Schwäche, Zusammenbruch'], massnahmen: ['Hund ruhig halten und von der Giftquelle entfernen','NICHT selbst zum Erbrechen bringen — kann die Vergiftung verschlimmern','Giftköder oder Erbrochenes wenn möglich in einem Beutel sichern','Sofort Tierarzt oder Tiergiftzentrale anrufen','Auf dem Weg: Hund warm halten, ruhig sprechen'], warn: [{ typ: 'danger', text: 'Nie: Erbrechen einleiten ohne Anweisung des Tierarztes' }], extra: '

Häufige Giftquellen: Rattengift, Schneckenkorn (Metaldehyd), Ibuprofen, Paracetamol, Schokolade, Weintrauben/Rosinen, Zwiebeln, Xylit (Kaugummi, Erdnussbutter), präparierte Köder.

', }, { titel: 'Hitzschlag', icon: 'thermometer-hot', symptome: ['Starkes, lautes Hecheln','Taumeln, Koordinationsprobleme','Erbrechen','Glasiger Blick, Apathie','Rote oder blasse Schleimhäute','Bewusstlosigkeit'], massnahmen: ['Sofort in den Schatten / kühlen Raum bringen','Mit lauwarmem (nicht eiskaltem) Wasser kühlen — Pfoten, Leiste, Nacken','Frisches Wasser anbieten — nicht zwingen','Nassen Lappen auf Bauch und Pfoten legen','Sofort zum Tierarzt — auch wenn der Hund sich erholt'], warn: [{ typ: 'danger', text: 'Nie: Eiswasser oder Eiswürfel — verursacht Schock durch zu schnelle Abkühlung' }], }, { titel: 'Bewusstlosigkeit / Herzstillstand', icon: 'heartbeat', symptome: ['Hund reagiert nicht auf Ansprechen oder Berühren','Keine sichtbare Atembewegung','Schleimhäute blass oder blau'], massnahmen: ['Atemwege freihalten: Maul öffnen, Zunge nach vorne, Fremdkörper entfernen','Atmet der Hund? → Stabile Seitenlage, sofort Tierarzt anrufen','Atmet er nicht? → Herz-Lungen-Wiederbelebung beginnen'], extra: '
Herzdruckmassage: Hund auf die rechte Seite, Hände auf breiteste Stelle des Brustkorbs hinter dem Ellenbogen, 100–120 Kompressionen/min, ca. 1/3 eindrücken. Bei kleinen Hunden: eine Hand oder zwei Finger.

Beatmung: Nach je 30 Kompressionen 2 Atemzüge — Maul schließen, durch die Nase blasen bis der Brustkorb sich hebt.

Weiterführen bis: Hund selbst atmet, Tierarzt übernimmt oder nach 10 Min. ohne Reaktion.
', }, { titel: 'Starke Blutung', icon: 'drop', symptome: [], massnahmen: ['Sauberes Tuch fest auf die Wunde drücken','Druck min. 5 Minuten halten — nicht zwischendurch nachschauen','Druckverband anlegen: Watte auf Wunde, fest mit Binde umwickeln','Hund ruhig halten — Bewegung verstärkt die Blutung','Bei arterieller Blutung (spritzend, hellrot): sofort Tierarzt'], warn: [{ typ: 'danger', text: 'Niemals ein Tourniquet anlegen — außer als letzter Ausweg bei abgetrennter Gliedmaße' }], }, { titel: 'Knochenbruch', icon: 'bone', symptome: ['Hund belastet Gliedmaße nicht','Sichtbare Fehlstellung','Starke Schmerzen, Schreien bei Berührung','Schwellung, Blutung'], massnahmen: ['Hund so wenig wie möglich bewegen','Gebrochene Stelle nicht einrenken oder massieren','Improvisierte Schiene nur wenn nötig: gerades Brett mit Tuch fixieren, nicht zu fest','Hund in Decke einwickeln, ruhig transportieren','Sofort Tierarzt'], }, ], }, { id: 'haeufig', label: 'Häufige Notfälle', color: 'var(--c-warning, #f59e0b)', icon: 'first-aid', eintraege: [ { titel: 'Zeckenbiss', icon: 'bug', symptome: [], massnahmen: ['Zeckenzange oder Zeckenkarte verwenden — kein Öl, kein Klebstoff, kein Feuer','Zecke so nah wie möglich an der Haut fassen','Gerade herausziehen — nicht drehen','Einstichstelle desinfizieren','Datum und Stelle notieren, 4 Wochen beobachten'], warn: [{ typ: 'warning', text: 'Zum Tierarzt bei: Rötung/Schwellung, Fieber, Apathie, Lahmheit innerhalb von 4 Wochen oder abgebrochenem Zeckenkopf' }], extra: '

Übertragende Krankheiten (DE): Borreliose (häufig), FSME (selten), Babesiose (Süddeutschland, zunehmend), Anaplasmose.

', }, { titel: 'Pfotenverletzung', icon: 'paw-print', symptome: [], massnahmen: ['Pfote vorsichtig mit lauwarmem Wasser reinigen','Sichtbaren Fremdkörper mit Pinzette entfernen','Leichte Verletzung: reinigen, Pfotenschutzspray, beobachten','Tiefer Schnitt: sauberen Verband anlegen, Tierarzt aufsuchen'], warn: [{ typ: 'warning', text: 'Notverband: Watte auf Wunde, Mullbinde umwickeln (nicht zu fest), mit Kohäsivbinde sichern' }], extra: '

Zum Tierarzt wenn: Wunde klafft, Blutung nicht stoppt, tiefer Einstich, oder Hund nach 24 h noch nicht belastet.

', }, { titel: 'Fremdkörper verschluckt', icon: 'circle-dashed', symptome: ['Im Rachen: Würgen, Pfoten ans Maul, Speicheln','Im Magen: Erbrechen, Appetitlosigkeit','Im Darm: Erbrechen, Blähungen, kein Kot, Schmerzen'], massnahmen: ['Hund beobachten — viele Gegenstände gehen von selbst durch','Nicht zum Erbrechen bringen (außer auf Anweisung des Tierarztes)','Kein Öl oder Futter geben um nachzuschieben','Bei Würgen: Maul öffnen, sichtbaren Gegenstand entfernen — nur wenn gut erreichbar','Bei Atemnot: Heimlich-Manöver anwenden'], warn: [{ typ: 'warning', text: 'Sofort zum Tierarzt: anhaltend würgen, Atemnot, angespannter Bauch, kein Kot seit 24 h + Unwohlsein' }], extra: '

Heimlich-Manöver: Kleiner Hund: auf den Rücken, sanft aber fest auf den Bauch unter dem Brustkorb drücken. Großer Hund: hinter dem Hund stehen, Arme um den Bauch, Hände unter dem Brustkorb zusammenführen, nach oben und innen drücken.

', }, { titel: 'Bisswunde', icon: 'dog', symptome: [], massnahmen: ['Hund beruhigen — Schmerz macht auch ruhige Hunde aggressiv','Mit lauwarmem Wasser spülen, kein Alkohol direkt in die Wunde','Oberfläche beurteilen — Bisswunden sehen oft klein aus, sind aber tief'], warn: [{ typ: 'warning', text: 'Bisswunden sind immer tiefer als sie aussehen. Hunde- und Katzenzähne sind lang und dünn.' },{ typ: 'danger', text: 'Sofort zum Tierarzt: Wunde am Hals/Bauch/Brust, Atembeschwerden, starke Blutung, Apathie/Schock, Bisse von fremden Tieren (Tollwut-Risiko)' }], }, { titel: 'Epileptischer Anfall', icon: 'lightning', symptome: ['Zuckungen, Krämpfe der Gliedmaßen','Bewusstseinsverlust, starrer Blick','Speicheln, Urin- oder Kotabgang','Desorientierung vor und nach dem Anfall'], massnahmen: ['Ruhe bewahren — Anfälle enden meist von selbst','Hund NICHT festhalten — Verletzungsgefahr','Gefährliche Gegenstände aus dem Weg räumen','Raum abdunkeln, Geräusche minimieren','Zeit messen — dauert länger als 5 Min: Notfalltierarzt'], warn: [{ typ: 'warning', text: 'Nach dem Anfall: Hund ist oft desorientiert, kann blind wirken — das ist normal (postiktale Phase). Ruhig sprechen, nicht bedrängen.' }], extra: '

Sofort zum Tierarzt: erster Anfall überhaupt, Dauer > 5 Min, mehrere Anfälle in 24 h, Hund kommt nach 30 Min nicht zu sich.

', }, { titel: 'Verbrennung / Verbrühung', icon: 'fire', symptome: [], massnahmen: ['Betroffene Stelle 10–15 Min mit kühlem (nicht eiskaltem) Wasser kühlen','Kein Öl, keine Butter, keine Zahncreme — verstärken den Schaden','Leichte Rötung: kühlen, beobachten','Blasenbildung oder offene Wunden: sofort Tierarzt'], warn: [{ typ: 'warning', text: 'Heißer Asphalt: Handfläche 5 Sek. auf Boden — zu heiß für dich = zu heiß für Pfoten' }], }, ], }, { id: 'wissen', label: 'Nützliches Wissen', color: '#ca8a04', icon: 'book-open', eintraege: [ { titel: 'Verbotene Medikamente für Hunde', icon: 'pill', symptome: [], massnahmen: [], extra: `
Medikament Wirkung beim Hund
IbuprofenMagenblutungen, Nierenversagen — schon 1 Tablette gefährlich
ParacetamolLeberschäden, tödlich
AspirinMagenblutungen
DiclofenacNieren- und Magenprobleme
AntidepressivaKrämpfe, Herzprobleme
`, }, { titel: 'Giftige Pflanzen (Auswahl)', icon: 'plant', symptome: [], massnahmen: [], extra: `
${[['Herbstzeitlose','Sehr giftig, alle Teile'],['Goldregen','Sehr giftig, besonders Samen'],['Eibe','Sehr giftig, alle Teile außer rotem Fruchtfleisch'],['Maiglöckchen','Giftig, Herzrhythmusstörungen'],['Stechapfel','Sehr giftig'],['Oleander','Sehr giftig'],['Kirschlorbeer','Giftig, besonders Samen'],['Buchsbaum','Giftig'],['Narzisse / Tulpe','Giftig, besonders Zwiebel'],['Wisteria (Blauregen)','Giftig']].map((r, i) => ``).join('')}
Pflanze Giftigkeit
${r[0]}${r[1]}
`, }, { titel: 'Schleimhäute prüfen', icon: 'stethoscope', symptome: [], massnahmen: [], extra: `

Zahnfleisch anheben, Finger andrücken, loslassen — Farbe muss binnen 2 Sek. zurückkehren (kapilläre Füllungszeit).

Farbe Bedeutung
Rosa, feuchtNormal
Blass / weißSchock, Blutverlust, Vergiftung
Blau / grauSauerstoffmangel — NOTFALL
GelbLeberprobleme
ZiegelrotHitzschlag, Vergiftung
TrockenAustrocknung
`, }, { titel: 'Erste-Hilfe-Ausrüstung', icon: 'backpack', symptome: [], massnahmen: ['Mullbinden und Verbandsmull','Kohäsivbinde (haftet selbst, kein Kleber)','Zeckenzange oder Zeckenkarte','Pinzette','Desinfektionsspray (Chlorhexidin)','Pfotenschutzspray','Einmalhandschuhe','Notfalldecke (Rettungsfolie)','Taschenlampe','Tierarzt-Notfallnummer gespeichert'], }, ], }, ]; // ---------------------------------------------------------------- // RENDER // ---------------------------------------------------------------- function _render() { _container.innerHTML = `
${_renderNotfallbanner()} ${_renderSchnell()}
${KATEGORIEN.map(k => ` `).join('')}
${KATEGORIEN.map(k => ` `).join('')}
Diese Inhalte ersetzen keinen Tierarztbesuch. Im Zweifel immer sofort zum Tierarzt oder den tierärztlichen Notdienst anrufen.
`; _bindTabs(); _bindAccordions(); _bindNoteButtons(); _activateTab('lebensgefahr'); } function _renderNotfallbanner() { const nums = NOTFALLNUMMERN.map(n => ` ${n.label}
${n.display}
`).join(''); return `
Tiergiftzentralen — jetzt anrufen
${nums}

Tierärztlicher Notdienst: Über die Tierarztsuche in der Banyaro-Karte

`; } function _renderSchnell() { const rows = SCHNELL.map((s, i) => ` ${s.notfall} ${s.massnahme} ${s.tierarzt} `).join(''); return `
Schnellübersicht: Was tun bei …
${rows}
Notfall Sofortmaßnahme Tierarzt
`; } function _renderEintrag(e, katId, idx, katColor) { const accId = `eh-acc-${katId}-${idx}`; const bodyId = `eh-body-${katId}-${idx}`; const symptomeHtml = e.symptome.length ? `

Symptome

` : ''; const massnahmenHtml = e.massnahmen.length ? `

Sofortmaßnahmen

    ${e.massnahmen.map(m => `
  1. ${m}
  2. `).join('')}
` : ''; const warnHtml = (e.warn || []).map(w => `
${w.text}
`).join(''); return `
`; } // ---------------------------------------------------------------- // EVENTS // ---------------------------------------------------------------- function _bindTabs() { _container.querySelectorAll('.eh-tab-btn').forEach(btn => { btn.addEventListener('click', () => _activateTab(btn.dataset.tab)); }); } function _activateTab(id) { _container.querySelectorAll('.eh-tab-btn').forEach(btn => { const kat = KATEGORIEN.find(k => k.id === btn.dataset.tab); const active = btn.dataset.tab === id; btn.style.background = active ? kat.color : 'transparent'; btn.style.color = active ? '#fff' : kat.color; }); _container.querySelectorAll('.eh-tab-panel').forEach(panel => { panel.style.display = panel.id === `eh-panel-${id}` ? 'block' : 'none'; }); } function _bindAccordions() { _container.querySelectorAll('[data-acc-id]').forEach(btn => { btn.addEventListener('click', () => { const bodyId = btn.dataset.accId; const arrowId = btn.dataset.accArrow; const body = document.getElementById(bodyId); const arrow = document.getElementById(arrowId); if (!body) return; const open = !body.hidden; body.hidden = open; btn.setAttribute('aria-expanded', String(!open)); if (arrow) arrow.style.transform = open ? '' : 'rotate(180deg)'; }); }); } function _bindNoteButtons() { _container.querySelectorAll('.eh-note-btn').forEach(btn => { btn.addEventListener('click', e => { e.stopPropagation(); const katId = btn.dataset.katId; const titel = btn.dataset.titel; const kat = KATEGORIEN.find(k => k.id === katId); const label = kat ? `${kat.label} — ${titel}` : titel; _openNoteModal('erste_hilfe', katId, label, null); }); }); } // ---------------------------------------------------------------- // NOTIZ-MODAL (custom DOM, kein UI.modal um Konflikte zu vermeiden) // ---------------------------------------------------------------- async function _openNoteModal(parentType, parentId, parentLabel, locationName) { document.getElementById('by-note-modal')?.remove(); const overlay = document.createElement('div'); overlay.id = 'by-note-modal'; overlay.style.cssText = 'position:fixed;inset:0;z-index:2000;background:rgba(0,0,0,.55);display:flex;align-items:flex-end;justify-content:center'; const _esc = s => s ? String(s).replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"') : ''; overlay.innerHTML = `
Notiz
${_esc(parentLabel)}
`; document.body.appendChild(overlay); const textarea = document.getElementById('by-note-text'); const saveBtn = document.getElementById('by-note-save'); const cancelBtn = document.getElementById('by-note-cancel'); const closeBtn = document.getElementById('by-note-close'); let existingNoteId = null; try { const existing = await API.notes.get(parentType, parentId); if (existing?.id) { existingNoteId = existing.id; textarea.value = existing.text || ''; } } catch (_) { /* keine Notiz vorhanden — ok */ } setTimeout(() => textarea.focus(), 100); const _close = () => overlay.remove(); closeBtn.addEventListener('click', _close); cancelBtn.addEventListener('click', _close); overlay.addEventListener('click', e => { if (e.target === overlay) _close(); }); document.getElementById('by-note-form').addEventListener('submit', async e => { e.preventDefault(); const text = textarea.value.trim(); UI.setLoading(saveBtn, true); try { const payload = { text, parent_label: parentLabel, location_name: locationName }; if (existingNoteId) { await API.notes.update(existingNoteId, payload); } else { await API.notes.create(parentType, parentId, payload); } UI.toast.success('Notiz gespeichert.'); _close(); } catch (err) { UI.toast.error(err.message || 'Fehler beim Speichern.'); UI.setLoading(saveBtn, false); } }); } // ---------------------------------------------------------------- // PUBLIC // ---------------------------------------------------------------- return { init, refresh, onDogChange }; })();