|
@@ -1,13 +1,16 @@
|
|
|
package com.lantone.qc.kernel.catalogue.threelevelward;
|
|
|
|
|
|
+import com.lantone.qc.dbanaly.util.KernelConstants;
|
|
|
+import com.lantone.qc.dbanaly.util.SpecialStorageUtil;
|
|
|
import com.lantone.qc.kernel.catalogue.QCCatalogue;
|
|
|
import com.lantone.qc.kernel.util.CatalogueUtil;
|
|
|
-import com.lantone.qc.pub.Content;
|
|
|
import com.lantone.qc.pub.model.InputInfo;
|
|
|
import com.lantone.qc.pub.model.OutputInfo;
|
|
|
import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
|
|
|
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
|
|
|
import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
|
|
|
import com.lantone.qc.pub.util.DateUtil;
|
|
|
+import com.lantone.qc.pub.util.SpringContextUtil;
|
|
|
import com.lantone.qc.pub.util.StringUtil;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
@@ -37,7 +40,8 @@ public class THR0125 extends QCCatalogue {
|
|
|
return;
|
|
|
}
|
|
|
//如果住院天数小于3天则不判断该条规则
|
|
|
- if (StringUtil.isNotEmpty(dischargeTime) &&!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (72 * 60))) {
|
|
|
+ if (DateUtil.parseDate(dischargeTime) != null && StringUtil.isNotEmpty(dischargeTime) &&
|
|
|
+ !CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(dischargeTime), (long) (72 * 60))) {
|
|
|
status.set("0");
|
|
|
return;
|
|
|
}
|
|
@@ -73,6 +77,76 @@ public class THR0125 extends QCCatalogue {
|
|
|
} else if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), new Date(), 72 * 60L)) {
|
|
|
status.set("0");//没有主任医师查房,若入院时间和系统当前时间对比,相差72小时则报错
|
|
|
}
|
|
|
+
|
|
|
+ /* 如果存在手术记录,判断主刀医生是否为主治医生 */
|
|
|
+ String operatorName = "";
|
|
|
+ List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
|
|
|
+ if (operationDocs != null) {
|
|
|
+ for (OperationDoc operationDoc : operationDocs) {
|
|
|
+ if (operationDoc.getOperationRecordDoc() != null) {
|
|
|
+ Map<String, String> operationDocStructureMap = operationDoc.getOperationRecordDoc().getStructureMap();
|
|
|
+ operatorName = operationDocStructureMap.get("主刀医师");
|
|
|
+ if (StringUtil.isBlank(operatorName) && StringUtil.isNotBlank(operationDocStructureMap.get("手术者及助手名称"))) {
|
|
|
+ operatorName = operationDocStructureMap.get("手术者及助手名称").split("、")[0];
|
|
|
+ if (operatorName.contains("主刀:")) {
|
|
|
+ operatorName = operatorName.split(":")[1];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDoc.getAllDoctorWradDocs();
|
|
|
+ for (ThreeLevelWardDoc threeLevelWard : allDoctorWradDocs) {
|
|
|
+ Map<String, String> structureMap = threeLevelWard.getStructureMap();
|
|
|
+ String wardDateStr = structureMap.get("查房日期");
|
|
|
+ if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime), StringUtil.parseDateTime(wardDateStr), 72 * 60L)) {
|
|
|
+ String makeTitle = structureMap.get("查房标题");
|
|
|
+ String pathography = structureMap.get("病情记录");
|
|
|
+ //判断标题
|
|
|
+ visitingPhysicianHouse(operatorName, makeTitle);
|
|
|
+ //判断病情记录
|
|
|
+ visitingPhysicianHouse(operatorName, pathography);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断查房记录是否含有主任医师查房
|
|
|
+ *
|
|
|
+ * @param operatorName 主刀医师
|
|
|
+ * @param titlePathography 查房标题或病情记录
|
|
|
+ */
|
|
|
+ private void visitingPhysicianHouse(String operatorName, String titlePathography) {
|
|
|
+ if (StringUtil.isNotBlank(titlePathography)) {
|
|
|
+ if (titlePathography.contains("主任")) {
|
|
|
+ status.set("0");
|
|
|
+ return;
|
|
|
+ } else if (StringUtil.isNotBlank(operatorName) && (titlePathography.contains(operatorName) || titlePathography.contains("主刀"))) {
|
|
|
+ String operationProfessor = getCourseProfessor(operatorName);
|
|
|
+ if (operationProfessor.contains("主任")) {
|
|
|
+ status.set("0");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getCourseProfessor(String operatorName) {
|
|
|
+ String professor = "";
|
|
|
+ if (StringUtil.isBlank(operatorName)) {
|
|
|
+ return professor;
|
|
|
+ }
|
|
|
+ SpecialStorageUtil specialStorageUtil = SpringContextUtil.getBean("specialStorageUtil");
|
|
|
+ Map<String, Object> surgeon = specialStorageUtil.getJsonStringValue(KernelConstants.HOSPITAL_DOCTOR_MAP);
|
|
|
+ if (surgeon != null) {
|
|
|
+ Map<String, String> doctor = (Map) surgeon.get(operatorName);
|
|
|
+ if (doctor != null) {
|
|
|
+ professor = doctor.get("professor");
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
+ return professor;
|
|
|
}
|
|
|
}
|