瀏覽代碼

温附一:规则问题修改

wangsy 3 年之前
父節點
當前提交
638fe1525e

+ 1 - 13
kernel/src/main/java/com/lantone/qc/kernel/catalogue/difficultcasediscuss/DIF0119.java

@@ -29,8 +29,7 @@ public class DIF0119 extends QCCatalogue {
         if (difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size() > 0) {
             for (DifficultCaseDiscussDoc dcdd : difficultCaseDiscussDocs) {
                 Map<String, String> dcddStructureMap = dcdd.getStructureMap();
-                String key = getKeyByHospitalId();
-                String diisDate = dcddStructureMap.get(key);
+                String diisDate = dcddStructureMap.get("参加人员");
                 if (CatalogueUtil.isEmpty(diisDate)) {
                     status.set("-1");
                     break;
@@ -38,15 +37,4 @@ public class DIF0119 extends QCCatalogue {
             }
         }
     }
-
-    private String getKeyByHospitalId() {
-        switch (Content.hospital_Id)
-        {
-            case "1":               //长兴
-            case "2":
-                return "参加讨论者";
-            default:
-                return "参加人员的姓名及专业技术职务";
-        }
-    }
 }

+ 7 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02905.java

@@ -5,6 +5,7 @@ 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.util.StringUtil;
 import org.springframework.stereotype.Component;
 
@@ -23,12 +24,17 @@ public class FIRP02905 extends QCCatalogue {
             status.set("0");
             return;
         }
+        DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
+        if (deathRecordDoc != null) {
+            status.set("0");
+            return;
+        }
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String outWay = firstpageStructureMap.get(Content.outWay);
             String name = firstpageStructureMap.get(Content.receivingOrganization);
             //医嘱离院不需要接受机构(宁海一院)
-            if (StringUtil.isNotBlank(outWay) && "医嘱离院".equals(outWay)) {
+            if (StringUtil.isNotBlank(outWay) && ("医嘱离院".equals(outWay) || "死亡".equals(outWay))) {
                 status.set("0");
                 return;
             }

+ 47 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/wenfuyi/clinicalblood/CLI0306.java

@@ -0,0 +1,47 @@
+package com.lantone.qc.kernel.catalogue.hospital.wenfuyi.clinicalblood;
+
+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.ClinicalBloodDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CLI0306
+ * @Description : 输血记录中无输血指征
+ * CRF缺少足够标注数据,使用规则判断输血原因是否有数字
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class CLI0306 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
+        if (ListUtil.isEmpty(clinicalBloodDocs)) {
+            status.set("0");
+            return;
+        }
+        if (clinicalBloodDocs != null && clinicalBloodDocs.size() > 0) {
+            for (ClinicalBloodDoc cliB : clinicalBloodDocs) {
+                Map<String, String> cliBStructureMap = cliB.getStructureMap();
+                //台州
+                if (StringUtils.isNotEmpty(cliBStructureMap.get("输血检验指标"))) {
+                    status.set("0");
+                    break;
+                }
+                String infusionReason = cliBStructureMap.get("输血制品原因");
+                if (StringUtils.isNotEmpty(infusionReason)) {
+                    status.set("0");
+                }
+            }
+        } else {
+            status.set("0");
+        }
+
+    }
+}

+ 45 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/wenfuyi/clinicalblood/CLI0566.java

@@ -0,0 +1,45 @@
+package com.lantone.qc.kernel.catalogue.hospital.wenfuyi.clinicalblood;
+
+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.ClinicalBloodDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CLI0566
+ * @Description :  输血记录输血记录者未签名
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class CLI0566 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
+        if(ListUtil.isEmpty(clinicalBloodDocs)){
+            return;
+        }
+        if(clinicalBloodDocs != null && clinicalBloodDocs.size()>0){
+            for (ClinicalBloodDoc cliB:clinicalBloodDocs) {
+                Map<String, String> cliBStructureMap = cliB.getStructureMap();
+                if(cliBStructureMap.containsKey("记录医生")){
+                    if(StringUtils.isEmpty(cliBStructureMap.get("记录医生"))){
+                        status.set("-1");
+                        break;
+                    }
+                }else {
+                    status.set("-1");
+                    break;
+                }
+
+            }
+        }
+
+    }
+}

+ 40 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/wenfuyi/difficultcasediscuss/DIF0118.java

@@ -0,0 +1,40 @@
+package com.lantone.qc.kernel.catalogue.hospital.wenfuyi.difficultcasediscuss;
+
+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.DifficultCaseDiscussDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : DIF0118
+ * @Description : 	疑难病例讨论记录未填写主持人
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class DIF0118 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<DifficultCaseDiscussDoc> difficultCaseDiscussDocs = inputInfo.getDifficultCaseDiscussDocs();
+        if(ListUtil.isEmpty(difficultCaseDiscussDocs)){
+            return;
+        }
+        if(difficultCaseDiscussDocs != null && difficultCaseDiscussDocs.size()>0){
+            for (DifficultCaseDiscussDoc dcdd:difficultCaseDiscussDocs) {
+                Map<String, String> dcddStructureMap = dcdd.getStructureMap();
+                String diisDate = dcddStructureMap.get("主持人签名");
+                if(CatalogueUtil.isEmpty(diisDate)){
+                    status.set("-1");
+                    break;
+                }
+            }
+        }
+    }
+}

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/wenfuyi/firstcourserecord/FIRC0088.java

@@ -29,7 +29,8 @@ public class FIRC0088 extends QCCatalogue {
         Map<String, String> firstCourseStructureMap = firstCourseRecordDoc.getStructureMap();
         String diffDiag = firstCourseStructureMap.get("诊断依据及鉴别诊断");
         if (StringUtil.isBlank(diffDiag) || diffDiag.contains("诊断明确") || diffDiag.contains("无需鉴别")
-                || diffDiag.contains("明确诊断") || diffDiag.contains("诊断基本明确") || diffDiag.contains("首先考虑")) {
+                || diffDiag.contains("明确诊断") || diffDiag.contains("诊断基本明确") || diffDiag.contains("首先考虑")
+                || diffDiag.contains("疾病鉴别")) {
             return;
         }
         DiagLabel differentialDiagLabel = firstCourseRecordDoc.getDifferentialDiagLabel();

+ 81 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/wenfuyi/firstpagerecord/FIRP0250.java

@@ -0,0 +1,81 @@
+package com.lantone.qc.kernel.catalogue.hospital.wenfuyi.firstpagerecord;
+
+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.RescueDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @ClassName : FIRP0250
+ * @Description : 抢救成功次数填写错误
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28ss
+ */
+@Component
+public class FIRP0250 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getRescueDocs().size() > 0) {
+            List<RescueDoc> rescueDocs = inputInfo.getRescueDocs();
+            int rescueNum = getRescueNum(rescueDocs);/* 抢救记录中抢救成功次数 */
+            boolean match = false;
+
+            Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String successfulRescueTimes = firstpageStructureMap.get("病人抢救成功次数");
+            int successfulRescueTimesTZ = 0;
+            if (StringUtil.isNotBlank(successfulRescueTimes) && CatalogueUtil.numbersOnly(successfulRescueTimes)) {
+                successfulRescueTimesTZ = Integer.parseInt(successfulRescueTimes);
+            }
+            if (rescueNum == successfulRescueTimesTZ) {
+                match = true;
+            }
+            String saveNum = firstpageStructureMap.get("病人抢救次数");
+            if (successfulRescueTimes == saveNum) {
+                match = true;
+            }
+            String name = firstpageStructureMap.get(Content.rescue_condition);
+            if (StringUtil.isNotBlank(name)) {
+                String[] split = name.split("\\s+");
+                Pattern compile = Pattern.compile("(?<=成功).*(?=次)");
+                Matcher matcher = compile.matcher(split[0]);
+                while (matcher.find()) {
+                    try {
+                        String number = matcher.group(0);
+                        int num = Integer.parseInt(number);
+                        if (num == rescueNum) {
+                            match = true;
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+
+            if (!match) {
+                status.set("-1");
+            }
+        }
+    }
+
+    private int getRescueNum(List<RescueDoc> rescueDocs) {
+        int i = 0;
+        for (RescueDoc re : rescueDocs) {
+            Map<String, String> structureMap = re.getStructureMap();
+            // 跟医学部确认,从抢救措施中读取数据
+            String qjgc = structureMap.get("抢救措施及详细经过");
+            if (StringUtil.isNotBlank(qjgc) && !qjgc.contains("死亡")) {
+                i++;
+            }
+        }
+        return i;
+    }
+}