瀏覽代碼

文书记录处理状态

rengb 5 年之前
父節點
當前提交
370f0b16c2
共有 32 個文件被更改,包括 517 次插入27 次删除
  1. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/util/CxXmlUtil.java
  2. 294 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/comsis/XmlDataAnalysisFacade.java
  3. 44 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/entity/RecordAnalyzeExample.java
  4. 25 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/facade/ModeFacade.java
  5. 16 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/mapper/RecordAnalyzeExampleMapper.java
  6. 16 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/service/RecordAnalyzeExampleService.java
  7. 20 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/lt/service/impl/RecordAnalyzeExampleServiceImpl.java
  8. 3 1
      dbanaly/src/main/resources/application-db.yml
  9. 5 0
      dbanaly/src/main/resources/mapper/lt/RecordAnalyzeExampleMapper.xml
  10. 1 1
      dbanaly/src/test/java/com/lantone/qc/dbanaly/MysqlCodeGenerator.java
  11. 1 1
      kernel/src/test/java/com/lantone/qc/kernel/ChangxDataImportApiTest.java
  12. 0 2
      kernel/src/test/java/com/lantone/qc/kernel/ImportTaizDataTest.java
  13. 0 1
      kernel/src/test/java/com/lantone/qc/kernel/TaizDataImportApiTest.java
  14. 73 0
      public/src/main/java/com/lantone/qc/pub/util/EncrypDES.java
  15. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxBeHospitalizedDocTrans.java
  16. 1 3
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxClinicBloodEffectDocTrans.java
  17. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxClinicalBloodDocTrans.java
  18. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxConsultationDocTrans.java
  19. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxCrisisValueReportDocTrans.java
  20. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxCriticallyIllNoticeDocTrans.java
  21. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxDailyCourseRecordDocTrans.java
  22. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxDeathCaseDiscussDocTrans.java
  23. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxDeathRecordDocTrans.java
  24. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxDifficultCaseDiscussDocTrans.java
  25. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxFirstCourseRecordDocTrans.java
  26. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxLeaveHospitalDocTrans.java
  27. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxOperationDocTrans.java
  28. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxPathologyShipDocTrans.java
  29. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxRescueDocTrans.java
  30. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxStagesSummaryDocTrans.java
  31. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxThreeLevelWardDocTrans.java
  32. 1 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxTransferRecordDocTrans.java

+ 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;

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

@@ -0,0 +1,294 @@
+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.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.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.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 java.util.Date;
+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;
+    @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());
+    }
+
+    public void analysisByRecTitle(long hospitalId, long modelId, String modeName, String recTitle, 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.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>, Set<String>> keysBehospitalCodesMap = keysBehospitalCodeEntryList.stream().collect(Collectors.groupingBy(Map.Entry::getKey, Collectors.mapping(Map.Entry::getValue, Collectors.toSet())));
+
+        //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");
+        recordAnalyzeQe.eq("hospital_id", hospitalId);
+        recordAnalyzeQe.eq("mode_id", modelId);
+        recordAnalyzeQe.eq(StringUtil.isNotBlank(recTitle), "rec_type", recTitle);
+        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、需要新增的map_key;4、需要新增的示例病历号;
+        List<RecordAnalyze> addRecordAnalyzeList = Lists.newArrayList();//需要新增的文书模块模板类型
+        List<RecordAnalyze> uptRecordAnalyzeList = Lists.newArrayList();//需要更新的文书模块模板类型
+        List<RecordAnalyzeDetail> recordAnalyzeDetailList = Lists.newArrayList();//需要新增的map_key
+        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().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)) {
+                    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);
+            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);
+                });
+                recordAnalyzeDetailService.saveBatch(recordAnalyzeDetailList);
+                keysBehospitalCodesMap.get(mapKeySet).forEach(bocd -> {
+                    RecordAnalyzeExample recordAnalyzeExample = new RecordAnalyzeExample();
+                    recordAnalyzeExample.setRecordAnalyzeId(raly.getId());
+                    recordAnalyzeExample.setBehospitalCode(bocd);
+                    recordAnalyzeExampleList.add(recordAnalyzeExample);
+                });
+            });
+        }
+        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 = Sets.newHashSet();
+        if (hospitalId == 1) {
+            keys = CxXmlUtil.firstLevelNodeValue(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;
+    }
+
+}

+ 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()));
+    }
+
+}

+ 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> {
+
+}

+ 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> {
+
+}

+ 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 {
+
+}

+ 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/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>

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

@@ -88,7 +88,7 @@ public class MysqlCodeGenerator {
         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",

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

@@ -3,7 +3,7 @@ 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 org.apache.commons.lang3.StringUtils;

+ 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;

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

@@ -3,7 +3,6 @@ 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 org.apache.commons.lang3.StringUtils;

+ 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;
 

+ 1 - 3
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;

+ 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;

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

@@ -9,7 +9,7 @@ import com.lantone.qc.pub.model.doc.ward.GeneralDoctorWardDoc;
 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;
 import org.apache.commons.lang3.StringUtils;

+ 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;