Bläddra i källkod

Merge remote-tracking branch 'origin/hb/beilun' into hb/beilun

chengyao 3 år sedan
förälder
incheckning
8de97da0d4
23 ändrade filer med 310 tillägg och 103 borttagningar
  1. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH03176.java
  2. 6 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstcourserecord/FIRC0093.java
  3. 35 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstcourserecord/FIRC03198.java
  4. 171 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/threelevelward/THR0125.java
  5. 8 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/threelevelward/THR0126.java
  6. 36 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/threelevelward/THR03199.java
  7. 9 13
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0125.java
  8. 9 13
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0126.java
  9. 4 6
      trans/src/main/java/com/lantone/qc/trans/changshaxy/FirstCourseRecordDocTrans.java
  10. 1 1
      trans/src/main/java/com/lantone/qc/trans/changshaxy/OperationDocTrans.java
  11. 3 3
      trans/src/main/java/com/lantone/qc/trans/changshaxy/ThreeLevelWardDocTrans.java
  12. 1 1
      trans/src/main/java/com/lantone/qc/trans/changshaxy/util/InformedHtmlAnalysis.java
  13. 5 7
      trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyBeHospitalizedHtmlAnalysis.java
  14. 1 1
      trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyClinicBloodEffectHtmlAnalysis.java
  15. 1 1
      trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyDutyShiftSystemHtmlAnalysis.java
  16. 11 43
      trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyLeaveHospitalHtmlAnalysis.java
  17. 1 1
      trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyOperationHtmlAnalysis.java
  18. 2 3
      trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyOperationRecordHtmlAnalysis.java
  19. 1 1
      trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyPreoperativeHtmlAnalysis.java
  20. 1 1
      trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyRescueHtmlAnalysis.java
  21. 1 1
      trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyStagesSummaryHtmlAnalysis.java
  22. 1 1
      trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyTransferIntoHtmlAnalysis.java
  23. 1 1
      trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyTransferOutHtmlAnalysis.java

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH03176.java

@@ -23,7 +23,7 @@ import java.util.List;
 @Component
 public class BEH03176 extends QCCatalogue {
 
-    private List<String> containList = Arrays.asList("心血管");
+    private List<String> containList = Arrays.asList("心血管", "心力衰竭", "心衰", "心律失常", "冠心病", "心绞痛", "心肌梗死", "高血压", "心肌病", "心肌炎", "心脏病", "高血脂", "高血糖", "糖尿病", "遗传");
 
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
 

+ 6 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstcourserecord/FIRC0093.java

@@ -43,9 +43,13 @@ public class FIRC0093 extends QCCatalogue {
                     if (date_in == null || date_out == null) {
                         return;
                     }
+                    if (StringUtil.isBlank(courseRecordDocStructureMap.get("诊断依据")) && StringUtil.isBlank(courseRecordDocStructureMap.get("鉴别诊断")) &&
+                            StringUtil.isBlank(courseRecordDocStructureMap.get("初步诊断")) && StringUtil.isBlank(courseRecordDocStructureMap.get("病例分型"))) {
+                        return;
+                    }
                     boolean firc = CatalogueUtil.compareTime(date_in, date_out, 8 * 60L);
                     if (firc) {
-                        info.set("("+admisTime+"-"+couDate+")");
+                        info.set("(" + admisTime + "-" + couDate + ")");
                         status.set("-1");
                     }
                 }
@@ -60,7 +64,7 @@ public class FIRC0093 extends QCCatalogue {
                     }
                     boolean firc = CatalogueUtil.compareTime(date_in, date_out, 8 * 60L);
                     if (firc) {
-                        info.set("("+admisTime+"-"+date_out.toString()+")");
+                        info.set("(" + admisTime + "-" + date_out.toString() + ")");
                         status.set("-1");
                     }
                 }

+ 35 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstcourserecord/FIRC03198.java

@@ -0,0 +1,35 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.firstcourserecord;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRC03198
+ * @Description :  首次病程未完整书写(湘雅三院)
+ * @Author : 楼辉荣
+ * @Date: 2022-03-06 17:28
+ */
+@Component
+public class FIRC03198 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
+        status.set("0");
+        FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
+        if (firstCourseRecordDoc != null) {
+            Map<String, String> courseRecordDocStructureMap = firstCourseRecordDoc.getStructureMap();
+            if (courseRecordDocStructureMap != null) {
+                if (StringUtil.isBlank(courseRecordDocStructureMap.get("诊断依据")) && StringUtil.isBlank(courseRecordDocStructureMap.get("鉴别诊断")) &&
+                        StringUtil.isBlank(courseRecordDocStructureMap.get("初步诊断")) && StringUtil.isBlank(courseRecordDocStructureMap.get("病例分型"))) {
+                    status.set("-1");
+                    return;
+                }
+            }
+        }
+    }
+}

+ 171 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/threelevelward/THR0125.java

@@ -0,0 +1,171 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.threelevelward;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.MedicalRecordInfoDoc;
+import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
+import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
+import com.lantone.qc.pub.util.DateUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @ClassName : THR0125
+ * @Description : 副主任医师/主任医师查房首次查房记录未在患者入院72h内完成
+ * @Author : 胡敬
+ * @Date: 2020-03-19 13:51
+ */
+@Component
+public class THR0125 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        MedicalRecordInfoDoc medicalRecordInfoDoc = inputInfo.getMedicalRecordInfoDoc();
+        if (medicalRecordInfoDoc != null && medicalRecordInfoDoc.getStructureMap() != null) {
+            //入院日期
+            String admisTime = medicalRecordInfoDoc.getStructureMap().get("behospitalDate");
+            //出院日期
+            String dischargeTime = medicalRecordInfoDoc.getStructureMap().get("leaveHospitalDate");
+            if (CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)) {
+                status.set("0");
+                return;
+            }
+            if (!CatalogueUtil.compareTime(
+                    StringUtil.parseDateTime(admisTime),
+                    StringUtil.parseDateTime(DateUtil.nowString()),
+                    Long.valueOf(72 * 60))) {//如果入院未超过72小时,规则不判断
+                status.set("0");
+                return;
+            }
+            //如果住院天数小于3天则不判断该条规则
+            if (DateUtil.parseDate(dischargeTime) != null &&
+                    !CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (72 * 60))) {
+                status.set("0");
+                return;
+            } else {
+                if (inputInfo.getThreeLevelWardDocs().size() == 0) {
+                    return;
+                }
+            }
+//        }
+//
+//        if (inputInfo.getBeHospitalizedDoc() != null) {
+//            Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+//            String admisTime = beHospitalStructureMap.get("入院日期");
+            if (CatalogueUtil.isEmpty(admisTime)) {
+                status.set("0");
+                return;
+            }
+            if (!CatalogueUtil.compareTime(
+                    StringUtil.parseDateTime(admisTime),
+                    StringUtil.parseDateTime(DateUtil.nowString()),
+                    Long.valueOf(72 * 60))) {//如果入院未超过72小时,规则不判断
+                status.set("0");
+                return;
+            }
+            //开始时间(入院时间)
+            Date beginDate = StringUtil.parseDateTime(admisTime);
+            if (beginDate == null) {
+                status.set("0");
+                return;
+            }
+            ThreeLevelWardDoc threeLevelWardDoc = inputInfo.getThreeLevelWardDocs().get(0);
+            List<DirectorDoctorWardDoc> directorDoctorWardDocs = threeLevelWardDoc.getDirectorDoctorWardDocs();
+            if (directorDoctorWardDocs.size() > 0) {
+                DirectorDoctorWardDoc firstDirector = directorDoctorWardDocs.get(0);
+                String wardDateStr = firstDirector.getStructureMap().get("查房日期");
+                String illnessRecords = firstDirector.getStructureMap().get("病情记录");
+                if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(wardDateStr), 72 * 60L)) {
+                    if (StringUtil.isNotBlank(illnessRecords)) {
+                        status.set("0");
+                        return;
+                    } else {
+                        info.set("病情未记录内容");
+                        return;
+                    }
+
+                }
+            } else if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), new Date(), 72 * 60L)) {
+                status.set("0");//没有主任医师查房,若入院时间和系统当前时间对比,相差72小时则报错
+                return;
+            }
+
+            /* 如果存在手术记录,判断主刀医生是否为主治医生 */
+//            String operatorName = "";
+//            List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+//            if (operationDocs != null) {
+//                for (OperationDoc operationDoc : operationDocs) {
+//                    if (operationDoc.getOperationRecordDoc() != null) {
+//                        Map<String, String> operationDocStructureMap = operationDoc.getOperationRecordDoc().getStructureMap();
+//                        if (StringUtil.isBlank(operatorName)) {
+//                            operatorName = operationDocStructureMap.get("主刀医师");
+//                            if (StringUtil.isBlank(operatorName) && StringUtil.isNotBlank(operationDocStructureMap.get("手术者及助手名称"))) {
+//                                operatorName = operationDocStructureMap.get("手术者及助手名称").split("、")[0];
+//                                if (operatorName.contains("主刀:") && operatorName.split(":").length > 1) {
+//                                    operatorName = operatorName.split(":")[1];
+//                                }
+//                            }
+//                        }
+//                    }
+//                }
+//
+//                List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDoc.getAllDoctorWradDocs();
+//                for (ThreeLevelWardDoc threeLevelWard : allDoctorWradDocs) {
+//                    Map<String, String> structureMap = threeLevelWard.getStructureMap();
+//                    String wardDateStr = structureMap.get("查房日期");
+//                    if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(wardDateStr), 72 * 60L)) {
+//                        String makeTitle = structureMap.get("查房标题");
+//                        String pathography = structureMap.get("病情记录");
+//                        //判断标题
+//                        visitingPhysicianHouse(operatorName, makeTitle);
+//                        //判断病情记录
+//                        visitingPhysicianHouse(operatorName, pathography);
+//                    }
+//                }
+//            }
+//        }
+        }
+    }
+
+//    /**
+//     * 判断查房记录是否含有主任医师查房
+//     *
+//     * @param operatorName     主刀医师
+//     * @param titlePathography 查房标题或病情记录
+//     */
+//    private void visitingPhysicianHouse(String operatorName, String titlePathography) {
+//        if (StringUtil.isNotBlank(titlePathography)) {
+//            if (titlePathography.contains("主任")) {
+//                status.set("0");
+//                return;
+//            } else if (StringUtil.isNotBlank(operatorName) && (titlePathography.contains(operatorName) || titlePathography.contains("主刀"))) {
+//                String operationProfessor = getCourseProfessor(operatorName);
+//                if (operationProfessor.contains("主任")) {
+//                    status.set("0");
+//                    return;
+//                }
+//            }
+//        }
+//    }
+
+//    private String getCourseProfessor(String operatorName) {
+//        String professor = "";
+//        if (StringUtil.isBlank(operatorName)) {
+//            return professor;
+//        }
+//        SpecialStorageUtil specialStorageUtil = SpringContextUtil.getBean("specialStorageUtil");
+//        Map<String, Object> surgeon = specialStorageUtil.getJsonStringValue(KernelConstants.HOSPITAL_DOCTOR_MAP);
+//        if (surgeon != null) {
+//            Map<String, String> doctor = (Map) surgeon.get(operatorName);
+//            if (doctor != null) {
+//                professor = doctor.get("professor");
+//            }
+//
+//        }
+//        return professor;
+//    }
+}

+ 8 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/threelevelward/THR0126.java

@@ -98,9 +98,15 @@ public class THR0126 extends QCCatalogue {
             if (attendingDoctorWardDocs.size() > 0) {
                 AttendingDoctorWardDoc firstAttending = attendingDoctorWardDocs.get(0);
                 String wardDateStr = firstAttending.getStructureMap().get("查房日期");
+                String illnessRecords = firstAttending.getStructureMap().get("病情记录");
                 if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(wardDateStr), 48 * 60L)) {
-                    status.set("0");
-                    return;
+                    if (StringUtil.isNotBlank(illnessRecords)) {
+                        status.set("0");
+                        return;
+                    } else {
+                        info.set("病情未记录内容");
+                        return;
+                    }
                 }
             } else {
                 status.set("0");//湘雅整份病例无主治查房不提示错误

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/threelevelward/THR03199.java

@@ -0,0 +1,36 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.threelevelward;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : THR03199
+ * @Description : 查房中存在未书写病情(湘雅三院)
+ * @Author : 胡敬
+ * @Date: 2022-03-04 13:51
+ */
+@Component
+public class THR03199 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        ThreeLevelWardDoc threeLevelWardDoc = inputInfo.getThreeLevelWardDocs().get(0);
+        List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDoc.getAllDoctorWradDocs();
+        for (ThreeLevelWardDoc threeLevelWard : allDoctorWradDocs) {
+            Map<String, String> structureMap = threeLevelWard.getStructureMap();
+            String wardDateStr = structureMap.get("查房日期");
+            String illnessRecords = structureMap.get("病情记录");
+            if (StringUtil.isBlank(illnessRecords)) {
+                info.set(wardDateStr);
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 9 - 13
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0125.java

@@ -30,7 +30,7 @@ public class THR0125 extends QCCatalogue {
             String admisTime = medicalRecordInfoDoc.getStructureMap().get("behospitalDate");
             //出院日期
             String dischargeTime = medicalRecordInfoDoc.getStructureMap().get("leaveHospitalDate");
-            if (CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)) {
+            if (CatalogueUtil.isEmpty(admisTime)) {
                 status.set("0");
                 return;
             }
@@ -42,7 +42,7 @@ public class THR0125 extends QCCatalogue {
                 return;
             }
             //如果住院天数小于3天则不判断该条规则
-            if (DateUtil.parseDate(dischargeTime) != null &&
+            if (StringUtil.isNotBlank(dischargeTime) && DateUtil.parseDate(dischargeTime) != null &&
                     !CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (72 * 60))) {
                 status.set("0");
                 return;
@@ -56,17 +56,13 @@ public class THR0125 extends QCCatalogue {
 //        if (inputInfo.getBeHospitalizedDoc() != null) {
 //            Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
 //            String admisTime = beHospitalStructureMap.get("入院日期");
-            if (CatalogueUtil.isEmpty(admisTime)) {
-                status.set("0");
-                return;
-            }
-            if (!CatalogueUtil.compareTime(
-                    StringUtil.parseDateTime(admisTime),
-                    StringUtil.parseDateTime(DateUtil.nowString()),
-                    Long.valueOf(72 * 60))) {//如果入院未超过72小时,规则不判断
-                status.set("0");
-                return;
-            }
+//            if (!CatalogueUtil.compareTime(
+//                    StringUtil.parseDateTime(admisTime),
+//                    StringUtil.parseDateTime(DateUtil.nowString()),
+//                    Long.valueOf(72 * 60))) {//如果入院未超过72小时,规则不判断
+//                status.set("0");
+//                return;
+//            }
             //开始时间(入院时间)
             Date beginDate = StringUtil.parseDateTime(admisTime);
             if (beginDate == null) {

+ 9 - 13
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0126.java

@@ -35,7 +35,7 @@ public class THR0126 extends QCCatalogue {
             String admisTime = medicalRecordInfoDoc.getStructureMap().get("behospitalDate");
             //出院日期
             String dischargeTime = medicalRecordInfoDoc.getStructureMap().get("leaveHospitalDate");
-            if (CatalogueUtil.isEmpty(admisTime) || CatalogueUtil.isEmpty(dischargeTime)) {
+            if (CatalogueUtil.isEmpty(admisTime)) {
                 status.set("0");
                 return;
             }
@@ -47,7 +47,7 @@ public class THR0126 extends QCCatalogue {
                 return;
             }
             //如果住院天数小于2天则不判断该条规则
-            if (DateUtil.parseDate(dischargeTime) != null && StringUtil.isNotEmpty(dischargeTime) &&
+            if (StringUtil.isNotBlank(dischargeTime) && DateUtil.parseDate(dischargeTime) != null && StringUtil.isNotEmpty(dischargeTime) &&
                     !CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (48 * 60))) {
                 status.set("0");
                 return;
@@ -61,17 +61,13 @@ public class THR0126 extends QCCatalogue {
 //        if (inputInfo.getBeHospitalizedDoc() != null) {
 //            Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
 //            String admisTime = beHospitalStructureMap.get("入院日期");
-            if (CatalogueUtil.isEmpty(admisTime)) {
-                status.set("0");
-                return;
-            }
-            if (!CatalogueUtil.compareTime(
-                    StringUtil.parseDateTime(admisTime),
-                    StringUtil.parseDateTime(DateUtil.nowString()),
-                    Long.valueOf(48 * 60))) {//如果入院未超过48小时,规则不判断
-                status.set("0");
-                return;
-            }
+//            if (!CatalogueUtil.compareTime(
+//                    StringUtil.parseDateTime(admisTime),
+//                    StringUtil.parseDateTime(DateUtil.nowString()),
+//                    Long.valueOf(48 * 60))) {//如果入院未超过48小时,规则不判断
+//                status.set("0");
+//                return;
+//            }
             //开始时间(入院时间)
             Date beginDate = StringUtil.parseDateTime(admisTime);
             if (beginDate == null) {

+ 4 - 6
trans/src/main/java/com/lantone/qc/trans/changshaxy/FirstCourseRecordDocTrans.java

@@ -74,12 +74,10 @@ public class FirstCourseRecordDocTrans extends ModelDocTrans {
                     }
                 }
             }
-
-
-            if (StringUtil.isBlank(structureMap.get("诊断依据")) && StringUtil.isBlank(structureMap.get("鉴别诊断")) &&
-                    StringUtil.isBlank(structureMap.get("初步诊断")) && StringUtil.isBlank(structureMap.get("病例分型"))) {
-                return firstCourseRecordDoc;
-            }
+//            if (StringUtil.isBlank(structureMap.get("诊断依据")) && StringUtil.isBlank(structureMap.get("鉴别诊断")) &&
+//                    StringUtil.isBlank(structureMap.get("初步诊断")) && StringUtil.isBlank(structureMap.get("病例分型"))) {
+//                return firstCourseRecordDoc;
+//            }
 
             if (StringUtil.isNotBlank(structureMap.get("医生签名"))) {
                 structureMap.put("医生签名", structureMap.get("医生签名").replaceAll("医生签名", ""));

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

@@ -119,7 +119,7 @@ public class OperationDocTrans extends ModelDocTrans {
             }
             if (MapUtils.isNotEmpty(structureMap)) {
                 operationDiscussionDoc = ModelDocGenerate.operationDiscussionDocGen(structureMap);
-                String text = XyHtmlAnalysisUtil.blockDivToStr(Jsoup.parse(content).selectFirst("body"), true);
+                String text = XyHtmlAnalysisUtil.blockDivToStr(Jsoup.parse(content).selectFirst("body").child(0), true);
                 operationDiscussionDoc.setText(text);
                 operationDiscussionDoc.setPageData((Map) structureMap);
                 return operationDiscussionDoc;

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

@@ -77,9 +77,9 @@ public class ThreeLevelWardDocTrans extends ModelDocTrans {
             return;
         }
 
-        if (StringUtil.isBlank(structureMap.get("病情记录"))) {
-            return;
-        }
+//        if (StringUtil.isBlank(structureMap.get("病情记录"))) {
+//            return;
+//        }
 
         if (structureMap.containsKey("病情记录")) {
             if (structureMap.get("病情记录").contains("医师查房记录     内容:补充病史,补充体查,考虑诊断及依据,鉴别诊断,分析及处理,病情告知情况等。    ")) {

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

@@ -44,7 +44,7 @@ public class InformedHtmlAnalysis implements XyHtmlAnalysis {
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
-            String htmlContent = XyHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body"), false);
+            String htmlContent = XyHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0), false);
             if (StringUtil.isNotBlank(recTitle) && recTitle.contains("知情选择授权书")) {
                 structureMap.put("标题", recTitle);
                 return structureMap;

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

@@ -33,15 +33,13 @@ public class XyBeHospitalizedHtmlAnalysis implements XyHtmlAnalysis {
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html.replace("<b>", "").replace("</b>", ""));
 
-            if (recTitle.contains("24")||recTitle.contains("日间")) {
+            if (recTitle.contains("24")) {
                 analysis24h(doc, map);
-            }else {
+            } else if (recTitle.contains("日间病历")) {
+                analysisDay(doc, map);
+            } else {
                 analysisGeneral(doc, recTitle, map);
             }
-//            else if (recTitle.contains("日间病历")) {
-//                analysisDay(doc, map);
-//            }
-
             XyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {
             log.error(e.getMessage(), e);
@@ -125,7 +123,7 @@ public class XyBeHospitalizedHtmlAnalysis implements XyHtmlAnalysis {
 
     //24小时出入院记录、24小时出入院记录(全院)、24小时入出院记录(全院通用)、24小时内入院死亡记录(全院通用)
     private void analysis24h(Document doc, Map<String, String> map) {
-        String text = XyHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body"), false).replace("&nbsp"," ");
+        String text = XyHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0), false).replace("&nbsp"," ");
 //        text = text.substring(text.lastIndexOf("24小时入出院记录姓    名")).replaceFirst("第1页", "");
         List<String> titles = Lists.newArrayList("姓名", "出生地", "性别", "民族", "年龄", "职业", "婚姻",
                 "病史陈述者", "住址", "入院方式", "入院日期", "出院日期", "主诉", "入院情况","现病史", "既往史", "个人史", "婚育史", "月经史",

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

@@ -29,7 +29,7 @@ public class XyClinicBloodEffectHtmlAnalysis implements XyHtmlAnalysis {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body");
+            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
             analysisGeneral(recTitle,bigDivElement, map);
             if (map.containsKey("病情记录")) {
                 String content = map.get("病情记录");

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

@@ -27,7 +27,7 @@ public class XyDutyShiftSystemHtmlAnalysis implements XyHtmlAnalysis {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body");
+            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
             analysisGeneral(recTitle,bigDivElement, map);
             XyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {

+ 11 - 43
trans/src/main/java/com/lantone/qc/trans/changshaxy/util/XyLeaveHospitalHtmlAnalysis.java

@@ -28,14 +28,13 @@ public class XyLeaveHospitalHtmlAnalysis 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 = doc.text();
+            String htmlContent = XyHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body"), true).replace("&nbsp", ":");
             htmlContent = htmlContent.replace(" ", "")
                     .replace("&nbsp", " ")
                     .replace("8220", "“")
@@ -59,56 +58,25 @@ public class XyLeaveHospitalHtmlAnalysis implements XyHtmlAnalysis {
                     .replace("出院医嘱", "出院医嘱:");
 
             if (StringUtil.isNotBlank(htmlContent)) {
-//                titles = CommonAnalysisUtil.sortTitles(titles, htmlContent);
                 List<String> sortTitles = XyCommonAnalysisUtil.sortTitles(titles, htmlContent);
-                XyCommonAnalysisUtil.cutByTitles(htmlContent, titles, 0, structureMap);
-            }
-           if (StringUtils.isNotEmpty(structureMap.get("入院日期"))){
-               structureMap.put("入院日期",structureMap.get("入院日期").replace(","," ").replace(","," "));
-           }
-            if (StringUtils.isNotEmpty(structureMap.get("出院日期"))){
-                structureMap.put("出院日期",structureMap.get("出院日期").replace(","," ").replace(","," "));
+                XyCommonAnalysisUtil.cutByTitles(htmlContent, sortTitles, 0, structureMap);
             }
-            //处理主诉和入院诊断被切割到住院天数的情况情况
-            if (StringUtils.isNotEmpty(structureMap.get("住院天数"))) {
-                String diagString = structureMap.get("住院天数");
-                    if(diagString.contains("入院诊断")) {
-                        structureMap.put("住院天数", diagString.substring(0, diagString.indexOf("入院诊断")));
-                        if ((diagString.indexOf("入院诊断")+4) < diagString.length()) {
-                            structureMap.put("入院诊断", diagString.substring(diagString.lastIndexOf("入院诊断") + 4, diagString.length()));
-                        }else {
-                            structureMap.put("入院诊断", diagString.substring(diagString.lastIndexOf("入院诊断"), diagString.length()));
-                        }
-                    }
+            if (StringUtils.isNotEmpty(structureMap.get("入院日期"))) {
+                String dateString = structureMap.get("入院日期");
+                if (dateString.contains("出院日期")) {
+                    Integer index = dateString.indexOf("出院日期");
+                    structureMap.put("入院日期", dateString.substring(0, index));
+                    structureMap.put("出院日期", dateString.substring(index, dateString.length()));
+                }
             }
-            //处理主诉被切割到入院诊断的情况
             if (StringUtils.isNotEmpty(structureMap.get("入院诊断"))) {
                 String diagString = structureMap.get("入院诊断");
                 if (diagString.contains("。")) {
                     Integer index = diagString.indexOf("。");
                     structureMap.put("入院诊断", diagString.substring(0, index));
-                    if(diagString.contains("因") && diagString.contains("入院")) {
-                        if(diagString.indexOf("入院")>(diagString.lastIndexOf("因") + 1)) {
-                            structureMap.put("主诉", diagString.substring(diagString.lastIndexOf("因") + 1, diagString.indexOf("入院")));
-                        }
-                    }
-                    structureMap.put("基本信息",diagString.substring(index, diagString.length()));
+                    structureMap.put("基本信息", diagString.substring(index, diagString.length()));
                 }
             }
-            //解决出院诊断中包含出院医嘱的情况
-            if (StringUtils.isNotEmpty(structureMap.get("出院诊断"))&&structureMap.get("出院诊断").contains("出院医嘱")){
-                String[] strings=structureMap.get("出院诊断").split("出院医嘱");
-                structureMap.put("出院诊断",strings[0]);
-                structureMap.put("出院医嘱",strings[1]);
-            }
-            //解决出院时情况包含出院诊断的情况
-            if (StringUtils.isNotEmpty(structureMap.get("出院时情况"))&&structureMap.get("出院时情况").contains("出院诊断")){
-                String[] strings=structureMap.get("出院时情况").split("出院诊断");
-                structureMap.put("出院时情况",strings[0]);
-                structureMap.put("出院诊断",strings[1]);
-            }
-
-
             XyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         } catch (Exception e) {
             log.error(e.getMessage(), e);

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

@@ -28,7 +28,7 @@ public class XyOperationHtmlAnalysis implements XyHtmlAnalysis {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body");
+            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
             analysisGeneral(recTitle, bigDivElement, map);
             XyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {

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

@@ -2,7 +2,6 @@ package com.lantone.qc.trans.changshaxy.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.changshaxy.util.comsis.XyCommonAnalysisUtil;
 import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -29,7 +28,7 @@ public class XyOperationRecordHtmlAnalysis implements XyHtmlAnalysis {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("html");
+            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
             analysisGeneral(bigDivElement, map);
             XyHtmlAnalysisUtil.mapValueRemoveStartColon(map);
             CommonAnalysisUtil.makeEmpty(map, "医生签名");
@@ -41,7 +40,7 @@ public class XyOperationRecordHtmlAnalysis implements XyHtmlAnalysis {
     }
 
     private void analysisGeneral(Element bigDivElement, Map<String, String> map) {
-            String text = XyHtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
+        String text = XyHtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
         text = text.replaceAll("第1页", "")
                 .replace("(包括体位、切口处理经过,病灶所见及手术步骤等):", "")
                 .replace("&nbsp", "")

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

@@ -29,7 +29,7 @@ public class XyPreoperativeHtmlAnalysis implements XyHtmlAnalysis {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body");
+            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
             analysisGeneral(recTitle, bigDivElement, map);
 
             XyHtmlAnalysisUtil.mapValueRemoveStartColon(map);

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

@@ -28,7 +28,7 @@ public class XyRescueHtmlAnalysis implements XyHtmlAnalysis {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body");
+            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
             analysisGeneral(recTitle,bigDivElement, map);
             XyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {

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

@@ -28,7 +28,7 @@ public class XyStagesSummaryHtmlAnalysis implements XyHtmlAnalysis {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body");
+            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
             analysisGeneral(recTitle, bigDivElement, map);
             XyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {

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

@@ -28,7 +28,7 @@ public class XyTransferIntoHtmlAnalysis implements XyHtmlAnalysis {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body");
+            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
             analysisGeneral(recTitle, bigDivElement, map);
             XyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {

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

@@ -28,7 +28,7 @@ public class XyTransferOutHtmlAnalysis implements XyHtmlAnalysis {
             String html = args[0];
             String recTitle = args[1];
             String recTypeId = args[2];
-            Element bigDivElement = Jsoup.parse(html).selectFirst("body");
+            Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
             analysisGeneral(recTitle, bigDivElement, map);
             XyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {