|
@@ -5,6 +5,7 @@ import org.apache.commons.lang3.StringUtils;
|
|
|
import org.diagbot.common.push.bean.FeatureRate;
|
|
|
import org.diagbot.common.push.bean.ResponseData;
|
|
|
import org.diagbot.common.push.cache.CacheUtil;
|
|
|
+import org.diagbot.nlp.relation.module.Lis;
|
|
|
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.util.*;
|
|
@@ -81,6 +82,7 @@ public class ClassifyDiag {
|
|
|
public List<FeatureRate> diagClassify(List<FeatureRate> updateFeatures){
|
|
|
List<FeatureRate> finalDiagList = new LinkedList<>();//最终返回
|
|
|
List<String> highDiagList = new LinkedList<>();//警惕集合
|
|
|
+ List<String> diffDiagList = new LinkedList<>();//鉴别诊断集合
|
|
|
List<String> queDiagList = new LinkedList<>();//确诊集合
|
|
|
List<String> bigDiagList = new LinkedList<>();//可能诊断集合
|
|
|
if(updateFeatures != null && updateFeatures.size()>0){
|
|
@@ -93,6 +95,9 @@ public class ClassifyDiag {
|
|
|
d = jsonObject;
|
|
|
if(d.keySet().size() == 1 && "警惕".equals(d.keySet().toArray()[0])){
|
|
|
highDiagList.add(featureName);
|
|
|
+ }else if(d.keySet().size() == 1 && ("鉴别诊断".equals(d.keySet().toArray()[0])
|
|
|
+ || "页面急诊".equals(d.keySet().toArray()[0])) || "急诊".equals(d.keySet().toArray()[0])){
|
|
|
+ diffDiagList.add(featureName);
|
|
|
}else {
|
|
|
queDiagList.add(featureName);
|
|
|
}
|
|
@@ -112,6 +117,17 @@ public class ClassifyDiag {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ //再把鉴别诊断加进去
|
|
|
+ if(diffDiagList.size()>0){
|
|
|
+ for(int j =0;j<updateFeatures.size();j++){
|
|
|
+ FeatureRate featureRate = updateFeatures.get(j);
|
|
|
+ String featureName = featureRate.getFeatureName();
|
|
|
+ int i = diffDiagList.indexOf(featureName);
|
|
|
+ if(i >= 0){
|
|
|
+ finalDiagList.add(featureRate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
/**
|
|
|
* 这里处理一下可能诊断剔除的功能
|
|
|
* 如果图谱推出的诊断和可能诊断有层级关系,就把对应的可能诊断剔除
|
|
@@ -121,12 +137,16 @@ public class ClassifyDiag {
|
|
|
System.out.println("图谱归一前数据 :"+queDiagList);
|
|
|
if(queDiagList != null && queDiagList.size()>0){
|
|
|
//图谱归一 ,图谱sign =0,大数据sign = 1
|
|
|
- queSet = this.diagProcess(queDiagList,0);
|
|
|
+ List<String> que = this.processQue(updateFeatures, queDiagList);
|
|
|
+ queSet = this.diagProcess(que,0);
|
|
|
System.out.println("图谱归一后的数据 :"+queSet);
|
|
|
if(queSet != null && queSet.size()>0){
|
|
|
for (String queDis:queSet) {
|
|
|
if(queDiagList.indexOf(queDis)>=0){ //可以找到,就取出来,用原来的
|
|
|
FeatureRate feature = this.getFeature(updateFeatures, queDis);
|
|
|
+ if(feature.getDesc().contains("拟诊")){
|
|
|
+ feature.setDesc(feature.getDesc().replace("拟诊","确诊"));
|
|
|
+ }
|
|
|
feature.setExtraProperty(diagDepartCache.get(queDis));
|
|
|
finalDiagList.add(feature);
|
|
|
}else {
|
|
@@ -527,5 +547,55 @@ public class ClassifyDiag {
|
|
|
}
|
|
|
return arrayList;
|
|
|
}
|
|
|
+ //归一有确诊的诊断
|
|
|
+ public List<String> processQue(List<FeatureRate> updateFeatures,List<String>queList){
|
|
|
+ List<String> finallyQue = new LinkedList<>();
|
|
|
+ List<String> que = new ArrayList<>();
|
|
|
+ List<String> ni = new ArrayList<>();
|
|
|
+ for (String qd:queList) {
|
|
|
+ for (FeatureRate f:updateFeatures) {
|
|
|
+ if("neo4j".equals(f.getSource()) && qd.equals(f.getFeatureName())){
|
|
|
+ if(f.getDesc().contains("确诊")){
|
|
|
+ que.add(qd);
|
|
|
+ }else if(f.getDesc().contains("拟诊")) {
|
|
|
+ ni.add(qd);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(que != null && que.size()>0){
|
|
|
+ for (String q:que) {
|
|
|
+ Set<String> classifySet = new HashSet<>();
|
|
|
+ String s = diagClassifyCache.get(q);
|
|
|
+ if(StringUtils.isNotEmpty(s)){
|
|
|
+ classifySet.add(s);
|
|
|
+ List<Object> key = this.getKey(diagClassifyCache, s);
|
|
|
+ if(key != null && key.size()>0){
|
|
|
+ for (Object o:key) {
|
|
|
+ classifySet.add(o.toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<Object> key = this.getKey(diagClassifyCache, q);
|
|
|
+ if(key != null && key.size()>0){
|
|
|
+ for (Object o:key) {
|
|
|
+ classifySet.add(o.toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(classifySet != null && classifySet.size()>0){
|
|
|
+ for (String sq:classifySet
|
|
|
+ ) {
|
|
|
+ if(ni.indexOf(sq) >= 0){
|
|
|
+ ni.remove(sq);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ finallyQue.addAll(que);
|
|
|
+ finallyQue.addAll(ni);
|
|
|
+ return finallyQue;
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
}
|