From 8789ba6b7970b4963a1f29d486046123e547cbe6 Mon Sep 17 00:00:00 2001 From: tangw Date: Thu, 30 Oct 2025 16:19:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/czlis/common/utils/SecurityUtils.java | 11 +- .../interfaceCommon/utils/CommonUtil.java | 1 + .../interfaceCommon/utils/LisWorkBase.java | 362 +++ .../interfaceCommon/utils/LisWorkUtils.java | 2234 +---------------- .../interfaceCommon/utils/LisWorkcom.java | 1196 +++++++++ .../interfaceCommon/utils/LisWorkconfirm.java | 720 ++++++ 6 files changed, 2290 insertions(+), 2234 deletions(-) create mode 100644 lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkBase.java create mode 100644 lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkcom.java create mode 100644 lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkconfirm.java diff --git a/lis-common/src/main/java/com/czlis/common/utils/SecurityUtils.java b/lis-common/src/main/java/com/czlis/common/utils/SecurityUtils.java index 64e0855..b9cc604 100644 --- a/lis-common/src/main/java/com/czlis/common/utils/SecurityUtils.java +++ b/lis-common/src/main/java/com/czlis/common/utils/SecurityUtils.java @@ -53,7 +53,16 @@ public class SecurityUtils { throw new ServiceException("获取用户账户异常", HttpStatus.UNAUTHORIZED); } } - + /** + * 获取用户姓名 + **/ + public static String getNickName() { + try { + return getLoginUser().getUser().getNickName(); + } catch (Exception e) { + throw new ServiceException("获取用户姓名异常", HttpStatus.UNAUTHORIZED); + } + } /** * 获取用户 **/ diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java index dc197f4..c228c59 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java @@ -189,6 +189,7 @@ public class CommonUtil { } //ComPat public List getComPat(String brdh,String yljg){ + return comPatMapper.getComPat(brdh,yljg); } @Transactional(rollbackFor = Exception.class) diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkBase.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkBase.java new file mode 100644 index 0000000..f5b49c8 --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkBase.java @@ -0,0 +1,362 @@ +package com.czlis.interfaceCommon.utils; + +import com.czlis.common.core.domain.entity.SysLoginParam; +import com.czlis.common.core.domain.entity.lis.*; +import com.czlis.common.utils.*; +import com.czlis.common.utils.ip.IpUtils; +import com.czlis.interfaceCommon.constants.LabPatConstants; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 工作站操作框架,放置一些基本方法和默认操作 + */ +@Component +@Slf4j +public class LisWorkBase { + @Autowired + LoginConfigParamUtil loginConfigParamUtil; + @Autowired + CommonUtil commonUtil; + /**获取当前用户工号**/ + String getusername(){return SecurityUtils.getUsername();} + /**获取当前用户姓名**/ + String getnickname(){return SecurityUtils.getNickName();} + /**获取当前客户端电脑IP**/ + String getIP(){ + return IpUtils.getIpAddr(); + } + /**获取当前会话循环次数**/ + int getProblemId() { + return JsonParamUtils.getParameterToInt("problemId", 0); + } + /** + * 工作时间校验检验者审核者不允许相同 上班时间上午8点-12点下午2点到5点,周末不算 + * + * @param labPat 病人信息 + * @return 返回0通过, 返回1不允许相同 + */ + int checkWorkTime(LabPat labPat) { + String yhdh = labPat.getYhdh(); + String hdys = labPat.getHdys(); + if (yhdh == null || yhdh.isEmpty()) return 0; + if (hdys == null || hdys.isEmpty()) return 0; + if (!yhdh.equals(hdys)) return 0; + String sb1 = commonUtil.getHISOPT("SHTIME1"); + String sb2 = commonUtil.getHISOPT("SHTIME2"); + String sb3 = commonUtil.getHISOPT("SHTIME3"); + String sb4 = commonUtil.getHISOPT("SHTIME4"); + if ((sb1 == null || sb1.isEmpty()) && (sb2 == null || sb2.isEmpty()) && (sb3 == null || sb3.isEmpty()) && (sb4 == null || sb4.isEmpty())) + return 0; + Date currenttime = DateUtils.getNowDate(); + int weekDay = DateUtils.getWeekDay(currenttime); + //周末不算 + if (weekDay == 6 || weekDay == 7) return 0; + int lt_now = Integer.parseInt(DateUtils.time(currenttime, "HH:mm").replace(":", "")); + if ((sb1 != null && !sb1.isEmpty()) && (sb2 != null && !sb2.isEmpty())) { + sb1 = sb1.replace(":", ""); + sb2 = sb2.replace(":", ""); + + if (LisUtil.isTureNumber(sb1) && LisUtil.isTureNumber(sb2)) { + int nsb1 = Integer.parseInt(sb1); + int nsb2 = Integer.parseInt(sb2); + if (lt_now > nsb1 && lt_now < nsb2) return 1; + } + } + if ((sb3 != null && !sb3.isEmpty()) && (sb4 != null && !sb4.isEmpty())) { + sb3 = sb3.replace(":", ""); + sb4 = sb4.replace(":", ""); + if (LisUtil.isTureNumber(sb3) && LisUtil.isTureNumber(sb4)) { + int nsb3 = Integer.parseInt(sb3); + int nsb4 = Integer.parseInt(sb4); + if (lt_now > nsb3 && lt_now < nsb4) return 1; + } + } + return 0; + } + + /** + * 检查报告是否计算危急值 + * @param labPat 病人信息 + * @return 返回 + */ + boolean checknowjz(LabPat labPat) { + //危急值标识去除原则 nowjz = true 不能算做危急值 + String brxm = labPat.getBrxm(); + if (brxm != null) { + if (brxm.contains("质控") || brxm.contains("复查") || brxm.contains("QC") || brxm.contains("qc") || brxm.contains("软化水") || brxm.contains("锅炉水")) { + return true; + } + } + String brly = labPat.getBrly(); + if (brly != null) brly = commonUtil.getComDictNameById("PT", brly); + if (brly != null) if (brly.contains("质控")) return true; + if (brly != null) if (brly.contains("复查")) return true; + String ksdh = labPat.getKsdh(); + if (ksdh != null) ksdh = commonUtil.getComDictNameById("DP", ksdh); + if (ksdh != null) return ksdh.contains("检验科"); + return false; + } + + /** + * 查询明细是否有危急值标识 + * + * @param labResultList 结果集合 + * @return 返回 + */ + boolean getAlarmFlag(List labResultList) { + boolean wjz = false; + List labResultList0 = labResultList.stream().filter(xm ->xm.getAlarm_flag() != null).filter(xm -> !xm.getAlarm_flag().trim().isEmpty()).collect(Collectors.toList()); + if (!labResultList0.isEmpty()) { + wjz = true; + } + return wjz; + } + /** + * 操作记录日志 + * + * @param jyrq 检验日期 + * @param yq 仪器 + * @param ybh 样本号 + * @param yhdh 用户 + * @param logtype 操作类型 + * @param logdata 备注信息 + */ + void setComLog(Date jyrq, String yq, String ybh, String yhdh, String logtype, String logdata) { + ComLog comLog = new ComLog(); + comLog.setJyrq(jyrq); + comLog.setYq(yq); + comLog.setYbh(ybh); + comLog.setYhdh(yhdh); + comLog.setDnmc(getIP()); + comLog.setRzbz(logtype); + comLog.setRznr(logdata); + comLog.setRzdt(new Date()); + commonUtil.insertComLog(comLog); + } + /**写入病人信息历史记录**/ + void setComPat(LabPat labPat) { + if(labPat==null) return; + String brdh = labPat.getBrdh(); + String brxm=labPat.getBrxm(); + if(brdh==null||brdh.isEmpty()) return; + if(brxm==null||brxm.isEmpty()) return; + String yljg = labPat.getYljg(); + ComPat comPat = new ComPat(); + comPat.setYljg(yljg); + comPat.setBrdh(brdh); + comPat.setBrxm(labPat.getBrxm()); + comPat.setBrly(labPat.getBrly()); + comPat.setKsdh(labPat.getKsdh()); + if(labPat.getNl()!=null) { + int age = labPat.getNl(); + String unit = labPat.getNldw(); + Date sr = AgeUtils.getBirthDateByAge(age, unit); + comPat.setSr(sr); + } + comPat.setFb(labPat.getFb()); + comPat.setMzh(labPat.getMzh()); + comPat.setZd(labPat.getZd()); + comPat.setCh(labPat.getCh()); + comPat.setSjys(labPat.getSjys()); + commonUtil.deleteComPat(brdh,yljg); + commonUtil.insertComPat(comPat); + } + + /** + * 报告修改记录,撤回报告需要记录 + * + * @param jyrq 检验日期 + * @param yq 仪器 + * @param ybh 样本号 + * @param yhdh 用户 + */ + void setpatLog(Date jyrq, String yq, String ybh, String yhdh) { + Date xgrq = new Date(); + String ip = getIP(); + commonUtil.insertLabPatlog(jyrq, yq, ybh, xgrq, yhdh, ip); + commonUtil.insertLabResultlog(jyrq, yq, ybh, xgrq, yhdh, ip); + } + + /** + * 申请单操作记录 + * + * @param sqh 申请 + * @param zt 状态 + * @param yhdh 用户 + */ + void setlabReqsteplog(String sqh, String zt, String yhdh) { + int xh = commonUtil.getLabReqsteplogMax(sqh); + xh = xh + 1; + LabReqsteplog labReqsteplog = new LabReqsteplog(); + labReqsteplog.setXh(xh); + labReqsteplog.setSqh(sqh); + labReqsteplog.setZt(zt); + labReqsteplog.setUserid(yhdh); + labReqsteplog.setChangedate(new Date()); + String ip = getIP(); + labReqsteplog.setComip(ip); + commonUtil.insertLabReqsteplog(labReqsteplog); + } + + /** + * 获取自动记忆字段修改值 + * + * @param loginConfigParam 当前登录客户端信息 + * @param yq 仪器 + * @return 返回 + */ + List getLabInputcol(SysLoginParam loginConfigParam, String yq) { + String Current_instrid = loginConfigParam.getCurrent_instrid(); + List labInputcolList = loginConfigParam.getCurrent_labInputcol(); + if (!yq.equals(Current_instrid)) { + loginConfigParam.setCurrent_yhdh_sybh(""); + loginConfigParam.setCurrent_yhdh_eybh(""); + loginConfigParam.setCurrent_hdys_sybh(""); + loginConfigParam.setCurrent_hdys_eybh(""); + labInputcolList = commonUtil.getLabInputcol(yq); + loginConfigParam.setCurrent_labInputcol(labInputcolList); + } + return labInputcolList; + } + /** + * 自动输入模板输入结果 + * @param yq 仪器 + * @param ybh 样本号 + * @return 返回 + */ + List chkautoinput(String yq, String ybh){ + + List labInputmdlList; + if("1".equals(commonUtil.getHISOPT("zdsr"))){ + labInputmdlList=commonUtil.getLabInputmdlzdsr(yq); + }else{ + if(LisUtil.isNumber(ybh)) { + labInputmdlList = commonUtil.getLabInputmdlzdsrybh(yq, ybh); + }else{ + labInputmdlList=new ArrayList<>(); + } + } + return labInputmdlList; + } + /** + * 自动输入模板输入结果 + * @param jyrq 检验日期 + * @param yq 仪器 + * @param ybh 样本号 + * @param labResultList 结果集合 + * @param mbmc 模板名称 + * @param savefalg 是否保存到数据库,空样本不存数据库,有样本存数据库 + * @return 返回 + */ + public List batchinput(Date jyrq, String yq, String ybh,List labResultList,String mbmc,boolean savefalg){ + List labInputmdlDetailList=commonUtil.getLabInputmdlDetail(yq,mbmc); + if(labInputmdlDetailList.isEmpty()) return labResultList; + for(LabInputmdlDetail labInputmdlDetail:labInputmdlDetailList){ + List findone=labResultList.stream().filter(s->s.getXmdh().equals(labInputmdlDetail.getXmdh())).collect(Collectors.toList()); + if(findone.isEmpty()){ + LabResult labResult=new LabResult(); + labResult.setJyrq(jyrq); + labResult.setYq(yq); + labResult.setYbh(ybh); + labResult.setXmdh(labInputmdlDetail.getXmdh()); + labResult.setCsjg(labInputmdlDetail.getMrz()); + labResult.setXmmc(labInputmdlDetail.getXmmc()); + if(!savefalg)labResult.setChangeflag(2); + else { + labResult.setChangeflag(1); + commonUtil.updateLabResult(labResult); + } + labResultList.add(labResult); + } + } + return labResultList; + } + /**创建空样本记录**/ + public LabPat loaddefault(LabPat labPat) { + // Date jyrq = labPat.getJyrq(); + String yq = labPat.getYq(); + String ybh = labPat.getYbh(); + Date ldt_now = commonUtil.getCurrentTime(); + if (labPat.getSqsj() == null) labPat.setSqsj(ldt_now); + if (labPat.getYljg() == null) labPat.setYljg(commonUtil.getLabInstr(yq).getYljg()); + SysLoginParam loginConfigParam = loginConfigParamUtil.getLoginConfigParam(); + String Current_instrid = loginConfigParam.getCurrent_instrid(); + List labInputcolList = loginConfigParam.getCurrent_labInputcol(); + if (!yq.equals(Current_instrid)) { + loginConfigParam.setCurrent_yhdh_sybh(""); + loginConfigParam.setCurrent_yhdh_eybh(""); + loginConfigParam.setCurrent_hdys_sybh(""); + loginConfigParam.setCurrent_hdys_eybh(""); + labInputcolList = commonUtil.getLabInputcol(yq); + loginConfigParam.setCurrent_labInputcol(labInputcolList); + } + List labInputcolList0 = labInputcolList.stream().filter(labInputcol0 -> labInputcol0.getMrz() != null && !labInputcol0.getMrz().isEmpty()).collect(Collectors.toList()); + String mrz = null; + for (LabInputcol labInputcol : labInputcolList0) { + if (!"!".equals(labInputcol.getZdmc())) { + String zdmc = labInputcol.getZdmc(); + + switch (zdmc) { + case "dysj": + case "cyrq": + case "sqsj": + case "nl": + break; + case "yhdh": + String yhdh0 = labPat.getYhdh(); + if (yhdh0 == null || yhdh0.isEmpty()) { + mrz = labInputcol.getMrz(); + if (mrz != null && !mrz.isEmpty()) { + String sybh = loginConfigParam.getCurrent_yhdh_sybh(); + String eybh = loginConfigParam.getCurrent_yhdh_eybh(); + if (!"".equals(sybh) && !"".equals(eybh) && sybh != null && eybh != null) { + if (LisUtil.isStringBetween(ybh, sybh, eybh)) { + labPat.setYhdh(mrz); + } + } else { + labPat.setYhdh(mrz); + } + } + } + break; + case "hdys": + String hdys0 = labPat.getYhdh(); + if (hdys0 == null || hdys0.isEmpty()) { + String sybh = loginConfigParam.getCurrent_hdys_sybh(); + String eybh = loginConfigParam.getCurrent_hdys_eybh(); + if (!"".equals(sybh) && !"".equals(eybh)) { + if (LisUtil.isStringBetween(ybh, sybh, eybh)) { + labPat.setHdys(mrz); + } + } else { + labPat.setHdys(mrz); + } + } + break; + default: + String value = (String) EntityUtils.getItem(labPat, zdmc); + if (value == null || value.isEmpty()) { + mrz = labInputcol.getMrz(); + if (mrz != null && !mrz.isEmpty()) { + EntityUtils.setItem(labPat, zdmc, mrz); + } + } + } + } + } + String yhdh = SecurityUtils.getLoginUser().getUsername(); + if (labPat.getYhdh() == null || labPat.getYhdh().isEmpty()) + labPat.setYhdh(SecurityUtils.getLoginUser().getUsername()); + labPat.setLastuser(yhdh); + labPat.setLastdt(ldt_now); + Integer shcs = labPat.getShcs(); + if (shcs == null) labPat.setShcs(0); + if (labPat.getJgbz() == null) labPat.setJgbz(LabPatConstants.DEFAULT); + return labPat; + } +} diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkUtils.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkUtils.java index f5614c9..1883b91 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkUtils.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkUtils.java @@ -1,2237 +1,5 @@ package com.czlis.interfaceCommon.utils; -import cn.hutool.extra.pinyin.PinyinUtil; -import com.czlis.common.core.domain.Result; -import com.czlis.common.core.domain.entity.SysLoginParam; -import com.czlis.common.core.domain.entity.SysUser; -import com.czlis.common.core.domain.entity.lis.*; -import com.czlis.common.utils.DateUtils; -import com.czlis.common.utils.SecurityUtils; -import com.czlis.common.utils.ServletUtils; -import com.czlis.common.utils.StringUtils; -import com.czlis.common.utils.ip.IpUtils; -import com.czlis.interfaceCommon.constants.ComLogConstants; -import com.czlis.interfaceCommon.constants.LabPatConstants; -import com.czlis.interfaceCommon.constants.LabReqmainConstants; -import com.czlis.interfaceCommon.constants.LisinterfaceNameConstants; -import com.czlis.interfaceCommon.mapper.LabInstrvsreqclassMapper; -import com.czlis.interfaceCommon.mapper.LabReqdetailMapper; -import com.czlis.interfaceCommon.mapper.LabReqmainMapper; -import com.czlis.interfaceCommon.mapper.LisWorkUtilsMapper; -import com.czlis.interfaceCommon.pojo.inter.DayMessage; -import com.czlis.interfaceCommon.pojo.inter.GetReqInterface; -import com.czlis.interfaceCommon.pojo.inter.SetReport; -import com.czlis.interfaceCommon.pojo.inter.SetReqStatus; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.time.DateFormatUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.*; -import java.util.stream.Collectors; - -@Component -@Slf4j -public class LisWorkUtils { - @Autowired - LisInterfaceUtil lisInterfaceUtil; - @Autowired - LisWorkUtilsMapper lisWorkUtilsMapper; - @Autowired - LabInstrvsreqclassMapper labInstrvsreqclassMapper; - @Autowired - LabReqmainMapper labReqmainMapper; - @Autowired - LabReqdetailMapper labReqdetailMapper; - @Autowired - CheckResultUtils checkResultUtils; - @Autowired - LoginConfigParamUtil loginConfigParamUtil; - @Autowired - CommonUtil commonUtil; - @Autowired - LisWorkUtils lisWorkUtils; - - /** - * 初步审核 - * - * @param jyrq - * @param yq - * @param ybh - * @param hdys - * @return - */ - public Result confirm1(Date jyrq, String yq, String ybh, String hdys, int problemId) { - if (hdys == null || hdys.isEmpty()) return new Result("-1", "审核者为空,无法审核!"); - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - labPat.setHdys(hdys); - List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); - if (problemId < 3) { - //1,审核权限校验 - if (!commonUtil.getUserPower(yq, hdys, 20)) { - return new Result("-1", "当前核对者无权对本仪器报告审核!"); - } - //2:数据合法性校验 - Result result0 = beforeconfirm(labPat, labResultList, 1, problemId); - if (!"0".equals(result0.getCode())) return result0; - } - if (problemId < 3) problemId = 3; - if (problemId < 4) { - //3:数据完整保存 - labResultList = saveallresult(labPat, labResultList); - boolean wjz = getAlarmFlag(labResultList); - //同步主表危急值标识 - String alarmflag = labPat.getAlarmflag(); - if (("1".equals(alarmflag) && !wjz)) { - labPat.setAlarmflag(""); - commonUtil.updateLabPat(labPat); - } else if (("".equals(alarmflag) || alarmflag == null) && wjz) { - labPat.setAlarmflag("1"); - commonUtil.updateLabPat(labPat); - } - if (wjz) { - return new Result("4", getAlarmMsg(labResultList), 4); - } - } - if (problemId < 5) problemId = 5; - if (problemId < 6) { - //医学审核条件判断 - Result result = chksample(labPat, labResultList, problemId); - if (!"0".equals(result.getCode())) return result; - } - if (problemId < 6) problemId = 6; - if (problemId < 99) { - //高级医学审核条件判断 - Result result = chksamplenew(labPat, labResultList, problemId); - if ("99".equals(result.getCode())) { - labPat.setBz(result.getMsg()); - result.setCode("0"); - } - if (!"0".equals(result.getCode())) return result; - } - if (problemId < 99) problemId = 99; - //5:数据状态修改,异步上传接口作业创建 - Result result1 = afterconfirm1(labPat, problemId); - if (!"0".equals(result1.getCode())) return result1; - setComLog(jyrq, yq, ybh, hdys, ComLogConstants.LG_CK1, ""); - // String sqh=labPat.getSqh(); - // if(sqh!=null){ - // setlabReqsteplog(sqh,SampleStatusConstants.CONFIRM,hdys); - // } - return new Result("0", "审核成功!"); - } - public Result saveallresult(List labResultList) { - if(labResultList == null || labResultList.isEmpty()) return new Result("-1", "结果集为空!"); - Date jyrq0 = labResultList.get(0).getJyrq(); - String yq0 = labResultList.get(0).getYq(); - String ybh0 = labResultList.get(0).getYbh(); - if(jyrq0==null)return new Result("-1", "主键为空!"); - if(yq0==null||yq0.isEmpty())return new Result("-1", "主键为空!"); - if(ybh0==null||ybh0.isEmpty())return new Result("-1", "主键为空!"); - for (LabResult labResult : labResultList) { - Date jyrq = labResult.getJyrq(); - String yq = labResult.getYq(); - String ybh = labResult.getYbh(); - String xmdh = labResult.getXmdh(); - if(jyrq==null)return new Result("-1", "主键为空!"); - if(yq==null||yq.isEmpty())return new Result("-1", "主键为空!"); - if(ybh==null||ybh.isEmpty())return new Result("-1", "主键为空!"); - if(xmdh==null||xmdh.isEmpty())return new Result("-1", "主键为空!"); - } - //commonUtil.delLabResultAll(jyrq0,yq0,ybh0); - for (LabResult labResult : labResultList) { - if(labResult.getChangeflag() != null && labResult.getChangeflag()==2) { - commonUtil.delLabResult(labResult); - commonUtil.insertLabResult(labResult); - labResult.setChangeflag(0); - } - } - return saveresult(labResultList); - } - public Result saveallresult(Date jyrq, String yq, String ybh) { - List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); - return saveresult(labResultList); - } - public Result saveresult(List labResultList) { - if (labResultList == null || labResultList.isEmpty()) return new Result("-1", "结果为空!"); - Date jyrq = labResultList.get(0).getJyrq(); - String yq = labResultList.get(0).getYq(); - String ybh = labResultList.get(0).getYbh(); - int finsh = 1; - for (LabResult labResult : labResultList) { - String csjg = labResult.getCsjg(); - if ("未做".equals(csjg)) { - finsh = 0; - } - if (csjg != null) { - if (csjg.contains("ERR")) finsh = 0; - if (csjg.contains("需稀释")) finsh = 0; - if (csjg.contains("需复做")) finsh = 0; - - } - } - String yqdl = commonUtil.getYqdl(yq); - //查询病人信息 - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - if(labPat==null) return new Result("0", "保存成功!"); - String finish = labPat.getFinish(); - if (!"细菌仪".equals(yqdl) && finish != null && finsh == 1) labPat.setFinish("1"); - labResultList = saveallresult(labPat, labResultList); - boolean wjz = getAlarmFlag(labResultList); - //同步主表危急值标识 - String alarmflag = labPat.getAlarmflag(); - if (("1".equals(alarmflag) && !wjz)) { - labPat.setAlarmflag(""); - } else if (("".equals(alarmflag) || " ".equals(alarmflag) || alarmflag == null) && wjz) { - labPat.setAlarmflag("1"); - } - commonUtil.updateLabPat(labPat); - return new Result("0", "保存成功!"); - } - /** - * 审核报告单全流程 - * - * @param jyrq - * @param yq - * @param ybh - * @param hdys - * @return - */ - public Result confirm(Date jyrq, String yq, String ybh, String hdys, int problemId) { - if (hdys == null || hdys.isEmpty()) return new Result("-1", "审核者为空,无法审核!"); - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - labPat.setHdys(hdys); - List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); - if (problemId < 3) { - //1,审核权限校验 - if (!commonUtil.getUserPower(yq, hdys, 20)) { - return new Result("-1", "当前核对者无权对本仪器报告审核!"); - } - //2:数据合法性校验 - Result result0 = beforeconfirm(labPat, labResultList, 2, problemId); - if (!"0".equals(result0.getCode())) return result0; - } - if (problemId < 3) problemId = 3; - if (problemId < 4) { - //3:数据完整保存 - labResultList = saveallresult(labPat, labResultList); - boolean wjz = getAlarmFlag(labResultList); - //同步主表危急值标识 - String alarmflag = labPat.getAlarmflag(); - if (("1".equals(alarmflag) && !wjz)) { - labPat.setAlarmflag(""); - commonUtil.updateLabPat(labPat); - } else if (("".equals(alarmflag) || alarmflag == null) && wjz) { - labPat.setAlarmflag("1"); - commonUtil.updateLabPat(labPat); - } - if (wjz) { - return new Result("4", getAlarmMsg(labResultList), 4); - } - } - if (problemId < 5) problemId = 5; - if (problemId < 6) { - //医学审核条件判断 - Result result = chksample(labPat, labResultList, problemId); - if (!"0".equals(result.getCode())) return result; - } - if (problemId < 6) problemId = 6; - if (problemId < 99) { - //高级医学审核条件判断 - Result result = chksamplenew(labPat, labResultList, problemId); - if ("99".equals(result.getCode())) { - labPat.setBz(result.getMsg()); - result.setCode("0"); - } - if (!"0".equals(result.getCode())) return result; - } - if (problemId < 99) problemId = 99; - //4:CA请求业务的处理 - //Result result=addCA(jyrq, yq, ybh, hdys); - //if("0".equals(result.getCode()))return result; - //5:数据状态修改,异步上传接口作业创建 - Result result1 = afterconfirm(labPat, problemId); - if (!"0".equals(result1.getCode())) return result1; - setComLog(jyrq, yq, ybh, hdys, ComLogConstants.LG_CK, ""); - String sqh = labPat.getSqh(); - if (sqh != null) { - setlabReqsteplog(sqh, LabReqmainConstants.CONFIRM, hdys); - } - return new Result("0", "审核成功!"); - } - - /** - * 审核前校验数据完整性,审核业务和初审业务都可使用 - * - * @param labPat - * @param labResultList - * @param checktype - * @param problemId - * @return - */ - private Result beforeconfirm(LabPat labPat, List labResultList, Integer checktype, Integer problemId) { - if (labPat == null) return new Result("-1", "病人信息为空禁止审核!"); - Date jyrq = labPat.getJyrq(); - String yq = labPat.getYq(); - String ybh = labPat.getYbh(); - String jgbz = labPat.getJgbz(); - if ("2".equals(jgbz)) return new Result("1", "报告已审核!"); - if ("5".equals(jgbz)) return new Result("-1", "已锁定报告禁止审核!"); - if (!"1".equals(jgbz) && checktype == 2) { - String f_check1 = commonUtil.getComOptValue(yq, "f_check1"); - if ("1".equals(f_check1)) return new Result("-1", "审核前必须先初审!"); - } - if (checktype == 2) { - if (checkWorkTime(labPat) == 1) return new Result("-1", "核对医生不允许与检验医生相同!"); - } - String limit_brly = commonUtil.getHISOPT("limit_brly"); - String brly = labPat.getBrly(); - if ("1".equals(limit_brly) && (brly == null || brly.isEmpty())) - return new Result("-1", "病人类型为空,禁止审核!"); - String limit_yblx = commonUtil.getHISOPT("limit_yblx"); - String yblx = labPat.getYblx(); - if ("1".equals(limit_yblx) && (yblx == null || yblx.isEmpty())) - return new Result("-1", "样本类型为空,禁止审核!"); - String limit_brxm = commonUtil.getHISOPT("limit_brxm"); - String brxm = labPat.getBrxm(); - if ("1".equals(limit_brxm) && (brxm == null || brxm.isEmpty())) - return new Result("-1", "病人姓名为空,禁止审核!"); - if ((brxm == null || brxm.isEmpty()) && problemId < 1) new Result("5", "姓名为空,你确定要审核吗?", 1); - String limit_ksdh = commonUtil.getHISOPT("limit_ksdh"); - String ksdh = labPat.getKsdh(); - if ("1".equals(limit_ksdh) && (ksdh == null || ksdh.isEmpty())) - return new Result("-1", "科室单位为空,禁止审核!"); - String limit_patno = commonUtil.getHISOPT("limit_patno"); - String brdh = labPat.getBrdh(); - String brlyname = commonUtil.getComDictNameById("PT", brly); - if ("1".equals(limit_patno) && (brdh == null || brdh.isEmpty())) { - if (!"质控".equals(brlyname)) return new Result("-1", "病历号不能为空,禁止审核!"); - } - String limit_brpatno = commonUtil.getHISOPT("limit_brpatno"); - if ("1".equals(limit_brpatno) && (brdh == null || brdh.isEmpty())) { - if ("1".equals(brly) || "3".equals(brly)) return new Result("-1", "门诊住院的病历号不能为空,禁止审核!"); - } - String yqdl = commonUtil.getYqdl(yq); - if (labResultList == null || labResultList.isEmpty()) return new Result("-1", "结果为空禁止审核!"); - for (LabResult labResult : labResultList) { - String csjg = labResult.getCsjg(); - if ("未做".equals(csjg)) { - return new Result("-1", "还有结果为“未做”的项目,不可审核!"); - } - if (csjg != null) { - if (csjg.contains("ERR")) return new Result("-1", "有结果错误,不可审核!"); - if (csjg.contains("需稀释")) return new Result("-1", "有结果需稀释,不可审核!"); - if (csjg.contains("需复做")) return new Result("-1", "有结果需复做,不可审核!"); - - } - } - if (problemId < 2) { - //多做结果判断 - String otherresultmsg = commonUtil.getComOptValue(yq, "otherresultmsg"); - if ("1".equals(otherresultmsg)) { - if (!"细菌仪".equals(yqdl)) { - int nullcount = lisWorkUtilsMapper.checkresultsqxmdh(jyrq, yq, ybh, labPat.getSqh()); - if (nullcount > 0) return new Result("5", "结果有多做的项目,是否审核?", 2); - } - } - } - String limit_jgwxh4 = commonUtil.getHISOPT("limit_jgwxh4"); - if ("1".equals(limit_jgwxh4)) { - int wxh = lisWorkUtilsMapper.checkresultwxh(jyrq, yq, ybh); - if (wxh > 0) return new Result("-1", "有结果为****禁止审核!"); - } - String sqh = labPat.getSqh(); - if (sqh != null && !sqh.isEmpty()) { - if (!"质控".equals(brlyname)) { - if ("1".equals(commonUtil.getHISOPT("sp_dublereport"))) { - LabPat labPat0 = lisWorkUtilsMapper.checkdublereport(sqh, ybh); - if (labPat0 != null) { - String yqmc = commonUtil.getYqmc(yq); - String msg = "该申请单已经发过结果了,禁止审核!" + LisUtil.LINE_SEPARATOR + "日期:" + commonUtil.getDateString(jyrq) + ",仪器:" + yqmc + ",样本号:" + ybh; - return new Result("-1", msg); - } - } else if ("1".equals(commonUtil.getHISOPT("sp_yqdublereport"))) { - LabPat labPat0 = lisWorkUtilsMapper.checkyqdublereport(sqh, yq, ybh); - if (labPat0 != null) { - String yqmc = commonUtil.getYqmc(yq); - String msg = "该申请单已经发过结果了,禁止审核!" + LisUtil.LINE_SEPARATOR + "日期:" + commonUtil.getDateString(jyrq) + ",仪器:" + yqmc + ",样本号:" + ybh; - return new Result("-1", msg); - } - } - - } - } - - String Userid = labPat.getHdys(); - if (Userid == null || Userid.isEmpty()) { - Userid = SecurityUtils.getLoginUser().getUsername(); - } - //初审不需要调用接口 - if (checktype == 1) return new Result("0", "保存成功!"); - //调用his报告接口,检查外部接口对审核前的定制需求 - SetReport setReport = new SetReport(); - setReport.setIp(IpUtils.getIpAddr()); - setReport.setJyrq(DateFormatUtils.format(jyrq, "yyyy-MM-dd")); - setReport.setYbh(ybh); - setReport.setUserid(Userid); - setReport.setYq(yq.trim()); - setReport.setStatus(LisinterfaceNameConstants.REPORTSTART); - if (!"细菌仪".equals(yqdl)) { - if (!"1".equals(commonUtil.getHISOPT("wswcbbgbl"))) { - String ls_cbbgyq = commonUtil.getComOptValue(yq, "cbbgyq"); - if (ls_cbbgyq != null && !ls_cbbgyq.isEmpty()) { - String ls_ejbgyq = "EJBG" + ls_cbbgyq; - ls_cbbgyq = "CBBG" + ls_cbbgyq; - int count = commonUtil.getCountByKey(jyrq, ls_cbbgyq, ybh); - if (count > 0) { - setReport.setYq(ls_cbbgyq); - setReport.setStatus(LisinterfaceNameConstants.REPORTCANCAL); - Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREPORT, setReport); - } - count = commonUtil.getCountByKey(jyrq, ls_ejbgyq, ybh); - if (count > 0) { - setReport.setYq(ls_ejbgyq); - setReport.setStatus(LisinterfaceNameConstants.REPORTCANCAL); - Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREPORT, setReport); - } - } - } - } - setReport.setYq(yq.trim()); - setReport.setStatus(LisinterfaceNameConstants.REPORTSTART); - Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREPORT, setReport); - if (result.getCode().equals("5")) { - if (problemId < 3) { - return new Result(result.getCode(), result.getMsg(), 3); - } - return new Result("0", "保存成功!"); - } - if (!result.getCode().equals("0")) return result; - checkxpywrgjz(labPat); - return new Result("0", "保存成功!"); - } - - /** - * 工作时间校验检验者审核者不允许相同 上班时间上午8点-12点下午2点到5点,周末不算 - * - * @param labPat - * @return 返回0通过, 返回1不允许相同 - */ - private int checkWorkTime(LabPat labPat) { - String yhdh = labPat.getYhdh(); - String hdys = labPat.getHdys(); - if (yhdh == null || yhdh.isEmpty()) return 0; - if (hdys == null || hdys.isEmpty()) return 0; - if (!yhdh.equals(hdys)) return 0; - String sb1 = commonUtil.getHISOPT("SHTIME1"); - String sb2 = commonUtil.getHISOPT("SHTIME2"); - String sb3 = commonUtil.getHISOPT("SHTIME3"); - String sb4 = commonUtil.getHISOPT("SHTIME4"); - if ((sb1 == null || sb1.isEmpty()) && (sb2 == null || sb2.isEmpty()) && (sb3 == null || sb3.isEmpty()) && (sb4 == null || sb4.isEmpty())) - return 0; - Date currenttime = DateUtils.getNowDate(); - int weekDay = DateUtils.getWeekDay(currenttime); - //周末不算 - if (weekDay == 6 || weekDay == 7) return 0; - int lt_now = Integer.parseInt(DateUtils.time(currenttime, "HH:mm").replace(":", "")); - if ((sb1 != null && !sb1.isEmpty()) && (sb2 != null && !sb2.isEmpty())) { - sb1 = sb1.replace(":", ""); - sb2 = sb2.replace(":", ""); - - if (LisUtil.isTureNumber(sb1) && LisUtil.isTureNumber(sb2)) { - int nsb1 = Integer.parseInt(sb1); - int nsb2 = Integer.parseInt(sb2); - if (lt_now > nsb1 && lt_now < nsb2) return 1; - } - } - if ((sb3 != null && !sb3.isEmpty()) && (sb4 != null && !sb4.isEmpty())) { - sb3 = sb3.replace(":", ""); - sb4 = sb4.replace(":", ""); - if (LisUtil.isTureNumber(sb3) && LisUtil.isTureNumber(sb4)) { - int nsb3 = Integer.parseInt(sb3); - int nsb4 = Integer.parseInt(sb4); - if (lt_now > nsb3 && lt_now < nsb4) return 1; - } - } - return 0; - } - - /** - * 保存所有结果 - * - * @param labPat - * @param labResultList - * @return - */ - private List saveallresult(LabPat labPat, List labResultList) { - Date jyrq = labPat.getJyrq(); - String yq = labPat.getYq(); - String ybh = labPat.getYbh(); - //清除空白结果 - String keepnodataitem = commonUtil.getComOptValue(yq, "keepnodataitem"); - if (!"1".equals(keepnodataitem)) { - commonUtil.delNullLabResult(jyrq, yq, ybh); - } - //计算项目更新 - List xmCalcList = commonUtil.getXmCalcList(yq); - if (!xmCalcList.isEmpty()) { - labResultList = calcsample(labPat, labResultList, xmCalcList); - } - //补写结果表申请单项目编号 - String sqh = labPat.getSqh(); - if (sqh != null && !sqh.isEmpty()) setItemSqxmdh(jyrq, yq, ybh, sqh); - //保存最新参考值结果标志 - labResultList = saverefs(labPat); - return labResultList; - } - - public void setItemSqxmdh(Date jyrq, String yq, String ybh) { - String sqh = commonUtil.getSqhByKey(jyrq, yq, ybh); - if (sqh != null && !sqh.isEmpty()) { - setItemSqxmdh(jyrq, yq, ybh, sqh); - } - } - - private void setItemSqxmdh(Date jyrq, String yq, String ybh, String sqh) { - if (sqh != null && !sqh.isEmpty()) { - int sl = labReqdetailMapper.getCountByKey(sqh); - if (sl == 1) { - String sqxmdh = lisWorkUtilsMapper.selectSqxmdh(sqh); - lisWorkUtilsMapper.updatelabresultsqxmdhall(jyrq, yq, ybh, sqxmdh); - } else { - lisWorkUtilsMapper.updatelabresultsqxmdh(jyrq, yq, ybh, sqh); - } - } - } - - public Result calcsample(Date jyrq, String yq, String ybh) { - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); - List xmCalcList = commonUtil.getXmCalcList(yq); - if (!xmCalcList.isEmpty()) { - calcsample(labPat, labResultList, xmCalcList); - } - return new Result("0", "保存成功!"); - } - - private List calcsample(LabPat labPat, List labResultList, List xmCalcList) { - Date jyrq = labPat.getJyrq(); - String yq = labPat.getYq(); - String ybh = labPat.getYbh(); - String jsxmold = ""; - for (XmCalc xmCalc : xmCalcList) { - String jsxm = xmCalc.getJsxm(); - if (!jsxmold.equals(jsxm)) { - jsxmold = jsxm; - String jsgs = xmCalc.getJsgs(); - boolean setjgsg = true; - boolean lb_jsx = false; - Map variables = new HashMap<>(); - String[] parameters = CalcUtils.getParameters(jsgs); - for (String itemcode : parameters) { - if ("SEX".equals(itemcode)) { - String sex = labPat.getBrxb(); - if (sex == null || sex.isEmpty() || " ".equals(sex)) { - setjgsg = false; - break; - } - sex = sex.trim(); - if ("男".equals(sex)) sex = "1"; - if ("女".equals(sex)) sex = "2"; - variables.put("SEX", sex); - lb_jsx = true; - } else if ("AGE".equals(itemcode)) { - if (labPat.getNl() == null || labPat.getNldw() == null || labPat.getNldw().isEmpty() || " ".equals(labPat.getNldw())) { - setjgsg = false; - break; - } - double age = AgeUtils.getDecimalAge(AgeUtils.getBirthDateByAge(labPat.getNl(), labPat.getNldw())); - variables.put("AGE", String.valueOf(age)); - lb_jsx = true; - } else { - List collect = labResultList.stream().filter(result -> result.getXmdh().equals(itemcode)).collect(Collectors.toList()); - if (!collect.isEmpty()) { - variables.put(itemcode, collect.get(0).getCsjg()); - } else { - setjgsg = false; - break; - } - } - } - if (setjgsg) { - String result = CalcUtils.getValueFromCalc(jsgs, variables, "0"); - if ("0".equals(result) && lb_jsx) result = null; - if (result != null && !result.trim().isEmpty()) { - //插入结果值 - Optional collect0 = labResultList.stream().filter(labR -> labR.getXmdh().equals(jsxm)).findFirst(); - if (collect0.isPresent()) { - LabResult labResult = collect0.get(); - if (LisUtil.isNumber(result)) { - Integer xsws = labResult.getXsws(); - if (xsws >= 0) result = LisUtil.round(result, xsws); - } - // log.info("result:{},getCsjg:{}",result,labResult.getCsjg()); - if (!result.equals(labResult.getCsjg())) { - labResult.setCsjg(result); - String finalResult = result; - collect0.ifPresent(labR -> labR.setCsjg(finalResult)); - commonUtil.updateLabResult(labResult); - labResult.setChangeflag(1); - collect0.ifPresent(labR -> labR.setChangeflag(1)); - } - } else { - XmInfo xmInfo = commonUtil.getXmInfo(yq, jsxm); - if (LisUtil.isNumber(result)) { - Integer xsws = xmInfo.getXsws(); - if (xsws >= 0) result = LisUtil.round(result, xsws); - } - LabResult labResult = new LabResult(); - labResult.setJyrq(jyrq); - labResult.setYq(yq); - labResult.setYbh(ybh); - labResult.setXmdh(jsxm); - labResult.setCsjg(result); - commonUtil.insertLabResult(labResult); - labResult.setXsws(xmInfo.getXsws()); - labResult.setYgzd(xmInfo.getYgzd()); - labResult.setYgzq(xmInfo.getYgzq()); - labResult.setXmmc(xmInfo.getXmmc()); - labResult.setChangeflag(1); - labResultList.add(labResult); - - } - } - } - } - } - return labResultList; - } - - public Result saverefs(Date jyrq, String yq, String ybh) { - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - List labResultList = saverefs(labPat); - boolean wjz = getAlarmFlag(labResultList); - //同步主表危急值标识 - String alarmflag = labPat.getAlarmflag(); - if (("1".equals(alarmflag) && !wjz)) { - labPat.setAlarmflag("1"); - commonUtil.updateLabPat(labPat); - } else if (("".equals(alarmflag) || alarmflag == null) && wjz) { - labPat.setAlarmflag(""); - commonUtil.updateLabPat(labPat); - } - return new Result("0", "保存成功!"); - } - - /** - * 计算项目参考值结果异常标志(内部使用) - * - * @param labPat - * @return 返回值0正常, 1有危急值明细存在 - */ - private List saverefs(LabPat labPat) { - Date jyrq = labPat.getJyrq(); - String yq = labPat.getYq(); - String ybh = labPat.getYbh(); - String yqdl = commonUtil.getYqdl(yq); - boolean lb_setbj = true; - boolean nowjz = checknowjz(labPat); - List labResultList = null; - if (!"细菌仪".equals(yqdl)) { - Map map = new HashMap<>(); - map.put("jyrq", jyrq); - map.put("yq", yq); - map.put("ybh", ybh); - map.put("settype", "1"); - map.put("retcode", ""); - map.put("retmsg", ""); - lisWorkUtilsMapper.spSetrefs(map); - String retCode = String.valueOf(map.get("retcode")); - String retMsg = String.valueOf(map.get("retmsg")); - log.info("调用存储过程{}返回值:{},{}", "sp_setrefs", retCode, retMsg); - if (retCode == null || retCode.isEmpty() || "-1".equals(retCode)) lb_setbj = false; - labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); - log.info("labResultList.size:{}", labResultList.size()); - List xmInfoList = commonUtil.getXmInfoList(yq); - List xmAlarmdetailList = null; - if (!nowjz) { - xmAlarmdetailList = commonUtil.getXmAlarmdetailList(yq); - } - for (LabResult labResult : labResultList) { - String csjg = labResult.getCsjg(); - boolean lb_nummode = LisUtil.isTureNumber(csjg); - String ygzq = labResult.getYgzq(); - String ygzd = labResult.getYgzd(); - //当结果为数值并且与周期诊断无关,计算存储过程保存成功后,只进行危急值判断 - if (lb_nummode && lb_setbj && !"Y".equals(ygzd) && !"Y".equals(ygzq)) { - if (nowjz) { - String resultalarmflag1 = labResult.getAlarm_flag(); - if(resultalarmflag1 != null)resultalarmflag1=resultalarmflag1.trim(); - else resultalarmflag1=""; - if (!resultalarmflag1.isEmpty()) { - labResult.setAlarm_flag(""); - commonUtil.updateLabResult(labResult); - } - } else { - String xmdh = labResult.getXmdh(); - List getXmAlarmdetail = xmAlarmdetailList.stream().filter(detail -> detail.getXmdh().equals(xmdh)).collect(Collectors.toList()); - int wjz = alarmcondition(labPat, labResult, getXmAlarmdetail); - if (wjz == 1) {//危急值标识特殊判断存在时优先使用特殊结果 - String jgbz = labResult.getResult_flag(); - if ("".equals(jgbz) || jgbz == null) jgbz = "H"; - if (!"L".equals(jgbz)) jgbz = "H"; - String resultalarmflag = labResult.getAlarm_flag().trim(); - if (!jgbz.equals(resultalarmflag)) { - labResult.setAlarm_flag(jgbz); - commonUtil.updateLabResult(labResult); - } - } else if (wjz == 0) { - String jgbz = ""; - String resultalarmflag = labResult.getAlarm_flag().trim(); - if (!jgbz.equals(resultalarmflag)) { - labResult.setAlarm_flag(jgbz); - commonUtil.updateLabResult(labResult); - } - } - } - } else { - String xmdh = labResult.getXmdh(); - List xmInfo0 = xmInfoList.stream().filter(xm -> xm.getXmdh().equals(xmdh)).collect(Collectors.toList()); - if (!xmInfo0.isEmpty()) { - XmInfo xmInfo = xmInfo0.get(0); - List getXmAlarmdetail = xmAlarmdetailList.stream().filter(detail -> detail.getXmdh().equals(xmdh)).collect(Collectors.toList()); - LabResult labResult0 = setxmdhrefs(labPat, labResult, xmInfo, getXmAlarmdetail, nowjz); - labResult.setCsjg(csjg); - labResult.setDw(labResult0.getDw()); - labResult.setRefs(labResult0.getRefs()); - labResult.setResult_flag(labResult0.getResult_flag()); - labResult.setJgbz(labResult0.getJgbz()); - labResult.setAlarm_flag(labResult0.getAlarm_flag()); - } - } - } - - } - return labResultList; - } - - private boolean checknowjz(LabPat labPat) { - //危急值标识去除原则 nowjz = true 不能算做危急值 - String brxm = labPat.getBrxm(); - if (brxm != null) { - if (brxm.contains("质控") || brxm.contains("复查") || brxm.contains("QC") || brxm.contains("qc") || brxm.contains("软化水") || brxm.contains("锅炉水")) { - return true; - } - } - String brly = labPat.getBrly(); - if (brly != null) brly = commonUtil.getComDictNameById("PT", brly); - if (brly != null) if (brly.contains("质控")) return true; - if (brly != null) if (brly.contains("复查")) return true; - String ksdh = labPat.getKsdh(); - if (ksdh != null) ksdh = commonUtil.getComDictNameById("DP", ksdh); - if (ksdh != null) if (ksdh.contains("检验科")) return true; - return false; - } - - /** - * 特定条件危急值判断 - * - * @param labPat - * @param labResult - * @return - */ - private int alarmcondition(LabPat labPat, LabResult labResult, List getXmAlarmdetail) { - if (getXmAlarmdetail == null) return -1; - boolean lb_fcb, lb_hasval = false; - String csjg = labResult.getCsjg(); - if (csjg == null || csjg.trim().isEmpty()) return -1; - String yq = labPat.getYq(); - String xmdh = labResult.getXmdh(); - String brxm = ""; - String brdh = ""; - String ksdh = labPat.getKsdh(); - if (ksdh != null && !ksdh.trim().isEmpty()) { - String ksdh1 = commonUtil.getComDictIdByName("DP", ksdh); - if (ksdh1 != null && !ksdh1.trim().isEmpty()) ksdh = ksdh1; - } - String ybzt = labPat.getYbzt(); - if (ybzt != null && !ybzt.trim().isEmpty()) { - String ybzt1 = commonUtil.getComDictIdByName("ST", ybzt); - if (ybzt1 != null && !ybzt1.trim().isEmpty()) ybzt = ybzt1; - } - String zd = labPat.getZd(); - for (XmAlarmdetail xmAlarmdetail : getXmAlarmdetail) { - String samplecondition = xmAlarmdetail.getSamplecondition(); - lb_fcb = false; - if (samplecondition.toLowerCase().contains("[初报]")) { - Map map = new HashMap<>(); - map.put("xmdh", xmdh); - map.put("jyrq", labPat.getJyrq()); - if (samplecondition.toLowerCase().contains("brxm")) brxm = labPat.getBrxm(); - if (samplecondition.toLowerCase().contains("brdh")) brdh = labPat.getBrdh(); - map.put("brxm", brxm); - map.put("brdh", brdh); - int limitcount = lisWorkUtilsMapper.getLimitCount(map); - if (limitcount > 0) lb_fcb = true; - samplecondition = samplecondition.replace("'brxm'", "1"); - samplecondition = samplecondition.replace("'brdh'", "1"); - samplecondition = samplecondition.replace("[初报]", "[CB]"); - } - - labPat.setYblx(commonUtil.getComDictIdByName("BT", labPat.getYblx())); - labPat.setKsdh(commonUtil.getComDictIdByName("DP", labPat.getKsdh())); - samplecondition = samplecondition.replace("[科室]", "[DEPT]"); - samplecondition = samplecondition.replace("[诊断]", "[DIAG]"); - samplecondition = samplecondition.replace("[样本状态]", "[YBZT]"); - Map variables = new HashMap<>(); - variables.put("CB", "1"); - variables.put("DEPT", ksdh); - variables.put("DIAG", zd); - variables.put("YBZT", ybzt); - boolean ref = CalcUtils.getBooleanFromCalc(samplecondition, variables); - if (ref) { - if (lb_fcb) return 0; - lb_hasval = true; - String resultcondition = xmAlarmdetail.getResultcondition(); - resultcondition = resultcondition.replace("[结果]", "[RESULT]"); - Map variables1 = new HashMap<>(); - variables1.put("RESULT", csjg); - boolean ref1 = CalcUtils.getBooleanFromCalc(resultcondition, variables1); - if (ref1) return 1; - } - } - if (lb_hasval) return 0; - else return -1; - } - - /** - * 明细结果计算参考值异常标志危急值标志并更新 - * - * @param labPat - * @param labResult - * @return - */ - private LabResult setxmdhrefs(LabPat labPat, LabResult labResult, XmInfo xmInfo, List getXmAlarmdetail, boolean nowjz) { - String yq = labPat.getYq(); - String resultflag = "M", wjzflag = ""; - String xmdh = labResult.getXmdh(); - String csjg = labResult.getCsjg(); - if (csjg == null || csjg.isEmpty()) return labResult; - String csjgnew = LisUtil.getOverNumber(csjg.trim()); - boolean lb_nummode = LisUtil.isNumber(csjgnew); - String dw = xmInfo.getDw(); - String refs = xmInfo.getDyckz(); - //当结果为数值时计算上下限 - if (lb_nummode) { - Double ckxx = xmInfo.getCkxx(); - Double cksx = xmInfo.getCksx(); - Double llimit = xmInfo.getLlimit(); - Double hlimit = xmInfo.getHlimit(); - String ygxb = xmInfo.getYgxb(); - String ygnl = xmInfo.getYgnl(); - String ygbb = xmInfo.getYgbb(); - String ygzq = xmInfo.getYgzq(); - String ygzd = xmInfo.getYgzd(); - String sex = null; - if ("Y".equals(ygxb)) { - sex = labPat.getBrxb(); - if (sex == null) sex = ""; - sex=sex.trim(); - } - String yblx = null; - if ("Y".equals(ygbb)) { - yblx = labPat.getYblx(); - String bb = commonUtil.getComDictIdByName("BT", yblx); - if (bb != null && !bb.trim().isEmpty()) yblx = bb; - } - String zd = null; - if ("Y".equals(ygzd)) { - zd = labPat.getZd(); - if (zd == null) { - zd = ""; - } - } - String slzq = null; - if ("Y".equals(ygzq)) { - slzq = labPat.getSlzq(); - if (slzq != null) { - String zq = commonUtil.getComDictIdByName("SLZQ", slzq); - if (zq != null && !zq.trim().isEmpty()) slzq = zq; - } else { - slzq = ""; - } - - } - Double age = null; - if ("Y".equals(ygnl)) { - age = AgeUtils.getDecimalAge(AgeUtils.getBirthDateByAge(labPat.getNl(), labPat.getNldw())); - } - XmRef xmRef = new XmRef(); - if ("Y".equals(ygxb) || "Y".equals(ygbb) || "Y".equals(ygnl) || "Y".equals(ygzd) || "Y".equals(ygzq)) { - - xmRef = commonUtil.getXmRefValue(yq, xmdh, yblx, sex, age, zd, slzq); - } - if (xmRef != null) { - ckxx = xmRef.getCkxx(); - cksx = xmRef.getCksx(); - refs = xmRef.getDyck(); - Double alterxx = xmRef.getAlterxx(); - Double altersx = xmRef.getAltersx(); - if (alterxx != null) llimit = alterxx; - if (altersx != null) hlimit = altersx; - } - //数值型结果判断 - double csjgnum = Double.parseDouble(csjgnew); - if (ckxx != null) if (csjgnum < ckxx) resultflag = "L"; - if (cksx != null) if (csjgnum > cksx) resultflag = "H"; - if (!nowjz) { - int wjzf = alarmcondition(labPat, labResult, getXmAlarmdetail); - if (wjzf == -1) { - if (llimit != null) if (csjgnum < llimit) wjzflag = "L"; - if (hlimit != null) if (csjgnum > hlimit) wjzflag = "H"; - } else if (wjzf == 1) { - wjzflag = resultflag; - } - } - } else { - //文字型结果判断 - String jgbzold = labResult.getJgbz(); - String lmtflag = getitemlmtflag(yq, xmdh, csjg); - if ("P".equals(jgbzold) && (csjg.contains("阳") || csjg.contains("+") || csjg.contains(":")) && (lmtflag == null || lmtflag.trim().isEmpty())) - lmtflag = "P"; - resultflag = lmtflag; - if (!nowjz) { - if ("J".equals(lmtflag)) wjzflag = "H"; - int wjzf = alarmcondition(labPat, labResult, getXmAlarmdetail); - if (wjzf == 1) wjzflag = "H";//满足特定危机值条件 - if (wjzf == 0) wjzflag = "";//存在特定危机值条件,但不满足不提示 - } - } - //小数保留位数计算 - Integer xsws = xmInfo.getXsws(); - if (xsws >= 0) csjg = LisUtil.round(csjg, xsws); - if (csjg == null) csjg = ""; - if (dw == null) dw = ""; - if (refs == null) refs = ""; - if (resultflag == null) resultflag = ""; - if (wjzflag == null) wjzflag = ""; - if (!csjg.equals(labResult.getCsjg()) || !dw.equals(labResult.getDw()) || !refs.equals(labResult.getRefs()) || - !resultflag.equals(labResult.getResult_flag()) || !resultflag.equals(labResult.getJgbz()) || !wjzflag.equals(labResult.getAlarm_flag())) { - labResult.setCsjg(csjg); - labResult.setDw(dw); - labResult.setRefs(refs); - labResult.setResult_flag(resultflag); - labResult.setJgbz(resultflag); - labResult.setAlarm_flag(wjzflag); - commonUtil.updateLabResult(labResult); - } - return labResult; - } - - public String getitemlmtflag(String yq, String xmdh, String csjg) { - String jgbz; - if (csjg == null || csjg.isEmpty()) { - return ""; - } - String csjg1 = "", csjg2 = ""; - java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\((.*?)\\)"); - java.util.regex.Matcher matcher = pattern.matcher(csjg); - if (matcher.find()) { - csjg1 = matcher.group(1); - } - int index = csjg.indexOf(","); - if (index == -1) csjg2 = StringUtils.substring(csjg, index + 1); - jgbz = commonUtil.getXmValJgbz(yq, xmdh, csjg, csjg1, csjg2); - if (jgbz == null) { - return ""; - } - return jgbz; - } - - /** - * 医学审核条件判断 - * - * @param labPat - * @param problemId - * @return - */ - private Result chksample(LabPat labPat, List labResultList, Integer problemId) { - //医学审核条件判断 - if (problemId < 6) { - String checkvalue = checkResultUtils.chksample(labPat, labResultList); - if (checkvalue != null && !checkvalue.isEmpty()) { - return new Result("5", checkvalue, 6); - } - } - return new Result("0", "保存成功!"); - } - - /** - * 高级医学审核条件判断 - * - * @param labPat - * @param problemId - * @return - */ - private Result chksamplenew(LabPat labPat, List labResultList, Integer problemId) { - //医学审核条件判断 - Boolean setbz = false; - String bz = labPat.getBz(); - int startid = 6; - //医学审核条件判断(新规则),预留99个递归ID - if (problemId < startid) problemId = startid; - if (problemId < 99) { - int xh = problemId - startid; - Map chksamplenewvalue = checkResultUtils.chksamplenew(labPat, labResultList, xh); - String chkCode = (String) chksamplenewvalue.get("code"); - String chkMsg = (String) chksamplenewvalue.get("msg"); - bz = (String) chksamplenewvalue.get("bz"); - labPat.setBz(bz); - xh = (Integer) chksamplenewvalue.get("xh"); - setbz = (Boolean) chksamplenewvalue.get("setbz"); - problemId = startid + xh; - if ("5".equals(chkCode)) { - if (setbz) { - commonUtil.updateLabPat(labPat); - } - return new Result("5", chkMsg, problemId); - } - if (!"0".equals(chkCode)) return new Result(chkCode, chkMsg, problemId); - } - if (setbz) { - commonUtil.updateLabPat(labPat); - return new Result("99", bz); - } - return new Result("0", "保存成功!"); - } - - /** - * 审核后步骤,在审核过程中,必须完成审核前校验通过,结果计算值填充,参考值结果标志危急值标志填写完成,最后使用此方法修改状态 - * - * @param labPat - * @param problemId - * @return - */ - private Result afterconfirm(LabPat labPat, Integer problemId) { - Date jyrq = labPat.getJyrq(); - String yq = labPat.getYq(); - String ybh = labPat.getYbh(); - String hdys = labPat.getHdys(); - String yqdl = commonUtil.getYqdl(yq); - String itemvs = commonUtil.getHISOPT("itemvs"); - Result ret = new Result("0", "保存成功!"); - if ("1".equals(itemvs)) { - if (!"细菌仪".equals(yqdl)) { - String nullcount = lisWorkUtilsMapper.checkresultnosqxmdh(jyrq, yq, ybh); - if (!"".equals(nullcount) && nullcount != null) - ret = new Result("3", "警告!" + LisUtil.LINE_SEPARATOR + " 报告项目未对应申请项目,请进(收费项目报告项目对照)菜单维护对照:" + LisUtil.LINE_SEPARATOR + nullcount); - } - } - - Date Confirmdt = new Date(); - labPat.setConfirmdt(Confirmdt); - labPat.setConfirmer(hdys); - labPat.setLastdt(Confirmdt); - labPat.setLastuser(hdys); - Date dysj = labPat.getDysj(); - if (dysj == null) dysj = Confirmdt; - if (commonUtil.getDateString(dysj).equals(commonUtil.getCurrentDate())) dysj = Confirmdt; - Date jysj = labPat.getSqsj(); - if (jysj.after(dysj)) jysj = dysj; - labPat.setDysj(dysj); - String sqh = labPat.getSqh(); - LabReqmain labReqmain = commonUtil.getLabReqmainOne(sqh); - if (labReqmain != null) { - String zt = labReqmain.getZt(); - if (LabReqmainConstants.CANCAL.equals(zt)) return new Result("-1", "申请单已作废禁止审核!"); - labReqmain.setYqdh(yq); - labReqmain.setSjsj(jysj); - labReqmain.setConfirmer(hdys); - labReqmain.setConfirmtime(Confirmdt); - labReqmain = checklabReqmainTAT(labReqmain); - if (!LabReqmainConstants.CANCAL.equals(zt)) labReqmain.setZt(LabReqmainConstants.CONFIRM); - commonUtil.updateLabReqmain(labReqmain); - Date cysj = labReqmain.getCysj(); - if (cysj != null) labPat.setCyrq(cysj); - } - - //调用his报告接口,完成报告同时调用外部接口任务 - SetReport setReport = new SetReport(); - setReport.setIp(IpUtils.getIpAddr()); - setReport.setJyrq(DateFormatUtils.format(jyrq, "yyyy-MM-dd")); - setReport.setYq(yq.trim()); - setReport.setYbh(ybh); - setReport.setUserid(hdys); - setReport.setStatus(LisinterfaceNameConstants.REPORTEND); - Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREPORT, setReport); - if (result.getCode().equals("5")) { - if (problemId < 100) { - return new Result(result.getCode(), result.getMsg(), 100); - } - return ret; - } - if (!result.getCode().equals("0")) return result; - //最后完成 - String finish = labPat.getFinish(); - if (!"细菌仪".equals(yqdl) && finish != null) labPat.setFinish("1"); - labPat.setJgbz(LabPatConstants.CONFIRM); - Integer shcs = labPat.getShcs(); - if (shcs == null) shcs = 0; - shcs = shcs + 1; - labPat.setShcs(shcs); - commonUtil.updateLabPat(labPat); - return ret; - } - - /** - * 初步审核状态修改 - * - * @param labPat - * @param problemId - * @return - */ - private Result afterconfirm1(LabPat labPat, Integer problemId) { - Date jyrq = labPat.getJyrq(); - String yq = labPat.getYq(); - String ybh = labPat.getYbh(); - String hdys = labPat.getHdys(); - String yqdl = commonUtil.getYqdl(yq); - String itemvs = commonUtil.getHISOPT("itemvs"); - Result ret = new Result("0", "保存成功!"); - if ("1".equals(itemvs)) { - if (!"细菌仪".equals(yqdl)) { - String nullcount = lisWorkUtilsMapper.checkresultnosqxmdh(jyrq, yq, ybh); - if (!"".equals(nullcount) && nullcount != null) - ret = new Result("3", "警告!" + LisUtil.LINE_SEPARATOR + " 报告项目未对应申请项目,请进(收费项目报告项目对照)菜单维护对照:" + LisUtil.LINE_SEPARATOR + nullcount); - } - } - - Date Confirmdt = new Date(); - labPat.setLastdt(Confirmdt); - labPat.setLastuser(hdys); - String finish = labPat.getFinish(); - if (!"细菌仪".equals(yqdl) && finish != null) labPat.setFinish("1"); - labPat.setJgbz(LabPatConstants.PRELIM); - commonUtil.updateLabPat(labPat); - return ret; - } - - /** - * 申请单表校验TAT时间顺序,恢复时间倒置的时间轴 - * - * @param labReqmain - * @return - */ - private LabReqmain checklabReqmainTAT(LabReqmain labReqmain) { - if (labReqmain != null) { - Date confirmtime = labReqmain.getConfirmtime(); - Date jysj = labReqmain.getSjsj(); - String sqh = labReqmain.getSqh(); - Date zxsj = labReqmain.getZxsj(); - Date cysj = labReqmain.getCysj(); - Date bbsjsj = labReqmain.getBbsjsj(); - Date jssj = labReqmain.getJssj(); - Date sjsj = labReqmain.getSjsj(); - if (sjsj == null&&jysj !=null) sjsj =new Date(jysj.getTime()); - if (sjsj !=null&&sjsj.after(confirmtime)&&jysj !=null) sjsj =new Date(jysj.getTime()); - if (jssj == null&&sjsj !=null) jssj =new Date(sjsj.getTime()); - if (jssj !=null&&jssj.after(confirmtime)&&sjsj !=null) jssj = new Date(sjsj.getTime()); - if (bbsjsj != null) { - if (jysj !=null&&bbsjsj.after(jssj) && jysj.after(bbsjsj)) jssj = new Date(jysj.getTime()); - } - if (cysj != null&&jysj !=null) { - if (cysj.after(jssj) && jysj.after(cysj)) jssj =new Date(jysj.getTime()); - } - if (jysj !=null&&jssj.after(sjsj)) sjsj =new Date(jysj.getTime()); - - List labReqsteplog = commonUtil.getLabReqsteplog(sqh); - if (jssj !=null&&bbsjsj != null && bbsjsj.after(jssj)) { - Date sj = new Date(jssj.getTime()); - Date finalSj = new Date(jssj.getTime()); - Optional maxTimeEntity = labReqsteplog.stream() - .filter(entity -> "13".equals(entity.getZt())) - .filter(entity -> entity.getChangedate().before(finalSj)) - .max(Comparator.comparing(LabReqsteplog::getChangedate)); - if (maxTimeEntity.isPresent()) { - sj = maxTimeEntity.get().getChangedate(); - } - bbsjsj = new Date(sj.getTime()); - labReqmain.setBbsjsj(bbsjsj); - } else { - if(jssj !=null) bbsjsj = new Date(jssj.getTime()); - } - if (bbsjsj != null && cysj != null && cysj.after(bbsjsj)) { - Date sj = new Date(bbsjsj.getTime()); - Date finalSj = sj; - Optional maxTimeEntity = labReqsteplog.stream() - .filter(entity -> "12".equals(entity.getZt())) - .filter(entity -> entity.getChangedate().before(finalSj)) - .max(Comparator.comparing(LabReqsteplog::getChangedate)); - if (maxTimeEntity.isPresent()) { - sj = maxTimeEntity.get().getChangedate(); - } - cysj =new Date(sj.getTime()); - labReqmain.setCysj(cysj); - } - if (bbsjsj != null && cysj != null && zxsj.after(cysj) && bbsjsj.after(zxsj)) { - - Date finalSj = new Date(bbsjsj.getTime()); - Optional maxTimeEntity = labReqsteplog.stream() - .filter(entity -> "12".equals(entity.getZt())) - .filter(entity -> entity.getChangedate().before(finalSj)) - .max(Comparator.comparing(LabReqsteplog::getChangedate)); - if (maxTimeEntity.isPresent()) { - cysj = maxTimeEntity.get().getChangedate(); - } else cysj = new Date(zxsj.getTime()); - labReqmain.setCysj(cysj); - } else { - if(bbsjsj != null ) cysj =new Date(bbsjsj.getTime()); - } - if (cysj != null && zxsj != null && zxsj.after(cysj)) { - Date sj = new Date(cysj.getTime()); - Date finalSj = sj; - Optional maxTimeEntity = labReqsteplog.stream() - .filter(entity -> "11".equals(entity.getZt())) - .filter(entity -> entity.getChangedate().before(finalSj)) - .max(Comparator.comparing(LabReqsteplog::getChangedate)); - if (maxTimeEntity.isPresent()) { - sj = maxTimeEntity.get().getChangedate(); - } - - zxsj = new Date(sj.getTime()); - labReqmain.setZxsj(zxsj); - } - if (sjsj != null)labReqmain.setSjsj(sjsj); - } - return labReqmain; - } - - /** - * 备注自动登记血培养污染记录 - * - * @param labPat - * @return - */ - private int checkxpywrgjz(LabPat labPat) { - String ls_bz = labPat.getBz(); - String ls_sqh = labPat.getSqh(); - String yq = labPat.getYq(); - if (ls_sqh == null || ls_sqh.isEmpty()) return 0; - if (ls_bz == null || ls_bz.isEmpty()) return 0; - String ls_xpywr = commonUtil.getComOptValue(yq, "xpywrgjz"); - if (ls_xpywr == null || ls_xpywr.isEmpty()) return 0; - if (ls_bz.contains(ls_xpywr)) { - String ls_yblx = labPat.getYblx(); - if (ls_yblx == null || ls_yblx.isEmpty()) return 0; - String ls_yblxmc = commonUtil.getComDictNameById("BT", ls_yblx); - if (ls_yblxmc == null || ls_yblxmc.isEmpty()) return 0; - if (ls_yblxmc.contains("血") || ls_yblx.contains("血")) { - String ls_xpywrdh = commonUtil.getComOptValue(yq, "xpywrdh"); - if (ls_xpywrdh == null || ls_xpywrdh.isEmpty()) return 0; - String ls_hdys = labPat.getHdys(); - if (ls_hdys == null || ls_hdys.isEmpty()) ls_hdys = labPat.getYhdh(); - LabRefused labRefused = new LabRefused(); - labRefused.setSqh(ls_sqh); - labRefused.setRefusetext(ls_xpywrdh); - List labRefusedList = commonUtil.getLabRefusedList(labRefused); - if (labRefusedList.isEmpty()) { - labRefused.setRefusedtime(new Date()); - labRefused.setKsdh(labPat.getKsdh()); - labRefused.setBz("0"); - labRefused.setRefuseder(ls_hdys); - commonUtil.insertLabRefused(labRefused); - } - } - } - return 0; - } - - /** - * 查询明细是否有危急值标识 - * - * @param labResultList - * @return - */ - private boolean getAlarmFlag(List labResultList) { - boolean wjz = false; - List labResultList0 = labResultList.stream().filter(xm ->xm.getAlarm_flag() != null).filter(xm -> !xm.getAlarm_flag().trim().isEmpty()).collect(Collectors.toList()); - if (!labResultList0.isEmpty()) { - wjz = true; - } - return wjz; - } - - /** - * 获取危急值信息集合 - * - * @param labResultList - * @return - */ - private String getAlarmMsg(List labResultList) { - StringBuilder wjzmsg = new StringBuilder(); - List labResultList0 = labResultList.stream().filter(xm ->xm.getAlarm_flag() != null).filter(xm -> !xm.getAlarm_flag().trim().isEmpty()).collect(Collectors.toList()); - if (!labResultList0.isEmpty()) { - for (LabResult labResult : labResultList0) { - String xmmc = labResult.getXmmc(); - String cjsg = labResult.getCsjg(); - if (!"".equals(cjsg) && cjsg != null) { - cjsg = ",结果:" + cjsg; - } else { - cjsg = ""; - } - - wjzmsg.append("项目:").append(xmmc).append(cjsg).append(LisUtil.LINE_SEPARATOR); - } - } - return wjzmsg.toString(); - } - - /** - * 操作记录日志 - * - * @param jyrq - * @param yq - * @param ybh - * @param yhdh - * @param logtype - * @param logdata - */ - public void setComLog(Date jyrq, String yq, String ybh, String yhdh, String logtype, String logdata) { - ComLog comLog = new ComLog(); - comLog.setJyrq(jyrq); - comLog.setYq(yq); - comLog.setYbh(ybh); - comLog.setYhdh(yhdh); - comLog.setDnmc(IpUtils.getIpAddr()); - comLog.setRzbz(logtype); - comLog.setRznr(logdata); - comLog.setRzdt(new Date()); - commonUtil.insertComLog(comLog); - } - - /** - * 报告修改记录,撤回报告需要记录 - * - * @param jyrq - * @param yq - * @param ybh - * @param yhdh - */ - public void setpatLog(Date jyrq, String yq, String ybh, String yhdh) { - Date xgrq = new Date(); - String ip = IpUtils.getIpAddr(); - commonUtil.insertLabPatlog(jyrq, yq, ybh, xgrq, yhdh, ip); - commonUtil.insertLabResultlog(jyrq, yq, ybh, xgrq, yhdh, ip); - } - - /** - * 申请单操作记录 - * - * @param sqh - * @param zt - * @param yhdh - */ - public void setlabReqsteplog(String sqh, String zt, String yhdh) { - int xh = commonUtil.getLabReqsteplogMax(sqh); - xh = xh + 1; - LabReqsteplog labReqsteplog = new LabReqsteplog(); - labReqsteplog.setXh(xh); - labReqsteplog.setSqh(sqh); - labReqsteplog.setZt(zt); - labReqsteplog.setUserid(yhdh); - labReqsteplog.setChangedate(new Date()); - String ip = IpUtils.getIpAddr(); - labReqsteplog.setComip(ip); - commonUtil.insertLabReqsteplog(labReqsteplog); - } - - /** - * 登记危急值记录 - * - * @param jyrq - * @param yq - * @param ybh - * @param yhdh - * @param qrr - * @param phone - * @param tzfs - * @return - */ - public Result reglimit(Date jyrq, String yq, String ybh, String yhdh, String qrr, String phone, String tzfs, int problemId) { - log.info("登记危急值{}", tzfs); - if (problemId < 5) { - LabPatwarning labPatwarning0 = commonUtil.getLabPatwarning(jyrq, yq, ybh); - if (labPatwarning0 != null) { - return new Result("4", "该标本已经登记,是否重新登记?", 5); - } - } - commonUtil.deleteLabPatwarning(jyrq, yq, ybh); - commonUtil.deleteLabResultwarning(jyrq, yq, ybh); - LabPatwarning labPatwarning = new LabPatwarning(); - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); - String jzbz = labPat.getJzbz().trim(); - if (!"1".equals(jzbz)) { - jzbz = "0"; - } - if ("".equals(yhdh) || yhdh == null) { - yhdh = labPat.getHdys(); - } - if ("".equals(yhdh) || yhdh == null) { - SysUser sysUser = SecurityUtils.getLoginUser().getUser(); - yhdh = sysUser.getNickName(); - } else { - String yhxm = commonUtil.getComUsrName(yhdh); - if (yhxm != null && yhxm.isEmpty()) yhdh = yhxm; - } - String sjys = labPat.getSjys(); - String sjysname = commonUtil.getComDictNameById("SRD", sjys); - if (sjysname == null || sjysname.isEmpty()) { - sjysname = sjys; - } - if ("".equals(qrr) || qrr == null) { - qrr = labPat.getSjys(); - } - labPatwarning.setJyrq(jyrq); - labPatwarning.setYq(yq); - labPatwarning.setYbh(ybh); - labPatwarning.setLb(jzbz); - labPatwarning.setBgr(yhdh); - labPatwarning.setBtzr(sjysname); - labPatwarning.setTzsj(new Date()); - if ("2".equals(tzfs)) { - labPatwarning.setTzfs("电话通知"); - labPatwarning.setQrr(qrr); - labPatwarning.setQrsj(new Date()); - } else { - labPatwarning.setTzfs("系统通知"); - } - commonUtil.insertLabPatwarning(labPatwarning); - String ls_bz = ""; - List labResultList0 = labResultList.stream().filter(xm -> xm.getAlarm_flag() != null).filter(xm -> !xm.getAlarm_flag().trim().isEmpty()).collect(Collectors.toList()); - if (!labResultList0.isEmpty()) { - for (LabResult labResult : labResultList0) { - LabResultwarning labResultwarning = new LabResultwarning(); - labResultwarning.setJyrq(jyrq); - labResultwarning.setYq(yq); - labResultwarning.setYbh(ybh); - labResultwarning.setXmdh(labResult.getXmdh()); - labResultwarning.setCsjg(labResult.getCsjg()); - labResultwarning.setJgbz("J"); - labResultwarning.setBz(""); - commonUtil.insertLabResultwarning(labResultwarning); - if ("".equals(ls_bz)) { - ls_bz = labResult.getXmdh(); - } else { - ls_bz = ls_bz + "," + labResult.getXmdh(); - } - } - } - String registerlimit = commonUtil.getComOptValue(yq, "registerlimit"); - if ("1".equals(registerlimit)) { - String bz = labPat.getBz(); - if (bz == null) bz = ""; - ls_bz = "*" + ls_bz + "等值超过生命危急值" + "*"; - if (!bz.contains(ls_bz)) { - bz = bz + ls_bz; - labPat.setBz(bz); - commonUtil.updateLabPat(labPat); - } - } - return new Result("0", "登记成功"); - } - - /** - * 获取自动记忆字段修改值 - * - * @param loginConfigParam - * @param yq - * @return - */ - public List getLabInputcol(SysLoginParam loginConfigParam, String yq) { - String Current_instrid = loginConfigParam.getCurrent_instrid(); - List labInputcolList = loginConfigParam.getCurrent_labInputcol(); - if (Current_instrid == null || !yq.equals(Current_instrid)) { - loginConfigParam.setCurrent_yhdh_sybh(""); - loginConfigParam.setCurrent_yhdh_eybh(""); - loginConfigParam.setCurrent_hdys_sybh(""); - loginConfigParam.setCurrent_hdys_eybh(""); - labInputcolList = commonUtil.getLabInputcol(yq); - loginConfigParam.setCurrent_labInputcol(labInputcolList); - } - return labInputcolList; - } - - /** - * 解除审核原因登记 - * - * @param jyrq - * @param yq - * @param ybh - * @param hdys - * @return - */ - public Result unconfirmlog(Date jyrq, String yq, String ybh, String hdys, String reason) { - if ("".equals(reason)) { - return new Result("-1", "没写原因,解除失败!"); - } - LisPatlog lisPatlog = new LisPatlog(); - lisPatlog.setYq(yq); - lisPatlog.setYbh(ybh); - lisPatlog.setXgyhdh(hdys); - lisPatlog.setJyrq(jyrq); - lisPatlog.setXgrq(new Date()); - lisPatlog.setBz1(reason); - commonUtil.insertLisPatlog(lisPatlog); - return new Result("0", "写召回原因成功!"); - } - - /** - * 撤销审核报告单全流程 - * - * @param jyrq - * @param yq - * @param ybh - * @param yhdh - * @return - */ - public Result unconfirm(Date jyrq, String yq, String ybh, String yhdh) { - if (yhdh == null || yhdh.isEmpty()) return new Result("1", "操作者为空,无法解除审核!"); - int problemId = ServletUtils.getParameterToInt("problemId", 0); - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - if (problemId < 3) { - //1,解除审核权限校验 - if (!commonUtil.getUserPower(yq, yhdh, 10)) return new Result("-1", "当前操作者无权对本仪器报告解除审核!"); - //2:数据合法性校验 - String jgbz = labPat.getJgbz(); - if (!"2".equals(jgbz)) return new Result("1", "报告未审核,不需解除!"); - } - if (problemId < 3) problemId = 3; - if (problemId < 4) { - String unconfirmlog = commonUtil.getComOptValue(yq, "unconfirmlog"); - if ("1".equals(unconfirmlog)) { - return new Result("4", "请填写解除审核原因!", 4); - } - } - if (problemId < 4) problemId = 4; - //调用his报告接口,完成报告同时调用外部接口任务 - if (problemId < 5) { - SetReport setReport = new SetReport(); - setReport.setIp(IpUtils.getIpAddr()); - setReport.setJyrq(DateFormatUtils.format(jyrq, "yyyy-MM-dd")); - setReport.setYq(yq.trim()); - setReport.setYbh(ybh); - setReport.setUserid(yhdh); - setReport.setStatus(LisinterfaceNameConstants.REPORTCANCAL); - Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREPORT, setReport); - if (result.getCode().equals("5")) { - if (problemId < 5) { - return new Result(result.getCode(), result.getMsg(), 5); - } - } - if (!result.getCode().equals("0")) return result; - } - if (problemId < 5) problemId = 5; - String sqh = labPat.getSqh(); - LabReqmain labReqmain = commonUtil.getLabReqmainOne(sqh); - if (labReqmain != null) { - String zt = labReqmain.getZt(); - if (!LabReqmainConstants.CANCAL.equals(zt)) { - labReqmain.setConfirmer(""); - labReqmain.setConfirmtime(null); - if (LabReqmainConstants.CONFIRM.equals(zt)) { - labReqmain.setZt(LabReqmainConstants.SIGNFOR); - labReqmain.setConfirmer(""); - labReqmain.setConfirmtime(null); - commonUtil.updateLabReqmain(labReqmain); - } - } - } - String msg = "取消成功!"; - String sp_rebackreport = commonUtil.getHISOPT("sp_rebackreport"); - if ("1".equals(sp_rebackreport)) { - if ("1".equals(labPat.getDybz())) { - msg = msg + LisUtil.LINE_SEPARATOR + "此报告为已打印报告,注意考虑是否追回"; - } - LabPatwarning labPatwarning = commonUtil.getLabPatwarning(jyrq, yq, ybh); - if (labPatwarning != null) { - if (problemId < 6) { - Date tzsj = labPatwarning.getTzsj(); - long sjc = LisUtil.relativeMinute(tzsj); - if (sjc > 10) { - return new Result("4", "此报告已发布危急值结果,并且时间超过10分钟了!" + LisUtil.LINE_SEPARATOR + "请输入撤回报告组长代号和密码", 6); - } - } - //权限不足,撤回报告失败组长权限单独接口校验 - if (problemId == 6) { - int ll_qxz = lisWorkUtilsMapper.getQXZ(yhdh); - if (ll_qxz <= 0) { - return new Result("-1", "权限不足,撤回报告失败!"); - } - } - commonUtil.deleteLabPatwarning(jyrq, yq, ybh); - commonUtil.deleteLabResultwarning(jyrq, yq, ybh); - } - } - commonUtil.deleteLabReqreportPdffile(jyrq, yq, ybh); - labPat.setFslx(""); - labPat.setJgbz(LabPatConstants.DEFAULT); - commonUtil.updateLabPat(labPat); - String logdata = commonUtil.getLisPatlogbz(jyrq, yq, ybh); - setComLog(jyrq, yq, ybh, yhdh, ComLogConstants.LG_UCK, logdata); - setpatLog(jyrq, yq, ybh, yhdh); - if (sqh != null) { - setlabReqsteplog(sqh, LabReqmainConstants.START, yhdh); - } - if (!"取消成功!".equals(msg)) return new Result("3", msg); - return new Result("0", msg); - } - - public Result unconfirm1(Date jyrq, String yq, String ybh, String yhdh) { - if (yhdh == null || yhdh.isEmpty()) return new Result("1", "操作者为空,无法解除审核!"); - int problemId = ServletUtils.getParameterToInt("problemId", 0); - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - if (problemId < 3) { - //1,解除审核权限校验 - if (!commonUtil.getUserPower(yq, yhdh, 10)) return new Result("-1", "当前操作者无权对本仪器报告解除审核!"); - //2:数据合法性校验 - String jgbz = labPat.getJgbz(); - if ("2".equals(jgbz)) return new Result("1", "报告已审核,不能解除初审!"); - if (!"1".equals(jgbz)) return new Result("1", "报告未初审,不能解除初审!"); - } - // if (problemId < 3) problemId = 3; - - // if (problemId < 4) problemId = 4; - - if (problemId < 5) problemId = 5; - - labPat.setFslx(""); - labPat.setJgbz(LabPatConstants.DEFAULT); - commonUtil.updateLabPat(labPat); - setComLog(jyrq, yq, ybh, yhdh, ComLogConstants.LG_UCK1, ""); - return new Result("0", "取消成功!"); - } - - /** - * 修改病人信息,输入病人代号需要单独处理 - * - * @param jyrq - * @param yq - * @param ybh - * @param column - * @param value - * @return - */ - public Result changePatColumn(Date jyrq, String yq, String ybh, String column, String value) { - String jgbz = commonUtil.getLabPatJgbz(jyrq, yq, ybh); - if ("2".equals(jgbz)) return new Result("-1", "结果已审核禁止修改!"); - if ("5".equals(jgbz)) return new Result("-1", "结果已锁定禁止修改!"); - if ("1".equals(jgbz)) return new Result("-1", "结果已初审禁止修改!"); - commonUtil.updateLabPatByColumn(jyrq, yq, ybh, column, value); - //对于开启自动记忆的字段,保存修改值 - SysLoginParam loginConfigParam = loginConfigParamUtil.getLoginConfigParam(); - List labInputcolList = getLabInputcol(loginConfigParam, yq); - Optional collect0 = labInputcolList.stream().filter(labInputcol0 -> column.equals(labInputcol0.getZdmc())).findFirst(); - if (collect0.isPresent()) { - String zdjy = collect0.get().getZdjy(); - if ("1".equals(zdjy)) { - collect0.ifPresent(labR -> labR.setMrz(value)); - loginConfigParam.setCurrent_labInputcol(labInputcolList); - } - } - boolean setcalc = false; - List xmCalcList = null; - switch (column) { - case "brxb": - xmCalcList = commonUtil.getXmCalcbyxmdh(yq, "SEX"); - if (!xmCalcList.isEmpty()) setcalc = true; - break; - case "nl": - case "nldw": - xmCalcList = commonUtil.getXmCalcbyxmdh(yq, "AGE"); - if (!xmCalcList.isEmpty()) setcalc = true; - break; - } - if (setcalc) { - List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - boolean nowjz = checknowjz(labPat); - labResultList = calcsample(labPat, labResultList, xmCalcList); - if (!labResultList.isEmpty()) { - List labResultList1 = labResultList.stream().filter(labR -> labR.getChangeflag() != null && labR.getChangeflag() == 1).collect(Collectors.toList()); - if (!labResultList1.isEmpty()) { - for (LabResult labResult0 : labResultList1) { - changeresultf(labPat, labResult0, nowjz); - } - } - } - } - setComLog(jyrq, yq, ybh, SecurityUtils.getLoginUser().getUsername(), ComLogConstants.LG_M, column + ":" + value); - return new Result("0", "保存成功"); - } - - /** - * 删除样本 - * - * @param jyrq - * @param yq - * @param ybh - * @param yhdh - * @param problemId - * @return - */ - public Result delsample(Date jyrq, String yq, String ybh, String yhdh, int problemId) { - String jgbz = commonUtil.getLabPatJgbz(jyrq, yq, ybh); - if ("2".equals(jgbz)) return new Result("-1", "结果已审核禁止删除!"); - if ("5".equals(jgbz)) return new Result("-1", "结果已锁定禁止删除!"); - // if ("1".equals(jgbz)) return new Result("-1", "结果已初审禁止删除!"); - //IF MessageBox("删除","你确定删除当前 " + ls_ybh + " 号标本?",question!,YesNo!,2) = 2 THEN RETURN 1 交给前端 - String yqdl = commonUtil.getYqdl(yq); - if ("细菌仪".equals(yqdl)) { - String cbbgyq = commonUtil.getComOptValue(yq, "cbbgyq"); - if (cbbgyq != null && !cbbgyq.isEmpty()) { - String is_instr_cbbg = "CBBG" + cbbgyq; - String is_instr_ejbg = "EJBG" + cbbgyq; - String jgbz0 = commonUtil.getLabPatJgbz(jyrq, is_instr_cbbg, ybh); - if (jgbz0 != null) { - if ("2".equals(jgbz0) || "3".equals(jgbz0)) { - return new Result("1", "初步报告已经被审核,撤回前无法删除!"); - } - } - String jgbz1 = commonUtil.getLabPatJgbz(jyrq, is_instr_ejbg, ybh); - if (jgbz1 != null) { - if ("2".equals(jgbz1) || "4".equals(jgbz1)) { - return new Result("1", "二级报告已经被审核,撤回前无法删除!"); - } - } - if (jgbz0 != null) delsample(jyrq, is_instr_cbbg, ybh); - if (jgbz1 != null) delsample(jyrq, is_instr_ejbg, ybh); - } - } - delsample(jyrq, yq, ybh); - setComLog(jyrq, yq, ybh, yhdh, ComLogConstants.LG_M, "删除整个样本"); - return new Result("0", "保存成功"); - } - - private void delsample(Date jyrq, String yq, String ybh) { - commonUtil.delLabResultMedAll(jyrq, yq, ybh); - commonUtil.delLabResultAll(jyrq, yq, ybh); - commonUtil.deleteLabGraphAll(jyrq, yq, ybh); - commonUtil.deleteLabPatfee(jyrq, yq, ybh); - commonUtil.QXLabReqmain(jyrq, yq, ybh); - commonUtil.delLabPat(jyrq, yq, ybh); - } - - public Result newresult(LabResult labResult) { - String yq = labResult.getYq(); - Date jyrq = labResult.getJyrq(); - String ybh = labResult.getYbh(); - String xmdh = labResult.getXmdh(); - if ("".equals(xmdh) || xmdh == null) return new Result("-1", "项目代号不能为空!"); - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - if(labPat==null){ - labPat=new LabPat(); - labPat.setJyrq(jyrq); - labPat.setYbh(ybh); - labPat.setYq(yq); - labPat.setJgbz("0"); - } - if ("2".equals(labPat.getJgbz())) return new Result("-1", "结果已审核禁止修改!"); - if ("5".equals(labPat.getJgbz())) return new Result("-1", "结果已锁定禁止修改!"); - if ("1".equals(labPat.getJgbz())) return new Result("-1", "结果已初审禁止修改!"); - - boolean nowjz = checknowjz(labPat); - XmInfo xmInfo = commonUtil.getXmInfo(yq, xmdh); - List getXmAlarmdetail = commonUtil.getXmAlarmdetail(yq, xmdh); - labResult = setxmdhrefs(labPat, labResult, xmInfo, getXmAlarmdetail, nowjz); - commonUtil.insertLabResult(labResult); - List xmCalcList = commonUtil.getXmCalcbyxmdh(yq, xmdh); - if (!xmCalcList.isEmpty()) { - List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); - labResultList = calcsample(labPat, labResultList, xmCalcList); - List labResultList1 = labResultList.stream().filter(labR -> labR.getChangeflag() != null).filter(labR -> labR.getChangeflag() == 1).collect(Collectors.toList()); - if (!labResultList1.isEmpty()) { - for (LabResult labResult0 : labResultList1) { - changeresultf(labPat, labResult0, nowjz); - } - } - } - return new Result("0", "保存成功"); - } - - public Result changeresult(LabResult labResult) { - String yq = labResult.getYq(); - Date jyrq = labResult.getJyrq(); - String ybh = labResult.getYbh(); - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - if ("2".equals(labPat.getJgbz())) return new Result("-1", "结果已审核禁止修改!"); - if ("5".equals(labPat.getJgbz())) return new Result("-1", "结果已锁定禁止修改!"); - if ("1".equals(labPat.getJgbz())) return new Result("-1", "结果已初审禁止修改!"); - boolean nowjz = checknowjz(labPat); - changeresultf(labPat, labResult, nowjz); - return new Result("0", "保存成功"); - } - - /** - * 递归处理有计算项目关联其他项目都产生变化的联动处理 - * - * @param labPat - * @param labResult - * @param nowjz - * @return - */ - private int changeresultf(LabPat labPat, LabResult labResult, Boolean nowjz) { - String yq = labResult.getYq(); - String xmdh = labResult.getXmdh(); - Date jyrq = labResult.getJyrq(); - String ybh = labResult.getYbh(); - XmInfo xmInfo = commonUtil.getXmInfo(yq, xmdh); - List getXmAlarmdetail = commonUtil.getXmAlarmdetail(yq, xmdh); - labResult = setxmdhrefs(labPat, labResult, xmInfo, getXmAlarmdetail, nowjz); - commonUtil.updateLabResult(labResult); - List xmCalcList = commonUtil.getXmCalcbyxmdh(yq, xmdh); - if (!xmCalcList.isEmpty()) { - List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); - labResultList = calcsample(labPat, labResultList, xmCalcList); - List labResultList1 = labResultList.stream().filter(labR -> labR.getChangeflag() != null).filter(labR -> labR.getChangeflag() == 1).collect(Collectors.toList()); - if (!labResultList1.isEmpty()) { - for (LabResult labResult0 : labResultList1) { - changeresultf(labPat, labResult0, nowjz); - } - } - } - return 0; - } - - private Result checkZT(String sqh, String yq, String zt) { - if (zt.equals("9")) return new Result("-1", "当前条码已经作废,不允许上机!"); - String SP_GETTOWREQOK = commonUtil.getHISOPT("SP_GETTOWREQOK"); //申请单禁止重复上机 - String SP_GETTOWREQOKYQ = commonUtil.getHISOPT("SP_GETTOWREQOKYQ");//申请单禁止同仪器重复上机 - if (zt.equals("2")) { - if (SP_GETTOWREQOK.equals("1")) return new Result("-1", "当前条码已经上机!"); - if (SP_GETTOWREQOKYQ.equals("1")) { - List labPatList = commonUtil.getLabPatListBySqh(sqh); - for (LabPat labPat : labPatList) { - String yq1 = labPat.getYq(); - if (yq.equals(yq1)) return new Result("-1", "该条码已经在当前仪器上机,不允许重复上机!"); - } - - } - } - return new Result("0", "校验成功!"); - } - - private Result checkReqClass(String sqh, String yq, String bgddh) { - String value = commonUtil.getComOptValue(yq, "chkreqclass"); - if (!value.equals("1")) return new Result("0", ""); - LabInstrvsreqclass labInstrvsreqclass = new LabInstrvsreqclass(); - labInstrvsreqclass.setYq(yq); - List labInstrvsreqclassList = labInstrvsreqclassMapper.getLabInstrvsreqclassList(labInstrvsreqclass); - if (!labInstrvsreqclassList.isEmpty()) { - List collect = labInstrvsreqclassList.stream().filter(labInstrvsreqclass1 -> labInstrvsreqclass1.getBgddh().equals(bgddh)).collect(Collectors.toList()); - List collect1 = labInstrvsreqclassList.stream().filter(labInstrvsreqclass1 -> labInstrvsreqclass1.getBgddh().equals("MZ_" + bgddh)).collect(Collectors.toList()); - if (!collect.isEmpty()) return new Result("0", ""); - if (!collect1.isEmpty()) return new Result("0", ""); - } - Long count = lisWorkUtilsMapper.checkReqClass(sqh, yq); - if (count > 0) { - return new Result("0", ""); - } else { - return new Result("1", ""); - } - - } - - public Result saveReqInfo(LabReqmain labReqmain, LabPat labPat, boolean newpatinfo) { - String sqh = labReqmain.getSqh(); - String yq = labPat.getYq(); - String ybh = labPat.getYbh(); - String userId = labPat.getYhdh(); - Date jyrq=labPat.getJyrq(); - Date sjsj = commonUtil.getCurrentTime(); - //修改状态和时间 - commonUtil.zxLabReqmain(sqh, userId); - //保存lab_pat表信息 - labPat.setYblx(commonUtil.getComDictIdByName("BT", labReqmain.getYblx())); - labPat.setKsdh(commonUtil.getComDictIdByName("DP", labReqmain.getKsdh())); - labPat.setSjys(userId); - labPat.setBrdh(labReqmain.getBrdh()); - labPat.setBrxm(labReqmain.getBrxm()); - labPat.setBrxb(labReqmain.getBrxb()); - labPat.setBrly(labReqmain.getBrly()); - labPat.setSjys(labReqmain.getSqys()); - String brxb = labReqmain.getBrxb(); - if (brxb != null) brxb = brxb.trim(); - labPat.setBrxb(brxb); - labPat.setCh(labReqmain.getCh()); - Map ageFromBirthDay = AgeUtils.getAgeByBirthDate(labReqmain.getBrsr()); - String age = ageFromBirthDay.get("nl").toString(); - String unit = ageFromBirthDay.get("nldw").toString(); - labPat.setNl(Integer.parseInt(age)); - labPat.setNldw(unit); - labPat.setSqh(sqh); - labPat.setSqsj(sjsj); - labPat.setJgbz(LabPatConstants.DEFAULT); - labPat.setZd(labReqmain.getZd()); - labPat.setCyrq(labReqmain.getCysj()); - labPat.setJymd(LisUtil.substringByGbkWidth(labReqmain.getJymd(), 0, 50)); - labPat.setLastuser(userId); - labPat.setLastdt(sjsj); - labPat.setShcs(0); - labPat.setYljg(labReqmain.getYljg()); - labPat.setSfzh(labReqmain.getSfzh()); - labPat.setPhone(labReqmain.getPhone()); - labPat.setAddr(labReqmain.getAddr()); - labPat.setLstd(labReqmain.getLstd()); - labPat.setCjbw(labReqmain.getCjbw()); - String brxm0 = labPat.getBrxm(); - if (!"".equals(brxm0) && brxm0 != null) { - String pinyin = PinyinUtil.getFirstLetter(brxm0, ""); //拼音首字母 - if (pinyin.length() >= 9) { - pinyin = pinyin.substring(0, 9); - } - labPat.setZjf(pinyin); - } - if (newpatinfo) commonUtil.insertLabPat(labPat); - else commonUtil.updateLabPat(labPat); - commonUtil.insertLabResultByBarcode(jyrq, ybh, yq, sqh); - List labResultList=commonUtil.getLabResultList(jyrq, ybh, yq); - List labInputmdlList=chkautoinput(yq,ybh); - boolean setyblx=false; - if(!labInputmdlList.isEmpty()) { - for (LabInputmdl labInputmdl : labInputmdlList) { - labResultList = batchinput(jyrq, yq, ybh, labResultList, labInputmdl.getMbmc(), true); - String yblx = labInputmdl.getYblx(); - if (yblx != null && !yblx.isEmpty()) { - labPat.setYblx(yblx); - setyblx=true; - } - } - if(!labResultList.stream().filter(s->s.getChangeflag()==1).collect(Collectors.toList()).isEmpty()){ - if(setyblx) commonUtil.updateLabPat(labPat); - } - } - labResultList=saveallresult(labPat,labResultList); - // Map map=new HashMap<>(); - // map.put("labpat",labPat); - // map.put("labresult",labResultList); - return new Result("0", "保存成功!", labPat); - } - - public Result newPat(Date jyrq, String ybh, String yq, String brdh, String brly, String yljg, int problemId) { - if (brly == null) brly = ""; - if (yljg == null || yljg.isEmpty()) yljg = commonUtil.getLabInstr(yq).getYljg(); - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - boolean newpatinfo = true; - if (labPat != null) { - String jgbz = labPat.getJgbz(); - if (LabPatConstants.CONFIRM.equals(jgbz)) { - return new Result("-1", "当前样本已审核禁止修改!"); - } - newpatinfo = false; - String brdh0 = labPat.getBrdh(); - String sqh0 = labPat.getSqh(); - String brxm = labPat.getBrxm(); - if (problemId < 1) { - if ((brdh0 != null && !brdh0.isEmpty()) || (sqh0 != null && !sqh0.isEmpty()) || (brxm != null && !brxm.isEmpty())) { - return new Result("5", "当前样本已有病人信息是否替换!", 1); - } - } - } - String yhdh = SecurityUtils.getLoginUser().getUsername(); - - labPat = new LabPat(); - labPat.setJyrq(jyrq); - labPat.setYq(yq); - labPat.setYbh(ybh); - labPat.setBrdh(brdh); - if (!"".equals(brdh)) { - //4.获取病人信息 - DayMessage dayMessage = new DayMessage(); - dayMessage.setIp(""); - dayMessage.setYljg("1"); - dayMessage.setUserid(yhdh); - dayMessage.setMsgid(LisinterfaceNameConstants.DAYMESSAGE_GETPATIENT); - String val = brdh + "|" + brly + "|" + yljg; //这里有个医疗机构的,没有传,要考虑 - dayMessage.setMsg(val); - Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.DAYMESSAGE, dayMessage); - String msg = result.getMsg(); - String[] msgret = msg.split("\\|"); - - if (msgret.length > 8) { - labPat.setBrxm(msgret[0]); - labPat.setBrxb(msgret[1]); - String brsr = msgret[2]; - if (!"".equals(brsr) && brsr != null) { - Map ageFromBirthDay = AgeUtils.getAgeByBirthDate(brsr); - String age = ageFromBirthDay.get("nl").toString(); - String unit = ageFromBirthDay.get("nldw").toString(); - labPat.setNl(Integer.parseInt(age)); - labPat.setNldw(unit); - } - labPat.setBrdh(msgret[3]); - labPat.setFb(msgret[4]); - labPat.setBrly(msgret[5]); - labPat.setCh(msgret[6]); - labPat.setKsdh(msgret[7]); - labPat.setZd(msgret[8]); - } else { - List comPatList = commonUtil.getComPat(brdh, yljg); - if (!comPatList.isEmpty()) { - ComPat comPat = comPatList.get(0); - labPat.setBrxm(comPat.getBrxm()); - labPat.setCh(comPat.getCh()); - labPat.setBrxm(comPat.getXb()); - labPat.setBrly(comPat.getBrly()); - labPat.setFb(comPat.getFb()); - labPat.setKsdh(comPat.getKsdh()); - labPat.setZd(comPat.getZd()); - labPat.setMzh(comPat.getMzh()); - labPat.setSjys(comPat.getSjys()); - Date sr = comPat.getSr(); - if (sr != null) { - Map ageFromBirthDay = AgeUtils.getAgeByBirthDate(sr); - String age = ageFromBirthDay.get("nl").toString(); - String unit = ageFromBirthDay.get("nldw").toString(); - labPat.setNl(Integer.parseInt(age)); - labPat.setNldw(unit); - } - } - } - } - labPat = loaddefault(labPat); - List labInputmdlList=chkautoinput(yq,ybh); - if(!labInputmdlList.isEmpty()) { - List labResultList=commonUtil.getLabResultList(jyrq, ybh, yq); - for (LabInputmdl labInputmdl : labInputmdlList) { - labResultList = batchinput(jyrq, yq, ybh, labResultList, labInputmdl.getMbmc(), true); - String yblx = labInputmdl.getYblx(); - if (yblx != null && !yblx.isEmpty()) { - labPat.setYblx(yblx); - } - } - labResultList=saveallresult(labPat,labResultList); - } - String brxm0 = labPat.getBrxm(); - if (!"".equals(brxm0) && brxm0 != null) { - String pinyin = PinyinUtil.getFirstLetter(brxm0, ""); //拼音首字母 - if (pinyin.length() >= 9) { - pinyin = pinyin.substring(0, 9); - } - labPat.setZjf(pinyin); - } - //5.保存数据 - if (newpatinfo) commonUtil.insertLabPat(labPat); - else commonUtil.updateLabPat(labPat); - return new Result("0", "保存成功!", labPat); - } - - public Result newPatInfo(Date jyrq, String ybh, String sqh, String yq, int problemId) { - - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - boolean newpatinfo = true; - if (labPat != null) { - String jgbz = labPat.getJgbz(); - if (LabPatConstants.CONFIRM.equals(jgbz)) { - return new Result("-1", "当前样本已审核禁止修改!"); - } - newpatinfo = false; - String brdh = labPat.getBrdh(); - String sqh0 = labPat.getSqh(); - String brxm = labPat.getBrxm(); - if (problemId < 1) { - if ((brdh != null && !brdh.isEmpty()) || (sqh0 != null && !sqh0.isEmpty()) || (brxm != null && !brxm.isEmpty())) { - return new Result("5", "当前样本已有病人信息是否替换!", 1); - } - } - } - String yhdh = SecurityUtils.getLoginUser().getUsername(); - LabReqmain labReqmainOne = commonUtil.getLabReqmainOne(sqh); - if (labReqmainOne == null) { - //1.调用接口,获取申请单信息 - GetReqInterface getReqInterface = new GetReqInterface(); - getReqInterface.setSqh(sqh); - getReqInterface.setBrdh(""); - getReqInterface.setDept(""); - getReqInterface.setUserid(yhdh); - getReqInterface.setEtime(""); - getReqInterface.setEtime(""); - getReqInterface.setYljg(loginConfigParamUtil.getLoginConfigParam().getLoginYLJG()); - getReqInterface.setIp(IpUtils.getIpAddr()); - lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.GETREQINTERFACE, getReqInterface); - labReqmainOne = commonUtil.getLabReqmainOne(sqh); - } - if (labReqmainOne == null) return new Result("-1", "没有获取到申请单信息!"); - String zt = labReqmainOne.getZt().trim(); - //2.校验信息 - //校验状态信息 - Result result1 = checkZT(sqh, yq, zt); - if (!result1.getCode().equals("0")) return result1; - //校验条码类别 - Result result2 = checkReqClass(sqh, yq, labReqmainOne.getBgddh()); - if (!result2.getCode().equals("0")) return result2; - - //3.调用his上机接口, - SetReqStatus setReqStatus = new SetReqStatus(); - setReqStatus.setIp(""); - setReqStatus.setSqh(sqh); - setReqStatus.setUserid(yhdh); - setReqStatus.setStatus(LabReqmainConstants.SIGNFOR); - Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREQSTATUS, setReqStatus); - if (!result.getCode().equals("0")) return result; - - labPat = new LabPat(); - labPat.setJyrq(jyrq); - labPat.setYq(yq); - labPat.setYbh(ybh); - labPat.setSqh(sqh); - labPat = loaddefault(labPat); - - //5.保存数据 - Result result3 = saveReqInfo(labReqmainOne, labPat, newpatinfo); - if (!result3.getCode().equals("0")) return result3; - - //6.写日志 - lisWorkUtils.setComLog(jyrq, yq, ybh, yhdh, ComLogConstants.LG_SJ, sqh); - if (sqh != null && !sqh.isEmpty()) lisWorkUtils.setlabReqsteplog(sqh, LabReqmainConstants.START, yhdh); - - return new Result("0", "", labPat); - } - - /** - * 自动输入模板输入结果 - * @param yq 仪器 - * @param ybh 样本号 - * @return 返回 - */ - public List chkautoinput(String yq, String ybh){ - - List labInputmdlList; - if("1".equals(commonUtil.getHISOPT("zdsr"))){ - labInputmdlList=commonUtil.getLabInputmdlzdsr(yq); - }else{ - if(LisUtil.isNumber(ybh)) { - labInputmdlList = commonUtil.getLabInputmdlzdsrybh(yq, ybh); - }else{ - labInputmdlList=new ArrayList<>(); - } - } - return labInputmdlList; - } - /** - * 自动输入模板输入结果 - * @param jyrq 检验日期 - * @param yq 仪器 - * @param ybh 样本号 - * @param labResultList 结果集合 - * @Param mbmc 模板名称 - * @param savefalg 是否保存到数据库,空样本不存数据库,有样本存数据库 - * @return 返回 - */ - public List batchinput(Date jyrq, String yq, String ybh,List labResultList,String mbmc,boolean savefalg){ - List labInputmdlDetailList=commonUtil.getLabInputmdlDetail(yq,mbmc); - if(labInputmdlDetailList.isEmpty()) return labResultList; - for(LabInputmdlDetail labInputmdlDetail:labInputmdlDetailList){ - List findone=labResultList.stream().filter(s->s.getXmdh().equals(labInputmdlDetail.getXmdh())).collect(Collectors.toList()); - if(findone.isEmpty()){ - LabResult labResult=new LabResult(); - labResult.setJyrq(jyrq); - labResult.setYq(yq); - labResult.setYbh(ybh); - labResult.setXmdh(labInputmdlDetail.getXmdh()); - labResult.setCsjg(labInputmdlDetail.getMrz()); - labResult.setXmmc(labInputmdlDetail.getXmmc()); - if(!savefalg)labResult.setChangeflag(2); - else { - labResult.setChangeflag(1); - commonUtil.updateLabResult(labResult); - } - labResultList.add(labResult); - } - } - return labResultList; - } - public LabPat loaddefault(LabPat labPat) { - Date jyrq = labPat.getJyrq(); - String yq = labPat.getYq(); - String ybh = labPat.getYbh(); - Date ldt_now = commonUtil.getCurrentTime(); - if (labPat.getSqsj() == null) labPat.setSqsj(ldt_now); - if (labPat.getYljg() == null) labPat.setYljg(commonUtil.getLabInstr(yq).getYljg()); - SysLoginParam loginConfigParam = loginConfigParamUtil.getLoginConfigParam(); - String Current_instrid = loginConfigParam.getCurrent_instrid(); - List labInputcolList = loginConfigParam.getCurrent_labInputcol(); - if (!yq.equals(Current_instrid)) { - loginConfigParam.setCurrent_yhdh_sybh(""); - loginConfigParam.setCurrent_yhdh_eybh(""); - loginConfigParam.setCurrent_hdys_sybh(""); - loginConfigParam.setCurrent_hdys_eybh(""); - labInputcolList = commonUtil.getLabInputcol(yq); - loginConfigParam.setCurrent_labInputcol(labInputcolList); - } - List labInputcolList0 = labInputcolList.stream().filter(labInputcol0 -> labInputcol0.getMrz() != null && !labInputcol0.getMrz().isEmpty()).collect(Collectors.toList()); - String mrz = null; - for (LabInputcol labInputcol : labInputcolList0) { - if (!"!".equals(labInputcol.getZdmc())) { - String zdmc = labInputcol.getZdmc(); - - switch (zdmc) { - case "dysj": - case "cyrq": - case "sqsj": - case "nl": - break; - case "yhdh": - String yhdh0 = labPat.getYhdh(); - if (yhdh0 == null || yhdh0.isEmpty()) { - mrz = labInputcol.getMrz(); - if (mrz != null && !mrz.isEmpty()) { - String sybh = loginConfigParam.getCurrent_yhdh_sybh(); - String eybh = loginConfigParam.getCurrent_yhdh_eybh(); - if (!"".equals(sybh) && !"".equals(eybh) && sybh != null && eybh != null) { - if (LisUtil.isStringBetween(ybh, sybh, eybh)) { - labPat.setYhdh(mrz); - } - } else { - labPat.setYhdh(mrz); - } - } - } - break; - case "hdys": - String hdys0 = labPat.getYhdh(); - if (hdys0 == null || hdys0.isEmpty()) { - String sybh = loginConfigParam.getCurrent_hdys_sybh(); - String eybh = loginConfigParam.getCurrent_hdys_eybh(); - if (!"".equals(sybh) && !"".equals(eybh)) { - if (LisUtil.isStringBetween(ybh, sybh, eybh)) { - labPat.setHdys(mrz); - } - } else { - labPat.setHdys(mrz); - } - } - break; - default: - String value = (String) EntityUtils.getItem(labPat, zdmc); - if (value == null || value.isEmpty()) { - mrz = labInputcol.getMrz(); - if (mrz != null && !mrz.isEmpty()) { - EntityUtils.setItem(labPat, zdmc, mrz); - } - } - } - } - } - String yhdh = SecurityUtils.getLoginUser().getUsername(); - if (labPat.getYhdh() == null || labPat.getYhdh().isEmpty()) - labPat.setYhdh(SecurityUtils.getLoginUser().getUsername()); - labPat.setLastuser(yhdh); - labPat.setLastdt(ldt_now); - Integer shcs = labPat.getShcs(); - if (shcs == null) labPat.setShcs(0); - if (labPat.getJgbz() == null) labPat.setJgbz(LabPatConstants.DEFAULT); - return labPat; - } +public class LisWorkUtils extends LisWorkconfirm{ } diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkcom.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkcom.java new file mode 100644 index 0000000..45075b4 --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkcom.java @@ -0,0 +1,1196 @@ +package com.czlis.interfaceCommon.utils; + +import cn.hutool.extra.pinyin.PinyinUtil; +import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.entity.SysLoginParam; +import com.czlis.common.core.domain.entity.lis.*; +import com.czlis.common.utils.StringUtils; +import com.czlis.interfaceCommon.constants.ComLogConstants; +import com.czlis.interfaceCommon.constants.LabPatConstants; +import com.czlis.interfaceCommon.constants.LabReqmainConstants; +import com.czlis.interfaceCommon.constants.LisinterfaceNameConstants; +import com.czlis.interfaceCommon.mapper.LabInstrvsreqclassMapper; +import com.czlis.interfaceCommon.mapper.LabReqdetailMapper; +import com.czlis.interfaceCommon.mapper.LisWorkUtilsMapper; +import com.czlis.interfaceCommon.pojo.inter.DayMessage; +import com.czlis.interfaceCommon.pojo.inter.GetReqInterface; +import com.czlis.interfaceCommon.pojo.inter.SetReqStatus; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; +import java.util.stream.Collectors; +@Component +@Slf4j +public class LisWorkcom extends LisWorkBase{ + @Autowired + LisInterfaceUtil lisInterfaceUtil; + @Autowired + LisWorkUtilsMapper lisWorkUtilsMapper; + @Autowired + LabInstrvsreqclassMapper labInstrvsreqclassMapper; + @Autowired + LabReqdetailMapper labReqdetailMapper; + public Result saveallresult(List labResultList) { + if(labResultList == null || labResultList.isEmpty()) return new Result("-1", "结果集为空!"); + Date jyrq0 = labResultList.get(0).getJyrq(); + String yq0 = labResultList.get(0).getYq(); + String ybh0 = labResultList.get(0).getYbh(); + if(jyrq0==null)return new Result("-1", "主键为空!"); + if(yq0==null||yq0.isEmpty())return new Result("-1", "主键为空!"); + if(ybh0==null||ybh0.isEmpty())return new Result("-1", "主键为空!"); + for (LabResult labResult : labResultList) { + Date jyrq = labResult.getJyrq(); + String yq = labResult.getYq(); + String ybh = labResult.getYbh(); + String xmdh = labResult.getXmdh(); + if(jyrq==null)return new Result("-1", "主键为空!"); + if(yq==null||yq.isEmpty())return new Result("-1", "主键为空!"); + if(ybh==null||ybh.isEmpty())return new Result("-1", "主键为空!"); + if(xmdh==null||xmdh.isEmpty())return new Result("-1", "主键为空!"); + } + //commonUtil.delLabResultAll(jyrq0,yq0,ybh0); + for (LabResult labResult : labResultList) { + if(labResult.getChangeflag() != null && labResult.getChangeflag()==2) { + commonUtil.delLabResult(labResult); + commonUtil.insertLabResult(labResult); + labResult.setChangeflag(0); + } + } + return saveresult(labResultList); + } + public Result saveallresult(Date jyrq, String yq, String ybh) { + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + return saveresult(labResultList); + } + public Result saveresult(List labResultList) { + if (labResultList == null || labResultList.isEmpty()) return new Result("-1", "结果为空!"); + Date jyrq = labResultList.get(0).getJyrq(); + String yq = labResultList.get(0).getYq(); + String ybh = labResultList.get(0).getYbh(); + int finsh = 1; + for (LabResult labResult : labResultList) { + String csjg = labResult.getCsjg(); + if ("未做".equals(csjg)) { + finsh = 0; + } + if (csjg != null) { + if (csjg.contains("ERR")) finsh = 0; + if (csjg.contains("需稀释")) finsh = 0; + if (csjg.contains("需复做")) finsh = 0; + + } + } + String yqdl = commonUtil.getYqdl(yq); + //查询病人信息 + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + if(labPat==null) return new Result("0", "保存成功!"); + String finish = labPat.getFinish(); + if (!"细菌仪".equals(yqdl) && finish != null && finsh == 1) labPat.setFinish("1"); + labResultList = saveallresult(labPat, labResultList); + boolean wjz = getAlarmFlag(labResultList); + //同步主表危急值标识 + String alarmflag = labPat.getAlarmflag(); + if (("1".equals(alarmflag) && !wjz)) { + labPat.setAlarmflag(""); + } else if (("".equals(alarmflag) || " ".equals(alarmflag) || alarmflag == null) && wjz) { + labPat.setAlarmflag("1"); + } + commonUtil.updateLabPat(labPat); + return new Result("0", "保存成功!"); + } + /** + * 保存所有结果 + * + * @param labPat + * @param labResultList + * @return + */ + List saveallresult(LabPat labPat, List labResultList) { + Date jyrq = labPat.getJyrq(); + String yq = labPat.getYq(); + String ybh = labPat.getYbh(); + //清除空白结果 + String keepnodataitem = commonUtil.getComOptValue(yq, "keepnodataitem"); + if (!"1".equals(keepnodataitem)) { + commonUtil.delNullLabResult(jyrq, yq, ybh); + } + //计算项目更新 + List xmCalcList = commonUtil.getXmCalcList(yq); + if (!xmCalcList.isEmpty()) { + labResultList = calcsample(labPat, labResultList, xmCalcList); + } + //补写结果表申请单项目编号 + String sqh = labPat.getSqh(); + if (sqh != null && !sqh.isEmpty()) setItemSqxmdh(jyrq, yq, ybh, sqh); + //保存最新参考值结果标志 + labResultList = saverefs(labPat); + return labResultList; + } + private void setItemSqxmdh(Date jyrq, String yq, String ybh, String sqh) { + if (sqh != null && !sqh.isEmpty()) { + int sl = labReqdetailMapper.getCountByKey(sqh); + if (sl == 1) { + String sqxmdh = lisWorkUtilsMapper.selectSqxmdh(sqh); + lisWorkUtilsMapper.updatelabresultsqxmdhall(jyrq, yq, ybh, sqxmdh); + } else { + lisWorkUtilsMapper.updatelabresultsqxmdh(jyrq, yq, ybh, sqh); + } + } + } + public Result calcsample(Date jyrq, String yq, String ybh) { + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + List xmCalcList = commonUtil.getXmCalcList(yq); + if (!xmCalcList.isEmpty()) { + calcsample(labPat, labResultList, xmCalcList); + } + return new Result("0", "保存成功!"); + } + private List calcsample(LabPat labPat, List labResultList, List xmCalcList) { + Date jyrq = labPat.getJyrq(); + String yq = labPat.getYq(); + String ybh = labPat.getYbh(); + String jsxmold = ""; + for (XmCalc xmCalc : xmCalcList) { + String jsxm = xmCalc.getJsxm(); + if (!jsxmold.equals(jsxm)) { + jsxmold = jsxm; + String jsgs = xmCalc.getJsgs(); + boolean setjgsg = true; + boolean lb_jsx = false; + Map variables = new HashMap<>(); + String[] parameters = CalcUtils.getParameters(jsgs); + for (String itemcode : parameters) { + if ("SEX".equals(itemcode)) { + String sex = labPat.getBrxb(); + if (sex == null || sex.isEmpty() || " ".equals(sex)) { + setjgsg = false; + break; + } + sex = sex.trim(); + if ("男".equals(sex)) sex = "1"; + if ("女".equals(sex)) sex = "2"; + variables.put("SEX", sex); + lb_jsx = true; + } else if ("AGE".equals(itemcode)) { + if (labPat.getNl() == null || labPat.getNldw() == null || labPat.getNldw().isEmpty() || " ".equals(labPat.getNldw())) { + setjgsg = false; + break; + } + double age = AgeUtils.getDecimalAge(AgeUtils.getBirthDateByAge(labPat.getNl(), labPat.getNldw())); + variables.put("AGE", String.valueOf(age)); + lb_jsx = true; + } else { + List collect = labResultList.stream().filter(result -> result.getXmdh().equals(itemcode)).collect(Collectors.toList()); + if (!collect.isEmpty()) { + variables.put(itemcode, collect.get(0).getCsjg()); + } else { + setjgsg = false; + break; + } + } + } + if (setjgsg) { + String result = CalcUtils.getValueFromCalc(jsgs, variables, "0"); + if ("0".equals(result) && lb_jsx) result = null; + if (result != null && !result.trim().isEmpty()) { + //插入结果值 + Optional collect0 = labResultList.stream().filter(labR -> labR.getXmdh().equals(jsxm)).findFirst(); + if (collect0.isPresent()) { + LabResult labResult = collect0.get(); + if (LisUtil.isNumber(result)) { + Integer xsws = labResult.getXsws(); + if (xsws >= 0) result = LisUtil.round(result, xsws); + } + // log.info("result:{},getCsjg:{}",result,labResult.getCsjg()); + if (!result.equals(labResult.getCsjg())) { + labResult.setCsjg(result); + String finalResult = result; + collect0.ifPresent(labR -> labR.setCsjg(finalResult)); + commonUtil.updateLabResult(labResult); + labResult.setChangeflag(1); + collect0.ifPresent(labR -> labR.setChangeflag(1)); + } + } else { + XmInfo xmInfo = commonUtil.getXmInfo(yq, jsxm); + if (LisUtil.isNumber(result)) { + Integer xsws = xmInfo.getXsws(); + if (xsws >= 0) result = LisUtil.round(result, xsws); + } + LabResult labResult = new LabResult(); + labResult.setJyrq(jyrq); + labResult.setYq(yq); + labResult.setYbh(ybh); + labResult.setXmdh(jsxm); + labResult.setCsjg(result); + commonUtil.insertLabResult(labResult); + labResult.setXsws(xmInfo.getXsws()); + labResult.setYgzd(xmInfo.getYgzd()); + labResult.setYgzq(xmInfo.getYgzq()); + labResult.setXmmc(xmInfo.getXmmc()); + labResult.setChangeflag(1); + labResultList.add(labResult); + + } + } + } + } + } + return labResultList; + } + public Result saverefs(Date jyrq, String yq, String ybh) { + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + List labResultList = saverefs(labPat); + boolean wjz = getAlarmFlag(labResultList); + //同步主表危急值标识 + String alarmflag = labPat.getAlarmflag(); + if (("1".equals(alarmflag) && !wjz)) { + labPat.setAlarmflag("1"); + commonUtil.updateLabPat(labPat); + } else if (("".equals(alarmflag) || alarmflag == null) && wjz) { + labPat.setAlarmflag(""); + commonUtil.updateLabPat(labPat); + } + return new Result("0", "保存成功!"); + } + /** + * 计算项目参考值结果异常标志(内部使用) + * + * @param labPat + * @return 返回值0正常, 1有危急值明细存在 + */ + private List saverefs(LabPat labPat) { + Date jyrq = labPat.getJyrq(); + String yq = labPat.getYq(); + String ybh = labPat.getYbh(); + String yqdl = commonUtil.getYqdl(yq); + boolean lb_setbj = true; + boolean nowjz = checknowjz(labPat); + List labResultList = null; + if (!"细菌仪".equals(yqdl)) { + Map map = new HashMap<>(); + map.put("jyrq", jyrq); + map.put("yq", yq); + map.put("ybh", ybh); + map.put("settype", "1"); + map.put("retcode", ""); + map.put("retmsg", ""); + lisWorkUtilsMapper.spSetrefs(map); + String retCode = String.valueOf(map.get("retcode")); + String retMsg = String.valueOf(map.get("retmsg")); + log.info("调用存储过程{}返回值:{},{}", "sp_setrefs", retCode, retMsg); + if (retCode == null || retCode.isEmpty() || "-1".equals(retCode)) lb_setbj = false; + labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + log.info("labResultList.size:{}", labResultList.size()); + List xmInfoList = commonUtil.getXmInfoList(yq); + List xmAlarmdetailList = null; + if (!nowjz) { + xmAlarmdetailList = commonUtil.getXmAlarmdetailList(yq); + } + for (LabResult labResult : labResultList) { + String csjg = labResult.getCsjg(); + boolean lb_nummode = LisUtil.isTureNumber(csjg); + String ygzq = labResult.getYgzq(); + String ygzd = labResult.getYgzd(); + //当结果为数值并且与周期诊断无关,计算存储过程保存成功后,只进行危急值判断 + if (lb_nummode && lb_setbj && !"Y".equals(ygzd) && !"Y".equals(ygzq)) { + if (nowjz) { + String resultalarmflag1 = labResult.getAlarm_flag(); + if(resultalarmflag1 != null)resultalarmflag1=resultalarmflag1.trim(); + else resultalarmflag1=""; + if (!resultalarmflag1.isEmpty()) { + labResult.setAlarm_flag(""); + commonUtil.updateLabResult(labResult); + } + } else { + String xmdh = labResult.getXmdh(); + List getXmAlarmdetail = xmAlarmdetailList.stream().filter(detail -> detail.getXmdh().equals(xmdh)).collect(Collectors.toList()); + int wjz = alarmcondition(labPat, labResult, getXmAlarmdetail); + if (wjz == 1) {//危急值标识特殊判断存在时优先使用特殊结果 + String jgbz = labResult.getResult_flag(); + if ("".equals(jgbz) || jgbz == null) jgbz = "H"; + if (!"L".equals(jgbz)) jgbz = "H"; + String resultalarmflag = labResult.getAlarm_flag().trim(); + if (!jgbz.equals(resultalarmflag)) { + labResult.setAlarm_flag(jgbz); + commonUtil.updateLabResult(labResult); + } + } else if (wjz == 0) { + String jgbz = ""; + String resultalarmflag = labResult.getAlarm_flag().trim(); + if (!jgbz.equals(resultalarmflag)) { + labResult.setAlarm_flag(jgbz); + commonUtil.updateLabResult(labResult); + } + } + } + } else { + String xmdh = labResult.getXmdh(); + List xmInfo0 = xmInfoList.stream().filter(xm -> xm.getXmdh().equals(xmdh)).collect(Collectors.toList()); + if (!xmInfo0.isEmpty()) { + XmInfo xmInfo = xmInfo0.get(0); + List getXmAlarmdetail = xmAlarmdetailList.stream().filter(detail -> detail.getXmdh().equals(xmdh)).collect(Collectors.toList()); + LabResult labResult0 = setxmdhrefs(labPat, labResult, xmInfo, getXmAlarmdetail, nowjz); + labResult.setCsjg(csjg); + labResult.setDw(labResult0.getDw()); + labResult.setRefs(labResult0.getRefs()); + labResult.setResult_flag(labResult0.getResult_flag()); + labResult.setJgbz(labResult0.getJgbz()); + labResult.setAlarm_flag(labResult0.getAlarm_flag()); + } + } + } + + } + return labResultList; + } + /** + * 特定条件危急值判断 + * + * @param labPat + * @param labResult + * @return + */ + private int alarmcondition(LabPat labPat, LabResult labResult, List getXmAlarmdetail) { + if (getXmAlarmdetail == null) return -1; + boolean lb_fcb, lb_hasval = false; + String csjg = labResult.getCsjg(); + if (csjg == null || csjg.trim().isEmpty()) return -1; + String yq = labPat.getYq(); + String xmdh = labResult.getXmdh(); + String brxm = ""; + String brdh = ""; + String ksdh = labPat.getKsdh(); + if (ksdh != null && !ksdh.trim().isEmpty()) { + String ksdh1 = commonUtil.getComDictIdByName("DP", ksdh); + if (ksdh1 != null && !ksdh1.trim().isEmpty()) ksdh = ksdh1; + } + String ybzt = labPat.getYbzt(); + if (ybzt != null && !ybzt.trim().isEmpty()) { + String ybzt1 = commonUtil.getComDictIdByName("ST", ybzt); + if (ybzt1 != null && !ybzt1.trim().isEmpty()) ybzt = ybzt1; + } + String zd = labPat.getZd(); + for (XmAlarmdetail xmAlarmdetail : getXmAlarmdetail) { + String samplecondition = xmAlarmdetail.getSamplecondition(); + lb_fcb = false; + if (samplecondition.toLowerCase().contains("[初报]")) { + Map map = new HashMap<>(); + map.put("xmdh", xmdh); + map.put("jyrq", labPat.getJyrq()); + if (samplecondition.toLowerCase().contains("brxm")) brxm = labPat.getBrxm(); + if (samplecondition.toLowerCase().contains("brdh")) brdh = labPat.getBrdh(); + map.put("brxm", brxm); + map.put("brdh", brdh); + int limitcount = lisWorkUtilsMapper.getLimitCount(map); + if (limitcount > 0) lb_fcb = true; + samplecondition = samplecondition.replace("'brxm'", "1"); + samplecondition = samplecondition.replace("'brdh'", "1"); + samplecondition = samplecondition.replace("[初报]", "[CB]"); + } + + labPat.setYblx(commonUtil.getComDictIdByName("BT", labPat.getYblx())); + labPat.setKsdh(commonUtil.getComDictIdByName("DP", labPat.getKsdh())); + samplecondition = samplecondition.replace("[科室]", "[DEPT]"); + samplecondition = samplecondition.replace("[诊断]", "[DIAG]"); + samplecondition = samplecondition.replace("[样本状态]", "[YBZT]"); + Map variables = new HashMap<>(); + variables.put("CB", "1"); + variables.put("DEPT", ksdh); + variables.put("DIAG", zd); + variables.put("YBZT", ybzt); + boolean ref = CalcUtils.getBooleanFromCalc(samplecondition, variables); + if (ref) { + if (lb_fcb) return 0; + lb_hasval = true; + String resultcondition = xmAlarmdetail.getResultcondition(); + resultcondition = resultcondition.replace("[结果]", "[RESULT]"); + Map variables1 = new HashMap<>(); + variables1.put("RESULT", csjg); + boolean ref1 = CalcUtils.getBooleanFromCalc(resultcondition, variables1); + if (ref1) return 1; + } + } + if (lb_hasval) return 0; + else return -1; + } + + /** + * 明细结果计算参考值异常标志危急值标志并更新 + * + * @param labPat + * @param labResult + * @return + */ + private LabResult setxmdhrefs(LabPat labPat, LabResult labResult, XmInfo xmInfo, List getXmAlarmdetail, boolean nowjz) { + String yq = labPat.getYq(); + String resultflag = "M", wjzflag = ""; + String xmdh = labResult.getXmdh(); + String csjg = labResult.getCsjg(); + if (csjg == null || csjg.isEmpty()) return labResult; + String csjgnew = LisUtil.getOverNumber(csjg.trim()); + boolean lb_nummode = LisUtil.isNumber(csjgnew); + String dw = xmInfo.getDw(); + String refs = xmInfo.getDyckz(); + //当结果为数值时计算上下限 + if (lb_nummode) { + Double ckxx = xmInfo.getCkxx(); + Double cksx = xmInfo.getCksx(); + Double llimit = xmInfo.getLlimit(); + Double hlimit = xmInfo.getHlimit(); + String ygxb = xmInfo.getYgxb(); + String ygnl = xmInfo.getYgnl(); + String ygbb = xmInfo.getYgbb(); + String ygzq = xmInfo.getYgzq(); + String ygzd = xmInfo.getYgzd(); + String sex = null; + if ("Y".equals(ygxb)) { + sex = labPat.getBrxb(); + if (sex == null) sex = ""; + sex=sex.trim(); + } + String yblx = null; + if ("Y".equals(ygbb)) { + yblx = labPat.getYblx(); + String bb = commonUtil.getComDictIdByName("BT", yblx); + if (bb != null && !bb.trim().isEmpty()) yblx = bb; + } + String zd = null; + if ("Y".equals(ygzd)) { + zd = labPat.getZd(); + if (zd == null) { + zd = ""; + } + } + String slzq = null; + if ("Y".equals(ygzq)) { + slzq = labPat.getSlzq(); + if (slzq != null) { + String zq = commonUtil.getComDictIdByName("SLZQ", slzq); + if (zq != null && !zq.trim().isEmpty()) slzq = zq; + } else { + slzq = ""; + } + + } + Double age = null; + if ("Y".equals(ygnl)) { + age = AgeUtils.getDecimalAge(AgeUtils.getBirthDateByAge(labPat.getNl(), labPat.getNldw())); + } + XmRef xmRef = new XmRef(); + if ("Y".equals(ygxb) || "Y".equals(ygbb) || "Y".equals(ygnl) || "Y".equals(ygzd) || "Y".equals(ygzq)) { + + xmRef = commonUtil.getXmRefValue(yq, xmdh, yblx, sex, age, zd, slzq); + } + if (xmRef != null) { + ckxx = xmRef.getCkxx(); + cksx = xmRef.getCksx(); + refs = xmRef.getDyck(); + Double alterxx = xmRef.getAlterxx(); + Double altersx = xmRef.getAltersx(); + if (alterxx != null) llimit = alterxx; + if (altersx != null) hlimit = altersx; + } + //数值型结果判断 + double csjgnum = Double.parseDouble(csjgnew); + if (ckxx != null) if (csjgnum < ckxx) resultflag = "L"; + if (cksx != null) if (csjgnum > cksx) resultflag = "H"; + if (!nowjz) { + int wjzf = alarmcondition(labPat, labResult, getXmAlarmdetail); + if (wjzf == -1) { + if (llimit != null) if (csjgnum < llimit) wjzflag = "L"; + if (hlimit != null) if (csjgnum > hlimit) wjzflag = "H"; + } else if (wjzf == 1) { + wjzflag = resultflag; + } + } + } else { + //文字型结果判断 + String jgbzold = labResult.getJgbz(); + String lmtflag = getitemlmtflag(yq, xmdh, csjg); + if ("P".equals(jgbzold) && (csjg.contains("阳") || csjg.contains("+") || csjg.contains(":")) && (lmtflag == null || lmtflag.trim().isEmpty())) + lmtflag = "P"; + resultflag = lmtflag; + if (!nowjz) { + if ("J".equals(lmtflag)) wjzflag = "H"; + int wjzf = alarmcondition(labPat, labResult, getXmAlarmdetail); + if (wjzf == 1) wjzflag = "H";//满足特定危机值条件 + if (wjzf == 0) wjzflag = "";//存在特定危机值条件,但不满足不提示 + } + } + //小数保留位数计算 + Integer xsws = xmInfo.getXsws(); + if (xsws >= 0) csjg = LisUtil.round(csjg, xsws); + if (csjg == null) csjg = ""; + if (dw == null) dw = ""; + if (refs == null) refs = ""; + if (resultflag == null) resultflag = ""; + if (wjzflag == null) wjzflag = ""; + if (!csjg.equals(labResult.getCsjg()) || !dw.equals(labResult.getDw()) || !refs.equals(labResult.getRefs()) || + !resultflag.equals(labResult.getResult_flag()) || !resultflag.equals(labResult.getJgbz()) || !wjzflag.equals(labResult.getAlarm_flag())) { + labResult.setCsjg(csjg); + labResult.setDw(dw); + labResult.setRefs(refs); + labResult.setResult_flag(resultflag); + labResult.setJgbz(resultflag); + labResult.setAlarm_flag(wjzflag); + commonUtil.updateLabResult(labResult); + } + return labResult; + } + public String getitemlmtflag(String yq, String xmdh, String csjg) { + String jgbz; + if (csjg == null || csjg.isEmpty()) { + return ""; + } + String csjg1 = "", csjg2 = ""; + java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\((.*?)\\)"); + java.util.regex.Matcher matcher = pattern.matcher(csjg); + if (matcher.find()) { + csjg1 = matcher.group(1); + } + int index = csjg.indexOf(","); + if (index == -1) csjg2 = StringUtils.substring(csjg, index + 1); + jgbz = commonUtil.getXmValJgbz(yq, xmdh, csjg, csjg1, csjg2); + if (jgbz == null) { + return ""; + } + return jgbz; + } + /** + * 备注自动登记血培养污染记录 + * + * @param labPat + * @return + */ + int checkxpywrgjz(LabPat labPat) { + String ls_bz = labPat.getBz(); + String ls_sqh = labPat.getSqh(); + String yq = labPat.getYq(); + if (ls_sqh == null || ls_sqh.isEmpty()) return 0; + if (ls_bz == null || ls_bz.isEmpty()) return 0; + String ls_xpywr = commonUtil.getComOptValue(yq, "xpywrgjz"); + if (ls_xpywr == null || ls_xpywr.isEmpty()) return 0; + if (ls_bz.contains(ls_xpywr)) { + String ls_yblx = labPat.getYblx(); + if (ls_yblx == null || ls_yblx.isEmpty()) return 0; + String ls_yblxmc = commonUtil.getComDictNameById("BT", ls_yblx); + if (ls_yblxmc == null || ls_yblxmc.isEmpty()) return 0; + if (ls_yblxmc.contains("血") || ls_yblx.contains("血")) { + String ls_xpywrdh = commonUtil.getComOptValue(yq, "xpywrdh"); + if (ls_xpywrdh == null || ls_xpywrdh.isEmpty()) return 0; + String ls_hdys = labPat.getHdys(); + if (ls_hdys == null || ls_hdys.isEmpty()) ls_hdys = labPat.getYhdh(); + LabRefused labRefused = new LabRefused(); + labRefused.setSqh(ls_sqh); + labRefused.setRefusetext(ls_xpywrdh); + List labRefusedList = commonUtil.getLabRefusedList(labRefused); + if (labRefusedList.isEmpty()) { + labRefused.setRefusedtime(new Date()); + labRefused.setKsdh(labPat.getKsdh()); + labRefused.setBz("0"); + labRefused.setRefuseder(ls_hdys); + commonUtil.insertLabRefused(labRefused); + } + } + } + return 0; + } + /** + * 获取危急值信息集合 + * + * @param labResultList + * @return + */ + String getAlarmMsg(List labResultList) { + StringBuilder wjzmsg = new StringBuilder(); + List labResultList0 = labResultList.stream().filter(xm ->xm.getAlarm_flag() != null).filter(xm -> !xm.getAlarm_flag().trim().isEmpty()).collect(Collectors.toList()); + if (!labResultList0.isEmpty()) { + for (LabResult labResult : labResultList0) { + String xmmc = labResult.getXmmc(); + String cjsg = labResult.getCsjg(); + if (!"".equals(cjsg) && cjsg != null) { + cjsg = ",结果:" + cjsg; + } else { + cjsg = ""; + } + + wjzmsg.append("项目:").append(xmmc).append(cjsg).append(LisUtil.LINE_SEPARATOR); + } + } + return wjzmsg.toString(); + } + /** + * 登记危急值记录 + * + * @param jyrq + * @param yq + * @param ybh + * @param yhdh + * @param qrr + * @param phone + * @param tzfs + * @return + */ + public Result reglimit(Date jyrq, String yq, String ybh, String yhdh, String qrr, String phone, String tzfs, int problemId) { + log.info("登记危急值{}", tzfs); + if (problemId < 5) { + LabPatwarning labPatwarning0 = commonUtil.getLabPatwarning(jyrq, yq, ybh); + if (labPatwarning0 != null) { + return new Result("4", "该标本已经登记,是否重新登记?", 5); + } + } + commonUtil.deleteLabPatwarning(jyrq, yq, ybh); + commonUtil.deleteLabResultwarning(jyrq, yq, ybh); + LabPatwarning labPatwarning = new LabPatwarning(); + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + String jzbz = labPat.getJzbz().trim(); + if (!"1".equals(jzbz)) { + jzbz = "0"; + } + if ("".equals(yhdh) || yhdh == null) { + yhdh = labPat.getHdys(); + } + if ("".equals(yhdh) || yhdh == null) { + yhdh = getnickname(); + } else { + String yhxm = commonUtil.getComUsrName(yhdh); + if (yhxm != null && yhxm.isEmpty()) yhdh = yhxm; + } + String sjys = labPat.getSjys(); + String sjysname = commonUtil.getComDictNameById("SRD", sjys); + if (sjysname == null || sjysname.isEmpty()) { + sjysname = sjys; + } + if ("".equals(qrr) || qrr == null) { + qrr = labPat.getSjys(); + } + labPatwarning.setJyrq(jyrq); + labPatwarning.setYq(yq); + labPatwarning.setYbh(ybh); + labPatwarning.setLb(jzbz); + labPatwarning.setBgr(yhdh); + labPatwarning.setBtzr(sjysname); + labPatwarning.setTzsj(new Date()); + if ("2".equals(tzfs)) { + labPatwarning.setTzfs("电话通知"); + labPatwarning.setQrr(qrr); + labPatwarning.setQrsj(new Date()); + } else { + labPatwarning.setTzfs("系统通知"); + } + commonUtil.insertLabPatwarning(labPatwarning); + String ls_bz = ""; + List labResultList0 = labResultList.stream().filter(xm -> xm.getAlarm_flag() != null).filter(xm -> !xm.getAlarm_flag().trim().isEmpty()).collect(Collectors.toList()); + if (!labResultList0.isEmpty()) { + for (LabResult labResult : labResultList0) { + LabResultwarning labResultwarning = new LabResultwarning(); + labResultwarning.setJyrq(jyrq); + labResultwarning.setYq(yq); + labResultwarning.setYbh(ybh); + labResultwarning.setXmdh(labResult.getXmdh()); + labResultwarning.setCsjg(labResult.getCsjg()); + labResultwarning.setJgbz("J"); + labResultwarning.setBz(""); + commonUtil.insertLabResultwarning(labResultwarning); + if ("".equals(ls_bz)) { + ls_bz = labResult.getXmdh(); + } else { + ls_bz = ls_bz + "," + labResult.getXmdh(); + } + } + } + String registerlimit = commonUtil.getComOptValue(yq, "registerlimit"); + if ("1".equals(registerlimit)) { + String bz = labPat.getBz(); + if (bz == null) bz = ""; + ls_bz = "*" + ls_bz + "等值超过生命危急值" + "*"; + if (!bz.contains(ls_bz)) { + bz = bz + ls_bz; + labPat.setBz(bz); + commonUtil.updateLabPat(labPat); + } + } + return new Result("0", "登记成功"); + } + /** + * 修改病人信息,输入病人代号需要单独处理 + * + * @param jyrq + * @param yq + * @param ybh + * @param column + * @param value + * @return + */ + public Result changePatColumn(Date jyrq, String yq, String ybh, String column, String value) { + String jgbz = commonUtil.getLabPatJgbz(jyrq, yq, ybh); + if ("2".equals(jgbz)) return new Result("-1", "结果已审核禁止修改!"); + if ("5".equals(jgbz)) return new Result("-1", "结果已锁定禁止修改!"); + if ("1".equals(jgbz)) return new Result("-1", "结果已初审禁止修改!"); + commonUtil.updateLabPatByColumn(jyrq, yq, ybh, column, value); + //对于开启自动记忆的字段,保存修改值 + SysLoginParam loginConfigParam = loginConfigParamUtil.getLoginConfigParam(); + List labInputcolList = getLabInputcol(loginConfigParam, yq); + Optional collect0 = labInputcolList.stream().filter(labInputcol0 -> column.equals(labInputcol0.getZdmc())).findFirst(); + if (collect0.isPresent()) { + String zdjy = collect0.get().getZdjy(); + if ("1".equals(zdjy)) { + collect0.ifPresent(labR -> labR.setMrz(value)); + loginConfigParam.setCurrent_labInputcol(labInputcolList); + } + } + boolean setcalc = false; + List xmCalcList = null; + switch (column) { + case "brxb": + xmCalcList = commonUtil.getXmCalcbyxmdh(yq, "SEX"); + if (!xmCalcList.isEmpty()) setcalc = true; + break; + case "nl": + case "nldw": + xmCalcList = commonUtil.getXmCalcbyxmdh(yq, "AGE"); + if (!xmCalcList.isEmpty()) setcalc = true; + break; + } + if (setcalc) { + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + boolean nowjz = checknowjz(labPat); + labResultList = calcsample(labPat, labResultList, xmCalcList); + if (!labResultList.isEmpty()) { + List labResultList1 = labResultList.stream().filter(labR -> labR.getChangeflag() != null && labR.getChangeflag() == 1).collect(Collectors.toList()); + if (!labResultList1.isEmpty()) { + for (LabResult labResult0 : labResultList1) { + changeresultf(labPat, labResult0, nowjz); + } + } + } + } + setComLog(jyrq, yq, ybh,getusername(), ComLogConstants.LG_M, column + ":" + value); + return new Result("0", "保存成功"); + } + /** + * 删除样本 + * + * @param jyrq + * @param yq + * @param ybh + * @param yhdh + * @param problemId + * @return + */ + public Result delsample(Date jyrq, String yq, String ybh, String yhdh, int problemId) { + String jgbz = commonUtil.getLabPatJgbz(jyrq, yq, ybh); + if ("2".equals(jgbz)) return new Result("-1", "结果已审核禁止删除!"); + if ("5".equals(jgbz)) return new Result("-1", "结果已锁定禁止删除!"); + // if ("1".equals(jgbz)) return new Result("-1", "结果已初审禁止删除!"); + //IF MessageBox("删除","你确定删除当前 " + ls_ybh + " 号标本?",question!,YesNo!,2) = 2 THEN RETURN 1 交给前端 + String yqdl = commonUtil.getYqdl(yq); + if ("细菌仪".equals(yqdl)) { + String cbbgyq = commonUtil.getComOptValue(yq, "cbbgyq"); + if (cbbgyq != null && !cbbgyq.isEmpty()) { + String is_instr_cbbg = "CBBG" + cbbgyq; + String is_instr_ejbg = "EJBG" + cbbgyq; + String jgbz0 = commonUtil.getLabPatJgbz(jyrq, is_instr_cbbg, ybh); + if (jgbz0 != null) { + if ("2".equals(jgbz0) || "3".equals(jgbz0)) { + return new Result("1", "初步报告已经被审核,撤回前无法删除!"); + } + } + String jgbz1 = commonUtil.getLabPatJgbz(jyrq, is_instr_ejbg, ybh); + if (jgbz1 != null) { + if ("2".equals(jgbz1) || "4".equals(jgbz1)) { + return new Result("1", "二级报告已经被审核,撤回前无法删除!"); + } + } + if (jgbz0 != null) delsample(jyrq, is_instr_cbbg, ybh); + if (jgbz1 != null) delsample(jyrq, is_instr_ejbg, ybh); + } + } + delsample(jyrq, yq, ybh); + setComLog(jyrq, yq, ybh, yhdh, ComLogConstants.LG_M, "删除整个样本"); + return new Result("0", "保存成功"); + } + private void delsample(Date jyrq, String yq, String ybh) { + commonUtil.delLabResultMedAll(jyrq, yq, ybh); + commonUtil.delLabResultAll(jyrq, yq, ybh); + commonUtil.deleteLabGraphAll(jyrq, yq, ybh); + commonUtil.deleteLabPatfee(jyrq, yq, ybh); + commonUtil.QXLabReqmain(jyrq, yq, ybh); + commonUtil.delLabPat(jyrq, yq, ybh); + } + public Result newresult(LabResult labResult) { + String yq = labResult.getYq(); + Date jyrq = labResult.getJyrq(); + String ybh = labResult.getYbh(); + String xmdh = labResult.getXmdh(); + if ("".equals(xmdh) || xmdh == null) return new Result("-1", "项目代号不能为空!"); + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + if(labPat==null){ + labPat=new LabPat(); + labPat.setJyrq(jyrq); + labPat.setYbh(ybh); + labPat.setYq(yq); + labPat.setJgbz("0"); + } + if ("2".equals(labPat.getJgbz())) return new Result("-1", "结果已审核禁止修改!"); + if ("5".equals(labPat.getJgbz())) return new Result("-1", "结果已锁定禁止修改!"); + if ("1".equals(labPat.getJgbz())) return new Result("-1", "结果已初审禁止修改!"); + + boolean nowjz = checknowjz(labPat); + XmInfo xmInfo = commonUtil.getXmInfo(yq, xmdh); + List getXmAlarmdetail = commonUtil.getXmAlarmdetail(yq, xmdh); + labResult = setxmdhrefs(labPat, labResult, xmInfo, getXmAlarmdetail, nowjz); + commonUtil.insertLabResult(labResult); + List xmCalcList = commonUtil.getXmCalcbyxmdh(yq, xmdh); + if (!xmCalcList.isEmpty()) { + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + labResultList = calcsample(labPat, labResultList, xmCalcList); + List labResultList1 = labResultList.stream().filter(labR -> labR.getChangeflag() != null).filter(labR -> labR.getChangeflag() == 1).collect(Collectors.toList()); + if (!labResultList1.isEmpty()) { + for (LabResult labResult0 : labResultList1) { + changeresultf(labPat, labResult0, nowjz); + } + } + } + return new Result("0", "保存成功"); + } + public Result changeresult(LabResult labResult) { + String yq = labResult.getYq(); + Date jyrq = labResult.getJyrq(); + String ybh = labResult.getYbh(); + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + if ("2".equals(labPat.getJgbz())) return new Result("-1", "结果已审核禁止修改!"); + if ("5".equals(labPat.getJgbz())) return new Result("-1", "结果已锁定禁止修改!"); + if ("1".equals(labPat.getJgbz())) return new Result("-1", "结果已初审禁止修改!"); + boolean nowjz = checknowjz(labPat); + changeresultf(labPat, labResult, nowjz); + return new Result("0", "保存成功"); + } + /** + * 递归处理有计算项目关联其他项目都产生变化的联动处理 + * + * @param labPat + * @param labResult + * @param nowjz + * @return + */ + private int changeresultf(LabPat labPat, LabResult labResult, Boolean nowjz) { + String yq = labResult.getYq(); + String xmdh = labResult.getXmdh(); + Date jyrq = labResult.getJyrq(); + String ybh = labResult.getYbh(); + XmInfo xmInfo = commonUtil.getXmInfo(yq, xmdh); + List getXmAlarmdetail = commonUtil.getXmAlarmdetail(yq, xmdh); + labResult = setxmdhrefs(labPat, labResult, xmInfo, getXmAlarmdetail, nowjz); + commonUtil.updateLabResult(labResult); + List xmCalcList = commonUtil.getXmCalcbyxmdh(yq, xmdh); + if (!xmCalcList.isEmpty()) { + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + labResultList = calcsample(labPat, labResultList, xmCalcList); + List labResultList1 = labResultList.stream().filter(labR -> labR.getChangeflag() != null).filter(labR -> labR.getChangeflag() == 1).collect(Collectors.toList()); + if (!labResultList1.isEmpty()) { + for (LabResult labResult0 : labResultList1) { + changeresultf(labPat, labResult0, nowjz); + } + } + } + return 0; + } + private Result checkZT(String sqh, String yq, String zt) { + if (zt.equals("9")) return new Result("-1", "当前条码已经作废,不允许上机!"); + String SP_GETTOWREQOK = commonUtil.getHISOPT("SP_GETTOWREQOK"); //申请单禁止重复上机 + String SP_GETTOWREQOKYQ = commonUtil.getHISOPT("SP_GETTOWREQOKYQ");//申请单禁止同仪器重复上机 + if (zt.equals("2")) { + if (SP_GETTOWREQOK.equals("1")) return new Result("-1", "当前条码已经上机!"); + if (SP_GETTOWREQOKYQ.equals("1")) { + List labPatList = commonUtil.getLabPatListBySqh(sqh); + for (LabPat labPat : labPatList) { + String yq1 = labPat.getYq(); + if (yq.equals(yq1)) return new Result("-1", "该条码已经在当前仪器上机,不允许重复上机!"); + } + + } + } + return new Result("0", "校验成功!"); + } + private Result checkReqClass(String sqh, String yq, String bgddh) { + String value = commonUtil.getComOptValue(yq, "chkreqclass"); + if (!value.equals("1")) return new Result("0", ""); + LabInstrvsreqclass labInstrvsreqclass = new LabInstrvsreqclass(); + labInstrvsreqclass.setYq(yq); + List labInstrvsreqclassList = labInstrvsreqclassMapper.getLabInstrvsreqclassList(labInstrvsreqclass); + if (!labInstrvsreqclassList.isEmpty()) { + List collect = labInstrvsreqclassList.stream().filter(labInstrvsreqclass1 -> labInstrvsreqclass1.getBgddh().equals(bgddh)).collect(Collectors.toList()); + List collect1 = labInstrvsreqclassList.stream().filter(labInstrvsreqclass1 -> labInstrvsreqclass1.getBgddh().equals("MZ_" + bgddh)).collect(Collectors.toList()); + if (!collect.isEmpty()) return new Result("0", ""); + if (!collect1.isEmpty()) return new Result("0", ""); + } + Long count = lisWorkUtilsMapper.checkReqClass(sqh, yq); + if (count > 0) { + return new Result("0", ""); + } else { + return new Result("1", ""); + } + + } + public Result saveReqInfo(LabReqmain labReqmain, LabPat labPat, boolean newpatinfo) { + String sqh = labReqmain.getSqh(); + String yq = labPat.getYq(); + String ybh = labPat.getYbh(); + String userId = labPat.getYhdh(); + Date jyrq=labPat.getJyrq(); + Date sjsj = commonUtil.getCurrentTime(); + //修改状态和时间 + commonUtil.zxLabReqmain(sqh, userId); + //保存lab_pat表信息 + labPat.setYblx(commonUtil.getComDictIdByName("BT", labReqmain.getYblx())); + labPat.setKsdh(commonUtil.getComDictIdByName("DP", labReqmain.getKsdh())); + labPat.setSjys(userId); + labPat.setBrdh(labReqmain.getBrdh()); + labPat.setBrxm(labReqmain.getBrxm()); + labPat.setBrxb(labReqmain.getBrxb()); + labPat.setBrly(labReqmain.getBrly()); + labPat.setSjys(labReqmain.getSqys()); + String brxb = labReqmain.getBrxb(); + if (brxb != null) brxb = brxb.trim(); + labPat.setBrxb(brxb); + labPat.setCh(labReqmain.getCh()); + Map ageFromBirthDay = AgeUtils.getAgeByBirthDate(labReqmain.getBrsr()); + String age = ageFromBirthDay.get("nl").toString(); + String unit = ageFromBirthDay.get("nldw").toString(); + labPat.setNl(Integer.parseInt(age)); + labPat.setNldw(unit); + labPat.setSqh(sqh); + labPat.setSqsj(sjsj); + labPat.setJgbz(LabPatConstants.DEFAULT); + labPat.setZd(labReqmain.getZd()); + labPat.setCyrq(labReqmain.getCysj()); + labPat.setJymd(LisUtil.substringByGbkWidth(labReqmain.getJymd(), 0, 50)); + labPat.setLastuser(userId); + labPat.setLastdt(sjsj); + labPat.setShcs(0); + labPat.setYljg(labReqmain.getYljg()); + labPat.setSfzh(labReqmain.getSfzh()); + labPat.setPhone(labReqmain.getPhone()); + labPat.setAddr(labReqmain.getAddr()); + labPat.setLstd(labReqmain.getLstd()); + labPat.setCjbw(labReqmain.getCjbw()); + String brxm0 = labPat.getBrxm(); + if (!"".equals(brxm0) && brxm0 != null) { + String pinyin = PinyinUtil.getFirstLetter(brxm0, ""); //拼音首字母 + if (pinyin.length() >= 9) { + pinyin = pinyin.substring(0, 9); + } + labPat.setZjf(pinyin); + } + if (newpatinfo) commonUtil.insertLabPat(labPat); + else commonUtil.updateLabPat(labPat); + commonUtil.insertLabResultByBarcode(jyrq, ybh, yq, sqh); + List labResultList=commonUtil.getLabResultList(jyrq, ybh, yq); + List labInputmdlList=chkautoinput(yq,ybh); + boolean setyblx=false; + if(!labInputmdlList.isEmpty()) { + for (LabInputmdl labInputmdl : labInputmdlList) { + labResultList = batchinput(jyrq, yq, ybh, labResultList, labInputmdl.getMbmc(), true); + String yblx = labInputmdl.getYblx(); + if (yblx != null && !yblx.isEmpty()) { + labPat.setYblx(yblx); + setyblx=true; + } + } + if(!labResultList.stream().filter(s->s.getChangeflag()==1).collect(Collectors.toList()).isEmpty()){ + if(setyblx) commonUtil.updateLabPat(labPat); + } + } + labResultList=saveallresult(labPat,labResultList); + // Map map=new HashMap<>(); + // map.put("labpat",labPat); + // map.put("labresult",labResultList); + return new Result("0", "保存成功!", labPat); + } + public Result newPat(Date jyrq, String ybh, String yq, String brdh, String brly, String yljg, int problemId) { + if (brly == null) brly = ""; + if (yljg == null || yljg.isEmpty()) yljg = commonUtil.getLabInstr(yq).getYljg(); + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + boolean newpatinfo = true; + if (labPat != null) { + String jgbz = labPat.getJgbz(); + if (LabPatConstants.CONFIRM.equals(jgbz)) { + return new Result("-1", "当前样本已审核禁止修改!"); + } + newpatinfo = false; + String brdh0 = labPat.getBrdh(); + String sqh0 = labPat.getSqh(); + String brxm = labPat.getBrxm(); + if (problemId < 1) { + if ((brdh0 != null && !brdh0.isEmpty()) || (sqh0 != null && !sqh0.isEmpty()) || (brxm != null && !brxm.isEmpty())) { + return new Result("5", "当前样本已有病人信息是否替换!", 1); + } + } + } + String yhdh = getusername(); + + labPat = new LabPat(); + labPat.setJyrq(jyrq); + labPat.setYq(yq); + labPat.setYbh(ybh); + labPat.setBrdh(brdh); + if (!"".equals(brdh)) { + //4.获取病人信息 + DayMessage dayMessage = new DayMessage(); + dayMessage.setIp(""); + dayMessage.setYljg("1"); + dayMessage.setUserid(yhdh); + dayMessage.setMsgid(LisinterfaceNameConstants.DAYMESSAGE_GETPATIENT); + String val = brdh + "|" + brly + "|" + yljg; //这里有个医疗机构的,没有传,要考虑 + dayMessage.setMsg(val); + Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.DAYMESSAGE, dayMessage); + String msg = result.getMsg(); + String[] msgret = msg.split("\\|"); + + if (msgret.length > 8) { + labPat.setBrxm(msgret[0]); + labPat.setBrxb(msgret[1]); + String brsr = msgret[2]; + if (!"".equals(brsr) && brsr != null) { + Map ageFromBirthDay = AgeUtils.getAgeByBirthDate(brsr); + String age = ageFromBirthDay.get("nl").toString(); + String unit = ageFromBirthDay.get("nldw").toString(); + labPat.setNl(Integer.parseInt(age)); + labPat.setNldw(unit); + } + labPat.setBrdh(msgret[3]); + labPat.setFb(msgret[4]); + labPat.setBrly(msgret[5]); + labPat.setCh(msgret[6]); + labPat.setKsdh(msgret[7]); + labPat.setZd(msgret[8]); + } else { + List comPatList = commonUtil.getComPat(brdh, yljg); + if (!comPatList.isEmpty()) { + ComPat comPat = comPatList.get(0); + labPat.setBrxm(comPat.getBrxm()); + labPat.setCh(comPat.getCh()); + labPat.setBrxb(comPat.getXb()); + labPat.setBrly(comPat.getBrly()); + labPat.setFb(comPat.getFb()); + labPat.setKsdh(comPat.getKsdh()); + labPat.setZd(comPat.getZd()); + labPat.setMzh(comPat.getMzh()); + labPat.setSjys(comPat.getSjys()); + Date sr = comPat.getSr(); + if (sr != null) { + Map ageFromBirthDay = AgeUtils.getAgeByBirthDate(sr); + String age = ageFromBirthDay.get("nl").toString(); + String unit = ageFromBirthDay.get("nldw").toString(); + labPat.setNl(Integer.parseInt(age)); + labPat.setNldw(unit); + } + } + } + } + labPat = loaddefault(labPat); + List labInputmdlList=chkautoinput(yq,ybh); + if(!labInputmdlList.isEmpty()) { + List labResultList=commonUtil.getLabResultList(jyrq, ybh, yq); + for (LabInputmdl labInputmdl : labInputmdlList) { + labResultList = batchinput(jyrq, yq, ybh, labResultList, labInputmdl.getMbmc(), true); + String yblx = labInputmdl.getYblx(); + if (yblx != null && !yblx.isEmpty()) { + labPat.setYblx(yblx); + } + } + labResultList=saveallresult(labPat,labResultList); + } + String brxm0 = labPat.getBrxm(); + if (!"".equals(brxm0) && brxm0 != null) { + String pinyin = PinyinUtil.getFirstLetter(brxm0, ""); //拼音首字母 + if (pinyin.length() >= 9) { + pinyin = pinyin.substring(0, 9); + } + labPat.setZjf(pinyin); + } + //5.保存数据 + if (newpatinfo) commonUtil.insertLabPat(labPat); + else commonUtil.updateLabPat(labPat); + //6.记录历史病人信息 + setComPat(labPat); + return new Result("0", "保存成功!", labPat); + } + public Result newPatInfo(Date jyrq, String ybh, String sqh, String yq, int problemId) { + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + boolean newpatinfo = true; + if (labPat != null) { + String jgbz = labPat.getJgbz(); + if (LabPatConstants.CONFIRM.equals(jgbz)) { + return new Result("-1", "当前样本已审核禁止修改!"); + } + newpatinfo = false; + String brdh = labPat.getBrdh(); + String sqh0 = labPat.getSqh(); + String brxm = labPat.getBrxm(); + if (problemId < 1) { + if ((brdh != null && !brdh.isEmpty()) || (sqh0 != null && !sqh0.isEmpty()) || (brxm != null && !brxm.isEmpty())) { + return new Result("5", "当前样本已有病人信息是否替换!", 1); + } + } + } + String yhdh = getusername(); + LabReqmain labReqmainOne = commonUtil.getLabReqmainOne(sqh); + if (labReqmainOne == null) { + //1.调用接口,获取申请单信息 + GetReqInterface getReqInterface = new GetReqInterface(); + getReqInterface.setSqh(sqh); + getReqInterface.setBrdh(""); + getReqInterface.setDept(""); + getReqInterface.setUserid(yhdh); + getReqInterface.setEtime(""); + getReqInterface.setEtime(""); + getReqInterface.setYljg(loginConfigParamUtil.getLoginConfigParam().getLoginYLJG()); + getReqInterface.setIp(getIP()); + lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.GETREQINTERFACE, getReqInterface); + labReqmainOne = commonUtil.getLabReqmainOne(sqh); + } + if (labReqmainOne == null) return new Result("-1", "没有获取到申请单信息!"); + String zt = labReqmainOne.getZt().trim(); + //2.校验信息 + //校验状态信息 + Result result1 = checkZT(sqh, yq, zt); + if (!result1.getCode().equals("0")) return result1; + //校验条码类别 + Result result2 = checkReqClass(sqh, yq, labReqmainOne.getBgddh()); + if (!result2.getCode().equals("0")) return result2; + + //3.调用his上机接口, + SetReqStatus setReqStatus = new SetReqStatus(); + setReqStatus.setIp(""); + setReqStatus.setSqh(sqh); + setReqStatus.setUserid(yhdh); + setReqStatus.setStatus(LabReqmainConstants.SIGNFOR); + Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREQSTATUS, setReqStatus); + if (!result.getCode().equals("0")) return result; + + labPat = new LabPat(); + labPat.setJyrq(jyrq); + labPat.setYq(yq); + labPat.setYbh(ybh); + labPat.setSqh(sqh); + labPat = loaddefault(labPat); + + //5.保存数据 + Result result3 = saveReqInfo(labReqmainOne, labPat, newpatinfo); + if (!result3.getCode().equals("0")) return result3; + + //6.写日志 + setComLog(jyrq, yq, ybh, yhdh, ComLogConstants.LG_SJ, sqh); + if (sqh != null && !sqh.isEmpty()) setlabReqsteplog(sqh, LabReqmainConstants.START, yhdh); + //7.记录历史病人信息 + setComPat(labPat); + return new Result("0", "", labPat); + } +} diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkconfirm.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkconfirm.java new file mode 100644 index 0000000..1b7f0c7 --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkconfirm.java @@ -0,0 +1,720 @@ +package com.czlis.interfaceCommon.utils; + +import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.entity.lis.*; +import com.czlis.interfaceCommon.constants.ComLogConstants; +import com.czlis.interfaceCommon.constants.LabPatConstants; +import com.czlis.interfaceCommon.constants.LabReqmainConstants; +import com.czlis.interfaceCommon.constants.LisinterfaceNameConstants; +import com.czlis.interfaceCommon.pojo.inter.SetReport; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; +@Component +@Slf4j +public class LisWorkconfirm extends LisWorkcom{ + @Autowired + CheckResultUtils checkResultUtils; + /** + * 初步审核 + * + * @param jyrq + * @param yq + * @param ybh + * @param hdys + * @return + */ + public Result confirm1(Date jyrq, String yq, String ybh, String hdys, int problemId) { + if (hdys == null || hdys.isEmpty()) return new Result("-1", "审核者为空,无法审核!"); + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + labPat.setHdys(hdys); + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + if (problemId < 3) { + //1,审核权限校验 + if (!commonUtil.getUserPower(yq, hdys, 20)) { + return new Result("-1", "当前核对者无权对本仪器报告审核!"); + } + //2:数据合法性校验 + Result result0 = beforeconfirm(labPat, labResultList, 1, problemId); + if (!"0".equals(result0.getCode())) return result0; + } + if (problemId < 3) problemId = 3; + if (problemId < 4) { + //3:数据完整保存 + labResultList = saveallresult(labPat, labResultList); + boolean wjz = getAlarmFlag(labResultList); + //同步主表危急值标识 + String alarmflag = labPat.getAlarmflag(); + if (("1".equals(alarmflag) && !wjz)) { + labPat.setAlarmflag(""); + commonUtil.updateLabPat(labPat); + } else if (("".equals(alarmflag) || alarmflag == null) && wjz) { + labPat.setAlarmflag("1"); + commonUtil.updateLabPat(labPat); + } + if (wjz) { + return new Result("4", getAlarmMsg(labResultList), 4); + } + } + if (problemId < 5) problemId = 5; + if (problemId < 6) { + //医学审核条件判断 + Result result = chksample(labPat, labResultList, problemId); + if (!"0".equals(result.getCode())) return result; + } + if (problemId < 6) problemId = 6; + if (problemId < 99) { + //高级医学审核条件判断 + Result result = chksamplenew(labPat, labResultList, problemId); + if ("99".equals(result.getCode())) { + labPat.setBz(result.getMsg()); + result.setCode("0"); + } + if (!"0".equals(result.getCode())) return result; + } + if (problemId < 99) problemId = 99; + //5:数据状态修改,异步上传接口作业创建 + Result result1 = afterconfirm1(labPat, problemId); + if (!"0".equals(result1.getCode())) return result1; + setComLog(jyrq, yq, ybh, hdys, ComLogConstants.LG_CK1, ""); + // String sqh=labPat.getSqh(); + // if(sqh!=null){ + // setlabReqsteplog(sqh,SampleStatusConstants.CONFIRM,hdys); + // } + return new Result("0", "审核成功!"); + } + /** + * 审核报告单全流程 + * + * @param jyrq + * @param yq + * @param ybh + * @param hdys + * @return + */ + public Result confirm(Date jyrq, String yq, String ybh, String hdys, int problemId) { + if (hdys == null || hdys.isEmpty()) return new Result("-1", "审核者为空,无法审核!"); + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + labPat.setHdys(hdys); + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + if (problemId < 3) { + //1,审核权限校验 + if (!commonUtil.getUserPower(yq, hdys, 20)) { + return new Result("-1", "当前核对者无权对本仪器报告审核!"); + } + //2:数据合法性校验 + Result result0 = beforeconfirm(labPat, labResultList, 2, problemId); + if (!"0".equals(result0.getCode())) return result0; + } + if (problemId < 3) problemId = 3; + if (problemId < 4) { + //3:数据完整保存 + labResultList = saveallresult(labPat, labResultList); + boolean wjz = getAlarmFlag(labResultList); + //同步主表危急值标识 + String alarmflag = labPat.getAlarmflag(); + if (("1".equals(alarmflag) && !wjz)) { + labPat.setAlarmflag(""); + commonUtil.updateLabPat(labPat); + } else if (("".equals(alarmflag) || alarmflag == null) && wjz) { + labPat.setAlarmflag("1"); + commonUtil.updateLabPat(labPat); + } + if (wjz) { + return new Result("4", getAlarmMsg(labResultList), 4); + } + } + if (problemId < 5) problemId = 5; + if (problemId < 6) { + //医学审核条件判断 + Result result = chksample(labPat, labResultList, problemId); + if (!"0".equals(result.getCode())) return result; + } + if (problemId < 6) problemId = 6; + if (problemId < 99) { + //高级医学审核条件判断 + Result result = chksamplenew(labPat, labResultList, problemId); + if ("99".equals(result.getCode())) { + labPat.setBz(result.getMsg()); + result.setCode("0"); + } + if (!"0".equals(result.getCode())) return result; + } + if (problemId < 99) problemId = 99; + //4:CA请求业务的处理 + //Result result=addCA(jyrq, yq, ybh, hdys); + //if("0".equals(result.getCode()))return result; + //5:数据状态修改,异步上传接口作业创建 + Result result1 = afterconfirm(labPat, problemId); + if (!"0".equals(result1.getCode())) return result1; + setComLog(jyrq, yq, ybh, hdys, ComLogConstants.LG_CK, ""); + String sqh = labPat.getSqh(); + if (sqh != null) { + setlabReqsteplog(sqh, LabReqmainConstants.CONFIRM, hdys); + } + return new Result("0", "审核成功!"); + } + /** + * 审核前校验数据完整性,审核业务和初审业务都可使用 + * + * @param labPat + * @param labResultList + * @param checktype + * @param problemId + * @return + */ + private Result beforeconfirm(LabPat labPat, List labResultList, Integer checktype, Integer problemId) { + if (labPat == null) return new Result("-1", "病人信息为空禁止审核!"); + Date jyrq = labPat.getJyrq(); + String yq = labPat.getYq(); + String ybh = labPat.getYbh(); + String jgbz = labPat.getJgbz(); + if ("2".equals(jgbz)) return new Result("1", "报告已审核!"); + if ("5".equals(jgbz)) return new Result("-1", "已锁定报告禁止审核!"); + if (!"1".equals(jgbz) && checktype == 2) { + String f_check1 = commonUtil.getComOptValue(yq, "f_check1"); + if ("1".equals(f_check1)) return new Result("-1", "审核前必须先初审!"); + } + if (checktype == 2) { + if (checkWorkTime(labPat) == 1) return new Result("-1", "核对医生不允许与检验医生相同!"); + } + String limit_brly = commonUtil.getHISOPT("limit_brly"); + String brly = labPat.getBrly(); + if ("1".equals(limit_brly) && (brly == null || brly.isEmpty())) + return new Result("-1", "病人类型为空,禁止审核!"); + String limit_yblx = commonUtil.getHISOPT("limit_yblx"); + String yblx = labPat.getYblx(); + if ("1".equals(limit_yblx) && (yblx == null || yblx.isEmpty())) + return new Result("-1", "样本类型为空,禁止审核!"); + String limit_brxm = commonUtil.getHISOPT("limit_brxm"); + String brxm = labPat.getBrxm(); + if ("1".equals(limit_brxm) && (brxm == null || brxm.isEmpty())) + return new Result("-1", "病人姓名为空,禁止审核!"); + if ((brxm == null || brxm.isEmpty()) && problemId < 1) new Result("5", "姓名为空,你确定要审核吗?", 1); + String limit_ksdh = commonUtil.getHISOPT("limit_ksdh"); + String ksdh = labPat.getKsdh(); + if ("1".equals(limit_ksdh) && (ksdh == null || ksdh.isEmpty())) + return new Result("-1", "科室单位为空,禁止审核!"); + String limit_patno = commonUtil.getHISOPT("limit_patno"); + String brdh = labPat.getBrdh(); + String brlyname = commonUtil.getComDictNameById("PT", brly); + if ("1".equals(limit_patno) && (brdh == null || brdh.isEmpty())) { + if (!"质控".equals(brlyname)) return new Result("-1", "病历号不能为空,禁止审核!"); + } + String limit_brpatno = commonUtil.getHISOPT("limit_brpatno"); + if ("1".equals(limit_brpatno) && (brdh == null || brdh.isEmpty())) { + if ("1".equals(brly) || "3".equals(brly)) return new Result("-1", "门诊住院的病历号不能为空,禁止审核!"); + } + String yqdl = commonUtil.getYqdl(yq); + if (labResultList == null || labResultList.isEmpty()) return new Result("-1", "结果为空禁止审核!"); + for (LabResult labResult : labResultList) { + String csjg = labResult.getCsjg(); + if ("未做".equals(csjg)) { + return new Result("-1", "还有结果为“未做”的项目,不可审核!"); + } + if (csjg != null) { + if (csjg.contains("ERR")) return new Result("-1", "有结果错误,不可审核!"); + if (csjg.contains("需稀释")) return new Result("-1", "有结果需稀释,不可审核!"); + if (csjg.contains("需复做")) return new Result("-1", "有结果需复做,不可审核!"); + + } + } + if (problemId < 2) { + //多做结果判断 + String otherresultmsg = commonUtil.getComOptValue(yq, "otherresultmsg"); + if ("1".equals(otherresultmsg)) { + if (!"细菌仪".equals(yqdl)) { + int nullcount = lisWorkUtilsMapper.checkresultsqxmdh(jyrq, yq, ybh, labPat.getSqh()); + if (nullcount > 0) return new Result("5", "结果有多做的项目,是否审核?", 2); + } + } + } + String limit_jgwxh4 = commonUtil.getHISOPT("limit_jgwxh4"); + if ("1".equals(limit_jgwxh4)) { + int wxh = lisWorkUtilsMapper.checkresultwxh(jyrq, yq, ybh); + if (wxh > 0) return new Result("-1", "有结果为****禁止审核!"); + } + String sqh = labPat.getSqh(); + if (sqh != null && !sqh.isEmpty()) { + if (!"质控".equals(brlyname)) { + if ("1".equals(commonUtil.getHISOPT("sp_dublereport"))) { + LabPat labPat0 = lisWorkUtilsMapper.checkdublereport(sqh, ybh); + if (labPat0 != null) { + String yqmc = commonUtil.getYqmc(yq); + String msg = "该申请单已经发过结果了,禁止审核!" + LisUtil.LINE_SEPARATOR + "日期:" + commonUtil.getDateString(jyrq) + ",仪器:" + yqmc + ",样本号:" + ybh; + return new Result("-1", msg); + } + } else if ("1".equals(commonUtil.getHISOPT("sp_yqdublereport"))) { + LabPat labPat0 = lisWorkUtilsMapper.checkyqdublereport(sqh, yq, ybh); + if (labPat0 != null) { + String yqmc = commonUtil.getYqmc(yq); + String msg = "该申请单已经发过结果了,禁止审核!" + LisUtil.LINE_SEPARATOR + "日期:" + commonUtil.getDateString(jyrq) + ",仪器:" + yqmc + ",样本号:" + ybh; + return new Result("-1", msg); + } + } + + } + } + + String Userid = labPat.getHdys(); + if (Userid == null || Userid.isEmpty()) { + Userid = getusername(); + } + //初审不需要调用接口 + if (checktype == 1) return new Result("0", "保存成功!"); + //调用his报告接口,检查外部接口对审核前的定制需求 + SetReport setReport = new SetReport(); + setReport.setIp(getIP()); + setReport.setJyrq(DateFormatUtils.format(jyrq, "yyyy-MM-dd")); + setReport.setYbh(ybh); + setReport.setUserid(Userid); + setReport.setYq(yq.trim()); + setReport.setStatus(LisinterfaceNameConstants.REPORTSTART); + if (!"细菌仪".equals(yqdl)) { + if (!"1".equals(commonUtil.getHISOPT("wswcbbgbl"))) { + String ls_cbbgyq = commonUtil.getComOptValue(yq, "cbbgyq"); + if (ls_cbbgyq != null && !ls_cbbgyq.isEmpty()) { + String ls_ejbgyq = "EJBG" + ls_cbbgyq; + ls_cbbgyq = "CBBG" + ls_cbbgyq; + int count = commonUtil.getCountByKey(jyrq, ls_cbbgyq, ybh); + if (count > 0) { + setReport.setYq(ls_cbbgyq); + setReport.setStatus(LisinterfaceNameConstants.REPORTCANCAL); + Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREPORT, setReport); + } + count = commonUtil.getCountByKey(jyrq, ls_ejbgyq, ybh); + if (count > 0) { + setReport.setYq(ls_ejbgyq); + setReport.setStatus(LisinterfaceNameConstants.REPORTCANCAL); + Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREPORT, setReport); + } + } + } + } + setReport.setYq(yq.trim()); + setReport.setStatus(LisinterfaceNameConstants.REPORTSTART); + Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREPORT, setReport); + if (result.getCode().equals("5")) { + if (problemId < 3) { + return new Result(result.getCode(), result.getMsg(), 3); + } + return new Result("0", "保存成功!"); + } + if (!result.getCode().equals("0")) return result; + checkxpywrgjz(labPat); + return new Result("0", "保存成功!"); + } + /** + * 医学审核条件判断 + * + * @param labPat + * @param problemId + * @return + */ + private Result chksample(LabPat labPat, List labResultList, Integer problemId) { + //医学审核条件判断 + if (problemId < 6) { + String checkvalue = checkResultUtils.chksample(labPat, labResultList); + if (checkvalue != null && !checkvalue.isEmpty()) { + return new Result("5", checkvalue, 6); + } + } + return new Result("0", "保存成功!"); + } + + /** + * 高级医学审核条件判断 + * + * @param labPat + * @param problemId + * @return + */ + private Result chksamplenew(LabPat labPat, List labResultList, Integer problemId) { + //医学审核条件判断 + Boolean setbz = false; + String bz = labPat.getBz(); + int startid = 6; + //医学审核条件判断(新规则),预留99个递归ID + if (problemId < startid) problemId = startid; + if (problemId < 99) { + int xh = problemId - startid; + Map chksamplenewvalue = checkResultUtils.chksamplenew(labPat, labResultList, xh); + String chkCode = (String) chksamplenewvalue.get("code"); + String chkMsg = (String) chksamplenewvalue.get("msg"); + bz = (String) chksamplenewvalue.get("bz"); + labPat.setBz(bz); + xh = (Integer) chksamplenewvalue.get("xh"); + setbz = (Boolean) chksamplenewvalue.get("setbz"); + problemId = startid + xh; + if ("5".equals(chkCode)) { + if (setbz) { + commonUtil.updateLabPat(labPat); + } + return new Result("5", chkMsg, problemId); + } + if (!"0".equals(chkCode)) return new Result(chkCode, chkMsg, problemId); + } + if (setbz) { + commonUtil.updateLabPat(labPat); + return new Result("99", bz); + } + return new Result("0", "保存成功!"); + } + + /** + * 审核后步骤,在审核过程中,必须完成审核前校验通过,结果计算值填充,参考值结果标志危急值标志填写完成,最后使用此方法修改状态 + * + * @param labPat + * @param problemId + * @return + */ + private Result afterconfirm(LabPat labPat, Integer problemId) { + Date jyrq = labPat.getJyrq(); + String yq = labPat.getYq(); + String ybh = labPat.getYbh(); + String hdys = labPat.getHdys(); + String yqdl = commonUtil.getYqdl(yq); + String itemvs = commonUtil.getHISOPT("itemvs"); + Result ret = new Result("0", "保存成功!"); + if ("1".equals(itemvs)) { + if (!"细菌仪".equals(yqdl)) { + String nullcount = lisWorkUtilsMapper.checkresultnosqxmdh(jyrq, yq, ybh); + if (!"".equals(nullcount) && nullcount != null) + ret = new Result("3", "警告!" + LisUtil.LINE_SEPARATOR + " 报告项目未对应申请项目,请进(收费项目报告项目对照)菜单维护对照:" + LisUtil.LINE_SEPARATOR + nullcount); + } + } + + Date Confirmdt = new Date(); + labPat.setConfirmdt(Confirmdt); + labPat.setConfirmer(hdys); + labPat.setLastdt(Confirmdt); + labPat.setLastuser(hdys); + Date dysj = labPat.getDysj(); + if (dysj == null) dysj = Confirmdt; + if (commonUtil.getDateString(dysj).equals(commonUtil.getCurrentDate())) dysj = Confirmdt; + Date jysj = labPat.getSqsj(); + if (jysj.after(dysj)) jysj = dysj; + labPat.setDysj(dysj); + String sqh = labPat.getSqh(); + LabReqmain labReqmain = commonUtil.getLabReqmainOne(sqh); + if (labReqmain != null) { + String zt = labReqmain.getZt(); + if (LabReqmainConstants.CANCAL.equals(zt)) return new Result("-1", "申请单已作废禁止审核!"); + labReqmain.setYqdh(yq); + labReqmain.setSjsj(jysj); + labReqmain.setConfirmer(hdys); + labReqmain.setConfirmtime(Confirmdt); + labReqmain = checklabReqmainTAT(labReqmain); + if (!LabReqmainConstants.CANCAL.equals(zt)) labReqmain.setZt(LabReqmainConstants.CONFIRM); + commonUtil.updateLabReqmain(labReqmain); + Date cysj = labReqmain.getCysj(); + if (cysj != null) labPat.setCyrq(cysj); + } + + //调用his报告接口,完成报告同时调用外部接口任务 + SetReport setReport = new SetReport(); + setReport.setIp(getIP()); + setReport.setJyrq(DateFormatUtils.format(jyrq, "yyyy-MM-dd")); + setReport.setYq(yq.trim()); + setReport.setYbh(ybh); + setReport.setUserid(hdys); + setReport.setStatus(LisinterfaceNameConstants.REPORTEND); + Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREPORT, setReport); + if (result.getCode().equals("5")) { + if (problemId < 100) { + return new Result(result.getCode(), result.getMsg(), 100); + } + return ret; + } + if (!result.getCode().equals("0")) return result; + //最后完成 + String finish = labPat.getFinish(); + if (!"细菌仪".equals(yqdl) && finish != null) labPat.setFinish("1"); + labPat.setJgbz(LabPatConstants.CONFIRM); + Integer shcs = labPat.getShcs(); + if (shcs == null) shcs = 0; + shcs = shcs + 1; + labPat.setShcs(shcs); + commonUtil.updateLabPat(labPat); + return ret; + } + + /** + * 初步审核状态修改 + * + * @param labPat + * @param problemId + * @return + */ + private Result afterconfirm1(LabPat labPat, Integer problemId) { + Date jyrq = labPat.getJyrq(); + String yq = labPat.getYq(); + String ybh = labPat.getYbh(); + String hdys = labPat.getHdys(); + String yqdl = commonUtil.getYqdl(yq); + String itemvs = commonUtil.getHISOPT("itemvs"); + Result ret = new Result("0", "保存成功!"); + if ("1".equals(itemvs)) { + if (!"细菌仪".equals(yqdl)) { + String nullcount = lisWorkUtilsMapper.checkresultnosqxmdh(jyrq, yq, ybh); + if (!"".equals(nullcount) && nullcount != null) + ret = new Result("3", "警告!" + LisUtil.LINE_SEPARATOR + " 报告项目未对应申请项目,请进(收费项目报告项目对照)菜单维护对照:" + LisUtil.LINE_SEPARATOR + nullcount); + } + } + + Date Confirmdt = new Date(); + labPat.setLastdt(Confirmdt); + labPat.setLastuser(hdys); + String finish = labPat.getFinish(); + if (!"细菌仪".equals(yqdl) && finish != null) labPat.setFinish("1"); + labPat.setJgbz(LabPatConstants.PRELIM); + commonUtil.updateLabPat(labPat); + return ret; + } + + /** + * 申请单表校验TAT时间顺序,恢复时间倒置的时间轴 + * + * @param labReqmain + * @return + */ + private LabReqmain checklabReqmainTAT(LabReqmain labReqmain) { + if (labReqmain != null) { + Date confirmtime = labReqmain.getConfirmtime(); + Date jysj = labReqmain.getSjsj(); + String sqh = labReqmain.getSqh(); + Date zxsj = labReqmain.getZxsj(); + Date cysj = labReqmain.getCysj(); + Date bbsjsj = labReqmain.getBbsjsj(); + Date jssj = labReqmain.getJssj(); + Date sjsj = labReqmain.getSjsj(); + if (sjsj == null&&jysj !=null) sjsj =new Date(jysj.getTime()); + if (sjsj !=null&&sjsj.after(confirmtime)&&jysj !=null) sjsj =new Date(jysj.getTime()); + if (jssj == null&&sjsj !=null) jssj =new Date(sjsj.getTime()); + if (jssj !=null&&jssj.after(confirmtime)&&sjsj !=null) jssj = new Date(sjsj.getTime()); + if (bbsjsj != null) { + if (jysj !=null&&bbsjsj.after(jssj) && jysj.after(bbsjsj)) jssj = new Date(jysj.getTime()); + } + if (cysj != null&&jysj !=null) { + if (cysj.after(jssj) && jysj.after(cysj)) jssj =new Date(jysj.getTime()); + } + if (jysj !=null&&jssj.after(sjsj)) sjsj =new Date(jysj.getTime()); + + List labReqsteplog = commonUtil.getLabReqsteplog(sqh); + if (jssj !=null&&bbsjsj != null && bbsjsj.after(jssj)) { + Date sj = new Date(jssj.getTime()); + Date finalSj = new Date(jssj.getTime()); + Optional maxTimeEntity = labReqsteplog.stream() + .filter(entity -> "13".equals(entity.getZt())) + .filter(entity -> entity.getChangedate().before(finalSj)) + .max(Comparator.comparing(LabReqsteplog::getChangedate)); + if (maxTimeEntity.isPresent()) { + sj = maxTimeEntity.get().getChangedate(); + } + bbsjsj = new Date(sj.getTime()); + labReqmain.setBbsjsj(bbsjsj); + } else { + if(jssj !=null) bbsjsj = new Date(jssj.getTime()); + } + if (bbsjsj != null && cysj != null && cysj.after(bbsjsj)) { + Date sj = new Date(bbsjsj.getTime()); + Date finalSj = sj; + Optional maxTimeEntity = labReqsteplog.stream() + .filter(entity -> "12".equals(entity.getZt())) + .filter(entity -> entity.getChangedate().before(finalSj)) + .max(Comparator.comparing(LabReqsteplog::getChangedate)); + if (maxTimeEntity.isPresent()) { + sj = maxTimeEntity.get().getChangedate(); + } + cysj =new Date(sj.getTime()); + labReqmain.setCysj(cysj); + } + if (bbsjsj != null && cysj != null && zxsj.after(cysj) && bbsjsj.after(zxsj)) { + + Date finalSj = new Date(bbsjsj.getTime()); + Optional maxTimeEntity = labReqsteplog.stream() + .filter(entity -> "12".equals(entity.getZt())) + .filter(entity -> entity.getChangedate().before(finalSj)) + .max(Comparator.comparing(LabReqsteplog::getChangedate)); + if (maxTimeEntity.isPresent()) { + cysj = maxTimeEntity.get().getChangedate(); + } else cysj = new Date(zxsj.getTime()); + labReqmain.setCysj(cysj); + } else { + if(bbsjsj != null ) cysj =new Date(bbsjsj.getTime()); + } + if (cysj != null && zxsj != null && zxsj.after(cysj)) { + Date sj = new Date(cysj.getTime()); + Date finalSj = sj; + Optional maxTimeEntity = labReqsteplog.stream() + .filter(entity -> "11".equals(entity.getZt())) + .filter(entity -> entity.getChangedate().before(finalSj)) + .max(Comparator.comparing(LabReqsteplog::getChangedate)); + if (maxTimeEntity.isPresent()) { + sj = maxTimeEntity.get().getChangedate(); + } + + zxsj = new Date(sj.getTime()); + labReqmain.setZxsj(zxsj); + } + if (sjsj != null)labReqmain.setSjsj(sjsj); + } + return labReqmain; + } + + + /** + * 解除审核原因登记 + * + * @param jyrq + * @param yq + * @param ybh + * @param hdys + * @return + */ + public Result unconfirmlog(Date jyrq, String yq, String ybh, String hdys, String reason) { + if ("".equals(reason)) { + return new Result("-1", "没写原因,解除失败!"); + } + LisPatlog lisPatlog = new LisPatlog(); + lisPatlog.setYq(yq); + lisPatlog.setYbh(ybh); + lisPatlog.setXgyhdh(hdys); + lisPatlog.setJyrq(jyrq); + lisPatlog.setXgrq(new Date()); + lisPatlog.setBz1(reason); + commonUtil.insertLisPatlog(lisPatlog); + return new Result("0", "写召回原因成功!"); + } + + /** + * 撤销审核报告单全流程 + * + * @param jyrq + * @param yq + * @param ybh + * @param yhdh + * @return + */ + public Result unconfirm(Date jyrq, String yq, String ybh, String yhdh) { + if (yhdh == null || yhdh.isEmpty()) return new Result("1", "操作者为空,无法解除审核!"); + int problemId = getProblemId(); + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + if (problemId < 3) { + //1,解除审核权限校验 + if (!commonUtil.getUserPower(yq, yhdh, 10)) return new Result("-1", "当前操作者无权对本仪器报告解除审核!"); + //2:数据合法性校验 + String jgbz = labPat.getJgbz(); + if (!"2".equals(jgbz)) return new Result("1", "报告未审核,不需解除!"); + } + if (problemId < 3) problemId = 3; + if (problemId < 4) { + String unconfirmlog = commonUtil.getComOptValue(yq, "unconfirmlog"); + if ("1".equals(unconfirmlog)) { + return new Result("4", "请填写解除审核原因!", 4); + } + } + if (problemId < 4) problemId = 4; + //调用his报告接口,完成报告同时调用外部接口任务 + if (problemId < 5) { + SetReport setReport = new SetReport(); + setReport.setIp(getIP()); + setReport.setJyrq(DateFormatUtils.format(jyrq, "yyyy-MM-dd")); + setReport.setYq(yq.trim()); + setReport.setYbh(ybh); + setReport.setUserid(yhdh); + setReport.setStatus(LisinterfaceNameConstants.REPORTCANCAL); + Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREPORT, setReport); + if (result.getCode().equals("5")) { + if (problemId < 5) { + return new Result(result.getCode(), result.getMsg(), 5); + } + } + if (!result.getCode().equals("0")) return result; + } + if (problemId < 5) problemId = 5; + String sqh = labPat.getSqh(); + LabReqmain labReqmain = commonUtil.getLabReqmainOne(sqh); + if (labReqmain != null) { + String zt = labReqmain.getZt(); + if (!LabReqmainConstants.CANCAL.equals(zt)) { + labReqmain.setConfirmer(""); + labReqmain.setConfirmtime(null); + if (LabReqmainConstants.CONFIRM.equals(zt)) { + labReqmain.setZt(LabReqmainConstants.SIGNFOR); + labReqmain.setConfirmer(""); + labReqmain.setConfirmtime(null); + commonUtil.updateLabReqmain(labReqmain); + } + } + } + String msg = "取消成功!"; + String sp_rebackreport = commonUtil.getHISOPT("sp_rebackreport"); + if ("1".equals(sp_rebackreport)) { + if ("1".equals(labPat.getDybz())) { + msg = msg + LisUtil.LINE_SEPARATOR + "此报告为已打印报告,注意考虑是否追回"; + } + LabPatwarning labPatwarning = commonUtil.getLabPatwarning(jyrq, yq, ybh); + if (labPatwarning != null) { + if (problemId < 6) { + Date tzsj = labPatwarning.getTzsj(); + long sjc = LisUtil.relativeMinute(tzsj); + if (sjc > 10) { + return new Result("4", "此报告已发布危急值结果,并且时间超过10分钟了!" + LisUtil.LINE_SEPARATOR + "请输入撤回报告组长代号和密码", 6); + } + } + //权限不足,撤回报告失败组长权限单独接口校验 + if (problemId == 6) { + int ll_qxz = lisWorkUtilsMapper.getQXZ(yhdh); + if (ll_qxz <= 0) { + return new Result("-1", "权限不足,撤回报告失败!"); + } + } + commonUtil.deleteLabPatwarning(jyrq, yq, ybh); + commonUtil.deleteLabResultwarning(jyrq, yq, ybh); + } + } + commonUtil.deleteLabReqreportPdffile(jyrq, yq, ybh); + labPat.setFslx(""); + labPat.setJgbz(LabPatConstants.DEFAULT); + commonUtil.updateLabPat(labPat); + String logdata = commonUtil.getLisPatlogbz(jyrq, yq, ybh); + setComLog(jyrq, yq, ybh, yhdh, ComLogConstants.LG_UCK, logdata); + setpatLog(jyrq, yq, ybh, yhdh); + if (sqh != null) { + setlabReqsteplog(sqh, LabReqmainConstants.START, yhdh); + } + if (!"取消成功!".equals(msg)) return new Result("3", msg); + return new Result("0", msg); + } + + public Result unconfirm1(Date jyrq, String yq, String ybh, String yhdh) { + if (yhdh == null || yhdh.isEmpty()) return new Result("1", "操作者为空,无法解除审核!"); + int problemId = getProblemId(); + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + if (problemId < 3) { + //1,解除审核权限校验 + if (!commonUtil.getUserPower(yq, yhdh, 10)) return new Result("-1", "当前操作者无权对本仪器报告解除审核!"); + //2:数据合法性校验 + String jgbz = labPat.getJgbz(); + if ("2".equals(jgbz)) return new Result("1", "报告已审核,不能解除初审!"); + if (!"1".equals(jgbz)) return new Result("1", "报告未初审,不能解除初审!"); + } + // if (problemId < 3) problemId = 3; + + // if (problemId < 4) problemId = 4; + + if (problemId < 5) problemId = 5; + + labPat.setFslx(""); + labPat.setJgbz(LabPatConstants.DEFAULT); + commonUtil.updateLabPat(labPat); + setComLog(jyrq, yq, ybh, yhdh, ComLogConstants.LG_UCK1, ""); + return new Result("0", "取消成功!"); + } + + +}