dak.c2s/backend/app/schemas/report.py
CCS Admin d6fb04d5a7 feat: coding queue, reports API, Excel sync
- Add coding_service.py with queue retrieval, single + batch coding updates
- Add report schemas (DashboardKPIs, WeeklyDataPoint, ReportMeta)
- Add coding API router with /queue, PUT /{case_id}, POST /batch endpoints
- Add reports API router with /dashboard, /weekly, /generate, /download, /list
- Add excel_sync.py for bidirectional Abrechnung DB<->XLSX sync
- Register coding and reports routers in main.py

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 08:03:17 +00:00

54 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_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