From c2b7ead21f84eb566ce00a972d87995369d77bc1 Mon Sep 17 00:00:00 2001 From: tangw Date: Tue, 2 Sep 2025 17:47:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E4=B8=9A=E5=8A=A1=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/LabResultMapper.java | 1 + .../utils/CheckResultUtils.java | 187 ++++++++++++++++-- .../interfaceCommon/utils/CommonUtil.java | 2 +- .../main/resources/mapper/LabResultMapper.xml | 19 ++ 4 files changed, 194 insertions(+), 15 deletions(-) diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabResultMapper.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabResultMapper.java index f4cc0fd..c3e26e4 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabResultMapper.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabResultMapper.java @@ -13,4 +13,5 @@ public interface LabResultMapper { int delLabResult(LabResult labResult); int updateLabResult(LabResult labResult); int delNullLabResult(@Param("jyrq") Date jyrq, @Param("yq") String yq, @Param("ybh") String ybh); + List getLabResultWithSql(@Param("jyrq") Date jyrq, @Param("yq") String yq, @Param("ybh") String ybh,@Param("wheresql") String wheresql); } diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CheckResultUtils.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CheckResultUtils.java index e6efedc..f2325e9 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CheckResultUtils.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CheckResultUtils.java @@ -9,20 +9,18 @@ import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Component public class CheckResultUtils { - @Autowired - XmInfoMapper xmInfoMapper; + @Autowired CheckResultMapper checkResultMapper; @Autowired LabCheckrulesMapper labCheckrulesMapper; + @Autowired + CommonUtil commonUtil = new CommonUtil(); public String chksample(LabPat labPat, List labResultList) { String errmsg = ""; String brdh = labPat.getBrdh(); @@ -32,7 +30,7 @@ public class CheckResultUtils { String yq = labPat.getYq(); Date jyrq = labPat.getJyrq(); String ybh = labPat.getYbh(); - List xmInfoList = xmInfoMapper.getXmInfoList(yq); + List xmInfoList = commonUtil.xmInfoMapper.getXmInfoList(yq); for (LabResult labResult : labResultList) { String xmdh = labResult.getXmdh(); List collect = xmInfoList.stream().filter(xmInfo -> xmInfo.getXmdh().equals(xmdh)).collect(Collectors.toList()); @@ -200,8 +198,18 @@ public class CheckResultUtils { return params; } + /** + * 计算公式注入参数执行,返回为真则证明筛选条件成立,需要禁止审核通过! + * @param labPat + * @param labResultList + * @param checkrules + * @param ruledisplay + * @return + */ private String checkcondition(LabPat labPat, List labResultList,String checkrules,String ruledisplay){ String errmsg=""; + boolean flag=false; + checkrules=checkrules.replace("\"","'"); if(checkrules.contains("ANY_")){ Map variables = new HashMap<>(); String[] parameters=CalcUtils.getParameters(checkrules); @@ -212,21 +220,124 @@ public class CheckResultUtils { String sex = labPat.getBrxb().trim(); if ("1".equals(sex)) sex = "男"; if ("2".equals(sex)) sex = "女"; - variables.put("SEX", sex); + errmsg.replace("[SEX]", sex); break; case "AGE": double age = AgeUtils.getDecimalAge(AgeUtils.getBirthDateByAge(labPat.getNl(), labPat.getNldw())); - variables.put("AGE", String.valueOf(age)); + errmsg.replace("[AGE]", String.valueOf(age)); break; - case "": + case "BRLY": + String brly=labPat.getBrly(); + String brlymc= commonUtil.getComDictNameById("PT",brly); + if(!"".equals(brlymc)||brlymc != null) brly=brlymc; + errmsg.replace("[BRLY]", brly); break; + case "KSDH": + String ksdh=labPat.getKsdh(); + String ksdhmc= commonUtil.getComDictNameById("DP",ksdh); + if(!"".equals(ksdhmc)||ksdhmc != null) ksdh=ksdhmc; + errmsg.replace("[KSDH]", ksdh); + break; + case "YBLX": + String yblx=labPat.getYblx(); + String yblxmc= commonUtil.getComDictNameById("BT",yblx); + if(!"".equals(yblxmc)||yblxmc != null) yblx=yblxmc; + errmsg.replace("[YBLX]", yblx); + break; + case "BZ": + errmsg.replace("[BZ]", labPat.getBz()); + break; + case "ZD": + errmsg.replace("[ZD]", labPat.getZd()); + break; + case "ANY_NUMER": + errmsg.replace("[ANY_NUMER]", "lab_result.csjg"); + break; + case "ANY_TEXT": + errmsg.replace("[ANY_TEXT]", "lab_result.csjg"); + break; + case "ANY_CRI": + errmsg.replace("[ANY_CRI]", "lab_result.alarm_flag"); + break; + case "ANY_REV": + errmsg.replace("[ANY_REV]", "lab_result.redo_flag"); + break; + case "ANY_JGBZ": + errmsg.replace("[ANY_CRI]", "lab_result.result_flag"); + break; + case "ANY_ID": + errmsg.replace("[ANY_CRI]", "lab_result.xmdh"); + break; + default: + String csjg=Optional.ofNullable(labResultList).flatMap(list -> list.stream().filter(result -> result != null && itemcode.equals(result.getXmdh())).map(LabResult::getCsjg).findFirst()).orElse(null); + if(csjg==null)csjg=""; + errmsg.replace("["+itemcode+"]", csjg); + + } + List labResultList0=commonUtil.labResultMapper.getLabResultWithSql(labPat.getJyrq(),labPat.getYq(),labPat.getYbh(),errmsg); + if(labResultList0.size()>0)flag=true; + } + if(flag=true) errmsg = "审核条件: " + ruledisplay + " 未通过!" ; + }else{ + Map variables = new HashMap<>(); + String[] parameters=CalcUtils.getParameters(checkrules); + for (int i = 0; i < parameters.length; i++) { + String itemcode = parameters[i]; + switch (itemcode) { + case "SEX": + String sex = labPat.getBrxb().trim(); + if ("1".equals(sex)) sex = "男"; + if ("2".equals(sex)) sex = "女"; + variables.put(itemcode, sex); + break; + case "AGE": + double age = AgeUtils.getDecimalAge(AgeUtils.getBirthDateByAge(labPat.getNl(), labPat.getNldw())); + variables.put(itemcode, String.valueOf(age)); + break; + case "BRLY": + String brly=labPat.getBrly(); + String brlymc= commonUtil.getComDictNameById("PT",brly); + if(!"".equals(brlymc)||brlymc != null) brly=brlymc; + variables.put(itemcode, brly); + break; + case "KSDH": + String ksdh=labPat.getKsdh(); + String ksdhmc= commonUtil.getComDictNameById("DP",ksdh); + if(!"".equals(ksdhmc)||ksdhmc != null) ksdh=ksdhmc; + variables.put(itemcode, ksdh); + break; + case "YBLX": + String yblx=labPat.getYblx(); + String yblxmc= commonUtil.getComDictNameById("BT",yblx); + if(!"".equals(yblxmc)||yblxmc != null) yblx=yblxmc; + variables.put(itemcode, yblx); + break; + case "BZ": + variables.put(itemcode, labPat.getBz()); + break; + case "ZD": + variables.put(itemcode, labPat.getZd()); + break; + default: + String csjg=Optional.ofNullable(labResultList).flatMap(list -> list.stream().filter(result -> result != null && itemcode.equals(result.getXmdh())).map(LabResult::getCsjg).findFirst()).orElse(null); + if(csjg==null)csjg=""; + variables.put(itemcode, csjg); + } } - boolean flag=CalcUtils.getBooleanFromCalc(checkrules, variables); - errmsg = "审核条件: " + ruledisplay + " 未通过!" ; + flag=CalcUtils.getBooleanFromCalc(checkrules, variables); + if(flag=true) errmsg = "审核条件: " + ruledisplay + " 未通过!" ; } return errmsg; } + + /** + * 备注信息公式转换备注内容 + * @param labPat + * @param labResultList + * @param logcontent + * @return + */ private String replacebz(LabPat labPat, List labResultList,String logcontent){ String errmsg=logcontent; String[] parameters=CalcUtils.getParameters(logcontent); @@ -243,10 +354,58 @@ public class CheckResultUtils { double age = AgeUtils.getDecimalAge(AgeUtils.getBirthDateByAge(labPat.getNl(), labPat.getNldw())); errmsg.replace("[AGE]",String.valueOf(age)); break; - case "": + case "BRLY": + String brly=labPat.getBrly(); + String brlymc= commonUtil.getComDictNameById("PT",brly); + if(!"".equals(brlymc)||brlymc != null) brly=brlymc; + errmsg.replace("[BRLY]", brly); break; + case "KSDH": + String ksdh=labPat.getKsdh(); + String ksdhmc= commonUtil.getComDictNameById("DP",ksdh); + if(!"".equals(ksdhmc)||ksdhmc != null) ksdh=ksdhmc; + errmsg.replace("[KSDH]", ksdh); + break; + case "YBLX": + String yblx=labPat.getYblx(); + String yblxmc= commonUtil.getComDictNameById("BT",yblx); + if(!"".equals(yblxmc)||yblxmc != null) yblx=yblxmc; + errmsg.replace("[YBLX]", yblx); + break; + case "BZ": + errmsg.replace("[BZ]", labPat.getBz()); + break; + case "ZD": + errmsg.replace("[ZD]", labPat.getZd()); + break; + default: + String csjg=Optional.ofNullable(labResultList).flatMap(list -> list.stream().filter(result -> result != null && itemcode.equals(result.getXmdh())).map(LabResult::getCsjg).findFirst()).orElse(null); + if(csjg==null)csjg=""; + errmsg.replace("["+itemcode+"]", csjg); } } - return ""; + String bz=labPat.getBz(); + if(errmsg!=null && !"".equals(errmsg)) + if(bz==null||"".equals(bz)) bz=errmsg; + else { + String bz0=String.valueOf(bz.charAt(bz.length() - 1)); + switch (bz0) { + case ",": + case ":": + case ";": + case ".": + case "。": + case ",": + case "、": + case ";": + case ":": + bz=bz+errmsg; + break; + default: + bz=bz+","+errmsg; + }} + return bz; } + + } 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 a93d3fb..41a404e 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 @@ -30,7 +30,7 @@ public class CommonUtil { @Autowired ComDictMapper comDictMapper; @Autowired - private LabResultMapper labResultMapper; + LabResultMapper labResultMapper; @Autowired LabReqdetailMapper labReqdetailMapper; @Autowired diff --git a/lis-interfaceCommon/src/main/resources/mapper/LabResultMapper.xml b/lis-interfaceCommon/src/main/resources/mapper/LabResultMapper.xml index 4339300..bd27bbb 100644 --- a/lis-interfaceCommon/src/main/resources/mapper/LabResultMapper.xml +++ b/lis-interfaceCommon/src/main/resources/mapper/LabResultMapper.xml @@ -37,6 +37,24 @@ ORDER BY xm_info.dyxh + delete from lab_result where jyrq = #{jyrq} @@ -353,4 +371,5 @@ and ybh = #{ybh,jdbcType=VARCHAR} and xmdh = #{xmdh,jdbcType=VARCHAR} + \ No newline at end of file