---
name: health-management
description: "Health data management — lab values, symptom tracking, nutrition logging, correlation analysis, and doctor report generation."
version: 1.2.3
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.

### 0b. Hyrimoz response monitoring with Apple Health
- Use `references/hyrimoz-apple-health-response-analysis.md` when Sir asks whether RHR, HRV, pulse, SpO2, respiratory rate, sleep, steps, or physical effort changed after Hyrimoz initiation or a repeat injection.
- Sync Apple Health, regenerate and verify the served dashboard, then compare explicit similarly sized pre/post windows while excluding the injection day and provisional current day.
- Treat results after only one or two injections as exploratory. Check activity confounding and outlier days; wearable trends alone never justify medication or anticoagulation changes.
- If normalized `heart_rate.value` is null, inspect `raw_json` for hourly `Avg` summaries before declaring overall-pulse data unavailable.

### 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
- Für multimodale Tageskorrelationen immer `references/safe-multimodal-correlation-workflow.md` laden und dessen Missingness-, Provenienz-, Zeitreihen-, Privacy- und Review-Vertrag befolgen.
- Nur vollständige, provenance-geprüfte Beobachtungen explorativ auswerten; fehlend bleibt unbekannt und Resultate bleiben Hypothesen ohne Kausalitäts-/Therapieclaim.
- Ausschließlich allowlist-basierte Aggregate in einer dedizierten Resultattabelle speichern; keine Tagesvektoren, Freitexte oder Quellnamen.
- Unsichere Legacy-Missing-as-zero-Korrelationen und daraus erzeugte Safe-/Trigger-/Empfehlungsanzeigen nicht verwenden.

### 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.

### 8. Secure dashboard UI, acceptance, touch writes, nutrition mapping, and local clinical media
- Use `references/local-clinical-media-intake.md` for iPhone Camera Roll, HEIC/HEIF, HEVC MOV/MP4, symptom/document attachments, shared magic+decode+ffprobe validation, metadata-free local derivatives, authoritative health-day semantics, additive media schemas, V4 hash-path reconciliation, and synthetic-only acceptance.
- Use `references/secure-health-dashboard-write-path.md` when adding mobile UI, local chart assets, CSP, privacy/print modes, touch forms, or any dashboard-originated write action.
- Use `references/read-only-nutrition-backend-mapping-audit.md` for source-only nutrition backend and mapping-workflow audits. It inventories committed DDL through an in-memory synthetic SQLite schema, traces every mapping table to readers/writers/migrations/tests, detects display-only review queues and truncated counts, preserves unknown-vs-zero semantics, and plans minimal additive API → private queue → worker changes without opening productive data or exposing item names.
- Use `references/nutrition-dashboard-mapping-safety.md` when implementing the resulting nutrition read model or write workflow: it defines SIGHi/source-classification semantics, separate personal-tolerance storage, composite-product ingredient review, missing-nutrient handling, action-worker invariants, and inflammation-index limits.
- Use `references/swiss-nutrient-reference-dashboard.md` when integrating official Swiss nutrient references or repairing nutrition/symptom dashboard writes. It covers dated local snapshots and checksums, locale-aware parsing, conservative profile/life-stage resolution, unknown/partial semantics, uncapped percentages and range handling, fresh one-time CSRF plus correctly scoped browser sessions, pending-action idempotency, focused browser gates, and exactly-one-commit release discipline.
- Use `references/secure-health-dashboard-release-acceptance.md` for versioned dashboard preview releases and chart-engine migration spikes: shared provider/contract allowlists, fail-closed medication planning, long-span chart preservation, true-position accessible event lanes, mobile 200-%-text gates, synthetic-only fixture markers/read-only DBs, local license/hash pinning, real Brush/date-callback tests, independent working-tree reviews, and approval-gated release sequencing.
- Use `references/review-separated-document-access-and-auth.md` when technical original access, machine-extracted previews, human review, verified search/reporting, nutrition mapping deep links, browser-session authentication, asynchronous release reviews, `<details>/<summary>` route restoration, or explicitly accepted non-medical release exceptions must remain independently gated.
- Use `references/private-dashboard-review-workspaces.md` for bounded master-detail UI/navigation sprints: exact queue-receipt identity, independent editors without detached `<details>`, browser-bundle privacy, off-page document deep-link restoration, truthful page-local technical filters, focused regression gates, and private V5 release sequencing.
- Keep the network-facing process read-only for health data. Queue validated private actions and let a separate network-isolated one-shot worker revalidate and apply them.
- Prove test isolation by making subordinate analytics DB globals inaccessible; exercise a non-canonical metric whose unit/metadata must come from injected rows, because a patched top-level DB path or empty fixture can leave hidden production fallback reads untested.
- Treat source freshness, personal baselines, medication/event overlays, food tolerance labels, and N-of-1 views as descriptive documentation only; preserve Missingness and non-causal wording.
- Dashboard security defaults: loopback bind, configured Host allowlist on every method, resolved-path containment, no inline CSP handlers/styles, strict administered-dose allowlist, and no legacy keyword/adherence scoring from incomplete logs.

## 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
- Kanonische Quelle für Laborwerte und Referenzbereiche ist immer der eingescannte Original-Laborbericht des jeweiligen Untersuches.
- XLSX-Dateien im `inbox/` sind nur sekundäre Arbeits-/Übersichtsmatrizen und können Fehler enthalten.
- Vor klinischer Interpretation oder Korrektur Werte, Einheiten, Messdatum und Referenzbereich gegen den Originalscan prüfen.
- Die aktive Datenbank und daraus erzeugte Dashboards bleiben strukturierte Arbeits- und Trendansichten, nicht Ersatz für das Originaldokument.

## 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 Gesundheitsdaten-Mails der freigegebenen Absender.
- Verwendet `gog` mit dem konfigurierten Konto; Keyring-Passwort ausschließlich zur Laufzeit aus Secret Store/Umgebungsvariable beziehen, niemals im Skill, Chat, Log oder Befehlstext offenlegen.
- 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:** Konto und Keyring-Secret müssen zur Laufzeit konfiguriert sein. Secrets niemals in Skills, Chat-Ausgaben, Logs oder persistenten Befehlen hinterlegen; bei fehlender nicht-interaktiver Secret-Bereitstellung den Lauf sicher abbrechen und die Runtime-Konfiguration korrigieren.
