Browse Source

接口模式

Zhaops 6 years ago
parent
commit
9048a9d371
28 changed files with 1038 additions and 0 deletions
  1. 1 0
      aipt-service/src/main/java/com/diagbot/facade/TreatmentFacade.java
  2. 56 0
      ltapi-service/src/main/java/com/diagbot/client/AiptServiceClient.java
  3. 17 0
      ltapi-service/src/main/java/com/diagbot/client/bean/CalculateData.java
  4. 26 0
      ltapi-service/src/main/java/com/diagbot/client/bean/LisResult.java
  5. 22 0
      ltapi-service/src/main/java/com/diagbot/client/bean/MedicalIndication.java
  6. 17 0
      ltapi-service/src/main/java/com/diagbot/client/bean/MedicalIndicationDetail.java
  7. 37 0
      ltapi-service/src/main/java/com/diagbot/client/bean/ScaleContent.java
  8. 39 0
      ltapi-service/src/main/java/com/diagbot/client/bean/SearchData.java
  9. 71 0
      ltapi-service/src/main/java/com/diagbot/client/hystrix/AiptServiceHystrix.java
  10. 16 0
      ltapi-service/src/main/java/com/diagbot/dto/ConceptBaseDTO.java
  11. 33 0
      ltapi-service/src/main/java/com/diagbot/dto/ConceptDetailDTO.java
  12. 17 0
      ltapi-service/src/main/java/com/diagbot/dto/ConceptIntroduceDTO.java
  13. 17 0
      ltapi-service/src/main/java/com/diagbot/dto/ConceptPushDTO.java
  14. 25 0
      ltapi-service/src/main/java/com/diagbot/dto/PushDTO.java
  15. 57 0
      ltapi-service/src/main/java/com/diagbot/enums/FeatureTypeEnum.java
  16. 64 0
      ltapi-service/src/main/java/com/diagbot/facade/AssembleFacade.java
  17. 28 0
      ltapi-service/src/main/java/com/diagbot/facade/CalculateFacade.java
  18. 26 0
      ltapi-service/src/main/java/com/diagbot/facade/ConceptDetailFacade.java
  19. 112 0
      ltapi-service/src/main/java/com/diagbot/facade/PushFacade.java
  20. 11 0
      ltapi-service/src/main/java/com/diagbot/vo/CalculateVO.java
  21. 21 0
      ltapi-service/src/main/java/com/diagbot/vo/ConceptBaseVO.java
  22. 29 0
      ltapi-service/src/main/java/com/diagbot/vo/ConceptIntroduceVO.java
  23. 38 0
      ltapi-service/src/main/java/com/diagbot/vo/HospitalSetVO.java
  24. 34 0
      ltapi-service/src/main/java/com/diagbot/vo/PushBaseVO.java
  25. 22 0
      ltapi-service/src/main/java/com/diagbot/vo/PushVO.java
  26. 40 0
      ltapi-service/src/main/java/com/diagbot/web/CalculateController.java
  27. 42 0
      ltapi-service/src/main/java/com/diagbot/web/ConceptDetailController.java
  28. 120 0
      ltapi-service/src/main/java/com/diagbot/web/PushController.java

+ 1 - 0
aipt-service/src/main/java/com/diagbot/facade/TreatmentFacade.java

@@ -126,6 +126,7 @@ public class TreatmentFacade {
             if (cateBigConcept != null) {
                 conceptIntroduceVO = new ConceptIntroduceVO();
                 conceptIntroduceVO.setName(cateBigConcept.getLibName());
+                conceptIntroduceVO.setType(ConceptTypeEnum.Drug_Category_Big.getKey());
                 conceptIntroduceVO.setLibType(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey());
                 if (conceptDetailFacade.exist(conceptIntroduceVO)) {
                     medicitionClass.setShowInfo("1");

+ 56 - 0
ltapi-service/src/main/java/com/diagbot/client/AiptServiceClient.java

@@ -1,7 +1,20 @@
 package com.diagbot.client;
 
+import com.diagbot.client.bean.CalculateData;
+import com.diagbot.client.bean.ScaleContent;
+import com.diagbot.client.bean.SearchData;
 import com.diagbot.client.hystrix.AiptServiceHystrix;
+import com.diagbot.dto.ConceptIntroduceDTO;
+import com.diagbot.dto.PushDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.vo.ConceptIntroduceVO;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 调用知识库服务
@@ -10,5 +23,48 @@ import org.springframework.cloud.openfeign.FeignClient;
  */
 @FeignClient(value = "aipt-service", fallback = AiptServiceHystrix.class)
 public interface AiptServiceClient {
+    /**
+     * 推理
+     *
+     * @param searchData
+     * @return
+     */
+    @PostMapping("/push/pushInner")
+    RespDTO<PushDTO> pushInner(@RequestBody SearchData searchData);
+
+    /**
+     * 获取治疗方案
+     *
+     * @param searchData
+     * @return
+     */
+    @PostMapping("/push/treatment")
+    RespDTO<Map<String, Object>> getTreatment(@RequestBody SearchData searchData);
+
+    /**
+     * 计算接口-量表/公式
+     *
+     * @param calculateData
+     * @return
+     */
+    @PostMapping(value = "/clinicaldata/scaleCalc")
+    RespDTO<Map<String, Object>> scaleCalc(@RequestBody CalculateData calculateData);
+
+    /**
+     * 获取量表接口
+     *
+     * @param searchData
+     * @return
+     */
+    @PostMapping(value = "/clinicaldata/getScale")
+    RespDTO<List<ScaleContent>> getScale(@RequestBody SearchData searchData);
 
+    /**
+     * 获取提示信息
+     *
+     * @param conceptIntroduceVO
+     * @return
+     */
+    @PostMapping(value = "/conceptDetail/getConceptDetail")
+    RespDTO<ConceptIntroduceDTO> getConceptDetail(@Valid @RequestBody ConceptIntroduceVO conceptIntroduceVO);
 }

+ 17 - 0
ltapi-service/src/main/java/com/diagbot/client/bean/CalculateData.java

@@ -0,0 +1,17 @@
+package com.diagbot.client.bean;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:计算接口入参
+ * @Author:zhaops
+ * @time: 2019/4/24 15:15
+ */
+@Getter
+@Setter
+public class CalculateData {
+    private Integer type;  //1-量表,2-计算公式
+    private JSONObject data;
+}

+ 26 - 0
ltapi-service/src/main/java/com/diagbot/client/bean/LisResult.java

@@ -0,0 +1,26 @@
+package com.diagbot.client.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description:化验信息
+ * @Author:zhaops
+ * @time: 2018/12/19 14:03
+ */
+@Getter
+@Setter
+public class LisResult {
+    private String name;//套餐名称
+    private String detailName;//化验项名称
+    private String uniqueName;//公表名称
+    private Double value;//值
+    private Double maxValue;//最大值
+    private Double minValue;//最小值
+    private String units;//单位
+    private String otherValue;//其他结果,包括阴性阳性,文字描述等
+    @NotNull(message = "请输入数据来源")
+    private Integer source;
+}

+ 22 - 0
ltapi-service/src/main/java/com/diagbot/client/bean/MedicalIndication.java

@@ -0,0 +1,22 @@
+package com.diagbot.client.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+
+/**
+ * @Description:推送指标
+ * @Author:zhaops
+ * @time: 2019/3/14 14:40
+ */
+@Getter
+@Setter
+public class MedicalIndication {
+    private Long conceptId;
+    private Integer libType;
+    private Integer type;
+    private String name;
+    private List<MedicalIndicationDetail> details;
+}

+ 17 - 0
ltapi-service/src/main/java/com/diagbot/client/bean/MedicalIndicationDetail.java

@@ -0,0 +1,17 @@
+package com.diagbot.client.bean;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:推送指标明细
+ * @Author:zhaops
+ * @time: 2019/4/11 10:15
+ */
+@Getter
+@Setter
+public class MedicalIndicationDetail {
+    private Integer type; //1-量表,2-公式,3-其他指标
+    private JSONObject content;  //type<>1 非量表,返回内容;type=1 量表,返回量表名称{"name":""}
+}

+ 37 - 0
ltapi-service/src/main/java/com/diagbot/client/bean/ScaleContent.java

@@ -0,0 +1,37 @@
+package com.diagbot.client.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 量表内容表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2019-03-11
+ */
+@Getter
+@Setter
+public class ScaleContent implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 量表概念id
+     */
+    private Long conceptId;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 0:文本,1:大数据接口填充
+     */
+    private Integer type;
+
+}

+ 39 - 0
ltapi-service/src/main/java/com/diagbot/client/bean/SearchData.java

@@ -0,0 +1,39 @@
+package com.diagbot.client.bean;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * Created by fyeman on 2018/1/31.
+ */
+@Getter
+@Setter
+public class SearchData {
+    private int length;
+    private int age;
+    private String sex;
+    //特征类别
+    private String featureType;
+    //外部系统编码 用于返回映射数据,如果sysCode为空或null,则返回kl_standard_info标准名称
+    private String sysCode;
+    private String symptom;
+    private String past;
+    private String other;
+    private String vital;
+    private String lis;
+    private List<LisResult> lisArr;
+    private String pacs;
+    private String diag;
+    private String diseaseName; //指定诊断,例如取治疗方案
+    private String scaleName;   //量表名称
+    private String indications; //指标结果
+    private String adverseReactions; //不良反应
+    private Integer disType;    //诊断类型
+    private String adverseEvent;
+    private String hosCode;
+    @ApiModelProperty(hidden = true)
+    private Integer sysType;  //系统类型
+}

+ 71 - 0
ltapi-service/src/main/java/com/diagbot/client/hystrix/AiptServiceHystrix.java

@@ -1,8 +1,20 @@
 package com.diagbot.client.hystrix;
 
 import com.diagbot.client.AiptServiceClient;
+import com.diagbot.client.bean.CalculateData;
+import com.diagbot.client.bean.ScaleContent;
+import com.diagbot.client.bean.SearchData;
+import com.diagbot.dto.ConceptIntroduceDTO;
+import com.diagbot.dto.PushDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.vo.ConceptIntroduceVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 调用知识库服务
@@ -12,4 +24,63 @@ import org.springframework.stereotype.Component;
 @Component
 @Slf4j
 public class AiptServiceHystrix implements AiptServiceClient {
+    /**
+     * 推理
+     *
+     * @param searchData
+     * @return
+     */
+    @Override
+    public RespDTO<PushDTO> pushInner(@RequestBody SearchData searchData) {
+        log.error("【hystrix】调用{}异常", "pushInner");
+        return null;
+    }
+
+    /**
+     * 获取治疗方案
+     *
+     * @param searchData
+     * @return
+     */
+    @Override
+    public RespDTO<Map<String, Object>> getTreatment(@RequestBody SearchData searchData) {
+        log.error("【hystrix】调用{}异常", "getTreatment");
+        return null;
+    }
+
+    /**
+     * 计算接口-量表/公式
+     *
+     * @param calculateData
+     * @return
+     */
+    @Override
+    public RespDTO<Map<String, Object>> scaleCalc(@RequestBody CalculateData calculateData) {
+        log.error("【hystrix】调用{}异常", "scaleCalc");
+        return null;
+    }
+
+    /**
+     * 获取量表接口
+     *
+     * @param searchData
+     * @return
+     */
+    @Override
+    public RespDTO<List<ScaleContent>> getScale(@RequestBody SearchData searchData) {
+        log.error("【hystrix】调用{}异常", "getScale");
+        return null;
+    }
+
+    /**
+     * 获取提示信息
+     *
+     * @param conceptIntroduceVO
+     * @return
+     */
+    @Override
+    public RespDTO<ConceptIntroduceDTO> getConceptDetail(@Valid @RequestBody ConceptIntroduceVO conceptIntroduceVO) {
+        log.error("【hystrix】调用{}异常", "getConceptDetail");
+        return null;
+    }
 }

+ 16 - 0
ltapi-service/src/main/java/com/diagbot/dto/ConceptBaseDTO.java

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 概念出参基础实体类
+ * @author: gaodm
+ * @time: 2019/5/7 9:44
+ */
+@Getter
+@Setter
+public class ConceptBaseDTO {
+    private Long conceptId; // 概念id
+    private String name;    //概念名称
+}

+ 33 - 0
ltapi-service/src/main/java/com/diagbot/dto/ConceptDetailDTO.java

@@ -0,0 +1,33 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:提示信息明细
+ * @Author:zhaops
+ * @time: 2019/5/6 16:33
+ */
+@Getter
+@Setter
+public class ConceptDetailDTO {
+    /**
+     * 提示明细标题
+     */
+    private String title;
+
+    /**
+     * 提示明细内容
+     */
+    private String content;
+
+    /**
+     * 纯文本
+     */
+    private String text;
+
+    /**
+     * 是否诊断依据(1-是,0-否)
+     */
+    private Integer isReason;
+}

+ 17 - 0
ltapi-service/src/main/java/com/diagbot/dto/ConceptIntroduceDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/5/13 20:24
+ */
+@Getter
+@Setter
+public class ConceptIntroduceDTO extends ConceptBaseDTO {
+    private List<ConceptDetailDTO> details;
+}

+ 17 - 0
ltapi-service/src/main/java/com/diagbot/dto/ConceptPushDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:推理返回标签(概念)
+ * @Author:zhaops
+ * @time: 2019/5/7 20:06
+ */
+@Getter
+@Setter
+public class ConceptPushDTO extends ConceptBaseDTO {
+    private Integer libType;  //词性
+    private String clientName;//数据服务模式调用方名称
+    private Integer type;
+}

+ 25 - 0
ltapi-service/src/main/java/com/diagbot/dto/PushDTO.java

@@ -0,0 +1,25 @@
+package com.diagbot.dto;
+
+import com.diagbot.client.bean.MedicalIndication;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 推理出参
+ * @Author:zhaops
+ * @time: 2018/11/20 13:44
+ */
+@Getter
+@Setter
+public class PushDTO {
+    private List<ConceptPushDTO> symptom;
+    private List<ConceptPushDTO> other;
+    private List<ConceptPushDTO> vital;
+    private List<ConceptPushDTO> lab;
+    private List<ConceptPushDTO> pacs;
+    private Map<String, List<ConceptPushDTO>> dis;
+    private List<MedicalIndication> medicalIndications;
+}

+ 57 - 0
ltapi-service/src/main/java/com/diagbot/enums/FeatureTypeEnum.java

@@ -0,0 +1,57 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description: 推送类型
+ * @Author:zhaops
+ * @time: 2019/3/14 11:28
+ */
+public enum FeatureTypeEnum implements KeyedNamed {
+    Symptom(1, "症状"),
+    Other(3, "其他史"),
+    Vital(4, "查体"),
+    Lis(5, "化验"),
+    Pacs(6, "辅检"),
+    Disease(7, "诊断"),
+    Treat(8, "治疗"),
+    Scale(21, "量表内容"),
+    MedicalIndication(22, "指标"),
+    ManagementEvaluation(11, "管理评估");
+
+    @Setter
+    private Integer key;
+
+    @Setter
+    private String name;
+
+    FeatureTypeEnum(Integer key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static FeatureTypeEnum getEnum(Integer key) {
+        for (FeatureTypeEnum item : FeatureTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(Integer key) {
+        FeatureTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 64 - 0
ltapi-service/src/main/java/com/diagbot/facade/AssembleFacade.java

@@ -0,0 +1,64 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.bean.LisResult;
+import com.diagbot.client.bean.SearchData;
+import com.diagbot.enums.SysTypeEnum;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.PushVO;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/5/9 15:40
+ */
+@Component
+public class AssembleFacade {
+
+    /**
+     * 拼装数据
+     *
+     * @param pushVO
+     * @return SearchData
+     */
+    public SearchData assembleData(PushVO pushVO) {
+        SearchData searchData = new SearchData();
+        searchData.setAge(pushVO.getAge());
+        searchData.setSymptom(pushVO.getSymptom());
+        searchData.setVital(pushVO.getVital());
+        searchData.setPacs(pushVO.getPacs());
+        searchData.setPast(pushVO.getPast());
+        searchData.setOther(pushVO.getOther());
+        searchData.setDiag(pushVO.getDiag());
+        searchData.setDisType(pushVO.getDisType());
+        searchData.setAdverseEvent(pushVO.getAdverseReactions());
+        searchData.setScaleName(pushVO.getScaleName());
+        searchData.setDiseaseName(pushVO.getDiseaseName());
+        searchData.setIndications(pushVO.getIndications());
+        searchData.setFeatureType(pushVO.getFeatureType());
+        searchData.setSysCode("1");
+        searchData.setLength(10);
+        searchData.setSysType(SysTypeEnum.LTAPI_SERVICE.getKey());
+        searchData.setHosCode(pushVO.getHosCode());
+
+        switch (pushVO.getSex()) {
+            case 1:
+                searchData.setSex("M");
+                break;
+            case 2:
+                searchData.setSex("F");
+                break;
+            default:
+                searchData.setSex("A");
+                break;
+        }
+        if (ListUtil.isNotEmpty(pushVO.getLis())) {
+            List<LisResult> lisResultList = BeanUtil.listCopyTo(pushVO.getLis(), LisResult.class);
+            searchData.setLisArr(lisResultList);
+        }
+        return searchData;
+    }
+}

+ 28 - 0
ltapi-service/src/main/java/com/diagbot/facade/CalculateFacade.java

@@ -0,0 +1,28 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.AiptServiceClient;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.CalculateVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/5/13 20:19
+ */
+@Component
+public class CalculateFacade {
+    @Autowired
+    AiptServiceClient aiptServiceClient;
+
+    public Map<String, Object> calculate(CalculateVO calculateVO) {
+        RespDTO<Map<String, Object>> res = aiptServiceClient.scaleCalc(calculateVO);
+        RespDTOUtil.respNGDealCover(res, "计算没有结果返回");
+        Map<String, Object> map = res.data;
+        return map;
+    }
+}

+ 26 - 0
ltapi-service/src/main/java/com/diagbot/facade/ConceptDetailFacade.java

@@ -0,0 +1,26 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.AiptServiceClient;
+import com.diagbot.dto.ConceptIntroduceDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.ConceptIntroduceVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/5/14 9:49
+ */
+@Component
+public class ConceptDetailFacade {
+    @Autowired
+    private AiptServiceClient aiptServiceClient;
+
+    public ConceptIntroduceDTO getConceptDetail(ConceptIntroduceVO conceptIntroduceVO) {
+        RespDTO<ConceptIntroduceDTO> res = aiptServiceClient.getConceptDetail(conceptIntroduceVO);
+        RespDTOUtil.respNGDeal(res, "获取提示信息失败");
+        return res.data;
+    }
+}

+ 112 - 0
ltapi-service/src/main/java/com/diagbot/facade/PushFacade.java

@@ -0,0 +1,112 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.AiptServiceClient;
+import com.diagbot.client.bean.ScaleContent;
+import com.diagbot.client.bean.SearchData;
+import com.diagbot.dto.ConceptPushDTO;
+import com.diagbot.dto.PushDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.enums.FeatureTypeEnum;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.PushVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/5/13 17:47
+ */
+@Component
+public class PushFacade {
+    @Autowired
+    AiptServiceClient aiptServiceClient;
+    @Autowired
+    AssembleFacade assembleFacade;
+
+    /**
+     * 推理接口
+     *
+     * @param pushVO
+     * @return
+     */
+    public PushDTO push(PushVO pushVO) {
+        PushDTO pushDTO = new PushDTO();
+        SearchData searchData = assembleFacade.assembleData(pushVO);
+        RespDTO<PushDTO> respDTO = aiptServiceClient.pushInner(searchData);
+        PushDTO data = new PushDTO();
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            data = respDTO.data;
+        }
+
+        String featureType = searchData.getFeatureType();
+        String[] featureTypes = featureType.split(",|,");
+        Set<String> featureTypeSet = new HashSet(Arrays.asList(featureTypes));
+
+        //症状
+        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Symptom.getKey()))) {
+            List<ConceptPushDTO> symptom = data.getSymptom();
+            pushDTO.setSymptom(symptom);
+        }
+        //其他史
+        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Other.getKey()))) {
+        }
+        //查体
+        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Vital.getKey()))) {
+            List<ConceptPushDTO> vitals = data.getVital();
+            pushDTO.setVital(vitals);
+        }
+        //化验
+        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Lis.getKey()))) {
+            List<ConceptPushDTO> labs = data.getLab();
+            pushDTO.setLab(labs);
+        }
+        //辅检
+        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Pacs.getKey()))) {
+            pushDTO.setPacs(data.getPacs());
+        }
+        //诊断
+        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.Disease.getKey()))) {
+            pushDTO.setDis(data.getDis());
+        }
+        //推送指标
+        if (featureTypeSet.contains(String.valueOf(FeatureTypeEnum.MedicalIndication.getKey()))) {
+            pushDTO.setMedicalIndications(data.getMedicalIndications());
+        }
+        return pushDTO;
+    }
+
+    /**
+     * 治疗方案推送-不包含慢病内容
+     *
+     * @param pushVO
+     * @return
+     */
+    public Map<String, Object> pushTreatment(PushVO pushVO) {
+        SearchData searchData = assembleFacade.assembleData(pushVO);
+        RespDTO<Map<String, Object>> res = aiptServiceClient.getTreatment(searchData);
+        RespDTOUtil.respNGDealCover(res, "中间层没有返回治疗方案");
+        Map<String, Object> data = res.data;
+        return data;
+    }
+
+    /**
+     * 治疗方案推送-不包含慢病内容
+     *
+     * @param pushVO
+     * @return
+     */
+    public List<ScaleContent> pushScale(PushVO pushVO) {
+        SearchData searchData = assembleFacade.assembleData(pushVO);
+        RespDTO<List<ScaleContent>> res = aiptServiceClient.getScale(searchData);
+        RespDTOUtil.respNGDealCover(res, "中间层没有返回量表");
+        List<ScaleContent> data = res.data;
+        return data;
+    }
+}

+ 11 - 0
ltapi-service/src/main/java/com/diagbot/vo/CalculateVO.java

@@ -0,0 +1,11 @@
+package com.diagbot.vo;
+
+import com.diagbot.client.bean.CalculateData;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/5/13 20:20
+ */
+public class CalculateVO extends CalculateData {
+}

+ 21 - 0
ltapi-service/src/main/java/com/diagbot/vo/ConceptBaseVO.java

@@ -0,0 +1,21 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2019/5/6 18:50
+ */
+@Getter
+@Setter
+public class ConceptBaseVO {
+    @NotBlank(message = "概念名称不能为空")
+    private String name;
+    @NotNull(message = "词性不能为空")
+    private Integer libType;
+}

+ 29 - 0
ltapi-service/src/main/java/com/diagbot/vo/ConceptIntroduceVO.java

@@ -0,0 +1,29 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description:获取提示信息入参
+ * @Author:zhaops
+ * @time: 2019/5/6 15:43
+ */
+@Getter
+@Setter
+public class ConceptIntroduceVO {
+    @NotBlank(message = "请输入概念名称")
+    private String name;
+    @NotNull(message = "请输入概念词性")
+    private Integer type;
+    //此版本暂不提供该过滤条件
+    @ApiModelProperty(hidden = true)
+    private Integer position;
+    //此版本暂不提供该过滤条件
+    @ApiModelProperty(hidden = true)
+    private List<String> titles;
+}

+ 38 - 0
ltapi-service/src/main/java/com/diagbot/vo/HospitalSetVO.java

@@ -0,0 +1,38 @@
+package com.diagbot.vo;
+
+import com.diagbot.enums.SysTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2019年6月12日 下午3:30:26
+ */
+@Setter
+@Getter
+public class HospitalSetVO {
+
+	private String hospitalCode;
+
+	/**
+	 * 访问的系统类型
+	 * (1, "user-service"),(2, "diagbotman-service"),(3, "uaa-service"),(4, "log-service"),
+	 * (5, "bi-service"),(6, "ltapi-service"),(7, "feedback-service"),(8, "icss-old-service"),
+	 * (9, "triage-service"),(10, "appkey"),(11, "icss-service"),(12, "icssman-service"),(13, "knowledgeman-service"),
+	 * (14, "tran-service"),(15, "aipt-service"),(16, "data-service"),(17, "prec-service");
+	 */
+	@ApiModelProperty(hidden = true)
+	private Integer sysType = SysTypeEnum.DATA_SERVICE.getKey();
+
+	/**
+	 * 配置名称
+	 */
+	private String name;
+	/**
+	 * 配置编码
+	 */
+	private String code;
+}

+ 34 - 0
ltapi-service/src/main/java/com/diagbot/vo/PushBaseVO.java

@@ -0,0 +1,34 @@
+package com.diagbot.vo;
+
+import com.diagbot.client.bean.LisResult;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description: 推理参数
+ * @Author:zhaops
+ * @time: 2019/4/17 14:42
+ */
+@Getter
+@Setter
+public class PushBaseVO {
+    @NotNull(message = "请输入年龄")
+    private Integer age;
+    @NotNull(message = "请输入性别")
+    private Integer sex;
+    @NotBlank(message = "请输入推送类型")
+    private String featureType;
+    private String symptom;
+    private String diag;
+    private String vital;
+    private List<LisResult> lis;
+    private String pacs;
+    @ApiModelProperty(hidden = true)
+    private String past;
+    private String other;
+}

+ 22 - 0
ltapi-service/src/main/java/com/diagbot/vo/PushVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2018/11/20 13:38
+ */
+@Getter
+@Setter
+public class PushVO  extends PushBaseVO {
+    private String diseaseName;
+    private String scaleName; //量表名称
+    @ApiModelProperty(hidden = true)
+    private Integer disType;  //0-普通病(默认不填),1-慢病,2-急诊
+    private String adverseReactions; //不良反应
+    private String indications;   //推理指标
+    private String hosCode;   //医院编码
+}

+ 40 - 0
ltapi-service/src/main/java/com/diagbot/web/CalculateController.java

@@ -0,0 +1,40 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.CalculateFacade;
+import com.diagbot.vo.CalculateVO;
+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;
+
+import javax.validation.Valid;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/6/21 13:50
+ */
+@RestController
+@RequestMapping("/calc")
+@Api(value = "计算相关API", tags = { "接口服务模式-计算相关API" })
+@SuppressWarnings("unchecked")
+public class CalculateController {
+    @Autowired
+    CalculateFacade calculateFacade;
+
+    @ApiOperation(value = "推理结果计算接口[by:zhaops]",
+            notes = "type: 1-量表,2-计算公式(必填),Integer<br>" +
+                    "data:计算参数(量表或计算公式结构),String<br>")
+    @PostMapping("/calculate")
+    @SysLogger("calculate")
+    public RespDTO<Map<String, Object>> calculate(@RequestBody @Valid CalculateVO calculateVO) {
+        return RespDTO.onSuc(calculateFacade.calculate(calculateVO));
+    }
+}
+

+ 42 - 0
ltapi-service/src/main/java/com/diagbot/web/ConceptDetailController.java

@@ -0,0 +1,42 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.ConceptIntroduceDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.ConceptDetailFacade;
+import com.diagbot.vo.ConceptIntroduceVO;
+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;
+
+import javax.validation.Valid;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/6/21 13:49
+ */
+@RestController
+@RequestMapping("/conceptDetail")
+@Api(value = "提示信息相关API", tags = { "接口服务模式-提示信息相关API" })
+@SuppressWarnings("unchecked")
+public class ConceptDetailController {
+    @Autowired
+    private ConceptDetailFacade conceptDetailFacade;
+
+    @ApiOperation(value = "获取提示信息[by:zhaops]",
+            notes = "name: 标签名称,必填<br>" +
+                    "type:标签类型(1-症状,5-化验,6-辅检,7-诊断,8-药品,9-药品大类,10-不良反应,11-药品小类,12-化验公表项,22-指标),单选必填<br>" +
+                    "titles:提示信息标题列表,数组选填<br>" +
+                    "position:1-摘要,2-全文,5-药品说明书,6-不良反应,单选选填")
+    @PostMapping("/getConceptDetail")
+    @SysLogger("getConceptDetail")
+    public RespDTO<ConceptIntroduceDTO> getConceptDetail(@Valid @RequestBody ConceptIntroduceVO conceptIntroduceVO) {
+        ConceptIntroduceDTO data = conceptDetailFacade.getConceptDetail(conceptIntroduceVO);
+        return RespDTO.onSuc(data);
+    }
+}

+ 120 - 0
ltapi-service/src/main/java/com/diagbot/web/PushController.java

@@ -0,0 +1,120 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.PushDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.PushFacade;
+import com.diagbot.vo.PushVO;
+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;
+
+import javax.validation.Valid;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/6/21 13:49
+ */
+@RestController
+@RequestMapping("/push")
+@Api(value = "推理相关API", tags = { "接口服务模式-推理相关API" })
+@SuppressWarnings("unchecked")
+public class PushController {
+    @Autowired
+    PushFacade pushFacade;
+
+    @ApiOperation(value = "接口服务模式-推理[by:zhaops]",
+            notes = "age: 年龄(必填)<br>" +
+                    "sex:性别(必填) 1:男,2:女<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>" +
+                    "diseaseName:取治疗方案的诊断,String<br>" +
+                    "scaleName:量表名称,String<br>" +
+                    "disType:诊断类型,1-慢病,2-急诊,普通病不填,Integer<br>" +
+                    "indications:指标结果,String<br>" +
+                    "adverseReactions:不良反应,String<br>")
+    @PostMapping("/push")
+    @SysLogger("push")
+    public RespDTO<PushDTO> push(@RequestBody @Valid PushVO pushVO) {
+        return RespDTO.onSuc(pushFacade.push(pushVO));
+    }
+
+    @ApiOperation(value = "接口服务模式-治疗方案[by:zhaops]",
+            notes = "age: 年龄(必填)<br>" +
+                    "sex:性别(必填),1:男,2:女<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:不良反应,String<br>")
+    @PostMapping("/pushTreatment")
+    @SysLogger("pushTreatment")
+    public RespDTO<Map<String, Object>> pushTreatment(@RequestBody @Valid PushVO pushVO) {
+        return RespDTO.onSuc(pushFacade.pushTreatment(pushVO));
+    }
+
+    @ApiOperation(value = "接口服务模式-量表[by:zhaops]",
+            notes = "age: 年龄(必填)<br>" +
+                    "sex:性别(必填),1:男,2:女<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:类型(必填),21:量表,String<br>" +
+                    "diseaeName:取治疗方案的诊断,String<br>" +
+                    "scaleName:量表名称,String<br>" +
+                    "disType:诊断类型,1-慢病,2-急诊,普通病不填,Integer<br>" +
+                    "indications:指标结果,String<br>" +
+                    "adverseReactions:不良反应,String<br>")
+    @PostMapping("/pushScale")
+    @SysLogger("pushScale")
+    public RespDTO<Map<String, Object>> pushScale(@RequestBody @Valid PushVO pushVO) {
+        return RespDTO.onSuc(pushFacade.pushScale(pushVO));
+    }
+}