2026-06-04 17:50:22 +08:00
|
|
|
from sqlalchemy import select
|
|
|
|
|
from sqlalchemy.orm import Session
|
2026-06-01 09:25:26 +08:00
|
|
|
|
|
|
|
|
from app.models.department import Department
|
2026-06-04 17:50:22 +08:00
|
|
|
from app.models.source_case import ScoringRule
|
2026-06-01 09:25:26 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class SourceCaseRepository:
|
2026-06-04 17:50:22 +08:00
|
|
|
"""病例辅助只读仓储:读取科室名称和病例评分规则。"""
|
2026-06-01 09:25:26 +08:00
|
|
|
|
|
|
|
|
def __init__(self, db: Session) -> None:
|
|
|
|
|
self.db = db
|
|
|
|
|
|
|
|
|
|
def get_department_name(self, department_id: int | None) -> str:
|
2026-06-04 17:50:22 +08:00
|
|
|
"""科室名称:按 department 表读取当前病例所属科室名称。"""
|
2026-06-01 09:25:26 +08:00
|
|
|
if not department_id:
|
|
|
|
|
return ""
|
|
|
|
|
department = self.db.scalar(select(Department).where(Department.id == department_id))
|
|
|
|
|
return department.name if department else ""
|
|
|
|
|
|
|
|
|
|
def get_scoring_rules(self, case_id: int) -> list[ScoringRule]:
|
|
|
|
|
"""评分规则:读取当前病例对应的基础评分细则。"""
|
|
|
|
|
stmt = select(ScoringRule).where(ScoringRule.case_id == case_id).order_by(ScoringRule.id)
|
|
|
|
|
return list(self.db.scalars(stmt).all())
|