소스 검색

邵逸夫智能分诊

zhaops 5 년 전
부모
커밋
10654b820b

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

@@ -45,4 +45,19 @@ public class DiseaseDeptDTO {
      * 大科室
      */
     private String deptName;
+
+    /**
+     * 小科室编码
+     */
+    private String subDeptCode;
+
+    /**
+     * 大科室编码
+     */
+    private String deptCode;
+
+    /**
+     * 医院科室地址
+     */
+    private String url;
 }

+ 37 - 1
tran-service/src/main/java/com/diagbot/entity/DiseaseDept.java

@@ -78,11 +78,21 @@ public class DiseaseDept implements Serializable {
      */
     private String subDeptName;
 
+    /**
+     * 小科室编码
+     */
+    private String subDeptCode;
+
     /**
      * 大科室
      */
     private String deptName;
 
+    /**
+     * 大科室编码
+     */
+    private String deptCode;
+
     /**
      * 状态(1:有效)
      */
@@ -218,6 +228,30 @@ public class DiseaseDept implements Serializable {
         this.remark = remark;
     }
 
+    public String getSubDeptCode() {
+        return subDeptCode;
+    }
+
+    public void setSubDeptCode(String subDeptCode) {
+        this.subDeptCode = subDeptCode;
+    }
+
+    public String getDeptCode() {
+        return deptCode;
+    }
+
+    public void setDeptCode(String deptCode) {
+        this.deptCode = deptCode;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
     @Override
     public String toString() {
         return "DiseaseDept{" +
@@ -233,10 +267,12 @@ public class DiseaseDept implements Serializable {
                 ", icd10Name=" + icd10Name +
                 ", conceptDisName=" + conceptDisName +
                 ", subDeptName=" + subDeptName +
+                ", subDeptCode=" + subDeptCode +
                 ", deptName=" + deptName +
+                ", deptCode=" + deptCode +
                 ", status=" + status +
                 ", url=" + url +
                 ", remark=" + remark +
                 "}";
     }
-}
+}

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

@@ -41,11 +41,21 @@ public class DiseaseDeptDTO {
      */
     private String subDeptName;
 
+    /**
+     * 小科室编码
+     */
+    private String subDeptCode;
+
     /**
      * 大科室
      */
     private String deptName;
 
+    /**
+     * 大科室编码
+     */
+    private String deptCode;
+
     /**
      * 医院科室地址
      */

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

@@ -16,5 +16,7 @@ public class SYFDiseaseDeptDTO {
     private String dept;
     private Double rate;
     private String url;
+    private String deptCode;
+    private String subDeptCode;
     private List<SYFFeatureDTO> features;
 }

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

@@ -22,5 +22,7 @@ public class SYFFeatureDTO {
     private String deptName;
     private String subDeptName;
     private String concatDept;
+    private String deptCode;
+    private String subDeptCode;
     private String url;
 }

+ 33 - 2
triage-service/src/main/java/com/diagbot/facade/AIFacade.java

@@ -213,6 +213,8 @@ public class AIFacade {
                     featureRateDTO.setDeptName(ddList.get(0).getDeptName());
                     featureRateDTO.setSubDeptName(ddList.get(0).getSubDeptName());
                     featureRateDTO.setDiseaseName(ddList.get(0).getDiseaseName());
+                    featureRateDTO.setDeptCode(ddList.get(0).getDeptCode());
+                    featureRateDTO.setSubDeptCode(ddList.get(0).getSubDeptCode());
                     if (StringUtil.isNotBlank(ddList.get(0).getSubDeptName())) {
                         featureRateDTO
                                 .setConcatDept(ddList.get(0).getDeptName() + "-" + ddList.get(0).getSubDeptName());
@@ -297,6 +299,8 @@ public class AIFacade {
                         SYFDiseaseDeptDTO syfDiseaseDeptDTO = new SYFDiseaseDeptDTO();
                         syfDiseaseDeptDTO.setDept(entry.getKey());
                         syfDiseaseDeptDTO.setUrl(entry.getValue().get(0).getUrl());
+                        syfDiseaseDeptDTO.setDeptCode(entry.getValue().get(0).getDeptCode());
+                        syfDiseaseDeptDTO.setSubDeptCode(entry.getValue().get(0).getSubDeptCode());
                         syfDiseaseDeptDTO.setFeatures(entry.getValue());
                         Double rate = 0d;
                         for (SYFFeatureDTO feature : entry.getValue()) {
@@ -374,15 +378,39 @@ public class AIFacade {
         }
         //推送结果根据diseaseName去重
         Iterator<SYFFeatureDTO> syfFeatureDTOIterator = featureRateList.iterator();
-        Map<String, SYFFeatureDTO> distinctMap = new HashMap<>();
+        Map<String, String> distinctMap = new HashMap<>();
         while (syfFeatureDTOIterator.hasNext()) {
             SYFFeatureDTO next = syfFeatureDTOIterator.next();
+            if (StringUtil.isBlank(next.getDiseaseName())) {
+                continue;
+            }
+            String featureName = "";
             if (distinctMap.containsKey(next.getDiseaseName())) {
+                featureName = distinctMap.get(next.getDiseaseName());
+                if (StringUtil.isNotBlank(featureName)) {
+                    featureName += ",";
+                }
+                featureName += next.getFeatureName();
                 syfFeatureDTOIterator.remove();
+                distinctMap.put(next.getDiseaseName(), featureName);
             } else {
-                distinctMap.put(next.getDiseaseName(), next);
+                distinctMap.put(next.getDiseaseName(), next.getFeatureName());
             }
         }
+        featureRateList.forEach(i -> {
+            if (distinctMap.containsKey(i.getDiseaseName())) {
+                i.setFeatureName(distinctMap.get(i.getDiseaseName()));
+            }
+        });
+
+        //根据featureName个数倒序排序
+        Collections.sort(featureRateList, new Comparator<SYFFeatureDTO>() {
+            @Override
+            public int compare(SYFFeatureDTO o1, SYFFeatureDTO o2) {
+                return Integer.compare(o2.getFeatureName().split(",").length,
+                        o1.getFeatureName().split(",").length);
+            }
+        });
 
         List<SYFDiseaseDeptDTO> mergeFeatureList = Lists.newLinkedList();
         Map<String, List<SYFFeatureDTO>> syfFeatureMap = new HashMap<>();
@@ -391,6 +419,8 @@ public class AIFacade {
                 SYFDiseaseDeptDTO syfDiseaseDeptDTO = new SYFDiseaseDeptDTO();
                 syfDiseaseDeptDTO.setDept(syfFeatureDTO.getConcatDept());
                 syfDiseaseDeptDTO.setUrl(syfFeatureDTO.getUrl());
+                syfDiseaseDeptDTO.setDeptCode(syfFeatureDTO.getDeptCode());
+                syfDiseaseDeptDTO.setSubDeptCode(syfFeatureDTO.getSubDeptCode());
                 List<SYFFeatureDTO> features = Lists.newLinkedList();
                 if (syfFeatureMap.containsKey(syfFeatureDTO.getConcatDept())) {
                     features = syfFeatureMap.get(syfFeatureDTO.getConcatDept());
@@ -401,6 +431,7 @@ public class AIFacade {
                 syfDiseaseDeptDTO.setFeatures(features);
                 syfFeatureMap.put(syfFeatureDTO.getConcatDept(), features);
             } else {
+                //科室为空的数据,不更改推理结果排序
                 SYFDiseaseDeptDTO syfDiseaseDeptDTO = new SYFDiseaseDeptDTO();
                 List<SYFFeatureDTO> features = Lists.newLinkedList();
                 features.add(syfFeatureDTO);