Merge remote-tracking branch 'lis8.0/master'

This commit is contained in:
jiangs 2025-09-09 09:08:14 +08:00
commit deec2eea9e
9 changed files with 353 additions and 197 deletions

View File

@ -42,4 +42,5 @@ public class LabResult extends BaseEntity {
private String xmmc; private String xmmc;
private String ygzd; private String ygzd;
private String ygzq; private String ygzq;
private Integer xsws;
} }

View File

@ -0,0 +1,19 @@
package com.czlis.common.core.domain.entity.lis;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class XmCalc {
private String yq;
private String jsxm;
private String xmdh;
private String jsgs;
private String bz;
}

View File

@ -0,0 +1,12 @@
package com.czlis.interfaceCommon.mapper;
import com.czlis.common.core.domain.entity.lis.XmCalc;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface XmCalcMapper {
List<XmCalc> getXmCalcList(String yq);
List<XmCalc> getXmCalc(@Param("yq") String yq,@Param("jsxm") String jsxm);
List<XmCalc> getXmCalcbyxmdh(@Param("yq")String yq,@Param("xmdh") String xmdh);
}

View File

@ -5,6 +5,7 @@ import com.czlis.common.core.domain.entity.lis.*;
import com.czlis.interfaceCommon.mapper.CheckResultMapper; import com.czlis.interfaceCommon.mapper.CheckResultMapper;
import com.czlis.interfaceCommon.mapper.LabCheckrulesMapper; import com.czlis.interfaceCommon.mapper.LabCheckrulesMapper;
import com.czlis.interfaceCommon.mapper.XmInfoMapper; import com.czlis.interfaceCommon.mapper.XmInfoMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -32,10 +33,12 @@ public class CheckResultUtils {
Date jyrq = labPat.getJyrq(); Date jyrq = labPat.getJyrq();
String ybh = labPat.getYbh(); String ybh = labPat.getYbh();
List<XmInfo> xmInfoList0 = commonUtil.getXmInfoList(yq); List<XmInfo> xmInfoList0 = commonUtil.getXmInfoList(yq);
if(xmInfoList0.size()==0) return errmsg;
List<XmInfo> xmInfoList = xmInfoList0.stream().filter(xmInfo -> xmInfo.getXjx()!=null||xmInfo.getSjx()!=null||xmInfo.getJgjg()!=null||xmInfo.getJgz()!=null||xmInfo.getJgbz()!=null).collect(Collectors.toList()); List<XmInfo> xmInfoList = xmInfoList0.stream().filter(xmInfo -> xmInfo.getXjx()!=null||xmInfo.getSjx()!=null||xmInfo.getJgjg()!=null||xmInfo.getJgz()!=null||xmInfo.getJgbz()!=null).collect(Collectors.toList());
if(xmInfoList.size()>0) { if(xmInfoList.size()>0) {
for (LabResult labResult : labResultList) { for (LabResult labResult : labResultList) {
String xmdh = labResult.getXmdh(); String xmdh = labResult.getXmdh();
List<XmInfo> collect = xmInfoList.stream().filter(xmInfo -> xmInfo.getXmdh().equals(xmdh)).collect(Collectors.toList()); List<XmInfo> collect = xmInfoList.stream().filter(xmInfo -> xmInfo.getXmdh().equals(xmdh)).collect(Collectors.toList());
if (collect.size() > 0) { if (collect.size() > 0) {
XmInfo xmInfo = collect.get(0); XmInfo xmInfo = collect.get(0);
@ -73,17 +76,19 @@ public class CheckResultUtils {
lde_low = csjgnum - jgz; lde_low = csjgnum - jgz;
} }
List<LabResult> chkval = checkResultMapper.getChkvaList(brdh, ldt_startda, jyrq, yq, xmdh); List<LabResult> chkval = checkResultMapper.getChkvaList(brdh, ldt_startda, jyrq, yq, xmdh);
List<LabResult> collect0 = chkval.stream().filter(LabResult0 -> LisUtil.isNumber(LabResult0.getCsjg())).collect(Collectors.toList()); if (chkval != null && chkval.size() > 0) {
if (collect0.size() > 0) { List<LabResult> collect0 = chkval.stream().filter(LabResult0 -> LisUtil.isNumber(LabResult0.getCsjg())).collect(Collectors.toList());
Double finalLde_up = lde_up;
Double finalLde_low = lde_low;
List<LabResult> collect1 = collect0.stream().filter(LabResult1 -> Double.parseDouble(LabResult1.getCsjg()) > finalLde_up && Double.parseDouble(LabResult1.getCsjg()) < finalLde_low).collect(Collectors.toList());
if (collect0.size() > 0) { if (collect0.size() > 0) {
errmsg = errmsg + LisUtil.LINE_SEPARATOR + xmdh + " 结果 (" + labResult.getCsjg() + ") 和 " + Double finalLde_up = lde_up;
DateFormatUtils.format(collect1.get(0).getJyrq(), "yyyy-MM-dd") + "日" + Double finalLde_low = lde_low;
collect1.get(0).getYbh() + " 号标本的结果 (" + collect1.get(0).getCsjg() + ") 相比超标"; List<LabResult> collect1 = collect0.stream().filter(LabResult1 -> Double.parseDouble(LabResult1.getCsjg()) > finalLde_up && Double.parseDouble(LabResult1.getCsjg()) < finalLde_low).collect(Collectors.toList());
} if (collect1.size() > 0) {
errmsg = errmsg + LisUtil.LINE_SEPARATOR + xmdh + " 结果 (" + labResult.getCsjg() + ") 和 " +
DateFormatUtils.format(collect1.get(0).getJyrq(), "yyyy-MM-dd") + "日" +
collect1.get(0).getYbh() + " 号标本的结果 (" + collect1.get(0).getCsjg() + ") 相比超标";
}
}
} }
} }
} }
@ -93,6 +98,7 @@ public class CheckResultUtils {
} }
} }
List<LabChk> labChkList = checkResultMapper.getLabChkList(yq); List<LabChk> labChkList = checkResultMapper.getLabChkList(yq);
if(labChkList.size()==0) return errmsg;
for (LabChk labChk : labChkList) { for (LabChk labChk : labChkList) {
String jsgs = labChk.getHdnr(); String jsgs = labChk.getHdnr();
boolean setjgsg = true; boolean setjgsg = true;
@ -177,14 +183,14 @@ public class CheckResultUtils {
String errmsg = checkcondition(labPat, labResultList, checkrules, ruledisplay); String errmsg = checkcondition(labPat, labResultList, checkrules, ruledisplay);
if (!"".equals(errmsg)) { if (!"".equals(errmsg)) {
if ("0".equals(checktype)) { if ("0".equals(checktype)) {
errmsg = "审核规则触发,未通过审核!,你是否要强行通过?" + ruledisplay + LisUtil.LINE_SEPARATOR + "审核规则触发,未通过审核!,你是否要强行通过?" + LisUtil.LINE_SEPARATOR + errmsg; errmsg = errmsg+ LisUtil.LINE_SEPARATOR + "你是否要强行通过?" ;
params.put("code", "5"); params.put("code", "5");
params.put("msg", errmsg); params.put("msg", errmsg);
int ruleid0 = labCheckrules.getRuleid(); int ruleid0 = labCheckrules.getRuleid();
params.put("xh", i+1); params.put("xh", i+1);
return params; return params;
} else if ("3".equals(checktype)) { } else if ("3".equals(checktype)) {
errmsg = "审核规则触发,未通过审核!" + LisUtil.LINE_SEPARATOR + "设置的组合审核条件:" + errmsg + LisUtil.LINE_SEPARATOR + "审核规则触发,未通过审核!,不允许审核!"; errmsg = errmsg + LisUtil.LINE_SEPARATOR + "不允许审核!";
params.put("code", "1"); params.put("code", "1");
params.put("msg", errmsg); params.put("msg", errmsg);
params.put("xh", i+1); params.put("xh", i+1);
@ -277,11 +283,11 @@ public class CheckResultUtils {
break; break;
default: default:
String csjg = Optional.ofNullable(labResultList).flatMap(list -> list.stream().filter(result -> result != null && itemcode.equals(result.getXmdh())).map(LabResult::getCsjg).findFirst()).orElse(null); 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 = ""; if (csjg == null) return "";
errmsg.replace("[" + itemcode + "]", csjg); errmsg.replace("[" + itemcode + "]", csjg);
} }
List<LabResult> labResultList0 = commonUtil.labResultMapper.getLabResultWithSql(labPat.getJyrq(), labPat.getYq(), labPat.getYbh(), errmsg); List<LabResult> labResultList0 = commonUtil.getLabResultWithSql(labPat.getJyrq(), labPat.getYq(), labPat.getYbh(), errmsg);
if (labResultList0.size() > 0) flag = true; if (labResultList0.size() > 0) flag = true;
} }
if (flag = true) errmsg = "审核条件: " + ruledisplay + " 规则触发,未通过审核!"; if (flag = true) errmsg = "审核条件: " + ruledisplay + " 规则触发,未通过审核!";
@ -327,7 +333,7 @@ public class CheckResultUtils {
break; break;
default: default:
String csjg = Optional.ofNullable(labResultList).flatMap(list -> list.stream().filter(result -> result != null && itemcode.equals(result.getXmdh())).map(LabResult::getCsjg).findFirst()).orElse(null); 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 = ""; if (csjg == null)return "";
variables.put(itemcode, csjg); variables.put(itemcode, csjg);
} }

View File

@ -55,6 +55,9 @@ public class CommonUtil {
ComLogMapper comLogMapper; ComLogMapper comLogMapper;
@Autowired @Autowired
LabRefusedMapper labRefusedMapper; LabRefusedMapper labRefusedMapper;
@Autowired
XmCalcMapper xmCalcMapper;
//====检验主表操作方法集合=== //====检验主表操作方法集合===
public LabPat getLabPatOne(Date jyrq, String yq, String ybh) { public LabPat getLabPatOne(Date jyrq, String yq, String ybh) {
return labPatMapper.getLabPatOne(jyrq, yq, ybh); return labPatMapper.getLabPatOne(jyrq, yq, ybh);
@ -111,10 +114,12 @@ public class CommonUtil {
public List<LabReqsteplog> getLabReqsteplog(String sqh) { public List<LabReqsteplog> getLabReqsteplog(String sqh) {
return labReqsteplogMapper.getLabReqsteplog(sqh); return labReqsteplogMapper.getLabReqsteplog(sqh);
} }
public List<LabRefused> getLabRefusedList(LabRefused labRefused){
public List<LabRefused> getLabRefusedList(LabRefused labRefused) {
return labRefusedMapper.getLabRefusedList(labRefused); return labRefusedMapper.getLabRefusedList(labRefused);
} }
public int insertLabRefused(LabRefused labRefused){
public int insertLabRefused(LabRefused labRefused) {
return labRefusedMapper.insertLabRefused(labRefused); return labRefusedMapper.insertLabRefused(labRefused);
} }
@ -148,6 +153,10 @@ public class CommonUtil {
return labResultMapper.delNullLabResult(jyrq, yq, ybh); return labResultMapper.delNullLabResult(jyrq, yq, ybh);
} }
public List<LabResult> getLabResultWithSql(Date jyrq, String yq, String ybh, String errmsg) {
return labResultMapper.getLabResultWithSql(jyrq, yq, ybh, errmsg);
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int updateLabResult(LabResult labResult) { public int updateLabResult(LabResult labResult) {
return labResultMapper.updateLabResult(labResult); return labResultMapper.updateLabResult(labResult);
@ -162,6 +171,7 @@ public class CommonUtil {
return xmInfoMapper.getXmInfo(yq, xmdh); return xmInfoMapper.getXmInfo(yq, xmdh);
} }
public List<XmRef> getXmRefList(String yq) { public List<XmRef> getXmRefList(String yq) {
return xmRefMapper.getXmRefList(yq); return xmRefMapper.getXmRefList(yq);
} }
@ -173,7 +183,8 @@ public class CommonUtil {
public XmRef getXmRefValue(Map<String, Object> map) { public XmRef getXmRefValue(Map<String, Object> map) {
return xmRefMapper.getXmRefValue(map); return xmRefMapper.getXmRefValue(map);
} }
public XmRef getXmRefValue(String yq,String xmdh,String bbtype,String sex,Double age,String zd,String slzq) {
public XmRef getXmRefValue(String yq, String xmdh, String bbtype, String sex, Double age, String zd, String slzq) {
return xmRefMapper.getXmRefValue(yq, xmdh, bbtype, sex, age, zd, slzq); return xmRefMapper.getXmRefValue(yq, xmdh, bbtype, sex, age, zd, slzq);
} }
@ -184,7 +195,17 @@ public class CommonUtil {
public List<XmAlarmdetail> getXmAlarmdetail(String yq, String xmdh) { public List<XmAlarmdetail> getXmAlarmdetail(String yq, String xmdh) {
return xmAlarmdetailMapper.getXmAlarmdetail(yq, xmdh); return xmAlarmdetailMapper.getXmAlarmdetail(yq, xmdh);
} }
public Integer insertComLog(ComLog comLog) {return comLogMapper.insertComLog(comLog);}
public List<XmAlarmdetail> getXmAlarmdetailList(String yq) {
return xmAlarmdetailMapper.getXmAlarmdetailList(yq);
}
public List<XmCalc> getXmCalcList(String yq) {
return xmCalcMapper.getXmCalcList(yq);
}
public Integer insertComLog(ComLog comLog) {
return comLogMapper.insertComLog(comLog);
}
public String getYqmc(String yq) { public String getYqmc(String yq) {
@ -251,6 +272,11 @@ public class CommonUtil {
List<ComDict> collect = comDictList.stream().filter(comDict -> comDict.getZddh().equals(zddh)).collect(Collectors.toList()); List<ComDict> collect = comDictList.stream().filter(comDict -> comDict.getZddh().equals(zddh)).collect(Collectors.toList());
if (collect.size() > 0) { if (collect.size() > 0) {
return collect.get(0).getZdmc(); return collect.get(0).getZdmc();
}else{
List<ComDict> collect0 = comDictList.stream().filter(comDict -> comDict.getZdmc().equals(zddh)).collect(Collectors.toList());
if (collect0.size() > 0) {
return collect0.get(0).getZdmc();
}
} }
} }
//如果redis当中没有查到数据,则先在设置redis值, //如果redis当中没有查到数据,则先在设置redis值,
@ -263,7 +289,12 @@ public class CommonUtil {
if (comDictList != null) { if (comDictList != null) {
List<ComDict> collect = comDictList.stream().filter(comDict -> comDict.getZdmc().equals(zdmc)).collect(Collectors.toList()); List<ComDict> collect = comDictList.stream().filter(comDict -> comDict.getZdmc().equals(zdmc)).collect(Collectors.toList());
if (collect.size() > 0) { if (collect.size() > 0) {
return collect.get(0).getZdmc(); return collect.get(0).getZddh();
}else{
List<ComDict> collect0 = comDictList.stream().filter(comDict -> comDict.getZddh().equals(zdmc)).collect(Collectors.toList());
if (collect0.size() > 0) {
return collect0.get(0).getZddh();
}
} }
} }
//如果redis当中没有查到数据,则先在设置redis值, //如果redis当中没有查到数据,则先在设置redis值,
@ -301,6 +332,14 @@ public class CommonUtil {
if (comOpt1 != null) { if (comOpt1 != null) {
ComOptionUtils.setOptCache(yq, xxdh, comOpt1); ComOptionUtils.setOptCache(yq, xxdh, comOpt1);
return comOpt1.getXxqz(); return comOpt1.getXxqz();
}else{
ComOpt comOpt2=new ComOpt();
comOpt2.setBz("");
comOpt2.setXxdh(xxdh);
comOpt2.setYq(yq);
comOpt2.setXxqz("");
comOpt2.setXxlb("");
ComOptionUtils.setOptCache(yq, xxdh, comOpt2);
} }
return null; return null;
} }

View File

@ -1,6 +1,8 @@
package com.czlis.interfaceCommon.utils; package com.czlis.interfaceCommon.utils;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
@ -149,59 +151,41 @@ public class LisUtil {
return input; return input;
} }
} }
/** /**
* 保留指定小数位数 保留指定小数位数(四舍五入)
* 支持比较符号(<=、>=、<、>)和负号(-)同时存在的情况 支持比较符号 (<=、>=、<、>) 和负号 (-) 同时存在的情况
* @param input 输入字符串,如"123.1234"、">123.252"、"<=123.252"、"-45.67"、">=-89.01" @param input 输入字符串,如 "123.1234"、">123.252"、"<=123.252"、"-45.67"、">=-89.01"
* @param decimalPlaces 要保留的小数位数,需为非负整数 @param decimalPlaces 要保留的小数位数,需为非负整数
* @return 格式化后的字符串,无法处理时返回原值 @return 格式化后的字符串,无法处理时返回原值
*/ */
public static String round(String input, int decimalPlaces) { public static String round (String input, int decimalPlaces) {
// 处理空输入或无效小数位数 // 处理空输入或无效小数位数
if (input == null || input.trim().isEmpty() || decimalPlaces < 0) { if (input == null || input.trim ().isEmpty () || decimalPlaces < 0) {
return input; return input;
} }
// 定义比较运算符前缀(按长度排序,确保正确识别)
// 定义比较运算符前缀(按长度排序,确保正确识别) String [] comparisonPrefixes = {"<=", ">=", "<", ">"};
String[] comparisonPrefixes = {"<=", ">=", "<", ">"};
String comparisonPrefix = ""; String comparisonPrefix = "";
String remainingPart = input; String remainingPart = input.trim (); // 去除首尾空格
// 提取比较运算符前缀
// 提取比较运算符前缀
for (String prefix : comparisonPrefixes) { for (String prefix : comparisonPrefixes) {
if (remainingPart.startsWith(prefix)) { if (remainingPart.startsWith (prefix)) {
comparisonPrefix = prefix; comparisonPrefix = prefix;
remainingPart = remainingPart.substring(prefix.length()); remainingPart = remainingPart.substring (prefix.length ()).trim (); // 去除前缀后的空格
break; break;
} }
} }
// 尝试解析剩余部分为数字(使用 BigDecimal 避免精度问题)
// 尝试解析剩余部分为数字
try { try {
// 解析数字(包含可能的负号) // 解析为 BigDecimal(支持正负号和小数)
double number = Double.parseDouble(remainingPart); BigDecimal number = new BigDecimal (remainingPart);
// 设置四舍五入模式并保留指定小数位数
// 创建格式化模式(整数部分至少1位,小数部分固定位数) BigDecimal rounded = number.setScale (decimalPlaces, RoundingMode.HALF_UP);
StringBuilder formatPattern = new StringBuilder(); // 拼接比较前缀和格式化后的数字
formatPattern.append("0"); return comparisonPrefix + rounded.toPlainString (); //toPlainString 避免科学计数法
if (decimalPlaces > 0) {
formatPattern.append(".");
// 循环添加指定数量的0
for (int i = 0; i < decimalPlaces; i++) {
formatPattern.append("0");
}
}
// 格式化数字并拼接比较前缀
String formattedNumber = String.format(
"%s%s",
comparisonPrefix,
String.format(formatPattern.toString(), number)
);
return formattedNumber;
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
// 数字部分无法解析时返回原值 // 数字部分无法解析时返回原值
return input; return input;
} }
} }

View File

@ -23,7 +23,7 @@
select select
lab_result.jyrq, lab_result.yq, lab_result.ybh, lab_result.xmdh, wyh, csjg, od, cutoff, lab_result.jgbz, bz1, bz2, yhdh, instrid, operdt, lab_result.jyrq, lab_result.yq, lab_result.ybh, lab_result.xmdh, wyh, csjg, od, cutoff, lab_result.jgbz, bz1, bz2, yhdh, instrid, operdt,
operna, refs, flag, lab_result.dw, result_flag, alarm_flag, redo_flag, sqxmdh, redo_text,xm_info.xmmc,xm_info.ygzq,xm_info.ygzd operna, refs, flag, lab_result.dw, result_flag, alarm_flag, redo_flag, sqxmdh, redo_text,xm_info.xmmc,xm_info.ygzq,xm_info.ygzd
,textresult ,textresult,xm_info.xsws
from lab_result join xm_info on xm_info.yq=lab_result.yq and xm_info.xmdh=lab_result.xmdh from lab_result join xm_info on xm_info.yq=lab_result.yq and xm_info.xmdh=lab_result.xmdh
<where> <where>
<if test="jyrq != null "> <if test="jyrq != null ">
@ -41,7 +41,7 @@
select select
lab_result.jyrq, lab_result.yq, lab_result.ybh, lab_result.xmdh, wyh, csjg, od, cutoff, lab_result.jgbz, bz1, bz2, yhdh, instrid, operdt, lab_result.jyrq, lab_result.yq, lab_result.ybh, lab_result.xmdh, wyh, csjg, od, cutoff, lab_result.jgbz, bz1, bz2, yhdh, instrid, operdt,
operna, refs, flag, lab_result.dw, result_flag, alarm_flag, redo_flag, sqxmdh, redo_text,xm_info.xmmc,xm_info.ygzq,xm_info.ygzd operna, refs, flag, lab_result.dw, result_flag, alarm_flag, redo_flag, sqxmdh, redo_text,xm_info.xmmc,xm_info.ygzq,xm_info.ygzd
,textresult ,textresult,xm_info.xsws
from lab_result join xm_info on xm_info.yq=lab_result.yq and xm_info.xmdh=lab_result.xmdh from lab_result join xm_info on xm_info.yq=lab_result.yq and xm_info.xmdh=lab_result.xmdh
<where> <where>
<if test="jyrq != null "> <if test="jyrq != null ">

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.czlis.interfaceCommon.mapper.XmCalcMapper">
<select id="getXmCalcList" resultType="com.czlis.common.core.domain.entity.lis.XmCalc">
SELECT * FROM xm_calc WHERE yq=#{yq}
</select>
<select id="getXmCalc" resultType="com.czlis.common.core.domain.entity.lis.XmCalc">
SELECT * FROM xm_calc WHERE yq=#{yq} and jsxm=#{jsxm}
</select>
<select id="getXmCalcbyxmdh" resultType="com.czlis.common.core.domain.entity.lis.XmCalc">
SELECT * FROM xm_calc WHERE yq=#{yq}
and jsxm=(select jsxm from xm_calc a where a.yq=#{yq} and a.xmdh=#{xmdh})
</select>
</mapper>

View File

@ -23,6 +23,7 @@ import com.czlis.liswork.mapper.dict.LabInstrvsreqclassMapper;
import com.czlis.liswork.pojo.DTO.ResultCalcDTO; import com.czlis.liswork.pojo.DTO.ResultCalcDTO;
import com.czlis.liswork.service.LisWorkOperService; import com.czlis.liswork.service.LisWorkOperService;
import com.czlis.liswork.utils.LisWorkUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import lombok.val; import lombok.val;
import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateFormatUtils;
@ -51,6 +52,8 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
LabReqdetailMapper labReqdetailMapper; LabReqdetailMapper labReqdetailMapper;
@Autowired @Autowired
CheckResultUtils checkResultUtils; CheckResultUtils checkResultUtils;
@Autowired
private LisWorkUtil lisWorkUtil;
@Override @Override
public Result newPatInfo(Date jyrq, String ybh, String sqh, String yq, Long userId) { public Result newPatInfo(Date jyrq, String ybh, String sqh, String yq, Long userId) {
@ -215,33 +218,47 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
//入参通过GET推送时使用ServletUtils.getParameterToInt获取 //入参通过GET推送时使用ServletUtils.getParameterToInt获取
//入参通过POSTJSON时使用JsonParamUtils.getParameterToInt获取 //入参通过POSTJSON时使用JsonParamUtils.getParameterToInt获取
int problemId = ServletUtils.getParameterToInt("problemId", 0); int problemId = ServletUtils.getParameterToInt("problemId", 0);
LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh);
//1,审核权限校验
if (!commonUtil.getUserPower(yq, hdys, 20)) return new Result("-1", "当前核对者无权对本仪器报告审核!");
//2:数据合法性校验
LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh);
labPat.setHdys(hdys); labPat.setHdys(hdys);
Result result = beforeconfirm(labPat, 2, problemId); List<LabResult> labResultList = commonUtil.getLabResultList(jyrq, yq, ybh);
if (!"0".equals(result.getCode())) return result; if(problemId<3) {
//3:数据完整保存 //1,审核权限校验
int wjz = saveallresult(labPat); if (!commonUtil.getUserPower(yq, hdys, 20)) return new Result("-1", "当前核对者无权对本仪器报告审核!");
//同步主表危急值标识 //2:数据合法性校验
String alarmflag = labPat.getAlarmflag(); Result result0 = beforeconfirm(labPat, labResultList, 2, problemId);
if (("1".equals(alarmflag) && wjz != 1)) { if (!"0".equals(result0.getCode())) return result0;
labPat.setAlarmflag("1");
commonUtil.updateLabPat(labPat);
} else if (("".equals(alarmflag) || alarmflag == null) && wjz == 1) {
labPat.setAlarmflag("");
commonUtil.updateLabPat(labPat);
} }
//医学审核条件判断 if(problemId<3) problemId = 3;
if (problemId < 3) problemId = 3; if(problemId<4) {
result = chksample(labPat, problemId); //3:数据完整保存
if ("99".equals(result.getCode())) { labResultList = saveallresult(labPat, labResultList);
labPat.setBz(result.getMsg()); boolean wjz = getAlarmFlag(labResultList);
result.setCode("0"); //同步主表危急值标识
String alarmflag = labPat.getAlarmflag();
if (("1".equals(alarmflag) && !wjz)) {
labPat.setAlarmflag("1");
commonUtil.updateLabPat(labPat);
} else if (("".equals(alarmflag) || alarmflag == null) && wjz) {
labPat.setAlarmflag("");
commonUtil.updateLabPat(labPat);
}
}
if(problemId<4) problemId = 4;
if(problemId<5) {
//医学审核条件判断
Result result = chksample(labPat, labResultList, problemId);
if (!"0".equals(result.getCode())) return result;
}
if(problemId<5) problemId = 5;
if(problemId<99) {
//高级医学审核条件判断
Result result = chksamplenew(labPat, labResultList, problemId);
if ("99".equals(result.getCode())) {
labPat.setBz(result.getMsg());
result.setCode("0");
}
if (!"0".equals(result.getCode())) return result;
} }
if (!"0".equals(result.getCode())) return result;
if (problemId < 99) problemId = 99; if (problemId < 99) problemId = 99;
//4:CA请求业务的处理 //4:CA请求业务的处理
//Result result=addCA(jyrq, yq, ybh, hdys); //Result result=addCA(jyrq, yq, ybh, hdys);
@ -263,11 +280,12 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
public Result beforeconfirm(Date jyrq, String yq, String ybh) { public Result beforeconfirm(Date jyrq, String yq, String ybh) {
int problemId = ServletUtils.getParameterToInt("problemId", 0); int problemId = ServletUtils.getParameterToInt("problemId", 0);
LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh);
return beforeconfirm(labPat, 2, problemId); List<LabResult> labResultList = commonUtil.getLabResultList(jyrq, yq, ybh);
return beforeconfirm(labPat, labResultList,2, problemId);
} }
//内部使用 //内部使用
private Result beforeconfirm(LabPat labPat, Integer checktype, Integer problemId) { private Result beforeconfirm(LabPat labPat,List<LabResult> labResultList, Integer checktype, Integer problemId) {
Date jyrq = labPat.getJyrq(); Date jyrq = labPat.getJyrq();
String yq = labPat.getYq(); String yq = labPat.getYq();
String ybh = labPat.getYbh(); String ybh = labPat.getYbh();
@ -310,7 +328,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
if ("1".equals(brly) || "3".equals(brly)) return new Result("-1", "门诊住院的病历号不能为空,禁止审核!"); if ("1".equals(brly) || "3".equals(brly)) return new Result("-1", "门诊住院的病历号不能为空,禁止审核!");
} }
String yqdl = commonUtil.getYqdl(yq); String yqdl = commonUtil.getYqdl(yq);
List<LabResult> labResultList = commonUtil.getLabResultList(jyrq, yq, ybh);
if (labResultList == null || labResultList.size() == 0) return new Result("-1", "结果为空禁止审核!"); if (labResultList == null || labResultList.size() == 0) return new Result("-1", "结果为空禁止审核!");
for (LabResult labResult : labResultList) { for (LabResult labResult : labResultList) {
String csjg = labResult.getCsjg(); String csjg = labResult.getCsjg();
@ -412,27 +429,34 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
/** /**
* 医学审核条件判断 * 医学审核条件判断
*
* @param labPat * @param labPat
* @param problemId * @param problemId
* @return * @return
*/ */
private Result chksample(LabPat labPat, Integer problemId) { private Result chksample(LabPat labPat, List<LabResult> labResultList,Integer problemId) {
List<LabResult> labResultList = commonUtil.getLabResultList(labPat.getJyrq(), labPat.getYq(), labPat.getYbh());
//医学审核条件判断 //医学审核条件判断
if (problemId < 4) { if (problemId < 5) {
String checkvalue = checkResultUtils.chksample(labPat, labResultList); String checkvalue = checkResultUtils.chksample(labPat, labResultList);
if (checkvalue != null && !"".equals(checkvalue)) { if (checkvalue != null && !"".equals(checkvalue)) {
return new Result("5", checkvalue, 4); return new Result("5", checkvalue, 5);
} }
} }
return new Result("0", "保存成功!");
}
/**
* 高级医学审核条件判断
* @param labPat
* @param problemId
* @return
*/
private Result chksamplenew(LabPat labPat, List<LabResult> labResultList,Integer problemId) {
//医学审核条件判断
Boolean setbz = false; Boolean setbz = false;
String bz = labPat.getBz(); String bz = labPat.getBz();
//医学审核条件判断(新规则),预留99个递归ID //医学审核条件判断(新规则),预留99个递归ID
if (problemId < 4) problemId = 4; if (problemId < 5) problemId = 5;
if (problemId < 99) { if (problemId < 99) {
int xh = problemId - 4; int xh = problemId - 5;
Map<String, Object> chksamplenewvalue = checkResultUtils.chksamplenew(labPat, labResultList, xh); Map<String, Object> chksamplenewvalue = checkResultUtils.chksamplenew(labPat, labResultList, xh);
String chkCode = (String) chksamplenewvalue.get("code"); String chkCode = (String) chksamplenewvalue.get("code");
String chkMsg = (String) chksamplenewvalue.get("msg"); String chkMsg = (String) chksamplenewvalue.get("msg");
@ -440,7 +464,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
labPat.setBz(bz); labPat.setBz(bz);
xh = (Integer) chksamplenewvalue.get("xh"); xh = (Integer) chksamplenewvalue.get("xh");
setbz = (Boolean) chksamplenewvalue.get("setbz"); setbz = (Boolean) chksamplenewvalue.get("setbz");
problemId = 4 + xh; problemId = 5 + xh;
if ("5".equals(chkCode)) { if ("5".equals(chkCode)) {
if (setbz) { if (setbz) {
commonUtil.updateLabPat(labPat); commonUtil.updateLabPat(labPat);
@ -455,7 +479,6 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
} }
return new Result("0", "保存成功!"); return new Result("0", "保存成功!");
} }
/** /**
* 审核后步骤,在审核过程中,必须完成审核前校验通过,结果计算值填充,参考值结果标志危急值标志填写完成,最后使用此方法修改状态 * 审核后步骤,在审核过程中,必须完成审核前校验通过,结果计算值填充,参考值结果标志危急值标志填写完成,最后使用此方法修改状态
* *
@ -478,11 +501,12 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
String hdys = labPat.getHdys(); String hdys = labPat.getHdys();
String yqdl = commonUtil.getYqdl(yq); String yqdl = commonUtil.getYqdl(yq);
String itemvs = commonUtil.getHISOPT("itemvs"); String itemvs = commonUtil.getHISOPT("itemvs");
Result ret=new Result("0", "保存成功!");
if ("1".equals(itemvs)) { if ("1".equals(itemvs)) {
if (!"细菌仪".equals(yqdl)) { if (!"细菌仪".equals(yqdl)) {
String nullcount = lisWorkOperMapper.checkresultnosqxmdh(jyrq, yq, ybh); String nullcount = lisWorkOperMapper.checkresultnosqxmdh(jyrq, yq, ybh);
if (!"".equals(nullcount) && nullcount != null) if (!"".equals(nullcount) && nullcount != null)
return new Result("-1", "报告项目未对应申请项目,请进(收费项目报告项目对照)菜单维护对照:\r\n" + nullcount); ret=new Result("3", "警告!"+LisUtil.LINE_SEPARATOR +" 报告项目未对应申请项目,请进(收费项目报告项目对照)菜单维护对照:"+LisUtil.LINE_SEPARATOR + nullcount);
} }
} }
@ -526,7 +550,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
if (problemId < 100) { if (problemId < 100) {
return new Result(result.getCode(), result.getMsg(), 100); return new Result(result.getCode(), result.getMsg(), 100);
} }
return new Result("0", "保存成功!"); return ret;
} }
if (!result.getCode().equals("0")) return result; if (!result.getCode().equals("0")) return result;
//最后完成 //最后完成
@ -538,7 +562,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
shcs = shcs + 1; shcs = shcs + 1;
labPat.setShcs(shcs); labPat.setShcs(shcs);
commonUtil.updateLabPat(labPat); commonUtil.updateLabPat(labPat);
return new Result("0", "保存成功!"); return ret;
} }
/** /**
@ -659,13 +683,14 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh);
String finish = labPat.getFinish(); String finish = labPat.getFinish();
if (!"细菌仪".equals(yqdl) && finish != null && finsh == 1) labPat.setFinish("1"); if (!"细菌仪".equals(yqdl) && finish != null && finsh == 1) labPat.setFinish("1");
int wjz = saveallresult(labPat); labResultList = saveallresult(labPat,labResultList);
boolean wjz=getAlarmFlag(labResultList);
//同步主表危急值标识 //同步主表危急值标识
String alarmflag = labPat.getAlarmflag(); String alarmflag = labPat.getAlarmflag();
if (("1".equals(alarmflag) && wjz != 1)) { if (("1".equals(alarmflag) && !wjz )) {
labPat.setAlarmflag("1"); labPat.setAlarmflag("1");
commonUtil.updateLabPat(labPat); commonUtil.updateLabPat(labPat);
} else if (("".equals(alarmflag) || alarmflag == null) && wjz == 1) { } else if (("".equals(alarmflag) || alarmflag == null) && wjz) {
labPat.setAlarmflag(""); labPat.setAlarmflag("");
commonUtil.updateLabPat(labPat); commonUtil.updateLabPat(labPat);
} }
@ -673,7 +698,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
} }
//内部使用 //内部使用
private int saveallresult(LabPat labPat) { private List<LabResult> saveallresult(LabPat labPat,List<LabResult> labResultList) {
Date jyrq = labPat.getJyrq(); Date jyrq = labPat.getJyrq();
String yq = labPat.getYq(); String yq = labPat.getYq();
String ybh = labPat.getYbh(); String ybh = labPat.getYbh();
@ -683,19 +708,13 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
commonUtil.delNullLabResult(jyrq, yq, ybh); commonUtil.delNullLabResult(jyrq, yq, ybh);
} }
//计算项目更新 //计算项目更新
calcsample(labPat); labResultList=calcsample(labPat,labResultList);
//保存最新参考值结果标志
int wjz = saverefs(labPat);
String alarmflag = labPat.getAlarmflag();
if (("1".equals(alarmflag) && wjz != 1)) {
labPat.setAlarmflag("1");
} else if (("".equals(alarmflag) || alarmflag == null) && wjz == 1) {
labPat.setAlarmflag("");
}
//补写结果表申请单项目编号 //补写结果表申请单项目编号
String sqh = labPat.getSqh(); String sqh = labPat.getSqh();
if (sqh != null && !"".equals(sqh)) setItemSqxmdh(jyrq, yq, ybh, sqh); if (sqh != null && !"".equals(sqh)) setItemSqxmdh(jyrq, yq, ybh, sqh);
return wjz; //保存最新参考值结果标志
labResultList = saverefs(labPat);
return labResultList;
} }
/** /**
@ -737,71 +756,93 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
@Override @Override
public Result calcsample(Date jyrq, String yq, String ybh) { public Result calcsample(Date jyrq, String yq, String ybh) {
LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh);
calcsample(labPat); List<LabResult> labResultList = commonUtil.getLabResultList(jyrq, yq, ybh);
calcsample(labPat,labResultList);
return new Result("0", "保存成功!"); return new Result("0", "保存成功!");
} }
private List<LabResult> calcsample(LabPat labPat,List<LabResult> labResultList) {
//内部使用
private void calcsample(LabPat labPat) {
Date jyrq = labPat.getJyrq(); Date jyrq = labPat.getJyrq();
String yq = labPat.getYq(); String yq = labPat.getYq();
String ybh = labPat.getYbh(); String ybh = labPat.getYbh();
List<ResultCalcDTO> resultCalcDTO = lisWorkOperMapper.getResultCalc(jyrq, yq, ybh); String jsxmold = "";
String xmdhold = ""; List<XmCalc> xmCalcList =commonUtil.getXmCalcList(yq);
for (ResultCalcDTO resultCalc : resultCalcDTO) { for (XmCalc xmCalc : xmCalcList) {
String jsgs = resultCalc.getJsgs(); String jsxm = xmCalc.getJsxm();
String xmdh = resultCalc.getJsxm(); if (!jsxmold.equals(jsxm)) {
if (!xmdhold.equals(xmdh)) { jsxmold = jsxm;
xmdhold = xmdh; String jsgs = xmCalc.getJsgs();
String xmdh= xmCalc.getXmdh();
boolean setjgsg = true; boolean setjgsg = true;
boolean lb_jsx= false;
Map<String, String> variables = new HashMap<>(); Map<String, String> variables = new HashMap<>();
String[] parameters = CalcUtils.getParameters(jsgs); String[] parameters = CalcUtils.getParameters(jsgs);
for (int i = 0; i < parameters.length; i++) { for (int i = 0; i < parameters.length; i++) {
String itemcode = parameters[i]; String itemcode = parameters[i];
if ("SEX".equals(itemcode)) { if ("SEX".equals(itemcode)) {
String sex = labPat.getBrxb().trim(); String sex = labPat.getBrxb().trim();
// if ("1".equals(sex)) sex = "男"; if ("男".equals(sex)) sex = "1";
// if ("2".equals(sex)) sex = "女"; if ("女".equals(sex)) sex = "2";
variables.put("SEX", sex); variables.put("SEX", sex);
lb_jsx=true;
} else if ("AGE".equals(itemcode)) { } else if ("AGE".equals(itemcode)) {
double age = AgeUtils.getDecimalAge(AgeUtils.getBirthDateByAge(labPat.getNl(), labPat.getNldw())); double age = AgeUtils.getDecimalAge(AgeUtils.getBirthDateByAge(labPat.getNl(), labPat.getNldw()));
variables.put("AGE", String.valueOf(age)); variables.put("AGE", String.valueOf(age));
lb_jsx=true;
} else { } else {
List<ResultCalcDTO> collect = resultCalcDTO.stream().filter(result -> result.getXmdh().equals(itemcode)).collect(Collectors.toList()); List<LabResult> collect = labResultList.stream().filter(result -> result.getXmdh().equals(itemcode)).collect(Collectors.toList());
if (collect.size() > 0) { if (collect.size() > 0) {
variables.put(itemcode, collect.get(0).getCsjg()); variables.put(itemcode, collect.get(0).getCsjg());
} else { } else {
setjgsg = false; setjgsg = false;
break;
} }
} }
} }
if (setjgsg) { if (setjgsg) {
String result = CalcUtils.getValueFromCalc(jsgs, variables); String result = CalcUtils.getValueFromCalc(jsgs, variables);
if("0".equals(result) && lb_jsx)result=null;
if (result != null && !result.trim().isEmpty()) { if (result != null && !result.trim().isEmpty()) {
if(LisUtil.isNumber(result)) {
Integer xsws =lisWorkOperMapper.getxsws(yq,xmdh);
if (xsws >= 0) result = LisUtil.round(result, xsws);
}
//插入结果值 //插入结果值
LabResult labResult = commonUtil.getLabResult(jyrq, yq, ybh, xmdh); Optional<LabResult> collect0 = labResultList.stream().filter(labR -> labR.getXmdh().equals(jsxm)).findFirst();
if (labResult == null) { if (collect0.isPresent()) {
labResult = new LabResult(); LabResult labResult =collect0.get();
if(LisUtil.isNumber(result)) {
Integer xsws =labResult.getXsws();
if (xsws >= 0) result = LisUtil.round(result, xsws);
}
// log.info("result:{},getCsjg:{}",result,labResult.getCsjg());
if(!result.equals(labResult.getCsjg())) {
labResult.setCsjg(result);
String finalResult = result;
collect0.ifPresent(labR -> labR.setCsjg(finalResult));
commonUtil.updateLabResult(labResult);
}
}else{
XmInfo xmInfo=commonUtil.getXmInfo(yq,xmdh);
if(LisUtil.isNumber(result)) {
Integer xsws =xmInfo.getXsws();
if (xsws >= 0) result = LisUtil.round(result, xsws);
}
LabResult labResult = new LabResult();
labResult.setJyrq(jyrq); labResult.setJyrq(jyrq);
labResult.setYq(yq); labResult.setYq(yq);
labResult.setYbh(ybh); labResult.setYbh(ybh);
labResult.setXmdh(xmdh); labResult.setXmdh(jsxm);
labResult.setCsjg(result); labResult.setCsjg(result);
commonUtil.insertLabResult(labResult); commonUtil.insertLabResult(labResult);
} else { labResult.setXsws(xmInfo.getXsws());
labResult.setCsjg(result); labResult.setYgzd(xmInfo.getYgzd());
commonUtil.updateLabResult(labResult); labResult.setYgzq(xmInfo.getYgzq());
labResult.setXmmc(xmInfo.getXmmc());
labResultList.set(labResultList.size(), labResult);
} }
} }
} }
} }
} }
return labResultList;
} }
/** /**
* 计算项目参考值结果异常标志 * 计算项目参考值结果异常标志
* *
@ -812,13 +853,14 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
@Override @Override
public Result saverefs(Date jyrq, String yq, String ybh) { public Result saverefs(Date jyrq, String yq, String ybh) {
LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh);
int wjz = saverefs(labPat); List<LabResult> labResultList = saverefs(labPat);
boolean wjz=getAlarmFlag(labResultList);
//同步主表危急值标识 //同步主表危急值标识
String alarmflag = labPat.getAlarmflag(); String alarmflag = labPat.getAlarmflag();
if (("1".equals(alarmflag) && wjz != 1)) { if (("1".equals(alarmflag) && !wjz )) {
labPat.setAlarmflag("1"); labPat.setAlarmflag("1");
commonUtil.updateLabPat(labPat); commonUtil.updateLabPat(labPat);
} else if (("".equals(alarmflag) || alarmflag == null) && wjz == 1) { } else if (("".equals(alarmflag) || alarmflag == null) && wjz) {
labPat.setAlarmflag(""); labPat.setAlarmflag("");
commonUtil.updateLabPat(labPat); commonUtil.updateLabPat(labPat);
} }
@ -832,12 +874,26 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
* @param labPat * @param labPat
* @return 返回值0正常, 1有危急值明细存在 * @return 返回值0正常, 1有危急值明细存在
*/ */
private int saverefs(LabPat labPat) { private List<LabResult> saverefs(LabPat labPat) {
Date jyrq = labPat.getJyrq(); Date jyrq = labPat.getJyrq();
String yq = labPat.getYq(); String yq = labPat.getYq();
String ybh = labPat.getYbh(); String ybh = labPat.getYbh();
String yqdl = commonUtil.getYqdl(yq); String yqdl = commonUtil.getYqdl(yq);
boolean lb_setbj = true, lb_wjz = false; boolean lb_setbj = true, lb_wjz = false,nowjz=false;
//危急值标识去除原则 nowjz = true 不能算做危急值
String brxm = labPat.getBrxm();
if (brxm != null) {
if (brxm.contains("质控") || brxm.contains("复查") || brxm.contains("QC") || brxm.contains("qc") || brxm.contains("软化水") || brxm.contains("锅炉水")) {
nowjz = true;
}
}
String brly = labPat.getBrly();
if (brly != null) brly = commonUtil.getComDictNameById("PT", brly);
if (brly != null) if (brly.contains("质控")) nowjz = true;
String ksdh = labPat.getKsdh();
if (ksdh != null) ksdh = commonUtil.getComDictNameById("DP", ksdh);
if (ksdh != null) if (ksdh.contains("检验科")) nowjz = true;
List<LabResult> labResultList = null;
if (!"细菌仪".equals(yqdl)) { if (!"细菌仪".equals(yqdl)) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("jyrq", jyrq); map.put("jyrq", jyrq);
@ -851,7 +907,11 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
String retMsg = String.valueOf(map.get("retmsg")); String retMsg = String.valueOf(map.get("retmsg"));
log.info("调用存储过程{}返回值:{},{}", "sp_setrefs", retCode, retMsg); log.info("调用存储过程{}返回值:{},{}", "sp_setrefs", retCode, retMsg);
if (retCode == null || "".equals(retCode) || "-1".equals(retCode)) lb_setbj = false; if (retCode == null || "".equals(retCode) || "-1".equals(retCode)) lb_setbj = false;
List<LabResult> labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); labResultList = commonUtil.getLabResultList(jyrq, yq, ybh);
log.info("labResultList.size:{}",labResultList.size());
List<XmInfo> xmInfoList= commonUtil.getXmInfoList(yq);
List<XmAlarmdetail> xmAlarmdetailList=null;
if(!nowjz){xmAlarmdetailList =commonUtil.getXmAlarmdetailList(yq);}
for (LabResult labResult : labResultList) { for (LabResult labResult : labResultList) {
String csjg = labResult.getCsjg(); String csjg = labResult.getCsjg();
boolean lb_nummode = LisUtil.isTureNumber(csjg); boolean lb_nummode = LisUtil.isTureNumber(csjg);
@ -859,43 +919,50 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
String ygzd = labResult.getYgzd(); String ygzd = labResult.getYgzd();
//当结果为数值并且与周期诊断无关,计算存储过程保存成功后,只进行危急值判断 //当结果为数值并且与周期诊断无关,计算存储过程保存成功后,只进行危急值判断
if (lb_nummode && lb_setbj && !"Y".equals(ygzd) && !"Y".equals(ygzq)) { if (lb_nummode && lb_setbj && !"Y".equals(ygzd) && !"Y".equals(ygzq)) {
int wjz = alarmcondition(labPat, labResult); if(nowjz){
if (wjz != -1) {//危急值标识特殊判断存在时优先使用特殊结果 String resultalarmflag1 = labResult.getAlarmFlag();
String resultalarmflag = labResult.getAlarmFlag(); if (!"".equals(resultalarmflag1) && resultalarmflag1 != null){
if (("".equals(resultalarmflag) && lb_wjz)) {
String jgbz = labResult.getJgbz();
if (jgbz == null || !"L".equals(jgbz)) jgbz = "H";
labResult.setAlarmFlag(jgbz);
commonUtil.updateLabResult(labResult);
} else if (!"".equals(resultalarmflag) && !lb_wjz) {
labResult.setAlarmFlag(""); labResult.setAlarmFlag("");
commonUtil.updateLabResult(labResult); commonUtil.updateLabResult(labResult);
} }
}else {
String xmdh=labResult.getXmdh();
List<XmAlarmdetail> getXmAlarmdetail = xmAlarmdetailList.stream().filter(detail-> detail.getXmdh().equals(xmdh)).collect(Collectors.toList());
int wjz = alarmcondition(labPat, labResult, getXmAlarmdetail);
if (wjz != -1) {//危急值标识特殊判断存在时优先使用特殊结果
String resultalarmflag = labResult.getAlarmFlag();
if (("".equals(resultalarmflag) && lb_wjz)) {
String jgbz = labResult.getJgbz();
if (jgbz == null || !"L".equals(jgbz)) jgbz = "H";
labResult.setAlarmFlag(jgbz);
commonUtil.updateLabResult(labResult);
} else if (!"".equals(resultalarmflag) && !lb_wjz) {
labResult.setAlarmFlag("");
commonUtil.updateLabResult(labResult);
}
}
String resultalarmflag1 = labResult.getAlarmFlag();
if (!"".equals(resultalarmflag1) && resultalarmflag1 != null) lb_wjz = true;
} }
String resultalarmflag1 = labResult.getAlarmFlag();
if (!"".equals(resultalarmflag1) && resultalarmflag1 != null) lb_wjz = true;
} else { } else {
int wjz = setrefs(labPat, labResult); String xmdh=labResult.getXmdh();
if (wjz == 1) lb_wjz = true; List<XmInfo> xmInfo0=xmInfoList.stream().filter(xm->xm.getXmdh().equals(xmdh)).collect(Collectors.toList());
if(xmInfo0.size()>0){
XmInfo xmInfo=xmInfo0.get(0);
List<XmAlarmdetail> getXmAlarmdetail = xmAlarmdetailList.stream().filter(detail-> detail.getXmdh().equals(xmdh)).collect(Collectors.toList());
LabResult labResult0 = setxmdhrefs(labPat, labResult,xmInfo,getXmAlarmdetail,nowjz);
labResult.setCsjg(csjg);
labResult.setDw(labResult0.getDw());
labResult.setRefs(labResult0.getRefs());
labResult.setResultFlag(labResult0.getResultFlag());
labResult.setJgbz(labResult0.getJgbz());
labResult.setAlarmFlag(labResult0.getAlarmFlag());
}
} }
} }
//危急值标识去除原则
String brxm = labPat.getBrxm();
if (brxm != null)
if (brxm.contains("质控") || brxm.contains("复查") || brxm.contains("QC") || brxm.contains("qc") || brxm.contains("软化水") || brxm.contains("锅炉水")) {
lb_wjz = false;
}
;
String brly = labPat.getBrly();
if (brly != null) brly = commonUtil.getComDictNameById("PT", brly);
if (brly != null) if (brly.contains("质控")) lb_wjz = false;
String ksdh = labPat.getKsdh();
if (ksdh != null) ksdh = commonUtil.getComDictNameById("DP", ksdh);
if (ksdh != null) if (ksdh.contains("检验科")) lb_wjz = false;
//同步主表危急值标识
if (lb_wjz) return 1;
} }
return 0; return labResultList;
} }
/** /**
@ -905,18 +972,16 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
* @param labResult * @param labResult
* @return * @return
*/ */
private int setrefs(LabPat labPat, LabResult labResult) { private LabResult setxmdhrefs(LabPat labPat, LabResult labResult,XmInfo xmInfo,List<XmAlarmdetail> getXmAlarmdetail,boolean nowjz) {
String yq = labPat.getYq(); String yq = labPat.getYq();
String resultflag = "M", wjzflag = ""; String resultflag = "M", wjzflag = "";
int wjz = 0;
String xmdh = labResult.getXmdh(); String xmdh = labResult.getXmdh();
String csjg = labResult.getCsjg(); String csjg = labResult.getCsjg();
if (csjg == null || csjg.trim().isEmpty()) return 0; if (csjg == null || csjg.trim().isEmpty()) return labResult;
String csjgnew = LisUtil.getOverNumber(csjg.trim()); String csjgnew = LisUtil.getOverNumber(csjg.trim());
boolean lb_nummode = LisUtil.isNumber(csjgnew); boolean lb_nummode = LisUtil.isNumber(csjgnew);
//当结果为数值时计算上下限 //当结果为数值时计算上下限
if (lb_nummode) { if (lb_nummode) {
XmInfo xmInfo = commonUtil.getXmInfo(yq, xmdh);
String dw = xmInfo.getDw(); String dw = xmInfo.getDw();
String refs = xmInfo.getDyckz(); String refs = xmInfo.getDyckz();
Double ckxx = xmInfo.getCkxx(); Double ckxx = xmInfo.getCkxx();
@ -980,14 +1045,15 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
Double csjgnum = Double.valueOf(csjgnew); Double csjgnum = Double.valueOf(csjgnew);
if (ckxx != null) if (csjgnum < ckxx) resultflag = "L"; if (ckxx != null) if (csjgnum < ckxx) resultflag = "L";
if (cksx != null) if (csjgnum > cksx) resultflag = "H"; if (cksx != null) if (csjgnum > cksx) resultflag = "H";
int wjzf = alarmcondition(labPat, labResult); if(!nowjz) {
if (wjzf == -1) { int wjzf = alarmcondition(labPat, labResult, getXmAlarmdetail);
if (llimit != null) if (csjgnum < llimit) wjzflag = "L"; if (wjzf == -1) {
if (hlimit != null) if (csjgnum > hlimit) wjzflag = "H"; if (llimit != null) if (csjgnum < llimit) wjzflag = "L";
} else if (wjzf == 1) { if (hlimit != null) if (csjgnum > hlimit) wjzflag = "H";
wjzflag = resultflag; } else if (wjzf == 1) {
wjzflag = resultflag;
}
} }
if (!"".equals(wjzflag)) wjz = 1;
} else { } else {
//文字型结果判断 //文字型结果判断
String jgbzold = labResult.getJgbz(); String jgbzold = labResult.getJgbz();
@ -995,10 +1061,12 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
if ("P".equals(jgbzold) && (csjg.indexOf("阳") >= 0 || csjg.indexOf("+") >= 0 || csjg.indexOf(":") >= 0) && (lmtflag == null || lmtflag.trim().isEmpty())) if ("P".equals(jgbzold) && (csjg.indexOf("阳") >= 0 || csjg.indexOf("+") >= 0 || csjg.indexOf(":") >= 0) && (lmtflag == null || lmtflag.trim().isEmpty()))
lmtflag = "P"; lmtflag = "P";
resultflag = lmtflag; resultflag = lmtflag;
if ("J".equals(lmtflag)) wjzflag = "H"; if(!nowjz) {
int wjzf = alarmcondition(labPat, labResult); if ("J".equals(lmtflag)) wjzflag = "H";
if (wjzf == 1) wjzflag = "H";//满足特定危机值条件 int wjzf = alarmcondition(labPat, labResult, getXmAlarmdetail);
if (wjzf == 0) wjzflag = "";//存在特定危机值条件,但不满足不提示 if (wjzf == 1) wjzflag = "H";//满足特定危机值条件
if (wjzf == 0) wjzflag = "";//存在特定危机值条件,但不满足不提示
}
} }
//小数保留位数计算 //小数保留位数计算
Integer xsws = xmInfo.getXsws(); Integer xsws = xmInfo.getXsws();
@ -1012,8 +1080,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
commonUtil.updateLabResult(labResult); commonUtil.updateLabResult(labResult);
} }
if (!"".equals(wjzflag)) wjz = 1; return labResult;
return wjz;
} }
/** /**
@ -1023,14 +1090,13 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
* @param labResult * @param labResult
* @return * @return
*/ */
private int alarmcondition(LabPat labPat, LabResult labResult) { private int alarmcondition(LabPat labPat, LabResult labResult,List<XmAlarmdetail> getXmAlarmdetail) {
if (getXmAlarmdetail == null) return -1;
boolean lb_fcb = false, lb_hasval = false; boolean lb_fcb = false, lb_hasval = false;
String csjg = labResult.getCsjg(); String csjg = labResult.getCsjg();
if (csjg == null || csjg.trim().isEmpty()) return -1; if (csjg == null || csjg.trim().isEmpty()) return -1;
String yq = labPat.getYq(); String yq = labPat.getYq();
String xmdh = labResult.getXmdh(); String xmdh = labResult.getXmdh();
List<XmAlarmdetail> getXmAlarmdetail = commonUtil.getXmAlarmdetail(yq, xmdh);
if (getXmAlarmdetail == null) return -1;
String brxm = ""; String brxm = "";
String brdh = ""; String brdh = "";
String ksdh = labPat.getKsdh(); String ksdh = labPat.getKsdh();
@ -1200,4 +1266,17 @@ public class LisWorkOperServiceImpl implements LisWorkOperService {
return 0; return 0;
} }
/**
* 查询明细是否有危急值标识
* @param labResultList
* @return
*/
private boolean getAlarmFlag(List<LabResult> labResultList){
boolean wjz=false;
List<LabResult> labResultList0=labResultList.stream().filter(xm->!"".equals(xm.getAlarmFlag())&&xm.getAlarmFlag()!=null).collect(Collectors.toList());
if(labResultList0.size()>0){
wjz=true;
}
return wjz;
}
} }