|
@@ -388,7 +388,7 @@ public class ConsoleFacade {
|
|
* @param filterVO
|
|
* @param filterVO
|
|
* @return 2170
|
|
* @return 2170
|
|
*/
|
|
*/
|
|
- public ArrayList<LinkedHashMap<String, String>> medicalRecordIndicator(FilterVO filterVO) {
|
|
|
|
|
|
+ public List<Map<String, String>> medicalRecordIndicator(FilterVO filterVO) {
|
|
filterFacade.filterVOSet(filterVO);
|
|
filterFacade.filterVOSet(filterVO);
|
|
MedQualityControlDTO medQualityControlDTO = new MedQualityControlDTO();
|
|
MedQualityControlDTO medQualityControlDTO = new MedQualityControlDTO();
|
|
Map<String, Long> selectOperationNumMap = behospitalInfoFacade.selectOperationNum(filterVO);
|
|
Map<String, Long> selectOperationNumMap = behospitalInfoFacade.selectOperationNum(filterVO);
|
|
@@ -413,14 +413,14 @@ public class ConsoleFacade {
|
|
Long InHospitalRecords = recordIndicatorMap.get(QualityContent.RYJLWWC_24H);
|
|
Long InHospitalRecords = recordIndicatorMap.get(QualityContent.RYJLWWC_24H);
|
|
Long OutHospitalRecords = recordIndicatorMap.get(QualityContent.CYJLWWC_24H);
|
|
Long OutHospitalRecords = recordIndicatorMap.get(QualityContent.CYJLWWC_24H);
|
|
Long recordHomePage = recordIndicatorMap.get(QualityContent.BASYWWC_24H);
|
|
Long recordHomePage = recordIndicatorMap.get(QualityContent.BASYWWC_24H);
|
|
- ArrayList<LinkedHashMap<String, String>> hashMapArrayList = new ArrayList<>();
|
|
|
|
|
|
+ List<Map<String, String>> hashMapArrayList = new ArrayList<>();
|
|
//入院记录24小时完成率
|
|
//入院记录24小时完成率
|
|
//入院记录完成人数为
|
|
//入院记录完成人数为
|
|
if (InHospitalRecords != null && startCount!=null) {
|
|
if (InHospitalRecords != null && startCount!=null) {
|
|
// medQualityControlDTO.setAdmissionNum(Double.valueOf(startCount - InHospitalRecords));
|
|
// medQualityControlDTO.setAdmissionNum(Double.valueOf(startCount - InHospitalRecords));
|
|
//入院记录完成率
|
|
//入院记录完成率
|
|
// medQualityControlDTO.setAdmissionStr(getResult(startCount - InHospitalRecords, startCount));
|
|
// medQualityControlDTO.setAdmissionStr(getResult(startCount - InHospitalRecords, startCount));
|
|
- LinkedHashMap<String, String> stringStringHashMap = new LinkedHashMap<>();
|
|
|
|
|
|
+ Map<String, String> stringStringHashMap = new LinkedHashMap<>();
|
|
stringStringHashMap.put("name","入院记录24小时内完成率");
|
|
stringStringHashMap.put("name","入院记录24小时内完成率");
|
|
stringStringHashMap.put("notCopiedStr",getResult(startCount - InHospitalRecords, startCount));
|
|
stringStringHashMap.put("notCopiedStr",getResult(startCount - InHospitalRecords, startCount));
|
|
stringStringHashMap.put("num",Double.valueOf(startCount - InHospitalRecords).toString());
|
|
stringStringHashMap.put("num",Double.valueOf(startCount - InHospitalRecords).toString());
|
|
@@ -516,21 +516,21 @@ public class ConsoleFacade {
|
|
*/
|
|
*/
|
|
Map<String, Object> baseIndex = behospitalInfoFacade.getBaseIndex(filterVO);
|
|
Map<String, Object> baseIndex = behospitalInfoFacade.getBaseIndex(filterVO);
|
|
//指标一、二、三、二十七
|
|
//指标一、二、三、二十七
|
|
- medQualityControlDTO = ManageIndexMethod(medQualityControlDTO, baseIndex, filterVO);
|
|
|
|
|
|
+ List<Map<String, String>> retLists = ManageIndexMethod(hashMapArrayList, baseIndex, filterVO);
|
|
//指标十七 医师查房记录
|
|
//指标十七 医师查房记录
|
|
- medQualityControlDTO = WardRoundMethod(medQualityControlDTO, baseIndex, triggeringRulesMap);
|
|
|
|
|
|
+ retLists = WardRoundMethod(retLists, baseIndex, triggeringRulesMap);
|
|
//指标十八 抢救记录
|
|
//指标十八 抢救记录
|
|
List<MedManageParamsDTO> medManageParams = behospitalInfoFacade.getMedManageParams(filterVO);
|
|
List<MedManageParamsDTO> medManageParams = behospitalInfoFacade.getMedManageParams(filterVO);
|
|
- medQualityControlDTO = rescueMethod(medManageParams,medQualityControlDTO,triggeringRulesMap);
|
|
|
|
|
|
+ retLists = rescueMethod(medManageParams,retLists,triggeringRulesMap);
|
|
//指标十九 出院患者病历2日归档
|
|
//指标十九 出院患者病历2日归档
|
|
- medQualityControlDTO = getfileSecAmount(filterVO,medQualityControlDTO, baseIndex);
|
|
|
|
|
|
+ retLists = getfileSecAmount(filterVO,retLists, baseIndex);
|
|
//指标十四 手术记录
|
|
//指标十四 手术记录
|
|
- medQualityControlDTO = operationMethod(medQualityControlDTO, operationFeeNum+"", triggeringRulesMap);
|
|
|
|
|
|
+ retLists = operationMethod(retLists, operationFeeNum+"", triggeringRulesMap);
|
|
//指标十六 临床用血相关记录符合率
|
|
//指标十六 临床用血相关记录符合率
|
|
filterVO.setFlagStr("1");
|
|
filterVO.setFlagStr("1");
|
|
medManageParams = behospitalInfoFacade.getMedManageParams(filterVO);
|
|
medManageParams = behospitalInfoFacade.getMedManageParams(filterVO);
|
|
- medQualityControlDTO = bloodMethod(medQualityControlDTO, medManageParams, triggeringRulesMap);
|
|
|
|
- return hashMapArrayList;
|
|
|
|
|
|
+ retLists = bloodMethod(retLists, medManageParams, triggeringRulesMap);
|
|
|
|
+ return retLists;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -2585,7 +2585,7 @@ public class ConsoleFacade {
|
|
|
|
|
|
|
|
|
|
//指标十八 抢救记录
|
|
//指标十八 抢救记录
|
|
- private MedQualityControlDTO rescueMethod(List<MedManageParamsDTO> medManageParams,MedQualityControlDTO medQualityControlDTO,Map<String, Long> triggeringRulesMap){
|
|
|
|
|
|
+ private List<Map<String, String>> rescueMethod(List<MedManageParamsDTO> medManageParams, List<Map<String, String>> retList,Map<String, Long> triggeringRulesMap){
|
|
List<MedManageParamsDTO> manageList= new ArrayList<>();
|
|
List<MedManageParamsDTO> manageList= new ArrayList<>();
|
|
for (int i = 0; i < medManageParams.size(); i++) {
|
|
for (int i = 0; i < medManageParams.size(); i++) {
|
|
List<String> rescueDrugList = QualityContent.getRescue_Drug_List();
|
|
List<String> rescueDrugList = QualityContent.getRescue_Drug_List();
|
|
@@ -2601,36 +2601,47 @@ public class ConsoleFacade {
|
|
double count = manageList.stream().map(MedManageParamsDTO::getBehospitalCode).distinct().count();
|
|
double count = manageList.stream().map(MedManageParamsDTO::getBehospitalCode).distinct().count();
|
|
if(StringUtils.isNotEmpty(String.valueOf(count)) && count != 0d){
|
|
if(StringUtils.isNotEmpty(String.valueOf(count)) && count != 0d){
|
|
double rescueDo = currencyCal(count, triggeringRulesMap.get("rescueNum"));
|
|
double rescueDo = currencyCal(count, triggeringRulesMap.get("rescueNum"));
|
|
- medQualityControlDTO.setRescueNum(rescueDo);
|
|
|
|
- medQualityControlDTO.setRescueStr(rescueDo+"%");
|
|
|
|
|
|
+ LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
|
|
|
|
+ String num = String.valueOf(rescueDo);
|
|
|
|
+ firMap.put("name"," 患者抢救记录及时完成率");
|
|
|
|
+ firMap.put("notCopiedStr",num+"%");
|
|
|
|
+ firMap.put("num",num);
|
|
|
|
+ retList.add(firMap);
|
|
};
|
|
};
|
|
- return medQualityControlDTO;
|
|
|
|
|
|
+ return retList;
|
|
};
|
|
};
|
|
|
|
|
|
//指标十七 医师查房记录
|
|
//指标十七 医师查房记录
|
|
- private MedQualityControlDTO WardRoundMethod(MedQualityControlDTO medQualityControlDTO, Map<String, Object> baseIndex, Map<String, Long> triggeringRulesMap){
|
|
|
|
|
|
+ private List<Map<String, String>> WardRoundMethod( List<Map<String, String>> retList, Map<String, Object> baseIndex, Map<String, Long> triggeringRulesMap){
|
|
if( triggeringRulesMap.containsKey("WardRoundNum") && baseIndex.containsKey("forWorkNum") && !baseIndex.get("forWorkNum").toString().equals("0")){
|
|
if( triggeringRulesMap.containsKey("WardRoundNum") && baseIndex.containsKey("forWorkNum") && !baseIndex.get("forWorkNum").toString().equals("0")){
|
|
double wardRoundDo = currencyCal(baseIndex.get("forWorkNum"), triggeringRulesMap.get("WardRoundNum"));
|
|
double wardRoundDo = currencyCal(baseIndex.get("forWorkNum"), triggeringRulesMap.get("WardRoundNum"));
|
|
- medQualityControlDTO.setWardRoundNum(wardRoundDo);
|
|
|
|
- medQualityControlDTO.setWardRoundStr(wardRoundDo+"%");
|
|
|
|
-
|
|
|
|
|
|
+ LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
|
|
|
|
+ String num = String.valueOf(wardRoundDo);
|
|
|
|
+ firMap.put("name","医师查房记录完成率");
|
|
|
|
+ firMap.put("notCopiedStr",num+"%");
|
|
|
|
+ firMap.put("num",num);
|
|
|
|
+ retList.add(firMap);
|
|
};
|
|
};
|
|
- return medQualityControlDTO;
|
|
|
|
|
|
+ return retList;
|
|
}
|
|
}
|
|
|
|
|
|
//指标十四 手术记录
|
|
//指标十四 手术记录
|
|
- private MedQualityControlDTO operationMethod(MedQualityControlDTO medQualityControlDTO, String operationFeeNum, Map<String, Long> triggeringRulesMap){
|
|
|
|
|
|
+ private List<Map<String, String>> operationMethod( List<Map<String, String>>retList, String operationFeeNum, Map<String, Long> triggeringRulesMap){
|
|
if( triggeringRulesMap.containsKey("operationRecordNum") && StringUtils.isNotEmpty(operationFeeNum) && ! operationFeeNum.equals("0")){
|
|
if( triggeringRulesMap.containsKey("operationRecordNum") && StringUtils.isNotEmpty(operationFeeNum) && ! operationFeeNum.equals("0")){
|
|
double operationRecordDo = currencyCal(operationFeeNum, triggeringRulesMap.get("operationRecordNum"));
|
|
double operationRecordDo = currencyCal(operationFeeNum, triggeringRulesMap.get("operationRecordNum"));
|
|
- medQualityControlDTO.setOperationRecordNum(operationRecordDo);
|
|
|
|
- medQualityControlDTO.setOperationRecordStr(operationRecordDo+"%");
|
|
|
|
|
|
+ LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
|
|
|
|
+ String num = String.valueOf(operationRecordDo);
|
|
|
|
+ firMap.put("name"," 手术相关记录完成率");
|
|
|
|
+ firMap.put("notCopiedStr",num+"%");
|
|
|
|
+ firMap.put("num",num);
|
|
|
|
+ retList.add(firMap);
|
|
|
|
|
|
};
|
|
};
|
|
- return medQualityControlDTO;
|
|
|
|
|
|
+ return retList;
|
|
}
|
|
}
|
|
|
|
|
|
//指标十六 临床用血相关记录符合率
|
|
//指标十六 临床用血相关记录符合率
|
|
- private MedQualityControlDTO bloodMethod(MedQualityControlDTO medQualityControlDTO, List<MedManageParamsDTO> medManageParams, Map<String, Long> triggeringRulesMap){
|
|
|
|
|
|
+ private List<Map<String, String>> bloodMethod( List<Map<String, String>>retList, List<MedManageParamsDTO> medManageParams, Map<String, Long> triggeringRulesMap){
|
|
List<MedManageParamsDTO> manageList= new ArrayList<>();
|
|
List<MedManageParamsDTO> manageList= new ArrayList<>();
|
|
for (MedManageParamsDTO medManageParam : medManageParams) {
|
|
for (MedManageParamsDTO medManageParam : medManageParams) {
|
|
List<String> blood_list = QualityContent.getBlood_List();
|
|
List<String> blood_list = QualityContent.getBlood_List();
|
|
@@ -2646,11 +2657,15 @@ public class ConsoleFacade {
|
|
if(StringUtils.isNotEmpty(String.valueOf(count)) && count != 0d){
|
|
if(StringUtils.isNotEmpty(String.valueOf(count)) && count != 0d){
|
|
//指标十七
|
|
//指标十七
|
|
double rescueDo = currencyCal(count, triggeringRulesMap.get("bloodNum"));
|
|
double rescueDo = currencyCal(count, triggeringRulesMap.get("bloodNum"));
|
|
- medQualityControlDTO.setBloodNum(rescueDo);
|
|
|
|
- medQualityControlDTO.setBloodStr(rescueDo+"%");
|
|
|
|
- };
|
|
|
|
|
|
+ LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
|
|
|
|
+ String num = String.valueOf(rescueDo);
|
|
|
|
+ firMap.put("name","临床用血相关记录符合率");
|
|
|
|
+ firMap.put("notCopiedStr",num+"%");
|
|
|
|
+ firMap.put("num",num);
|
|
|
|
+ retList.add(firMap);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- return medQualityControlDTO;
|
|
|
|
|
|
+ return retList;
|
|
}
|
|
}
|
|
|
|
|
|
private double currencyCal(Object objFir,Object objSec){
|
|
private double currencyCal(Object objFir,Object objSec){
|
|
@@ -2662,7 +2677,7 @@ public class ConsoleFacade {
|
|
};
|
|
};
|
|
|
|
|
|
//指标十九 出院患者病历2日归档
|
|
//指标十九 出院患者病历2日归档
|
|
- private MedQualityControlDTO getfileSecAmount(FilterVO filterVO,MedQualityControlDTO medQualityControlDTO, Map<String, Object> baseIndex){
|
|
|
|
|
|
+ private List<Map<String, String>> getfileSecAmount(FilterVO filterVO, List<Map<String, String>>retList, Map<String, Object> baseIndex){
|
|
QueryWrapper<BehospitalInfo> query = new QueryWrapper<>();
|
|
QueryWrapper<BehospitalInfo> query = new QueryWrapper<>();
|
|
DecimalFormat df = new DecimalFormat("#0.00");
|
|
DecimalFormat df = new DecimalFormat("#0.00");
|
|
query.eq("hospital_id", filterVO.getHospitalId())
|
|
query.eq("hospital_id", filterVO.getHospitalId())
|
|
@@ -2685,11 +2700,14 @@ public class ConsoleFacade {
|
|
if(StringUtils.isNotEmpty( baseIndex.get("firWorkNum").toString()) && ! baseIndex.get("firWorkNum").toString().equals("0") ){
|
|
if(StringUtils.isNotEmpty( baseIndex.get("firWorkNum").toString()) && ! baseIndex.get("firWorkNum").toString().equals("0") ){
|
|
double retNum =count* 100/Double.parseDouble(baseIndex.get("firWorkNum").toString());
|
|
double retNum =count* 100/Double.parseDouble(baseIndex.get("firWorkNum").toString());
|
|
double firGradeStr = Double.parseDouble(df.format(retNum));
|
|
double firGradeStr = Double.parseDouble(df.format(retNum));
|
|
- medQualityControlDTO.setLeaveSecFileStr(firGradeStr+"%");
|
|
|
|
|
|
+ LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
|
|
|
|
+ String num = String.valueOf(firGradeStr);
|
|
|
|
+ firMap.put("name","出院患者病历2日归档率");
|
|
|
|
+ firMap.put("notCopiedStr",num+"%");
|
|
|
|
+ firMap.put("num",num);
|
|
|
|
+ retList.add(firMap);
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
- return medQualityControlDTO;
|
|
|
|
|
|
+ return retList;
|
|
};
|
|
};
|
|
|
|
|
|
private Boolean getTrueSecFile(Date date1,Date date2, List<String> holidaysTimeList){
|
|
private Boolean getTrueSecFile(Date date1,Date date2, List<String> holidaysTimeList){
|
|
@@ -2728,7 +2746,7 @@ public class ConsoleFacade {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- private MedQualityControlDTO ManageIndexMethod(MedQualityControlDTO medQualityControlDTO, Map<String, Object> baseIndex,FilterVO filterVO){
|
|
|
|
|
|
+ private List<Map<String, String>> ManageIndexMethod(List<Map<String, String>> retList, Map<String, Object> baseIndex,FilterVO filterVO){
|
|
FilterVO timeVo = new FilterVO();
|
|
FilterVO timeVo = new FilterVO();
|
|
BeanUtils.copyProperties(filterVO,timeVo);
|
|
BeanUtils.copyProperties(filterVO,timeVo);
|
|
QueryWrapper<MedManagementInfo> query = new QueryWrapper<>();
|
|
QueryWrapper<MedManagementInfo> query = new QueryWrapper<>();
|
|
@@ -2766,16 +2784,28 @@ public class ConsoleFacade {
|
|
|
|
|
|
//指标一
|
|
//指标一
|
|
if(secMouth != 0d && secMouth != null && StringUtils.isNotEmpty( baseIndex.get("firWorkNum").toString())){
|
|
if(secMouth != 0d && secMouth != null && StringUtils.isNotEmpty( baseIndex.get("firWorkNum").toString())){
|
|
- medQualityControlDTO.setManagerBeNum(Math.ceil(Double.parseDouble(baseIndex.get("firWorkNum").toString())/secMouth));
|
|
|
|
|
|
+ LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
|
|
|
|
+ String num = String.valueOf(Math.ceil(Double.parseDouble(baseIndex.get("firWorkNum").toString()) / secMouth));
|
|
|
|
+ firMap.put("name","住院病案管理人员月均负担出院患者病历数");
|
|
|
|
+ firMap.put("num",num);
|
|
|
|
+ retList.add(firMap);
|
|
}
|
|
}
|
|
//指标三
|
|
//指标三
|
|
if(thrMouth != 0d && thrMouth != null && StringUtils.isNotEmpty( baseIndex.get("firWorkNum").toString())){
|
|
if(thrMouth != 0d && thrMouth != null && StringUtils.isNotEmpty( baseIndex.get("firWorkNum").toString())){
|
|
- medQualityControlDTO.setCoderBeNum(Math.ceil(Double.parseDouble(baseIndex.get("firWorkNum").toString())/thrMouth));
|
|
|
|
|
|
+ LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
|
|
|
|
+ String num = String.valueOf(Math.ceil(Double.parseDouble(baseIndex.get("firWorkNum").toString())/thrMouth));
|
|
|
|
+ firMap.put("name","病案编码人员月均负担出院患者病历数");
|
|
|
|
+ firMap.put("num",num);
|
|
|
|
+ retList.add(firMap);
|
|
}
|
|
}
|
|
|
|
|
|
if(firMouth != 0d && firMouth != null && StringUtils.isNotEmpty( baseIndex.get("secWorkNum").toString())){
|
|
if(firMouth != 0d && firMouth != null && StringUtils.isNotEmpty( baseIndex.get("secWorkNum").toString())){
|
|
//指标二
|
|
//指标二
|
|
- medQualityControlDTO.setSecManagerBeNum(Math.ceil(Double.parseDouble(baseIndex.get("secWorkNum").toString())/firMouth));
|
|
|
|
|
|
+ LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
|
|
|
|
+ String num = String.valueOf(Math.ceil(Double.parseDouble(baseIndex.get("secWorkNum").toString())/firMouth));
|
|
|
|
+ firMap.put("name","门诊病案管理人员月均负担门诊患者病历数");
|
|
|
|
+ firMap.put("num",num);
|
|
|
|
+ retList.add(firMap);
|
|
}
|
|
}
|
|
|
|
|
|
//指标二十七 -甲级病历率
|
|
//指标二十七 -甲级病历率
|
|
@@ -2785,10 +2815,14 @@ public class ConsoleFacade {
|
|
if( firRecord != 0d && StringUtils.isNotEmpty( baseIndex.get("sixWorkNum").toString()) ){
|
|
if( firRecord != 0d && StringUtils.isNotEmpty( baseIndex.get("sixWorkNum").toString()) ){
|
|
double retNum = Double.parseDouble(baseIndex.get("sixWorkNum").toString()) * 100 / firRecord;
|
|
double retNum = Double.parseDouble(baseIndex.get("sixWorkNum").toString()) * 100 / firRecord;
|
|
double firGradeStr = Double.parseDouble(df.format(retNum));
|
|
double firGradeStr = Double.parseDouble(df.format(retNum));
|
|
- medQualityControlDTO.setFirGradeStr(firGradeStr+"%");
|
|
|
|
|
|
+ LinkedHashMap<String, String> firMap = new LinkedHashMap<>();
|
|
|
|
+ String num = String.valueOf(Math.ceil(firGradeStr));
|
|
|
|
+ firMap.put("name","甲级病历率");
|
|
|
|
+ firMap.put("notCopiedStr",num+"%");
|
|
|
|
+ firMap.put("num",num);
|
|
|
|
+ retList.add(firMap);
|
|
}
|
|
}
|
|
-
|
|
|
|
- return medQualityControlDTO;
|
|
|
|
|
|
+ return retList;
|
|
};
|
|
};
|
|
private void timeTrans(FilterVO filterVO){
|
|
private void timeTrans(FilterVO filterVO){
|
|
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
|
|
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
|