Files
2026-02-28 15:16:15 +08:00

13 KiB
Raw Permalink Blame History

项目概述

**本文引用的文件** - [README.md](file://README.md) - [docs/index.md](file://docs/index.md) - [docs/详细设计.md](file://docs/详细设计.md) - [backend/app/main.py](file://backend/app/main.py) - [backend/app/api/v1/__init__.py](file://backend/app/api/v1/__init__.py) - [backend/app/core/config.py](file://backend/app/core/config.py) - [backend/app/models/models.py](file://backend/app/models/models.py) - [backend/app/api/v1/assessments.py](file://backend/app/api/v1/assessments.py) - [backend/app/services/assessment_service.py](file://backend/app/services/assessment_service.py) - [backend/app/api/v1/performance_plans.py](file://backend/app/api/v1/performance_plans.py) - [backend/app/services/indicator_service.py](file://backend/app/services/indicator_service.py) - [frontend/src/main.js](file://frontend/src/main.js) - [frontend/package.json](file://frontend/package.json)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本项目为县级中医院打造的“医院绩效管理系统”围绕平衡计分卡BSC理论构建覆盖财务、客户、内部流程、学习与成长四个维度的绩效管理体系。系统支持指标模板化、计划与考核流程化、工资核算自动化以及多维度统计分析旨在将医院战略目标逐级分解到科室与个人形成“目标—执行—考核—改进”的闭环管理提升运营效率、医疗质量与服务水平。

  • 适用场景:县级及以上公立中医院的全院级绩效管理,涵盖临床、医技、护理、行政、后勤等多科室类型。
  • 核心用户:院级管理者、科室主任、普通员工、绩效管理员、财务与人事相关人员。
  • 预期收益:统一指标口径、降低人工干预、提高考核透明度与效率、支撑绩效工资与晋升评优等结果应用。

章节来源

  • file://docs/index.md#L16-L26
  • file://docs/详细设计.md#L3-L17

项目结构

系统采用前后端分离架构,后端基于 FastAPI + SQLAlchemy 2.0 异步 ORM前端基于 Vue 3 + Element Plus数据库采用 PostgreSQL具备良好的扩展性与工程化能力。

graph TB
FE["前端应用<br/>Vue 3 + Element Plus"] --> API["后端API<br/>FastAPI + Uvicorn"]
API --> DB["数据库<br/>PostgreSQL 14+"]
API --> AUTH["认证与安全<br/>JWT + 权限控制"]
API --> SVC["业务服务层<br/>异步服务封装"]
SVC --> MODELS["数据模型<br/>SQLAlchemy ORM"]

图表来源

章节来源

  • file://docs/index.md#L27-L40
  • file://backend/app/main.py#L1-L92
  • file://backend/app/core/config.py#L1-L47
  • file://frontend/package.json#L11-L26

核心组件

  • 系统入口与路由聚合
    • 后端应用通过主程序创建 FastAPI 实例,注册跨域中间件与全局异常处理,并挂载 v1 版本 API 路由器。
    • API 路由器集中包含认证、部门、员工、指标、考核、工资、统计、财务、计划、菜单、模板等模块。
  • 数据模型与枚举
    • 定义了平衡计分卡维度枚举、科室类型、员工状态、考核状态、指标类型等,支撑多维度指标与流程控制。
  • 业务服务层
    • 提供指标、考核、绩效计划等核心业务的查询、创建、更新、流程推进等服务方法,保证数据一致性与事务边界。
  • 前端应用
    • 使用 Vue 3 Composition API、Element Plus UI、Pinia 状态管理、Vite 构建,提供登录、导航、视图与交互组件。

章节来源

  • file://backend/app/main.py#L15-L78
  • file://backend/app/api/v1/init.py#L1-L17
  • file://backend/app/models/models.py#L29-L61
  • file://frontend/src/main.js#L1-L24

架构总览

系统采用分层架构表现层负责用户交互应用层承载业务流程服务层封装数据访问与领域逻辑数据层持久化与外部系统集成。API 层统一对外提供 REST 接口,支持分页、过滤与鉴权。

graph TB
subgraph "表现层"
UI["Web门户/管理界面"]
end
subgraph "应用层"
AUTHM["认证模块"]
PLANM["计划管理模块"]
ASSESSM["考核管理模块"]
SALARYM["工资核算模块"]
STATSM["统计分析模块"]
end
subgraph "服务层"
SVCA["指标服务"]
SVCB["考核服务"]
SVCC["计划服务"]
end
subgraph "数据层"
MODELS["数据模型/ORM"]
DB["PostgreSQL"]
end
UI --> AUTHM
UI --> PLANM
UI --> ASSESSM
UI --> SALARYM
UI --> STATSM
AUTHM --> SVCA
PLANM --> SVCC
ASSESSM --> SVCB
SALARYM --> SVCB
STATSM --> SVCA
STATSM --> SVCB
STATSM --> SVCC
SVCA --> MODELS
SVCB --> MODELS
SVCC --> MODELS
MODELS --> DB

图表来源

详细组件分析

平衡计分卡BSC维度与指标体系

  • 四个维度映射
    • 财务维度:关注收入、成本、结余等财务指标,支撑资源投入与回报评估。
    • 客户维度:聚焦患者满意度、服务效率、医疗质量等,体现外部客户价值。
    • 内部流程维度:强调诊疗流程、院感控制、药品耗材管理等内部运营效率。
    • 学习与成长维度:关注人员培训、信息系统能力、科研教学等可持续发展能力。
  • 指标类型与模板
    • 指标类型包括质量、数量、效率、服务、成本等;系统内置多科室类型的指标模板,支持按模板导入与覆盖。
    • 指标包含维度、权重、目标值、计算方法、适用科室类型等元数据,支撑差异化考核。
classDiagram
class Indicator {
+名称
+编码
+指标类型
+平衡计分卡维度
+权重
+最高分值
+目标值
+计算方法
+适用科室类型
+是否一票否决
}
class IndicatorTemplate {
+模板名称
+模板编码
+模板类型
+维度权重
+考核周期
}
class TemplateIndicator {
+目标值
+权重
+评分方法
+排序
}
IndicatorTemplate "1" o-- "many" TemplateIndicator : "包含"
TemplateIndicator "many" --> "1" Indicator : "关联"

图表来源

章节来源

  • file://backend/app/models/models.py#L29-L61
  • file://backend/app/models/models.py#L117-L147
  • file://backend/app/models/models.py#L387-L438
  • file://backend/app/services/indicator_service.py#L157-L197

绩效计划管理(从战略到执行)

  • 功能要点
    • 支持医院级、科室级、个人级三层计划,明确年度/月度目标、关键举措与责任人。
    • 提供计划树形结构、统计信息、审批流程与版本管理。
  • 关键流程
    • 制定 → 上报 → 审批 → 发布 → 执行 → 跟踪 → 评估 → 调整。
sequenceDiagram
participant Admin as "管理员"
participant PlanAPI as "计划API"
participant PlanSvc as "计划服务"
participant DB as "数据库"
Admin->>PlanAPI : 创建/更新/提交计划
PlanAPI->>PlanSvc : 调用业务方法
PlanSvc->>DB : 写入计划与关联指标
DB-->>PlanSvc : 返回结果
PlanSvc-->>PlanAPI : 返回响应
PlanAPI-->>Admin : 成功/失败提示

图表来源

章节来源

  • file://docs/详细设计.md#L59-L68
  • file://backend/app/api/v1/performance_plans.py#L21-L96

绩效考核流程(草稿→提交→审核→确认)

  • 流程节点
    • 草稿:允许修改与保存。
    • 已提交:进入审核环节。
    • 已审核:等待最终确认。
    • 已确认:流程结束,可进入工资核算。
  • 关键接口
    • 列表查询、详情查看、创建、更新、提交、审核、确认、批量创建等。
stateDiagram-v2
[*] --> 草稿
草稿 --> 已提交 : "提交"
已提交 --> 已审核 : "审核通过"
已提交 --> 已驳回 : "审核驳回"
已审核 --> 已确认 : "确认"
已确认 --> [*]
已驳回 --> 草稿 : "修改后重新提交"

图表来源

章节来源

  • file://docs/详细设计.md#L111-L121
  • file://backend/app/api/v1/assessments.py#L20-L166
  • file://backend/app/services/assessment_service.py#L158-L200

薪酬核算与结果应用

  • 核算依据
    • 基于考核结果与绩效系数,结合基本工资、绩效得分、奖惩与补贴等要素,自动生成绩效工资。
  • 应用联动
    • 考核结果与职称晋升、评优评先、培训发展、岗位调整等人力资源决策联动。
flowchart TD
Start(["开始"]) --> LoadAssess["加载考核结果"]
LoadAssess --> CalcScore["计算绩效得分与加权分"]
CalcScore --> FetchRules["读取薪酬规则"]
FetchRules --> Compute["计算绩效奖金/扣款"]
Compute --> Approve["审批/确认"]
Approve --> Publish["发布工资记录"]
Publish --> End(["结束"])

图表来源

章节来源

  • file://docs/详细设计.md#L132-L144
  • file://backend/app/models/models.py#L205-L231

前端交互与用户体验

  • 技术栈
    • Vue 3 + Composition API、Element Plus UI 组件库、Pinia 状态管理、Axios 请求、Vite 构建。
  • 能力
    • 登录认证、路由导航、视图组件化、图表展示ECharts、国际化与主题样式。

章节来源

  • file://frontend/src/main.js#L1-L24
  • file://frontend/package.json#L11-L26

依赖分析

  • 后端依赖
    • FastAPI + Uvicorn高性能异步 Web 框架与 ASGI 服务器。
    • SQLAlchemy 2.0async异步 ORM支持 PostgreSQL。
    • Pydantic v2数据验证与序列化。
    • JWT用户认证与权限控制。
  • 前端依赖
    • Vue 3、Element Plus、Pinia、ECharts、Day.js、Axios、Vite。
graph LR
Backend["后端依赖"] --> FastAPI["FastAPI"]
Backend --> SQLA["SQLAlchemy 2.0(async)"]
Backend --> Postgres["PostgreSQL"]
Backend --> JWT["Pydantic/JWT"]
Frontend["前端依赖"] --> Vue["Vue 3"]
Frontend --> EP["Element Plus"]
Frontend --> Pinia["Pinia"]
Frontend --> ECharts["ECharts"]
Frontend --> Axios["Axios"]
Frontend --> Vite["Vite"]

图表来源

章节来源

  • file://docs/index.md#L27-L40
  • file://backend/app/core/config.py#L18-L26
  • file://frontend/package.json#L11-L26

性能考虑

  • 异步 I/O 与连接池
    • 使用异步 SQLAlchemy 与数据库连接池,提升并发与吞吐。
  • 查询优化
    • 模型层建立索引(如科室类型、状态、时间范围等),服务层使用分页与条件过滤,避免全表扫描。
  • 缓存与计算
    • 对高频指标与统计结果可引入 Redis 缓存,减少重复计算。
  • 前端性能
    • 组件懒加载、按需引入 UI 组件、图表按需渲染,降低首屏压力。

故障排查指南

  • 常见问题定位
    • API 异常:检查全局异常处理器日志,定位请求 URL、状态码与错误堆栈。
    • 数据库连接:确认数据库地址、端口、凭据与连接池配置。
    • 权限与认证:核对 JWT 密钥、过期时间与前端 Token 存储。
  • 日志与健康检查
    • 后端提供健康检查接口,前端可访问 API 文档与调试页面。
    • 查看应用日志与错误日志,定位业务异常与参数校验失败。

章节来源

  • file://backend/app/main.py#L58-L76
  • file://backend/app/core/config.py#L18-L33
  • file://docs/index.md#L48-L71

结论

本系统以平衡计分卡为核心理念,结合指标模板化、计划与考核流程化、薪酬自动化与多维分析,构建了覆盖全院的绩效管理体系。通过前后端分离与现代化技术栈,系统具备良好的可扩展性与工程化能力,能够有效支撑医院的战略落地与持续改进。

附录

  • 快速启动
    • 后端:安装依赖、复制环境变量示例、迁移数据库、启动服务。
    • 前端:安装依赖、启动开发服务器。
  • 访问地址
    • 前端:本地开发端口
    • API 文档Swagger UI

章节来源

  • file://docs/index.md#L41-L71