|
@@ -1,36 +1,22 @@
|
|
|
package com.diagbot.facade;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
-import com.diagbot.dto.DeptBaseDTO;
|
|
|
-import com.diagbot.dto.DeptEntryNumDTO;
|
|
|
-import com.diagbot.dto.DeptNumDTO;
|
|
|
-import com.diagbot.dto.HomePageNumDTO;
|
|
|
-import com.diagbot.dto.LevelStatisticsDTO;
|
|
|
-import com.diagbot.dto.NumDTO;
|
|
|
-import com.diagbot.dto.QcResultShortDTO;
|
|
|
-import com.diagbot.util.BeanUtil;
|
|
|
-import com.diagbot.util.EntityUtil;
|
|
|
-import com.diagbot.util.ListUtil;
|
|
|
-import com.diagbot.util.StringUtil;
|
|
|
-import com.diagbot.util.SysUserUtils;
|
|
|
-import com.diagbot.vo.FilterOrderByDeptVO;
|
|
|
-import com.diagbot.vo.FilterPageByDeptVO;
|
|
|
-import com.diagbot.vo.FilterVO;
|
|
|
-import com.diagbot.vo.QcResultShortPageVO;
|
|
|
-import com.diagbot.vo.QcresultFilterVO;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.diagbot.dto.*;
|
|
|
+import com.diagbot.entity.QcCasesEntry;
|
|
|
+import com.diagbot.entity.SysHospitalSet;
|
|
|
+import com.diagbot.util.*;
|
|
|
+import com.diagbot.vo.*;
|
|
|
import com.google.common.collect.Lists;
|
|
|
+import org.apache.ibatis.annotations.Param;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.text.DecimalFormat;
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.Comparator;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.LinkedHashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@@ -51,6 +37,11 @@ public class ConsoleByDeptFacade {
|
|
|
private FilterFacade filterFacade;
|
|
|
@Autowired
|
|
|
private QcCasesFacade qcCasesFacade;
|
|
|
+ @Autowired
|
|
|
+ private SysHospitalSetFacade sysHospitalSetFacade;
|
|
|
+ @Autowired
|
|
|
+ private QcCasesEntryFacade qcCasesEntryFacade;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 出院人数统计-按科室
|
|
@@ -71,34 +62,32 @@ public class ConsoleByDeptFacade {
|
|
|
Map<String, NumDTO> totleMap = ListUtil.isEmpty(totleNumList)
|
|
|
? new HashMap<>()
|
|
|
: EntityUtil.makeEntityMap(totleNumList, "name");
|
|
|
- //新生儿人数
|
|
|
- List<NumDTO> newBornNumList = behospitalInfoFacade.newBornCountByDept(filterVO);
|
|
|
- Map<String, NumDTO> newBornMap = ListUtil.isEmpty(newBornNumList)
|
|
|
- ? new HashMap<>()
|
|
|
- : EntityUtil.makeEntityMap(newBornNumList, "name");
|
|
|
- //死亡人数
|
|
|
- List<NumDTO> deathNumList = behospitalInfoFacade.deathCountByDept(filterVO);
|
|
|
- Map<String, NumDTO> deathMap = ListUtil.isEmpty(deathNumList)
|
|
|
- ? new HashMap<>()
|
|
|
- : EntityUtil.makeEntityMap(deathNumList, "name");
|
|
|
- //手术人数
|
|
|
- List<NumDTO> operationNumList = behospitalInfoFacade.operationCountByDept(filterVO);
|
|
|
- Map<String, NumDTO> operationMap = ListUtil.isEmpty(operationNumList)
|
|
|
- ? new HashMap<>()
|
|
|
- : EntityUtil.makeEntityMap(operationNumList, "name");
|
|
|
+ Map<String, NumDTO> deathMap = new HashMap<>();
|
|
|
+ Map<String, NumDTO> operationMap = new HashMap<>();
|
|
|
+ //终末--死亡人数/手术病人数
|
|
|
+ //死亡人数
|
|
|
+ List<NumDTO> deathNumList = behospitalInfoFacade.deathCountByDept(filterVO);
|
|
|
+ deathMap = ListUtil.isEmpty(deathNumList)
|
|
|
+ ? new HashMap<>()
|
|
|
+ : EntityUtil.makeEntityMap(deathNumList, "name");
|
|
|
+ //手术人数
|
|
|
+ List<NumDTO> operationNumList = behospitalInfoFacade.operationCountByDept(filterVO);
|
|
|
+ operationMap = ListUtil.isEmpty(operationNumList)
|
|
|
+ ? new HashMap<>()
|
|
|
+ : EntityUtil.makeEntityMap(operationNumList, "name");
|
|
|
+
|
|
|
for (String deptName : deptMap.keySet()) {
|
|
|
Map<String, Object> map = new LinkedHashMap<>();
|
|
|
map.put("总人数", 0);
|
|
|
map.put("死亡人数", 0);
|
|
|
map.put("手术病人数", 0);
|
|
|
-
|
|
|
if (totleMap.containsKey(deptName)) {
|
|
|
map.put("总人数", totleMap.get(deptName).getNum());
|
|
|
}
|
|
|
- if (deathMap.containsKey(deptName)) {
|
|
|
+ if(deathMap.containsKey(deptName)) {
|
|
|
map.put("死亡人数", deathMap.get(deptName).getNum());
|
|
|
}
|
|
|
- if (operationMap.containsKey(deptName)) {
|
|
|
+ if(operationMap.containsKey(deptName)) {
|
|
|
map.put("手术病人数", operationMap.get(deptName).getNum());
|
|
|
}
|
|
|
retMap.put(deptName, map);
|
|
@@ -106,6 +95,21 @@ public class ConsoleByDeptFacade {
|
|
|
return retMap;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 入院人数统计-按科室
|
|
|
+ *
|
|
|
+ * @param filterVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Map<String, List<AdmissionCountDTO>> admissionHosCountByDept(FilterVO filterVO) {
|
|
|
+ filterFacade.filterVOSet(filterVO);
|
|
|
+ List<AdmissionCountDTO> totleNumList = behospitalInfoFacade.admissionHosCountByDept(filterVO);
|
|
|
+ Map<String, List<AdmissionCountDTO>> resourceData = mapResource(filterVO, totleNumList);
|
|
|
+ return resourceData;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 病历数统计-按科室
|
|
|
*
|
|
@@ -392,7 +396,7 @@ public class ConsoleByDeptFacade {
|
|
|
* @param filterPageByDeptVO
|
|
|
* @return
|
|
|
*/
|
|
|
- public IPage<DeptNumDTO> entryCountGroupByCaseAndDeptPage(FilterPageByDeptVO filterPageByDeptVO) {
|
|
|
+ public IPage<NumDTO> entryCountGroupByCaseAndDeptPage(FilterPageByDeptVO filterPageByDeptVO) {
|
|
|
if (StringUtil.isBlank(filterPageByDeptVO.getDeptName())) {
|
|
|
List<DeptBaseDTO> deptList = this.getDept();
|
|
|
//默认取第一个科室
|
|
@@ -401,7 +405,7 @@ public class ConsoleByDeptFacade {
|
|
|
}
|
|
|
}
|
|
|
filterFacade.filterPageByDeptVOSet(filterPageByDeptVO);
|
|
|
- IPage<DeptNumDTO> page = qcresultInfoFacade.entryCountGroupByCaseAndDeptPage(filterPageByDeptVO);
|
|
|
+ IPage<NumDTO> page = qcresultInfoFacade.entryCountGroupByCaseAndDeptPage(filterPageByDeptVO);
|
|
|
return page;
|
|
|
}
|
|
|
|
|
@@ -411,7 +415,7 @@ public class ConsoleByDeptFacade {
|
|
|
* @param filterPageByDeptVO
|
|
|
* @return
|
|
|
*/
|
|
|
- public IPage<DeptEntryNumDTO> entryCountGroupByEntryAndDeptPage(FilterPageByDeptVO filterPageByDeptVO) {
|
|
|
+ public IPage<EntryNumGroupDTO> entryCountGroupByEntryAndDeptPage(FilterPageByDeptVO filterPageByDeptVO) {
|
|
|
if (StringUtil.isBlank(filterPageByDeptVO.getDeptName())) {
|
|
|
List<DeptBaseDTO> deptList = this.getDept();
|
|
|
//默认取第一个科室
|
|
@@ -423,7 +427,7 @@ public class ConsoleByDeptFacade {
|
|
|
filterPageByDeptVO.setDoctorName("");
|
|
|
}
|
|
|
filterFacade.filterPageByDeptVOSet(filterPageByDeptVO);
|
|
|
- IPage<DeptEntryNumDTO> page = qcresultInfoFacade.entryCountGroupByEntryAndDeptPage(filterPageByDeptVO);
|
|
|
+ IPage<EntryNumGroupDTO> page = qcresultInfoFacade.entryCountGroupByEntryAndDeptPage(filterPageByDeptVO);
|
|
|
return page;
|
|
|
}
|
|
|
|
|
@@ -468,29 +472,139 @@ public class ConsoleByDeptFacade {
|
|
|
/**
|
|
|
* 各科室缺陷占比(组合)
|
|
|
*
|
|
|
- * @param filterOrderByDeptVO
|
|
|
+ * @param filterOrderVO
|
|
|
* @return
|
|
|
*/
|
|
|
- public List<LevelStatisticsDTO> levelStatisticsByDept(FilterOrderByDeptVO filterOrderByDeptVO) {
|
|
|
+ public List<LevelStsByDeptDTO> levelStatisticsByDept(FilterOrderVO filterOrderVO) {
|
|
|
List<DeptBaseDTO> deptList = getDept();
|
|
|
if (ListUtil.isEmpty(deptList)) {
|
|
|
return null;
|
|
|
}
|
|
|
- if (StringUtil.isBlank(filterOrderByDeptVO.getDeptName())) {
|
|
|
- filterOrderByDeptVO.setDeptName(deptList.get(0).getDeptName());
|
|
|
+ if (StringUtil.isBlank(filterOrderVO.getDeptName())) {
|
|
|
+ filterOrderVO.setDeptName(deptList.get(0).getDeptName());
|
|
|
+ }
|
|
|
+ filterFacade.filterOrderVOSame(filterOrderVO);
|
|
|
+ List<LevelStsByDeptDTO> records = behospitalInfoFacade.levelStatisticsByDept(filterOrderVO);
|
|
|
+ if(ListUtil.isNotEmpty(records)){
|
|
|
+ for (LevelStsByDeptDTO record : records) {
|
|
|
+ BigDecimalMethod(record);
|
|
|
+ }
|
|
|
}
|
|
|
- filterFacade.filterOrderByDeptVOSet(filterOrderByDeptVO);
|
|
|
- List<LevelStatisticsDTO> records = behospitalInfoFacade.levelStatisticsByDept(filterOrderByDeptVO);
|
|
|
return records;
|
|
|
}
|
|
|
|
|
|
+ public void BigDecimalMethod(LevelStsByDeptDTO record){
|
|
|
+ BigDecimal entrySameBigDecimal = getSubtract(new BigDecimal(record.getEntryNum()), new BigDecimal(record.getSameNum() == null? 0:record.getSameNum()));
|
|
|
+
|
|
|
+ if(entrySameBigDecimal.compareTo(BigDecimal.ZERO)>0){
|
|
|
+ record.setEntrySameNum(1);
|
|
|
+ }else if(entrySameBigDecimal.compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ record.setEntrySameNum(0);
|
|
|
+ }else{
|
|
|
+ record.setEntrySameNum(-1);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal sameMrNumBigDecimal = getSubtract(new BigDecimal(record.getMrNum()), new BigDecimal(record.getSameMrNum() == null? 0:record.getSameMrNum()));
|
|
|
+ if(sameMrNumBigDecimal.compareTo(BigDecimal.ZERO)>0){
|
|
|
+ record.setMrSameNum(1);
|
|
|
+ }else if(sameMrNumBigDecimal.compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ record.setMrSameNum(0);
|
|
|
+ }else{
|
|
|
+ record.setMrSameNum(-1);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal sameAvgValueDecimal = getSubtract(new BigDecimal(record.getAverageValue()), new BigDecimal(record.getSameAvgValue() == null? 0:record.getSameAvgValue()));
|
|
|
+ if(sameAvgValueDecimal.compareTo(BigDecimal.ZERO)>0){
|
|
|
+ record.setAvSameValue(1);
|
|
|
+ }else if(sameAvgValueDecimal.compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ record.setAvSameValue(0);
|
|
|
+ }else{
|
|
|
+ record.setAvSameValue(-1);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal SameFirstLevelBigDecimal = getSubtract(new BigDecimal(record.getFirstLevelNum()), new BigDecimal(record.getSameFirstLevelNum() == null? 0:record.getSameFirstLevelNum()));
|
|
|
+ if(SameFirstLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
|
|
|
+ record.setFirSameLevelNum(1);
|
|
|
+ }else if(SameFirstLevelBigDecimal.compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ record.setFirSameLevelNum(0);
|
|
|
+ }else{
|
|
|
+ record.setFirSameLevelNum(-1);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal SameSecondLevelBigDecimal = getSubtract(new BigDecimal(record.getSecondLevelNum()), new BigDecimal(record.getSameSecondLevelNum() == null? 0:record.getSameSecondLevelNum()));
|
|
|
+ if(SameSecondLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
|
|
|
+ record.setSecSameLevelNum(1);
|
|
|
+ }else if(SameSecondLevelBigDecimal.compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ record.setSecSameLevelNum(0);
|
|
|
+ }else{
|
|
|
+ record.setSecSameLevelNum(-1);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal SameThirdLevelBigDecimal = getSubtract(new BigDecimal(record.getThirdLevelNum()), new BigDecimal(record.getSameThirdLevelNum() == null? 0:record.getSameThirdLevelNum()));
|
|
|
+ if(SameThirdLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
|
|
|
+ record.setThiSameLevelNum(1);
|
|
|
+ }else if(SameThirdLevelBigDecimal.compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ record.setThiSameLevelNum(0);
|
|
|
+ }else{
|
|
|
+ record.setThiSameLevelNum(-1);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal SameFirstLevelPeDecimal = getSubtract(new BigDecimal(record.getFirstLevelPercent()), new BigDecimal(record.getSameFirstLevelPercent() == null? 0:record.getSameFirstLevelPercent()));
|
|
|
+ if(SameFirstLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
|
|
|
+ record.setFirSameLevelPercent(1);
|
|
|
+ }else if(SameFirstLevelPeDecimal.compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ record.setFirSameLevelPercent(0);
|
|
|
+ }else{
|
|
|
+ record.setFirSameLevelPercent(-1);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal SameSecondLevelPeDecimal = getSubtract(new BigDecimal(record.getSecondLevelPercent()), new BigDecimal(record.getSameSecondLevelPercent() == null? 0:record.getSameSecondLevelPercent()));
|
|
|
+ if(SameSecondLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
|
|
|
+ record.setSecSameLevelPercent(1);
|
|
|
+ }else if(SameSecondLevelPeDecimal.compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ record.setSecSameLevelPercent(0);
|
|
|
+ }else{
|
|
|
+ record.setSecSameLevelPercent(-1);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal SameThirdLevelPeDecimal = getSubtract(new BigDecimal(record.getThirdLevelPercent()), new BigDecimal(record.getSameThirdLevelPercent() == null? 0:record.getSameThirdLevelPercent()));
|
|
|
+ if(SameThirdLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
|
|
|
+ record.setThiSameLevelPercent(1);
|
|
|
+ }else if(SameThirdLevelPeDecimal.compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ record.setThiSameLevelPercent(0);
|
|
|
+ }else{
|
|
|
+ record.setThiSameLevelPercent(-1);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 差值计算
|
|
|
+ *
|
|
|
+ * @param bigDecimalOne
|
|
|
+ * @param bigDecimalTwo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private BigDecimal getSubtract(BigDecimal bigDecimalOne, BigDecimal bigDecimalTwo) {
|
|
|
+ BigDecimal newBigDecimal = new BigDecimal(0);
|
|
|
+ if (null == bigDecimalOne && null != bigDecimalTwo) {
|
|
|
+ newBigDecimal = newBigDecimal.subtract(bigDecimalTwo);
|
|
|
+ } else if (null != bigDecimalOne && null == bigDecimalTwo) {
|
|
|
+ newBigDecimal = bigDecimalOne.subtract(newBigDecimal);
|
|
|
+ } else if (null != bigDecimalOne && null != bigDecimalTwo) {
|
|
|
+ newBigDecimal = bigDecimalOne.subtract(bigDecimalTwo);
|
|
|
+ }
|
|
|
+ return newBigDecimal;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 病案首页合格率占比
|
|
|
*
|
|
|
* @param filterOrderByDeptVO
|
|
|
* @return
|
|
|
*/
|
|
|
- public List<HomePageNumDTO> homePageLevelStatisticsByDept(FilterOrderByDeptVO filterOrderByDeptVO) {
|
|
|
+ public List<HomePageByDeptDTO> homePageLevelStatisticsByDept(FilterOrderByDeptVO filterOrderByDeptVO) {
|
|
|
List<DeptBaseDTO> deptList = getDept();
|
|
|
if (ListUtil.isEmpty(deptList)) {
|
|
|
return null;
|
|
@@ -499,25 +613,81 @@ public class ConsoleByDeptFacade {
|
|
|
filterOrderByDeptVO.setDeptName(deptList.get(0).getDeptName());
|
|
|
}
|
|
|
filterFacade.filterOrderByDeptVOSet(filterOrderByDeptVO);
|
|
|
- List<HomePageNumDTO> records = behospitalInfoFacade.homePageLevelStatisticsByDept(filterOrderByDeptVO);
|
|
|
- //没有医生过滤时增加全科室数据
|
|
|
- if (StringUtil.isBlank(filterOrderByDeptVO.getDeptName())
|
|
|
+ List<HomePageByDeptDTO> records = behospitalInfoFacade.homePageLevelStatisticsByDept(filterOrderByDeptVO);
|
|
|
+ //没有医生过滤时增加全科室数据 --暂时不做汇总处理
|
|
|
+ /* if (StringUtil.isBlank(filterOrderByDeptVO.getDeptName())
|
|
|
|| filterOrderByDeptVO.getDeptName().equals(filterOrderByDeptVO.getDeptName())) {
|
|
|
- HomePageNumDTO item = getGlobleRecord(records, filterOrderByDeptVO.getDeptName());
|
|
|
+ HomePageByDeptDTO item = getGlobleRecord(records, filterOrderByDeptVO.getDeptName());
|
|
|
if (item != null) {
|
|
|
records.add(0, item);
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
return records;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 单条条目缺陷统计(首页)
|
|
|
+ *
|
|
|
+ * @param filterVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Map<String, List<AdmissionCountDTO>>casesEntryStatisticsByDept(FilterVO filterVO) {
|
|
|
+ filterFacade.filterVOSet(filterVO);
|
|
|
+ List<AdmissionCountDTO> totleNumList = behospitalInfoFacade.casesEntryStatisticsByDept(filterVO);
|
|
|
+ Map<String, List<AdmissionCountDTO>> resourceData = mapResource(filterVO, totleNumList);
|
|
|
+ return resourceData;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Map<String, List<AdmissionCountDTO>> mapResource(FilterVO filterVO,List<AdmissionCountDTO>totleNumList){
|
|
|
+ Map<String, Object> deptMap = getDeptByUser(filterVO);
|
|
|
+ Map<String, List<AdmissionCountDTO>> mapSource = new HashMap<>();
|
|
|
+ Map<String, List<AdmissionCountDTO>> returnSource = new HashMap<>();
|
|
|
+ if (deptMap == null) {
|
|
|
+ return mapSource;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(ListUtil.isNotEmpty(totleNumList)) {
|
|
|
+ mapSource = EntityUtil.makeEntityListMap(totleNumList, "deptName");
|
|
|
+ for (String deptName : deptMap.keySet()) {
|
|
|
+ List<AdmissionCountDTO> admissionCountDTOS = mapSource.get(deptName);
|
|
|
+ if(ListUtil.isNotEmpty(admissionCountDTOS) ){
|
|
|
+// if ( admissionCountDTOS.size()> filterVO.getLimitCount()) {
|
|
|
+// admissionCountDTOS = admissionCountDTOS.subList(0, 10);
|
|
|
+// }
|
|
|
+ AdmissionCountDTO admissionCount = new AdmissionCountDTO();
|
|
|
+ Integer tolCount = admissionCountDTOS.stream()
|
|
|
+ .map(AdmissionCountDTO::getNum)
|
|
|
+ .reduce(0, Integer::sum);
|
|
|
+ admissionCount.setDoctorName(deptName);
|
|
|
+ admissionCount.setNum(tolCount);
|
|
|
+ admissionCountDTOS.add(0, admissionCount);
|
|
|
+ returnSource.put(deptName,admissionCountDTOS);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return returnSource;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 不合格/合格数病历号-科室(内页)
|
|
|
+ *
|
|
|
+ * @param qcResultPageVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public IPage<QcResultShortDTO> homePageOrGoodLevelByDept(QcResultPageVO qcResultPageVO) {
|
|
|
+ filterFacade.OrGoodLevelPageVOSet(qcResultPageVO);
|
|
|
+ return behospitalInfoFacade.getOrGoodLevelByDept(qcResultPageVO);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 病案首页合格率占比(首页)
|
|
|
*
|
|
|
* @param filterOrderByDeptVO
|
|
|
* @return
|
|
|
*/
|
|
|
- public List<HomePageNumDTO> homePageLevelByDeptLimit(FilterOrderByDeptVO filterOrderByDeptVO) {
|
|
|
+ public List<HomePageByDeptDTO> homePageLevelByDeptLimit(FilterOrderByDeptVO filterOrderByDeptVO) {
|
|
|
|
|
|
List<DeptBaseDTO> deptList = getDept();
|
|
|
if (ListUtil.isEmpty(deptList)) {
|
|
@@ -530,8 +700,8 @@ public class ConsoleByDeptFacade {
|
|
|
if (filterOrderByDeptVO.getLimitCount() == null || filterOrderByDeptVO.getLimitCount().equals(0)) {
|
|
|
filterOrderByDeptVO.setLimitCount(10);
|
|
|
}
|
|
|
- List<HomePageNumDTO> records = behospitalInfoFacade.homePageLevelStatisticsByDept(filterOrderByDeptVO);
|
|
|
- HomePageNumDTO item = getGlobleRecord(records, filterOrderByDeptVO.getDeptName());
|
|
|
+ List<HomePageByDeptDTO> records = behospitalInfoFacade.homePageLevelStatisticsByDept(filterOrderByDeptVO);
|
|
|
+ HomePageByDeptDTO item = getGlobleRecord(records, filterOrderByDeptVO.getDeptName());
|
|
|
if (item != null) {
|
|
|
records.add(0, item);
|
|
|
}
|
|
@@ -551,13 +721,13 @@ public class ConsoleByDeptFacade {
|
|
|
* @param deptName
|
|
|
* @return
|
|
|
*/
|
|
|
- public HomePageNumDTO getGlobleRecord(List<HomePageNumDTO> records, String deptName) {
|
|
|
+ public HomePageByDeptDTO getGlobleRecord(List<HomePageByDeptDTO> records, String deptName) {
|
|
|
DecimalFormat df = new DecimalFormat("#0.00");
|
|
|
- HomePageNumDTO item = new HomePageNumDTO();
|
|
|
+ HomePageByDeptDTO item = new HomePageByDeptDTO();
|
|
|
//总病历数
|
|
|
Integer mrNum = records
|
|
|
.stream()
|
|
|
- .map(HomePageNumDTO::getMrNum)
|
|
|
+ .map(HomePageByDeptDTO::getMrNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
if (mrNum == null || mrNum == 0) {
|
|
|
return null;
|
|
@@ -565,7 +735,7 @@ public class ConsoleByDeptFacade {
|
|
|
//总缺陷数
|
|
|
Integer entryNum = records
|
|
|
.stream()
|
|
|
- .map(HomePageNumDTO::getEntryNum)
|
|
|
+ .map(HomePageByDeptDTO::getEntryNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
//总分
|
|
|
Double totleValue = records
|
|
@@ -580,7 +750,7 @@ public class ConsoleByDeptFacade {
|
|
|
//合格病历总数
|
|
|
Integer firstLevelNum = records
|
|
|
.stream()
|
|
|
- .map(HomePageNumDTO::getFirstLevelNum)
|
|
|
+ .map(HomePageByDeptDTO::getFirstLevelNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
//合格病历占比
|
|
|
Double firstLevelPercent = BigDecimal.valueOf(firstLevelNum)
|
|
@@ -591,7 +761,7 @@ public class ConsoleByDeptFacade {
|
|
|
//不合格病历数
|
|
|
Integer secondLevelNum = records
|
|
|
.stream()
|
|
|
- .map(HomePageNumDTO::getSecondLevelNum)
|
|
|
+ .map(HomePageByDeptDTO::getSecondLevelNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
//不合格病历占比
|
|
|
Double secondLevelPercent = BigDecimal.valueOf(secondLevelNum)
|
|
@@ -602,12 +772,12 @@ public class ConsoleByDeptFacade {
|
|
|
//条目缺陷总数(模块下条目*病历数)
|
|
|
Integer entryTotleNum = records
|
|
|
.stream()
|
|
|
- .map(HomePageNumDTO::getEntryTotleNum)
|
|
|
+ .map(HomePageByDeptDTO::getEntryTotleNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
//空项总数
|
|
|
Integer emptyNum = records
|
|
|
.stream()
|
|
|
- .map(HomePageNumDTO::getEmptyNum)
|
|
|
+ .map(HomePageByDeptDTO::getEmptyNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
Double emptyPercent = BigDecimal.valueOf(entryTotleNum - emptyNum)
|
|
|
.divide(BigDecimal.valueOf(entryTotleNum), 4, RoundingMode.HALF_UP)
|
|
@@ -617,7 +787,7 @@ public class ConsoleByDeptFacade {
|
|
|
//错误项总数
|
|
|
Integer errorNum = records
|
|
|
.stream()
|
|
|
- .map(HomePageNumDTO::getErrorNum)
|
|
|
+ .map(HomePageByDeptDTO::getErrorNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
Double errorPercent = BigDecimal.valueOf(entryTotleNum - errorNum)
|
|
|
.divide(BigDecimal.valueOf(entryTotleNum), 4, RoundingMode.HALF_UP)
|
|
@@ -626,6 +796,7 @@ public class ConsoleByDeptFacade {
|
|
|
= df.format(BigDecimal.valueOf(errorPercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
|
|
|
item.setDoctorName(deptName);
|
|
|
+// item.setDeptId(deptId);
|
|
|
item.setEntryNum(entryNum);
|
|
|
item.setMrNum(mrNum);
|
|
|
item.setTotleValue(totleValue);
|
|
@@ -657,4 +828,460 @@ public class ConsoleByDeptFacade {
|
|
|
IPage<QcResultShortDTO> page = behospitalInfoFacade.qcResultShortByDeptPage(qcResultShortPageVO);
|
|
|
return page;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 关键条目缺陷占比统计-科室
|
|
|
+ *
|
|
|
+ * @param entryStatisticsVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<EntryStasByDeptDTO> entryStatisticsByDept(EntryStatisticsVO entryStatisticsVO) {
|
|
|
+ filterFacade.entryStatisticsVOSet(entryStatisticsVO);
|
|
|
+ if (entryStatisticsVO.getDeptName().equals("全院")) {
|
|
|
+ entryStatisticsVO.setDeptName("");
|
|
|
+ }
|
|
|
+ List<EntryStasByDeptDTO> records = behospitalInfoFacade.entryStatisticsByDept(entryStatisticsVO);
|
|
|
+ return records;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 离院病人质控评分详情页-科室
|
|
|
+ *
|
|
|
+ * @param qcResultShortPageVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public IPage<QcResultShortDTO> leaveHosMRPageByDept(QcResultShortPageVO qcResultShortPageVO) {
|
|
|
+ filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
|
|
|
+ IPage<QcResultShortDTO> page = behospitalInfoFacade.leaveHosMRPageByDept(qcResultShortPageVO);
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 质控核查统计-科室(内页)
|
|
|
+ *
|
|
|
+ * @param filterOrderVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<ImproveByDeptDTO> qcCheckStatisticsByDept(FilterOrderVO filterOrderVO) {
|
|
|
+ filterFacade.filterOrderVOSet(filterOrderVO);
|
|
|
+ List<ImproveByDeptDTO> records = behospitalInfoFacade.qcCheckStatisticsByDept(filterOrderVO);
|
|
|
+ return records;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 质控核查质控评分页-科室(内页)
|
|
|
+ *
|
|
|
+ * @param qcResultShortPageVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public IPage<QcResultShortDTO> qcCheckMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
|
|
|
+ filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
|
|
|
+ return behospitalInfoFacade.qcCheckMRPageByDept(qcResultShortPageVO);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 病案首页改善率质控评分页-科室(内页)
|
|
|
+ *
|
|
|
+ * @param qcResultShortPageVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public IPage<QcResultShortDTO> hmImproveMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
|
|
|
+ filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
|
|
|
+ return behospitalInfoFacade.hmImproveMRPageByDept(qcResultShortPageVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 31天再入院详情页-科室
|
|
|
+ *
|
|
|
+ * @param reBeHosPageVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public IPage<ReBeHosByDeptDTO> reHos31DaysPageByDept(ReBeHosPageVO reBeHosPageVO) {
|
|
|
+ filterFacade.reBeHosPageVOSet(reBeHosPageVO);
|
|
|
+ IPage<ReBeHosMergeDTO> page = behospitalInfoFacade.reHos31DaysPageByDept(reBeHosPageVO);
|
|
|
+ List<ReBeHosMergeDTO> records = page.getRecords();
|
|
|
+ IPage<ReBeHosByDeptDTO> retPage = new Page<>();
|
|
|
+ BeanUtil.copyProperties(page, retPage);
|
|
|
+ List<ReBeHosByDeptDTO> retRecords = Lists.newLinkedList();
|
|
|
+ if (ListUtil.isNotEmpty(records)) {
|
|
|
+ for (ReBeHosMergeDTO record : records) {
|
|
|
+ ReBeHosByDeptDTO retRecord = new ReBeHosByDeptDTO();
|
|
|
+ BeanUtil.copyProperties(record, retRecord);
|
|
|
+ List<ReBeHosDetailByDeptDTO> details = Lists.newLinkedList();
|
|
|
+ ReBeHosDetailByDeptDTO detailRecord = new ReBeHosDetailByDeptDTO();
|
|
|
+ BeanUtil.copyProperties(record, detailRecord);
|
|
|
+ details.add(detailRecord);
|
|
|
+ ReBeHosDetailByDeptDTO lastDetailRecord = new ReBeHosDetailByDeptDTO();
|
|
|
+ lastDetailRecord.setName(record.getName());
|
|
|
+ lastDetailRecord.setBehDeptId(record.getLastBehDeptId());
|
|
|
+ lastDetailRecord.setBehDeptName(record.getLastBehDeptName());
|
|
|
+ lastDetailRecord.setDoctorName(record.getLastDoctorName());
|
|
|
+ lastDetailRecord.setBehospitalCode(record.getLastBehospitalCode());
|
|
|
+ lastDetailRecord.setBehospitalDate(record.getLastBehospitalDate());
|
|
|
+ lastDetailRecord.setLeaveHospitalDate(record.getLastLeaveHospitalDate());
|
|
|
+ lastDetailRecord.setLevel(record.getLastLevel());
|
|
|
+ lastDetailRecord.setScoreRes(record.getLastScoreRes());
|
|
|
+ lastDetailRecord.setBehospitalDayNum(record.getLastBehospitalDayNum());
|
|
|
+ lastDetailRecord.setTotleFee(record.getLastTotleFee());
|
|
|
+ details.add(lastDetailRecord);
|
|
|
+ retRecord.setDetails(details);
|
|
|
+ retRecords.add(retRecord);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ retPage.setRecords(retRecords);
|
|
|
+ return retPage;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 未整改病历质控评分页-科室(内页)
|
|
|
+ *
|
|
|
+ * @param qcResultShortPageVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public IPage<QcResultShortDTO> unModifyMRByDept(QcResultShortPageVO qcResultShortPageVO) {
|
|
|
+ filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
|
|
|
+ return behospitalInfoFacade.unModifyMRByDept(qcResultShortPageVO);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 病历稽查表导出-科室
|
|
|
+ *
|
|
|
+ * @param filterVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ public List<MedicalDeptDTO> medicalCheckExportByDept(@Param("filterVO") FilterMedicalCheckVO filterVO) {
|
|
|
+ filterFacade.getMedicalCheckVOSet(filterVO);
|
|
|
+ List<MedicalDeptDTO> medicalCheck = behospitalInfoFacade.medicalCheckExportByDept(filterVO);
|
|
|
+ return medicalCheck;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 病历稽查表(title)-科室
|
|
|
+ *
|
|
|
+ * @param
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<ColumnDTO> medicalCheckTitleKs() {
|
|
|
+ //病历稽查入参拼接
|
|
|
+ String hospitalId = SysUserUtils.getCurrentHospitalID();
|
|
|
+ //colums
|
|
|
+ QueryWrapper<SysHospitalSet> hospitalSetQueryWrapper = new QueryWrapper<>();
|
|
|
+ hospitalSetQueryWrapper.eq("is_deleted", 'N')
|
|
|
+ .eq("hospital_id", hospitalId)
|
|
|
+ .eq("code", "medical_check_form_ks");
|
|
|
+ List<ColumnDTO> columns = Lists.newLinkedList();
|
|
|
+ SysHospitalSet hospitalSet = sysHospitalSetFacade.getOne(hospitalSetQueryWrapper);
|
|
|
+ if (hospitalSet == null || StringUtil.isBlank(hospitalSet.getValue())) {
|
|
|
+ return columns;
|
|
|
+ }
|
|
|
+
|
|
|
+ //表头生成
|
|
|
+ List<String> columnSet = Arrays.asList(hospitalSet.getValue().split(","));
|
|
|
+ Integer orderNo = 1;
|
|
|
+ ColumnDTO columnDeptId = new ColumnDTO();
|
|
|
+ columnDeptId.setOrderNo(orderNo);
|
|
|
+ columnDeptId.setFieldName("doctorId");
|
|
|
+ columnDeptId.setColumnName("医生编码");
|
|
|
+ columnDeptId.setIsShow(0);
|
|
|
+ columns.add(columnDeptId);
|
|
|
+ orderNo++;
|
|
|
+ ColumnDTO columnDeptName = new ColumnDTO();
|
|
|
+ columnDeptName.setOrderNo(orderNo);
|
|
|
+ columnDeptName.setFieldName("doctorName");
|
|
|
+ columnDeptName.setColumnName("主管医生");
|
|
|
+ columnDeptName.setIsShow(1);
|
|
|
+ columns.add(columnDeptName);
|
|
|
+ orderNo++;
|
|
|
+ ColumnDTO columnMedicalName = new ColumnDTO();
|
|
|
+ columnMedicalName.setOrderNo(orderNo);
|
|
|
+ columnMedicalName.setFieldName("doctorGroup");
|
|
|
+ columnMedicalName.setColumnName("医疗组");
|
|
|
+ columnMedicalName.setIsShow(1);
|
|
|
+ columns.add(columnMedicalName);
|
|
|
+ orderNo++;
|
|
|
+ for (String valueStr : columnSet) {
|
|
|
+ String[] keyValue = valueStr.split("--");
|
|
|
+ if (keyValue != null || keyValue.length > 1) {
|
|
|
+ ColumnDTO columnNum = new ColumnDTO();
|
|
|
+ columnNum.setOrderNo(orderNo);
|
|
|
+ columnNum.setId(Long.valueOf(keyValue[0]));
|
|
|
+ columnNum.setFieldName("entry_" + keyValue[0] + "_name");
|
|
|
+ columnNum.setColumnName(keyValue[1]);
|
|
|
+ columnNum.setIsShow(1);
|
|
|
+ columns.add(columnNum);
|
|
|
+ orderNo++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return columns;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 病历稽查表-科室
|
|
|
+ *
|
|
|
+ * @param filterVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public IPage<MedicalCheckDTO> getMedicalChecks(@Param("filterVO") FilterMedicalCheckVO filterVO) {
|
|
|
+ filterFacade.getMedicalCheckVOSet(filterVO);
|
|
|
+ //colums
|
|
|
+ QueryWrapper<SysHospitalSet> hospitalSetQueryWrapper = new QueryWrapper<>();
|
|
|
+ hospitalSetQueryWrapper.eq("is_deleted", 'N')
|
|
|
+ .eq("hospital_id", filterVO.getHospitalId())
|
|
|
+ .eq("code", "medical_check_form_ks");
|
|
|
+ SysHospitalSet hospitalSet = sysHospitalSetFacade.getOne(hospitalSetQueryWrapper);
|
|
|
+
|
|
|
+ //表头生成
|
|
|
+ List<String> columnSet = Arrays.asList(hospitalSet.getValue().split(","));
|
|
|
+
|
|
|
+ //目标条目
|
|
|
+ List<Long> casesEntryIds = Lists.newArrayList();
|
|
|
+ //遍历第一个条目
|
|
|
+ for (String valueStr : columnSet) {
|
|
|
+ if (StringUtil.isBlank(valueStr)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String[] keyValue = valueStr.split("--");
|
|
|
+ if (keyValue != null || keyValue.length > 1) {
|
|
|
+ casesEntryIds.add(Long.valueOf(keyValue[0]));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ IPage<MedicalCheckDTO> medicalCheck = behospitalInfoFacade.getMedicalChecks(filterVO,casesEntryIds);
|
|
|
+ return medicalCheck;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 未整改病历统计-科室
|
|
|
+ *
|
|
|
+ * @param filterUnModifyMRVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public UnModifyMRDTO unModifyMRSByDept(FilterUnModifyMRVO filterUnModifyMRVO) {
|
|
|
+ UnModifyMRDTO unModifyMRDTO = new UnModifyMRDTO();
|
|
|
+ List<Object> retList = Lists.newLinkedList();
|
|
|
+ filterFacade.filterUnModifyMRVOSet(filterUnModifyMRVO);
|
|
|
+
|
|
|
+ //colums
|
|
|
+ QueryWrapper<SysHospitalSet> hospitalSetQueryWrapper = new QueryWrapper<>();
|
|
|
+ hospitalSetQueryWrapper.eq("is_deleted", 'N')
|
|
|
+ .eq("hospital_id", filterUnModifyMRVO.getHospitalId())
|
|
|
+ .eq("code", "unmodify_mr_entry_ks");
|
|
|
+ SysHospitalSet hospitalSet = sysHospitalSetFacade.getOne(hospitalSetQueryWrapper);
|
|
|
+ if (hospitalSet == null || StringUtil.isBlank(hospitalSet.getValue())) {
|
|
|
+ return unModifyMRDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ //表头生成
|
|
|
+ List<String> columnSet = Arrays.asList(hospitalSet.getValue().split(","));
|
|
|
+ List<ColumnDTO> columns = Lists.newLinkedList();
|
|
|
+ Integer orderNo = 1;
|
|
|
+ ColumnDTO columnDeptId = new ColumnDTO();
|
|
|
+ columnDeptId.setOrderNo(orderNo);
|
|
|
+ columnDeptId.setFieldName("doctorId");
|
|
|
+ columnDeptId.setColumnName("医生编码");
|
|
|
+ columnDeptId.setIsShow(0);
|
|
|
+ columns.add(columnDeptId);
|
|
|
+ orderNo++;
|
|
|
+ ColumnDTO columnDeptName = new ColumnDTO();
|
|
|
+ columnDeptName.setOrderNo(orderNo);
|
|
|
+ columnDeptName.setFieldName("doctorName");
|
|
|
+ columnDeptName.setColumnName("主管医生");
|
|
|
+ columnDeptName.setIsShow(1);
|
|
|
+ columns.add(columnDeptName);
|
|
|
+ orderNo++;
|
|
|
+ List<Long> casesEntryIds = Lists.newArrayList();
|
|
|
+ for (String valueStr : columnSet) {
|
|
|
+ if (StringUtil.isBlank(valueStr)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String[] keyValue = valueStr.split("--");
|
|
|
+ if (keyValue != null || keyValue.length > 1) {
|
|
|
+ casesEntryIds.add(Long.valueOf(keyValue[0]));
|
|
|
+ ColumnDTO columnId = new ColumnDTO();
|
|
|
+ columnId.setOrderNo(orderNo);
|
|
|
+ columnId.setId(Long.valueOf(keyValue[0]));
|
|
|
+ columnId.setFieldName("entry_" + keyValue[0] + "_id");
|
|
|
+ columnId.setColumnName(keyValue[1] + "id");
|
|
|
+ columnId.setIsShow(0);
|
|
|
+ columns.add(columnId);
|
|
|
+ orderNo++;
|
|
|
+ ColumnDTO columnName = new ColumnDTO();
|
|
|
+ columnName.setOrderNo(orderNo);
|
|
|
+ columnName.setId(Long.valueOf(keyValue[0]));
|
|
|
+ columnName.setFieldName("entry_" + keyValue[0] + "_name");
|
|
|
+ columnName.setColumnName(keyValue[1] + "name");
|
|
|
+ columnName.setIsShow(0);
|
|
|
+ columns.add(columnName);
|
|
|
+ orderNo++;
|
|
|
+ ColumnDTO columnNum = new ColumnDTO();
|
|
|
+ columnNum.setOrderNo(orderNo);
|
|
|
+ columnNum.setId(Long.valueOf(keyValue[0]));
|
|
|
+ columnNum.setFieldName("entry_" + keyValue[0] + "_num");
|
|
|
+ columnNum.setColumnName(keyValue[1]);
|
|
|
+ columnNum.setIsShow(1);
|
|
|
+ columns.add(columnNum);
|
|
|
+ orderNo++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //条目未维护
|
|
|
+ if (ListUtil.isEmpty(casesEntryIds)) {
|
|
|
+ return unModifyMRDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ //casesEntryIds
|
|
|
+ filterUnModifyMRVO.setCasesEntryIds(casesEntryIds);
|
|
|
+ QueryWrapper<QcCasesEntry> qcCasesEntryQueryWrapper = new QueryWrapper<>();
|
|
|
+ qcCasesEntryQueryWrapper.eq("is_deleted", "N")
|
|
|
+ .in("id", casesEntryIds);
|
|
|
+ List<QcCasesEntry> casesEntryList = qcCasesEntryFacade.list(qcCasesEntryQueryWrapper);
|
|
|
+ // 实体类中将实体类转化为map形式,其中条目id对应目标条目名称
|
|
|
+ Map<Long, String> basCasesEntryMap = EntityUtil.makeMapWithKeyValue(casesEntryList, "id", "name");
|
|
|
+
|
|
|
+ List<UnModifyMRDetailDTO> records = behospitalInfoFacade.unModifyMRSByDept(filterUnModifyMRVO);
|
|
|
+ //以科室分组,将符合科室的每条数据以map形式存储
|
|
|
+ Map<String, List<UnModifyMRDetailDTO>> deptMap = EntityUtil.makeEntityListMap(records, "doctorName");
|
|
|
+ //科室对应科室id
|
|
|
+ Map<String, String> deptInfoMap = EntityUtil.makeMapWithKeyValue(records, "doctorName", "doctorId");
|
|
|
+ Map<String, Map<Long, UnModifyMRDetailDTO>> deptEntryMap = new LinkedHashMap<>();
|
|
|
+ for (Map.Entry<String, List<UnModifyMRDetailDTO>> entry : deptMap.entrySet()) {
|
|
|
+ Map<Long, UnModifyMRDetailDTO> entryMap = EntityUtil.makeEntityMap(entry.getValue(), "casesEntryId");
|
|
|
+ deptEntryMap.put(entry.getKey(), entryMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ for (Map.Entry<String, Map<Long, UnModifyMRDetailDTO>> entry : deptEntryMap.entrySet()) {
|
|
|
+ Object obj = new Object();
|
|
|
+ HashMap addMap = new HashMap();
|
|
|
+ HashMap addValMap = new HashMap();
|
|
|
+
|
|
|
+ addMap.put("doctorName", Class.forName("java.lang.String"));
|
|
|
+ addValMap.put("doctorName", entry.getKey());
|
|
|
+ addMap.put("doctorId", Class.forName("java.lang.String"));
|
|
|
+ addValMap.put("doctorId", deptInfoMap.get(entry.getKey()));
|
|
|
+
|
|
|
+ for (ColumnDTO item : columns) {
|
|
|
+ if (item.getFieldName().lastIndexOf("_id") > 0) {
|
|
|
+ addMap.put(item.getFieldName(), Class.forName("java.lang.Long"));
|
|
|
+ if (item.getId() != null) {
|
|
|
+ addValMap.put(item.getFieldName(), item.getId());
|
|
|
+ } else {
|
|
|
+ addValMap.put(item.getFieldName(), null);
|
|
|
+ }
|
|
|
+ } else if (item.getFieldName().lastIndexOf("_name") > 0) {
|
|
|
+ addMap.put(item.getFieldName(), Class.forName("java.lang.String"));
|
|
|
+ if (basCasesEntryMap.containsKey(item.getId())) {
|
|
|
+ addValMap.put(item.getFieldName(), basCasesEntryMap.get(item.getId()));
|
|
|
+ } else {
|
|
|
+ addValMap.put(item.getFieldName(), "");
|
|
|
+ }
|
|
|
+ } else if (item.getFieldName().lastIndexOf("_num") > 0) {
|
|
|
+ addMap.put(item.getFieldName(), Class.forName("java.lang.Integer"));
|
|
|
+ if (entry.getValue().containsKey(item.getId())) {
|
|
|
+ addValMap.put(item.getFieldName(), entry.getValue().get(item.getId()).getCasesEntryNum());
|
|
|
+ } else {
|
|
|
+ addValMap.put(item.getFieldName(), 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ obj = new ClassUtil().dynamicClass(obj, addMap, addValMap);
|
|
|
+ retList.add(obj);
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ //排序
|
|
|
+ Collections.sort(retList, new Comparator<Object>() {
|
|
|
+ @Override
|
|
|
+ public int compare(Object o1, Object o2) {
|
|
|
+
|
|
|
+ if (StringUtil.isNotBlank(filterUnModifyMRVO.getAsc())) {
|
|
|
+ //升序
|
|
|
+ Object o1Val = ObjectUtil.getValueByKey(o1, filterUnModifyMRVO.getAsc());
|
|
|
+ Object o2Val = ObjectUtil.getValueByKey(o2, filterUnModifyMRVO.getAsc());
|
|
|
+ if (filterUnModifyMRVO.getAsc().lastIndexOf("_num") > 1) {
|
|
|
+ return ((Integer) o1Val).compareTo((Integer) o2Val);
|
|
|
+ }
|
|
|
+ if (filterUnModifyMRVO.getAsc().lastIndexOf("_id") > 1) {
|
|
|
+ return ((Long) o1Val).compareTo((Long) o2Val);
|
|
|
+ } else {
|
|
|
+ return ((String) o1Val).compareTo((String) o2Val);
|
|
|
+ }
|
|
|
+ } else if (StringUtil.isNotBlank(filterUnModifyMRVO.getDesc())) {
|
|
|
+ //降序
|
|
|
+ Object o1Val = ObjectUtil.getValueByKey(o1, filterUnModifyMRVO.getDesc());
|
|
|
+ Object o2Val = ObjectUtil.getValueByKey(o2, filterUnModifyMRVO.getDesc());
|
|
|
+ if (filterUnModifyMRVO.getDesc().lastIndexOf("_num") > 1) {
|
|
|
+ return ((Integer) o2Val).compareTo((Integer) o1Val);
|
|
|
+ }
|
|
|
+ if (filterUnModifyMRVO.getDesc().lastIndexOf("_id") > 1) {
|
|
|
+ return ((Long) o2Val).compareTo((Long) o1Val);
|
|
|
+ } else {
|
|
|
+ return ((String) o2Val).compareTo((String) o1Val);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ /* //增加全院数据
|
|
|
+ if (ListUtil.isNotEmpty(retList) &&
|
|
|
+ (StringUtil.isBlank(filterUnModifyMRVO.getDeptName())
|
|
|
+ || filterUnModifyMRVO.getDeptName().equals("全院"))) {
|
|
|
+ try {
|
|
|
+
|
|
|
+ Object globleObj = new Object();
|
|
|
+ HashMap addMap = new HashMap();
|
|
|
+ HashMap addValMap = new HashMap();
|
|
|
+ addMap.put("deptId", Class.forName("java.lang.String"));
|
|
|
+ addValMap.put("deptId", "");
|
|
|
+ addMap.put("deptName", Class.forName("java.lang.String"));
|
|
|
+ addValMap.put("deptName", "全院");
|
|
|
+
|
|
|
+ for (ColumnDTO item : columns) {
|
|
|
+ if (item.getFieldName().lastIndexOf("_id") > 0) {
|
|
|
+ addMap.put(item.getFieldName(), Class.forName("java.lang.Long"));
|
|
|
+ if (item.getId() != null) {
|
|
|
+ addValMap.put(item.getFieldName(), item.getId());
|
|
|
+ } else {
|
|
|
+ addValMap.put(item.getFieldName(), null);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if (item.getFieldName().lastIndexOf("_name") > 0) {
|
|
|
+ addMap.put(item.getFieldName(), Class.forName("java.lang.String"));
|
|
|
+ if (basCasesEntryMap.containsKey(item.getId())) {
|
|
|
+ addValMap.put(item.getFieldName(), basCasesEntryMap.get(item.getId()));
|
|
|
+ } else {
|
|
|
+ addValMap.put(item.getFieldName(), "");
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if (item.getFieldName().lastIndexOf("_num") > 0) {
|
|
|
+ addMap.put(item.getFieldName(), Class.forName("java.lang.Integer"));
|
|
|
+ Integer entryNum = retList
|
|
|
+ .stream()
|
|
|
+ .map(i -> ObjectUtil.getValueByKey(i, item.getFieldName()))
|
|
|
+ .filter(i -> i != null)
|
|
|
+ .map(i -> (Integer) i)
|
|
|
+ .reduce(0, Integer::sum);
|
|
|
+ addValMap.put(item.getFieldName(), entryNum);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ globleObj = new ClassUtil().dynamicClass(globleObj, addMap, addValMap);
|
|
|
+ retList.add(0, globleObj);
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }*/
|
|
|
+ unModifyMRDTO.setColumns(columns);
|
|
|
+ unModifyMRDTO.setData(retList);
|
|
|
+ return unModifyMRDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|