liusheng
2026-09-28 138f31f7ed04842abca552dc8eaa912b3191e059
处理患者再入院状态代码提交
已修改3个文件
50 ■■■■■ 文件已修改
smartor/src/main/java/com/smartor/mapper/PatMedInhospMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/PatMedInhospMapper.java
@@ -1,5 +1,6 @@
package com.smartor.mapper;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -28,6 +29,18 @@
    public List<PatMedInhosp> selectPatMedInhosp(PatMedInhosp patMedInhosp);
    /**
     * 按患者编号 + 出院日期查询出院记录(出院时间只比较到天,不比较时分秒)
     *
     * @param patno    患者编号
     * @param dayStart 查询日期(当天 00:00:00)
     * @param dayEnd   查询日期的次日 00:00:00
     * @return 出院记录集合,按 inhospid 倒序
     */
    public List<PatMedInhosp> selectOutInhospByPatnoAndOutDate(@Param("patno") String patno,
                                                               @Param("dayStart") Date dayStart,
                                                               @Param("dayEnd") Date dayEnd);
    public String getTagnameBypatid(Long patid);
    /**
smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -90,6 +90,8 @@
    private ServiceSubtaskServiceImpl serviceSubtaskServiceImpl;
    @Autowired
    private ServiceSubtaskMapper serviceSubtaskMapper;
    @Autowired
    private PatMedInhospMapper patMedInhospMapper;
    @Override
    public List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO) {
@@ -716,7 +718,8 @@
                    if (CollectionUtils.isNotEmpty(patMedInhospList)) {
                        //如果不为空,则将入院时间进行更新
                        PatMedInhosp pmOut = patMedInhospList.get(0);
                        PatMedInhosp pmIn = existingInhosps.get(0);
                        //本次入院数据(这里 existingInhosps 必为空,取 existingInhosps.get(0) 会下标越界)
                        PatMedInhosp pmIn = patMedInhosp;
                        pmOut.setStarttime(pmIn.getStarttime());
                        pmOut.setUpdateTime(new Date());
                        patMedInhospService.updatePatMedInhosp(pmOut);
@@ -728,6 +731,26 @@
                                serviceSubtask.setSendstate(4L);
                                serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
                            }
                            //通过入院时间,和患者的编号去查一下出院时间,是否存在,如果存在,则该患者是再入院的,需要改成不执行
                            //出院时间只比较到天,不比较时分秒
                            if (pmIn.getStarttime() != null) {
                                Date dayStart = DateUtils.truncate(pmIn.getStarttime(), Calendar.DAY_OF_MONTH);
                                Date dayEnd = DateUtils.addDays(dayStart, 1);
                                List<PatMedInhosp> outInhosps = patMedInhospMapper.selectOutInhospByPatnoAndOutDate(
                                        StringUtils.trim(pmIn.getPatno()), dayStart, dayEnd);
                                if (CollectionUtils.isNotEmpty(outInhosps)) {
                                    //存在出院记录,说明该患者是再入院,把上一次出院产生的子任务改成不执行
                                    ServiceSubtask outSubtask = new ServiceSubtask();
                                    outSubtask.setInhospid(outInhosps.get(0).getInhospid());
                                    outSubtask.setSendstate(4L);
                                    outSubtask.setRemark("患者再入院");
                                    outSubtask.setUpdateTime(new Date());
                                    serviceSubtaskMapper.updateServiceSubtaskByCondition(outSubtask);
                                    log.info("患者再入院,将上次出院记录的子任务改为不执行:patno={}, 出院inhospid={}, 出院时间={}, 本次入院时间={}",
                                            pmIn.getPatno(), outInhosps.get(0).getInhospid(), outInhosps.get(0).getEndtime(), pmIn.getStarttime());
                                }
                            }
                        } catch (Exception e) {
                            log.error("将出院时间等于入院时间的inhospid的任务更新失败了, inhospid={}", pmOut.getInhospid(), e);
                        }
smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
@@ -762,6 +762,18 @@
    </select>
    <!-- 按患者编号 + 出院日期查询出院记录(出院时间只比较到天,不比较时分秒),用于判断患者是否再入院 -->
    <select id="selectOutInhospByPatnoAndOutDate" resultMap="PatMedInhospResult">
        <include refid="selectPatMedInhospVo"/>
        where del_flag = 0
        and inhospstate = '1'
        <if test="patno != null and patno != ''">and patno = #{patno}</if>
        <if test="dayStart != null">and endtime &gt;= #{dayStart}</if>
        <if test="dayEnd != null">and endtime &lt; #{dayEnd}</if>
        order by inhospid desc
    </select>
    <insert id="insertPatMedInhosp" parameterType="com.smartor.domain.PatMedInhosp" useGeneratedKeys="true"
            keyProperty="inhospid">
        insert into pat_med_inhosp