Files
his/MD/architecture/DATA_FLOW_DETAILED_DESIGN.md
chenqi 11f92ebc42 feat(pharmacy): 添加药房配药模块核心功能
- 新增租户配置工具类TenantOptionUtil,支持租户配置项获取及临时兼容方案
- 实现药房共通服务PharmacyDispensaryCommonService,提供初始化、药品查询、分页等功能
- 开发药房发药单服务PharmacyDispensaryDispensingOrderService,支持发药单详情及编辑操作
- 创建药房损益单服务PharmacyDispensaryProfitLossOrderService,处理损益单业务逻辑
- 构建药房请领单服务PharmacyDispensaryRequisitionOrderService,请领流程管理
- 设计药房退库单服务PharmacyDispensaryReturnToWarehouseOrderService,退库业务处理
2026-06-21 04:35:27 +08:00

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