# 基础数据管理 **本文档引用的文件** - [models.py](file://backend/app/models/models.py) - [schemas.py](file://backend/app/schemas/schemas.py) - [departments.py](file://backend/app/api/v1/departments.py) - [staff.py](file://backend/app/api/v1/staff.py) - [indicators.py](file://backend/app/api/v1/indicators.py) - [templates.py](file://backend/app/api/v1/templates.py) - [department_service.py](file://backend/app/services/department_service.py) - [staff_service.py](file://backend/app/services/staff_service.py) - [indicator_service.py](file://backend/app/services/indicator_service.py) - [template_service.py](file://backend/app/services/template_service.py) - [Departments.vue](file://frontend/src/views/basic/Departments.vue) - [Staff.vue](file://frontend/src/views/basic/Staff.vue) - [Indicators.vue](file://frontend/src/views/basic/Indicators.vue) - [Templates.vue](file://frontend/src/views/basic/Templates.vue) - [department.js](file://frontend/src/api/department.js) - [staff.js](file://frontend/src/api/staff.js) - [indicator.js](file://frontend/src/api/indicator.js) - [template.js](file://frontend/src/api/template.js) ## 目录 1. [简介](#简介) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构概览](#架构概览) 5. [详细组件分析](#详细组件分析) 6. [依赖关系分析](#依赖关系分析) 7. [性能考虑](#性能考虑) 8. [故障排除指南](#故障排除指南) 9. [结论](#结论) ## 简介 基础数据管理模块是医院绩效系统的核心基础功能模块,负责维护医院运营所需的基础数据。该模块涵盖四个主要功能领域: - **科室管理**:支持树形结构组织,实现多层级科室管理 - **员工信息管理**:维护员工基本信息、职位、职称和薪资数据 - **考核指标管理**:管理各类绩效考核指标及其属性 - **指标模板管理**:提供标准化的指标模板体系 该模块采用前后端分离架构,后端使用FastAPI + SQLAlchemy,前端使用Vue.js + Element Plus,实现了完整的CRUD操作、数据验证、权限控制和批量处理功能。 ## 项目结构 基础数据管理模块遵循典型的三层架构设计: ```mermaid graph TB subgraph "前端层" FE1[Departments.vue
科室管理界面] FE2[Staff.vue
员工管理界面] FE3[Indicators.vue
指标管理界面] FE4[Templates.vue
模板管理界面] FE5[API层
department.js
staff.js
indicator.js
template.js] end subgraph "后端层" BE1[API路由层
departments.py
staff.py
indicators.py
templates.py] BE2[服务层
department_service.py
staff_service.py
indicator_service.py
template_service.py] BE3[数据模型层
models.py] BE4[数据验证层
schemas.py] end subgraph "数据库层" DB[(SQLite数据库)] end FE1 --> FE5 FE2 --> FE5 FE3 --> FE5 FE4 --> FE5 FE5 --> BE1 BE1 --> BE2 BE2 --> BE3 BE3 --> BE4 BE3 --> DB ``` **图表来源** - [Departments.vue](file://frontend/src/views/basic/Departments.vue#L1-L290) - [staff.py](file://backend/app/api/v1/staff.py#L1-L124) - [models.py](file://backend/app/models/models.py#L1-L438) **章节来源** - [models.py](file://backend/app/models/models.py#L1-L438) - [schemas.py](file://backend/app/schemas/schemas.py#L1-L743) ## 核心组件 ### 数据模型设计 系统采用SQLAlchemy ORM设计,建立了完整的数据模型层次: ```mermaid classDiagram class Department { +int id +string name +string code +DeptType dept_type +int parent_id +int level +int sort_order +bool is_active +DateTime created_at +DateTime updated_at +Staff[] staff +Department parent +Department[] children } class Staff { +int id +string employee_id +string name +int department_id +string position +string title +string phone +string email +float base_salary +float performance_ratio +StaffStatus status +DateTime hire_date +DateTime created_at +DateTime updated_at +Department department +Assessment[] assessments +SalaryRecord[] salary_records } class Indicator { +int id +string name +string code +IndicatorType indicator_type +BSCDimension bs_dimension +float weight +float max_score +float target_value +string target_unit +string calculation_method +string assessment_method +string deduction_standard +string data_source +string applicable_dept_types +bool is_veto +bool is_active +DateTime created_at +DateTime updated_at +AssessmentDetail[] assessment_details } class IndicatorTemplate { +int id +string template_name +string template_code +TemplateType template_type +string description +string dimension_weights +string assessment_cycle +bool is_active +DateTime created_at +DateTime updated_at +TemplateIndicator[] indicators } class TemplateIndicator { +int id +int template_id +int indicator_id +string category +float target_value +string target_unit +float weight +string scoring_method +string scoring_params +int sort_order +string remark +DateTime created_at +DateTime updated_at +IndicatorTemplate template +Indicator indicator } Department "1" <-- "many" Staff : "has" Department "1" <-- "many" Department : "parent" IndicatorTemplate "1" <-- "many" TemplateIndicator : "contains" TemplateIndicator "1" <-- "1" Indicator : "references" ``` **图表来源** - [models.py](file://backend/app/models/models.py#L62-L438) ### API接口设计 系统提供了RESTful API接口,支持标准的CRUD操作: | 功能模块 | HTTP方法 | 端点 | 描述 | |---------|---------|------|------| | 科室管理 | GET | `/departments` | 获取科室列表 | | 科室管理 | GET | `/departments/tree` | 获取科室树形结构 | | 科室管理 | GET | `/departments/{id}` | 获取科室详情 | | 科室管理 | POST | `/departments` | 创建科室 | | 科室管理 | PUT | `/departments/{id}` | 更新科室 | | 科室管理 | DELETE | `/departments/{id}` | 删除科室 | | 员工管理 | GET | `/staff` | 获取员工列表 | | 员工管理 | GET | `/staff/{id}` | 获取员工详情 | | 员工管理 | POST | `/staff` | 创建员工 | | 员工管理 | PUT | `/staff/{id}` | 更新员工 | | 员工管理 | DELETE | `/staff/{id}` | 删除员工 | | 员工管理 | GET | `/staff/department/{id}` | 获取科室员工 | | 指标管理 | GET | `/indicators` | 获取指标列表 | | 指标管理 | GET | `/indicators/active` | 获取启用指标 | | 指标管理 | GET | `/indicators/{id}` | 获取指标详情 | | 指标管理 | POST | `/indicators` | 创建指标 | | 指标管理 | PUT | `/indicators/{id}` | 更新指标 | | 指标管理 | DELETE | `/indicators/{id}` | 删除指标 | | 模板管理 | GET | `/templates` | 获取模板列表 | | 模板管理 | GET | `/templates/types` | 获取模板类型 | | 模板管理 | GET | `/templates/dimensions` | 获取BSC维度 | | 模板管理 | GET | `/templates/{id}` | 获取模板详情 | | 模板管理 | POST | `/templates` | 创建模板 | | 模板管理 | PUT | `/templates/{id}` | 更新模板 | | 模板管理 | DELETE | `/templates/{id}` | 删除模板 | **章节来源** - [departments.py](file://backend/app/api/v1/departments.py#L1-L108) - [staff.py](file://backend/app/api/v1/staff.py#L1-L124) - [indicators.py](file://backend/app/api/v1/indicators.py#L1-L142) - [templates.py](file://backend/app/api/v1/templates.py#L1-L272) ## 架构概览 系统采用分层架构设计,确保了良好的可维护性和扩展性: ```mermaid sequenceDiagram participant Client as "前端客户端" participant API as "API路由层" participant Service as "服务层" participant Model as "数据模型层" participant DB as "数据库" Client->>API : HTTP请求 API->>Service : 调用业务逻辑 Service->>Model : 数据映射和验证 Model->>DB : SQL查询/操作 DB-->>Model : 查询结果 Model-->>Service : 处理后的数据 Service-->>API : 业务结果 API-->>Client : JSON响应 Note over Client,DB : 请求处理完整流程 ``` **图表来源** - [department_service.py](file://backend/app/services/department_service.py#L13-L150) - [staff_service.py](file://backend/app/services/staff_service.py#L13-L112) ### 权限控制机制 系统实现了基于角色的权限控制: ```mermaid flowchart TD A[用户访问] --> B{检查权限} B --> |普通用户| C[仅读取权限] B --> |管理员| D[完全权限] B --> |经理| E[部分写权限] C --> F[只允许GET操作] D --> G[允许所有操作] E --> H[允许CRUD操作] F --> I[返回数据] G --> I H --> I ``` **图表来源** - [departments.py](file://backend/app/api/v1/departments.py#L67-L107) - [staff.py](file://backend/app/api/v1/staff.py#L68-L108) - [indicators.py](file://backend/app/api/v1/indicators.py#L71-L111) - [templates.py](file://backend/app/api/v1/templates.py#L129-L169) ## 详细组件分析 ### 科室管理组件 #### 数据模型分析 科室管理采用自引用关系实现树形结构: ```mermaid erDiagram DEPARTMENTS { int id PK string name string code UK enum dept_type int parent_id FK int level int sort_order bool is_active text description datetime created_at datetime updated_at } DEPARTMENTS }o--|| DEPARTMENTS : "parent" DEPARTMENTS ||--o{ STAFF : "has" ``` **图表来源** - [models.py](file://backend/app/models/models.py#L62-L85) #### 树形结构算法 系统实现了高效的树形结构构建算法: ```mermaid flowchart TD A[获取所有科室] --> B[构建ID到对象映射] B --> C[遍历科室列表] C --> D{检查是否有父节点} D --> |是| E[将当前节点添加到父节点children] D --> |否| F[添加到根节点列表] E --> G[继续下一个科室] F --> G G --> H[返回根节点树形结构] ``` **图表来源** - [department_service.py](file://backend/app/services/department_service.py#L112-L150) #### 前端界面设计 前端采用Element Plus组件实现: - **搜索功能**:支持按名称、编码、类型搜索 - **树形选择器**:用于上级科室选择 - **状态切换**:支持启用/禁用切换 - **分页显示**:支持大数据量分页 **章节来源** - [Departments.vue](file://frontend/src/views/basic/Departments.vue#L1-L290) - [department.js](file://frontend/src/api/department.js#L1-L32) ### 员工信息管理组件 #### 数据模型设计 员工信息管理涵盖了完整的员工档案: ```mermaid erDiagram STAFF { int id PK string employee_id UK string name int department_id FK string position string title string phone string email decimal base_salary decimal performance_ratio enum status datetime hire_date datetime created_at datetime updated_at } DEPARTMENTS ||--o{ STAFF : "belongs_to" STAFF ||--o{ ASSESSMENTS : "creates" STAFF ||--o{ SALARY_RECORDS : "has" ``` **图表来源** - [models.py](file://backend/app/models/models.py#L88-L114) #### 数据验证规则 系统实现了严格的数据验证: - **工号唯一性**:防止重复工号 - **基本工资范围**:0-∞ - **绩效系数范围**:0-5 - **状态枚举**:只能是预定义值 **章节来源** - [Staff.vue](file://frontend/src/views/basic/Staff.vue#L1-L313) - [staff.js](file://frontend/src/api/staff.js#L1-L32) ### 考核指标管理组件 #### 指标类型体系 系统支持多种类型的考核指标: | 指标类型 | 描述 | 权重范围 | 最高分值范围 | |---------|------|----------|-------------| | 质量指标 | 医疗质量相关 | 0.1-10 | 0-1000 | | 数量指标 | 工作量相关 | 0.1-10 | 0-1000 | | 效率指标 | 工作效率相关 | 0.1-10 | 0-1000 | | 服务指标 | 服务质量相关 | 0.1-10 | 0-1000 | | 成本指标 | 成本控制相关 | 0.1-10 | 0-1000 | #### BSC维度设计 平衡计分卡四个维度: - **财务维度**:财务管理 (30%-40%) - **客户维度**:顾客服务 (25%-35%) - **内部流程维度**:内部流程 (20%-30%) - **学习与成长维度**:学习与成长 (5%-15%) **章节来源** - [Indicators.vue](file://frontend/src/views/basic/Indicators.vue#L1-L296) - [indicator.js](file://frontend/src/api/indicator.js#L1-L32) ### 指标模板管理组件 #### 模板类型体系 系统提供多种科室类型的标准化模板: | 模板类型 | 适用科室 | 特点 | |---------|---------|------| | 通用模板 | 全院通用 | 基础通用指标 | | 手术临床科室 | 外科系统 | 手术相关指标 | | 非手术有病房科室 | 内科系统 | 病房管理指标 | | 非手术无病房科室 | 门诊科室 | 门诊服务指标 | | 医技科室 | 检验、放射等 | 医技服务指标 | | 护理单元 | 护理部门 | 护理质量指标 | | 行政科室 | 后勤、财务等 | 行政管理指标 | | 后勤科室 | 总务、采购等 | 后勤保障指标 | #### 模板指标管理 模板采用多对多关系管理: ```mermaid erDiagram INDICATOR_TEMPLATES { int id PK string template_name string template_code UK enum template_type string description string dimension_weights string assessment_cycle bool is_active datetime created_at datetime updated_at } TEMPLATE_INDICATORS { int id PK int template_id FK int indicator_id FK string category decimal target_value string target_unit decimal weight string scoring_method text scoring_params int sort_order text remark datetime created_at datetime updated_at } INDICATORS { int id PK string name string code UK enum indicator_type enum bs_dimension decimal weight decimal max_score decimal target_value string target_unit text calculation_method text assessment_method text deduction_standard string data_source string applicable_dept_types bool is_veto bool is_active datetime created_at datetime updated_at } INDICATOR_TEMPLATES ||--o{ TEMPLATE_INDICATORS : "contains" INDICATORS ||--o{ TEMPLATE_INDICATORS : "references" ``` **图表来源** - [models.py](file://backend/app/models/models.py#L387-L438) **章节来源** - [Templates.vue](file://frontend/src/views/basic/Templates.vue#L1-L638) - [template.js](file://frontend/src/api/template.js#L1-L62) ## 依赖关系分析 系统采用了清晰的依赖层次结构: ```mermaid graph TB subgraph "外部依赖" D1[FastAPI] D2[SQLAlchemy] D3[Element Plus] D4[Vue.js] end subgraph "后端核心" C1[models.py] C2[schemas.py] C3[department_service.py] C4[staff_service.py] C5[indicator_service.py] C6[template_service.py] end subgraph "前端核心" F1[Departments.vue] F2[Staff.vue] F3[Indicators.vue] F4[Templates.vue] F5[department.js] F6[staff.js] F7[indicator.js] F8[template.js] end D1 --> C1 D2 --> C1 D3 --> F1 D4 --> F1 C1 --> C2 C3 --> C1 C4 --> C1 C5 --> C1 C6 --> C1 F5 --> D1 F6 --> D1 F7 --> D1 F8 --> D1 F1 --> F5 F2 --> F6 F3 --> F7 F4 --> F8 ``` **图表来源** - [models.py](file://backend/app/models/models.py#L1-L13) - [schemas.py](file://backend/app/schemas/schemas.py#L1-L8) ### 数据一致性保证 系统通过多种机制确保数据一致性: 1. **数据库约束**:唯一性约束、外键约束 2. **业务逻辑验证**:服务层数据验证 3. **事务处理**:关键操作的事务保证 4. **级联删除**:模板删除时自动清理关联数据 **章节来源** - [models.py](file://backend/app/models/models.py#L82-L85) - [models.py](file://backend/app/models/models.py#L143-L146) ## 性能考虑 ### 查询优化策略 1. **索引设计**:为常用查询字段建立索引 2. **分页查询**:默认每页20条记录 3. **批量操作**:支持批量添加模板指标 4. **缓存策略**:模板类型和维度数据缓存 ### 前端性能优化 1. **虚拟滚动**:大量数据时使用虚拟滚动 2. **懒加载**:树形组件懒加载 3. **防抖搜索**:搜索框输入防抖 4. **组件复用**:表单组件复用 ## 故障排除指南 ### 常见问题及解决方案 | 问题类型 | 症状 | 原因 | 解决方案 | |---------|------|------|---------| | 数据重复 | 创建失败,提示已存在 | 唯一性约束冲突 | 检查编码或名称唯一性 | | 权限不足 | 操作被拒绝 | 角色权限限制 | 提升用户角色或联系管理员 | | 外键约束 | 删除失败 | 存在外键引用 | 先删除子数据再删除父数据 | | 数据验证 | 提交失败 | 字段格式不正确 | 检查必填字段和格式要求 | ### 错误处理机制 系统实现了完善的错误处理: ```mermaid flowchart TD A[请求到达] --> B{数据验证} B --> |通过| C[业务处理] B --> |失败| D[返回400错误] C --> E{业务逻辑} E --> |成功| F[返回200成功] E --> |失败| G[返回500错误] D --> H[错误详情] F --> I[成功详情] G --> H H --> J[日志记录] I --> J ``` **图表来源** - [departments.py](file://backend/app/api/v1/departments.py#L74-L77) - [staff.py](file://backend/app/api/v1/staff.py#L75-L78) **章节来源** - [departments.py](file://backend/app/api/v1/departments.py#L1-L108) - [staff.py](file://backend/app/api/v1/staff.py#L1-L124) ## 结论 基础数据管理模块为医院绩效系统提供了坚实的数据基础。通过合理的架构设计、完善的数据模型和严格的权限控制,系统能够有效支撑医院的绩效管理工作。 ### 主要优势 1. **模块化设计**:清晰的功能划分和职责分离 2. **数据完整性**:完善的约束和验证机制 3. **用户体验**:直观的界面和流畅的操作体验 4. **扩展性强**:灵活的模板系统支持定制化需求 5. **性能稳定**:合理的优化策略确保系统稳定性 ### 发展建议 1. **增加审计日志**:记录所有数据变更历史 2. **完善权限粒度**:支持更细粒度的权限控制 3. **增强数据导入**:支持Excel批量导入功能 4. **优化移动端**:适配移动设备访问需求 5. **扩展统计分析**:增加更多维度的统计报表 该模块的成功实现为整个医院绩效系统的稳定运行奠定了重要基础,为后续功能扩展提供了良好的技术支撑。