提交文件
This commit is contained in:
469
.qoder/repowiki/zh/content/数据库设计/数据字典/枚举类型定义.md
Normal file
469
.qoder/repowiki/zh/content/数据库设计/数据字典/枚举类型定义.md
Normal file
@@ -0,0 +1,469 @@
|
||||
# 枚举类型定义
|
||||
|
||||
<cite>
|
||||
**本文档引用的文件**
|
||||
- [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)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构概览](#架构概览)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖分析](#依赖分析)
|
||||
7. [性能考虑](#性能考虑)
|
||||
8. [故障排除指南](#故障排除指南)
|
||||
9. [结论](#结论)
|
||||
|
||||
## 简介
|
||||
|
||||
本文档提供了医院绩效管理系统中所有枚举类型的完整数据字典。系统采用平衡计分卡(BSC)理论框架,通过标准化的枚举类型确保业务逻辑的一致性和可维护性。
|
||||
|
||||
该系统涵盖了从基础科室管理到复杂绩效考核的完整业务流程,所有关键业务状态和分类都通过精心设计的枚举类型来实现。
|
||||
|
||||
## 项目结构
|
||||
|
||||
系统采用分层架构设计,枚举类型分布在多个层次中:
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "数据模型层"
|
||||
A[models.py<br/>数据库模型枚举]
|
||||
end
|
||||
subgraph "API层"
|
||||
B[templates.py<br/>模板管理API]
|
||||
C[departments.py<br/>科室管理API]
|
||||
D[menus.py<br/>菜单管理API]
|
||||
end
|
||||
subgraph "服务层"
|
||||
E[template_service.py<br/>模板服务]
|
||||
F[department_service.py<br/>科室服务]
|
||||
G[menu_service.py<br/>菜单服务]
|
||||
end
|
||||
subgraph "脚本层"
|
||||
H[init_templates.py<br/>模板初始化]
|
||||
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. **数据完整性**:数据库层面的约束保证数据质量
|
||||
|
||||
建议在后续开发中:
|
||||
- 定期审查和更新枚举定义
|
||||
- 建立枚举变更的审批流程
|
||||
- 完善枚举值的业务文档
|
||||
- 加强枚举类型的单元测试
|
||||
Reference in New Issue
Block a user