|
@@ -3,12 +3,16 @@ package com.lantone.qc.kernel.catalogue.crisisvaluereport;
|
|
import com.lantone.qc.kernel.catalogue.QCCatalogue;
|
|
import com.lantone.qc.kernel.catalogue.QCCatalogue;
|
|
import com.lantone.qc.pub.model.InputInfo;
|
|
import com.lantone.qc.pub.model.InputInfo;
|
|
import com.lantone.qc.pub.model.OutputInfo;
|
|
import com.lantone.qc.pub.model.OutputInfo;
|
|
|
|
+import com.lantone.qc.pub.model.doc.CrisisInfoDoc;
|
|
import com.lantone.qc.pub.model.doc.CrisisValueReportDoc;
|
|
import com.lantone.qc.pub.model.doc.CrisisValueReportDoc;
|
|
import com.lantone.qc.pub.util.DateUtil;
|
|
import com.lantone.qc.pub.util.DateUtil;
|
|
import com.lantone.qc.pub.util.ListUtil;
|
|
import com.lantone.qc.pub.util.ListUtil;
|
|
import com.lantone.qc.pub.util.StringUtil;
|
|
import com.lantone.qc.pub.util.StringUtil;
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -22,21 +26,70 @@ public class CRI0382 extends QCCatalogue {
|
|
@Override
|
|
@Override
|
|
public void start(InputInfo inputInfo, OutputInfo outputInfo) {
|
|
public void start(InputInfo inputInfo, OutputInfo outputInfo) {
|
|
status.set("0");
|
|
status.set("0");
|
|
- List<CrisisValueReportDoc> crisisValueReportDocs = inputInfo.getCrisisValueReportDocs();
|
|
|
|
- if (ListUtil.isEmpty(crisisValueReportDocs)) {
|
|
|
|
|
|
+ //无危急值结构化信息
|
|
|
|
+ List<CrisisInfoDoc> crisisInfoDocs = inputInfo.getCrisisInfoDocs();
|
|
|
|
+ if (crisisInfoDocs == null || crisisInfoDocs.size() == 0) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- String format = "yyyy年MM月dd日HH时mm分";
|
|
|
|
|
|
+ //有结构化信息但无危急值文书,如果报告时间都未超过6小时 允许无文书
|
|
|
|
+ boolean isOutTime = false;
|
|
|
|
+ Date currentDate = new Date();
|
|
int timeCha = 21600000;
|
|
int timeCha = 21600000;
|
|
- crisisValueReportDocs.forEach(crisisValueReportDoc -> {
|
|
|
|
- String baogaoTimeStr = crisisValueReportDoc.getStructureMap().get("报告时间");
|
|
|
|
- String jiluTimeStr = crisisValueReportDoc.getStructureMap().get("记录时间");
|
|
|
|
- if (StringUtil.isNotBlank(baogaoTimeStr)
|
|
|
|
- && StringUtil.isNotBlank(jiluTimeStr)
|
|
|
|
- && DateUtil.parseDate(jiluTimeStr, format).getTime() - DateUtil.parseDate(baogaoTimeStr, format).getTime() > timeCha) {
|
|
|
|
- status.set("-1");
|
|
|
|
|
|
+ String[] dateFormats = new String[]{"yyyy年MM月dd日HH时mm分", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm"};
|
|
|
|
+ for (CrisisInfoDoc crisisInfoDoc : crisisInfoDocs) {
|
|
|
|
+ String reptTime = crisisInfoDoc.getStructureMap().get("报告时间");
|
|
|
|
+ if (StringUtils.isNotEmpty(reptTime)) {
|
|
|
|
+ if (currentDate.getTime() - StringUtil.parseDateTime(reptTime, dateFormats).getTime() > timeCha) {
|
|
|
|
+ isOutTime = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+ if (isOutTime == false) { //所有文书都未超过6小时,规则直接通过
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<CrisisValueReportDoc> crisisValueReportDocs = inputInfo.getCrisisValueReportDocs();
|
|
|
|
+ //如果有危急值结构化数据 但无文书则直接提醒无危急值报告
|
|
|
|
+ if (crisisValueReportDocs == null || crisisValueReportDocs.size() == 0) {
|
|
|
|
+ status.set("-1");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ List<String> findCrisises = new ArrayList<>();
|
|
|
|
+ List<String> allCrisises = new ArrayList<>();
|
|
|
|
+ crisisInfoDocs.forEach(crisisInfoDoc -> {
|
|
|
|
+ String reptTime = crisisInfoDoc.getStructureMap().get("报告时间");
|
|
|
|
+ String crisisName = crisisInfoDoc.getStructureMap().get("危急值名称");
|
|
|
|
+ allCrisises.add(reptTime);
|
|
|
|
+ if (StringUtils.isNotEmpty(reptTime)) {
|
|
|
|
+ //当前时间和报告时间未超过6小时,规则通过
|
|
|
|
+ if (currentDate.getTime() - StringUtil.parseDateTime(reptTime, dateFormats).getTime() < timeCha) {
|
|
|
|
+ findCrisises.add(reptTime);
|
|
|
|
+ } else {
|
|
|
|
+ crisisValueReportDocs.forEach(crisisValueReportDoc -> {
|
|
|
|
+ String recordTimeStr = crisisValueReportDoc.getStructureMap().get("记录时间");
|
|
|
|
+ String docReptContent = crisisValueReportDoc.getStructureMap().get("危急值记录内容");
|
|
|
|
+ if (StringUtil.parseDateTime(recordTimeStr, dateFormats).getTime()
|
|
|
|
+ - StringUtil.parseDateTime(reptTime, dateFormats).getTime() < timeCha
|
|
|
|
+ && docReptContent.contains(crisisName)) {
|
|
|
|
+ findCrisises.add(reptTime);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
+
|
|
|
|
+ if(findCrisises.size() != allCrisises.size()) {
|
|
|
|
+ status.set("-1");
|
|
|
|
+ allCrisises.forEach(reptTime -> {
|
|
|
|
+ if (!findCrisises.contains(reptTime)) {
|
|
|
|
+ if (StringUtils.isEmpty(info.get())) {
|
|
|
|
+ info.set(reptTime);
|
|
|
|
+ } else {
|
|
|
|
+ info.set(info.get() + ", " + reptTime);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|