diff --git a/docs/event-registry.md b/docs/event-registry.md new file mode 100644 index 0000000..84d31fc --- /dev/null +++ b/docs/event-registry.md @@ -0,0 +1,131 @@ +# 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 | + +### 医生管理 + +| 事件类型 | 发布者 | 消费者 | 状态 | +|---------|--------|--------|------| +| `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 |