门诊完诊审计日志错误:div_log 表中 pool_id 与 slot_id 存值与设计规范不符
400
门诊医生站点击【完诊】后,triage_queue_item 表 status 字段未按规范更新为 30
393
疾病报告管理-报告卡管理:状态为“审核失败”的报卡操作列缺失“审核”按钮
369
【住院管理】进入护理记录模块报错
361
三测单(体温单)住院第一日显示 1970-01-01,未正确获取入院日期
This commit is contained in:
Ranyunqiao
2026-04-21 11:38:05 +08:00
parent 994ffcb8b8
commit 88d9e19cc5
14 changed files with 245 additions and 76 deletions

View File

@@ -57,6 +57,10 @@ import com.openhis.web.paymentmanage.mapper.PaymentMapper;
import com.openhis.web.personalization.dto.ActivityDeviceDto;
import com.openhis.triageandqueuemanage.domain.TriageQueueItem;
import com.openhis.triageandqueuemanage.service.TriageQueueItemService;
import com.openhis.appointmentmanage.domain.ScheduleSlot;
import com.openhis.appointmentmanage.mapper.ScheduleSlotMapper;
import com.openhis.clinical.domain.Order;
import com.openhis.clinical.service.IOrderService;
import com.openhis.workflow.domain.ServiceRequest;
import com.openhis.workflow.service.IDeviceDispenseService;
import com.openhis.workflow.service.IDeviceRequestService;
@@ -70,6 +74,7 @@ import com.openhis.yb.service.IClinicSettleService;
import com.openhis.yb.service.IInpatientSettleService;
import com.openhis.yb.service.IRegService;
import com.openhis.yb.service.YbManager;
import com.openhis.web.triageandqueuemanage.appservice.impl.TriageQueueAppServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.util.StringUtil;
@@ -186,6 +191,10 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
private YbManager ybManager;
@Autowired
private RedisCache redisCache;
@Autowired
private IOrderService iOrderService;
@Autowired
private ScheduleSlotMapper scheduleSlotMapper;
/**
* 【门诊预结算】
@@ -1985,6 +1994,31 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
}
// 创建队列项
// 尝试获取预约订单的 slot_id 和 pool_id
Long queuePoolId = null;
Long queueSlotId = null;
try {
// 查询患者当天的待签到预约订单status = 1 或 2 表示已预约或已取号)
Order order = iOrderService.getOne(
new LambdaQueryWrapper<Order>()
.eq(Order::getPatientId, encounter.getPatientId())
.in(Order::getStatus, 1, 2) // 1=BOOKED 已预约, 2=CHECKED_IN 已取号
.eq(Order::getDeleteFlag, "0")
.orderByDesc(Order::getCreateTime)
.last("LIMIT 1")
);
if (order != null && order.getSlotId() != null) {
queueSlotId = order.getSlotId();
// 通过 slot_id 获取 pool_id
ScheduleSlot slot = scheduleSlotMapper.selectById(queueSlotId);
if (slot != null) {
queuePoolId = slot.getPoolId();
}
logger.info("挂号时找到预约订单slotId={}, poolId={}, encounterId={}", queueSlotId, queuePoolId, encounterId);
}
} catch (Exception e) {
logger.warn("查询预约订单失败不影响挂号流程encounterId={}", encounterId, e);
}
TriageQueueItem queueItem = new TriageQueueItem()
.setTenantId(tenantId)
.setQueueDate(queueDate)
@@ -1997,7 +2031,9 @@ public class PaymentRecServiceImpl implements IPaymentRecService {
.setPractitionerId(queuePractitionerId)
.setPractitionerName(practitionerName)
.setRoomNo(null)
.setStatus("WAITING")
.setPoolId(queuePoolId)
.setSlotId(queueSlotId)
.setStatus(TriageQueueAppServiceImpl.STATUS_WAITING) // 0=WAITING(等待中)
.setQueueOrder(maxOrder + 1)
.setDeleteFlag("0")
.setCreateTime(LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS))