feat(dataflow): 添加链路联动 危急值→医嘱停止
- 创建 OrderStopRequestEvent 事件类 - CriticalValueHandler 添加联动逻辑:危急值确认后发布停嘱事件 - findRelatedOrders 为 stub,待接入医嘱服务
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
package com.healthlink.his.web.dataflow.event;
|
||||
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public class OrderStopRequestEvent extends ApplicationEvent {
|
||||
private final Long encounterId;
|
||||
private final Long orderId;
|
||||
private final String reason;
|
||||
private final String triggerChain;
|
||||
|
||||
public OrderStopRequestEvent(Object source, Long encounterId, Long orderId, String reason, String triggerChain) {
|
||||
super(source);
|
||||
this.encounterId = encounterId;
|
||||
this.orderId = orderId;
|
||||
this.reason = reason;
|
||||
this.triggerChain = triggerChain;
|
||||
}
|
||||
}
|
||||
@@ -3,14 +3,18 @@ package com.healthlink.his.web.dataflow.handler;
|
||||
import com.healthlink.his.criticalvalue.domain.CriticalValue;
|
||||
import com.healthlink.his.criticalvalue.service.ICriticalValueService;
|
||||
import com.healthlink.his.web.dataflow.event.LabReportPublishedEvent;
|
||||
import com.healthlink.his.web.dataflow.event.OrderStopRequestEvent;
|
||||
import com.healthlink.his.web.dataflow.util.EventRetryUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Chain 4: 检验→危急值推送 — 检验报告发布后推送危急值
|
||||
@@ -21,6 +25,7 @@ import java.util.Date;
|
||||
public class CriticalValueHandler {
|
||||
|
||||
private final ICriticalValueService criticalValueService;
|
||||
private final ApplicationEventPublisher eventPublisher;
|
||||
|
||||
@Async
|
||||
@EventListener
|
||||
@@ -43,6 +48,21 @@ public class CriticalValueHandler {
|
||||
|
||||
log.info("Chain4 CriticalValue: critical value pushed for patientId={}, testItem={}",
|
||||
event.getPatientId(), event.getTestItem());
|
||||
|
||||
// Chain 4 → Chain 2 联动: 危急值确认后触发医嘱停止请求
|
||||
List<Long> relatedOrderIds = findRelatedOrders(event.getEncounterId(), event.getPatientId());
|
||||
for (Long orderId : relatedOrderIds) {
|
||||
eventPublisher.publishEvent(new OrderStopRequestEvent(
|
||||
this, event.getEncounterId(), orderId,
|
||||
"危急值触发自动停嘱: " + event.getTestItem(), "Chain4-Chain2"));
|
||||
}
|
||||
}, 3);
|
||||
}
|
||||
|
||||
private List<Long> findRelatedOrders(Long encounterId, Long patientId) {
|
||||
// ponytail: stub — 实际实现需查询医嘱表中与该就诊关联的有效医嘱
|
||||
// TODO: 接入 IOrderService 或医嘱服务,按 encounterId 查询有效医嘱
|
||||
log.warn("Chain4-Chain2 linkage: findRelatedOrders not yet implemented, encounterId={}", encounterId);
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user