13 KiB
13 KiB
项目概述
**本文引用的文件** - [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)目录
简介
本项目为县级中医院打造的“医院绩效管理系统”,围绕平衡计分卡(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
图表来源
- backend/app/api/v1/performance_plans.py
- backend/app/api/v1/assessments.py
- backend/app/services/assessment_service.py
- backend/app/models/models.py
详细组件分析
平衡计分卡(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.0(async):异步 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