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

13 KiB
Raw Permalink Blame History

考核指标模型

**本文档引用的文件** - [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)

目录

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

简介

本文件详细阐述了医院绩效系统中的考核指标模型设计与实现。该模型基于平衡计分卡理论,支持财务、客户、内部流程、学习与成长四个维度,涵盖质量、数量、效率、服务、成本等多种指标类型。系统通过明确的权重管理、评分规则和数据源管理,实现了科学、规范的绩效考核体系。

项目结构

后端采用分层架构设计,主要包含以下层次:

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

图表来源

权重管理机制

权重是指标体系的核心要素,系统通过以下机制确保权重的合理分配:

  1. 权重范围约束权重必须大于0确保每个指标都有实际意义
  2. 加权得分计算:在考核过程中,加权得分 = 指标得分 × 指标权重
  3. 模板权重继承:从指标模板中继承权重设置,支持批量配置

章节来源

架构概览

系统采用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分 解决方法:检查一票否决条件的触发逻辑,确认是否符合预设的标准

章节来源

结论

考核指标模型通过精心设计的架构和完善的约束机制,为医院绩效管理提供了坚实的技术基础。系统不仅支持灵活的指标配置和权重管理,还通过一票否决机制确保关键指标的严格执行。多对多关系的设计使得指标模板能够灵活复用,而清晰的计算方法与考核方法区分则保证了数据处理的准确性。

该模型的成功实施将有助于医院建立科学、公正、透明的绩效考核体系,为提升医疗质量和患者满意度提供有力支撑。