陈昶聿
4 天以前 41362e7cd2ffa5d6110465b1ea8c41cb109a549e
smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -7,8 +7,10 @@
import com.ruoyi.common.core.domain.entity.SysUserDept;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.smartor.domain.*;
import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.mapper.*;
import com.smartor.service.IServiceExternalService;
import lombok.extern.slf4j.Slf4j;
@@ -187,6 +189,7 @@
    @Override
    public Boolean addUserDeptInfo(Map dataMap) {
        //todo
        log.info("ServiceExternalServiceImpl---addUserDeptInfo的新增的值为:{}", dataMap);
        Map yeWuXX = (Map) dataMap.get("YeWuXX");
        Map<String, Object> keShiYH = (Map<String, Object>) yeWuXX.get("KeShiYH");
@@ -199,7 +202,8 @@
        //获取当前用户Name对应的user信息
        SysUser sysUser = null;
        SysUser sysUserVo = new SysUser();
        sysUserVo.setUserName(externalUserDeptInfo.getYongHuDLM());
//        sysUserVo.setUserName(externalUserDeptInfo.getYongHuDLM());
        sysUserVo.setHisUserId(externalUserDeptInfo.getYongHuID());
        sysUserVo.setOrgid(externalUserDeptInfo.getZuZhiJGID());
        //丽水无院区,默认值是 1
        sysUserVo.setCampusid("1");
@@ -508,6 +512,8 @@
        ExternalInHospPatientAddrInfo externalInHospPatientAddrInfo = null;
        ExternalInHospPatientLiaisonInfo externalInHospPatientLiaisonInfo = null;
        List<ExternalInHospPatientAddrInfo> epai2 = null;
        //死亡标记
        Boolean deathFlag = false;
        if (CollectionUtils.isNotEmpty(epai)) {
            epai2 = epai.stream().map(map -> {
                ExternalInHospPatientAddrInfo info = new ExternalInHospPatientAddrInfo();
@@ -569,6 +575,14 @@
            patMedInhosp1.setNurseName(ObjectUtils.isNotEmpty(JiuZhenXX.get("ZeRenHSXM")) ? JiuZhenXX.get("ZeRenHSXM").toString() : null);
            patMedInhosp1.setNurseId(ObjectUtils.isNotEmpty(JiuZhenXX.get("ZeRenHSID")) ? JiuZhenXX.get("ZeRenHSID").toString() : null);
            patMedInhosp1.setBedNo(ObjectUtils.isNotEmpty(JiuZhenXX.get("DangQianCWMC")) ? JiuZhenXX.get("DangQianCWMC").toString() : null);
            //离院方式代码 1-医瞩离院 2-医嘱转院 3-医嘱转社区卫生服务机构/乡镇卫生院
            // 4-非医嘱离院 5-死亡 9-其他 10-介入室 20-手术室
            String liYuanQxdm = ObjectUtils.isNotEmpty(JiuZhenXX.get("LiYuanQXDM")) ? JiuZhenXX.get("LiYuanQXDM").toString() : null;
            //判断病人是否死亡
            if(ObjectUtils.isNotEmpty(liYuanQxdm) &&("5").equals(liYuanQxdm)){
                deathFlag = true;
            }
        }
        patMedInhosp1.setUpdateTime(new Date());
        patMedInhosp1.setTelcode(patArchive.getTelcode());
@@ -612,6 +626,23 @@
        }
        patMedInhosp1.setInhospstate("1");
        if(deathFlag){
            //病人死亡无须随访
            patMedInhosp1.setFuflag("1");
            //更新病人 notrequiredFlag
            patArchive.setNotrequiredFlag("1");
            patArchiveMapper.updatePatArchive(patArchive);
            //对已经生成的随访任务进行处理
            ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
            serviceSubtaskVO.setPatid(patArchive.getId());
            serviceSubtaskVO.setSendstate(2L);
            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
            for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
                serviceSubtask.setSendstate(6L);
                serviceSubtask.setRemark(serviceSubtask.getRemark() + ";病人已死亡,不随访");
                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
            }
        }
        if (CollectionUtils.isNotEmpty(patMedInhospList)) {
            patMedInhosp1.setUpdateTime(new Date());
            patMedInhosp1.setOrgid(ObjectUtils.isNotEmpty(BingRenXX) && ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null);
@@ -823,7 +854,7 @@
            int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
            //取消出院,就不需要服务了,需要通过patid和sendstate=2或者sendstate=1去查询一下,service_subtask里是否有正在执行的任务,有的话,立即停了
            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
            ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
            serviceSubtaskVO.setPatid(patMedInhosp1.getPatid());
            serviceSubtaskVO.setSendstate(2L);
            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
@@ -997,6 +1028,50 @@
        return true;
    }
    /**
     * 目前,从急诊抢救后转入住院的患者,其数据采集存在一个问题:有两条入院记录。
     * 第一条(急诊科室的)记录缺少“出院时间”,导致该记录在统计中始终显示为“在院”,
     * 而第二条(转入科室的)记录是完整的。我们需要采集 JZ_ZY_LiQiang接口的数据,
     * 里面的离抢时间来反填第一条记录的“出院时间”,从而修正第一条记录的状态。
     * @param dataMap
     * @return
     */
    @Override
    public Boolean editRescueFinishedOutHospInfo(Map dataMap) {
        log.info("ServiceExternalServiceImpl---editRescueFinishedOutHospInfo的新增的值为:{}", dataMap);
        Map yeWuXX = (Map) dataMap.get("YeWuXX");
        //病人信息
        Map<String, Object> BingRenXX = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("BingRenXX") : null;
        //就诊信息
        Map<String, Object> JiuZhenXX = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("JiuZhenXX") : null;
        ExternalInHospPatientInfo externalInHospPatientInfo = BeanUtil.mapToBean(BingRenXX, ExternalInHospPatientInfo.class, true);
        PatMedInhosp patMedInhosp = new PatMedInhosp();
        patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
        patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
        PatMedInhosp patMedInhosp1 = null;
        if (CollectionUtils.isNotEmpty(patMedInhospList)) patMedInhosp1 = patMedInhospList.get(0);
        if(ObjectUtils.isNotEmpty(patMedInhosp1)){
            if (ObjectUtils.isNotEmpty(JiuZhenXX.get("LiQiangSJ"))) {
                try {
                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    patMedInhosp1.setEndtime(simpleDateFormat.parse(JiuZhenXX.get("LiQiangSJ").toString()));
                    patMedInhosp1.setUpdateTime(new Date());
                    //更新出院状态
                    patMedInhosp1.setInhospstate("1");
                    int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
                    if (i != 1) return false;
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
            return true;
        }else {
            log.error("ServiceExternalServiceImpl---editRescueFinishedOutHospInfo的没有找到对应的出院记录:{}", dataMap);
            return false;
        }
    }
    @Override
    public Boolean addFinshJZInfo(Map dataMap) {
        log.info("ServiceExternalServiceImpl---addFinshJZInfo的新增的值为:{}", dataMap);
@@ -1929,6 +2004,9 @@
            case "JZ_ZY_YuChuYuan":
                log.info("患者预出院入参类型为:{}", type);
                return addPreOutHospInfo(dataMap);
            case "JZ_ZY_LiQiang":
                log.info("患者离抢入参类型为:{}", type);
                return editRescueFinishedOutHospInfo(dataMap);
            case "JG_ZZ_BingQu":
                log.info("病区信息入参类型为:{}", type);
                return addWardAreaInfo(dataMap);