|
@@ -453,8 +453,25 @@ public class ConsoleFacade {
|
|
|
medQualityControlDTO.setCTExaminationConform(getResult(CTNum - ct,CTNum));
|
|
|
//MR完成率
|
|
|
medQualityControlDTO.setMRIExaminationConform(getResult(MRNum - mr,MRNum));
|
|
|
-
|
|
|
-
|
|
|
+ /**
|
|
|
+ * =================================标示线========================================
|
|
|
+ */
|
|
|
+ Map<String, Object> baseIndex = behospitalInfoFacade.getBaseIndex(filterVO);
|
|
|
+ //指标一、二、三、二十七
|
|
|
+ medQualityControlDTO = ManageIndexMethod(medQualityControlDTO, baseIndex, filterVO);
|
|
|
+ //指标十七 医师查房记录
|
|
|
+ medQualityControlDTO = WardRoundMethod(medQualityControlDTO, baseIndex, triggeringRulesMap);
|
|
|
+ //指标十八 抢救记录
|
|
|
+ List<MedManageParamsDTO> medManageParams = behospitalInfoFacade.getMedManageParams(filterVO);
|
|
|
+ medQualityControlDTO = rescueMethod(medManageParams,medQualityControlDTO,triggeringRulesMap);
|
|
|
+ //指标十九 出院患者病历2日归档
|
|
|
+ medQualityControlDTO = getfileSecAmount(filterVO,medQualityControlDTO, baseIndex);
|
|
|
+ //指标十四 手术记录
|
|
|
+ medQualityControlDTO = operationMethod(medQualityControlDTO, operationFeeNum+"", triggeringRulesMap);
|
|
|
+ //指标十六 临床用血相关记录符合率
|
|
|
+ filterVO.setFlagStr("1");
|
|
|
+ medManageParams = behospitalInfoFacade.getMedManageParams(filterVO);
|
|
|
+ medQualityControlDTO = bloodMethod(medQualityControlDTO, medManageParams, triggeringRulesMap);
|
|
|
return medQualityControlDTO;
|
|
|
}
|
|
|
|
|
@@ -2451,46 +2468,15 @@ public class ConsoleFacade {
|
|
|
return behospitalInfoFacade.hmImproveMRPage(qcResultShortPageVO);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 病案管理指标(内页)
|
|
|
- * @param filterVO
|
|
|
- * @return
|
|
|
- */
|
|
|
- public MedQualityControlDTO getMedManageIndex(FilterVO filterVO) {
|
|
|
- filterFacade.filterVOSet(filterVO);
|
|
|
- MedQualityControlDTO medQualityControlDTO = new MedQualityControlDTO();
|
|
|
- Map<String, Object> baseIndex = behospitalInfoFacade.getBaseIndex(filterVO);
|
|
|
- //指标一、二、三、二十七
|
|
|
- medQualityControlDTO = ManageIndexMethod(medQualityControlDTO, baseIndex, filterVO);
|
|
|
- filterVO.setFlagStr("0");
|
|
|
- Map<String, Object> entryCountMap = behospitalInfoFacade.getCountByEntry(filterVO);
|
|
|
- //指标十七
|
|
|
- medQualityControlDTO = ruleIndexMethod(filterVO,medQualityControlDTO, baseIndex, entryCountMap);
|
|
|
- //指标十八
|
|
|
- filterVO.setFlagStr("1");
|
|
|
- List<MedManageParamsDTO> medManageParams = behospitalInfoFacade.getMedManageParams(filterVO);
|
|
|
- medQualityControlDTO = rescueMethod(medManageParams,medQualityControlDTO,entryCountMap);
|
|
|
-
|
|
|
- //指标十九
|
|
|
- medQualityControlDTO = getfileSecAmount(filterVO,medQualityControlDTO, baseIndex);
|
|
|
- //指标十四
|
|
|
- filterVO.setFlagStr("2");
|
|
|
- entryCountMap = behospitalInfoFacade.getCountByEntry(filterVO);
|
|
|
- medQualityControlDTO = ruleIndexMethod(filterVO,medQualityControlDTO, baseIndex, entryCountMap);
|
|
|
- //指标十六
|
|
|
- filterVO.setFlagStr("3");
|
|
|
- entryCountMap = behospitalInfoFacade.getCountByEntry(filterVO);
|
|
|
- medQualityControlDTO = ruleIndexMethod(filterVO,medQualityControlDTO, baseIndex, entryCountMap);
|
|
|
-
|
|
|
- return medQualityControlDTO;
|
|
|
- }
|
|
|
|
|
|
- private MedQualityControlDTO rescueMethod(List<MedManageParamsDTO> medManageParams,MedQualityControlDTO medQualityControlDTO,Map<String, Object> entryCountMap){
|
|
|
+ //指标十八 抢救记录
|
|
|
+ private MedQualityControlDTO rescueMethod(List<MedManageParamsDTO> medManageParams,MedQualityControlDTO medQualityControlDTO,Map<String, Long> triggeringRulesMap){
|
|
|
List<MedManageParamsDTO> manageList= new ArrayList<>();
|
|
|
for (int i = 0; i < medManageParams.size(); i++) {
|
|
|
List<String> rescueDrugList = QualityContent.getRescue_Drug_List();
|
|
|
for (String str : rescueDrugList) {
|
|
|
- if(medManageParams.get(i).getDaItemName().contains(str)){
|
|
|
+ String daItemName = medManageParams.get(i).getDaItemName();
|
|
|
+ if(StringUtils.isNotEmpty(daItemName) && daItemName.contains(str)){
|
|
|
manageList.add(medManageParams.get(i));
|
|
|
}
|
|
|
}
|
|
@@ -2498,24 +2484,18 @@ public class ConsoleFacade {
|
|
|
|
|
|
//接受抢救的质控病历总数
|
|
|
double count = manageList.stream().map(MedManageParamsDTO::getBehospitalCode).distinct().count();
|
|
|
- String wardRoundAmountStr = entryCountMap.get("WardRoundAmount").toString();
|
|
|
- if(entryCountMap.containsKey("WardRoundAmount") && StringUtils.isNotEmpty(wardRoundAmountStr)){
|
|
|
- //指标十七
|
|
|
- DecimalFormat df = new DecimalFormat("#0.00");
|
|
|
- double WardRoundAmount = Double.parseDouble(wardRoundAmountStr);
|
|
|
- double retData = 0d;
|
|
|
- if(count!=0d){
|
|
|
- retData = Double.parseDouble(df.format(WardRoundAmount * 100 / count));
|
|
|
- }
|
|
|
- medQualityControlDTO.setWardRoundNum(retData);
|
|
|
- medQualityControlDTO.setWardRoundStr(retData+"%");
|
|
|
+ if(StringUtils.isNotEmpty(String.valueOf(count)) && count != 0d){
|
|
|
+ double rescueDo = currencyCal(count, triggeringRulesMap.get("rescueNum"));
|
|
|
+ medQualityControlDTO.setRescueNum(rescueDo);
|
|
|
+ medQualityControlDTO.setRescueStr(rescueDo+"%");
|
|
|
};
|
|
|
return medQualityControlDTO;
|
|
|
};
|
|
|
- private MedQualityControlDTO ruleIndexMethod(FilterVO filterVO,MedQualityControlDTO medQualityControlDTO, Map<String, Object> baseIndex, Map<String, Object> entryCountMap){
|
|
|
- if(filterVO.getFlagStr().equals("0") && entryCountMap.containsKey("WardRoundAmount") && baseIndex.containsKey("thrWorkNum") && ! entryCountMap.get("WardRoundAmount").toString().equals("0")){
|
|
|
- //指标十七
|
|
|
- double wardRoundDo = currencyCal(baseIndex.get("thrWorkNum"), entryCountMap.get("WardRoundAmount"));
|
|
|
+
|
|
|
+ //指标十七 医师查房记录
|
|
|
+ private MedQualityControlDTO WardRoundMethod(MedQualityControlDTO medQualityControlDTO, Map<String, Object> baseIndex, Map<String, Long> triggeringRulesMap){
|
|
|
+ if( triggeringRulesMap.containsKey("WardRoundNum") && baseIndex.containsKey("forWorkNum") && !baseIndex.get("forWorkNum").toString().equals("0")){
|
|
|
+ double wardRoundDo = currencyCal(baseIndex.get("forWorkNum"), triggeringRulesMap.get("WardRoundNum"));
|
|
|
medQualityControlDTO.setWardRoundNum(wardRoundDo);
|
|
|
medQualityControlDTO.setWardRoundStr(wardRoundDo+"%");
|
|
|
|
|
@@ -2523,6 +2503,41 @@ public class ConsoleFacade {
|
|
|
return medQualityControlDTO;
|
|
|
}
|
|
|
|
|
|
+ //指标十四 手术记录
|
|
|
+ private MedQualityControlDTO operationMethod(MedQualityControlDTO medQualityControlDTO, String operationFeeNum, Map<String, Long> triggeringRulesMap){
|
|
|
+ if( triggeringRulesMap.containsKey("operationRecordNum") && StringUtils.isNotEmpty(operationFeeNum) && ! operationFeeNum.equals("0")){
|
|
|
+ double operationRecordDo = currencyCal(operationFeeNum, triggeringRulesMap.get("operationRecordNum"));
|
|
|
+ medQualityControlDTO.setOperationNum(operationRecordDo);
|
|
|
+ medQualityControlDTO.setOperationStr(operationRecordDo+"%");
|
|
|
+
|
|
|
+ };
|
|
|
+ return medQualityControlDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ //指标十六 临床用血相关记录符合率
|
|
|
+ private MedQualityControlDTO bloodMethod(MedQualityControlDTO medQualityControlDTO, List<MedManageParamsDTO> medManageParams, Map<String, Long> triggeringRulesMap){
|
|
|
+ List<MedManageParamsDTO> manageList= new ArrayList<>();
|
|
|
+ for (MedManageParamsDTO medManageParam : medManageParams) {
|
|
|
+ List<String> blood_list = QualityContent.getBlood_List();
|
|
|
+ for (String str : blood_list) {
|
|
|
+ String daItemName = medManageParam.getDaItemName();
|
|
|
+ String repName = medManageParam.getRepName();
|
|
|
+ if(StringUtils.isNotEmpty(daItemName) && daItemName.contains(str) && StringUtils.isNotEmpty(repName) && repName.contains(str)){
|
|
|
+ manageList.add(medManageParam);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //临床用血的质控病历总数
|
|
|
+ double count = manageList.stream().map(MedManageParamsDTO::getBehospitalCode).distinct().count();
|
|
|
+ if(StringUtils.isNotEmpty(String.valueOf(count)) && count != 0d){
|
|
|
+ //指标十七
|
|
|
+ double rescueDo = currencyCal(count, triggeringRulesMap.get("bloodNum"));
|
|
|
+ medQualityControlDTO.setBloodNum(rescueDo);
|
|
|
+ medQualityControlDTO.setBloodStr(rescueDo+"%");
|
|
|
+ };
|
|
|
+ }
|
|
|
+ return medQualityControlDTO;
|
|
|
+ }
|
|
|
+
|
|
|
private double currencyCal(Object objFir,Object objSec){
|
|
|
DecimalFormat df = new DecimalFormat("#0.00");
|
|
|
double firDouble = Double.parseDouble(objFir.toString()) - Double.parseDouble(objSec.toString());
|
|
@@ -2531,6 +2546,7 @@ public class ConsoleFacade {
|
|
|
return retData;
|
|
|
};
|
|
|
|
|
|
+ //指标十九 出院患者病历2日归档
|
|
|
private MedQualityControlDTO getfileSecAmount(FilterVO filterVO,MedQualityControlDTO medQualityControlDTO, Map<String, Object> baseIndex){
|
|
|
QueryWrapper<BehospitalInfo> query = new QueryWrapper<>();
|
|
|
DecimalFormat df = new DecimalFormat("#0.00");
|