Browse Source

量表规则

zhoutg 4 years ago
parent
commit
793dee904c

+ 1 - 1
src/main/java/com/diagbot/dto/RegulationDTO.java

@@ -11,6 +11,6 @@ import lombok.Setter;
 @Getter
 @Getter
 @Setter
 @Setter
 public class RegulationDTO {
 public class RegulationDTO {
-    private String code;
+    private Integer code;
     private Integer conditionType;
     private Integer conditionType;
 }
 }

+ 18 - 0
src/main/java/com/diagbot/dto/ScaleDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2020/8/17 11:28
+ */
+@Getter
+@Setter
+public class ScaleDTO {
+    // 编码
+    private List<String> codeList;
+}

+ 18 - 12
src/main/java/com/diagbot/facade/KlRegulationBaseFacade.java

@@ -3,10 +3,10 @@ package com.diagbot.facade;
 import com.diagbot.dto.BaseRegulationDTO;
 import com.diagbot.dto.BaseRegulationDTO;
 import com.diagbot.dto.RegulationDTO;
 import com.diagbot.dto.RegulationDTO;
 import com.diagbot.dto.RuleBaseDTO;
 import com.diagbot.dto.RuleBaseDTO;
+import com.diagbot.dto.ScaleDTO;
 import com.diagbot.dto.WordCrfDTO;
 import com.diagbot.dto.WordCrfDTO;
 import com.diagbot.enums.BaseDiagnoseTypeEnum;
 import com.diagbot.enums.BaseDiagnoseTypeEnum;
 import com.diagbot.enums.LexiconEnum;
 import com.diagbot.enums.LexiconEnum;
-import com.diagbot.enums.RedisEnum;
 import com.diagbot.model.entity.Clinical;
 import com.diagbot.model.entity.Clinical;
 import com.diagbot.rule.AgeRule;
 import com.diagbot.rule.AgeRule;
 import com.diagbot.rule.CommonRule;
 import com.diagbot.rule.CommonRule;
@@ -17,9 +17,8 @@ import com.diagbot.service.impl.KlRegulationBaseServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RedisUtil;
 import com.diagbot.util.RedisUtil;
-import com.diagbot.vo.PushVO;
 import com.diagbot.vo.RegulationVO;
 import com.diagbot.vo.RegulationVO;
-import com.google.common.collect.Lists;
+import com.diagbot.vo.ScaleVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
@@ -56,19 +55,26 @@ public class KlRegulationBaseFacade extends KlRegulationBaseServiceImpl {
     /**
     /**
      * 匹配规则
      * 匹配规则
      *
      *
-     * @param pushVO
+     * @param scaleVO
      * @return
      * @return
      */
      */
-    public List<String> process(PushVO pushVO) {
-        List<String> codeList = Lists.newArrayList();
-        // 读取所有的基础规则——已去重
-        List<BaseRegulationDTO> baseRegulationDTOList = redisUtil.get(RedisEnum.allBaseRegulation.getName());
+    public ScaleDTO process(ScaleVO scaleVO) {
+        ScaleDTO scaleDTO = new ScaleDTO();
+        if (ListUtil.isEmpty(scaleVO.getCodeList())) {
+            return scaleDTO;
+        }
+        // // 读取所有的基础规则——已去重
+        // List<BaseRegulationDTO> baseRegulationDTOList = redisUtil.get(RedisEnum.allBaseRegulation.getName());
+
+        // 筛选编码对应的规则
+        List<BaseRegulationDTO> baseRegulationDTOList = this.getSelectBase(scaleVO.getCodeList());
+
         if (ListUtil.isEmpty(baseRegulationDTOList)) {
         if (ListUtil.isEmpty(baseRegulationDTOList)) {
-            return codeList;
+            return scaleDTO;
         }
         }
 
 
         // CRF模型处理
         // CRF模型处理
-        WordCrfDTO wordCrfDTO = commonFacade.crf_process(pushVO, false);
+        WordCrfDTO wordCrfDTO = commonFacade.crf_process(scaleVO, false);
 
 
         // 同义词转换
         // 同义词转换
         commonFacade.wordStandConvert(wordCrfDTO);
         commonFacade.wordStandConvert(wordCrfDTO);
@@ -136,9 +142,9 @@ public class KlRegulationBaseFacade extends KlRegulationBaseServiceImpl {
             regulationVO.setIds(baseIdList);
             regulationVO.setIds(baseIdList);
             List<RegulationDTO> regulationDTOList = klRegulationFacade.getRegulationByIds(regulationVO);
             List<RegulationDTO> regulationDTOList = klRegulationFacade.getRegulationByIds(regulationVO);
             if (ListUtil.isNotEmpty(regulationDTOList)) {
             if (ListUtil.isNotEmpty(regulationDTOList)) {
-                codeList = regulationDTOList.stream().map(r -> r.getCode()).collect(Collectors.toList());
+                scaleDTO.setCodeList(regulationDTOList.stream().map(r -> String.valueOf(r.getCode())).collect(Collectors.toList()));
             }
             }
         }
         }
-        return codeList;
+        return scaleDTO;
     }
     }
 }
 }

+ 2 - 0
src/main/java/com/diagbot/mapper/KlRegulationBaseMapper.java

@@ -18,4 +18,6 @@ public interface KlRegulationBaseMapper extends BaseMapper<KlRegulationBase> {
 
 
     // 获取所有去重的基础规则
     // 获取所有去重的基础规则
     List<BaseRegulationDTO> getAllBase();
     List<BaseRegulationDTO> getAllBase();
+
+    List<BaseRegulationDTO> getSelectBase(List<String> codeList);
 }
 }

+ 2 - 0
src/main/java/com/diagbot/mapper/KlRegulationMapper.java

@@ -19,4 +19,6 @@ public interface KlRegulationMapper extends BaseMapper<KlRegulation> {
 
 
     //根据匹配的基础规则ID获取对应的编码
     //根据匹配的基础规则ID获取对应的编码
     List<RegulationDTO> getRegulationByIds(RegulationVO regulationVO);
     List<RegulationDTO> getRegulationByIds(RegulationVO regulationVO);
+
+    List<String> getBaseIds(List<String> codeList);
 }
 }

+ 2 - 0
src/main/java/com/diagbot/service/KlRegulationBaseService.java

@@ -18,4 +18,6 @@ public interface KlRegulationBaseService extends IService<KlRegulationBase> {
 
 
     // 获取所有去重的基础规则
     // 获取所有去重的基础规则
     List<BaseRegulationDTO> getAllBase();
     List<BaseRegulationDTO> getAllBase();
+
+    List<BaseRegulationDTO> getSelectBase(List<String> codeList);
 }
 }

+ 2 - 0
src/main/java/com/diagbot/service/KlRegulationService.java

@@ -19,4 +19,6 @@ public interface KlRegulationService extends IService<KlRegulation> {
 
 
     //根据匹配的基础规则ID获取对应的编码
     //根据匹配的基础规则ID获取对应的编码
     List<RegulationDTO> getRegulationByIds(RegulationVO regulationVO);
     List<RegulationDTO> getRegulationByIds(RegulationVO regulationVO);
+
+    List<String> getBaseIds(List<String> codeList);
 }
 }

+ 5 - 0
src/main/java/com/diagbot/service/impl/KlRegulationBaseServiceImpl.java

@@ -24,4 +24,9 @@ public class KlRegulationBaseServiceImpl extends ServiceImpl<KlRegulationBaseMap
     public List<BaseRegulationDTO> getAllBase() {
     public List<BaseRegulationDTO> getAllBase() {
         return baseMapper.getAllBase();
         return baseMapper.getAllBase();
     }
     }
+
+    @Override
+    public List<BaseRegulationDTO> getSelectBase(List<String> codeList) {
+        return baseMapper.getSelectBase(codeList);
+    }
 }
 }

+ 5 - 0
src/main/java/com/diagbot/service/impl/KlRegulationServiceImpl.java

@@ -25,4 +25,9 @@ public class KlRegulationServiceImpl extends ServiceImpl<KlRegulationMapper, KlR
     public List<RegulationDTO> getRegulationByIds(RegulationVO regulationVO) {
     public List<RegulationDTO> getRegulationByIds(RegulationVO regulationVO) {
         return baseMapper.getRegulationByIds(regulationVO);
         return baseMapper.getRegulationByIds(regulationVO);
     }
     }
+
+    @Override
+    public List<String> getBaseIds(List<String> codeList) {
+        return baseMapper.getBaseIds(codeList);
+    }
 }
 }

+ 17 - 0
src/main/java/com/diagbot/vo/ScaleVO.java

@@ -0,0 +1,17 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:量表规则入参
+ * @Author:zhoutg
+ * @time: 2020/7/29 15:34
+ */
+@Data
+public class ScaleVO extends SearchData {
+
+    // 量表规则列表
+    private List<String> codeList = new ArrayList<>();
+}

+ 7 - 8
src/main/java/com/diagbot/web/KlRegulationController.java

@@ -2,8 +2,9 @@ package com.diagbot.web;
 
 
 
 
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.ScaleDTO;
 import com.diagbot.facade.KlRegulationBaseFacade;
 import com.diagbot.facade.KlRegulationBaseFacade;
-import com.diagbot.vo.PushVO;
+import com.diagbot.vo.ScaleVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -12,8 +13,6 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
-import java.util.List;
-
 /**
 /**
  * <p>
  * <p>
  * 通用规则表 前端控制器
  * 通用规则表 前端控制器
@@ -30,10 +29,10 @@ public class KlRegulationController {
     @Autowired
     @Autowired
     KlRegulationBaseFacade klRegulationBaseFacade;
     KlRegulationBaseFacade klRegulationBaseFacade;
 
 
-    @ApiOperation(value = "测试规则[zhoutg]", notes = "")
-    @PostMapping("/test")
-    public RespDTO<List<String>> push(@RequestBody PushVO pushVo) {
-        List<String> codeList = klRegulationBaseFacade.process(pushVo);
-        return RespDTO.onSuc(codeList);
+    @ApiOperation(value = "量表规则匹配[zhoutg]", notes = "")
+    @PostMapping("/scaleRule")
+    public RespDTO<ScaleDTO> scaleRule(@RequestBody ScaleVO scaleVO) {
+        ScaleDTO scaleDTO = klRegulationBaseFacade.process(scaleVO);
+        return RespDTO.onSuc(scaleDTO);
     }
     }
 }
 }

+ 70 - 0
src/main/resources/mapper/KlRegulationBaseMapper.xml

@@ -76,4 +76,74 @@
             t1.eq_unit
             t1.eq_unit
     </select>
     </select>
 
 
+    <select id="getSelectBase" resultType="com.diagbot.dto.BaseRegulationDTO">
+        SELECT DISTINCT
+            CONCAT_WS(
+                "_",
+                t1.concept_id,
+                t1.type,
+                t1.max_operator,
+                t1.max_value,
+                t1.max_unit,
+                t1.min_operator,
+                t1.min_value,
+                t1.min_unit,
+                t1.eq_operator,
+                t1.eq_value,
+                t1.eq_unit
+            ) AS baseKey,
+            GROUP_CONCAT(t1.id) AS ids,
+            IFNULL(t2.lib_name, "") AS baseLibName,
+            IFNULL(t2.lib_type, 0) AS baseLibType,
+            t1.concept_id,
+            t1.type AS baseType,
+            t1.max_operator AS baseMaxOperator,
+            t1.max_value AS baseMaxValue,
+            t1.max_unit AS baseMaxUnit,
+            t1.min_operator AS baseMinOperator,
+            t1.min_value AS baseMinValue,
+            t1.min_unit AS baseMinUnit,
+            t1.eq_operator AS baseEqOperator,
+            t1.eq_value AS baseEqValue,
+            t1.eq_unit AS baseEqUnit
+        FROM
+            kl_regulation_base t1
+        LEFT JOIN kl_concept t2 ON t1.concept_id = t2.id
+        AND t2.is_deleted = "N"
+        AND t2.`status` = 1
+        WHERE
+            t1.is_deleted = "N"
+        AND t1.`status` = 1
+        AND t1.id in
+        (
+            SELECT
+            b.regulation_base_id
+            FROM
+            `kl_regulation` a,
+            kl_regulation_condition b
+            WHERE
+            a.id = b.regulation_id
+            <if test="codeList != null and codeList.size > 0">
+                and a.`code` in
+                <foreach item="code" collection="list" open="(" separator="," close=")">
+                    #{code}
+                </foreach>
+            </if>
+            AND a.`status` = 1
+            AND b.condition_type = 1
+        )
+        GROUP BY
+            t1.concept_id,
+            t1.type,
+            t1.max_operator,
+            t1.max_value,
+            t1.max_unit,
+            t1.min_operator,
+            t1.min_value,
+            t1.min_unit,
+            t1.eq_operator,
+            t1.eq_value,
+            t1.eq_unit
+    </select>
+
 </mapper>
 </mapper>

+ 18 - 0
src/main/resources/mapper/KlRegulationMapper.xml

@@ -97,4 +97,22 @@
         WHERE
         WHERE
         t12.groupDiff = 1
         t12.groupDiff = 1
     </select>
     </select>
+
+    <select id="getBaseIds" resultType="java.lang.String">
+        SELECT
+            b.regulation_base_id
+        FROM
+            `kl_regulation` a,
+            kl_regulation_condition b
+        WHERE
+            a.id = b.regulation_id
+        <if test="codeList != null and codeList.size > 0">
+            and a.`code` in
+            <foreach item="code" collection="array" open="(" separator="," close=")">
+                #{code}
+            </foreach>
+        </if>
+        AND a.`status` = 1
+        AND b.condition_type = 1
+    </select>
 </mapper>
 </mapper>