# Berichts-Webansicht (Inline-Expansion) ## Kontext Berichte werden aktuell als Excel-Dateien generiert und können nur heruntergeladen werden. Ziel: Berichte direkt auf der Webseite anzeigen, ohne Excel öffnen zu müssen. ## Entscheidungen - **Inline-Expansion**: Klick auf eine Tabellenzeile klappt den Bericht darunter auf - **5 Tabs**: Alle 5 Excel-Sheets als separate Tabs (KW gesamt, Fachgebiete, Gutachten, Therapieänderungen, ICD onko) - **Backend-Endpoint**: `GET /reports/{id}/data` liefert gespeichertes `report_data`-JSON - **Leere KWs ausblenden**: Nur Zeilen mit Daten anzeigen ## Architektur ### Backend Neuer Endpoint in `backend/app/api/reports.py`: ``` GET /reports/{id}/data → WeeklyReport.report_data (JSON) ``` Authentifiziert (get_current_user), gibt das gespeicherte JSON zurück. Kein Neuberechnen. ### Frontend | Datei | Änderung | |-------|----------| | `hooks/useReports.ts` | Neuer Hook `useReportData(id)` | | `pages/ReportsPage.tsx` | Zeile klickbar, Inline-Expansion mit expandiertem Report | | `components/ReportViewer.tsx` (NEU) | 5-Tab-Viewer-Komponente | ### Sheet-Darstellung | Tab | Spalten | |-----|---------| | KW gesamt | KW, Erstberatungen, Unterlagen, Ablehnungen, Keine RM, Gutachten | | Fachgebiete | KW, pro Fallgruppe: Anzahl, Gutachten, Keine RM | | Gutachten | KW, Gesamt + pro Fallgruppe: Gutachten, Alternative, Bestätigung | | Therapieänderungen | KW, Gutachten, TA Ja, TA Nein, Diagnosekorrektur, Unterversorgung, Übertherapie | | ICD onko | ICD-Code, Anzahl (sortiert nach Häufigkeit) | Jede Tabelle: Summenzeile am Ende, leere KWs ausgeblendet. ## Datenfluss 1. User klickt auf Tabellenzeile → `expandedId` State wird gesetzt 2. `useReportData(expandedId)` fetcht `GET /reports/{id}/data` 3. `ReportViewer` rendert die 5 Tabs mit den Tabellendaten 4. Erneuter Klick auf die Zeile → `expandedId = null` → Expansion wird geschlossen