Diabotus – Bedienungsanleitung & Systemdokumentation

Letzte Aktualisierung: Juni 2026
Anwendungsfall: Pädiatrisches Typ-1-Diabetes-Management (anonymisiert, Einzelperson)

Diese Dokumentation ist zugleich Bedienungsanleitung (Teil A: Dashboard, Teil B: Matrix-Bot)
und Systembeschreibung (Teil C: Datenmodell & Modelle). Alle Screenshots zeigen anonymisierte
Echtdaten.


Inhalt

Teil A – Bedienung Dashboard
1. Schnellstart & Aufbau
2. Reiter „Dashboard"
3. Ereignisse erfassen
4. Reiter „Erweitert"
5. Reiter „Parameter"
6. Reiter „Analyse"
7. Edit-Modus, Neustart & PWA

Teil B – Bedienung Matrix-Bot
8. Der Matrix-Chat-Bot

Teil C – System & Modelle
9. Architektur & Datenmodell
10. Insulin-PK-Modell (IOB)
11. KH-Absorption & FPE
12. CIQ-Pumpenmodell
13. Glukoseprognose & Einschlaf-Effekt
14. Therapieparameter
15. Tuning & Wartung


Teil A – Bedienung Dashboard

1. Schnellstart & Aufbau

Das Web-Dashboard (Flask, Port 5050) ist die primäre Tagesoberfläche. Aufruf lokal unter
http://localhost:5050 oder extern über den Tunnel. Es ist als PWA installierbar
(„Zum Startbildschirm hinzufügen").

Dashboard-Gesamtansicht

Aufbau (von oben):

Bereich Inhalt
Kopfzeile Letzter BZ groß + Trendpfeil, „vor X min"; Chips: Basal, KH-Faktor, ISF, Modell-ISF, TIR (heute/24 h), Katheterstatus, Datenqualität
Reiter 📊 Dashboard · 📈 Erweitert · ⚙️ Parameter · 🔍 Analyse
Zeitnavigation Zeitreise (end), Schnellsprünge, Vergangenheits-/Zukunftsfenster
Glukoseverlauf BZ-Kurve + Prognose + Ereignis-Markierungen
Ereignis-Panel (rechts) Chronologische Liste + KI-Eingabe

Die Kopfzeilen-Chips sind verlinkt: Klick führt zum passenden Parameter-Bereich.


2. Reiter „Dashboard"

2.1 Glukoseverlauf (BZ-Plot)

2.2 Zoom ist die Zeitbereichswahl

Der wichtigste Bedien-Trick: Pinch (Touch) bzw. Mausrad zoomt die x-Achse, Ziehen schwenkt.
Nach jeder Geste wird das sichtbare Fenster als neuer Zeitbereich übernommen und alle Plots
ziehen synchron nach
(auch IOB/Abgabe im Erweitert-Reiter). Zoomt man in die Vergangenheit,
schaltet das Dashboard automatisch in den Zeitreise-Modus. Doppeltipp auf den Plot = zurück
zu Live (Standard 6 h zurück / 3 h voraus).

Alternativ: die Schnellknöpfe unter „🕐 Zeitnavigation" (−1h/+1h für Vergangenheit & Zukunft,
Datums-/Zeitfeld für gezielte Zeitreise, „Jetzt"/„Live").

2.3 Ereignis-Panel & KI

Rechts laufen alle Ereignisse chronologisch. Im Edit-Modus lässt sich jedes bearbeiten/löschen
(✏️/🗑). Darunter die KI-Eingabe: freie Nachricht an Claude/Copilot mit medizinischem Kontext
(Modellwahl per Dropdown).


3. Ereignisse erfassen (Mahlzeit, Insulin, Aktivität)

Über „+ Ereignis" (Edit-Modus) öffnet sich die Erfassungsmaske. Typen: KH, Insulin (Bolus),
Insulin + KH (Kombi), gestrecktes Insulin, Kontext (Aktivität/Schlaf/Krankheit/Katheter/Sensor …).

Ereignis-Erfassung mit Vorschau

3.1 Fett & Eiweiß (FPE) richtig eingeben

Bei KH- und Kombi-Ereignissen gibt es optionale Felder Fett (g) und Eiweiß (g).

Wichtig: Eingetragen werden Gramm laut Nährwerttabellenicht fertige „FPE".
Das Modell rechnet daraus den Fett-Protein-Effekt = verzögerte KH (siehe Live-Hinweis
„12 g Fett + 10 g Eiweiß → FPE ≈ 4 g verzögerte KH"). Faktoren standardmäßig 10 % / 25 %,
einstellbar unter Parameter → Pumpe & Modell.

Bei fettigen Mahlzeiten (Pizza, Muffin) zusätzlich eine langsamere Absorption wählen
(slow/very_slow/ultra_slow) – sonst wird der typische Spätanstieg unterschätzt.

3.2 Isolierte Vorschau

Aufklappbar unter „📈 Vorschau (isoliert)": zeigt, wie sich nur dieses Event zeitlich auswirkt
(relativ zu 0, ohne Basal/EGP/andere Events) – in drei Modi BZ, COB·IOB, Rate
(KH-Aufnahmerate mit FPE-Buckel). Gut zum Verständnis von Absorptionsgeschwindigkeit und FPE.
Bei „Insulin aus KH berechnen" wird der Bolus aus dem KH-Faktor abgeleitet und ebenfalls in der
Vorschau berücksichtigt.

3.3 Aktivität mit Dauer

Bei Kontext-Kategorie 🏃 Aktivität kann eine Dauer (min) erfasst werden. Sie erscheint im
BZ-Plot als dezente schattierte Zone über den Aktivitätszeitraum (mit Label „🏃 45min") –
ähnlich einer Pumpenpause, aber zurückhaltender.

3.4 Gestreckter / Kombi-Bolus

Der Typ „💉↗ Insulin gestreckt" bildet den Kombi-Bolus der Pumpe ab:

Kombi-Bolus erfassen

Modelliert wird das als Sofort-Bolus + Micro-Boli über die Dauer. Das aktive Insulin läuft korrekt
bis Start + Dauer + Wirkdauer (DIA) aus – kein abrupter IOB-Sprung mehr.


4. Reiter „Erweitert"

Erweitert-Reiter

Hier liegen – zeitlich exakt zum BZ-Plot ausgerichtet – die Zusatz-Diagramme:

Diese Diagramme werden nur geladen, solange der Reiter sichtbar ist, damit die schnelle
Live-Aktualisierung im Dashboard nicht ausgebremst wird.


5. Reiter „Parameter"

Parameter-Reiter: ISF-Profil & Fit-Assistent

Unter-Reiter: ISF · KH-Faktor · EGP · Pumpe & Modell.

5.1 Profile (ISF / KH-Faktor / EGP)

Je Profil ein stündliches Balkendiagramm (0–23 Uhr). Im Edit-Modus sind die Modell-Balken
ziehbar; parallele Striche zeigen „alt" (zuletzt gespeichert, grau), „Pumpe" (lila) und einen
Fit-Vorschlag (orange, inkl. Konfidenz). Speichern/Wiederherstellen global und pro Stunde.

5.2 Fit-Assistent

Schätzt aus historischen Daten ein Profil (ISF/EGP/KH-Faktor) mit Konfidenz & Güte:
1. Zeitbereich (Tage, optional Stundenfenster) wählen → zuerst wird die Datenpunkt-Anzahl
angezeigt, dann „Fit starten" (Laufzeit ~1–2 min, asynchron).
2. Der Vorschlag erscheint automatisch als oranger Strich im Profil. Per „📋 übertragen"
(alle / nur sichere) in die editierbaren Werte, dann speichern.

Die Fits nutzen das Pumpenmodell-Basal und sind damit Glooko-unabhängig.

5.3 Pumpe & Modell

Pumpe & Modell: PK- und FPE-Parameter


6. Reiter „Analyse"

Analyse-Reiter: Statistik

Filterbare Auswertungen:

(Im Experimentell-Modus zusätzlich eine retrospektive Modell-Analyse / Rückblick-Prognose.)


7. Edit-Modus, Alarme, Neustart & PWA

7.1 Alarme (optional, Standard AUS)

Im Einstellungspanel (⚙ oben rechts) → „🔔 Alarme":

Alarme: Banner & Einstellungen

Grenze: Es ist (noch) kein echter Hintergrund-Push – läuft das Dashboard nicht, gibt es keinen
Alarm. Für echte Hintergrund-Alarme wäre serverseitiges Web-Push (VAPID) nötig.


Teil B – Bedienung Matrix-Bot

8. Der Matrix-Chat-Bot

Diabotus läuft zusätzlich als Matrix-Bot (matrixbot.py). Du schreibst in natürlicher
Sprache; der Bot legt Einträge an, plottet, prognostiziert oder ruft die KI.

Bot-Befehle

Befehl Wirkung
!plot [h] Glukose-Plot der letzten h Stunden (Standard 6 h)
!prognose [h] BZ + Prognose, h Stunden Verlauf davor
!modelplot Modell-/Diagnostik-Plot
!pumpe <min> [Grund] / !pumpe aus|an Pumpe pausieren (Auto-Resume) bzw. manuell
!actins Aktuelles aktives Insulin (IOB)
!active / !inactive Aktiv-/Ruhephase markieren
!mode <claude|claude-haiku|claude-opus|copilot> KI-Modus umschalten
!meta <Anfrage> Quellcode/DB per KI ändern – mächtig, mit Vorsicht nutzen

Freitext-Nachrichten (z. B. „60 g Nudeln, slow, 5,45 E gespritzt", „schläft ein",
„Katheterwechsel, Soft, Bauch links") werden interpretiert und gespeichert bzw. an die KI
weitergeleitet.

Sicherheitshinweis: !meta lässt die KI eigenständig Quellcode und Datenbank ändern.
Das ist bewusst mächtig, aber riskant – Änderungen prüfen und ggf. per Git zurückrollen.


Teil C – System & Modelle

9. Architektur & Datenmodell

Matrix-Bot ─┐                        ┌─ insulin_model.py (IOB/COB, project_glucose)
Nightscout ─┼─► PostgreSQL "diabotus" ┼─ therapy.py (Profile/Parameter, zentral)
Glooko     ─┘   (CGM, Events, Profile)├─ plot.py / app.py (Plots, Prognose)
                                       └─ pump_model.py (CIQ), fit_model.py (Fits)

Kerntabellen: glucose_entries (CGM, mg/dL, 5-min), events (carb/insulin/insulin_stretched/
pump_suspend/pump_resume/_basal), context_events (activity/sleep/illness/catheter_change/…),
basal_rates/carb_ratios/correction_factors (Pumpenprofile), model_isf_profile,
model_carb_ratio_profile, egp_profile (je 24 h), therapy_meta (Key/Value-Parameter).

Namens-Konvention: Event-Typ ist immer carb (nie meal), JSON-Schlüssel immer grams
(nie carbs).

Optionale carb-Felder

Feld Bedeutung
description Lebensmittelname
absorption Aufnahmetyp (s. Kap. 11)
fat_g / protein_g Gramm Fett/Eiweiß → FPE

CGM-direction

DoubleUp/SingleUp/FortyFiveUp (steigend) · Flat (stabil) ·
FortyFiveDown/SingleDown/DoubleDown (fallend).


10. Insulin-PK-Modell (IOB)

Berechnet das aktive Insulin (IOB) nach dem exponentiellen LoopKit/OpenAPS-Modell.
Zwei Parameter:

IOB-Kurven

Tag- und Nacht-DIA/TP sind aktuell identisch (270/75); die Tag/Nacht-Unterschiede stecken im
stündlichen ISF-Profil. Basalinsulin wird als synthetische Micro-Boli alle 5 min modelliert.

Tag vs. Nacht


11. KH-Absorption & FPE (Fett-Protein-Effekt)

KH werden linear über die Absorptionsdauer aufgenommen; COB = noch nicht absorbierte KH.

KH-Absorptionskurven

Absorptionstypen (ABSORPTION_MAP)

Typ Dauer Beispiele
very_fast 30 min Traubenzucker, Glukosegel
fast 60 min Saft, Gummibärchen
medium_fast 90 min schnellere Mischkost
medium 120 min Brot, Müsli, Cornflakes
medium_slow 150 min langsamere Mischkost
slow 180 min Nudeln, Reis
very_slow 240 min Hülsenfrüchte, fettreich
ultra_slow 300 min sehr fett-/proteinreich (Pizza)

Fallback ohne Angabe: medium (bzw. CARB_ABS_MIN = 180 min).

Absorptionstyp-Vergleich

FPE – Fett-Protein-Effekt

Fett/Eiweiß heben den BZ verzögert. build_fpe_events() erzeugt aus fat_g/protein_g
verzögerte KH-Äquivalente:

FPE-KH = fat_g × fat_factor + protein_g × protein_factor
         (Standard: 0.10 · Fett + 0.25 · Eiweiß)
Wirkung: beginnt +60 min nach der Mahlzeit, linear über 240 min.

Die Faktoren liegen in therapy_meta (fpe_fat_factor, fpe_protein_factor, fpe_delay_min,
fpe_duration_min) und sind im Dashboard unter Parameter → Pumpe & Modell einstellbar. Der
Eiweiß-Faktor wurde bewusst von 0.5 auf 0.25 gesenkt (0.5 schlug in der Praxis zu stark ein).

Beispiel Pizza (28 g KH, 20 g Fett, 14 g Eiweiß): FPE ≈ 20·0,1 + 14·0,25 = 5,5 g
verzögerte KH, ab +60 min über 4 h – plus die langsame Absorption der eigentlichen KH.


12. CIQ-Pumpenmodell (Control-IQ)

Die Tandem t:slim X2 mit Control-IQ liefert nicht die programmierte Basalrate, sondern eine
dynamisch angepasste (drosselt unter ~119 mg/dL, erhöht + Auto-Boli darüber). Diabotus modelliert
das empirisch (GradientBoostingRegressor aus Glooko-Daten): Vorhersage des Verhältnisses
tatsächliche/programmierte Rate aus BZ und Tageszeit.

CIQ-Verhalten

In der Prognose läuft das Modell im Feedback-Regelkreis: je 5-min-Schritt aktuellen BZ → CIQ-Rate
→ als Insulin verbuchen → IOB/BZ aktualisieren. Zusätzlich ein Auto-Bolus-Simulator (Sleep-/
Normal-Modus).

Nacht-Szenario CIQ

Das CIQ-Modell ist die Schicht, die die Prognose Glooko-unabhängig macht: Glooko-Daten
trainieren nur das Modell, sie werden nicht laufend gebraucht.


13. Glukoseprognose & Einschlaf-Effekt

project_glucose() kombiniert pro Zeitschritt:

ΔBZ = KH_absorbiert × (ISF / KH-Faktor)      (Anstieg, inkl. FPE-Spät-KH)
    − IOB_Abnahme   × ISF                    (Senkung, inkl. CIQ-Basal)
    + EGP                                     (endogene Glukose / Leber)
mit Trend-Anchoring: anfangs folgt die Kurve dem beobachteten Trend,
Gewicht w = 0.5^(Zeit/45 min) → nach ~45 min dominiert das Modell.

Einschlaf-Effekt: Beim Einschlafen steigt der BZ (weniger Muskelverbrauch, Wachstumshormon,
hepatische Glukose). Modelliert als synthetische 15-g-KH-Quelle (sleep_hepatic_glucose_g) über
90 min ab Einschlafzeit (Default 20:45). Das EGP-Profil enthält Einschlafknick und Dawn-Effekt aus
dem Fit.

Einschlaf-Effekt

Bekannte Grenze: Das Modell hat keinen Gegenregulations-/Hypo-Boden – rechnerisch laufen
Prognosekurven unter 0 weiter. Richtung stimmt, die Tiefe einer prognostizierten Hypo ist
überzeichnet.


14. Therapieparameter (Beispielprofil)

Therapieprofil-Übersicht

Aktuelle Eckwerte (Stand Juni 2026, alle via Dashboard/!meta änderbar):

Bolus-Formel: Insulin (E) = KH (g) ÷ KH-Faktor.
Korrektur: (BZ − Ziel) ÷ ISF.


15. Tuning & Wartung

Aufgabe Wie
Profil aus Daten schätzen Dashboard → Fit-Assistent (ISF/EGP/KH-Faktor)
Einzelparameter ändern Dashboard (Edit-Modus) oder Bot !meta
Pumpenmodell neu trainieren nach Glooko-Import: python pump_model.py
Glooko importieren alle 2–3 Monate: python glooko_import.py
Prognose-Backtest python model_eval.py (MAE/Bias pro Horizont)
Doku-Illustrationen neu python docs/examples.py

Wann tunen? Bei systematischem Prognose-Bias (>±20 mg/dL), Wachstums-/Saison-bedingter Änderung
des Bedarfs oder neuen Vorgaben der Kinderdiabetologie.


Anhang: Beispielszenarien

Szenario Bild
5 g Traubenzucker, kein Bolus
Mahlzeit mit Bolus
Korrekturbolus (ISF 80/100/120)

Modell-Illustrationen (images/0X_*.png): python docs/examples.py.
Dashboard-Screenshots (images/dash_*.png): manuell aufgenommen.