dak.c2s/backend/app/schemas/report.py
CCS Admin 48939f01dd feat: add Onko-Intensiv and Galle-Schild report types
Adds report_type support across the full stack:
- Backend: REPORT_TYPES mapping, fallgruppen filter in all 5 sheet
  calculations, dynamic Excel columns, report_type DB column with
  Alembic migration 007
- Frontend: report type dropdown in generation form, type column in
  reports table, dynamic fallgruppen in ReportViewer

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 12:47:59 +00:00

55 lines
1.2 KiB
Python

"""Pydantic schemas for dashboard KPIs, weekly data points, and report metadata."""
from datetime import date, datetime
from typing import Optional
from pydantic import BaseModel
class DashboardKPIs(BaseModel):
"""Top-level KPI summary for the dashboard."""
total_cases: int
pending_icd: int
pending_coding: int
total_gutachten: int
fallgruppen: dict[str, int] # e.g. {"onko": 123, "kardio": 45, ...}
class WeeklyDataPoint(BaseModel):
"""A single calendar-week row for the dashboard chart / table."""
kw: int
erstberatungen: int = 0
unterlagen: int = 0
ablehnungen: int = 0
keine_rm: int = 0
gutachten: int = 0
class DashboardResponse(BaseModel):
"""Combined dashboard payload: KPIs + weekly time-series."""
kpis: DashboardKPIs
weekly: list[WeeklyDataPoint]
class ReportMeta(BaseModel):
"""Metadata for a generated weekly report (no file content)."""
id: int
jahr: int
kw: int
report_type: str = "gesamt"
report_date: date
generated_at: datetime
generated_by: Optional[int] = None
model_config = {"from_attributes": True}
class ReportListResponse(BaseModel):
"""Paginated list of report metadata."""
items: list[ReportMeta]
total: int