Ver código fonte

21版新增规则修改

zhanghang 3 anos atrás
pai
commit
d646554c3a

+ 24 - 37
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC03146.java

@@ -7,6 +7,9 @@ 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.DeathCaseDiscussDoc;
+import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -25,48 +28,32 @@ public class DEAC03146 extends QCCatalogue {
      * @param inputInfo
      * @param outputInfo
      */
-    @Autowired
-    private SpecialStorageUtil specialStorageUtil;
 
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getDeathCaseDiscussDoc() != null) {
-            Map<String, String> deathCaseDiscussStructureMap = inputInfo.getDeathCaseDiscussDoc().getStructureMap();
-            if(deathCaseDiscussStructureMap!=null) {
-                //其中有个字段为  职务-->科主任
-                String recordDoctor = deathCaseDiscussStructureMap.get("讨论主持人");
-                if (CatalogueUtil.isEmpty(recordDoctor)) {
-                   /* if(!findDirectorDoctor(recordDoctor)) {
-                        status.set("-1");
-                    }*/
-                    Map<String, String> positionMap = Content.positionMap;
-                    for (String keyStr : positionMap.keySet()) {
-                        if(recordDoctor.contains(keyStr)){
-                            String position = positionMap.get(keyStr);
-                            if(position.equals("科室主任")){
-                                status.set("-1");
-                            }
-                        }
-                    }
-                }
-
-            }
+        DeathCaseDiscussDoc deathCaseDiscussDoc = inputInfo.getDeathCaseDiscussDoc();
+        if(deathCaseDiscussDoc==null){
+            status.set("0");
+            return;
         }
-    }
-    //判断姓名是否为科室主任
-    private boolean findDirectorDoctor(String recordDoctor) {
-        Map<String, Map<String, Object>> hospitalDoctorMap = specialStorageUtil.getJsonStringValue(KernelConstants.HOSPITAL_DOCTOR_MAP);
-        if (hospitalDoctorMap == null) {
-            return false;
+        Map<String, String> positionMap= Content.positionMap;
+        FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
+        String directorName ="";
+        if (firstPageRecordDoc != null) {
+            directorName = firstPageRecordDoc.getStructureMap().get("科主任");
         }
-        if (hospitalDoctorMap.containsKey(recordDoctor)) {
-            Object professor = hospitalDoctorMap.get(recordDoctor).get("professor");
-            if (professor != null) {
-                if(professor.toString().contains("主任")) {
-                    return true;
-                }
+        String recordDoctor = deathCaseDiscussDoc.getStructureMap().get("讨论主持人");
+        if(StringUtil.isBlank(recordDoctor)){
+            return;
+        }
+        if(StringUtil.isNotBlank(directorName)){
+            if(recordDoctor.equals(directorName)){
+                status.set("0");
+                return;
             }
         }
-        return false;
+        if (positionMap.containsKey(recordDoctor)) {
+            status.set("0");
+            return;
+        }
     }
 }

+ 25 - 19
kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF03148.java

@@ -6,7 +6,9 @@ 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.DifficultCaseDiscussDoc;
+import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
 import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -24,30 +26,34 @@ public class DIF03148 extends QCCatalogue {
         /**
          * 疑难病例讨论主任人为科主任姓名      【疑难病例讨论记录】主持人填写处是科主任姓名
          */
-        status.set("0");
         List<DifficultCaseDiscussDoc> difficultCaseDiscussDocs = inputInfo.getDifficultCaseDiscussDocs();
-        if(ListUtil.isEmpty(difficultCaseDiscussDocs)){
+        if (ListUtil.isEmpty(difficultCaseDiscussDocs)) {
+            status.set("0");
             return;
         }
-        if(difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size()>0){
-            for (DifficultCaseDiscussDoc dcdd:difficultCaseDiscussDocs) {
-                Map<String, String> dcddStructureMap = dcdd.getStructureMap();
-                String diisDate = dcddStructureMap.get("主持人");
-                if(CatalogueUtil.isEmpty(diisDate)){
-                  return;
-                }
-                Map<String, String> positionMap = Content.positionMap;
-                for (String keyStr : positionMap.keySet()) {
-                    if(keyStr.equals(diisDate)){
-                        String valueStr = positionMap.get(keyStr);
-                        if(!valueStr.equals("科室主任")){
-                            status.set("-1");
-                            return;
-                        }
-                    }
+        Map<String, String> positionMap = Content.positionMap;
+        FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
+        String directorName ="";
+        if (firstPageRecordDoc != null) {
+            directorName = firstPageRecordDoc.getStructureMap().get("科主任");
+        }
+        for (DifficultCaseDiscussDoc dcdd : difficultCaseDiscussDocs) {
+            Map<String, String> dcddStructureMap = dcdd.getStructureMap();
+            String diisName = dcddStructureMap.get("主持人");
+            if (CatalogueUtil.isEmpty(diisName)) {
+                return;
+            }
+            if(StringUtil.isNotBlank(directorName)){
+                if(diisName.equals(directorName)){
+                    status.set("0");
+                    return;
                 }
-
+            }
+            if (positionMap.containsKey(diisName)) {
+                status.set("0");
+                return;
             }
         }
+
     }
 }

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

@@ -71,7 +71,7 @@ public class THR03139 extends QCCatalogue {
                     continue;
                 }
                 List<String> cfButcherOpinionList = Content.cfButcherOpinionList;
-                String rex1 = "(?=拟)[^,;,;。]*(?=行)[^,;,;。]*(?=术)";
+                String rex1 = "[\\s\\S]*(?=拟)[^,;,;。]*(?=行)[^,;,;。]*(?=术)[\\s\\S]*";
                 for (String cfButcherOpinion : cfButcherOpinionList) {
                     if (illnessRecords.contains(cfButcherOpinion)) {
                         opinionNum++;

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

@@ -110,7 +110,7 @@ public class THR03147 extends QCCatalogue {
             if(!CatalogueUtil.compareTime(
                     checkTheDate,
                     dischargeDate,
-                    Long.valueOf(48 * 60))){
+                    Long.valueOf(48 * 60))&&checkTheDate.before(dischargeDate)){
                 flag=false;
                 //出院前48小时的查房记录
                 String key = getKeyByHospitalId();

+ 3 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03149.java

@@ -132,10 +132,11 @@ public class THR03149 extends QCCatalogue {
             if(StringUtil.isBlank(checkTime)){
                 continue;
             }
+            Date checkDate = StringUtil.parseDateTime(checkTime);
             if (!CatalogueUtil.compareTime(
                     saveDate,
-                    StringUtil.parseDateTime(checkTime),
-                    Long.valueOf(6 * 60))) {
+                    checkDate,
+                    Long.valueOf(6 * 60))&&saveDate.before(checkDate)) {
                 //不大于抢救开始时间6小时内,取查房标题
                 String wardRoundTitle = structureMap.get("查房标题");
                 //【主任*查房】或【主任级别的姓名查房】

+ 12 - 9
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03150.java

@@ -70,7 +70,7 @@ public class THR03150 extends QCCatalogue {
                             return;
                         }
                         //医嘱中判断为病危病重患者
-                        if (medicalOrderName.contains("病危")||medicalOrderName.contains("病重")) {
+                        if ((medicalOrderName.contains("病危")||medicalOrderName.contains("病重"))&&!medicalOrderName.contains("停")) {
                             falg=true;
                             //获取医嘱开始时间
                             doctorStartTime = doctorAdviceDocStructureMap.get("医嘱开始时间");
@@ -114,8 +114,10 @@ public class THR03150 extends QCCatalogue {
                 if(StringUtil.isBlank(doctorStartTime)){
                     return;
                 }
+                status.set("-1");
                 Date doctorStartDate = StringUtil.parseDateTime(doctorStartTime);
                 if(getAllSaveDoctor(inputInfo,outputInfo,doctorStartDate)){
+                    status.set("0");
                     return;
                 }else {
                     //去【抢救记录】内找是否有包含【上级医师姓名】/【主任】字段,若无报出
@@ -124,8 +126,8 @@ public class THR03150 extends QCCatalogue {
                         for (RescueDoc rescueDoc : rescueDocs) {
                             String text = rescueDoc.getText();
                             if (StringUtil.isNotBlank(text)) {
-                                if (!text.contains("主任") && !judgeContainsDoctor(text)) {
-                                    status.set("-1");
+                                if (text.contains("主任") || judgeContainsDoctor(text)) {
+                                    status.set("0");
                                     return;
                                 }
                             }
@@ -136,8 +138,8 @@ public class THR03150 extends QCCatalogue {
                     if(firstCourseRecordDoc!=null){
                         String text = firstCourseRecordDoc.getText();
                         if (StringUtil.isNotBlank(text)) {
-                            if (!text.contains("主任") && !judgeContainsDoctor(text)) {
-                                status.set("-1");
+                            if (text.contains("主任") || judgeContainsDoctor(text)) {
+                                status.set("0");
                                 return;
                             }
                         }
@@ -146,7 +148,7 @@ public class THR03150 extends QCCatalogue {
             }
         }
 
-    //抢救6小时内 找标题为【主任*查房】或【主任级别的姓名查房】
+    //6小时内 找标题为【主任*查房】或【主任级别的姓名查房】
     public  boolean getAllSaveDoctor(InputInfo inputInfo, OutputInfo outputInfo,Date saveDate ) {
         List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
         if (ListUtil.isEmpty(threeLevelWardDocs)) {
@@ -162,11 +164,12 @@ public class THR03150 extends QCCatalogue {
             if(StringUtil.isBlank(checkTime)){
                 continue;
             }
+            Date checkDate = StringUtil.parseDateTime(checkTime);
             if (!CatalogueUtil.compareTime(
                     saveDate,
-                    StringUtil.parseDateTime(checkTime),
-                    Long.valueOf(6 * 60))) {
-                //不大于抢救开始时间6小时内,取查房标题
+                    checkDate,
+                    Long.valueOf(6 * 60))&&saveDate.before(checkDate)) {
+                //不大于开始时间6小时内,取查房标题
                 String wardRoundTitle = structureMap.get("查房标题");
                 //【主任*查房】或【主任级别的姓名查房】
                 if(StringUtil.isBlank(wardRoundTitle)){

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

@@ -434,7 +434,7 @@ public class Content {
     );
     //病例特点辅助检查
     public static List<String>  auxiliaryExaminationList= Arrays.asList(
-            "辅助检查","辅检","辅助检查结果","实验室检查","影像学检查"
+            "实验室检查","影像学检查"
     );
     //台州有创目录
     public static List<String>  haveOperationList= Arrays.asList(