diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgicalScheduleAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgicalScheduleAppServiceImpl.java index dd914033..42ef3211 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgicalScheduleAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgicalScheduleAppServiceImpl.java @@ -94,6 +94,22 @@ public class SurgicalScheduleAppServiceImpl implements ISurgicalScheduleAppServi return R.fail("患者信息不存在"); } } + + // 校验是否重复手术安排 + // 同一患者 + 同一手术单号 + 同一手术名称 只能有一条有效安排记录 + if (opCreateScheduleDto.getPatientId() != null + && opCreateScheduleDto.getOperCode() != null && !opCreateScheduleDto.getOperCode().isEmpty() + && opCreateScheduleDto.getOperName() != null && !opCreateScheduleDto.getOperName().isEmpty()) { + Boolean existsDuplicate = surgicalScheduleAppMapper.existsDuplicateSchedule( + opCreateScheduleDto.getPatientId(), + opCreateScheduleDto.getOperCode(), + opCreateScheduleDto.getOperName() + ); + if (existsDuplicate) { + return R.fail("该患者此手术单号已存在手术安排,请勿重复提交"); + } + } + //校验该时段内手术间是否被占用 LocalDateTime scheduleDate = opCreateScheduleDto.getEntryTime();//入室时间 String roomCode = opCreateScheduleDto.getRoomCode();//手术室编号 diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/mapper/SurgicalScheduleAppMapper.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/mapper/SurgicalScheduleAppMapper.java index 62356878..e8de099e 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/mapper/SurgicalScheduleAppMapper.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/mapper/SurgicalScheduleAppMapper.java @@ -58,4 +58,14 @@ public interface SurgicalScheduleAppMapper { * @return 是否存在冲突的手术安排 */ Boolean isScheduleConflict(LocalDateTime startTime, LocalDateTime endTime, String surgeryRoomId); + + /** + * 检查是否存在重复的手术安排 + * + * @param patientId 患者ID + * @param operCode 手术单号 + * @param operName 手术名称 + * @return 是否存在重复记录 + */ + Boolean existsDuplicateSchedule(@Param("patientId") Long patientId, @Param("operCode") String operCode, @Param("operName") String operName); } diff --git a/openhis-server-new/openhis-application/src/main/resources/mapper/clinicalmanage/SurgicalScheduleAppMapper.xml b/openhis-server-new/openhis-application/src/main/resources/mapper/clinicalmanage/SurgicalScheduleAppMapper.xml index 088a7c42..830e0361 100644 --- a/openhis-server-new/openhis-application/src/main/resources/mapper/clinicalmanage/SurgicalScheduleAppMapper.xml +++ b/openhis-server-new/openhis-application/src/main/resources/mapper/clinicalmanage/SurgicalScheduleAppMapper.xml @@ -144,4 +144,13 @@ AND entry_time >= #{startTime} AND end_time < #{endTime} + + +