Bladeren bron

北仑:主诊断过滤

huj 4 jaren geleden
bovenliggende
commit
5505d69bd2

+ 20 - 8
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/firstpagerecord/FIRP0178.java

@@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -38,12 +39,16 @@ public class FIRP0178 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getLeaveHospitalDoc() != null) {
             Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
             List<Map<String, String>> dischargeDiag = (List) firstpageStructureMap.get(Content.dischargeDiag);
-            String opcNum = (String) firstpageStructureMap.get("门急诊诊断编码");
+            String mainDiagnosis = "";
             if (ListUtil.isEmpty(dischargeDiag)) {
                 return;
             }
+            if (dischargeDiag.get(0) != null) {
+                mainDiagnosis = dischargeDiag.get(0).get("诊断名称");
+            }
+
             /* 病案首页出院小结诊断 除去主诊断*/
-            List<String> firstpageLeaveDiags = getFirstPageDiag(dischargeDiag, opcNum);
+            List<String> firstpageLeaveDiags = getFirstPageDiag(dischargeDiag);
             if (ListUtil.isEmpty(firstpageLeaveDiags)) {
                 return;
             }
@@ -69,7 +74,17 @@ public class FIRP0178 extends QCCatalogue {
                         infoStr = CatalogueUtil.concatInfo(infoStr, leaveDiag);
                     }
                 } else if (jsonArray.size() == 0) {
-                    infoStr = CatalogueUtil.concatInfo(infoStr, leaveDiag);
+                    JSONArray jsonArr = modelAI.loadChiefPresentSimilarAI(leaveDiag, Arrays.asList(mainDiagnosis), false
+                            , "diagnose", chiefPresentSimilarityServiceClient);
+                    if (jsonArr.size() == 2) {
+                        /* 相似度分数 */
+                        double likeRate = jsonArr.getDoubleValue(1);
+                        if (likeRate < 0.9) {
+                            infoStr = CatalogueUtil.concatInfo(infoStr, leaveDiag);
+                        }
+                    } else if (jsonArray.size() == 0) {
+                        infoStr = CatalogueUtil.concatInfo(infoStr, leaveDiag);
+                    }
                 }
             }
             if (StringUtil.isNotBlank(infoStr)) {
@@ -79,13 +94,10 @@ public class FIRP0178 extends QCCatalogue {
         }
     }
 
-    private List<String> getFirstPageDiag(List<Map<String, String>> dischargeDiag, String opcNum) {
+    private List<String> getFirstPageDiag(List<Map<String, String>> dischargeDiag) {
         List<String> firstpageDiag = new ArrayList<>();
         for (int i = 0; i < dischargeDiag.size(); i++) {
-            if ("门急诊诊断".equals(dischargeDiag.get(i).get("诊断类别"))) {
-                continue;
-            }
-            if (StringUtil.isNotBlank(opcNum) && opcNum.contains(dischargeDiag.get(i).get("诊断编码"))) {
+            if ("主要诊断".equals(dischargeDiag.get(i).get("诊断类别"))) {
                 continue;
             }
             String diagnoseName = dischargeDiag.get(i).get(Content.diagnoseName);