ソースを参照

文书记录处理状态

rengb 5 年 前
コミット
66e150b339

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

+ 7 - 1
dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/comsis/XmlDataAnalysisFacade.java

@@ -17,6 +17,7 @@ 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;
@@ -64,6 +65,9 @@ public class XmlDataAnalysisFacade {
     @Autowired
     @Qualifier("abnormalServiceImpl")
     private AbnormalServiceImpl abnormalService;
+    @Autowired
+    @Qualifier("modelHospitalServiceImpl")
+    private ModelHospitalServiceImpl modelHospitalService;
     @Value("${xml-is-encryped}")
     private boolean encryped;
 
@@ -78,7 +82,7 @@ public class XmlDataAnalysisFacade {
     }
 
     @Transactional(transactionManager = "db1TransactionManager")
-    public void analysisByRecTitle(long hospitalId, long modelId, String modeName, String recTitle, String sex) throws Exception {
+    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);
@@ -86,6 +90,7 @@ public class XmlDataAnalysisFacade {
         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)) {
@@ -181,6 +186,7 @@ public class XmlDataAnalysisFacade {
         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());

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

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

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

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

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

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

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

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

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