Ver código fonte

医嘱有抗生素使用病程无记录修改逻辑

huj 5 anos atrás
pai
commit
0edf107ea6

+ 9 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR02985.java

@@ -23,6 +23,7 @@ import org.springframework.stereotype.Component;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * @ClassName : THR02985
@@ -134,24 +135,25 @@ public class THR02985 extends QCCatalogue {
         for (Map.Entry<Date, String> doctorAdviceDrug : doctorAdviceDrugMap.entrySet()) {
             Date doctorAdviceDate = doctorAdviceDrug.getKey();
             String drugs = doctorAdviceDrug.getValue();
-            String[] drugArr = drugs.split(regex);
+            Set<String> splitDrugs = CatalogueUtil.getRegexWords(drugs, "[((\\[][^\\[\\]()()]+[\\]))]")
+                    .stream().filter(x -> !x.equals("合资") && !x.equals("进口") && !x.equals("国产")).collect(Collectors.toSet());
             String missDrug = "";
             //入院记录中找药
             if (StringUtil.isNotBlank(behospContent) && behospDate != null) {
-                missDrug = getMissDrug(behospContent, behospDate, doctorAdviceDate, drugArr, 2, missDrug);
+                missDrug = getMissDrug(behospContent, behospDate, doctorAdviceDate, splitDrugs, 2, missDrug);
                 if (StringUtil.isBlank(missDrug)) {//文本中已找到该抗生素
                     continue;
                 }
             }
             //从首程治疗计划中找药
             if (StringUtil.isNotBlank(firstCourseContent) && firstCourseDate != null) {
-                missDrug = getMissDrug(firstCourseContent, firstCourseDate, doctorAdviceDate, drugArr, 2, missDrug);
+                missDrug = getMissDrug(firstCourseContent, firstCourseDate, doctorAdviceDate, splitDrugs, 2, missDrug);
                 if (StringUtil.isBlank(missDrug)) {
                     continue;
                 }
             }
             for (Map.Entry<String, Date> info : operInfo.entrySet()) {
-                missDrug = getMissDrug(info.getKey(), info.getValue(), doctorAdviceDate, drugArr, 2, missDrug);
+                missDrug = getMissDrug(info.getKey(), info.getValue(), doctorAdviceDate, splitDrugs, 2, missDrug);
                 //当前抗生素药(drugs)在手术记录或术后首次病程录中已找到,直接跳出当前循环
                 if (StringUtil.isBlank(missDrug)) {
                     break;
@@ -167,14 +169,14 @@ public class THR02985 extends QCCatalogue {
                 String wardDateStr = wardDocStructureMap.get("查房日期");
                 String content = wardDocStructureMap.get("病情记录") + wardDocStructureMap.get("治疗计划和措施");
                 Date wardDate = StringUtil.parseDateTime(wardDateStr);
-                missDrug = getMissDrug(content, wardDate, doctorAdviceDate, drugArr, 2, missDrug);
+                missDrug = getMissDrug(content, wardDate, doctorAdviceDate, splitDrugs, 2, missDrug);
                 //当前抗生素药(drugs)在查房记录中已找到,直接跳出当前查房记录的循环
                 /*****************药品相似度模型******************/
                 List<ThreeLevelWardLabel> label = threeLevelWardDoc.getThreeLevelWardLabel();
                 if (label.size() > 0) {
                     List<Drug> drugList = label.get(0).getDrugs();
                     for (Drug drug : drugList) {
-                        for (String adDrug : drugArr) {
+                        for (String adDrug : splitDrugs) {
                             if (compareStandard(drug.getName(), adDrug)) {
                                 modelFind = true;
                                 break;
@@ -212,7 +214,7 @@ public class THR02985 extends QCCatalogue {
      * @param days
      * @return 如果文本中找到该药,则返回空字符串
      */
-    private String getMissDrug(String content, Date wardDate, Date doctorAdviceDate, String[] drugs, int days, String missDrug) {
+    private String getMissDrug(String content, Date wardDate, Date doctorAdviceDate, Set<String> drugs, int days, String missDrug) {
         if ("时间不匹配".equals(missDrug)) {
             missDrug = "";//初始化缺失药物
         }