|
@@ -627,6 +627,7 @@ public class ConsoleFacade {
|
|
|
* @return
|
|
|
*/
|
|
|
public List<EntryStatisticsDTO> entryStatistics(EntryStatisticsVO entryStatisticsVO) {
|
|
|
+ filterFacade.entryStatisticsVOSet(entryStatisticsVO);
|
|
|
if (entryStatisticsVO.getDeptName().equals("全院")) {
|
|
|
entryStatisticsVO.setDeptName("");
|
|
|
}
|
|
@@ -655,7 +656,7 @@ public class ConsoleFacade {
|
|
|
|
|
|
EntryStatisticsDTO record = new EntryStatisticsDTO();
|
|
|
record.setDeptName("全院");
|
|
|
- //会诊记录合格率
|
|
|
+ //未在24小时内完成会诊
|
|
|
Integer consultationNum = records
|
|
|
.stream()
|
|
|
.map(EntryStatisticsDTO::getConsultationNum)
|
|
@@ -667,14 +668,16 @@ public class ConsoleFacade {
|
|
|
.map(EntryStatisticsDTO::getConsultationMRNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
record.setConsultationMRNum(consultationMRNum);
|
|
|
- Double consultationPercent = BigDecimal.valueOf(consultationNum)
|
|
|
- .divide(BigDecimal.valueOf(consultationMRNum), 4, RoundingMode.HALF_UP)
|
|
|
- .doubleValue();
|
|
|
- String consultationPercentStr
|
|
|
- = df.format(BigDecimal.valueOf(consultationPercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
- record.setConsultationPercent(consultationPercent);
|
|
|
- record.setConsultationPercentStr(consultationPercentStr);
|
|
|
- //手术记录名称
|
|
|
+ if (consultationMRNum != null && !consultationMRNum.equals(0)) {
|
|
|
+ Double consultationPercent = BigDecimal.valueOf(consultationNum)
|
|
|
+ .divide(BigDecimal.valueOf(consultationMRNum), 4, RoundingMode.HALF_UP)
|
|
|
+ .doubleValue();
|
|
|
+ String consultationPercentStr
|
|
|
+ = df.format(BigDecimal.valueOf(consultationPercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
+ record.setConsultationPercent(consultationPercent);
|
|
|
+ record.setConsultationPercentStr(consultationPercentStr);
|
|
|
+ }
|
|
|
+ //手术记录名称不匹配
|
|
|
Integer operationNameNum = records
|
|
|
.stream()
|
|
|
.map(EntryStatisticsDTO::getOperationNameNum)
|
|
@@ -686,29 +689,48 @@ public class ConsoleFacade {
|
|
|
.map(EntryStatisticsDTO::getOperationMRNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
record.setOperationMRNum(operationMRNum);
|
|
|
- Double operationNamePercent = BigDecimal.valueOf(operationNameNum)
|
|
|
- .divide(BigDecimal.valueOf(operationMRNum), 4, RoundingMode.HALF_UP)
|
|
|
- .doubleValue();
|
|
|
- String operationNamePercentStr
|
|
|
- = df.format(BigDecimal.valueOf(operationNamePercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
- record.setOperationNamePercent(operationNamePercent);
|
|
|
- record.setOperationNamePercentStr(operationNamePercentStr);
|
|
|
- //手术记录时间
|
|
|
+ if (operationMRNum != null && !operationMRNum.equals(0)) {
|
|
|
+ Double operationNamePercent = BigDecimal.valueOf(operationNameNum)
|
|
|
+ .divide(BigDecimal.valueOf(operationMRNum), 4, RoundingMode.HALF_UP)
|
|
|
+ .doubleValue();
|
|
|
+ String operationNamePercentStr
|
|
|
+ = df.format(BigDecimal.valueOf(operationNamePercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
+ record.setOperationNamePercent(operationNamePercent);
|
|
|
+ record.setOperationNamePercentStr(operationNamePercentStr);
|
|
|
+ }
|
|
|
+ //术后首程未在15分钟内完成
|
|
|
+ Integer operation15MinuteNum = records
|
|
|
+ .stream()
|
|
|
+ .map(EntryStatisticsDTO::getOperation15MinuteNum)
|
|
|
+ .reduce(0, Integer::sum);
|
|
|
+ record.setOperation15MinuteNum(operation15MinuteNum);
|
|
|
+ record.setOperation15MinuteEntryId(records.get(0).getOperation15MinuteEntryId());
|
|
|
+ if (operationMRNum != null && !operationMRNum.equals(0)) {
|
|
|
+ Double operation15MinutePercent = BigDecimal.valueOf(operation15MinuteNum)
|
|
|
+ .divide(BigDecimal.valueOf(operationMRNum), 4, RoundingMode.HALF_UP)
|
|
|
+ .doubleValue();
|
|
|
+ String operation15MinutePercentStr
|
|
|
+ = df.format(BigDecimal.valueOf(operation15MinutePercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
+ record.setOperation15MinutePercent(operation15MinutePercent);
|
|
|
+ record.setOperation15MinutePercentStr(operation15MinutePercentStr);
|
|
|
+ }
|
|
|
+ //病案首页手术时间不匹配
|
|
|
Integer operationTimeNum = records
|
|
|
.stream()
|
|
|
.map(EntryStatisticsDTO::getOperationTimeNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
record.setOperationTimeNum(operationTimeNum);
|
|
|
record.setOperationTimeEntryId(records.get(0).getOperationTimeEntryId());
|
|
|
-
|
|
|
- Double operationTimePercent = BigDecimal.valueOf(operationTimeNum)
|
|
|
- .divide(BigDecimal.valueOf(operationMRNum), 4, RoundingMode.HALF_UP)
|
|
|
- .doubleValue();
|
|
|
- String operationTimePercentStr
|
|
|
- = df.format(BigDecimal.valueOf(operationTimePercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
- record.setOperationTimePercent(operationTimePercent);
|
|
|
- record.setOperationTimePercentStr(operationTimePercentStr);
|
|
|
- //危机值
|
|
|
+ if (operationMRNum != null && !operationMRNum.equals(0)) {
|
|
|
+ Double operationTimePercent = BigDecimal.valueOf(operationTimeNum)
|
|
|
+ .divide(BigDecimal.valueOf(operationMRNum), 4, RoundingMode.HALF_UP)
|
|
|
+ .doubleValue();
|
|
|
+ String operationTimePercentStr
|
|
|
+ = df.format(BigDecimal.valueOf(operationTimePercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
+ record.setOperationTimePercent(operationTimePercent);
|
|
|
+ record.setOperationTimePercentStr(operationTimePercentStr);
|
|
|
+ }
|
|
|
+ //未在6小时内书写危机值记录
|
|
|
Integer crisisNum = records
|
|
|
.stream()
|
|
|
.map(EntryStatisticsDTO::getCrisisNum)
|
|
@@ -720,14 +742,16 @@ public class ConsoleFacade {
|
|
|
.map(EntryStatisticsDTO::getCrisisMRNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
record.setCrisisMRNum(crisisMRNum);
|
|
|
- Double crisisPercent = BigDecimal.valueOf(crisisNum)
|
|
|
- .divide(BigDecimal.valueOf(crisisMRNum), 4, RoundingMode.HALF_UP)
|
|
|
- .doubleValue();
|
|
|
- String crisisPercentStr
|
|
|
- = df.format(BigDecimal.valueOf(crisisPercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
- record.setCrisisPercent(crisisPercent);
|
|
|
- record.setCrisisPercentStr(crisisPercentStr);
|
|
|
- //病人住院超过30天,阶段小节书写率
|
|
|
+ if (crisisMRNum != null && !crisisMRNum.equals(0)) {
|
|
|
+ Double crisisPercent = BigDecimal.valueOf(crisisNum)
|
|
|
+ .divide(BigDecimal.valueOf(crisisMRNum), 4, RoundingMode.HALF_UP)
|
|
|
+ .doubleValue();
|
|
|
+ String crisisPercentStr
|
|
|
+ = df.format(BigDecimal.valueOf(crisisPercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
+ record.setCrisisPercent(crisisPercent);
|
|
|
+ record.setCrisisPercentStr(crisisPercentStr);
|
|
|
+ }
|
|
|
+ //病人住院超过30天,阶段小节书写
|
|
|
Integer stageSummaryNum = records
|
|
|
.stream()
|
|
|
.map(EntryStatisticsDTO::getStageSummaryNum)
|
|
@@ -739,14 +763,15 @@ public class ConsoleFacade {
|
|
|
.map(EntryStatisticsDTO::getStageSummaryMRNum)
|
|
|
.reduce(0, Integer::sum);
|
|
|
record.setStageSummaryMRNum(stageSummaryMRNum);
|
|
|
- Double stageSummaryPercent = BigDecimal.valueOf(stageSummaryNum)
|
|
|
- .divide(BigDecimal.valueOf(stageSummaryMRNum), 4, RoundingMode.HALF_UP)
|
|
|
- .doubleValue();
|
|
|
- String stageSummaryPercentStr
|
|
|
- = df.format(BigDecimal.valueOf(stageSummaryPercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
- record.setStageSummaryPercent(stageSummaryPercent);
|
|
|
- record.setStageSummaryPercentStr(stageSummaryPercentStr);
|
|
|
-
|
|
|
+ if (stageSummaryMRNum != null && !stageSummaryMRNum.equals(0)) {
|
|
|
+ Double stageSummaryPercent = BigDecimal.valueOf(stageSummaryNum)
|
|
|
+ .divide(BigDecimal.valueOf(stageSummaryMRNum), 4, RoundingMode.HALF_UP)
|
|
|
+ .doubleValue();
|
|
|
+ String stageSummaryPercentStr
|
|
|
+ = df.format(BigDecimal.valueOf(stageSummaryPercent).multiply(BigDecimal.valueOf(100))) + "%";
|
|
|
+ record.setStageSummaryPercent(stageSummaryPercent);
|
|
|
+ record.setStageSummaryPercentStr(stageSummaryPercentStr);
|
|
|
+ }
|
|
|
return record;
|
|
|
}
|
|
|
}
|