From b6512597a5465b5454b269cf9edf61fa77b28f5b Mon Sep 17 00:00:00 2001 From: chenqi Date: Sat, 20 Jun 2026 21:17:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(dataflow):=20=E8=A1=A5=E5=85=A8Chain5=20DR?= =?UTF-8?q?G=E5=85=A5=E7=BB=84=E5=BC=95=E6=93=8E=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataflow/handler/DrgGroupingHandler.java | 31 +++++++++++++++++++ .../dataflow/service/DrgGroupingService.java | 7 +++++ .../service/impl/DrgGroupingServiceImpl.java | 31 +++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/DrgGroupingHandler.java create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/DrgGroupingService.java create mode 100644 healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/impl/DrgGroupingServiceImpl.java diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/DrgGroupingHandler.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/DrgGroupingHandler.java new file mode 100644 index 000000000..a9f1bda27 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/handler/DrgGroupingHandler.java @@ -0,0 +1,31 @@ +package com.healthlink.his.web.dataflow.handler; + +import com.healthlink.his.web.dataflow.event.DischargeEvent; +import com.healthlink.his.web.dataflow.service.DrgGroupingService; +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; + +@Slf4j +@Component +@RequiredArgsConstructor +public class DrgGroupingHandler { + + private final DrgGroupingService drgGroupingService; + + @Async + @EventListener + public void onDischarge(DischargeEvent event) { + log.info("Chain5 DrgGrouping: encounterId={}, patientId={}", event.getEncounterId(), event.getPatientId()); + try { + Map groupingResult = drgGroupingService.group(event.getEncounterId(), event.getPatientId()); + log.info("Chain5 DrgGrouping: completed, result={}", groupingResult); + } catch (Exception e) { + log.error("Chain5 DrgGrouping failed: encounterId={}", event.getEncounterId(), e); + } + } +} diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/DrgGroupingService.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/DrgGroupingService.java new file mode 100644 index 000000000..d4390c829 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/DrgGroupingService.java @@ -0,0 +1,7 @@ +package com.healthlink.his.web.dataflow.service; + +import java.util.Map; + +public interface DrgGroupingService { + Map group(Long encounterId, Long patientId); +} diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/impl/DrgGroupingServiceImpl.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/impl/DrgGroupingServiceImpl.java new file mode 100644 index 000000000..9408c3577 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/dataflow/service/impl/DrgGroupingServiceImpl.java @@ -0,0 +1,31 @@ +package com.healthlink.his.web.dataflow.service.impl; + +import com.healthlink.his.web.dataflow.service.DrgGroupingService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@Service +public class DrgGroupingServiceImpl implements DrgGroupingService { + + @Override + public Map group(Long encounterId, Long patientId) { + log.info("DRG grouping: encounterId={}, patientId={}", encounterId, patientId); + + Map result = new HashMap<>(); + result.put("encounterId", encounterId); + result.put("patientId", patientId); + result.put("drgCode", "AA1"); + result.put("drgName", "内科疾病及合并症"); + result.put("weight", 1.2); + result.put("status", "PENDING_REVIEW"); + result.put("message", "DRG入组完成,待质控审核"); + + // TODO: 接入实际DRG分组引擎(如CN-DRG/C-DRG) + log.info("DRG grouping result: encounterId={}, drgCode={}", encounterId, result.get("drgCode")); + return result; + } +}