Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

rengb 5 лет назад
Родитель
Сommit
6056523d5b
40 измененных файлов с 1308 добавлено и 22 удалено
  1. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0672.java
  2. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0673.java
  3. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0674.java
  4. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0675.java
  5. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0676.java
  6. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0677.java
  7. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0678.java
  8. 28 4
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0679.java
  9. 32 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAR0556.java
  10. 29 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAR0557.java
  11. 29 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAR0558.java
  12. 46 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0561.java
  13. 36 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA0609.java
  14. 36 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA0610.java
  15. 36 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA0611.java
  16. 36 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA0613.java
  17. 36 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA0615.java
  18. 36 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA0621.java
  19. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA0622.java
  20. 44 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0575.java
  21. 43 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0578.java
  22. 43 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0579.java
  23. 43 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0580.java
  24. 43 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0581.java
  25. 42 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0644.java
  26. 50 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0645.java
  27. 42 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0646.java
  28. 52 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0647.java
  29. 36 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0680.java
  30. 36 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0681.java
  31. 46 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0682.java
  32. 36 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0683.java
  33. 36 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0684.java
  34. 36 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0685.java
  35. 11 17
      public/src/main/java/com/lantone/qc/pub/model/InputInfo.java
  36. 10 0
      public/src/main/java/com/lantone/qc/pub/model/doc/AnesthesiaRelatedDoc.java
  37. 10 0
      public/src/main/java/com/lantone/qc/pub/model/doc/DoctorsAdviceDoc.java
  38. 10 0
      public/src/main/java/com/lantone/qc/pub/model/doc/InvasiveOperationDoc.java
  39. 10 0
      public/src/main/java/com/lantone/qc/pub/model/doc/MedicalWritingDoc.java
  40. 10 0
      public/src/main/java/com/lantone/qc/pub/model/doc/ReasonableDiagnosisDoc.java

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0672.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.anesthesiarelated;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.AnesthesiaRelatedDoc;
+import com.lantone.qc.pub.util.ListUtil;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : ANES0672
+ * @Description : 麻醉记录无术前诊断
+ * @Author : 胡敬
+ * @Date: 2020-03-30 10:01
+ */
+public class ANES0672 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<AnesthesiaRelatedDoc> anesthesiaRelatedDocs = inputInfo.getAnesthesiaRelatedDocs();
+        if (ListUtil.isEmpty(anesthesiaRelatedDocs)) {
+            return;
+        }
+        for (AnesthesiaRelatedDoc anesthesiaRelatedDoc : anesthesiaRelatedDocs) {
+            Map<String, String> anesthesiaRelatedStructureMap = anesthesiaRelatedDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(anesthesiaRelatedStructureMap.get("术前诊断"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0673.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.anesthesiarelated;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.AnesthesiaRelatedDoc;
+import com.lantone.qc.pub.util.ListUtil;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : ANES0673
+ * @Description : 麻醉记录无拟施手术
+ * @Author : 胡敬
+ * @Date: 2020-03-30 11:01
+ */
+public class ANES0673 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<AnesthesiaRelatedDoc> anesthesiaRelatedDocs = inputInfo.getAnesthesiaRelatedDocs();
+        if (ListUtil.isEmpty(anesthesiaRelatedDocs)) {
+            return;
+        }
+        for (AnesthesiaRelatedDoc anesthesiaRelatedDoc : anesthesiaRelatedDocs) {
+            Map<String, String> anesthesiaRelatedStructureMap = anesthesiaRelatedDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(anesthesiaRelatedStructureMap.get("拟施手术"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0674.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.anesthesiarelated;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.AnesthesiaRelatedDoc;
+import com.lantone.qc.pub.util.ListUtil;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : ANES0674
+ * @Description : 麻醉记录无手术后诊断
+ * @Author : 胡敬
+ * @Date: 2020-03-30 11:05
+ */
+public class ANES0674 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<AnesthesiaRelatedDoc> anesthesiaRelatedDocs = inputInfo.getAnesthesiaRelatedDocs();
+        if (ListUtil.isEmpty(anesthesiaRelatedDocs)) {
+            return;
+        }
+        for (AnesthesiaRelatedDoc anesthesiaRelatedDoc : anesthesiaRelatedDocs) {
+            Map<String, String> anesthesiaRelatedStructureMap = anesthesiaRelatedDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(anesthesiaRelatedStructureMap.get("手术后诊断"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0675.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.anesthesiarelated;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.AnesthesiaRelatedDoc;
+import com.lantone.qc.pub.util.ListUtil;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : ANES0675
+ * @Description : 麻醉记录无手术名称
+ * @Author : 胡敬
+ * @Date: 2020-03-30 11:05
+ */
+public class ANES0675 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<AnesthesiaRelatedDoc> anesthesiaRelatedDocs = inputInfo.getAnesthesiaRelatedDocs();
+        if (ListUtil.isEmpty(anesthesiaRelatedDocs)) {
+            return;
+        }
+        for (AnesthesiaRelatedDoc anesthesiaRelatedDoc : anesthesiaRelatedDocs) {
+            Map<String, String> anesthesiaRelatedStructureMap = anesthesiaRelatedDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(anesthesiaRelatedStructureMap.get("手术名称"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0676.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.anesthesiarelated;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.AnesthesiaRelatedDoc;
+import com.lantone.qc.pub.util.ListUtil;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : ANES0676
+ * @Description : 麻醉记录无麻醉方法
+ * @Author : 胡敬
+ * @Date: 2020-03-30 11:05
+ */
+public class ANES0676 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<AnesthesiaRelatedDoc> anesthesiaRelatedDocs = inputInfo.getAnesthesiaRelatedDocs();
+        if (ListUtil.isEmpty(anesthesiaRelatedDocs)) {
+            return;
+        }
+        for (AnesthesiaRelatedDoc anesthesiaRelatedDoc : anesthesiaRelatedDocs) {
+            Map<String, String> anesthesiaRelatedStructureMap = anesthesiaRelatedDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(anesthesiaRelatedStructureMap.get("麻醉方法"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0677.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.anesthesiarelated;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.AnesthesiaRelatedDoc;
+import com.lantone.qc.pub.util.ListUtil;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : ANES0677
+ * @Description : 麻醉记录无施麻醉者
+ * @Author : 胡敬
+ * @Date: 2020-03-30 11:05
+ */
+public class ANES0677 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<AnesthesiaRelatedDoc> anesthesiaRelatedDocs = inputInfo.getAnesthesiaRelatedDocs();
+        if (ListUtil.isEmpty(anesthesiaRelatedDocs)) {
+            return;
+        }
+        for (AnesthesiaRelatedDoc anesthesiaRelatedDoc : anesthesiaRelatedDocs) {
+            Map<String, String> anesthesiaRelatedStructureMap = anesthesiaRelatedDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(anesthesiaRelatedStructureMap.get("施麻醉者"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0678.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.anesthesiarelated;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.AnesthesiaRelatedDoc;
+import com.lantone.qc.pub.util.ListUtil;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : ANES0678
+ * @Description : 麻醉记录未记录尿量
+ * @Author : 胡敬
+ * @Date: 2020-03-30 11:05
+ */
+public class ANES0678 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<AnesthesiaRelatedDoc> anesthesiaRelatedDocs = inputInfo.getAnesthesiaRelatedDocs();
+        if (ListUtil.isEmpty(anesthesiaRelatedDocs)) {
+            return;
+        }
+        for (AnesthesiaRelatedDoc anesthesiaRelatedDoc : anesthesiaRelatedDocs) {
+            Map<String, String> anesthesiaRelatedStructureMap = anesthesiaRelatedDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(anesthesiaRelatedStructureMap.get("尿量"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 28 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/anesthesiarelated/ANES0679.java

@@ -1,10 +1,34 @@
 package com.lantone.qc.kernel.catalogue.anesthesiarelated;
 
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.AnesthesiaRelatedDoc;
+import com.lantone.qc.pub.util.ListUtil;
+
+import java.util.List;
+import java.util.Map;
+
 /**
  * @ClassName : ANES0679
- * @Description : 麻醉相关
- * @Author : 楼辉荣
- * @Date: 2020-03-28 17:33
+ * @Description : 麻醉记录未记录出血量
+ * @Author : 胡敬
+ * @Date: 2020-03-30 11:05
  */
-public class ANES0679 {
+public class ANES0679 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<AnesthesiaRelatedDoc> anesthesiaRelatedDocs = inputInfo.getAnesthesiaRelatedDocs();
+        if (ListUtil.isEmpty(anesthesiaRelatedDocs)) {
+            return;
+        }
+        for (AnesthesiaRelatedDoc anesthesiaRelatedDoc : anesthesiaRelatedDocs) {
+            Map<String, String> anesthesiaRelatedStructureMap = anesthesiaRelatedDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(anesthesiaRelatedStructureMap.get("出血量"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
 }

+ 32 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAR0556.java

@@ -0,0 +1,32 @@
+package com.lantone.qc.kernel.catalogue.deathcasediscuss;
+
+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.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @ClassName : DEAR0556
+ * @Description :  死亡病例讨论参加人员姓名及职称未填写
+ * @Author :kwz
+ * @Date: 2020-03-18 18:38
+ */
+@Component
+public class DEAR0556 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getDeathRecordDoc() != null && inputInfo.getDeathRecordDoc().getStructureMap() != null) {
+            Map<String, String> deathRecordStructureMap = inputInfo.getDeathRecordDoc().getStructureMap();
+            String deathTime = deathRecordStructureMap.get("参加讨论人员");
+            if (CatalogueUtil.isEmpty(deathTime)) {
+                status.set("-1");
+            }
+        }
+    }
+}

+ 29 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAR0557.java

@@ -0,0 +1,29 @@
+package com.lantone.qc.kernel.catalogue.deathcasediscuss;
+
+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.OutputInfo;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : DEAR0557
+ * @Description :  死亡病例讨论无具体讨论意见
+ * @Author :kwz
+ * @Date: 2020-03-18 18:38
+ */
+@Component
+public class DEAR0557 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getDeathRecordDoc() != null && inputInfo.getDeathRecordDoc().getStructureMap() != null) {
+            Map<String, String> deathRecordStructureMap = inputInfo.getDeathRecordDoc().getStructureMap();
+            String deathTime = deathRecordStructureMap.get("讨论内容");
+            if (!CatalogueUtil.isEmpty(deathTime) && !deathTime.contains("发言")) {
+                status.set("-1");
+            }
+        }
+    }
+}

+ 29 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAR0558.java

@@ -0,0 +1,29 @@
+package com.lantone.qc.kernel.catalogue.deathcasediscuss;
+
+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.OutputInfo;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : DEAR0558
+ * @Description :  死亡病例讨论无主持人小结意见
+ * @Author :kwz
+ * @Date: 2020-03-18 18:38
+ */
+@Component
+public class DEAR0558 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getDeathRecordDoc() != null && inputInfo.getDeathRecordDoc().getStructureMap() != null) {
+            Map<String, String> deathRecordStructureMap = inputInfo.getDeathRecordDoc().getStructureMap();
+            String deathTime = deathRecordStructureMap.get("结论");
+            if (CatalogueUtil.isEmpty(deathTime)) {
+                status.set("-1");
+            }
+        }
+    }
+}

+ 46 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0561.java

@@ -0,0 +1,46 @@
+package com.lantone.qc.kernel.catalogue.deathrecord;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @ClassName : DEAR0561
+ * @Description : 死亡记录未在患者离院后24小时内完成
+ * @Author : 胡敬
+ * @Date: 2020-03-18 18:38
+ */
+@Component
+public class DEAR0561 extends QCCatalogue {
+    public static String FORMAT_LONC_CN_MI = "yyyy/MM/dd HH:mm";
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
+        status.set("0");
+        if (inputInfo.getDeathRecordDoc() != null && inputInfo.getDeathRecordDoc().getStructureMap() != null) {
+            Map<String, String> deathRecordStructureMap = inputInfo.getDeathRecordDoc().getStructureMap();
+            if (!CatalogueUtil.isEmpty(deathRecordStructureMap.get("死亡时间"))) {
+                String deathDate = deathRecordStructureMap.get("死亡时间");
+                FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
+                if(firstPageRecordDoc != null && firstPageRecordDoc.getStructureMap() != null){
+                    Map<String, String> firstPageMap = firstPageRecordDoc.getStructureMap();
+                    String outDate = firstPageMap.get("出院时间");
+                    if(outDate != null && deathDate != null){
+                        Date date_in = new SimpleDateFormat(FORMAT_LONC_CN_MI).parse(deathDate);
+                        Date date_out = new SimpleDateFormat(FORMAT_LONC_CN_MI).parse(outDate);
+                        int hours = (int) ((date_out.getTime() - date_in.getTime()) / (1000*3600));
+                        if(hours >24){
+                            status.set("-1");
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA0609.java

@@ -0,0 +1,36 @@
+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.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.InvasiveOperationDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : INVA0609
+ * @Description : 操作记录无操作名称
+ * @Author : 胡敬
+ * @Date: 2020-03-30 13:31
+ */
+@Component
+public class INVA0609 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<InvasiveOperationDoc> invasiveOperationDocs = inputInfo.getInvasiveOperationDocs();
+        if (ListUtil.isEmpty(invasiveOperationDocs)) {
+            return;
+        }
+        for (InvasiveOperationDoc invasiveOperationDoc : invasiveOperationDocs) {
+            Map<String, String> invasiveOperationStructureMap = invasiveOperationDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(invasiveOperationStructureMap.get("操作名称"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA0610.java

@@ -0,0 +1,36 @@
+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.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.InvasiveOperationDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : INVA0610
+ * @Description : 操作记录无术前准备
+ * @Author : 胡敬
+ * @Date: 2020-03-30 13:31
+ */
+@Component
+public class INVA0610 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<InvasiveOperationDoc> invasiveOperationDocs = inputInfo.getInvasiveOperationDocs();
+        if (ListUtil.isEmpty(invasiveOperationDocs)) {
+            return;
+        }
+        for (InvasiveOperationDoc invasiveOperationDoc : invasiveOperationDocs) {
+            Map<String, String> invasiveOperationStructureMap = invasiveOperationDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(invasiveOperationStructureMap.get("术前准备"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA0611.java

@@ -0,0 +1,36 @@
+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.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.InvasiveOperationDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : INVA0611
+ * @Description : 操作记录无操作时间
+ * @Author : 胡敬
+ * @Date: 2020-03-30 13:31
+ */
+@Component
+public class INVA0611 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<InvasiveOperationDoc> invasiveOperationDocs = inputInfo.getInvasiveOperationDocs();
+        if (ListUtil.isEmpty(invasiveOperationDocs)) {
+            return;
+        }
+        for (InvasiveOperationDoc invasiveOperationDoc : invasiveOperationDocs) {
+            Map<String, String> invasiveOperationStructureMap = invasiveOperationDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(invasiveOperationStructureMap.get("操作时间"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA0613.java

@@ -0,0 +1,36 @@
+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.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.InvasiveOperationDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : INVA0613
+ * @Description : 操作记录无操作步骤
+ * @Author : 胡敬
+ * @Date: 2020-03-30 13:31
+ */
+@Component
+public class INVA0613 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<InvasiveOperationDoc> invasiveOperationDocs = inputInfo.getInvasiveOperationDocs();
+        if (ListUtil.isEmpty(invasiveOperationDocs)) {
+            return;
+        }
+        for (InvasiveOperationDoc invasiveOperationDoc : invasiveOperationDocs) {
+            Map<String, String> invasiveOperationStructureMap = invasiveOperationDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(invasiveOperationStructureMap.get("操作步骤"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA0615.java

@@ -0,0 +1,36 @@
+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.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.InvasiveOperationDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : INVA0615
+ * @Description : 操作记录无患者一般情况
+ * @Author : 胡敬
+ * @Date: 2020-03-30 13:31
+ */
+@Component
+public class INVA0615 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<InvasiveOperationDoc> invasiveOperationDocs = inputInfo.getInvasiveOperationDocs();
+        if (ListUtil.isEmpty(invasiveOperationDocs)) {
+            return;
+        }
+        for (InvasiveOperationDoc invasiveOperationDoc : invasiveOperationDocs) {
+            Map<String, String> invasiveOperationStructureMap = invasiveOperationDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(invasiveOperationStructureMap.get("患者一般情况"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA0621.java

@@ -0,0 +1,36 @@
+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.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.InvasiveOperationDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : INVA0621
+ * @Description : 操作医师未签名
+ * @Author : 胡敬
+ * @Date: 2020-03-30 13:29
+ */
+@Component
+public class INVA0621 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<InvasiveOperationDoc> invasiveOperationDocs = inputInfo.getInvasiveOperationDocs();
+        if (ListUtil.isEmpty(invasiveOperationDocs)) {
+            return;
+        }
+        for (InvasiveOperationDoc invasiveOperationDoc : invasiveOperationDocs) {
+            Map<String, String> invasiveOperationStructureMap = invasiveOperationDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(invasiveOperationStructureMap.get("操作医师签名"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/invasiveoperation/INVA0622.java

@@ -2,7 +2,7 @@ package com.lantone.qc.kernel.catalogue.invasiveoperation;
 
 /**
  * @ClassName : INVA0622
- * @Description :
+ * @Description : 有创操作记录--
  * @Author : 楼辉荣
  * @Date: 2020-03-28 17:28
  */

+ 44 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0575.java

@@ -0,0 +1,44 @@
+package com.lantone.qc.kernel.catalogue.operationdiscussion;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.PreoperativeDiscussionDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:  术前讨论及小结无简要病情
+ * @author: kwz
+ * @time: 2020/3/30 13:28
+ */
+public class OPE0575 extends QCCatalogue {
+    @Override
+    protected void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        if(ListUtil.isNotEmpty(operationDocs)){
+            pre:
+            for (OperationDoc od:operationDocs) {
+                PreoperativeDiscussionDoc preoperativeDiscussionDoc = od.getPreoperativeDiscussionDoc();
+                if(preoperativeDiscussionDoc != null){
+                    Map<String, String> preMap = preoperativeDiscussionDoc.getStructureMap();
+                    if(preMap != null && preMap.containsKey("简要病情")){
+                        if(CatalogueUtil.isEmpty(preMap.get("简要病情"))){
+                            status.set("-1");
+                            break pre;
+                        }
+                    }else {
+                        status.set("-1");
+                        break pre;
+                    }
+                }
+            }
+        }
+    }
+}

+ 43 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0578.java

@@ -0,0 +1,43 @@
+package com.lantone.qc.kernel.catalogue.operationdiscussion;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.PreoperativeDiscussionDoc;
+import com.lantone.qc.pub.util.ListUtil;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:  术前讨论记录未记录具体讨论意见
+ * @author: kwz
+ * @time: 2020/3/30 13:28
+ */
+public class OPE0578 extends QCCatalogue {
+    @Override
+    protected void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        if(ListUtil.isNotEmpty(operationDocs)){
+            pre:
+            for (OperationDoc od:operationDocs) {
+                PreoperativeDiscussionDoc preoperativeDiscussionDoc = od.getPreoperativeDiscussionDoc();
+                if(preoperativeDiscussionDoc != null){
+                    Map<String, String> preMap = preoperativeDiscussionDoc.getStructureMap();
+                    if(preMap != null && preMap.containsKey("讨论结论")){
+                        if(CatalogueUtil.isEmpty(preMap.get("讨论结论"))){
+                            status.set("-1");
+                            break pre;
+                        }
+                    }else {
+                        status.set("-1");
+                        break pre;
+                    }
+                }
+            }
+        }
+    }
+}

+ 43 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0579.java

@@ -0,0 +1,43 @@
+package com.lantone.qc.kernel.catalogue.operationdiscussion;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.PreoperativeDiscussionDoc;
+import com.lantone.qc.pub.util.ListUtil;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 术前讨论记录讨论日期未填写
+ * @author: kwz
+ * @time: 2020/3/30 13:28
+ */
+public class OPE0579 extends QCCatalogue {
+    @Override
+    protected void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        if(ListUtil.isNotEmpty(operationDocs)){
+            pre:
+            for (OperationDoc od:operationDocs) {
+                PreoperativeDiscussionDoc preoperativeDiscussionDoc = od.getPreoperativeDiscussionDoc();
+                if(preoperativeDiscussionDoc != null){
+                    Map<String, String> preMap = preoperativeDiscussionDoc.getStructureMap();
+                    if(preMap != null && preMap.containsKey("讨论时间")){
+                        if(CatalogueUtil.isEmpty(preMap.get("讨论时间"))){
+                            status.set("-1");
+                            break pre;
+                        }
+                    }else {
+                        status.set("-1");
+                        break pre;
+                    }
+                }
+            }
+        }
+    }
+}

+ 43 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0580.java

@@ -0,0 +1,43 @@
+package com.lantone.qc.kernel.catalogue.operationdiscussion;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.PreoperativeDiscussionDoc;
+import com.lantone.qc.pub.util.ListUtil;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 术前讨论记录未记录讨论者的姓名及职称
+ * @author: kwz
+ * @time: 2020/3/30 13:28
+ */
+public class OPE0580 extends QCCatalogue {
+    @Override
+    protected void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        if(ListUtil.isNotEmpty(operationDocs)){
+            pre:
+            for (OperationDoc od:operationDocs) {
+                PreoperativeDiscussionDoc preoperativeDiscussionDoc = od.getPreoperativeDiscussionDoc();
+                if(preoperativeDiscussionDoc != null){
+                    Map<String, String> preMap = preoperativeDiscussionDoc.getStructureMap();
+                    if(preMap != null && preMap.containsKey("参加人员")){
+                        if(CatalogueUtil.isEmpty(preMap.get("参加人员"))){
+                            status.set("-1");
+                            break pre;
+                        }
+                    }else {
+                        status.set("-1");
+                        break pre;
+                    }
+                }
+            }
+        }
+    }
+}

+ 43 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0581.java

@@ -0,0 +1,43 @@
+package com.lantone.qc.kernel.catalogue.operationdiscussion;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.PreoperativeDiscussionDoc;
+import com.lantone.qc.pub.util.ListUtil;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 术前讨论无记录者签名
+ * @author: kwz
+ * @time: 2020/3/30 13:28
+ */
+public class OPE0581 extends QCCatalogue {
+    @Override
+    protected void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        if(ListUtil.isNotEmpty(operationDocs)){
+            pre:
+            for (OperationDoc od:operationDocs) {
+                PreoperativeDiscussionDoc preoperativeDiscussionDoc = od.getPreoperativeDiscussionDoc();
+                if(preoperativeDiscussionDoc != null){
+                    Map<String, String> preMap = preoperativeDiscussionDoc.getStructureMap();
+                    if(preMap != null && preMap.containsKey("医生签名")){
+                        if(CatalogueUtil.isEmpty(preMap.get("医生签名"))){
+                            status.set("-1");
+                            break pre;
+                        }
+                    }else {
+                        status.set("-1");
+                        break pre;
+                    }
+                }
+            }
+        }
+    }
+}

+ 42 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0644.java

@@ -0,0 +1,42 @@
+package com.lantone.qc.kernel.catalogue.operationdiscussion;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * @Description: 未记录术中并发症情况
+ * @author: 胡敬
+ * @time: 2020/3/30 10:05
+ */
+public class OPE0644 extends QCCatalogue {
+
+    @Override
+    protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
+        status.set("0");
+        boolean isOperativePatient = true;//是手术患者(暂时默认是)
+        if (isOperativePatient) {
+            List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+            if (ListUtil.isNotEmpty(operationDocs)) {
+                long count = operationDocs.stream().filter(operationDoc -> {
+                    boolean flag = false;
+                    if (operationDoc.getOperationRecordDoc() != null
+                            && StringUtil.isBlank(operationDoc.getOperationRecordDoc().getStructureMap().get("术中并发症"))) {
+                        flag = true;
+                    }
+                    return true;
+                }).count();
+                if (count > 0) {
+                    status.set("-1");
+                }
+            }
+        }
+    }
+
+}

+ 50 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0645.java

@@ -0,0 +1,50 @@
+package com.lantone.qc.kernel.catalogue.operationdiscussion;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : OPE0645
+ * @Description : 未记录术中耗材情况
+ * @Author : 胡敬
+ * @Date: 2020-03-30 10:10
+ */
+@Component
+public class OPE0645 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        boolean isOperativePatient = true;//是手术患者(暂时默认是)
+        if (isOperativePatient) {
+            List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+            if (operationDocs.size() == 0) {
+                return;
+            }
+            for (OperationDoc operationDoc : operationDocs) {
+                OperationRecordDoc operationRecordDoc = operationDoc.getOperationRecordDoc();
+                if (operationRecordDoc == null) {
+                    continue;
+                }
+                Map<String, String> operationRecordStructureMap = operationRecordDoc.getStructureMap();
+                String operationDuringStr = operationRecordStructureMap.get("手术经过及处理(包括患者的体位、切口处理、病灶所见及手术步骤等)");
+                if (CatalogueUtil.isEmpty(operationDuringStr)) {
+                    continue;
+                }
+                String intraoperativeConsumables = operationDuringStr.substring(operationDuringStr.indexOf("术中耗材") + 1);
+                if (CatalogueUtil.isEmpty(intraoperativeConsumables)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+        }
+    }
+}

+ 42 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0646.java

@@ -0,0 +1,42 @@
+package com.lantone.qc.kernel.catalogue.operationdiscussion;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * @Description: 未记录术中输血情况
+ * @author: 胡敬
+ * @time: 2020/3/30 10:20
+ */
+public class OPE0646 extends QCCatalogue {
+
+    @Override
+    protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
+        status.set("0");
+        boolean isOperativePatient = true;//是手术患者(暂时默认是)
+        if (isOperativePatient) {
+            List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+            if (ListUtil.isNotEmpty(operationDocs)) {
+                long count = operationDocs.stream().filter(operationDoc -> {
+                    boolean flag = false;
+                    if (operationDoc.getOperationRecordDoc() != null
+                            && StringUtil.isBlank(operationDoc.getOperationRecordDoc().getStructureMap().get("输血情况"))) {
+                        flag = true;
+                    }
+                    return true;
+                }).count();
+                if (count > 0) {
+                    status.set("-1");
+                }
+            }
+        }
+    }
+
+}

+ 52 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0647.java

@@ -0,0 +1,52 @@
+package com.lantone.qc.kernel.catalogue.operationdiscussion;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : OPE0647
+ * @Description : 手术记录未在术后24h内完成
+ * @Author : 胡敬
+ * @Date: 2020-03-30 10:22
+ */
+@Component
+public class OPE0647 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        boolean isOperativePatient = true;//是手术患者(暂时默认是)
+        if (isOperativePatient) {
+            List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+            if (operationDocs.size() == 0) {
+                return;
+            }
+            for (OperationDoc operationDoc : operationDocs) {
+                OperationRecordDoc operationRecordDoc = operationDoc.getOperationRecordDoc();
+                if (operationRecordDoc == null) {
+                    continue;
+                }
+                Map<String, String> operationRecordStructureMap = operationRecordDoc.getStructureMap();
+                String operationEndDateStr = operationRecordStructureMap.get("手术结束时间");
+                String operationRecordDateStr = operationRecordStructureMap.get("记录时间");
+                if (CatalogueUtil.isEmpty(operationEndDateStr) || CatalogueUtil.isEmpty(operationRecordDateStr)) {
+                    continue;
+                }
+                boolean compareTime = CatalogueUtil.compareTime(StringUtil.parseDateTime(operationEndDateStr),
+                        StringUtil.parseDateTime(operationRecordDateStr),
+                        (long) (24 * 60));
+                if (compareTime) {
+                    status.set("-1");
+                    return;
+                }
+            }
+        }
+    }
+}

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0680.java

@@ -0,0 +1,36 @@
+package com.lantone.qc.kernel.catalogue.threelevelward;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.RescueDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : THR0680
+ * @Description : 抢救记录无病情变化情况
+ * @Author : 胡敬
+ * @Date: 2020-03-30 13:00
+ */
+@Component
+public class THR0680 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<RescueDoc> rescueDocs = inputInfo.getRescueDocs();
+        if (ListUtil.isEmpty(rescueDocs)) {
+            return;
+        }
+        for (RescueDoc rescueDoc : rescueDocs) {
+            Map<String, String> rescueStructureMap = rescueDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(rescueStructureMap.get("病情变化"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0681.java

@@ -0,0 +1,36 @@
+package com.lantone.qc.kernel.catalogue.threelevelward;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.RescueDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : THR0681
+ * @Description : 抢救记录无记录时间
+ * @Author : 胡敬
+ * @Date: 2020-03-30 13:15
+ */
+@Component
+public class THR0681 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<RescueDoc> rescueDocs = inputInfo.getRescueDocs();
+        if (ListUtil.isEmpty(rescueDocs)) {
+            return;
+        }
+        for (RescueDoc rescueDoc : rescueDocs) {
+            Map<String, String> rescueStructureMap = rescueDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(rescueStructureMap.get("医师签名-时间"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 46 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0682.java

@@ -0,0 +1,46 @@
+package com.lantone.qc.kernel.catalogue.threelevelward;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.RescueDoc;
+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;
+
+/**
+ * @ClassName : THR0682
+ * @Description : 抢救记录无病情变化情况
+ * @Author : 胡敬
+ * @Date: 2020-03-30 13:14
+ */
+@Component
+public class THR0682 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<RescueDoc> rescueDocs = inputInfo.getRescueDocs();
+        if (ListUtil.isEmpty(rescueDocs)) {
+            return;
+        }
+        for (RescueDoc rescueDoc : rescueDocs) {
+            Map<String, String> rescueStructureMap = rescueDoc.getStructureMap();
+            String rescueDateStr = rescueStructureMap.get("抢救时间");
+            String doctorSognDateStr = rescueStructureMap.get("医师签名-时间");
+            if (CatalogueUtil.isEmpty(rescueDateStr) || CatalogueUtil.isEmpty(doctorSognDateStr)) {
+                continue;
+            }
+            rescueDateStr = rescueDateStr.split("[-—]")[1];
+            boolean compareTime = CatalogueUtil.compareTime(StringUtil.parseDateTime(rescueDateStr),
+                    StringUtil.parseDateTime(doctorSognDateStr),
+                    (long) (6 * 60));
+            if (compareTime) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0683.java

@@ -0,0 +1,36 @@
+package com.lantone.qc.kernel.catalogue.threelevelward;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.RescueDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : THR0683
+ * @Description : 抢救记录未记录抢救时间
+ * @Author : 胡敬
+ * @Date: 2020-03-30 13:15
+ */
+@Component
+public class THR0683 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<RescueDoc> rescueDocs = inputInfo.getRescueDocs();
+        if (ListUtil.isEmpty(rescueDocs)) {
+            return;
+        }
+        for (RescueDoc rescueDoc : rescueDocs) {
+            Map<String, String> rescueStructureMap = rescueDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(rescueStructureMap.get("抢救时间"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0684.java

@@ -0,0 +1,36 @@
+package com.lantone.qc.kernel.catalogue.threelevelward;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.RescueDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : THR0684
+ * @Description : 抢救记录未记录抢救措施
+ * @Author : 胡敬
+ * @Date: 2020-03-30 13:15
+ */
+@Component
+public class THR0684 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<RescueDoc> rescueDocs = inputInfo.getRescueDocs();
+        if (ListUtil.isEmpty(rescueDocs)) {
+            return;
+        }
+        for (RescueDoc rescueDoc : rescueDocs) {
+            Map<String, String> rescueStructureMap = rescueDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(rescueStructureMap.get("抢救措施"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0685.java

@@ -0,0 +1,36 @@
+package com.lantone.qc.kernel.catalogue.threelevelward;
+
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.RescueDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : THR0685
+ * @Description : 抢救记录未记录参加抢救医务人员姓名及职称
+ * @Author : 胡敬
+ * @Date: 2020-03-30 13:15
+ */
+@Component
+public class THR0685 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<RescueDoc> rescueDocs = inputInfo.getRescueDocs();
+        if (ListUtil.isEmpty(rescueDocs)) {
+            return;
+        }
+        for (RescueDoc rescueDoc : rescueDocs) {
+            Map<String, String> rescueStructureMap = rescueDoc.getStructureMap();
+            if (CatalogueUtil.isEmpty(rescueStructureMap.get("参加抢救的医务人员姓名及专业技术职称"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 11 - 17
public/src/main/java/com/lantone/qc/pub/model/InputInfo.java

@@ -1,23 +1,7 @@
 package com.lantone.qc.pub.model;
 
 import com.google.common.collect.Maps;
-import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
-import com.lantone.qc.pub.model.doc.ClinicalBloodDoc;
-import com.lantone.qc.pub.model.doc.CrisisValueReportDoc;
-import com.lantone.qc.pub.model.doc.CriticallyIllNoticeDoc;
-import com.lantone.qc.pub.model.doc.DeathCaseDiscussDoc;
-import com.lantone.qc.pub.model.doc.DeathRecordDoc;
-import com.lantone.qc.pub.model.doc.DifficultCaseDiscussDoc;
-import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
-import com.lantone.qc.pub.model.doc.DutyShiftSystemDoc;
-import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
-import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
-import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
-import com.lantone.qc.pub.model.doc.NursingSystemDoc;
-import com.lantone.qc.pub.model.doc.RescueDoc;
-import com.lantone.qc.pub.model.doc.SeriouslyIllNoticeDoc;
-import com.lantone.qc.pub.model.doc.StagesSummaryDoc;
-import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
+import com.lantone.qc.pub.model.doc.*;
 import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
 import com.lantone.qc.pub.model.doc.transferrecord.TransferRecordDoc;
@@ -86,6 +70,16 @@ public class InputInfo {
     private List<StagesSummaryDoc> stagesSummaryDocs = new ArrayList<>();
     //查房记录
     private List<ThreeLevelWardDoc> threeLevelWardDocs = new ArrayList<>();
+    //麻醉相关
+    private List<AnesthesiaRelatedDoc> anesthesiaRelatedDocs = new ArrayList<>();
+    //医嘱信息
+    private List<DoctorsAdviceDoc> doctorsAdviceDocs = new ArrayList<>();
+    //有创操作记录
+    private List<InvasiveOperationDoc> invasiveOperationDocs = new ArrayList<>();
+    //病历书写规范
+    private List<MedicalWritingDoc> medicalWritingDocs = new ArrayList<>();
+    //诊疗合理性
+    private List<ReasonableDiagnosisDoc> reasonableDiagnosisDocs = new ArrayList<>();
 
     //新增记录
     public <T> void addDoc(List<T> list, T obj) {

+ 10 - 0
public/src/main/java/com/lantone/qc/pub/model/doc/AnesthesiaRelatedDoc.java

@@ -0,0 +1,10 @@
+package com.lantone.qc.pub.model.doc;
+
+/**
+ * @ClassName : AnesthesiaRelatedDoc
+ * @Description :麻醉相关
+ * @Author : 楼辉荣
+ * @Date: 2020-03-30 10:08
+ */
+public class AnesthesiaRelatedDoc extends ModelDoc {
+}

+ 10 - 0
public/src/main/java/com/lantone/qc/pub/model/doc/DoctorsAdviceDoc.java

@@ -0,0 +1,10 @@
+package com.lantone.qc.pub.model.doc;
+
+/**
+ * @ClassName : DoctorsAdviceDoc
+ * @Description : 医嘱信息
+ * @Author : 楼辉荣
+ * @Date: 2020-03-30 10:09
+ */
+public class DoctorsAdviceDoc extends ModelDoc {
+}

+ 10 - 0
public/src/main/java/com/lantone/qc/pub/model/doc/InvasiveOperationDoc.java

@@ -0,0 +1,10 @@
+package com.lantone.qc.pub.model.doc;
+
+/**
+ * @ClassName : InvasiveOperationDoc
+ * @Description : 有创操作记录
+ * @Author : 楼辉荣
+ * @Date: 2020-03-30 10:13
+ */
+public class InvasiveOperationDoc extends ModelDoc {
+}

+ 10 - 0
public/src/main/java/com/lantone/qc/pub/model/doc/MedicalWritingDoc.java

@@ -0,0 +1,10 @@
+package com.lantone.qc.pub.model.doc;
+
+/**
+ * @ClassName : MedicalWritingDoc
+ * @Description : 病历书写规范
+ * @Author : 楼辉荣
+ * @Date: 2020-03-30 10:10
+ */
+public class MedicalWritingDoc extends ModelDoc {
+}

+ 10 - 0
public/src/main/java/com/lantone/qc/pub/model/doc/ReasonableDiagnosisDoc.java

@@ -0,0 +1,10 @@
+package com.lantone.qc.pub.model.doc;
+
+/**
+ * @ClassName : ReasonableDiagnosisDoc
+ * @Description : 诊疗合理性
+ * @Author : 楼辉荣
+ * @Date: 2020-03-30 10:12
+ */
+public class ReasonableDiagnosisDoc extends ModelDoc {
+}