louhr 6 سال پیش
والد
کامیت
4e35e5b26a

+ 9 - 0
common-service/src/main/java/org/diagbot/common/work/SearchData.java

@@ -24,6 +24,7 @@ public class SearchData {
     //外部系统编码 用于返回映射数据,如果sysCode为空或null,则返回kl_standard_info标准名称
     protected String sysCode;
     private List<LisDetail> lisArr = new ArrayList<>();
+    protected String chief  = "";
     protected String symptom = "";
     protected String vital = "";
     protected String lis = "";
@@ -148,6 +149,14 @@ public class SearchData {
         this.inputs = inputs;
     }
 
+    public String getChief() {
+        return chief;
+    }
+
+    public void setChief(String chief) {
+        this.chief = chief;
+    }
+
     public String getSymptom() {
         return symptom;
     }

+ 42 - 9
nlp-web/src/main/java/org/diagbot/nlp/controller/FeatureController.java

@@ -8,9 +8,15 @@ import org.diagbot.nlp.dao.model.Info;
 import org.diagbot.nlp.dao.model.wrapper.FeatureWrapper;
 import org.diagbot.nlp.feature.FeatureAnalyze;
 import org.diagbot.nlp.feature.FeatureType;
+import org.diagbot.nlp.participle.ParticipleUtil;
+import org.diagbot.nlp.participle.word.Lexeme;
+import org.diagbot.nlp.participle.word.LexemePath;
 import org.diagbot.nlp.service.FeatureService;
 import org.diagbot.nlp.service.InfoService;
 import org.diagbot.nlp.util.Constants;
+import org.diagbot.nlp.util.NegativeEnum;
+import org.diagbot.nlp.util.NlpCache;
+import org.diagbot.nlp.util.NlpUtil;
 import org.diagbot.pub.api.Response;
 import org.diagbot.pub.jdbc.MysqlJdbc;
 import org.diagbot.pub.web.BaseController;
@@ -62,15 +68,42 @@ public class FeatureController extends BaseController<Feature, FeatureWrapper, L
     @ResponseBody
     public Response findSymptomFeature(HttpServletRequest request, String text) throws Exception {
         Response response = new Response();
-        //获取入参中的特征信息
-        FeatureAnalyze fa = new FeatureAnalyze();
-        List<Map<String, Object>> symptomsList_symptom = fa.start(text, FeatureType.SYMPTOM);
-        List<Map<String, Object>> symptomsList_diag = fa.start(text, FeatureType.DIAG);
-
-        List<Map<String, Object>> symptomsList = new ArrayList<>();
-        symptomsList.addAll(symptomsList_symptom);
-        symptomsList.addAll(symptomsList_diag);
-        response.setData(symptomsList);
+
+        Map<String, String> classifies = NlpCache.getStandard_info_classify_map();
+        LexemePath<Lexeme> lexemes = ParticipleUtil.participle(text);
+
+        String[] properties = null;
+        String[] conceptIds = null;
+        List<Map<String, String>> featureList = new ArrayList<>();
+        for (Lexeme lexeme : lexemes) {
+            properties = lexeme.getProperty().split(",");
+            conceptIds = lexeme.getConcept().split(",");
+            for (int i = 0; i < properties.length; i++) {
+                if (NlpUtil.isFeature(properties[i], new NegativeEnum[]{NegativeEnum.SYMPTOM})) {
+                    Map<String, String> map = new HashMap<>();
+                    map.put("conceptId", conceptIds[i]);
+                    map.put("name", lexeme.getText());
+                    map.put("libType", NegativeEnum.SYMPTOM.toString());
+                    featureList.add(map);
+                }
+                if (NlpUtil.isFeature(properties[i], new NegativeEnum[]{NegativeEnum.DISEASE})) {
+                    Map<String, String> map = new HashMap<>();
+                    map.put("conceptId", conceptIds[i]);
+                    map.put("name", lexeme.getText());
+                    map.put("libType", NegativeEnum.DISEASE.toString());
+
+                    if ("慢病".equals(classifies.get(lexeme.getText()))) {
+                        for (Lexeme l : lexemes) {
+                            if (NlpUtil.isFeature(l.getProperty(), new NegativeEnum[]{NegativeEnum.RETURN_VISIT})) {
+                                map.put("chronicLabel", "1");
+                            }
+                        }
+                    }
+                    featureList.add(map);
+                }
+            }
+        }
+        response.setData(featureList);
         return response;
     }
 

+ 5 - 1
nlp/src/main/java/org/diagbot/nlp/util/NegativeEnum.java

@@ -13,7 +13,8 @@ public enum NegativeEnum {
     OTHER("44"),
     VITAL_INDEX("33"), VITAL_INDEX_VALUE("34"), VITAL_RESULT("35"),
     ADDRESS("36"), PERSON("38"), PERSON_FEATURE_DESC("39"),
-    SCALE("44");
+    SCALE("44"),
+    RETURN_VISIT("68");
     private String value;
 
     NegativeEnum(String value) {
@@ -142,6 +143,9 @@ public enum NegativeEnum {
             case "44":
                 negativeEnum = org.diagbot.nlp.util.NegativeEnum.OTHER;
                 break;
+            case "68":
+                negativeEnum = NegativeEnum.RETURN_VISIT;
+                break;
         }
         return negativeEnum;
     }

+ 2 - 2
nlp/src/main/resources/tc.dict

@@ -94708,7 +94708,7 @@ xtcwp1bI7w/gJez3B0poFqY9+42B6wzV
 xtcwp1bI7w/iw02nxXTF8zR9HOv8OWNRSmARnfpRl/s=
 TqSHFtHKrzqHDjyHip04zuiQOnihCrYcQRV4Jz0l4sk=
 zWrUXdYzj0o9HKZzPzqY4qZeSA7nXac6
-584X++2Q32aEUdpPnCvBe5LpFrz+1MIZ
+584X++2Q32ZrRbHPWPtLgJLpFrz+1MIZ
 4OVCXLaazQzaKg1rt/wnxZzOPX22q1Id+DOauURdiRU=
 7cSSUp95p6s9HKZzPzqY4pJMOEoJ/C7f
 duNZb8ofowg9HKZzPzqY4gf8ZyJNDKog
@@ -94762,7 +94762,7 @@ YzrxwAeIbQ2BetEsrrCr/41tEvgJynVqva3Wj+B6eQwXN8295TRBpg==
 Su0yz66pYc3+I79okxmRXDCm4EOS00M0
 OEEaI4UoZyFkw1R0YAQ2z7s5zPl2CNyL
 r6VaVSwjR6M9HKZzPzqY4mC6YQou/dBB
-tRfX8MWUk95UvEtkmVhMgWC6YQou/dBB
+tRfX8MWUk95ipbxXouxix2C6YQou/dBB
 G0kaa5dTe7XRTgsDJySPk2khl9lPKASvbwNhYIIHpe8=
 e1VeBOROKEbaKg1rt/wnxZzOPX22q1Idwqaupf1om8M=
 VCtYE2ZJTA4LF41GsFPe+kGsdOGgj/Hl

+ 3 - 2
push-web/src/main/java/org/diagbot/push/controller/AlgorithmController.java

@@ -5,8 +5,9 @@ import org.diagbot.common.javabean.Drugs;
 import org.diagbot.common.javabean.Filnlly;
 import org.diagbot.common.javabean.MedicalIndication;
 import org.diagbot.common.javabean.Medicition;
-import org.diagbot.common.work.*;
-import org.diagbot.graphWeb.work.DiseaseCalculate;
+import org.diagbot.common.work.FeatureRate;
+import org.diagbot.common.work.ResponseData;
+import org.diagbot.common.work.SearchData;
 import org.diagbot.graphWeb.work.GraphCalculate;
 import org.diagbot.graphWeb.work.LisPacsCalculate;
 import org.diagbot.pub.api.Response;