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); + } + } +}