|
@@ -410,11 +410,15 @@ public class ConsoleFacade {
|
|
|
Long OutHospitalRecords = triggeringRulesMap.get(QualityContent.CYJLWWC_24H);
|
|
|
Long recordHomePage = triggeringRulesMap.get(QualityContent.BASYWWC_24H);
|
|
|
//病理手术
|
|
|
- Long antibiosisNum = triggeringRulesMap.get("antibiosisNum");
|
|
|
+ Long operationPathologyFee = triggeringRulesMap.get("operationPathologyFee");
|
|
|
//CT
|
|
|
Long ct = triggeringRulesMap.get("CT");
|
|
|
//MR
|
|
|
Long mr = triggeringRulesMap.get("MR");
|
|
|
+ //抗菌药物
|
|
|
+ Long antibiosis = 0L;
|
|
|
+ //恶性肿瘤化学治疗
|
|
|
+ Long chemotherapyMalignantTumors = 0L;
|
|
|
if(indexName!=null) {
|
|
|
if(QualityContent.NO_MEDICAL_ADVICE.contains(indexName)){
|
|
|
//入院记录24小时完成率
|
|
@@ -428,7 +432,6 @@ public class ConsoleFacade {
|
|
|
hashMapArrayList.add(stringStringHashMap);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
//出院记录24小时完成率
|
|
|
//出院记录完成人数为
|
|
|
if(indexName.equals(QualityContent.CYJL_24H_WCL)||indexName.equals(QualityContent.QB)) {
|
|
@@ -470,10 +473,16 @@ public class ConsoleFacade {
|
|
|
Long operationPathologyFeeNum = selectOperationNumMap.get("operationPathologyFee");
|
|
|
Long operationPathology = adviceNum.get("operationPathology");
|
|
|
operationPathologyFeeNum = operationPathologyFeeNum + operationPathology;
|
|
|
+ //抗菌药物人数
|
|
|
+ Long antibiosisFeeNum = selectOperationNumMap.get("antibiosisFee");
|
|
|
+ Long antibiosisNum = adviceNum.get("antibiosis");
|
|
|
+ antibiosisFeeNum = antibiosisFeeNum + antibiosisNum;
|
|
|
+ //恶性肿瘤化学治疗人数
|
|
|
+ Long chemotherapyMalignantTumorsNum = adviceNum.get("chemotherapyMalignantTumors");
|
|
|
//手术记录完成率
|
|
|
//手术完成人数为
|
|
|
if (indexName.equals(QualityContent.SSJL_24H_WCL)||indexName.equals(QualityContent.QB)) {
|
|
|
- if (operationCount != null && operationFeeNum != null) {
|
|
|
+ if (operationFeeNum != null && operationCount != null) {
|
|
|
LinkedHashMap<String, String> stringStringHashMap = new LinkedHashMap<>();
|
|
|
stringStringHashMap.put("name", QualityContent.SSJL_24H_WCL);
|
|
|
stringStringHashMap.put("notCopiedStr", getResult(operationFeeNum - operationCount, operationFeeNum));
|
|
@@ -502,32 +511,39 @@ public class ConsoleFacade {
|
|
|
}
|
|
|
}
|
|
|
if (indexName.equals(QualityContent.BL_JCJL_FHL)||indexName.equals(QualityContent.QB)) {
|
|
|
- if (operationPathologyFeeNum != null && antibiosisNum != null) {
|
|
|
+ if (operationPathologyFeeNum != null && operationPathologyFee != null) {
|
|
|
//病理完成率为
|
|
|
Map<String, String> stringStringHashMap = new LinkedHashMap<>();
|
|
|
stringStringHashMap.put("name", QualityContent.BL_JCJL_FHL);
|
|
|
- stringStringHashMap.put("notCopiedStr", getResult(operationPathologyFeeNum - antibiosisNum, operationPathologyFeeNum));
|
|
|
+ stringStringHashMap.put("notCopiedStr", getResult(operationPathologyFeeNum - operationPathologyFee, operationPathologyFeeNum));
|
|
|
stringStringHashMap.put("num", Double.valueOf(operationPathologyFeeNum).toString());
|
|
|
hashMapArrayList.add(stringStringHashMap);
|
|
|
}
|
|
|
}
|
|
|
+ if (indexName.equals(QualityContent.KJYW_SY_FHL)||indexName.equals(QualityContent.QB)) {
|
|
|
+ if (antibiosisFeeNum != null && antibiosis != null) {
|
|
|
+ //抗菌
|
|
|
+ Map<String, String> stringStringHashMap = new LinkedHashMap<>();
|
|
|
+ stringStringHashMap.put("name", QualityContent.KJYW_SY_FHL);
|
|
|
+ stringStringHashMap.put("notCopiedStr", getResult(antibiosisFeeNum - antibiosis, antibiosisFeeNum));
|
|
|
+ stringStringHashMap.put("num", Double.valueOf(antibiosisFeeNum).toString());
|
|
|
+ hashMapArrayList.add(stringStringHashMap);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (indexName.equals(QualityContent.EXZL_HXZL_FHL)||indexName.equals(QualityContent.QB)) {
|
|
|
+ if (chemotherapyMalignantTumorsNum != null && chemotherapyMalignantTumors != null) {
|
|
|
+ //恶性肿瘤化学治疗
|
|
|
+ Map<String, String> stringStringHashMap = new LinkedHashMap<>();
|
|
|
+ stringStringHashMap.put("name", QualityContent.EXZL_HXZL_FHL);
|
|
|
+ stringStringHashMap.put("notCopiedStr", getResult(chemotherapyMalignantTumorsNum - chemotherapyMalignantTumors, chemotherapyMalignantTumorsNum));
|
|
|
+ stringStringHashMap.put("num", Double.valueOf(chemotherapyMalignantTumorsNum).toString());
|
|
|
+ hashMapArrayList.add(stringStringHashMap);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- //抗菌人数
|
|
|
- // Long antibiosisFeeNum = selectOperationNumMap.get("antibiosisFee");
|
|
|
- // Integer antibiosis = Integer.valueOf(getAntibiosisNum(filterVO));
|
|
|
- // antibiosisFeeNum = antibiosisFeeNum + antibiosis;
|
|
|
-
|
|
|
-
|
|
|
//细菌培养
|
|
|
Long bacterialCulture = triggeringRulesMap.get("bacterialCulture");
|
|
|
-
|
|
|
- //抗菌完成率
|
|
|
- // medQualityControlDTO.setAdmissionStr(getResult(antibiosisFeeNum-0,antibiosisFeeNum));
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* =================================标示线========================================
|
|
|
*/
|
|
@@ -672,13 +688,19 @@ public class ConsoleFacade {
|
|
|
*/
|
|
|
public Map<String,Long> getAdviceNum(FilterVO filterVO,List<MedManageParamsDTO> doctorAdviceMedManageParamsList) {
|
|
|
CopyOnWriteArrayList<MedManageParamsDTO> doctorAdviceMedManageParams = new CopyOnWriteArrayList<>(doctorAdviceMedManageParamsList);
|
|
|
+ String indexName = filterVO.getIndexName();
|
|
|
Map map = new HashMap<String,Integer>();
|
|
|
List<String> CTBehospitalCode = new CopyOnWriteArrayList<>();
|
|
|
List<String> operationPathologyBehospitalCode = new CopyOnWriteArrayList<>();
|
|
|
List<String> MRBehospitalCode = new CopyOnWriteArrayList<>();
|
|
|
List<String> operationBehospitalCode = new CopyOnWriteArrayList<>();
|
|
|
List<String> pathologyBehospitalCode = new CopyOnWriteArrayList<>();
|
|
|
+ List<String> antibiosisBehospitalCode = new CopyOnWriteArrayList<>();
|
|
|
+ List<String> chemotherapyMalignantTumorsBehospitalCode = new CopyOnWriteArrayList<>();
|
|
|
+ //无首页code
|
|
|
List<String> behospitalCodeList = adviceVerify(filterVO);
|
|
|
+ //首页为肿瘤code
|
|
|
+ List<String> malignancyCodeList = behospitalInfoFacade.malignancy(filterVO);
|
|
|
ForkJoinPool myPool = new ForkJoinPool(4);
|
|
|
try {
|
|
|
myPool.submit(() ->
|
|
@@ -688,57 +710,104 @@ public class ConsoleFacade {
|
|
|
String doctorAdviceType = adviceMedManageParam.getDoctorAdviceType();
|
|
|
//得到与手术相关
|
|
|
if(StringUtil.isNotEmpty(daItemName)) {
|
|
|
- //当code存在于无首页code集合中
|
|
|
- if (behospitalCodeList.contains(behospitalCode)) {
|
|
|
- //code也不存在于以保存的code集合
|
|
|
- if(!operationBehospitalCode.contains(behospitalCode)){
|
|
|
- String[][] operationList = QualityContent.OPERATION_LIST;
|
|
|
- Boolean stair = stairCondition(daItemName, operationList);
|
|
|
- if(stair) {
|
|
|
- String[][] operationArg = QualityContent.OPERATION_ARG;
|
|
|
- Boolean levelCondition = secondLevelCondition(daItemName, operationArg);
|
|
|
- if (levelCondition) {
|
|
|
- operationBehospitalCode.add(behospitalCode);
|
|
|
+ if(QualityContent.NORecord_NEED_MEDICAL_ADVICE.contains(indexName)) {
|
|
|
+ //当code存在于无首页code集合中
|
|
|
+ if (behospitalCodeList.contains(behospitalCode)) {
|
|
|
+ //code也不存在于以保存的code集合
|
|
|
+ //手术
|
|
|
+ if(indexName.equals(QualityContent.SSJL_24H_WCL)||indexName.equals(QualityContent.BL_JCJL_FHL)||indexName.equals(QualityContent.QB)){
|
|
|
+ if (!operationBehospitalCode.contains(behospitalCode)) {
|
|
|
+ String[][] operationList = QualityContent.OPERATION_LIST;
|
|
|
+ Boolean stair = stairCondition(daItemName, operationList);
|
|
|
+ if (stair) {
|
|
|
+ String[][] operationArg = QualityContent.OPERATION_ARG;
|
|
|
+ Boolean levelCondition = secondLevelCondition(daItemName, operationArg);
|
|
|
+ if (levelCondition) {
|
|
|
+ operationBehospitalCode.add(behospitalCode);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
- if(!pathologyBehospitalCode.contains(behospitalCode)){
|
|
|
- Boolean condition = stairCondition(daItemName, QualityContent.BL_LIST);
|
|
|
- if (condition) {
|
|
|
- pathologyBehospitalCode.add(behospitalCode);
|
|
|
+ }
|
|
|
+ //手术病理
|
|
|
+ if(indexName.equals(QualityContent.BL_JCJL_FHL)||indexName.equals(QualityContent.QB)) {
|
|
|
+ if (!pathologyBehospitalCode.contains(behospitalCode)) {
|
|
|
+ Boolean condition = stairCondition(daItemName, QualityContent.BL_LIST);
|
|
|
+ if (condition) {
|
|
|
+ pathologyBehospitalCode.add(behospitalCode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //取临时和长期
|
|
|
+ if (doctorAdviceType.equals(QualityContent.STAT_ORDER) || doctorAdviceType.equals(QualityContent.STANDING_ORDER)) {
|
|
|
+ //抗菌药物
|
|
|
+ if(indexName.equals(QualityContent.KJYW_SY_FHL)||indexName.equals(QualityContent.QB)) {
|
|
|
+ if (!antibiosisBehospitalCode.contains(behospitalCode)) {
|
|
|
+ List<String> antimicrobialDrugList = QualityContent.Antimicrobial_Drug_List;
|
|
|
+ for (String antimicrobialDrug : antimicrobialDrugList) {
|
|
|
+ if (daItemName.contains(antimicrobialDrug)) {
|
|
|
+ //包含抗菌药物
|
|
|
+ antibiosisBehospitalCode.add(behospitalCode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//得到为临时医嘱
|
|
|
if (StringUtil.isNotEmpty(doctorAdviceType)) {
|
|
|
if (doctorAdviceType.equals(QualityContent.STAT_ORDER)) {
|
|
|
- if (!CTBehospitalCode.contains(behospitalCode)) {
|
|
|
- //筛选与CT相关
|
|
|
- //一级条件
|
|
|
- String[][] ctList = QualityContent.CT_LIST;
|
|
|
- Boolean stair = stairCondition(daItemName, ctList);
|
|
|
- if (stair) {
|
|
|
- String[][] ctRegulation = QualityContent.CT_REGULATION;
|
|
|
- Boolean levelCondition = secondLevelCondition(daItemName, ctRegulation);
|
|
|
- if (levelCondition) {
|
|
|
- CTBehospitalCode.add(behospitalCode);
|
|
|
+ if(indexName.equals(QualityContent.CT_JCJL_FHL)||indexName.equals(QualityContent.QB)) {
|
|
|
+ if (!CTBehospitalCode.contains(behospitalCode)) {
|
|
|
+ //筛选与CT相关
|
|
|
+ //一级条件
|
|
|
+ String[][] ctList = QualityContent.CT_LIST;
|
|
|
+ Boolean stair = stairCondition(daItemName, ctList);
|
|
|
+ if (stair) {
|
|
|
+ String[][] ctRegulation = QualityContent.CT_REGULATION;
|
|
|
+ Boolean levelCondition = secondLevelCondition(daItemName, ctRegulation);
|
|
|
+ if (levelCondition) {
|
|
|
+ CTBehospitalCode.add(behospitalCode);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//与MR相关
|
|
|
- if (!MRBehospitalCode.contains(behospitalCode)) {
|
|
|
- String[][] mrList = QualityContent.MR_LIST;
|
|
|
- Boolean stair = stairCondition(daItemName, mrList);
|
|
|
- if (stair) {
|
|
|
- String[][] ctRegulation = QualityContent.CT_REGULATION;
|
|
|
- Boolean levelCondition = secondLevelCondition(daItemName, ctRegulation);
|
|
|
- if (levelCondition) {
|
|
|
- MRBehospitalCode.add(behospitalCode);
|
|
|
+ if(indexName.equals(QualityContent.MR_JCJL_FHL)||indexName.equals(QualityContent.QB)) {
|
|
|
+ if (!MRBehospitalCode.contains(behospitalCode)) {
|
|
|
+ String[][] mrList = QualityContent.MR_LIST;
|
|
|
+ Boolean stair = stairCondition(daItemName, mrList);
|
|
|
+ if (stair) {
|
|
|
+ String[][] ctRegulation = QualityContent.CT_REGULATION;
|
|
|
+ Boolean levelCondition = secondLevelCondition(daItemName, ctRegulation);
|
|
|
+ if (levelCondition) {
|
|
|
+ MRBehospitalCode.add(behospitalCode);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ //获取为长期医嘱或临时医嘱的医嘱
|
|
|
+ if(StringUtil.isNotEmpty(doctorAdviceType)) {
|
|
|
+ if (indexName.equals(QualityContent.EXZL_HXZL_FHL)||indexName.equals(QualityContent.QB)) {
|
|
|
+ if (ListUtil.isNotEmpty(malignancyCodeList)) {
|
|
|
+ if (malignancyCodeList.contains(behospitalCode)) {
|
|
|
+ if (!chemotherapyMalignantTumorsBehospitalCode.contains(behospitalCode)) {
|
|
|
+ if (doctorAdviceType.equals(QualityContent.STAT_ORDER) || doctorAdviceType.equals(QualityContent.STANDING_ORDER)) {
|
|
|
+ List<String> chemotherapyDrugList = QualityContent.Chemotherapy_Drug_List;
|
|
|
+ for (String chemotherapyDrug : chemotherapyDrugList) {
|
|
|
+ if (daItemName.contains(chemotherapyDrug)) {
|
|
|
+ //医嘱含有化疗药物
|
|
|
+ chemotherapyMalignantTumorsBehospitalCode.add(behospitalCode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
})).get();
|
|
|
} catch (InterruptedException e) {
|
|
@@ -747,11 +816,7 @@ public class ConsoleFacade {
|
|
|
e.printStackTrace();
|
|
|
}finally {
|
|
|
myPool.shutdown();
|
|
|
- for (String operation : operationBehospitalCode) {
|
|
|
- if(pathologyBehospitalCode.contains(operation)){
|
|
|
- operationPathologyBehospitalCode.add(operation);
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
if(ListUtil.isEmpty(CTBehospitalCode)){
|
|
|
map.put("CT",Long.valueOf(0));
|
|
|
}else {
|
|
@@ -767,98 +832,30 @@ public class ConsoleFacade {
|
|
|
}else {
|
|
|
map.put("operation",Long.valueOf(operationBehospitalCode.size()));
|
|
|
}
|
|
|
- if(ListUtil.isEmpty(operationPathologyBehospitalCode)){
|
|
|
+ if(ListUtil.isEmpty(operationBehospitalCode)||ListUtil.isEmpty(operationPathologyBehospitalCode)){
|
|
|
map.put("operationPathology",Long.valueOf(0));
|
|
|
}else {
|
|
|
- map.put("operationPathology",Long.valueOf(operationPathologyBehospitalCode.size()));
|
|
|
- }
|
|
|
- return map;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取无病案首页抗菌药物使用人数
|
|
|
- * @param filterVO
|
|
|
- * @return
|
|
|
- */
|
|
|
- public int getAntibiosisNum(FilterVO filterVO) {
|
|
|
- List<String> adviceVerify = adviceVerify(filterVO);
|
|
|
- int operationNum = 0;
|
|
|
- if (ListUtil.isNotEmpty(adviceVerify) && adviceVerify.size() > 0) {
|
|
|
- for (String behospitalCode : adviceVerify) {
|
|
|
- QueryWrapper<DoctorAdvice> dtoQueryWrapper = new QueryWrapper<>();
|
|
|
- dtoQueryWrapper.eq("behospital_code", behospitalCode)
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("da_status", QualityContent.IN_USE);
|
|
|
- //查医嘱表
|
|
|
- List<DoctorAdvice> doctorAdvices = doctorAdviceFacade.getBaseMapper().selectList(dtoQueryWrapper);
|
|
|
- if (ListUtil.isNotEmpty(doctorAdvices) && doctorAdvices.size() > 0) {
|
|
|
- doc:
|
|
|
- for (DoctorAdvice doctorAdvice : doctorAdvices) {
|
|
|
- String daItemName = doctorAdvice.getDaItemName();
|
|
|
- if (StringUtil.isNotEmpty(daItemName)) {
|
|
|
- List<String> antimicrobialDrugList = QualityContent.Antimicrobial_Drug_List;
|
|
|
- for (String antimicrobialDrug : antimicrobialDrugList) {
|
|
|
- if (daItemName.contains(antimicrobialDrug)) {
|
|
|
- //医嘱包含抗菌药物名称 若非抗菌药物使用患者可能有取消字眼
|
|
|
- if(daItemName.contains(QualityContent.COUNTERMAND)){
|
|
|
- continue ;
|
|
|
- }else {
|
|
|
- operationNum++;
|
|
|
- break doc;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ for (String operation : operationBehospitalCode) {
|
|
|
+ if(pathologyBehospitalCode.contains(operation)){
|
|
|
+ operationPathologyBehospitalCode.add(operation);
|
|
|
}
|
|
|
}
|
|
|
+ map.put("operationPathology",Long.valueOf(operationPathologyBehospitalCode.size()));
|
|
|
}
|
|
|
- }
|
|
|
- return operationNum;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 恶性肿瘤化学治疗患者
|
|
|
- * @param filterVO
|
|
|
- * @return
|
|
|
- */
|
|
|
- public Integer chemotherapyMalignantTumors(FilterVO filterVO){
|
|
|
- filterVO.setFlagStr("2");
|
|
|
- int chemotherapyMalignantTumorsNum=0;
|
|
|
- //得到首页判断为恶性肿瘤病历
|
|
|
- List<Map<String, String>> malignancy = behospitalInfoFacade.malignancy(filterVO);
|
|
|
- if(ListUtil.isNotEmpty(malignancy)&&malignancy.size()>0) {
|
|
|
- for (Map<String, String> malignancyMap : malignancy) {
|
|
|
- String behospitalCode = malignancyMap.get("behospital_code");
|
|
|
- QueryWrapper<DoctorAdvice> dtoQueryWrapper = new QueryWrapper<>();
|
|
|
- dtoQueryWrapper.eq("behospital_code", behospitalCode)
|
|
|
- .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- .eq("da_status", QualityContent.IN_USE);
|
|
|
- List<DoctorAdvice> doctorAdvices = doctorAdviceFacade.getBaseMapper().selectList(dtoQueryWrapper);
|
|
|
- if(ListUtil.isNotEmpty(doctorAdvices)&&doctorAdvices.size()>0){
|
|
|
- doc:
|
|
|
- for (DoctorAdvice doctorAdvice : doctorAdvices) {
|
|
|
- String daItemName = doctorAdvice.getDaItemName();
|
|
|
- if(StringUtil.isNotEmpty(daItemName)){
|
|
|
- List<String> chemotherapyDrugList = QualityContent.Chemotherapy_Drug_List;
|
|
|
- for (String chemotherapyDrug : chemotherapyDrugList) {
|
|
|
- if (daItemName.contains(chemotherapyDrug)) {
|
|
|
- //医嘱包含化疗药物
|
|
|
- if (daItemName.contains(QualityContent.COUNTERMAND)) {
|
|
|
- //病人为化疗
|
|
|
- chemotherapyMalignantTumorsNum++;
|
|
|
- break doc;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ if(ListUtil.isEmpty(antibiosisBehospitalCode)){
|
|
|
+ map.put("antibiosis",Long.valueOf(0));
|
|
|
+ }else {
|
|
|
+ map.put("antibiosis",Long.valueOf(antibiosisBehospitalCode.size()));
|
|
|
}
|
|
|
+ if(ListUtil.isEmpty(chemotherapyMalignantTumorsBehospitalCode)){
|
|
|
+ map.put("chemotherapyMalignantTumors",Long.valueOf(0));
|
|
|
+ }else {
|
|
|
+ map.put("chemotherapyMalignantTumors",Long.valueOf(chemotherapyMalignantTumorsBehospitalCode.size()));
|
|
|
+ }
|
|
|
+ return map;
|
|
|
}
|
|
|
- return chemotherapyMalignantTumorsNum;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 质控病历统计
|
|
|
*
|