13 KiB
考核指标模型
**本文档引用的文件** - [models.py](file://backend/app/models/models.py) - [schemas.py](file://backend/app/schemas/schemas.py) - [indicators.py](file://backend/app/api/v1/indicators.py) - [indicator_service.py](file://backend/app/services/indicator_service.py) - [assessment_service.py](file://backend/app/services/assessment_service.py) - [001_initial.py](file://backend/alembic/versions/001_initial.py) - [002_template.py](file://backend/alembic/versions/002_template.py) - [init_indicator_templates.py](file://backend/init_indicator_templates.py) - [详细设计文档.md](file://docs/详细设计文档.md)目录
简介
本文件详细阐述了医院绩效系统中的考核指标模型设计与实现。该模型基于平衡计分卡理论,支持财务、客户、内部流程、学习与成长四个维度,涵盖质量、数量、效率、服务、成本等多种指标类型。系统通过明确的权重管理、评分规则和数据源管理,实现了科学、规范的绩效考核体系。
项目结构
后端采用分层架构设计,主要包含以下层次:
graph TB
subgraph "表现层"
API[API路由层]
end
subgraph "服务层"
IndicatorService[指标服务层]
AssessmentService[考核服务层]
end
subgraph "模型层"
Indicator[指标模型]
Assessment[考核记录模型]
AssessmentDetail[考核明细模型]
IndicatorTemplate[指标模板模型]
TemplateIndicator[模板指标关联模型]
end
subgraph "数据层"
Database[(数据库)]
end
API --> IndicatorService
API --> AssessmentService
IndicatorService --> Indicator
AssessmentService --> Assessment
AssessmentService --> AssessmentDetail
Indicator --> AssessmentDetail
IndicatorTemplate --> TemplateIndicator
Indicator --> Database
Assessment --> Database
AssessmentDetail --> Database
IndicatorTemplate --> Database
TemplateIndicator --> Database
图表来源
章节来源
核心组件
指标类型枚举 (IndicatorType)
系统定义了五种核心指标类型,每种类型都有明确的业务含义和适用场景:
classDiagram
class IndicatorType {
<<enumeration>>
+quality
+quantity
+efficiency
+service
+cost
}
class BSCDimension {
<<enumeration>>
+financial
+customer
+internal_process
+learning_growth
}
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
}
Indicator --> IndicatorType : uses
Indicator --> BSCDimension : uses
图表来源
权重管理机制
权重是指标体系的核心要素,系统通过以下机制确保权重的合理分配:
- 权重范围约束:权重必须大于0,确保每个指标都有实际意义
- 加权得分计算:在考核过程中,加权得分 = 指标得分 × 指标权重
- 模板权重继承:从指标模板中继承权重设置,支持批量配置
章节来源
架构概览
系统采用MVC架构模式,通过清晰的职责分离实现高效的数据处理:
sequenceDiagram
participant Client as 客户端
participant API as API路由
participant Service as 服务层
participant Model as 模型层
participant DB as 数据库
Client->>API : GET /indicators
API->>Service : get_list()
Service->>Model : 查询指标列表
Model->>DB : 执行SQL查询
DB-->>Model : 返回查询结果
Model-->>Service : 返回指标对象
Service-->>API : 返回指标数据
API-->>Client : JSON响应
Note over Client,DB : 数据持久化通过ORM映射
图表来源
详细组件分析
指标模型设计
指标模型是整个系统的核心,包含了完整的考核指标定义:
核心字段设计
| 字段名 | 类型 | 描述 | 约束条件 |
|---|---|---|---|
| id | Integer | 主键标识 | 自增 |
| name | String | 指标名称 | 非空,最大100字符 |
| code | String | 指标编码 | 唯一,非空,最大20字符 |
| indicator_type | Enum | 指标类型 | 非空,枚举类型 |
| bs_dimension | Enum | BSC维度 | 非空,枚举类型 |
| weight | Numeric | 权重 | 默认1.0,>0 |
| max_score | Numeric | 最高分值 | 默认100.0 |
| target_value | Numeric | 目标值 | 可选 |
| target_unit | String | 目标值单位 | 可选,最大50字符 |
| calculation_method | Text | 计算方法 | 可选 |
| assessment_method | Text | 考核方法 | 可选 |
| deduction_standard | Text | 扣分标准 | 可选 |
| data_source | String | 数据来源 | 可选,最大100字符 |
| applicable_dept_types | Text | 适用科室类型 | JSON数组 |
| is_veto | Boolean | 一票否决标志 | 默认False |
| is_active | Boolean | 启用状态 | 默认True |
适用科室类型过滤
系统通过JSON格式存储适用科室类型,支持灵活的科室匹配:
flowchart TD
Start([开始筛选]) --> GetDeptTypes["获取指标适用科室类型<br/>JSON数组"]
GetDeptTypes --> ParseJSON["解析JSON字符串"]
ParseJSON --> CompareDept{"匹配当前科室类型?"}
CompareDept --> |是| Include["包含在适用范围内"]
CompareDept --> |否| Exclude["排除在适用范围外"]
Include --> End([结束])
Exclude --> End
图表来源
章节来源
一票否决指标处理
一票否决是系统的重要风控机制,具有以下特点:
特殊处理逻辑
flowchart TD
Start([开始处理指标]) --> CheckVeto{"是否为一票否决指标?"}
CheckVeto --> |否| NormalCalc["正常评分计算"]
CheckVeto --> |是| VetoCheck["检查否决条件"]
VetoCheck --> VetoTrigger{"否决条件触发?"}
VetoTrigger --> |是| ZeroScore["直接得分为0分"]
VetoTrigger --> |否| NormalCalc
NormalCalc --> End([结束])
ZeroScore --> End
图表来源
实际应用场景
在临床手术科室的院感控制指标中,系统设置了"院感控制达标率"作为一票否决指标,确保医疗安全底线。
章节来源
计算方法与考核方法的区别
系统明确区分了两种不同的指标处理方式:
计算方法 (Calculation Method)
- 定义:用于计算实际值的具体公式或方法
- 用途:从原始数据中提取和计算指标的实际数值
- 示例:
(本期收入 - 同期收入)/同期收入 × 100%
考核方法 (Assessment Method)
- 定义:用于验证和确认指标结果的检查方法
- 用途:提供数据验证和审计依据
- 示例:统计报表、现场核查、问卷调查
章节来源
指标与模板的关系
系统实现了指标与模板的多对多关系,支持灵活的指标配置:
erDiagram
INDICATORS {
int id PK
string code UK
string name
enum indicator_type
enum bs_dimension
numeric weight
numeric max_score
bool is_active
}
INDICATOR_TEMPLATES {
int id PK
string template_code UK
string template_name
enum template_type
bool is_active
}
TEMPLATE_INDICATORS {
int id PK
int template_id FK
int indicator_id FK
string category
numeric target_value
string target_unit
numeric weight
string scoring_method
text scoring_params
int sort_order
}
INDICATORS ||--o{ TEMPLATE_INDICATORS : "被包含"
INDICATOR_TEMPLATES ||--o{ TEMPLATE_INDICATORS : "包含"
图表来源
章节来源
指标与考核明细的一对多关系
每个指标可以对应多个考核记录,形成完整的历史追踪:
classDiagram
class Indicator {
+int id
+string code
+string name
+AssessmentDetail[] assessment_details
}
class AssessmentDetail {
+int id
+int assessment_id
+int indicator_id
+float actual_value
+float score
+string evidence
+string remark
}
class Assessment {
+int id
+int staff_id
+int period_year
+int period_month
+float total_score
+float weighted_score
+AssessmentDetail[] details
}
Indicator "1" --> "0..*" AssessmentDetail : "被考核"
Assessment "1" --> "0..*" AssessmentDetail : "包含"
AssessmentDetail --> Indicator : "关联"
AssessmentDetail --> Assessment : "属于"
图表来源
章节来源
依赖关系分析
系统通过清晰的依赖关系实现模块化设计:
graph TD
subgraph "外部依赖"
SQLAlchemy[SQLAlchemy ORM]
FastAPI[FastAPI框架]
Pydantic[Pydantic验证]
end
subgraph "内部模块"
Models[数据模型]
Schemas[数据模式]
Services[业务服务]
API[API路由]
end
SQLAlchemy --> Models
FastAPI --> API
Pydantic --> Schemas
Models --> Services
Schemas --> Services
Services --> API
Models --> API
Schemas --> API
图表来源
章节来源
性能考虑
系统在设计时充分考虑了性能优化:
数据库索引策略
- 指标类型索引:加速指标类型的查询和筛选
- 权重约束:确保数据完整性的同时维护性能
- 多字段复合索引:优化复杂查询场景
缓存策略
- 指标列表缓存:减少频繁的数据库查询
- 模板数据缓存:提升模板导入和使用的响应速度
异步处理
- 使用异步数据库连接:提高并发处理能力
- 异步服务调用:避免阻塞操作影响整体性能
故障排除指南
常见问题及解决方案
指标编码重复错误
问题描述:创建指标时提示编码已存在 解决方法:检查指标编码的唯一性,确保每个编码在整个系统中唯一
权重值异常
问题描述:权重值小于等于0导致计算异常 解决方法:确保权重值大于0,系统已通过数据库约束保证数据完整性
一票否决触发
问题描述:某些情况下指标得分为0分 解决方法:检查一票否决条件的触发逻辑,确认是否符合预设的标准
章节来源
结论
考核指标模型通过精心设计的架构和完善的约束机制,为医院绩效管理提供了坚实的技术基础。系统不仅支持灵活的指标配置和权重管理,还通过一票否决机制确保关键指标的严格执行。多对多关系的设计使得指标模板能够灵活复用,而清晰的计算方法与考核方法区分则保证了数据处理的准确性。
该模型的成功实施将有助于医院建立科学、公正、透明的绩效考核体系,为提升医疗质量和患者满意度提供有力支撑。