|
@@ -5,6 +5,7 @@ import com.diagbot.dto.CaseAndDeptNumDTO;
|
|
|
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.util.BeanUtil;
|
|
@@ -573,7 +574,7 @@ public class ConsoleByDeptFacade {
|
|
|
* @param filterOrderByDeptVO
|
|
|
* @return
|
|
|
*/
|
|
|
- public List<LevelStatisticsDTO> homePageLevelStatisticsByDept(FilterOrderByDeptVO filterOrderByDeptVO) {
|
|
|
+ public List<HomePageNumDTO> homePageLevelStatisticsByDept(FilterOrderByDeptVO filterOrderByDeptVO) {
|
|
|
List<DeptBaseDTO> deptList = getDept();
|
|
|
if (ListUtil.isEmpty(deptList)) {
|
|
|
return null;
|
|
@@ -589,7 +590,11 @@ public class ConsoleByDeptFacade {
|
|
|
filterOrderByDeptVO.setEndDate(endDate);
|
|
|
filterOrderByDeptVO.setHospitalId(hosptialId);
|
|
|
filterOrderByDeptVO.setUserId(Long.valueOf(userId));
|
|
|
- List<LevelStatisticsDTO> records = behospitalInfoFacade.homePageLevelStatisticsByDept(filterOrderByDeptVO);
|
|
|
+ List<HomePageNumDTO> records = behospitalInfoFacade.homePageLevelStatisticsByDept(filterOrderByDeptVO);
|
|
|
+ HomePageNumDTO item = getGlobleRecord(records, filterOrderByDeptVO.getDeptName());
|
|
|
+ if (item != null) {
|
|
|
+ records.add(0, item);
|
|
|
+ }
|
|
|
return records;
|
|
|
}
|
|
|
|
|
@@ -599,8 +604,8 @@ public class ConsoleByDeptFacade {
|
|
|
* @param filterOrderByDeptVO
|
|
|
* @return
|
|
|
*/
|
|
|
- public List<LevelStatisticsDTO> homePageLevelByDeptLimit(FilterOrderByDeptVO filterOrderByDeptVO) {
|
|
|
- DecimalFormat df = new DecimalFormat("#0.00");
|
|
|
+ public List<HomePageNumDTO> homePageLevelByDeptLimit(FilterOrderByDeptVO filterOrderByDeptVO) {
|
|
|
+
|
|
|
List<DeptBaseDTO> deptList = getDept();
|
|
|
if (ListUtil.isEmpty(deptList)) {
|
|
|
return null;
|
|
@@ -619,62 +624,119 @@ public class ConsoleByDeptFacade {
|
|
|
if (filterOrderByDeptVO.getLimitCount() == null || filterOrderByDeptVO.getLimitCount().equals(0)) {
|
|
|
filterOrderByDeptVO.setLimitCount(10);
|
|
|
}
|
|
|
- List<LevelStatisticsDTO> records = behospitalInfoFacade.homePageLevelStatisticsByDept(filterOrderByDeptVO);
|
|
|
- //增加全科室
|
|
|
- LevelStatisticsDTO item = new LevelStatisticsDTO();
|
|
|
+ List<HomePageNumDTO> records = behospitalInfoFacade.homePageLevelStatisticsByDept(filterOrderByDeptVO);
|
|
|
+ HomePageNumDTO item = getGlobleRecord(records, filterOrderByDeptVO.getDeptName());
|
|
|
+ if (item != null) {
|
|
|
+ records.add(0, item);
|
|
|
+ }
|
|
|
+
|
|
|
+ records = records
|
|
|
+ .stream()
|
|
|
+ .limit(filterOrderByDeptVO.getLimitCount())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ return records;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取某个科室全科室数据
|
|
|
+ *
|
|
|
+ * @param records
|
|
|
+ * @param deptName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public HomePageNumDTO getGlobleRecord(List<HomePageNumDTO> records, String deptName) {
|
|
|
+ DecimalFormat df = new DecimalFormat("#0.00");
|
|
|
+ HomePageNumDTO item = new HomePageNumDTO();
|
|
|
+ //总病历数
|
|
|
Integer mrNum = records
|
|
|
.stream()
|
|
|
- .map(LevelStatisticsDTO::getMrNum)
|
|
|
+ .map(HomePageNumDTO::getMrNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
if (mrNum == null || mrNum == 0) {
|
|
|
- return Lists.newLinkedList();
|
|
|
+ return null;
|
|
|
}
|
|
|
+ //总缺陷数
|
|
|
Integer entryNum = records
|
|
|
.stream()
|
|
|
- .map(LevelStatisticsDTO::getEntryNum)
|
|
|
+ .map(HomePageNumDTO::getEntryNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
- Double totleFee = records
|
|
|
+ //总分
|
|
|
+ Double totleValue = records
|
|
|
.stream()
|
|
|
.map(i -> BigDecimal.valueOf(i.getTotleValue()))
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
.doubleValue();
|
|
|
- Double averageFee = BigDecimal.valueOf(totleFee)
|
|
|
+ //平均分
|
|
|
+ Double averageValue = BigDecimal.valueOf(totleValue)
|
|
|
.divide(BigDecimal.valueOf(mrNum), 2, RoundingMode.HALF_UP)
|
|
|
.doubleValue();
|
|
|
+ //合格病历总数
|
|
|
Integer firstLevelNum = records
|
|
|
.stream()
|
|
|
- .map(LevelStatisticsDTO::getFirstLevelNum)
|
|
|
+ .map(HomePageNumDTO::getFirstLevelNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
+ //合格病历占比
|
|
|
Double firstLevelPercent = BigDecimal.valueOf(firstLevelNum)
|
|
|
.divide(BigDecimal.valueOf(mrNum), 4, RoundingMode.HALF_UP)
|
|
|
.doubleValue();
|
|
|
String firstLevelPercentStr
|
|
|
= df.format(BigDecimal.valueOf(firstLevelPercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
- Integer secondLevelNum = mrNum - firstLevelNum;
|
|
|
+ //不合格病历数
|
|
|
+ Integer secondLevelNum = records
|
|
|
+ .stream()
|
|
|
+ .map(HomePageNumDTO::getSecondLevelNum)
|
|
|
+ .reduce(0, Integer::sum);
|
|
|
+ //不合格病历占比
|
|
|
Double secondLevelPercent = BigDecimal.valueOf(secondLevelNum)
|
|
|
.divide(BigDecimal.valueOf(mrNum), 4, RoundingMode.HALF_UP)
|
|
|
.doubleValue();
|
|
|
String secondLevelPercentStr
|
|
|
= df.format(BigDecimal.valueOf(secondLevelPercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
- item.setDoctorName(filterOrderByDeptVO.getDeptName());
|
|
|
+ //条目缺陷总数(模块下条目*病历数)
|
|
|
+ Integer entryTotleNum = records
|
|
|
+ .stream()
|
|
|
+ .map(HomePageNumDTO::getEntryTotleNum)
|
|
|
+ .reduce(0, Integer::sum);
|
|
|
+ //空项总数
|
|
|
+ Integer emptyNum = records
|
|
|
+ .stream()
|
|
|
+ .map(HomePageNumDTO::getEmptyNum)
|
|
|
+ .reduce(0, Integer::sum);
|
|
|
+ Double emptyPercent = BigDecimal.valueOf(emptyNum)
|
|
|
+ .divide(BigDecimal.valueOf(entryTotleNum), 4, RoundingMode.HALF_UP)
|
|
|
+ .doubleValue();
|
|
|
+ String emptyPercentStr
|
|
|
+ = df.format(BigDecimal.valueOf(emptyPercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
+ //错误项总数
|
|
|
+ Integer errorNum = records
|
|
|
+ .stream()
|
|
|
+ .map(HomePageNumDTO::getErrorNum)
|
|
|
+ .reduce(0, Integer::sum);
|
|
|
+ Double errorPercent = BigDecimal.valueOf(errorNum)
|
|
|
+ .divide(BigDecimal.valueOf(entryTotleNum), 4, RoundingMode.HALF_UP)
|
|
|
+ .doubleValue();
|
|
|
+ String errorPercentStr
|
|
|
+ = df.format(BigDecimal.valueOf(errorPercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
+
|
|
|
+ item.setDeptName(deptName);
|
|
|
item.setEntryNum(entryNum);
|
|
|
item.setMrNum(mrNum);
|
|
|
- item.setTotleValue(totleFee);
|
|
|
- item.setAverageValue(averageFee);
|
|
|
+ item.setTotleValue(totleValue);
|
|
|
+ item.setAverageValue(averageValue);
|
|
|
item.setFirstLevelNum(firstLevelNum);
|
|
|
item.setFirstLevelPercent(firstLevelPercent);
|
|
|
item.setFirstLevelPercentStr(firstLevelPercentStr);
|
|
|
item.setSecondLevelNum(secondLevelNum);
|
|
|
item.setSecondLevelPercent(secondLevelPercent);
|
|
|
item.setSecondLevelPercentStr(secondLevelPercentStr);
|
|
|
-
|
|
|
- records.add(0, item);
|
|
|
-
|
|
|
- records = records
|
|
|
- .stream()
|
|
|
- .limit(filterOrderByDeptVO.getLimitCount())
|
|
|
- .collect(Collectors.toList());
|
|
|
-
|
|
|
- return records;
|
|
|
+ item.setEntryTotleNum(entryTotleNum);
|
|
|
+ item.setEmptyNum(emptyNum);
|
|
|
+ item.setEmptyPercent(emptyPercent);
|
|
|
+ item.setEmptyPercentStr(emptyPercentStr);
|
|
|
+ item.setErrorNum(errorNum);
|
|
|
+ item.setErrorPercent(errorPercent);
|
|
|
+ item.setErrorPercentStr(errorPercentStr);
|
|
|
+ return item;
|
|
|
}
|
|
|
}
|