Bladeren bron

医嘱以’停‘开头的医嘱不作判断,处理医嘱包含死亡但非死亡情况

zhanghang 3 jaren geleden
bovenliggende
commit
cf599694ba

+ 25 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA03153.java

@@ -1,11 +1,13 @@
 package com.lantone.qc.kernel.catalogue.invasiveoperation;
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
 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.DoctorAdviceDoc;
 import com.lantone.qc.pub.model.doc.InvasiveOperationDoc;
+import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.apache.commons.lang3.time.DateUtils;
@@ -49,9 +51,18 @@ public class INVA03153 extends QCCatalogue {
                         if(StringUtil.isBlank(medicalOrderName)) {
                             continue;
                         }
+                        if(medicalOrderName.startsWith("停")){
+                            continue;
+                        }
+                        String prescriptionType = doctorAdviceDocStructureMap.get("医嘱处方类型");
                         //判断医嘱是否包含有创
                         for (String haveOperation : haveOperationList) {
                             if(medicalOrderName.contains(haveOperation)){
+                                if(medicalOrderName.contains("血管造影")){
+                                    if(judgeAngiographic(medicalOrderName,prescriptionType)){
+                                        continue;
+                                    }
+                                }
                                 flag=true;
                             }
                         }
@@ -70,4 +81,18 @@ public class INVA03153 extends QCCatalogue {
             }
         }
     }
+    //判断包含血管造影医嘱非有创的情况
+    public  boolean judgeAngiographic(String medicalOrderName,String prescriptionType) {
+        String rex = "[\\s\\S]*(?=拟)[\\s\\S]*(?=术)[\\s\\S]*";
+        String rex1 = "[\\s\\S]*(?=定于)[\\s\\S]*(?=行)[\\s\\S]*";
+        if(StringUtil.isNotEmpty(prescriptionType)) {
+            if (prescriptionType.equals("手术")) {
+                return true;
+            }
+        }
+        if(medicalOrderName.matches(rex)||medicalOrderName.matches(rex1)){
+            return true;
+        }
+        return false;
+    }
 }

+ 3 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03137.java

@@ -47,6 +47,9 @@ public class THR03137 extends QCCatalogue {
                                 if(StringUtil.isBlank(medicalOrderName)) {
                                     continue;
                                 }
+                                if(medicalOrderName.startsWith("停")){
+                                    continue;
+                                }
                                 String rex1="[\\s\\S]*(?=转)[\\s\\S]{0,6}(?=科)[\\s\\S]*";
                                 String rex2="[\\s\\S]*(?=科)[\\s\\S]{0,6}(?=转)[\\s\\S]*";
                                 if(medicalOrderName.matches(rex1)||medicalOrderName.matches(rex2)) {

+ 3 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03138.java

@@ -47,6 +47,9 @@ public class THR03138 extends QCCatalogue {
                                 if(StringUtil.isBlank(medicalOrderName)) {
                                     continue;
                                 }
+                                if(medicalOrderName.startsWith("停")){
+                                    continue;
+                                }
                                 String rex1="[\\s\\S]*(?=转)[\\s\\S]{0,6}(?=科)[\\s\\S]*";
                                 String rex2="[\\s\\S]*(?=科)[\\s\\S]{0,6}(?=转)[\\s\\S]*";
                                 if(medicalOrderName.matches(rex1)||medicalOrderName.matches(rex2)) {

+ 10 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03147.java

@@ -40,10 +40,11 @@ public class THR03147 extends QCCatalogue {
         if(deathRecordDoc!=null){
             return;
         }
+        List<String> noDeathList = Content.noDeathList;
         //死亡患者不判断
         List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
         if(ListUtil.isNotEmpty(doctorAdviceDocs)){
-            for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {
+            sw: for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {
                 //取长期临时医嘱,不为作废医嘱
                 if(doctorAdviceDoc.getStructureMap()==null) {
                     continue;
@@ -64,7 +65,15 @@ public class THR03147 extends QCCatalogue {
                         if(StringUtil.isBlank(medicalOrderName)) {
                             continue;
                         }
+                        if(medicalOrderName.startsWith("停")){
+                            continue;
+                        }
                         if (medicalOrderName.contains("死亡")) {
+                            for (String noDeath : noDeathList) {
+                                if(medicalOrderName.contains(noDeath)){
+                                    continue sw;
+                                }
+                            }
                             return;
                         }
                     }

+ 10 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03149.java

@@ -33,6 +33,7 @@ public class THR03149 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
         boolean falg=false;
+        List<String> noDeathList = Content.noDeathList;
         List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
         List<RescueDoc> rescueDocs = inputInfo.getRescueDocs();
         //死亡记录不为空
@@ -43,7 +44,7 @@ public class THR03149 extends QCCatalogue {
         MedicalRecordInfoDoc medicalRecordInfoDoc = inputInfo.getMedicalRecordInfoDoc();
 
         if(ListUtil.isNotEmpty(doctorAdviceDocs)){
-            for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {
+            sw:  for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {
                 //取长期临时医嘱,不为作废医嘱
                 if(doctorAdviceDoc.getStructureMap()==null) {
                     continue;
@@ -63,8 +64,16 @@ public class THR03149 extends QCCatalogue {
                         String medicalOrderName = doctorAdviceDoc.getStructureMap().get(Content.medicalOrderName);
                         if(StringUtil.isBlank(medicalOrderName)) {
                             continue;
+                        }
+                        if(medicalOrderName.startsWith("停")){
+                            continue;
                         }
                             if (medicalOrderName.contains("死亡")) {
+                                for (String noDeath : noDeathList) {
+                                    if(medicalOrderName.contains(noDeath)){
+                                        continue sw;
+                                    }
+                                }
                                 return;
                             }
                             if (medicalOrderName.contains("抢救")) {

+ 10 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03150.java

@@ -43,9 +43,9 @@ public class THR03150 extends QCCatalogue {
             return;
         }
         MedicalRecordInfoDoc medicalRecordInfoDoc = inputInfo.getMedicalRecordInfoDoc();
-
+        List<String> noDeathList = Content.noDeathList;
         if(ListUtil.isNotEmpty(doctorAdviceDocs)){
-            for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {
+            sw: for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {
                 //取长期临时医嘱,不为作废医嘱
                 if(doctorAdviceDoc.getStructureMap()==null) {
                     continue;
@@ -66,7 +66,15 @@ public class THR03150 extends QCCatalogue {
                         if(StringUtil.isBlank(medicalOrderName)) {
                             continue;
                         }
+                        if(medicalOrderName.startsWith("停")){
+                            continue;
+                        }
                         if (medicalOrderName.contains("死亡")) {
+                            for (String noDeath : noDeathList) {
+                                if(medicalOrderName.contains(noDeath)){
+                                    continue sw;
+                                }
+                            }
                             return;
                         }
                         //医嘱中判断为病危病重患者

+ 4 - 0
public/src/main/java/com/lantone/qc/pub/Content.java

@@ -436,6 +436,10 @@ public class Content {
     public static List<String>  auxiliaryExaminationList= Arrays.asList(
             "实验室检查","影像学检查"
     );
+    //包含死亡但非死亡情况
+    public static List<String>  noDeathList= Arrays.asList(
+            "死亡蛋白"
+    );
     //台州有创目录
     public static List<String>  haveOperationList= Arrays.asList(
             "腰椎穿刺术","胸膜腔穿刺术","腹膜腔穿刺术","肝脏穿刺活体组织检查术","肝脏抽脓术","肺脏穿刺活体组织检查术",