Browse Source

优化处理

chengyao 4 years ago
parent
commit
a26ad3c543

+ 2 - 20
src/main/java/com/diagbot/dto/CaseScoreDTO.java

@@ -16,26 +16,13 @@ import java.util.List;
 @Getter
 @Setter
 public class CaseScoreDTO {
-    //明细主键
-    private Long id;
+
     //得分
     private Double score;
     //提示信息
     private String msg;
-    // 控费标识(1:是控费条目,2:不是控费条目)
-    private Integer drgs;
-    // 质控形式(1:形式质控,2:内涵质控)
-    private Integer type;
-    //提示信息
-    private String code;
     //提示信息
     private String info;
-    //标准提示信息
-    private String standardMsg;
-    // 操作类型(1:新增,2:删除,3:修改)
-    private Integer optType;
-    // 初始类型(1:机器,2:人工)
-    private Integer gradeType;
     //单项否决
     private String isReject;
     //模块名称
@@ -49,10 +36,5 @@ public class CaseScoreDTO {
     private Double casesScore;
     // 条目ID
     private Long casesEntryId;
-    // 记录创建时间
-    private Date gmtCreate;
-    // 记录修改时间,如果时间是1970年则表示纪录未修改
-    private Date gmtModified;
-    // 条目id对应页面数据的key值
-    private List<Long> pageKeyList = new ArrayList<>();
+
 }

+ 140 - 0
src/main/java/com/diagbot/dto/QualityControlNullDTO.java

@@ -0,0 +1,140 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Description:病历质控报表返回结构
+ * @Author:cy
+ * @time: 2021/1/20 13:32
+ */
+@Getter
+@Setter
+public class QualityControlNullDTO {
+
+
+
+
+
+    /**
+     * 病案首页扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "7")
+    private Double medHomePageScore;
+    private Double medHomePageScoreOn;
+    private Double medHomePageScoreTw;
+
+    /**
+     * 入院记录扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "9")
+    private Double admissionNoteScore;
+    //非单项否决扣分
+    private Double admissionNoteScoreOn;
+    //扣分项总和
+    private Double admissionNoteScoreTw;
+
+
+
+    /**
+     * 首次病程录扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "11")
+    private Double firstCourseNoteScore;
+    private Double firstCourseNoteScoreOn;
+    private Double firstCourseNoteScoreTw;
+
+
+    /**
+     * 病程记录扣分
+     */
+    @Excel(name = "扣分", width = 12,orderNum = "13")
+    private Double courseRecordScore;
+    private Double courseRecordScoreOn;
+    private Double courseRecordScoreTw;
+
+    /**
+     * 手术信息扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "15")
+    private Double operationInfoScore;
+    private Double  operationInfoScoreOn;
+    private Double  operationInfoScoreTw;
+
+    /**
+     * 出院记录扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "17")
+    private Double  dischargeNoteScore;
+    private Double  dischargeNoteScoreOn;
+    private Double  dischargeNoteScoreTw;
+
+    /**
+     * 医嘱单扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "19")
+    private Double docAdviceNoteScore;
+    private Double  docAdviceNoteScoreOn;
+    private Double  docAdviceNoteScoreTw;
+
+    /**
+     * 其他扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "21")
+    private Double otherCaseScore;
+
+    /**
+     * 总分
+     */
+    @Excel(name = "总分",width = 12, orderNum = "22")
+    private Double  totalScore;
+
+
+    /**
+     * 病案首页模块总分
+     */
+    private Double medHomePageTolScore;
+
+
+    /**
+     * 入院记录模块总分
+     */
+    private Double admissionNoteTolScore;
+
+    /**
+     * 首次病程录模块总分
+     */
+    private Double firstCourseNoteTolScore;
+
+    /**
+     * 病程记录模块总分
+     */
+    private Double courseRecordTolScore;
+
+
+    /**
+     * 手术信息模块总分
+     */
+    private Double operationInfoTolScore;
+
+
+    /**
+     * 出院记录模块总分
+     */
+    private Double dischargeNoteTolScore;
+
+
+
+    /**
+     * 医嘱单模块总分
+     */
+    private Double docAdviceNoteTolScore;
+
+
+
+}

+ 151 - 118
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -1257,12 +1257,17 @@ public class ConsoleFacade {
         behospitalPageSet(behospitalPageVO);
         long startTime = System.currentTimeMillis();
         IPage<QualityControlDTO> records = behospitalInfoFacade.getQualityControl(behospitalPageVO);
-        List<QualityControlDTO> qualityControlDTO = records.getRecords();
-       // List<QualityControlDTO> qualityControlDTOs = records.getRecords();
+      //  List<QualityControlDTO> qualityControlDTO = records.getRecords();
+        List<QualityControlDTO> qualityControlDTOs = records.getRecords();
         long endTime1 = System.currentTimeMillis();
         System.out.println("endTime1 = " + (endTime1-startTime));
-       /* qualityControlDTOs.forEach(qualityControlDTO->{
-            List<CaseScoreDTO>caseScoreDTOS= behospitalInfoFacade.getQualityCaseSorce(behospitalPageVO);
+        CaseScoreVO caseScoreVO = new CaseScoreVO();
+        BeanUtil.copyProperties(behospitalPageVO,caseScoreVO);
+        List<CaseScoreDTO>caseScoreDTOS= behospitalInfoFacade.getQualityCaseSorce(caseScoreVO);
+        long endTime2 = System.currentTimeMillis();
+        System.out.println("endTime2 = " + (endTime2-endTime1));
+        if(ListUtil.isNotEmpty(qualityControlDTOs)){
+        qualityControlDTOs.forEach(qualityControlDTO->{
             StringBuffer admissionNote = new StringBuffer();
             StringBuffer firstCourseNote = new StringBuffer();
             StringBuffer dischargeNote = new StringBuffer();
@@ -1270,6 +1275,7 @@ public class ConsoleFacade {
             StringBuffer docAdviceNote = new StringBuffer();
             StringBuffer operationInfo = new StringBuffer();
             StringBuffer courseRecord = new StringBuffer();
+            StringBuffer otherCase = new StringBuffer();
             Double admissionNoteScoreOn = qualityControlDTO.getAdmissionNoteScoreOn();
             Double admissionNoteScoreTw = qualityControlDTO.getAdmissionNoteScoreTw();
             Double firstCourseNoteScoreOn = qualityControlDTO.getFirstCourseNoteScoreOn();
@@ -1284,8 +1290,13 @@ public class ConsoleFacade {
             Double operationInfoScoreTw = qualityControlDTO.getOperationInfoScoreTw();
             Double courseRecordScoreOn = qualityControlDTO.getCourseRecordScoreOn();
             Double courseRecordScoreTw = qualityControlDTO.getCourseRecordScoreTw();
+            if(ListUtil.isNotEmpty(caseScoreDTOS)){
             for (CaseScoreDTO caseScoreDTO : caseScoreDTOS) {
-                        if (qualityControlDTO.getBehospitalCode().equals(caseScoreDTO.getBehospitalCode())) {
+                        if (StringUtils.isNotEmpty(qualityControlDTO.getBehospitalCode())&&
+                                StringUtils.isNotEmpty(caseScoreDTO.getBehospitalCode())&&
+                                qualityControlDTO.getBehospitalCode().equals(caseScoreDTO.getBehospitalCode())) {
+                            System.out.println("caseScoreDTO = " + caseScoreDTO);
+                            double targetScore = (double) Math.round(caseScoreDTO.getScore() * 10) / 10;
                             switch (caseScoreDTO.getModelId()) {
                                 case "1":
                                     String admissionMsg = caseScoreDTO.getMsg() + ";";
@@ -1293,76 +1304,88 @@ public class ConsoleFacade {
                                     //对单个modeId进行扣分总和计算
                                     //非单项否决总分
                                     if (caseScoreDTO.getIsReject().equals("0")) {
-                                        admissionNoteScoreOn += caseScoreDTO.getScore();
+                                        admissionNoteScoreOn += targetScore;
                                     }
+
                                     //扣分总和
-                                    admissionNoteScoreTw += caseScoreDTO.getScore();
+                                    admissionNoteScoreTw += targetScore;
                                     qualityControlDTO.setAdmissionNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break; //可选
+                                    break;
                                 case "2":
                                     String firstCourseNoteMsg = caseScoreDTO.getMsg() + ";";
                                     firstCourseNote.append(firstCourseNoteMsg);
                                     if (caseScoreDTO.getIsReject().equals("0")) {
-                                        firstCourseNoteScoreOn += caseScoreDTO.getScore();
+                                        firstCourseNoteScoreOn +=targetScore;
                                     }
                                     //扣分总和
-                                    firstCourseNoteScoreTw += caseScoreDTO.getScore();
+                                    firstCourseNoteScoreTw += targetScore;
                                     qualityControlDTO.setFirstCourseNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break; //可选
+                                    break;
                                 case "5":
                                     String dischargeNoteMsg = caseScoreDTO.getMsg() + ";";
                                     dischargeNote.append(dischargeNoteMsg);
                                     if (caseScoreDTO.getIsReject().equals("0")) {
-                                        dischargeNoteScoreOn += caseScoreDTO.getScore();
+                                        dischargeNoteScoreOn += targetScore;
                                     }
                                     //扣分总和
-                                    dischargeNoteScoreTw += caseScoreDTO.getScore();
+                                    dischargeNoteScoreTw += targetScore;
                                     qualityControlDTO.setDischargeNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break; //可选
+                                    break;
                                 case "6":
                                     String medHomePageMsg = caseScoreDTO.getMsg() + ";";
                                     medHomePage.append(medHomePageMsg);
                                     if (caseScoreDTO.getIsReject().equals("0")) {
-                                        medHomePageScoreOn += caseScoreDTO.getScore();
+                                        medHomePageScoreOn += targetScore;
                                     }
                                     //扣分总和
-                                    medHomePageScoreTw += caseScoreDTO.getScore();
+                                    medHomePageScoreTw += targetScore;
                                     qualityControlDTO.setMedHomePageTolScore(caseScoreDTO.getCasesScore());
-                                    break; //可选
+                                    break;
                                 case "8":
                                     String docAdviceNoteMsg = caseScoreDTO.getMsg() + ";";
                                     docAdviceNote.append(docAdviceNoteMsg);
                                     if (caseScoreDTO.getIsReject().equals("0")) {
-                                        docAdviceNoteScoreOn += caseScoreDTO.getScore();
+                                        docAdviceNoteScoreOn += targetScore;
                                     }
                                     //扣分总和
-                                    docAdviceNoteScoreTw += caseScoreDTO.getScore();
+                                    docAdviceNoteScoreTw += targetScore;
                                     qualityControlDTO.setDocAdviceNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break; //可选
+                                    break;
                                 case "17":
                                     String operationInfoMsg = caseScoreDTO.getMsg() + ";";
                                     operationInfo.append(operationInfoMsg);
                                     if (caseScoreDTO.getIsReject().equals("0")) {
-                                        operationInfoScoreOn += caseScoreDTO.getScore();
+                                        operationInfoScoreOn += targetScore;
                                     }
                                     //扣分总和
-                                    operationInfoScoreTw += caseScoreDTO.getScore();
+                                    operationInfoScoreTw += targetScore;
                                     qualityControlDTO.setOperationInfoTolScore(caseScoreDTO.getCasesScore());
-                                    break; //可选
+                                    break;
                                 case "56":
                                     String courseRecordMsg = caseScoreDTO.getMsg() + ";";
                                     courseRecord.append(courseRecordMsg);
                                     if (caseScoreDTO.getIsReject().equals("0")) {
-                                        courseRecordScoreOn += caseScoreDTO.getScore();
+                                        courseRecordScoreOn += targetScore;
                                     }
                                     //扣分总和
-                                    courseRecordScoreTw += caseScoreDTO.getScore();
+                                    courseRecordScoreTw += targetScore;
                                     qualityControlDTO.setCourseRecordTolScore(caseScoreDTO.getCasesScore());
-                                    break; //可选
-                                //你可以有任意数量的case语句
-                                default: //可选
-                                    //语句
+                                    break;
+
                             }
+
+                            String modelId = caseScoreDTO.getModelId();
+                            if(!(modelId.equals("1")||modelId.equals("2")||modelId.equals("5")||modelId.equals("6")||
+                                    modelId.equals("8")||modelId.equals("17")||modelId.equals("56"))){
+                                String otherCaseMsg = caseScoreDTO.getMsg() + ";";
+                                otherCase.append(otherCaseMsg);
+                            }
+                            //未评分
+                        }
+                        if(StringUtils.isEmpty(caseScoreDTO.getBehospitalCode())){
+                            QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
+                            BeanUtil.copyProperties(qualityControlNullDTO,qualityControlDTO);
+                           break;
                         }
                     };
              qualityControlDTO.setAdmissionNoteScoreOn(admissionNoteScoreOn);
@@ -1379,123 +1402,135 @@ public class ConsoleFacade {
              qualityControlDTO.setOperationInfoScoreTw(operationInfoScoreTw);
              qualityControlDTO.setCourseRecordScoreOn(courseRecordScoreOn);
              qualityControlDTO.setCourseRecordScoreTw(courseRecordScoreTw);
-            String admissionNoteString =  admissionNote.toString().substring(0,  admissionNote.toString().lastIndexOf(";"));
+
+            String admissionNoteString = StringUtils.isEmpty(admissionNote) == true ?"无缺陷" : admissionNote.toString().substring(0,  admissionNote.toString().lastIndexOf(";"));
             qualityControlDTO.setAdmissionNote(admissionNoteString);
-            String firstCourseNoteString =  firstCourseNote.toString().substring(0,  firstCourseNote.toString().lastIndexOf(";"));
+            String firstCourseNoteString = StringUtils.isEmpty(firstCourseNote) == true ?"无缺陷" :firstCourseNote.toString().substring(0,  firstCourseNote.toString().lastIndexOf(";"));
             qualityControlDTO.setFirstCourseNote(firstCourseNoteString);
-            String dischargeNoteString = dischargeNote.toString().substring(0,  dischargeNote.toString().lastIndexOf(";"));
+            String dischargeNoteString = StringUtils.isEmpty(dischargeNote) == true ?"无缺陷" : dischargeNote.toString().substring(0,  dischargeNote.toString().lastIndexOf(";"));
             qualityControlDTO.setDischargeNote(dischargeNoteString);
-            String medHomePageString =  medHomePage.toString().substring(0,  medHomePage.toString().lastIndexOf(";"));
+            String medHomePageString = StringUtils.isEmpty(medHomePage) == true ?"无缺陷" : medHomePage.toString().substring(0,  medHomePage.toString().lastIndexOf(";"));
             qualityControlDTO.setMedHomePage(medHomePageString);
-            String docAdviceNoteString =  docAdviceNote.toString().substring(0,  docAdviceNote.toString().lastIndexOf(";"));
+            String docAdviceNoteString = StringUtils.isEmpty(docAdviceNote) == true ?"无缺陷" : docAdviceNote.toString().substring(0,  docAdviceNote.toString().lastIndexOf(";"));
             qualityControlDTO.setDocAdviceNote(docAdviceNoteString);
-            String operationInfoString =  operationInfo.toString().substring(0,  operationInfo.toString().lastIndexOf(";"));
+            String operationInfoString = StringUtils.isEmpty(operationInfo) == true ?"无缺陷" : operationInfo.toString().substring(0,  operationInfo.toString().lastIndexOf(";"));
             qualityControlDTO.setOperationInfo(operationInfoString);
-            String courseRecordString =  courseRecord.toString().substring(0,  courseRecord.toString().lastIndexOf(";"));
+            String courseRecordString = StringUtils.isEmpty(courseRecord) == true ?"无缺陷" : courseRecord.toString().substring(0,  courseRecord.toString().lastIndexOf(";"));
             qualityControlDTO.setCourseRecord(courseRecordString);
-        *//*    Double admissionNoteScoreOn = qualityControlDTO.getAdmissionNoteScoreOn();
-            Double admissionNoteScoreTw = qualityControlDTO.getAdmissionNoteScoreTw();
-            Double firstCourseNoteScoreOn = qualityControlDTO.getFirstCourseNoteScoreOn();
-            Double firstCourseNoteScoreTw = qualityControlDTO.getFirstCourseNoteScoreTw();
-            Double dischargeNoteScoreOn = qualityControlDTO.getDischargeNoteScoreOn();
-            Double dischargeNoteScoreTw = qualityControlDTO.getDischargeNoteScoreTw();
-            Double medHomePageScoreOn = qualityControlDTO.getMedHomePageScoreOn();
-            Double medHomePageScoreTw = qualityControlDTO.getMedHomePageScoreTw();
-            Double docAdviceNoteScoreOn = qualityControlDTO.getDocAdviceNoteScoreOn();
-            Double docAdviceNoteScoreTw = qualityControlDTO.getDocAdviceNoteScoreTw();
-            Double operationInfoScoreOn = qualityControlDTO.getOperationInfoScoreOn();
-            Double operationInfoScoreTw = qualityControlDTO.getOperationInfoScoreTw();
-            Double courseRecordScoreOn = qualityControlDTO.getCourseRecordScoreOn();
-            Double courseRecordScoreTw = qualityControlDTO.getCourseRecordScoreTw();*//*
+            String otherCaseString = StringUtils.isEmpty(otherCase) == true ?"无缺陷" : otherCase.toString().substring(0,  otherCase.toString().lastIndexOf(";"));
+            qualityControlDTO.setOtherCase(otherCaseString);
+
+
             for (CaseScoreDTO caseScoreDTO : caseScoreDTOS) {
-                if (qualityControlDTO.getBehospitalCode().equals(caseScoreDTO.getBehospitalCode())) {
+                if (StringUtils.isNotEmpty(qualityControlDTO.getBehospitalCode())&&
+                        StringUtils.isNotEmpty(caseScoreDTO.getBehospitalCode())&&
+                        qualityControlDTO.getBehospitalCode().equals(caseScoreDTO.getBehospitalCode())) {
                     switch (caseScoreDTO.getModelId()) {
                         case "1":
                               //  非单项否决总扣分大于扣分总和
-                               if((admissionNoteScoreOn-qualityControlDTO.getAdmissionNoteTolScore())>=0){
-                                   //扣分总和+单项否决总分
-                                   qualityControlDTO.setAdmissionNoteScore(qualityControlDTO.getAdmissionNoteTolScore()+(admissionNoteScoreTw-admissionNoteScoreOn));
-                               }else{
-                                   qualityControlDTO.setAdmissionNoteScore(admissionNoteScoreOn+(admissionNoteScoreTw-admissionNoteScoreOn));
-                               }
-
-                            //扣分总和
-                            admissionNoteScoreTw += caseScoreDTO.getScore();
-                            qualityControlDTO.setAdmissionNoteTolScore(caseScoreDTO.getCasesScore());
-                            break; //可选
+                            if((admissionNoteScoreOn-qualityControlDTO.getAdmissionNoteTolScore())>=0){
+                                //扣分总和+单项否决总分
+                                qualityControlDTO.setAdmissionNoteScore(qualityControlDTO.getAdmissionNoteTolScore()+(admissionNoteScoreTw-admissionNoteScoreOn));
+                            }else{
+                                qualityControlDTO.setAdmissionNoteScore(admissionNoteScoreOn+(admissionNoteScoreTw-admissionNoteScoreOn));
+                            }
+                            break;
                         case "2":
-                            String firstCourseNoteMsg = caseScoreDTO.getMsg() + ";";
-                            firstCourseNote.append(firstCourseNoteMsg);
-                            if (caseScoreDTO.getIsReject().equals("0")) {
-                                firstCourseNoteScoreOn += caseScoreDTO.getScore();
+                            //  非单项否决总扣分大于扣分总和
+                            if((firstCourseNoteScoreOn-qualityControlDTO.getFirstCourseNoteTolScore())>=0){
+                                //扣分总和+单项否决总分
+                                qualityControlDTO.setFirstCourseNoteScore(qualityControlDTO.getFirstCourseNoteTolScore()+(firstCourseNoteScoreTw-firstCourseNoteScoreOn));
+                            }else{
+                                qualityControlDTO.setFirstCourseNoteScore(firstCourseNoteScoreOn+(firstCourseNoteScoreTw-firstCourseNoteScoreOn));
                             }
-                            //扣分总和
-                            firstCourseNoteScoreTw += caseScoreDTO.getScore();
-                            qualityControlDTO.setFirstCourseNoteTolScore(caseScoreDTO.getCasesScore());
-                            break; //可选
+                            break;
                         case "5":
-                            String dischargeNoteMsg = caseScoreDTO.getMsg() + ";";
-                            dischargeNote.append(dischargeNoteMsg);
-                            if (caseScoreDTO.getIsReject().equals("0")) {
-                                dischargeNoteScoreOn += caseScoreDTO.getScore();
+                            //  非单项否决总扣分大于扣分总和
+                            if((dischargeNoteScoreOn-qualityControlDTO.getDischargeNoteTolScore())>=0){
+                                //扣分总和+单项否决总分
+                                qualityControlDTO.setDischargeNoteScore(qualityControlDTO.getDischargeNoteTolScore()+(dischargeNoteScoreTw-dischargeNoteScoreOn));
+                            }else{
+                                qualityControlDTO.setDischargeNoteScore(dischargeNoteScoreOn+(dischargeNoteScoreTw-dischargeNoteScoreOn));
                             }
-                            //扣分总和
-                            dischargeNoteScoreTw += caseScoreDTO.getScore();
-                            qualityControlDTO.setDischargeNoteTolScore(caseScoreDTO.getCasesScore());
-                            break; //可选
+                            break;
                         case "6":
-                            String medHomePageMsg = caseScoreDTO.getMsg() + ";";
-                            medHomePage.append(medHomePageMsg);
-                            if (caseScoreDTO.getIsReject().equals("0")) {
-                                medHomePageScoreOn += caseScoreDTO.getScore();
+                            //  非单项否决总扣分大于扣分总和
+                            if((medHomePageScoreOn-qualityControlDTO.getMedHomePageTolScore())>=0){
+                                //扣分总和+单项否决总分
+                                qualityControlDTO.setMedHomePageScore(qualityControlDTO.getMedHomePageTolScore()+(medHomePageScoreTw-medHomePageScoreOn));
+                            }else{
+                                qualityControlDTO.setMedHomePageScore(medHomePageScoreOn+(medHomePageScoreTw-medHomePageScoreOn));
                             }
-                            //扣分总和
-                            medHomePageScoreTw += caseScoreDTO.getScore();
-                            qualityControlDTO.setMedHomePageTolScore(caseScoreDTO.getCasesScore());
-                            break; //可选
+                            break;
                         case "8":
-                            String docAdviceNoteMsg = caseScoreDTO.getMsg() + ";";
-                            docAdviceNote.append(docAdviceNoteMsg);
-                            if (caseScoreDTO.getIsReject().equals("0")) {
-                                docAdviceNoteScoreOn += caseScoreDTO.getScore();
+                            //  非单项否决总扣分大于扣分总和
+                            if((docAdviceNoteScoreOn-qualityControlDTO.getDocAdviceNoteTolScore())>=0){
+                                //扣分总和+单项否决总分
+                                qualityControlDTO.setDocAdviceNoteScore(qualityControlDTO.getDocAdviceNoteTolScore()+(docAdviceNoteScoreTw-docAdviceNoteScoreOn));
+                            }else{
+                                qualityControlDTO.setDocAdviceNoteScore(docAdviceNoteScoreOn+(docAdviceNoteScoreTw-docAdviceNoteScoreOn));
                             }
-                            //扣分总和
-                            docAdviceNoteScoreTw += caseScoreDTO.getScore();
-                            qualityControlDTO.setDocAdviceNoteTolScore(caseScoreDTO.getCasesScore());
-                            break; //可选
+                            break;
                         case "17":
-                            String operationInfoMsg = caseScoreDTO.getMsg() + ";";
-                            operationInfo.append(operationInfoMsg);
-                            if (caseScoreDTO.getIsReject().equals("0")) {
-                                operationInfoScoreOn += caseScoreDTO.getScore();
+                            //  非单项否决总扣分大于扣分总和
+                            if((operationInfoScoreOn-qualityControlDTO.getOperationInfoTolScore())>=0){
+                                //扣分总和+单项否决总分
+                                qualityControlDTO.setOperationInfoScore(qualityControlDTO.getOperationInfoTolScore()+(operationInfoScoreTw-operationInfoScoreOn));
+                            }else{
+                                qualityControlDTO.setOperationInfoScore(operationInfoScoreOn+(operationInfoScoreTw-operationInfoScoreOn));
                             }
-                            //扣分总和
-                            operationInfoScoreTw += caseScoreDTO.getScore();
-                            qualityControlDTO.setOperationInfoTolScore(caseScoreDTO.getCasesScore());
-                            break; //可选
+                            break;
                         case "56":
-                            String courseRecordMsg = caseScoreDTO.getMsg() + ";";
-                            courseRecord.append(courseRecordMsg);
-                            if (caseScoreDTO.getIsReject().equals("0")) {
-                                courseRecordScoreOn += caseScoreDTO.getScore();
+                            //  非单项否决总扣分大于扣分总和
+                            if((courseRecordScoreOn-qualityControlDTO.getCourseRecordTolScore())>=0){
+                                //扣分总和+单项否决总分
+                                qualityControlDTO.setCourseRecordScore(qualityControlDTO.getCourseRecordTolScore()+(courseRecordScoreTw-courseRecordScoreOn));
+                            }else{
+                                qualityControlDTO.setCourseRecordScore(courseRecordScoreOn+(courseRecordScoreTw-courseRecordScoreOn));
                             }
-                            //扣分总和
-                            courseRecordScoreTw += caseScoreDTO.getScore();
-                            qualityControlDTO.setCourseRecordTolScore(caseScoreDTO.getCasesScore());
-                            break; //可选
-                        //你可以有任意数量的case语句
-                        default: //可选
-                            //语句
+                            break;
+
                     }
+
+
+
+                } if(StringUtils.isEmpty(caseScoreDTO.getBehospitalCode())){
+                    QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
+                    BeanUtil.copyProperties(qualityControlNullDTO,qualityControlDTO);
                 }
 
             };
+                Double otherScore = new Double(0d);
+                Double mainScore = new Double(0d);
+                Double otherCaseScore = null;
+                Double res = new Double(120d);
+                Double resPr = new Double(100d);
+                String scoreType = "0";
+                mainScore =  qualityControlDTO.getMedHomePageScore()+qualityControlDTO.getAdmissionNoteScore()+qualityControlDTO.getFirstCourseNoteScore()+
+                        qualityControlDTO.getCourseRecordScore()+qualityControlDTO.getOperationInfoScore()+qualityControlDTO.getDischargeNoteScore()+qualityControlDTO. getDocAdviceNoteScore();
+                scoreType = sysHospitalSetFacade.getScoreType(behospitalPageVO.getHospitalId());
+                if ("1".equals(scoreType)) {
+                    otherScore = (resPr-qualityControlDTO.getTotalScore()-mainScore);
+                } else if ("0".equals(scoreType)) {
+                    otherScore = res-(qualityControlDTO.getTotalScore()*res/resPr)-mainScore;
+                }
+                otherCaseScore = (double) Math.round(otherScore * 10) / 10;
+                qualityControlDTO.setOtherCaseScore(otherCaseScore == null ? 0d : otherCaseScore  );
+
+
+            }else{
+                QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
+                BeanUtil.copyProperties(qualityControlNullDTO,qualityControlDTO);
+            }
 
 
 
-        });*/
+        });};
+        long endTime3 = System.currentTimeMillis();
+        System.out.println("endTime3 = " + (endTime3-endTime2));
+        System.out.println("总 = " + (endTime3-startTime));
         //模块总扣分
-        CaseScoreVO caseScoreVO = new CaseScoreVO();
+ /*       CaseScoreVO caseScoreVO = new CaseScoreVO();
         BeanUtil.copyProperties(behospitalPageVO,caseScoreVO);
         List<QualityControlDTO>caseData= behospitalInfoFacade.getQualityCase(caseScoreVO);
         long endTime2 = System.currentTimeMillis();
@@ -1618,12 +1653,10 @@ public class ConsoleFacade {
 
             };
         }else{return null; };
-
-
         //
         long endTime4= System.currentTimeMillis();
         System.out.println("endTime4 = " + (endTime4-endTime3));
-        System.out.println("总耗时 = " + (endTime3-startTime));
+        System.out.println("总 " + (endTime4-startTime));*/
         return records;
 
     }

+ 2 - 2
src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java

@@ -166,10 +166,10 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
     /**
      * 病历质控报表-扣分数据
      *
-     * @param behospitalPageVO
+     * @param caseScoreVO
      * @return
      */
-    public List<CaseScoreDTO> getQualityCaseSorce(BehospitalPageVO behospitalPageVO);
+    public List<CaseScoreDTO> getQualityCaseSorce(CaseScoreVO caseScoreVO);
 
 
 

+ 2 - 2
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -176,10 +176,10 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
     /**
      * 病历质控报表
      *
-     * @param behospitalPageVO
+     * @param caseScoreVO
      * @return
      */
-    public List<CaseScoreDTO> getQualityCaseSorce(BehospitalPageVO behospitalPageVO);
+    public List<CaseScoreDTO> getQualityCaseSorce(CaseScoreVO caseScoreVO);
 
 
     /**

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

@@ -237,12 +237,12 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     /**
      * 病历质控报表-扣分数据
      *
-     * @param behospitalPageVO
+     * @param caseScoreVO
      * @return
      */
     @Override
-    public List<CaseScoreDTO> getQualityCaseSorce(BehospitalPageVO behospitalPageVO) {
-        return baseMapper.getQualityCaseSorce(behospitalPageVO);
+    public List<CaseScoreDTO> getQualityCaseSorce(CaseScoreVO caseScoreVO) {
+        return baseMapper.getQualityCaseSorce(caseScoreVO);
     }
     /**
      * 病历质控报表

+ 9 - 8
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -300,13 +300,10 @@
 
 
     <select id="getQualityCaseSorce" resultType="com.diagbot.dto.CaseScoreDTO">
-     SELECT b.`name`,a.mode_id,b.`name` model_name,c.score,d.score cases_score,c.msg,c.cases_entry_id,c.is_reject
-        FROM `qc_cases_entry` a, qc_mode b, med_qcresult_detail c, qc_cases_hospital d, med_behospital_info e
-        where a.is_deleted = 'N' and b.is_deleted = 'N' and c.is_deleted = 'N' and d.is_deleted = 'N'AND e.is_deleted = 'N'
+     SELECT c.behospital_code as behospitalCode,a.mode_id as modelId,c.score,c.cases_score as casesScore,c.msg,c.is_reject as isReject
+        FROM `qc_cases_entry` a, med_qcresult_detail c,med_behospital_info e
+        where a.is_deleted = 'N' and c.is_deleted = 'N'AND e.is_deleted = 'N'
         and a.id = c.cases_entry_id
-        and a.mode_id = b.id
-        AND c.cases_id = d.cases_id
-        and c.hospital_id = d.hospital_id
         AND c.behospital_code = e.behospital_code
         AND c.hospital_id = e.hospital_id
         and c.hospital_id = #{hospitalId}
@@ -348,12 +345,16 @@
         t.beh_dept_id AS deptId,
         t.leave_hospital_date AS leaveHospitalDate,
         t.level,
+        t.score_res as totalScore,
         t.is_deleted,
         g.check_name AS ch_name,
         h.check_name AS mr_name
         from (
-        select a.*, ifnull(b.level,'未评分') as level, b.grade_type, b.score_res, b.gmt_create as
-        grade_time from med_behospital_info a
+        select a.*,
+         ifnull(b.level,'未评分') as level,
+          b.grade_type,
+          b.score_res
+        from med_behospital_info a
         LEFT JOIN med_qcresult_info b
         on a.behospital_code = b.behospital_code and b.is_deleted = 'N'
         ) t