rengb пре 5 година
родитељ
комит
758e62d2d4

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/analysis/QCAnalysis.java

@@ -36,6 +36,7 @@ public class QCAnalysis {
         specialStorageUtil.getHospitalIdThreadLocal().set(queryVo.getHospitalId());
         OutputInfo outputInfo = new OutputInfo();
         InputInfo inputInfo = TransDispatch.trans(queryVo);
+        inputInfo.setUseCrfCache(queryVo.isUseCrfCache());
         inputInfo.setInputCatalogueMap(queryVo.getInputCatalogueMap());
         AIAnalyze aiAnalyze = new AIAnalyze(crfServiceClient, similarityServiceClient);
         try {

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/BeHospitalizedAI.java

@@ -144,7 +144,7 @@ public class BeHospitalizedAI extends ModelAI {
                 }
                 putContent(crfContent, medicalTextType.get(6), supple_diag_text, Content.supple_diag);
             }
-            JSONObject midData = loadAI(crfContent, crfServiceClient);
+            JSONObject midData = loadAI(inputInfo.isUseCrfCache(), inputInfo.getMedicalRecordInfoDoc().getStructureMap().get("behospitalCode"), crfContent, crfServiceClient);
             //处理主诉
             if (beHospitalizedDoc.getChiefLabel().isCrfLabel()) {
                 putChiefCrfData(midData.getJSONObject(Content.chief), inputInfo);

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/FirstCourseRecordAI.java

@@ -107,7 +107,7 @@ public class FirstCourseRecordAI extends ModelAI {
                 //                }
             }
 
-            JSONObject midData = loadAI(crfContent, crfServiceClient);//crf返回数据
+            JSONObject midData = loadAI(inputInfo.isUseCrfCache(), inputInfo.getMedicalRecordInfoDoc().getStructureMap().get("behospitalCode"), crfContent, crfServiceClient);//crf返回数据
             //if (midData.containsKey(Content.case_feature)) {
             //  putCaseCharacteristicCrfData(midData.getJSONObject(Content.case_feature), inputInfo);//处理病历特点
             //}

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/LeaveHospitalAI.java

@@ -57,7 +57,7 @@ public class LeaveHospitalAI extends ModelAI {
                 }
             }
         }
-        JSONObject midData = loadAI(crfContent, crfServiceClient);//crf返回数据
+        JSONObject midData = loadAI(inputInfo.isUseCrfCache(), inputInfo.getMedicalRecordInfoDoc().getStructureMap().get("behospitalCode"), crfContent, crfServiceClient);//crf返回数据
         if (midData.containsKey(Content.discharge)) {
             putDischargeCrfData(midData.getJSONObject(Content.discharge), inputInfo);//出院小结
         }

+ 19 - 6
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/ModelAI.java

@@ -3,6 +3,7 @@ package com.lantone.qc.kernel.structure.ai;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.lantone.qc.dbanaly.util.RedisUtil;
 import com.lantone.qc.kernel.client.CRFServiceClient;
 import com.lantone.qc.kernel.client.ChiefPresentSimilarityServiceClient;
 import com.lantone.qc.kernel.client.SimilarityServiceClient;
@@ -12,6 +13,7 @@ import com.lantone.qc.pub.model.entity.ChiefPresentAnnotation;
 import com.lantone.qc.pub.model.vo.CRFVo;
 import com.lantone.qc.pub.model.vo.ChiefPresentSimilarityVo;
 import com.lantone.qc.pub.model.vo.SimilarityVo;
+import com.lantone.qc.pub.util.SpringContextUtil;
 import com.lantone.qc.pub.util.StringUtil;
 
 import java.util.List;
@@ -30,12 +32,23 @@ public class ModelAI {
      * @param crfServiceClient
      * @return
      */
-    protected JSONObject loadAI(JSONArray crfContent, CRFServiceClient crfServiceClient) {
-        //存储CRF完整所需结构数据
-        CRFVo crfVo = new CRFVo();
-        crfVo.setData(crfContent);
-        //获取CRF模型返回数据
-        JSONArray data = getAnnotation(crfServiceClient, crfVo).getData();
+    protected JSONObject loadAI(boolean useCrfCache, String behospitalCode, JSONArray crfContent, CRFServiceClient crfServiceClient) {
+        JSONArray data = null;
+        RedisUtil redisUtil = SpringContextUtil.getBean("redisUtil");
+        String classname = this.getClass().getName();
+        if (useCrfCache) {
+            data = (JSONArray) redisUtil.hget(behospitalCode, classname);
+        }
+        if (data == null) {
+            //存储CRF完整所需结构数据
+            CRFVo crfVo = new CRFVo();
+            crfVo.setData(crfContent);
+            //获取CRF模型返回数据
+            data = getAnnotation(crfServiceClient, crfVo).getData();
+            if (data != null) {
+                redisUtil.hset(behospitalCode, classname, data, 86400);
+            }
+        }
         JSONObject midData = getOutputs(data);
         return midData;
     }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/OperationAI.java

@@ -41,7 +41,7 @@ public class OperationAI extends ModelAI {
             putContent(crfContent, medicalTextType.get(0), operationDiscussionDoc.getText(), Content.operation_Discussion + i);
         }
 
-        JSONObject midData = loadAI(crfContent, crfServiceClient);//crf返回数据
+        JSONObject midData = loadAI(inputInfo.isUseCrfCache(), inputInfo.getMedicalRecordInfoDoc().getStructureMap().get("behospitalCode"), crfContent, crfServiceClient);//crf返回数据
 
         for (int i = 0; i < operationDocs.size(); i++) {
             if (midData.get(Content.operation_Discussion + i) == null) {

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/ThreeLevelWardAI.java

@@ -87,7 +87,7 @@ public class ThreeLevelWardAI extends ModelAI {
             }
         }
 
-        JSONObject midData = loadAI(crfContent, crfServiceClient);//crf返回数据
+        JSONObject midData = loadAI(inputInfo.isUseCrfCache(), inputInfo.getMedicalRecordInfoDoc().getStructureMap().get("behospitalCode"), crfContent, crfServiceClient);//crf返回数据
 
         //主治医师首次查房记录模型输出
         if (midData.get(Content.attend) != null) {

+ 1 - 0
public/src/main/java/com/lantone/qc/pub/model/InputInfo.java

@@ -91,6 +91,7 @@ public class InputInfo {
     private List<DailyCourseRecordDoc> dailyCourseRecordDocs = Lists.newArrayList();
     //住院病历信息
     private MedicalRecordInfoDoc medicalRecordInfoDoc;
+    private boolean useCrfCache;
 
     //新增记录
     public <T> void addDoc(List<T> list, T obj) {

+ 2 - 0
public/src/main/java/com/lantone/qc/pub/model/vo/QueryVo.java

@@ -25,4 +25,6 @@ public class QueryVo extends TokenVO {
 
     private String hospitalId;
 
+    private boolean useCrfCache;
+
 }