Browse Source

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

zhanghang 3 years ago
parent
commit
513f9d5240

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0058.java

@@ -66,7 +66,7 @@ public class BEH0058 extends QCCatalogue {
             }
             regex = ".*\\d+-\\d+-\\d+-[1-9].*";
             boolean matches = maritalText.matches(regex);
-            regex = ".*\\d+,\\d+,\\d+,[1-9].*|.*\\d个.*|.*\\d男.*|.*\\d女.*|.*\\d子.*";
+            regex = ".*\\d+,\\d+,\\d+,[1-9].*|.*\\d个.*|.*\\d男.*|.*\\d女.*|.*\\d子.*|.*G\\dp\\d.*";
             boolean isComma = maritalText.matches(regex);
             if (flag || matches || isComma) {
                 status.set("0");

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0493.java

@@ -31,7 +31,7 @@ public class BEH0493 extends QCCatalogue {
         String pacs = structureMap.get(key);
         String laboratory = structureMap.get("实验室检查");
         String image = structureMap.get("影像学检查");
-        if (StringUtil.isNotBlank(pacs) || StringUtil.isNotBlank(laboratory) || StringUtil.isNotBlank(image)) {
+        if ((StringUtil.isNotBlank(pacs) && !"。".equals(pacs)) || StringUtil.isNotBlank(laboratory) || StringUtil.isNotBlank(image)) {
             status.set("0");
             return;
         }

+ 3 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI03063.java

@@ -40,7 +40,7 @@ public class CLI03063 extends QCCatalogue {
                     StringUtil.parseDateTime(clinicalBloodDocIterator.next().getStructureMap().get(key)),
                     StringUtil.parseDateTime(DateUtil.nowString()),
                     Long.valueOf(24 * 60))) {//如果接收未超过24小时,规则不判断
-                clinicalBloodDocIterator.remove();
+                continue;
             }
         }
         while (clinicBloodEffectDocIterator.hasNext()) {
@@ -48,7 +48,7 @@ public class CLI03063 extends QCCatalogue {
                     StringUtil.parseDateTime(clinicBloodEffectDocIterator.next().getStructureMap().get(key)),
                     StringUtil.parseDateTime(DateUtil.nowString()),
                     Long.valueOf(24 * 60))) {//如果接收未超过24小时,规则不判断
-                clinicBloodEffectDocIterator.remove();
+                continue;
             }
         }
         Collections.sort(clinicalBloodDocs, new Comparator<ClinicalBloodDoc>() {
@@ -118,6 +118,7 @@ public class CLI03063 extends QCCatalogue {
         switch (Content.hospital_Id) {
             case "7":               //厦门
             case "20":
+            case "35":
                 return "病历日期";
             default:
                 return "记录时间";

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC0109.java

@@ -40,6 +40,7 @@ public class DEAC0109 extends QCCatalogue {
         switch (Content.hospital_Id)
         {
             case "7":               //厦门
+            case "35":
                 return "病历日期";
             default:
                 return "记录时间";

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathrecord/DEAR0342.java

@@ -33,6 +33,7 @@ public class DEAR0342 extends QCCatalogue {
             case "1":               //长兴
             case "2":
             case "5":
+            case "35":
                 return "诊疗经过";
             default:
                 return "诊疗经过(重点记录病情演变、抢救经过)";

+ 47 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathcasediscuss/DEAC0108.java

@@ -0,0 +1,47 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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.model.doc.DeathRecordDoc;
+import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : DEAC0108
+ * @Description : 死亡患者无死亡病例讨论记录
+ * @Author : 胡敬
+ * @Date: 2020-03-19 11:24
+ */
+@Component
+public class DEAC0108 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, String> FirstPageStructure = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String outWay = FirstPageStructure.get(Content.outWay);
+            //判断患者是否死亡
+            if (CatalogueUtil.isEmpty(outWay) || !outWay.contains("死亡")) {
+                return;
+            }
+            List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
+            if (doctorAdviceDocs.size() == 0) {
+                return;
+            }
+            long count = doctorAdviceDocs.stream().filter(x -> x.getStructureMap().get("医嘱项目名称").contains("死亡")).count();
+            if ((count > 0 || outWay.contains("死亡")) && (inputInfo.getDeathCaseDiscussDoc() == null || inputInfo.getDeathCaseDiscussDoc().getStructureMap().size() == 0)) {
+                status.set("-1");
+            }
+            if ((inputInfo.getDeathCaseDiscussDoc() == null || inputInfo.getDeathCaseDiscussDoc().getStructureMap().size() == 0)
+                    && deathRecordDoc != null) {
+                status.set("-1");
+            }
+        }
+    }
+}

+ 37 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/deathrecord/DEAR0340.java

@@ -0,0 +1,37 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : DEAR0340
+ * @Description : 死亡记录无入院情况
+ * @Author : 胡敬
+ * @Date: 2020-03-18 17:14
+ */
+@Component
+public class DEAR0340 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();
+            // 与任燕青确认,统一只需要判断入院情况,
+            // if(StringUtils.isBlank(deathRecordStructureMap.get("主诉"))){
+            //     status.set("-1");
+            //     return;
+            // }
+            if (CatalogueUtil.isEmpty(deathRecordStructureMap.get("入院情况"))
+                    && StringUtil.isEmpty(deathRecordStructureMap.get("实验室检查"))
+                    && StringUtil.isEmpty(deathRecordStructureMap.get("影像学检查"))
+                    && StringUtil.isEmpty(deathRecordStructureMap.get("病情摘要"))) {
+                status.set("-1");
+            }
+        }
+    }
+}

+ 4 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/leavehospital/LEA02901.java

@@ -33,13 +33,13 @@ public class LEA02901 extends QCCatalogue {
         if (deathRecordDoc == null || deathRecordDoc.getText() == null) {
             Map<String, String> structureMap = leaveHospitalDoc.getStructureMap();
             String dischargeOrder = structureMap.get("出院医嘱");
-            if(StringUtils.isNotEmpty(dischargeOrder)){
+            if (StringUtils.isNotEmpty(dischargeOrder)) {
                 //跟医学部任燕青确认过, 去除括号里的东西
                 dischargeOrder = RegularUtil.ClearBracket(dischargeOrder);
                 if (StringUtil.isNotBlank(dischargeOrder)) {
-                    List<String> words = Lists.newArrayList("qd","bid","tid","qid","qh","q2h","q4h","q6h","q8h",
-                            "qn","q3w","qod","biw","qw","prn","sos","ad","lib","st","stat","hs","am","po","ID","IH","IM",
-                            "IV","OD","OL","OS","OU","ivgtt","Q12H","QN","ONCE");
+                    List<String> words = Lists.newArrayList("qd", "bid", "tid", "qid", "qh", "q2h", "q4h", "q6h", "q8h",
+                            "qn", "q3w", "qod", "biw", "qw", "prn", "sos", "ad", "lib", "st", "stat", "am", "po", "ID", "IH", "IM",
+                            "IV", "OD", "OL", "OS", "OU", "ivgtt", "Q12H", "QN", "ONCE");
                     for (String word : words) {
                         if (dischargeOrder.contains(word.toUpperCase()) || dischargeOrder.contains(word.toLowerCase())) {
                             status.set("-1");

+ 63 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/operationdiscussion/OPE0323.java

@@ -0,0 +1,63 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * @Description: 手术记录未由主刀或一助书写
+ * @author: Mark
+ * @time: 2020/04/04 11:22
+ */
+@Component
+public class OPE0323 extends QCCatalogue {
+
+    @Override
+    protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
+        status.set("0");
+        //医嘱
+        //        List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
+        //        if (ListUtil.isEmpty(doctorAdviceDocs)) {
+        //            return;
+        //        }
+        //        boolean isOperativePatient = CatalogueUtil.isOperativePatients(doctorAdviceDocs);
+        boolean isOperativePatient = true;//是手术患者(暂时默认是)
+//        if (isOperativePatient) {
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        if (operationDocs != null && operationDocs.size() > 0) {
+            if (ListUtil.isNotEmpty(operationDocs)) {
+                long count = operationDocs.stream().filter(operationDoc -> {
+                    boolean flag = false;
+                    if (operationDoc.getOperationRecordDoc() != null) {
+                        String surgeon = operationDoc.getOperationRecordDoc().getStructureMap().get("手术者");
+                        String assist1 = operationDoc.getOperationRecordDoc().getStructureMap().get("一助");
+                        String signature = operationDoc.getOperationRecordDoc().getStructureMap().get("记录医生");
+                        if (StringUtil.isBlank(signature)) {
+                            return flag;
+                        }
+                        if (StringUtil.isNotBlank(surgeon) && StringUtil.isNotBlank(assist1)) {
+                            String operator = surgeon + ", " + assist1;
+                            if (!operator.contains(signature)) {
+                                flag = true;
+                            }
+                        }
+                    }
+                    return flag;
+                }).count();
+                if (count > 0) {
+                    status.set("-1");
+                }
+            }
+        }
+
+//        }
+    }
+
+}