| | |
| | | READY((byte)20, "候诊准备"), |
| | | ONSTAGE((byte)30, "就诊中"), |
| | | FINISH((byte)40, "就诊完成"), |
| | | PASSED((byte)50, "过号"); |
| | | PASSED((byte)50, "过号"), |
| | | PASSED_RETURN((byte)60, "过号回来"); |
| | | |
| | | public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(QueueStatusEnum::getStatus).toArray(); |
| | | |
| | |
| | | PatientStatisticVO patientStatisticVO = queueService.getPatientStatistic(roomId, bedNo); |
| | | return success(patientStatisticVO); |
| | | } |
| | | |
| | | @GetMapping("/passed-patient-return") |
| | | @Operation(summary = "过期病人回来") |
| | | @Parameter(name = "roomId", description = "诊室编号", required = true, example = "116") |
| | | @Parameter(name = "bedNo", description = "工位编号", required = true, example = "B2") |
| | | @Parameter(name = "patId", description = "患者编号", required = true, example = "B2") |
| | | @PreAuthorize("@ss.hasPermission('ecg:doctor:patient')") |
| | | public CommonResult<String> passedPatientReturn( |
| | | @RequestParam("roomId") Long roomId, |
| | | @RequestParam("bedNo") String bedNo, |
| | | @RequestParam("patId") String patId ) |
| | | { |
| | | Integer result = queueService.passedPatientReturn(roomId, bedNo, patId); |
| | | return success("success"); |
| | | } |
| | | |
| | | @GetMapping("/queuejump") |
| | | @Operation(summary = "插队") |
| | | @Parameter(name = "patId", description = "患者编号", required = true, example = "B2") |
| | | @PreAuthorize("@ss.hasPermission('ecg:doctor:patient')") |
| | | public CommonResult<String> queueJump( |
| | | @RequestParam("patId") String patId, |
| | | @RequestParam("jumpFlag") Byte jumpFlag) |
| | | { |
| | | Integer result = queueService.queueJump(patId, jumpFlag); |
| | | return success("success"); |
| | | } |
| | | |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import cn.lihu.jh.framework.mybatis.core.dataobject.BaseDO; |
| | | |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * 排队 DO |
| | | * |
| | |
| | | */ |
| | | private Byte patGender; |
| | | /** |
| | | * 预约日期 |
| | | */ |
| | | private LocalDateTime bookDate; |
| | | /** |
| | | * 预约时间段 |
| | | */ |
| | | private Integer bookTimeslot; |
| | |
| | | */ |
| | | private Byte expired; |
| | | /** |
| | | * 插队标记 |
| | | */ |
| | | private Byte jumpFlag; |
| | | /** |
| | | * 诊室编号 |
| | | */ |
| | | private Long roomId; |
| | |
| | | @Update("update lihu.queue set status = #{newStatus}, room_id = #{roomId}, room_name = #{roomName}, \n" + |
| | | " bed_no = #{bedNo}, seq_num = #{seqNum} where id = \n" + |
| | | " (select a.id from \n" + |
| | | " (select id from lihu.queue where status = #{curStatus} order by book_timeslot, create_time limit 1) a)") |
| | | " (select id from lihu.queue where status = #{curStatus} order by jump_flag desc, book_timeslot, create_time limit 1) a)") |
| | | Integer preemptPatient(@Param("roomId")Long roomId, @Param("roomName")String roomName, @Param("bedNo")String bedNo, |
| | | @Param("seqNum")Integer seqNum, @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus); |
| | | |
| | | @Update("update lihu.queue set status = #{newStatus}, seq_num = #{seqNum}, passed = 1 " + |
| | | " where id = " + |
| | | " (select a.id from \n" + |
| | | " (select id from lihu.queue where status = #{curStatus} and room_id = #{roomId} and room_name = #{roomName} and bed_no = #{bedNo} order by seq_num limit 1) a)") |
| | | Integer procPassedReturnPatient(@Param("roomId")Long roomId, @Param("roomName")String roomName, @Param("bedNo")String bedNo, |
| | | @Param("seqNum")Integer seqNum, @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus); |
| | | |
| | | @Update("update lihu.queue set status = #{newStatus} " + |
| | | " where pat_id = #{patId} amd status = #{curStatus} and room_id = #{roomId} and bed_no = #{bedNo}") |
| | | Integer passedPatientReturn(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("patId")String patId, |
| | | @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus); |
| | | |
| | | @Update("update lihu.queue set jumped = #{jumped} " + |
| | | " where pat_id = #{patId} amd status = #{curStatus}") |
| | | Integer queueJump(@Param("patId")String patId, @Param("curStatus")Byte curStatus, @Param("jumped")Byte jumped ); |
| | | } |
| | | |
| | |
| | | List<QueueDO> getDoctorQueueByStatus(Long roomId, String bedNo, List<Byte> statusList); |
| | | |
| | | PatientStatisticVO getPatientStatistic(Long roomId, String bedNo); |
| | | |
| | | Integer passedPatientReturn(Long roomId, String bedNo, String patId); |
| | | |
| | | Integer queueJump( String patId, Byte jumped ); |
| | | } |
| | |
| | | if (curQueueNum == bedQueueBO.maxQueueNum) |
| | | return; |
| | | |
| | | Integer updateNum = queueMapper.preemptPatient( |
| | | // 查看 当前工位 是否有过号-回来的患者 |
| | | Integer updateNum = queueMapper.procPassedReturnPatient( |
| | | bedQueueBO.getRoomId(), |
| | | bedQueueBO.getRoomName(), |
| | | bedQueueBO.getBedNo(), |
| | | curSeqNum.get() + 1, |
| | | QueueStatusEnum.WAITING.getStatus(), |
| | | QueueStatusEnum.PASSED_RETURN.getStatus(), |
| | | QueueStatusEnum.READY.getStatus()); |
| | | |
| | | // 没有抢到排队患者 |
| | | if (null == updateNum || 0 == updateNum) { |
| | | return; |
| | | // 查看 是否有排队中的患者 |
| | | updateNum = queueMapper.preemptPatient( |
| | | bedQueueBO.getRoomId(), |
| | | bedQueueBO.getRoomName(), |
| | | bedQueueBO.getBedNo(), |
| | | curSeqNum.get() + 1, |
| | | QueueStatusEnum.WAITING.getStatus(), |
| | | QueueStatusEnum.READY.getStatus()); |
| | | |
| | | // 没有抢到排队患者 |
| | | if (null == updateNum || 0 == updateNum) { |
| | | return; |
| | | } |
| | | } |
| | | |
| | | curSeqNum.getAndIncrement(); |
| | |
| | | hurryup(); |
| | | } |
| | | |
| | | @Override |
| | | public Integer passedPatientReturn(Long roomId, String bedNo, String patId) { |
| | | Integer updateNum = queueMapper.passedPatientReturn(roomId, bedNo, patId, |
| | | QueueStatusEnum.PASSED.getStatus(), QueueStatusEnum.PASSED_RETURN.getStatus()); |
| | | return updateNum; |
| | | } |
| | | |
| | | @Override |
| | | public Integer queueJump(String patId, Byte jumped) { |
| | | Integer updateNum = queueMapper.queueJump(patId, QueueStatusEnum.WAITING.getStatus(), jumped); |
| | | return null; |
| | | } |
| | | |
| | | } |
| | |
| | | `id` int NOT NULL AUTO_INCREMENT COMMENT 'id', |
| | | `pat_id` varchar(30) NOT NULL COMMENT '患者编号', |
| | | `pat_name` varchar(10) NOT NULL COMMENT '患者姓名', |
| | | `pat_gender` tinyint(1) DEFAULT NULL COMMENT '患者性别', |
| | | `pat_gender` tinyint DEFAULT NULL COMMENT '患者性别', |
| | | `book_date` dateTime NOT NULL COMMENT '预约日期', |
| | | `book_timeslot` int NOT NULL COMMENT '预约时间段', |
| | | `book_check_type` tinyint(1) DEFAULT NULL COMMENT '预约检查类型', |
| | | `book_check_type` tinyint DEFAULT NULL COMMENT '预约检查类型', |
| | | `seq_num` int DEFAULT NULL COMMENT '排队序号', |
| | | `status` tinyint(1) NOT NULL COMMENT '10:排队中 20:候诊准备 30:就诊中 40:就诊完成 50:过号 60:过期', |
| | | `passed` tinyint(1) DEFAULT 0 COMMENT '过号标记', |
| | | `expired` tinyint(1) DEFAULT 0 COMMENT '预约过期标记', |
| | | `status` tinyint NOT NULL COMMENT '10:排队中 20:候诊准备 30:就诊中 40:就诊完成 50:过号 60:过期', |
| | | `passed` tinyint DEFAULT 0 COMMENT '过号标记', |
| | | `expired` tinyint DEFAULT 0 COMMENT '预约过期标记', |
| | | `jump_flag` tinyint DEFAULT 0 COMMENT '插队标记', |
| | | `room_id` BIGINT DEFAULT 0 COMMENT '诊室编号', |
| | | `room_name` varchar(10) DEFAULT "" COMMENT '诊室名称', |
| | | `bed_no` varchar(10) DEFAULT "" COMMENT '诊疗床编号', |
| | |
| | | `create_time` datetime NOT NULL COMMENT '创建时间', |
| | | `updater` varchar(10) DEFAULT '' COMMENT '更新者', |
| | | `update_time` datetime NOT NULL COMMENT '更新时间', |
| | | `deleted` bit(1) DEFAULT 0 COMMENT '删除标记', |
| | | `deleted` bit DEFAULT 0 COMMENT '删除标记', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='排队表'; |
| | | |