From f6680122eb3cd2a6ebe03c05c45601ff56a6c4a8 Mon Sep 17 00:00:00 2001 From: chenqi Date: Sat, 20 Jun 2026 21:32:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(dataflow):=20=E6=96=B0=E5=A2=9EChain10=20?= =?UTF-8?q?=E5=85=A5=E9=99=A2=E8=AF=84=E4=BC=B0=E2=86=92=E6=8A=A4=E7=90=86?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdmissionAssessmentCompletedEvent.java | 24 ++++++++++++ .../NursingPlanAutoGenerateHandler.java | 39 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/event/AdmissionAssessmentCompletedEvent.java create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/NursingPlanAutoGenerateHandler.java diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/event/AdmissionAssessmentCompletedEvent.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/event/AdmissionAssessmentCompletedEvent.java new file mode 100644 index 000000000..bc8aba043 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/event/AdmissionAssessmentCompletedEvent.java @@ -0,0 +1,24 @@ +package com.healthlink.his.web.dataflow.event; + +import lombok.Getter; +import org.springframework.context.ApplicationEvent; + +/** + * Chain 10: 入院评估→护理计划自动生成 — 入院评估完成事件 + */ +@Getter +public class AdmissionAssessmentCompletedEvent extends ApplicationEvent { + + private final Long encounterId; + private final Long patientId; + private final Long assessmentId; + private final String riskLevel; + + public AdmissionAssessmentCompletedEvent(Object source, Long encounterId, Long patientId, Long assessmentId, String riskLevel) { + super(source); + this.encounterId = encounterId; + this.patientId = patientId; + this.assessmentId = assessmentId; + this.riskLevel = riskLevel; + } +} diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/NursingPlanAutoGenerateHandler.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/NursingPlanAutoGenerateHandler.java new file mode 100644 index 000000000..3b87dfaaa --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/NursingPlanAutoGenerateHandler.java @@ -0,0 +1,39 @@ +package com.healthlink.his.web.dataflow.handler; + +import com.healthlink.his.web.dataflow.event.AdmissionAssessmentCompletedEvent; +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; + +/** + * Chain 10: 入院评估→护理计划自动生成 — 根据风险等级自动生成护理计划 + */ +@Slf4j +@Component +public class NursingPlanAutoGenerateHandler { + + @Async + @EventListener + public void onAssessmentCompleted(AdmissionAssessmentCompletedEvent event) { + log.info("Chain10 NursingPlan: encounterId={}, riskLevel={}", + event.getEncounterId(), event.getRiskLevel()); + try { + Map nursingPlan = new HashMap<>(); + nursingPlan.put("encounterId", event.getEncounterId()); + nursingPlan.put("patientId", event.getPatientId()); + nursingPlan.put("assessmentId", event.getAssessmentId()); + nursingPlan.put("riskLevel", event.getRiskLevel()); + nursingPlan.put("status", "ACTIVE"); + + // TODO: 根据风险等级生成具体护理措施 + + log.info("Chain10 NursingPlan: plan generated for encounterId={}", event.getEncounterId()); + } catch (Exception e) { + log.error("Chain10 NursingPlan failed: encounterId={}", event.getEncounterId(), e); + } + } +}