diff --git a/lis-common/src/main/java/com/czlis/common/core/domain/Result.java b/lis-common/src/main/java/com/czlis/common/core/domain/Result.java index 507f521..5d1c97c 100644 --- a/lis-common/src/main/java/com/czlis/common/core/domain/Result.java +++ b/lis-common/src/main/java/com/czlis/common/core/domain/Result.java @@ -1,20 +1,33 @@ package com.czlis.common.core.domain; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson2.JSON; +import com.czlis.common.utils.JsonParamUtils; +import com.czlis.common.utils.ServletUtils; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.Map; /** * 出参格式 * {"code":"","message":""} */ +@Slf4j @Data @NoArgsConstructor public class Result { private String code; private String msg; private Object data; - + private String url;// 下一步请求的URL + private String method;// 下一步请求的方法(get/post等) + private Object params;// 下一步请求的URL参数 + private Integer problemId;// 问题ID(之前提到的关键标识) public Result(String resultCode, String message) { super(); this.code = resultCode; @@ -26,4 +39,23 @@ public class Result { this.msg = message; this.data = data; } + public Result(String resultCode, String message,Integer problemId) { + this.code = resultCode; + this.msg = message; + Integer problemId0=problemId; + HttpServletRequest request =ServletUtils.getRequest(); + this.url = request.getContextPath() + request.getServletPath(); + this.method = request.getMethod(); + if("GET".equals(this.method)){ + this.params = ServletUtils.getParamMap(request); + }else { + try { + this.data = JsonParamUtils.getJsonParams(request); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + this.problemId=problemId0; + } + } diff --git a/lis-common/src/main/java/com/czlis/common/utils/JsonParamUtils.java b/lis-common/src/main/java/com/czlis/common/utils/JsonParamUtils.java new file mode 100644 index 0000000..25ae308 --- /dev/null +++ b/lis-common/src/main/java/com/czlis/common/utils/JsonParamUtils.java @@ -0,0 +1,130 @@ +package com.czlis.common.utils; + +import com.czlis.common.core.text.Convert; +import com.fasterxml.jackson.databind.ObjectMapper; +import javax.servlet.http.HttpServletRequest; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * 从 POST JSON 请求中获取参数清单的工具类 + */ +public class JsonParamUtils { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + public static Map getJsonParams(){ + try { + return getJsonParams(ServletUtils.getRequest()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + /** + * 读取 POST JSON 请求的参数,返回参数名-值映射 + */ + public static Map getJsonParams(HttpServletRequest request) throws IOException { + // 1. 读取请求体中的 JSON 字符串 + StringBuilder jsonSb = new StringBuilder(); + String line; + try (BufferedReader reader = new BufferedReader( + new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8))) { + while ((line = reader.readLine()) != null) { + jsonSb.append(line); + } + } + String jsonStr = jsonSb.toString(); + + // 2. 若 JSON 为空,返回空 Map + if (jsonStr.isEmpty()) { + return new HashMap<>(); + } + + // 3. 将 JSON 字符串解析为 Map(键为参数名,值为参数值) + return objectMapper.readValue(jsonStr, Map.class); + } + /** + * 获取String参数 + */ + public static String getParameter(String name) { + return getString(getJsonParams(),name); + } + + /** + * 获取String参数 + */ + public static String getParameter(String name, String defaultValue) { + return Convert.toStr(getString(getJsonParams(),name), defaultValue); + } + + /** + * 获取Integer参数 + */ + public static Integer getParameterToInt(String name) { + return Convert.toInt(getString(getJsonParams(),name)); + } + + /** + * 获取Integer参数 + */ + public static Integer getParameterToInt(String name, Integer defaultValue) { + return Convert.toInt(getString(getJsonParams(),name), defaultValue); + } + /** + * 从 Map 中安全获取 String 类型参数 + */ + public static String getString(Map map, String key) { + if (map == null || key == null) { + return null; + } + Object value = map.get(key); + return (value instanceof String) ? (String) value : null; + } + + /** + * 从 Map 中安全获取 Integer 类型参数 + */ + public static Integer getInteger(Map map, String key) { + if (map == null || key == null) { + return null; + } + Object value = map.get(key); + // 支持数字类型(如 Integer、Long、Double 等)转为 Integer + if (value instanceof Number) { + return ((Number) value).intValue(); + } + return null; + } + + /** + * 从 Map 中安全获取 Date 类型参数(指定格式) + */ + public static Date getDate(Map map, String key, String pattern) { + String dateStr = getString(map, key); + if (dateStr == null) { + return null; + } + try { + return new SimpleDateFormat(pattern).parse(dateStr); + } catch (ParseException e) { + return null; // 格式错误返回 null + } + } + + /** + * 从 Map 中安全获取 Boolean 类型参数 + */ + public static Boolean getBoolean(Map map, String key) { + if (map == null || key == null) { + return null; + } + Object value = map.get(key); + return (value instanceof Boolean) ? (Boolean) value : null; + } +} \ No newline at end of file diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/LisinterfaceNameConstants.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/LisinterfaceNameConstants.java index 2d0bee9..37d3b51 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/LisinterfaceNameConstants.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/LisinterfaceNameConstants.java @@ -12,4 +12,16 @@ public class LisinterfaceNameConstants { //获取门诊病人信息列表 public static final String DAYMESSAGE_GETOUTPATLIST = "222"; public static final String DAYMESSAGE_GETPATIENT = "204"; + /** + * 准备发送报告-5 + */ + public static final String REPORTSTART = "5"; + /** + * 发送报告-1 + */ + public static final String REPORTEND = "1"; + /** + * 撤销报告-0 + */ + public static final String REPORTCANCAL = "0"; } diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/ReportStatusConstants.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/ReportStatusConstants.java new file mode 100644 index 0000000..8061e80 --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/ReportStatusConstants.java @@ -0,0 +1,35 @@ +package com.czlis.interfaceCommon.constants; + +/** + * 检验报告单状态常量(lab_pat.jgbz) + */ +public class ReportStatusConstants { + /** + * 未审核报告默认状态=0 + */ + public static final String DEFAULT = "0"; + /** + * 初审=1 + */ + public static final String PRELIM = "1"; + /** + * 终审报告完成=2 + */ + public static final String CONFIRM = "2"; + /** + * 初级报告发出=3 + */ + public static final String FIRST = "3"; + /** + * 二级报告发出=4 + */ + public static final String SECOND = "4"; + /** + * 报告锁定=5 + */ + public static final String STOP = "5"; + /** + * 撤销报告=C + */ + public static final String CANCAL = "C"; +} diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/SampleStatusConstants.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/SampleStatusConstants.java index 8a4f34c..fe9cfbe 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/SampleStatusConstants.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/constants/SampleStatusConstants.java @@ -1,6 +1,45 @@ package com.czlis.interfaceCommon.constants; +/** + * 申请单状态常量(lab_reqmain.zt) + */ public class SampleStatusConstants { + /** + * 标本开单,新建样本-1 + */ + public static final String CREATE="1"; + /** + * 标本执行,打印条码-11 + */ + public static final String PRINT="11"; + /** + * 标本采样-12 + */ + public static final String COLLECTION="12"; + /** + * 标本送出-13 + */ + public static final String SEND="13"; + /** + * 标本签收-2 + */ + public static final String SIGNFOR = "2"; + /** + * 上机开始检测-3(暂时未使用) + */ + public static final String START = "3"; + /** + * 审核完成-4 + */ + public static final String CONFIRM = "4"; + /** + * 剔回样本-8 + */ + public static final String REBACK = "8"; + /** + * 作废样本-9 + */ + public static final String CANCAL = "9"; + - public static final String SIGNFOR = "2"; //标本签收 } \ No newline at end of file diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabInstrMapper.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabInstrMapper.java new file mode 100644 index 0000000..753e81c --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabInstrMapper.java @@ -0,0 +1,17 @@ +package com.czlis.interfaceCommon.mapper; + +import com.czlis.common.core.domain.entity.lis.LabInstr; +import com.czlis.common.core.domain.entity.lis.XmInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface LabInstrMapper { + List getLabInstrAll(); + List getLabInstrList(LabInstr labInstr); + LabInstr getLabInstr(@Param("yq")String yq); + String getYqmc(@Param("yq")String yq); + String getYqdl(@Param("yq")String yq); + String getBgdh(@Param("yq")String yq); + String getLisgroup(@Param("yq")String yq); +} 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 9d8ba57..a0924da 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 @@ -42,6 +42,8 @@ public class CommonUtil { @Autowired XmValMapper xmValMapper; @Autowired + LabInstrMapper labInstrMapper; + @Autowired XmAlarmdetailMapper xmAlarmdetailMapper; //====检验主表操作方法集合=== public LabPat getLabPatOne(Date jyrq, String yq, String ybh){ @@ -83,12 +85,17 @@ public class CommonUtil { public XmRef getXmRefValue(Map map) {return xmRefMapper.getXmRefValue(map);} public String getXmRefJgbz(String yq,String xmdh,String csjg,String csjg1,String csjg2) {return xmValMapper.getXmValJgbz(yq,xmdh,csjg,csjg1,csjg2);} public List getXmAlarmdetail(String yq,String xmdh){return xmAlarmdetailMapper.getXmAlarmdetail(yq,xmdh);}; - - + public String getYqmc(String yq){return labInstrMapper.getYqmc(yq);} + public String getYqdl(String yq){return labInstrMapper.getYqdl(yq);} + public LabInstr getLabInstr(String yq){return labInstrMapper.getLabInstr(yq);} + public List getLabInstrList(LabInstr labInstr){return labInstrMapper.getLabInstrList(labInstr);} //服务器时间方法 public Date getCurrentTime(){return commonMapper.getCurrentTime();} - public String getCurrentDate(){return DateFormatUtils.format(commonMapper.getCurrentTime(), "yyyy-MM-dd");} - public String getCurrentDateTime(){return DateFormatUtils.format(commonMapper.getCurrentTime(), "yyyy-MM-dd HH:mm:ss");} + public String getCurrentDate(){return getDateString(getCurrentTime());} + public String getCurrentDateTime(){return getDateTimeString(getCurrentTime());} + public String getDateString(Date rq){return DateFormatUtils.format(rq, "yyyy-MM-dd");} + public String getDateTimeString(Date rq){return DateFormatUtils.format(rq, "yyyy-MM-dd HH:mm:ss");} + //字典查询单位名称 public String getCompany(String yljg){ if(yljg == null || yljg.equals(""))return getCompany(); @@ -130,6 +137,13 @@ public class CommonUtil { }} return comDictMapper.getComDictIdByName(zdlb,zdmc); } + + /** + * 获取本院设置全局参数yq=HISOPT + * @param xxdh + * @return + */ + public String getHISOPT(String xxdh){return getComOptValue("HISOPT",xxdh);} public String getComOptValue(String yq,String xxdh){ ComOpt comOpt =getOptCache(yq,xxdh); if(comOpt != null) { diff --git a/lis-interfaceCommon/src/main/resources/mapper/LabInstrMapper.xml b/lis-interfaceCommon/src/main/resources/mapper/LabInstrMapper.xml new file mode 100644 index 0000000..3f9d9eb --- /dev/null +++ b/lis-interfaceCommon/src/main/resources/mapper/LabInstrMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + diff --git a/liswork/src/main/java/com/czlis/liswork/controller/work/LisWorkOperController.java b/liswork/src/main/java/com/czlis/liswork/controller/work/LisWorkOperController.java index bc6fdc9..8fd1351 100644 --- a/liswork/src/main/java/com/czlis/liswork/controller/work/LisWorkOperController.java +++ b/liswork/src/main/java/com/czlis/liswork/controller/work/LisWorkOperController.java @@ -3,16 +3,18 @@ package com.czlis.liswork.controller.work; import com.czlis.common.core.controller.BaseController; import com.czlis.common.core.domain.Result; import com.czlis.common.core.domain.entity.lis.LabPat; +import com.czlis.common.utils.ServletUtils; import com.czlis.liswork.service.LisWorkOperService; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.Date; - +import java.util.Map; +@Slf4j @RestController @RequestMapping("/lisworkoper") public class LisWorkOperController extends BaseController { @@ -46,9 +48,12 @@ public class LisWorkOperController extends BaseController { * @param hdys 核对医生 * @return */ - @ApiOperation("修改病人信息") - @PostMapping("/check2") - public Result check2(Date jyrq, String yq, String ybh,String hdys){ + @ApiOperation("审核报告") + @GetMapping("/check2") + public Result check21( Date jyrq, String yq, String ybh, String hdys){ + log.info("yq:{}", yq); + hdys="lis"; + return lisWorkOperService.check2(jyrq, yq, ybh, hdys); } } 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 7d38122..d274e40 100644 --- a/liswork/src/main/java/com/czlis/liswork/mapper/LisWorkOperMapper.java +++ b/liswork/src/main/java/com/czlis/liswork/mapper/LisWorkOperMapper.java @@ -1,5 +1,6 @@ package com.czlis.liswork.mapper; +import com.czlis.common.core.domain.entity.lis.LabPat; import com.czlis.liswork.pojo.DTO.ResultCalcDTO; import org.apache.ibatis.annotations.Param; import java.util.Date; @@ -9,10 +10,13 @@ import java.util.Map; public interface LisWorkOperMapper { Long checkReqClass(@Param("sqh") String sqh,@Param("yq") String yq); String selectSqxmdh(String sqh); - String selectYqdl(String yq); void sp_setrefs(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); + 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); } 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 7cff1cd..87e3ee2 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 @@ -2,14 +2,18 @@ package com.czlis.liswork.service.impl; import com.czlis.common.core.domain.entity.lis.*; +import com.czlis.common.utils.ServletUtils; import com.czlis.common.utils.StringUtils; +import com.czlis.common.utils.ip.IpUtils; import com.czlis.interfaceCommon.constants.LisinterfaceNameConstants; import com.czlis.common.core.domain.Result; +import com.czlis.interfaceCommon.constants.ReportStatusConstants; import com.czlis.interfaceCommon.constants.SampleStatusConstants; 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.LisWorkOperMapper; @@ -18,6 +22,7 @@ import com.czlis.liswork.pojo.DTO.ResultCalcDTO; import com.czlis.liswork.service.LisWorkOperService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -41,8 +46,9 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { LabReqmainMapper labReqmainMapper; @Autowired LabReqdetailMapper labReqdetailMapper; + @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) { LabReqmain labReqmainOne = commonUtil.getLabReqmainOne(sqh); if (labReqmainOne == null) { @@ -58,15 +64,15 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.GETREQINTERFACE, getReqInterface); labReqmainOne = commonUtil.getLabReqmainOne(sqh); } - if(labReqmainOne == null) return new Result("-1","没有获取到申请单信息!"); + 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; + if (!result1.getCode().equals("0")) return result1; //校验条码类别 Result result2 = checkReqClass(sqh, yq, labReqmainOne.getBgddh()); - if(!result2.getCode().equals("0")) return result2; + if (!result2.getCode().equals("0")) return result2; //3.调用his上机接口, SetReqStatus setReqStatus = new SetReqStatus(); @@ -75,7 +81,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { setReqStatus.setUserid(userId.toString()); setReqStatus.setStatus(SampleStatusConstants.SIGNFOR); Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREQSTATUS, setReqStatus); - if(!result.getCode().equals("0")) return result; + if (!result.getCode().equals("0")) return result; //4.获取病人信息 DayMessage dayMessage = new DayMessage(); @@ -83,7 +89,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { dayMessage.setYljg("1"); dayMessage.setUserid(userId.toString()); dayMessage.setMsgid(LisinterfaceNameConstants.DAYMESSAGE_GETPATIENT); - String val = labReqmainOne.getBrdh()+"|"+labReqmainOne.getBrly()+"|"; //这里有个医疗机构的,没有传,要考虑 + String val = labReqmainOne.getBrdh() + "|" + labReqmainOne.getBrly() + "|"; //这里有个医疗机构的,没有传,要考虑 dayMessage.setMsg(val); //5.保存数据 @@ -93,7 +99,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { //6.写日志 - return new Result("0",""); + return new Result("0", ""); } @Override @@ -101,58 +107,58 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { return null; } - private Result checkZT(String sqh,String yq,String zt){ - if(zt.equals("9")) return new Result("-1","当前条码已经作废,不允许上机!"); + private Result checkZT(String sqh, String yq, String zt) { + if (zt.equals("9")) return new Result("-1", "当前条码已经作废,不允许上机!"); String SP_GETTOWREQOK = commonUtil.getComOptValue("HISOPT", "SP_GETTOWREQOK"); //申请单禁止重复上机 String SP_GETTOWREQOKYQ = commonUtil.getComOptValue("HISOPT", "SP_GETTOWREQOKYQ");//申请单禁止同仪器重复上机 - if(zt.equals("2")){ - if(SP_GETTOWREQOK.equals("1")) return new Result("-1","当前条码已经上机!"); - if(SP_GETTOWREQOKYQ.equals("1")){ + 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","该条码已经在当前仪器上机,不允许重复上机!"); + if (yq.equals(yq1)) return new Result("-1", "该条码已经在当前仪器上机,不允许重复上机!"); } } } - return new Result("0","校验成功!"); + return new Result("0", "校验成功!"); } - private Result checkReqClass(String sqh,String yq,String bgddh){ + private Result checkReqClass(String sqh, String yq, String bgddh) { String value = commonUtil.getComOptValue(yq, "chkreqclass"); - if(!value.equals("1")) return new Result("0",""); + if (!value.equals("1")) return new Result("0", ""); LabInstrvsreqclass labInstrvsreqclass = new LabInstrvsreqclass(); labInstrvsreqclass.setYq(yq); List labInstrvsreqclassList = labInstrvsreqclassMapper.getLabInstrvsreqclassList(labInstrvsreqclass); - if(labInstrvsreqclassList.size() > 0){ + 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",""); + 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",""); + 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){ + public Result saveReqInfo(String userId, String sqh, LabReqmain labReqmain, String yq, Date jyrq, String ybh) { //修改状态和时间 - updateLabReqmainZT(userId,sqh); + 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.setYblx(commonUtil.getComDictIdByName("BT", labReqmain.getYblx())); + labPat.setKsdh(commonUtil.getComDictIdByName("DP", labReqmain.getKsdh())); labPat.setSjys(userId); labPat.setBrdh(labReqmain.getBrdh()); labPat.setBrxm(labReqmain.getBrxm()); @@ -169,7 +175,7 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { labPat.setJgbz("0"); labPat.setZd(labReqmain.getZd()); labPat.setCyrq(labReqmain.getCysj()); - labPat.setJymd(LisUtil.substringByGbkWidth(labReqmain.getJymd(),0,50)); + labPat.setJymd(LisUtil.substringByGbkWidth(labReqmain.getJymd(), 0, 50)); labPat.setLastuser(userId); labPat.setLastdt(commonUtil.getCurrentTime()); labPat.setShcs(0); @@ -179,161 +185,290 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { labPat.setAddr(labReqmain.getAddr()); labPat.setLstd(labReqmain.getLstd()); commonUtil.insertLabPat(labPat); - return new Result("0","保存成功!"); + return new Result("0", "保存成功!"); } - public void updateLabReqmainZT(String userId,String sqh){ + public void updateLabReqmainZT(String userId, String sqh) { Map map = new HashMap<>(); - map.put("userId",userId); - map.put("sqh",sqh); + map.put("userId", userId); + map.put("sqh", sqh); labReqmainMapper.updateLabReqmainZT(map); } /** * 审核报告单全流程 + * * @param jyrq * @param yq * @param ybh * @param hdys * @return */ - public Result check2(Date jyrq, String yq, String ybh, String hdys){ + public Result check2(Date jyrq, String yq, String ybh, String hdys) { + if (hdys == null || "".equals(hdys)) new Result("-1", "审核者为空,无法审核!"); + //入参通过GET推送时使用ServletUtils.getParameterToInt获取 + //入参通过POSTJSON时使用JsonParamUtils.getParameterToInt获取 + int problemId = ServletUtils.getParameterToInt("problemId", 0); + //1,审核权限校验 - if(!commonUtil.getUserPower(yq,hdys,20))return new Result("-1","当前核对者无权对本仪器报告审核!"); - //2:数据合法性校验 - Result result=beforecheck2(jyrq, yq, ybh, hdys); - if("0".equals(result.getCode()))return result; - //3:数据完整性校验 - result= saveallresult(jyrq, yq, ybh); - if("0".equals(result.getCode()))return result; + if (!commonUtil.getUserPower(yq, hdys, 20)) return new Result("-1", "当前核对者无权对本仪器报告审核!"); + //2:数据合法性校验 + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + Result result = beforecheck2(labPat, hdys, problemId); + if ("0".equals(result.getCode())) return result; + //3:数据完整保存 + saveallresult(jyrq, yq, ybh); + //4:CA请求业务的处理 //Result result=addCA(jyrq, yq, ybh, hdys); //if("0".equals(result.getCode()))return result; //5:数据状态修改,异步上传接口作业创建 - //Result result=aftercheck2(jyrq, yq, ybh, hdys); - //if("0".equals(result.getCode()))return result; - return new Result("0","保存成功!"); + Result result1 = aftercheck2(jyrq, yq, ybh, hdys); + if ("0".equals(result1.getCode())) return result1; + return new Result("0", "保存成功!"); } - public Result beforecheck2(Date jyrq, String yq, String ybh, String hdys){ - if(hdys==null || "".equals(hdys) ) new Result("-1","审核者为空,无法审核!"); - LabPat labPat=commonUtil.getLabPatOne(jyrq, yq, ybh); - if(labPat==null)return new Result("-1","病人信息为空禁止审核!"); - String jgbz=labPat.getJgbz(); - if("2".equals(jgbz)) new Result("0","保存成功!"); - if("5".equals(jgbz)) return new Result("-1","已锁定报告禁止审核!"); - if(!"1".equals(jgbz)){ - String f_check1=commonUtil.getComOptValue(yq,"f_check1"); - if("1".equals(f_check1)) return new Result("-1","审核前必须先初审!"); + + public Result beforecheck2(Date jyrq, String yq, String ybh, String hdys) { + int problemId = ServletUtils.getParameterToInt("problemId", 0); + if (hdys == null || "".equals(hdys)) new Result("-1", "审核者为空,无法审核!"); + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + return beforecheck2(labPat, hdys, problemId); + } + + private Result beforecheck2(LabPat labPat, String hdys, Integer problemId) { + if (hdys == null || "".equals(hdys)) new Result("-1", "审核者为空,无法审核!"); + 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)) new Result("0", "保存成功!"); + if ("5".equals(jgbz)) return new Result("-1", "已锁定报告禁止审核!"); + if (!"1".equals(jgbz)) { + String f_check1 = commonUtil.getComOptValue(yq, "f_check1"); + if ("1".equals(f_check1)) return new Result("-1", "审核前必须先初审!"); } - String brxm=labPat.getBrxm(); - if(brxm==null || "".equals(brxm) ) new Result("-1","姓名为空禁止审核!"); - List labResultList =commonUtil.getLabResultList(jyrq, yq, ybh); - if(labResultList==null)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", "门诊住院的病历号不能为空,禁止审核!"); + } + + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); + if (labResultList == null) return new Result("-1", "结果为空禁止审核!"); for (LabResult labResult : labResultList) { - String csjg=labResult.getCsjg(); + String csjg = labResult.getCsjg(); if ("未做".equals(csjg)) { - return new Result("-1","还有结果为“未做”的项目,不可审核!"); + 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 (csjg != null) { + if (csjg.contains("ERR")) return new Result("-1", "有结果错误,不可审核!"); + if (csjg.contains("需稀释")) return new Result("-1", "有结果需稀释,不可审核!"); + if (csjg.contains("需复做")) return new Result("-1", "有结果需复做,不可审核!"); } } - return new Result("0","保存成功!"); + if (problemId < 2) { + //多做结果判断 + String otherresultmsg = commonUtil.getComOptValue(yq, "otherresultmsg"); + if ("1".equals(otherresultmsg)) { + String yqdl = commonUtil.getYqdl(yq); + 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="该申请单已经发过结果了,禁止审核!\r\n日期:"+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="该申请单已经发过结果了,禁止审核!\r\n日期:"+commonUtil.getDateString(jyrq)+",仪器:"+yqmc+",样本号:"+ybh; + return new Result("-1", msg); + } + } + + } + } + + + //调用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.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; + return new Result("0", "保存成功!"); + } + + public Result aftercheck2(Date jyrq, String yq, String ybh, String hdys) { + //调用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); + + return new Result("0", "保存成功!"); } /** * 保存所有结果的修正值,涉及:空结果清除,计算项目添加,添加单位,添加申请项目编码,参考值重新计算更新,结果标志重新计算更新,危急值标志计算更新 + * * @param jyrq * @return */ - public Result saveallresult(Date jyrq, String yq, String ybh){ + public Result saveallresult(Date jyrq, String yq, String ybh) { + //查询病人信息 + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); + saveallresult(labPat); + return new Result("0", "保存成功!"); + } + + //内部使用 + private void saveallresult(LabPat labPat) { + Date jyrq = labPat.getJyrq(); + String yq = labPat.getYq(); + String ybh = labPat.getYbh(); //清除空白结果 - String keepnodataitem=commonUtil.getComOptValue(yq,"keepnodataitem"); - if(!"1".equals(keepnodataitem)){ + String keepnodataitem = commonUtil.getComOptValue(yq, "keepnodataitem"); + if (!"1".equals(keepnodataitem)) { commonUtil.delNullLabResult(jyrq, yq, ybh); } - //查询病人信息 - LabPat labPat=commonUtil.getLabPatOne(jyrq, yq, ybh); //计算项目更新 calcsample(labPat); //保存最新参考值结果标志 saverefs(labPat); //补写结果表申请单项目编号 - setItemSqxmdh(jyrq, yq, ybh,labPat.getSqh()); - return new Result("0","保存成功!"); + String sqh = labPat.getYbh(); + if (sqh != null && !"".equals(sqh)) setItemSqxmdh(jyrq, yq, ybh, sqh); } /** * 结果表补充申请单项目代码 + * * @param jyrq * @param yq * @param ybh */ - 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); + 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)) {}else{ - 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); + private void setItemSqxmdh(Date jyrq, String yq, String ybh, String sqh) { + if (sqh == null || "".equals(sqh)) { + } else { + 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); } } } + /** * 计算项目增加及重新计算 + * * @param jyrq * @param yq * @param ybh */ - public Result calcsample(Date jyrq, String yq, String ybh){ - LabPat labPat=commonUtil.getLabPatOne(jyrq, yq, ybh); + public Result calcsample(Date jyrq, String yq, String ybh) { + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); calcsample(labPat); - return new Result("0","保存成功!"); + return new Result("0", "保存成功!"); } + //内部使用 - private void calcsample(LabPat labPat){ - Date jyrq=labPat.getJyrq(); - String yq=labPat.getYq(); - String ybh=labPat.getYbh(); - List resultCalcDTO=lisWorkOperMapper.getResultCalc(jyrq,yq,ybh); - String xmdhold=""; + private void calcsample(LabPat labPat) { + Date jyrq = labPat.getJyrq(); + String yq = labPat.getYq(); + String ybh = labPat.getYbh(); + List resultCalcDTO = lisWorkOperMapper.getResultCalc(jyrq, yq, ybh); + String xmdhold = ""; for (ResultCalcDTO resultCalc : resultCalcDTO) { - String jsgs=resultCalc.getJsgs(); - String xmdh= resultCalc.getJsxm(); - if(!xmdhold.equals(xmdh)) { + String jsgs = resultCalc.getJsgs(); + String xmdh = resultCalc.getJsxm(); + if (!xmdhold.equals(xmdh)) { xmdhold = xmdh; - String sex=labPat.getBrxb().trim(); - if( "1".equals(sex))sex="男"; - if( "2".equals(sex))sex="女"; + String sex = labPat.getBrxb().trim(); + if ("1".equals(sex)) sex = "男"; + if ("2".equals(sex)) sex = "女"; double age = AgeUtils.getDecimalAge(AgeUtils.getBirthDateByAge(labPat.getNl(), labPat.getNldw())); Map variables = new HashMap<>(); variables.put("SEX", sex); // 示例值 variables.put("AGE", String.valueOf(age)); - String result=CalcUtils.getValueFromCalc(jsgs,variables); + String result = CalcUtils.getValueFromCalc(jsgs, variables); if (result != null && !result.trim().isEmpty()) { //插入结果值 - LabResult labResult=commonUtil.getLabResult(jyrq,yq,ybh,xmdh); - if(labResult==null){ - labResult=new LabResult(); + LabResult labResult = commonUtil.getLabResult(jyrq, yq, ybh, xmdh); + if (labResult == null) { + labResult = new LabResult(); labResult.setJyrq(jyrq); labResult.setYq(yq); labResult.setYbh(ybh); labResult.setXmdh(xmdh); labResult.setCsjg(result); commonUtil.insertLabResult(labResult); - }else{ + } else { labResult.setCsjg(result); commonUtil.updateLabResult(labResult); } @@ -341,30 +476,34 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { } } } + /** * 计算项目参考值结果异常标志 + * * @param jyrq * @param yq * @param ybh */ - public Result saverefs(Date jyrq, String yq, String ybh){ - LabPat labPat=commonUtil.getLabPatOne(jyrq, yq, ybh); + public Result saverefs(Date jyrq, String yq, String ybh) { + LabPat labPat = commonUtil.getLabPatOne(jyrq, yq, ybh); saverefs(labPat); - return new Result("0","保存成功!"); + return new Result("0", "保存成功!"); } + //内部使用 /** * 计算项目参考值结果异常标志(内部使用) + * * @param labPat - * @return 返回值0正常,1有危急值明细存在 + * @return 返回值0正常, 1有危急值明细存在 */ - private int saverefs(LabPat labPat){ - Date jyrq=labPat.getJyrq(); - String yq=labPat.getYq(); - String ybh=labPat.getYbh(); - String yqdl=lisWorkOperMapper.selectYqdl(yq); - boolean lb_setbj=true,lb_wjz=false; - if(!"细菌仪".equals(yqdl)) { + private int saverefs(LabPat labPat) { + Date jyrq = labPat.getJyrq(); + String yq = labPat.getYq(); + String ybh = labPat.getYbh(); + String yqdl = commonUtil.getYqdl(yq); + boolean lb_setbj = true, lb_wjz = false; + if (!"细菌仪".equals(yqdl)) { Map map = new HashMap<>(); map.put("jyrq", jyrq); map.put("yq", yq); @@ -376,84 +515,86 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { 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; - List labResultList=commonUtil.getLabResultList(jyrq, yq, ybh); + if (retCode == null || "".equals(retCode) || "-1".equals(retCode)) lb_setbj = false; + List labResultList = commonUtil.getLabResultList(jyrq, yq, ybh); for (LabResult labResult : labResultList) { - String csjg=labResult.getCsjg(); - boolean lb_nummode=LisUtil.isTureNumber(csjg); + 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)){ - int wjz=alarmcondition(labPat,labResult); - if(wjz!=-1){//危急值标识特殊判断存在时优先使用特殊结果 - String resultalarmflag=labResult.getAlarmFlag(); - if(("".equals(resultalarmflag) && lb_wjz)) { - String jgbz=labResult.getJgbz(); - if(jgbz==null ||!"L".equals(jgbz)) jgbz="H"; + if (lb_nummode && lb_setbj && !"Y".equals(ygzd) && !"Y".equals(ygzq)) { + int wjz = alarmcondition(labPat, labResult); + if (wjz != -1) {//危急值标识特殊判断存在时优先使用特殊结果 + String resultalarmflag = labResult.getAlarmFlag(); + if (("".equals(resultalarmflag) && lb_wjz)) { + String jgbz = labResult.getJgbz(); + if (jgbz == null || !"L".equals(jgbz)) jgbz = "H"; labResult.setAlarmFlag(jgbz); commonUtil.updateLabResult(labResult); - }else if(!"".equals(resultalarmflag) && !lb_wjz){ + } else if (!"".equals(resultalarmflag) && !lb_wjz) { labResult.setAlarmFlag(""); commonUtil.updateLabResult(labResult); } } - String resultalarmflag1=labResult.getAlarmFlag(); - if(!"".equals(resultalarmflag1) && resultalarmflag1!=null)lb_wjz=true; - }else { - int wjz = setrefs( labPat, labResult); + String resultalarmflag1 = labResult.getAlarmFlag(); + if (!"".equals(resultalarmflag1) && resultalarmflag1 != null) lb_wjz = true; + } else { + int wjz = setrefs(labPat, labResult); if (wjz == 1) lb_wjz = true; } } //危急值标识去除原则 - String brxm=labPat.getBrxm(); - if(brxm.contains("质控")||brxm.contains("复查")||brxm.contains("QC")||brxm.contains("qc")||brxm.contains("软化水")||brxm.contains("锅炉水")){ - lb_wjz=false; - }; - String brly=labPat.getBrly(); - brly=commonUtil.getComDictNameById("PT",brly); - if(brly.contains("质控"))lb_wjz=false; - String ksdh=labPat.getKsdh(); - ksdh=commonUtil.getComDictNameById("DP",ksdh); - if(ksdh.contains("检验科"))lb_wjz=false; + String brxm = labPat.getBrxm(); + if (brxm.contains("质控") || brxm.contains("复查") || brxm.contains("QC") || brxm.contains("qc") || brxm.contains("软化水") || brxm.contains("锅炉水")) { + lb_wjz = false; + } + ; + String brly = labPat.getBrly(); + brly = commonUtil.getComDictNameById("PT", brly); + if (brly.contains("质控")) lb_wjz = false; + String ksdh = labPat.getKsdh(); + ksdh = commonUtil.getComDictNameById("DP", ksdh); + if (ksdh.contains("检验科")) lb_wjz = false; //同步主表危急值标识 - String alarmflag=labPat.getAlarmflag(); - if(("1".equals(alarmflag) && !lb_wjz)){ + String alarmflag = labPat.getAlarmflag(); + if (("1".equals(alarmflag) && !lb_wjz)) { labPat.setAlarmflag("1"); commonUtil.updateLabPat(labPat); - }else if(("".equals(alarmflag)||alarmflag==null) && lb_wjz){ + } else if (("".equals(alarmflag) || alarmflag == null) && lb_wjz) { labPat.setAlarmflag(""); commonUtil.updateLabPat(labPat); } } - return 0; + return 0; } /** * 明细结果计算参考值异常标志危急值标志并更新 + * * @param labPat * @param labResult * @return */ - private int setrefs(LabPat labPat,LabResult labResult){ - String yq=labPat.getYq(); - String resultflag="M",wjzflag=""; - int wjz=0; - String xmdh=labResult.getXmdh(); - String csjg=labResult.getCsjg(); + private int setrefs(LabPat labPat, LabResult labResult) { + String yq = labPat.getYq(); + String resultflag = "M", wjzflag = ""; + int wjz = 0; + String xmdh = labResult.getXmdh(); + String csjg = labResult.getCsjg(); if (csjg == null || csjg.trim().isEmpty()) return 0; - String csjgnew=LisUtil.getOverNumber(csjg.trim()); - boolean lb_nummode=LisUtil.isNumber(csjgnew); + String csjgnew = LisUtil.getOverNumber(csjg.trim()); + boolean lb_nummode = LisUtil.isNumber(csjgnew); //当结果为数值时计算上下限 - if(lb_nummode) { + if (lb_nummode) { XmInfo xmInfo = commonUtil.getXmInfo(yq, xmdh); String dw = xmInfo.getDw(); String refs = xmInfo.getDyckz(); Double ckxx = xmInfo.getCkxx(); Double cksx = xmInfo.getCksx(); - Double llimit=xmInfo.getLlimit(); - Double hlimit=xmInfo.getHlimit(); + Double llimit = xmInfo.getLlimit(); + Double hlimit = xmInfo.getHlimit(); String ygxb = xmInfo.getYgxb(); String ygnl = xmInfo.getYgnl(); String ygbb = xmInfo.getYgbb(); @@ -498,42 +639,43 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { map.put("slzq", slzq); xmRef = commonUtil.getXmRefValue(map); } - 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; + 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; } - if(lb_nummode){ + if (lb_nummode) { //数值型结果判断 Double csjgnum = Double.valueOf(csjgnew); - if(ckxx != null)if(csjgnumcksx)resultflag="H"; - int wjzf=alarmcondition(labPat,labResult); - if(wjzf==-1) { - if(llimit != null)if(csjgnumhlimit)wjzflag="H"; - }else if(wjzf==1) { - wjzflag=resultflag; + if (ckxx != null) if (csjgnum < ckxx) resultflag = "L"; + if (cksx != null) if (csjgnum > cksx) resultflag = "H"; + int wjzf = alarmcondition(labPat, labResult); + if (wjzf == -1) { + if (llimit != null) if (csjgnum < llimit) wjzflag = "L"; + if (hlimit != null) if (csjgnum > hlimit) wjzflag = "H"; + } else if (wjzf == 1) { + wjzflag = resultflag; } - if(!"".equals(wjzflag))wjz=1; - }else{ + if (!"".equals(wjzflag)) wjz = 1; + } 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("J".equals(lmtflag))wjzflag = "H"; + 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 ("J".equals(lmtflag)) wjzflag = "H"; } - int wjzf=alarmcondition(labPat,labResult); - if(wjzf==1) wjzflag="H";//满足特定危机值条件 - if(wjzf==0) wjzflag="";//存在特定危机值条件,但不满足不提示 + int wjzf = alarmcondition(labPat, labResult); + if (wjzf == 1) wjzflag = "H";//满足特定危机值条件 + if (wjzf == 0) wjzflag = "";//存在特定危机值条件,但不满足不提示 //小数保留位数计算 - Integer xsws= xmInfo.getXsws(); - if(xsws>=0) csjg=LisUtil.round(csjg,xsws); + Integer xsws = xmInfo.getXsws(); + if (xsws >= 0) csjg = LisUtil.round(csjg, xsws); labResult.setCsjg(csjg); labResult.setDw(dw); labResult.setRefs(refs); @@ -543,99 +685,102 @@ public class LisWorkOperServiceImpl implements LisWorkOperService { commonUtil.updateLabResult(labResult); } - if(!"".equals(wjzflag))wjz=1; + if (!"".equals(wjzflag)) wjz = 1; return wjz; } + /** - *特定条件危急值判断 + * 特定条件危急值判断 + * * @param labPat * @param labResult * @return */ - private int alarmcondition(LabPat labPat,LabResult labResult){ - boolean lb_fcb=false,lb_hasval=false; - String csjg=labResult.getCsjg(); + private int alarmcondition(LabPat labPat, LabResult labResult) { + boolean lb_fcb = false, lb_hasval = false; + String csjg = labResult.getCsjg(); if (csjg == null || csjg.trim().isEmpty()) return -1; - String yq=labPat.getYq(); - String xmdh=labResult.getXmdh(); - List getXmAlarmdetail=commonUtil.getXmAlarmdetail(yq,xmdh); - if(getXmAlarmdetail==null)return -1; - String brxm=""; - String brdh=""; - String ksdh=labPat.getKsdh(); - String ksdh1=commonUtil.getComDictIdByName("BT",ksdh); - if (ksdh1 != null && !ksdh1.trim().isEmpty()) ksdh=ksdh1; - String ybzt=labPat.getYbzt(); - 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; + String yq = labPat.getYq(); + String xmdh = labResult.getXmdh(); + List getXmAlarmdetail = commonUtil.getXmAlarmdetail(yq, xmdh); + if (getXmAlarmdetail == null) return -1; + String brxm = ""; + String brdh = ""; + String ksdh = labPat.getKsdh(); + String ksdh1 = commonUtil.getComDictIdByName("BT", ksdh); + if (ksdh1 != null && !ksdh1.trim().isEmpty()) ksdh = ksdh1; + String ybzt = labPat.getYbzt(); + 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 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(); + 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; + 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]"); + 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("ZB", "1"); variables.put("DEPT", ksdh); variables.put("DIAG", zd); variables.put("YBZT", ybzt); - samplecondition="if((" + samplecondition + ") ,1,0)"; - String result=CalcUtils.getValueFromCalc(samplecondition,variables); - if("1".equals( result)){ - if(lb_fcb)return 0; - lb_hasval=true; + samplecondition = "if((" + samplecondition + ") ,1,0)"; + String result = CalcUtils.getValueFromCalc(samplecondition, variables); + if ("1".equals(result)) { + if (lb_fcb) return 0; + lb_hasval = true; String resultcondition = xmAlarmdetail.getResultcondition(); - resultcondition=resultcondition.replace("[结果]", "[RESULT]"); + resultcondition = resultcondition.replace("[结果]", "[RESULT]"); Map variables1 = new HashMap<>(); variables1.put("RESULT", csjg); - resultcondition="if((" + resultcondition + ") ,1,0)"; - String result1=CalcUtils.getValueFromCalc(resultcondition,variables1); - if("1".equals( result1))return 1; + resultcondition = "if((" + resultcondition + ") ,1,0)"; + String result1 = CalcUtils.getValueFromCalc(resultcondition, variables1); + if ("1".equals(result1)) return 1; } } - if( lb_hasval)return 0; + if (lb_hasval) return 0; else return -1; } /** * 获取常用取值结果标志 + * * @param yq * @param xmdh * @param csjg * @return */ - public String getitemlmtflag(String yq,String xmdh,String csjg){ - String jgbz=""; + public String getitemlmtflag(String yq, String xmdh, String csjg) { + String jgbz = ""; if (csjg == null || csjg.isEmpty()) { return ""; } - String csjg1="",csjg2=""; + 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); + csjg1 = matcher.group(1); } int index = csjg.indexOf(","); - if(index == -1)csjg2= StringUtils.substring(csjg,index+1); - jgbz=commonUtil.getXmRefJgbz(yq,xmdh,csjg,csjg1,csjg2); + if (index == -1) csjg2 = StringUtils.substring(csjg, index + 1); + jgbz = commonUtil.getXmRefJgbz(yq, xmdh, csjg, csjg1, csjg2); if (jgbz == null) { return ""; } diff --git a/liswork/src/main/resources/mapper/LisWorkOperMapper.xml b/liswork/src/main/resources/mapper/LisWorkOperMapper.xml index ea64c8f..c5bd294 100644 --- a/liswork/src/main/resources/mapper/LisWorkOperMapper.xml +++ b/liswork/src/main/resources/mapper/LisWorkOperMapper.xml @@ -4,15 +4,30 @@ - + select count(1) from lab_result a join xm_info on a.yq=xm_info.yq and a.xmdh=xm_info.xmdh and xm_info.jsxm != 'Y' AND xm_info.dylx='1' + where a.xmdh not in (select b.xmdh from xm_reqitem_vs_reportitem b ,lab_reqdetail c where b.sqxmdh=c.sqxmdh and b.yq=a.yq and c.sqh=#{sqh}) + and a.yq=#{yq} and a.ybh=#{ybh} and a.jyrq=#{jyrq} AND a.xmdh NOT LIKE 'GLU%' + + + + + update lab_result set sqxmdh=#{sqxmdh} where yq=#{yq} and jyrq=#{jyrq} and ybh=#{ybh};