瀏覽代碼

义乌出院带药与医嘱不一致添加相似度模型判断

hujing 4 年之前
父節點
當前提交
0907504d37
共有 1 個文件被更改,包括 30 次插入5 次删除
  1. 30 5
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/yiwu/leavehospital/LEA02987.java

+ 30 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/yiwu/leavehospital/LEA02987.java

@@ -1,14 +1,18 @@
 package com.lantone.qc.kernel.catalogue.yiwu.leavehospital;
 
+import com.google.common.collect.Lists;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.kernel.util.SimilarityUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.DeathCaseDiscussDoc;
 import com.lantone.qc.pub.model.doc.DeathRecordDoc;
 import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
 import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
+import com.lantone.qc.pub.model.entity.Drug;
 import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
@@ -25,6 +29,8 @@ import java.util.Set;
  */
 @Component
 public class LEA02987 extends QCCatalogue {
+    @Autowired
+    SimilarityUtil similarityUtil;
 
     @Override
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
@@ -39,6 +45,20 @@ public class LEA02987 extends QCCatalogue {
         if (deathRecordDoc != null || deathCaseDiscussDoc != null) {
             return;
         }
+        List<Drug> drugList = null;
+        if (leaveHospitalDoc.getLeaveHospitalLabel() != null) {
+            drugList = leaveHospitalDoc.getLeaveHospitalLabel().getDrugs();
+        }
+        List<String> leaveDrugStandard = Lists.newArrayList();
+        if (drugList != null && drugList.size() > 0) {
+            for (Drug drug : drugList) {
+                String name = drug.getName();
+                String drugStandardWord = similarityUtil.getDrugStandardWord(name);
+                if (StringUtil.isNotBlank(drugStandardWord)) {
+                    leaveDrugStandard.add(drugStandardWord);
+                }
+            }
+        }
         Map<String, String> structureMap = leaveHospitalDoc.getStructureMap();
         String dischargeOrder = structureMap.get("出院医嘱");
         if (StringUtil.isBlank(dischargeOrder)) {
@@ -58,26 +78,31 @@ public class LEA02987 extends QCCatalogue {
 
         String infoStr = "";
         List<String> notContainsDrugs = new ArrayList<>();
-        for (String drug:drugs) {
-            if (!dischargeOrder.contains(drug)){
+        for (String drug : drugs) {
+            if (!dischargeOrder.contains(drug)) {
                 notContainsDrugs.add(drug);
             }
         }
 
         //没有包含的药品再次查看商品名或化学名在出院医嘱书写
         for (String drug : notContainsDrugs) {
-            Set<String> splitDrugs = CatalogueUtil.getRegexWords(drug, "[((\\[][^\\[\\]()()]+[\\]))]");
             boolean isFind = false;
+            String drugStandardWord = similarityUtil.getDrugStandardWord(drug);
+            if (StringUtil.isNotBlank(drugStandardWord) && leaveDrugStandard.contains(drugStandardWord)) {
+                isFind = true;
+            }
+            Set<String> splitDrugs = CatalogueUtil.getRegexWords(drug, "[((\\[][^\\[\\]()()]+[\\]))]");
             for (String sd : splitDrugs) {
-                if (dischargeOrder.contains(sd)){
+                if (dischargeOrder.contains(sd)) {
                     isFind = true;
+                    break;
                 }
             }
             if (!isFind) {
                 infoStr = CatalogueUtil.concatInfo(infoStr, drug);
             }
         }
-        if (StringUtil.isNotBlank(infoStr)){
+        if (StringUtil.isNotBlank(infoStr)) {
             status.set("-1");
             info.set(infoStr);
         }