Kaynağa Gözat

Merge remote-tracking branch 'origin/dev-1.2' into dev

hujing 5 yıl önce
ebeveyn
işleme
1bd0eaa45a
81 değiştirilmiş dosya ile 1091 ekleme ve 268 silme
  1. 31 1
      dbanaly/src/main/java/com/lantone/qc/dbanaly/controller/DbController.java
  2. 99 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/changx/ChangxXmlDataAnalysisFacade.java
  3. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/util/CxXmlUtil.java
  4. 326 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/comsis/XmlDataAnalysisFacade.java
  5. 1 1
      trans/src/main/java/com/lantone/qc/trans/comsis/XmlUtil.java
  6. 51 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/taizhou/TaiZhouXmlDataAnalysisFacade.java
  7. 57 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/taizhou/TzXmlUtil.java
  8. 7 1
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/entity/MedicalRecord.java
  9. 81 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/entity/ModelHospital.java
  10. 44 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/entity/RecordAnalyzeExample.java
  11. 25 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/facade/ModeFacade.java
  12. 34 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/facade/ModelHospitalFacade.java
  13. 1 1
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/mapper/MedicalRecordMapper.java
  14. 16 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/mapper/ModelHospitalMapper.java
  15. 16 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/mapper/RecordAnalyzeExampleMapper.java
  16. 1 1
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/service/MedicalRecordService.java
  17. 16 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/service/ModelHospitalService.java
  18. 16 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/service/RecordAnalyzeExampleService.java
  19. 1 1
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/service/impl/MedicalRecordServiceImpl.java
  20. 20 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/service/impl/ModelHospitalServiceImpl.java
  21. 20 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/service/impl/RecordAnalyzeExampleServiceImpl.java
  22. 21 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/vo/AnalyzeXmlVO.java
  23. 3 1
      dbanaly/src/main/resources/application-db.yml
  24. 5 0
      dbanaly/src/main/resources/mapper/lt/ModelHospitalMapper.xml
  25. 5 0
      dbanaly/src/main/resources/mapper/lt/RecordAnalyzeExampleMapper.xml
  26. 5 5
      dbanaly/src/test/java/com/lantone/qc/dbanaly/MysqlCodeGenerator.java
  27. 10 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0070.java
  28. 3 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0397.java
  29. 38 11
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/dutyshiftsystem/DUT0296.java
  30. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0199.java
  31. 2 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0274.java
  32. 0 5
      kernel/src/main/java/com/lantone/qc/kernel/web/controller/QCController.java
  33. 0 1
      kernel/src/main/java/com/lantone/qc/kernel/web/controller/QCTestController.java
  34. 2 2
      kernel/src/test/java/com/lantone/qc/kernel/ChangxDataImportApiTest.java
  35. 0 2
      kernel/src/test/java/com/lantone/qc/kernel/ImportTaizDataTest.java
  36. 1 2
      kernel/src/test/java/com/lantone/qc/kernel/TaizDataImportApiTest.java
  37. 2 2
      public/src/main/java/com/lantone/qc/pub/Content.java
  38. 73 0
      public/src/main/java/com/lantone/qc/pub/util/EncrypDES.java
  39. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxBeHospitalizedDocTrans.java
  40. 3 4
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxClinicBloodEffectDocTrans.java
  41. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxClinicalBloodDocTrans.java
  42. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxConsultationDocTrans.java
  43. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxCrisisValueReportDocTrans.java
  44. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxCriticallyIllNoticeDocTrans.java
  45. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxDailyCourseRecordDocTrans.java
  46. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxDeathCaseDiscussDocTrans.java
  47. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxDeathRecordDocTrans.java
  48. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxDifficultCaseDiscussDocTrans.java
  49. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxFirstCourseRecordDocTrans.java
  50. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxLeaveHospitalDocTrans.java
  51. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxOperationDocTrans.java
  52. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxPathologyShipDocTrans.java
  53. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxRescueDocTrans.java
  54. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxStagesSummaryDocTrans.java
  55. 12 2
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxThreeLevelWardDocTrans.java
  56. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxTransferRecordDocTrans.java
  57. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouAnesthesiaRelatedDocTrans.java
  58. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouBeHospitalizedDocTrans.java
  59. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouClinicBloodEffectDocTrans.java
  60. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouClinicalBloodDocTrans.java
  61. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouConsultationDocTrans.java
  62. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouCrisisValueReportDocTrans.java
  63. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouCriticallyIllNoticeDocTrans.java
  64. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouDeathCaseDiscussDocTrans.java
  65. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouDeathRecordDocTrans.java
  66. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouDifficultCaseDiscussDocTrans.java
  67. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouDutyShiftSystemDocTrans.java
  68. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouFirstCourseRecordDocTrans.java
  69. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouInvasiveOperationDocTrans.java
  70. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouLeaveHospitalDocTrans.java
  71. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouMedicalWritingDocTrans.java
  72. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouNursingSystemDocTrans.java
  73. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouOperationDocTrans.java
  74. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouPathologyShipDocTrans.java
  75. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouReasonableDiagnosisDocTrans.java
  76. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouRescueDocTrans.java
  77. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouSeriouslyIllNoticeDocTrans.java
  78. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouStagesSummaryDocTrans.java
  79. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouThreeLevelWardDocTrans.java
  80. 1 1
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouTransferRecordDocTrans.java
  81. 0 180
      trans/src/main/java/com/lantone/qc/trans/taizhou/util/TzXmlUtil.java

+ 31 - 1
dbanaly/src/main/java/com/lantone/qc/dbanaly/controller/DbController.java

@@ -1,27 +1,39 @@
 package com.lantone.qc.dbanaly.controller;
 
+import com.google.common.collect.Lists;
+import com.lantone.qc.dbanaly.facade.changx.ChangxXmlDataAnalysisFacade;
 import com.lantone.qc.dbanaly.facade.comsis.ModuleHelper;
+import com.lantone.qc.dbanaly.facade.taizhou.TaiZhouXmlDataAnalysisFacade;
+import com.lantone.qc.dbanaly.vo.AnalyzeXmlVO;
 import com.lantone.qc.pub.res.Response;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
  * @ClassName : QCController
  * @Description : 质控总入口
  * @Author : 楼辉荣
  * @Date: 2020-03-03 19:57
  */
+@Slf4j
 @Api(value = "数据对接接口", tags = { "数据对接接口" })
 @RestController
 @RequestMapping(value = "/db")
 public class DbController {
-
     @Autowired
     private ModuleHelper moduleHelper;
+    @Autowired
+    private ChangxXmlDataAnalysisFacade changxXmlDataAnalysisFacade;
+    @Autowired
+    private TaiZhouXmlDataAnalysisFacade taiZhouXmlDataAnalysisFacade;
 
     @ApiOperation(value = "模板信息加载")
     @PostMapping("loadModuleInfo")
@@ -31,4 +43,22 @@ public class DbController {
         return response;
     }
 
+    @ApiOperation(value = "xml数据分析")
+    @PostMapping("analyzeXml")
+    public Response<Boolean> analyzeXml(@RequestBody AnalyzeXmlVO analyzeXmlVO) {
+        Response response = new Response();
+        List<String> msgList = Lists.newArrayList();
+        Long hospitalId = analyzeXmlVO.getHospitalId();
+        if (hospitalId == null) {
+            msgList.addAll(changxXmlDataAnalysisFacade.analyzeXml(analyzeXmlVO.getModeIds()));
+            msgList.addAll(taiZhouXmlDataAnalysisFacade.analyzeXml(analyzeXmlVO.getModeIds()));
+        } else if (hospitalId == 1) {
+            msgList = changxXmlDataAnalysisFacade.analyzeXml(analyzeXmlVO.getModeIds());
+        } else if (hospitalId == 3) {
+            msgList = taiZhouXmlDataAnalysisFacade.analyzeXml(analyzeXmlVO.getModeIds());
+        }
+        response.setData(msgList);
+        return response;
+    }
+
 }

+ 99 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/changx/ChangxXmlDataAnalysisFacade.java

@@ -0,0 +1,99 @@
+package com.lantone.qc.dbanaly.facade.changx;
+
+import com.google.common.collect.Lists;
+import com.lantone.qc.dbanaly.facade.comsis.XmlDataAnalysisFacade;
+import com.lantone.qc.dbanaly.lt.facade.ModeFacade;
+import com.lantone.qc.dbanaly.lt.facade.ModelHospitalFacade;
+import com.lantone.qc.pub.util.ListUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2020/6/3 16:44
+ */
+@Slf4j
+@Component
+public class ChangxXmlDataAnalysisFacade {
+    @Autowired
+    private XmlDataAnalysisFacade xmlDataAnalysisFacade;
+    @Autowired
+    private ModeFacade modeFacade;
+    @Autowired
+    private ModelHospitalFacade modelHospitalFacade;
+
+    public List<String> analyzeXml(List<Long> modeIds) {
+        List<String> retList = Lists.newArrayList();
+        if (ListUtil.isEmpty(modeIds)) {
+            modeIds = Arrays.asList(1l, 2l, 3l, 4l, 5l, 10l, 11l, 17l, 18l, 19l, 20l, 21l, 22l, 23l, 24l, 25l, 26l, 27l, 28l, 29l, 30l, 31l, 32l, 35l);
+        }
+        Map<Long, String> modeMap = modeFacade.getModeMap();
+        String modeName = null;
+        for (Long modeId : modeIds) {
+            modeName = modeMap.get(modeId);
+            if (modeId == 1) {
+                retList.addAll(analyzeXmlRyjl());
+            } else if (modeId == 4) {
+                retList.addAll(analyzeXmlCf());
+            } else {
+                retList.addAll(analyzeXmlOther(modeId, modeName));
+            }
+        }
+        return retList;
+    }
+
+    private List<String> analyzeXmlRyjl() {
+        List<String> retList = Lists.newArrayList();
+        xmlDataAnalysisFacade.getRecTitles(1l, 1l).forEach(recTitle -> {
+            try {
+                xmlDataAnalysisFacade.analysisByRecTitle(1l, 1l, "入院记录", recTitle, null, "男");
+                xmlDataAnalysisFacade.analysisByRecTitle(1l, 1l, "入院记录", recTitle, null, "女");
+            } catch (Exception e) {
+                retList.add("[长兴-入院记录-" + recTitle + "]执行失败");
+                log.error("[长兴-入院记录-" + recTitle + "]执行失败--" + e.getMessage(), e);
+            }
+        });
+        return retList;
+    }
+
+    private List<String> analyzeXmlCf() {
+        String modeName = "查房记录";
+        List<String> retList = Lists.newArrayList();
+        List<String> excludeRecTitles = modelHospitalFacade.getRecTitles(1l, 4l);
+        excludeRecTitles.forEach(recTitle -> {
+            try {
+                xmlDataAnalysisFacade.analysisByRecTitle(1l, 4l, modeName, recTitle, null, "");
+            } catch (Exception e) {
+                retList.add("[长兴-" + modeName + "-" + recTitle + "]执行失败");
+                log.error("[长兴-" + modeName + "-" + recTitle + "]执行失败--" + e.getMessage(), e);
+            }
+        });
+        try {
+            xmlDataAnalysisFacade.analysisByRecTitle(1l, 4l, modeName, "", excludeRecTitles, "");
+        } catch (Exception e) {
+            retList.add("[长兴-" + modeName + "-" + "其余查房" + "]执行失败");
+            log.error("[长兴-" + modeName + "-" + "其余查房" + "]执行失败--" + e.getMessage(), e);
+        }
+        return retList;
+    }
+
+    private List<String> analyzeXmlOther(long modeId, String modeName) {
+        List<String> retList = Lists.newArrayList();
+        xmlDataAnalysisFacade.getRecTitles(1l, modeId).forEach(recTitle -> {
+            try {
+                xmlDataAnalysisFacade.analysisByRecTitle(1l, modeId, modeName, recTitle, null, "");
+            } catch (Exception e) {
+                retList.add("[长兴-" + modeName + "-" + recTitle + "]执行失败");
+                log.error("[长兴-" + modeName + "-" + recTitle + "]执行失败--" + e.getMessage(), e);
+            }
+        });
+        return retList;
+    }
+
+}

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/util/CxXmlUtil.java

@@ -1,4 +1,4 @@
-package com.lantone.qc.trans.changx.util;
+package com.lantone.qc.dbanaly.facade.changx;
 
 import com.google.common.collect.Maps;
 import com.lantone.qc.pub.util.FileUtil;

+ 326 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/comsis/XmlDataAnalysisFacade.java

@@ -0,0 +1,326 @@
+package com.lantone.qc.dbanaly.facade.comsis;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
+import com.lantone.qc.dbanaly.lt.entity.Abnormal;
+import com.lantone.qc.dbanaly.lt.entity.BehospitalInfo;
+import com.lantone.qc.dbanaly.lt.entity.MedicalRecord;
+import com.lantone.qc.dbanaly.lt.entity.MedicalRecordContent;
+import com.lantone.qc.dbanaly.lt.entity.RecordAnalyze;
+import com.lantone.qc.dbanaly.lt.entity.RecordAnalyzeDetail;
+import com.lantone.qc.dbanaly.lt.entity.RecordAnalyzeExample;
+import com.lantone.qc.dbanaly.lt.service.impl.AbnormalServiceImpl;
+import com.lantone.qc.dbanaly.lt.service.impl.BehospitalInfoServiceImpl;
+import com.lantone.qc.dbanaly.lt.service.impl.MedicalRecordContentServiceImpl;
+import com.lantone.qc.dbanaly.lt.service.impl.MedicalRecordServiceImpl;
+import com.lantone.qc.dbanaly.lt.service.impl.ModelHospitalServiceImpl;
+import com.lantone.qc.dbanaly.lt.service.impl.RecordAnalyzeDetailServiceImpl;
+import com.lantone.qc.dbanaly.lt.service.impl.RecordAnalyzeExampleServiceImpl;
+import com.lantone.qc.dbanaly.lt.service.impl.RecordAnalyzeServiceImpl;
+import com.lantone.qc.pub.util.DateUtil;
+import com.lantone.qc.pub.util.EncrypDES;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2020/6/3 16:44
+ */
+@Component
+public class XmlDataAnalysisFacade {
+    @Autowired
+    @Qualifier("medicalRecordServiceImpl")
+    private MedicalRecordServiceImpl medicalRecordService;
+    @Autowired
+    @Qualifier("medicalRecordContentServiceImpl")
+    private MedicalRecordContentServiceImpl medicalRecordContentService;
+    @Autowired
+    @Qualifier("recordAnalyzeServiceImpl")
+    private RecordAnalyzeServiceImpl recordAnalyzeService;
+    @Autowired
+    @Qualifier("recordAnalyzeDetailServiceImpl")
+    private RecordAnalyzeDetailServiceImpl recordAnalyzeDetailService;
+    @Autowired
+    @Qualifier("behospitalInfoServiceImpl")
+    private BehospitalInfoServiceImpl behospitalInfoService;
+    @Autowired
+    @Qualifier("recordAnalyzeExampleServiceImpl")
+    private RecordAnalyzeExampleServiceImpl recordAnalyzeExampleService;
+    @Autowired
+    @Qualifier("abnormalServiceImpl")
+    private AbnormalServiceImpl abnormalService;
+    @Autowired
+    @Qualifier("modelHospitalServiceImpl")
+    private ModelHospitalServiceImpl modelHospitalService;
+    @Value("${xml-is-encryped}")
+    private boolean encryped;
+
+    public List<String> getRecTitles(long hospitalId, long modelId) {
+        QueryWrapper<MedicalRecord> medicalRecordQe = new QueryWrapper<>();
+        medicalRecordQe.eq("hospital_id", hospitalId);
+        medicalRecordQe.eq("mode_id", modelId);
+        medicalRecordQe.eq("status", 0);
+        medicalRecordQe.eq("is_deleted", "N");
+        medicalRecordQe.select("rec_title");
+        return medicalRecordService.list(medicalRecordQe).stream().map(i -> i.getRecTitle()).filter(i -> StringUtil.isNotBlank(i)).distinct().collect(Collectors.toList());
+    }
+
+    @Transactional(transactionManager = "db1TransactionManager")
+    public void analysisByRecTitle(long hospitalId, long modelId, String modeName, String recTitle, List<String> excludeRecTitles, String sex) throws Exception {
+        //找出未处理的文书记录
+        QueryWrapper<MedicalRecord> medicalRecordQe = new QueryWrapper<>();
+        medicalRecordQe.eq("hospital_id", hospitalId);
+        medicalRecordQe.eq("mode_id", modelId);
+        medicalRecordQe.eq("status", 0);
+        medicalRecordQe.eq("is_deleted", "N");
+        medicalRecordQe.eq(StringUtil.isNotBlank(recTitle), "rec_title", recTitle);
+        medicalRecordQe.notIn(ListUtil.isNotEmpty(excludeRecTitles), "rec_title", excludeRecTitles);
+        medicalRecordQe.select("rec_id", "behospital_code");
+        List<MedicalRecord> medicalRecordList = medicalRecordService.list(medicalRecordQe);
+        if (ListUtil.isEmpty(medicalRecordList)) {
+            return;
+        }
+
+        //找出文书记录所属人 组装为map,key为病历号,value为科室信息;格式:病历号 - 病历号(姓名,科室)
+        QueryWrapper<BehospitalInfo> behospitalInfoQe = new QueryWrapper<>();
+        behospitalInfoQe.in(
+                "behospital_code",
+                medicalRecordList.stream().map(i -> i.getBehospitalCode()).filter(i -> StringUtil.isNotBlank(i)).distinct().collect(Collectors.toList())
+        );
+        behospitalInfoQe.eq(StringUtil.isNotBlank(sex), "sex", sex);
+        behospitalInfoQe.eq("hospital_id", hospitalId);
+        behospitalInfoQe.eq("is_deleted", "N");
+        Map<String, String> behospitalCodeDeptInfoMap =
+                behospitalInfoService.list(behospitalInfoQe)
+                        .stream()
+                        .collect(Collectors.toMap(i -> i.getBehospitalCode(), i -> i.getBehospitalCode() + "(" + i.getName() + "," + i.getBehDeptName() + ")"));
+
+        //对文书记录进行过滤,找出病历号正常的记录
+        List<String> recIds =
+                medicalRecordList
+                        .stream()
+                        .filter(i -> StringUtil.isNotBlank(behospitalCodeDeptInfoMap.get(i.getBehospitalCode())))
+                        .map(i -> i.getRecId())
+                        .collect(Collectors.toList());
+
+        //对文书记录进行过滤,找出病历号正常的文书记录,并组装为map,key为记录id,value为病历号,格式:记录id - 病历号
+        Map<String, String> recIdBehospitalCodeMap =
+                medicalRecordList
+                        .stream()
+                        .filter(i -> StringUtil.isNotBlank(behospitalCodeDeptInfoMap.get(i.getBehospitalCode())))
+                        .collect(Collectors.toMap(MedicalRecord::getRecId, i -> i.getBehospitalCode()));
+
+        //根据文书记录id集合,分批次找出文书内容,有的文书记录可能没有对应文书内容,如果文书的xml是加密过的,还需要解密
+        List<MedicalRecordContent> medicalRecordContentList = Lists.newArrayList();
+        int index = 0;
+        QueryWrapper<MedicalRecordContent> medicalRecordContentQe = new QueryWrapper<>();
+        medicalRecordContentQe.eq("is_deleted", "N");
+        medicalRecordContentQe.eq("hospital_id", hospitalId);
+        medicalRecordQe.select("rec_id", "xml_text");
+        while (index <= recIds.size() - 1) {
+            if (index + 1000 > recIds.size() - 1) {
+                medicalRecordContentQe.in("rec_id", recIds.subList(index, recIds.size()));
+            } else {
+                medicalRecordContentQe.in("rec_id", recIds.subList(index, index + 1000));
+            }
+            medicalRecordContentList.addAll(medicalRecordContentService.list(medicalRecordContentQe));
+            if (index + 1000 > recIds.size() - 1) {
+                index = recIds.size();
+            } else {
+                index = index + 1000;
+            }
+        }
+        if (ListUtil.isEmpty(medicalRecordContentList)) {
+            return;
+        }
+        if (encryped) {
+            EncrypDES encrypDES = new EncrypDES();
+            medicalRecordContentList.forEach(medicalRecordContent -> {
+                medicalRecordContent.setXmlText(encrypDES.decryptor(medicalRecordContent.getXmlText()));
+            });
+        }
+
+        //1、解析文书记录内容得出键值对,key是从文书的xml中提取的标签集合keys,value为对应的示例病历号;
+        //2、对键值对集合进行分组组装map,key为xml标签集合kesys,value为示例病历号集合;
+        List<Map.Entry<Set<String>, String>> keysBehospitalCodeEntryList = Lists.newArrayList();
+        String xmlText, behospitalCode;
+        for (MedicalRecordContent medicalRecordContent : medicalRecordContentList) {
+            xmlText = medicalRecordContent.getXmlText();
+            if (StringUtil.isBlank(xmlText)) {
+                continue;
+            }
+            behospitalCode = recIdBehospitalCodeMap.get(medicalRecordContent.getRecId());
+            keysBehospitalCodeEntryList.add(
+                    Maps.immutableEntry(
+                            getKeys(hospitalId, modelId, recTitle, sex, xmlText),
+                            behospitalCode
+                    )
+            );
+        }
+        if (ListUtil.isEmpty(keysBehospitalCodeEntryList)) {
+            return;
+        }
+        Map<Set<String>, List<String>> keysBehospitalCodesMap = keysBehospitalCodeEntryList.stream().collect(Collectors.groupingBy(Map.Entry::getKey, Collectors.mapping(Map.Entry::getValue, Collectors.toList())));
+
+        //1、找出已经分析生成过的文书模块模板类型;2、找出相应的map_keys-模块模板类型id对应信息;3、找出相应的模块模板类型id-示例病历号对应信息
+        Map<Set<String>, Long> alreadyExistsDataMap = Maps.newHashMap();//相应的map_keys-模块模板类型id对应信息
+        Map<Long, Set<String>> raBecsMap = Maps.newHashMap();//相应的模块模板类型id-示例病历号对应信息
+        QueryWrapper<RecordAnalyze> recordAnalyzeQe = new QueryWrapper<>();
+        /*recordAnalyzeQe.eq("is_deleted", "N");//不能加这个条件,文书模块模板类型名称生成时靠历史个数累加map_type,加上后,map_type可能会重复之前出现过的*/
+        recordAnalyzeQe.eq("hospital_id", hospitalId);
+        recordAnalyzeQe.eq("mode_id", modelId);
+        recordAnalyzeQe.eq(StringUtil.isNotBlank(recTitle), "rec_type", recTitle);
+        recordAnalyzeQe.notIn(ListUtil.isNotEmpty(excludeRecTitles), "rec_type", excludeRecTitles);
+        recordAnalyzeQe.like(StringUtil.isNotBlank(sex), "name", sex);
+        recordAnalyzeQe.select("id");
+        List<Long> recordAnalyzeIds = recordAnalyzeService.list(recordAnalyzeQe).stream().map(i -> i.getId()).collect(Collectors.toList());
+        if (ListUtil.isNotEmpty(recordAnalyzeIds)) {
+            QueryWrapper<RecordAnalyzeDetail> recordAnalyzeDetailQe = new QueryWrapper<>();
+            recordAnalyzeDetailQe.in("record_analyze_id", recordAnalyzeIds);
+            Map<Long, Set<String>> recordAnalyzeIdMapKeysMap = recordAnalyzeDetailService.list(recordAnalyzeDetailQe).stream().collect(Collectors.groupingBy(i -> i.getRecordAnalyzeId(), Collectors.mapping(i -> i.getMapKey(), Collectors.toSet())));
+            recordAnalyzeIdMapKeysMap.keySet().forEach(key -> {
+                alreadyExistsDataMap.put(recordAnalyzeIdMapKeysMap.get(key), key);
+            });
+
+            QueryWrapper<RecordAnalyzeExample> recordAnalyzeExampleQe = new QueryWrapper<>();
+            recordAnalyzeExampleQe.in("record_analyze_id", recordAnalyzeIds);
+            raBecsMap = recordAnalyzeExampleService.list(recordAnalyzeExampleQe).stream().collect(Collectors.groupingBy(i -> i.getRecordAnalyzeId(), Collectors.mapping(i -> i.getBehospitalCode(), Collectors.toSet())));
+        }
+
+        //总结出将要新增或者更新的数据
+        //1、需要新增的文书模块模板类型;2、需要更新的文书模块模板类型;3、需要新增的示例病历号;
+        List<RecordAnalyze> addRecordAnalyzeList = Lists.newArrayList();//需要新增的文书模块模板类型
+        List<RecordAnalyze> uptRecordAnalyzeList = Lists.newArrayList();//需要更新的文书模块模板类型
+        List<RecordAnalyzeExample> recordAnalyzeExampleList = Lists.newArrayList();//需要新增的示例病历号
+        Date now = DateUtil.now();
+        int type = alreadyExistsDataMap.size() + 1;
+        Set<String> behospitalCodeDeptInfoSet = null;
+        String sexAdd = "";
+        if (StringUtil.isNotBlank(sex)) {
+            sexAdd = sex + "-";
+        }
+        Long alreadyExistsRecordAnalyzeId;//已经分析生成过的文书模块模板类型id
+        Set<String> exitBecs = null;
+        for (Set<String> keys : keysBehospitalCodesMap.keySet()) {
+            if (keys.size() == 0) {
+                continue;
+            }
+            alreadyExistsRecordAnalyzeId = alreadyExistsDataMap.get(keys);
+            behospitalCodeDeptInfoSet = keysBehospitalCodesMap.get(keys).stream().distinct().map(bec -> behospitalCodeDeptInfoMap.get(bec)).collect(Collectors.toSet());
+            RecordAnalyze recordAnalyze = new RecordAnalyze();
+            if (alreadyExistsRecordAnalyzeId == null) {
+                recordAnalyze.setName(modeName + "-" + recTitle + "-" + sexAdd + type);
+                recordAnalyze.setHospitalId(hospitalId);
+                recordAnalyze.setModeId(modelId);
+                recordAnalyze.setModeName(modeName);
+                recordAnalyze.setRecType(recTitle);
+                recordAnalyze.setBehospitalCodes(behospitalCodeDeptInfoSet.stream().collect(Collectors.joining(";")));
+                recordAnalyze.setMapType(type + "");
+                recordAnalyze.setMapKeys(keys.stream().collect(Collectors.joining(",")));
+                recordAnalyze.setGmtCreate(now);
+                recordAnalyze.setGmtModified(now);
+                addRecordAnalyzeList.add(recordAnalyze);
+                type++;
+            } else {
+                if (StringUtil.isNotBlank(recordAnalyze.getBehospitalCodes())) {
+                    behospitalCodeDeptInfoSet.addAll(Sets.newHashSet(recordAnalyze.getBehospitalCodes().split(";")));
+                }
+                recordAnalyze.setId(alreadyExistsRecordAnalyzeId);
+                recordAnalyze.setBehospitalCodes(behospitalCodeDeptInfoSet.stream().collect(Collectors.joining(";")));
+                recordAnalyze.setGmtModified(now);
+                uptRecordAnalyzeList.add(recordAnalyze);
+
+                exitBecs = raBecsMap.get(alreadyExistsRecordAnalyzeId);
+                for (String bhrec : keysBehospitalCodesMap.get(keys).stream().distinct().collect(Collectors.toList())) {
+                    if (exitBecs == null || !exitBecs.contains(bhrec)) {
+                        RecordAnalyzeExample recordAnalyzeExample = new RecordAnalyzeExample();
+                        recordAnalyzeExample.setRecordAnalyzeId(alreadyExistsRecordAnalyzeId);
+                        recordAnalyzeExample.setBehospitalCode(bhrec);
+                        recordAnalyzeExampleList.add(recordAnalyzeExample);
+                    }
+                }
+            }
+        }
+
+        //进行数据新增或者更新
+        if (ListUtil.isNotEmpty(addRecordAnalyzeList)) {
+            recordAnalyzeService.saveBatch(addRecordAnalyzeList);
+            List<RecordAnalyzeDetail> recordAnalyzeDetailList = Lists.newArrayList();//需要新增的map_key
+            List<Abnormal> abnormalList = Lists.newArrayList();//需要新增的异常记录
+            addRecordAnalyzeList.forEach(raly -> {
+                Set<String> mapKeySet = Sets.newHashSet(raly.getMapKeys().split(","));
+                mapKeySet.forEach(mky -> {
+                    RecordAnalyzeDetail recordAnalyzeDetail = new RecordAnalyzeDetail();
+                    recordAnalyzeDetail.setRecordAnalyzeId(raly.getId());
+                    recordAnalyzeDetail.setMapKey(mky);
+                    recordAnalyzeDetailList.add(recordAnalyzeDetail);
+                });
+
+                keysBehospitalCodesMap.get(mapKeySet).stream().distinct().forEach(bocd -> {
+                    RecordAnalyzeExample recordAnalyzeExample = new RecordAnalyzeExample();
+                    recordAnalyzeExample.setRecordAnalyzeId(raly.getId());
+                    recordAnalyzeExample.setBehospitalCode(bocd);
+                    recordAnalyzeExampleList.add(recordAnalyzeExample);
+                });
+
+                keysBehospitalCodesMap.get(mapKeySet).forEach(bocd -> {
+                    Abnormal abnormal = new Abnormal();
+                    abnormal.setHospitalId(hospitalId);
+                    abnormal.setBehospitalCode(bocd);
+                    abnormal.setType(3);
+                    abnormal.setStatus(0);
+                    abnormal.setDescription(raly.getName());
+                    abnormal.setGmtCreate(now);
+                    abnormal.setGmtModified(now);
+                    abnormalList.add(abnormal);
+                });
+            });
+            recordAnalyzeDetailService.saveBatch(recordAnalyzeDetailList);
+            abnormalService.saveBatch(abnormalList);
+        }
+        if (ListUtil.isNotEmpty(uptRecordAnalyzeList)) {
+            recordAnalyzeService.updateBatchById(uptRecordAnalyzeList);
+        }
+        if (ListUtil.isNotEmpty(recordAnalyzeExampleList)) {
+            recordAnalyzeExampleService.saveBatch(recordAnalyzeExampleList);
+        }
+    }
+
+    private Set<String> getKeys(long hospitalId, long modelId, String recTitle, String sex, String xml) throws Exception {
+        Set<String> keys = new HashSet<>();
+        if (hospitalId == 1) {
+            keys.addAll(CxXmlUtil.firstLevelNodeValue(xml).keySet());
+        } else if (hospitalId == 3) {
+            keys.addAll(TzXmlUtil.getXmlToMapForTZ(xml).keySet());
+        }
+        if (keys.size() > 0) {
+            if (StringUtil.isNotBlank(sex)) {
+                keys.add(sex);
+            }
+
+            keys.add("mode_id=" + modelId);
+            if (StringUtil.isNotBlank(recTitle)) {
+                keys.add("rec_title=" + recTitle);
+            }
+        }
+        return keys;
+    }
+
+}

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/comsis/XmlUtil.java

@@ -1,4 +1,4 @@
-package com.lantone.qc.trans.comsis;
+package com.lantone.qc.dbanaly.facade.comsis;
 
 import com.lantone.qc.pub.util.EnDecodeUtil;
 

+ 51 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/taizhou/TaiZhouXmlDataAnalysisFacade.java

@@ -0,0 +1,51 @@
+package com.lantone.qc.dbanaly.facade.taizhou;
+
+import com.google.common.collect.Lists;
+import com.lantone.qc.dbanaly.facade.comsis.XmlDataAnalysisFacade;
+import com.lantone.qc.dbanaly.lt.facade.ModeFacade;
+import com.lantone.qc.pub.util.ListUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2020/6/3 16:44
+ */
+@Slf4j
+@Component
+public class TaiZhouXmlDataAnalysisFacade {
+    @Autowired
+    private XmlDataAnalysisFacade xmlDataAnalysisFacade;
+    @Autowired
+    private ModeFacade modeFacade;
+
+    public List<String> analyzeXml(List<Long> modeIds) {
+        List<String> retList = Lists.newArrayList();
+        if (ListUtil.isEmpty(modeIds)) {
+            modeIds = Arrays.asList(1l, 2l, 3l, 4l, 5l, 7l, 8l, 9l, 10l, 11l, 17l, 18l, 19l, 22l, 23l, 24l, 25l, 26l, 27l, 28l, 29l, 30l, 31l, 32l, 34l, 35l);
+        }
+        Map<Long, String> modeMap = modeFacade.getModeMap();
+        List<String> recTitles = null;
+        String modeName = null;
+        for (Long modeId : modeIds) {
+            recTitles = xmlDataAnalysisFacade.getRecTitles(3l, modeId);
+            modeName = modeMap.get(modeId);
+            for (String recTitle : recTitles) {
+                try {
+                    xmlDataAnalysisFacade.analysisByRecTitle(3l, modeId, modeName, recTitle, null, "");
+                } catch (Exception e) {
+                    retList.add("[台州-" + modeId + "-" + recTitle + "]执行失败");
+                    log.error("[台州-" + modeId + "-" + recTitle + "]执行失败--" + e.getMessage(), e);
+                }
+            }
+        }
+        return retList;
+    }
+
+}

+ 57 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/taizhou/TzXmlUtil.java

@@ -0,0 +1,57 @@
+package com.lantone.qc.dbanaly.facade.taizhou;
+
+import com.google.common.collect.Maps;
+import com.lantone.qc.pub.util.StringUtil;
+import com.lantone.qc.dbanaly.facade.comsis.XmlUtil;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: xml解析工具
+ * @author: rengb
+ * @time: 2020/3/28 14:23
+ */
+public class TzXmlUtil {
+
+    /**
+     * getText()获取当前节点的文本内容,getStringValue()获取所有子节点拼接后的文本内容
+     *
+     * @param xml
+     * @return
+     */
+
+    public static Map<String, String> getXmlToMapForTZ(String xml) {
+        Map<String, String> retMap = Maps.newLinkedHashMap();
+        try {
+            Document doc = DocumentHelper.parseText(XmlUtil.xmlErrorCorrection(xml));
+            List<Element> emrTermElements = doc.getRootElement().element("TermList").elements("EMR-TERM");
+            String ename, setnomark, text;
+            for (Element emrTermElement : emrTermElements) {
+                ename = emrTermElement.attributeValue("ename");
+                if (StringUtil.isBlank(ename)) {
+                    continue;
+                }
+                //                ename = StringUtil.removeBlank(ename);
+                setnomark = emrTermElement.attributeValue("setnomark");
+                setnomark = setnomark == null ? "" : setnomark;
+                setnomark = setnomark.trim().replaceAll("&nbsp;", "");
+                text = emrTermElement.getStringValue().trim().replaceAll("&nbsp;", "");
+                if (StringUtil.isBlank(retMap.get(ename))) {
+                    if (StringUtil.isBlank(text)) {
+                        retMap.put(ename, setnomark);
+                    } else {
+                        retMap.put(ename, text);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return XmlUtil.correctMapOfXml(retMap);
+    }
+
+}

+ 7 - 1
dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/entity/MedicalRecord.java

@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author rgb
- * @since 2020-05-29
+ * @since 2020-06-03
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -70,6 +70,12 @@ public class MedicalRecord implements Serializable {
     @TableField("rec_title")
     private String recTitle;
 
+    /**
+     * 模板处理状态(0:未处理,1:已处理)
+     */
+    @TableField("status")
+    private Integer status;
+
     /**
      * 是否删除,N:未删除,Y:删除
      */

+ 81 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/entity/ModelHospital.java

@@ -0,0 +1,81 @@
+package com.lantone.qc.dbanaly.lt.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author rgb
+ * @since 2020-06-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("qc_model_hospital")
+public class ModelHospital implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @TableField("hospital_id")
+    private Long hospitalId;
+
+    @TableField("hospital_model_name")
+    private String hospitalModelName;
+
+    @TableField("stand_model_id")
+    private Long standModelId;
+
+    @TableField("stand_model_name")
+    private String standModelName;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    @TableField("is_deleted")
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    @TableField("gmt_modified")
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    @TableField("creator")
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    @TableField("modifier")
+    private String modifier;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+
+}

+ 44 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/entity/RecordAnalyzeExample.java

@@ -0,0 +1,44 @@
+package com.lantone.qc.dbanaly.lt.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 医院病历文书类型细分类示例表
+ * </p>
+ *
+ * @author rgb
+ * @since 2020-06-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("med_record_analyze_example")
+public class RecordAnalyzeExample implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 主表ID
+     */
+    @TableField("record_analyze_id")
+    private Long recordAnalyzeId;
+
+    /**
+     * 病人住院ID
+     */
+    @TableField("behospital_code")
+    private String behospitalCode;
+
+
+}

+ 25 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/facade/ModeFacade.java

@@ -0,0 +1,25 @@
+package com.lantone.qc.dbanaly.lt.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.lantone.qc.dbanaly.lt.entity.Mode;
+import com.lantone.qc.dbanaly.lt.service.impl.ModeServiceImpl;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2020/6/4 9:53
+ */
+@Component
+public class ModeFacade extends ModeServiceImpl {
+
+    public Map<Long, String> getModeMap() {
+        QueryWrapper<Mode> modeQe = new QueryWrapper<>();
+        modeQe.eq("is_deleted", "N");
+        return list(modeQe).stream().collect(Collectors.toMap(i -> i.getId(), i -> i.getName()));
+    }
+
+}

+ 34 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/facade/ModelHospitalFacade.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.dbanaly.lt.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.lantone.qc.dbanaly.lt.entity.ModelHospital;
+import com.lantone.qc.dbanaly.lt.service.impl.ModelHospitalServiceImpl;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2020/6/4 17:13
+ */
+@Component
+public class ModelHospitalFacade extends ModelHospitalServiceImpl {
+
+    public List<String> getRecTitles(long hospitalId, long modelId) {
+        QueryWrapper<ModelHospital> qcModelHospitalQe = new QueryWrapper<>();
+        qcModelHospitalQe.eq("hospital_id", hospitalId);
+        qcModelHospitalQe.eq("stand_model_id", modelId);
+        qcModelHospitalQe.select("hospital_model_name");
+        List<String> recTitles = list(qcModelHospitalQe)
+                .stream()
+                .map(i -> i.getHospitalModelName())
+                .filter(i -> StringUtil.isNotBlank(i))
+                .distinct()
+                .collect(Collectors.toList());
+        return recTitles;
+    }
+
+}

+ 1 - 1
dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/mapper/MedicalRecordMapper.java

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * </p>
  *
  * @author rgb
- * @since 2020-05-29
+ * @since 2020-06-03
  */
 public interface MedicalRecordMapper extends BaseMapper<MedicalRecord> {
 

+ 16 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/mapper/ModelHospitalMapper.java

@@ -0,0 +1,16 @@
+package com.lantone.qc.dbanaly.lt.mapper;
+
+import com.lantone.qc.dbanaly.lt.entity.ModelHospital;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author rgb
+ * @since 2020-06-04
+ */
+public interface ModelHospitalMapper extends BaseMapper<ModelHospital> {
+
+}

+ 16 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/mapper/RecordAnalyzeExampleMapper.java

@@ -0,0 +1,16 @@
+package com.lantone.qc.dbanaly.lt.mapper;
+
+import com.lantone.qc.dbanaly.lt.entity.RecordAnalyzeExample;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 医院病历文书类型细分类示例表 Mapper 接口
+ * </p>
+ *
+ * @author rgb
+ * @since 2020-06-03
+ */
+public interface RecordAnalyzeExampleMapper extends BaseMapper<RecordAnalyzeExample> {
+
+}

+ 1 - 1
dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/service/MedicalRecordService.java

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * </p>
  *
  * @author rgb
- * @since 2020-05-29
+ * @since 2020-06-03
  */
 public interface MedicalRecordService extends IService<MedicalRecord> {
 

+ 16 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/service/ModelHospitalService.java

@@ -0,0 +1,16 @@
+package com.lantone.qc.dbanaly.lt.service;
+
+import com.lantone.qc.dbanaly.lt.entity.ModelHospital;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author rgb
+ * @since 2020-06-04
+ */
+public interface ModelHospitalService extends IService<ModelHospital> {
+
+}

+ 16 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/service/RecordAnalyzeExampleService.java

@@ -0,0 +1,16 @@
+package com.lantone.qc.dbanaly.lt.service;
+
+import com.lantone.qc.dbanaly.lt.entity.RecordAnalyzeExample;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 医院病历文书类型细分类示例表 服务类
+ * </p>
+ *
+ * @author rgb
+ * @since 2020-06-03
+ */
+public interface RecordAnalyzeExampleService extends IService<RecordAnalyzeExample> {
+
+}

+ 1 - 1
dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/service/impl/MedicalRecordServiceImpl.java

@@ -12,7 +12,7 @@ import org.springframework.stereotype.Service;
  * </p>
  *
  * @author rgb
- * @since 2020-05-29
+ * @since 2020-06-03
  */
 @Service
 public class MedicalRecordServiceImpl extends ServiceImpl<MedicalRecordMapper, MedicalRecord> implements MedicalRecordService {

+ 20 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/service/impl/ModelHospitalServiceImpl.java

@@ -0,0 +1,20 @@
+package com.lantone.qc.dbanaly.lt.service.impl;
+
+import com.lantone.qc.dbanaly.lt.entity.ModelHospital;
+import com.lantone.qc.dbanaly.lt.mapper.ModelHospitalMapper;
+import com.lantone.qc.dbanaly.lt.service.ModelHospitalService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author rgb
+ * @since 2020-06-04
+ */
+@Service
+public class ModelHospitalServiceImpl extends ServiceImpl<ModelHospitalMapper, ModelHospital> implements ModelHospitalService {
+
+}

+ 20 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/service/impl/RecordAnalyzeExampleServiceImpl.java

@@ -0,0 +1,20 @@
+package com.lantone.qc.dbanaly.lt.service.impl;
+
+import com.lantone.qc.dbanaly.lt.entity.RecordAnalyzeExample;
+import com.lantone.qc.dbanaly.lt.mapper.RecordAnalyzeExampleMapper;
+import com.lantone.qc.dbanaly.lt.service.RecordAnalyzeExampleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 医院病历文书类型细分类示例表 服务实现类
+ * </p>
+ *
+ * @author rgb
+ * @since 2020-06-03
+ */
+@Service
+public class RecordAnalyzeExampleServiceImpl extends ServiceImpl<RecordAnalyzeExampleMapper, RecordAnalyzeExample> implements RecordAnalyzeExampleService {
+
+}

+ 21 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/vo/AnalyzeXmlVO.java

@@ -0,0 +1,21 @@
+package com.lantone.qc.dbanaly.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2020/6/4 14:12
+ */
+@Getter
+@Setter
+public class AnalyzeXmlVO {
+
+    private Long hospitalId;
+
+    private List<Long> modeIds;
+
+}

+ 3 - 1
dbanaly/src/main/resources/application-db.yml

@@ -45,4 +45,6 @@ spring:
 mybatis-plus:
   type-aliases-package: com.lantone.qc.dbanaly.lt.entity
   configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+xml-is-encryped: true

+ 5 - 0
dbanaly/src/main/resources/mapper/lt/ModelHospitalMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.lantone.qc.dbanaly.lt.mapper.ModelHospitalMapper">
+
+</mapper>

+ 5 - 0
dbanaly/src/main/resources/mapper/lt/RecordAnalyzeExampleMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.lantone.qc.dbanaly.lt.mapper.RecordAnalyzeExampleMapper">
+
+</mapper>

+ 5 - 5
dbanaly/src/test/java/com/lantone/qc/dbanaly/MysqlCodeGenerator.java

@@ -85,10 +85,10 @@ public class MysqlCodeGenerator {
         strategy.setEntityTableFieldAnnotationEnable(true);
         strategy.setControllerMappingHyphenStyle(true);
         strategy.setRestControllerStyle(true);
-       /* strategy.setTablePrefix("med_");
+        /*strategy.setTablePrefix("med_");
         strategy.setInclude(
                 "med_behospital_info",
-                "med_medical_record",
+                "med_record_analyze_example"
                 "med_medical_record_content",
                 "med_module_mapping",
                 "med_record_analyze",
@@ -96,9 +96,9 @@ public class MysqlCodeGenerator {
         );*/
         strategy.setTablePrefix("qc_");
         strategy.setInclude(
-                "qc_abnormal",
-                "qc_mode",
-                "qc_module_info"
+//                "qc_abnormal",
+//                "qc_mode",
+                "qc_model_hospital"
         );
         mpg.setStrategy(strategy);
 

+ 10 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0070.java

@@ -11,6 +11,7 @@ import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -27,6 +28,15 @@ public class BEH0070 extends QCCatalogue {
             status.set("0");
             return;
         }
+        Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+        String familyText = structureMap.get("家族史");
+        if (StringUtil.isNotBlank(familyText)) {
+            familyText = StringUtil.removeBlank(familyText);
+            if (familyText.contains("家族遗传病") || familyText.contains("结核")) {
+                status.set("0");
+                return;
+            }
+        }
         if (inputInfo.getBeHospitalizedDoc().getFamilyLabel() != null) {
             FamilyLabel familyLabel = inputInfo.getBeHospitalizedDoc().getFamilyLabel();
             List<Family> families = familyLabel.getFamilies();

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

@@ -52,6 +52,9 @@ public class BEH0397 extends QCCatalogue {
             maritalText = maritalLabel.getText();
             familiesMl = maritalLabel.getFamily();
         }
+        if (StringUtil.isNotBlank(familyText)){
+            familyText = StringUtil.removeBlank(familyText);
+        }
         if ((StringUtil.isNotBlank(familyText) && (familyText.contains("父母") || familyText.contains("详见原病历")))
                 || (StringUtil.isNotBlank(maritalText) && (maritalText.contains("父母") || maritalText.contains("详见原病历")))) {
             status.set("0");

+ 38 - 11
kernel/src/main/java/com/lantone/qc/kernel/catalogue/dutyshiftsystem/DUT0296.java

@@ -1,6 +1,7 @@
 package com.lantone.qc.kernel.catalogue.dutyshiftsystem;
 
 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;
@@ -31,19 +32,17 @@ public class DUT0296 extends QCCatalogue {
         if (leaveHospitalDoc == null) {
             return;
         }
+
+        List<StagesSummaryDoc> stagesSummaryDocs = inputInfo.getStagesSummaryDocs();
+        TransferRecordDoc transferRecordDoc = inputInfo.getTransferRecordDocs();//转科记录
+
         Map<String, String> structureMap_leave = leaveHospitalDoc.getStructureMap();
         String beDate = structureMap_leave.get("入院时间"); //2019-12-07 08:48
         String leaveDate = structureMap_leave.get("出院时间");//2019-12-10 10:49
-        if (StringUtil.isBlank(beDate) || StringUtil.isBlank(leaveDate)) {
-            return;
-        }
-        List<StagesSummaryDoc> stagesSummaryDocs = inputInfo.getStagesSummaryDocs();
-
-        TransferRecordDoc transferRecordDoc = inputInfo.getTransferRecordDocs();//转科记录
         if (transferRecordDoc != null) {
             List<TransferRecordDoc> allTransferDocs = transferRecordDoc.getAllTransferDocs();
             String firstOutRecordDate = getFirstOutRecordDate(allTransferDocs);
-            if (StringUtil.isNotBlank(firstOutRecordDate)) {
+            if (StringUtil.isNotBlank(firstOutRecordDate) && StringUtil.isNotBlank(beDate)) {
                 //入院时间到第一次转出时间,大于30天则报错
                 int dateDifference = dateDifference(beDate, firstOutRecordDate);
                 if (dateDifference > 30 && (stagesSummaryDocs == null || stagesSummaryDocs.size() == 0)) {
@@ -52,7 +51,7 @@ public class DUT0296 extends QCCatalogue {
                 }
             }
             String lastInrecordDate = getLastInrecordDate(allTransferDocs);
-            if (StringUtil.isNotBlank(lastInrecordDate)) {
+            if (StringUtil.isNotBlank(lastInrecordDate) && StringUtil.isNotBlank(leaveDate)) {
                 //最后一次转入时间到出院时间,大于30天则报错
                 int dateDifference = dateDifference(lastInrecordDate, leaveDate);
                 if (dateDifference > 30 && (stagesSummaryDocs == null || stagesSummaryDocs.size() == 0)) {
@@ -71,11 +70,35 @@ public class DUT0296 extends QCCatalogue {
             }
         } else {
             //没有转科记录,直接入院时间和出院时间比
-            int dateDifference = dateDifference(beDate, leaveDate);
-            if (dateDifference >= 31 && (stagesSummaryDocs == null || stagesSummaryDocs.size() == 0)) {
-                status.set("-1");
+            if (StringUtil.isNotBlank(beDate) && StringUtil.isNotBlank(leaveDate)) {
+                int dateDifference = dateDifference(beDate, leaveDate);
+                if (dateDifference > 30 && (stagesSummaryDocs == null || stagesSummaryDocs.size() == 0)) {
+                    status.set("-1");
+                }
+                if (!checkDays(stagesSummaryDocs, dateDifference)) {
+                    status.set("-1");
+                    return;
+                }
             }
+
+            String lengthOfStay = structureMap_leave.get("住院天数");
+            if (StringUtil.isNotBlank(lengthOfStay)) {
+                int lengthOfStayNum = onlyNum(lengthOfStay);
+                if (!checkDays(stagesSummaryDocs, lengthOfStayNum)) {
+                    status.set("-1");
+                }
+            }
+
         }
+
+    }
+
+    private boolean checkDays(List<StagesSummaryDoc> stagesSummaryDocs, int dateDifference) {
+        if (stagesSummaryDocs != null && stagesSummaryDocs.size() > 0) {
+            double sum = Math.floor(dateDifference / 30);
+            return sum == stagesSummaryDocs.size();
+        }
+        return false;
     }
 
     /**
@@ -159,4 +182,8 @@ public class DUT0296 extends QCCatalogue {
         }
         return day;
     }
+
+    private int onlyNum (String str){
+        return Integer.parseInt(str.replaceAll("[^0-9]",""));
+    }
 }

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0199.java

@@ -5,6 +5,7 @@ import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.Content;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -30,7 +31,7 @@ public class FIRP0199 extends QCCatalogue {
 
              */
             String newbornWeight = firstpageStructureMap.get(Content.newbornWeight);
-            if (CatalogueUtil.isEmpty(newbornWeight)) {
+            if (StringUtil.isBlank(newbornWeight)) {
                 status.set("-1");
             }
         }

+ 2 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0274.java

@@ -21,11 +21,10 @@ public class FIRP0274 extends QCCatalogue {
         status.set("0");
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            String age = firstpageStructureMap.get(Content.age);
+            /*String age = firstpageStructureMap.get(Content.age);*/
             String infantAgeMonths = firstpageStructureMap.get(Content.newbornAgeMonths);
             String infantAgeDays = firstpageStructureMap.get(Content.newbornAgeDays);
-            if (CatalogueUtil.isEmpty(age)
-                    && CatalogueUtil.isEmpty(infantAgeMonths)
+            if (CatalogueUtil.isEmpty(infantAgeMonths)
                     && CatalogueUtil.isEmpty(infantAgeDays)) {
                 status.set("-1");
             }

+ 0 - 5
kernel/src/main/java/com/lantone/qc/kernel/web/controller/QCController.java

@@ -37,11 +37,6 @@ public class QCController {
     public Response<OutputInfo> extract(@RequestBody QueryVo queryVo) {
         Response response = new Response();
         try {
-//            Map<String, String> map1 = new LinkedHashMap<>();
-//            map1.put("code","FIRP02904");
-//            map1.put("precond","");
-//            map1.put("name","辅助检查未注明时间");
-//            queryVo.getInputCatalogueMap().put("FIRP02904",map1);
             response.setData(qCAnalysis.anlysis(queryVo));
         } catch (AIException aie) {
             response.setRet(-1);

+ 0 - 1
kernel/src/main/java/com/lantone/qc/kernel/web/controller/QCTestController.java

@@ -11,7 +11,6 @@ import com.lantone.qc.pub.model.vo.QueryVo;
 import com.lantone.qc.pub.res.Response;
 import com.lantone.qc.pub.util.FastJsonUtils;
 import com.lantone.qc.pub.util.PropertiesUtil;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;

+ 2 - 2
kernel/src/test/java/com/lantone/qc/kernel/ChangxDataImportApiTest.java

@@ -3,9 +3,9 @@ package com.lantone.qc.kernel;
 import com.lantone.qc.pub.jdbc.MysqlJdbc;
 import com.lantone.qc.pub.util.FastJsonUtils;
 import com.lantone.qc.pub.util.PropertiesUtil;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.changx.util.CxXmlUtilTemp;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 import org.apache.commons.lang3.StringUtils;
 
 import java.io.ByteArrayOutputStream;

+ 0 - 2
kernel/src/test/java/com/lantone/qc/kernel/ImportTaizDataTest.java

@@ -3,8 +3,6 @@ package com.lantone.qc.kernel;
 
 import com.lantone.qc.pub.jdbc.MysqlJdbc;
 import com.lantone.qc.pub.util.PropertiesUtil;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
 import jxl.Cell;
 import jxl.Sheet;
 import jxl.Workbook;

+ 1 - 2
kernel/src/test/java/com/lantone/qc/kernel/TaizDataImportApiTest.java

@@ -3,9 +3,8 @@ package com.lantone.qc.kernel;
 import com.lantone.qc.pub.jdbc.MysqlJdbc;
 import com.lantone.qc.pub.util.FastJsonUtils;
 import com.lantone.qc.pub.util.PropertiesUtil;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
 import com.lantone.qc.trans.changx.util.CxXmlUtilTemp;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 import org.apache.commons.lang3.StringUtils;
 
 import java.io.ByteArrayOutputStream;

+ 2 - 2
public/src/main/java/com/lantone/qc/pub/Content.java

@@ -128,8 +128,8 @@ public class Content {
     public static final String age = "年龄";
     public static final String nationality = "国籍";
     public static final String birth_date = "出生日期";
-    public static final String newbornAgeMonths = "新生儿年龄月数";
-    public static final String newbornAgeDays = "新生儿年龄天数";
+    public static final String newbornAgeMonths = "新生儿出生月数";
+    public static final String newbornAgeDays = "新生儿出生天数";
     public static final String newbornWeight = "新生儿出生体重";
     public static final String newbornAdmisWeight = "新生儿入院体重";
     public static final String birth_address = "出生地";

+ 73 - 0
public/src/main/java/com/lantone/qc/pub/util/EncrypDES.java

@@ -0,0 +1,73 @@
+package com.lantone.qc.pub.util;
+
+import org.apache.commons.codec.binary.Base64;
+
+import javax.crypto.Cipher;
+import javax.crypto.SecretKey;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.DESKeySpec;
+
+/**
+ * @ClassName org.diagbot.pub.utils.security.EncrypDES
+ * @Description TODO
+ * @Author fyeman
+ * @Date 2019/2/22/022 14:44
+ * @Version 1.0
+ **/
+public class EncrypDES {
+    //随机加密串
+    private String key = "AUYEJHHH2019";
+    // SecretKey 负责保存对称密钥
+    private SecretKey deskey;
+    // Cipher负责完成加密或解密工作
+    private Cipher c;
+    // 该字节数组负责保存加密的结果
+    private byte[] cipherByte;
+
+    public EncrypDES() throws Exception {
+        DESKeySpec desKey = new DESKeySpec(key.getBytes("utf-8"));
+        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
+        // 生成密钥
+        deskey = keyFactory.generateSecret(desKey);
+        // 生成Cipher对象,指定其支持的DES算法
+        c = Cipher.getInstance("DES");
+    }
+
+    /**
+     * 对字符串加密
+     *
+     * @param str
+     * @return
+     */
+    public String encrytor(String str) {
+        try {
+            // 根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式
+            c.init(Cipher.ENCRYPT_MODE, deskey);
+            byte[] src = str.getBytes("utf-8");
+            // 加密,结果保存进cipherByte
+            cipherByte = c.doFinal(src);
+            return Base64.encodeBase64String(cipherByte);
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    /**
+     * 对字符串解密
+     *
+     * @param str
+     * @return
+     */
+    public String decryptor(String str) {
+        try {
+            byte[] buff = Base64.decodeBase64(str);
+            // 根据密钥,对Cipher对象进行初始化,DECRYPT_MODE表示加密模式
+            c.init(Cipher.DECRYPT_MODE, deskey);
+            cipherByte = c.doFinal(buff);
+            return new String(cipherByte, "utf-8");
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+}

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxBeHospitalizedDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 

+ 3 - 4
trans/src/main/java/com/lantone/qc/trans/changx/ChangxClinicBloodEffectDocTrans.java

@@ -1,13 +1,11 @@
 package com.lantone.qc.trans.changx;
 
 import com.google.common.collect.Lists;
-import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
 import com.lantone.qc.pub.model.doc.ClinicBloodEffectDoc;
-import com.lantone.qc.pub.model.doc.ClinicalBloodDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;
@@ -63,6 +61,7 @@ public class ChangxClinicBloodEffectDocTrans extends ModelDocTrans {
             "记录日期=记录时间",
             "签名++++=记录医师",
             "签名时间=",
-            "输血效果评价=输注后效果评价"
+            "输血效果评价=输注后效果评价",
+            "日常病程记录++++文本框=输注后效果评价"
     );
 }

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxClinicalBloodDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.ClinicalBloodDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxConsultationDocTrans.java

@@ -12,7 +12,7 @@ import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.MapUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxCrisisValueReportDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.CrisisValueReportDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxCriticallyIllNoticeDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.CriticallyIllNoticeDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxDailyCourseRecordDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.DailyCourseRecordDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;
 

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxDeathCaseDiscussDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.DeathCaseDiscussDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxDeathRecordDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.DeathRecordDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxDifficultCaseDiscussDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.DifficultCaseDiscussDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxFirstCourseRecordDocTrans.java

@@ -6,7 +6,7 @@ import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxLeaveHospitalDocTrans.java

@@ -4,7 +4,7 @@ import com.google.common.collect.Lists;
 import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxOperationDocTrans.java

@@ -13,7 +13,7 @@ import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxPathologyShipDocTrans.java

@@ -4,7 +4,7 @@ import com.google.common.collect.Lists;
 import com.lantone.qc.pub.model.doc.PathologyShipDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 
 import java.util.List;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxRescueDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.RescueDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxStagesSummaryDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.StagesSummaryDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;

+ 12 - 2
trans/src/main/java/com/lantone/qc/trans/changx/ChangxThreeLevelWardDocTrans.java

@@ -2,14 +2,16 @@ package com.lantone.qc.trans.changx;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
+import com.lantone.qc.dbanaly.lt.facade.ModelHospitalFacade;
 import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
 import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
 import com.lantone.qc.pub.model.doc.ward.GeneralDoctorWardDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
+import com.lantone.qc.pub.util.SpringContextUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;
 import org.apache.commons.lang3.StringUtils;
@@ -26,8 +28,13 @@ import java.util.regex.Pattern;
  */
 public class ChangxThreeLevelWardDocTrans extends ModelDocTrans {
 
+    private List<String> recTitles;
+
     @Override
     public List<ThreeLevelWardDoc> extract(MedrecVo medrecVo) {
+        ModelHospitalFacade modelHospitalFacade = SpringContextUtil.getBean(ModelHospitalFacade.class);
+        recTitles = modelHospitalFacade.getRecTitles(1l, 4l);
+
         List<ThreeLevelWardDoc> retList = Lists.newArrayList();
         ThreeLevelWardDoc threeLevelWardDoc = new ThreeLevelWardDoc();
         List<Map<String, Object>> contentMaps = (List) medrecVo.getContent().get("content");
@@ -42,7 +49,10 @@ public class ChangxThreeLevelWardDocTrans extends ModelDocTrans {
         String content = contentMap.get("xmlText").toString();
         Map<String, String> xmlNodeValueMap = CxXmlUtil.firstLevelNodeValue(content);
         xmlNodeValueMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
-        //        xmlNodeValueMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
+        String recTitle = contentMap.get("recTitle").toString();
+//        if (recTitles.contains(recTitle)) {
+//            xmlNodeValueMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
+//        }
         Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(xmlNodeValueMap, keyContrasts);
         structureMap.put("查房日期", structureMap.get("记录时间"));
 

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxTransferRecordDocTrans.java

@@ -9,7 +9,7 @@ import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.changx.util.CxXmlUtil;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 
 import java.util.ArrayList;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouAnesthesiaRelatedDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.AnesthesiaRelatedDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouBeHospitalizedDocTrans.java

@@ -16,7 +16,7 @@ import com.lantone.qc.pub.model.label.VitalLabelSpecial;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 import org.apache.commons.lang3.StringUtils;
 
 import java.util.List;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouClinicBloodEffectDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.ClinicBloodEffectDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouClinicalBloodDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.ClinicalBloodDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouConsultationDocTrans.java

@@ -12,7 +12,7 @@ import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouCrisisValueReportDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.CrisisValueReportDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouCriticallyIllNoticeDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.CriticallyIllNoticeDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouDeathCaseDiscussDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.DeathCaseDiscussDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouDeathRecordDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.DeathRecordDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouDifficultCaseDiscussDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.DifficultCaseDiscussDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouDutyShiftSystemDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.DutyShiftSystemDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouFirstCourseRecordDocTrans.java

@@ -7,7 +7,7 @@ import com.lantone.qc.pub.util.MapUtil;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.Arrays;
 import java.util.List;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouInvasiveOperationDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.InvasiveOperationDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouLeaveHospitalDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouMedicalWritingDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.MedicalWritingDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouNursingSystemDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.NursingSystemDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouOperationDocTrans.java

@@ -14,7 +14,7 @@ import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouPathologyShipDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.PathologyShipDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouReasonableDiagnosisDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.ReasonableDiagnosisDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouRescueDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.RescueDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouSeriouslyIllNoticeDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.SeriouslyIllNoticeDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouStagesSummaryDocTrans.java

@@ -5,7 +5,7 @@ import com.lantone.qc.pub.model.doc.StagesSummaryDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouThreeLevelWardDocTrans.java

@@ -9,7 +9,7 @@ import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 import org.apache.commons.lang3.StringUtils;
 
 import java.util.List;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouTransferRecordDocTrans.java

@@ -10,7 +10,7 @@ import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.taizhou.util.TzXmlUtil;
+import com.lantone.qc.dbanaly.facade.taizhou.TzXmlUtil;
 
 import java.util.ArrayList;
 import java.util.Comparator;

+ 0 - 180
trans/src/main/java/com/lantone/qc/trans/taizhou/util/TzXmlUtil.java

@@ -1,180 +0,0 @@
-package com.lantone.qc.trans.taizhou.util;
-
-import com.google.common.collect.Maps;
-import com.lantone.qc.pub.util.StringUtil;
-import com.lantone.qc.trans.comsis.XmlUtil;
-import com.lantone.qc.trans.util.http.db.DBUtil;
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * @Description: xml解析工具
- * @author: rengb
- * @time: 2020/3/28 14:23
- */
-public class TzXmlUtil {
-
-    /**
-     * getText()获取当前节点的文本内容,getStringValue()获取所有子节点拼接后的文本内容
-     *
-     * @param xml
-     * @return
-     */
-
-    public static Map<String, String> getXmlToMapForTZ(String xml) {
-        Map<String, String> retMap = Maps.newLinkedHashMap();
-        try {
-            Document doc = DocumentHelper.parseText(XmlUtil.xmlErrorCorrection(xml));
-            List<Element> emrTermElements = doc.getRootElement().element("TermList").elements("EMR-TERM");
-            String ename, setnomark, text;
-            for (Element emrTermElement : emrTermElements) {
-                ename = emrTermElement.attributeValue("ename");
-                if (StringUtil.isBlank(ename)) {
-                    continue;
-                }
-//                ename = StringUtil.removeBlank(ename);
-                setnomark = emrTermElement.attributeValue("setnomark");
-                setnomark = setnomark == null ? "" : setnomark;
-                setnomark = setnomark.trim().replaceAll("&nbsp;","");
-                text = emrTermElement.getStringValue().trim().replaceAll("&nbsp;","");
-                if (StringUtil.isBlank(retMap.get(ename))) {
-                    if (StringUtil.isBlank(text)) {
-                        retMap.put(ename, setnomark);
-                    } else {
-                        retMap.put(ename, text);
-                    }
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return XmlUtil.correctMapOfXml(retMap);
-    }
-
-    /**
-     * getText()获取当前节点的文本内容,getStringValue()获取所有子节点拼接后的文本内容
-     * 需要转义
-     *
-     * @param xml
-     * @return
-     */
-
-    public static Map<String, String> getXmlToMapForTZWithReplace(String xml) {
-        Map<String, Object> res = getReplace(xml);
-        String contentReplace = (String) res.get("content");
-        Map<String, String> sourceMap = TzXmlUtil.getXmlToMapForTZ(contentReplace);
-        Boolean replace = (Boolean) res.get("repFlag"); // 获取是否要替换的标识
-        if (replace) {
-            Map<String, String> map = (Map) res.get("replaceMap");
-            for (String key : sourceMap.keySet()) {
-                String value = sourceMap.get(key);
-                if (StringUtil.isNotBlank(value)) {
-                    for (String key2 : map.keySet()) {
-                        value = value.replaceAll(key2, map.get(key2));
-                        sourceMap.put(key, value);
-                    }
-                }
-            }
-        }
-        return sourceMap;
-    }
-
-
-    /**
-     * @param content
-     * @return
-     */
-    public static Map<String, Object> getReplace(String content) {
-        Map<String, Object> res = new HashMap<>();
-        List<String> cutWord = new ArrayList<>();
-        List<String> res1 = new ArrayList<>(); // 包含/的标签</name>
-        List<String> res2 = new ArrayList<>();  // 不包含/的标签<name>
-        Map<String, String> replaceMap = new HashMap<>();
-
-        String pattern = "<.*?>";
-        // 按指定模式在字符串查找
-
-        // 创建 Pattern 对象
-        Pattern r = Pattern.compile(pattern);
-
-        // 现在创建 matcher 对象
-        Matcher m = r.matcher(content);
-        while (m.find()) {
-            String msg = m.group();
-            if (!msg.contains("=")) {
-                cutWord.add(msg);
-            }
-        }
-        // 分离<name> </name>这样的标签
-        for (String str : cutWord) {
-            if (str.contains("/")) {
-                res1.add(str.replaceAll("/", ""));
-            } else {
-                res2.add(str);
-            }
-        }
-
-        // 如果未找到匹配的标签,就表示是内容,先转义 < ,并记录到map中
-        for (String key : res2) {
-            if (!res1.contains(key)) {
-                replaceMap.put("#####" + key.substring(1), key);
-                content = content.replaceAll(key, "#####" + key.substring(1));
-            }
-        }
-        res.put("content", content);
-        res.put("replaceMap", replaceMap);
-        // 添加是否有替换的标识
-        if (replaceMap.size() > 0) {
-            res.put("repFlag", true);
-        } else {
-            res.put("repFlag", false);
-        }
-        return res;
-    }
-
-    /**
-     * 测试入口
-     *
-     * @param args
-     */
-    public static void main(String[] args) {
-
-        String case_number = "547209_3";
-        String mode_id = "4";
-        String nodePath = "//DocObjContent";
-        try {
-            Connection connection = DBUtil.getConnection();
-            Statement st = connection.createStatement();
-            ResultSet rs = null;
-            //执行查询
-            String sql = "select mode_id, origin_text from qc_model_mapping where case_number='" + case_number + "' and mode_id='" + mode_id + "' order by id";
-            rs = st.executeQuery(sql);
-            //遍历
-            while (rs.next()) {
-                String context = rs.getString("origin_text");
-                //                Map<String, String> sourceMap = CxXmlUtil.firstLevelNodeValue(nodePath, context);
-                Map<String, String> sourceMap = TzXmlUtil.getXmlToMapForTZ(context);
-                for (String key : sourceMap.keySet()) {
-                    System.out.println("\"" + key + "=\",");
-                }
-                break;
-            }
-            //进行资源释放
-            DBUtil.release(connection, st, rs);
-        } catch (SQLException e) {
-            e.printStackTrace();
-        }
-    }
-}