Files
hms/docs/event-registry.md

139 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HMS 事件注册表
> 生成日期: 2026-04-30 | 审计后状态
## 概述
所有模块间通信通过 EventBus + DomainEvent 实现outbox 模式)。本文档记录每个事件类型的发布者、消费者和当前状态。
### 状态标记
- OK: 发布者和消费者均正常
- FIRE-AND-FORGET: 发布者正常,消费者为日志记录(无业务逻辑)
- PENDING: 常量已定义但功能未实现
---
## 事件清单
### 预约管理
| 事件类型 | 发布者 | 消费者 | 状态 |
|---------|--------|--------|------|
| `appointment.created` | appointment_service.rs | erp-message (预约创建通知) | OK |
| `appointment.confirmed` | appointment_service.rs | erp-message (预约确认通知患者) | OK |
| `appointment.cancelled` | appointment_service.rs | erp-message (预约取消通知) | OK |
| `appointment.reminder` | appointment_service.rs (后台任务) | erp-message (预约提醒) | OK |
### 咨询管理
| 事件类型 | 发布者 | 消费者 | 状态 |
|---------|--------|--------|------|
| `consultation.opened` | consultation_service.rs | erp-message (医生新会话通知) | OK |
| `consultation.closed` | consultation_service.rs | erp-message (患者会话结束通知) | OK |
| `consultation.new_message` | consultation_service.rs | erp-message (医生新消息通知) | OK |
### 随访管理
| 事件类型 | 发布者 | 消费者 | 状态 |
|---------|--------|--------|------|
| `follow_up.created` | follow_up_service.rs | erp-message (被分配人新任务通知) | OK |
| `follow_up.completed` | follow_up_service.rs | erp-message (患者随访完成通知) | OK |
| `follow_up.overdue` | follow_up_service.rs (后台6h扫描) | erp-message (逾期提醒) | OK |
### 化验与健康数据
| 事件类型 | 发布者 | 消费者 | 状态 |
|---------|--------|--------|------|
| `lab_report.uploaded` | health_data_service.rs | erp-message (审计日志) | FIRE-AND-FORGET |
| `lab_report.reviewed` | health_data_service.rs | erp-message (患者审核完成通知) | OK |
| `health_data.critical_alert` | health_data_service.rs | erp-message (医生危急值通知) | OK |
| `daily_monitoring.created` | daily_monitoring_service.rs | erp-message (审计日志) | FIRE-AND-FORGET |
### 患者管理
| 事件类型 | 发布者 | 消费者 | 状态 |
|---------|--------|--------|------|
| `patient.created` | patient_service.rs | erp-health event.rs (欢迎通知) | OK |
| `patient.updated` | patient_service.rs | erp-message (审计日志) | FIRE-AND-FORGET |
| `patient.verified` | — (功能未实现) | — | PENDING |
| `patient.deceased` | — (功能未实现) | — | PENDING |
### 积分系统
| 事件类型 | 发布者 | 消费者 | 状态 |
|---------|--------|--------|------|
| `points.earned` | points_service.rs | erp-message (患者积分到账通知) | OK |
| `points.exchanged` | points_service.rs | erp-message (患者兑换成功通知) | OK |
| `points.expired` | points_service.rs (后台24h清理) | erp-message (患者过期提醒) | OK |
### 内容管理
| 事件类型 | 发布者 | 消费者 | 状态 |
|---------|--------|--------|------|
| `article.published` | article_service.rs | erp-message (审计日志) | FIRE-AND-FORGET |
| `article.rejected` | article_service.rs | erp-message (作者审核驳回通知) | OK |
### 知情同意
| 事件类型 | 发布者 | 消费者 | 状态 |
|---------|--------|--------|------|
| `consent.granted` | consent_service.rs | erp-health event.rs (审计) | OK |
| `consent.revoked` | consent_service.rs | erp-health event.rs (审计) | OK |
### 设备数据
| 事件类型 | 发布者 | 消费者 | 状态 |
|---------|--------|--------|------|
| `device.readings.synced` | device_reading_service.rs | erp-health event.rs (告警引擎评估) | OK |
### 告警系统
| 事件类型 | 发布者 | 消费者 | 状态 |
|---------|--------|--------|------|
| `alert.triggered` | alert_engine.rs | erp-health (告警通知) + alert_aggregator (聚合检测) | OK |
| `alert.aggregated` | alert_aggregator | SSE 推送 (聚合通知) | OK |
### 医生管理
| 事件类型 | 发布者 | 消费者 | 状态 |
|---------|--------|--------|------|
| `doctor.online_status_changed` | doctor_service.rs | erp-message (审计日志) | FIRE-AND-FORGET |
### AI 模块
| 事件类型 | 发布者 | 消费者 | 状态 |
|---------|--------|--------|------|
| `ai.analysis.completed` | erp-ai/handler | erp-health event.rs (透析统计联动) | OK |
| `ai.analysis.failed` | erp-ai/handler | erp-message (医生失败通知) | OK |
| `dialysis.record.created` | erp-dialysis/service | erp-health event.rs (透析统计) | OK |
### 基础设施事件(非健康模块)
| 事件类型 | 发布者 | 消费者 | 状态 |
|---------|--------|--------|------|
| `workflow.task.completed` | erp-workflow | erp-health event.rs | OK |
| `message.sent` | erp-message | erp-health event.rs (日志) | FIRE-AND-FORGET |
| `message.send` (内部命令) | erp-health event.rs | erp-message (消息发送触发) | OK |
---
## 统计
| 指标 | 数量 |
|------|------|
| 事件类型总数 | 28 |
| OK完整链路 | 20 |
| FIRE-AND-FORGET仅日志 | 6 |
| PENDING未实现 | 2 |
---
## 后台任务
| 任务 | 间隔 | 模块 | 说明 |
|------|------|------|------|
| 随访逾期扫描 | 6h | erp-health | 标记过期任务并发布 follow_up.overdue |
| 积分过期清理 | 24h | erp-health | 批量过期积分并发布 points.expired |
| 预约提醒 | 1h | erp-health | 扫描明天预约并发布 appointment.reminder |