Hausheld
Workflow-Plattform für die mobile Pflege in NRW — Planung, GPS-verifizierter Check-in/out, digitale Signaturen, Entlastungsbetrag-Tracking. Mit Fokus auf Datenintegrität und EU/GDPR.
Ausgangslage
Ein Pflegedienst mit 200 Mitarbeitern in NRW arbeitete mit manuellen Papierplänen, Nachweisen auf Papier und strengen regulatorischen Anforderungen (GDPR, SGB XI) für Stammdaten und Abrechnung.
Lösung
Ein verteiltes Ökosystem: eine FastAPI-Backend (PostgreSQL + PostGIS), eine Next.js-PWA für Mitarbeiter im Einsatz (Plan, GPS-Check-in/out, Kundensignatur) und ein Vite+React-Admin-Dashboard (Kalender, Krankmeldungen, Vertretungsvorschläge, Budget-Warnungen, SGB-XI-CSV-Export, Audit-Log). PostGIS liefert distanzbasierte Vertretungsvorschläge; ein strikter Schicht-Zustandsautomat und ein nur anhängendes Audit-Log unterstützen die Compliance.
Funktionen
- Mobile PWA: Mitarbeiter sehen ihren Plan, Check-in/out mit GPS, Kundensignatur (Leistungsnachweis).
- Admin dashboard: Kalender, Krankmeldungen, Vertretungsvorschläge, Budget-Warnungen, SGB-XI-CSV-Export, Audit-Log.
- Substitution engine: Bis zu 3 Vertreter nach Entfernung (PostGIS) und wöchentlicher Kapazität.
- Budget & billing: Monatsbudget pro Klient, 15%-Warnschwelle, CSV-Export für Kostenträger (SGB XI).
- Audit trail: Nur anhängendes Log jedes Zugriffs auf Klienten- (bzw. Gesundheits-)Daten; lesendes API.
Architektur
Hausheld ist ein verteiltes Ökosystem: eine API, zwei Frontends. Alle Änderungen laufen über das Backend mit JWT und rollenbasierter Zugriffskontrolle (Admin vs. Mitarbeiter).
flowchart LR
subgraph Clients
PWA["Mobile PWA - Next.js"]
Admin["Admin Dashboard - Vite + React"]
end
subgraph Backend["Backend API"]
API["FastAPI / PostgreSQL + PostGIS"]
end
PWA <-->|JWT| API
Admin <-->|JWT| API- Backend: Single Source of Truth. FastAPI, SQLAlchemy 2 (async), PostgreSQL + PostGIS, Alembic. Erzwingt RBAC, verschlüsselt Gesundheitsdaten, schreibt ins Audit-Log.
- Mobile: Next.js-PWA (deutsche UI). Plan, Check-in/out, Signaturfeld, Klientenliste für zugewiesene Schichten.
- Admin: Vite + React. Kalender (FullCalendar), Mitarbeiter & Krankmeldungen, Klienten & Budget-Warnungen, Abrechnungsexport, Audit-Log, Vertretungszuweisung.
Datenfluss ist unidirektional: Frontends rufen nur die API auf; kein direkter DB-Zugriff vom Client.
Tech-Stack
| Path | Stack |
|---|---|
| /backend | FastAPI, PostgreSQL, PostGIS, SQLAlchemy 2, Alembic, Pydantic — API, Auth, Vertretungen, Budget, Audit, SGB-XI-Export |
| /frontend | Next.js, Tailwind, PWA — Mobile Mitarbeiter-App |
| /admin | Vite, React, Tailwind, FullCalendar — Desktop-Admin |
Geodaten & Vertretung
PostgreSQL/PostGIS liefert distanzbasierte Vertretungsvorschläge, wenn eine Schicht unbesetzt ist (z. B. Krankmeldung).
- Worker- und Client-Modelle speichern einen PostGIS-Punkt (WGS84): current_location und address_location.
- hausheldPage.geospatialBullet2
- Ergebnis: Bis zu 3 Mitarbeiter mit Entfernung (m) und verbleibender Kapazität; Admin weist mit einem Klick zu.
GDPR & Compliance
| Measure | Implementation |
|---|---|
| Health data encryption | Fernet (AES) für Versicherungsnummer und Pflegegrad; Schlüssel über ENCRYPTION_KEY (nicht in der DB). |
| Audit log | Nur anhängendes audit_logs: user, action, target, timestamp. Lesendes API — keine Manipulation. |
| Soft deletes | Mitarbeiter, Klienten, Schichten: nur deleted_at gesetzt; Zeilen für Audit/legal hold erhalten. |
| Data residency | Ausgelegt für AWS eu-central-1 (Frankfurt); Gesundheitsdaten bleiben in Deutschland. |
Schicht-Workflow
Schichten folgen einem strikten Zustandsautomaten; GPS und Signaturen liefern nachweisbaren Leistungsnachweis.
| Status | Meaning |
|---|---|
| Scheduled | Mitarbeiter zugewiesen; noch nicht begonnen. |
| In_Progress | Mitarbeiter hat eingecheckt (GPS + Zeitstempel gespeichert). |
| Completed | Mitarbeiter hat ausgecheckt (GPS + Kundensignatur); Kosten für Budgetabzug gesetzt. |
| Unassigned | Kein Mitarbeiter (z. B. krank); Admin kann suggest-substitutes nutzen und zuweisen. |
| Cancelled | Schicht nicht durchgeführt. |
Scheduled → (Check-in) → In_Progress → (Check-out + Signatur) → Completed. GPS-verifizierter Check-in/out ersetzt Papiernachweise für Kostenträger und Audits.
API-Referenz
| Area | Endpoints |
|---|---|
| Auth | Auth: POST /auth/dev-login, GET /auth/me |
| Shifts | hausheldPage.apiShifts |
| Workers | hausheldPage.apiWorkers |
| Clients | Clients: GET /clients, budget-status, budget-alerts |
| Billing | Billing: GET /exports/billing?month= (SGB-XI-CSV) |
| Audit | Audit: GET /audit-logs (Admin, read-only) |