zhanghang 4 anos atrás
pai
commit
33e71c6aa9

+ 7 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/majorInspection/MI0156.java

@@ -30,10 +30,13 @@ public class MI0156 extends QCCatalogue {
                 String doctorAsks = doctorAdviceDocStructureMap.get("医生嘱托");
                 if ("临时医嘱".equals(doctorAsks)) {
                     //取医嘱项目名称
-                    String doctorAsksName = doctorAdviceDocStructureMap.get("医嘱项目名称");
-                    if (doctorAsksName.contains("MR") ) {
-                        //获得医嘱为CT的数据
-                        ctNum++;
+                    String daItemName = doctorAdviceDocStructureMap.get("医嘱项目名称");
+                    if(daItemName.contains("磁共振")||daItemName.contains("MR")){
+                        if(!daItemName.contains("IMRT")&&!daItemName.contains("mrs评分")){
+                            ctNum++;
+
+                            continue;
+                        }
                     }
                 }
             }

+ 8 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/majorInspection/MI0157.java

@@ -30,11 +30,14 @@ public class MI0157 extends QCCatalogue {
                 String doctorAsks = doctorAdviceDocStructureMap.get("医生嘱托");
                 if ("临时医嘱".equals(doctorAsks)) {
                     //取医嘱项目名称
-                    String doctorAsksName = doctorAdviceDocStructureMap.get("医嘱项目名称");
-                    if(doctorAsksName.contains("MR")){
-                        //获得医嘱为CT的数据
-                        ctNum++;
-                   }
+                    String daItemName = doctorAdviceDocStructureMap.get("医嘱项目名称");
+                    if (daItemName.contains("磁共振") || daItemName.contains("MR")) {
+                        if (!daItemName.contains("IMRT") && !daItemName.contains("mrs评分")) {
+                            ctNum++;
+
+                            continue;
+                        }
+                    }
                 }
             }
             List<ThreeLevelWardDoc> allDoctorWradDocs = inputInfo.getThreeLevelWardDocs().get(0).getAllDoctorWradDocs();

+ 7 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/majorInspection/MI0158.java

@@ -31,10 +31,13 @@ public class MI0158 extends QCCatalogue {
                 String doctorAsks = doctorAdviceDocStructureMap.get("医生嘱托");
                 if ("临时医嘱".equals(doctorAsks)) {
                     //取医嘱项目名称
-                    String doctorAsksName = doctorAdviceDocStructureMap.get("医嘱项目名称");
-                    if (doctorAsksName.contains("CT.") || doctorAsksName.contains("CT平扫")) {
-                        //获得医嘱为CT的数据
-                        ctNum++;
+                    String daItemName = doctorAdviceDocStructureMap.get("医嘱项目名称");
+                    if (daItemName.contains("CT") || daItemName.contains("X线")) {
+                        if ((!daItemName.contains("ATCH") && !daItemName.contains("TCT") && !daItemName.contains("HCT") && !daItemName.contains("OCT") && !daItemName.contains("NCT") && !daItemName.contains("LCT") && !daItemName.contains("ACT")) || (daItemName.contains("停"))) {
+                            //都不包含为CT
+                            ctNum++;
+                            continue;
+                        }
                     }
                 }
             }

+ 8 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/majorInspection/MI0159.java

@@ -31,11 +31,14 @@ public class MI0159 extends QCCatalogue {
                 String doctorAsks = doctorAdviceDocStructureMap.get("医生嘱托");
                 if ("临时医嘱".equals(doctorAsks)) {
                     //取医嘱项目名称
-                    String doctorAsksName = doctorAdviceDocStructureMap.get("医嘱项目名称");
-                    if(doctorAsksName.contains("CT.")||doctorAsksName.contains("CT平扫")){
-                        //获得医嘱为CT的数据
-                        ctNum++;
-                   }
+                    String daItemName = doctorAdviceDocStructureMap.get("医嘱项目名称");
+                    if (daItemName.contains("CT") || daItemName.contains("X线")) {
+                        if ((!daItemName.contains("ATCH") && !daItemName.contains("TCT") && !daItemName.contains("HCT") && !daItemName.contains("OCT") && !daItemName.contains("NCT") && !daItemName.contains("LCT") && !daItemName.contains("ACT")) || (daItemName.contains("停"))) {
+                            //都不包含为CT
+                            ctNum++;
+                            continue;
+                        }
+                    }
                 }
             }
             List<ThreeLevelWardDoc> allDoctorWradDocs = inputInfo.getThreeLevelWardDocs().get(0).getAllDoctorWradDocs();

+ 52 - 19
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/majorInspection/OPE0310.java

@@ -2,8 +2,10 @@ package com.lantone.qc.kernel.catalogue.beilun.majorInspection;
 
 import com.google.common.collect.Maps;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+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.DoctorAdviceDoc;
 import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
 import com.lantone.qc.pub.model.doc.LisDoc;
 import com.lantone.qc.pub.model.doc.PacsDoc;
@@ -27,27 +29,58 @@ public class OPE0310 extends QCCatalogue {
         status.set("0");
         FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
         if (firstPageRecordDoc == null) {
-            return;
-        }
-        Object pathologyMoney = firstPageRecordDoc.getStructureMap().get("病理诊疗费");
-        String pathologyMoneyStr = pathologyMoney.toString();
-        if (pathologyMoney.equals("0")&& StringUtil.isBlank(pathologyMoneyStr)) {
-            return;
-        }
-        double a = Double.parseDouble(pathologyMoneyStr);
-        if (a > 68) {
-            List<PacsDoc> pacsDocs = inputInfo.getPacsDocs();
-            for (PacsDoc pacsDoc : pacsDocs) {
-                Map<String, String> pacsDocStructureMap = pacsDoc.getStructureMap();
-                String pacsDocStr = pacsDocStructureMap.get("报告名称");
-                if(pacsDocStr.contains("病理")){
-                    return;
-                }else {
-                    status.set("-1");
-                    return;
+            //病案首页为空判断医嘱
+            List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
+            if (doctorAdviceDocs.size() == 0) {
+                return;
+            }
+            for (DoctorAdviceDoc dad : doctorAdviceDocs) {
+                String name = dad.getStructureMap().get("医嘱项目名称");
+                if (name.contains("非手术") || name.contains("手术室") || (name.contains("手术") && name.contains("取消")) || (name.contains("暂停") && name.contains("手术")) || name.contains("静脉穿刺置管术") || name.startsWith("停") || name.contains("前一次")
+                        || name.contains("特殊病人手术使用一次性卫生材料") || name.contains("人免疫缺陷病毒抗体检测免费")) {
+                    continue;
                 }
+                if (name.contains("手术")) {
+                    for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {
+                        String adviceDocName = doctorAdviceDoc.getStructureMap().get("医嘱项目名称");
+                        if (adviceDocName.contains("病理")) {
+                            List<PacsDoc> pacsDocs = inputInfo.getPacsDocs();
+                            for (PacsDoc pacsDoc : pacsDocs) {
+                                Map<String, String> pacsDocStructureMap = pacsDoc.getStructureMap();
+                                String pacsDocStr = pacsDocStructureMap.get("报告名称");
+                                if (pacsDocStr.contains("病理")) {
+                                    return;
+                                } else {
+                                    status.set("-1");
+                                    return;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+            String pathologyMoneyStr = firstPageRecordDoc.getStructureMap().get("病理诊疗费").toString();
+            String operationMoneyStr = firstPageRecordDoc.getStructureMap().get("手术费").toString();
+            if ((pathologyMoneyStr.equals("0") && StringUtil.isEmpty(pathologyMoneyStr)) || operationMoneyStr.equals("0") && StringUtil.isEmpty(operationMoneyStr)) {
+                return;
+            }
+            double a = Double.parseDouble(pathologyMoneyStr);
+            double b = Double.parseDouble(operationMoneyStr);
+            if (a > Content.pathologicalFee && b > 0) {
+                List<PacsDoc> pacsDocs = inputInfo.getPacsDocs();
+                for (PacsDoc pacsDoc : pacsDocs) {
+                    Map<String, String> pacsDocStructureMap = pacsDoc.getStructureMap();
+                    String pacsDocStr = pacsDocStructureMap.get("报告名称");
+                    if (pacsDocStr.contains("病理")) {
+                        return;
+                    } else {
+                        status.set("-1");
+                        return;
+                    }
 
+                }
             }
         }
-    }
+
 }

+ 46 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/majorInspection/OPE03111.java

@@ -1,15 +1,19 @@
 package com.lantone.qc.kernel.catalogue.beilun.majorInspection;
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+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.DoctorAdviceDoc;
 import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
+import com.lantone.qc.pub.model.doc.PacsDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.text.ParseException;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 手术病理检查存在手术记录中无病理相关记录
@@ -23,9 +27,48 @@ public class OPE03111 extends QCCatalogue {
     protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
         status.set("0");
         FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
-        String pathologyMoney = firstPageRecordDoc.getStructureMap().get("病理诊疗费").toString();
-        String operationMoney = firstPageRecordDoc.getStructureMap().get("手术费").toString();
-            if (!operationMoney.equals("0") && !pathologyMoney.equals("0")&& StringUtil.isNotEmpty(operationMoney)&&StringUtil.isNotEmpty(pathologyMoney)) {
+        if (firstPageRecordDoc == null) {
+            //病案首页为空判断医嘱
+            List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
+            if (doctorAdviceDocs.size() == 0) {
+                return;
+            }
+            for (DoctorAdviceDoc dad : doctorAdviceDocs) {
+                String name = dad.getStructureMap().get("医嘱项目名称");
+                if (name.contains("非手术") || name.contains("手术室") || (name.contains("手术") && name.contains("取消")) || (name.contains("暂停") && name.contains("手术")) || name.contains("静脉穿刺置管术") || name.startsWith("停") || name.contains("前一次")
+                        || name.contains("特殊病人手术使用一次性卫生材料") || name.contains("人免疫缺陷病毒抗体检测免费")) {
+                    continue;
+                }
+                if (name.contains("手术")) {
+                    for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {
+                        String adviceDocName = doctorAdviceDoc.getStructureMap().get("医嘱项目名称");
+                        if (adviceDocName.contains("病理")) {
+                            status.set("-1");
+                            //判断有无手术记录
+                            List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+                            if (operationDocs != null && operationDocs.size() > 0) {
+                                //有手术记录的情况下,手术记录中应该出现体现有标本
+                                String operationDocsStr = operationDocs.get(0).getOperationRecordDoc().getStructureMap().get("手术经过及处理");
+                                if(StringUtil.isNotBlank(operationDocsStr)){
+                                    if(operationDocsStr.contains("标本")){
+                                        status.set("0");
+                                        return;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        String pathologyMoneyStr = firstPageRecordDoc.getStructureMap().get("病理诊疗费").toString();
+        String operationMoneyStr = firstPageRecordDoc.getStructureMap().get("手术费").toString();
+        if ((pathologyMoneyStr.equals("0") && StringUtil.isEmpty(pathologyMoneyStr)) || operationMoneyStr.equals("0") && StringUtil.isEmpty(operationMoneyStr)) {
+            return;
+        }
+        double a = Double.parseDouble(pathologyMoneyStr);
+        double b = Double.parseDouble(operationMoneyStr);
+        if (a > Content.pathologicalFee && b > 0) {
                 status.set("-1");
                 //判断有无手术记录
                 List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
@@ -36,8 +79,6 @@ public class OPE03111 extends QCCatalogue {
                         if(operationDocsStr.contains("标本")){
                             status.set("0");
                             return;
-                        }else {
-                            return;
                         }
                     }
                 }

+ 38 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/majorInspection/THR0093.java

@@ -1,9 +1,12 @@
 package com.lantone.qc.kernel.catalogue.beilun.majorInspection;
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+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.DoctorAdviceDoc;
 import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
+import com.lantone.qc.pub.model.doc.PacsDoc;
 import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
@@ -23,15 +26,45 @@ public class THR0093 extends QCCatalogue {
         status.set("0");
         FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
         if(firstPageRecordDoc==null){
-            return;
+            //病案首页为空判断医嘱
+            List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
+            if (doctorAdviceDocs.size() == 0) {
+                return;
+            }
+            for (DoctorAdviceDoc dad : doctorAdviceDocs) {
+                String name = dad.getStructureMap().get("医嘱项目名称");
+                if (name.contains("非手术") || name.contains("手术室") || (name.contains("手术") && name.contains("取消")) || (name.contains("暂停") && name.contains("手术")) || name.contains("静脉穿刺置管术") || name.startsWith("停") || name.contains("前一次")
+                        || name.contains("特殊病人手术使用一次性卫生材料") || name.contains("人免疫缺陷病毒抗体检测免费")) {
+                    continue;
+                }
+                if (name.contains("手术")) {
+                    for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {
+                        String adviceDocName = doctorAdviceDoc.getStructureMap().get("医嘱项目名称");
+                        if (adviceDocName.contains("病理")) {
+                            List<PacsDoc> pacsDocs = inputInfo.getPacsDocs();
+                            for (PacsDoc pacsDoc : pacsDocs) {
+                                Map<String, String> pacsDocStructureMap = pacsDoc.getStructureMap();
+                                String pacsDocStr = pacsDocStructureMap.get("报告名称");
+                                if (pacsDocStr.contains("病理")) {
+                                    return;
+                                } else {
+                                    status.set("-1");
+                                    return;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
         }
-        Object pathologyMoney = firstPageRecordDoc.getStructureMap().get("病理诊疗费");
-        String pathologyMoneyStr = pathologyMoney.toString();
-        if(pathologyMoney.equals("0")&& StringUtil.isBlank(pathologyMoneyStr)){
+        String pathologyMoneyStr = firstPageRecordDoc.getStructureMap().get("病理诊疗费").toString();
+        String operationMoneyStr = firstPageRecordDoc.getStructureMap().get("手术费").toString();
+        if ((pathologyMoneyStr.equals("0") && StringUtil.isEmpty(pathologyMoneyStr)) || operationMoneyStr.equals("0") && StringUtil.isEmpty(operationMoneyStr)) {
             return;
         }
         double a = Double.parseDouble(pathologyMoneyStr);
-        if(a>68) {
+        double b = Double.parseDouble(operationMoneyStr);
+        if (a > Content.pathologicalFee && b > 0) {
             //查房记录查找病理报告
             ThreeLevelWardDoc threeLevelWardDoc = inputInfo.getThreeLevelWardDocs().get(0);
             //所有查房记录

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

@@ -231,8 +231,8 @@ public class Content {
     public static final String daCode="医嘱转院机构名称";
     public static final String reHospitalization="三十一天内再住院计划";
 
-
-
+    //病理诊疗最低费用
+    public static final double pathologicalFee= 68.00;
 
 
     public static final String type = "性";