2026-06-01 09:25:26 +08:00
|
|
|
from fastapi import APIRouter, Depends, Query
|
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
|
|
|
|
|
|
from app.core.response import ApiResponse, ok
|
|
|
|
|
from app.core.user_context import UserContext, get_user_context
|
|
|
|
|
from app.db.session import get_db
|
2026-06-04 17:50:22 +08:00
|
|
|
from app.schemas.case import CaseDetailResponse, CaseListResponse
|
2026-06-01 09:25:26 +08:00
|
|
|
from app.services.case_service import CaseService
|
|
|
|
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("", response_model=ApiResponse[CaseListResponse])
|
|
|
|
|
def list_cases(
|
|
|
|
|
_: UserContext = Depends(get_user_context),
|
|
|
|
|
db: Session = Depends(get_db),
|
|
|
|
|
department_id: int | None = Query(default=None),
|
|
|
|
|
training_type: str | None = Query(default=None),
|
|
|
|
|
mode: str | None = Query(default=None),
|
|
|
|
|
):
|
|
|
|
|
"""病例列表:返回当前可用的激活病例,不暴露标准答案。"""
|
|
|
|
|
return ok(CaseService(db).list_cases(department_id=department_id, training_type=training_type, mode=mode))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("/{case_id}", response_model=ApiResponse[CaseDetailResponse])
|
|
|
|
|
def get_case_detail(
|
|
|
|
|
case_id: int,
|
|
|
|
|
_: UserContext = Depends(get_user_context),
|
|
|
|
|
db: Session = Depends(get_db),
|
|
|
|
|
):
|
|
|
|
|
"""病例详情:返回训练入口信息和可申请检查类型。"""
|
|
|
|
|
return ok(CaseService(db).get_case_detail(case_id))
|