From 22e35ad2339a753033855bd737f72febcc178497 Mon Sep 17 00:00:00 2001 From: iven Date: Thu, 30 Apr 2026 08:35:32 +0800 Subject: [PATCH] =?UTF-8?q?docs(event):=20=E5=88=9B=E5=BB=BA=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E6=B3=A8=E5=86=8C=E8=A1=A8=E6=96=87=E6=A1=A3=20?= =?UTF-8?q?=E2=80=94=2028=20=E4=B8=AA=E4=BA=8B=E4=BB=B6=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=85=A8=E9=87=8F=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/event-registry.md | 131 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 docs/event-registry.md 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 |