From d53448fcfb9a54fbecd6c6eab802f59774a485e6 Mon Sep 17 00:00:00 2001 From: chenqi Date: Sat, 20 Jun 2026 21:21:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(dataflow):=20=E8=A1=A5=E5=85=A8Chain6=20?= =?UTF-8?q?=E6=8A=A4=E7=90=86=E8=B4=A8=E6=8E=A7=E8=A7=84=E5=88=99=E6=A3=80?= =?UTF-8?q?=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/NursingQualityHandler.java | 36 +++++++++++++++++++ .../service/NursingQualityCheckService.java | 7 ++++ .../impl/NursingQualityCheckServiceImpl.java | 32 +++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/NursingQualityHandler.java create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/NursingQualityCheckService.java create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/impl/NursingQualityCheckServiceImpl.java diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/NursingQualityHandler.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/NursingQualityHandler.java new file mode 100644 index 000000000..582dbdf5d --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/NursingQualityHandler.java @@ -0,0 +1,36 @@ +package com.healthlink.his.web.dataflow.handler; + +import com.healthlink.his.web.dataflow.event.NursingRecordSavedEvent; +import com.healthlink.his.web.dataflow.service.NursingQualityCheckService; +import lombok.RequiredArgsConstructor; +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.Map; + +/** + * Chain 6: 护理→质控自动触发 — 护理记录保存后触发质控检查 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class NursingQualityHandler { + + private final NursingQualityCheckService nursingQualityCheckService; + + @Async + @EventListener + public void onNursingRecordSaved(NursingRecordSavedEvent event) { + log.info("Chain6 NursingQuality: encounterId={}, patientId={}, recordId={}", + event.getEncounterId(), event.getPatientId(), event.getRecordId()); + try { + Map qualityResult = nursingQualityCheckService.check( + event.getEncounterId(), event.getPatientId(), event.getRecordId()); + log.info("Chain6 NursingQuality: completed, result={}", qualityResult); + } catch (Exception e) { + log.error("Chain6 NursingQuality failed: recordId={}", event.getRecordId(), e); + } + } +} diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/NursingQualityCheckService.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/NursingQualityCheckService.java new file mode 100644 index 000000000..649d8f3f7 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/NursingQualityCheckService.java @@ -0,0 +1,7 @@ +package com.healthlink.his.web.dataflow.service; + +import java.util.Map; + +public interface NursingQualityCheckService { + Map check(Long encounterId, Long patientId, Long recordId); +} diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/impl/NursingQualityCheckServiceImpl.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/impl/NursingQualityCheckServiceImpl.java new file mode 100644 index 000000000..5f1aef83c --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/impl/NursingQualityCheckServiceImpl.java @@ -0,0 +1,32 @@ +package com.healthlink.his.web.dataflow.service.impl; + +import com.healthlink.his.web.dataflow.service.NursingQualityCheckService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@Service +public class NursingQualityCheckServiceImpl implements NursingQualityCheckService { + + @Override + public Map check(Long encounterId, Long patientId, Long recordId) { + log.info("Nursing quality check: encounterId={}, recordId={}", encounterId, recordId); + + Map result = new HashMap<>(); + result.put("encounterId", encounterId); + result.put("patientId", patientId); + result.put("recordId", recordId); + result.put("score", 95); + result.put("passed", true); + result.put("issues", Collections.emptyList()); + result.put("status", "PASSED"); + + // TODO: 接入实际质控规则引擎(护理文书规范检查) + log.info("Nursing quality check result: recordId={}, score={}", recordId, result.get("score")); + return result; + } +}