---
name: health-management
description: "Health data management — lab values, symptom tracking, nutrition logging, correlation analysis, and doctor report generation."
version: 1.0.0
author: Hermes Agent
category: health
---

# Health Management System

## Absorbed nutrition integration

The former `yazio-integration` skill is now a subsection of this health-data umbrella. Use `references/absorbed-packages/yazio-integration/` for the preserved YAZIO API scripts and notes when retrieving logged meals or nutrition data for health correlation analysis.

## Datenbank-Struktur (`health_data.db`)

### Tabellen
- **laborwerte**: Alle Laborwerte mit Datum, Wert, Einheit, Referenzbereich
- **ernaehrung**: `datum, mahlzeit, beschreibung, wirkung, notizen`
- **symptome**: `datum, kategori, symptom, schwergrad, wirkung, notizen`
- **tagebuch**: `datum, kategori, titel, inhalt, wirkung, verknuepft, notizen` — Haupttabelle für alle Einträge
- **arztbesuche**: `datum, arzt, klinik, grund, zusammenfassung, labor_verweis, notizen`
- **korrelationen**: `datum, faktor, auswirkung, stärke, notizen` — Automatische Korrelationen

## Workflow

### 0. Vascular Behçet research / biologics / anticoagulation
- Use `references/vascular-behcet-research.md` when Sir asks about vascular Behçet, thromboses/thrombophlebitis, Adalimumab/Hyrimoz/Humira, TNF inhibitors, Colchicin, Eliquis/Apixaban, or anticoagulation plus immunosuppression.
- Use `references/hyrimoz-behcet-lab-report-workflow.md` when Sir asks which blood/urine values to check around Hyrimoz/Adalimumab or wants a doctor-facing monitoring report with current DB values and trend charts.
- Canonical vault: `~/jarvis_memory/health/behcet_vascular_research/` with `evidence_summary.md`, study cards, EULAR notes, and patient-experience search paths.
- Default stance: support Arztgespräch and risk framing; never imply medication tapering/anticoagulation changes are safe without clinician-led criteria and objective stability.

### 0a. Hyrimoz / vascular Behçet lab-report workflow
- For Arzttermin reports, include: recommended labs/urine panels, one-line clinical justification per value, source anchors, current values from `/home/agent/Gesundheit/health_data.db`, and compact trend charts.
- Prioritize CRP+BSG/ESR, CBC with differential, liver panel, kidney panel, urine dip/sediment plus albumin/creatinine and protein/creatinine ratios, TB/IGRA, HBV/HCV/HIV, targeted thrombosis markers, lipids, and glucose/HbA1c.
- DB pitfall: `laborwerte.ermittlung_datum` can be import time rather than measurement date; parse dates from `bemerking` or filenames when present, de-duplicate PDF imports, and exclude date-string artefacts in `wert`.
- Alias pitfall: canonicalize `non-HDL` before `HDL`; merge CRP, ALT/ALAT, AST/ASAT, and D-Dimer/D-Dimere aliases before plotting.

### 1. Neue Laborwerte
- Neue XLSX-Datei in `inbox/` ablegen
- Extrahiere Werte → aktualisiere `laborwerte` Tabelle
- Historische Werte bleiben für Trendanalyse

### 2. Tagebuch-Einträge per Telegram
- Tags: `#ernaehrung`, `#symptom`, `#medikament`, `#sport`, `#schlaf`, `#stress`, `#arzt`
- Format: `#tag DATUM Beschreibung → Wirkung`
- Speichere in `tagebuch` + spezifische Tabellen
- User sendet unstrukturiert — Agent extrahiert automatisch Datum, Kategorie, Inhalt

### 3. Ernährungsstrategie-Referenz
- Therapeutische Ernährungsstrategie als Referenz-Eintrag in `tagebuch` gespeichert
- Titel: "Therapeutische Ernährungsstrategie — Vollständige Referenz"
- Enthält: Ziele, Fokus, No-Gos
- Jeder Ernährungseintrag wird automatisch damit abgeglichen

### 4. Strategie-Check (Cron-Job)
- Job-ID: `78a4dd51c834` — läuft täglich um 19:00
- **Bedingte Ausführung:** Nur wenn Ernährungseinträge für den Tag existieren
- Bei Einträgen: Erstelle Check mit ✅/❌/⚠️ Bewertung gegen Strategie
- Bei 0 Einträgen: Silent exit (kein Bericht)
- Format: Pro-Mahlzeit-Bewertung mit Begründung basierend auf No-Gos/Positive-Items

### 5. Arztberichte
- Arztbesuch per Telegram: `#arzt DATUM Arzt/Klinik Grund Zusammenfassung`
- Generiere Bericht: Korreltiere Arztbesuche + Laborwerte + Symptome

### 6. Korrelationsanalyse
- Automatisch Korrelationen zwischen Ernährung/Symptomen/Laborwerten finden
- Speichere in `korrelationen` Tabelle
- Erstelle periodische Reports

### 7. Apple Health Dashboard / Health Auto Export Debugging
- Use `references/apple-health-dashboard-debugging.md` when Sir reports Health Dashboard Apple Health charts stopping before newly uploaded Health Auto Export dates.
- Canonical dashboard data lives under `/home/agent/.hermes/assets/Gesundheit`, not `/home/agent/Gesundheit`; active DB is `/home/agent/.hermes/assets/Gesundheit/health_data.db` and active HTML is `reports/health_dashboard.html`.
- After manual upload/sync, run Apple Health Drive sync, then regenerate the dashboard: `cd /home/agent/.hermes/assets/Gesundheit && /usr/bin/python3 scripts/health_pipeline.py dashboard`.
- Pitfall: raw records for a date can exist while specific metrics are absent from that date’s JSON export. Verify per metric/day in `apple_health_records` before calling it a failed import.
- Pitfall: `apple_health_analytics.daily_series(..., stable_only=True)` intentionally hides the current local date because same-day Health Auto Export values are provisional.

## Telegram-Format
```
#ernaehrung 2026-05-10
Mittag: Linsensuppe → Müdigkeit

#symptom 2026-05-10
Müdigkeit (leicht) — nach Linsensuppe

#arzt 2026-05-10
Dr. Scheidegger, Hautarzt — Auge kontrolliert, Heilung fortschreitend
```

## Single Source of Truth
- Excel-Datei in `inbox/` (z.B. `260510_Laborwerte_Uebersicht.xlsx`)
- User kann selbst kontrollieren/anpassen
- Datenbank wird daraus generiert

## Ernährung-Strategie-Korrelation
- Therapeutische Ernährungsstrategie als Referenz-Eintrag in `tagebuch` gespeichert
- Titel: "Therapeutische Ernährungsstrategie — Vollständige Referenz"
- **Jeder Ernährungseintrag wird automatisch damit abgeglichen**
- No-Gos: Schweinefleisch, Weizen/Gluten, Industriezucker, Histamin-Bomben, Nachtschatten, gesättigte Fette
- Positive Items: Omega-3, Ballaststoffe, mageres Protein, Kollagen/Butyrat
- Strategie-Check (Cron-Job `78a4dd51c834`) läuft täglich um 19:00 — nur bei Ernährungseinträgen

## YAZIO-Integration
- Skill `yazio-integration` verwaltet den Zugriff auf die YAZIO-API
- Täglich geloggte Mahlzeiten automatisch ins `ernaehrung`-Table übernehmen
- Ermöglicht automatische Korrelation zwischen YAZIO-Einträgen und Symptomen
- Siehe `references/yazio-api-notes.md` für API-Details

## Gesundheitsdaten per E-Mail (Cron-Job)
- Täglich um 23:10 prüft Cron-Job `502d577ab406` Gmail auf E-Mails von `quickview.newsflash@gmail.com` oder `gasser.m@icloud.com` mit Betreff `Gesundheitsdaten [Datum]`
- Verwendet `gog` CLI mit `GOG_KEYRING_PASSWORD=LammBitch30` und `-a friday.uplink@gmail.com`
- Script: `~/.hermes/scripts/yazio_gesundheitsdaten_sync.py`
- **Duplikatsschutz:** Vor dem Einfügen prüft das Script, ob bereits ein Eintrag mit ähnlichem Betreff existiert — überspringt Duplikate
- Werte werden in `tagebuch` Tabelle eingetragen mit Kategorie `gesundheit`
- Unterstützt JSON-Body und strukturierten Text (Schritte, HR, HRV, Respiratory Rate, etc.)

## Pitfalls
- **faster-whisper muss installiert sein** für STT (local provider)
- **Installiere über `uv`:** `/home/agent/.hermes/hermes-agent/venv/bin/pip` funktioniert nicht (kein pip im venv) — verwende `uv pip install`
- **Modell `medium` ist konfiguriert** (25MB) — gute Deutsch-Genauigkeit, angemessene Geschwindigkeit
- **Sprache explizit auf `de` setzen** — Auto-Detect ist unzuverlässig
- **Schweizerdeutsch wird NICHT unterstützt** — Whisper transkribiert Dialekt fehlerhaft
- User spricht Hochdeutsch für beste STT-Ergebnisse
- **Gateway neustarten nach STT-Config-Änderungen** — `openclaw gateway restart`
- **Duplikate bei Gesundheitsdaten:** Vor dem Einfügen immer prüfen, ob Eintrag bereits existiert. Nutze `~/.hermes/scripts/yazio_gesundheitsdaten_sync.py` für automatisierten Sync mit Duplikatsschutz.
- **gog CLI:** Immer `GOG_KEYRING_PASSWORD=LammBitch30` und `-a friday.uplink@gmail.com` setzen. Ohne beides: `no TTY available for keyring file backend password prompt`.
