Parcourir la source

北仑:病情记录和标题中含有主任不提示信息

wangsy il y a 4 ans
Parent
commit
c5b1f2844e

+ 76 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0125.java

@@ -1,13 +1,16 @@
 package com.lantone.qc.kernel.catalogue.threelevelward;
 
+import com.lantone.qc.dbanaly.util.KernelConstants;
+import com.lantone.qc.dbanaly.util.SpecialStorageUtil;
 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.ThreeLevelWardDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
 import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
 import com.lantone.qc.pub.util.DateUtil;
+import com.lantone.qc.pub.util.SpringContextUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
@@ -37,7 +40,8 @@ public class THR0125 extends QCCatalogue {
                 return;
             }
             //如果住院天数小于3天则不判断该条规则
-            if (StringUtil.isNotEmpty(dischargeTime) &&!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (72 * 60))) {
+            if (DateUtil.parseDate(dischargeTime) != null && StringUtil.isNotEmpty(dischargeTime) &&
+                    !CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (72 * 60))) {
                 status.set("0");
                 return;
             }
@@ -73,6 +77,76 @@ public class THR0125 extends QCCatalogue {
             } else if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), new Date(), 72 * 60L)) {
                 status.set("0");//没有主任医师查房,若入院时间和系统当前时间对比,相差72小时则报错
             }
+
+            /* 如果存在手术记录,判断主刀医生是否为主治医生 */
+            String operatorName = "";
+            List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+            if (operationDocs != null) {
+                for (OperationDoc operationDoc : operationDocs) {
+                    if (operationDoc.getOperationRecordDoc() != null) {
+                        Map<String, String> operationDocStructureMap = operationDoc.getOperationRecordDoc().getStructureMap();
+                        operatorName = operationDocStructureMap.get("主刀医师");
+                        if (StringUtil.isBlank(operatorName) && StringUtil.isNotBlank(operationDocStructureMap.get("手术者及助手名称"))) {
+                            operatorName = operationDocStructureMap.get("手术者及助手名称").split("、")[0];
+                            if (operatorName.contains("主刀:")) {
+                                operatorName = operatorName.split(":")[1];
+                            }
+                        }
+                    }
+                }
+            }
+
+            List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDoc.getAllDoctorWradDocs();
+            for (ThreeLevelWardDoc threeLevelWard : allDoctorWradDocs) {
+                Map<String, String> structureMap = threeLevelWard.getStructureMap();
+                String wardDateStr = structureMap.get("查房日期");
+                if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(wardDateStr), 72 * 60L)) {
+                    String makeTitle = structureMap.get("查房标题");
+                    String pathography = structureMap.get("病情记录");
+                    //判断标题
+                    visitingPhysicianHouse(operatorName, makeTitle);
+                    //判断病情记录
+                    visitingPhysicianHouse(operatorName, pathography);
+                }
+            }
+        }
+    }
+
+    /**
+     * 判断查房记录是否含有主任医师查房
+     *
+     * @param operatorName     主刀医师
+     * @param titlePathography 查房标题或病情记录
+     */
+    private void visitingPhysicianHouse(String operatorName, String titlePathography) {
+        if (StringUtil.isNotBlank(titlePathography)) {
+            if (titlePathography.contains("主任")) {
+                status.set("0");
+                return;
+            } else if (StringUtil.isNotBlank(operatorName) && (titlePathography.contains(operatorName) || titlePathography.contains("主刀"))) {
+                String operationProfessor = getCourseProfessor(operatorName);
+                if (operationProfessor.contains("主任")) {
+                    status.set("0");
+                    return;
+                }
+            }
+        }
+    }
+
+    private String getCourseProfessor(String operatorName) {
+        String professor = "";
+        if (StringUtil.isBlank(operatorName)) {
+            return professor;
+        }
+        SpecialStorageUtil specialStorageUtil = SpringContextUtil.getBean("specialStorageUtil");
+        Map<String, Object> surgeon = specialStorageUtil.getJsonStringValue(KernelConstants.HOSPITAL_DOCTOR_MAP);
+        if (surgeon != null) {
+            Map<String, String> doctor = (Map) surgeon.get(operatorName);
+            if (doctor != null) {
+                professor = doctor.get("professor");
+            }
+
         }
+        return professor;
     }
 }