Browse Source

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

wangyu 6 years ago
parent
commit
a75ce31634

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

@@ -17,6 +17,6 @@ public class PushDTO {
     private Map<String, Object> vitalMap;
     private Map<String, Object> labMap;
     private Map<String, Object> pacsMap;
-    private Map<String, Object> disMap;
+    private Map<String,Map<String, Object>> disMap;
 
 }

+ 49 - 0
icss-service/src/main/java/com/diagbot/enums/InputModeEnum.java

@@ -0,0 +1,49 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description:输入模式
+ * @Author:zhaops
+ * @time: 2018/12/4 10:44
+ */
+public enum InputModeEnum implements KeyedNamed {
+    Structured(1, "结构化"),
+    Text(2, "文本");
+
+    @Setter
+    private Integer key;
+
+    @Setter
+    private String name;
+
+    InputModeEnum(Integer key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static InputModeEnum getEnum(Integer key) {
+        for (InputModeEnum item : InputModeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(Integer key) {
+        InputModeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 66 - 52
icss-service/src/main/java/com/diagbot/facade/PushFacade.java

@@ -13,6 +13,7 @@ import com.diagbot.entity.DeptInfo;
 import com.diagbot.entity.DeptVital;
 import com.diagbot.entity.QuestionInfo;
 import com.diagbot.entity.VitalOrder;
+import com.diagbot.enums.InputModeEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.QuantitativeTypeEnum;
 import com.diagbot.enums.QuestionTypeEnum;
@@ -90,12 +91,12 @@ public class PushFacade {
     }
 
     /**
-     * 内部推理
-     *
+     * 推理接口
      * @param pushVO
+     * @param mode
      * @return
      */
-    public PushDTO pushInner(PushVO pushVO) {
+    public PushDTO pushInner(PushVO pushVO, Integer mode) {
         PushDTO pushDTO = new PushDTO();
         ResponseData data = pushAI(pushVO);
 
@@ -120,24 +121,19 @@ public class PushFacade {
         if (featureTypeSet.contains(String.valueOf(QuestionTypeEnum.Pacs.getKey()))) {
             pushDTO.setPacsMap(pacsMap);
         }
-        //诊断 返回tagName+id
+        //诊断 返回tagName+标签
         if (featureTypeSet.contains(String.valueOf(QuestionTypeEnum.Disease.getKey()))) {
-            QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper();
-            questionInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
-                    in("tag_name", disMap.keySet()).
-                    eq("type", QuestionTypeEnum.Disease.getKey());
-            List<QuestionInfo> disList = questionFacade.list(questionInfoQueryWrapper);
-            disMap = getTagByMap(disMap, disList, pushVO);
-            pushDTO.setDisMap(disMap);
+            disMap = getTagByMap(disMap, pushVO, QuestionTypeEnum.Disease.getKey());
+            Map<String, Map<String, Object>> disMapDTO = new LinkedHashMap<>();
+            disMapDTO.put("疑似诊断:", disMap);
+            pushDTO.setDisMap(disMapDTO);
         }
         //症状(主诉 type=1;现病史 type=2) 返回 tagName+填写单
         if (featureTypeSet.contains(String.valueOf(QuestionTypeEnum.Symptom.getKey()))) {
-            QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper();
-            questionInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
-                    in("tag_name", symptomMap.keySet()).
-                    eq("type", QuestionTypeEnum.Symptom.getKey());
-            List<QuestionInfo> symptomList = questionFacade.list(questionInfoQueryWrapper);
-            symptomMap = getTagByMap(symptomMap, symptomList, pushVO);
+            //结构化模式,症状返回标签
+            if (mode.equals(InputModeEnum.Structured.getKey())) {
+                symptomMap = getTagByMap(symptomMap, pushVO, QuestionTypeEnum.Symptom.getKey());
+            }
             pushDTO.setSymptomMap(symptomMap);
         }
         //查体 返回模板
@@ -147,40 +143,9 @@ public class PushFacade {
             if (dis != null && dis.size() > 0) {
                 deptName = dis.get(0).getExtraProperty();
             }
-            QueryWrapper<DeptInfo> deptInfoQueryWrapper = new QueryWrapper<>();
-            deptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
-                    eq("name", deptName);
-            DeptInfo deptInfo = deptInfoFacade.getOne(deptInfoQueryWrapper);
-            if (deptInfo == null) {
-                throw new CommonException(CommonErrorCode.NOT_EXISTS, "科室信息不存在");
-            }
+            vitalMap = getVitalModule(deptName, pushVO);
+            pushDTO.setVitalMap(vitalMap);
 
-            QueryWrapper<DeptVital> deptVitalQueryWrapper = new QueryWrapper<>();
-            deptVitalQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
-                    eq("dept_id", deptInfo.getId());
-            List<DeptVital> deptVitalList = deptVitalFacade.list(deptVitalQueryWrapper);
-            if (deptVitalList.size() > 0) {
-                Map<Long, DeptVital> deptVitalMap = EntityUtil.makeEntityMap(deptVitalList, "vitalId");
-                //排序
-                QueryWrapper<VitalOrder> vitalOrderQueryWrapper = new QueryWrapper<>();
-                vitalOrderQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
-                        in("question_id", deptVitalMap.keySet()).
-                        orderByAsc("order_no");
-                List<VitalOrder> vitalOrderList = vitalOrderFacade.list(vitalOrderQueryWrapper);
-                Map<Long, VitalOrder> vitalOrderMap = EntityUtil.makeEntityMap(vitalOrderList, "questionId");
-                //标签列表
-                for (Map.Entry<Long, VitalOrder> entry : vitalOrderMap.entrySet()) {
-                    QuestionVO questionVO = new QuestionVO();
-                    questionVO.setAge(pushVO.getAge());
-                    questionVO.setSexType(pushVO.getSex());
-                    questionVO.setId(entry.getKey());
-                    QuestionDTO questionDTO = questionFacade.getById(questionVO);
-                    if (questionDTO != null) {
-                        vitalMap.put(questionDTO.getName(), questionDTO);
-                    }
-                }
-                pushDTO.setVitalMap(vitalMap);
-            }
         }
         return pushDTO;
     }
@@ -189,11 +154,15 @@ public class PushFacade {
      * 获取返回结果标签
      *
      * @param map
-     * @param questionInfoList
      * @param pushVO
      * @return
      */
-    public Map<String, Object> getTagByMap(Map<String, Object> map, List<QuestionInfo> questionInfoList, PushVO pushVO) {
+    public Map<String, Object> getTagByMap(Map<String, Object> map, PushVO pushVO, Integer type) {
+        QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper();
+        questionInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
+                in("tag_name", map.keySet()).
+                eq("type", type);
+        List<QuestionInfo> questionInfoList = questionFacade.list(questionInfoQueryWrapper);
         Map<String, QuestionInfo> questionMap = EntityUtil.makeEntityMap(questionInfoList, "tagName");
         for (Map.Entry<String, Object> entry : map.entrySet()) {
             if (questionMap.get(entry.getKey()) != null) {
@@ -308,4 +277,49 @@ public class PushFacade {
         }
         return stringList;
     }
+
+    /**
+     * 获取查体模板
+     *
+     * @param deptName
+     * @param pushVO
+     * @return
+     */
+    public Map<String, Object> getVitalModule(String deptName, PushVO pushVO) {
+        Map<String, Object> vitalMap = new LinkedHashMap<>();
+        QueryWrapper<DeptInfo> deptInfoQueryWrapper = new QueryWrapper<>();
+        deptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
+                eq("name", deptName);
+        DeptInfo deptInfo = deptInfoFacade.getOne(deptInfoQueryWrapper);
+        if (deptInfo == null) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "科室信息不存在");
+        }
+
+        QueryWrapper<DeptVital> deptVitalQueryWrapper = new QueryWrapper<>();
+        deptVitalQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
+                eq("dept_id", deptInfo.getId());
+        List<DeptVital> deptVitalList = deptVitalFacade.list(deptVitalQueryWrapper);
+        if (deptVitalList.size() > 0) {
+            Map<Long, DeptVital> deptVitalMap = EntityUtil.makeEntityMap(deptVitalList, "vitalId");
+            //排序
+            QueryWrapper<VitalOrder> vitalOrderQueryWrapper = new QueryWrapper<>();
+            vitalOrderQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
+                    in("question_id", deptVitalMap.keySet()).
+                    orderByAsc("order_no");
+            List<VitalOrder> vitalOrderList = vitalOrderFacade.list(vitalOrderQueryWrapper);
+            Map<Long, VitalOrder> vitalOrderMap = EntityUtil.makeEntityMap(vitalOrderList, "questionId");
+            //标签列表
+            for (Map.Entry<Long, VitalOrder> entry : vitalOrderMap.entrySet()) {
+                QuestionVO questionVO = new QuestionVO();
+                questionVO.setAge(pushVO.getAge());
+                questionVO.setSexType(pushVO.getSex());
+                questionVO.setId(entry.getKey());
+                QuestionDTO questionDTO = questionFacade.getById(questionVO);
+                if (questionDTO != null) {
+                    vitalMap.put(questionDTO.getName(), questionDTO);
+                }
+            }
+        }
+        return vitalMap;
+    }
 }

+ 19 - 2
icss-service/src/main/java/com/diagbot/web/PushController.java

@@ -5,6 +5,7 @@ import com.diagbot.client.bean.ResponseData;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.PushKYJDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.enums.InputModeEnum;
 import com.diagbot.facade.PushFacade;
 import com.diagbot.vo.PushKYJVO;
 import com.diagbot.vo.PushVO;
@@ -45,10 +46,26 @@ public class PushController {
     @PostMapping("/pushInner")
     @SysLogger("pushInner")
     public RespDTO<PushDTO> pushInner(@RequestBody @Valid PushVO pushVO) {
-        return RespDTO.onSuc(pushFacade.pushInner(pushVO));
+        return RespDTO.onSuc(pushFacade.pushInner(pushVO, InputModeEnum.Structured.getKey()));
     }
 
-    @ApiOperation(value = "推理接口(纯文本)[by:zhaops]",
+    @ApiOperation(value = "推理接口(文本模式)[by:zhaops]",
+            notes = "age: 年龄(必填)<br>" +
+                    "sex:性别,1:男,2:女(必填)<br>" +
+                    "symptom:症状<br>" +
+                    "other:其它史<br>" +
+                    "vital:查体<br>" +
+                    "lis:化验<br>" +
+                    "pacs:辅检<br>" +
+                    "dis:诊断<br>" +
+                    "featureType:类型,1:症状,4:查体,5:化验,6:辅检,7:诊断(必填)<br>")
+    @PostMapping("/pushText")
+    @SysLogger("pushText")
+    public RespDTO<PushDTO> pushText(@RequestBody @Valid PushVO pushVO) {
+        return RespDTO.onSuc(pushFacade.pushInner(pushVO, InputModeEnum.Text.getKey()));
+    }
+
+    @ApiOperation(value = "推理接口(大数据结果)[by:zhaops]",
             notes = "age: 年龄(必填)<br>" +
                     "sex:性别,1:男,2:女(必填)<br>" +
                     "symptom:症状<br>" +