zhaops 5 years ago
parent
commit
a81e68ae4b

+ 32 - 1
prec-service/src/main/java/com/diagbot/facade/QuestionFacade.java

@@ -11,7 +11,9 @@ import com.diagbot.util.BeanUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.vo.QuestionIds2VO;
+import com.diagbot.vo.QuestionNameVO;
 import com.diagbot.vo.QuestionVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -105,6 +107,36 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
         return res;
     }
 
+    /**
+     * 根据名称获取标签
+     *
+     * @param questionNameVO
+     * @return
+     */
+    public QuestionDTO getByName(QuestionNameVO questionNameVO) {
+        QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper<>();
+        List<Integer> sexTypeList = Lists.newArrayList();
+        sexTypeList.add(questionNameVO.getSexType());
+        if (!questionNameVO.getSexType().equals(3)) {
+            sexTypeList.add(3);
+        }
+        questionInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in(ListUtil.isNotEmpty(sexTypeList), "sex_type", sexTypeList)
+                .apply("({0} between age_begin and age_end)", questionNameVO.getAge())
+                .eq("tag_name", questionNameVO.getName());
+        QuestionInfo questionInfo = this.getOne(questionInfoQueryWrapper);
+        if (questionInfo != null) {
+            QuestionVO questionVO = new QuestionVO();
+            questionVO.setId(questionInfo.getId());
+            questionVO.setSexType(questionNameVO.getSexType());
+            questionVO.setAge(questionNameVO.getAge());
+            QuestionDTO questionDTO = this.getById(questionVO);
+            return questionDTO;
+        } else {
+            return null;
+        }
+    }
+
 
     /**
      * 查询多个id返回标签内容
@@ -223,5 +255,4 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
         mappIds.addAll(list);
         return EntityUtil.makeEntityListMap(questionMapping1, "parentQuestion");
     }
-
 }

+ 17 - 0
prec-service/src/main/java/com/diagbot/vo/QuestionNameVO.java

@@ -0,0 +1,17 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/9 15:57
+ */
+@Getter
+@Setter
+public class QuestionNameVO {
+    private String name;
+    private Integer sexType;
+    private Integer age;
+}

+ 11 - 2
prec-service/src/main/java/com/diagbot/web/QuestionInfoController.java

@@ -4,6 +4,7 @@ import com.diagbot.dto.QuestionDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.QuestionFacade;
 import com.diagbot.vo.QuestionIds2VO;
+import com.diagbot.vo.QuestionNameVO;
 import com.diagbot.vo.QuestionVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -42,6 +43,16 @@ public class QuestionInfoController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "智能预问诊-根据参数返回标签内容[by:zhoutg]",
+            notes = "name: 标签名称<br>" +
+                    "sexType:性别,1:男,2:女<br>" +
+                    "age:年龄")
+    @PostMapping("/getByName")
+    public RespDTO<QuestionDTO> getByName(@RequestBody QuestionNameVO questionNameVO) {
+        QuestionDTO data = questionFacade.getByName(questionNameVO);
+        return RespDTO.onSuc(data);
+    }
+
 
     @ApiOperation(value = "智能预问诊-查询多个id优化[by:zhoutg]",
             notes = "ids: 多个questionId<br>" +
@@ -52,6 +63,4 @@ public class QuestionInfoController {
         Map<Long, Object> data = questionFacade.getByIds(questionIds2VO);
         return RespDTO.onSuc(data);
     }
-
-
 }

+ 5 - 0
tran-service/src/main/java/com/diagbot/dto/DiseaseDeptDTO.java

@@ -60,4 +60,9 @@ public class DiseaseDeptDTO {
      * 医院科室地址
      */
     private String url;
+
+    /**
+     * 建议
+     */
+    private String suggestion;
 }

+ 14 - 0
tran-service/src/main/java/com/diagbot/entity/DiseaseDept.java

@@ -103,6 +103,11 @@ public class DiseaseDept implements Serializable {
      */
     private String url;
 
+    /**
+     * 建议
+     */
+    private String suggestion;
+
     /**
      * 备注
      */
@@ -252,6 +257,14 @@ public class DiseaseDept implements Serializable {
         this.url = url;
     }
 
+    public String getSuggestion() {
+        return suggestion;
+    }
+
+    public void setSuggestion(String suggestion) {
+        this.suggestion = suggestion;
+    }
+
     @Override
     public String toString() {
         return "DiseaseDept{" +
@@ -272,6 +285,7 @@ public class DiseaseDept implements Serializable {
                 ", deptCode=" + deptCode +
                 ", status=" + status +
                 ", url=" + url +
+                ", suggestion=" + suggestion +
                 ", remark=" + remark +
                 "}";
     }

+ 28 - 0
triage-service/src/main/java/com/diagbot/client/PrecServiceClient.java

@@ -0,0 +1,28 @@
+package com.diagbot.client;
+
+import com.diagbot.client.hystrix.PrecServiceHystrix;
+import com.diagbot.dto.QuestionDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.vo.QuestionNameVO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.validation.Valid;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/9 16:22
+ */
+@FeignClient(value = "prec-service", fallback = PrecServiceHystrix.class)
+public interface PrecServiceClient {
+    /**
+     * 根据名称获取预问诊标签内容
+     *
+     * @param questionNameVO
+     * @return
+     */
+    @PostMapping("/questionInfo/getByName")
+    RespDTO<QuestionDTO> getByName(@Valid @RequestBody QuestionNameVO questionNameVO);
+}

+ 33 - 0
triage-service/src/main/java/com/diagbot/client/hystrix/PrecServiceHystrix.java

@@ -0,0 +1,33 @@
+package com.diagbot.client.hystrix;
+
+import com.diagbot.client.PrecServiceClient;
+import com.diagbot.dto.QuestionDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.vo.QuestionNameVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.validation.Valid;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/9 16:21
+ */
+@Component
+@Slf4j
+public class PrecServiceHystrix implements PrecServiceClient {
+
+    /**
+     * 根据名称获取预问诊标签内容
+     *
+     * @param questionNameVO
+     * @return
+     */
+    @Override
+    public RespDTO<QuestionDTO> getByName(@Valid @RequestBody QuestionNameVO questionNameVO) {
+        log.error("【hystrix】调用{}异常", "getByName");
+        return null;
+    }
+}

+ 5 - 0
triage-service/src/main/java/com/diagbot/dto/DiseaseDeptDTO.java

@@ -60,4 +60,9 @@ public class DiseaseDeptDTO {
      * 医院科室地址
      */
     private String url;
+
+    /**
+     * 建议
+     */
+    private String suggestion;
 }

+ 39 - 0
triage-service/src/main/java/com/diagbot/dto/QuestionDTO.java

@@ -0,0 +1,39 @@
+package com.diagbot.dto;
+
+import com.diagbot.entity.QuestionDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: 返回标签内容
+ * @Author: ztg
+ * @Date: 2018/10/24 16:11
+ */
+@Getter
+@Setter
+public class QuestionDTO {
+
+    private Long id;// id
+    private String name;//内容
+    private String tagName;//标签名称
+    private Integer type;//类型(1:症状 3:其他史 4:查体,5:化验 6:辅检 7:诊断)
+    private Integer controlType; //控件类型
+    private Integer itemType; //元素类型
+    private Integer tagType; //标签标识
+    private String labelPrefix = ""; //前置内容
+    private String labelSuffix = ""; //后置内容
+    private String url;    //图片url地址
+    private String description; // 客户端界面描述
+    private Integer specFlag;//特殊标记(0:没有标记,1:拼接到主诉)
+    private Integer required;//必填(0:不必填,1:必填)
+    private String exclusionDetail; //互斥选项(如1,2|3,4(1,2互斥,3,4互斥))
+    private String explains;//详细阐述
+    private Integer exclusionType; //互斥类型
+    private List<QuestionDetail> questionDetailList = new ArrayList<>(); //标签明细表
+    private List<QuestionDTO> questionMapping = new ArrayList<>();     //下级标签
+    private String flag; // 类型标记
+    private String remark;//备注
+}

+ 1 - 0
triage-service/src/main/java/com/diagbot/dto/SYFDiseaseDeptDTO.java

@@ -22,4 +22,5 @@ public class SYFDiseaseDeptDTO {
     private String subDeptCode;
     private List<String> diseaseNames;
     //private List<SYFFeatureDTO> features;
+    private String suggestion;
 }

+ 1 - 0
triage-service/src/main/java/com/diagbot/dto/SYFFeatureDTO.java

@@ -25,4 +25,5 @@ public class SYFFeatureDTO {
     private String deptCode;
     private String subDeptCode;
     private String url;
+    private String suggestion;
 }

+ 65 - 0
triage-service/src/main/java/com/diagbot/entity/QuestionDetail.java

@@ -0,0 +1,65 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 标签明细表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-11-15
+ */
+@Getter
+@Setter
+@TableName("prec_question_detail")
+public class QuestionDetail implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 客户端界面描述
+     */
+    private String description;
+
+    /**
+     * question_id
+     */
+    private Long questionId;
+
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 特殊类型
+     */
+    private Integer exclusion;
+
+    /**
+     * 关联子问题(questionId多个逗号隔开)
+     */
+    private String subQuestion;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 3 - 0
triage-service/src/main/java/com/diagbot/facade/AIFacade.java

@@ -218,6 +218,7 @@ public class AIFacade {
                     featureRateDTO.setDiseaseName(ddList.get(0).getDiseaseName());
                     featureRateDTO.setDeptCode(ddList.get(0).getDeptCode());
                     featureRateDTO.setSubDeptCode(ddList.get(0).getSubDeptCode());
+                    featureRateDTO.setSuggestion(ddList.get(0).getSuggestion());
                     if (StringUtil.isNotBlank(ddList.get(0).getSubDeptName())
                             && (!ddList.get(0).getDeptName().equals(ddList.get(0).getSubDeptName()))) {
                         featureRateDTO
@@ -314,6 +315,7 @@ public class AIFacade {
                         //syfDiseaseDeptDTO.setUrl(entry.getValue().get(0).getUrl());
                         syfDiseaseDeptDTO.setDeptCode(entry.getValue().get(0).getDeptCode());
                         syfDiseaseDeptDTO.setSubDeptCode(entry.getValue().get(0).getSubDeptCode());
+                        syfDiseaseDeptDTO.setSuggestion(entry.getValue().get(0).getSuggestion());
                         //syfDiseaseDeptDTO.setFeatures(entry.getValue());
                         syfDiseaseDeptDTO.setDiseaseNames(entry.getValue()
                                 .stream()
@@ -464,6 +466,7 @@ public class AIFacade {
                 //syfDiseaseDeptDTO.setUrl(syfFeatureDTO.getUrl());
                 syfDiseaseDeptDTO.setDeptCode(syfFeatureDTO.getDeptCode());
                 syfDiseaseDeptDTO.setSubDeptCode(syfFeatureDTO.getSubDeptCode());
+                syfDiseaseDeptDTO.setSuggestion(syfFeatureDTO.getSuggestion());
                 List<SYFFeatureDTO> features = Lists.newLinkedList();
                 if (syfFeatureMap.containsKey(syfFeatureDTO.getConcatDept())) {
                     features = syfFeatureMap.get(syfFeatureDTO.getConcatDept());

+ 32 - 0
triage-service/src/main/java/com/diagbot/facade/QuestionFacade.java

@@ -0,0 +1,32 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.PrecServiceClient;
+import com.diagbot.dto.QuestionDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.QuestionNameVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/9 16:33
+ */
+@Component
+public class QuestionFacade {
+    @Autowired
+    private PrecServiceClient precServiceClient;
+
+    /**
+     * 根据名称获取预问诊标签内容
+     *
+     * @param questionNameVO
+     * @return
+     */
+    public QuestionDTO getByName(QuestionNameVO questionNameVO) {
+        RespDTO<QuestionDTO> respDTO = precServiceClient.getByName(questionNameVO);
+        RespDTOUtil.respNGDeal(respDTO, "获取标签失败");
+        return respDTO.data;
+    }
+}

+ 17 - 0
triage-service/src/main/java/com/diagbot/vo/QuestionNameVO.java

@@ -0,0 +1,17 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/9 15:57
+ */
+@Getter
+@Setter
+public class QuestionNameVO {
+    private String name;
+    private Integer sexType;
+    private Integer age;
+}

+ 36 - 0
triage-service/src/main/java/com/diagbot/web/QuestionController.java

@@ -0,0 +1,36 @@
+package com.diagbot.web;
+
+import com.diagbot.dto.QuestionDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.QuestionFacade;
+import com.diagbot.vo.QuestionNameVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/9 16:31
+ */
+@RestController
+@RequestMapping("/question")
+@Api(value = "标签相关API", tags = { "标签相关API" })
+public class QuestionController {
+    @Autowired
+    private QuestionFacade questionFacade;
+
+    @ApiOperation(value = "分诊-根据参数返回标签内容[by:zhoutg]",
+            notes = "name: 标签名称<br>" +
+                    "sexType:性别,1:男,2:女<br>" +
+                    "age:年龄")
+    @PostMapping("/getByName")
+    public RespDTO<QuestionDTO> getByName(@RequestBody QuestionNameVO questionNameVO) {
+        QuestionDTO data = questionFacade.getByName(questionNameVO);
+        return RespDTO.onSuc(data);
+    }
+}