ソースを参照

Merge remote-tracking branch 'origin/hb/beilun' into hb/beilun

hecc 2 年 前
コミット
b0fadc482e

+ 1 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0190.java

@@ -62,7 +62,7 @@ public class FIRP0190 extends QCCatalogue {
 
         //获取病历内存在【输血*记录】文书,【病案首页>>血费】>0,填写(不详/未查/3/4/-),则报规则。
         String regex1 = "不详|未查|3|4|-";
-        if (ListUtil.isEmpty(clinicalBloodDocList)
+        if (ListUtil.isNotEmpty(clinicalBloodDocList)
                 || (firstpageStructureMap.containsKey("血费")
                 && BigDecimal.valueOf(Double.valueOf(firstpageStructureMap.get("血费"))).compareTo(BigDecimal.ZERO) == 1)) {
             if (RegexUtil.getRegexRes(rhFactor, regex1)) {
@@ -72,8 +72,6 @@ public class FIRP0190 extends QCCatalogue {
         }
 
         if (ListUtil.isNotEmpty(lisDocs)) {
-
-
             List<LisDoc> filterLisDocs = lisDocs.stream()
                     .filter(i -> RegexUtil.getRegexRes(i.getStructureMap().get("报告名称"), regexLis))
                     .filter(i -> RegexUtil.getRegexRes(i.getStructureMap().get("报告名称"), regexLisDetail))

+ 173 - 39
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03090.java

@@ -1,18 +1,25 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
+import com.google.common.collect.Lists;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.RegexUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
+import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
+import com.lantone.qc.pub.model.doc.MedicalRecordInfoDoc;
 import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
 import com.lantone.qc.pub.util.DateUtil;
+import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @ClassName : THR03090
@@ -23,66 +30,193 @@ import java.util.Objects;
 @Component
 public class THR03090 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        /**
+         *
+         * 1.判断病历中是否存在【手术记录】,若存在则继续,否则通过
+         * 2.获取【手术记录】的【手术时间/手术日期】,若结构数据标签不存在获取【手术开始时间/手术开始日期】,不存在非未填写。
+         * 3.用取到的手术日期判断与【住院信息表/病案首页]中的【入院日期/入院时间】为同一天,则此手术记录不做判断直接通过。
+         * 4.用取到的手术日期往前两天内查找【查房记录】,判断查房记录的标题是否含有【术前】和【主刀】若存在则通过。
+         * 5.若不存在,5.1获取【手术记录】中【主刀医师/主刀】结构数据;从手术日期往前两天内查找查房记录,判断查房记录的标题是否含有【主刀医师/主刀】真实姓名,若存在则通过。结构数据未填写还以第四步为准。
+         * 5.2若手术记录中没有【主刀医师/主刀】结构数据,获取【手术人员/手术者及助手名称】结构数据中填写的第一个姓名为主刀医师。结构数据未填写还以第四步为准。获取时需要分离带职称(主任/副主任/主治/住院/副教授/教授/研究生/总住院/进修医/住培医)和多余特殊符号后对比】
+         * 6.手术日期未取到,判断整份病历查房记录的标题是否含有【术前】和【主刀】若存在则通过。
+         */
+
         status.set("0");
         List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
-        long cou = inputInfo.getOperationDocs().stream().map(OperationDoc::getOperationRecordDoc).filter(Objects::nonNull).count();
-        if (cou == 0) {
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
+        MedicalRecordInfoDoc medicalRecordInfoDoc = inputInfo.getMedicalRecordInfoDoc();
+        //记录缺少术前查房记录的手术记录
+        List<OperationRecordDoc> unList = Lists.newArrayList();
+
+        if (operationDocs == null || operationDocs.size() == 0) {
             return;
         }
-        if (threeLevelWardDocs.size() == 0 && cou > 0) {
-            status.set("-1");
+
+        List<OperationRecordDoc> operationRecordDocs = operationDocs.stream()
+                .map(OperationDoc::getOperationRecordDoc)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());
+
+        if (ListUtil.isEmpty(operationRecordDocs)) {
             return;
         }
-        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-        if (operationDocs == null || operationDocs.size() == 0) {
-            return;
+
+        Date beDate = null;
+        Date beDate_hp = null;
+        if (StringUtil.isNotBlank(medicalRecordInfoDoc.getStructureMap().get("behospitalDate"))) {
+            beDate = DateUtil.getFirstTimeOfDay(StringUtil.parseDateTime(medicalRecordInfoDoc.getStructureMap().get("behospitalDate")));
         }
-        String operationStartDate = "";
-        if (operationDocs.get(operationDocs.size() - 1).getOperationRecordDoc() != null) {
-            Map<String, String> operationDocStructureMap = operationDocs.get(operationDocs.size() - 1).getOperationRecordDoc().getStructureMap();
-            operationStartDate = operationDocStructureMap.get("手术开始时间");
-            if (operationStartDate.contains("年月日")) {
-                operationStartDate = DateUtil.nowString();
-            }
+
+        if (StringUtil.isNotBlank(firstPageRecordDoc.getStructureMap().get("入院时间"))) {
+            beDate_hp = DateUtil.getFirstTimeOfDay(StringUtil.parseDateTime(firstPageRecordDoc.getStructureMap().get("入院时间")));
         }
 
-        if (StringUtil.isBlank(operationStartDate) || StringUtil.parseDateTime(operationStartDate) == null) {
+        //筛选手术日期不等于入院日期的手术记录
+        Date finalBeDate_hp = beDate_hp;
+        Date finalBeDate = beDate;
+        List<OperationRecordDoc> filterOperationRecordDocs = operationRecordDocs.stream().filter(i -> i.getStructureMap() != null
+                        && filterDate(i.getStructureMap()) != null
+                        && (DateUtil.getFirstTimeOfDay(filterDate(i.getStructureMap())).getTime() != finalBeDate.getTime()
+                        || DateUtil.getFirstTimeOfDay(filterDate(i.getStructureMap())).getTime() != finalBeDate_hp.getTime()))
+                .collect(Collectors.toList());
+        if (ListUtil.isEmpty(filterOperationRecordDocs)) {
             return;
         }
-        List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDocs.get(0).getAllDoctorWradDocs();
-        for (ThreeLevelWardDoc threeLevelWard : allDoctorWradDocs) {
-            Map<String, String> structureMap = threeLevelWard.getStructureMap();
-            String makeTitle = structureMap.get("查房标题");
-            String writTitle = structureMap.get("文书标题");
-            String makeDate = structureMap.get("查房日期");
-            if (StringUtil.isNotBlank(makeDate) && StringUtil.parseDateTime(makeDate).before(StringUtil.parseDateTime(operationStartDate))) {
-                if (((StringUtil.isNotBlank(makeTitle) && makeTitle.contains("主刀")) || (StringUtil.isNotBlank(writTitle) && writTitle.contains("主刀"))
-                        || ((StringUtil.isNotBlank(makeTitle) && makeTitle.contains("术前")) || (StringUtil.isNotBlank(writTitle) && writTitle.contains("术前"))))) {
-                    return;
-                }
-            }
+
+        List<ThreeLevelWardDoc> allThreeLevelWardDocs = Lists.newArrayList();
+        if (ListUtil.isNotEmpty(threeLevelWardDocs)) {
+            allThreeLevelWardDocs = threeLevelWardDocs.stream()
+                    .filter(Objects::nonNull)
+                    .filter(i -> ListUtil.isNotEmpty(i.getAllDoctorWradDocs()))
+                    .flatMap(i -> i.getAllDoctorWradDocs().stream())
+                    .distinct()
+                    .collect(Collectors.toList());
+        } else {
+            status.set("-1");
+            return;
         }
 
-        //判断医嘱里有无手术
-        List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
-        if (doctorAdviceDocs.size() == 0) {
+        if (ListUtil.isEmpty(allThreeLevelWardDocs)) {
+            status.set("-1");
             return;
         }
-        for (DoctorAdviceDoc dad : doctorAdviceDocs) {
-            String name = dad.getStructureMap().get("医嘱项目名称");
-            if (name.contains("非手术") || name.contains("手术室") || (name.contains("手术") && name.contains("取消")) || (name.contains("暂停") && name.contains("手术")) || name.contains("静脉穿刺置管术") || name.startsWith("停") || name.contains("前一次")
-                    || name.contains("特殊病人手术使用一次性卫生材料") || name.contains("人免疫缺陷病毒抗体检测免费")) {
-                continue;
+
+        for (OperationRecordDoc recordDoc : filterOperationRecordDocs) {
+            Date opDate = filterDate(recordDoc.getStructureMap());
+            Boolean isExist = false;
+            for (ThreeLevelWardDoc threeLevelWard : allThreeLevelWardDocs) {
+                Map<String, String> structureMap = threeLevelWard.getStructureMap();
+                String makeTitle = structureMap.get("查房标题");
+                String writTitle = structureMap.get("文书标题");
+                String makeDate = structureMap.get("查房日期");
+                if (StringUtil.isNotBlank(makeDate)
+                        && StringUtil.parseDateTime(makeDate).before(opDate)
+                        && StringUtil.parseDateTime(makeDate).after(DateUtil.addDay(DateUtil.getFirstTimeOfDay(opDate), -2))) {
+                    //查房记录的标题是否含有【术前】和【主刀】
+                    if (((StringUtil.isNotBlank(makeTitle) && makeTitle.contains("主刀")) || (StringUtil.isNotBlank(writTitle) && writTitle.contains("主刀")))
+                            && ((StringUtil.isNotBlank(makeTitle) && makeTitle.contains("术前")) || (StringUtil.isNotBlank(writTitle) && writTitle.contains("术前")))) {
+                        isExist = true;
+                        break;
+                    }
+
+                    //【主刀医师/主刀】结构数据
+                    String operatorName = recordDoc.getStructureMap().get("主刀医师");
+                    if (StringUtil.isBlank(operatorName)) {
+                        operatorName = recordDoc.getStructureMap().get("主刀");
+                    }
+
+                    //获取【手术人员/手术者及助手名称】
+                    if (StringUtil.isBlank(operatorName)) {
+                        String operatorNames = recordDoc.getStructureMap().get("手术人员");
+                        if (StringUtil.isBlank(operatorNames)) {
+                            operatorNames = recordDoc.getStructureMap().get("手术者及助手名称");
+                        }
+                        if (StringUtil.isNotBlank(operatorNames)) {
+                            operatorNames = operatorNames.replaceAll("、|;", " ")
+                                    .replaceAll(":|:", "=");
+                            String[] operatorNameArr = operatorNames.split(" ");
+                            if (operatorNameArr.length > 0) {
+                                String[] ky = operatorNameArr[0].split("=");
+                                if (ky.length > 1) {
+                                    operatorName = ky[1].trim();
+                                } else {
+                                    operatorName = operatorNameArr[0].trim();
+                                }
+
+                                //主任/副主任/主治/住院/副教授/教授/研究生/总住院/进修医/住培医
+                                if (StringUtil.isNotBlank(operatorName)) {
+                                    operatorName = operatorName.trim().replaceAll("主任|副主任|主治|住院|副教授|教授|研究生|总住院|进修医|住培医", "");
+                                }
+                            }
+                        }
+                    }
+                    //查房记录的标题是否含有【主刀医师/主刀】真实姓名
+                    if (StringUtil.isNotBlank(operatorName)) {
+                        if (StringUtil.isNotBlank(makeTitle) && makeTitle.contains(operatorName)
+                                || StringUtil.isNotBlank(writTitle) && writTitle.contains(operatorName)) {
+                            isExist = true;
+                            break;
+                        }
+                    }
+                }
             }
-            if (name.contains("手术")) {
-                status.set("-1");
+            //没有查房记录或没有术前两天内查房记录
+            if (!isExist) {
+                unList.add(recordDoc);
+            }
+        }
+
+        //手术日期未取到,判断整份病历查房记录的标题是否含有【术前】和【主刀】若存在则通过
+        filterOperationRecordDocs = operationRecordDocs.stream().filter(i -> i.getStructureMap() != null
+                        && filterDate(i.getStructureMap()) != null)
+                .collect(Collectors.toList());
+        if (ListUtil.isEmpty(filterOperationRecordDocs)) {
+            List<ThreeLevelWardDoc> threeLevelWardDocList = threeLevelWardDocs.stream().filter(i -> i.getStructureMap() != null
+                            && (StringUtil.isNotBlank(i.getStructureMap().get("查房标题")) && RegexUtil.getRegexRes(i.getStructureMap().get("查房标题"), "术前|主刀")
+                            || StringUtil.isNotBlank(i.getStructureMap().get("文书标题")) && RegexUtil.getRegexRes(i.getStructureMap().get("文书标题"), "术前|主刀")))
+                    .collect(Collectors.toList());
+            if (ListUtil.isNotEmpty(threeLevelWardDocList)) {
                 return;
             }
         }
 
-        if (cou > 0) {
+        if (ListUtil.isNotEmpty(unList)) {
             status.set("-1");
             return;
         }
     }
+
+    /**
+     * 获取【手术记录】的【手术时间/手术日期】,若结构数据标签不存在获取【手术开始时间/手术开始日期】,不存在非未填写。
+     */
+    public Date filterDate(Map<String, String> structureMap) {
+        String strDate = "";
+        if (structureMap.containsKey("手术时间")) {
+            strDate = structureMap.get("手术时间");
+        }
+        if (StringUtil.isBlank(strDate)
+                && structureMap.containsKey("手术日期")) {
+            strDate = structureMap.get("手术日期");
+        }
+
+        if (StringUtil.isBlank(strDate)
+                && !structureMap.containsKey("手术时间")
+                && !structureMap.containsKey("手术日期")) {
+
+            if (structureMap.containsKey("手术开始时间")) {
+                strDate = structureMap.get("手术开始时间");
+            }
+            if (StringUtil.isBlank(strDate)
+                    && structureMap.containsKey("手术开始日期")) {
+                strDate = structureMap.get("手术开始日期");
+            }
+        }
+
+        if (StringUtil.isNotBlank(strDate)) {
+            return StringUtil.parseDateTime(strDate);
+        } else {
+            return null;
+        }
+    }
 }

+ 77 - 36
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03122.java

@@ -1,16 +1,20 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.RegexUtil;
 import com.lantone.qc.pub.Content;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.*;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
 import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @ClassName : THR03119
@@ -24,11 +28,15 @@ public class THR03122 extends QCCatalogue {
         status.set("0");
         boolean flag = false;
         FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
+        FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
         List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
+        List<OperationDoc> operationDocList = inputInfo.getOperationDocs();
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+
         List<String> antimicrobialDrugList = Content.antimicrobialDrugList;
         List<String> cfAntibacterialList = Content.cfAntibacterialList;
         String drugAllergy = "";
-        String drugAllergyStr="";
+        String drugAllergyStr = "";
         //判断是否有抗菌药物的使用
         //首页费用
         if (firstPageRecordDoc != null) {
@@ -40,35 +48,34 @@ public class THR03122 extends QCCatalogue {
                     flag = true;
                 }
             }
-            drugAllergy = structureMap.get("过敏药物")+drugAllergy;
-            drugAllergyStr = structureMap.get("药物过敏")+drugAllergyStr;
+            drugAllergy = structureMap.get("过敏药物") + drugAllergy;
+            drugAllergyStr = structureMap.get("药物过敏") + drugAllergyStr;
         }
-            //查医嘱
-            List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
-            for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {
-                Map<String, String> structureMap = doctorAdviceDoc.getStructureMap();
-                String daStatus = structureMap.get(Content.doctorAdviceState);
-                if (StringUtil.isNotEmpty(daStatus)) {
-                    if (!Content.cancellationOrderList.contains(daStatus)) {
-                        String adviceType = structureMap.get(Content.doctorAdviceType);
-                        String drugType = structureMap.get(Content.drugType);
-                        //取长期和临时医嘱
-                        if (adviceType.equals(Content.statOrder) || adviceType.equals(Content.standingOrder)) {
-                            //取医嘱药品类型为抗生素的医嘱
-                            if (StringUtil.isNotEmpty(drugType)) {
-                                if(drugType.equals("抗生素")) {
-                                    String daItemName = structureMap.get(Content.medicalOrderName);
-                                    for (String antimicrobialDrug : antimicrobialDrugList) {
-                                        if (daItemName.contains(antimicrobialDrug)) {
-                                            //排除过敏药物的情况
-                                            if ((StringUtil.isEmpty(drugAllergy) || drugAllergy.equals("")) && (StringUtil.isEmpty(drugAllergyStr) || drugAllergyStr.equals(""))) {
-                                                flag = true;
-                                                break;
-                                            }
-                                            if (!drugAllergy.contains(antimicrobialDrug) && !drugAllergyStr.contains(antimicrobialDrug)) {
-                                                flag = true;
-                                                break;
-                                            }
+        //查医嘱
+        List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
+        for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {
+            Map<String, String> structureMap = doctorAdviceDoc.getStructureMap();
+            String daStatus = structureMap.get(Content.doctorAdviceState);
+            if (StringUtil.isNotEmpty(daStatus)) {
+                if (!Content.cancellationOrderList.contains(daStatus)) {
+                    String adviceType = structureMap.get(Content.doctorAdviceType);
+                    String drugType = structureMap.get(Content.drugType);
+                    //取长期和临时医嘱
+                    if (adviceType.equals(Content.statOrder) || adviceType.equals(Content.standingOrder)) {
+                        //取医嘱药品类型为抗生素的医嘱
+                        if (StringUtil.isNotEmpty(drugType)) {
+                            if (drugType.equals("抗生素")) {
+                                String daItemName = structureMap.get(Content.medicalOrderName);
+                                for (String antimicrobialDrug : antimicrobialDrugList) {
+                                    if (daItemName.contains(antimicrobialDrug)) {
+                                        //排除过敏药物的情况
+                                        if ((StringUtil.isEmpty(drugAllergy) || drugAllergy.equals("")) && (StringUtil.isEmpty(drugAllergyStr) || drugAllergyStr.equals(""))) {
+                                            flag = true;
+                                            break;
+                                        }
+                                        if (!drugAllergy.contains(antimicrobialDrug) && !drugAllergyStr.contains(antimicrobialDrug)) {
+                                            flag = true;
+                                            break;
                                         }
                                     }
                                 }
@@ -77,25 +84,26 @@ public class THR03122 extends QCCatalogue {
                     }
                 }
             }
-            //查房记录
-        if(ListUtil.isNotEmpty(threeLevelWardDocs)) {
+        }
+        //查房记录
+        if (ListUtil.isNotEmpty(threeLevelWardDocs)) {
             List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDocs.get(0).getAllDoctorWradDocs();
             for (ThreeLevelWardDoc allDoctorWradDoc : allDoctorWradDocs) {
                 String illness = allDoctorWradDoc.getStructureMap().get(Content.illnessRecords);
                 for (String antimicrobialDrug : antimicrobialDrugList) {
                     if (illness.contains(antimicrobialDrug)) {
-                        if((StringUtil.isEmpty(drugAllergy)||drugAllergy.equals(""))&&(StringUtil.isEmpty(drugAllergyStr)||drugAllergyStr.equals(""))){
+                        if ((StringUtil.isEmpty(drugAllergy) || drugAllergy.equals("")) && (StringUtil.isEmpty(drugAllergyStr) || drugAllergyStr.equals(""))) {
                             flag = true;
                             break;
                         }
-                        if(!drugAllergy.contains(antimicrobialDrug)&&!drugAllergyStr.contains(antimicrobialDrug)){
-                            flag=true;
+                        if (!drugAllergy.contains(antimicrobialDrug) && !drugAllergyStr.contains(antimicrobialDrug)) {
+                            flag = true;
                             break;
                         }
                     }
                 }
                 for (String cfAntibacterial : cfAntibacterialList) {
-                    if(illness.contains(cfAntibacterial)){
+                    if (illness.contains(cfAntibacterial)) {
                         flag = true;
                         break;
                     }
@@ -120,7 +128,7 @@ public class THR03122 extends QCCatalogue {
                                 }
                             }
                             for (String cfAntibacterial : cfAntibacterialList) {
-                                if(illnessRecords.contains(cfAntibacterial)){
+                                if (illnessRecords.contains(cfAntibacterial)) {
                                     status.set("0");
                                     return;
                                 }
@@ -128,6 +136,39 @@ public class THR03122 extends QCCatalogue {
                         }
                     }
                 }
+            } else if (firstCourseRecordDoc != null) {
+                if (StringUtil.isNotBlank(firstCourseRecordDoc.getText())) {
+                    if (RegexUtil.getRegexListRes(firstCourseRecordDoc.getText(), antimicrobialDrugList)
+                            || RegexUtil.getRegexListRes(firstCourseRecordDoc.getText(), cfAntibacterialList)) {
+                        status.set("0");
+                        return;
+                    }
+                }
+            } else if (ListUtil.isNotEmpty(operationDocList)) {
+                List<String> operativeFindingsList = operationDocList.stream()
+                        .map(OperationDoc::getOperationDiscussionDoc)
+                        .filter(Objects::nonNull)
+                        .filter(i -> i.getOperationDiscussionLabel() != null && StringUtil.isNotBlank(i.getOperationDiscussionLabel().getOperativeFindings()))
+                        .map(i -> i.getOperationDiscussionLabel().getOperativeFindings())
+                        .collect(Collectors.toList());
+
+                if (ListUtil.isNotEmpty(operativeFindingsList)) {
+                    for (String str : operativeFindingsList) {
+                        if (RegexUtil.getRegexListRes(str, antimicrobialDrugList)
+                                || RegexUtil.getRegexListRes(str, cfAntibacterialList)) {
+                            status.set("0");
+                            return;
+                        }
+                    }
+                }
+            } else if (leaveHospitalDoc != null) {
+                if (leaveHospitalDoc.getStructureMap() != null && StringUtil.isNotBlank(leaveHospitalDoc.getStructureMap().get("诊疗经过"))) {
+                    if (RegexUtil.getRegexListRes(leaveHospitalDoc.getStructureMap().get("诊疗经过"), antimicrobialDrugList)
+                            || RegexUtil.getRegexListRes(leaveHospitalDoc.getStructureMap().get("诊疗经过"), cfAntibacterialList)) {
+                        status.set("0");
+                        return;
+                    }
+                }
             }
         }
     }