新增校验,防止删除存在有效患者预约的医生排班。
更新 SurgeryDto,为计划手术时间添加 JSON 格式配置。 改进接诊确认逻辑,使医师确认流程更加健壮。 在 OrderMapper 中新增方法,用于统计患者在指定时间段内的有效预约订单数量。 增强 TicketServiceImpl,防止同一患者在相同科室与时间段内重复预约。
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
package com.openhis.web.appointmentmanage.appservice.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.core.common.core.domain.R;
|
||||
import com.core.common.utils.SecurityUtils;
|
||||
import com.openhis.common.constant.CommonConstants;
|
||||
import com.openhis.appointmentmanage.domain.DoctorSchedule;
|
||||
import com.openhis.appointmentmanage.domain.DoctorScheduleWithDateDto;
|
||||
import com.openhis.appointmentmanage.domain.SchedulePool;
|
||||
@@ -497,6 +499,15 @@ public class DoctorScheduleAppServiceImpl implements IDoctorScheduleAppService {
|
||||
if (ObjectUtil.isNotEmpty(pools)) {
|
||||
List<Long> poolIds = pools.stream().map(SchedulePool::getId).collect(java.util.stream.Collectors.toList());
|
||||
|
||||
// 该排班下存在有效患者预约(号源槽:已预约/已锁定/已取号)则禁止删除;已退号、仅可用/已取消槽位不计入
|
||||
long appointmentCount = scheduleSlotService.count(new QueryWrapper<ScheduleSlot>()
|
||||
.in("pool_id", poolIds)
|
||||
.in("status", CommonConstants.SlotStatus.BOOKED, CommonConstants.SlotStatus.LOCKED,
|
||||
CommonConstants.SlotStatus.CHECKED_IN));
|
||||
if (appointmentCount > 0) {
|
||||
return R.fail("该排班已有患者预约,禁止删除!如需取消请先处理患者退预约或使用'停诊'功能。");
|
||||
}
|
||||
|
||||
// 2. 根据号源池ID找到所有关联的号源槽
|
||||
List<ScheduleSlot> slots = scheduleSlotService.list(
|
||||
new com.baomidou.mybatisplus.core.conditions.query.QueryWrapper<ScheduleSlot>()
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.openhis.web.clinicalmanage.dto;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.openhis.common.annotation.Dict;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
@@ -87,6 +88,7 @@ public class SurgeryDto {
|
||||
private String statusEnum_dictText;
|
||||
|
||||
/** 计划手术时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
|
||||
private Date plannedTime;
|
||||
|
||||
/** 实际开始时间 */
|
||||
|
||||
@@ -1365,10 +1365,13 @@ public class ConsultationAppServiceImpl implements IConsultationAppService {
|
||||
}
|
||||
|
||||
// 4. 更新邀请记录(存储会诊意见)
|
||||
// 格式:科室-医生:意见内容
|
||||
// 格式:科室-会诊确认参加医师:意见内容
|
||||
// 兼容:若前端未填写“会诊确认参加医师”,则回退为当前医生姓名
|
||||
String confirmingPhysicianText =
|
||||
StringUtils.hasText(dto.getConfirmingPhysician()) ? dto.getConfirmingPhysician().trim() : currentPhysicianName;
|
||||
String formattedOpinion = String.format("%s-%s:%s",
|
||||
currentDeptName,
|
||||
currentPhysicianName,
|
||||
confirmingPhysicianText,
|
||||
dto.getConsultationOpinion());
|
||||
|
||||
invited.setInvitedStatus(ConsultationStatusEnum.CONFIRMED.getCode()); // 已确认
|
||||
|
||||
Reference in New Issue
Block a user