Переглянути джерело

Merge branch 'debug' of http://192.168.2.236:10080/louhr/qc into debug

louhr 5 роки тому
батько
коміт
ecb187a663

+ 2 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0448.java

@@ -28,7 +28,7 @@ public class BEH0448 extends QCCatalogue {
             List<Clinical> clinicals_present = beHospitalizedDoc.getPresentLabel().getClinicals();
 
             String present_txt = beHospitalizedDoc.getPresentLabel().getText();
-            String present_chief_txt = present_txt.split("伴")[0];
+            String present_chief_txt = present_txt.split("伴")[1];
 
             List<String> present_symp = new ArrayList<>();
 
@@ -39,7 +39,7 @@ public class BEH0448 extends QCCatalogue {
                     }
                 }
                 else {
-                    break;
+                    continue;
                 }
             }
             for (String symp:present_symp) {

+ 23 - 15
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0449.java

@@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 /**
@@ -32,29 +33,34 @@ public class BEH0449 extends QCCatalogue {
         BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
         if (beHospitalizedDoc != null) {
             String chief_text = beHospitalizedDoc.getChiefLabel().getText();
-            if (chief_text.contains("检查") || chief_text.contains("术后") || chief_text.contains("药物")) {
+            if (chief_text.contains("检查") || chief_text.contains("术后") || chief_text.contains("药物")
+                    || chief_text.contains("发现")) {
                 status.set("0");
+                return;
             } else {
                 List<Clinical> clinicals_chief = beHospitalizedDoc.getChiefLabel().getClinicals();
                 List<Clinical> clinicals_present = beHospitalizedDoc.getPresentLabel().getClinicals();
                 if (ListUtil.isNotEmpty(clinicals_chief) && ListUtil.isNotEmpty(clinicals_present)) {
                     Clinical clinical_chief = clinicals_chief.get(0);
-                    Clinical clinical_present = clinicals_present.get(0);
-                    if (clinical_chief.getName().equals(clinical_present.getName())) {
-                        status.set("0");
-                        return;
-                    } else if (clinical_chief.getName().contains(clinical_present.getName())
-                            || clinical_present.getName().contains(clinical_chief.getName())) {
-                        status.set("0");
-                        return;
-                    } else {
-                        JSONArray similarContent = new JSONArray();
-                        FirstCourseRecordAI firstCourseRecordAI = new FirstCourseRecordAI();
-                        firstCourseRecordAI.putContent(similarContent, clinical_chief.getName(), clinical_present.getName());
-                        double likeRate = firstCourseRecordAI.loadSimilarAI(similarContent, similarityServiceClient);
-                        if (likeRate > 0.9) {
+                    clinicals_present = clinicals_present.stream().filter(clinical -> clinical.getNegative() == null).collect(Collectors.toList());
+                    for (Clinical cliPre:clinicals_present) {
+                        String name_pre = cliPre.getName();
+                        String name_chief = clinical_chief.getName();
+                        if(name_chief.equals(name_pre)){
                             status.set("0");
                             return;
+                        }else if(name_pre.contains(name_chief) || name_chief.contains(name_pre)){
+                            status.set("0");
+                            return;
+                        }else {
+                            JSONArray similarContent = new JSONArray();
+                            FirstCourseRecordAI firstCourseRecordAI = new FirstCourseRecordAI();
+                            firstCourseRecordAI.putContent(similarContent, name_chief, name_pre);
+                            double likeRate = firstCourseRecordAI.loadSimilarAI(similarContent, similarityServiceClient);
+                            if (likeRate > 0.9) {
+                                status.set("0");
+                                return;
+                            }
                         }
                     }
                 }
@@ -73,6 +79,8 @@ public class BEH0449 extends QCCatalogue {
             if (StringUtils.isNotEmpty(chiefDiag) && StringUtils.isNotEmpty(presentDiag) && chiefDiag.equals(presentDiag)) {
                 status.set("0");
             }
+        }else {
+            status.set("0");
         }
     }
 }

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

@@ -29,6 +29,9 @@ public class THR0144 extends QCCatalogue {
                 String conditionRecord = structureMap.get("病情记录");
                 String treatmentPlan = structureMap.get("治疗计划和措施");
                 String title = structureMap.get("查房标题");
+                if (StringUtil.isBlank(conditionRecord) && StringUtil.isBlank(treatmentPlan)){
+                    return;
+                }
                 if ((conditionRecord.contains("出院") || treatmentPlan.contains("出院"))
                         && StringUtil.isNotBlank(title)
                         && (CatalogueUtil.subTitle(title).contains(Content.attend) || CatalogueUtil.subTitle(title).contains(Content.director))) {

+ 94 - 24
trans/src/main/java/com/lantone/qc/trans/changx/ChangxThreeLevelWardDocTrans.java

@@ -1,14 +1,18 @@
 package com.lantone.qc.trans.changx;
 
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
+import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
+import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
+import com.lantone.qc.pub.model.doc.ward.GeneralDoctorWardDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.changx.util.CxXmlUtil;
-import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.List;
 import java.util.Map;
@@ -24,43 +28,109 @@ public class ChangxThreeLevelWardDocTrans extends ModelDocTrans {
     public List<ThreeLevelWardDoc> extract(MedrecVo medrecVo) {
         List<ThreeLevelWardDoc> retList = Lists.newArrayList();
         List<String> contents = (List) medrecVo.getContent().get("content");
+        ThreeLevelWardDoc threeLevelWardDoc = new ThreeLevelWardDoc();
         contents.forEach(content -> {
-            retList.add(getThreeLevelWardDoc(content));
+            classifyThreeLevelWardDoc(threeLevelWardDoc, content);
         });
+        retList.add(threeLevelWardDoc);
         return retList;
     }
 
-    private ThreeLevelWardDoc getThreeLevelWardDoc(String content) {
+    private void classifyThreeLevelWardDoc(ThreeLevelWardDoc threeLevelWardDoc, String content) {
+        Map<String, String> xmlNodeValueMap = CxXmlUtil.firstLevelNodeValue("//DocObjContent//Region", content);
+        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(xmlNodeValueMap, keyContrasts);
+        structureMap.put("查房日期", structureMap.get("记录时间"));
+
+        Map<String, String> cutWordMap = Maps.newHashMap();
         String text = CxXmlUtil.getTextByNodePath(content, "//DocObjContent/Region/Content_Text");
-        if (StringUtil.isBlank(text)) {
-            text = CxXmlUtil.getTextByNodePath(content, "//DocObjContent/Region");
+        if (StringUtil.isNotBlank(text)) {
+            if (StringUtil.isBlank(structureMap.get("病情记录"))) {
+                structureMap.put("病情记录", text);
+            }
+            cutWordMap = Preproc.getCutWordMap(true, sourceTitles, text);
+            if (StringUtil.isBlank(structureMap.get("记录医师"))) {
+                structureMap.put("记录医师", cutWordMap.get("医师签名"));
+            }
         }
-        Map<String, String> cutWordMap = Preproc.getCutWordMap(true, sourceTitles, text);
-        Map<String, String> xmlNodeValueMap = CxXmlUtil.firstLevelNodeValue("//DocObjContent//Region", content);
-        cutWordMap.putAll(xmlNodeValueMap);
-        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(cutWordMap, keyContrasts);
-        structureMap.put("记录时间", structureMap.get("记录日期"));
-        structureMap.put("查房日期", structureMap.get("记录日期"));
-        structureMap.put("病情记录", text);
-        int endIndex = text.indexOf("查房记录");
-        if (endIndex > 0) {
-            String title = text.substring(0, endIndex);
-            title = title.substring(title.lastIndexOf(" ") + 1) + "查房记录";
-            structureMap.put("查房标题", title);
+
+        //总的查房记录 汇总
+        ThreeLevelWardDoc allDoctorWradDoc = new ThreeLevelWardDoc();
+        allDoctorWradDoc.setStructureMap(structureMap);
+        allDoctorWradDoc.setPageData((Map) xmlNodeValueMap);
+        threeLevelWardDoc.addAllDoctorWradDoc(allDoctorWradDoc);
+
+        //主任医师查房
+        DirectorDoctorWardDoc directorDoctorWardDoc = findDirectorDoctorWardDoc(xmlNodeValueMap, structureMap);
+        if (directorDoctorWardDoc != null) {
+            threeLevelWardDoc.addDirectorDoctorWardDoc(findDirectorDoctorWardDoc(xmlNodeValueMap, structureMap));
+        }
+        //主治医师查房
+        AttendingDoctorWardDoc attendingDoctorWardDoc = findAttendingDoctorWardDoc(xmlNodeValueMap, structureMap);
+        if (attendingDoctorWardDoc != null) {
+            threeLevelWardDoc.addAttendingDoctorWardDoc(attendingDoctorWardDoc);
+        }
+        //普通医师查房
+        if (directorDoctorWardDoc == null && attendingDoctorWardDoc == null) {
+            GeneralDoctorWardDoc generalDoctorWardDoc = new GeneralDoctorWardDoc();
+            generalDoctorWardDoc.setStructureMap(structureMap);
+            generalDoctorWardDoc.setPageData((Map) xmlNodeValueMap);
+            threeLevelWardDoc.addGeneralDoctorWardDoc(generalDoctorWardDoc);
+        }
+    }
+
+    /**
+     * 主任医师查房
+     *
+     * @param sourceMap
+     * @param structureMap
+     */
+    private DirectorDoctorWardDoc findDirectorDoctorWardDoc(Map<String, String> sourceMap, Map<String, String> structureMap) {
+        String title = structureMap.get("查房标题");
+        title = subTitle(title);    //标题有代字
+
+        DirectorDoctorWardDoc directorDoctorWardDoc = null;
+        if (StringUtils.isNotEmpty(title) && title.contains("主任")) {
+            directorDoctorWardDoc = new DirectorDoctorWardDoc();
+            directorDoctorWardDoc.setStructureMap(structureMap);
+            directorDoctorWardDoc.setPageData((Map) sourceMap);
+        }
+        return directorDoctorWardDoc;
+    }
+
+    /**
+     * 主治医师查房
+     *
+     * @param sourceMap
+     * @param structureMap
+     */
+    private AttendingDoctorWardDoc findAttendingDoctorWardDoc(Map<String, String> sourceMap, Map<String, String> structureMap) {
+        String title = structureMap.get("查房标题");
+        title = subTitle(title);    //标题有代字
+        AttendingDoctorWardDoc attendingDoctorWardDoc = null;
+        if (StringUtils.isNotEmpty(title) && title.contains("主治")) {
+            attendingDoctorWardDoc = new AttendingDoctorWardDoc();
+            attendingDoctorWardDoc.setStructureMap(structureMap);
+            attendingDoctorWardDoc.setPageData((Map) sourceMap);
+        }
+        return attendingDoctorWardDoc;
+    }
+
+    private String subTitle(String srcText) {
+        if (StringUtil.isNotBlank(srcText) && srcText.contains("代") && srcText.indexOf("代") != srcText.length() - 1) {
+            srcText = srcText.substring(srcText.indexOf("代") + 1);
         }
-        ThreeLevelWardDoc threeLevelWardDoc = ModelDocGenerate.threeLevelWardDocGen(structureMap);
-        threeLevelWardDoc.setText(text);
-        threeLevelWardDoc.setPageData((Map) xmlNodeValueMap);
-        return threeLevelWardDoc;
+        return srcText;
     }
 
     private List<String> sourceTitles = Lists.newArrayList(
-            "记录医生"
+            "医师签名"
     );
 
     private List<String> keyContrasts = Lists.newArrayList(
-            "记录医生=记录医师",
-            "签名++++=记录医师"
+            "病程记录标题=查房标题",
+            "在此输入查房记录=病情记录",
+            "签名++++=记录医师",
+            "记录日期=记录时间"
     );
 
 }

+ 2 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouBeHospitalizedDocTrans.java

@@ -73,7 +73,8 @@ public class TaiZhouBeHospitalizedDocTrans extends ModelDocTrans {
             "初步诊断=初步诊断",
             "修正诊断=修正诊断",
             "医生=医师签名",
-            "补充诊断=补充诊断"
+            "补充诊断=补充诊断",
+            "户口地址=联系地址"
             );
 
 

+ 3 - 3
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouFirstPageRecordDocTrans.java

@@ -117,9 +117,9 @@ public class TaiZhouFirstPageRecordDocTrans extends ModelDocTrans {
             "血型=",
             "并发症=",
             "临床路径管理=",
-            "临床路径管理 1.完成 2.变异 3.退出 4.未入=临床路径管理",
-            "有无药物过敏=药物过敏",
-            "单病种管理 1.是 2.否=单病种管理",
+//            "临床路径管理 1.完成 2.变异 3.退出 4.未入=临床路径管理",
+//            "有无药物过敏=药物过敏",
+//            "单病种管理 1.是 2.否=单病种管理",
             "病人联系电话=现住址电话",
             "拟接收医疗机构名称=",
             "科主任=",