|
@@ -5,6 +5,7 @@ import com.diagbot.dto.DeptBaseDTO;
|
|
|
import com.diagbot.dto.DeptNumDTO;
|
|
|
import com.diagbot.dto.LevelStatisticsDTO;
|
|
|
import com.diagbot.dto.NumDTO;
|
|
|
+import com.diagbot.entity.BehospitalInfo;
|
|
|
import com.diagbot.util.BeanUtil;
|
|
|
import com.diagbot.util.DateUtil;
|
|
|
import com.diagbot.util.EntityUtil;
|
|
@@ -612,4 +613,89 @@ public class ConsoleByDeptFacade {
|
|
|
List<LevelStatisticsDTO> records = behospitalInfoFacade.homePageLevelStatisticsByDept(filterOrderByDeptVO);
|
|
|
return records;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 病案首页合格率占比(首页)
|
|
|
+ *
|
|
|
+ * @param filterOrderByDeptVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<LevelStatisticsDTO> homePageLevelByDeptLimit(FilterOrderByDeptVO filterOrderByDeptVO) {
|
|
|
+ DecimalFormat df = new DecimalFormat("#0.00");
|
|
|
+ List<DeptBaseDTO> deptList = getDept();
|
|
|
+ if (ListUtil.isEmpty(deptList)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ if (StringUtil.isBlank(filterOrderByDeptVO.getDeptName())) {
|
|
|
+ filterOrderByDeptVO.setDeptName(deptList.get(0).getDeptName());
|
|
|
+ }
|
|
|
+ String hosptialId = SysUserUtils.getCurrentHospitalID();
|
|
|
+ String userId = SysUserUtils.getCurrentPrincipleID();
|
|
|
+ String startDate = filterFacade.getStartDateStr(filterOrderByDeptVO.getType(), null);
|
|
|
+ String endDate = filterFacade.getEndDateStr(filterOrderByDeptVO.getType(), null);
|
|
|
+ filterOrderByDeptVO.setStartDate(startDate);
|
|
|
+ filterOrderByDeptVO.setEndDate(endDate);
|
|
|
+ filterOrderByDeptVO.setHospitalId(hosptialId);
|
|
|
+ filterOrderByDeptVO.setUserId(Long.valueOf(userId));
|
|
|
+ if (filterOrderByDeptVO.getLimitCount() == null || filterOrderByDeptVO.getLimitCount().equals(0)) {
|
|
|
+ filterOrderByDeptVO.setLimitCount(10);
|
|
|
+ }
|
|
|
+ List<LevelStatisticsDTO> records = behospitalInfoFacade.homePageLevelStatisticsByDept(filterOrderByDeptVO);
|
|
|
+ //增加全科室
|
|
|
+ LevelStatisticsDTO item = new LevelStatisticsDTO();
|
|
|
+ Integer mrNum = records
|
|
|
+ .stream()
|
|
|
+ .map(LevelStatisticsDTO::getMrNum)
|
|
|
+ .reduce(0, Integer::sum);
|
|
|
+ if (mrNum == null || mrNum == 0) {
|
|
|
+ return Lists.newLinkedList();
|
|
|
+ }
|
|
|
+ Integer entryNum = records
|
|
|
+ .stream()
|
|
|
+ .map(LevelStatisticsDTO::getEntryNum)
|
|
|
+ .reduce(0, Integer::sum);
|
|
|
+ Double totleFee = records
|
|
|
+ .stream()
|
|
|
+ .map(i -> BigDecimal.valueOf(i.getTotleValue()))
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ .doubleValue();
|
|
|
+ Double averageFee = BigDecimal.valueOf(totleFee)
|
|
|
+ .divide(BigDecimal.valueOf(mrNum), 2, RoundingMode.HALF_UP)
|
|
|
+ .doubleValue();
|
|
|
+ Integer firstLevelNum = records
|
|
|
+ .stream()
|
|
|
+ .map(LevelStatisticsDTO::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;
|
|
|
+ Double secondLevelPercent = BigDecimal.valueOf(1)
|
|
|
+ .subtract(BigDecimal.valueOf(firstLevelPercent))
|
|
|
+ .doubleValue();
|
|
|
+ String secondLevelPercentStr
|
|
|
+ = df.format(BigDecimal.valueOf(secondLevelPercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
+ item.setDoctorName(filterOrderByDeptVO.getDeptName());
|
|
|
+ item.setEntryNum(entryNum);
|
|
|
+ item.setMrNum(mrNum);
|
|
|
+ item.setTotleValue(totleFee);
|
|
|
+ item.setAverageValue(averageFee);
|
|
|
+ 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;
|
|
|
+ }
|
|
|
}
|