Skip to content

CSWebations/blood-values-tracker

Repository files navigation

Blutwerte

Eine schlanke, selbst gehostete Webanwendung zum Erfassen, Einsehen und Auswerten der eigenen Blutwerte – damit du deine Laborwerte selbst im Blick behältst.

License: MIT-0 PHP Database PWA

Gesundheitshinweis: Dieses Tool dient ausschließlich der persönlichen Dokumentation und ersetzt keine ärztliche Beratung oder Diagnose. Hinterlegte Referenzbereiche sind Orientierungswerte und können je nach Labor und Messmethode abweichen. Alle Angaben ohne Gewähr.


Worum geht es?

Einzelne Laborberichte sagen für sich genommen oft wenig aus: Ein Wert wirkt unauffällig oder auffällig, doch ohne die Werte der Vergangenheit fehlt der Zusammenhang. Dieses Tool löst die Daten aus dem einzelnen Befund und macht den Verlauf über die Zeit sichtbar.

So lassen sich

  • Hoch- und Tiefphasen sowie schleichende Trends früh erkennen,
  • Werte über Monate und Jahre lückenlos nachverfolgen,
  • und aussagekräftige Verläufe als CSV oder PDF an behandelnde Ärztinnen und Ärzte weitergeben.

Statt eine starre Tabelle zu pflegen, erfasst du mehrere Werte eines Termins in einem Schritt und siehst sofort Verlauf, Trend und Einordnung gegen Referenzbereiche.

Inhaltsverzeichnis

Screenshots

Übersicht Statistik & Verlauf
Übersicht mit den zuletzt erfassten Werten Verlaufsdiagramm mit Referenzbereich und Zielkorridor
Werte erfassen Blutwerte verwalten
Mehrere Laborwerte eines Termins erfassen Katalog der Blutwerte nach Gruppen

Funktionen

  • Mehrfacherfassung pro Termin – mehrere Laborwerte zu einem Datum gemeinsam eintragen; Einheit je Wert wählbar mit automatischer Umrechnung in die Basiseinheit. Zum Schutz der Datenqualität werden nur die für einen Wert hinterlegten Einheiten akzeptiert – eine unbekannte Einheit führt zu einer Fehlermeldung statt zu einer stillen Fehlinterpretation des Messwerts.
  • Komfortables Erfassen – Live-Suche und Kategorie-Sprungleiste finden bei vielen Werten schnell das richtige Feld, der Referenz-Hinweis rechnet in die gewählte Einheit um, und ungespeicherte Eingaben werden beim versehentlichen Verlassen der Seite abgesichert.
  • Medizinischer Referenzkatalog – über 40 gängige Blutwerte mit Einheiten sind vorbereitet und lassen sich aktiv schalten oder um eigene Werte ergänzen.
  • Ampel-Bewertung – geschlechtsabhängige Referenzbereiche kennzeichnen jeden Wert als zu niedrig, im Normbereich, im Grenzbereich oder zu hoch.
  • Statistik und Verlauf – Liniendiagramm je Wert mit echter Zeitachse (unregelmäßige Messabstände werden maßstabsgetreu dargestellt) und Trend-Kennzahlen (letzter Wert, Veränderung, Durchschnitt, Min/Max, Anteil im Normbereich). Dazu Zeitraum-Schnellauswahl (3/6/12 Monate oder alles), Vergleich mehrerer Werte auf zweiter Achse, Marker für Notizen/Quellen sowie ein persönlicher Zielkorridor. Trend-Pfeile sind valenzbewusst eingefärbt (bei „niedriger ist besser" ist ein Anstieg rot).
  • Notizen und Quellen – je Termin Bemerkungen und die Herkunft (Labor, Arztpraxis) hinterlegen.
  • Übersicht mit Suche – alle Werte auf einen Blick, schnell filterbar.
  • Export – einzelne oder alle Werte als CSV (tabellenkalkulationsfreundlich) oder als PDF zur Weitergabe.
  • Backup und Wiederherstellung – vollständiger Export aller Daten als JSON und Rücksicherung daraus (Verwaltung → Backup).
  • Zurücksetzen / Deinstallation – die Anwendung auf Wunsch vollständig leeren und entfernen (Verwaltung → Reset).
  • Benutzer- und Rechteverwaltung – weitere Konten mit drei Rollen: admin (volle Verwaltung), user (erfassen & auswerten) und viewer (reine Leserechte für Übersicht, Statistik und Export).
  • Anmeldung und Zugangsschutz – Passwort-Reset per E-Mail, Login-Drosselung (pro IP und pro Konto), Session-Timeout bei Inaktivität, „Angemeldet bleiben" sowie ein „Passwort anzeigen"-Schalter beim Login.
  • Sicherheit ab Werk – Trennung von Webroot (public/) und Anwendungslogik (src/), config.php außerhalb des Webroots, Security-Header (u. a. Content-Security-Policy), HMAC-gesicherte Sitzungs- und Reset-Tokens sowie CSRF-Schutz auf allen Formularen. Details in SECURITY.md.
  • PWA – auf dem Smartphone wie eine App installierbar, mit eigener Offline-Hinweisseite.
  • Geführter Install-Assistent für die Ersteinrichtung.

Technik

  • PHP 8.5 (PDO)
  • MariaDB / MySQL
  • HTML, CSS und JavaScript

Voraussetzungen

  • Webspace mit PHP 8.5 und PDO-MySQL
  • eine leere MariaDB- oder MySQL-Datenbank
  • HTTPS wird empfohlen; für die Funktion „Passwort vergessen" muss der Server E-Mails versenden können

Installation

Schritt für Schritt (ausführlich)

  1. Dateien hochladen. Lade den Inhalt des Projekts auf deinen Webspace, z. B. nach /blood-values-tracker/. Du kannst das Projekt entweder als ZIP herunterladen und per FTP hochladen oder per git clone direkt auf den Server holen.

  2. DocumentRoot der Domain auf public/ setzen (zwingend). Der „DocumentRoot" ist das Verzeichnis, das deine Domain im Browser anzeigt. Stelle ihn in der Verwaltung deines Hosters (Domain-Einstellungen) auf den Unterordner public/ – also z. B. auf /blood-values-tracker/public/. Nur so sind die Programmlogik (src/) und die Zugangsdaten (config.php) vom Web aus nicht erreichbar. Die Anwendung ist ausschließlich für diesen Betrieb ausgelegt. Die mitgelieferte .htaccess im Projektstamm ist eine reine Notbremse: Zeigt die Domain fälschlich auf den Projektstamm, sperrt sie jeden Zugriff (auch auf public/) – die App ist dann bewusst nicht erreichbar, bis der DocumentRoot korrekt auf public/ zeigt. Ein Hoster ohne frei wählbaren DocumentRoot ist für dieses Tool nicht geeignet.

  3. Datenbank anlegen. Erstelle im Hosting-Panel (oft „Datenbanken" / phpMyAdmin) eine neue, leere MySQL-/MariaDB-Datenbank und notiere dir Host, Datenbankname, Benutzer und Passwort.

  4. Installations-Assistenten aufrufen. Öffne im Browser https://deine-domain.tld/install.php.

    • Schritt 1: Datenbank-Zugangsdaten eingeben (optional eine feste Basis-URL – ohne Angabe wird die beim Installieren aufgerufene Adresse fest übernommen).
    • Schritt 2: Administrator-Konto und die zu trackende Person anlegen. Der Assistent legt alle Tabellen an, befüllt den Referenzkatalog und schreibt die config.php. Die feste Basis-URL ist sicherheitsrelevant: Links in Passwort-Reset-Mails werden ausschließlich aus ihr gebaut (Schutz vor Link-Manipulation über gefälschte Anfragen). Sie lässt sich später unter Verwaltung → Einstellungen ändern.
  5. Fertig. Nach Abschluss entfernt sich der Installer automatisch. Sollte das technisch nicht möglich sein, weist die Anwendung dich mit einer deutlichen Warnung darauf hin – lösche public/install.php in diesem Fall manuell. Danach kannst du dich anmelden und mit dem Erfassen beginnen.

Mehrere Nutzer und weitere Personen

Die Anwendung ist bewusst darauf ausgelegt, die Blutwerte genau einer Person zu verwalten.

Es lassen sich weitere Benutzerkonten anlegen – etwa für Angehörige oder eine betreuende Person –, diese greifen jedoch alle auf denselben, einen Datenbestand zu. Es handelt sich also um zusätzliche Zugänge zu denselben Werten, nicht um getrennte Profile. Dabei stehen drei Rollen zur Verfügung:

Rolle Rechte
admin alles: Erfassen, Auswerten, Verwaltung (Einstellungen, Blutwerte, Nutzer, Backup, Reset)
user Werte erfassen, bearbeiten und löschen, Statistik und Export – keine Verwaltung
viewer nur lesen: Übersicht, Messzeitpunkte, Statistik und Export – keine Änderungen möglich

Sicherheitsrelevante Aktionen in der Nutzerverwaltung (Konto anlegen, Rolle ändern, Konto löschen) erfordern zusätzlich die Bestätigung mit dem eigenen Administrator-Passwort.

Soll eine weitere Person mit eigenen Werten getrackt werden, ist hierfür konzeptionell eine eigene, separate Installation vorgesehen: eigene Dateien und eine eigene, leere Datenbank. Beim Kopieren einer bestehenden Installation die config.php nicht mitnehmen und den Assistenten erneut durchlaufen. Niemals zwei Installationen dieselbe Datenbank nutzen lassen!

Datenschutz

Das Tool ist auf Datensparsamkeit und einen DSGVO-konformen Selbstbetrieb ausgelegt.

Keine externen Ressourcen. Die Anwendung lädt zur Laufzeit ausschließlich lokale Dateien – es werden keinerlei Inhalte von fremden Servern (CDNs, Google Fonts o. Ä.) nachgeladen. Dadurch fließen beim Aufruf keine Daten (auch keine IP-Adressen) an Dritte ab.

  • Schriften: ausschließlich die System-Schriftarten des jeweiligen Geräts (system-ui, Segoe UI, Roboto …). Es werden keine Web-Fonts von externen Servern geladen.
  • Diagramme: Chart.js (MIT-Lizenz) – lokal eingebunden unter public/assets/chart.umd.js.
  • PDF-Erzeugung: FPDF (freie Lizenz) – lokal eingebunden unter src/lib/.
  • Icons und Manifest: lokal unter public/assets/.
  • Kein Tracking, keine Analyse, keine Werbe- oder sonstigen Drittanbieter-Skripte.

Cookies. Es werden ausschließlich technisch notwendige First-Party-Cookies gesetzt: ein Sitzungscookie (bw_session) und – nur bei aktiviertem „Angemeldet bleiben" – ein Anmeldecookie (bw_remember). Es gibt keine Tracking-Cookies; ein Cookie-Consent-Banner ist daher nicht erforderlich.

Gespeicherte Daten. Alle Gesundheits- und Kontodaten liegen ausschließlich in der Datenbank deiner eigenen Installation. Es gibt keine Telemetrie und keinen Datenabgleich mit dem Autor oder Dritten.

  • Zur Absicherung gegen Anmelde-Missbrauch werden fehlgeschlagene Login-Versuche mit IP-Adresse protokolliert und automatisch nach rund drei Monaten gelöscht.
  • Für die Funktion „Passwort vergessen" versendet der Server eine E-Mail; der Versand läuft über deinen eigenen Server bzw. Hoster.

Verantwortlichkeit. Da die Anwendung selbst gehostet wird, ist die betreibende Person datenschutzrechtlich verantwortlich (Art. 4 Nr. 7 DSGVO) – insbesondere für HTTPS, Zugriffsschutz, Datensicherung sowie, falls weiteren Personen Zugang gewährt wird, für deren Information.

Lizenz

Dieses Projekt steht unter der MIT-0-Lizenz (MIT No Attribution): Du darfst es uneingeschränkt nutzen, verändern, weitergeben und in eigene – auch kommerzielle – Projekte übernehmen, ohne Namensnennung und ohne einen Lizenz- oder Copyright-Hinweis beibehalten zu müssen. Der vollständige Text steht in der Datei LICENSE.

© 2026 Christian Sievers · CSWebations (Urheberangabe freiwillig – die Lizenz verlangt sie nicht.)

Haftung und Gewährleistung

Diese Software wird kostenlos und „wie besehen" (as is) bereitgestellt – ohne jede Gewährleistung, weder ausdrücklich noch stillschweigend (insbesondere ohne Zusicherung der Marktgängigkeit, der Eignung für einen bestimmten Zweck oder der Fehlerfreiheit). Die Nutzung erfolgt auf eigenes Risiko.

Eine Haftung des Autors für Schäden, die aus der Nutzung oder Nichtnutzbarkeit der Software entstehen, ist im größtmöglichen gesetzlich zulässigen Umfang ausgeschlossen. Nach zwingendem deutschem Recht bleibt die Haftung unberührt für Schäden aus der Verletzung von Leben, Körper oder Gesundheit, für Vorsatz und grobe Fahrlässigkeit sowie nach dem Produkthaftungsgesetz; ein darüber hinausgehender Ausschluss ist rechtlich nicht möglich. Da die Software unentgeltlich überlassen wird, ist die Haftung zudem bereits von Gesetzes wegen beschränkt (§ 521 BGB – Haftung nur für Vorsatz und grobe Fahrlässigkeit).

Gesundheitsdaten: Das Tool dient ausschließlich der persönlichen Dokumentation und ersetzt keine ärztliche Beratung, Diagnose oder Behandlung. Hinterlegte Referenzbereiche sind unverbindliche Orientierungswerte und können je nach Labor und Methode abweichen. Entscheidungen mit gesundheitlicher Tragweite dürfen nicht allein auf Grundlage dieses Tools getroffen werden.

Betrieb: Für den rechtskonformen und sicheren Betrieb der eigenen Installation (Datensicherung, Zugriffsschutz, HTTPS, Aktualität von PHP und Server) ist allein die betreibende Person verantwortlich.

Transparenzhinweis

Dieses Projekt wurde unter Einsatz des KI-Sprachmodells Claude (Anthropic) entwickelt. Im Sinne der Transparenz wird offengelegt, dass Quellcode und Teile der Dokumentation mit Unterstützung dieses KI-Systems erstellt wurden.

About

Selbst gehostete Web-App, um eigene Laborwerte über die Zeit zu dokumentieren: Mehrfacherfassung pro Termin, geschlechtsabhängige Referenzbereiche mit Ampel, Verlaufsdiagramme, Export als CSV/PDF und Backup. Installierbar als PWA. PHP 8.5 + MariaDB/MySQL, MIT-0.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Contributors