fix:广东省中医珠海,检验报告查询分批查询,天数太多接口无法返回数据。

master
WenYongbin 8 hours ago
parent 05fc82b8f0
commit 32b5508f8f

@ -22,6 +22,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@ -173,10 +174,30 @@ public class ReportCollectServiceImpl implements ReportCollectService {
log.error("采集LIS报告患者{},住院流水号:{},入院、出院时间empId有空数据无法采集", basic.getInpatientNo(), jzh);
return;
}
String beginDate = Func.formatDate(admissDate);
String endDate = Func.formatDate(disDate);
GdSzyZhReportListDto lisList = gdSzyZhReportService.lisList(empId, jzh, beginDate, endDate);
List<GdSzyZhReportListDto.Report> reportList = lisList.getReportList();
List<GdSzyZhReportListDto.Report> reportList = new ArrayList<>();
String admissDateFormat = Func.formatDate(admissDate);
String disDateFormat = Func.formatDate(disDate);
int intervalDays = 20;
LocalDate beginDate = Func.parseDate(admissDateFormat);
LocalDate stopEndDate = Func.parseDate(disDateFormat).plusDays(15);
// 因为报告时间过长,LIS系统会响应超时分时间段查询intervalDays 天一组。
while (true) {
if(beginDate.isAfter(stopEndDate)) {
break;
}
LocalDate endDate = beginDate.plusDays(intervalDays);
if (endDate.isAfter(stopEndDate)) {
endDate = stopEndDate;
}
GdSzyZhReportListDto dto = gdSzyZhReportService.lisList(empId, jzh, beginDate + " 00:00:00", endDate + " 23:59:59");
List<GdSzyZhReportListDto.Report> reports = dto.getReportList();
reportList.addAll(reports);
// 截止
if (endDate.isEqual(stopEndDate) || endDate.isAfter(stopEndDate)) {
break;
}
beginDate = endDate.plusDays(1);
}
reportList = reportList.stream()
.sorted(Comparator.comparing(GdSzyZhReportListDto.Report::getReportClass)
.thenComparing(GdSzyZhReportListDto.Report::getReportTime))

@ -264,13 +264,22 @@ public class GdSzyZhReportServiceImpl implements GdSzyZhReportService {
Node testCategNameNode = xmlUtil.getNode("/Response/MsgInfo/Msg/ReportInfo[" + i + "]/TEST_CATEG_NAME");
Node sampleTypeCodeNode = xmlUtil.getNode("/Response/MsgInfo/Msg/ReportInfo[" + i + "]/SAMPLE_TYPE_CODE");
Node reportApprovalDatetimeNode = xmlUtil.getNode("/Response/MsgInfo/Msg/ReportInfo[" + i + "]/REPORT_APPROVAL_DATETIME");
Node applyDatetimeNode = xmlUtil.getNode("/Response/MsgInfo/Msg/ReportInfo[" + i + "]/APPLY_DATETIME");
String reportTime = reportApprovalDatetimeNode.getTextContent();
if(Func.isBlank(reportTime)){
reportTime = applyDatetimeNode.getTextContent();
}
GdSzyZhReportListDto.Report report = new GdSzyZhReportListDto.Report();
report.setReportNo(sampleNoNode.getTextContent());
report.setReporPath(reportPdfUrlNode.getTextContent());
report.setReportClass(sampleTypeCodeNode.getTextContent());
report.setReportTitle(testCategNameNode.getTextContent());
report.setReportTime(Func.parseDate(reportApprovalDatetimeNode.getTextContent(), "yyyy-MM-dd HH:mm:ss"));
if (Func.isNotBlank(reportTime)) {
report.setReportTime(Func.parseDate(reportTime, "yyyy-MM-dd HH:mm:ss"));
}
reportList.add(report);
}
GdSzyZhReportListDto dto = new GdSzyZhReportListDto();

Loading…
Cancel
Save