|
@@ -9,6 +9,7 @@ import com.diagbot.aggregate.MrStatisticsAggregate;
|
|
|
import com.diagbot.aggregate.ResultStatisticsAggregate;
|
|
|
import com.diagbot.dto.*;
|
|
|
import com.diagbot.entity.*;
|
|
|
+import com.diagbot.enums.IsDeleteEnum;
|
|
|
import com.diagbot.exception.CommonErrorCode;
|
|
|
import com.diagbot.exception.CommonException;
|
|
|
import com.diagbot.service.MedManagementInfoService;
|
|
@@ -396,12 +397,12 @@ public class ConsoleFacade {
|
|
|
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
LocalDateTime sta = LocalDateTime.parse(startDate, df);
|
|
|
LocalDateTime end = LocalDateTime.parse(endDate, df);
|
|
|
- HashMap<String, Long> longHashMap = getTimeCount(list, sta, end);
|
|
|
+ /* HashMap<String, Long> longHashMap = getTimeCount(list, sta, end);
|
|
|
Long timeCount = longHashMap.get("病案管理");
|
|
|
Long codingCount = longHashMap.get("编码管理");
|
|
|
double monthlyDou = 0;
|
|
|
- double monthlyCoding = 0;
|
|
|
- try {
|
|
|
+ double monthlyCoding = 0;*/
|
|
|
+ /* try {
|
|
|
double timeMonth = timeCount / 30;
|
|
|
// 住院病案管理人员月均负担出院患者病历
|
|
|
monthlyDou = (totleCount.intValue() / timeMonth);
|
|
@@ -416,7 +417,7 @@ public class ConsoleFacade {
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
//throw new CommonException(CommonErrorCode.NOT_EXISTS, "该病历无关联的质控条目!");
|
|
|
- }
|
|
|
+ }*/
|
|
|
//入院记录24小时完成率
|
|
|
try {
|
|
|
HashMap<String,Double> finishingRate = admissionStr(filterVO);
|
|
@@ -528,7 +529,7 @@ public MedQualityControlDTO medicalRecordIndicator(FilterRecordVO filterRecordVO
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public HashMap<String, Long> getTimeCount(List<MedManagementInfo> list, LocalDateTime sta, LocalDateTime end) {
|
|
|
+ /* public HashMap<String, Long> getTimeCount(List<MedManagementInfo> list, LocalDateTime sta, LocalDateTime end) {
|
|
|
HashMap<String, Long> longHashMap = new HashMap<>();
|
|
|
long timeCount = 0;
|
|
|
long codingCount = 0;
|
|
@@ -644,7 +645,7 @@ public MedQualityControlDTO medicalRecordIndicator(FilterRecordVO filterRecordVO
|
|
|
longHashMap.put("编码管理", codingCount);
|
|
|
}
|
|
|
return longHashMap;
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -2472,6 +2473,72 @@ public MedQualityControlDTO medicalRecordIndicator(FilterRecordVO filterRecordVO
|
|
|
return behospitalInfoFacade.hmImproveMRPage(qcResultShortPageVO);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 病案管理指标(内页)
|
|
|
+ *
|
|
|
+ * @param filterVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public MedQualityControlDTO getMedManageIndex(FilterVO filterVO) {
|
|
|
+ Map<String, Object> baseIndex = behospitalInfoFacade.getBaseIndex(filterVO);
|
|
|
+ MedQualityControlDTO medQualityControlDTO = new MedQualityControlDTO();
|
|
|
+ QueryWrapper<MedManagementInfo> query = new QueryWrapper<>();
|
|
|
+ query.eq("hospital_id", filterVO.getHospitalId())
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N)
|
|
|
+ //指标1、2、3与是否归档没有直接关系 出院时间在单位时间内即可
|
|
|
+ // .eq("is_placefile", filterVO.getIsPlacefile())
|
|
|
+ .isNotNull("start_date")
|
|
|
+ .isNotNull("end_date")
|
|
|
+ .eq("start_date",filterVO.getStartDate())
|
|
|
+ .eq("end_date",filterVO.getEndDate());
|
|
|
+
|
|
|
+ List<MedManagementInfo> list = medManagementInfoService.list(query);
|
|
|
+ //单位时间同期门诊病案管理人员实际工作总月数
|
|
|
+ Double firMouth = 0d;
|
|
|
+ //单位时间同期住院病案管理人员实际工作总月数
|
|
|
+ Double secMouth = 0d;
|
|
|
+ //单位时间同期病案编码管理人员实际工作总月数
|
|
|
+ Double thrMouth = 0d;
|
|
|
+ for (MedManagementInfo medManagementInfo : list) {
|
|
|
+ if(medManagementInfo.getDepartment()==0){
|
|
|
+ firMouth += medManagementInfo.getWorkMouth();
|
|
|
+ }
|
|
|
+ if(medManagementInfo.getDepartment()==1){
|
|
|
+ secMouth += medManagementInfo.getWorkMouth();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ thrMouth = list.stream().filter(obj -> obj.getPosition() == 2).map(MedManagementInfo::getWorkMouth).reduce(Double::sum).get();
|
|
|
+ Double firRecord = 0d;
|
|
|
+ for (String str : baseIndex.keySet()) {
|
|
|
+ if(str.equals("firMouthNum")){
|
|
|
+ //指标一
|
|
|
+ if(secMouth != 0d){
|
|
|
+ medQualityControlDTO.setManagerMouthNum(Math.ceil(Double.parseDouble(baseIndex.get(str).toString())/secMouth));
|
|
|
+ }
|
|
|
+ //指标三
|
|
|
+ if(thrMouth != 0d){
|
|
|
+ medQualityControlDTO.setCoderMouthNum(Math.ceil(Double.parseDouble(baseIndex.get(str).toString())/thrMouth));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(str.equals("secMouthNum") && firMouth != 0d){
|
|
|
+ //指标二
|
|
|
+ medQualityControlDTO.setSecManagerMouthNum(Math.ceil(Double.parseDouble(baseIndex.get(str).toString())/firMouth));
|
|
|
+ }
|
|
|
+
|
|
|
+ //指标二十七 -甲级病历率
|
|
|
+
|
|
|
+ if(str.equals("forMouthNum")){
|
|
|
+ firRecord =Double.parseDouble(baseIndex.get(str).toString());
|
|
|
+ }
|
|
|
+ if(str.equals("sixMouthNum") && firRecord != 0d ){
|
|
|
+ medQualityControlDTO.setFirGradeNum(Math.ceil(Double.parseDouble(baseIndex.get(str).toString())/ firRecord));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return medQualityControlDTO;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 质控核查质控评分页(内页)
|
|
|
*
|