Jelajahi Sumber

加入长兴特殊算法

gaodm 5 tahun lalu
induk
melakukan
4847d54158

+ 23 - 1
doc/003.20200515第3期/qc_init.sql

@@ -15,4 +15,26 @@ CREATE TABLE `qc_abnormal` (
   `status` int(11) NOT NULL DEFAULT '0' COMMENT '状态(0:未处理,1:已处理)',
   `remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='异常数据监控信息';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='异常数据监控信息';
+
+DROP TABLE IF EXISTS `med_qcresult_cases`;
+CREATE TABLE `med_qcresult_cases` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT,
+  `hospital_id` bigint(20) DEFAULT '0' COMMENT '医院ID',
+  `behospital_code` varchar(255) NOT NULL DEFAULT '' COMMENT '病人住院ID',
+  `cases_id` bigint(20) DEFAULT '0' COMMENT '数据模块ID(0:其他模块)',
+  `score_res` decimal(5,1) NOT NULL DEFAULT '0.0' COMMENT '最后得分',
+  `level` varchar(20) NOT NULL DEFAULT '' COMMENT '等级',
+  `is_deleted` char(1) NOT NULL DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+  `gmt_create` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+  `gmt_modified` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+  `creator` varchar(20) NOT NULL DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+  `modifier` varchar(20) NOT NULL DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
+  PRIMARY KEY (`id`),
+  KEY `idx_behospital_code` (`behospital_code`) USING BTREE,
+  KEY `idx_hospital_id` (`hospital_id`) USING BTREE,
+  KEY `idx_hospital_id_behospital_code` (`hospital_id`,`behospital_code`) USING BTREE,
+  KEY `idx_is_deleted` (`is_deleted`) USING BTREE,
+  KEY `idx_mix` (`hospital_id`,`behospital_code`,`is_deleted`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='质控评分模块评分信息';

+ 193 - 0
src/main/java/com/diagbot/entity/MedQcresultCases.java

@@ -0,0 +1,193 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 质控评分模块评分信息
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-05-19
+ */
+public class MedQcresultCases implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 病人住院ID
+     */
+    private String behospitalCode;
+
+    /**
+     * 数据模块ID(0:其他模块)
+     */
+    private Long casesId;
+
+    /**
+     * 最后得分
+     */
+    private BigDecimal scoreRes;
+
+    /**
+     * 等级
+     */
+    private String level;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getHospitalId() {
+        return hospitalId;
+    }
+
+    public void setHospitalId(Long hospitalId) {
+        this.hospitalId = hospitalId;
+    }
+
+    public String getBehospitalCode() {
+        return behospitalCode;
+    }
+
+    public void setBehospitalCode(String behospitalCode) {
+        this.behospitalCode = behospitalCode;
+    }
+
+    public Long getCasesId() {
+        return casesId;
+    }
+
+    public void setCasesId(Long casesId) {
+        this.casesId = casesId;
+    }
+
+    public BigDecimal getScoreRes() {
+        return scoreRes;
+    }
+
+    public void setScoreRes(BigDecimal scoreRes) {
+        this.scoreRes = scoreRes;
+    }
+
+    public String getLevel() {
+        return level;
+    }
+
+    public void setLevel(String level) {
+        this.level = level;
+    }
+
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "MedQcresultCases{" +
+                "id=" + id +
+                ", hospitalId=" + hospitalId +
+                ", behospitalCode=" + behospitalCode +
+                ", casesId=" + casesId +
+                ", scoreRes=" + scoreRes +
+                ", level=" + level +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", remark=" + remark +
+                "}";
+    }
+}

+ 80 - 1
src/main/java/com/diagbot/facade/AlgorithmFacade.java

@@ -3,13 +3,17 @@ package com.diagbot.facade;
 import com.diagbot.dto.AlgorithmDTO;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.BigDecimalUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.vo.AlgorithmVO;
+import com.diagbot.vo.MedQcresultCasesVO;
 import com.diagbot.vo.QcResultAlgVO;
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
@@ -50,11 +54,77 @@ public class AlgorithmFacade {
         }
         //处理数据
         dataDeal(algorithmVO);
+
+        BigDecimal res = BigDecimal.ZERO;
         //计算得分
-        BigDecimal res = cal(algorithmVO);
+        if (algorithmVO.getHospitalId().equals(1L)) {
+            //长兴医院的情况下
+            List<QcResultAlgVO> qcResultAlgHomePage = new ArrayList<>();
+            List<QcResultAlgVO> qcResultAlgHomePageExt = new ArrayList<>();
+            for (QcResultAlgVO qcResultAlgVO : algorithmVO.getQcResultAlgVOList()) {
+                //首页的情况
+                if (qcResultAlgVO.getCasesId().equals(243L)) {
+                    qcResultAlgHomePage.add(qcResultAlgVO);
+                } else {
+                    //非首页
+                    qcResultAlgHomePageExt.add(qcResultAlgVO);
+                }
+            }
+            List<MedQcresultCasesVO> medQcresultCasesVOList = new ArrayList<>();
+            //病案首页
+            AlgorithmVO homePage = new AlgorithmVO();
+            BeanUtil.copyProperties(algorithmVO, homePage);
+            homePage.setQcResultAlgVOList(qcResultAlgHomePage);
+            homePage.setIsHomePage(true);
+            BigDecimal homePageRes = cal(homePage);
+            String level = getHomePageLevel(homePageRes);
+            MedQcresultCasesVO medQcresultCasesVOHp = new MedQcresultCasesVO();
+            medQcresultCasesVOHp.setHospitalId(algorithmVO.getHospitalId());
+            medQcresultCasesVOHp.setBehospitalCode(algorithmVO.getBehospitalCode());
+            medQcresultCasesVOHp.setCasesId(243L);
+            medQcresultCasesVOHp.setScoreRes(homePageRes);
+            medQcresultCasesVOHp.setLevel(level);
+            medQcresultCasesVOList.add(medQcresultCasesVOHp);
+            //病案首页以外
+            AlgorithmVO homePageExt = new AlgorithmVO();
+            BeanUtil.copyProperties(algorithmVO, homePageExt);
+            homePageExt.setQcResultAlgVOList(qcResultAlgHomePageExt);
+            BigDecimal homePageExtRes = cal(homePageExt);
+            MedQcresultCasesVO medQcresultCasesVOHpExt = new MedQcresultCasesVO();
+            medQcresultCasesVOHpExt.setHospitalId(algorithmVO.getHospitalId());
+            medQcresultCasesVOHpExt.setBehospitalCode(algorithmVO.getBehospitalCode());
+            medQcresultCasesVOHpExt.setCasesId(0L);
+            medQcresultCasesVOHpExt.setScoreRes(homePageExtRes);
+            medQcresultCasesVOHpExt.setLevel("");
+            medQcresultCasesVOList.add(medQcresultCasesVOHpExt);
+            algorithmVO.setMedQcresultCasesVOList(medQcresultCasesVOList);
+
+            res = homePageRes
+                    .add(homePageExtRes)
+                    .multiply(new BigDecimal(100))
+                    .divide(new BigDecimal(120), 1, RoundingMode.HALF_UP);
+        } else {
+            //非长兴医院的情况下
+            res = cal(algorithmVO);
+        }
         return res;
     }
 
+    /**
+     * 根据分数评定等级(病案首页)
+     *
+     * @param score 评分分数
+     * @return 等级
+     */
+    private String getHomePageLevel(BigDecimal score) {
+        String level = "不合格";
+        //得分≥18分为甲级
+        if (BigDecimalUtil.ge(score, new BigDecimal(18))) {
+            level = "合格";
+        }
+        return level;
+    }
+
     /**
      * 根据分数评定等级
      *
@@ -160,6 +230,10 @@ public class AlgorithmFacade {
      */
     private BigDecimal cal(AlgorithmVO algorithmVO) {
         BigDecimal res = new BigDecimal(100);
+        if (algorithmVO.getHospitalId().equals(1L)
+                && algorithmVO.getIsHomePage().equals(true)) {
+            res = new BigDecimal(20);
+        }
         //模块总分
         Map<Long, BigDecimal> casesMap = new HashMap<>();
         //单票否决计分
@@ -228,6 +302,11 @@ public class AlgorithmFacade {
         System.out.println("60:" + algorithmFacade.getLevel(new BigDecimal(60)));
         System.out.println("0:" + algorithmFacade.getLevel(new BigDecimal(0)));
 
+
+        System.out.println("18:" + algorithmFacade.getHomePageLevel(new BigDecimal(20)));
+        System.out.println("18:" + algorithmFacade.getHomePageLevel(new BigDecimal(18)));
+        System.out.println("17.9:" + algorithmFacade.getHomePageLevel(new BigDecimal(17.9)));
+
         if (BigDecimalUtil.lt(new BigDecimal(-1), BigDecimal.ZERO)) {
             System.out.println(BigDecimal.ZERO);
         }

+ 2 - 0
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -346,6 +346,8 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         AlgorithmVO algorithmVO = new AlgorithmVO();
         algorithmVO.setType(0);
         algorithmVO.setQcResultAlgVOList(qcResultAlgVOList);
+        algorithmVO.setHospitalId(hospitalId);
+        algorithmVO.setBehospitalCode(analyzeVO.getBehospitalCode());
         AlgorithmDTO algorithmDTO = algorithmFacade.getAlgorithmRes(algorithmVO);
         //保存
         Map<String, Object> pageMap = outputInfo.getPageData();

+ 13 - 0
src/main/java/com/diagbot/facade/MedQcresultCasesFacade.java

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.MedQcresultCasesServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/5/19 9:20
+ */
+@Component
+public class MedQcresultCasesFacade extends MedQcresultCasesServiceImpl {
+}

+ 35 - 0
src/main/java/com/diagbot/facade/QcresultInfoFacade.java

@@ -6,11 +6,13 @@ import com.diagbot.dto.AlgorithmDTO;
 import com.diagbot.dto.AnalyzeDTO;
 import com.diagbot.dto.QcResultDTO;
 import com.diagbot.entity.BehospitalInfo;
+import com.diagbot.entity.MedQcresultCases;
 import com.diagbot.entity.QcresultDetail;
 import com.diagbot.entity.QcresultInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.service.impl.MedQcresultCasesServiceImpl;
 import com.diagbot.service.impl.QcresultDetailServiceImpl;
 import com.diagbot.service.impl.QcresultInfoServiceImpl;
 import com.diagbot.util.BeanUtil;
@@ -21,6 +23,7 @@ import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.AlgorithmVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.GetDetailVO;
+import com.diagbot.vo.MedQcresultCasesVO;
 import com.diagbot.vo.QcResultAlgVO;
 import com.diagbot.vo.QcresultVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -45,6 +48,9 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
     private AlgorithmFacade algorithmFacade;
     @Autowired
     private BehospitalInfoFacade behospitalInfoFacade;
+    @Autowired
+    @Qualifier("medQcresultCasesServiceImpl")
+    private MedQcresultCasesServiceImpl medQcresultCasesService;
 
     /**
      * 修改评分结果信息
@@ -98,6 +104,8 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
         algorithmVO.setType(qcresultVO.getType());
         algorithmVO.setOptResultAlgVO(qcresultVO.getOptResultAlgVO());
         algorithmVO.setQcResultAlgVOList(qcResultAlgVOList);
+        algorithmVO.setHospitalId(hospitalId);
+        algorithmVO.setBehospitalCode(qcresultVO.getBehospitalCode());
         AlgorithmDTO algorithmDTO = algorithmFacade.getAlgorithmRes(algorithmVO);
         //更新质控评分结果信息
         AnalyzeVO analyzeVO = new AnalyzeVO();
@@ -202,6 +210,33 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
             }
             qcresultDetailServiceImpl.saveBatch(qcresultDetailList);
         }
+        //长兴的数据
+        if (algorithmVO.getHospitalId().equals(1L)) {
+            //质控模块评分数据
+            //逻辑删除数据
+            medQcresultCasesService.update(new UpdateWrapper<MedQcresultCases>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("hospital_id", analyzeVO.getHospitalId())
+                    .eq("behospital_code", analyzeVO.getBehospitalCode())
+                    .set("is_deleted", IsDeleteEnum.Y.getKey())
+                    .set("modifier", useId)
+                    .set("gmt_modified", now));
+            //批量插入新的数据
+            List<MedQcresultCases> medQcresultCasesList = new ArrayList<>();
+            List<MedQcresultCasesVO> medQcresultCasesVOList = algorithmVO.getMedQcresultCasesVOList();
+            if (ListUtil.isNotEmpty(medQcresultCasesVOList)) {
+                for (MedQcresultCasesVO medQcresultCasesVO : medQcresultCasesVOList) {
+                    MedQcresultCases medQcresultCases = new MedQcresultCases();
+                    BeanUtil.copyProperties(medQcresultCasesVO, medQcresultCases);
+                    medQcresultCases.setGmtCreate(now);
+                    medQcresultCases.setCreator(useId.toString());
+                    medQcresultCases.setGmtModified(now);
+                    medQcresultCases.setModifier(useId.toString());
+                    medQcresultCasesList.add(medQcresultCases);
+                }
+                medQcresultCasesService.saveBatch(medQcresultCasesList);
+            }
+        }
         return now;
     }
 

+ 16 - 0
src/main/java/com/diagbot/mapper/MedQcresultCasesMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.MedQcresultCases;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 质控评分模块评分信息 Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-05-19
+ */
+public interface MedQcresultCasesMapper extends BaseMapper<MedQcresultCases> {
+
+}

+ 16 - 0
src/main/java/com/diagbot/service/MedQcresultCasesService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.MedQcresultCases;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 质控评分模块评分信息 服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-05-19
+ */
+public interface MedQcresultCasesService extends IService<MedQcresultCases> {
+
+}

+ 20 - 0
src/main/java/com/diagbot/service/impl/MedQcresultCasesServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.MedQcresultCases;
+import com.diagbot.mapper.MedQcresultCasesMapper;
+import com.diagbot.service.MedQcresultCasesService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 质控评分模块评分信息 服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-05-19
+ */
+@Service
+public class MedQcresultCasesServiceImpl extends ServiceImpl<MedQcresultCasesMapper, MedQcresultCases> implements MedQcresultCasesService {
+
+}

+ 11 - 0
src/main/java/com/diagbot/vo/AlgorithmVO.java

@@ -3,6 +3,7 @@ package com.diagbot.vo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -19,4 +20,14 @@ public class AlgorithmVO {
     private QcResultAlgVO optResultAlgVO;
     //扣分条目
     private List<QcResultAlgVO> qcResultAlgVOList;
+    //-------长兴特殊算分用开始-----------
+    //医院ID
+    private Long hospitalId;
+    // 病历id
+    private String behospitalCode;
+    //质控评分模块评分信息
+    private List<MedQcresultCasesVO> medQcresultCasesVOList = new ArrayList<>();
+    //是否病案首页
+    private Boolean isHomePage = false;
+    //-------长兴特殊算分用结束-----------
 }

+ 40 - 0
src/main/java/com/diagbot/vo/MedQcresultCasesVO.java

@@ -0,0 +1,40 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * @Description: 质控评分模块评分信息
+ * @author: gaodm
+ * @time: 2020/5/19 9:37
+ */
+@Getter
+@Setter
+public class MedQcresultCasesVO {
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 病人住院ID
+     */
+    private String behospitalCode;
+
+    /**
+     * 数据模块ID(0:其他模块)
+     */
+    private Long casesId;
+
+    /**
+     * 最后得分
+     */
+    private BigDecimal scoreRes;
+
+    /**
+     * 等级
+     */
+    private String level;
+}

+ 21 - 0
src/main/resources/mapper/MedQcresultCasesMapper.xml

@@ -0,0 +1,21 @@
+<?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.diagbot.mapper.MedQcresultCasesMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.MedQcresultCases">
+        <id column="id" property="id" />
+        <result column="hospital_id" property="hospitalId" />
+        <result column="behospital_code" property="behospitalCode" />
+        <result column="cases_id" property="casesId" />
+        <result column="score_res" property="scoreRes" />
+        <result column="level" property="level" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+</mapper>

+ 1 - 1
src/test/java/com/diagbot/CodeGeneration.java

@@ -56,7 +56,7 @@ public class CodeGeneration {
         StrategyConfig strategy = new StrategyConfig();
 //        strategy.setTablePrefix(new String[] { "med_" });// 此处可以修改为您的表前缀
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude(new String[] { "qc_abnormal"}); // 需要生成的表
+        strategy.setInclude(new String[] { "med_qcresult_cases"}); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);