Browse Source

三级查房主治/主任医师首次查房相关规则,需要在48/72小时内才触发

hujing 5 years ago
parent
commit
8a80f60162

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

@@ -1,6 +1,7 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
 import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
@@ -20,10 +21,11 @@ import java.util.Map;
 @Component
 @Component
 public class THR0130 extends QCCatalogue {
 public class THR0130 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getThreeLevelWardDocs().size() == 0) {
+        if (inputInfo.getThreeLevelWardDocs().size() == 0 || inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
             status.set("0");
             return;
             return;
         }
         }
+
         List<AttendingDoctorWardDoc> attendDocs = inputInfo.getThreeLevelWardDocs().get(0).getAttendingDoctorWardDocs();
         List<AttendingDoctorWardDoc> attendDocs = inputInfo.getThreeLevelWardDocs().get(0).getAttendingDoctorWardDocs();
         if (attendDocs.size() == 0) {
         if (attendDocs.size() == 0) {
             status.set("0");
             status.set("0");
@@ -32,6 +34,17 @@ public class THR0130 extends QCCatalogue {
         AttendingDoctorWardDoc firstAttendDoc = attendDocs.get(0);
         AttendingDoctorWardDoc firstAttendDoc = attendDocs.get(0);
         //先取结构化数据判断
         //先取结构化数据判断
         Map<String, String> firstAttendStructureMap = firstAttendDoc.getStructureMap();
         Map<String, String> firstAttendStructureMap = firstAttendDoc.getStructureMap();
+        String admisDateStr = inputInfo.getBeHospitalizedDoc().getStructureMap().get("入院日期");
+        String recordDateStr = firstAttendStructureMap.get("查房日期");
+        if (CatalogueUtil.isEmpty(admisDateStr) || CatalogueUtil.isEmpty(recordDateStr)) {
+            status.set("0");
+            return;
+        }
+        //如果首次查房超过48小时则不判断该条规则
+        if (CatalogueUtil.compareTime(StringUtil.parseDateTime(admisDateStr), StringUtil.parseDateTime(recordDateStr), 48 * 60L)) {
+            status.set("0");
+            return;
+        }
         if (StringUtil.isNotBlank(firstAttendStructureMap.get("体检"))) {
         if (StringUtil.isNotBlank(firstAttendStructureMap.get("体检"))) {
             status.set("0");
             status.set("0");
             return;
             return;

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

@@ -1,6 +1,7 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
 import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
@@ -21,7 +22,7 @@ import java.util.Map;
 @Component
 @Component
 public class THR0131 extends QCCatalogue {
 public class THR0131 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getThreeLevelWardDocs().size() == 0) {
+        if (inputInfo.getThreeLevelWardDocs().size() == 0 || inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
             status.set("0");
             return;
             return;
         }
         }
@@ -42,6 +43,17 @@ public class THR0131 extends QCCatalogue {
         AttendingDoctorWardDoc firstAttendDoc = attendDocs.get(0);
         AttendingDoctorWardDoc firstAttendDoc = attendDocs.get(0);
         //先取结构化数据判断
         //先取结构化数据判断
         Map<String, String> firstAttendStructureMap = firstAttendDoc.getStructureMap();
         Map<String, String> firstAttendStructureMap = firstAttendDoc.getStructureMap();
+        String admisDateStr = inputInfo.getBeHospitalizedDoc().getStructureMap().get("入院日期");
+        String recordDateStr = firstAttendStructureMap.get("查房日期");
+        if (CatalogueUtil.isEmpty(admisDateStr) || CatalogueUtil.isEmpty(recordDateStr)) {
+            status.set("0");
+            return;
+        }
+        //如果首次查房超过48小时则不判断该条规则
+        if (CatalogueUtil.compareTime(StringUtil.parseDateTime(admisDateStr), StringUtil.parseDateTime(recordDateStr), 48 * 60L)) {
+            status.set("0");
+            return;
+        }
         String conditionRecord = firstAttendStructureMap.get("病情记录");
         String conditionRecord = firstAttendStructureMap.get("病情记录");
         if (StringUtil.isNotBlank(conditionRecord)) {
         if (StringUtil.isNotBlank(conditionRecord)) {
             if (conditionRecord.contains("鉴别")
             if (conditionRecord.contains("鉴别")

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

@@ -1,6 +1,7 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
 import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
@@ -21,7 +22,7 @@ import java.util.Map;
 @Component
 @Component
 public class THR0132 extends QCCatalogue {
 public class THR0132 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getThreeLevelWardDocs().size() == 0) {
+        if (inputInfo.getThreeLevelWardDocs().size() == 0 || inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
             status.set("0");
             return;
             return;
         }
         }
@@ -33,6 +34,17 @@ public class THR0132 extends QCCatalogue {
         AttendingDoctorWardDoc firstAttendDoc = attendDocs.get(0);
         AttendingDoctorWardDoc firstAttendDoc = attendDocs.get(0);
         //先取结构化数据判断
         //先取结构化数据判断
         Map<String, String> firstAttendStructureMap = firstAttendDoc.getStructureMap();
         Map<String, String> firstAttendStructureMap = firstAttendDoc.getStructureMap();
+        String admisDateStr = inputInfo.getBeHospitalizedDoc().getStructureMap().get("入院日期");
+        String recordDateStr = firstAttendStructureMap.get("查房日期");
+        if (CatalogueUtil.isEmpty(admisDateStr) || CatalogueUtil.isEmpty(recordDateStr)) {
+            status.set("0");
+            return;
+        }
+        //如果首次查房超过48小时则不判断该条规则
+        if (CatalogueUtil.compareTime(StringUtil.parseDateTime(admisDateStr), StringUtil.parseDateTime(recordDateStr), 48 * 60L)) {
+            status.set("0");
+            return;
+        }
         if (StringUtil.isNotBlank(firstAttendStructureMap.get("病情记录"))) {
         if (StringUtil.isNotBlank(firstAttendStructureMap.get("病情记录"))) {
             status.set("0");
             status.set("0");
             return;
             return;

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

@@ -1,6 +1,7 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
 import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
@@ -20,7 +21,7 @@ import java.util.Map;
 @Component
 @Component
 public class THR0133 extends QCCatalogue {
 public class THR0133 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getThreeLevelWardDocs().size() == 0) {
+        if (inputInfo.getThreeLevelWardDocs().size() == 0 || inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
             status.set("0");
             return;
             return;
         }
         }
@@ -32,6 +33,17 @@ public class THR0133 extends QCCatalogue {
         AttendingDoctorWardDoc firstAttendDoc = attendDocs.get(0);
         AttendingDoctorWardDoc firstAttendDoc = attendDocs.get(0);
         //先取结构化数据判断
         //先取结构化数据判断
         Map<String, String> firstAttendStructureMap = firstAttendDoc.getStructureMap();
         Map<String, String> firstAttendStructureMap = firstAttendDoc.getStructureMap();
+        String admisDateStr = inputInfo.getBeHospitalizedDoc().getStructureMap().get("入院日期");
+        String recordDateStr = firstAttendStructureMap.get("查房日期");
+        if (CatalogueUtil.isEmpty(admisDateStr) || CatalogueUtil.isEmpty(recordDateStr)) {
+            status.set("0");
+            return;
+        }
+        //如果首次查房超过48小时则不判断该条规则
+        if (CatalogueUtil.compareTime(StringUtil.parseDateTime(admisDateStr), StringUtil.parseDateTime(recordDateStr), 48 * 60L)) {
+            status.set("0");
+            return;
+        }
         if (StringUtil.isNotBlank(firstAttendStructureMap.get("治疗计划和措施"))) {
         if (StringUtil.isNotBlank(firstAttendStructureMap.get("治疗计划和措施"))) {
             status.set("0");
             status.set("0");
             return;
             return;

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

@@ -1,6 +1,7 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
 import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
@@ -9,6 +10,7 @@ import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * @ClassName : THR0134
  * @ClassName : THR0134
@@ -19,7 +21,7 @@ import java.util.List;
 @Component
 @Component
 public class THR0134 extends QCCatalogue {
 public class THR0134 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getThreeLevelWardDocs().size() == 0) {
+        if (inputInfo.getThreeLevelWardDocs().size() == 0 || inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
             status.set("0");
             return;
             return;
         }
         }
@@ -29,6 +31,19 @@ public class THR0134 extends QCCatalogue {
             return;
             return;
         }
         }
         AttendingDoctorWardDoc firstAttendDoc = attendDocs.get(0);
         AttendingDoctorWardDoc firstAttendDoc = attendDocs.get(0);
+        //先取结构化数据判断
+        Map<String, String> firstAttendStructureMap = firstAttendDoc.getStructureMap();
+        String admisDateStr = inputInfo.getBeHospitalizedDoc().getStructureMap().get("入院日期");
+        String recordDateStr = firstAttendStructureMap.get("查房日期");
+        if (CatalogueUtil.isEmpty(admisDateStr) || CatalogueUtil.isEmpty(recordDateStr)) {
+            status.set("0");
+            return;
+        }
+        //如果首次查房超过48小时则不判断该条规则
+        if (CatalogueUtil.compareTime(StringUtil.parseDateTime(admisDateStr), StringUtil.parseDateTime(recordDateStr), 48 * 60L)) {
+            status.set("0");
+            return;
+        }
         ThreeLevelWardLabel firstAttendLabel = firstAttendDoc.getThreeLevelWardLabel();
         ThreeLevelWardLabel firstAttendLabel = firstAttendDoc.getThreeLevelWardLabel();
         if (firstAttendLabel == null) {
         if (firstAttendLabel == null) {
             return;
             return;

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

@@ -1,6 +1,7 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
 import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
@@ -20,7 +21,7 @@ import java.util.Map;
 @Component
 @Component
 public class THR0135 extends QCCatalogue {
 public class THR0135 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getThreeLevelWardDocs().size() == 0) {
+        if (inputInfo.getThreeLevelWardDocs().size() == 0 || inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
             status.set("0");
             return;
             return;
         }
         }
@@ -32,6 +33,17 @@ public class THR0135 extends QCCatalogue {
         DirectorDoctorWardDoc firstDirectDoc = directorDocs.get(0);
         DirectorDoctorWardDoc firstDirectDoc = directorDocs.get(0);
         //先取结构化数据判断
         //先取结构化数据判断
         Map<String, String> firstDirectStructureMap = firstDirectDoc.getStructureMap();
         Map<String, String> firstDirectStructureMap = firstDirectDoc.getStructureMap();
+        String admisDateStr = inputInfo.getBeHospitalizedDoc().getStructureMap().get("入院日期");
+        String recordDateStr = firstDirectStructureMap.get("查房日期");
+        if (CatalogueUtil.isEmpty(admisDateStr) || CatalogueUtil.isEmpty(recordDateStr)) {
+            status.set("0");
+            return;
+        }
+        //如果首次查房超过72小时则不判断该条规则
+        if (CatalogueUtil.compareTime(StringUtil.parseDateTime(admisDateStr), StringUtil.parseDateTime(recordDateStr), 72 * 60L)) {
+            status.set("0");
+            return;
+        }
         if (StringUtil.isNotBlank(firstDirectStructureMap.get("体检"))) {
         if (StringUtil.isNotBlank(firstDirectStructureMap.get("体检"))) {
             status.set("0");
             status.set("0");
             return;
             return;

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

@@ -1,6 +1,7 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
 import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
@@ -21,7 +22,7 @@ import java.util.Map;
 @Component
 @Component
 public class THR0136 extends QCCatalogue {
 public class THR0136 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getThreeLevelWardDocs().size() == 0) {
+        if (inputInfo.getThreeLevelWardDocs().size() == 0 || inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
             status.set("0");
             return;
             return;
         }
         }
@@ -42,6 +43,17 @@ public class THR0136 extends QCCatalogue {
         DirectorDoctorWardDoc firstDirectDoc = directorDocs.get(0);
         DirectorDoctorWardDoc firstDirectDoc = directorDocs.get(0);
         //先取结构化数据判断
         //先取结构化数据判断
         Map<String, String> firstDirectStructureMap = firstDirectDoc.getStructureMap();
         Map<String, String> firstDirectStructureMap = firstDirectDoc.getStructureMap();
+        String admisDateStr = inputInfo.getBeHospitalizedDoc().getStructureMap().get("入院日期");
+        String recordDateStr = firstDirectStructureMap.get("查房日期");
+        if (CatalogueUtil.isEmpty(admisDateStr) || CatalogueUtil.isEmpty(recordDateStr)) {
+            status.set("0");
+            return;
+        }
+        //如果首次查房超过72小时则不判断该条规则
+        if (CatalogueUtil.compareTime(StringUtil.parseDateTime(admisDateStr), StringUtil.parseDateTime(recordDateStr), 72 * 60L)) {
+            status.set("0");
+            return;
+        }
         String conditionRecord = firstDirectStructureMap.get("病情记录");
         String conditionRecord = firstDirectStructureMap.get("病情记录");
         if (StringUtil.isNotBlank(conditionRecord)) {
         if (StringUtil.isNotBlank(conditionRecord)) {
             if (conditionRecord.contains("鉴别")
             if (conditionRecord.contains("鉴别")

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

@@ -1,6 +1,7 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
 import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
@@ -21,7 +22,7 @@ import java.util.Map;
 @Component
 @Component
 public class THR0137 extends QCCatalogue {
 public class THR0137 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getThreeLevelWardDocs().size() == 0) {
+        if (inputInfo.getThreeLevelWardDocs().size() == 0 || inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
             status.set("0");
             return;
             return;
         }
         }
@@ -33,6 +34,17 @@ public class THR0137 extends QCCatalogue {
         DirectorDoctorWardDoc firstDirectDoc = directorDocs.get(0);
         DirectorDoctorWardDoc firstDirectDoc = directorDocs.get(0);
         //先取结构化数据判断
         //先取结构化数据判断
         Map<String, String> firstDirectStructureMap = firstDirectDoc.getStructureMap();
         Map<String, String> firstDirectStructureMap = firstDirectDoc.getStructureMap();
+        String admisDateStr = inputInfo.getBeHospitalizedDoc().getStructureMap().get("入院日期");
+        String recordDateStr = firstDirectStructureMap.get("查房日期");
+        if (CatalogueUtil.isEmpty(admisDateStr) || CatalogueUtil.isEmpty(recordDateStr)) {
+            status.set("0");
+            return;
+        }
+        //如果首次查房超过72小时则不判断该条规则
+        if (CatalogueUtil.compareTime(StringUtil.parseDateTime(admisDateStr), StringUtil.parseDateTime(recordDateStr), 72 * 60L)) {
+            status.set("0");
+            return;
+        }
         if (StringUtil.isNotBlank(firstDirectStructureMap.get("病情记录"))) {
         if (StringUtil.isNotBlank(firstDirectStructureMap.get("病情记录"))) {
             status.set("0");
             status.set("0");
             return;
             return;

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

@@ -1,6 +1,7 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
 import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
@@ -20,7 +21,7 @@ import java.util.Map;
 @Component
 @Component
 public class THR0138 extends QCCatalogue {
 public class THR0138 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getThreeLevelWardDocs().size() == 0) {
+        if (inputInfo.getThreeLevelWardDocs().size() == 0 || inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
             status.set("0");
             return;
             return;
         }
         }
@@ -32,6 +33,17 @@ public class THR0138 extends QCCatalogue {
         DirectorDoctorWardDoc firstDirectDoc = directorDocs.get(0);
         DirectorDoctorWardDoc firstDirectDoc = directorDocs.get(0);
         //先取结构化数据判断
         //先取结构化数据判断
         Map<String, String> firstDirectStructureMap = firstDirectDoc.getStructureMap();
         Map<String, String> firstDirectStructureMap = firstDirectDoc.getStructureMap();
+        String admisDateStr = inputInfo.getBeHospitalizedDoc().getStructureMap().get("入院日期");
+        String recordDateStr = firstDirectStructureMap.get("查房日期");
+        if (CatalogueUtil.isEmpty(admisDateStr) || CatalogueUtil.isEmpty(recordDateStr)) {
+            status.set("0");
+            return;
+        }
+        //如果首次查房超过72小时则不判断该条规则
+        if (CatalogueUtil.compareTime(StringUtil.parseDateTime(admisDateStr), StringUtil.parseDateTime(recordDateStr), 72 * 60L)) {
+            status.set("0");
+            return;
+        }
         if (StringUtil.isNotBlank(firstDirectStructureMap.get("治疗计划和措施"))) {
         if (StringUtil.isNotBlank(firstDirectStructureMap.get("治疗计划和措施"))) {
             status.set("0");
             status.set("0");
             return;
             return;

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

@@ -1,6 +1,7 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
 import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
@@ -9,6 +10,7 @@ import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * @ClassName : THR0139
  * @ClassName : THR0139
@@ -19,7 +21,7 @@ import java.util.List;
 @Component
 @Component
 public class THR0139 extends QCCatalogue {
 public class THR0139 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        if (inputInfo.getThreeLevelWardDocs().size() == 0) {
+        if (inputInfo.getThreeLevelWardDocs().size() == 0 || inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
             status.set("0");
             return;
             return;
         }
         }
@@ -29,6 +31,19 @@ public class THR0139 extends QCCatalogue {
             return;
             return;
         }
         }
         DirectorDoctorWardDoc firstDirectDoc = directorDocs.get(0);
         DirectorDoctorWardDoc firstDirectDoc = directorDocs.get(0);
+        //先取结构化数据判断
+        Map<String, String> firstDirectStructureMap = firstDirectDoc.getStructureMap();
+        String admisDateStr = inputInfo.getBeHospitalizedDoc().getStructureMap().get("入院日期");
+        String recordDateStr = firstDirectStructureMap.get("查房日期");
+        if (CatalogueUtil.isEmpty(admisDateStr) || CatalogueUtil.isEmpty(recordDateStr)) {
+            status.set("0");
+            return;
+        }
+        //如果首次查房超过72小时则不判断该条规则
+        if (CatalogueUtil.compareTime(StringUtil.parseDateTime(admisDateStr), StringUtil.parseDateTime(recordDateStr), 72 * 60L)) {
+            status.set("0");
+            return;
+        }
         ThreeLevelWardLabel firstDirectLabel = firstDirectDoc.getThreeLevelWardLabel();
         ThreeLevelWardLabel firstDirectLabel = firstDirectDoc.getThreeLevelWardLabel();
         if (firstDirectLabel == null) {
         if (firstDirectLabel == null) {
             return;
             return;