소스 검색

湘雅三医院:解析合并

wangsy 3 년 전
부모
커밋
2a560c5fc7

+ 3 - 2
trans/src/main/java/com/lantone/qc/trans/changshaxy/ConsultationDocTrans.java

@@ -123,8 +123,9 @@ public class ConsultationDocTrans extends ModelDocTrans {
             "会诊病人姓名=基础信息",
             "申请会诊病室负责人签名=申请医生",
             "主任签名=记录医生",
-            "医务办意见=会诊意见",
-            "记录人=记录医生"
+            "记录人=记录医生",
+            "医师签名=记录医生",
+            "医务办意见=会诊意见"
     );
 
 

+ 11 - 6
trans/src/main/java/com/lantone/qc/trans/changshaxy/DeathRecordDocTrans.java

@@ -48,12 +48,16 @@ public class DeathRecordDocTrans extends ModelDocTrans {
                     structureMap.put("病历号", contentMap.get("behospitalCode") == null ? null : contentMap.get("behospitalCode").toString());
                 }
                 //解决入院日期时间有逗号
-                if(structureMap.containsKey("入院日期")){
-                    structureMap.put("入院日期",structureMap.get("入院日期").replace(","," "));
+                if (structureMap.containsKey("入院日期")) {
+                    structureMap.put("入院日期", structureMap.get("入院日期").replace(",", " "));
                 }
                 //解决记录时间有逗号
-                if(structureMap.containsKey("记录时间")){
-                    structureMap.put("记录时间",structureMap.get("记录时间").replace(","," "));
+                if (structureMap.containsKey("记录时间")) {
+                    structureMap.put("记录时间", structureMap.get("记录时间").replace(",", " "));
+                }
+                //解决死亡时间有逗号
+                if (structureMap.containsKey("死亡时间")) {
+                    structureMap.put("死亡时间", structureMap.get("死亡时间").replace(",", " "));
                 }
             }
             if (MapUtils.isNotEmpty(structureMap)) {
@@ -68,10 +72,11 @@ public class DeathRecordDocTrans extends ModelDocTrans {
     }
 
     private List<String> keyContrasts = Lists.newArrayList(
-            "死亡时间=死亡日期",
             "抢救经过=诊疗经过",
             "医师签名=记录医生",
-            "签名时间=记录时间"
+            "签名时间=记录时间",
+            "入院时辅助资料=辅助资料",
+            "入院后诊疗经过=诊疗经过"
     );
 
 }

+ 2 - 2
trans/src/main/java/com/lantone/qc/trans/changshaxy/DifficultCaseDiscussDocTrans.java

@@ -74,9 +74,9 @@ public class DifficultCaseDiscussDocTrans extends ModelDocTrans {
             "主持人=主持人姓名及专业技术职务",
             "参加人员=参加人员的姓名及专业技术职务",
             "病历摘要=汇报病史",
-            "记录人=记录医生签名",
+            "记录人=记录医生",
             "发言人=讨论发言",
-            "总结意见=主持人小结意见"
+            "总结意见=主持人小结"
     );
 
 }

+ 2 - 1
trans/src/main/java/com/lantone/qc/trans/changshaxy/LeaveHospitalDocTrans.java

@@ -69,7 +69,8 @@ public class LeaveHospitalDocTrans extends ModelDocTrans {
 
     private List<String> keyContrasts = Lists.newArrayList(
             "出院时情况=出院情况",
-            "住院经过=诊治经过"
+            "住院经过=诊治经过",
+            "入院时体查=入院情况"
     );
 
 }

+ 21 - 2
trans/src/main/java/com/lantone/qc/trans/changshaxy/OperationDocTrans.java

@@ -92,6 +92,9 @@ public class OperationDocTrans extends ModelDocTrans {
 
     private OperationDiscussionDoc getOperationDiscussionDoc(Map<String, Object> contentMap) {
         String content = contentMap.get("xmlText").toString();
+        if (StringUtil.isNotBlank(content) && content.equals("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<string xmlns=\"http://www.healthcare.supcon.com/wsmeddoc/\" />")) {
+            return null;
+        }
         Map<String, String> structureMap = null;
         OperationDiscussionDoc operationDiscussionDoc = new OperationDiscussionDoc();
         if (contentMap.get("isParsed") != null && "1".equals(contentMap.get("isParsed").toString())) {
@@ -164,6 +167,9 @@ public class OperationDocTrans extends ModelDocTrans {
 
     private OperationRecordDoc getOperationRecordDoc(Map<String, Object> contentMap) {
         String content = contentMap.get("xmlText").toString();
+        if (StringUtil.isNotBlank(content) && content.equals("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<string xmlns=\"http://www.healthcare.supcon.com/wsmeddoc/\" />")) {
+            return null;
+        }
         Map<String, String> structureMap = null;
         if (contentMap.get("isParsed") != null && "1".equals(contentMap.get("isParsed").toString())) {
             structureMap = (Map) FastJsonUtils.getJsonToMap(content);
@@ -188,8 +194,18 @@ public class OperationDocTrans extends ModelDocTrans {
     }
 
     private List<String> operationRecord_keyContrasts = Lists.newArrayList(
-            "麻醉=麻醉方式","术后诊断=术中后诊断","术者=手术者","手术过程=手术经过","手术医师签名=记录医生","手术人员=手术者",
-            "签名时间=记录时间","实施手术=手术名称","术前主要诊断=术前诊断","术后主要诊断=术中后诊断"
+            "麻醉=麻醉方式",
+            "术后诊断=术中后诊断",
+            "术者=手术者",
+            "手术人员=手术者",
+            "手术过程=手术经过",
+            "手术医师签名=记录医生",
+            "签名时间=记录时间",
+            "实施手术=手术名称",
+            "术前主要诊断=术前诊断",
+            "术后主要诊断=术中后诊断",
+            "助手=一助",
+            "手术过程=手术经过及处理"
     );
 
 
@@ -222,6 +238,9 @@ public class OperationDocTrans extends ModelDocTrans {
 
     private PreoperativeDiscussionDoc getPreoperativeDiscussionDoc(Map<String, Object> contentMap) {
         String content = contentMap.get("xmlText").toString();
+        if (StringUtil.isNotBlank(content) && content.equals("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<string xmlns=\"http://www.healthcare.supcon.com/wsmeddoc/\" />")) {
+            return null;
+        }
         Map<String, String> structureMap = null;
         if (contentMap.get("isParsed") != null && "1".equals(contentMap.get("isParsed").toString())) {
             structureMap = (Map) FastJsonUtils.getJsonToMap(content);

+ 2 - 1
trans/src/main/java/com/lantone/qc/trans/changshaxy/TransferRecordDocTrans.java

@@ -310,7 +310,8 @@ public class TransferRecordDocTrans extends ModelDocTrans {
             "病历标题=标题",
             "医师签名=记录医生",
             "入院诊疗经过=诊疗经过",
-            "病情记录=病历内容"
+            "病情记录=病历内容",
+            "入院后完善相关检查BR示=诊疗经过"
     );
 
 }

+ 2 - 12
trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyConsultationHtmlAnalysis.java

@@ -6,7 +6,6 @@ import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.changshaxy.util.comsis.XyCommonAnalysisUtil;
 import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 
@@ -29,11 +28,7 @@ public class XyConsultationHtmlAnalysis implements XyHtmlAnalysis {
         Map<String, String> structureMap = Maps.newLinkedHashMap();
 
         try {
-
-//            List<String> titles = Lists.newArrayList("会诊病人姓名", "初步诊断", "会诊目的","申请会诊病室负责人签名", "申请日期", "医务办意见", "主任签名");
-            List<String> titles = Lists.newArrayList("会诊病人姓名", "主诉","现病史","既往史","相关检验检查","24h动态",
-                    "目前诊断","治疗","主持人","会诊意见回报","总结意见",
-                    "初步诊断", "会诊目的","申请会诊病室负责人签名", "申请日期","医师签名","记录人", "医务办意见", "主任签名");
+            List<String> titles = Lists.newArrayList("会诊病人姓名", "初步诊断", "会诊目的","申请会诊病室负责人签名", "申请日期", "医务办意见", "主任签名");
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
@@ -41,11 +36,10 @@ public class XyConsultationHtmlAnalysis implements XyHtmlAnalysis {
             Document doc = Jsoup.parse(html);
             if ("2001-14".equals(recTypeId)) {
                 htmlContent = CommonAnalysisUtil.html2String(html);
-//                titles = Lists.newArrayList("会诊意见回报","会诊意见执行情况","会诊诊断","诊断为","会诊建议","医师签名");
+                titles = Lists.newArrayList("会诊意见回报","会诊意见执行情况","会诊诊断","诊断为","会诊建议","医师签名");
                 if (StringUtil.isNotBlank(htmlContent)) {
                     XyCommonAnalysisUtil.extractWardInfo(recTitle, htmlContent, structureMap);
                     XyCommonAnalysisUtil.html2StructureMap(titles, htmlContent, structureMap);
-
                 }
             } else {
                 htmlContent = XyHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body"), true).replace("&nbsp", "");
@@ -59,10 +53,6 @@ public class XyConsultationHtmlAnalysis implements XyHtmlAnalysis {
                     CommonAnalysisUtil.html2StructureMap(titles, htmlContent, structureMap);
                 }
             }
-            if (StringUtils.isNotEmpty(structureMap.get("医师签名"))&&structureMap.get("医师签名").contains("记录人")){
-                String[] strings = structureMap.get("医师签名").split("记录人");
-                structureMap.put("医师签名",strings[0]);
-            }
             XyCommonAnalysisUtil.processType(structureMap, "会诊类型");
             XyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         } catch (Exception e) {

+ 33 - 37
trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyConsultationRecordHtmlAnalysis.java

@@ -1,5 +1,6 @@
 package com.lantone.qc.trans.changshaxy.util;
 
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.lantone.qc.pub.util.StringUtil;
@@ -33,8 +34,7 @@ public class XyConsultationRecordHtmlAnalysis implements XyHtmlAnalysis {
             Document doc = Jsoup.parse(html);
 //            XyHtmlAnalysisUtil.tableStyle1InsertMap(Jsoup.parse(html).getElementById("table1_1"), map);
             Element bigDivElement = Jsoup.parse(html).selectFirst("body");
-
-            analysisGeneral(recTitle,bigDivElement, map);
+            analysisGeneral(recTitle, bigDivElement, map);
             XyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {
             log.error(e.getMessage(), e);
@@ -50,43 +50,39 @@ public class XyConsultationRecordHtmlAnalysis implements XyHtmlAnalysis {
 //            bigDivElement.selectFirst("hr").previousElementSiblings().remove();
 //        }
         String htmlContent = XyHtmlAnalysisUtil.blockDivToStr(bigDivElement, true).replace("&nbsp", "");
-        List<String> titles = Lists.newArrayList("会诊病人姓名", "主诉","现病史","既往史","相关检验检查","24h动态",
-                "目前诊断","治疗","主持人","会诊意见回报","总结意见",
-                "初步诊断", "会诊目的","申请会诊病室负责人签名", "申请日期","医师签名","记录人", "医务办意见", "主任签名");
-
-        //获取病历标题和文书标题
-        List<String> titleContent = Lists.newArrayList(htmlContent.split(" "));
-        String title = titleContent.get(0);
-        if (StringUtil.isNotBlank(title) && title.equals(recTitle)) {
-            structureMap.put("病历标题", title);
-            titleContent.remove(0);
-        } else {
-            structureMap.put("病历标题", recTitle);
-            structureMap.put("文书标题", title);
-            if (titleContent.size() > 2) {
-                titleContent.remove(0);
-                titleContent.remove(0);
-            }
-        }
+        List<String> titles = Lists.newArrayList("会诊意见回报", "会诊意见执行情况", "医师签名");
 
-        for (String t: titles) {
-            if (htmlContent.contains(t + ":") || htmlContent.contains(t + ":")) {
-                structureMap.put("通知信息", htmlContent.substring(0, htmlContent.indexOf(t)));
-                break;
-            }
-        }
-        if (StringUtil.isNotBlank(htmlContent)) {
-            CommonAnalysisUtil.html2StructureMap(titles, htmlContent, structureMap);
-            structureMap.put("病情简介",htmlContent);
+//        //获取病历标题和文书标题
+//        List<String> titleContent = Lists.newArrayList(htmlContent.split(" "));
+//        String title = titleContent.get(0);
+//        if (StringUtil.isNotBlank(title) && title.equals(recTitle)) {
+//            structureMap.put("病历标题", title);
+//            titleContent.remove(0);
+//        } else {
+//            structureMap.put("病历标题", recTitle);
+//            structureMap.put("病历日期", title);
+//            if (titleContent.size() > 2) {
+//                titleContent.remove(0);
+//                titleContent.remove(0);
+//            }
+//        }
+//
+//        for (String t : titles) {
+//            if (htmlContent.contains(t + ":") || htmlContent.contains(t + ":")) {
+//                structureMap.put("通知信息", htmlContent.substring(0, htmlContent.indexOf(t)));
+//                break;
+//            }
+//        }
+//        if (StringUtil.isNotBlank(htmlContent)) {
+//            CommonAnalysisUtil.html2StructureMap(titles, htmlContent, structureMap);
+//        }
+        CommonAnalysisUtil.extractWardInfo(recTitle, htmlContent, structureMap);
+        titles = CommonAnalysisUtil.sortTitlesNoColon(titles, htmlContent);
+        CommonAnalysisUtil.cutByTitlesNoColon(htmlContent, titles, 0, structureMap);
+        if (StringUtils.isNotEmpty(structureMap.get("医师签名"))&&structureMap.get("医师签名").contains("记录人")){
+            String[] strings = structureMap.get("医师签名").split("记录人");
+            structureMap.put("医师签名",strings[0]);
         }
-//        CommonAnalysisUtil.extractWardInfo(recTitle,text, map);
-//        String bqjlText = "病情记录" + map.get("病情记录").replace("请在此填写会诊处理意见","").replace("会诊回复时间","");
-//        List<String> titles = Lists.newArrayList(
-//                "病情记录","答复","日期时间"
-//        );
-        XyCommonAnalysisUtil.processType(structureMap, "会诊类型");
-//        titles = CommonAnalysisUtil.sortTitlesNoColon(titles, bqjlText);
-//        CommonAnalysisUtil.cutByTitlesNoColon(bqjlText, titles, 0, map);
     }
 
 }

+ 8 - 8
trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyDeathCaseDiscussHtmlAnalysis.java

@@ -32,24 +32,24 @@ public class XyDeathCaseDiscussHtmlAnalysis implements XyHtmlAnalysis {
             Document doc = Jsoup.parse(html);
             String text = XyHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body"), true).replace("&nbsp", "");
 
-            List<String> titles = Lists.newArrayList("时间", "地点", "主持人", "参加人员", "病例报告人",
-                    "病例摘要","辅助资料", "入院后诊疗经过","发言人", "讨论总结意见", "死亡诊断", "死亡原因", "经验教训","主持人签名","记录人签名");
+            List<String> titles = Lists.newArrayList("时间", "地点", "参加人员", "主持人", "病例报告人",
+                    "病例摘要", "发言人", "讨论总结意见", "死亡诊断", "死亡原因", "经验教训", "主持人签名", "记录人签名");
 
             if (StringUtil.isNotBlank(text)) {
 //                titles = XyCommonAnalysisUtil.sortTitles(titles, text);
                 XyCommonAnalysisUtil.cutByTitles(text, titles, 0, map);
             }
 //            XyHtmlAnalysisUtil.mapValueRemoveStartColon(map);
-            if(map!=null){
+            if (map != null) {
                 String mapTitle = map.get("地点");
-                if(StringUtil.isNotEmpty(mapTitle)){
-                    if(mapTitle.contains("参加人员")){
+                if (StringUtil.isNotEmpty(mapTitle)) {
+                    if (mapTitle.contains("参加人员")) {
                         int indexOf = mapTitle.indexOf("参加人员");
                         String place = mapTitle.substring(0, indexOf);
                         String participants = mapTitle.substring(indexOf, mapTitle.length());
-                        map.put("地点",place);
-                        participants=participants.replaceAll("参加人员","").replaceAll(":","");
-                        map.put("参加人员",participants);
+                        map.put("地点", place);
+                        participants = participants.replaceAll("参加人员", "").replaceAll(":", "");
+                        map.put("参加人员", participants);
                     }
                 }
             }

+ 23 - 5
trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyDifficultCaseDiscussHtmlAnalysis.java

@@ -26,22 +26,40 @@ public class XyDifficultCaseDiscussHtmlAnalysis implements XyHtmlAnalysis {
         Map<String, String> structureMap = Maps.newLinkedHashMap();
         try {
             List<String> titles = Lists.newArrayList("时间", "地点", "参加人员", "主持人", "病例报告人",
-                    "病历摘要","入院诊断","入院查体","查体","体查", "辅助检查","诊疗经过:", "发言人", "总结意见","主持人", "记录人");
+                    "病历摘要", "入院诊断", "入院查体", "查体", "辅助检查", "诊疗经过:", "发言人", "总结意见", "主持人", "记录人");
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
             String htmlContent = XyHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body"), true).replace("&nbsp", ":");
             if (StringUtil.isNotBlank(htmlContent)) {
-                htmlContent = htmlContent.replaceAll("[   ]", " ").replace("第一页", "").replace("发言记录(包括病史简要、讨论意见及结论):", "");
+                htmlContent = htmlContent.replaceAll("[   ]", " ")
+                        .replace("第一页", "")
+                        .replace("发言记录(包括病史简要、讨论意见及结论):", "")
+                        .replace("8220", "“")
+                        .replace("8221", "”")
+                        .replace("9332", "(1)")
+                        .replace("9333", "(2)")
+                        .replace("9334", "(3)")
+                        .replace("9335", "(4)")
+                        .replace("8593", "↑")
+                        .replace("8595", "↓")
+                        .replace("8451", "℃")
+                        .replace("8544", "Ⅰ")
+                        .replace("8545", "Ⅱ")
+                        .replace("8546", "Ⅲ")
+                        .replace("9312", "①")
+                        .replace("9313", "②")
+                        .replace("9314", "③")
+                        .replace("9315", "④");
                 CommonAnalysisUtil.html2StructureMap(titles, htmlContent, structureMap);
             }
             CommonAnalysisUtil.extractDateByTitle(structureMap, "告知时间");
             removeLast(structureMap);
             if (structureMap.containsKey("入院诊断")) {
-                structureMap.put("病历摘要",structureMap.get("病历摘要")+"入院诊断:"+structureMap.get("入院诊断"));
-            }else if (structureMap.containsKey("诊断")){
-                structureMap.put("病历摘要",structureMap.get("病历摘要")+"入院诊断:"+structureMap.get("诊断"));
+                structureMap.put("病历摘要", structureMap.get("病历摘要") + "入院诊断:" + structureMap.get("入院诊断"));
+            } else if (structureMap.containsKey("诊断")) {
+                structureMap.put("病历摘要", structureMap.get("病历摘要") + "入院诊断:" + structureMap.get("诊断"));
             }
             XyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         } catch (Exception e) {

+ 2 - 1
trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyLeaveHospitalHtmlAnalysis.java

@@ -55,7 +55,8 @@ public class XyLeaveHospitalHtmlAnalysis implements XyHtmlAnalysis {
                     .replace("9312", "①")
                     .replace("9313", "②")
                     .replace("9314", "③")
-                    .replace("9315", "④");
+                    .replace("9315", "④")
+                    .replace("出院医嘱", "出院医嘱:");
 
             if (StringUtil.isNotBlank(htmlContent)) {
 //                titles = CommonAnalysisUtil.sortTitles(titles, htmlContent);

+ 7 - 7
trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyTransferIntoHtmlAnalysis.java

@@ -48,14 +48,14 @@ public class XyTransferIntoHtmlAnalysis implements XyHtmlAnalysis {
         XyCommonAnalysisUtil.extractWardInfo(recTitle, text, map);
         String bqjlText = "病情记录" + map.get("病情记录");
         List<String> titles = Lists.newArrayList(
-                "体查", "入院诊断", "入院后经完善相关检查","转科诊断","注意事项","医师签名","上级医师签名"
+                "入院诊疗经过", "目前情况", "目前诊断","转入后诊疗计划","医师签名","上级医师签名"
         );
-        for (String t: titles) {
-            if (bqjlText.contains(t + ":") || bqjlText.contains(t + ":")) {
-                map.put("主诉", bqjlText.substring(0, bqjlText.indexOf(t)));
-                break;
-            }
-        }
+//        for (String t: titles) {
+//            if (bqjlText.contains(t + ":") || bqjlText.contains(t + ":")) {
+//                map.put("主诉", bqjlText.substring(0, bqjlText.indexOf(t)));
+//                break;
+//            }
+//        }
         titles = CommonAnalysisUtil.sortTitlesNoColon(titles, bqjlText);
         CommonAnalysisUtil.cutByTitlesNoColon(bqjlText, titles, 0, map);
     }

+ 3 - 4
trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyTransferOutHtmlAnalysis.java

@@ -48,10 +48,9 @@ public class XyTransferOutHtmlAnalysis implements XyHtmlAnalysis {
         XyCommonAnalysisUtil.extractWardInfo(recTitle, text, map);
         String bqjlText = "病情记录" + map.get("病情记录").replace("年   月   日   时   分 ","");
         List<String> titles = Lists.newArrayList(
-                "入院诊疗经过",
-                "目前情况",
-                "目前诊断",
-                "转入后诊疗计划",
+                "入院后完善相关检查BR示",
+                "转科诊断",
+                "注意事项",
                 "医师签名",
                 "上级医师签名"
         );