فهرست منبع

Merge remote-tracking branch 'origin/develop' into dev/mapping_20210824

# Conflicts:
#	src/main/java/com/diagbot/web/MappingConfigController.java
zhaops 3 سال پیش
والد
کامیت
90987895a5

+ 1 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -46,6 +46,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/tran/mappingConfig/exportExcelModule").permitAll()
                 .antMatchers("/tran/mappingConfig/dataVerify").permitAll()
                 .antMatchers("/tran/mappingConfig/precDataMatch").permitAll()
+                .antMatchers("/tran/mappingConfig/precData").permitAll()
                 .antMatchers("/tran/mappingConfig/precDataMatch_remote").permitAll()
                 .antMatchers("/tran/mappingConfig/importExcelDataVerify").permitAll()
                 .antMatchers("/tran/mappingConfig/importExcel").permitAll()

+ 1 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -89,6 +89,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/tran/mappingConfig/exportExcelModule", request)
                 || matchers("/tran/mappingConfig/dataVerify", request)
                 || matchers("/tran/mappingConfig/precDataMatch", request)
+                || matchers("/tran/mappingConfig/precData", request)
                 || matchers("/tran/mappingConfig/precDataMatch_remote", request)
                 || matchers("/tran/mappingConfig/importExcelDataVerify", request)
                 || matchers("/tran/mappingConfig/importExcel", request)

+ 2 - 4
src/main/java/com/diagbot/facade/AssembleFacade.java

@@ -7,15 +7,13 @@ import com.diagbot.entity.HospitalInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.util.AgeUtil;
 import com.diagbot.util.BeanUtil;
-import com.diagbot.util.CoreUtil;
-import com.diagbot.util.ListUtil;
 import com.diagbot.vo.SearchData;
 import com.google.common.collect.Lists;
 import io.github.lvyahui8.spring.facade.DataFacade;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -37,7 +35,7 @@ public class AssembleFacade {
      * @return
      */
     public SearchData assembleData(SearchData searchData) {
-        searchData.setAgeNum(CoreUtil.convertAge(searchData.getAge()));
+        searchData.setAgeNum(AgeUtil.convertAge(searchData.getAge()));
         HospitalInfo hospitalInfo = hospitalInfoFacade.getById(searchData.getHospitalId());
         Integer isConnect = 0;
         if (hospitalInfo != null && hospitalInfo.getIsDeleted().equals(IsDeleteEnum.N.getKey())) {

+ 16 - 0
src/main/java/com/diagbot/facade/MappingConfigFacade.java

@@ -46,6 +46,7 @@ import com.diagbot.vo.IndexByApprovalVO;
 import com.diagbot.vo.KllisDetailVO;
 import com.diagbot.vo.MappingConfigPageVO;
 import com.diagbot.vo.MappingConfigVO;
+import com.diagbot.vo.PrecDataVO;
 import com.diagbot.vo.RetrievalVO;
 import com.google.common.collect.Lists;
 import org.apache.commons.lang.StringUtils;
@@ -412,6 +413,21 @@ public class MappingConfigFacade extends MappingConfigServiceImpl {
         return retList;
     }
 
+    /**
+     * 预匹配(非文件匹配)
+     *
+     * @param precDataVO
+     * @return
+     */
+    public List<MappingConfigWrapper> precData(PrecDataVO precDataVO) {
+        if (ListUtil.isEmpty(precDataVO.getOriginList())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "请确认术语列表不为空");
+        }
+        List<MappingConfigWrapper> originList = BeanUtil.listCopyTo(precDataVO.getOriginList(), MappingConfigWrapper.class);
+        List<MappingConfigWrapper> data = precDataProcess(originList, precDataVO.getType());
+        return data;
+    }
+
     /**
      * 预匹配数据处理
      *

+ 2 - 2
src/main/java/com/diagbot/facade/MrqcFacade.java

@@ -3,7 +3,7 @@ package com.diagbot.facade;
 import com.diagbot.client.MrqcClient;
 import com.diagbot.dto.AnalyzeRunDTO;
 import com.diagbot.dto.RespDTO;
-import com.diagbot.util.CoreUtil;
+import com.diagbot.util.AgeUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.vo.AnalyzeCdsVO;
 import com.diagbot.vo.AnalyzeRunVO;
@@ -31,7 +31,7 @@ public class MrqcFacade {
     }
 
     public Map<String, String> caseWritingPrompt(AnalyzeCdsVO analyzeCdsVO) {
-        analyzeCdsVO.setAgeNum(CoreUtil.convertAge(analyzeCdsVO.getAge()));
+        analyzeCdsVO.setAgeNum(AgeUtil.convertAge(analyzeCdsVO.getAge()));
         RespDTO<Map<String, String>> caseWritingDTO = mrqcClient.caseWritingPrompt(analyzeCdsVO);
         RespDTOUtil.respNGDealCover(caseWritingDTO, "远程调用病历质控接口失败");
         return caseWritingDTO.data;

+ 0 - 131
src/main/java/com/diagbot/util/CoreUtil.java

@@ -1,131 +0,0 @@
-package com.diagbot.util;
-
-import lombok.extern.slf4j.Slf4j;
-import java.math.BigDecimal;
-
-/**
- * @description:
- * @author: zhoutg
- * @time: 2020/7/30 15:18
- */
-@Slf4j
-public class CoreUtil {
-
-    /**
-     * 年龄字符串转换成double类型
-     *
-     * @param ageStr
-     * @return
-     */
-    public static Double convertAge(String ageStr) {
-        try {
-            // 防止程序出错
-            if (StringUtil.isEmpty(ageStr)) {
-                return 20.0;
-            }
-            // 数值,当成年龄处理
-            if (isNumbers(ageStr)) {
-                return Double.parseDouble(ageStr);
-            }
-            // 20日
-            if (ageStr.endsWith("日")) {
-                return getHalfUp((Double.parseDouble(ageStr.substring(0, ageStr.length() - 1))) / 365);
-            }
-            // 3岁
-            if (ageStr.endsWith("岁")) {
-                return Double.parseDouble(ageStr.substring(0, ageStr.length() - 1));
-            }
-            // 3岁7个月 | 3岁7月
-            if (ageSuiYue(ageStr)) {
-                String[] ageArr = new String[2];
-                int indexSui = ageStr.indexOf("岁");
-                ageArr[0] = ageStr.substring(0, indexSui);
-                if (ageStr.indexOf("个月") > -1) { // 3岁7个月
-                    ageArr[1] = ageStr.substring(indexSui + 1,ageStr.indexOf("个月"));
-                } else { // 3岁7月
-                    ageArr[1] = ageStr.substring(indexSui + 1,ageStr.indexOf("月"));
-                }
-                return Double.parseDouble(ageArr[0]) + getHalfUp(Double.parseDouble(ageArr[1]) / 12);
-            }
-            // 1.08月 | .11月 | 3月
-            if (ageYue(ageStr)) {
-                String noUnit = ageStr.substring(0, ageStr.length() - 1);
-                String[] ageArr = new String[2];
-                String[] splitArr = noUnit.split("\\.");
-                if (splitArr.length == 1) {
-                    ageArr[0] = splitArr[0];
-                } else if (splitArr.length == 2) {
-                    ageArr[0] = splitArr[0];
-                    ageArr[1] = splitArr[1];
-                }
-                Double daySum = 0.0D;
-                if (StringUtil.isNotBlank(ageArr[0])) {
-                    daySum += Double.parseDouble(ageArr[0]) * 30;
-                }
-                if (StringUtil.isNotBlank(ageArr[1])) {
-                    daySum += Double.parseDouble(ageArr[1]);
-                }
-                return getHalfUp(daySum / 365);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            return 20.0;
-        }
-        return 20.0;
-    }
-
-    /**
-     * 判断字符串是否 仅 包含数字
-     *
-     * @param str
-     * @return
-     */
-    public static boolean numbersOnly(String str) {
-        String regex = "^[0-9]+$";
-        return str.matches(regex);
-    }
-
-    /**
-     * 判断字符串是否数值(正)
-     *
-     * @param str
-     * @return
-     */
-    public static boolean isNumbers(String str) {
-        String regex = "[0-9]+|([0-9]+\\.)+[0-9]*|[0-9]*(\\.[0-9]+)+";
-        return str.matches(regex);
-    }
-
-    /**
-     * 判断年龄字符串:xx月
-     *
-     * @param str
-     * @return
-     */
-    public static boolean ageYue(String str) {
-        String regex = "^[0-9]*[\\.]*[0-9]{1,2}月$";
-        return str.matches(regex);
-    }
-
-    /**
-     * 判断年龄字符串:3岁7个月
-     *
-     * @param str
-     * @return
-     */
-    public static boolean ageSuiYue(String str) {
-        String regex = "^[0-9]{1,3}岁[0-9]{1,2}个{0,1}月$";
-        return str.matches(regex);
-    }
-
-    /**
-     * 四舍五入保留2位小数
-     *
-     * @param ageStr
-     * @return
-     */
-    public static Double getHalfUp(Double ageStr) {
-        BigDecimal bg = new BigDecimal(String.valueOf(ageStr));
-        return bg.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
-    }
-}

+ 19 - 0
src/main/java/com/diagbot/vo/PrecDataVO.java

@@ -0,0 +1,19 @@
+package com.diagbot.vo;
+
+import com.diagbot.entity.wrapper.MappingConfigWrapper;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/9/15 11:38
+ */
+@Data
+public class PrecDataVO {
+    private List<PrecRecordVO> originList;
+    @NotNull(message = "请输入术语类型:1-化验、3-辅检、4-诊断、5-药品、6-手术和操作、7-科室、8-输血、10-量表、11-护理、12-中医诊断、13-中医证候、14-麻醉 ")
+    private Integer type;
+}

+ 35 - 0
src/main/java/com/diagbot/vo/PrecRecordVO.java

@@ -0,0 +1,35 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/9/15 13:15
+ */
+@Data
+public class PrecRecordVO {
+    /**
+     * 医院术语名称
+     */
+    private String hisName;
+
+    /**
+     * 医院术语编码
+     */
+    private String hisCode;
+
+    /**
+     * 医院术语细项名称(检验细项)
+     */
+    private String hisDetailName;
+
+    /**
+     * 手术编码、诊断编码、中医疾病编码、中医证候编码
+     */
+    private String code;
+    /**
+     * 药品国药准字
+     */
+    private String approval;
+}

+ 10 - 0
src/main/java/com/diagbot/vo/PushJoinVO.java

@@ -3,11 +3,13 @@ package com.diagbot.vo;
 import com.diagbot.biz.push.entity.Item;
 import com.diagbot.biz.push.entity.Lis;
 import com.diagbot.biz.push.entity.Pacs;
+import com.diagbot.biz.push.entity.Scale;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotNull;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -185,6 +187,14 @@ public class PushJoinVO {
      * 其他指标
      */
     private Map<String, String> otherIndex;
+    /**
+     * 其他医嘱
+     */
+    private List<Item> otherAdvice = new ArrayList<>();
+    /**
+     * 量表结果
+     */
+    private List<Scale> scale = new ArrayList<>();
 
     //创建时间
     @ApiModelProperty(hidden = true)

+ 10 - 0
src/main/java/com/diagbot/vo/SearchData.java

@@ -3,6 +3,7 @@ package com.diagbot.vo;
 import com.diagbot.biz.push.entity.Item;
 import com.diagbot.biz.push.entity.Lis;
 import com.diagbot.biz.push.entity.Pacs;
+import com.diagbot.biz.push.entity.Scale;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
@@ -176,4 +177,13 @@ public class SearchData extends HospitalBaseVO {
      * 其他指标
      */
     private Map<String, String> otherIndex;
+    /**
+     * 其他医嘱
+     */
+    private List<Item> otherAdvice = new ArrayList<>();
+    /**
+     * 量表结果
+     */
+    private List<Scale> scale = new ArrayList<>();
+
 }

+ 14 - 0
src/main/java/com/diagbot/web/MappingConfigController.java

@@ -12,6 +12,7 @@ import com.diagbot.vo.IdListVO;
 import com.diagbot.vo.IdVO;
 import com.diagbot.vo.MappingConfigPageVO;
 import com.diagbot.vo.MappingConfigVO;
+import com.diagbot.vo.PrecDataVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -83,6 +84,19 @@ public class MappingConfigController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "预匹配(非文件匹配)[by:zhaops]",
+            notes = "type(必填): 类型:1-化验、3-辅检、4-诊断、5-药品、6-手术和操作、7-科室、8-输血、10-量表、11-护理、12-中医诊断、13-中医证候、14-麻醉 <br>"+
+                    "hisName(必填):医院术语名称 <br>" +
+                    "hisDetailName(选填):医院术语名称-细项 <br>" +
+                    "code(选填):诊断ICD10编码、手术编码、中医疾病编码、中医证候编码 <br>" +
+                    "approval(选填):药品国药准字 <br>" )
+    @PostMapping(value = "/precData")
+    @SysLogger("precData")
+    public RespDTO<List<MappingConfigWrapper>> precData(@Valid @RequestBody PrecDataVO precDataVO) {
+        List<MappingConfigWrapper> data = mappingConfigFacade.precData(precDataVO);
+        return RespDTO.onSuc(data);
+    }
+
     @ApiOperation(value = "数据导入校验[by:zhaops]",
             notes = "file(必填):导入文件 <br>" +
                     "hospitalId(必填):医院id <br>" +