diff --git a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabResult.java b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabResult.java index de75658..8eaf25d 100644 --- a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabResult.java +++ b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/LabResult.java @@ -42,4 +42,5 @@ public class LabResult extends BaseEntity { private String xmmc; private String ygzd; private String ygzq; + private Integer xsws; } diff --git a/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/XmCalc.java b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/XmCalc.java new file mode 100644 index 0000000..3413426 --- /dev/null +++ b/lis-common/src/main/java/com/czlis/common/core/domain/entity/lis/XmCalc.java @@ -0,0 +1,19 @@ +package com.czlis.common.core.domain.entity.lis; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class XmCalc { + + private String yq; + private String jsxm; + private String xmdh; + private String jsgs; + private String bz; + + +} diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/XmCalcMapper.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/XmCalcMapper.java new file mode 100644 index 0000000..90a0de6 --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/XmCalcMapper.java @@ -0,0 +1,12 @@ +package com.czlis.interfaceCommon.mapper; + +import com.czlis.common.core.domain.entity.lis.XmCalc; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface XmCalcMapper { + List getXmCalcList(String yq); + List getXmCalc(@Param("yq") String yq,@Param("jsxm") String jsxm); + List getXmCalcbyxmdh(@Param("yq")String yq,@Param("xmdh") String xmdh); +} 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 38497e7..5fd338e 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 @@ -55,6 +55,8 @@ public class CommonUtil { ComLogMapper comLogMapper; @Autowired LabRefusedMapper labRefusedMapper; + @Autowired + XmCalcMapper xmCalcMapper; //====检验主表操作方法集合=== public LabPat getLabPatOne(Date jyrq, String yq, String ybh) { @@ -169,6 +171,7 @@ public class CommonUtil { return xmInfoMapper.getXmInfo(yq, xmdh); } + public List getXmRefList(String yq) { return xmRefMapper.getXmRefList(yq); } @@ -193,6 +196,13 @@ public class CommonUtil { return xmAlarmdetailMapper.getXmAlarmdetail(yq, xmdh); } + public List getXmAlarmdetailList(String yq) { + return xmAlarmdetailMapper.getXmAlarmdetailList(yq); + } + + public List getXmCalcList(String yq) { + return xmCalcMapper.getXmCalcList(yq); + } public Integer insertComLog(ComLog comLog) { return comLogMapper.insertComLog(comLog); } @@ -322,6 +332,14 @@ public class CommonUtil { if (comOpt1 != null) { ComOptionUtils.setOptCache(yq, xxdh, comOpt1); return comOpt1.getXxqz(); + }else{ + ComOpt comOpt2=new ComOpt(); + comOpt2.setBz(""); + comOpt2.setXxdh(xxdh); + comOpt2.setYq(yq); + comOpt2.setXxqz(""); + comOpt2.setXxlb(""); + ComOptionUtils.setOptCache(yq, xxdh, comOpt2); } return null; } diff --git a/lis-interfaceCommon/src/main/resources/mapper/LabResultMapper.xml b/lis-interfaceCommon/src/main/resources/mapper/LabResultMapper.xml index bd27bbb..b61adae 100644 --- a/lis-interfaceCommon/src/main/resources/mapper/LabResultMapper.xml +++ b/lis-interfaceCommon/src/main/resources/mapper/LabResultMapper.xml @@ -23,7 +23,7 @@ select lab_result.jyrq, lab_result.yq, lab_result.ybh, lab_result.xmdh, wyh, csjg, od, cutoff, lab_result.jgbz, bz1, bz2, yhdh, instrid, operdt, operna, refs, flag, lab_result.dw, result_flag, alarm_flag, redo_flag, sqxmdh, redo_text,xm_info.xmmc,xm_info.ygzq,xm_info.ygzd - ,textresult + ,textresult,xm_info.xsws from lab_result join xm_info on xm_info.yq=lab_result.yq and xm_info.xmdh=lab_result.xmdh @@ -41,7 +41,7 @@ select lab_result.jyrq, lab_result.yq, lab_result.ybh, lab_result.xmdh, wyh, csjg, od, cutoff, lab_result.jgbz, bz1, bz2, yhdh, instrid, operdt, operna, refs, flag, lab_result.dw, result_flag, alarm_flag, redo_flag, sqxmdh, redo_text,xm_info.xmmc,xm_info.ygzq,xm_info.ygzd - ,textresult + ,textresult,xm_info.xsws from lab_result join xm_info on xm_info.yq=lab_result.yq and xm_info.xmdh=lab_result.xmdh diff --git a/lis-interfaceCommon/src/main/resources/mapper/XmCalcMapper.xml b/lis-interfaceCommon/src/main/resources/mapper/XmCalcMapper.xml new file mode 100644 index 0000000..cfe11ae --- /dev/null +++ b/lis-interfaceCommon/src/main/resources/mapper/XmCalcMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java index 995b18b..ca9d826 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkOperServiceImpl.java @@ -23,6 +23,7 @@ import com.czlis.liswork.mapper.dict.LabInstrvsreqclassMapper; import com.czlis.liswork.pojo.DTO.ResultCalcDTO; import com.czlis.liswork.service.LisWorkOperService; +import com.czlis.liswork.utils.LisWorkUtil; import lombok.extern.slf4j.Slf4j; import lombok.val; import org.apache.commons.lang3.time.DateFormatUtils; @@ -51,6 +52,8 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { LabReqdetailMapper labReqdetailMapper; @Autowired CheckResultUtils checkResultUtils; + @Autowired + private LisWorkUtil lisWorkUtil; @Override public Result newPatInfo(Date jyrq, String ybh, String sqh, String yq, Long userId) { @@ -215,33 +218,47 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { //入参通过GET推送时使用ServletUtils.getParameterToInt获取 //入参通过POSTJSON时使用JsonParamUtils.getParameterToInt获取 int problemId = ServletUtils.getParameterToInt("problemId", 0); - - //1,审核权限校验 - if (!commonUtil.getUserPower(yq, hdys, 20)) return new Result("-1", "当前核对者无权对本仪器报告审核!"); - //2:数据合法性校验 - LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); labPat.setHdys(hdys); - Result result = beforeconfirm(labPat, 2, problemId); - if (!"0".equals(result.getCode())) return result; - //3:数据完整保存 - int wjz = saveallresult(labPat); - //同步主表危急值标识 - String alarmflag = labPat.getAlarmflag(); - if (("1".equals(alarmflag) && wjz != 1)) { - labPat.setAlarmflag("1"); - commonUtil.updateLabPat(labPat); - } else if (("".equals(alarmflag) || alarmflag == null) && wjz == 1) { - labPat.setAlarmflag(""); - commonUtil.updateLabPat(labPat); + 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; - result = chksample(labPat, problemId); - if ("99".equals(result.getCode())) { - labPat.setBz(result.getMsg()); - result.setCode("0"); + 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("1"); + commonUtil.updateLabPat(labPat); + } else if (("".equals(alarmflag) || alarmflag == null) && wjz) { + labPat.setAlarmflag(""); + commonUtil.updateLabPat(labPat); + } + } + if(problemId<4) problemId = 4; + if(problemId<5) { + //医学审核条件判断 + Result result = chksample(labPat, labResultList, problemId); + if (!"0".equals(result.getCode())) return result; + } + if(problemId<5) problemId = 5; + 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 (!"0".equals(result.getCode())) return result; if (problemId < 99) problemId = 99; //4:CA请求业务的处理 //Result result=addCA(jyrq, yq, ybh, hdys); @@ -263,11 +280,12 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { public Result beforeconfirm(Date jyrq, String yq, String ybh) { int problemId = ServletUtils.getParameterToInt("problemId", 0); LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - return beforeconfirm(labPat, 2, problemId); + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + return beforeconfirm(labPat, labResultList,2, problemId); } //内部使用 - private Result beforeconfirm(LabPat labPat, Integer checktype, Integer problemId) { + private Result beforeconfirm(LabPat labPat,List labResultList, Integer checktype, Integer problemId) { Date jyrq = labPat.getJyrq(); String yq = labPat.getYq(); String ybh = labPat.getYbh(); @@ -310,7 +328,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { if ("1".equals(brly) || "3".equals(brly)) return new Result("-1", "门诊住院的病历号不能为空,禁止审核!"); } String yqdl = commonUtil.getYqdl(yq); - List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); if (labResultList == null || labResultList.size() == 0) return new Result("-1", "结果为空禁止审核!"); for (LabResult labResult : labResultList) { String csjg = labResult.getCsjg(); @@ -412,27 +429,34 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { /** * 医学审核条件判断 - * * @param labPat * @param problemId * @return */ - private Result chksample(LabPat labPat, Integer problemId) { - List labResultList = commonUtil.getLabResultList(labPat.getJyrq(), labPat.getYq(), labPat.getYbh()); + private Result chksample(LabPat labPat, List labResultList,Integer problemId) { //医学审核条件判断 - if (problemId < 4) { + if (problemId < 5) { String checkvalue = checkResultUtils.chksample(labPat, labResultList); if (checkvalue != null && !"".equals(checkvalue)) { - return new Result("5", checkvalue, 4); + return new Result("5", checkvalue, 5); } } - + 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(); //医学审核条件判断(新规则),预留99个递归ID - if (problemId < 4) problemId = 4; + if (problemId < 5) problemId = 5; if (problemId < 99) { - int xh = problemId - 4; + int xh = problemId - 5; Map chksamplenewvalue = checkResultUtils.chksamplenew(labPat, labResultList, xh); String chkCode = (String) chksamplenewvalue.get("code"); String chkMsg = (String) chksamplenewvalue.get("msg"); @@ -440,7 +464,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { labPat.setBz(bz); xh = (Integer) chksamplenewvalue.get("xh"); setbz = (Boolean) chksamplenewvalue.get("setbz"); - problemId = 4 + xh; + problemId = 5 + xh; if ("5".equals(chkCode)) { if (setbz) { commonUtil.updateLabPat(labPat); @@ -455,7 +479,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { } return new Result("0", "保存成功!"); } - /** * 审核后步骤,在审核过程中,必须完成审核前校验通过,结果计算值填充,参考值结果标志危急值标志填写完成,最后使用此方法修改状态 * @@ -478,11 +501,12 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { 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 = lisWorkOperMapper.checkresultnosqxmdh(jyrq, yq, ybh); if (!"".equals(nullcount) && nullcount != null) - return new Result("-1", "报告项目未对应申请项目,请进(收费项目报告项目对照)菜单维护对照:\r\n" + nullcount); + ret=new Result("3", "警告!"+LisUtil.LINE_SEPARATOR +" 报告项目未对应申请项目,请进(收费项目报告项目对照)菜单维护对照:"+LisUtil.LINE_SEPARATOR + nullcount); } } @@ -526,7 +550,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { if (problemId < 100) { return new Result(result.getCode(), result.getMsg(), 100); } - return new Result("0", "保存成功!"); + return ret; } if (!result.getCode().equals("0")) return result; //最后完成 @@ -538,7 +562,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { shcs = shcs + 1; labPat.setShcs(shcs); commonUtil.updateLabPat(labPat); - return new Result("0", "保存成功!"); + return ret; } /** @@ -659,13 +683,14 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); String finish = labPat.getFinish(); if (!"细菌仪".equals(yqdl) && finish != null && finsh == 1) labPat.setFinish("1"); - int wjz = saveallresult(labPat); + labResultList = saveallresult(labPat,labResultList); + boolean wjz=getAlarmFlag(labResultList); //同步主表危急值标识 String alarmflag = labPat.getAlarmflag(); - if (("1".equals(alarmflag) && wjz != 1)) { + if (("1".equals(alarmflag) && !wjz )) { labPat.setAlarmflag("1"); commonUtil.updateLabPat(labPat); - } else if (("".equals(alarmflag) || alarmflag == null) && wjz == 1) { + } else if (("".equals(alarmflag) || alarmflag == null) && wjz) { labPat.setAlarmflag(""); commonUtil.updateLabPat(labPat); } @@ -673,7 +698,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { } //内部使用 - private int saveallresult(LabPat labPat) { + private List saveallresult(LabPat labPat,List labResultList) { Date jyrq = labPat.getJyrq(); String yq = labPat.getYq(); String ybh = labPat.getYbh(); @@ -683,19 +708,13 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { commonUtil.delNullLabResult(jyrq, yq, ybh); } //计算项目更新 - calcsample(labPat); - //保存最新参考值结果标志 - int wjz = saverefs(labPat); - String alarmflag = labPat.getAlarmflag(); - if (("1".equals(alarmflag) && wjz != 1)) { - labPat.setAlarmflag("1"); - } else if (("".equals(alarmflag) || alarmflag == null) && wjz == 1) { - labPat.setAlarmflag(""); - } + labResultList=calcsample(labPat,labResultList); //补写结果表申请单项目编号 String sqh = labPat.getSqh(); if (sqh != null && !"".equals(sqh)) setItemSqxmdh(jyrq, yq, ybh, sqh); - return wjz; + //保存最新参考值结果标志 + labResultList = saverefs(labPat); + return labResultList; } /** @@ -737,71 +756,92 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { @Override public Result calcsample(Date jyrq, String yq, String ybh) { LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - calcsample(labPat); + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + calcsample(labPat,labResultList); return new Result("0", "保存成功!"); } - - //内部使用 - private void calcsample(LabPat labPat) { + private List calcsample(LabPat labPat,List labResultList) { Date jyrq = labPat.getJyrq(); String yq = labPat.getYq(); String ybh = labPat.getYbh(); - List resultCalcDTO = lisWorkOperMapper.getResultCalc(jyrq, yq, ybh); - String xmdhold = ""; - for (ResultCalcDTO resultCalc : resultCalcDTO) { - String jsgs = resultCalc.getJsgs(); - String xmdh = resultCalc.getJsxm(); - if (!xmdhold.equals(xmdh)) { - xmdhold = xmdh; + String jsxmold = ""; + List xmCalcList =commonUtil.getXmCalcList(yq); + for (XmCalc xmCalc : xmCalcList) { + String jsxm = xmCalc.getJsxm(); + if (!jsxmold.equals(jsxm)) { + jsxmold = jsxm; + String jsgs = xmCalc.getJsgs(); + String xmdh= xmCalc.getXmdh(); boolean setjgsg = true; + boolean lb_jsx= false; Map variables = new HashMap<>(); String[] parameters = CalcUtils.getParameters(jsgs); for (int i = 0; i < parameters.length; i++) { String itemcode = parameters[i]; if ("SEX".equals(itemcode)) { String sex = labPat.getBrxb().trim(); - // if ("1".equals(sex)) sex = "男"; - // if ("2".equals(sex)) sex = "女"; + if ("男".equals(sex)) sex = "1"; + if ("女".equals(sex)) sex = "2"; variables.put("SEX", sex); + lb_jsx=true; } else if ("AGE".equals(itemcode)) { double age = AgeUtils.getDecimalAge(AgeUtils.getBirthDateByAge(labPat.getNl(), labPat.getNldw())); variables.put("AGE", String.valueOf(age)); + lb_jsx=true; } else { - List collect = resultCalcDTO.stream().filter(result -> result.getXmdh().equals(itemcode)).collect(Collectors.toList()); + List collect = labResultList.stream().filter(result -> result.getXmdh().equals(itemcode)).collect(Collectors.toList()); if (collect.size() > 0) { variables.put(itemcode, collect.get(0).getCsjg()); } else { setjgsg = false; + break; } } } if (setjgsg) { String result = CalcUtils.getValueFromCalc(jsgs, variables); + if("0".equals(result) && lb_jsx)result=null; if (result != null && !result.trim().isEmpty()) { - if(LisUtil.isNumber(result)) { - Integer xsws =lisWorkOperMapper.getxsws(yq,xmdh); - if (xsws >= 0) result = LisUtil.round(result, xsws); - } //插入结果值 - LabResult labResult = commonUtil.getLabResult(jyrq, yq, ybh, xmdh); - if (labResult == null) { - labResult = new LabResult(); + 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); + } + }else{ + XmInfo xmInfo=commonUtil.getXmInfo(yq,xmdh); + 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(xmdh); + labResult.setXmdh(jsxm); labResult.setCsjg(result); commonUtil.insertLabResult(labResult); - } else { - labResult.setCsjg(result); - commonUtil.updateLabResult(labResult); + labResult.setXsws(xmInfo.getXsws()); + labResult.setYgzd(xmInfo.getYgzd()); + labResult.setYgzq(xmInfo.getYgzq()); + labResult.setXmmc(xmInfo.getXmmc()); + labResultList.set(labResultList.size(), labResult); } } } } } + return labResultList; } - /** * 计算项目参考值结果异常标志 * @@ -812,13 +852,14 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { @Override public Result saverefs(Date jyrq, String yq, String ybh) { LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); - int wjz = saverefs(labPat); + List labResultList = saverefs(labPat); + boolean wjz=getAlarmFlag(labResultList); //同步主表危急值标识 String alarmflag = labPat.getAlarmflag(); - if (("1".equals(alarmflag) && wjz != 1)) { + if (("1".equals(alarmflag) && !wjz )) { labPat.setAlarmflag("1"); commonUtil.updateLabPat(labPat); - } else if (("".equals(alarmflag) || alarmflag == null) && wjz == 1) { + } else if (("".equals(alarmflag) || alarmflag == null) && wjz) { labPat.setAlarmflag(""); commonUtil.updateLabPat(labPat); } @@ -832,12 +873,26 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { * @param labPat * @return 返回值0正常, 1有危急值明细存在 */ - private int saverefs(LabPat labPat) { + 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, lb_wjz = false; + boolean lb_setbj = true, lb_wjz = false,nowjz=false; + //危急值标识去除原则 nowjz = true 不能算做危急值 + String brxm = labPat.getBrxm(); + if (brxm != null) { + if (brxm.contains("质控") || brxm.contains("复查") || brxm.contains("QC") || brxm.contains("qc") || brxm.contains("软化水") || brxm.contains("锅炉水")) { + nowjz = true; + } + } + String brly = labPat.getBrly(); + if (brly != null) brly = commonUtil.getComDictNameById("PT", brly); + if (brly != null) if (brly.contains("质控")) nowjz = true; + String ksdh = labPat.getKsdh(); + if (ksdh != null) ksdh = commonUtil.getComDictNameById("DP", ksdh); + if (ksdh != null) if (ksdh.contains("检验科")) nowjz = true; + List labResultList = null; if (!"细菌仪".equals(yqdl)) { Map map = new HashMap<>(); map.put("jyrq", jyrq); @@ -851,7 +906,10 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { String retMsg = String.valueOf(map.get("retmsg")); log.info("调用存储过程{}返回值:{},{}", "sp_setrefs", retCode, retMsg); if (retCode == null || "".equals(retCode) || "-1".equals(retCode)) lb_setbj = false; - List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + 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); @@ -859,43 +917,50 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { String ygzd = labResult.getYgzd(); //当结果为数值并且与周期诊断无关,计算存储过程保存成功后,只进行危急值判断 if (lb_nummode && lb_setbj && !"Y".equals(ygzd) && !"Y".equals(ygzq)) { - int wjz = alarmcondition(labPat, labResult); - if (wjz != -1) {//危急值标识特殊判断存在时优先使用特殊结果 - String resultalarmflag = labResult.getAlarmFlag(); - if (("".equals(resultalarmflag) && lb_wjz)) { - String jgbz = labResult.getJgbz(); - if (jgbz == null || !"L".equals(jgbz)) jgbz = "H"; - labResult.setAlarmFlag(jgbz); - commonUtil.updateLabResult(labResult); - } else if (!"".equals(resultalarmflag) && !lb_wjz) { + if(nowjz){ + String resultalarmflag1 = labResult.getAlarmFlag(); + if (!"".equals(resultalarmflag1) && resultalarmflag1 != null){ labResult.setAlarmFlag(""); 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 resultalarmflag = labResult.getAlarmFlag(); + if (("".equals(resultalarmflag) && lb_wjz)) { + String jgbz = labResult.getJgbz(); + if (jgbz == null || !"L".equals(jgbz)) jgbz = "H"; + labResult.setAlarmFlag(jgbz); + commonUtil.updateLabResult(labResult); + } else if (!"".equals(resultalarmflag) && !lb_wjz) { + labResult.setAlarmFlag(""); + commonUtil.updateLabResult(labResult); + } + } + String resultalarmflag1 = labResult.getAlarmFlag(); + if (!"".equals(resultalarmflag1) && resultalarmflag1 != null) lb_wjz = true; } - String resultalarmflag1 = labResult.getAlarmFlag(); - if (!"".equals(resultalarmflag1) && resultalarmflag1 != null) lb_wjz = true; } else { - int wjz = setrefs(labPat, labResult); - if (wjz == 1) lb_wjz = true; + String xmdh=labResult.getXmdh(); + List xmInfo0=xmInfoList.stream().filter(xm->xm.getXmdh().equals(xmdh)).collect(Collectors.toList()); + if(xmInfo0.size()>0){ + 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.setResultFlag(labResult0.getResultFlag()); + labResult.setJgbz(labResult0.getJgbz()); + labResult.setAlarmFlag(labResult0.getAlarmFlag()); + } } } - //危急值标识去除原则 - String brxm = labPat.getBrxm(); - if (brxm != null) - if (brxm.contains("质控") || brxm.contains("复查") || brxm.contains("QC") || brxm.contains("qc") || brxm.contains("软化水") || brxm.contains("锅炉水")) { - lb_wjz = false; - } - ; - String brly = labPat.getBrly(); - if (brly != null) brly = commonUtil.getComDictNameById("PT", brly); - if (brly != null) if (brly.contains("质控")) lb_wjz = false; - String ksdh = labPat.getKsdh(); - if (ksdh != null) ksdh = commonUtil.getComDictNameById("DP", ksdh); - if (ksdh != null) if (ksdh.contains("检验科")) lb_wjz = false; - //同步主表危急值标识 - if (lb_wjz) return 1; + } - return 0; + return labResultList; } /** @@ -905,18 +970,16 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { * @param labResult * @return */ - private int setrefs(LabPat labPat, LabResult labResult) { + private LabResult setxmdhrefs(LabPat labPat, LabResult labResult,XmInfo xmInfo,List getXmAlarmdetail,boolean nowjz) { String yq = labPat.getYq(); String resultflag = "M", wjzflag = ""; - int wjz = 0; String xmdh = labResult.getXmdh(); String csjg = labResult.getCsjg(); - if (csjg == null || csjg.trim().isEmpty()) return 0; + if (csjg == null || csjg.trim().isEmpty()) return labResult; String csjgnew = LisUtil.getOverNumber(csjg.trim()); boolean lb_nummode = LisUtil.isNumber(csjgnew); //当结果为数值时计算上下限 if (lb_nummode) { - XmInfo xmInfo = commonUtil.getXmInfo(yq, xmdh); String dw = xmInfo.getDw(); String refs = xmInfo.getDyckz(); Double ckxx = xmInfo.getCkxx(); @@ -980,14 +1043,15 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { Double csjgnum = Double.valueOf(csjgnew); if (ckxx != null) if (csjgnum < ckxx) resultflag = "L"; if (cksx != null) if (csjgnum > cksx) resultflag = "H"; - int wjzf = alarmcondition(labPat, labResult); - 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; + 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; + } } - if (!"".equals(wjzflag)) wjz = 1; } else { //文字型结果判断 String jgbzold = labResult.getJgbz(); @@ -995,10 +1059,12 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { if ("P".equals(jgbzold) && (csjg.indexOf("阳") >= 0 || csjg.indexOf("+") >= 0 || csjg.indexOf(":") >= 0) && (lmtflag == null || lmtflag.trim().isEmpty())) lmtflag = "P"; resultflag = lmtflag; - if ("J".equals(lmtflag)) wjzflag = "H"; - int wjzf = alarmcondition(labPat, labResult); - if (wjzf == 1) wjzflag = "H";//满足特定危机值条件 - if (wjzf == 0) wjzflag = "";//存在特定危机值条件,但不满足不提示 + 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(); @@ -1012,8 +1078,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { commonUtil.updateLabResult(labResult); } - if (!"".equals(wjzflag)) wjz = 1; - return wjz; + return labResult; } /** @@ -1023,14 +1088,13 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { * @param labResult * @return */ - private int alarmcondition(LabPat labPat, LabResult labResult) { + private int alarmcondition(LabPat labPat, LabResult labResult,List getXmAlarmdetail) { + if (getXmAlarmdetail == null) return -1; boolean lb_fcb = false, lb_hasval = false; String csjg = labResult.getCsjg(); if (csjg == null || csjg.trim().isEmpty()) return -1; String yq = labPat.getYq(); String xmdh = labResult.getXmdh(); - List getXmAlarmdetail = commonUtil.getXmAlarmdetail(yq, xmdh); - if (getXmAlarmdetail == null) return -1; String brxm = ""; String brdh = ""; String ksdh = labPat.getKsdh(); @@ -1200,4 +1264,17 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { return 0; } + /** + * 查询明细是否有危急值标识 + * @param labResultList + * @return + */ + private boolean getAlarmFlag(List labResultList){ + boolean wjz=false; + List labResultList0=labResultList.stream().filter(xm->!"".equals(xm.getAlarmFlag())&&xm.getAlarmFlag()!=null).collect(Collectors.toList()); + if(labResultList0.size()>0){ + wjz=true; + } + return wjz; + } }