# 枚举类型定义 **本文档引用的文件** - [models.py](file://backend/app/models/models.py) - [schemas.py](file://backend/app/schemas/schemas.py) - [templates.py](file://backend/app/api/v1/templates.py) - [init_templates.py](file://backend/app/scripts/init_templates.py) - [template_service.py](file://backend/app/services/template_service.py) - [002_template.py](file://backend/alembic/versions/002_template.py) - [001_initial.py](file://backend/alembic/versions/001_initial.py) - [database.md](file://docs/database.md) ## 目录 1. [简介](#简介) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构概览](#架构概览) 5. [详细组件分析](#详细组件分析) 6. [依赖分析](#依赖分析) 7. [性能考虑](#性能考虑) 8. [故障排除指南](#故障排除指南) 9. [结论](#结论) ## 简介 本文档提供了医院绩效管理系统中所有枚举类型的完整数据字典。系统采用平衡计分卡(BSC)理论框架,通过标准化的枚举类型确保业务逻辑的一致性和可维护性。 该系统涵盖了从基础科室管理到复杂绩效考核的完整业务流程,所有关键业务状态和分类都通过精心设计的枚举类型来实现。 ## 项目结构 系统采用分层架构设计,枚举类型分布在多个层次中: ```mermaid graph TB subgraph "数据模型层" A[models.py
数据库模型枚举] end subgraph "API层" B[templates.py
模板管理API] C[departments.py
科室管理API] D[menus.py
菜单管理API] end subgraph "服务层" E[template_service.py
模板服务] F[department_service.py
科室服务] G[menu_service.py
菜单服务] end subgraph "脚本层" H[init_templates.py
模板初始化] end A --> B A --> C A --> D B --> E C --> F D --> G H --> A ``` **图表来源** - [models.py](file://backend/app/models/models.py#L16-L438) - [templates.py](file://backend/app/api/v1/templates.py#L1-L272) ## 核心组件 系统定义了以下主要枚举类型: ### 科室类型 (DeptType) 用于标识医院各类科室的标准化分类体系。 ### 平衡计分卡维度 (BSCDimension) 基于财务、客户、内部流程、学习成长四个维度的绩效评估框架。 ### 员工状态 (StaffStatus) 员工在组织中的生命周期状态管理。 ### 考核状态 (AssessmentStatus) 绩效考核流程中的状态流转控制。 ### 指标类型 (IndicatorType) 不同类型绩效指标的分类标准。 ### 计划状态 (PlanStatus) 绩效计划执行过程中的状态管理。 ### 菜单类型 (MenuType) 系统菜单结构的类型区分。 ### 模板类型 (TemplateType) 绩效指标模板的分类体系。 **章节来源** - [models.py](file://backend/app/models/models.py#L16-L438) - [schemas.py](file://backend/app/schemas/schemas.py#L12-L44) ## 架构概览 系统采用统一的枚举类型管理策略,确保跨层一致性: ```mermaid classDiagram class DeptType { +CLINICAL_SURGICAL +CLINICAL_NONSURGICAL_WARD +CLINICAL_NONSURGICAL_NOWARD +MEDICAL_TECH +MEDICAL_AUXILIARY +NURSING +ADMIN +FINANCE +LOGISTICS } class BSCDimension { +FINANCIAL +CUSTOMER +INTERNAL_PROCESS +LEARNING_GROWTH } class StaffStatus { +ACTIVE +LEAVE +RESIGNED +RETIRED } class AssessmentStatus { +DRAFT +SUBMITTED +REVIEWED +FINALIZED +REJECTED } class IndicatorType { +QUALITY +QUANTITY +EFFICIENCY +SERVICE +COST } class PlanStatus { +DRAFT +PENDING +APPROVED +REJECTED +ACTIVE +COMPLETED +CANCELLED } class MenuType { +MENU +BUTTON } class TemplateType { +GENERAL +SURGICAL +NON_SURGICAL_WARD +NON_SURGICAL_NOWARD +MEDICAL_TECH +NURSING +ADMIN +LOGISTICS } DeptType --> BSCDimension : "影响" IndicatorType --> BSCDimension : "映射" TemplateType --> DeptType : "适用" ``` **图表来源** - [models.py](file://backend/app/models/models.py#L16-L438) ## 详细组件分析 ### 科室类型 (DeptType) 数据字典 | 枚举值 | 业务含义 | 适用科室 | 使用场景 | 约束条件 | |--------|----------|----------|----------|----------| | clinical_surgical | 手术临床科室 | 外科、骨科、胸外科等 | 手术量、手术质量评估 | DRG/ RBRVS 计费 | | clinical_nonsurgical_ward | 非手术有病房科室 | 内科、儿科、神经科等 | 住院患者管理、病床使用率 | 床位周转率评估 | | clinical_nonsurgical_noward | 非手术无病房科室 | 急诊科、观察室等 | 急诊处理能力、观察患者管理 | 急诊周转时间 | | medical_tech | 医技科室 | 检验科、放射科、超声科等 | 检查报告质量、服务效率 | 报告准确率、及时性 | | medical_auxiliary | 医辅科室 | 病理科、药剂科等 | 辅助诊断支持、药品管理 | 质量控制标准 | | nursing | 护理单元 | 各病区护理单元 | 护理质量、患者满意度 | 护理技术操作规范 | | admin | 行政科室 | 院办、党办、财务科等 | 管理效能、服务支持 | 内部客户满意度 | | finance | 财务科室 | 财务科 | 财务核算、成本控制 | 会计准则遵循 | | logistics | 后勤保障科室 | 总务科、设备科等 | 后勤保障、设备维护 | 设备完好率 | **使用场景示例**: - 指标模板选择:不同科室类型适用不同的指标模板 - 数据筛选:按科室类型过滤统计数据 - 权限控制:特定功能对特定科室类型开放 **章节来源** - [models.py](file://backend/app/models/models.py#L16-L26) - [init_templates.py](file://backend/app/scripts/init_templates.py#L82-L186) ### 平衡计分卡维度 (BSCDimension) 数据字典 | 维度值 | 业务含义 | 权重范围 | 关键指标示例 | 适用场景 | |--------|----------|----------|--------------|----------| | financial | 财务维度 | 30%-40% | 收支结余率、成本控制、资产效率 | 财务绩效评估 | | customer | 顾客维度 | 25%-35% | 患者满意度、服务可及性、投诉管理 | 服务质量评估 | | internal_process | 内部流程维度 | 20%-30% | 医疗质量、医疗安全、院感控制 | 运营效率评估 | | learning_growth | 学习成长维度 | 5%-15% | 科研教学、人才培养、业务学习 | 能力发展评估 | **权重配置原则**: - 通用模板:财务40%,客户30%,内部流程25%,学习成长5% - 手术科室:财务35%,客户20%,内部流程30%,学习成长15% - 医技科室:财务20%,客户30%,内部流程40%,学习成长10% **章节来源** - [models.py](file://backend/app/models/models.py#L29-L34) - [templates.py](file://backend/app/api/v1/templates.py#L63-L74) - [init_templates.py](file://backend/app/scripts/init_templates.py#L88-L186) ### 员工状态 (StaffStatus) 数据字典 | 状态值 | 业务含义 | 系统行为 | 统计影响 | 权限控制 | |--------|----------|----------|----------|----------| | active | 在职 | 可参与考核、享受绩效 | 计入在岗人员统计 | 完整权限 | | leave | 休假 | 不参与考核、暂停绩效 | 不计入在岗统计 | 有限权限 | | resigned | 离职 | 不参与考核、结算薪酬 | 不再统计 | 无权限 | | retired | 退休 | 不参与考核、结算薪酬 | 不再统计 | 无权限 | **状态流转图**: ```mermaid stateDiagram-v2 [*] --> active active --> leave : 请假/调休 leave --> active : 返回工作 active --> resigned : 离职办理 active --> retired : 退休办理 resigned --> [*] retired --> [*] ``` **章节来源** - [models.py](file://backend/app/models/models.py#L37-L42) - [schemas.py](file://backend/app/schemas/schemas.py#L24-L28) ### 考核状态 (AssessmentStatus) 数据字典 | 状态值 | 业务含义 | 系统权限 | 数据处理 | 流程控制 | |--------|----------|----------|----------|----------| | draft | 草稿 | 创建/编辑 | 临时保存 | 初始状态 | | submitted | 已提交 | 审核查看 | 待审核状态 | 提交流程 | | reviewed | 已审核 | 确认审批 | 审核中 | 审核流程 | | finalized | 已确认 | 工资核算 | 生效状态 | 结束状态 | | rejected | 已驳回 | 重新编辑 | 退回修改 | 异常流程 | **状态流转流程**: ```mermaid sequenceDiagram participant U as 用户 participant S as 系统 participant A as 审核人 participant P as 系统 U->>S : 创建/编辑考核 S->>S : 状态=draft U->>S : 提交考核 S->>S : 状态=submitted A->>S : 审核通过 S->>S : 状态=reviewed A->>S : 确认生效 S->>S : 状态=finalized S->>P : 生成工资记录 ``` **章节来源** - [models.py](file://backend/app/models/models.py#L45-L51) - [schemas.py](file://backend/app/schemas/schemas.py#L31-L36) ### 指标类型 (IndicatorType) 数据字典 | 类型值 | 业务含义 | 计算方法 | 评估标准 | 示例指标 | |--------|----------|----------|----------|----------| | quality | 质量指标 | 定性/定量评估 | 百分比/分数制 | 甲级病历率、满意度 | | quantity | 数量指标 | 绝对数值统计 | 完成率/达标率 | 手术台次、门诊量 | | efficiency | 效率指标 | 比较/比率分析 | 时间/成本效率 | 住院日、周转率 | | service | 服务指标 | 客户满意度 | 星级/评分制 | 服务态度、及时性 | | cost | 成本指标 | 成本效益分析 | 成本控制效果 | 材料消耗、成本率 | **评估方法分类**: - 区间法:设定目标区间,按比例扣分 - 目标参照法:与目标值对比,超耗扣分 - 加分法:超额完成给予奖励分 - 扣分法:违规事件直接扣分 - 一票否决:重大事故直接无效 **章节来源** - [models.py](file://backend/app/models/models.py#L54-L60) - [schemas.py](file://backend/app/schemas/schemas.py#L39-L44) ### 计划状态 (PlanStatus) 数据字典 | 状态值 | 业务含义 | 审批流程 | 统计作用 | 系统控制 | |--------|----------|----------|----------|----------| | draft | 草稿 | 无需审批 | 临时保存 | 创建/修改 | | pending | 待审批 | 上级审批 | 待执行 | 提交申请 | | approved | 已批准 | 审批通过 | 执行准备 | 正式生效 | | rejected | 已驳回 | 审批拒绝 | 修改调整 | 退回修改 | | active | 执行中 | 开始执行 | 实际执行 | 进行中 | | completed | 已完成 | 执行结束 | 归档统计 | 结束状态 | | cancelled | 已取消 | 主动取消 | 终止执行 | 异常终止 | **计划层级**: - hospital:医院级计划,全局性目标 - department:科室级计划,部门目标 - individual:个人级计划,员工目标 **章节来源** - [models.py](file://backend/app/models/models.py#L233-L241) - [schemas.py](file://backend/app/schemas/schemas.py#L463-L478) ### 菜单类型 (MenuType) 数据字典 | 类型值 | 业务含义 | 界面表现 | 权限控制 | 使用场景 | |--------|----------|----------|----------|----------| | menu | 菜单 | 可展开的导航项 | 路由访问权限 | 主要功能入口 | | button | 按钮 | 可点击的操作按钮 | 功能操作权限 | 具体业务操作 | **菜单结构**: - 一级菜单:工作台、科室管理、员工管理等 - 二级菜单:具体的业务功能页面 - 按钮权限:新增、编辑、删除、查看等操作 **章节来源** - [models.py](file://backend/app/models/models.py#L341-L344) - [schemas.py](file://backend/app/schemas/schemas.py#L584-L587) ### 模板类型 (TemplateType) 数据字典 | 类型值 | 业务含义 | 适用范围 | 权重配置 | 特殊要求 | |--------|----------|----------|----------|----------| | general | 通用模板 | 全院各科室 | 4维均衡 | 基础通用指标 | | surgical | 手术临床科室 | 外科、妇科、眼科等 | 财务35% | DRG/RBRVS导向 | | nonsurgical_ward | 非手术有病房科室 | 内科、儿科等 | 4维均衡 | 住院管理重点 | | nonsurgical_noward | 非手术无病房科室 | 急诊、观察室等 | 4维均衡 | 急诊效率评估 | | medical_tech | 医技科室 | 检验、放射、超声等 | 内部流程40% | 质量效率双核心 | | nursing | 护理单元 | 各病区护理单元 | 顾客30% | 护理质量优先 | | admin | 行政科室 | 院办、党办、财务等 | 顾客40% | 服务支持导向 | | logistics | 后勤科室 | 总务、设备、基建等 | 内部流程40% | 保障效率优先 | **模板特点**: - **通用模板**:平衡四维度,适合大多数科室 - **手术模板**:强调财务效率,体现技术价值 - **医技模板**:注重质量与效率并重 - **行政模板**:突出服务支持能力 - **后勤模板**:重视保障及时性 **章节来源** - [models.py](file://backend/app/models/models.py#L375-L384) - [schemas.py](file://backend/app/schemas/schemas.py#L642-L651) - [templates.py](file://backend/app/api/v1/templates.py#L45-L60) ## 依赖分析 ### 数据库迁移依赖 系统通过 Alembic 迁移管理枚举类型的数据库存储: ```mermaid flowchart TD A[初始版本] --> B[添加指标维度字段] B --> C[模板类型定义] C --> D[枚举类型持久化] E[DeptType] --> F[departments表] G[BSCDimension] --> H[indicators表] I[AssessmentStatus] --> J[assessments表] K[TemplateType] --> L[indicator_templates表] F --> M[SQL约束] H --> M J --> M L --> M ``` **图表来源** - [001_initial.py](file://backend/alembic/versions/001_initial.py#L22-L173) - [002_template.py](file://backend/alembic/versions/002_template.py#L65-L95) ### 业务流程依赖 ```mermaid graph LR subgraph "业务流程" A[科室类型] --> B[指标模板] B --> C[绩效考核] C --> D[工资核算] end subgraph "状态管理" E[员工状态] --> F[考核状态] F --> G[计划状态] end subgraph "系统集成" H[菜单类型] --> I[权限控制] I --> J[界面展示] end B --> F C --> G D --> G ``` **图表来源** - [models.py](file://backend/app/models/models.py#L62-L438) - [template_service.py](file://backend/app/services/template_service.py#L270-L293) **章节来源** - [002_template.py](file://backend/alembic/versions/002_template.py#L65-L95) - [template_service.py](file://backend/app/services/template_service.py#L270-L293) ## 性能考虑 ### 枚举类型性能优化 1. **数据库索引优化** - 科室类型:departments.dept_type - 员工状态:staff.status - 考核状态:assessments.status - 指标类型:indicators.indicator_type 2. **查询性能** - 使用枚举值进行精确匹配优于字符串模糊查询 - 合理利用数据库索引提高查询效率 - 避免在 WHERE 子句中进行枚举值转换 3. **内存使用** - 枚举类型占用固定内存空间 - 避免频繁创建新的枚举实例 - 使用枚举缓存机制减少重复创建 ## 故障排除指南 ### 常见问题及解决方案 **问题1:枚举值不一致** - 症状:数据库中存储的枚举值与代码定义不匹配 - 解决方案:检查 Alembic 迁移文件,确保数据库字段类型正确 **问题2:状态流转异常** - 症状:考核状态无法正常转换 - 解决方案:验证状态转换规则,检查业务逻辑实现 **问题3:模板应用错误** - 症状:指标模板不适用于特定科室类型 - 解决方案:检查 applicable_dept_types 字段配置 **问题4:权限控制失效** - 症状:菜单权限不生效 - 解决方案:验证 MenuType 和权限标识配置 **章节来源** - [models.py](file://backend/app/models/models.py#L16-L438) - [template_service.py](file://backend/app/services/template_service.py#L270-L293) ## 结论 本系统通过标准化的枚举类型设计,实现了以下目标: 1. **业务一致性**:统一的枚举定义确保各模块间业务逻辑的一致性 2. **可维护性**:集中化的枚举管理便于后续扩展和维护 3. **可扩展性**:清晰的枚举层次结构支持业务需求变化 4. **数据完整性**:数据库层面的约束保证数据质量 建议在后续开发中: - 定期审查和更新枚举定义 - 建立枚举变更的审批流程 - 完善枚举值的业务文档 - 加强枚举类型的单元测试