Browse Source

修改病例解析

lipc 3 years ago
parent
commit
b5e3271251
18 changed files with 98 additions and 71 deletions
  1. 8 8
      dbanaly/src/main/resources/application-local.yml
  2. 3 3
      dbanaly/src/main/resources/application-test.yml
  3. 2 2
      kernel/src/main/resources/bootstrap.yml
  4. 5 5
      trans/src/main/java/com/lantone/qc/trans/ningbozhenhai/util/OperationRecordHtmlAnalysis.java
  5. 9 5
      trans/src/main/java/com/lantone/qc/trans/wenfuyi/BeHospitalizedDocTrans.java
  6. 2 3
      trans/src/main/java/com/lantone/qc/trans/wenfuyi/ClinicBloodEffectDocTrans.java
  7. 3 2
      trans/src/main/java/com/lantone/qc/trans/wenfuyi/ConsultationDocTrans.java
  8. 3 2
      trans/src/main/java/com/lantone/qc/trans/wenfuyi/DifficultCaseDiscussDocTrans.java
  9. 2 2
      trans/src/main/java/com/lantone/qc/trans/wenfuyi/FirstCourseRecordDocTrans.java
  10. 0 2
      trans/src/main/java/com/lantone/qc/trans/wenfuyi/OperationDocTrans.java
  11. 20 9
      trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/BeHospitalizedHtmlAnalysis.java
  12. 2 11
      trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/ClinicBloodEffectHtmlAnalysis.java
  13. 7 3
      trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/ClinicalBloodHtmlAnalysis.java
  14. 4 1
      trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/ConsultationRecordHtmlAnalysis.java
  15. 4 3
      trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/DifficultCaseDiscussHtmlAnalysis.java
  16. 9 3
      trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/FirstCourseRecordHtmlAnalysis.java
  17. 8 2
      trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/LeaveHospitalHtmlAnalysis.java
  18. 7 5
      trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/OperationRecordHtmlAnalysis.java

+ 8 - 8
dbanaly/src/main/resources/application-local.yml

@@ -5,9 +5,9 @@ spring:
     druid:
       lantone:
         driver-class-name: com.mysql.jdbc.Driver
-        url: jdbc:mysql://192.168.2.237:3307/qc?useUnicode=true&characterEncoding=utf8&useSSL=false
+        url: jdbc:mysql://127.0.0.1:3306/qc?useUnicode=true&characterEncoding=utf8&useSSL=false
         username: root
-        password: lantone
+        password: langtong
         initial-size: 8
         min-idle: 1
         max-active: 20
@@ -30,7 +30,7 @@ spring:
       token: 10 # Token索引
     host: 127.0.0.1  #Redis服务器地址
     port: 6379 # Redis服务器连接端口(本地环境端口6378,其他环境端口是6379)
-    password: lantone  # Redis服务器连接密码(默认为空)
+    password: lantone # Redis服务器连接密码(默认为空)
     lettuce:
       pool:
         max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
@@ -42,16 +42,16 @@ spring:
 xml-is-encryped: true
 
 CRF:
-  url: http://10.68.24.42:13456/api/mr_info_ex/entity_predict
+  url: http://127.0.0.1:13456/api/mr_info_ex/entity_predict
 
 Similarity:
-  url: http://10.68.24.42:13456/api/mr_info_ex/similarity
+  url: http://127.0.0.1:13456/api/mr_info_ex/similarity
 
 NewSimilarity:
-  url: http://10.68.24.42:12323/api/similarity
+  url: http://127.0.0.1:12323/api/similarity
 
 NewBatchSimilarity:
-  url: http://10.68.24.42:12323/api/similarity_batch
+  url: http://127.0.0.1:12323/api/similarity_batch
 
 ChiefPresentSimilarity:
-  url: http://10.68.24.42:13456/api/mr_info_ex/chief_present_similarity
+  url: http://127.0.0.1:13456/api/mr_info_ex/chief_present_similarity

+ 3 - 3
dbanaly/src/main/resources/application-test.yml

@@ -5,9 +5,9 @@ spring:
     druid:
       lantone:
         driver-class-name: com.mysql.jdbc.Driver
-        url: jdbc:mysql://192.168.2.126:3307/qc?useUnicode=true&characterEncoding=utf8&useSSL=false
+        url: jdbc:mysql://192.168.2.237:3307/qc_wenfuyi_20220510?useUnicode=true&characterEncoding=utf8&useSSL=false
         username: root
-        password: Lat0ne@tesT
+        password: lantone
         initial-size: 8
         min-idle: 1
         max-active: 20
@@ -54,4 +54,4 @@ NewBatchSimilarity:
   url: http://192.168.2.234:23232/api/similarity_batch
 
 ChiefPresentSimilarity:
-  url: http://192.168.2.234:3456/api/mr_info_ex/chief_present_similarity
+  url: http://192.168.2.234:3456/api/mr_info_ex/chief_present_similarity

+ 2 - 2
kernel/src/main/resources/bootstrap.yml

@@ -18,7 +18,7 @@ spring:
   resources:
     static-locations: classpath:/
   profiles:
-    active: dev
+    active: test
 
 qc:
   hospital_id: 1,2,3,4,5,6,7,8,10,11,13,15,20,34,35,36,37
@@ -30,4 +30,4 @@ mybatis-plus:
   mapper-locations: classpath:/mapper/lt/*Mapper.xml
   type-aliases-package: com.lantone.qc.dbanaly.lt.entity
   configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

+ 5 - 5
trans/src/main/java/com/lantone/qc/trans/ningbozhenhai/util/OperationRecordHtmlAnalysis.java

@@ -31,7 +31,7 @@ public class OperationRecordHtmlAnalysis implements HtmlAnalysis {
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
             analysisGeneral(bigDivElement, map);
             HtmlAnalysisUtil.mapValueRemoveStartColon(map);
-            CommonAnalysisUtil.makeEmpty(map, "医生签名");
+            //CommonAnalysisUtil.makeEmpty(map, "主刀医师签名");
             HtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {
             log.error(e.getMessage(), e);
@@ -46,7 +46,7 @@ public class OperationRecordHtmlAnalysis implements HtmlAnalysis {
         List<String> titles = Lists.newArrayList(
                 "姓名", "病区", "科室", "床号", "床位", "住院号", "手术开始时间", "手术结束时间", "术前诊断", "术 前 诊  断",
                 "手术名称", "手 术 名  称", "术中诊断", "术(中)后诊断", "手术人员", "手术主刀医师", "手 术 主 刀 医 师", "一助", "二助", "麻醉方式",
-                "麻 醉 方  式", "麻醉人员", "麻 醉 医  师", "手术风险评估(可选)", "NNIS分级", "手术类别(可选)", "手术标本", "冰冻切片结果",
+                "麻 醉 方  式", "麻醉人员", "麻醉医师", "麻 醉 医  师", "手术风险评估(可选)", "NNIS分级", "手术类别(可选)", "手术标本", "冰冻切片结果",
                 "术中并发症", "术中失血量", "手术经过", "手术经过及处理(包括患者的体位、切口处理、病灶所见及手术步骤等)", "记录者签字", "主刀签字", "主刀医师签名",
                 "记录日期", "日期", "时间"
         );
@@ -63,11 +63,11 @@ public class OperationRecordHtmlAnalysis implements HtmlAnalysis {
             StringBuffer sb = new StringBuffer();
             sb.append(map.get("记录日期"));
             if (map.containsKey("时间") && StringUtil.isNotBlank(map.get("时间"))) {
-                sb.append(map.get("时间"));
+                sb.append(" " + map.get("时间"));
             }
             map.put("日期", sb.toString());
         }
-        /*if (map.containsKey("手术主刀医师") && StringUtil.isNotBlank(map.get("手术主刀医师"))) {
+        if (map.containsKey("手术主刀医师") && StringUtil.isNotBlank(map.get("手术主刀医师"))) {
             StringBuffer sb1 = new StringBuffer();
             sb1.append("手术主刀医师:" + map.get("手术主刀医师"));
             if (map.containsKey("一助") && StringUtil.isNotBlank(map.get("一助"))) {
@@ -77,7 +77,7 @@ public class OperationRecordHtmlAnalysis implements HtmlAnalysis {
                 sb1.append(" 二助:" + map.get("二助"));
             }
             map.put("手术人员", sb1.toString());
-        }*/
+        }
     }
 
 }

+ 9 - 5
trans/src/main/java/com/lantone/qc/trans/wenfuyi/BeHospitalizedDocTrans.java

@@ -11,6 +11,7 @@ import com.lantone.qc.trans.wenfuyi.util.BeHospitalizedHtmlAnalysis;
 import com.lantone.qc.trans.wenfuyi.util.WenFuYiHtmlAnalysis;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.List;
 import java.util.Map;
@@ -50,7 +51,12 @@ public class BeHospitalizedDocTrans extends ModelDocTrans {
                 String recTitle = contentMap.get("recTitle").toString();
                 String recTypeId = contentMap.get("recTypeId").toString();
                 WenFuYiHtmlAnalysis wenFuYiHtmlAnalysis = new BeHospitalizedHtmlAnalysis();
-                Map<String, String> sourceMap = wenFuYiHtmlAnalysis.analysis(content, recTitle, recTypeId);
+                Map<String, String> sourceMap;
+                if (StringUtils.isNotBlank(content)) {
+                    sourceMap = wenFuYiHtmlAnalysis.analysis(content, recTitle, recTypeId);
+                } else{
+                    sourceMap = wenFuYiHtmlAnalysis.analysis(contentMap.get("htmlText").toString(), recTitle, recTypeId);
+                }
                 if (MapUtils.isNotEmpty(sourceMap)) {
                     structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts);
                     structureMap.put("记录编号", contentMap.get("recId").toString());
@@ -68,10 +74,8 @@ public class BeHospitalizedDocTrans extends ModelDocTrans {
     }
 
     private List<String> keyContrasts = Lists.newArrayList(
-            "单位=工作单位",
-            "过去史=既往史",
-            "户口地址=籍贯"
+
 
     );
 
-}
+}

+ 2 - 3
trans/src/main/java/com/lantone/qc/trans/wenfuyi/ClinicBloodEffectDocTrans.java

@@ -66,8 +66,7 @@ public class ClinicBloodEffectDocTrans extends ModelDocTrans {
     }
 
     private List<String> keyContrasts = Lists.newArrayList(
-            "病历标题=标题",
-            "病情记录=病历内容"
+
     );
 
-}
+}

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

@@ -116,7 +116,8 @@ public class ConsultationDocTrans extends ModelDocTrans {
     }
 
     private List<String> consultationRecord_keyContrasts = Lists.newArrayList(
-            "执行情况=会诊情况"
+            "执行情况=会诊情况",
+            "到达时间=会诊时间"
     );
 
 
@@ -271,4 +272,4 @@ public class ConsultationDocTrans extends ModelDocTrans {
             "++++会诊医师=会诊医师"
     );
 
-}
+}

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

@@ -67,7 +67,8 @@ public class DifficultCaseDiscussDocTrans extends ModelDocTrans {
     }
 
     private List<String> keyContrasts = Lists.newArrayList(
-            "主持人(科主任或科主任授权的科室副主任)签名=主持人签名"
+            "主持人(科主任或科主任授权的科室副主任)签名=主持人签名",
+            "主持人(科主任)签名=主持人签名"
     );
 
-}
+}

+ 2 - 2
trans/src/main/java/com/lantone/qc/trans/wenfuyi/FirstCourseRecordDocTrans.java

@@ -66,7 +66,7 @@ public class FirstCourseRecordDocTrans extends ModelDocTrans {
 
     private Map<String, String> removeSerialNumber(Map<String, String> sourceMap) {
         Map<String, String> structureMap = Maps.newLinkedHashMap();
-        sourceMap.forEach((key, value) -> structureMap.put(key.replaceAll("[一二三四五六()().123456]", ""), value));
+        sourceMap.forEach((key, value) -> structureMap.put(key.replaceAll("[一二三四五六()().123456]", ""), value));
         return structureMap;
     }
 
@@ -74,4 +74,4 @@ public class FirstCourseRecordDocTrans extends ModelDocTrans {
             "拟诊讨论诊断依据及鉴别诊断=诊断依据及鉴别诊断"
     );
 
-}
+}

+ 0 - 2
trans/src/main/java/com/lantone/qc/trans/wenfuyi/OperationDocTrans.java

@@ -187,8 +187,6 @@ public class OperationDocTrans extends ModelDocTrans {
     }
 
     private List<String> operationRecord_keyContrasts = Lists.newArrayList(
-            "术后诊断=术中后诊断",
-            "术中诊断=术中后诊断",
             "手术开始时间=开始时间",
             "手术结束时间=结束时间",
             "探查(术中所见)=探查术中所见",

+ 20 - 9
trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/BeHospitalizedHtmlAnalysis.java

@@ -55,23 +55,34 @@ public class BeHospitalizedHtmlAnalysis implements WenFuYiHtmlAnalysis {
                 .replace("(外院检查注明该医院名称、日期!)", "");
 
         List<String> titles = Lists.newArrayList("姓 名", "邮 编", "性 别", "单位", "年 龄", "身份证号码", "婚 姻", "户口地址", "民 族", "联系电话", "出生地",
-                "入院日期", "职 业", "病史陈述者", "主诉", "现病史", "过去史", "既往史", "系统回顾", "个人史", "婚育史", "家族史", "一般情况", "特殊检查", "实验室检查", "初步诊断", "修正诊断");
+                "入院日期", "职 业", "病史陈述者", "主诉", "现病史", "过去史", "既往史", "系统回顾", "个人史", "婚育史", "家族史", "专项评估", "一般情况", "特殊检查", "实验室检查", "初步诊断", "修正诊断");
 
         titles = CommonAnalysisUtil.sortTitles(titles, htmlContent);
         CommonAnalysisUtil.cutByTitles(htmlContent, titles, 0, map);
-        if (map.get("初步诊断").contains("医师签名")) {
-            map.put("初步诊断医师签名", map.get("初步诊断").substring(map.get("初步诊断").indexOf("医师签名") + 5));
-            map.put("初步诊断", map.get("初步诊断").substring(0, map.get("初步诊断").indexOf("医师签名")));
-            if (map.get("初步诊断医师签名").contains("日期")) {
-                map.put("初步诊断日期", map.get("初步诊断医师签名").substring(map.get("初步诊断医师签名").indexOf("日期") + 3));
-                map.put("初步诊断医师签名", map.get("初步诊断医师签名").substring(0, map.get("初步诊断医师签名").indexOf("日期")).replace("医师签名: ", ""));
+        if (map.get("初步诊断").contains("日期")) {
+            map.put("初步诊断医师签名日期", CommonAnalysisUtil.extractDate(map.get("初步诊断")));
+
+            if (map.get("初步诊断").contains("上级医师签名")) {
+                map.put("上级医师签名", map.get("初步诊断").substring(map.get("初步诊断").indexOf("医师签名") + 5));
+                map.put("初步诊断", map.get("初步诊断").substring(0, map.get("初步诊断").indexOf("上级医师签名")));
+            }
+            if (map.get("上级医师签名").contains("医师签名")) {
+                map.put("初步诊断医师签名", map.get("上级医师签名").substring(map.get("上级医师签名").indexOf("医师签名") + 5)
+                        .replace("日期:", "").replace(map.get("初步诊断医师签名日期"), ""));
+                map.put("上级医师签名", map.get("上级医师签名")
+                        .replace(map.get("初步诊断医师签名"), "")
+                        .replace("医师签名:", "")
+                        .replace(map.get("初步诊断医师签名日期"), "")
+                        .replace("日期:", ""));
             }
+
+
         }
         if (map.get("修正诊断").contains("医师签名")) {
             map.put("修正诊断医师签名", map.get("修正诊断").substring(map.get("修正诊断").indexOf("医师签名") + 5));
             map.put("修正诊断", map.get("修正诊断").substring(0, map.get("修正诊断").indexOf("医师签名")));
             if (map.get("修正诊断医师签名").contains("日期")) {
-                map.put("修正诊断日期", map.get("修正诊断医师签名").substring(map.get("修正诊断医师签名").indexOf("日期") + 3));
+                map.put("修正诊断医师签名日期", CommonAnalysisUtil.extractDate(map.get("修正诊断医师签名")));
                 map.put("修正诊断医师签名", map.get("修正诊断医师签名").substring(0, map.get("修正诊断医师签名").indexOf("日期")));
             }
         }
@@ -135,4 +146,4 @@ public class BeHospitalizedHtmlAnalysis implements WenFuYiHtmlAnalysis {
         }
     }
 
-}
+}

+ 2 - 11
trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/ClinicBloodEffectHtmlAnalysis.java

@@ -29,21 +29,12 @@ public class ClinicBloodEffectHtmlAnalysis implements WenFuYiHtmlAnalysis {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
+            Element bigDivElement = Jsoup.parse(html).selectFirst("body");
             analysisGeneral(recTitle,bigDivElement, map);
             if (map.containsKey("病情记录")) {
                 String content = map.get("病情记录");
                 CommonAnalysisUtil.cutByTitles(content, titles, 0, map);
             }
-        /*titles.remove(5);
-        titles.forEach(i -> {
-                    if (map.get(i).length() > 2) {
-                        map.put(i, map.get(i).substring(0, map.get(i).length() - 2));
-                    }
-                }
-        );
-
-         */
             WenFuYiHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {
             log.error(e.getMessage(), e);
@@ -68,4 +59,4 @@ public class ClinicBloodEffectHtmlAnalysis implements WenFuYiHtmlAnalysis {
         CommonAnalysisUtil.cutByTitlesNoColon(bqjlText, titles, 0, map);
     }
 
-}
+}

+ 7 - 3
trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/ClinicalBloodHtmlAnalysis.java

@@ -39,13 +39,17 @@ public class ClinicalBloodHtmlAnalysis implements WenFuYiHtmlAnalysis {
 
     private void analysisGeneral(String recTitle, String content, Map<String, String> map) {
         CommonAnalysisUtil.extractWardInfo(recTitle, content, map);
-        String bqjlText = "病情记录:" + map.get("病情记录");
+        String bqjlText = "病情记录:" + map.get("病情记录")
+                .replace("输血原因应包括患者病情及实验室检测结果", " ")
+                .replace("注:请与护理记录时间保持一致", " ");
+
         map.remove("病情记录");
         List<String> titles = Lists.newArrayList(
-                "病情记录", "输血制品原因", "输血制品日期", "输血制品种类及量", "输血制品反应", "输血制品效果评价"
+                "病情记录", "输血原因", "输血制品原因", "输血开始时间", "输血结束时间", "输血方式", "输注种类及量",
+                "输血制品日期", "输血制品种类及量", "输血制品反应", "输血制品效果评价", "输血过程观察及输血反应处理"
         );
         titles = CommonAnalysisUtil.sortTitles(titles, bqjlText);
         CommonAnalysisUtil.cutByTitles(bqjlText, titles, 0, map);
     }
 
-}
+}

+ 4 - 1
trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/ConsultationRecordHtmlAnalysis.java

@@ -45,6 +45,9 @@ public class ConsultationRecordHtmlAnalysis implements WenFuYiHtmlAnalysis {
         }
         String text = WenFuYiHtmlAnalysisUtil.blockDivToStr(bigDivElement, true).replace("(记录会诊意见执行情况)", "");
         CommonAnalysisUtil.extractWardInfo(recTitle, text, map);
+/*        List<String> titles = Lists.newArrayList(
+                "会诊记录", "会诊专科", "邀请医师", "接受医师", "会诊医师", "联系电话", "到达时间", "会诊时间", "到场时间", "其他参加人员", "会诊建议", "执行情况"
+        );*/
         List<String> titles = Lists.newArrayList(
                 "会诊记录"
         );
@@ -52,4 +55,4 @@ public class ConsultationRecordHtmlAnalysis implements WenFuYiHtmlAnalysis {
         CommonAnalysisUtil.cutByTitles(text, titles, 0, map);
     }
 
-}
+}

+ 4 - 3
trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/DifficultCaseDiscussHtmlAnalysis.java

@@ -26,14 +26,15 @@ public class DifficultCaseDiscussHtmlAnalysis implements WenFuYiHtmlAnalysis {
         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 = doc.selectFirst("body").children().text();
             if (StringUtil.isNotBlank(htmlContent)) {
-                CommonAnalysisUtil.extractWardInfo(recTitle,htmlContent, structureMap);
+                CommonAnalysisUtil.extractWardInfo(recTitle, htmlContent, structureMap);
                 CommonAnalysisUtil.html2StructureMap(titles, htmlContent, structureMap);
             }
             CommonAnalysisUtil.extractDateByTitle(structureMap, "告知时间");
@@ -65,4 +66,4 @@ public class DifficultCaseDiscussHtmlAnalysis implements WenFuYiHtmlAnalysis {
         }
         return value;
     }
-}
+}

+ 9 - 3
trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/FirstCourseRecordHtmlAnalysis.java

@@ -25,7 +25,8 @@ public class FirstCourseRecordHtmlAnalysis implements WenFuYiHtmlAnalysis {
     public Map<String, String> analysis(String... args) {
         Map<String, String> structureMap = Maps.newLinkedHashMap();
         try {
-            List<String> titles = Lists.newArrayList("一.病例特点", "二.拟诊讨论(诊断依据及鉴别诊断)", "三.初步诊断", "四.诊疗计划");
+            List<String> titles = Lists.newArrayList("一.病例特点", "二.中医辨病辨证依据及鉴别诊断", "二.拟诊讨论(诊断依据及鉴别诊断)",
+                    "三、西医诊断依据及鉴别诊断", "三.初步诊断", "四.初步诊断", "四.诊疗计划", "五.治则治法", "六.诊疗计划");
             String html = args[0];
             String recTitle = args[1];
             Document doc = Jsoup.parse(html);
@@ -35,7 +36,12 @@ public class FirstCourseRecordHtmlAnalysis implements WenFuYiHtmlAnalysis {
                 titles = CommonAnalysisUtil.sortTitlesNoColon(titles, htmlContent);
                 CommonAnalysisUtil.cutByTitlesNoColon(htmlContent, titles, 0, structureMap);
             }
-
+            if (structureMap.containsKey("二.中医辨病辨证依据及鉴别诊断")) {
+                structureMap.put("拟诊讨论(诊断依据及鉴别诊断)", structureMap.get("拟诊讨论(诊断依据及鉴别诊断)") + "," + "中医辨病辨证依据及鉴别诊断:" + structureMap.get("二.中医辨病辨证依据及鉴别诊断"));
+            }
+            if (structureMap.containsKey("三、西医诊断依据及鉴别诊断")) {
+                structureMap.put("拟诊讨论(诊断依据及鉴别诊断)", structureMap.get("拟诊讨论(诊断依据及鉴别诊断)") + "," + "西医诊断依据及鉴别诊断:" + structureMap.get("三、西医诊断依据及鉴别诊断"));
+            }
             WenFuYiHtmlAnalysisUtil.insertModuleId(modeId, recTitle, structureMap);
             //        CommonAnalysisUtil.extractDateByTitle(structureMap, "时间");
             //        structureMap.forEach((k,v)-> System.out.println(k + "------" + v));
@@ -47,4 +53,4 @@ public class FirstCourseRecordHtmlAnalysis implements WenFuYiHtmlAnalysis {
         return structureMap;
     }
 
-}
+}

+ 8 - 2
trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/LeaveHospitalHtmlAnalysis.java

@@ -26,12 +26,18 @@ public class LeaveHospitalHtmlAnalysis implements WenFuYiHtmlAnalysis {
         Map<String, String> structureMap = Maps.newLinkedHashMap();
         try {
             List<String> titles = Lists.newArrayList(
-                    "入院诊断(Admitting diagnosis)", "出院诊断(Discharge diagnosis)", "入院情况(Admission status)", "诊疗经过(Hospital course)", "出院情况(Discharge status)", "疗效评定(Curative effect)",
+                    "入院诊断(Admitting diagnosis)", "出院诊断(Discharge diagnosis)", "出院诊断依据(Diagnostic Evidence)", "入院情况(Admission status)", "诊疗经过(Hospital course)", "出院情况(Discharge status)", "疗效评定(Curative effect)",
                     "出院医嘱(Discharge instructions)", "患者/法定监护人/委托代理人签名", "签名时间");
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
+            if (doc.selectFirst("body").children().last().getElementsByTag("img") != null) {
+                structureMap.put("上级医师签名", "-");
+                structureMap.put("医师签名", "-");
+                structureMap.put("记录时间", "-");
+
+            }
             String htmlContent = WenFuYiHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body"), true);
             if (StringUtil.isNotBlank(htmlContent)) {
                 htmlContent = htmlContent.replace("医务人员已告知出院录中主要内容。", "")
@@ -49,4 +55,4 @@ public class LeaveHospitalHtmlAnalysis implements WenFuYiHtmlAnalysis {
         }
         return structureMap;
     }
-}
+}

+ 7 - 5
trans/src/main/java/com/lantone/qc/trans/wenfuyi/util/OperationRecordHtmlAnalysis.java

@@ -8,8 +8,10 @@ import lombok.extern.slf4j.Slf4j;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Element;
 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * @Description:
@@ -54,10 +56,10 @@ public class OperationRecordHtmlAnalysis implements WenFuYiHtmlAnalysis {
         }
 
         List<String> titles = Lists.newArrayList(
-                "手术开始时间", "手术结束时间", "手术日期", "术前诊断", "术中诊断", "手术名称", "主刀医师", "一助", "二助", "麻醉方式", "麻醉者", "手术经过", "体位及手术径路", "探查(术中所见)",
-                "操作步骤", "手术经过(手术小结)", "主刀签名", "记录者", "记录时间", "记录日期", "术后诊断", "手术者", "助者", "麻醉", "手术经过", "术者/操作者签名",
-                "破膜", "破膜方式", "娩出胎位", "第一产程", "宫缩开始", "第二产程", "宫口开全", "第三产程", "胎儿娩出", "胎盘娩出", "总产程", "胎盘其他", "脐带", "清后羊水性状", "羊水数量", "会阴", "会阴裂伤", "产时用药", "麻醉方式",
-                "产后出血", "出血原因", "产后其他", "新生儿", "胎数", "分娩概况", "手术指征", "手术方式", "诊断", "阴道分娩纱布清点", "送休养室时间", "接生者", "记录者", "记录时间", "术中特殊情况");
+                "手术开始时间", "手术结束时间", "手术日期", "术前诊断", "术中诊断", "手术名称", "手术方式", "主刀医师", "一助", "二助", "麻醉方式", "麻醉者", "手术经过", "体位及手术径路", "探查(术中所见)",
+                "操作步骤", "手术经过(手术小结)", "主刀签名", "记录者", "记录时间", "记录日期", "术后诊断", "手术者", "助者", "麻醉", "术者/操作者签名",
+                "破膜", "破膜方式", "娩出胎位", "第一产程", "宫缩开始", "第二产程", "宫口开全", "第三产程", "胎儿娩出", "胎盘娩出", "总产程", "胎盘其他", "脐带", "清后羊水性状", "羊水数量", "会阴", "会阴裂伤", "产时用药",
+                "产后出血", "出血原因", "产后其他", "新生儿", "胎数", "分娩概况", "手术指征", "阴道分娩纱布清点", "送休养室时间", "接生者",  "术中特殊情况");
         titles = CommonAnalysisUtil.sortTitles(titles, content);
         CommonAnalysisUtil.cutByTitles(content, titles, 0, map);
         if (StringUtil.isNotBlank(map.get("送休养室时间"))) {
@@ -80,4 +82,4 @@ public class OperationRecordHtmlAnalysis implements WenFuYiHtmlAnalysis {
         }
     }
 
-}
+}