From 4950fd5d8f5d9b2c3106182f1f5e810bc97ad161 Mon Sep 17 00:00:00 2001 From: tangw Date: Tue, 30 Sep 2025 15:25:44 +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 --- .../czlis/common/utils/file/ImageUtils.java | 60 + .../constants/LabReqmainConstants.java | 5 +- .../interfaceCommon/mapper/ComUsrMapper.java | 2 + .../mapper}/LabInstrvsreqclassMapper.java | 2 +- .../mapper/LisWorkUtilsMapper.java | 25 + .../pojo/entity/BarCodeParam.java | 8 +- .../pojo/entity}/ResultCalcDTO.java | 2 +- .../interfaceCommon/utils/CommonUtil.java | 10 +- .../interfaceCommon/utils/LisWorkUtils.java | 1945 +++++++++++++++++ .../interfaceCommon/utils/ReportUtil.java | 70 +- .../main/resources/mapper/ComUsrMapper.xml | 8 +- .../mapper/LabInstrvsreqclassMapper.xml | 2 +- .../resources/mapper/LisWorkUtilsMapper.xml | 84 + .../liswork/mapper/LisWorkOperMapper.java | 2 +- .../service/impl/LisWorkOperServiceImpl.java | 1770 +-------------- .../service/impl/LisWorkServiceImpl.java | 28 +- .../xtwh/LabInstrvsreqclassServiceImpl.java | 2 +- .../resources/mapper/LisWorkOperMapper.xml | 2 +- 18 files changed, 2232 insertions(+), 1795 deletions(-) rename {liswork/src/main/java/com/czlis/liswork/mapper/dict => lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper}/LabInstrvsreqclassMapper.java (92%) create mode 100644 lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LisWorkUtilsMapper.java rename {liswork/src/main/java/com/czlis/liswork/pojo/DTO => lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity}/ResultCalcDTO.java (84%) create mode 100644 lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkUtils.java rename {liswork => lis-interfaceCommon}/src/main/resources/mapper/LabInstrvsreqclassMapper.xml (95%) create mode 100644 lis-interfaceCommon/src/main/resources/mapper/LisWorkUtilsMapper.xml diff --git a/lis-common/src/main/java/com/czlis/common/utils/file/ImageUtils.java b/lis-common/src/main/java/com/czlis/common/utils/file/ImageUtils.java index 7ba3626..6e5264a 100644 --- a/lis-common/src/main/java/com/czlis/common/utils/file/ImageUtils.java +++ b/lis-common/src/main/java/com/czlis/common/utils/file/ImageUtils.java @@ -154,6 +154,66 @@ public class ImageUtils System.out.println("图片已生成到static目录:" + targetFile.getAbsolutePath()); return targetFile; } + + /** + * 获取服务的static目录绝对路径(Spring Boot核心:通过ResourceUtils获取) + * @return + */ + public static String getStaticPath(){ + File staticDir = null; + try { + // 本地开发环境:target/classes/static(Maven/Gradle构建后路径) + // 生产环境(Jar包部署):Jar包内的static目录(需注意只读问题,下文会说明) + staticDir = new File(ResourceUtils.getURL("classpath:static").getPath()); + } catch (FileNotFoundException e) { + // 若Jar包部署时获取不到classpath:static(因Jar包内资源无法直接以File形式访问) + // 改用服务运行目录下的static(需手动创建) + staticDir = new File(System.getProperty("user.dir") + File.separator + "static"); + } + return staticDir.getAbsolutePath(); + } + /** + * 判断文件是否存在,且是普通文件(非目录) + * @param filePath 文件路径(绝对路径或相对路径) + * @return true:存在且是文件;false:不存在/是目录/路径非法 + */ + public static boolean isFileExists(String filePath) { + // 1. 校验路径非空 + if (filePath == null || filePath.trim().isEmpty()) { + System.err.println("文件路径不能为空!"); + return false; + } + + // 2. 创建File对象并判断 + File file = new File(filePath); + // exists():判断是否存在;isFile():判断是否为普通文件(排除目录) + boolean exists = file.exists() && file.isFile(); + + if (!exists) { + System.out.println("文件不存在或不是普通文件,路径:" + filePath); + } + return exists; + } + + /** + * 判断目录是否存在(可用于判断static目录、临时目录等) + * @param dirPath 目录路径 + * @return true:存在且是目录;false:不存在/是文件/路径非法 + */ + public static boolean isDirExists(String dirPath) { + if (dirPath == null || dirPath.trim().isEmpty()) { + System.err.println("目录路径不能为空!"); + return false; + } + + File dir = new File(dirPath); + boolean exists = dir.exists() && dir.isDirectory(); + + if (!exists) { + System.out.println("目录不存在或不是目录,路径:" + dirPath); + } + return exists; + } // 支持的图片格式(文件头标识 + 后缀名映射) private enum ImageFormat { JPG(new byte[]{(byte) 0xFF, (byte) 0xD8, (byte) 0xFF}, ".jpg"), diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/LabReqmainConstants.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/LabReqmainConstants.java index 5095ed3..c769289 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/LabReqmainConstants.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/LabReqmainConstants.java @@ -40,6 +40,9 @@ public class LabReqmainConstants { * 作废样本-9 */ public static final String CANCAL = "9"; - + /** + * 打印报告 + */ + public static final String REPORT = "5"; } \ No newline at end of file diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/ComUsrMapper.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/ComUsrMapper.java index 3313921..cf65132 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/ComUsrMapper.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/ComUsrMapper.java @@ -7,4 +7,6 @@ import java.util.List; public interface ComUsrMapper { List getComUsrList(@Param("yhdh") String yhdh); + byte[] getComUsrdzqm(String yhdh); + String getComUsrName(String yhdh); } diff --git a/liswork/src/main/java/com/czlis/liswork/mapper/dict/LabInstrvsreqclassMapper.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabInstrvsreqclassMapper.java similarity index 92% rename from liswork/src/main/java/com/czlis/liswork/mapper/dict/LabInstrvsreqclassMapper.java rename to lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabInstrvsreqclassMapper.java index 6e83c4e..dd7a293 100644 --- a/liswork/src/main/java/com/czlis/liswork/mapper/dict/LabInstrvsreqclassMapper.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabInstrvsreqclassMapper.java @@ -1,4 +1,4 @@ -package com.czlis.liswork.mapper.dict; +package com.czlis.interfaceCommon.mapper; import com.czlis.common.core.domain.entity.lis.LabInstrvsreqclass; import com.czlis.common.core.domain.entity.lis.view.VwReqitemclass; diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LisWorkUtilsMapper.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LisWorkUtilsMapper.java new file mode 100644 index 0000000..ed93b87 --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LisWorkUtilsMapper.java @@ -0,0 +1,25 @@ +package com.czlis.interfaceCommon.mapper; + +import com.czlis.common.core.domain.entity.lis.LabPat; +import com.czlis.interfaceCommon.pojo.entity.ResultCalcDTO; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +public interface LisWorkUtilsMapper { + Long checkReqClass(@Param("sqh") String sqh,@Param("yq") String yq); + String selectSqxmdh(String sqh); + void spSetrefs(Map map); + void updatelabresultsqxmdhall(@Param("jyrq") Date jyrq,@Param("yq") String yq,@Param("ybh") String ybh,@Param("sqxmdh") String sqxmdh); + void updatelabresultsqxmdh(@Param("jyrq") Date jyrq,@Param("yq") String yq,@Param("ybh") String ybh,@Param("sqh") String sqh); + List getResultCalc(@Param("jyrq") Date jyrq, @Param("yq") String yq, @Param("ybh") String ybh); + Integer getLimitCount(Map map); + Integer checkresultsqxmdh(@Param("jyrq") Date jyrq,@Param("yq") String yq,@Param("ybh") String ybh,@Param("sqh") String sqh); + String checkresultnosqxmdh(@Param("jyrq") Date jyrq,@Param("yq") String yq,@Param("ybh") String ybh); + Integer checkresultwxh(@Param("jyrq") Date jyrq, @Param("yq") String yq, @Param("ybh") String ybh); + LabPat checkdublereport(@Param("sqh") String sqh, @Param("ybh") String ybh); + LabPat checkyqdublereport(@Param("sqh") String sqh,@Param("yq") String yq, @Param("ybh") String ybh); + Integer getQXZ(String yhdh); +} diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/BarCodeParam.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/BarCodeParam.java index 1810031..6118c60 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/BarCodeParam.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/BarCodeParam.java @@ -22,8 +22,8 @@ public class BarCodeParam { private String yq; private String ybh; private String hospitalName; - /** - * 图片数组 - */ - private String[] pic; + /**结果图片数组*/private String[] pic; + /**检验医生签名*/private String usernopic; + /**审核医生签名*/private String checkerpic; + /**初审医生签名*/private String checkercbpic; } diff --git a/liswork/src/main/java/com/czlis/liswork/pojo/DTO/ResultCalcDTO.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/ResultCalcDTO.java similarity index 84% rename from liswork/src/main/java/com/czlis/liswork/pojo/DTO/ResultCalcDTO.java rename to lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/ResultCalcDTO.java index be9d5c2..f0f0a48 100644 --- a/liswork/src/main/java/com/czlis/liswork/pojo/DTO/ResultCalcDTO.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/ResultCalcDTO.java @@ -1,4 +1,4 @@ -package com.czlis.liswork.pojo.DTO; +package com.czlis.interfaceCommon.pojo.entity; import lombok.AllArgsConstructor; import lombok.Data; 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 0feb12b..98f7789 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 @@ -499,7 +499,9 @@ public class CommonUtil { private ComOpt getOptCache(String yq, String xxdh) { return ComOptionUtils.getOptCache(yq, xxdh); } - + public List getComUsrList(String yhdh) { + return comUsrMapper.getComUsrList(yhdh); + } public Boolean getUserPower(String yq, String yhdh, int powerIdx) { if ("admin".equals(yhdh)) return true; if ("LIS".equals(yhdh)) return true; @@ -513,6 +515,12 @@ public class CommonUtil { if ("Y".equals(userPower.substring(powerIdx - 1, 1))) return true; return false; } + public byte[] getComUsrdzqm(String yhdh) { + return comUsrMapper.getComUsrdzqm(yhdh); + } + public String getComUsrName(String yhdh){ + return comUsrMapper.getComUsrName(yhdh); + } public List getLabReqreportPdffileList(String sqh) { return labReqreportPdffileMapper.getLabReqreportPdffileList(sqh); 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 new file mode 100644 index 0000000..b2b8a6f --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkUtils.java @@ -0,0 +1,1945 @@ +package com.czlis.interfaceCommon.utils; + +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.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; + + /** + * 初步审核 + * + * @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 || "".equals(hdys)) 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(Date jyrq, String yq, String ybh) { + int finsh = 1; + 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(); + 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); + 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.trim()) || 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 || "".equals(hdys)) 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) { + Date jyrq = labPat.getJyrq(); + String yq = labPat.getYq(); + String ybh = labPat.getYbh(); + if (labPat == null) return new Result("-1", "病人信息为空禁止审核!"); + 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 || "".equals(brly))) + return new Result("-1", "病人类型为空,禁止审核!"); + String limit_yblx = commonUtil.getHISOPT("limit_yblx"); + String yblx = labPat.getYblx(); + if ("1".equals(limit_yblx) && (yblx == null || "".equals(yblx))) + return new Result("-1", "样本类型为空,禁止审核!"); + String limit_brxm = commonUtil.getHISOPT("limit_brxm"); + String brxm = labPat.getBrxm(); + if ("1".equals(limit_brxm) && (brxm == null || "".equals(brxm))) + return new Result("-1", "病人姓名为空,禁止审核!"); + if ((brxm == null || "".equals(brxm)) && problemId < 1) new Result("5", "姓名为空,你确定要审核吗?", 1); + String limit_ksdh = commonUtil.getHISOPT("limit_ksdh"); + String ksdh = labPat.getKsdh(); + if ("1".equals(limit_ksdh) && (ksdh == null || "".equals(ksdh))) + 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 || "".equals(brdh))) { + if (!"质控".equals(brlyname)) return new Result("-1", "病历号不能为空,禁止审核!"); + } + String limit_brpatno = commonUtil.getHISOPT("limit_brpatno"); + if ("1".equals(limit_brpatno) && (brdh == null || "".equals(brdh))) { + if ("1".equals(brly) || "3".equals(brly)) return new Result("-1", "门诊住院的病历号不能为空,禁止审核!"); + } + String yqdl = commonUtil.getYqdl(yq); + if (labResultList == null || labResultList.size() == 0) 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 && !"".equals(sqh)) { + 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 || "".equals(Userid)) { + 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 && !"".equals(ls_cbbgyq)) { + 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 (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.size() > 0) { + labResultList = calcsample(labPat, labResultList, xmCalcList); + } + //补写结果表申请单项目编号 + String sqh = labPat.getSqh(); + if (sqh != null && !"".equals(sqh)) 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 || "".equals(sqh)) { + } else { + setItemSqxmdh(jyrq, yq, ybh, sqh); + } + } + + private void setItemSqxmdh(Date jyrq, String yq, String ybh, String sqh) { + if (sqh != null && !"".equals(sqh)) { + 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.size() > 0) { + 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 (int i = 0; i < parameters.length; i++) { + String itemcode = parameters[i]; + if ("SEX".equals(itemcode)) { + String sex = labPat.getBrxb().trim(); + 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 = 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, "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 || "".equals(retCode) || "-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().trim(); + if (!"".equals(resultalarmflag1) && resultalarmflag1 != null) { + 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.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.setResult_flag(labResult0.getResult_flag()); + labResult.setJgbz(labResult0.getJgbz()); + labResult.setAlarm_flag(labResult0.getAlarm_flag()); + } + } + } + + } + return labResultList; + } + + private boolean checknowjz(LabPat labPat) { + boolean 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; + return nowjz; + } + + /** + * 特定条件危急值判断 + * + * @param labPat + * @param labResult + * @return + */ + 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(); + 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.trim().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().trim(); + if (sex == null) sex = ""; + } + 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.valueOf(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.indexOf("阳") >= 0 || csjg.indexOf("+") >= 0 || csjg.indexOf(":") >= 0) && (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 && !"".equals(checkvalue)) { + 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) sjsj = jysj; + if (sjsj.after(confirmtime)) sjsj = jysj; + if (jssj == null) jssj = sjsj; + if (jssj.after(confirmtime)) jssj = sjsj; + if (bbsjsj != null) { + if (bbsjsj.after(jssj) && jysj.after(bbsjsj)) jssj = jysj; + } + if (cysj != null) { + if (cysj.after(jssj) && jysj.after(cysj)) jssj = jysj; + } + if (jssj.after(sjsj)) sjsj = jysj; + + List labReqsteplog = commonUtil.getLabReqsteplog(sqh); + if (bbsjsj != null && bbsjsj.after(jssj)) { + Date sj = jssj; + Date finalSj = sj; + 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 = sj; + labReqmain.setBbsjsj(bbsjsj); + } else { + bbsjsj = jssj; + } + if (cysj != null && cysj.after(bbsjsj)) { + Date sj = bbsjsj; + 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 = sj; + labReqmain.setCysj(cysj); + } + if (cysj != null && zxsj.after(cysj) && bbsjsj.after(zxsj)) { + Date sj = bbsjsj; + 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()) { + cysj = maxTimeEntity.get().getChangedate(); + } else cysj = zxsj; + labReqmain.setCysj(cysj); + } else { + cysj = bbsjsj; + } + if (zxsj != null && zxsj.after(cysj)) { + Date sj = cysj; + 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 = sj; + labReqmain.setZxsj(zxsj); + } + 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.size() == 0) { + 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 -> !"".equals(xm.getAlarm_flag().trim()) && xm.getAlarm_flag() != null).collect(Collectors.toList()); + if (labResultList0.size() > 0) { + wjz = true; + } + return wjz; + } + + /** + * 获取危急值信息集合 + * + * @param labResultList + * @return + */ + private String getAlarmMsg(List labResultList) { + String wjzmsg = ""; + List labResultList0 = labResultList.stream().filter(xm -> !"".equals(xm.getAlarm_flag().trim()) && xm.getAlarm_flag() != null).collect(Collectors.toList()); + if (labResultList0.size() > 0) { + for (LabResult labResult : labResultList0) { + String xmmc = labResult.getXmmc(); + String cjsg = labResult.getCsjg(); + if (!"".equals(cjsg) && cjsg != null) { + cjsg = ",结果:" + cjsg; + } else { + cjsg = ""; + } + + wjzmsg = wjzmsg + "项目:" + xmmc + cjsg + LisUtil.LINE_SEPARATOR; + } + } + return wjzmsg; + } + + /** + * 操作记录日志 + * + * @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 && "".equals(yhxm)) yhdh = yhxm; + } + String sjys = labPat.getSjys(); + String sjysname = commonUtil.getComDictNameById("SRD", sjys); + if (sjysname == null || "".equals(sjysname)) { + 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 -> !"".equals(xm.getAlarm_flag().trim()) && xm.getAlarm_flag() != null).collect(Collectors.toList()); + if (labResultList0.size() > 0) { + 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 || "".equals(yhdh)) 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 || "".equals(yhdh)) 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.size() > 0) setcalc = true; + break; + case "nl": + case "nldw": + xmCalcList = commonUtil.getXmCalcbyxmdh(yq, "AGE"); + if (xmCalcList.size() > 0) 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); + List labResultList1 = labResultList.stream().filter(labR -> labR.getChangeflag() == 1).collect(Collectors.toList()); + if (labResultList1.size() > 0) { + 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 value + * @return + */ + private Result changePatbrdh(Date jyrq, String yq, String ybh, String value) { + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + + return new Result("0", "保存成功", labPat); + } + + 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 ("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.size() > 0) { + 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.size() > 0) { + 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.size() > 0) { + 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.size() > 0) { + 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.size() > 0) { + 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.size() > 0) return new Result("0", ""); + if (collect1.size() > 0) 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(); + //修改状态和时间 + updateLabReqmainZT(userId, sqh); + //保存lab_pat表信息 + labPat.setJyrq(commonUtil.getCurrentTime()); + labPat.setYq(yq); + labPat.setYbh(ybh); + 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.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(commonUtil.getCurrentTime()); + 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(commonUtil.getCurrentTime()); + labPat.setShcs(0); + labPat.setYljg(labReqmain.getYljg()); + labPat.setSfzh(labReqmain.getSfzh()); + labPat.setPhone(labReqmain.getPhone()); + labPat.setAddr(labReqmain.getAddr()); + labPat.setLstd(labReqmain.getLstd()); + 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 && !"".equals(brdh)) || (sqh0 != null && !"".equals(sqh0)) || (brxm != null && !"".equals(brxm))) { + 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; + +// //4.获取病人信息 +// DayMessage dayMessage = new DayMessage(); +// dayMessage.setIp(""); +// dayMessage.setYljg("1"); +// dayMessage.setUserid(yhdh); +// dayMessage.setMsgid(LisinterfaceNameConstants.DAYMESSAGE_GETPATIENT); +// String val = labReqmainOne.getBrdh() + "|" + labReqmainOne.getBrly() + "|"; //这里有个医疗机构的,没有传,要考虑 +// dayMessage.setMsg(val); + 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.写日志 + + + return new Result("0", ""); + } + + public void updateLabReqmainZT(String userId, String sqh) { + Map map = new HashMap<>(); + map.put("userId", userId); + map.put("sqh", sqh); + labReqmainMapper.updateLabReqmainZT(map); + } + + 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 (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); + } + List labInputcolList0 = labInputcolList.stream().filter(labInputcol0 -> labInputcol0.getMrz() != null && "".equals(labInputcol0.getMrz())).collect(Collectors.toList()); + String mrz = null; + for (LabInputcol labInputcol : labInputcolList0) { + if (!"!".equals(labInputcol)) { + String zdmc = labInputcol.getZdmc(); + switch (zdmc) { + case "dysj": + case "cyrq": + case "sqsj": + case "nl": + case "yhdh": + mrz = labInputcol.getMrz(); + if (mrz != null && "".equals(mrz)) { + 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); + } + } + case "hdys": + String sybh = loginConfigParam.getCurrent_hdys_sybh(); + String eybh = loginConfigParam.getCurrent_hdys_eybh(); + if ("".equals(sybh) && "".equals(eybh) && sybh != null && eybh != null) { + if (LisUtil.isStringBetween(ybh, sybh, eybh)) { + labPat.setHdys(mrz); + } + } else { + labPat.setHdys(mrz); + } + break; + default: + mrz = labInputcol.getMrz(); + if (mrz != null && "".equals(mrz)) { + EntityUtils.setItem(labPat, zdmc, mrz); + } + } + } + } + String yhdh = SecurityUtils.getLoginUser().getUsername(); + if (labPat.getYhdh() == null || "".equals(labPat.getYhdh())) + labPat.setYhdh(SecurityUtils.getLoginUser().getUsername()); + labPat.setLastuser(yhdh); + labPat.setLastdt(ldt_now); + if (labPat.getJgbz() == null) labPat.setJgbz(LabPatConstants.DEFAULT); + return labPat; + } +} diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/ReportUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/ReportUtil.java index 254177a..73f8492 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/ReportUtil.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/ReportUtil.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; import com.czlis.common.config.RuoYiConfig; import com.czlis.common.core.domain.Result; import com.czlis.common.core.domain.entity.lis.LabGraph; +import com.czlis.common.core.domain.entity.lis.LabPat; import com.czlis.common.utils.file.FileUtils; import com.czlis.common.utils.file.ImageUtils; import com.czlis.common.utils.ip.IpUtils; @@ -114,12 +115,11 @@ public class ReportUtil { } public Result printToPdf(String templatename, BarCodeParam barCodeParam, String pdfName, boolean base64) { - String outputPath = RuoYiConfig.getProfile() + "/config/static/printPDF/" + UUID.randomUUID().toString() + ".pdf"; // PDF输出路径(多级目录会自动创建) - // log.info("打印输入输出地址:{},{}",path,outputPath); + String staticpath=ImageUtils.getStaticPath()+ File.separator; + String outputPath = staticpath+ File.separator + "printPDF"+ File.separator + UUID.randomUUID().toString() + ".pdf"; // PDF输出路径(多级目录会自动创建) Map stringObjectMap = BeanUtil.beanToMap(barCodeParam); try { Connection connection = dataSource.getConnection(); - //JasperReportUtil.generatePdf(templatename,outputPath,stringObjectMap,connection); JasperReportUtil.exportToPdf(templatename, stringObjectMap, connection, outputPath); } catch (Exception e) { e.printStackTrace(); @@ -132,7 +132,7 @@ public class ReportUtil { String[] pic = barCodeParam.getPic(); if(pic != null && pic.length > 0){ for (int i = 0; i < pic.length; i++) { - String picFilePath = RuoYiConfig.getProfile() + "/config/static/graphs/"+ StrUtil.splitToArray(pic[i], "graphs/")[1]; + String picFilePath =staticpath+ File.separator +"graphs"+File.separator + StrUtil.splitToArray(pic[i], "graphs/")[1]; FileUtils.deleteFile(picFilePath); } } @@ -151,16 +151,8 @@ public class ReportUtil { } public String getPrintURL(String pdfName) { - String httpPath = ""; - if (printURL == null || printURL.equals("")) { - httpPath = "http://" + IpUtils.getHostIp() + ":" + port + "/printPDF/" + pdfName + ".pdf"; - } else { - httpPath = "http://" + printURL + ":" + port + "/printPDF/" + pdfName + ".pdf"; - } - - return httpPath; + return getHttpURL("printPDF")+"/"+pdfName+".pdf"; } - public String getHttpURL(String pathChild) { String httpPath = ""; if (printURL == null || printURL.equals("")) { @@ -168,7 +160,6 @@ public class ReportUtil { } else { httpPath = "http://" + printURL + ":" + port + "/" + pathChild; } - return httpPath; } @@ -337,25 +328,26 @@ public class ReportUtil { } } - public Result printReport(Date jyrq, String yq, String ybh, String sqh) { - String hospitalName = commonUtil.getCompany(commonUtil.getLabInstr(yq).getYljg()); + public Result printReport(Date jyrq, String yq, String ybh) { + commonUtil.getLabPatOne(jyrq, yq, ybh); + return printReport(commonUtil.getLabPatOne(jyrq, yq, ybh)); + } + public Result printReport(LabPat labPat) { + Date jyrq = labPat.getJyrq(); + String yq = labPat.getYq(); + String ybh = labPat.getYbh(); + String yljg=commonUtil.getLabInstr(yq).getYljg(); + String hospitalName = commonUtil.getCompany(yljg); BarCodeParam barCodeParam = new BarCodeParam(); barCodeParam.setJyrq(jyrq); barCodeParam.setYq(yq); barCodeParam.setYbh(ybh); - barCodeParam.setSqh(sqh); barCodeParam.setHospitalName(hospitalName); - String[] filename = getReportpic(jyrq, yq, ybh); - if(filename != null && filename.length > 0) { - String httpPath = getHttpURL("graphs"); - String[] picPath = new String[filename.length]; - for (int i = 0; i < filename.length; i++) { - //EntityUtils.setItem(barCodeParam, "pic" + (i + 1), httpPath + "/" + filename[i]); - picPath[i] = httpPath + "/" + filename[i]; - log.info("传给模板的地址:{}", httpPath + "/" + filename[i]); - } - barCodeParam.setPic(picPath); - } + barCodeParam.setUsernopic(getSignName(labPat.getYhdh())); + barCodeParam.setCheckerpic(getSignName(labPat.getHdys())); + barCodeParam.setCheckercbpic(getSignName(labPat.getChecker())); + String[] picPath = getReportpic(jyrq, yq, ybh); + barCodeParam.setPic(picPath); return printToPdf("report_image2", barCodeParam, UUID.randomUUID().toString(), true); } @@ -366,6 +358,7 @@ public class ReportUtil { log.info("labGraphList.size():{}", labGraphList.size()); if (labGraphList.size() <= 0) return null; String[] filename = new String[labGraphList.size()]; + String httpPath = getHttpURL(filepath); int filecount = 0; if (labGraphList.size() > 0) { for (LabGraph labGraph : labGraphList) { @@ -377,10 +370,29 @@ public class ReportUtil { } catch (IOException e) { throw new RuntimeException(e); } - filename[filecount] = txlbmc; + filename[filecount] = httpPath + "/" + txlbmc; filecount++; } } return filename; } + public String getSignName(String yhdh) { + if(yhdh==null||"".equals(yhdh))return ""; + //SELECT zplx INTO :ls_pictype FROM off_staff WHERE rydh = :as_userno ; + String pictype="jpg";//暂时写死是jpg,8.0新版本后期可以考虑用户表增加字段指定类型 + String dirpath="signname"; + String httpPath = getHttpURL(dirpath); + String txlbmc = yhdh+ "." + pictype.toLowerCase(); + String filepath =ImageUtils.getStaticPath()+ File.separator +dirpath+ File.separator +txlbmc; + //如果文件不存在则写入 + if(!ImageUtils.isFileExists(filepath)){ + byte[] txnr= commonUtil.getComUsrdzqm(yhdh); + try { + ImageUtils.generateToStaticDir(txnr, dirpath, txlbmc); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + return httpPath+"/"+filepath; + } } diff --git a/lis-interfaceCommon/src/main/resources/mapper/ComUsrMapper.xml b/lis-interfaceCommon/src/main/resources/mapper/ComUsrMapper.xml index 7b85ad1..de28ce0 100644 --- a/lis-interfaceCommon/src/main/resources/mapper/ComUsrMapper.xml +++ b/lis-interfaceCommon/src/main/resources/mapper/ComUsrMapper.xml @@ -8,9 +8,13 @@ and yhdh = #{yhdh} + - - + diff --git a/liswork/src/main/resources/mapper/LabInstrvsreqclassMapper.xml b/lis-interfaceCommon/src/main/resources/mapper/LabInstrvsreqclassMapper.xml similarity index 95% rename from liswork/src/main/resources/mapper/LabInstrvsreqclassMapper.xml rename to lis-interfaceCommon/src/main/resources/mapper/LabInstrvsreqclassMapper.xml index 1e742f4..ab43aee 100644 --- a/liswork/src/main/resources/mapper/LabInstrvsreqclassMapper.xml +++ b/lis-interfaceCommon/src/main/resources/mapper/LabInstrvsreqclassMapper.xml @@ -1,7 +1,7 @@ - + + select COUNT(1) from xm_feeinstr,lab_reqdetail + where lab_reqdetail.sqxmdh=xm_feeinstr.sfxmdh + and lab_reqdetail.sqh=#{sqh} and xm_feeinstr.yq=#{yq}; + + + + + + + + + update lab_result set sqxmdh=#{sqxmdh} where yq=#{yq} and jyrq=#{jyrq} and ybh=#{ybh}; + + + + + + + + + diff --git a/liswork/src/main/java/com/czlis/liswork/mapper/LisWorkOperMapper.java b/liswork/src/main/java/com/czlis/liswork/mapper/LisWorkOperMapper.java index c2aace0..ef0d16d 100644 --- a/liswork/src/main/java/com/czlis/liswork/mapper/LisWorkOperMapper.java +++ b/liswork/src/main/java/com/czlis/liswork/mapper/LisWorkOperMapper.java @@ -1,7 +1,7 @@ package com.czlis.liswork.mapper; import com.czlis.common.core.domain.entity.lis.LabPat; -import com.czlis.liswork.pojo.DTO.ResultCalcDTO; +import com.czlis.interfaceCommon.pojo.entity.ResultCalcDTO; import org.apache.ibatis.annotations.Param; import java.util.Date; import java.util.List; 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 88bf4bb..dbe6e73 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 @@ -16,14 +16,13 @@ import com.czlis.interfaceCommon.constants.LabPatConstants; import com.czlis.interfaceCommon.constants.LabReqmainConstants; import com.czlis.interfaceCommon.mapper.LabReqdetailMapper; import com.czlis.interfaceCommon.mapper.LabReqmainMapper; -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 com.czlis.interfaceCommon.utils.*; import com.czlis.liswork.mapper.LisWorkMapper; import com.czlis.liswork.mapper.LisWorkOperMapper; -import com.czlis.liswork.mapper.dict.LabInstrvsreqclassMapper; +import com.czlis.interfaceCommon.mapper.LabInstrvsreqclassMapper; import com.czlis.liswork.service.LisWorkOperService; import lombok.extern.slf4j.Slf4j; @@ -38,97 +37,15 @@ import java.util.stream.Collectors; @Service @Slf4j public class LisWorkOperServiceImpl implements LisWorkOperService { - @Autowired - private LisWorkMapper lisWorkMapper; - @Autowired - LisWorkOperMapper lisWorkOperMapper; - @Autowired - LisInterfaceUtil lisInterfaceUtil; @Autowired CommonUtil commonUtil; @Autowired - LabInstrvsreqclassMapper labInstrvsreqclassMapper; - @Autowired - LabReqmainMapper labReqmainMapper; - @Autowired - LabReqdetailMapper labReqdetailMapper; - @Autowired - CheckResultUtils checkResultUtils; - @Autowired - LoginConfigParamUtil loginConfigParamUtil; + LisWorkUtils lisWorkUtils; @Override public Result newPatInfo(Date jyrq, String ybh, String sqh, String yq) { int problemId = ServletUtils.getParameterToInt("problemId", 0); - 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 && !"".equals(brdh)) || (sqh0 != null && !"".equals(sqh0)) || (brxm != null && !"".equals(brxm))) { - 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(""); - getReqInterface.setEtime(""); - getReqInterface.setEtime(""); - getReqInterface.setYljg(""); - 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; - - //4.获取病人信息 - DayMessage dayMessage = new DayMessage(); - dayMessage.setIp(""); - dayMessage.setYljg("1"); - dayMessage.setUserid(yhdh); - dayMessage.setMsgid(LisinterfaceNameConstants.DAYMESSAGE_GETPATIENT); - String val = labReqmainOne.getBrdh() + "|" + labReqmainOne.getBrly() + "|"; //这里有个医疗机构的,没有传,要考虑 - dayMessage.setMsg(val); - - //5.保存数据 - Result result3 = saveReqInfo(yhdh, sqh, labReqmainOne, yq, jyrq, ybh); - if (!result3.getCode().equals("0")) return result3; - - //6.写日志 - - - return new Result("0", ""); + return lisWorkUtils.newPatInfo(jyrq, ybh, sqh, yq, problemId); } - @Override public Result changePat(LabPat labPat) { if("2".equals(labPat.getJgbz())) return new Result("-1", "结果已审核禁止修改!"); @@ -139,9 +56,8 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { return new Result("0", "保存成功"); } - /** - * 修改病人信息 + * 修改病人信息,输入病人代号需要单独处理 * @param jyrq * @param yq * @param ybh @@ -151,79 +67,11 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { */ @Override 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.size()>0) setcalc=true; - break; - case "nl": - case "nldw": - xmCalcList = commonUtil.getXmCalcbyxmdh(yq,"AGE"); - if(xmCalcList.size()>0) 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); - List labResultList1 = labResultList.stream().filter(labR -> labR.getChangeflag() == 1).collect(Collectors.toList()); - if (labResultList1.size() > 0) { - for (LabResult labResult0 : labResultList1) { - changeresultf(labPat, labResult0, nowjz); - } - } - } - setComLog(jyrq, yq, ybh,SecurityUtils.getLoginUser().getUsername(),ComLogConstants.LG_M,column+":"+value); - return new Result("0", "保存成功"); + return lisWorkUtils.changePatColumn(jyrq, yq, ybh, column, value); } @Override 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("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.size()>0) { - 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.size()>0) { - for(LabResult labResult0:labResultList1) { - changeresultf(labPat, labResult0, nowjz); - } - } - } - return new Result("0", "保存成功"); + return lisWorkUtils.newresult(labResult); } /** * 修改结果 @@ -232,128 +80,12 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { */ @Override 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", "保存成功"); + return lisWorkUtils.changeresult(labResult); } - - /** - * 递归处理有计算项目关联其他项目都产生变化的联动处理 - * @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.size()>0) { - 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.size()>0) { - 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.size() > 0) { - 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.size() > 0) return new Result("0", ""); - if (collect1.size() > 0) return new Result("0", ""); - } - - Long count = lisWorkOperMapper.checkReqClass(sqh, yq); - if (count > 0) { - return new Result("0", ""); - } else { - return new Result("1", ""); - } - - } - - @Transactional(rollbackFor = Exception.class) - public Result saveReqInfo(String userId, String sqh, LabReqmain labReqmain, String yq, Date jyrq, String ybh) { - //修改状态和时间 - updateLabReqmainZT(userId, sqh); - //保存lab_pat表信息 - LabPat labPat = new LabPat(); - labPat.setJyrq(commonUtil.getCurrentTime()); - labPat.setYq(yq); - labPat.setYbh(ybh); - 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.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(commonUtil.getCurrentTime()); - labPat.setJgbz("0"); - labPat.setZd(labReqmain.getZd()); - labPat.setCyrq(labReqmain.getCysj()); - labPat.setJymd(LisUtil.substringByGbkWidth(labReqmain.getJymd(), 0, 50)); - labPat.setLastuser(userId); - labPat.setLastdt(commonUtil.getCurrentTime()); - labPat.setShcs(0); - labPat.setYljg(labReqmain.getYljg()); - labPat.setSfzh(labReqmain.getSfzh()); - labPat.setPhone(labReqmain.getPhone()); - labPat.setAddr(labReqmain.getAddr()); - labPat.setLstd(labReqmain.getLstd()); - commonUtil.insertLabPat(labPat); - return new Result("0", "保存成功!"); + public Result saveReqInfo(LabReqmain labReqmain,LabPat labPat,boolean newpatinfo) { + return lisWorkUtils.saveReqInfo(labReqmain,labPat,newpatinfo); } - /** * 获取新样本默认值 * @param jyrq @@ -363,77 +95,9 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { */ @Override public Result loaddefault(Date jyrq, String yq, String ybh) { - LabPat labPat=commonUtil.getLabPatOne(jyrq, yq, ybh); - 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(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); - } - List labInputcolList0=labInputcolList.stream().filter(labInputcol0->labInputcol0.getMrz()!=null&&"".equals(labInputcol0.getMrz())).collect(Collectors.toList()); - String mrz=null; - for (LabInputcol labInputcol : labInputcolList0) { - if(!"!".equals(labInputcol)){ - String zdmc=labInputcol.getZdmc(); - switch(zdmc){ - case "dysj": - case "cyrq": - case "sqsj": - case "nl": - case "yhdh": - mrz=labInputcol.getMrz(); - if(mrz!=null&&"".equals(mrz)) { - 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); - } - } - case "hdys": - String sybh= loginConfigParam.getCurrent_hdys_sybh(); - String eybh= loginConfigParam.getCurrent_hdys_eybh(); - if("".equals(sybh)&&"".equals(eybh)&&sybh!=null&&eybh!=null) { - if (LisUtil.isStringBetween(ybh, sybh, eybh)) { - labPat.setHdys(mrz); - } - }else{ - labPat.setHdys(mrz); - } - break; - default: - mrz=labInputcol.getMrz(); - if(mrz!=null&&"".equals(mrz)) { - EntityUtils.setItem(labPat, zdmc, mrz); - } - } - } - } - String yhdh=SecurityUtils.getLoginUser().getUsername(); - if(labPat.getYhdh()==null||"".equals(labPat.getYhdh())) labPat.setYhdh(SecurityUtils.getLoginUser().getUsername()); - labPat.setLastuser(yhdh); - labPat.setLastdt(ldt_now); - if(labPat.getJgbz()==null)labPat.setJgbz(LabPatConstants.DEFAULT); - return new Result("0", "样本初始化成功!",labPat); + LabPat labPat=commonUtil.getLabPatOne(jyrq,yq,ybh); + return new Result("0", "完成",lisWorkUtils.loaddefault(labPat)); } - public void updateLabReqmainZT(String userId, String sqh) { - Map map = new HashMap<>(); - map.put("userId", userId); - map.put("sqh", sqh); - labReqmainMapper.updateLabReqmainZT(map); - } - /** * 审核报告单全流程 * @@ -445,541 +109,14 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { */ @Override public Result confirm(Date jyrq, String yq, String ybh, String hdys) { - if (hdys == null || "".equals(hdys)) return new Result("-1", "审核者为空,无法审核!"); - //入参通过GET推送时使用ServletUtils.getParameterToInt获取 - //入参通过POSTJSON时使用JsonParamUtils.getParameterToInt获取 int problemId = ServletUtils.getParameterToInt("problemId", 0); - 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", "审核成功!"); + return lisWorkUtils.confirm(jyrq,yq,ybh,hdys,problemId); } @Override public Result confirm1(Date jyrq, String yq, String ybh, String hdys) { - if (hdys == null || "".equals(hdys)) return new Result("-1", "审核者为空,无法审核!"); - //入参通过GET推送时使用ServletUtils.getParameterToInt获取 - //入参通过POSTJSON时使用JsonParamUtils.getParameterToInt获取 int problemId = ServletUtils.getParameterToInt("problemId", 0); - 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", "审核成功!"); + return lisWorkUtils.confirm1(jyrq,yq,ybh,hdys,problemId); } - - /** - * 审核前校验数据完整性,审核业务和初审业务都可使用 - * - * @param labPat - * @param labResultList - * @param checktype - * @param problemId - * @return - */ - private Result beforeconfirm(LabPat labPat, List labResultList, Integer checktype, Integer problemId) { - Date jyrq = labPat.getJyrq(); - String yq = labPat.getYq(); - String ybh = labPat.getYbh(); - if (labPat == null) return new Result("-1", "病人信息为空禁止审核!"); - 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 || "".equals(brly))) - return new Result("-1", "病人类型为空,禁止审核!"); - String limit_yblx = commonUtil.getHISOPT("limit_yblx"); - String yblx = labPat.getYblx(); - if ("1".equals(limit_yblx) && (yblx == null || "".equals(yblx))) - return new Result("-1", "样本类型为空,禁止审核!"); - String limit_brxm = commonUtil.getHISOPT("limit_brxm"); - String brxm = labPat.getBrxm(); - if ("1".equals(limit_brxm) && (brxm == null || "".equals(brxm))) - return new Result("-1", "病人姓名为空,禁止审核!"); - if ((brxm == null || "".equals(brxm)) && problemId < 1) new Result("5", "姓名为空,你确定要审核吗?", 1); - String limit_ksdh = commonUtil.getHISOPT("limit_ksdh"); - String ksdh = labPat.getKsdh(); - if ("1".equals(limit_ksdh) && (ksdh == null || "".equals(ksdh))) - 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 || "".equals(brdh))) { - if (!"质控".equals(brlyname)) return new Result("-1", "病历号不能为空,禁止审核!"); - } - String limit_brpatno = commonUtil.getHISOPT("limit_brpatno"); - if ("1".equals(limit_brpatno) && (brdh == null || "".equals(brdh))) { - if ("1".equals(brly) || "3".equals(brly)) return new Result("-1", "门诊住院的病历号不能为空,禁止审核!"); - } - String yqdl = commonUtil.getYqdl(yq); - if (labResultList == null || labResultList.size() == 0) 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 = lisWorkOperMapper.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 = lisWorkOperMapper.checkresultwxh(jyrq, yq, ybh); - if (wxh > 0) return new Result("-1", "有结果为****禁止审核!"); - } - String sqh = labPat.getSqh(); - if (sqh != null && !"".equals(sqh)) { - if (!"质控".equals(brlyname)) { - if ("1".equals(commonUtil.getHISOPT("sp_dublereport"))) { - LabPat labPat0 = lisWorkOperMapper.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 = lisWorkOperMapper.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 || "".equals(Userid)) { - 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 && !"".equals(ls_cbbgyq)) { - 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 && !"".equals(checkvalue)) { - 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 = lisWorkOperMapper.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 = lisWorkOperMapper.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) sjsj = jysj; - if (sjsj.after(confirmtime)) sjsj = jysj; - if (jssj == null) jssj = sjsj; - if (jssj.after(confirmtime)) jssj = sjsj; - if (bbsjsj != null) { - if (bbsjsj.after(jssj) && jysj.after(bbsjsj)) jssj = jysj; - } - if (cysj != null) { - if (cysj.after(jssj) && jysj.after(cysj)) jssj = jysj; - } - if (jssj.after(sjsj)) sjsj = jysj; - - List labReqsteplog = commonUtil.getLabReqsteplog(sqh); - if (bbsjsj != null && bbsjsj.after(jssj)) { - Date sj = jssj; - Date finalSj = sj; - 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 = sj; - labReqmain.setBbsjsj(bbsjsj); - } else { - bbsjsj = jssj; - } - if (cysj != null && cysj.after(bbsjsj)) { - Date sj = bbsjsj; - 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 = sj; - labReqmain.setCysj(cysj); - } - if (cysj != null && zxsj.after(cysj) && bbsjsj.after(zxsj)) { - Date sj = bbsjsj; - 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()) { - cysj = maxTimeEntity.get().getChangedate(); - } else cysj = zxsj; - labReqmain.setCysj(cysj); - } else { - cysj = bbsjsj; - } - if (zxsj != null && zxsj.after(cysj)) { - Date sj = cysj; - 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 = sj; - labReqmain.setZxsj(zxsj); - } - labReqmain.setSjsj(sjsj); - } - return labReqmain; - } - /** * 保存所有结果的修正值,涉及:空结果清除,计算项目添加,添加单位,添加申请项目编码,参考值重新计算更新,结果标志重新计算更新,危急值标志计算更新 * @@ -988,62 +125,8 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { */ @Override public Result saveallresult(Date jyrq, String yq, String ybh) { - int finsh = 1; - 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(); - 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); - 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.trim()) || alarmflag == null) && wjz) { - labPat.setAlarmflag("1"); - } - commonUtil.updateLabPat(labPat); - return new Result("0", "保存成功!"); + return lisWorkUtils.saveallresult(jyrq,yq,ybh); } - - //内部使用 - 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.size()>0) { - labResultList = calcsample(labPat, labResultList,xmCalcList); - } - //补写结果表申请单项目编号 - String sqh = labPat.getSqh(); - if (sqh != null && !"".equals(sqh)) setItemSqxmdh(jyrq, yq, ybh, sqh); - //保存最新参考值结果标志 - labResultList = saverefs(labPat); - return labResultList; - } - /** * 结果表补充申请单项目代码 * @@ -1053,26 +136,8 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { */ @Override public void setItemSqxmdh(Date jyrq, String yq, String ybh) { - String sqh = commonUtil.getSqhByKey(jyrq, yq, ybh); - if (sqh == null || "".equals(sqh)) { - } else { - setItemSqxmdh(jyrq, yq, ybh, sqh); - } + lisWorkUtils.setItemSqxmdh(jyrq, yq, ybh); } - - //内部使用 - private void setItemSqxmdh(Date jyrq, String yq, String ybh, String sqh) { - if (sqh != null && !"".equals(sqh)) { - int sl = labReqdetailMapper.getCountByKey(sqh); - if (sl == 1) { - String sqxmdh = lisWorkOperMapper.selectSqxmdh(sqh); - lisWorkOperMapper.updatelabresultsqxmdhall(jyrq, yq, ybh, sqxmdh); - } else { - lisWorkOperMapper.updatelabresultsqxmdh(jyrq, yq, ybh, sqh); - } - } - } - /** * 计算项目增加及重新计算 * @@ -1082,100 +147,8 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { */ @Override 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.size()>0) { - calcsample(labPat, labResultList, xmCalcList); - } - return new Result("0", "保存成功!"); + return lisWorkUtils.calcsample(jyrq, yq, ybh); } - - 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 (int i = 0; i < parameters.length; i++) { - String itemcode = parameters[i]; - if ("SEX".equals(itemcode)) { - String sex = labPat.getBrxb().trim(); - 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 = 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,"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; - } - /** * 计算项目参考值结果异常标志 * @@ -1185,322 +158,8 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { */ @Override 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", "保存成功!"); + return lisWorkUtils.saverefs(jyrq, yq, ybh); } - //内部使用 - private boolean checknowjz(LabPat labPat){ - boolean 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; - return nowjz; - } - /** - * 计算项目参考值结果异常标志(内部使用) - * - * @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", ""); - lisWorkOperMapper.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 || "".equals(retCode) || "-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().trim(); - if (!"".equals(resultalarmflag1) && resultalarmflag1 != null) { - 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.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.setResult_flag(labResult0.getResult_flag()); - labResult.setJgbz(labResult0.getJgbz()); - labResult.setAlarm_flag(labResult0.getAlarm_flag()); - } - } - } - - } - return labResultList; - } - - /** - * 明细结果计算参考值异常标志危急值标志并更新 - * - * @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.trim().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().trim(); - if (sex == null) sex = ""; - } - 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.valueOf(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.indexOf("阳") >= 0 || csjg.indexOf("+") >= 0 || csjg.indexOf(":") >= 0) && (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; - } - - /** - * 特定条件危急值判断 - * - * @param labPat - * @param labResult - * @return - */ - 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(); - 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 = lisWorkOperMapper.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; - } - /** * 获取常用取值结果标志 * @@ -1530,125 +189,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { return jgbz; } - /** - * 工作时间校验检验者审核者不允许相同 上班时间上午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 (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 - */ - 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.size() == 0) { - 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 -> !"".equals(xm.getAlarm_flag().trim()) && xm.getAlarm_flag() != null).collect(Collectors.toList()); - if (labResultList0.size() > 0) { - wjz = true; - } - return wjz; - } - - /** - * 获取危急值信息集合 - * @param labResultList - * @return - */ - private String getAlarmMsg(List labResultList) { - String wjzmsg = ""; - List labResultList0 = labResultList.stream().filter(xm -> !"".equals(xm.getAlarm_flag().trim()) && xm.getAlarm_flag() != null).collect(Collectors.toList()); - if (labResultList0.size() > 0) { - for (LabResult labResult : labResultList0) { - String xmmc = labResult.getXmmc(); - String cjsg = labResult.getCsjg(); - if (!"".equals(cjsg) && cjsg != null) { - cjsg = ",结果:" + cjsg; - } else { - cjsg = ""; - } - - wjzmsg = wjzmsg + "项目:" + xmmc + cjsg + LisUtil.LINE_SEPARATOR; - } - } - return wjzmsg; - } /** * 解除审核原因登记 * @@ -1660,20 +201,8 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { */ @Override 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", "写召回原因成功!"); + return lisWorkUtils.unconfirmlog(jyrq,yq,ybh,hdys,reason); } - /** * 撤销审核报告单全流程 * @@ -1685,178 +214,12 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { */ @Override public Result unconfirm(Date jyrq, String yq, String ybh, String yhdh) { - if (yhdh == null || "".equals(yhdh)) 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 =lisWorkOperMapper.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); + return lisWorkUtils.unconfirm(jyrq,yq,ybh,yhdh); } @Override public Result unconfirm1(Date jyrq, String yq, String ybh, String yhdh) { - if (yhdh == null || "".equals(yhdh)) 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", "取消成功!"); + return lisWorkUtils.unconfirm1(jyrq,yq,ybh,yhdh); } - - /** - * 操作记录日志 - * @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 @@ -1870,99 +233,8 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { */ @Override public Result reglimit( Date jyrq, String yq, String ybh, String yhdh,String qrr,String phone,String tzfs){ - log.info("登记危急值{}",tzfs); int problemId = ServletUtils.getParameterToInt("problemId", 0); - 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{ - SysUser sysUser=lisWorkMapper.getSysUser(yhdh); - yhdh=sysUser.getNickName(); - } - String sjys=labPat.getSjys(); - String sjysname=commonUtil.getComDictNameById("SRD",sjys); - if(sjysname==null||"".equals(sjysname)) {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 -> !"".equals(xm.getAlarm_flag().trim()) && xm.getAlarm_flag() != null).collect(Collectors.toList()); - if (labResultList0.size() > 0) { - 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", "登记成功"); + return lisWorkUtils.reglimit(jyrq,yq,ybh,yhdh,qrr,phone,tzfs,problemId); } - /** - * 获取自动记忆字段修改值 - * @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; - } } diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkServiceImpl.java index 3f126e8..cb54d26 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkServiceImpl.java +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkServiceImpl.java @@ -8,7 +8,10 @@ import com.czlis.common.exception.ServiceException; import com.czlis.common.utils.MessageUtils; import com.czlis.common.utils.SecurityUtils; import com.czlis.common.utils.StringUtils; +import com.czlis.interfaceCommon.constants.ComLogConstants; +import com.czlis.interfaceCommon.constants.LabReqmainConstants; import com.czlis.interfaceCommon.utils.CommonUtil; +import com.czlis.interfaceCommon.utils.LisWorkUtils; import com.czlis.interfaceCommon.utils.LoginConfigParamUtil; import com.czlis.interfaceCommon.utils.ReportUtil; import com.czlis.liswork.mapper.LisWorkMapper; @@ -36,7 +39,8 @@ public class LisWorkServiceImpl implements LisWorkService { LoginConfigParamUtil loginConfigParamUtil; @Autowired ReportUtil reportUtil; - + @Autowired + LisWorkUtils lisWorkUtils; @Override public Result getXmInfo(String yq) { List xmInfoList =commonUtil.getXmInfoList(yq); @@ -53,8 +57,26 @@ public class LisWorkServiceImpl implements LisWorkService { Date jyrq = labPat.getJyrq(); String yq = labPat.getYq(); String ybh = labPat.getYbh(); - String sqh = labPat.getSqh(); - return reportUtil.printReport(jyrq,yq,ybh,sqh); + labPat=commonUtil.getLabPatOne(jyrq, yq, ybh); + if(labPat==null) return new Result("-1","未找到报告单,打印失败!"); + String jgbz=labPat.getJgbz(); + if(jgbz==null||"".equals(jgbz)) return new Result("-1","未找到报告单,打印失败!"); + if(!"2".equals(jgbz))return new Result("1","报告单未审核,禁止打印!"); + Result res=reportUtil.printReport(labPat); + if(!"1".equals(labPat.getDybz())) { + commonUtil.updateLabPatByColumn(jyrq,yq,ybh,"dybz","1"); + } + if(labPat.getDysj()==null) { + String dysj=commonUtil.getDateTimeString(new Date()); + commonUtil.updateLabPatByColumn(jyrq,yq,ybh,"dysj",dysj); + } + String yhdh=SecurityUtils.getLoginUser().getUsername(); + lisWorkUtils.setComLog(jyrq,yq,ybh,yhdh, ComLogConstants.LG_P,""); + String sqh=labPat.getSqh(); + if(sqh!=null&&!"".equals(sqh)){ + lisWorkUtils.setlabReqsteplog(sqh, LabReqmainConstants.REPORT,yhdh); + } + return res; } @Override diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/LabInstrvsreqclassServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/LabInstrvsreqclassServiceImpl.java index 8528a29..fe6dcad 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/LabInstrvsreqclassServiceImpl.java +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/xtwh/LabInstrvsreqclassServiceImpl.java @@ -3,7 +3,7 @@ package com.czlis.liswork.service.impl.xtwh; import com.czlis.common.core.domain.Result; import com.czlis.common.core.domain.entity.lis.LabInstrvsreqclass; import com.czlis.common.core.domain.entity.lis.view.VwReqitemclass; -import com.czlis.liswork.mapper.dict.LabInstrvsreqclassMapper; +import com.czlis.interfaceCommon.mapper.LabInstrvsreqclassMapper; import com.czlis.liswork.service.LabInstrvsreqclassService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/liswork/src/main/resources/mapper/LisWorkOperMapper.xml b/liswork/src/main/resources/mapper/LisWorkOperMapper.xml index a9fa641..395a8b8 100644 --- a/liswork/src/main/resources/mapper/LisWorkOperMapper.xml +++ b/liswork/src/main/resources/mapper/LisWorkOperMapper.xml @@ -55,7 +55,7 @@ } - SELECT DISTINCT xm_calc.jsxm ,lab_result.xmdh ,lab_result.csjg ,xm_calc.jsgs FROM lab_result ,xm_calc WHERE ( lab_result.yq = xm_calc.yq ) and ( lab_result.xmdh = xm_calc.xmdh ) and