瀏覽代碼

Merge remote-tracking branch 'origin/dev/KLBstand' into dev/KLBstand

zhoutg 6 年之前
父節點
當前提交
2abb426071

+ 0 - 1
aipt-service/src/main/java/com/diagbot/dto/PushDTO.java

@@ -21,7 +21,6 @@ public class PushDTO {
     private List<ConceptPushDTO> lab;
     private List<ConceptPushDTO> pacs;
     private Map<String, List<ConceptPushDTO>> dis;
-    private Map<String, Object> treat;
     private String deptName;
     //private List<MedicalIndicationDTO> medicalIndications;
     //private List<EvaluationModuleMappingDTO> evaluationModule;

+ 21 - 22
aipt-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -53,44 +53,43 @@ public class ConceptFacade extends ConceptServiceImpl {
     }
 
     /**
-     * 根据名称和词性获取概念Map
+     * 根据概念Id列表获取概念列表Map
      *
      * @param conceptSearchVO 搜索参数
-     * @return 术语和术语id Map
+     * @return 术语id和术语 Map
      */
-    public Map<String, Long> getConceptMap(ConceptSearchVO conceptSearchVO) {
+    public Map<Long, String> getConceptMap(ConceptSearchVO conceptSearchVO) {
         //入参验证
-        if (ListUtil.isEmpty(conceptSearchVO.getNameList())) {
+        if (ListUtil.isEmpty(conceptSearchVO.getConceptIds())) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "术语列表不能为空");
         }
 
-        if (IntegerUtil.isNull(conceptSearchVO.getType())) {
-            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "类型不能为空");
-        }
-
-        List<Integer> inputTyps = new ArrayList<>();
-        inputTyps.add(ConceptTypeEnum.Symptom.getKey());
-        inputTyps.add(ConceptTypeEnum.Vital.getKey());
-        inputTyps.add(ConceptTypeEnum.Lis.getKey());
-        inputTyps.add(ConceptTypeEnum.Pacs.getKey());
-        inputTyps.add(ConceptTypeEnum.Disease.getKey());
-
-        if (!inputTyps.contains(conceptSearchVO.getType())) {
-            throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "类型超出范围");
-        }
         //获取结构
         List<Concept> concepts
-                = this.getListByNamesAndType(conceptSearchVO.getNameList(),
-                ParamConvertUtil.conceptConvert2Lib(conceptSearchVO.getType()));
+                = this.getListByIds(conceptSearchVO.getConceptIds());
 
         //出参封装
-        Map<String, Long> map = new HashMap<>();
+        Map<Long, String> map = new HashMap<>();
         if (ListUtil.isNotEmpty(concepts)) {
-            map = concepts.stream().collect(Collectors.toMap(r -> r.getLibName(), r -> r.getId()));
+            map = concepts.stream().collect(Collectors.toMap(r -> r.getId(), r -> r.getLibName()));
         }
         return map;
     }
 
+    /**
+     * 根据概念Id列表获取概念列表
+     *
+     * @param ids
+     * @return
+     */
+    public List<Concept> getListByIds(List<Long> ids) {
+        QueryWrapper<Concept> conceptQueryWrapper = new QueryWrapper<>();
+        conceptQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("id", ids);
+        List<Concept> list = this.list(conceptQueryWrapper);
+        return list;
+    }
+
     /**
      * 根据名称和词性获取概念列表
      *

+ 2 - 1
aipt-service/src/main/java/com/diagbot/facade/PushFacade.java

@@ -53,7 +53,7 @@ public class PushFacade {
      * @param searchVo
      * @return ResponseData
      */
-    public void pushInner(SearchVo searchVo) {
+    public PushDTO pushInner(SearchVo searchVo) {
         PushDTO pushDTO = new PushDTO();
         ResponseData data = clinicalFacade.processClinicalData(searchVo);
 
@@ -172,6 +172,7 @@ public class PushFacade {
                 pushDTO.setDis(disMapDTO);
             }
         }
+        return pushDTO;
     }
 
     /**

+ 2 - 6
aipt-service/src/main/java/com/diagbot/vo/ConceptSearchVO.java

@@ -3,8 +3,6 @@ package com.diagbot.vo;
 import lombok.Getter;
 import lombok.Setter;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 import java.util.List;
 
 /**
@@ -15,8 +13,6 @@ import java.util.List;
 @Getter
 @Setter
 public class ConceptSearchVO {
-    //术语列表
-    private List<String> nameList;
-    //类型
-    private Integer type;
+    //术语Id列表
+    private List<Long> conceptIds;
 }

+ 4 - 5
aipt-service/src/main/java/com/diagbot/web/ConceptController.java

@@ -48,14 +48,13 @@ public class ConceptController {
     }
 
     /**
-     * 根据名称和词性获取概念Map
+     * 根据概念Id列表获取概念列表Map
      *
      * @param conceptSearchVO 搜索参数
-     * @return 术语和术语id Map
+     * @return 术语id和术语 Map
      */
-    @ApiOperation(value = "知识库标准化-根据名称和词性获取概念列表[by:gaodm]",
-            notes = "nameList: 术语列表<br>" +
-                    "type:类型(1:症状 4:查体,5:化验 6:辅检 7:诊断),必填<br>")
+    @ApiOperation(value = "知识库标准化-根据概念Id列表获取概念列表Map[by:gaodm]",
+            notes = "conceptIds: 术语Id列表")
     @PostMapping("/getConceptMap")
     @SysLogger("getConceptMap")
     public RespDTO<Map<String, Long>> getConceptMap(@RequestBody ConceptSearchVO conceptSearchVO){

+ 56 - 6
aipt-service/src/main/java/com/diagbot/web/PushController.java

@@ -1,10 +1,9 @@
 package com.diagbot.web;
 
 import com.diagbot.annotation.SysLogger;
-import com.diagbot.client.bean.ResponseData;
+import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.PushFacade;
-import com.diagbot.facade.TreatmentFacade;
 import com.diagbot.vo.SearchVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -18,23 +17,74 @@ import javax.validation.Valid;
 import java.util.Map;
 
 /**
- * @Description:
+ * @Description:推理
  * @Author:zhaops
  * @time: 2019/5/9 15:10
  */
 @RestController
 @RequestMapping("/push")
-@Api(value = "治疗方案API", tags = { "治疗方案API" })
+@Api(value = "推理相关API", tags = { "推理相关API" })
 @SuppressWarnings("unchecked")
 public class PushController {
     @Autowired
     private PushFacade pushFacade;
 
-    @ApiOperation(value = "临床数据处理", notes = "")
+    @ApiOperation(value = "治疗方案[by:zhaops]",
+            notes = "age: 年龄(必填)<br>" +
+                    "sex:性别(必填),M:男,F:女<br>" +
+                    "symptom:症状,String<br>" +
+                    "other:其它史,String<br>" +
+                    "vital:查体,String<br>" +
+                    "lis:化验,Array<br>" +
+                    "lis:name:套餐名称(必填),String<br>" +
+                    "lis:detailName:化验项名称(必填),String<br>" +
+                    "lis:uniqueName:公表名称,String<br>" +
+                    "lis:value:值,Double<br>" +
+                    "lis:maxValue:最大值,Double<br>" +
+                    "lis:minValue:最小值,Double<br>" +
+                    "lis:units:单位,String<br>" +
+                    "lis:otherValue:其他结果,包括阴性阳性,文字描述等,String<br>" +
+                    "lis:source:数据来源(必填),Integer<br>" +
+                    "pacs:辅检,String<br>" +
+                    "diag:诊断,String<br>" +
+                    "featureType:类型(必填),8:治疗方案,String<br>" +
+                    "diseaeName:取治疗方案的诊断,String<br>" +
+                    "disType:诊断类型,1-慢病,2-急诊,普通病不填,Integer<br>" +
+                    "indications:指标结果,String<br>" +
+                    "adverseReactions:不良反应,List<不良反应明细><br>")
     @PostMapping("/treatment")
     @SysLogger("treatment")
-    public RespDTO<ResponseData> processData(@Valid @RequestBody SearchVo searchVo) {
+    public RespDTO<Map<String, Object>> getTreatment(@Valid @RequestBody SearchVo searchVo) {
         Map<String, Object> data = pushFacade.getTreatment((searchVo));
         return RespDTO.onSuc(data);
     }
+
+    @ApiOperation(value = "推理接口[by:zhaops]",
+            notes = "age: 年龄(必填)<br>" +
+                    "sex:性别(必填),M:男,F:女<br>" +
+                    "symptom:症状,String<br>" +
+                    "other:其它史,String<br>" +
+                    "vital:查体,String<br>" +
+                    "lis:化验,Array<br>" +
+                    "lis:name:套餐名称(必填),String<br>" +
+                    "lis:detailName:化验项名称(必填),String<br>" +
+                    "lis:uniqueName:公表名称,String<br>" +
+                    "lis:value:值,Double<br>" +
+                    "lis:maxValue:最大值,Double<br>" +
+                    "lis:minValue:最小值,Double<br>" +
+                    "lis:units:单位,String<br>" +
+                    "lis:otherValue:其他结果,包括阴性阳性,文字描述等,String<br>" +
+                    "lis:source:数据来源(必填),Integer<br>" +
+                    "pacs:辅检,String<br>" +
+                    "diag:诊断,String<br>" +
+                    "featureType:类型(必填),1:症状,3:其他史,4:查体,5:化验,6:辅检,7:诊断,22-指标,String<br>" +
+                    "disType:诊断类型,1-慢病,2-急诊,普通病不填,Integer<br>" +
+                    "indications:指标结果,String<br>" +
+                    "adverseReactions:不良反应,List<不良反应明细><br>")
+    @PostMapping("/pushInner")
+    @SysLogger("pushInner")
+    public RespDTO<PushDTO> pushInner(@Valid @RequestBody SearchVo searchVo) {
+        PushDTO data = pushFacade.pushInner(searchVo);
+        return RespDTO.onSuc(data);
+    }
 }

+ 13 - 3
icss-service/src/main/java/com/diagbot/client/AiptServiceClient.java

@@ -16,6 +16,7 @@ import com.diagbot.dto.DiseaseIcdDTO;
 import com.diagbot.dto.EvaluationDTO;
 import com.diagbot.dto.GetTopPatientInfoDTO;
 import com.diagbot.dto.IndexConfigDTO;
+import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.ScaleContent;
 import com.diagbot.vo.ConceptIntroduceVO;
@@ -113,13 +114,13 @@ public interface AiptServiceClient {
     public RespDTO<List<IndexConfigDTO>> getindexConfigs(@RequestBody IndexConfigdiseaseNameVO indexConfigdiseaseNameVO);
 
     /**
-     * 根据名称和词性获取概念Map
+     * 根据概念Id列表获取概念列表Map
      *
      * @param conceptSearchVO 搜索参数
-     * @return 术语和术语id Map
+     * @return 术语id和术语 Map
      */
     @PostMapping("/concept/getConceptMap")
-    RespDTO<Map<String, Long>> getConceptMap(@RequestBody ConceptSearchVO conceptSearchVO);
+    RespDTO<Map<Long, String>> getConceptMap(@RequestBody ConceptSearchVO conceptSearchVO);
 
     /**
      * 获取治疗方案
@@ -130,6 +131,15 @@ public interface AiptServiceClient {
     @PostMapping("/push/treatment")
     RespDTO<Map<String, Object>> getTreatment(@RequestBody SearchData searchData);
 
+    /**
+     * 推理
+     *
+     * @param searchData
+     * @return
+     */
+    @PostMapping("/push/pushInner")
+    RespDTO<PushDTO> pushInner(@RequestBody SearchData searchData);
+
     /**
      * 是否有提示信息
      *

+ 17 - 3
icss-service/src/main/java/com/diagbot/client/hystrix/AiptServiceHystrix.java

@@ -16,6 +16,7 @@ import com.diagbot.dto.DiseaseIcdDTO;
 import com.diagbot.dto.EvaluationDTO;
 import com.diagbot.dto.GetTopPatientInfoDTO;
 import com.diagbot.dto.IndexConfigDTO;
+import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.ScaleContent;
 import com.diagbot.vo.ConceptIntroduceVO;
@@ -29,6 +30,7 @@ import com.diagbot.vo.GetTopPatientInfoVO;
 import com.diagbot.vo.IndexConfigdiseaseNameVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
@@ -141,13 +143,13 @@ public class AiptServiceHystrix implements AiptServiceClient {
     }
 
     /**
-     * 根据名称和词性获取概念Map
+     * 根据概念Id列表获取概念列表Map
      *
      * @param conceptSearchVO 搜索参数
-     * @return 术语和术语id Map
+     * @return 术语id和术语 Map
      */
     @Override
-    public RespDTO<Map<String, Long>> getConceptMap(@RequestBody ConceptSearchVO conceptSearchVO) {
+    public RespDTO<Map<Long, String>> getConceptMap(@RequestBody ConceptSearchVO conceptSearchVO) {
         log.error("【hystrix】调用{}异常", "getConceptMap");
         return null;
     }
@@ -164,6 +166,18 @@ public class AiptServiceHystrix implements AiptServiceClient {
         return null;
     }
 
+    /**
+     * 推理
+     *
+     * @param searchData
+     * @return
+     */
+    @Override
+    public RespDTO<PushDTO> pushInner(@RequestBody SearchData searchData) {
+        log.error("【hystrix】调用{}异常", "pushInner");
+        return null;
+    }
+
     /**
      * 是否有提示信息
      *

+ 2 - 4
icss-service/src/main/java/com/diagbot/vo/ConceptSearchVO.java

@@ -13,8 +13,6 @@ import java.util.List;
 @Getter
 @Setter
 public class ConceptSearchVO {
-    //术语列表
-    private List<String> nameList;
-    //类型
-    private Integer type;
+    //术语Id列表
+    private List<Long> conceptIds;
 }