Browse Source

每周无2次主任查房,添加主刀医师职称判断

hujing 5 years ago
parent
commit
53f4e4869c

+ 9 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0127.java

@@ -77,9 +77,16 @@ public class THR0127 extends QCCatalogue {
                 status.set("0");
                 return;
             }
+            String title = "";
+            /* 如果有手术记录,则取出第一次手术记录的主刀医师职称 */
+            String doctorTitle = CatalogueUtil.getDoctorTitle(inputInfo);
             for (int j = 0; j < roundRecordEveryWeek.size(); j++) {
-                int directorNum = CatalogueUtil.appearNumber(roundRecordEveryWeek.get(j).split(","), Content.director);
-                int dept_doctorNum = CatalogueUtil.appearNumber(roundRecordEveryWeek.get(j).split(","), Content.dept_doctor);
+                title = roundRecordEveryWeek.get(j);
+                if (title.contains("主刀")){
+                    title = title.replace("主刀",doctorTitle);
+                }
+                int directorNum = CatalogueUtil.appearNumber(title.split(","), Content.director);
+                int dept_doctorNum = CatalogueUtil.appearNumber(title.split(","), Content.dept_doctor);
                 if (directorNum + dept_doctorNum < 2) {
                     //每周无2次主任医师查房记录/科主任查房记录
                     status.set("-1");

+ 0 - 9
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0128.java

@@ -97,15 +97,6 @@ public class THR0128 extends QCCatalogue {
                     return;
                 }
             }
-            for (int j = 0; j < roundRecordEveryWeek.size(); j++) {
-                int indicationsNum = CatalogueUtil.appearNumber(roundRecordEveryWeek.get(j).split(","), Content.attend);
-                if (indicationsNum < 3) {
-                    //每周无3次主治医师查房记录
-                    status.set("-1");
-                    info.set(lastWardDateRangeList.get(j));
-                    return;
-                }
-            }
         }
     }
 

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0144.java

@@ -46,7 +46,7 @@ public class THR0144 extends QCCatalogue {
         conditionRecord = StringUtil.isBlank(conditionRecord) ? "" : conditionRecord;
         treatmentPlan = StringUtil.isBlank(treatmentPlan) ? "" : treatmentPlan;
         //主任或主治查房 标题需要包含“主任”或“主治”,内容需要包含“出院”
-        if ((conditionRecord.contains("出院") || treatmentPlan.contains("出院"))
+        if ((conditionRecord.contains("出院") || treatmentPlan.contains("出院") || conditionRecord.contains("转上级医院"))
                 && StringUtil.isNotBlank(title)
                 && (CatalogueUtil.subTitle(title).contains(Content.attend) || CatalogueUtil.subTitle(title).contains(Content.director))) {
             status.set("0");

+ 42 - 3
kernel/src/main/java/com/lantone/qc/kernel/util/CatalogueUtil.java

@@ -3,9 +3,10 @@ package com.lantone.qc.kernel.util;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 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.doc.DoctorAdviceDoc;
-import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
 import com.lantone.qc.pub.model.entity.Diag;
 import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.SpringContextUtil;
@@ -307,6 +308,7 @@ public class CatalogueUtil {
 
     /**
      * 判断文本是否包含数字
+     *
      * @param str
      * @return
      */
@@ -370,12 +372,49 @@ public class CatalogueUtil {
 
     /**
      * 去除两个中文字之间空格
+     *
      * @param str
      * @return
      */
-    public static String removeBetweenWordSpace(String str){
+    public static String removeBetweenWordSpace(String str) {
         Pattern pattern = Pattern.compile("(?<=[\\x{4e00}-\\x{9fa5}])\\s(?=[\\x{4e00}-\\x{9fa5}])");
         Matcher m = pattern.matcher(str);
         return m.replaceAll("");
     }
+
+    /**
+     * 获取主刀医师职称(取第一次取到的主刀医师职称)
+     *
+     * @param inputInfo
+     * @return
+     */
+    public static String getDoctorTitle(InputInfo inputInfo) {
+        String title = "";
+        RedisUtil redisUtil = SpringContextUtil.getBean("redisUtil");
+        Map<String, Object> surgeon = redisUtil.getJsonStringValue(KernelConstants.HOSPITAL_DOCTOR_MAP);
+        if (surgeon == null) {
+            return title;
+        }
+
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        for (OperationDoc operationDoc : operationDocs) {
+            OperationRecordDoc operationRecordDoc = operationDoc.getOperationRecordDoc();
+            if (operationRecordDoc == null) {
+                continue;
+            }
+            Map<String, String> structureMap = operationRecordDoc.getStructureMap();
+            String chiefSurgeon = structureMap.get("主刀医师");
+            if (StringUtil.isBlank(chiefSurgeon)){
+                continue;
+            }
+            Map<String, String> doctor = (Map) surgeon.get(chiefSurgeon);
+            if (doctor == null){
+                continue;
+            }
+            title = doctor.get("professor");
+            break;
+        }
+
+        return title;
+    }
 }