- 新增租户配置工具类TenantOptionUtil,支持租户配置项获取及临时兼容方案 - 实现药房共通服务PharmacyDispensaryCommonService,提供初始化、药品查询、分页等功能 - 开发药房发药单服务PharmacyDispensaryDispensingOrderService,支持发药单详情及编辑操作 - 创建药房损益单服务PharmacyDispensaryProfitLossOrderService,处理损益单业务逻辑 - 构建药房请领单服务PharmacyDispensaryRequisitionOrderService,请领流程管理 - 设计药房退库单服务PharmacyDispensaryReturnToWarehouseOrderService,退库业务处理
9.8 KiB
9.8 KiB
HealthLink-HIS 数据流优化详细设计
文档类型: 详细设计 版本: v1.0 日期: 2026-06-19
一、数据流架构总览
┌─────────────────────────────────────────────────────────────────────┐
│ 数据流架构全景 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 事件驱动层 (Event Bus) │ │
│ │ RabbitMQ + Spring Event + WebSocket │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 诊断同步 │ │ 执行反馈 │ │ 计费触发 │ │ 危急推送 │ │
│ │ 事件 │ │ 事件 │ │ 事件 │ │ 事件 │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │ │
│ ┌────▼─────────────▼─────────────▼─────────────▼────────────┐ │
│ │ 业务处理层 │ │
│ │ 门诊 → 住院 → 护理 → 药品 → 检验 → 病案 → 统计 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 数据存储层 │ │
│ │ PostgreSQL (OLTP) + ClickHouse (OLAP) │ │
│ └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
二、7条关键链路详细设计
链路1: 门诊→住院诊断同步
业务流程
门诊诊断 → 入院申请 → 入院登记 → 自动复制诊断 → 住院病历
技术实现
| 组件 | 实现 |
|---|---|
| 触发时机 | 入院登记保存后 |
| 事件 | InpatientAdmissionEvent |
| 处理器 | DiagnosisSyncHandler |
| 数据流 | adm_encounter_diagnosis → 复制到住院encounter |
代码位置
- 事件发布:
InpatientManageAppServiceImpl.saveAdmission() - 事件处理:
DiagnosisSyncHandler.handleAdmissionEvent() - 数据复制:
EncounterDiagnosisService.copyFromOutpatient()
链路2: 医嘱→护理执行反馈
业务流程
医嘱开立 → 护士执行 → 执行结果 → 通知医生
技术实现
| 组件 | 实现 |
|---|---|
| 触发时机 | 护士执行医嘱后 |
| 事件 | OrderExecutionEvent |
| 处理器 | OrderExecutionFeedbackHandler |
| 通知方式 | WebSocket + 消息推送 |
代码位置
- 事件发布:
NursingExecutionController.executeOrder() - 事件处理:
OrderExecutionFeedbackHandler.handleExecutionEvent() - 通知推送:
MessageService.pushToDoctor()
链路3: 药品→发药自动计费
业务流程
处方开具 → 药品审核 → 发药确认 → 自动计费 → 库存更新
技术实现
| 组件 | 实现 |
|---|---|
| 触发时机 | 发药确认后 |
| 事件 | MedicationDispensedEvent |
| 处理器 | AutoBillingHandler |
| 计费逻辑 | 根据药品单价×数量生成费用记录 |
代码位置
- 事件发布:
PharmacyDispensaryService.dispense() - 事件处理:
AutoBillingHandler.handleDispensedEvent() - 计费生成:
ChargeService.createMedicationCharge()
链路4: 检验→危急值推送
业务流程
检验报告 → 危急值识别 → 推送通知 → 医生确认
技术实现
| 组件 | 实现 |
|---|---|
| 触发时机 | 检验报告发布时 |
| 事件 | LabReportPublishedEvent |
| 处理器 | CriticalValueHandler |
| 推送方式 | WebSocket + APP推送 |
代码位置
- 事件发布:
LabReportService.publishReport() - 事件处理:
CriticalValueHandler.handleReportEvent() - 推送:
MessageService.pushCriticalValue()
链路5: 病案→DRG自动入组
业务流程
出院小结 → 首页生成 → DRG入组 → 医保上传
技术实现
| 组件 | 实现 |
|---|---|
| 触发时机 | 出院结算后 |
| 事件 | DischargeCompletedEvent |
| 处理器 | DrgGroupingHandler |
| 入组逻辑 | 主诊断+主手术→DRG分组 |
代码位置
- 事件发布:
InpatientChargeService.discharge() - 事件处理:
DrgGroupingHandler.handleDischargeEvent() - DRG入组:
DrgGroupingService.group()
链路6: 护理→质控自动触发
业务流程
护理记录 → 质控规则匹配 → 质控评分 → 指标汇总
技术实现
| 组件 | 实现 |
|---|---|
| 触发时机 | 护理记录保存后 |
| 事件 | NursingRecordSavedEvent |
| 处理器 | NursingQualityHandler |
| 质控规则 | 基于护理文书规范的检查规则 |
代码位置
- 事件发布:
NursingRecordService.saveRecord() - 事件处理:
NursingQualityHandler.handleRecordEvent() - 指标汇总:
NursingQualityIndicatorService.aggDaily()
链路7: 统计→实时推送
业务流程
数据更新 → 统计计算 → WebSocket推送 → 前端刷新
技术实现
| 组件 | 实现 |
|---|---|
| 触发时机 | 关键业务操作后 |
| 事件 | 多种业务事件 |
| 处理器 | StatisticsPushHandler |
| 推送方式 | WebSocket |
代码位置
- 事件监听:
StatisticsPushHandler监听多种事件 - 统计计算:
StatisticsService.calculateRealtime() - 推送:
WebSocketService.pushToDashboard()
三、事件驱动架构设计
3.1 事件定义
// 业务事件基类
public abstract class BusinessEvent {
private String eventId;
private Date eventTime;
private String eventType;
private Long tenantId;
}
// 具体事件
public class InpatientAdmissionEvent extends BusinessEvent { ... }
public class OrderExecutionEvent extends BusinessEvent { ... }
public class MedicationDispensedEvent extends BusinessEvent { ... }
public class LabReportPublishedEvent extends BusinessEvent { ... }
public class DischargeCompletedEvent extends BusinessEvent { ... }
public class NursingRecordSavedEvent extends BusinessEvent { ... }
3.2 事件发布
// 在业务Service中发布事件
@Service
public class InpatientManageAppServiceImpl {
@Autowired
private ApplicationEventPublisher eventPublisher;
public void saveAdmission(InpatientAdmission admission) {
// 保存入院记录
admissionService.save(admission);
// 发布事件
eventPublisher.publishEvent(new InpatientAdmissionEvent(admission));
}
}
3.3 事件处理
// 事件处理器
@Component
public class DiagnosisSyncHandler {
@EventListener
public void handleAdmissionEvent(InpatientAdmissionEvent event) {
// 复制门诊诊断到住院
diagnosisService.copyFromOutpatient(event.getEncounterId());
}
}
四、实施计划
| 阶段 | 时间 | 链路 | 工时 |
|---|---|---|---|
| Phase 1 | Week 1 | 门诊→住院诊断同步 | 2天 |
| Phase 1 | Week 1 | 医嘱→护理执行反馈 | 2天 |
| Phase 1 | Week 2 | 药品→发药自动计费 | 2天 |
| Phase 1 | Week 2 | 检验→危急值推送 | 2天 |
| Phase 2 | Week 3 | 病案→DRG自动入组 | 3天 |
| Phase 2 | Week 3 | 护理→质控自动触发 | 2天 |
| Phase 2 | Week 4 | 统计→实时推送 | 3天 |
| 合计 | 4周 | 7条链路 | 14天 |
五、验证标准
| 链路 | 验证方式 | 通过标准 |
|---|---|---|
| 门诊→住院 | 创建住院→检查诊断 | 诊断自动复制 |
| 医嘱→护理 | 执行医嘱→检查通知 | 通知自动发送 |
| 药品→计费 | 发药→检查费用 | 费用自动记录 |
| 检验→危急值 | 发布报告→检查推送 | 推送自动发送 |
| 病案→DRG | 出院→检查入组 | DRG自动入组 |
| 护理→质控 | 保存记录→检查评分 | 评分自动计算 |
| 统计→推送 | 业务操作→检查推送 | 数据实时推送 |
文档版本: v1.0 | 最后更新: 2026-06-19