From 5cfe484015df3369dc3e92acdd5666c5cc36840b Mon Sep 17 00:00:00 2001 From: chenqi Date: Sat, 20 Jun 2026 21:25:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(dataflow):=20=E6=96=B0=E5=A2=9EChain8=20?= =?UTF-8?q?=E6=89=8B=E6=9C=AF=E2=86=92=E6=9C=AF=E5=90=8E=E6=81=A2=E5=A4=8D?= =?UTF-8?q?=E9=93=BE=E8=B7=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataflow/event/SurgeryCompletedEvent.java | 20 ++++++++++ .../handler/PostSurgeryRecoveryHandler.java | 37 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/event/SurgeryCompletedEvent.java create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/PostSurgeryRecoveryHandler.java diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/event/SurgeryCompletedEvent.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/event/SurgeryCompletedEvent.java new file mode 100644 index 000000000..1056dbb68 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/event/SurgeryCompletedEvent.java @@ -0,0 +1,20 @@ +package com.healthlink.his.web.dataflow.event; + +import lombok.Getter; +import org.springframework.context.ApplicationEvent; + +@Getter +public class SurgeryCompletedEvent extends ApplicationEvent { + private final Long encounterId; + private final Long patientId; + private final Long surgeryId; + private final String surgeryType; + + public SurgeryCompletedEvent(Object source, Long encounterId, Long patientId, Long surgeryId, String surgeryType) { + super(source); + this.encounterId = encounterId; + this.patientId = patientId; + this.surgeryId = surgeryId; + this.surgeryType = surgeryType; + } +} diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/PostSurgeryRecoveryHandler.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/PostSurgeryRecoveryHandler.java new file mode 100644 index 000000000..664df1ea7 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/PostSurgeryRecoveryHandler.java @@ -0,0 +1,37 @@ +package com.healthlink.his.web.dataflow.handler; + +import com.healthlink.his.web.dataflow.event.SurgeryCompletedEvent; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@Component +public class PostSurgeryRecoveryHandler { + + @Async + @EventListener + public void onSurgeryCompleted(SurgeryCompletedEvent event) { + log.info("Chain8 PostSurgery: encounterId={}, surgeryId={}, type={}", + event.getEncounterId(), event.getSurgeryId(), event.getSurgeryType()); + try { + Map recoveryPlan = new HashMap<>(); + recoveryPlan.put("encounterId", event.getEncounterId()); + recoveryPlan.put("surgeryId", event.getSurgeryId()); + recoveryPlan.put("planType", "POST_SURGERY"); + recoveryPlan.put("status", "ACTIVE"); + + // TODO: 保存术后护理计划到数据库 + + // TODO: 根据手术类型生成术后医嘱 + + log.info("Chain8 PostSurgery: recovery plan created for encounterId={}", event.getEncounterId()); + } catch (Exception e) { + log.error("Chain8 PostSurgery failed: surgeryId={}", event.getSurgeryId(), e); + } + } +}