瀏覽代碼

Crf模型处理病例文本

kwzbigdata 4 年之前
父節點
當前提交
1d59a57914

+ 27 - 0
src/main/java/com/diagbot/dto/WordBillCrfDTO.java

@@ -0,0 +1,27 @@
+package com.diagbot.dto;
+
+import com.diagbot.model.label.*;
+import lombok.Data;
+
+/**
+ * crf 解析后各個模塊出參
+ *
+ * @author kwz (zjlantone)
+ * @create 07 30, 2020
+ * @since 1.0.0
+ */
+@Data
+public class WordBillCrfDTO {
+    private ChiefLabel chiefLabel;
+    private DiagLabel diagLabel;
+    private FamilyLabel familyLabel;
+    private LisLabel lisLabel;
+    private MaritalLabel maritalLabel;
+    private MenstrualLabel menstrualLabel;
+    private PresentLabel presentLabel;
+    private PacsLabel pacsLabel;
+    private PastLabel pastLabel;
+    private PersonalLabel personalLabel;
+    private VitalLabel vitalLabel;
+
+}

+ 4 - 0
src/main/java/com/diagbot/facade/BillFacade.java

@@ -2,6 +2,7 @@ package com.diagbot.facade;
 
 import com.diagbot.dto.BillDTO;
 import com.diagbot.dto.BillNeoDTO;
+import com.diagbot.dto.WordBillCrfDTO;
 import com.diagbot.vo.BillNeoVO;
 import com.diagbot.vo.IndicationPushVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,6 +20,8 @@ public class BillFacade {
     NeoFacade neoFacade;
     @Autowired
     RuleFacade ruleFacade;
+    @Autowired
+    CommonFacade commonFacade;
 
     /**
      * 开单合理性业务
@@ -27,6 +30,7 @@ public class BillFacade {
      */
     public BillDTO billFac(IndicationPushVO indicationPushVO) {
         // 模型处理数据 TODO
+        WordBillCrfDTO wordBillCrfDTO = commonFacade.crf_process(indicationPushVO);
 
         // 标准词转换 TODO
 

+ 14 - 0
src/main/java/com/diagbot/facade/CommonFacade.java

@@ -1,5 +1,10 @@
 package com.diagbot.facade;
 
+import com.diagbot.client.CRFServiceClient;
+import com.diagbot.dto.WordBillCrfDTO;
+import com.diagbot.model.ai.AIAnalyze;
+import com.diagbot.vo.IndicationPushVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 /**
@@ -9,5 +14,14 @@ import org.springframework.stereotype.Component;
  */
 @Component
 public class CommonFacade {
+    @Autowired
+    CRFServiceClient crfServiceClient;
+
+    public WordBillCrfDTO crf_process(IndicationPushVO indicationPushVO){
+        AIAnalyze aiAnalyze = new AIAnalyze(crfServiceClient);
+        WordBillCrfDTO wordBillCrfDTO = new WordBillCrfDTO();
+        aiAnalyze.aiProcess(indicationPushVO,wordBillCrfDTO);
+        return wordBillCrfDTO;
+    }
 
 }

+ 8 - 16
src/main/java/com/diagbot/model/ai/AIAnalyze.java

@@ -1,30 +1,22 @@
 package com.diagbot.model.ai;
 
 
+import com.diagbot.client.CRFServiceClient;
+import com.diagbot.dto.WordBillCrfDTO;
+import com.diagbot.vo.IndicationPushVO;
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
 public class AIAnalyze {
 
-    /*private CRFServiceClient crfServiceClient;
-    private SimilarityServiceClient similarityServiceClient;
+    private CRFServiceClient crfServiceClient;
     BeHospitalizedAI beHospitalizedAI = new BeHospitalizedAI();
-    FirstCourseRecordAI firstCourseRecordAI = new FirstCourseRecordAI();
-    LeaveHospitalAI leaveHospitalAI = new LeaveHospitalAI();
-    ThreeLevelWardAI threeLevelWardAI = new ThreeLevelWardAI();
-    OperationAI operationAI = new OperationAI();
 
-    public AIAnalyze(CRFServiceClient crfService, SimilarityServiceClient similarityServiceClient) {
+    public AIAnalyze(CRFServiceClient crfService) {
         this.crfServiceClient = crfService;
-        this.similarityServiceClient = similarityServiceClient;
     }
 
-    public void aiProcess(InputInfo inputInfo) {
-        beHospitalizedAI.medrec(inputInfo, crfServiceClient);
-        firstCourseRecordAI.medrec(inputInfo, crfServiceClient, similarityServiceClient);
-        leaveHospitalAI.medrec(inputInfo, crfServiceClient);
-        threeLevelWardAI.medrec(inputInfo, crfServiceClient);
-        operationAI.medrec(inputInfo, crfServiceClient);
-    }*/
-
+    public void aiProcess(IndicationPushVO inputInfo, WordBillCrfDTO wordBillCrfDTO) {
+        beHospitalizedAI.medrec(inputInfo,wordBillCrfDTO,crfServiceClient);
+    }
 }

文件差異過大導致無法顯示
+ 512 - 491
src/main/java/com/diagbot/model/ai/BeHospitalizedAI.java


+ 1 - 22
src/main/java/com/diagbot/model/ai/ModelAI.java

@@ -27,15 +27,8 @@ public class ModelAI {
      * @param crfServiceClient
      * @return
      */
-    protected JSONObject loadAI(boolean useCrfCache, String behospitalCode, JSONArray crfContent, CRFServiceClient crfServiceClient) {
+    protected JSONObject loadAI(JSONArray crfContent, CRFServiceClient crfServiceClient) {
         JSONArray data = null;
-        /*RedisUtil redisUtil = SpringContextUtil.getBean("redisUtil");
-        SpecialStorageUtil specialStorageUtil = SpringContextUtil.getBean("specialStorageUtil");
-        String prex = "crf_cache:" + specialStorageUtil.getHospitalIdThreadLocal().get() + ":";
-        String classname = this.getClass().getName();
-        if (useCrfCache) {
-            data = (JSONArray) redisUtil.hget(prex + behospitalCode, classname);
-        }*/
         if (data == null) {
             //存储CRF完整所需结构数据
             CRFVo crfVo = new CRFVo();
@@ -43,25 +36,11 @@ public class ModelAI {
             long t1 = System.currentTimeMillis();
             //获取CRF模型返回数据
             data = getAnnotation(crfServiceClient, crfVo).getData();
-            long t2 = System.currentTimeMillis();
-            /*log.error(behospitalCode + "-----" + classname + "(CRF)  耗时:" + (t2 - t1));
-            if (data != null) {
-                redisUtil.hset(prex + behospitalCode, classname, data, 86400);
-            }*/
         }
         JSONObject midData = getOutputs(data);
         return midData;
     }
 
-    protected JSONObject loadEntity(JSONObject jsonObject, String entityRelationObject, String outputs, String content) {
-        if (jsonObject == null) {
-            return new JSONObject();
-        }
-        JSONObject aiOut = jsonObject.getJSONObject(entityRelationObject).getJSONObject(outputs);
-        aiOut.put(content, jsonObject.getJSONObject(entityRelationObject).getString(content));
-        return aiOut;
-    }
-
     private Annotation getAnnotation(CRFServiceClient crfServiceClient, CRFVo crfVo) {
         Annotation annotation = new Annotation();
         try {