eight
2025-04-07 b716f199f344e4ecbaeb5a315bb6be3205c4bbc5
就诊准备 改为 候诊中
已修改4个文件
26 ■■■■ 文件已修改
README.md 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md
@@ -8,10 +8,10 @@
## 业务实现
### 分流
01. 【排队中】 患者 未分流到 诊室,没有内部 seqNum ==>【就诊准备】
01. 【排队中】 患者 未分流到 诊室,没有内部 seqNum ==>【候诊中】
02.  预约确认时,主动触发分流 到支持该预约项目的工位1、工位2...工位N
03.  叫号时,【就诊准备】=>【就诊中】 主动触发分流 到该工位
04. 检查项目优先队列 (工位队列) 记录的是 工位上【就诊准备】的人数
03.  叫号时,【候诊中】=>【就诊中】 主动触发分流 到该工位
04. 检查项目优先队列 (工位队列) 记录的是 工位上【候诊中】的人数
### 过号
01. 过号、安装过号 
@@ -19,5 +19,5 @@
### 亲和
01. 亲和:患者的多个检查项目可以在工位上一并做,避免多次排队,比如动态心电、动态血压
02. 亲和:是依附者,依附到已分流到诊室的检查项目,也就是【就诊准备】【就诊中】【过号】【召回】的检查项 (有工位和内部序号)  会直接上位 【就诊中】
02. 亲和:是依附者,依附到已分流到诊室的检查项目,也就是【候诊中】【就诊中】【过号】【召回】的检查项 (有工位和内部序号)  会直接上位 【就诊中】
03. 亲和-安装:是依附者,依附到【安装中】【安装过号】【安装召回】的检查项  会直接上位 【安装中】
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java
@@ -23,7 +23,7 @@
    AFFINITY_INSTALL(13, "亲和-安装"),
    RECALLED(15, "已召回"),
    RECALLED_INSTALL(17, "已召回-安装"),
    READY(20, "候诊中"),  // 就诊准备 已分流到工位
    READY(20, "候诊中"),  // 候诊中 已分流到工位
    ONSTAGE(30, "就诊中"),  // 或 领用中
    RECEIVED(33, "已领用"),
    INSTALLING(36, "安装中"),
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceImpl.java
@@ -683,7 +683,7 @@
     * 预约确认后,主动寻求依附
     */
    private void procAffinityWhenQueue(/*IN, OUT*/QueueSaveReqVO queueSaveReqVO, Integer[] affinityCheckTypes) {
        // 如果存在 [就诊准备] [就诊中] [过号] [已召回] 能被依附的检查项,则依附到其中一个
        // 如果存在 [候诊中] [就诊中] [过号] [已召回] 能被依附的检查项,则依附到其中一个
        List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckTypesAndStatusList(
                queueSaveReqVO.getPatId(), affinityCheckTypes,
                List.of(QueueStatusEnum.READY.getStatus(), QueueStatusEnum.ONSTAGE.getStatus(),
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java
@@ -245,15 +245,15 @@
    /* 2024.11.11
    // 常规 或者 领用 时 医生 取下一位患者
    public ErrorCode nextPatient(Long roomId, String bedNo) {
        // 从 DB 把该工位.序号最小的 [就诊准备中] 的人 设置为 [就诊中] (或领用中)
        // 从 DB 把该工位.序号最小的 [候诊中中] 的人 设置为 [就诊中] (或领用中)
        Integer updateNum = queueMapper.updateBedQueueStatus(roomId, bedNo,
                QueueStatusEnum.READY.getStatus(), QueueStatusEnum.ONSTAGE.getStatus());
        // 该工位 没有 [就诊准备中] 人员
        // 该工位 没有 [候诊中中] 人员
        if (null == updateNum || 0 == updateNum) {
            return QUEUE_NOT_READY_PATIENT;
        }
        // 优先队列中 该工位 就诊准备中人的数量 减一
        // 优先队列中 该工位 候诊中中人的数量 减一
        BedQueueBO bo = mapBedVsQueue.get( Utils.formatRoomBed( roomId, bedNo ) );
        bo.queueNum.getAndDecrement(); // 可能已经【并发的】在 hurry-up 中改变了值
@@ -265,7 +265,7 @@
    // 常规 或者 领用 时 医生 取下一位患者
    public ErrorCode nextPatient(Long roomId, String bedNo) {
        QueueDO firstReadyQueueItem = queueMapper.getFirstItemByBedAndStatus(roomId, bedNo, QueueStatusEnum.READY.getStatus());
        // 该工位 没有 [就诊准备中] 人员
        // 该工位 没有 [候诊中中] 人员
        if (null == firstReadyQueueItem) {
            return QUEUE_NOT_READY_PATIENT;
        }
@@ -274,7 +274,7 @@
        firstReadyQueueItem.setStatus(QueueStatusEnum.ONSTAGE.getStatus());
        queueMapper.updateById( firstReadyQueueItem );
        // 优先队列中 该工位 就诊准备中人的数量 减一
        // 优先队列中 该工位 候诊中中人的数量 减一
        BedQueueBO bo = mapBedVsQueue.get( Utils.formatRoomBed( roomId, bedNo ) );
        bo.queueNum.getAndDecrement(); // 可能已经【并发的】在 hurry-up 中改变了值
@@ -331,7 +331,7 @@
        List<RoomDO> roomDOList = roomMapper.simpleRoomList(bedStatusEnumList);
        List<BedQueueBO> bedQueueBOList = roomDOList.stream().map(item -> BeanUtils.toBean(item, BedQueueBO.class)).toList();
        // 从DB 获取 队列中 就诊准备中人员统计 列表
        // 从DB 获取 队列中 候诊中中人员统计 列表
        List<Integer> queueStatusList = new ArrayList<>();
        queueStatusList.add(QueueStatusEnum.READY.getStatus());
        List<QueueStatisticDO> queueStatisticDOList = queueMapper.queueStatistic(queueStatusList);
@@ -549,7 +549,7 @@
    }
    /**
     * 有检查项分流到诊室后,也就是进入[就诊准备]后,拉 [排队中] + 具有亲和性的 检查项 来依附该检查项
     * 有检查项分流到诊室后,也就是进入[候诊中]后,拉 [排队中] + 具有亲和性的 检查项 来依附该检查项
     */
    private void procAffinityWhenPreempt(QueueDO preemptQueueItem, Integer[] affinityCheckTypes) {
        List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckTypesAndStatus(