Prechádzať zdrojové kódy

Merge branch 'dev/20210326_2.0.2' into innerDevelop

# Conflicts:
#	src/main/java/com/diagbot/facade/BehospitalInfoFacade.java
zhanghang 4 rokov pred
rodič
commit
6c12b3f747
68 zmenil súbory, kde vykonal 5143 pridanie a 373 odobranie
  1. 316 0
      doc/031.20210326v2.0.2/qc_initv2.0.2.sql
  2. 8 0
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  3. 8 1
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  4. 47 0
      src/main/java/com/diagbot/dto/MedManageParamsDTO.java
  5. 223 0
      src/main/java/com/diagbot/dto/MedQualityControlDTO.java
  6. 6 0
      src/main/java/com/diagbot/dto/MedicalRecordDTO.java
  7. 53 0
      src/main/java/com/diagbot/entity/FilterRecordVO.java
  8. 77 0
      src/main/java/com/diagbot/entity/MedIndexRelevance.java
  9. 164 0
      src/main/java/com/diagbot/entity/MedIndexResult.java
  10. 79 0
      src/main/java/com/diagbot/entity/MedManagementInfo.java
  11. 260 0
      src/main/java/com/diagbot/entity/MedQcresultDetail.java
  12. 221 0
      src/main/java/com/diagbot/entity/MedQcresultInfo.java
  13. 54 0
      src/main/java/com/diagbot/entity/QcCasesRelevanceEntry.java
  14. 161 0
      src/main/java/com/diagbot/enums/QualityContent.java
  15. 36 0
      src/main/java/com/diagbot/enums/TimeContent.java
  16. 139 31
      src/main/java/com/diagbot/facade/BehospitalInfoFacade.java
  17. 1481 320
      src/main/java/com/diagbot/facade/ConsoleFacade.java
  18. 13 0
      src/main/java/com/diagbot/facade/DoctorAdviceFacade.java
  19. 81 1
      src/main/java/com/diagbot/facade/FilterFacade.java
  20. 14 0
      src/main/java/com/diagbot/facade/MedIndexRelevanceFacade.java
  21. 13 0
      src/main/java/com/diagbot/facade/MedIndexResultFacade.java
  22. 19 0
      src/main/java/com/diagbot/facade/QcCasesRelevanceEntryFacade.java
  23. 63 0
      src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java
  24. 4 0
      src/main/java/com/diagbot/mapper/DoctorAdviceMapper.java
  25. 16 0
      src/main/java/com/diagbot/mapper/MedIndexRelevanceMapper.java
  26. 27 0
      src/main/java/com/diagbot/mapper/MedIndexResultMapper.java
  27. 16 0
      src/main/java/com/diagbot/mapper/MedManagementInfoMapper.java
  28. 0 1
      src/main/java/com/diagbot/mapper/MedPacsResultMapper.java
  29. 17 0
      src/main/java/com/diagbot/mapper/MedQcresultDetailMapper.java
  30. 17 0
      src/main/java/com/diagbot/mapper/MedQcresultInfoMapper.java
  31. 16 0
      src/main/java/com/diagbot/mapper/QcCasesRelevanceEntryMapper.java
  32. 58 0
      src/main/java/com/diagbot/service/BehospitalInfoService.java
  33. 10 0
      src/main/java/com/diagbot/service/DoctorAdviceService.java
  34. 16 0
      src/main/java/com/diagbot/service/MedIndexRelevanceService.java
  35. 26 0
      src/main/java/com/diagbot/service/MedIndexResultService.java
  36. 16 0
      src/main/java/com/diagbot/service/MedManagementInfoService.java
  37. 17 0
      src/main/java/com/diagbot/service/MedQcresultDetailService.java
  38. 17 0
      src/main/java/com/diagbot/service/MedQcresultInfoService.java
  39. 16 0
      src/main/java/com/diagbot/service/QcCasesRelevanceEntryService.java
  40. 76 0
      src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java
  41. 9 0
      src/main/java/com/diagbot/service/impl/DoctorAdviceServiceImpl.java
  42. 20 0
      src/main/java/com/diagbot/service/impl/MedIndexRelevanceServiceImpl.java
  43. 32 0
      src/main/java/com/diagbot/service/impl/MedIndexResultServiceImpl.java
  44. 20 0
      src/main/java/com/diagbot/service/impl/MedManagementInfoServiceImpl.java
  45. 21 0
      src/main/java/com/diagbot/service/impl/MedQcresultDetailServiceImpl.java
  46. 21 0
      src/main/java/com/diagbot/service/impl/MedQcresultInfoServiceImpl.java
  47. 20 0
      src/main/java/com/diagbot/service/impl/QcCasesRelevanceEntryServiceImpl.java
  48. 83 0
      src/main/java/com/diagbot/task/MedIndexTask.java
  49. 1 1
      src/main/java/com/diagbot/util/ExcelUtils.java
  50. 1 1
      src/main/java/com/diagbot/vo/BasDeptInfoVO.java
  51. 10 0
      src/main/java/com/diagbot/vo/FilterVO.java
  52. 38 0
      src/main/java/com/diagbot/vo/IndexTimeVO.java
  53. 80 0
      src/main/java/com/diagbot/vo/MedIndexFilterVO.java
  54. 14 14
      src/main/java/com/diagbot/web/BehospitalInfoController.java
  55. 34 1
      src/main/java/com/diagbot/web/ConsoleController.java
  56. 20 0
      src/main/java/com/diagbot/web/MedManagementInfoController.java
  57. 21 0
      src/main/java/com/diagbot/web/MedQcresultDetailController.java
  58. 21 0
      src/main/java/com/diagbot/web/MedQcresultInfoController.java
  59. 20 0
      src/main/java/com/diagbot/web/QcCasesRelevanceEntryController.java
  60. 480 0
      src/main/resources/mapper/BehospitalInfoMapper.xml
  61. 41 0
      src/main/resources/mapper/DoctorAdviceMapper.xml
  62. 21 0
      src/main/resources/mapper/MedIndexRelevanceMapper.xml
  63. 65 0
      src/main/resources/mapper/MedIndexResultMapper.xml
  64. 80 0
      src/main/resources/mapper/MedManagementInfoMapper.xml
  65. 27 0
      src/main/resources/mapper/MedQcresultDetailMapper.xml
  66. 24 0
      src/main/resources/mapper/MedQcresultInfoMapper.xml
  67. 16 0
      src/main/resources/mapper/QcCasesRelevanceEntryMapper.xml
  68. 2 2
      src/test/java/com/diagbot/CodeGeneration.java

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 316 - 0
doc/031.20210326v2.0.2/qc_initv2.0.2.sql


+ 8 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -96,6 +96,8 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/console/homePageLevelLimit").permitAll()
                 .antMatchers("/console/homePageLevelStatistics").permitAll()
                 .antMatchers("/console/leaveHosCount").permitAll()
+                .antMatchers("/console/medicalRecordIndicator").permitAll()
+                .antMatchers("/console/codingMonthly").permitAll()
                 .antMatchers("/console/levelPercentGroupByDeptPage").permitAll()
                 .antMatchers("/console/levelStatistics").permitAll()
                 .antMatchers("/console/levelStatisticsByDeptClass").permitAll()
@@ -233,6 +235,12 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/consoleByDept/medicalCheckFormKs").permitAll()
                 .antMatchers("/print/export/medicalCheckExportByDept").permitAll()
                 .antMatchers("/consoleByDept/medicalCheckTitleKs").permitAll()
+                .antMatchers("/console/qualityControl").permitAll()
+                .antMatchers("/console/export/qualityControlExport").permitAll()
+                .antMatchers("/consoleByDept/qualityControlByDept").permitAll()
+                .antMatchers("/print/export/qualityControlExportByDept").permitAll()
+                .antMatchers("/qc/behospitalInfo/getMedQualityCoList").permitAll()
+                .antMatchers("/console/saveMedicaIndicator").permitAll()
                 .antMatchers("/**").authenticated();
         //                .antMatchers("/**").permitAll();
     }

+ 8 - 1
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -145,6 +145,8 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/console/levelStatisticsByDeptClass", request)
                 || matchers("/console/mrCount", request)
                 || matchers("/console/mrStatistics", request)
+                || matchers("/console/medicalRecordIndicator", request)
+                || matchers("/console/codingMonthly", request)
                 || matchers("/console/qcResultShortPage", request)
                 || matchers("/console/resultStatistics", request)
                 || matchers("/console/resultStatisticsByDeptPage", request)
@@ -277,13 +279,18 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/consoleByDept/medicalCheckFormKs", request)
                 || matchers("/print/export/medicalCheckExportByDept", request)
                 || matchers("/consoleByDept/medicalCheckTitleKs", request)
+                || matchers("/console/qualityControl", request)
+                || matchers("/console/export/qualityControlExport", request)
+                || matchers("/consoleByDept/qualityControlByDept", request)
+                || matchers("/print/export/qualityControlExportByDept", request)
+                || matchers("/qc/behospitalInfo/getMedQualityCoList", request)
+                || matchers("/console/saveMedicaIndicator", request)
                 || matchers("/", request)) {
             return true;
         }
         return false;
     }
 
-
     private boolean matchers(String url, HttpServletRequest request) {
         AntPathRequestMatcher matcher = new AntPathRequestMatcher(url);
         if (matcher.matches(request)) {

+ 47 - 0
src/main/java/com/diagbot/dto/MedManageParamsDTO.java

@@ -0,0 +1,47 @@
+package com.diagbot.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 病案管理指标病历
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-04-13
+ */
+@Data
+public class MedManageParamsDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 病人住院ID
+     */
+    private String behospitalCode;
+
+   // 医嘱项目名称
+    private String daItemName;
+
+
+    //医嘱处方类型
+    private String doctorAdviceType;
+
+    //化验报告名称
+    private String repName;
+
+    //医嘱状态判别
+    private String daStatus;
+
+    /**
+     * 住院科室名称
+     */
+    private String behDeptName;
+
+
+
+}

+ 223 - 0
src/main/java/com/diagbot/dto/MedQualityControlDTO.java

@@ -0,0 +1,223 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ * @Description:医疗质量控制指标
+ * @Author:cy
+ * @time: 2021/1/20 13:32
+ */
+@Getter
+@Setter
+public class MedQualityControlDTO {
+
+    /**
+     * 住院病案管理人员月均负担出院患者病历数
+     */
+    @Excel(name = "住院病案管理人员月均负担出院患者病历数", width = 12, orderNum = "1")
+    private Double managerBeNum = 0d;
+
+    /**
+     * 病案编码管理人员月均负担出院患者病历数
+     */
+    @Excel(name = "病案编码管理人员月均负担出院患者病历数", width = 12, orderNum = "2")
+    private Double coderBeNum= 0d;
+
+    /**
+     * 门诊病案管理人员月均负担出院患者病历数
+     */
+    @Excel(name = "门诊病案管理人员月均负担出院患者病历数", width = 12, orderNum = "3")
+    private Double secManagerBeNum= 0d;
+
+    /**
+     * 入院记录24小时内完成量
+     */
+    private Double admissionNum;
+
+    /**
+     * 入院记录24小时内完成率
+     */
+    @Excel(name = "入院记录24小时内完成率", width = 12, orderNum = "4")
+    private String admissionStr;
+
+    /**
+     * 手术记录24小时内完成量
+     */
+    private Double operationNum;
+
+    /**
+     * 手术记录24小时内完成率
+     */
+    @Excel(name = "手术记录24小时内完成率", width = 12, orderNum = "5")
+    private String operationStr;
+
+    /**
+     * 手术相关记录完整量
+     */
+    private Double  operationRecordNum;
+
+    /**
+     * 手术相关记录完整率
+     */
+    @Excel(name = "手术相关记录完整率", width = 12, orderNum = "5")
+    private String operationRecordStr  = "0.00%";
+
+
+    /**
+     * 出院记录24小时内完成量
+     */
+    private Double leaveHospitalNum;
+
+    /**
+     * 出院记录24小时内完成率
+     */
+    @Excel(name = "出院记录24小时内完成率", width = 12, orderNum = "6")
+    private String leaveHospitalStr;
+
+    /**
+     * 病案首页24小时内完成量
+     */
+    private Double medHomePageNum;
+
+    /**
+     * 病案首页24小时内完成率
+     */
+    @Excel(name = "病案首页24小时内完成率",width = 12, orderNum = "7")
+    private String medHomePageStr;
+
+    /**
+     * 医师查房记录完成量
+     */
+    private Double WardRoundNum;
+
+    /**
+     * 医师查房记录完成率
+     */
+    @Excel(name = "医师查房记录完成率",width = 12, orderNum = "8")
+    private String WardRoundStr = "0.00%";
+
+    /**
+     * 临床用血相关记录符合量
+     */
+    @Excel(name = "临床用血相关记录符合率",width = 12, orderNum = "8")
+    private Double bloodNum;
+    //临床用血相关记录符合率
+    private String bloodStr = "0.00%";
+
+    /**
+     * 患者抢救记录6h完成量
+     */
+    private Double rescueNum;
+
+    /**
+     * 患者抢救记录6h完成率
+     */
+    @Excel(name = "患者抢救记录完成率",width = 12, orderNum = "9")
+    private String rescueStr = "0.00%";
+
+    /**
+     * 出院患者病历2日归档量
+     */
+    private Double leaveSecFileNum;
+
+    /**
+     * 出院患者病历2日归档率
+     */
+    @Excel(name = "出院患者病历2日归档完整率",width = 12, orderNum = "10")
+    private String leaveSecFileStr = "0.00%";
+
+    /**
+     * 出院患者病历归档完整量
+     */
+    private Double leaveFileNum;
+
+    /**
+     * 出院患者病历归档完整率
+     */
+    @Excel(name = "出院患者病历归档完整率",width = 12, orderNum = "11")
+    private String leaveFileStr;
+
+    /**
+     * 主要诊断填写正确量
+     */
+    private Double mainDiagnosisNum;
+
+    /**
+     * 主要诊断填写正确率
+     */
+    @Excel(name = "主要诊断填写正确率",width = 12, orderNum = "12")
+    private String mainDiagnosisStr;
+
+    /**
+     * 主要诊断编码正确量
+     */
+    private Double mainCodeDiagnosisNum;
+
+    /**
+     * 主要诊断编码正确率
+     */
+    @Excel(name = "扣分", width = 12,orderNum = "13")
+    private String mainCodeDiagnosisStr;
+
+    /**
+     * 不合理复制病历发生量
+     */
+    private Double  notCopiedNum;
+
+    /**
+     * 不合理复制病历发生率
+     */
+    @Excel(name = "不合理复制病历发生率",width = 12, orderNum = "14")
+    private String  notCopiedStr;
+
+    /**
+     * 甲级病历量
+     */
+    private Double firGradeNum= 0d;
+
+    /**
+     * 甲级病历率
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "15")
+    private String firGradeStr = "0.00%";
+
+    /**
+     * CT检查记录符合率
+     */
+    @Excel(name = "CT检查记录符合率",width = 12, orderNum = "16")
+    private String CTExaminationConform;
+
+    /**
+     * MRI检查记录符合率
+     */
+    @Excel(name = "MRI检查记录符合率",width = 12, orderNum = "18")
+    private String MRIExaminationConform;
+
+
+    /**
+     * 病理检查记录符合率
+     */
+    @Excel(name = "病理检查记录符合率",width = 12, orderNum = "20")
+    private String PathologicalExamination;
+
+    /**
+     * 细菌培养检查记录符合率
+     */
+    @Excel(name = "细菌培养检查记录符合率",width = 12, orderNum = "21")
+    private String BacterialCulture;
+
+    /**
+     * 抗菌药物使用记录符合率
+     */
+    @Excel(name = "抗菌药物使用记录符合率",width = 12, orderNum = "22")
+    private String AntibacterialDrugUse;
+
+    /**
+     * 恶性肿瘤化学治疗记录符合率
+     */
+    @Excel(name = "恶性肿瘤化学治疗记录符合率",width = 12, orderNum = "23")
+    private String ChemotherapyMalignantTumors;
+}

+ 6 - 0
src/main/java/com/diagbot/dto/MedicalRecordDTO.java

@@ -31,4 +31,10 @@ public class MedicalRecordDTO implements Serializable {
      * 病历日期
      */
     private String recDate;
+
+    /**
+     *是否从结构化表中取数据(0-从文文书取 1-从结构化取)
+     */
+    private int isParsed = 0;
+
 }

+ 53 - 0
src/main/java/com/diagbot/entity/FilterRecordVO.java

@@ -0,0 +1,53 @@
+package com.diagbot.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+@Getter
+@Setter
+public class FilterRecordVO implements Serializable {
+        private Integer type;
+        /**
+         * 起始时间
+         */
+        @NotBlank(message = "请输入起始时间")
+        private String startDate;
+        /**
+         * 结束时间
+         */
+        @NotBlank(message = "请输入结束时间")
+        private String endDate;
+
+        /**
+         * 医院id
+         */
+        @ApiModelProperty(hidden = true)
+        private String hospitalId;
+        /**
+         * 限制条数
+         */
+        @ApiModelProperty(hidden = true)
+        private Integer limitCount = 10;
+
+        @ApiModelProperty(hidden = true)
+        private Long userId;
+
+        /**
+         * 科室分类
+         */
+        private String deptClass;
+        //科室名称
+        private String deptName;
+
+        private String level;
+        /**
+         * 是否归档(0:未归档,1:已归档)
+         */
+        private String isPlacefile = "1";
+
+
+}

+ 77 - 0
src/main/java/com/diagbot/entity/MedIndexRelevance.java

@@ -0,0 +1,77 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-04-30
+ */
+@Data
+public class MedIndexRelevance implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 主缓存表id
+     */
+    private Integer indexResultId;
+
+    /**
+     * 病历条目关联表type
+     */
+    private Integer relevanceType;
+
+    /**
+     * 医院ID
+     */
+    private String hospitalId;
+
+    /**
+     * 病人病历号
+     */
+    private String behospitalCode;
+
+    private String startDate;
+
+    private String endDate;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+
+}

+ 164 - 0
src/main/java/com/diagbot/entity/MedIndexResult.java

@@ -0,0 +1,164 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author cy
+ * @since 2021-04-26
+ */
+@Data
+public class MedIndexResult implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 医院id
+     */
+    private String hospitalId;
+
+    /**
+     * 入院记录24小时内完成率--分母
+     */
+    private Double admissionResult;
+
+    /**
+     * 手术记录24小时内完成率--分母
+     */
+    private Double operationResult;
+
+    /**
+     * 出院记录24小时内完成率--分母
+     */
+    private Double leaveHospitalResult;
+
+    /**
+     * 病案首页24小时内完成率--分母
+     */
+    private Double medHomeResult;
+
+    /**
+     * CT检查记录符合率--分母
+     */
+    private Double ctResult;
+
+    /**
+     * MRI检查记录符合率--分母
+     */
+    private Double mriResult;
+
+    /**
+     * 病理检查记录符合率--分母
+     */
+    private Double pathologyResult;
+
+    /**
+     * 细菌培养检查记录符合率--分母
+     */
+    private Double germResult;
+
+    /**
+     * 抗菌药物使用记录符合率--分母
+     */
+    private Double antibiosisResult;
+
+    /**
+     * 恶性肿瘤化学治疗记录符合率--分母
+     */
+    private Double tumorChemistryResult;
+
+    /**
+     * 恶性肿瘤放射治疗记录符合率--分母
+     */
+    private Double tumorRadiationResult;
+
+    /**
+     * 手术相关记录完成率--分母
+     */
+    private Double operationCompleteResult;
+
+    /**
+     * 植入物相关记录符合率--分母
+     */
+    private Double implantsResult;
+
+    /**
+     * 临床用血相关记录符合率--分母
+     */
+    private Double bloodResult;
+
+    /**
+     * 医师查房记录完整率--分母
+     */
+    private Double wardRoundResult;
+
+    /**
+     * 患者抢救记录及时完成率--分母
+     */
+    private Double rescueResult;
+
+    /**
+     * 出院患者病历2日归档率--分子
+     */
+    private Double secFileResult;
+
+    /**
+     * 出院患者病历归档完整率--分母
+     */
+    private Double fileCompleteResult;
+
+    /**
+     * 不合理复制病历发生率--分母
+     */
+    private Double noCopyResult;
+
+    /**
+     * 知情同意书规范签署率--分母
+     */
+    private Double recordSignResult;
+
+    /**
+     * 甲级病历率--分母
+     */
+    private Double firRecordResult;
+
+    private String startDate;
+
+    private String endDate;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+}

+ 79 - 0
src/main/java/com/diagbot/entity/MedManagementInfo.java

@@ -0,0 +1,79 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 病案管理人员统计表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-04-13
+ */
+@Data
+public class MedManagementInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     *   1:住院病案管理人员 2:病案编码人员 3:门诊病案管理人员
+     */
+    private String positionId;
+
+    /**
+     * 开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDateTime startDate;
+
+    /**
+     * 结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDateTime endDate;
+
+    /**
+     * 单位时间内管理人员总人数
+     */
+    private Double workPerson;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+}

+ 260 - 0
src/main/java/com/diagbot/entity/MedQcresultDetail.java

@@ -0,0 +1,260 @@
+package com.diagbot.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 质控评分明细信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-03-26
+ */
+public class MedQcresultDetail 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
+     */
+    private Long casesId;
+
+    /**
+     * 模块总分
+     */
+    private BigDecimal casesScore;
+
+    /**
+     * 条目ID
+     */
+    private Long casesEntryId;
+
+    /**
+     * 人工修改分值
+     */
+    private BigDecimal score;
+
+    /**
+     * 提示信息
+     */
+    private String msg;
+
+    /**
+     * 质控返回提示信息
+     */
+    private String info;
+
+    /**
+     * 单项否决(1-单项否决 0-非)
+     */
+    private Integer isReject;
+
+    /**
+     * 初始类型(1:机器,2:人工)
+     */
+    private Integer gradeType;
+
+    /**
+     * 操作类型(1:新增,2:删除,3:修改)
+     */
+    private Integer optType;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime 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 getCasesScore() {
+        return casesScore;
+    }
+
+    public void setCasesScore(BigDecimal casesScore) {
+        this.casesScore = casesScore;
+    }
+    public Long getCasesEntryId() {
+        return casesEntryId;
+    }
+
+    public void setCasesEntryId(Long casesEntryId) {
+        this.casesEntryId = casesEntryId;
+    }
+    public BigDecimal getScore() {
+        return score;
+    }
+
+    public void setScore(BigDecimal score) {
+        this.score = score;
+    }
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+    public String getInfo() {
+        return info;
+    }
+
+    public void setInfo(String info) {
+        this.info = info;
+    }
+    public Integer getIsReject() {
+        return isReject;
+    }
+
+    public void setIsReject(Integer isReject) {
+        this.isReject = isReject;
+    }
+    public Integer getGradeType() {
+        return gradeType;
+    }
+
+    public void setGradeType(Integer gradeType) {
+        this.gradeType = gradeType;
+    }
+    public Integer getOptType() {
+        return optType;
+    }
+
+    public void setOptType(Integer optType) {
+        this.optType = optType;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public LocalDateTime getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(LocalDateTime gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public LocalDateTime getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(LocalDateTime 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 "MedQcresultDetail{" +
+            "id=" + id +
+            ", hospitalId=" + hospitalId +
+            ", behospitalCode=" + behospitalCode +
+            ", casesId=" + casesId +
+            ", casesScore=" + casesScore +
+            ", casesEntryId=" + casesEntryId +
+            ", score=" + score +
+            ", msg=" + msg +
+            ", info=" + info +
+            ", isReject=" + isReject +
+            ", gradeType=" + gradeType +
+            ", optType=" + optType +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 221 - 0
src/main/java/com/diagbot/entity/MedQcresultInfo.java

@@ -0,0 +1,221 @@
+package com.diagbot.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 质控评分主表信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-03-26
+ */
+public class MedQcresultInfo 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;
+
+    /**
+     * 等级
+     */
+    private String level;
+
+    /**
+     * 页面数据
+     */
+    private String pageData;
+
+    /**
+     * 菜单数据
+     */
+    private String menuData;
+
+    /**
+     * 评分类型(1:机器,2:人工)
+     */
+    private Integer gradeType;
+
+    /**
+     * 最后得分
+     */
+    private BigDecimal scoreRes;
+
+    /**
+     * 是否有病案首页(0:无,1:有)
+     */
+    private Integer haveHomePage;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime 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 String getLevel() {
+        return level;
+    }
+
+    public void setLevel(String level) {
+        this.level = level;
+    }
+    public String getPageData() {
+        return pageData;
+    }
+
+    public void setPageData(String pageData) {
+        this.pageData = pageData;
+    }
+    public String getMenuData() {
+        return menuData;
+    }
+
+    public void setMenuData(String menuData) {
+        this.menuData = menuData;
+    }
+    public Integer getGradeType() {
+        return gradeType;
+    }
+
+    public void setGradeType(Integer gradeType) {
+        this.gradeType = gradeType;
+    }
+    public BigDecimal getScoreRes() {
+        return scoreRes;
+    }
+
+    public void setScoreRes(BigDecimal scoreRes) {
+        this.scoreRes = scoreRes;
+    }
+    public Integer getHaveHomePage() {
+        return haveHomePage;
+    }
+
+    public void setHaveHomePage(Integer haveHomePage) {
+        this.haveHomePage = haveHomePage;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public LocalDateTime getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(LocalDateTime gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public LocalDateTime getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(LocalDateTime 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 "MedQcresultInfo{" +
+            "id=" + id +
+            ", hospitalId=" + hospitalId +
+            ", behospitalCode=" + behospitalCode +
+            ", level=" + level +
+            ", pageData=" + pageData +
+            ", menuData=" + menuData +
+            ", gradeType=" + gradeType +
+            ", scoreRes=" + scoreRes +
+            ", haveHomePage=" + haveHomePage +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 54 - 0
src/main/java/com/diagbot/entity/QcCasesRelevanceEntry.java

@@ -0,0 +1,54 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 质控关联条目表
+ * </p>
+ *
+ * @author cy
+ * @since 2021-04-16
+ */
+@Data
+public class QcCasesRelevanceEntry implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 指标编号
+     */
+    private Integer type;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 指标名称
+     */
+    private String casesName;
+
+    /**
+     * 关联质控条目
+     */
+    private Long relevanceId;
+
+    /**
+     * 条目
+     */
+    private String name;
+
+    private String isDeleted;
+}

+ 161 - 0
src/main/java/com/diagbot/enums/QualityContent.java

@@ -0,0 +1,161 @@
+package com.diagbot.enums;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 新指标常用常量
+ */
+public class QualityContent {
+    public static final String recordNumber = "关联首页表质控病历人数";
+    public static final String NoRecordNumberId = "无病案首页病历ID";
+    public static final String DISCHARGED_PATIENTS = "出院人数";
+    public static final String NUMBER_OF_HOSPITAL = "入院人数";
+    public static final String NO_RECORD_OPERATION = "无病案首页手术患者";
+    public static final String NO_RECORD_OPERATION_PATHOLOGY = "无病案首页手术病理患者";
+    public static final double pathologyFee = 68.00;
+    /**
+     * 是否需要用到医嘱的指标名称
+     */
+    public static List<String> NO_MEDICAL_ADVICE = Arrays.asList("",
+            "入院记录24小时内完成率","出院记录24小时内完成率","病案首页24小时内完成率"
+    );
+    public static List<String> NEED_MEDICAL_ADVICE = Arrays.asList("",
+            "手术记录24小时内完成率","手术相关记录完成率","患者抢救记录及时完成率","临床用血相关记录符合率","CT检查记录符合率","MRI检查记录符合率","病理检查记录符合率","抗菌药物使用记录符合率","恶性肿瘤化学治疗记录符合率"
+    );
+    /**
+     * 关联首页无code需要去医嘱查询指标
+     */
+    public static List<String> NORecord_NEED_MEDICAL_ADVICE = Arrays.asList("",
+            "手术记录24小时内完成率","病理检查记录符合率","抗菌药物使用记录符合率"
+    );
+    /**
+     * 所有指标名称
+     */
+
+    public static final String QB = "";
+    public static final String ZYBA_CYHZ = "住院病案管理人员月均负担出院患者病历数";
+    public static final String BABM_CYHZ = "病案编码人员月均负担出院患者病历数";
+    public static final String MZBA_CYHZ = "门诊病案管理人员月均负担门诊患者病历数";
+    public static final String RYJL_24H_WCL = "入院记录24小时内完成率";
+    public static final String CYJL_24H_WCL = "出院记录24小时内完成率";
+    public static final String BASY_24H_WCL = "病案首页24小时内完成率";
+    public static final String SSJL_24H_WCL = "手术记录24小时内完成率";
+    public static final String CT_JCJL_FHL = "CT检查记录符合率";
+    public static final String MR_JCJL_FHL = "MRI检查记录符合率";
+    public static final String BL_JCJL_FHL = "病理检查记录符合率";
+    public static final String XJPY_JCJL_FHL = "细菌培养检查记录符合率";
+    public static final String KJYW_SY_FHL = "抗菌药物使用记录符合率";
+    public static final String EXZL_HXZL_FHL = "恶性肿瘤化学治疗记录符合率";
+    public static final String EXZL_FSZL_FHL = "恶性肿瘤放射治疗记录符合率";
+    public static final String SS_XGJL_WCL = "手术相关记录完成率";
+    public static final String ZRW_XGJL_WCL = "植入物相关记录符合率";
+    public static final String LCYX_XGJL_WCL = "临床用血相关记录符合率";
+    public static final String YSCF_JL_WCL = "医师查房记录完成率";
+    public static final String HZQJ_JLJS_WCL = "患者抢救记录及时完成率";
+    public static final String CCHZ_2DAY_GDL = "出院患者病历2日归档率";
+    public static final String CCHZ_GD_WZL = "出院患者病历归档完整率";
+    public static final String BHL_FZ_FSL = "不合理复制病历发生率";
+    public static final String ZQTYS_GF_QSL = "知情同意书规范签署率";
+    public static final String JJBLL = "甲级病历率";
+    /**
+     * 触发规则指标
+     */
+    public static final String RYJLWWC_24H = "residentAdmitNote";
+    public static final String SSJLWCC_24H = "operationNote";
+    public static final String CYJLWWC_24H = "dischargeRecord";
+    public static final String BASYWWC_24H = "medicalRecord";
+    /**
+     * 医嘱类型
+     */
+    public static final String STANDING_ORDER = "长期医嘱";
+    public static final String STAT_ORDER = "临时医嘱";
+    /**
+     * 医嘱状态
+     */
+    public static final String EXECUTE_ORDER = "执行";
+    public static final String IN_USE = "在用";
+    public static final String CANCELLATION_ORDER = "作废";
+    /**
+     * 医嘱判断相关
+     */
+    public static final String STOP = "停";
+    public static final String LAST = "前一次";
+    public static final String COUNTERMAND = "取消";
+    public static final String PAUSE = "暂停";
+    public static final String BACTERIAL_CULTURE = "细菌培养";
+    /**
+     * 病理判断
+     */
+    public static String[][] BL_LIST = {{"病理"}};
+
+    /**
+     * 医嘱CT相关
+     */
+    public static String[][] CT_LIST = {{"CT"},{"X线"}};
+    public static String[][] CT_REGULATION = {{"ATCH"},{"TCT"},{"HCT"},{"OCT"},{"NCT"},{"LCT"},{"ACT"},{"取消"},{"暂停"}};
+
+    /**
+     * 医嘱手术相关
+     */
+    public static String[][] OPERATION_LIST={
+            {"手术"}
+    };
+    public static String[][] OPERATION_ARG={
+            {"非手术"},
+            {"手术室"},
+            {"手术","取消"},
+            {"暂停","手术"},
+            {"静脉穿刺置管术"},
+            {"停"},
+            {"前一次"},
+            {"特殊病人手术使用一次性卫生材料"},
+            {"人免疫缺陷病毒抗体检测免费"}
+    };
+
+
+    /**
+     * 医嘱MR相关
+     */
+    public static final String MR = "MR";
+    public static String[][] MR_LIST = {{"MR"},{"磁共振"}};
+    public static String[][] MR_REGULATION = {{"IMRT"},{"mrs评分"},{"取消"}};
+    /**
+     * 抗菌药物目录
+     */
+    public static List<String> Antimicrobial_Drug_List = Arrays.asList(
+            "呋喃妥因", "呋喃唑酮", "盐酸小檗碱", "大蒜素", "鱼腥草素钠", "磺胺嘧啶", "甲氧苄啶", "复方磺胺甲恶唑",
+            "磺胺嘧啶银", "磺胺嘧啶锌", "盐酸四环素", "盐酸土霉素", "盐酸多西环素", "盐酸米诺环素", "盐酸美他环素", "硫酸庆大霉素", "硫酸链霉素"
+    );
+    /**
+     * 化疗药物目录
+     */
+    public static List<String> Chemotherapy_Drug_List = Arrays.asList(
+            "注射用盐酸表柔比星", "注射用盐酸吡柔比星", "注射用环磷酰胺", "卡铂注射液", "注射用奥沙利铂", "注射用阿糖胞苷", "注射用盐酸吉西他滨", "注射用甲氨蝶呤",
+            "注射用盐酸伊立替康", "紫杉醇注射液", "注射用培美曲塞二钠", "高三尖杉酯碱注射液", "注射用硫酸长春地辛", "多西他赛注射液", "注射用曲普瑞林", "注射用盐酸博来霉素", "注射用地西他滨",
+            "盐酸伊立替康注射液", "注射用盐酸托泊替康", "注射用氟尿嘧啶", "注射用达卡巴嗪", "醋酸戈舍瑞林缓释植入剂", "顺铂注射液"
+    );
+
+    /**
+     * 抢救药物  维护修改
+     */
+
+    public static List<String> RESCUEDRUGLIST = Arrays.asList(
+            "尼可刹米","可拉明","盐酸洛贝林","山梗菜碱","肾上腺素","阿拉明", "重酒石酸间羟胺", "多巴胺", "利血平", "25%硫酸镁注射液", "垂体后叶素","注射用血凝酶", "阿托品","氯解磷定注射液","盐酸纳洛酮","异丙嗪", "非那更","地西泮", "安定","20%甘露醇");
+
+
+    /**
+     *   临床用血
+     */
+    public static List<String> BLOODLIST = Arrays.asList(
+            "交叉配血","血交叉","血常规");
+
+    /**
+     * 用于代码判断指标1、2、3执行路径
+     */
+    public static List<String> FOURSTR = Arrays.asList(
+            "住院病案管理人员月均负担出院患者病历数", "病案编码人员月均负担出院患者病历数", "门诊病案管理人员月均负担门诊患者病历数");
+}
+
+
+

+ 36 - 0
src/main/java/com/diagbot/enums/TimeContent.java

@@ -0,0 +1,36 @@
+package com.diagbot.enums;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 新指标常用常量
+ */
+public class TimeContent {
+
+    public static List<String> HolidaysTimeList = Arrays.asList(
+            "2021-01-01", "2021-01-02", "2021-01-03",//元旦
+            "2021-02-11", "2021-02-12", "2021-02-13", "2021-02-14", "2021-02-15", "2021-02-16", "2021-02-17",//春节
+            "2021-04-03", "2021-04-04", "2021-04-05",//清明节
+            "2021-05-01",  "2021-05-02", "2021-05-03", "2021-05-04", "2021-05-05",//劳动节
+            "2021-06-12",  "2021-06-13", "2021-06-14",//端午节
+            "2021-09-19", "2021-09-20", "2021-09-21",//中秋节
+            "2021-10-01", "2021-10-02", "2021-10-03", "2021-10-04", "2021-10-05", "2021-10-06", "2021-10-07",//国庆节
+
+            "2021-01-09", "2021-01-10", "2021-01-16", "2021-01-17", "2021-01-23", "2021-01-24", "2021-01-30", "2021-01-31",//一月周末假日
+            "2021-02-06", "2021-02-21", "2021-02-27", "2021-02-28", //二月周末假日
+            "2021-03-06", "2021-03-07", "2021-03-13", "2021-03-14", "2021-03-20", "2021-03-21", "2021-03-27", "2021-03-28",//三月周末假日
+            "2021-04-10", "2021-04-11", "2021-04-17", "2021-04-18", "2021-04-24", //四月周末假日
+            "2021-05-09", "2021-05-15", "2021-05-16", "2021-05-22", "2021-05-23", "2021-05-29", "2021-05-30",//五月周末假日
+            "2021-06-05", "2021-06-06", "2021-06-19", "2021-06-20", "2021-06-26", "2021-06-27",//六月周末假日
+            "2021-07-03", "2021-07-04", "2021-07-10", "2021-07-11", "2021-07-17", "2021-07-18", "2021-07-24", "2021-07-25","2021-07-31",//七月周末假日
+            "2021-08-01", "2021-08-07", "2021-08-08", "2021-08-14", "2021-08-15", "2021-08-21", "2021-08-22", "2021-08-28", "2021-08-29",//八月周末假日
+            "2021-09-04", "2021-09-05", "2021-09-11", "2021-09-12", "2021-09-25",//九月周末假日
+            "2021-10-10", "2021-10-16", "2021-10-17", "2021-10-23", "2021-10-24", "2021-10-30", "2021-10-31", //十月周末假日
+            "2021-11-06", "2021-11-07", "2021-11-13", "2021-11-14", "2021-11-20", "2021-11-21", "2021-11-27", "2021-11-28",//十一月周末假日
+            "2021-12-04", "2021-12-06", "2021-12-11", "2021-12-12", "2021-12-18", "2021-12-19", "2021-12-25", "2021-12-26" //十二周末假日
+    );
+}
+
+
+

+ 139 - 31
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -11,35 +11,12 @@ import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.BehospitalInfoServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.EncrypDES;
-import com.diagbot.util.EntityUtil;
-import com.diagbot.util.ExcelUtils;
-import com.diagbot.util.ListUtil;
-import com.diagbot.util.MapUtil;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.SysUserUtils;
-import com.diagbot.vo.AlgorithmVO;
-import com.diagbot.vo.AnalyzeApiVO;
-import com.diagbot.vo.AnalyzeCdsVO;
-import com.diagbot.vo.AnalyzeCodeVO;
-import com.diagbot.vo.AnalyzeRunVO;
-import com.diagbot.vo.AnalyzeVO;
-import com.diagbot.vo.BehospitalPageVO;
-import com.diagbot.vo.ExportQcresultVO;
-import com.diagbot.vo.GetDetailVO;
-import com.diagbot.vo.MedrecVo;
-import com.diagbot.vo.QcResultAlgQueryVO;
-import com.diagbot.vo.QcResultAlgVO;
-import com.diagbot.vo.QueryVo;
-import com.diagbot.vo.RecordContentVO;
-import com.diagbot.vo.TaskVO;
+import com.diagbot.util.*;
+import com.diagbot.vo.*;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.ss.formula.functions.T;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
@@ -48,6 +25,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -159,6 +137,8 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
     MedNurseFacade medNurseFacade;
     @Autowired
     SysHospitalSetFacade sysHospitalSetFacade;
+    @Autowired
+    QcCasesRelevanceEntryFacade qcCasesRelevanceEntryFacade;
 
 
 
@@ -174,6 +154,50 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         return res;
     }
 
+    /**
+     * 分页
+     *
+     * @param
+     * @return
+     */
+    public List<ColumnDTO> getMedQualityControl(BasDeptInfoVO basDeptInfoVO) {
+        long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
+        //colums
+        QueryWrapper<SysHospitalSet> hospitalSetQueryWrapper = new QueryWrapper<>();
+        hospitalSetQueryWrapper.eq("is_deleted", 'N')
+                .eq("hospital_id", hospitalId)
+                .eq("code", "med_quality_control");
+        List<ColumnDTO> columns = Lists.newLinkedList();
+        SysHospitalSet hospitalSet = sysHospitalSetFacade.getOne(hospitalSetQueryWrapper);
+        if (hospitalSet == null || StringUtil.isBlank(hospitalSet.getValue())) {
+            return columns;
+        }
+       List<String> strings = new ArrayList<>();
+
+        //表头生成
+        List<String> columnSet = Arrays.asList(hospitalSet.getValue().split(","));
+        Integer orderNo = 1;
+        for (String valueStr : columnSet) {
+            String[] keyValue = valueStr.split("--");
+            if (keyValue != null || keyValue.length > 1) {
+                strings.add(keyValue[1]);
+            }
+        }
+        for (String str : strings) {
+            if(str.contains(basDeptInfoVO.getInputStr())){
+                ColumnDTO columnNum = new ColumnDTO();
+                columnNum.setOrderNo(orderNo);
+                columnNum.setColumnName(str);
+                columnNum.setFieldName("entry_" + str + "_name");
+                columnNum.setIsShow(1);
+                columns.add(columnNum);
+                orderNo++;
+            }
+        }
+
+        return columns;
+    }
+
     /**
      * 获取明细
      *
@@ -301,8 +325,16 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
                 EncrypDES encrypDES = new EncrypDES();
                 for (RecordContentDTO recordContentDTO : recordContentDTOList) {
                     recTitle = recordContentDTO.getRecTitle();
-                    recordContentDTO.setXmlText(encrypDES.decryptor(recordContentDTO.getXmlText()));
-                    recordContentDTO.setHtmlText(encrypDES.decryptor(recordContentDTO.getHtmlText()));
+                    if(StringUtils.isNotEmpty(recordContentDTO.getXmlText())){
+                        recordContentDTO.setXmlText(encrypDES.decryptor(recordContentDTO.getXmlText()));
+                    }
+                    try {
+                        if(StringUtils.isNotEmpty(recordContentDTO.getHtmlText())){
+                            recordContentDTO.setHtmlText(encrypDES.decryptor(recordContentDTO.getHtmlText()));
+                        }
+                    } catch (Exception e) {
+                        recordContentDTO.setHtmlText(null);
+                    }
                 }
             } catch (Exception e) {
                 throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
@@ -569,6 +601,16 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
                 .eq("behospital_code", analyzeVO.getBehospitalCode()), false
         );
 
+        //知情同意书
+        List<MedicalRecord> recordList = medicalRecordFacade.list(new QueryWrapper<MedicalRecord>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("behospital_code", analyzeVO.getBehospitalCode())
+                .eq("hospital_id", hospitalId)
+                .in("mode_id", Arrays.asList(53,16))
+                .orderByAsc("rec_date")
+        );
+        List<MedicalRecordDTO> medicalRecordDTOList = BeanUtil.listCopyTo(recordList, MedicalRecordDTO.class);
+
         List<HomeDiagnoseInfo> homePageList = new ArrayList<>();
         List<HomeOperationInfo> homeOperationInfoList = new ArrayList<>();
         if (homePage != null) {
@@ -678,7 +720,6 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         //使用sql进行关联优化数据查询
         List<MedPacsResultDTO> medPacsResultList = medPacsResultFacade.getMedPacsResultList(behospitalInfoList.get(0));
 
-
         /**
          * 结构化/文书数据兼容处理
          */
@@ -879,7 +920,8 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
 
         addData("日常病程录", recMap, medrecVoList);
 
-        addDataWithInnerKey("知情同意书", recMap, medrecVoList);
+        DataWithKey("知情同意书", medicalRecordDTOList, medrecVoList);
+        //addDataWithInnerKey("知情同意书", recMap, medrecVoList);
         addDataWithInnerKey("谈话告知书", recMap, medrecVoList);
 
         //==============文书====================
@@ -1185,6 +1227,38 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         }
     }
 
+    /**
+     * 知情同意书 单独传
+     *
+     * @param key
+     * @param recordList
+     * @param medrecVoList
+     */
+    public void DataWithKey(String key, List<MedicalRecordDTO> recordList, List<MedrecVo> medrecVoList) {
+        MedrecVo medrecVo = new MedrecVo();
+        medrecVo.setTitle(key);
+        Map<String, Object> listMap = new HashMap<>();
+        if (ListUtil.isNotEmpty(recordList)) {
+            Map<String, List<MedicalRecordDTO>> keyMap =
+                    EntityUtil.makeEntityListMap(recordList, "recTitle");
+            Set<String> keyList = keyMap.keySet();
+            for (String k : keyList) {
+                List<MedicalRecordDTO> recordContentDTOS = keyMap.get(k);
+                if(ListUtil.isNotEmpty(recordContentDTOS)){
+                    for (MedicalRecordDTO recordContentDTO : recordContentDTOS) {
+                        recordContentDTO.setIsParsed(0);
+                    }
+                }
+
+                if (ListUtil.isNotEmpty(recordContentDTOS)) {
+                    listMap.put(k,recordContentDTOS);
+                }
+            }
+            medrecVo.setContent(listMap);
+            medrecVoList.add(medrecVo);
+        }
+    }
+
     /**
      * 1.5.0拼接数据
      *
@@ -1395,7 +1469,7 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         Map<String, Object> content = new HashMap<>();
         try {
             Map<String, Object> objectMap = MapUtil.objectToMap(homePage);
-            List<String> firstPageDate = Arrays.asList("birthday", "behospitalDate", "leaveHospitalDate", "qcDate");
+            List<String> firstPageDate = Arrays.asList("birthday", "behospitalDate", "leaveHospitalDate", "qcDate","gmtCreate");
             for (String objKey : objectMap.keySet()) {
                 if (map.containsKey(objKey)) {
                     if (firstPageDate.contains(objKey)) {
@@ -2235,4 +2309,38 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         return ret;
     }
 
+
+    /**
+     * 手术费,抗菌药物,手术和病理费等含有人数
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String, String>> selectOperationNum( FilterVO filterVO){
+        return   baseMapper.selectOperationNum(filterVO);
+    }
+    /**
+     * 触发规则人数
+     * @param filterVO
+     * @return
+     */
+    public Map<String,Long> triggeringRules( FilterVO filterVO){
+        return   baseMapper.triggeringRules(filterVO);
+    }
+
+    /**
+     * 病案首页关联的出院病历
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> getMedicalRecords(@Param("filterVO") FilterVO filterVO){
+        return baseMapper.getMedicalRecords(filterVO);
+    }
+    /**
+     * 首页恶性肿瘤人数
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> malignancy(@Param("filterVO") FilterVO filterVO){
+        return  baseMapper.malignancy(filterVO);
+    }
 }

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1481 - 320
src/main/java/com/diagbot/facade/ConsoleFacade.java


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

@@ -9,9 +9,12 @@ import com.diagbot.service.impl.DoctorAdviceServiceImpl;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.DoctorAdviceVO;
+import com.diagbot.vo.FilterVO;
 import org.springframework.stereotype.Component;
 
 import java.util.Collection;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description:
@@ -42,4 +45,14 @@ public class DoctorAdviceFacade extends DoctorAdviceServiceImpl {
         }
         return this.getPage(doctorAdviceVO);
     }
+
+    /**
+     * 获取医嘱
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String, String>> getDoctorAdviceNum(FilterVO filterVO){
+        return baseMapper.getDoctorAdviceNum(filterVO);
+
+    }
 }

+ 81 - 1
src/main/java/com/diagbot/facade/FilterFacade.java

@@ -7,11 +7,13 @@ import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
-
+import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Description:
@@ -209,6 +211,84 @@ public class FilterFacade {
         }*/
     }
 
+    /**
+     * 入参拼接
+     *
+     * @param filterVO
+     */
+    public void filterSet(FilterVO filterVO) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        filterVO.setHospitalId(hospitalId);
+        filterVO.setUserId(Long.valueOf(userId));
+        if (filterVO.getLimitCount() == null || filterVO.getLimitCount().equals(0)) {
+            filterVO.setLimitCount(10);
+        }
+        try {
+            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+            SimpleDateFormat dateFormatSec = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            Date dateStart = dateFormat.parse(filterVO.getStartDate());
+            Date dateEnd = dateFormat.parse(filterVO.getEndDate());
+            filterVO.setStartDate(dateFormatSec.format(dateStart));
+            filterVO.setEndDate(dateFormatSec.format(dateEnd));
+        } catch (ParseException e) {
+
+        }
+
+    }
+
+
+    /**
+     * 入参拼接
+     *
+     * @param filterVO
+     */
+          List<String> getTimeList(FilterVO filterVO) {
+              DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+              // 返回的日期集合
+              List<String> days = new ArrayList<String>();
+              Date start =new Date();
+              Date end =new Date();
+              try {
+              if(StringUtils.isEmpty(filterVO.getHospitalId())){
+                  String hospitalId = SysUserUtils.getCurrentHospitalID();
+                  String userId = SysUserUtils.getCurrentPrincipleID();
+                  filterVO.setHospitalId(hospitalId);
+                  filterVO.setUserId(Long.valueOf(userId));
+                   start = dateFormat.parse(filterVO.getStartDate()+" 00:00:00");
+                   end = dateFormat.parse(filterVO.getEndDate()+" 00:00:00");
+              }else{
+                  //执行上一天的操作
+                  Date dNow = new Date(); //当前时间
+                  Date dBefore = new Date();
+                  Calendar calendar = Calendar.getInstance(); //得到日历
+                  calendar.setTime(dNow);//把当前时间赋给日历
+                  calendar.add(Calendar.DAY_OF_MONTH, -1); //设置为前一天
+                  dBefore = calendar.getTime(); //得到前一天的时间
+                  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式
+                  String defaultStartDate = sdf.format(dBefore); //格式化前一天
+                  filterVO.setStartDate(defaultStartDate);
+                  filterVO.setEndDate(defaultStartDate);
+                  defaultStartDate = defaultStartDate+" 00:00:00";
+                  String defaultEndDate = defaultStartDate;
+                   start = dateFormat.parse(defaultStartDate);
+                   end = dateFormat.parse(defaultEndDate);
+              }
+            Calendar tempStart = Calendar.getInstance();
+            tempStart.setTime(start);
+            Calendar tempEnd = Calendar.getInstance();
+            tempEnd.setTime(end);
+            tempEnd.add(Calendar.DATE, +1);
+            while (tempStart.before(tempEnd)) {
+                days.add(dateFormat.format(tempStart.getTime()));
+                tempStart.add(Calendar.DAY_OF_YEAR, 1);
+            }
+        } catch (ParseException e) {
+            throw new IllegalArgumentException("参数异常");
+        }
+        return days;
+    }
+
     /**
      * 分页入参拼接
      *

+ 14 - 0
src/main/java/com/diagbot/facade/MedIndexRelevanceFacade.java

@@ -0,0 +1,14 @@
+package com.diagbot.facade;
+import com.diagbot.service.impl.MedIndexRelevanceServiceImpl;
+
+import org.springframework.stereotype.Component;
+
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/4/12 11:39
+ */
+@Component
+public class MedIndexRelevanceFacade extends MedIndexRelevanceServiceImpl {
+}

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

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+import com.diagbot.service.impl.MedIndexResultServiceImpl;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/4/12 11:39
+ */
+@Component
+public class MedIndexResultFacade extends MedIndexResultServiceImpl {
+}

+ 19 - 0
src/main/java/com/diagbot/facade/QcCasesRelevanceEntryFacade.java

@@ -0,0 +1,19 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.SysHospitalSet;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.QcCasesRelevanceEntryServiceImpl;
+import com.diagbot.service.impl.SysHospitalSetServiceImpl;
+import com.diagbot.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @author: cy
+ * @time: 2021/4/16 12:29
+ */
+@Component
+public class QcCasesRelevanceEntryFacade extends QcCasesRelevanceEntryServiceImpl {
+
+}

+ 63 - 0
src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java

@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.*;
 import com.diagbot.entity.BehospitalInfo;
+import com.diagbot.entity.FilterRecordVO;
 import com.diagbot.vo.*;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -626,6 +628,32 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      */
     public List<ExportExcelDTO> hmImproveMRPageExport(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
 
+    /**
+     * 病案管理指标获取基础数据
+     *
+     * @param timeVo
+     * @return
+     */
+    public Map<String,Object> getBaseIndex( MedIndexFilterVO timeVo);
+
+    /**
+     * 病案管理规则质控参数查询
+     *
+     * @param filterVO
+     * @return
+     */
+    public Map<String,Object> getCountByEntry( FilterVO filterVO);
+
+    /**
+     * 病案管理规则质控病历参数查询
+     *
+     * @param filterVO
+     * @return
+     */
+
+    public  List<MedManageParamsDTO> getMedManageParams( FilterVO filterVO);
+
+
     /**
      * 质控核查质控评分页(内页)
      *
@@ -666,4 +694,39 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @return
      */
     public List<ExportExcelByDeptDTO> qcCheckMRPageExportByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+    /**
+     * 入院,手术,出院 24小时完成情况
+     *
+     * @param filterVO
+     * @return
+     */
+    public Map<String, Long> medicalRecordIndicator(@Param("filterVO") FilterVO filterVO);
+    /**
+     * 手术费,抗菌药物,手术和病理费等含有人数
+     *
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String, String>> selectOperationNum(@Param("filterVO") FilterVO filterVO);
+
+    /**
+     * 病理CT/MR触发多规则人数
+     * @param filterVO
+     * @return
+     */
+    public Map<String,Long> triggeringRules(@Param("filterVO") FilterVO filterVO);
+
+    /**
+     * 病案首页关联的出院病历
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> getMedicalRecords(@Param("filterVO") FilterVO filterVO);
+
+    /**
+     * 首页恶性肿瘤人数
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> malignancy(@Param("filterVO") FilterVO filterVO);
 }

+ 4 - 0
src/main/java/com/diagbot/mapper/DoctorAdviceMapper.java

@@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.DoctorAdviceDTO;
 import com.diagbot.entity.DoctorAdvice;
 import com.diagbot.vo.DoctorAdviceVO;
+import com.diagbot.vo.FilterVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -23,4 +25,6 @@ public interface DoctorAdviceMapper extends BaseMapper<DoctorAdvice> {
     IPage<DoctorAdviceDTO> getPage(@Param("doctorAdviceVO")DoctorAdviceVO doctorAdviceVO, @Param("infos") Set<String> infos);
     List<String> getInfo(@Param("hospitalId")Long hospitalId, @Param("behospitalCode")String behospitalCode);
 
+    Map<String,Long> getCTAndMR( @Param("filterVO")FilterVO filterVO);
+    List<Map<String, String>> getDoctorAdviceNum(@Param("filterVO") FilterVO filterVO);
 }

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

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.MedIndexRelevance;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-04-30
+ */
+public interface MedIndexRelevanceMapper extends BaseMapper<MedIndexRelevance> {
+
+}

+ 27 - 0
src/main/java/com/diagbot/mapper/MedIndexResultMapper.java

@@ -0,0 +1,27 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.MedIndexResult;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.FilterVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author cy
+ * @since 2021-04-26
+ */
+public interface MedIndexResultMapper extends BaseMapper<MedIndexResult> {
+
+    /**
+     * 指标分母人数
+     * @param filterVO
+     * @return
+     */
+    public Map<String, Double> medicalRecordIndicator(@Param("filterVO") FilterVO filterVO);
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.MedManagementInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 病案管理人员统计表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-04-13
+ */
+public interface MedManagementInfoMapper extends BaseMapper<MedManagementInfo> {
+
+}

+ 0 - 1
src/main/java/com/diagbot/mapper/MedPacsResultMapper.java

@@ -17,6 +17,5 @@ import java.util.List;
  */
 public interface MedPacsResultMapper extends BaseMapper<MedPacsResult> {
     public List<MedPacsResultDTO> getMedPacsResults(BehospitalInfo behospitalInfo);
-
     void updateBatchByKey(List<MedPacsResult> list);
 }

+ 17 - 0
src/main/java/com/diagbot/mapper/MedQcresultDetailMapper.java

@@ -0,0 +1,17 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.MedQcresultDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 质控评分明细信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y Mapper 接口
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-03-26
+ */
+public interface MedQcresultDetailMapper extends BaseMapper<MedQcresultDetail> {
+
+}

+ 17 - 0
src/main/java/com/diagbot/mapper/MedQcresultInfoMapper.java

@@ -0,0 +1,17 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.MedQcresultInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 质控评分主表信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y Mapper 接口
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-03-26
+ */
+public interface MedQcresultInfoMapper extends BaseMapper<MedQcresultInfo> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.QcCasesRelevanceEntry;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 质控关联条目表 Mapper 接口
+ * </p>
+ *
+ * @author cy
+ * @since 2021-04-16
+ */
+public interface QcCasesRelevanceEntryMapper extends BaseMapper<QcCasesRelevanceEntry> {
+
+}

+ 58 - 0
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.dto.*;
 import com.diagbot.entity.BehospitalInfo;
+import com.diagbot.entity.FilterRecordVO;
 import com.diagbot.vo.*;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -81,6 +84,32 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @return
      */
     public int operationCount(FilterVO filterVO);
+    /**
+     * 病案管理指标(内页)
+     *
+     * @param timeVo
+     * @return
+     */
+    public Map<String,Object> getBaseIndex( MedIndexFilterVO timeVo);
+
+    /**
+     * 病案管理规则质控参数查询
+     *
+     * @param filterVO
+     * @return
+     */
+    public Map<String,Object> getCountByEntry( FilterVO filterVO);
+
+    /**
+     * 病案管理规则质控病历参数查询
+     *
+     * @param filterVO
+     * @return
+     */
+    public List<MedManageParamsDTO> getMedManageParams( FilterVO filterVO);
+
+
+
 
     /**
      * 出院总人数统计-科室-首页
@@ -627,4 +656,33 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      */
     public List<ExportExcelByDeptDTO> qcCheckMRPageExportByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
 
+
+    /**
+     * 手术费,抗菌药物,手术和病理费等含有人数
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String, String>> selectOperationNum(@Param("filterVO")FilterVO filterVO);
+
+    /**
+     * 触发规则人数
+     * @param filterVO
+     * @return
+     */
+    public Map<String,Long> triggeringRules(@Param("filterVO")FilterVO filterVO);
+
+    /**
+     * 病案首页关联的出院病历
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> getMedicalRecords(@Param("filterVO") FilterVO filterVO);
+
+    /**
+     * 首页恶性肿瘤人数
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> malignancy(@Param("filterVO") FilterVO filterVO);
+
 }

+ 10 - 0
src/main/java/com/diagbot/service/DoctorAdviceService.java

@@ -5,6 +5,10 @@ import com.diagbot.dto.DoctorAdviceDTO;
 import com.diagbot.entity.DoctorAdvice;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.vo.DoctorAdviceVO;
+import com.diagbot.vo.FilterVO;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -17,4 +21,10 @@ import com.diagbot.vo.DoctorAdviceVO;
 public interface DoctorAdviceService extends IService<DoctorAdvice> {
 
     IPage<DoctorAdviceDTO> getPage(DoctorAdviceVO doctorAdviceVO);
+
+
+
+    List<Map<String, String>> getDoctorAdviceNum(FilterVO filterVO);
+
+
 }

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.MedIndexRelevance;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-04-30
+ */
+public interface MedIndexRelevanceService extends IService<MedIndexRelevance> {
+
+}

+ 26 - 0
src/main/java/com/diagbot/service/MedIndexResultService.java

@@ -0,0 +1,26 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.MedIndexResult;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.FilterVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author cy
+ * @since 2021-04-26
+ */
+public interface MedIndexResultService extends IService<MedIndexResult> {
+    /**
+     * 指标分母人数
+     * @param filterVO
+     * @return
+     */
+    public Map<String, Double> medicalRecordIndicator(@Param("filterVO") FilterVO filterVO);
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.MedManagementInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 病案管理人员统计表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-04-13
+ */
+public interface MedManagementInfoService extends IService<MedManagementInfo> {
+
+}

+ 17 - 0
src/main/java/com/diagbot/service/MedQcresultDetailService.java

@@ -0,0 +1,17 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.MedQcresultDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 质控评分明细信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y 服务类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-03-26
+ */
+public interface MedQcresultDetailService extends IService<MedQcresultDetail> {
+
+}

+ 17 - 0
src/main/java/com/diagbot/service/MedQcresultInfoService.java

@@ -0,0 +1,17 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.MedQcresultInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 质控评分主表信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y 服务类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-03-26
+ */
+public interface MedQcresultInfoService extends IService<MedQcresultInfo> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.QcCasesRelevanceEntry;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 质控关联条目表 服务类
+ * </p>
+ *
+ * @author cy
+ * @since 2021-04-16
+ */
+public interface QcCasesRelevanceEntryService extends IService<QcCasesRelevanceEntry> {
+
+}

+ 76 - 0
src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java

@@ -4,12 +4,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.dto.*;
 import com.diagbot.entity.BehospitalInfo;
+import com.diagbot.entity.FilterRecordVO;
 import com.diagbot.mapper.BehospitalInfoMapper;
 import com.diagbot.service.BehospitalInfoService;
+import com.diagbot.util.ListUtil;
 import com.diagbot.vo.*;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 /**
@@ -1013,6 +1017,40 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     public List<ExportExcelByDeptDTO> improveMRExportByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
         return baseMapper.improveMRExportByDept(qcResultShortPageVO);
     }
+
+    /**
+     * 病案管理指标获取基础数据
+     *
+     * @param timeVo
+     * @return
+     */
+    @Override
+    public Map<String,Object> getBaseIndex( MedIndexFilterVO timeVo) {
+        return baseMapper.getBaseIndex(timeVo);
+    }
+
+    /**
+     * 病案管理规则质控参数查询
+     *
+     * @param filterVO
+     * @return
+     */
+    @Override
+    public Map<String,Object> getCountByEntry( FilterVO filterVO) {
+        return baseMapper.getCountByEntry(filterVO);
+    }
+
+    /**
+     * 病案管理规则质控病历参数查询
+     *
+     * @param filterVO
+     * @return
+     */
+    @Override
+    public  List<MedManageParamsDTO> getMedManageParams( FilterVO filterVO) {
+        return baseMapper.getMedManageParams(filterVO);
+    }
+
     /**
      * 质控核查质控评分页(内页)
      *
@@ -1056,4 +1094,42 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     public List<ExportExcelByDeptDTO> qcCheckMRPageExportByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
         return baseMapper.qcCheckMRPageExportByDept(qcResultShortPageVO);
     }
+
+    /**
+     * 手术费,抗菌药物,手术和病理费等含有人数
+     *
+     * @param  filterVO
+     * @return
+     */
+    public List<Map<String, String>> selectOperationNum(@Param("filterVO")FilterVO filterVO){
+        return  baseMapper.selectOperationNum(filterVO);
+
+    }
+
+    /**
+     * 触发规则人数
+     * @param filterVO
+     * @return
+     */
+    public Map<String,Long> triggeringRules(@Param("filterVO")FilterVO filterVO){
+        return  baseMapper.triggeringRules(filterVO);
+    }
+
+    /**
+     * 病案首页关联的出院病历
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> getMedicalRecords(@Param("filterVO") FilterVO filterVO){
+        return  baseMapper.getMedicalRecords(filterVO);
+    }
+
+    /**
+     * 首页恶性肿瘤人数
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String,String>> malignancy(@Param("filterVO") FilterVO filterVO){
+        return  baseMapper.malignancy(filterVO);
+    }
 }

+ 9 - 0
src/main/java/com/diagbot/service/impl/DoctorAdviceServiceImpl.java

@@ -7,11 +7,13 @@ import com.diagbot.mapper.DoctorAdviceMapper;
 import com.diagbot.service.DoctorAdviceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.vo.DoctorAdviceVO;
+import com.diagbot.vo.FilterVO;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -57,4 +59,11 @@ public class DoctorAdviceServiceImpl extends ServiceImpl<DoctorAdviceMapper, Doc
         return page;
     }
 
+
+    /**
+     * 获取医嘱
+     */
+    public List<Map<String, String>> getDoctorAdviceNum(FilterVO filterVO){
+        return baseMapper.getDoctorAdviceNum(filterVO);
+    }
 }

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

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.MedIndexRelevance;
+import com.diagbot.mapper.MedIndexRelevanceMapper;
+import com.diagbot.service.MedIndexRelevanceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-04-30
+ */
+@Service
+public class MedIndexRelevanceServiceImpl extends ServiceImpl<MedIndexRelevanceMapper, MedIndexRelevance> implements MedIndexRelevanceService {
+
+}

+ 32 - 0
src/main/java/com/diagbot/service/impl/MedIndexResultServiceImpl.java

@@ -0,0 +1,32 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.MedIndexResult;
+import com.diagbot.mapper.MedIndexResultMapper;
+import com.diagbot.service.MedIndexResultService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.FilterVO;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author cy
+ * @since 2021-04-26
+ */
+@Service
+public class MedIndexResultServiceImpl extends ServiceImpl<MedIndexResultMapper, MedIndexResult> implements MedIndexResultService {
+    /**
+     * 各指标分母
+     * @param filterVO
+     * @return
+     */
+    public Map<String, Double> medicalRecordIndicator(@Param("filterVO") FilterVO filterVO){
+        return baseMapper.medicalRecordIndicator(filterVO);
+    }
+}

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

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.MedManagementInfo;
+import com.diagbot.mapper.MedManagementInfoMapper;
+import com.diagbot.service.MedManagementInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 病案管理人员统计表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-04-13
+ */
+@Service
+public class MedManagementInfoServiceImpl extends ServiceImpl<MedManagementInfoMapper, MedManagementInfo> implements MedManagementInfoService {
+
+}

+ 21 - 0
src/main/java/com/diagbot/service/impl/MedQcresultDetailServiceImpl.java

@@ -0,0 +1,21 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.MedQcresultDetail;
+import com.diagbot.mapper.MedQcresultDetailMapper;
+import com.diagbot.service.MedQcresultDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 质控评分明细信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y 服务实现类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-03-26
+ */
+@Service
+public class MedQcresultDetailServiceImpl extends ServiceImpl<MedQcresultDetailMapper, MedQcresultDetail> implements MedQcresultDetailService {
+
+}

+ 21 - 0
src/main/java/com/diagbot/service/impl/MedQcresultInfoServiceImpl.java

@@ -0,0 +1,21 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.MedQcresultInfo;
+import com.diagbot.mapper.MedQcresultInfoMapper;
+import com.diagbot.service.MedQcresultInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 质控评分主表信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y 服务实现类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-03-26
+ */
+@Service
+public class MedQcresultInfoServiceImpl extends ServiceImpl<MedQcresultInfoMapper, MedQcresultInfo> implements MedQcresultInfoService {
+
+}

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

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.QcCasesRelevanceEntry;
+import com.diagbot.mapper.QcCasesRelevanceEntryMapper;
+import com.diagbot.service.QcCasesRelevanceEntryService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 质控关联条目表 服务实现类
+ * </p>
+ *
+ * @author cy
+ * @since 2021-04-16
+ */
+@Service
+public class QcCasesRelevanceEntryServiceImpl extends ServiceImpl<QcCasesRelevanceEntryMapper, QcCasesRelevanceEntry> implements QcCasesRelevanceEntryService {
+
+}

+ 83 - 0
src/main/java/com/diagbot/task/MedIndexTask.java

@@ -0,0 +1,83 @@
+package com.diagbot.task;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.SysTaskCron;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.facade.ConsoleFacade;
+import com.diagbot.facade.SysTaskCronFacade;
+import com.diagbot.facade.data.ADoctorAdviceFacade;
+import com.diagbot.util.StringUtil;
+import com.diagbot.vo.FilterVO;
+import com.diagbot.vo.IndexTimeVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.Trigger;
+import org.springframework.scheduling.TriggerContext;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.SchedulingConfigurer;
+import org.springframework.scheduling.config.ScheduledTaskRegistrar;
+import org.springframework.scheduling.support.CronTrigger;
+
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.util.Date;
+
+@Configuration      //1.主要用于标记配置类,兼备Component的效果。
+@EnableScheduling   // 2.开启定时任务
+@Slf4j
+public class MedIndexTask implements SchedulingConfigurer{
+
+	@Autowired
+    private SysTaskCronFacade sysTaskCronFacade;
+
+    private SysTaskCron task001 = new SysTaskCron();
+
+    @Autowired
+    private ConsoleFacade consoleFacade;
+    
+    /**
+     * 执行定时任务.
+     */
+    @Override
+    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
+        taskRegistrar.addTriggerTask(new Runnable() {
+            @Override
+            public void run() {
+                //1.添加任务内容(Runnable)
+                if (null != task001
+                        && task001.getIsDeleted().equals(IsDeleteEnum.N.getKey())
+                        && task001.getIsUsed().equals(1)) {
+                    log.info("执行动态定时任务: " + LocalDateTime.now().toLocalTime());
+                    IndexTimeVO IndexTimeVO = new IndexTimeVO();
+                    String param = task001.getParam();
+                    String[] split = {param};
+                    if(param.contains(",")){
+                        split = param.split(",");
+                    }
+                    for (String str : split) {
+                        IndexTimeVO.setHospitalId(str);
+                        consoleFacade.saveMedicaIndicator(IndexTimeVO);
+                    }
+                }
+            }
+        }, new Trigger() {
+            @Override
+            public Date nextExecutionTime(TriggerContext triggerContext) {
+                //2.1 从数据库获取执行周期
+                task001 = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
+                        .eq("cron_code", "TASK_INDEX"), false);
+                String cron = "0 0 3 * * ?";
+                //2.2 合法性校验.
+                if (null != task001 && StringUtil.isNotBlank(task001.getCron())) {
+                    cron = task001.getCron();
+                }
+                CronTrigger trigger = new CronTrigger(cron);
+                return trigger.nextExecutionTime(triggerContext);
+            }
+        });
+    }
+}

+ 1 - 1
src/main/java/com/diagbot/util/ExcelUtils.java

@@ -115,7 +115,7 @@ public class ExcelUtils {
 
     private static void userExport2(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response,
                                     ExportParams exportParams, float height, Boolean havTitle) {
-        if(exportParams.getTitle().equals("病历质控报表")){
+        if(StringUtils.isNotEmpty(exportParams.getTitle()) && exportParams.getTitle().equals("病历质控报表")){
             exportParams.setTitleHeight(Short.valueOf("20"));
         };
         Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);

+ 1 - 1
src/main/java/com/diagbot/vo/BasDeptInfoVO.java

@@ -15,7 +15,7 @@ public class BasDeptInfoVO {
     /**
      * 搜索参数
      */
-    private String inputStr;
+    private String inputStr = "";
 
     @ApiModelProperty(hidden = true)
     private Long hospitalId;

+ 10 - 0
src/main/java/com/diagbot/vo/FilterVO.java

@@ -67,4 +67,14 @@ public class FilterVO {
      * 是否归档(0:未归档,1:已归档)
      */
     private String isPlacefile = "1";
+
+    /**
+     * 辅助标识
+     */
+    private String flagStr = "0";
+
+    /**
+     * 指标名称
+     */
+    private String indexName = "";
 }

+ 38 - 0
src/main/java/com/diagbot/vo/IndexTimeVO.java

@@ -0,0 +1,38 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/15 16:04
+ */
+@Getter
+@Setter
+public class IndexTimeVO {
+
+    /**
+     * 起始时间
+     */
+    @NotBlank(message = "请输入起始时间")
+    private String startDate;
+    /**
+     * 结束时间
+     */
+    @NotBlank(message = "请输入结束时间")
+    private String endDate;
+
+    /**
+     * 医院id
+     */
+    @ApiModelProperty(hidden = true)
+    private String hospitalId;
+
+    @ApiModelProperty(hidden = true)
+    private Long userId;
+
+}

+ 80 - 0
src/main/java/com/diagbot/vo/MedIndexFilterVO.java

@@ -0,0 +1,80 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/15 16:04
+ */
+@Getter
+@Setter
+public class MedIndexFilterVO {
+    /**
+     * 统计维度 1-本月,2-本年
+     */
+    //@NotNull(message = "请输入本年或本月")
+    private Integer type;
+    /**
+     * 起始时间
+     */
+    @NotBlank(message = "请输入起始时间")
+    private String startDate;
+    /**
+     * 结束时间
+     */
+    @NotBlank(message = "请输入结束时间")
+    private String endDate;
+
+    /**
+     * 开始时间转化当月的第一天
+     */
+    @ApiModelProperty(hidden = true)
+    private String lastStartDate;
+    /**
+     * 结束时间转化当月的最后天
+     */
+    @ApiModelProperty(hidden = true)
+    private String lastEndDate;
+
+    /**
+     * 医院id
+     */
+    @ApiModelProperty(hidden = true)
+    private String hospitalId;
+    /**
+     * 限制条数
+     */
+    @ApiModelProperty(hidden = true)
+    private Integer limitCount = 10;
+
+    @ApiModelProperty(hidden = true)
+    private Long userId;
+
+    /**
+     * 科室分类
+     */
+    private String deptClass;
+    //科室名称
+    private String deptName;
+
+    private String level;
+    /**
+     * 是否归档(0:未归档,1:已归档)
+     */
+    private String isPlacefile = "1";
+
+    /**
+     * 辅助标识
+     */
+    private String flagStr = "0";
+
+    /**
+     * 指标名称
+     */
+    private String indexName = "";
+}

+ 14 - 14
src/main/java/com/diagbot/web/BehospitalInfoController.java

@@ -2,22 +2,11 @@ package com.diagbot.web;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
-import com.diagbot.dto.AnalyzeDTO;
-import com.diagbot.dto.AnalyzeRunDTO;
-import com.diagbot.dto.BehospitalInfoDTO;
-import com.diagbot.dto.OutputInfo;
-import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.*;
+import com.diagbot.entity.QcCasesRelevanceEntry;
 import com.diagbot.facade.BehospitalInfoFacade;
 import com.diagbot.facade.QcresultInfoFacade;
-import com.diagbot.vo.AnalyzeApiVO;
-import com.diagbot.vo.AnalyzeCdsVO;
-import com.diagbot.vo.AnalyzeRunVO;
-import com.diagbot.vo.AnalyzeVO;
-import com.diagbot.vo.BehospitalPageVO;
-import com.diagbot.vo.ExportQcresultVO;
-import com.diagbot.vo.GetDetailVO;
-import com.diagbot.vo.QcresultVO;
-import com.diagbot.vo.TaskVO;
+import com.diagbot.vo.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,6 +19,7 @@ import springfox.documentation.annotations.ApiIgnore;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -79,6 +69,16 @@ public class BehospitalInfoController {
         return RespDTO.onSuc(data);
     }
 
+
+    @ApiOperation(value = "质量控制指标title获取[by:cy]",
+            notes = "")
+    @PostMapping("/getMedQualityCoList")
+    @SysLogger("getMedQualityCoList")
+    public RespDTO<List<ColumnDTO>> getMedQualityControl(@RequestBody BasDeptInfoVO basDeptInfoVO) {
+        List<ColumnDTO> data = behospitalInfoFacade.getMedQualityControl(basDeptInfoVO);
+        return  RespDTO.onSuc(data);
+    }
+
     @ApiOperation(value = "评分[by:zhoutg]",
             notes = "")
     @PostMapping("/analyze")

+ 34 - 1
src/main/java/com/diagbot/web/ConsoleController.java

@@ -3,6 +3,7 @@ package com.diagbot.web;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.*;
+import com.diagbot.entity.FilterRecordVO;
 import com.diagbot.facade.ConsoleFacade;
 import com.diagbot.vo.*;
 import io.swagger.annotations.Api;
@@ -160,6 +161,37 @@ public class ConsoleController {
         return RespDTO.onSuc(consoleFacade.leaveHosCount(filterVO));
     }
 
+
+  /**
+     * 病案指标
+     * @param filterVO
+     * @return
+     */
+    @ApiOperation(value = "病案指标[by:zh]",
+            notes = "startDate: 起始时间 <br>" +
+                    "endDate: 结束时间 <br>" +
+                    "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
+    @PostMapping("/medicalRecordIndicator")
+    @SysLogger("medicalRecordIndicator")
+    public RespDTO<List<Map<String,String>>> medicalRecordIndicator(@RequestBody @Valid FilterVO filterVO) {
+        return RespDTO.onSuc(consoleFacade.medicalRecordIndicator(filterVO));
+    }
+
+    /**
+     * 病案指标后台维护接口
+     * @param indexTimeVO
+     * @return
+     */
+    @ApiOperation(value = "病案指标数据存储[by:cy]",
+            notes = "startDate: 起始时间-样例[2021-01-01]请严格按照日历时间传参!!! <br>" +
+                    "endDate: 结束时间-样例[2021-01-01]请严格按照日历时间传参!!!<br>")
+    @PostMapping("/saveMedicaIndicator")
+    @SysLogger("saveMedicaIndicator")
+    public RespDTO<Boolean> saveMedicaIndicator(@RequestBody @Valid IndexTimeVO indexTimeVO) {
+        Boolean flag = consoleFacade.saveMedicaIndicator(indexTimeVO);
+        return RespDTO.onSuc(flag);
+    }
+
     /**
      * 质控病历统计
      *
@@ -432,7 +464,7 @@ public class ConsoleController {
     @ApiOperation(value = "病案首页合格率占比[by:zhaops]",
             notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
                     "level: 病历等级 <br>" +
-                    "name: 科室名称 <br>" +
+                    "deptName: 科室名称 <br>" +
                     "asc: 排序(升序) <br>" +
                     "desc: 排序(降序) <br>" +
                     "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
@@ -827,4 +859,5 @@ public class ConsoleController {
     public RespDTO<List<ColumnDTO>> getMedicalCheckTitle() {
         return RespDTO.onSuc(consoleFacade.getMedicalCheckTitle());
     }
+
 }

+ 20 - 0
src/main/java/com/diagbot/web/MedManagementInfoController.java

@@ -0,0 +1,20 @@
+package com.diagbot.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 病案管理人员统计表 前端控制器
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-04-13
+ */
+@Controller
+@RequestMapping("/medManagementInfo")
+public class MedManagementInfoController {
+
+}

+ 21 - 0
src/main/java/com/diagbot/web/MedQcresultDetailController.java

@@ -0,0 +1,21 @@
+package com.diagbot.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 质控评分明细信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y 前端控制器
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-03-26
+ */
+@Controller
+@RequestMapping("/medQcresultDetail")
+public class MedQcresultDetailController {
+
+}

+ 21 - 0
src/main/java/com/diagbot/web/MedQcresultInfoController.java

@@ -0,0 +1,21 @@
+package com.diagbot.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 质控评分主表信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y 前端控制器
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-03-26
+ */
+@Controller
+@RequestMapping("/medQcresultInfo")
+public class MedQcresultInfoController {
+
+}

+ 20 - 0
src/main/java/com/diagbot/web/QcCasesRelevanceEntryController.java

@@ -0,0 +1,20 @@
+package com.diagbot.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 质控关联条目表 前端控制器
+ * </p>
+ *
+ * @author cy
+ * @since 2021-04-16
+ */
+@Controller
+@RequestMapping("/qcCasesRelevanceEntry")
+public class QcCasesRelevanceEntryController {
+
+}

+ 480 - 0
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -714,6 +714,131 @@
         order by b.order_no, a.order_no;
     </select>
 
+    <!--病案管理指标基础sql明细-->
+    <select id="getBaseIndex"  parameterType="com.diagbot.vo.MedIndexFilterVO" resultType="java.util.Map">
+        select
+        f1.firWorkNum,
+        f2.secWorkNum,
+        f3.thrWorkNum,
+        f3.forWorkNum,
+        f3.sixWorkNum,
+        f4.sevenWorkNum
+        from (
+        SELECT count(DISTINCT a.behospital_code)  as firWorkNum
+        FROM
+        med_behospital_info a
+        WHERE
+        a.is_deleted = 'N'
+        AND a.is_placefile = 1
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <![CDATA[AND a.qc_type_id <>0 ]]>
+        <if test="startDate != null and startDate != ''">
+            <![CDATA[ AND a.leave_hospital_date >= #{lastStartDate}]]>
+        </if>
+        <if test="endDate != null and endDate != ''">
+            <![CDATA[ AND a.leave_hospital_date <= #{lastEndDate}]]>
+        </if>)f1,
+            ( SELECT count(DISTINCT a.behospital_code) AS secWorkNum
+        FROM
+        med_outpatient_info a
+        WHERE
+        a.is_deleted = 'N'
+        <if test="startDate != null and startDate != ''">
+            <![CDATA[ AND a.visit_date >= #{lastStartDate}]]>
+        </if>
+        <if test="endDate != null and endDate != ''">
+            <![CDATA[ AND a.visit_date <= #{lastEndDate}]]>
+        </if>
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>)f2,(
+           select
+        count(DISTINCT case when  <![CDATA[m.behospital_date >= #{startDate}]]>  and  <![CDATA[m.behospital_date <= #{endDate}]]>
+        and m.is_placefile = 0 then m.behospital_code else null end) as thrWorkNum,
+        count(DISTINCT case when  <![CDATA[m.leave_hospital_date >= #{startDate}]]>  and  <![CDATA[m.leave_hospital_date <= #{endDate}]]>  and m.is_placefile = 1 then m.behospital_code else null end) as forWorkNum,
+        count(DISTINCT case when  <![CDATA[m.leave_hospital_date >= #{startDate}]]> and <![CDATA[m.leave_hospital_date <= #{endDate}]]> and m.is_placefile = 1 and m.level = '甲' then m.behospital_code else null end) as sixWorkNum
+           from(
+           SELECT DISTINCT a.*,b.level
+            FROM
+            med_behospital_info a,
+            med_qcresult_info b
+            WHERE
+            a.is_deleted = 'N'
+            AND b.is_deleted = 'N'
+            AND a.hospital_id = b.hospital_id
+            AND a.behospital_code = b.behospital_code
+            <![CDATA[AND a.qc_type_id <>0 ]]>
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>)m
+            )f3,(
+        SELECT count(DISTINCT a.behospital_code)  as sevenWorkNum
+        FROM
+        med_behospital_info a
+        WHERE
+        a.is_deleted = 'N'
+        AND a.is_placefile = 1
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <![CDATA[AND a.qc_type_id <>0 ]]>
+        <if test="startDate != null and startDate != ''">
+            <![CDATA[ AND a.leave_hospital_date >= #{startDate}]]>
+        </if>
+        <if test="endDate != null and endDate != ''">
+            <![CDATA[ AND a.leave_hospital_date <= #{endDate}]]>
+        </if>)f4
+    </select>
+
+    <!-- 病案管理规则质控缺陷病历总数查询-->
+    <select id="getMedManageParams"  parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.MedManageParamsDTO">
+        SELECT
+        f1.behospitalCode,
+        <if test="flagStr != null and flagStr == 1 ">
+        f2.rep_name as repName,
+        </if>
+        <if test="flagStr != null and flagStr == 2">
+        f3.da_item_name as daItemName,
+        f3.da_status AS daStatus,
+        f3.doctor_advice_type as doctorAdviceType,
+        </if>
+        f1.hospitalId
+        from(
+        SELECT DISTINCT
+        a.hospital_id as hospitalId,
+        a.behospital_code as behospitalCode
+        FROM
+        med_behospital_info a,
+        med_qcresult_info b
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND <![CDATA[a.leave_hospital_date >= #{startDate}]]>
+        AND  <![CDATA[a.leave_hospital_date <= #{endDate}]]>
+        AND  a.is_placefile = 1
+        <![CDATA[AND a.qc_type_id <>0 ]]>
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>)f1
+        <if test="flagStr != null and flagStr == 1 ">
+             join med_lis_info f2
+            on  f2.is_deleted = 'N'
+            AND f1.hospitalId = f2.hospital_id
+            AND f1.behospitalCode = f2.behospital_code
+        </if>
+        <if test="flagStr != null and flagStr == 2">
+            join  med_doctor_advice f3
+        on  f3.is_deleted = 'N'
+        AND f1.hospitalId = f3.hospital_id
+        AND f1.behospitalCode = f3.behospital_code
+        </if>
+    </select>
+
+
     <!-- 各科室缺陷占比-全院-首页 -->
     <select id="entryByDept" parameterType="com.diagbot.vo.FilterVO"
             resultType="com.diagbot.dto.NumDTO">
@@ -17391,4 +17516,359 @@
         f1.doctorId = f2.doctorId
         AND f1.doctorName = f2.doctorName
     </select>
+
+    <!-- 入院,手术,出院病案情况-->
+    <select id="medicalRecordIndicator" parameterType="com.diagbot.vo.FilterVO" resultType="java.util.Map">
+        SELECT
+        count(
+        DISTINCT
+        CASE
+        WHEN q.type=5 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'operationNote',
+        count(
+        DISTINCT
+        CASE
+        WHEN q.type = 4 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'residentAdmitNote',
+        count(
+        DISTINCT
+        CASE
+        WHEN q.type = 6 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'dischargeRecord',
+        count(
+        DISTINCT
+        CASE
+        WHEN q.type = 7 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'medicalRecord'
+        FROM
+        (
+        SELECT
+        a.behospital_code,
+        a.cases_entry_id,
+        a.hospital_id
+        FROM
+        (
+        SELECT
+        a.behospital_code,
+        c.cases_entry_id,
+        a.hospital_id
+        FROM
+        (
+        SELECT
+        a.behospital_code,
+        a.hospital_id
+        FROM
+        med_behospital_info a,
+        med_qcresult_info c
+        WHERE
+        a.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND a.is_placefile = #{filterVO.isPlacefile}
+        <if test="filterVO.startDate != null and  filterVO.endDate != null">
+            <![CDATA[ and a.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND a.leave_hospital_date <= #{filterVO.endDate}]]>
+        </if>
+        <![CDATA[ and  a.qc_type_id <>'0' ]]>
+        AND a.behospital_code = c.behospital_code
+        AND a.hospital_id = #{filterVO.hospitalId}
+        AND a.hospital_id = c.hospital_id
+        ) a
+        LEFT JOIN med_qcresult_detail c ON c.is_deleted = 'N'
+        AND a.behospital_code = c.behospital_code
+        AND a.hospital_id = c.hospital_id
+        ) a
+        JOIN qc_cases_entry d ON d.id = a.cases_entry_id
+        AND d.is_deleted = 'N'
+        ) a
+        LEFT JOIN qc_cases_relevance_entry q ON a.cases_entry_id = q.relevance_id
+        AND a.hospital_id = q.hospital_id
+
+    </select>
+
+    <!--  时间段出院,住院, 手术费,抗菌药物,手术和病理费等含有人数 -->
+    <select id="selectOperationNum" parameterType="com.diagbot.vo.FilterVO" resultType="java.util.Map">
+        select
+        d.behospital_code behospitalCode,
+        b.operation_fee operationFee,
+        b.pathology_fee pathologyFee,
+        b.antibiosis_fee antibiosisFee
+        FROM
+        (
+        SELECT
+        a.behospital_code,
+        a.hospital_id,
+        a.behospital_date,
+        a.leave_hospital_date
+        FROM
+        med_behospital_info a,
+        med_qcresult_info c
+        WHERE
+            a.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND a.is_placefile = #{filterVO.isPlacefile}
+        <if test="filterVO.startDate != null and  filterVO.endDate != null">
+            <![CDATA[ and a.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND a.leave_hospital_date <= #{filterVO.endDate}]]>
+        </if>
+        <![CDATA[ and  a.qc_type_id <>'0' ]]>
+        AND a.hospital_id = c.hospital_id
+        AND a.hospital_id = #{filterVO.hospitalId}
+        and a.behospital_code = c.behospital_code
+        ) d
+        JOIN med_home_page b ON b.behospital_code = d.behospital_code
+        AND d.hospital_id = b.hospital_id
+        AND b.is_deleted = 'N'
+    </select>
+<!--    关于触发规则不符合人数-->
+    <select id="triggeringRules" parameterType="com.diagbot.vo.FilterVO" resultType="java.util.Map">
+        SELECT
+        count(
+        DISTINCT
+        CASE
+        WHEN a.type=5 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'operationNote',
+        count(
+        DISTINCT
+        CASE
+        WHEN a.type = 4 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'residentAdmitNote',
+        count(
+        DISTINCT
+        CASE
+        WHEN a.type = 6 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'dischargeRecord',
+        count(
+        DISTINCT
+        CASE
+        WHEN a.type = 7 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'medicalRecord',
+        count(
+        DISTINCT
+        CASE
+        WHEN a.type=8 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'CT',
+        count(
+        DISTINCT
+        CASE
+        WHEN a.type = 9 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'MR',
+        count(
+        DISTINCT
+        CASE
+        WHEN a.type = 10 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'operationPathologyFee',
+        count(
+        DISTINCT
+        CASE
+        WHEN a.type = 15 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'operationRecordNum',
+        count(
+        DISTINCT
+        CASE
+        WHEN a.type = 17 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'bloodNum',
+        count(
+        DISTINCT
+        CASE
+        WHEN a.type = 18 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'WardRoundNum',
+        count(
+        DISTINCT
+        CASE
+        WHEN a.type = 19 THEN
+        a.behospital_code
+        ELSE
+        NULL
+        END
+        ) AS 'rescueNum'
+        FROM
+        (
+        SELECT
+        a.behospital_code,
+        a.hospital_id,
+        q.type
+        FROM
+        (
+        SELECT
+        a.behospital_code,
+        a.cases_entry_id,
+        a.hospital_id
+        FROM
+        (
+        SELECT
+        a.behospital_code,
+        c.cases_entry_id,
+        a.hospital_id
+        FROM
+        (
+        SELECT
+        a.behospital_code,
+        a.hospital_id
+        FROM
+        med_behospital_info a,
+        med_qcresult_info c
+        WHERE
+        a.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND a.is_placefile = #{filterVO.isPlacefile}
+        <if test="filterVO.startDate != null and  filterVO.endDate != null">
+            <![CDATA[ and a.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND a.leave_hospital_date <= #{filterVO.endDate}]]>
+        </if>
+        AND a.behospital_code = c.behospital_code
+        AND a.hospital_id = #{filterVO.hospitalId}
+        AND a.hospital_id = c.hospital_id
+        ) a
+        LEFT JOIN med_qcresult_detail c ON c.is_deleted = 'N'
+        AND a.behospital_code = c.behospital_code
+        AND a.hospital_id = c.hospital_id
+        ) a
+        JOIN qc_cases_entry d ON d.id = a.cases_entry_id
+        AND d.is_deleted = 'N'
+        ) a
+        JOIN qc_cases_relevance_entry q ON a.cases_entry_id = q.relevance_id
+        AND a.hospital_id = q.hospital_id
+        ) a
+        JOIN med_index_relevance r ON r.behospital_code = a.behospital_code
+        AND r.relevance_type = a.type
+        AND r.is_deleted = 'N'
+        AND a.hospital_id = r.hospital_id
+    </select>
+
+<!--    跟病案首页关联的出院病历-->
+    <select id="getMedicalRecords" parameterType="com.diagbot.vo.FilterVO" resultType="java.util.Map">
+     SELECT
+	d.behospital_code,
+	d.behospital_date,
+	d.leave_hospital_date,
+	b.behospital_code AS b_code,
+	b.operation_fee,
+	b.antibiosis_fee,
+	b.pathology_fee
+    FROM
+	    (
+		SELECT
+			a.behospital_code,
+			a.hospital_id,
+			a.behospital_date,
+			a.leave_hospital_date
+		FROM
+			med_behospital_info a,
+			med_qcresult_info c
+		WHERE
+			a.behospital_code = c.behospital_code
+		AND a.hospital_id = #{filterVO.hospitalId}
+		AND a.is_placefile = #{filterVO.isPlacefile}
+		AND a.hospital_id = c.hospital_id
+		AND a.is_deleted = 'N'
+		AND c.is_deleted = 'N'
+        <![CDATA[ and  a.qc_type_id <>'0' ]]>
+        <if test="filterVO.startDate != null and  filterVO.endDate != null ">
+            <![CDATA[ AND a.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND a.leave_hospital_date <= #{filterVO.endDate}]]>
+        </if>
+	) d
+    LEFT JOIN med_home_page b ON b.behospital_code = d.behospital_code
+    AND d.hospital_id = b.hospital_id
+    AND b.is_deleted = 'N'
+    where ISNULL(b.behospital_code)
+    </select>
+
+<!--    首页恶性肿瘤-->
+    <select id="malignancy" parameterType="com.diagbot.vo.FilterVO" resultType="java.util.Map">
+        SELECT
+        d.behospital_code
+        FROM
+        (
+        SELECT
+        a.behospital_code,
+        a.hospital_id,
+        a.behospital_date,
+        a.leave_hospital_date
+        FROM
+        med_behospital_info a,
+        med_qcresult_info c
+        WHERE
+        a.behospital_code = c.behospital_code
+        AND a.hospital_id =  #{filterVO.hospitalId}
+        AND a.is_placefile =  #{filterVO.isPlacefile}
+        AND a.hospital_id = c.hospital_id
+        AND a.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        <![CDATA[ and  a.qc_type_id <>'0' ]]>
+        <if test="filterVO.startDate != null and  filterVO.endDate != null ">
+            <![CDATA[ AND a.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND a.leave_hospital_date <= #{filterVO.endDate}]]>
+        </if>
+        ) d
+        JOIN med_home_page b ON b.behospital_code = d.behospital_code
+        AND d.hospital_id = b.hospital_id
+        AND b.is_deleted = 'N'
+        AND (
+        (
+        b.outpatient_emr_diagnose LIKE '%恶性肿瘤%'
+        AND b.outpatient_emr_diagnose_code LIKE 'C%'
+        )
+        OR (
+        b.outpatient_emr_diagnose LIKE 'C%'
+        AND b.outpatient_emr_diagnose_code LIKE '%恶性肿瘤%'
+        )
+        )
+    </select>
 </mapper>

+ 41 - 0
src/main/resources/mapper/DoctorAdviceMapper.xml

@@ -213,4 +213,45 @@
         </foreach>
     </update>
 
+
+
+<!--    根据条件获取医嘱-->
+    <select id="getDoctorAdviceNum" parameterType="com.diagbot.vo.FilterVO" resultType="java.util.Map">
+        SELECT
+        a.behospital_code,
+        b.da_item_name
+        FROM
+        (
+        SELECT
+        a.behospital_code,
+        a.hospital_id
+        FROM
+        med_behospital_info a,
+        med_qcresult_info c
+        WHERE
+        a.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND a.is_placefile = #{filterVO.isPlacefile}
+        <if test="filterVO.startDate != null and  filterVO.endDate != null">
+            <![CDATA[ and a.leave_hospital_date >= #{filterVO.startDate}]]>
+            <![CDATA[ AND a.leave_hospital_date <= #{filterVO.endDate}]]>
+        </if>
+        <![CDATA[ and  a.qc_type_id <>'0' ]]>
+        AND a.behospital_code = c.behospital_code
+        AND a.hospital_id = #{filterVO.hospitalId}
+        AND a.hospital_id = c.hospital_id
+        ) a,
+        med_doctor_advice b
+        WHERE
+        b.is_deleted = 'N'
+        <![CDATA[ and  b.da_status <> '作废' ]]>
+        AND a.behospital_code = b.behospital_code
+        AND a.hospital_id = b.hospital_id
+        <if test="filterVO.flagStr == 1">
+            AND b.doctor_advice_type='临时医嘱'
+        </if>
+        <if test="filterVO.flagStr == 2">
+            AND (b.doctor_advice_type='临时医嘱' or b.doctor_advice_type='长期医嘱')
+        </if>
+    </select>
 </mapper>

+ 21 - 0
src/main/resources/mapper/MedIndexRelevanceMapper.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.MedIndexRelevanceMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.MedIndexRelevance">
+        <id column="id" property="id" />
+        <result column="index_result_id" property="indexResultId" />
+        <result column="relevance_type" property="relevanceType" />
+        <result column="hospital_id" property="hospitalId" />
+        <result column="behospital_code" property="behospitalCode" />
+        <result column="start_date" property="startDate" />
+        <result column="end_date" property="endDate" />
+        <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" />
+    </resultMap>
+
+</mapper>

+ 65 - 0
src/main/resources/mapper/MedIndexResultMapper.xml

@@ -0,0 +1,65 @@
+<?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.MedIndexResultMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.MedIndexResult">
+        <id column="id" property="id" />
+        <result column="admission_result" property="admissionResult" />
+        <result column="operation_result" property="operationResult" />
+        <result column="leave_hospital_result" property="leaveHospitalResult" />
+        <result column="med_home_result" property="medHomeResult" />
+        <result column="ct_result" property="ctResult" />
+        <result column="mri_result" property="mriResult" />
+        <result column="pathology_result" property="pathologyResult" />
+        <result column="germ_result" property="germResult" />
+        <result column="antibiosis_result" property="antibiosisResult" />
+        <result column="tumor_chemistry_result" property="tumorChemistryResult" />
+        <result column="tumor_radiation_result" property="tumorRadiationResult" />
+        <result column="operation_complete_result" property="operationCompleteResult" />
+        <result column="implants_result" property="implantsResult" />
+        <result column="blood_result" property="bloodResult" />
+        <result column="ward_round_result" property="wardRoundResult" />
+        <result column="rescue_result" property="rescueResult" />
+        <result column="sec_file_result" property="secFileResult" />
+        <result column="file_complete_result" property="fileCompleteResult" />
+        <result column="no_copy_result" property="noCopyResult" />
+        <result column="record_sign_result" property="recordSignResult" />
+        <result column="fir_record_result" property="firRecordResult" />
+        <result column="start_date" property="startDate" />
+        <result column="end_date" property="endDate" />
+        <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" />
+    </resultMap>
+
+
+
+    <select id="medicalRecordIndicator" parameterType="com.diagbot.vo.FilterVO" resultType="java.util.Map">
+         SELECT
+            COALESCE (sum(a.admission_result), 0) AS 'startCount',
+            COALESCE (sum(a.operation_result), 0) AS 'operationFeeNum',
+            COALESCE (sum(a.ct_result), 0) AS 'CTNum',
+            COALESCE (sum(a.mri_result), 0) AS 'MRNum',
+            COALESCE (sum(a.pathology_result), 0) AS 'operationPathologyFeeNum',
+            COALESCE (sum(a.germ_result), 0) AS 'bacterialCultureNum',
+            COALESCE (sum(a.antibiosis_result), 0) AS 'antibiosisFeeNum',
+            COALESCE (sum(a.tumor_chemistry_result),0) AS 'chemotherapyMalignantTumorsNum',
+            COALESCE (sum(a.tumor_radiation_result),0) AS 'tumor_radiation_result',
+            COALESCE (sum(a.implants_result), 0) AS 'implants_result',
+            COALESCE (sum(a.blood_result), 0) AS 'blood_result',
+            COALESCE (sum(a.rescue_result), 0) AS 'rescue_result',
+            COALESCE (sum(a.sec_file_result), 0) AS 'sec_file_result'
+
+        FROM
+            med_index_result a
+        WHERE
+            a.hospital_id = #{filterVO.hospitalId}
+        AND a.is_deleted = 'N'
+        AND (a.start_date BETWEEN #{filterVO.startDate} AND #{filterVO.endDate} )
+        AND (a.end_date BETWEEN #{filterVO.startDate} AND #{filterVO.endDate} )
+ </select>
+
+</mapper>

+ 80 - 0
src/main/resources/mapper/MedManagementInfoMapper.xml

@@ -0,0 +1,80 @@
+<?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.MedManagementInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.MedManagementInfo">
+        <id column="id" property="id" />
+        <result column="hospital_id" property="hospitalId" />
+        <result column="position_id" property="positionId" />
+        <result column="start_date" property="startDate" />
+        <result column="end_date" property="endDate" />
+        <result column="work_person" property="workPerson" />
+        <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" />
+    </resultMap>
+
+    <select id="medicalRecordIndicator" parameterType="com.diagbot.entity.FilterRecordVO" resultType="java.util.Map">
+      select a.behospital_code as acode,
+             b.`name`,
+             b.hospital_id,
+             b.beh_dept_id ,
+             b.behospital_date,
+             b.leave_hospital_date,
+             b.diagnose_icd ,
+             b.diagnose ,
+             b.is_placefile,
+             c.cases_entry_id ,
+             c.msg
+             <if test="filterRecordVO.type != null and (filterRecordVO.type== 1 or filterRecordVO.type==2)">
+                 ,COUNT(DISTINCT a.behospital_code) as countNum
+             </if>
+             <if test="filterRecordVO.type != null and (filterRecordVO.type== 3 or filterRecordVO.type==4)">
+                 ,sum(c.cases_entry_id = 2170) as '2170手术记录未在术后24h内完成',
+                 sum(c.cases_entry_id = 2287) as '2287会诊记录次数与会诊次数不一致',
+                 sum(c.cases_entry_id = 2658) as '2287会诊记录次数与会诊次数不一致',
+                 sum(c.cases_entry_id = 2635) as '2635出院记录未在患者出院24小时内完成'
+             </if>
+      from
+             med_qcresult_cases a,
+             med_behospital_info b,
+             med_qcresult_detail c,
+             qc_cases_entry d
+
+       where
+             a.hospital_id = #{filterRecordVO.hospitalId}
+        and  a.hospital_id = b.hospital_id
+        and  a.hospital_id = c.hospital_id
+        and  a.cases_id = 243
+        and  b.is_placefile = #{filterRecordVO.isPlacefile}
+        and  a.behospital_code = b.behospital_code
+        and  a.behospital_code = c.behospital_code
+        and  c.cases_entry_id = d.id
+        and  a.is_deleted='N'
+        and  b.is_deleted ='N'
+        and c.is_deleted = 'N'
+        and d.is_deleted = 'N'
+        <if test="filterRecordVO.type != null and filterRecordVO.type==1 ">
+            and #{start} &lt;= b.leave_hospital_date
+            and b.leave_hospital_date &lt;= #{end}
+        </if>
+        <if test="filterRecordVO.type != null and (filterRecordVO.type==2 or filterRecordVO.type==0) ">
+            and #{start} &lt;= b.behospital_date
+            and b.behospital_date &lt;= #{end}
+        </if>
+        <if test="filterRecordVO.type != null and filterRecordVO.type== 3 ">
+            and #{start} &lt;= b.behospital_date
+            and  b.behospital_date &lt;= #{end}
+            GROUP BY  c.cases_entry_id
+        </if>
+        <if test="filterRecordVO.type != null and filterRecordVO.type== 4 ">
+            and #{start} &lt;= b.leave_hospital_date
+            and  b.leave_hospital_date &lt;= #{end}
+            GROUP BY  c.cases_entry_id
+        </if>
+
+    </select>
+</mapper>

+ 27 - 0
src/main/resources/mapper/MedQcresultDetailMapper.xml

@@ -0,0 +1,27 @@
+<?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.MedQcresultDetailMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.MedQcresultDetail">
+        <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="cases_score" property="casesScore" />
+        <result column="cases_entry_id" property="casesEntryId" />
+        <result column="score" property="score" />
+        <result column="msg" property="msg" />
+        <result column="info" property="info" />
+        <result column="is_reject" property="isReject" />
+        <result column="grade_type" property="gradeType" />
+        <result column="opt_type" property="optType" />
+        <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>

+ 24 - 0
src/main/resources/mapper/MedQcresultInfoMapper.xml

@@ -0,0 +1,24 @@
+<?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.MedQcresultInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.MedQcresultInfo">
+        <id column="id" property="id" />
+        <result column="hospital_id" property="hospitalId" />
+        <result column="behospital_code" property="behospitalCode" />
+        <result column="level" property="level" />
+        <result column="page_data" property="pageData" />
+        <result column="menu_data" property="menuData" />
+        <result column="grade_type" property="gradeType" />
+        <result column="score_res" property="scoreRes" />
+        <result column="have_home_page" property="haveHomePage" />
+        <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>

+ 16 - 0
src/main/resources/mapper/QcCasesRelevanceEntryMapper.xml

@@ -0,0 +1,16 @@
+<?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.QcCasesRelevanceEntryMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.QcCasesRelevanceEntry">
+        <id column="id" property="id" />
+        <result column="type" property="type" />
+        <result column="hospital_id" property="hospitalId" />
+        <result column="cases_name" property="casesName" />
+        <result column="relevance_id" property="relevanceId" />
+        <result column="name" property="name" />
+        <result column="is_deleted" property="isDeleted" />
+    </resultMap>
+
+</mapper>

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

@@ -33,7 +33,7 @@ public class CodeGeneration {
         gc.setEnableCache(false);// XML 二级缓存
         gc.setBaseResultMap(true);// XML ResultMap
         gc.setBaseColumnList(false);// XML columList
-        gc.setAuthor("zhoutg");// 作者
+        gc.setAuthor("zhanghang");// 作者
 
         // 自定义文件命名,注意 %s 会自动填充表实体属性!
         gc.setControllerName("%sController");
@@ -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[] { "str_consultation_record"}); // 需要生成的表
+        strategy.setInclude(new String[] { "med_qcresult_info"}); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);