Browse Source

萧山中医院:解析7会诊记录、10输血/血制品病程记录、11术前讨论、术前小结、17手术记录、18术后首次病程及谈话记录、19疑难病例讨论记录、22抢救记录、23危急值记录、25病危通知书

licy 3 years ago
parent
commit
0bd19c713a
22 changed files with 296 additions and 340 deletions
  1. 6 5
      trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunBeHospitalizedDocTrans.java
  2. 3 3
      trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunClinicalBloodDocTrans.java
  3. 2 5
      trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunConsultationDocTrans.java
  4. 2 1
      trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunCrisisValueReportDocTrans.java
  5. 4 2
      trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunCriticallyIllNoticeDocTrans.java
  6. 6 3
      trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunDifficultCaseDiscussDocTrans.java
  7. 0 1
      trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunFirstCourseRecordDocTrans.java
  8. 1 2
      trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunLeaveHospitalDocTrans.java
  9. 17 32
      trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunOperationDocTrans.java
  10. 2 2
      trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunRescueDocTrans.java
  11. 51 49
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunBeHospitalizedHtmlAnalysis.java
  12. 18 34
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunClinicalBloodHtmlAnalysis.java
  13. 14 20
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunConsultationRecordHtmlAnalysis.java
  14. 15 19
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunCrisisValueReportHtmlAnalysis.java
  15. 25 7
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunCriticallyIllNoticeHtmlAnalysis.java
  16. 7 16
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunDifficultCaseDiscussHtmlAnalysis.java
  17. 1 2
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunFirstCourseRecordHtmlAnalysis.java
  18. 25 3
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunOperationHtmlAnalysis.java
  19. 21 49
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunOperationRecordHtmlAnalysis.java
  20. 23 58
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunPreoperativeHtmlAnalysis.java
  21. 16 19
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunRescueHtmlAnalysis.java
  22. 37 8
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/comsis/XszyyCommonAnalysisUtil.java

+ 6 - 5
trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunBeHospitalizedDocTrans.java

@@ -63,14 +63,15 @@ public class BeiLunBeHospitalizedDocTrans extends ModelDocTrans {
 
     private List<String> keyContrasts = Lists.newArrayList(
             "姓 名=姓名",
-            "出生地=籍贯",
+            "职 业=职业",
             "性 别=性别",
-            "单位或住址=住址",
             "年 龄=年龄",
             "婚 姻=婚姻",
-            "民 族=民族",
-            "发病节气=病史采集时间",
-            "职 业=职业",
+            "出生地=籍贯",
+            "专项 评估=专项评估",
+            "主 诉=主诉",
+            "体 格 检 查=体格检查",
+            "体 格 检 查 表 ( 一 )=体格检查",
             "补充及专科检查=专科检查",
             "辅 助 检 查=辅助检查",
             "入 院 诊 断=入院诊断",

+ 3 - 3
trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunClinicalBloodDocTrans.java

@@ -68,9 +68,9 @@ public class BeiLunClinicalBloodDocTrans extends ModelDocTrans {
     }
 
     private List<String> keyContrasts = Lists.newArrayList(
-            "输注成分=输注种类、血型、数量",
-            "输血过程=输注过程",
-            "病情记录=病历内容"
+            "病历标题=标题",
+            "病情记录=病历内容",
+            "书写医师=记录医生"
     );
 
 }

+ 2 - 5
trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunConsultationDocTrans.java

@@ -116,11 +116,8 @@ public class BeiLunConsultationDocTrans extends ModelDocTrans {
     }
 
     private List<String> consultationRecord_keyContrasts = Lists.newArrayList(
-            "执行情况=会诊情况",
-            "记录日期=会诊申请日期",
-            "签名++++=签名",
-            "病情记录=简要病情",
-            "医师签名=签名"
+            "会诊的目的=会诊目的",
+            "申请会诊医师签名=申请医生"
     );
 
 

+ 2 - 1
trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunCrisisValueReportDocTrans.java

@@ -66,7 +66,8 @@ public class BeiLunCrisisValueReportDocTrans extends ModelDocTrans {
     }
 
     private List<String> keyContrasts = Lists.newArrayList(
-            "病情记录=病情分析及处理"
+            "病情记录=病历内容",
+            "书写医师=记录医生"
     );
 
 }

+ 4 - 2
trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunCriticallyIllNoticeDocTrans.java

@@ -68,8 +68,10 @@ public class BeiLunCriticallyIllNoticeDocTrans extends ModelDocTrans {
     }
 
     private List<String> keyContrasts = Lists.newArrayList(
-            "临床诊断=当前诊断",
-            "患方签名=患者签名"
+            "尊敬的患者家属或患者的法定监护人、授权委托人=尊敬的患者家属或患者的法定监护人授权委托人",
+            "虽经医护人员积极救治,但目前患者病情危重,并且病情有可能进一步恶化,随时会出现以下一种或多种危及患者生命的并发症=并发症",
+            "患者监护人或授权家属签名=患方签名",
+            "经治医师签名=告知医师签名"
     );
 
 }

+ 6 - 3
trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunDifficultCaseDiscussDocTrans.java

@@ -82,9 +82,12 @@ public class BeiLunDifficultCaseDiscussDocTrans extends ModelDocTrans {
     }
 
     private List<String> keyContrasts = Lists.newArrayList(
-            "主持人=主持人姓名及专业技术职务",
-            "参加人员=参加人员的姓名及专业技术职务",
-            "主持人小结意见/讨论结论=主持人小结"
+            "主 持 人=主持人",
+            "参加人员姓名及专业技术职称=参加人员的姓名及专业技术职务",
+            "报告病史=汇报病史",
+            "讨论意见内容记录=具体讨论意见",
+            "主持人小结意见=主持人小结",
+            "记录者签名=记录医生"
     );
 
 }

+ 0 - 1
trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunFirstCourseRecordDocTrans.java

@@ -74,7 +74,6 @@ public class BeiLunFirstCourseRecordDocTrans extends ModelDocTrans {
     }
 
     private List<String> keyContrasts = Lists.newArrayList(
-            "拟诊讨论=诊断依据",
             "诊疗方案=诊疗计划",
             "医师签名=记录医生"
     );

+ 1 - 2
trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunLeaveHospitalDocTrans.java

@@ -65,9 +65,8 @@ public class BeiLunLeaveHospitalDocTrans extends ModelDocTrans {
 
     private List<String> keyContrasts = Lists.newArrayList(
             "入院时间=入院日期",
-            "出院时间=出院日期",
             "医师签名=记录医生",
-            "日期=记录时间"
+            "日期=医师签名日期"
     );
 
 }

+ 17 - 32
trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunOperationDocTrans.java

@@ -131,13 +131,10 @@ public class BeiLunOperationDocTrans extends ModelDocTrans {
     }
 
     private List<String> operationDiscussion_keyContrasts = Lists.newArrayList(
-            "手术简要经过(包括手术方式、术中所见、过程是否顺利、有无并发症等)=手术简要经过",
+            "主刀医师=记录医生",
+            "医师签名=记录医生",
             "病情记录=手术简要经过",
-            "术后诊断=术中后诊断",
-            "患者手术后情况=患者术后情况",
-            "术后应当特别注意观察的事项:=术后注意事项",
-            "术后治疗计划(包括术后应当特别注意观察的事项)=术后注意事项",
-            "医师签名=医生签名"
+            "病历标题=标题"
     );
 
 
@@ -208,13 +205,12 @@ public class BeiLunOperationDocTrans extends ModelDocTrans {
     }
 
     private List<String> operationRecord_keyContrasts = Lists.newArrayList(
-            "手术经过=手术经过及处理",
             "术后诊断=术中后诊断",
-            "主刀=主刀医师",
-            "记录者=记录医生",
-            "患者手术后情况=患者术后情况",
-            "麻醉方法=麻醉方式",
-            "时间=记录时间"
+            "麻醉人员=麻醉医师",
+            "手术经过=手术经过及处理",
+            "主刀医师签名=主刀医师",
+            "记录医师签名=记录医生",
+            "记录医师=记录医生"
     );
 
 
@@ -302,26 +298,15 @@ public class BeiLunOperationDocTrans extends ModelDocTrans {
     }
 
     private List<String> preoperativeDiscussion_keyContrasts = Lists.newArrayList(
-            "1.术前诊断=术前诊断",
-            "2.手术指征与禁忌征=手术指征与禁忌",
-            "3.可替代方案=可替代的方案",
-            "4.拟施手术方式(名称)及可能的变更方案=拟施手术方式、名称及可能的变更与禁忌症",
-            "5.计划性多次手术=计划性多次手术",
-            "6.拟施麻醉方式=拟施麻醉方式",
-            "5.拟施麻醉方式=拟施麻醉方式",
-            "5.本次手术是否属于计划性多次手术=计划性多次手术",
-            "6.术前特殊准备=术前准备",
-            "7.术前特殊准备=术前准备",
-            "7.主要术中、术后风险及防范措施=风险及防范措施",
-            "8.主要术中、术后风险及防范措施=风险及防范措施",
-            "9.术中、术后注意事项(含护理事项)=术中术后注意事项",
-            "8.术中、术后注意事项(含护理事项)=术中术后注意事项",
-            //"术中、术后注意事项(含护理事项)=术后注意事项",
-            //"拟施手术方式(名称)及可能的变更方案=拟施手术方式、名称及可能的变更与禁忌症",
-            //"术前特殊准备=术前准备",
-            //"手术指征与禁忌征=手术指征与禁忌",
-            "经治医生签字时间=记录时间",
-            "签字时间=记录时间"
+            "书写医师=记录医生",
+            "讨论日期=讨论时间",
+            "主 持 人=主持人",
+            "参加人员姓名及专业技术职称=参加人员",
+            "报告病史=简要病情",
+            "讨论意见内容记录=具体讨论意见",
+            "记录者签名=记录医生",
+            "记录者签名=记录医生"
+
     );
 
     /**********************************************手术知情同意书****************************************************/

+ 2 - 2
trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunRescueDocTrans.java

@@ -66,8 +66,8 @@ public class BeiLunRescueDocTrans extends ModelDocTrans {
     }
 
     private List<String> keyContrasts = Lists.newArrayList(
-            "病历标题=标题",
-            "病情记录=抢救内容"
+            "病情变化情况及抢救过程=抢救内容",
+            "书写医师=记录医生"
     );
 
 }

+ 51 - 49
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunBeHospitalizedHtmlAnalysis.java

@@ -46,10 +46,11 @@ public class BeiLunBeHospitalizedHtmlAnalysis implements BeiLunHtmlAnalysis {
 
     //一般模板
     private void analysisGeneral(Document doc, String recTitle, Map<String, String> map) {
-        List<String> titles = Lists.newArrayList("姓 名", "职 业", "性 别", "入院日期","年 龄", "记录日期", "婚 姻","病史陈述者", "出生地","可靠程度",
+        List<String> titles = Lists.newArrayList("姓名","病区","床号","住院号码","入 院 记 录","住 院 大 病 历",
+                "姓 名", "职 业", "性 别", "入院日期","年 龄", "记录日期", "婚 姻","病史陈述者", "出生地","可靠程度",
                 "民 族","身份证号码","发病节气","病案号","单位或住址","主 诉","现病史","既往史","个人史","婚育史","家族史",
-                "专项 评估","专项评估","当前用药","VAS疼痛评分","康复需求","心理状态","营养状况(NRS-2002营养风险筛查表)","VTE 风险","其他评估(如宗教信仰)",
-                "体 格 检 查","体 格 检 查 表 ( 一 )","体 格 检 查 表 (二)","补充及专科检查","辅 助 检 查", "入 院 诊 断","初步诊断",
+                "专项 评估","专项评估",
+                "体 格 检 查","体 格 检 查 表 ( 一 )","补充及专科检查","辅 助 检 查", "入 院 诊 断","初步诊断",
                 "书写医生","医师签名","书写医师","修正诊断"
         );
         String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
@@ -59,28 +60,34 @@ public class BeiLunBeHospitalizedHtmlAnalysis implements BeiLunHtmlAnalysis {
             //无冒号版本
             XszyyCommonAnalysisUtil.html2StructureMapNoColon(titles,htmlContent,map);
         }
-
+        //书写医生中包含书写时间
         if(map.containsKey("书写医生")&&XszyyCommonAnalysisUtil.extractDate(map.get("书写医生"))!=null){
-            map.put("记录时间",XszyyCommonAnalysisUtil.extractDate(map.get("书写医生")));
-            map.put("记录医生",map.get("书写医生").substring(0,map.get("书写医生").indexOf(map.get("记录时间"))));
+            map.put("书写时间",XszyyCommonAnalysisUtil.extractDate(map.get("书写医生")));
+            map.put("书写医生",map.get("书写医生").substring(0,map.get("书写医生").indexOf(map.get("书写时间"))));
         }
         if(map.containsKey("医师签名")&&XszyyCommonAnalysisUtil.extractDate(map.get("医师签名"))!=null){
-            map.put("记录时间",XszyyCommonAnalysisUtil.extractDate(map.get("医师签名")));
-            map.put("记录医生",map.get("医师签名").substring(0,map.get("医师签名").indexOf(map.get("记录时间"))));
+            map.put("书写时间",XszyyCommonAnalysisUtil.extractDate(map.get("医师签名")));
+            map.put("书写医生",map.get("医师签名").substring(0,map.get("医师签名").indexOf(map.get("书写时间"))));
         }
         if(map.containsKey("书写医师")&&XszyyCommonAnalysisUtil.extractDate(map.get("书写医师"))!=null){
-            map.put("记录时间",XszyyCommonAnalysisUtil.extractDate(map.get("书写医师")));
-            map.put("记录医生",map.get("书写医师").substring(0,map.get("书写医师").indexOf(map.get("记录时间"))));
+            map.put("书写时间",XszyyCommonAnalysisUtil.extractDate(map.get("书写医师")));
+            map.put("书写医生",map.get("书写医师").substring(0,map.get("书写医师").indexOf(map.get("书写时间"))));
+        }
+        //修正诊断中包含修正医生和修正时间
+        if(map.containsKey("修正诊断")&&map.get("修正诊断").contains("书写医生")&&XszyyCommonAnalysisUtil.extractDate(map.get("修正诊断"))!=null){
+            map.put("修正时间",XszyyCommonAnalysisUtil.extractDate(map.get("修正诊断")));
+            map.put("修正医生",map.get("修正诊断").substring(map.get("修正诊断").indexOf("书写医生")+"书写医生".length(),map.get("修正诊断").indexOf(map.get("修正时间"))));
+            map.put("修正诊断",map.get("修正诊断").substring(0,map.get("修正诊断").indexOf("书写医生")));
         }
-
     }
 
     //24小时出入院记录、24小时出入院记录(全院)、24小时入出院记录(全院通用)、24小时内入院死亡记录(全院通用)
     private void analysis24h(Document doc, Map<String, String> map) {
-        List<String> titles = Lists.newArrayList("姓 名", "职 业", "性 别", "入院日期","年 龄", "记录日期", "婚 姻","病史陈述者", "出生地","可靠程度",
+        List<String> titles = Lists.newArrayList("姓名","病区","床号","住院号码","入 院 记 录","住 院 大 病 历",
+                "姓 名", "职 业", "性 别", "入院日期","年 龄", "记录日期", "婚 姻","病史陈述者", "出生地","可靠程度",
                 "民 族","身份证号码","发病节气","病案号","单位或住址","主 诉","现病史","既往史","个人史","婚育史","家族史",
-                "专项 评估","专项评估","当前用药","VAS疼痛评分","康复需求","心理状态","营养状况(NRS-2002营养风险筛查表)","VTE 风险","其他评估(如宗教信仰)",
-                "体 格 检 查","体 格 检 查 表 ( 一 )","体 格 检 查 表 (二)","补充及专科检查","辅 助 检 查", "入 院 诊 断","初步诊断",
+                "专项 评估","专项评估",
+                "体 格 检 查","体 格 检 查 表 ( 一 )","补充及专科检查","辅 助 检 查", "入 院 诊 断","初步诊断",
                 "书写医生","医师签名","书写医师","修正诊断"
         );
         String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
@@ -90,28 +97,35 @@ public class BeiLunBeHospitalizedHtmlAnalysis implements BeiLunHtmlAnalysis {
             //无冒号版本
             XszyyCommonAnalysisUtil.html2StructureMapNoColon(titles,htmlContent,map);
         }
-
+        //书写医生中包含书写时间
         if(map.containsKey("书写医生")&&XszyyCommonAnalysisUtil.extractDate(map.get("书写医生"))!=null){
-            map.put("记录时间",XszyyCommonAnalysisUtil.extractDate(map.get("书写医生")));
-            map.put("记录医生",map.get("书写医生").substring(0,map.get("书写医生").indexOf(map.get("记录时间"))));
+            map.put("书写时间",XszyyCommonAnalysisUtil.extractDate(map.get("书写医生")));
+            map.put("书写医生",map.get("书写医生").substring(0,map.get("书写医生").indexOf(map.get("书写时间"))));
         }
         if(map.containsKey("医师签名")&&XszyyCommonAnalysisUtil.extractDate(map.get("医师签名"))!=null){
-            map.put("记录时间",XszyyCommonAnalysisUtil.extractDate(map.get("医师签名")));
-            map.put("记录医生",map.get("医师签名").substring(0,map.get("医师签名").indexOf(map.get("记录时间"))));
+            map.put("书写时间",XszyyCommonAnalysisUtil.extractDate(map.get("医师签名")));
+            map.put("书写医生",map.get("医师签名").substring(0,map.get("医师签名").indexOf(map.get("书写时间"))));
         }
         if(map.containsKey("书写医师")&&XszyyCommonAnalysisUtil.extractDate(map.get("书写医师"))!=null){
-            map.put("记录时间",XszyyCommonAnalysisUtil.extractDate(map.get("书写医师")));
-            map.put("记录医生",map.get("书写医师").substring(0,map.get("书写医师").indexOf(map.get("记录时间"))));
+            map.put("书写时间",XszyyCommonAnalysisUtil.extractDate(map.get("书写医师")));
+            map.put("书写医生",map.get("书写医师").substring(0,map.get("书写医师").indexOf(map.get("书写时间"))));
+        }
+        //修正诊断中包含修正医生和修正时间
+        if(map.containsKey("修正诊断")&&map.get("修正诊断").contains("书写医生")&&XszyyCommonAnalysisUtil.extractDate(map.get("修正诊断"))!=null){
+            map.put("修正时间",XszyyCommonAnalysisUtil.extractDate(map.get("修正诊断")));
+            map.put("修正医生",map.get("修正诊断").substring(map.get("修正诊断").indexOf("书写医生")+"书写医生".length(),map.get("修正诊断").indexOf(map.get("修正时间"))));
+            map.put("修正诊断",map.get("修正诊断").substring(0,map.get("修正诊断").indexOf("书写医生")));
         }
 
     }
 
     //原-日间病历入出院记录、日间病历-性早熟
     private void analysisDay(Document doc, Map<String, String> map) {
-        List<String> titles = Lists.newArrayList("姓 名", "职 业", "性 别", "入院日期","年 龄", "记录日期", "婚 姻","病史陈述者", "出生地","可靠程度",
+        List<String> titles = Lists.newArrayList("姓名","病区","床号","住院号码","入 院 记 录","住 院 大 病 历",
+                "姓 名", "职 业", "性 别", "入院日期","年 龄", "记录日期", "婚 姻","病史陈述者", "出生地","可靠程度",
                 "民 族","身份证号码","发病节气","病案号","单位或住址","主 诉","现病史","既往史","个人史","婚育史","家族史",
-                "专项 评估","专项评估","当前用药","VAS疼痛评分","康复需求","心理状态","营养状况(NRS-2002营养风险筛查表)","VTE 风险","其他评估(如宗教信仰)",
-                "体 格 检 查","体 格 检 查 表 ( 一 )","体 格 检 查 表 (二)","补充及专科检查","辅 助 检 查", "入 院 诊 断","初步诊断",
+                "专项 评估","专项评估",
+                "体 格 检 查","体 格 检 查 表 ( 一 )","补充及专科检查","辅 助 检 查", "入 院 诊 断","初步诊断",
                 "书写医生","医师签名","书写医师","修正诊断"
         );
         String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
@@ -121,38 +135,26 @@ public class BeiLunBeHospitalizedHtmlAnalysis implements BeiLunHtmlAnalysis {
             //无冒号版本
             XszyyCommonAnalysisUtil.html2StructureMapNoColon(titles,htmlContent,map);
         }
-
+        //书写医生中包含书写时间
         if(map.containsKey("书写医生")&&XszyyCommonAnalysisUtil.extractDate(map.get("书写医生"))!=null){
-            map.put("记录时间",XszyyCommonAnalysisUtil.extractDate(map.get("书写医生")));
-            map.put("记录医生",map.get("书写医生").substring(0,map.get("书写医生").indexOf(map.get("记录时间"))));
+            map.put("书写时间",XszyyCommonAnalysisUtil.extractDate(map.get("书写医生")));
+            map.put("书写医生",map.get("书写医生").substring(0,map.get("书写医生").indexOf(map.get("书写时间"))));
         }
         if(map.containsKey("医师签名")&&XszyyCommonAnalysisUtil.extractDate(map.get("医师签名"))!=null){
-            map.put("记录时间",XszyyCommonAnalysisUtil.extractDate(map.get("医师签名")));
-            map.put("记录医生",map.get("医师签名").substring(0,map.get("医师签名").indexOf(map.get("记录时间"))));
+            map.put("书写时间",XszyyCommonAnalysisUtil.extractDate(map.get("医师签名")));
+            map.put("书写医生",map.get("医师签名").substring(0,map.get("医师签名").indexOf(map.get("书写时间"))));
         }
         if(map.containsKey("书写医师")&&XszyyCommonAnalysisUtil.extractDate(map.get("书写医师"))!=null){
-            map.put("记录时间",XszyyCommonAnalysisUtil.extractDate(map.get("书写医师")));
-            map.put("记录医生",map.get("书写医师").substring(0,map.get("书写医师").indexOf(map.get("记录时间"))));
+            map.put("书写时间",XszyyCommonAnalysisUtil.extractDate(map.get("书写医师")));
+            map.put("书写医生",map.get("书写医师").substring(0,map.get("书写医师").indexOf(map.get("书写时间"))));
         }
-
-    }
-
-    private void disHandleExt(Map<String, String> map) {
-        String[] keys = {"补充诊断", "修正诊断"};
-        String value = null;
-        int index = 0;
-        for (String key : keys) {
-            value = map.get(key);
-            if (StringUtil.isNotBlank(value)) {
-                for (String key_ : keys) {
-                    index = value.indexOf(key_);
-                    if (index > 0) {
-                        map.put(key_, value.substring(index + 5));
-                        map.put(key, value.substring(0, index));
-                    }
-                }
-            }
+        //修正诊断中包含修正医生和修正时间
+        if(map.containsKey("修正诊断")&&map.get("修正诊断").contains("书写医生")&&XszyyCommonAnalysisUtil.extractDate(map.get("修正诊断"))!=null){
+            map.put("修正时间",XszyyCommonAnalysisUtil.extractDate(map.get("修正诊断")));
+            map.put("修正医生",map.get("修正诊断").substring(map.get("修正诊断").indexOf("书写医生")+"书写医生".length(),map.get("修正诊断").indexOf(map.get("修正时间"))));
+            map.put("修正诊断",map.get("修正诊断").substring(0,map.get("修正诊断").indexOf("书写医生")));
         }
     }
 
+
 }

+ 18 - 34
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunClinicalBloodHtmlAnalysis.java

@@ -2,9 +2,12 @@ package com.lantone.qc.trans.xszyy.util;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import com.lantone.qc.trans.xszyy.util.comsis.XszyyCommonAnalysisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 
 import java.util.List;
@@ -23,50 +26,31 @@ public class BeiLunClinicalBloodHtmlAnalysis implements BeiLunHtmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        List<String> titles = Lists.newArrayList("输血前症状", "输血前实验室指标", "输血目的", "输注成分", "输血时间",
-                "开始时间", "结束时间", "输血过程");
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
-            analysisGeneral(recTitle,bigDivElement, map);
-            if (map.containsKey("病情记录")) {
-                String content = map.get("病情记录");
-                CommonAnalysisUtil.cutByTitles(content, titles, 0, map);
+            Document doc = Jsoup.parse(html);
+            String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
+            if (StringUtil.isNotBlank(htmlContent)) {
+                XszyyCommonAnalysisUtil.xszyyCommonlyExtractWardInfo(recTitle, htmlContent, map);
+                //病情记录存在副主任医师和书写医师字段
+                if(map.containsKey("病情记录")){
+                    String bqtext = map.get("病情记录");
+
+                    //无冒号版本
+                    List<String> titles = Lists.newArrayList("书写医师"
+                    );
+                    XszyyCommonAnalysisUtil.html2StructureMapNoColon(titles,bqtext,map);
+                    map.put("病情记录",bqtext.substring(0,bqtext.lastIndexOf("书写医师")));
+                }
             }
-            if (titles.size() > 6) {
-                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));
-                        }
-                    }
-            );
+
             XszyyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {
             log.error(e.getMessage(), e);
         }
         return map;
     }
-
-    private void analysisGeneral(String recTitle,Element bigDivElement, Map<String, String> map) {
-        if (bigDivElement.childNodeSize() == 1) {
-            bigDivElement = bigDivElement.child(0);
-        }
-        if (bigDivElement.selectFirst("hr") != null) {
-            bigDivElement.selectFirst("hr").previousElementSiblings().remove();
-        }
-        String text = XszyyHtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
-        CommonAnalysisUtil.extractWardInfo(recTitle,text, map);
-        String bqjlText = "病情记录" + map.get("病情记录");
-        List<String> titles = Lists.newArrayList(
-                "病情记录"
-        );
-        titles = CommonAnalysisUtil.sortTitlesNoColon(titles, bqjlText);
-        CommonAnalysisUtil.cutByTitlesNoColon(bqjlText, titles, 0, map);
-    }
-
 }

+ 14 - 20
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunConsultationRecordHtmlAnalysis.java

@@ -2,9 +2,12 @@ package com.lantone.qc.trans.xszyy.util;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import com.lantone.qc.trans.xszyy.util.comsis.XszyyCommonAnalysisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 
 import java.util.List;
@@ -27,30 +30,21 @@ public class BeiLunConsultationRecordHtmlAnalysis implements BeiLunHtmlAnalysis
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
-            analysisGeneral(recTitle,bigDivElement, map);
+            Document doc = Jsoup.parse(html);
+            List<String> titles = Lists.newArrayList("姓名","科别","床号","住院号",
+                    "请求会诊日期","简要病情及诊疗经过","患者目前存在主要问题","会诊的目的","申请会诊医师签名","会 诊 记 录",
+                    "会诊时间","会诊情况及处理意见","会诊医师签名"
+            );
+            String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
+            if (StringUtil.isNotBlank(htmlContent)) {
+                //无冒号版本
+                XszyyCommonAnalysisUtil.html2StructureMapNoColon(titles,htmlContent,map);
+            }
+
             XszyyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {
             log.error(e.getMessage(), e);
         }
         return map;
     }
-
-    private void analysisGeneral(String recTitle,Element bigDivElement, Map<String, String> map) {
-        if (bigDivElement.childNodeSize() == 1) {
-            bigDivElement = bigDivElement.child(0);
-        }
-        if (bigDivElement.selectFirst("hr") != null) {
-            bigDivElement.selectFirst("hr").previousElementSiblings().remove();
-        }
-        String text = XszyyHtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
-        CommonAnalysisUtil.extractWardInfo(recTitle,text, map);
-        String bqjlText = "病情记录" + map.get("病情记录");
-        List<String> titles = Lists.newArrayList(
-                "病情记录"
-        );
-        titles = CommonAnalysisUtil.sortTitlesNoColon(titles, bqjlText);
-        CommonAnalysisUtil.cutByTitlesNoColon(bqjlText, titles, 0, map);
-    }
-
 }

+ 15 - 19
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunCrisisValueReportHtmlAnalysis.java

@@ -3,8 +3,10 @@ package com.lantone.qc.trans.xszyy.util;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import com.lantone.qc.trans.xszyy.util.comsis.XszyyCommonAnalysisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 
 import java.util.List;
@@ -27,8 +29,19 @@ public class BeiLunCrisisValueReportHtmlAnalysis implements BeiLunHtmlAnalysis {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
-            analysisGeneral(recTitle,bigDivElement, map);
+            Document doc = Jsoup.parse(html);
+            String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
+            XszyyCommonAnalysisUtil.xszyyCommonlyExtractWardInfo(recTitle, htmlContent, map);
+            //病情记录存在副主任医师和书写医师字段
+            if(map.containsKey("病情记录")){
+                String bqtext = map.get("病情记录");
+                //无冒号版本
+                List<String> titles = Lists.newArrayList("书写医师"
+                );
+                XszyyCommonAnalysisUtil.html2StructureMapNoColon(titles,bqtext,map);
+                map.put("病情记录",bqtext.substring(0,bqtext.lastIndexOf("书写医师")));
+            }
+
             XszyyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {
             log.error(e.getMessage(), e);
@@ -36,21 +49,4 @@ public class BeiLunCrisisValueReportHtmlAnalysis implements BeiLunHtmlAnalysis {
         return map;
     }
 
-    private void analysisGeneral(String recTitle,Element bigDivElement, Map<String, String> map) {
-        if (bigDivElement.childNodeSize() == 1) {
-            bigDivElement = bigDivElement.child(0);
-        }
-        if (bigDivElement.selectFirst("hr") != null) {
-            bigDivElement.selectFirst("hr").previousElementSiblings().remove();
-        }
-        String text = XszyyHtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
-        CommonAnalysisUtil.extractWardInfo(recTitle,text, map);
-        String bqjlText = "病情记录" + map.get("病情记录");
-        List<String> titles = Lists.newArrayList(
-                "病情记录"
-        );
-        titles = CommonAnalysisUtil.sortTitlesNoColon(titles, bqjlText);
-        CommonAnalysisUtil.cutByTitlesNoColon(bqjlText, titles, 0, map);
-    }
-
 }

File diff suppressed because it is too large
+ 25 - 7
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunCriticallyIllNoticeHtmlAnalysis.java


+ 7 - 16
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunDifficultCaseDiscussHtmlAnalysis.java

@@ -4,6 +4,7 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import com.lantone.qc.trans.xszyy.util.comsis.XszyyCommonAnalysisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
@@ -25,27 +26,17 @@ public class BeiLunDifficultCaseDiscussHtmlAnalysis implements BeiLunHtmlAnalysi
     public Map<String, String> analysis(String... args) {
         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 = XszyyHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0), true);
+            String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
             if (StringUtil.isNotBlank(htmlContent)) {
-                htmlContent = htmlContent.replaceAll("[   ]", " ").replace("第一页","");
-                CommonAnalysisUtil.html2StructureMap(titles, htmlContent, structureMap);
-            }
-            CommonAnalysisUtil.extractDateByTitle(structureMap, "告知时间");
-            removeLast(structureMap);
-            if (structureMap.containsKey("住院号")) {
-                String date = CommonAnalysisUtil.extractDate(structureMap.get("住院号"));
-                if (StringUtil.isNotBlank(date)) {
-                    structureMap.put("时间", date);
-                    structureMap.put("住院号", structureMap.get("住院号").replace(date, "").replace("\n", ""));
-
-                }
+                //无冒号版本
+                List<String> titles = Lists.newArrayList("入院日期","讨论日期","讨论地点","主 持 人",
+                        "参加人员姓名及专业技术职称","报告病史","讨论意见内容记录","主持人小结意见","记录者签名","主持人签名"
+                );
+                XszyyCommonAnalysisUtil.html2StructureMapNoColon(titles, htmlContent, structureMap);
             }
             XszyyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         } catch (Exception e) {

+ 1 - 2
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunFirstCourseRecordHtmlAnalysis.java

@@ -4,7 +4,6 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.xszyy.util.comsis.XszyyCommonAnalysisUtil;
-import com.lantone.qc.trans.yuhangsy.util.YuhangsyHtmlAnalysisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
@@ -41,7 +40,7 @@ public class BeiLunFirstCourseRecordHtmlAnalysis implements BeiLunHtmlAnalysis {
                 }
             }
             structureMap.put("标题",recTitle);
-            YuhangsyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
+            XszyyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         } catch (Exception e) {
             log.error(e.getMessage(), e);
         }

+ 25 - 3
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunOperationHtmlAnalysis.java

@@ -2,9 +2,12 @@ package com.lantone.qc.trans.xszyy.util;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import com.lantone.qc.trans.xszyy.util.comsis.XszyyCommonAnalysisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 
 import java.util.List;
@@ -27,9 +30,28 @@ public class BeiLunOperationHtmlAnalysis implements BeiLunHtmlAnalysis {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
-            analysisGeneral(recTitle, bigDivElement, map);
-            CommonAnalysisUtil.makeEmpty(map, "医生签名");
+            Document doc = Jsoup.parse(html);
+            String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
+            if (StringUtil.isNotBlank(htmlContent)) {
+                XszyyCommonAnalysisUtil.xszyyCommonlyExtractWardInfo(recTitle, htmlContent, map);
+                //病情记录存在主刀医师和主刀医师字段
+                if(map.containsKey("病情记录")){
+                    String bqtext = map.get("病情记录");
+
+                    //无冒号版本
+                    List<String> titles = Lists.newArrayList("主刀医师","医师签名","书写医师"
+                    );
+                    XszyyCommonAnalysisUtil.html2StructureMapNoColon(titles,bqtext,map);
+                    if(map.containsKey("主刀医师")){
+                        map.put("病情记录",bqtext.substring(0,bqtext.lastIndexOf("主刀医师")));
+                    }
+                    if(map.containsKey("医师签名")){
+                        map.put("病情记录",bqtext.substring(0,bqtext.lastIndexOf("医师签名")));
+                    }
+
+                }
+            }
+
             XszyyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {
             log.error(e.getMessage(), e);

+ 21 - 49
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunOperationRecordHtmlAnalysis.java

@@ -4,8 +4,10 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import com.lantone.qc.trans.xszyy.util.comsis.XszyyCommonAnalysisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 
 import java.util.List;
@@ -28,62 +30,32 @@ public class BeiLunOperationRecordHtmlAnalysis implements BeiLunHtmlAnalysis {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
-            analysisGeneral(bigDivElement, map);
-            XszyyHtmlAnalysisUtil.mapValueRemoveStartColon(map);
-            String operatingCrew = null;
-            if (map.containsKey("手术人员")) {
-                operatingCrew = map.get("手术人员");
-            } else if (map.containsKey("手术者及助手名称")) {
-                operatingCrew = map.get("手术者及助手名称");
-            }
-            if (StringUtil.isNotBlank(operatingCrew)) {
-                CommonAnalysisUtil.cutByTitles(operatingCrew, Lists.newArrayList("主刀", "一助", "二助", "助手", "洗手护士"), 0, map);
-            }
-            if (map.containsKey("主刀")) {
-                map.put("主刀", map.get("主刀").replaceAll("[^\u4E00-\u9FA5]", ""));
-            }
-            if (map.containsKey("麻醉者")) {
-                String anesthetist = map.get("麻醉者").replace("麻醉医生:", "");
-                map.put("麻醉医师", anesthetist);
-                if (anesthetist.contains("1.")) {
-                    int index = anesthetist.indexOf("1.");
-                    map.put("麻醉医师", anesthetist.substring(0, index));
-                    map.put("手术经过", anesthetist.substring(index));
+            Document doc = Jsoup.parse(html);
+            List<String> titles = Lists.newArrayList("姓名","病区","床号","住院号","手 术 记 录 单",
+                    "手术日期","开始时间","结束时间","术前诊断","手术名称","术后诊断","手术人员","麻醉方式","麻醉人员","手术经过",
+                    "记录医师签名","主刀医师签名","主刀医师","记录医师","科室意见","科主任"
+            );
+            String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
+
+            if (StringUtil.isNotBlank(htmlContent)) {
+                //无冒号版本
+                XszyyCommonAnalysisUtil.html2StructureMapNoColon(titles,htmlContent,map);
+                //主刀医师签名存在记录时间
+                if(map.containsKey("主刀医师签名")&&XszyyCommonAnalysisUtil.extractDate(map.get("主刀医师签名"))!=null){
+                    map.put("记录时间",XszyyCommonAnalysisUtil.extractDate(map.get("主刀医师签名")));
+                    map.put("主刀医师签名",map.get("主刀医师签名").substring(0,map.get("主刀医师签名").indexOf(map.get("记录时间"))));
                 }
-            }
-            if (map.containsKey("手术日期")) {
-                String operatorDateStr = map.get("手术日期");
-                if (operatorDateStr.contains("--")) {
-                    String[] operatorDate = operatorDateStr.split("--");
-                    map.put("手术开始时间", operatorDate[0]);
-                    map.put("手术结束时间", operatorDate[1]);
+                //记录医师名存在记录时间
+                if(map.containsKey("记录医师")&&XszyyCommonAnalysisUtil.extractDate(map.get("记录医师"))!=null){
+                    map.put("记录时间",XszyyCommonAnalysisUtil.extractDate(map.get("记录医师")));
+                    map.put("记录医师",map.get("记录医师").substring(0,map.get("记录医师").indexOf(map.get("记录时间"))));
                 }
             }
-            CommonAnalysisUtil.makeEmpty(map, "医生签名");
+
             XszyyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {
             log.error(e.getMessage(), e);
         }
         return map;
     }
-
-    private void analysisGeneral(Element bigDivElement, Map<String, String> map) {
-        /*if (bigDivElement.selectFirst("hr") != null) {
-            bigDivElement.selectFirst("hr").previousElementSiblings().remove();
-        }*/
-        String text = XszyyHtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
-        text = text.replaceAll("第1页", "");
-        List<String> titles = Lists.newArrayList(
-                "姓名", "性别", "出生日期", "出生年月", "科别", "科室", "病区", "床号", "床位", "住院号",
-                "手术时间", "手术日期", "术前诊断", "手术指征", "手术人员", "麻醉方式", "麻醉人员", "麻 醉 者", "洗手护士", "本次手术是否属于非计划再次手术", "接生者",
-                "术前胎心", "手术名称", "术后诊断", "手术者及助手名称", "术中取病理标本", "麻醉方法", "诊断手术/操作简要经过(包括术中有无并发症及具体描述和处理)", "手术经过",
-                "医生签名", "记录时间", "时间", "手术/操作医生", "记录者", "术中输血", "术前宫颈准备日期", "药物名称及用法", "导管或其他", "插入深度",
-                "阴道填塞纱布条", "准备者", "取出日期", "手术方法", "术中特殊情况", "病理检查", "其他", "记录者", "手术者",
-                "检查子宫位置"
-        );
-        titles = CommonAnalysisUtil.sortTitles(titles, text);
-        CommonAnalysisUtil.cutByTitlesNoColon(text, titles, 0, map);
-    }
-
 }

+ 23 - 58
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunPreoperativeHtmlAnalysis.java

@@ -4,8 +4,10 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import com.lantone.qc.trans.xszyy.util.comsis.XszyyCommonAnalysisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 
 import java.util.List;
@@ -23,71 +25,34 @@ public class BeiLunPreoperativeHtmlAnalysis implements BeiLunHtmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        Map<String, String> map = Maps.newLinkedHashMap();
+        Map<String, String> structureMap = Maps.newLinkedHashMap();
         try {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
-            analysisGeneral(bigDivElement, map);
-
-            XszyyHtmlAnalysisUtil.mapValueRemoveStartColon(map);
-            XszyyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
+            Document doc = Jsoup.parse(html);
+            List<String> titles = Lists.newArrayList("简要病情","术前诊断","手术指征","拟施手术名称和方式","拟施麻醉方式",
+                    "注意事项","术者术前查房情况","书写医师",
+
+                    "入院日期","讨论日期","讨论地点","主 持 人","参加人员姓名及专业技术职称","报告病史", "讨论意见内容记录","主持人小结意见","记录者签名","记录者",
+                    "主持人签名"
+            );
+            String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
+
+            if (StringUtil.isNotBlank(htmlContent)) {
+                //无冒号版本
+                XszyyCommonAnalysisUtil.html2StructureMapNoColon(titles,htmlContent,structureMap);
+                if(XszyyCommonAnalysisUtil.extractDate(htmlContent)!=null){
+                    structureMap.put("文书时间",XszyyCommonAnalysisUtil.extractDate(htmlContent));
+                }
+            }
+
+            structureMap.put("文书标题",recTitle);
+            XszyyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         } catch (Exception e) {
             log.error(e.getMessage(), e);
         }
-        return map;
-    }
-
-    private void analysisGeneral(Element bigDivElement, Map<String, String> map) {
-        /*if (bigDivElement.selectFirst("hr") != null) {
-            bigDivElement.selectFirst("hr").previousElementSiblings().remove();
-        }*/
-        String text = XszyyHtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
-
-        int index1 = text.lastIndexOf("经治医生签名");
-        int index2 = text.lastIndexOf("主刀医生签名");
-        if (index1 != -1 && index2 != -1) {
-            text = text.substring(0, index1).replace("(如高血压病、冠心病、糖尿病、脑梗、心梗、心肺肝肾功能不全,口服抗凝药", "").replace("等)", "")
-                    .replace("(如腹腔镜可能改开腹等)", "").replace("(如腹腔镜可能改开腹", "").replace("皮瓣转移术可能的变更方案","")
-                    .replace("四级手术、疑难手术等必须填写以下“具体讨论意见”,作为科室三大讨论本留存资料", "")
-                    .replace("术后术后", "术后")
-                    + text.substring(index1, index2).replace("签字时间", "经治医生签字时间").replace("年月日时分", "")
-                    + text.substring(index2).replace("签字时间", "主刀医生签字时间").replace("年月日时分", "");
-        }
-        text = text.replace("术前讨论及术前小结", "").replace("讨论结论:", "").replace("年月日时\n" +
-                "分", "");
-        List<String> titles = Lists.newArrayList("姓名", "性别", "出生日期", "出生年月", "科别", "科室", "病区", "床号", "床位", "住院号",
-                "讨论时间", "讨论方式", "参加人员", "简要病情", "具体讨论意见",
-                "1.术前诊断", "2.手术指征与禁忌征", "3.可替代方案", "4.拟施手术方式(名称)及可能的变更方案", "5.计划性多次手术",
-                "5.本次手术是否属于计划性多次手术",
-                "5.拟施麻醉方式", "6.术前特殊准备", "7.主要术中、术后风险及防范措施", "8.术中、术后注意事项(含护理事项)",
-                "6.拟施麻醉方式", "7.术前特殊准备", "8.主要术中、术后风险及防范措施", "9.术中、术后注意事项(含护理事项)",
-                "术前诊断", "手术指征", "拟施手术名称及方式", "拟施麻醉方式", "其他术前相关情况", "注意事项",
-                "经治医生签名", "经治医生签字时间", "主刀医生签名", "医生签名", "主刀医生签字时间", "签字时间");
-        CommonAnalysisUtil.cutByTitles(text, titles, 0, map);
-        CommonAnalysisUtil.processType(map, "5.计划性多次手术");
-        CommonAnalysisUtil.processType(map, "5.本次手术是否属于计划性多次手术");
-        CommonAnalysisUtil.processType(map, "讨论方式");
-        CommonAnalysisUtil.makeEmpty(map, "主刀医生签名");
-        // 解决医生签名显示 年 月 日 时 分
-        signatureTime(map);
-    }
-
-    /**
-     * 解决医生签名时间显示 年 月 日 时 分
-     *
-     * @param map
-     */
-    private void signatureTime(Map<String, String> map) {
-        String goCureDoctor = map.get("经治医生签字时间");
-        String operateDoctor = map.get("主刀医生签字时间");
-        if (StringUtil.isNotBlank(goCureDoctor) && goCureDoctor.contains("年 月 日 时 分")) {
-            map.put("经治医生签字时间", goCureDoctor.replace("年 月 日 时 分", ""));
-        }
-        if (StringUtil.isNotBlank(operateDoctor) && operateDoctor.contains("年 月 日 时 分")) {
-            map.put("主刀医生签字时间", operateDoctor.replace("年 月 日 时 分", ""));
-        }
+        return structureMap;
     }
 
 }

+ 16 - 19
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunRescueHtmlAnalysis.java

@@ -2,9 +2,12 @@ package com.lantone.qc.trans.xszyy.util;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import com.lantone.qc.trans.xszyy.util.comsis.XszyyCommonAnalysisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 
 import java.util.List;
@@ -27,8 +30,19 @@ public class BeiLunRescueHtmlAnalysis implements BeiLunHtmlAnalysis {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
-            analysisGeneral(recTitle,bigDivElement, map);
+            Document doc = Jsoup.parse(html);
+            String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
+            if (StringUtil.isNotBlank(htmlContent)) {
+                //无冒号版本
+                List<String> titles = Lists.newArrayList("患者姓名","性别","年龄","目前诊断",
+                        "参加抢救的医务人员姓名及专业技术职称","病情变化情况及抢救过程","书写医师"
+                );
+                XszyyCommonAnalysisUtil.html2StructureMapNoColon(titles, htmlContent, map);
+                if(XszyyCommonAnalysisUtil.extractDate(htmlContent)!=null){
+                    map.put("病历日期",XszyyCommonAnalysisUtil.extractDate(htmlContent));
+                }
+                map.put("标题",recTitle);
+            }
             XszyyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {
             log.error(e.getMessage(), e);
@@ -36,21 +50,4 @@ public class BeiLunRescueHtmlAnalysis implements BeiLunHtmlAnalysis {
         return map;
     }
 
-    private void analysisGeneral(String recTitle,Element bigDivElement, Map<String, String> map) {
-        if (bigDivElement.childNodeSize() == 1) {
-            bigDivElement = bigDivElement.child(0);
-        }
-        if (bigDivElement.selectFirst("hr") != null) {
-            bigDivElement.selectFirst("hr").previousElementSiblings().remove();
-        }
-        String text = XszyyHtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
-        CommonAnalysisUtil.extractWardInfo(recTitle,text, map);
-        String bqjlText = "病情记录" + map.get("病情记录");
-        List<String> titles = Lists.newArrayList(
-                "病情记录"
-        );
-        titles = CommonAnalysisUtil.sortTitlesNoColon(titles, bqjlText);
-        CommonAnalysisUtil.cutByTitlesNoColon(bqjlText, titles, 0, map);
-    }
-
 }

+ 37 - 8
trans/src/main/java/com/lantone/qc/trans/xszyy/util/comsis/XszyyCommonAnalysisUtil.java

@@ -272,7 +272,7 @@ public class XszyyCommonAnalysisUtil {
     }
 
     /**
-     * 抽取文本中的第一个时间(余杭三院)
+     * 抽取文本中的第一个时间(萧山中医院)
      *
      * @param top
      * @return
@@ -673,13 +673,7 @@ public class XszyyCommonAnalysisUtil {
                 sb.append(text).append(" ");
             }
             String content = sb.toString();
-            if (content.contains("<img")) {
-                String[] contentDoctor = content.split("<img");
-                structureMap.put("病情记录", contentDoctor[0]);
-                structureMap.put("记录医生", "<img" + contentDoctor[1]);
-            } else {
-                structureMap.put("病情记录", content);
-            }
+            structureMap.put("病情记录", content);
             if (structureMap.containsKey("病情记录")) {
                 String info = structureMap.get("病情记录");
                 if (info.contains("记录医师")) {
@@ -692,4 +686,39 @@ public class XszyyCommonAnalysisUtil {
             }
         }
     }
+
+    /**
+     * 萧山中医院抽取自定义病程录信息(一般)
+     *
+     * @param htmlText
+     * @param structureMap
+     */
+    public static void xszyyCommonlyExtractWardInfo(String recTitle, String htmlText, Map<String, String> structureMap) {
+        if (StringUtil.isNotBlank(htmlText)) {
+            htmlText = htmlText.replaceAll("[   \n]", " ").replace("第1页", "")
+                    .replace("\n", " ");
+            String date = extractDate(htmlText);
+            if (date != null) {
+                structureMap.put("病历日期", date);
+                htmlText = htmlText.replace(date, "").trim();
+            }
+            List<String> titleContent = Lists.newArrayList(htmlText.split(" "));
+            String title = titleContent.get(0);
+            if (StringUtil.isNotBlank(title) && title.equals(recTitle)) {
+                structureMap.put("病历标题", title);
+                titleContent.remove(0);
+            } else {
+                structureMap.put("病历标题", recTitle);
+                if (title.contains(recTitle)) {
+                    titleContent.set(0, title.substring(title.indexOf(recTitle) + recTitle.length()));
+                }
+            }
+            StringBuffer sb = new StringBuffer();
+            for (String text : titleContent) {
+                sb.append(text).append(" ");
+            }
+            String content = sb.toString();
+            structureMap.put("病情记录", content);
+        }
+    }
 }