浏览代码

宁海一院修改规则合并

wangsy 4 年之前
父节点
当前提交
ec7d11e783
共有 38 个文件被更改,包括 574 次插入54 次删除
  1. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0007.java
  2. 3 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0378.java
  3. 7 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02905.java
  4. 44 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/behospitalized/BEH0008.java
  5. 78 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/behospitalized/BEH0372.java
  6. 88 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/leavehospital/LEA0149.java
  7. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/operationdiscussion/OPE0369.java
  8. 15 7
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/threelevelward/THR02900.java
  9. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03126.java
  10. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03127.java
  11. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03128.java
  12. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03129.java
  13. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03130.java
  14. 46 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03131.java
  15. 63 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03132.java
  16. 1 0
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/NingHaiYiYiFirstCourseRecordDocTrans.java
  17. 4 0
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/NingHaiYiYiOperationDocTrans.java
  18. 2 2
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiBeHospitalizedHtmlAnalysis.java
  19. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiClinicBloodEffectHtmlAnalysis.java
  20. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiClinicalBloodHtmlAnalysis.java
  21. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiConsultationHtmlAnalysis.java
  22. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiConsultationRecordHtmlAnalysis.java
  23. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiCrisisValueReportHtmlAnalysis.java
  24. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiCriticallyIllNoticeHtmlAnalysis.java
  25. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDeathCaseDiscussHtmlAnalysis.java
  26. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDeathRecordHtmlAnalysis.java
  27. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDifficultCaseDiscussHtmlAnalysis.java
  28. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDutyShiftSystemHtmlAnalysis.java
  29. 3 3
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiFirstCourseRecordHtmlAnalysis.java
  30. 28 20
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiLeaveHospitalHtmlAnalysis.java
  31. 2 2
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiOperationHtmlAnalysis.java
  32. 2 2
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiOperationRecordHtmlAnalysis.java
  33. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiPreoperativeHtmlAnalysis.java
  34. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiRescueHtmlAnalysis.java
  35. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiStagesSummaryHtmlAnalysis.java
  36. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiThreeLevelWardHtmlAnalysis.java
  37. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiTransferIntoHtmlAnalysis.java
  38. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiTransferOutHtmlAnalysis.java

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

@@ -41,7 +41,7 @@ public class BEH0007 extends QCCatalogue {
             status.set("0");
             status.set("0");
         } else {
         } else {
             List<Clinical> clinicals = chiefLabel.getClinicals();
             List<Clinical> clinicals = chiefLabel.getClinicals();
-            if (clinicals.size() > 0) {
+            if (clinicals != null && clinicals.size() > 0) {
                 Clinical clinical = clinicals.get(0);
                 Clinical clinical = clinicals.get(0);
                 List<PD> timestamp = clinical.getTimestamp();
                 List<PD> timestamp = clinical.getTimestamp();
                 if (timestamp.size() > 0) {
                 if (timestamp.size() > 0) {

+ 3 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0378.java

@@ -48,6 +48,9 @@ public class BEH0378 extends QCCatalogue {
         }
         }
         if (maritalLabel != null && maritalLabel.getFamily() != null) {
         if (maritalLabel != null && maritalLabel.getFamily() != null) {
             familiesMl = maritalLabel.getFamily();
             familiesMl = maritalLabel.getFamily();
+            if (familiesMl == null) {
+                return;
+            }
             for (Family family : familiesMl) {
             for (Family family : familiesMl) {
                 if (family.getDead() != null && family.getName() != null) {
                 if (family.getDead() != null && family.getName() != null) {
                     String maritalText = maritalLabel.getText();
                     String maritalText = maritalLabel.getText();

+ 7 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02905.java

@@ -5,6 +5,7 @@ import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.Content;
 import com.lantone.qc.pub.Content;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import java.util.Map;
 import java.util.Map;
@@ -24,7 +25,13 @@ public class FIRP02905 extends QCCatalogue {
         }
         }
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String outWay = firstpageStructureMap.get(Content.outWay);
             String name = firstpageStructureMap.get(Content.receivingOrganization);
             String name = firstpageStructureMap.get(Content.receivingOrganization);
+            //医嘱离院不需要接受机构(宁海一院)
+            if (StringUtil.isNotBlank(outWay) && "医嘱离院".equals(outWay)) {
+                status.set("0");
+                return;
+            }
             if (!CatalogueUtil.isEmpty(name)) {
             if (!CatalogueUtil.isEmpty(name)) {
                 status.set("0");
                 status.set("0");
             }
             }

+ 44 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/behospitalized/BEH0008.java

@@ -0,0 +1,44 @@
+package com.lantone.qc.kernel.catalogue.hospital.ninghaiyiyi.behospitalized;
+
+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.entity.Clinical;
+import com.lantone.qc.pub.model.label.ChiefLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+
+/**
+ * @ClassName : BEH0008
+ * @Description :主诉症状超过3个
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0008 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            return;
+        }
+        ChiefLabel chiefLabel = inputInfo.getBeHospitalizedDoc().getChiefLabel();
+        if (chiefLabel == null) {
+            return;
+        }
+        String chiefText = chiefLabel.getText();
+        if (StringUtil.isBlank(chiefText)) {
+            return;
+        }
+        List<Clinical> clinicals = chiefLabel.getClinicals();
+        if (clinicals == null) {
+            return;
+        }
+        if (clinicals.size() > 3) {
+            status.set("-1");
+        }
+
+    }
+}

+ 78 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/behospitalized/BEH0372.java

@@ -0,0 +1,78 @@
+package com.lantone.qc.kernel.catalogue.hospital.ninghaiyiyi.behospitalized;
+
+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.entity.MaritalStatus;
+import com.lantone.qc.pub.model.label.MaritalLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description: 婚姻状况前后不一致
+ * @author: rengb
+ * @time: 2020/3/10 14:02
+ */
+@Component
+public class BEH0372 extends QCCatalogue {
+
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            return;
+        }
+
+        String basicInfoStatus = inputInfo.getBeHospitalizedDoc().getStructureMap().get("婚育史");
+        String bhbasicInfoStatus = inputInfo.getBeHospitalizedDoc().getStructureMap().get("婚姻状况");
+        if (StringUtil.isBlank(bhbasicInfoStatus)) {
+            bhbasicInfoStatus = inputInfo.getBeHospitalizedDoc().getStructureMap().get("婚姻");
+        }
+        if (StringUtil.isBlank(basicInfoStatus) || StringUtil.isBlank(bhbasicInfoStatus)) {
+            return;
+        }
+
+        if (bhbasicInfoStatus.equals("未婚") && basicInfoStatus.contains("结婚")) {
+            status.set("-1");
+            return;
+        }
+
+        if (bhbasicInfoStatus.equals("未婚") && basicInfoStatus.contains("未婚")) {
+            return;
+        }
+
+        if (StringUtil.isNotBlank(bhbasicInfoStatus) && basicInfoStatus.equals("其他")) {
+            return;
+        }
+
+        if (bhbasicInfoStatus.equals("丧偶") &&
+                (basicInfoStatus.contains("已故") || basicInfoStatus.contains("丧偶") || basicInfoStatus.contains("去世") ||
+                        basicInfoStatus.contains("亡故") || basicInfoStatus.contains("已逝"))) {
+            return;
+        }
+
+        if ((bhbasicInfoStatus.equals("离婚") || bhbasicInfoStatus.equals("离异")) &&
+                (basicInfoStatus.contains("离异") || bhbasicInfoStatus.equals("离婚"))) {
+            return;
+        }
+
+        if (bhbasicInfoStatus.equals("已婚") && (basicInfoStatus.contains("结婚") || basicInfoStatus.contains("再婚") || basicInfoStatus.contains("已婚") || basicInfoStatus.contains("配偶") )) {
+            return;
+        }
+
+        MaritalStatus mts = inputInfo.getBeHospitalizedDoc().getMaritalLabel().getMaritalStatus();
+        if (mts != null && StringUtil.isNotBlank(mts.getName())) {
+            String maritalStatus = mts.getName();
+            if (basicInfoStatus.equals(maritalStatus)) {
+                return;
+            }
+        }
+
+        //无婚育史
+        MaritalLabel maritalLabel = inputInfo.getBeHospitalizedDoc().getMaritalLabel();
+        if (maritalLabel == null || maritalLabel.getText() == null) {
+            return;
+        }
+    }
+
+}

+ 88 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/leavehospital/LEA0149.java

@@ -0,0 +1,88 @@
+package com.lantone.qc.kernel.catalogue.hospital.ninghaiyiyi.leavehospital;
+
+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.BeHospitalizedDoc;
+import com.lantone.qc.pub.model.doc.DeathRecordDoc;
+import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
+import com.lantone.qc.pub.model.label.ChiefLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @Description: 出院记录内容缺主诉
+ * @author: rengb
+ * @time: 2020/3/10 13:53
+ */
+@Component
+public class LEA0149 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
+        if (leaveHospitalDoc == null || beHospitalizedDoc == null) {
+            return;
+        }
+        DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
+        if (deathRecordDoc != null) {
+            return;
+        }
+        Map<String, String> lhStructureMap = leaveHospitalDoc.getStructureMap();
+        ChiefLabel chiefLabel = beHospitalizedDoc.getChiefLabel();
+        if (lhStructureMap != null && chiefLabel != null && StringUtil.isNotBlank(chiefLabel.getText())) {
+            String bhChief = CatalogueUtil.int2ChineseNum(chiefLabel.getText().replaceAll("[\\p{Punct}\\pP。-]", ""));
+            String leaveChief = lhStructureMap.get("主诉");
+            String bhThings = lhStructureMap.get("入院情况");
+            String reThings = lhStructureMap.get("病史摘要");   //宁海一院主诉在病史摘要内
+            if (StringUtil.isNotBlank(bhThings)) {
+                bhThings = CatalogueUtil.int2ChineseNum(bhThings.replaceAll("[\\p{Punct}\\pP。-]", ""));
+                if (bhThings.contains("\n")) {
+                    bhThings = bhThings.replace("\n", "");
+                }
+            }
+            if (StringUtil.isNotBlank(reThings)) {
+                reThings = CatalogueUtil.int2ChineseNum(reThings.replaceAll("[\\p{Punct}\\pP。-]", ""));
+                if (reThings.contains("\n")) {
+                    reThings = reThings.replace("\n", "");
+                }
+            }
+
+            //如果出院小结结构化数据能取出主诉,则直接用该主诉和入院记录主诉比较
+            if (StringUtil.isNotBlank(leaveChief)) {
+                leaveChief = CatalogueUtil.int2ChineseNum(leaveChief.replaceAll("[\\p{Punct}\\pP。-]", ""));
+                if (bhChief.equals(leaveChief)) {
+                    return;
+                }
+            }
+            if (StringUtil.isNotBlank(bhThings) && bhThings.replace(" ", "").contains(bhChief.replace(" ", ""))) {
+                return;
+            }
+            //宁海一院主诉在病史摘要内
+            if (StringUtil.isNotBlank(reThings) && reThings.replace(" ", "").contains(bhChief.replace(" ", ""))) {
+                return;
+            }
+            if (StringUtils.isNotBlank(bhThings)) {
+                Pattern compile = Pattern.compile("(?<=2.).*(?=3.体格检查)");
+                Matcher matcher = compile.matcher(bhThings);
+                while (matcher.find()) {
+                    String number = matcher.group(0);
+                    if (CatalogueUtil.isEmpty(number)) {
+                        status.set("-1");
+                    }
+                }
+                //处理台州的
+                if (bhThings.contains("患者因")) {
+                    return;
+                }
+            }
+        }
+    }
+}

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/operationdiscussion/OPE0369.java

@@ -21,7 +21,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 /**
 /**
- * @Description: 手术患者缺术前主刀医师查房记录
+ * @Description: 主刀医师术前查房未在术前24小时内完成
  * @author: WANGSY
  * @author: WANGSY
  * @time: 2020/11/11 11:22
  * @time: 2020/11/11 11:22
  */
  */

+ 15 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/threelevelward/THR02900.java

@@ -64,17 +64,25 @@ public class THR02900 extends QCCatalogue {
             if (StringUtil.isNotBlank(opeAssName)) {
             if (StringUtil.isNotBlank(opeAssName)) {
                 split = opeAssName.split("、");
                 split = opeAssName.split("、");
                 firstAssistant = structureMap.get("助手");
                 firstAssistant = structureMap.get("助手");
-                opeEndTime = structureMap.get("手术日期");
             } else {
             } else {
                 firstAssistant = structureMap.get("一助");
                 firstAssistant = structureMap.get("一助");
-                //取得手术时间截取结束时间(格式 2020-07-24 10:30-2020-07-24 11:45)
-                opeEndTime = structureMap.get("手术日期");
-                if (StringUtil.isBlank(opeEndTime) || opeEndTime.contains("年月日")) {
-                    continue;
+            }
+            //取得手术时间截取结束时间(格式 2020-07-24 10:30-2020-07-24 11:45)
+            opeEndTime = structureMap.get("手术日期");
+            if (StringUtil.isNotBlank(opeEndTime)) {
+                if (opeEndTime.contains("结束")) {
+                    opeEndTime = opeEndTime.substring(0, opeEndTime.indexOf("结束")).replace("开始:", "");
+                }
+                if (opeEndTime.contains("年月日")) {
+                    opeEndTime = DateUtil.nowString();
+                }
+                //取不到时间不判断规则
+                if (StringUtil.parseDateTime(opeEndTime) == null) {
+                    return;
                 }
                 }
             }
             }
             String chiefSurgeon = structureMap.get("主刀医师");
             String chiefSurgeon = structureMap.get("主刀医师");
-            if (chiefSurgeon.contains("、")) {
+            if (StringUtil.isNotBlank(chiefSurgeon) && chiefSurgeon.contains("、")) {
                 chiefSurgeon = chiefSurgeon.split("、")[0];
                 chiefSurgeon = chiefSurgeon.split("、")[0];
             }
             }
             Date opeEndDate = CatalogueUtil.parseStringDate(opeEndTime);
             Date opeEndDate = CatalogueUtil.parseStringDate(opeEndTime);
@@ -126,7 +134,7 @@ public class THR02900 extends QCCatalogue {
                     StringUtil.isNotBlank(firstAssistant) && !allTitle.contains(firstAssistant)) {
                     StringUtil.isNotBlank(firstAssistant) && !allTitle.contains(firstAssistant)) {
                 status.set("-1");
                 status.set("-1");
                 return;
                 return;
-            } else if (StringUtil.isBlank(chiefSurgeon) && StringUtil.isBlank(firstAssistant) && split.length > 1) {
+            } else if (StringUtil.isBlank(chiefSurgeon) && StringUtil.isBlank(firstAssistant) && split != null && split.length > 1) {
                 for (int i = 0; i < split.length; i++) {
                 for (int i = 0; i < split.length; i++) {
                     if (allTitle.contains(split[i])) {
                     if (allTitle.contains(split[i])) {
                         return;
                         return;

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03126.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+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.LeaveHospitalDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Description: 复诊及下一步诊疗计划未填写
+ * @author: wsy
+ * @time: 2021/6/23 15:15
+ */
+@Component
+public class LEA03126 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        if (leaveHospitalDoc == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if (structureMap != null && structureMap.containsKey("1、复诊及下一步诊疗计划")) {
+            if (CatalogueUtil.isEmpty(structureMap.get("1、复诊及下一步诊疗计划"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03127.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+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.LeaveHospitalDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Description: 生活自理未填写
+ * @author: wsy
+ * @time: 2021/6/23 15:15
+ */
+@Component
+public class LEA03127 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        if (leaveHospitalDoc == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if (structureMap != null && structureMap.containsKey("4、生活自理")) {
+            if (CatalogueUtil.isEmpty(structureMap.get("4、生活自理"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03128.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+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.LeaveHospitalDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Description: 康复指导未填写
+ * @author: wsy
+ * @time: 2021/6/23 15:15
+ */
+@Component
+public class LEA03128 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        if (leaveHospitalDoc == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if (structureMap != null && structureMap.containsKey("5、康复指导")) {
+            if (CatalogueUtil.isEmpty(structureMap.get("5、康复指导"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03129.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+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.LeaveHospitalDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Description: 营养指导未填写
+ * @author: wsy
+ * @time: 2021/6/23 15:15
+ */
+@Component
+public class LEA03129 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        if (leaveHospitalDoc == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if (structureMap != null && structureMap.containsKey("6、营养指导")) {
+            if (CatalogueUtil.isEmpty(structureMap.get("6、营养指导"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03130.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+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.LeaveHospitalDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Description: 出院随访指导未填写
+ * @author: wsy
+ * @time: 2021/6/23 15:15
+ */
+@Component
+public class LEA03130 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        if (leaveHospitalDoc == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if (structureMap != null && structureMap.containsKey("7、随访指导")) {
+            if (CatalogueUtil.isEmpty(structureMap.get("7、随访指导"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 46 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03131.java

@@ -0,0 +1,46 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+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.LeaveHospitalDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Description: 出院记录的住院经过不完善
+ * @author: wsy
+ * @time: 2021/6/23 15:15
+ */
+@Component
+public class LEA03131 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        if (leaveHospitalDoc == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if (structureMap != null) {
+            String curePass = structureMap.get("诊治经过");
+            if (CatalogueUtil.isEmpty(curePass)) {
+                return;
+            }
+            if (!curePass.contains("查") && !curePass.contains("检验")) {
+                status.set("-1");
+                info.set("住院经过缺少检验检查");
+                return;
+            }
+
+            if (!curePass.contains("治疗")) {
+                status.set("-1");
+                info.set("住院经过缺少诊治经过");
+                return;
+            }
+
+        }
+    }
+}

+ 63 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03132.java

@@ -0,0 +1,63 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+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.LeaveHospitalDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 住院经过与手术记录中手术名称不一致
+ * @author: wsy
+ * @time: 2021/6/23 15:15
+ */
+@Component
+@Slf4j
+public class LEA03132 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        if (leaveHospitalDoc == null || operationDocs == null) {
+            return;
+        }
+
+        //获取手术名称
+        List<String> operationNameList = new ArrayList<>();
+        for (OperationDoc operationDoc : operationDocs) {
+            if (operationDoc.getOperationRecordDoc() != null) {
+                String operationName = operationDoc.getOperationRecordDoc().getStructureMap().get("手术名称");
+                if (StringUtil.isNotBlank(operationName)) {
+                    operationNameList.add(operationName);
+                }
+            }
+        }
+
+        if (operationNameList.size() == 0) {
+            return;
+        }
+
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if (structureMap != null) {
+            String curePass = structureMap.get("诊治经过");
+            if (CatalogueUtil.isEmpty(curePass)) {
+                return;
+            }
+            for (String operationName : operationNameList) {
+                if (!curePass.contains(operationName)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+        }
+    }
+}

+ 1 - 0
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/NingHaiYiYiFirstCourseRecordDocTrans.java

@@ -77,6 +77,7 @@ public class NingHaiYiYiFirstCourseRecordDocTrans extends ModelDocTrans {
             "病历特点=病例特点",
             "病历特点=病例特点",
             "入院查体=查体",
             "入院查体=查体",
             "辅助检查=辅检",
             "辅助检查=辅检",
+            "、根据人民卫生出版社《妇产科学》第九版拟定如下诊疗计划=诊疗计划",
             "2.诊断依据=诊断依据",
             "2.诊断依据=诊断依据",
             "3.鉴别诊断=鉴别诊断",
             "3.鉴别诊断=鉴别诊断",
             "1.初步诊断=初步诊断"
             "1.初步诊断=初步诊断"

+ 4 - 0
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/NingHaiYiYiOperationDocTrans.java

@@ -191,6 +191,7 @@ public class NingHaiYiYiOperationDocTrans extends ModelDocTrans {
                 structureMap.put("记录编号", contentMap.get("recId").toString());
                 structureMap.put("记录编号", contentMap.get("recId").toString());
                 structureMap.put("病历号", contentMap.get("behospitalCode") == null ? null : contentMap.get("behospitalCode").toString());
                 structureMap.put("病历号", contentMap.get("behospitalCode") == null ? null : contentMap.get("behospitalCode").toString());
             }
             }
+
             List<String> titles = Lists.newArrayList("手术开始时间", "手术结束时间");
             List<String> titles = Lists.newArrayList("手术开始时间", "手术结束时间");
             for (String title : titles) {
             for (String title : titles) {
                 eliminateDate(structureMap, title);
                 eliminateDate(structureMap, title);
@@ -201,6 +202,9 @@ public class NingHaiYiYiOperationDocTrans extends ModelDocTrans {
             if (structureMap.containsKey("接生者")) {
             if (structureMap.containsKey("接生者")) {
                 structureMap.put("接生者", structureMap.get("接生者").replace("\n", "").replaceAll("接生者签名", ""));
                 structureMap.put("接生者", structureMap.get("接生者").replace("\n", "").replaceAll("接生者签名", ""));
             }
             }
+            if (StringUtil.isBlank(structureMap.get("主刀医师")) && structureMap.containsKey("手术人员")) {
+                structureMap.put("主刀医师", structureMap.get("手术人员").split("、")[0]);
+            }
         }
         }
         if (MapUtils.isNotEmpty(structureMap)) {
         if (MapUtils.isNotEmpty(structureMap)) {
             OperationRecordDoc operationRecordDoc = ModelDocGenerate.operationRecordDocGen(structureMap);
             OperationRecordDoc operationRecordDoc = ModelDocGenerate.operationRecordDocGen(structureMap);

+ 2 - 2
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiBeHospitalizedHtmlAnalysis.java

@@ -28,7 +28,7 @@ public class NingHaiYiYiBeHospitalizedHtmlAnalysis implements NingHaiYiYiHtmlAna
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
             Document doc = Jsoup.parse(html);
@@ -55,7 +55,7 @@ public class NingHaiYiYiBeHospitalizedHtmlAnalysis implements NingHaiYiYiHtmlAna
         List<String> titles = Lists.newArrayList("姓 名", "入院时间", "出生日期", "性 别", "性别", "记录时间","年 龄", "出 生 地", "职 业", "职业", "入院时间", "民 族", "民族",
         List<String> titles = Lists.newArrayList("姓 名", "入院时间", "出生日期", "性 别", "性别", "记录时间","年 龄", "出 生 地", "职 业", "职业", "入院时间", "民 族", "民族",
                 "联系地址", "婚 姻", "婚姻", "病史陈述者", "病史可靠度", "家长姓名","住 址","联系电话", "主诉", "主 诉", "现 病 史","现病史", "既 往 史", "个 人 史", "母 孕 史", "出 生 史", "喂 养 史",
                 "联系地址", "婚 姻", "婚姻", "病史陈述者", "病史可靠度", "家长姓名","住 址","联系电话", "主诉", "主 诉", "现 病 史","现病史", "既 往 史", "个 人 史", "母 孕 史", "出 生 史", "喂 养 史",
                 "既往史", "个人史", "母孕史", "出生史", "喂养史","婚育史","家族史","年龄","姓名","出生地","住址",
                 "既往史", "个人史", "母孕史", "出生史", "喂养史","婚育史","家族史","年龄","姓名","出生地","住址",
-                "末次月经","身份证号","户籍地址","联 系 人","孕/产 次","预 产 期","产前检查","籍贯","",
+                "末次月经","身份证号","户籍地址","联 系 人","孕/产 次","预 产 期","产前检查","籍贯",
                 "生长发育史", "预防接种史", "生活习惯史", "婚 育 史", "月经婚育史", "家 族 史", "辅助检查", "记录医生", "初步诊断", "补充诊断");
                 "生长发育史", "预防接种史", "生活习惯史", "婚 育 史", "月经婚育史", "家 族 史", "辅助检查", "记录医生", "初步诊断", "补充诊断");
         String htmlContent = NingHaiYiYiHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0).getElementById("main"), true);
         String htmlContent = NingHaiYiYiHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0).getElementById("main"), true);
         if (StringUtil.isNotBlank(htmlContent)) {
         if (StringUtil.isNotBlank(htmlContent)) {

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiClinicBloodEffectHtmlAnalysis.java

@@ -26,7 +26,7 @@ public class NingHaiYiYiClinicBloodEffectHtmlAnalysis implements NingHaiYiYiHtml
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiClinicalBloodHtmlAnalysis.java

@@ -27,7 +27,7 @@ public class NingHaiYiYiClinicalBloodHtmlAnalysis implements NingHaiYiYiHtmlAnal
                 "开始时间", "结束时间", "输血过程");
                 "开始时间", "结束时间", "输血过程");
         Map<String, String> map = Maps.newLinkedHashMap();
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiConsultationHtmlAnalysis.java

@@ -31,7 +31,7 @@ public class NingHaiYiYiConsultationHtmlAnalysis implements NingHaiYiYiHtmlAnaly
                     "会诊类型", "被邀医院", "被邀科室", "被邀医师", "申请时间", "患者病情及诊疗经过、申请会诊的理由及目的", "申请会诊科别",
                     "会诊类型", "被邀医院", "被邀科室", "被邀医师", "申请时间", "患者病情及诊疗经过、申请会诊的理由及目的", "申请会诊科别",
                     "被邀会诊科别", "申请会诊医师", "会诊意见", "会诊时间", "科主任", "会诊到达时间", "查体", "会诊建议",
                     "被邀会诊科别", "申请会诊医师", "会诊意见", "会诊时间", "科主任", "会诊到达时间", "查体", "会诊建议",
                     "会诊诊断", "由受邀医生填写,本次会诊是否必要","会诊科室", "会诊医师", "外院会诊医师所在医疗机构名称", "会诊医师所在医疗机构名称");
                     "会诊诊断", "由受邀医生填写,本次会诊是否必要","会诊科室", "会诊医师", "外院会诊医师所在医疗机构名称", "会诊医师所在医疗机构名称");
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             String htmlContent = null;
             String htmlContent = null;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiConsultationRecordHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiConsultationRecordHtmlAnalysis implements NingHaiYiYiHtm
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiCrisisValueReportHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiCrisisValueReportHtmlAnalysis implements NingHaiYiYiHtml
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiCriticallyIllNoticeHtmlAnalysis.java

@@ -29,7 +29,7 @@ public class NingHaiYiYiCriticallyIllNoticeHtmlAnalysis implements NingHaiYiYiHt
             List<String> titles = Lists.newArrayList("姓名", "性别", "年龄", "出生日期", "科室", "科别", "病区", "床号", "住院号",
             List<String> titles = Lists.newArrayList("姓名", "性别", "年龄", "出生日期", "科室", "科别", "病区", "床号", "住院号",
                     "单位或地址", "联系电话", "初步诊断", "临床诊断", "病情摘要", "主要症状", "体格检查", "辅助检查", "告知医师签名",
                     "单位或地址", "联系电话", "初步诊断", "临床诊断", "病情摘要", "主要症状", "体格检查", "辅助检查", "告知医师签名",
                     "告知时间", "患方意见", "患方签名", "手印说明", "与患者关系", "患者(或被授权人)签名与患方关系", "医师签名", "时间", "签字时间");
                     "告知时间", "患方意见", "患方签名", "手印说明", "与患者关系", "患者(或被授权人)签名与患方关系", "医师签名", "时间", "签字时间");
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
             Document doc = Jsoup.parse(html);

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDeathCaseDiscussHtmlAnalysis.java

@@ -25,7 +25,7 @@ public class NingHaiYiYiDeathCaseDiscussHtmlAnalysis implements NingHaiYiYiHtmlA
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTypeId = args[2];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
             Document doc = Jsoup.parse(html);
             Element bigDivElement = doc.selectFirst("body").child(0).getElementById("main");
             Element bigDivElement = doc.selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDeathRecordHtmlAnalysis.java

@@ -27,7 +27,7 @@ public class NingHaiYiYiDeathRecordHtmlAnalysis implements NingHaiYiYiHtmlAnalys
         try {
         try {
             List<String> titles = Lists.newArrayList("入院日期", "入院时间", "死亡时间", "记录时间", "入院诊断", "入院情况",
             List<String> titles = Lists.newArrayList("入院日期", "入院时间", "死亡时间", "记录时间", "入院诊断", "入院情况",
                     "诊疗经过(重点记录病情演变、抢救经过)", "诊治经过", "死亡原因", "死亡诊断", "医师签字");
                     "诊疗经过(重点记录病情演变、抢救经过)", "诊治经过", "死亡原因", "死亡诊断", "医师签字");
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
             Document doc = Jsoup.parse(html);

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDifficultCaseDiscussHtmlAnalysis.java

@@ -27,7 +27,7 @@ public class NingHaiYiYiDifficultCaseDiscussHtmlAnalysis implements NingHaiYiYiH
         try {
         try {
             List<String> titles = Lists.newArrayList("姓名", "性别", "年龄", "出生日期", "科别", "住址(或单位)", "讨论日期",
             List<String> titles = Lists.newArrayList("姓名", "性别", "年龄", "出生日期", "科别", "住址(或单位)", "讨论日期",
                     "讨论主持人", "参加讨论人", "发言记录(包括病历简要、讨论意见及结论)", "病史简介", "讨论意见", "主持人小结意见", "记录者(签名)", "科主任(签名)");
                     "讨论主持人", "参加讨论人", "发言记录(包括病历简要、讨论意见及结论)", "病史简介", "讨论意见", "主持人小结意见", "记录者(签名)", "科主任(签名)");
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
             Document doc = Jsoup.parse(html);

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDutyShiftSystemHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiDutyShiftSystemHtmlAnalysis implements NingHaiYiYiHtmlAn
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 3 - 3
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiFirstCourseRecordHtmlAnalysis.java

@@ -25,8 +25,8 @@ public class NingHaiYiYiFirstCourseRecordHtmlAnalysis implements NingHaiYiYiHtml
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> structureMap = Maps.newLinkedHashMap();
         Map<String, String> structureMap = Maps.newLinkedHashMap();
         try {
         try {
-            List<String> titles = Lists.newArrayList("一. 病例特点", "二. 拟诊讨论", "三. 诊疗计划","三、诊疗计划", "医师签名");
-            Document doc = Jsoup.parse(args[0]);
+            List<String> titles = Lists.newArrayList("一. 病例特点", "二. 拟诊讨论", "三. 诊疗计划", "三、诊疗计划", "三、根据人民卫生出版社《妇产科学》第九版拟定如下诊疗计划", "医师签名");
+            Document doc = Jsoup.parse(args[0].replace("&nbsp;", " "));
             String htmlContent = NingHaiYiYiHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0), true);
             String htmlContent = NingHaiYiYiHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0), true);
             if (StringUtil.isNotBlank(htmlContent)) {
             if (StringUtil.isNotBlank(htmlContent)) {
                 CommonAnalysisUtil.html2StructureMap(titles, htmlContent, structureMap);
                 CommonAnalysisUtil.html2StructureMap(titles, htmlContent, structureMap);
@@ -34,7 +34,7 @@ public class NingHaiYiYiFirstCourseRecordHtmlAnalysis implements NingHaiYiYiHtml
             if (structureMap.containsKey("二.拟诊讨论")) {
             if (structureMap.containsKey("二.拟诊讨论")) {
                 List<String> listTitle = CommonAnalysisUtil.sortTitles(
                 List<String> listTitle = CommonAnalysisUtil.sortTitles(
                         Lists.newArrayList("1.初步诊断", "2.诊断依据", "3.鉴别诊断"
                         Lists.newArrayList("1.初步诊断", "2.诊断依据", "3.鉴别诊断"
-                                ,"诊断依据","鉴别诊断","初步诊断"), structureMap.get("二.拟诊讨论")
+                                , "诊断依据", "鉴别诊断", "初步诊断"), structureMap.get("二.拟诊讨论")
                 );
                 );
                 CommonAnalysisUtil.cutByTitles(structureMap.get("二.拟诊讨论"), listTitle, 0, structureMap);
                 CommonAnalysisUtil.cutByTitles(structureMap.get("二.拟诊讨论"), listTitle, 0, structureMap);
             }
             }

+ 28 - 20
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiLeaveHospitalHtmlAnalysis.java

@@ -27,9 +27,9 @@ public class NingHaiYiYiLeaveHospitalHtmlAnalysis implements NingHaiYiYiHtmlAnal
         try {
         try {
             List<String> titles = Lists.newArrayList("姓名", "出生年月", "性别", "年龄", "出生日期", "科室", "床位", "床号", "病区", "住院号 ", "住院号",
             List<String> titles = Lists.newArrayList("姓名", "出生年月", "性别", "年龄", "出生日期", "科室", "床位", "床号", "病区", "住院号 ", "住院号",
                     "病理号", "B超", "X片号", "CT号", "MRI号", "内镜", "入院诊断", "出院诊断", "入院日期", "出院日期", "地址", "住院天数", "婚姻", "分娩日期",
                     "病理号", "B超", "X片号", "CT号", "MRI号", "内镜", "入院诊断", "出院诊断", "入院日期", "出院日期", "地址", "住院天数", "婚姻", "分娩日期",
-                    "分娩方式", "手术指征", "入院情况", "辅助检查","诊治经过", "住院经过", "入院后检查化验结果", "入院后化验检查结果", "诊疗经过", "治疗结果", "转归情况", "出院计划",
-                    "病理检查结果","出院情况","出院时情况", "婴儿情况", "治疗效果", "出院医嘱", "医师签名", "日期", "时 间", "其它", "主治医师", "住院医师");
-            String html = args[0];
+                    "分娩方式", "手术指征", "入院情况", "辅助检查", "诊治经过", "住院经过", "入院后检查化验结果", "入院后化验检查结果", "诊疗经过", "治疗结果", "转归情况", "出院计划",
+                    "病理检查结果", "出院情况", "出院时情况", "婴儿情况", "治疗效果", "出院医嘱", "医师签名", "日期", "时 间", "其它", "主治医师", "住院医师");
+            String html = args[0].replace("&nbsp;", " ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
             Document doc = Jsoup.parse(html);
@@ -37,7 +37,7 @@ public class NingHaiYiYiLeaveHospitalHtmlAnalysis implements NingHaiYiYiHtmlAnal
             if (StringUtil.isNotBlank(htmlContent)) {
             if (StringUtil.isNotBlank(htmlContent)) {
                 htmlContent = htmlContent.replaceAll("[   ]", " ")
                 htmlContent = htmlContent.replaceAll("[   ]", " ")
                         .replace("第1页", "")
                         .replace("第1页", "")
-                        .replace("出院后请注意接听本院的随访电话:825592278255916565578435","");
+                        .replace("出院后请注意接听本院的随访电话:825592278255916565578435", "");
                 htmlContent = htmlContent.replace("\n", "");
                 htmlContent = htmlContent.replace("\n", "");
                 List<String> sortTitles = CommonAnalysisUtil.sortTitles(titles, htmlContent.replace("复诊时间", ""));
                 List<String> sortTitles = CommonAnalysisUtil.sortTitles(titles, htmlContent.replace("复诊时间", ""));
                 sortTitles.add("时间");
                 sortTitles.add("时间");
@@ -49,27 +49,25 @@ public class NingHaiYiYiLeaveHospitalHtmlAnalysis implements NingHaiYiYiHtmlAnal
                 structureMap.put("出院诊断", discharge.substring(0, index));
                 structureMap.put("出院诊断", discharge.substring(0, index));
                 structureMap.put("入院情况", discharge.substring(index + 4));
                 structureMap.put("入院情况", discharge.substring(index + 4));
             }
             }
+
+            //出院医嘱中字段解析
+            doctorsAdviceAnalysis(structureMap);
+
             //产科出院记录 出院时情况、诊治经过(入院情况、治疗经过及重要辅助检查) title没有 :故在此特殊处理
             //产科出院记录 出院时情况、诊治经过(入院情况、治疗经过及重要辅助检查) title没有 :故在此特殊处理
-            try
-            {
+            try {
                 String headerContent = NingHaiYiYiHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0).getElementById("header"), true);
                 String headerContent = NingHaiYiYiHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0).getElementById("header"), true);
-                if("产科".equals(StringUtil.trim(headerContent.substring(headerContent.indexOf("科室:")+"科室:".length()
-                        ,headerContent.indexOf("床号")))))
-                {
-                    if(htmlContent.contains("诊治经过(入院情况、治疗经过及重要辅助检查)")&&htmlContent.contains("辅助检查:"))
-                    {
-                        structureMap.put("诊疗经过",htmlContent.substring(htmlContent.indexOf("诊治经过(入院情况、治疗经过及重要辅助检查)")
-                                +"诊治经过(入院情况、治疗经过及重要辅助检查)".length(),htmlContent.indexOf("辅助检查:")));
+                if ("产科".equals(StringUtil.trim(headerContent.substring(headerContent.indexOf("科室:") + "科室:".length()
+                        , headerContent.indexOf("床号"))))) {
+                    if (htmlContent.contains("诊治经过(入院情况、治疗经过及重要辅助检查)") && htmlContent.contains("辅助检查:")) {
+                        structureMap.put("诊疗经过", htmlContent.substring(htmlContent.indexOf("诊治经过(入院情况、治疗经过及重要辅助检查)")
+                                + "诊治经过(入院情况、治疗经过及重要辅助检查)".length(), htmlContent.indexOf("辅助检查:")));
                     }
                     }
-                    if(htmlContent.contains("出院时情况")&&htmlContent.contains("出院医嘱:"))
-                    {
-                        structureMap.put("出院情况",htmlContent.substring(htmlContent.indexOf("出院时情况")
-                                +"出院时情况".length(),htmlContent.indexOf("出院医嘱:")));
+                    if (htmlContent.contains("出院时情况") && htmlContent.contains("出院医嘱:")) {
+                        structureMap.put("出院情况", htmlContent.substring(htmlContent.indexOf("出院时情况")
+                                + "出院时情况".length(), htmlContent.indexOf("出院医嘱:")));
                     }
                     }
                 }
                 }
-            }
-            catch (Exception e)
-            {
+            } catch (Exception e) {
                 log.error(e.getMessage(), e);
                 log.error(e.getMessage(), e);
             }
             }
 
 
@@ -81,4 +79,14 @@ public class NingHaiYiYiLeaveHospitalHtmlAnalysis implements NingHaiYiYiHtmlAnal
         return structureMap;
         return structureMap;
     }
     }
 
 
+    //出院医嘱字处理
+    private void doctorsAdviceAnalysis(Map<String, String> structureMap) {
+        String doctorsAdvice = structureMap.get("出院医嘱");
+        if (StringUtil.isBlank(doctorsAdvice)) {
+            return;
+        }
+        List<String> titles = Lists.newArrayList("1、复诊及下一步诊疗计划", "2、注意事项", "3、出院带药", "4、生活自理", "5、康复指导", "6、营养指导",
+                "7、随访指导", "8、出院后如需门诊复诊,可通过如下方式提前两周进行预约");
+        CommonAnalysisUtil.cutByTitles(doctorsAdvice, titles, 0, structureMap);
+    }
 }
 }

+ 2 - 2
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiOperationHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiOperationHtmlAnalysis implements NingHaiYiYiHtmlAnalysis
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");
@@ -52,7 +52,7 @@ public class NingHaiYiYiOperationHtmlAnalysis implements NingHaiYiYiHtmlAnalysis
                 .replace("手术室完成的、治疗性质的及全麻下完成的有创诊疗操作参照手术管理。(包括介入治疗、胃肠镜","")
                 .replace("手术室完成的、治疗性质的及全麻下完成的有创诊疗操作参照手术管理。(包括介入治疗、胃肠镜","")
                 .replace("下肿瘤切除/粘膜下肿瘤剥除等)","");
                 .replace("下肿瘤切除/粘膜下肿瘤剥除等)","");
         List<String> titles = Lists.newArrayList(
         List<String> titles = Lists.newArrayList(
-                "病情记录", "患者手术后情况", "手术简要经过(包括手术方式、术中所见、过程是否顺利、有无并发症等)", "术后去向", "术后去向", "术后诊断", "术后处理措施", "术后应当特别注意观察的事项:", "术后治疗计划(包括术后应当特别注意观察的事项)", "医生签名", "医师签名"
+                "病情记录", "患者手术后情况", "手术简要经过(包括手术方式、术中所见、过程是否顺利、有无并发症等)", "术后去向", "术后去向", "术后诊断", "术后告知","术后处理措施", "术后应当特别注意观察的事项:", "术后治疗计划(包括术后应当特别注意观察的事项)", "医生签名", "医师签名"
         );
         );
         titles = CommonAnalysisUtil.sortTitlesNoColon(titles, bqjlText);
         titles = CommonAnalysisUtil.sortTitlesNoColon(titles, bqjlText);
         CommonAnalysisUtil.cutByTitlesNoColon(bqjlText, titles, 0, map);
         CommonAnalysisUtil.cutByTitlesNoColon(bqjlText, titles, 0, map);

+ 2 - 2
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiOperationRecordHtmlAnalysis.java

@@ -25,7 +25,7 @@ public class NingHaiYiYiOperationRecordHtmlAnalysis implements NingHaiYiYiHtmlAn
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             NingHaiYiYiHtmlAnalysisUtil.tableStyle1InsertMap(Jsoup.parse(html).selectFirst("body").child(0).getElementById("header"), map);
             NingHaiYiYiHtmlAnalysisUtil.tableStyle1InsertMap(Jsoup.parse(html).selectFirst("body").child(0).getElementById("header"), map);
@@ -105,7 +105,7 @@ public class NingHaiYiYiOperationRecordHtmlAnalysis implements NingHaiYiYiHtmlAn
                 "姓名", "性别", "出生日期", "出生年月", "科别", "科室", "病区", "床号", "床位", "住院号", "手术开始时间", "手术结束时间",
                 "姓名", "性别", "出生日期", "出生年月", "科别", "科室", "病区", "床号", "床位", "住院号", "手术开始时间", "手术结束时间",
                 "手术时间", "手术日期", "术前诊断", "手术指征", "手术人员", "外邀指导专家", "麻醉方式", "麻醉人员", "麻 醉 者", "洗手护士", "本次手术是否属于非计划再次手术", "接生者",
                 "手术时间", "手术日期", "术前诊断", "手术指征", "手术人员", "外邀指导专家", "麻醉方式", "麻醉人员", "麻 醉 者", "洗手护士", "本次手术是否属于非计划再次手术", "接生者",
                 "术前胎心", "手术名称", "术后诊断", "手术者及助手名称", "术中取病理标本", "麻醉方法", "手术经过(包括病人体位、切口处理、病灶所见及手术步骤等)",
                 "术前胎心", "手术名称", "术后诊断", "手术者及助手名称", "术中取病理标本", "麻醉方法", "手术经过(包括病人体位、切口处理、病灶所见及手术步骤等)",
-                "诊断手术/操作简要经过(包括术中有无并发症及具体描述和处理)", "手术经过", "医师签名",
+                "诊断手术/操作简要经过(包括术中有无并发症及具体描述和处理)", "手术经过", "主刀医师签名",
                 "医生签名", "手术/操作医生", "记录者", "记录时间", "术中输血", "术前宫颈准备日期", "药物名称及用法", "导管或其他", "插入深度",
                 "医生签名", "手术/操作医生", "记录者", "记录时间", "术中输血", "术前宫颈准备日期", "药物名称及用法", "导管或其他", "插入深度",
                 "阴道填塞纱布条", "准备者", "取出日期", "手术方法", "术中特殊情况", "病理检查", "其他", "手术者",
                 "阴道填塞纱布条", "准备者", "取出日期", "手术方法", "术中特殊情况", "病理检查", "其他", "手术者",
                 "检查子宫位置", "开始", "结束"
                 "检查子宫位置", "开始", "结束"

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiPreoperativeHtmlAnalysis.java

@@ -25,7 +25,7 @@ public class NingHaiYiYiPreoperativeHtmlAnalysis implements NingHaiYiYiHtmlAnaly
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiRescueHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiRescueHtmlAnalysis implements NingHaiYiYiHtmlAnalysis {
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiStagesSummaryHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiStagesSummaryHtmlAnalysis implements NingHaiYiYiHtmlAnal
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiThreeLevelWardHtmlAnalysis.java

@@ -27,7 +27,7 @@ public class NingHaiYiYiThreeLevelWardHtmlAnalysis implements NingHaiYiYiHtmlAna
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> structureMap = Maps.newLinkedHashMap();
         Map<String, String> structureMap = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
             Document doc = Jsoup.parse(html);

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiTransferIntoHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiTransferIntoHtmlAnalysis implements NingHaiYiYiHtmlAnaly
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiTransferOutHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiTransferOutHtmlAnalysis implements NingHaiYiYiHtmlAnalys
     public Map<String, String> analysis(String... args) {
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTitle = args[1];
             String recTypeId = args[2];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");