Fall-ID is redundant for DAK staff since KVNR is shown separately.
Export now only includes Datum, KVNR, Fallgruppe, ICD, Gutachten, Status.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Users can save frequently used filter combinations (year, fallgruppe,
ICD status, search) as named presets. Stored server-side in new
filter_presets table (max 10 per user). Star-icon Popover on CasesPage
to load, save, or delete presets. TanStack Query hooks for CRUD.
New files: FilterPreset model, migration 009, API router, schemas,
useFilterPresets hook.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New GET /cases/export endpoint generates .xlsx with openpyxl using the
same filters as the case list (year, fallgruppe, ICD status, search).
Role-aware columns: admins see patient names, DAK staff does not.
Frontend adds a Download button next to the filter bar with loading
state. Refactors shared query logic into _build_case_query helper.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a Switch toggle for "Batch-Modus" on the ICD page that enables
inline ICD code entry directly in the table. Features: Enter to save,
Escape to cancel, Tab to navigate, visual feedback (green/red border,
spinner, checkmark/error icon with tooltip).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add contextual tooltips on table headers, KPI cards, status badges,
and action buttons across Dashboard, Cases, Wochenübersicht, Reports,
and My Disclosures pages. Wrap global TooltipProvider in App.tsx.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
DAK-Mitarbeiter now only see: Bearbeiten, Personendaten anfordern,
Fall-ID, CRM-Ticket, Datum, KW/Jahr, Persönliche Daten, Kontakt,
and ICD-Code entry. Hidden: Falldetails, Unterlagen, Gutachten,
Status, Abrechnung, status badges, and coding info.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace manual useEffect data fetching with useCases/usePendingIcdCases
query hooks. Replace direct API calls in useInlineEdit with useCaseUpdate
and useKvnrUpdate mutations. Use useIcdUpdate for ICD saving. Remove
onCaseSaved callback prop drilling — mutations auto-invalidate the cache.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace individual field editors (KVNR, ICD) with a unified edit-mode
approach using data-driven field configuration. A single "Bearbeiten"
button toggles all fields into edit mode with dirty-tracking and
split-save (KVNR via dedicated endpoint for all users, remaining fields
via admin-only general update endpoint).
- Extend Case TypeScript interface with 17 missing backend fields
- Add declarative field config (7 sections, 30 fields) in fieldConfig.ts
- Add useInlineEdit hook with dirty-tracking and split-save logic
- Add EditableField dual-mode component (text/date/boolean/select/textarea)
- Refactor CaseDetail to render sections from config
- ICD section retains its own endpoint with separate save button
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implement the four core frontend pages for the DAK Zweitmeinungs-Portal:
- DashboardPage: KPI cards, weekly stacked bar chart, fallgruppen donut chart, year selector
- CasesPage: filterable/searchable paginated table with detail slide-out and inline ICD editing
- ImportPage: CSV upload with preview/confirm, ICD Excel upload, import history log
- IcdPage: reuses CasesPage with pending-icd-only filter
Also adds shadcn/ui components (table, select, tabs, skeleton, scroll-area) and
new TypeScript types for import log and ICD import responses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>