|
@@ -392,7 +392,9 @@ public class ConsoleFacade {
|
|
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);
|
|
|
|
+ //出院人数
|
|
Long startCount = selectOperationNumMap.get(QualityContent.DISCHARGED_PATIENTS);
|
|
Long startCount = selectOperationNumMap.get(QualityContent.DISCHARGED_PATIENTS);
|
|
|
|
+ //入院人数
|
|
Long endCount = selectOperationNumMap.get(QualityContent.NUMBER_OF_HOSPITAL);
|
|
Long endCount = selectOperationNumMap.get(QualityContent.NUMBER_OF_HOSPITAL);
|
|
Map<String, Integer> operationPathologyNumMap = getOperationPathologyNum(filterVO);
|
|
Map<String, Integer> operationPathologyNumMap = getOperationPathologyNum(filterVO);
|
|
//手术人数
|
|
//手术人数
|
|
@@ -407,12 +409,25 @@ public class ConsoleFacade {
|
|
Long operationPathologyFeeNum = selectOperationNumMap.get("operationPathologyFee");
|
|
Long operationPathologyFeeNum = selectOperationNumMap.get("operationPathologyFee");
|
|
Integer operationPathologyNum = operationPathologyNumMap.get(QualityContent.NO_RECORD_OPERATION_PATHOLOGY);
|
|
Integer operationPathologyNum = operationPathologyNumMap.get(QualityContent.NO_RECORD_OPERATION_PATHOLOGY);
|
|
operationPathologyFeeNum = operationPathologyFeeNum + operationPathologyNum;
|
|
operationPathologyFeeNum = operationPathologyFeeNum + operationPathologyNum;
|
|
- Map<String, Long> recordIndicatorMap = behospitalInfoFacade.triggeringRules(filterVO);
|
|
|
|
|
|
+ Map<String, Long> longMap = getCTNum(filterVO);
|
|
|
|
+ //CT人数
|
|
|
|
+ Long CTNum = longMap.get("CT");
|
|
|
|
+ //MR人数
|
|
|
|
+ Long MRNum = longMap.get("MR");
|
|
//各指标未完成人数情况
|
|
//各指标未完成人数情况
|
|
- Long operationCount = recordIndicatorMap.get(QualityContent.SSJLWCC_24H);
|
|
|
|
- Long InHospitalRecords = recordIndicatorMap.get(QualityContent.RYJLWWC_24H);
|
|
|
|
- Long OutHospitalRecords = recordIndicatorMap.get(QualityContent.CYJLWWC_24H);
|
|
|
|
- Long recordHomePage = recordIndicatorMap.get(QualityContent.BASYWWC_24H);
|
|
|
|
|
|
+ Map<String, Long> triggeringRulesMap = behospitalInfoFacade.triggeringRules(filterVO);
|
|
|
|
+ Long operationCount = triggeringRulesMap.get(QualityContent.SSJLWCC_24H);
|
|
|
|
+ Long InHospitalRecords = triggeringRulesMap.get(QualityContent.RYJLWWC_24H);
|
|
|
|
+ Long OutHospitalRecords = triggeringRulesMap.get(QualityContent.CYJLWWC_24H);
|
|
|
|
+ Long recordHomePage = triggeringRulesMap.get(QualityContent.BASYWWC_24H);
|
|
|
|
+ //病理手术
|
|
|
|
+ Long antibiosisNum = triggeringRulesMap.get("antibiosisNum");
|
|
|
|
+ //细菌培养
|
|
|
|
+ Long bacterialCulture = triggeringRulesMap.get("bacterialCulture");
|
|
|
|
+ //CT
|
|
|
|
+ Long ct = triggeringRulesMap.get("CT");
|
|
|
|
+ //MR
|
|
|
|
+ Long mr = triggeringRulesMap.get("MR");
|
|
List<Map<String, String>> hashMapArrayList = new ArrayList<>();
|
|
List<Map<String, String>> hashMapArrayList = new ArrayList<>();
|
|
//入院记录24小时完成率
|
|
//入院记录24小时完成率
|
|
//入院记录完成人数为
|
|
//入院记录完成人数为
|
|
@@ -444,7 +459,7 @@ public class ConsoleFacade {
|
|
// medQualityControlDTO.setLeaveHospitalNum(Double.valueOf(startCount - OutHospitalRecords));
|
|
// medQualityControlDTO.setLeaveHospitalNum(Double.valueOf(startCount - OutHospitalRecords));
|
|
//出院记录完成率
|
|
//出院记录完成率
|
|
// medQualityControlDTO.setLeaveHospitalStr(getResult(startCount - OutHospitalRecords, startCount));
|
|
// medQualityControlDTO.setLeaveHospitalStr(getResult(startCount - OutHospitalRecords, 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 - OutHospitalRecords, startCount));
|
|
stringStringHashMap.put("notCopiedStr",getResult(startCount - OutHospitalRecords, startCount));
|
|
stringStringHashMap.put("num",Double.valueOf(startCount - OutHospitalRecords).toString());
|
|
stringStringHashMap.put("num",Double.valueOf(startCount - OutHospitalRecords).toString());
|
|
@@ -456,33 +471,16 @@ public class ConsoleFacade {
|
|
// medQualityControlDTO.setMedHomePageNum(Double.valueOf(startCount - recordHomePage));
|
|
// medQualityControlDTO.setMedHomePageNum(Double.valueOf(startCount - recordHomePage));
|
|
//病案首页完成率
|
|
//病案首页完成率
|
|
// medQualityControlDTO.setMedHomePageStr(getResult(startCount - recordHomePage, startCount));
|
|
// medQualityControlDTO.setMedHomePageStr(getResult(startCount - recordHomePage, 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 - recordHomePage, startCount));
|
|
stringStringHashMap.put("notCopiedStr",getResult(startCount - recordHomePage, startCount));
|
|
stringStringHashMap.put("num",Double.valueOf(startCount - recordHomePage).toString());
|
|
stringStringHashMap.put("num",Double.valueOf(startCount - recordHomePage).toString());
|
|
hashMapArrayList.add(stringStringHashMap);
|
|
hashMapArrayList.add(stringStringHashMap);
|
|
}
|
|
}
|
|
-
|
|
|
|
- Map<String, Long> longMap = getCTNum(filterVO);
|
|
|
|
- //CT人数
|
|
|
|
- Long CTNum = longMap.get("CT");
|
|
|
|
- //MR人数
|
|
|
|
- Long MRNum = longMap.get("MR");
|
|
|
|
-
|
|
|
|
- //触发规则
|
|
|
|
- //病理手术
|
|
|
|
- Map<String, Long> triggeringRulesMap = behospitalInfoFacade.triggeringRules(filterVO);
|
|
|
|
- Long antibiosisNum = triggeringRulesMap.get("antibiosisNum");
|
|
|
|
- //细菌培养
|
|
|
|
- Long bacterialCulture = triggeringRulesMap.get("bacterialCulture");
|
|
|
|
- //CT
|
|
|
|
- Long ct = triggeringRulesMap.get("CT");
|
|
|
|
- //MR
|
|
|
|
- Long mr = triggeringRulesMap.get("MR");
|
|
|
|
//CT完成率
|
|
//CT完成率
|
|
if(CTNum!=null && ct!=null) {
|
|
if(CTNum!=null && ct!=null) {
|
|
// medQualityControlDTO.setCTExaminationConform(getResult(CTNum - ct, CTNum));
|
|
// medQualityControlDTO.setCTExaminationConform(getResult(CTNum - ct, CTNum));
|
|
- LinkedHashMap<String, String> stringStringHashMap = new LinkedHashMap<>();
|
|
|
|
|
|
+ Map<String, String> stringStringHashMap = new LinkedHashMap<>();
|
|
stringStringHashMap.put("name","CT检查记录符合率");
|
|
stringStringHashMap.put("name","CT检查记录符合率");
|
|
stringStringHashMap.put("notCopiedStr",getResult(CTNum - ct, CTNum));
|
|
stringStringHashMap.put("notCopiedStr",getResult(CTNum - ct, CTNum));
|
|
stringStringHashMap.put("num",Double.valueOf(CTNum - ct).toString());
|
|
stringStringHashMap.put("num",Double.valueOf(CTNum - ct).toString());
|
|
@@ -491,7 +489,7 @@ public class ConsoleFacade {
|
|
//MR完成率
|
|
//MR完成率
|
|
if(MRNum!=null && mr!=null) {
|
|
if(MRNum!=null && mr!=null) {
|
|
// medQualityControlDTO.setMRIExaminationConform(getResult(MRNum - mr, MRNum));
|
|
// medQualityControlDTO.setMRIExaminationConform(getResult(MRNum - mr, MRNum));
|
|
- LinkedHashMap<String, String> stringStringHashMap = new LinkedHashMap<>();
|
|
|
|
|
|
+ Map<String, String> stringStringHashMap = new LinkedHashMap<>();
|
|
stringStringHashMap.put("name","MRI检查记录符合率");
|
|
stringStringHashMap.put("name","MRI检查记录符合率");
|
|
stringStringHashMap.put("notCopiedStr",getResult(MRNum - mr, MRNum));
|
|
stringStringHashMap.put("notCopiedStr",getResult(MRNum - mr, MRNum));
|
|
stringStringHashMap.put("num",Double.valueOf(MRNum - mr).toString());
|
|
stringStringHashMap.put("num",Double.valueOf(MRNum - mr).toString());
|
|
@@ -499,8 +497,8 @@ public class ConsoleFacade {
|
|
}
|
|
}
|
|
if(operationPathologyFeeNum!=null && antibiosisNum!=null) {
|
|
if(operationPathologyFeeNum!=null && antibiosisNum!=null) {
|
|
//病理完成率为
|
|
//病理完成率为
|
|
- // medQualityControlDTO.setPathologicalExamination(getResult(operationPathologyFeeNum - antibiosisNum, operationPathologyFeeNum));
|
|
|
|
- LinkedHashMap<String, String> stringStringHashMap = new LinkedHashMap<>();
|
|
|
|
|
|
+ // medQualityControlDTO.setPathologicalExamination(getResult(operationPathologyFeeNum - antibiosisNum, operationPathologyFeeNum));
|
|
|
|
+ Map<String, String> stringStringHashMap = new LinkedHashMap<>();
|
|
stringStringHashMap.put("name","病理检查记录符合率");
|
|
stringStringHashMap.put("name","病理检查记录符合率");
|
|
stringStringHashMap.put("notCopiedStr",getResult(operationPathologyFeeNum - antibiosisNum, operationPathologyFeeNum));
|
|
stringStringHashMap.put("notCopiedStr",getResult(operationPathologyFeeNum - antibiosisNum, operationPathologyFeeNum));
|
|
stringStringHashMap.put("num",Double.valueOf(operationPathologyFeeNum - antibiosisNum).toString());
|
|
stringStringHashMap.put("num",Double.valueOf(operationPathologyFeeNum - antibiosisNum).toString());
|
|
@@ -566,7 +564,7 @@ public class ConsoleFacade {
|
|
*/
|
|
*/
|
|
public List<String> adviceVerify(FilterVO filterVO){
|
|
public List<String> adviceVerify(FilterVO filterVO){
|
|
List<Map<String, String>> medicalRecords = behospitalInfoFacade.getMedicalRecords(filterVO);
|
|
List<Map<String, String>> medicalRecords = behospitalInfoFacade.getMedicalRecords(filterVO);
|
|
- ArrayList<String> behospitalCodeList = new ArrayList<>();
|
|
|
|
|
|
+ List<String> behospitalCodeList = new ArrayList<>();
|
|
for (Map<String, String> medicalRecord : medicalRecords) {
|
|
for (Map<String, String> medicalRecord : medicalRecords) {
|
|
String b_code = medicalRecord.get("b_code");
|
|
String b_code = medicalRecord.get("b_code");
|
|
String behospitalCode = medicalRecord.get("behospital_code");
|
|
String behospitalCode = medicalRecord.get("behospital_code");
|
|
@@ -577,7 +575,7 @@ public class ConsoleFacade {
|
|
return behospitalCodeList;
|
|
return behospitalCodeList;
|
|
}
|
|
}
|
|
/**
|
|
/**
|
|
- * 医嘱表判断无病案首页是否为病理手术患者的人数
|
|
|
|
|
|
+ * 医嘱表判断无病案首页是否为病理手术患者和手术患者的人数
|
|
*/
|
|
*/
|
|
public Map<String,Integer> getOperationPathologyNum(FilterVO filterVO){
|
|
public Map<String,Integer> getOperationPathologyNum(FilterVO filterVO){
|
|
List<String> behospitalCodeList = adviceVerify(filterVO);
|
|
List<String> behospitalCodeList = adviceVerify(filterVO);
|
|
@@ -594,6 +592,7 @@ public class ConsoleFacade {
|
|
List<DoctorAdvice> doctorAdvices = doctorAdviceFacade.getBaseMapper().selectList(dtoQueryWrapper);
|
|
List<DoctorAdvice> doctorAdvices = doctorAdviceFacade.getBaseMapper().selectList(dtoQueryWrapper);
|
|
//手术病理
|
|
//手术病理
|
|
if(ListUtil.isNotEmpty(doctorAdvices)&&doctorAdvices.size()>0) {
|
|
if(ListUtil.isNotEmpty(doctorAdvices)&&doctorAdvices.size()>0) {
|
|
|
|
+ dd:
|
|
for (DoctorAdvice doctorAdvice : doctorAdvices) {
|
|
for (DoctorAdvice doctorAdvice : doctorAdvices) {
|
|
String name = doctorAdvice.getDaItemName();
|
|
String name = doctorAdvice.getDaItemName();
|
|
if (StringUtil.isNotEmpty(name)) {
|
|
if (StringUtil.isNotEmpty(name)) {
|
|
@@ -606,7 +605,7 @@ public class ConsoleFacade {
|
|
String daItemName = advice.getDaItemName();
|
|
String daItemName = advice.getDaItemName();
|
|
if (daItemName.contains(QualityContent.PATHOLOGY)) {
|
|
if (daItemName.contains(QualityContent.PATHOLOGY)) {
|
|
operationPathologyNum++;
|
|
operationPathologyNum++;
|
|
- break;
|
|
|
|
|
|
+ break dd;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -676,13 +675,11 @@ public class ConsoleFacade {
|
|
* 获取CT/MRI人数
|
|
* 获取CT/MRI人数
|
|
*/
|
|
*/
|
|
public Map<String,Long> getCTNum(FilterVO filterVO){
|
|
public Map<String,Long> getCTNum(FilterVO filterVO){
|
|
|
|
+ filterVO.setFlagStr("1");
|
|
List<Map<String, String>> getDoctorAdviceNum = doctorAdviceFacade.getDoctorAdviceNum(filterVO);
|
|
List<Map<String, String>> getDoctorAdviceNum = doctorAdviceFacade.getDoctorAdviceNum(filterVO);
|
|
- HashMap<String, Long> map = new HashMap<>();
|
|
|
|
- ArrayList<String> codeList = new ArrayList<>();
|
|
|
|
|
|
+ Map<String, Long> map = new HashMap<>();
|
|
|
|
+ List<String> codeList = new ArrayList<>();
|
|
for (Map<String, String> ctNumMap : getDoctorAdviceNum) {
|
|
for (Map<String, String> ctNumMap : getDoctorAdviceNum) {
|
|
- String doctorAdviceType = ctNumMap.get("doctor_advice_type");
|
|
|
|
- if(StringUtil.isNotEmpty(doctorAdviceType)) {
|
|
|
|
- if (doctorAdviceType.contains(QualityContent.STAT_ORDER)) {
|
|
|
|
String behospitalCode = ctNumMap.get("behospital_code");
|
|
String behospitalCode = ctNumMap.get("behospital_code");
|
|
if (!codeList.contains(behospitalCode)) {
|
|
if (!codeList.contains(behospitalCode)) {
|
|
String daItemName = ctNumMap.get("da_item_name");
|
|
String daItemName = ctNumMap.get("da_item_name");
|
|
@@ -696,16 +693,12 @@ public class ConsoleFacade {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
ArrayList<String> codeMri = new ArrayList<>();
|
|
ArrayList<String> codeMri = new ArrayList<>();
|
|
for (Map<String, String> MRINumMap : getDoctorAdviceNum) {
|
|
for (Map<String, String> MRINumMap : getDoctorAdviceNum) {
|
|
String behospitalCodeMri = MRINumMap.get("behospital_code");
|
|
String behospitalCodeMri = MRINumMap.get("behospital_code");
|
|
- if(StringUtil.isNotEmpty(MRINumMap.get("doctor_advice_type"))) {
|
|
|
|
- if (contains(QualityContent.STAT_ORDER)) {
|
|
|
|
if (!codeList.contains(behospitalCodeMri)) {
|
|
if (!codeList.contains(behospitalCodeMri)) {
|
|
String daItemName = MRINumMap.get("da_item_name");
|
|
String daItemName = MRINumMap.get("da_item_name");
|
|
if (StringUtil.isNotEmpty(daItemName)) {
|
|
if (StringUtil.isNotEmpty(daItemName)) {
|
|
@@ -714,8 +707,6 @@ public class ConsoleFacade {
|
|
codeMri.add(behospitalCodeMri);
|
|
codeMri.add(behospitalCodeMri);
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
- }
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -746,7 +737,6 @@ public class ConsoleFacade {
|
|
QueryWrapper<DoctorAdvice> dtoQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<DoctorAdvice> dtoQueryWrapper = new QueryWrapper<>();
|
|
dtoQueryWrapper.eq("behospital_code", behospitalCode)
|
|
dtoQueryWrapper.eq("behospital_code", behospitalCode)
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
- .eq("doctor_advice_type", QualityContent.STAT_ORDER)
|
|
|
|
.eq("da_status", QualityContent.EXECUTE_ORDER);
|
|
.eq("da_status", QualityContent.EXECUTE_ORDER);
|
|
//查医嘱表
|
|
//查医嘱表
|
|
List<DoctorAdvice> doctorAdvices = doctorAdviceFacade.getBaseMapper().selectList(dtoQueryWrapper);
|
|
List<DoctorAdvice> doctorAdvices = doctorAdviceFacade.getBaseMapper().selectList(dtoQueryWrapper);
|
|
@@ -758,9 +748,13 @@ public class ConsoleFacade {
|
|
List<String> antimicrobialDrugList = QualityContent.Antimicrobial_Drug_List;
|
|
List<String> antimicrobialDrugList = QualityContent.Antimicrobial_Drug_List;
|
|
for (String antimicrobialDrug : antimicrobialDrugList) {
|
|
for (String antimicrobialDrug : antimicrobialDrugList) {
|
|
if (daItemName.contains(antimicrobialDrug)) {
|
|
if (daItemName.contains(antimicrobialDrug)) {
|
|
- //医嘱包含抗菌药物名称
|
|
|
|
- operationNum++;
|
|
|
|
- break doc;
|
|
|
|
|
|
+ //医嘱包含抗菌药物名称 若非抗菌药物使用患者可能有取消字眼
|
|
|
|
+ if(daItemName.contains(QualityContent.COUNTERMAND)){
|
|
|
|
+ continue ;
|
|
|
|
+ }else {
|
|
|
|
+ operationNum++;
|
|
|
|
+ break doc;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -770,6 +764,48 @@ public class ConsoleFacade {
|
|
}
|
|
}
|
|
return operationNum;
|
|
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.EXECUTE_ORDER);
|
|
|
|
+ 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;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return chemotherapyMalignantTumorsNum;
|
|
|
|
+ }
|
|
/**
|
|
/**
|
|
* 质控病历统计
|
|
* 质控病历统计
|
|
*
|
|
*
|