diff --git a/AcquisitionServer.iml b/AcquisitionServer.iml index 47f06a6..3f700ec 100644 --- a/AcquisitionServer.iml +++ b/AcquisitionServer.iml @@ -15,6 +15,17 @@ + + + + + + + + + + + @@ -23,6 +34,8 @@ + + @@ -102,6 +115,9 @@ + + + @@ -151,5 +167,7 @@ + + \ No newline at end of file diff --git a/src/main/java/com/ann/entity/constant/AliasName.java b/src/main/java/com/ann/entity/constant/AliasName.java index 886b026..4c0a811 100644 --- a/src/main/java/com/ann/entity/constant/AliasName.java +++ b/src/main/java/com/ann/entity/constant/AliasName.java @@ -81,5 +81,7 @@ public class AliasName { public static final String OTHER_REPORT = "110"; + public static final String NEW_PATHOLOGY_REPORT = "53"; + } diff --git a/src/main/java/com/ann/repository/ArchiveDetailRepository.java b/src/main/java/com/ann/repository/ArchiveDetailRepository.java index 6d08c8a..f81f634 100644 --- a/src/main/java/com/ann/repository/ArchiveDetailRepository.java +++ b/src/main/java/com/ann/repository/ArchiveDetailRepository.java @@ -25,10 +25,17 @@ public interface ArchiveDetailRepository extends JpaRepository type, String masterId); diff --git a/src/main/java/com/ann/service/impl/ArchiveDetailServiceImpl.java b/src/main/java/com/ann/service/impl/ArchiveDetailServiceImpl.java index 893b1a6..1186b45 100644 --- a/src/main/java/com/ann/service/impl/ArchiveDetailServiceImpl.java +++ b/src/main/java/com/ann/service/impl/ArchiveDetailServiceImpl.java @@ -46,6 +46,15 @@ public class ArchiveDetailServiceImpl implements ArchiveDetailService { return null; } + + + @Override + public ArchiveDetail isExitCheckReportIdAndApplyId(String id,String checkReportId,String applyId) throws Exception { + if (archiveDetailRepository.countByMasterIDAndAndCheckReportIdAndApplyId(id, checkReportId, applyId) > 0) + return archiveDetailRepository.findByMasterIDAndAndCheckReportIdAndApplyId(id, checkReportId, applyId); + return null; + } + @Override public Integer countByMasterIDAndAssortIDAndTitleAndFlag(String masterId, String AssortID,String title) throws Exception { return archiveDetailRepository.countByMasterIDAndAssortIDAndTitleAndFlag(masterId, AssortID, title); diff --git a/src/main/java/com/ann/service/impl/QueueService.java b/src/main/java/com/ann/service/impl/QueueService.java index 7142de6..1a39c7c 100644 --- a/src/main/java/com/ann/service/impl/QueueService.java +++ b/src/main/java/com/ann/service/impl/QueueService.java @@ -47,6 +47,7 @@ public class QueueService { ArchiveDetailService archiveDetailService; @Autowired MessageService messageService; + //---------------------定时器 public void doSomething(List all) throws Exception { if (all.size() > 0) { @@ -64,14 +65,14 @@ public class QueueService { if (outJson != null) { MessageDto messageDto = JSON.parseObject(outJson, MessageDto.class); if (messageDto.getSource().equals(InterfaceName.NURSE_DATA) && (messageDto.getReportAddress().endsWith(".jpg") - || messageDto.getReportAddress().endsWith(".JPG") )){ + || messageDto.getReportAddress().endsWith(".JPG"))) { messageSubordinate.setRemark("住院号:" + messageDto.getInpNo() + "pdf路径为空(可能出现下载问题)。。。"); } else { ArchiveMaster archiveMaster = archiveMasterService.findByInpNoAndVisitIdAndIsValid(messageDto.getInpNo(), messageDto.getVisitId()); Date date = new Date(); if (archiveMaster != null) { /**2021-1-26 等lis程序升级 去掉*/ - if (Objects.equals(messageDto.getType(), AliasName.INSPECTION_REPORT) && archiveMaster.getArchiveState().equals("已归档")){ + if (Objects.equals(messageDto.getType(), AliasName.INSPECTION_REPORT) && archiveMaster.getArchiveState().equals("已归档")) { messageSubordinate.setStatus(3); messageSubordinateService.save(messageSubordinate); continue; @@ -79,33 +80,28 @@ public class QueueService { /**2021-1-26 等lis程序升级 去掉*/ /**2021-4-25 等超声补传完 去掉*/ - if (Objects.equals(messageDto.getType(), AliasName.ULTRASONIC_REPORT) && archiveMaster.getArchiveState().equals("已归档")){ + if (Objects.equals(messageDto.getType(), AliasName.ULTRASONIC_REPORT) && archiveMaster.getArchiveState().equals("已归档")) { messageSubordinate.setStatus(3); messageSubordinateService.save(messageSubordinate); continue; } - /**2021-4-25 等超声补传完 去掉*/ - /**2021-4-25 等心电图补传完 去掉*/ - if (Objects.equals(messageDto.getType(), AliasName.EKG_REPORT) && archiveMaster.getArchiveState().equals("已归档")){ + if (Objects.equals(messageDto.getType(), AliasName.EKG_REPORT) && archiveMaster.getArchiveState().equals("已归档")) { messageSubordinate.setStatus(3); messageSubordinateService.save(messageSubordinate); continue; } - /**2021-4-25 等心电图补传完 去掉*/ - - if ( !Objects.equals(messageDto.getType(), AliasName.PATHOLOGY_REPORT) + if (!Objects.equals(messageDto.getType(), AliasName.PATHOLOGY_REPORT) /**2021-1-26 等lis程序升级 去掉*/ && !Objects.equals(messageDto.getType(), AliasName.INSPECTION_REPORT) - /**2021-1-26 等lis程序升级 去掉*/ /**2021-4-25 等超声补传完 去掉*/ && !Objects.equals(messageDto.getType(), AliasName.ULTRASONIC_REPORT) - /**2021-4-25 等超声补传完 去掉*/ /**2021-4-25 等心电图补传完 去掉*/ && !Objects.equals(messageDto.getType(), AliasName.EKG_REPORT) /**2021-4-25 等心电图补传完 去掉*/ + && !Objects.equals(messageDto.getType(), AliasName.NEW_PATHOLOGY_REPORT) && (archiveMaster.getArchiveState().equals("初审") || archiveMaster.getArchiveState().equals("已归档")) - ){ + ) { messageSubordinate.setStatus(3); messageSubordinateService.save(messageSubordinate); continue; @@ -119,40 +115,40 @@ public class QueueService { archiveDetailService.save(archiveDetail); } else { //如果是检验报告 单独处理 - if(Objects.equals(messageDto.getType(),AliasName.INSPECTION_REPORT)){ + if (Objects.equals(messageDto.getType(), AliasName.INSPECTION_REPORT)) { // 查询库中是否存在 如果存在就更新 archiveDetail = archiveDetailService.isExitCheckReportId(archiveMaster.getId(), messageDto.getType(), messageDto.getSource(), messageDto.getCheckReportId()); if (archiveDetail == null) { - archiveDetail = new ArchiveDetail(archiveMaster.getId(), date, messageDto.getType(), messageDto.getSource(),messageDto.getApplyId(), messageDto.getCheckReportId(), + archiveDetail = new ArchiveDetail(archiveMaster.getId(), date, messageDto.getType(), messageDto.getSource(), messageDto.getApplyId(), messageDto.getCheckReportId(), messageDto.getDetailType()); archiveDetailService.save(archiveDetail); } else { //更新时间 archiveDetail.setUpLoadDateTime(date); } - }else{ + } else { //获取下载下载 - if(Objects.equals(messageDto.getType(),AliasName.RADIATION_REPORT)) { + if (Objects.equals(messageDto.getType(), AliasName.RADIATION_REPORT)) { //PACS //获取报告单号|申请单号 DR20210430233|97497407 String checkReportId = messageDto.getCheckReportId(); //定义是否走下载逻辑 第一次推送需要下载,报告单号为空或非第一次推送不需要下载 boolean downFlag = false; - if(StringUtils.isNotBlank(checkReportId)){ + if (StringUtils.isNotBlank(checkReportId)) { //获报告单号DR20210430233 String[] checkReportIdArr = checkReportId.split("\\|"); checkReportId = checkReportIdArr[0]; //判断报告单号是否存在 - archiveDetail = archiveDetailService.isExitCheckReportId(archiveMaster.getId(), messageDto.getType(), messageDto.getSource(),checkReportId); + archiveDetail = archiveDetailService.isExitCheckReportId(archiveMaster.getId(), messageDto.getType(), messageDto.getSource(), checkReportId); if (archiveDetail == null) { - archiveDetail = new ArchiveDetail(archiveMaster.getId(), date, messageDto.getType(), messageDto.getSource(), messageDto.getApplyId(),checkReportId, + archiveDetail = new ArchiveDetail(archiveMaster.getId(), date, messageDto.getType(), messageDto.getSource(), messageDto.getApplyId(), checkReportId, messageDto.getDetailType()); archiveDetailService.save(archiveDetail); downFlag = true; } else { //横杠拼接申请单号 String applyId = archiveDetail.getApplyId(); - if(!applyId.contains(checkReportIdArr[1])) { + if (!applyId.contains(checkReportIdArr[1])) { archiveDetail.setApplyId(applyId + "-" + checkReportIdArr[1]); //更新时间 archiveDetail.setUpLoadDateTime(date); @@ -160,16 +156,30 @@ public class QueueService { } status = 1; } - }else{ + } else { messageSubordinate.setRemark("住院号为:" + messageDto.getInpNo() + "的checkReportId为空。。。。"); } - if(!downFlag) { + if (!downFlag) { messageSubordinate.setStatus(status); messageSubordinateService.save(messageSubordinate); continue; } - }else{ + } + //如果是新病历报告单独处理 + if (Objects.equals(messageDto.getType(), AliasName.NEW_PATHOLOGY_REPORT)) { + //获取报告单号|申请单号 如果存在更新不存在新增 + String checkReportId = messageDto.getCheckReportId(); + String applyId = messageDto.getApplyId(); + archiveDetail = archiveDetailService.isExitCheckReportIdAndApplyId(archiveMaster.getId(), checkReportId, applyId); + if (archiveDetail == null) { + archiveDetail = new ArchiveDetail(archiveMaster.getId(), date, "52", messageDto.getSource(), messageDto.getApplyId(), checkReportId,messageDto.getDetailType()); + archiveDetailService.save(archiveDetail); + }else { + //更新时间 + archiveDetail.setUpLoadDateTime(date); + } + } else { //非PACS // 查询库中是否存在 如果存在就更新 archiveDetail = archiveDetailService.isExit(archiveMaster.getId(), messageDto.getType(), messageDto.getSource(), messageDto.getApplyId()); @@ -184,7 +194,7 @@ public class QueueService { } } } - logger.error("保存文件数据耗时:"+(System.currentTimeMillis() - start1)); + logger.error("保存文件数据耗时:" + (System.currentTimeMillis() - start1)); String pdfPath = null; String tempPath = ""; Integer pageNum = 1; @@ -192,11 +202,11 @@ public class QueueService { // 护理单独做处理 boolean saveFlag = false; - if(archiveMaster.getEmrNurseCommitTime() == null ){ + if (archiveMaster.getEmrNurseCommitTime() == null) { archiveMaster.setEmrNurseCommitTime(messageDto.getEmrCommitTime()); saveFlag = true; - }else if(messageDto.getEmrCommitTime() != null && archiveMaster.getEmrNurseCommitTime() !=null && - !Objects.equals( messageDto.getEmrCommitTime().getTime(),archiveMaster.getEmrNurseCommitTime().getTime())){ + } else if (messageDto.getEmrCommitTime() != null && archiveMaster.getEmrNurseCommitTime() != null && + !Objects.equals(messageDto.getEmrCommitTime().getTime(), archiveMaster.getEmrNurseCommitTime().getTime())) { archiveMaster.setEmrNurseCommitTime(messageDto.getEmrCommitTime()); saveFlag = true; } @@ -205,23 +215,15 @@ public class QueueService { archiveMaster.setEmrNurseCmt("提交"); saveFlag = true; } - if(saveFlag){ + if (saveFlag) { archiveMasterService.save(archiveMaster); } String tempPageNum = ""; -// if (messageDto.getApplyId().lastIndexOf("_") != -1 ) { - //apply_id 000562390700_1_000562390700_0_1_JHR06.00.02_34_2.pdf -// if(archiveMaster.getInpNo().lastIndexOf("_") != -1){ - -// } -// tempPageNum = messageDto.getApplyId().substring(0, messageDto.getApplyId().indexOf(".pdf")); -// }else{ - // address ftp://10.6.0.155/2020-08-04/000562390700_1_000562390700_0_1_JHR06.00.02_34_2_0.pdf tempPageNum = address.substring(0, address.lastIndexOf("_")); // } - tempPageNum = tempPageNum.substring(tempPageNum.lastIndexOf("_") + 1, tempPageNum.length() ); - if(isInteger(tempPageNum)){ + tempPageNum = tempPageNum.substring(tempPageNum.lastIndexOf("_") + 1, tempPageNum.length()); + if (isInteger(tempPageNum)) { pageNum = Integer.valueOf(tempPageNum); } @@ -231,11 +233,11 @@ public class QueueService { // 医生单独做处理 boolean saveFlag = false; - if(archiveMaster.getEmrDoctorCommitTime() == null ){ + if (archiveMaster.getEmrDoctorCommitTime() == null) { archiveMaster.setEmrDoctorCommitTime(messageDto.getEmrCommitTime()); saveFlag = true; - }else if(messageDto.getEmrCommitTime() != null && archiveMaster.getEmrDoctorCommitTime() !=null && - !Objects.equals( messageDto.getEmrCommitTime().getTime(),archiveMaster.getEmrDoctorCommitTime().getTime())){ + } else if (messageDto.getEmrCommitTime() != null && archiveMaster.getEmrDoctorCommitTime() != null && + !Objects.equals(messageDto.getEmrCommitTime().getTime(), archiveMaster.getEmrDoctorCommitTime().getTime())) { archiveMaster.setEmrDoctorCommitTime(messageDto.getEmrCommitTime()); saveFlag = true; } @@ -244,14 +246,14 @@ public class QueueService { archiveMaster.setEmrDoctorCmt("提交"); saveFlag = true; } - if(saveFlag){ + if (saveFlag) { archiveMasterService.save(archiveMaster); } tempPath = messageDto.getType() + "~" + messageDto.getCaptionDateTime() + "~"; } else { // 20200518 给重症系统的文件排序 if (messageDto.getType().equals(AliasName.ICU_REPORT)) { - if(isInteger(messageDto.getCaptionDateTime())){ + if (isInteger(messageDto.getCaptionDateTime())) { pageNum = Integer.valueOf(messageDto.getCaptionDateTime()); } //重症如果是pdf @@ -288,12 +290,9 @@ public class QueueService { } } } - } else if (address.contains("http")){//新心电以http协议传 - logger.error("类型为:" + messageDto.getType()); + } else if (address.contains("http")) {//新心电以http协议传 if (Objects.equals(messageDto.getType(), AliasName.PETCT_REPORT)) { HttpDownloader httpDownloader = new HttpDownloader(null); - logger.error("核医学下载地址为URL:" + address); - logger.error("核医学下载文件名:" + address); httpDownloader.downLoadFromUrl(address, pdfFile.getName(), pdfFile.getParent()); pdfPath = pdfFile.getAbsolutePath(); } else { @@ -311,9 +310,9 @@ public class QueueService { } //金域外送报告解析 2021-05-06 - if (Objects.equals(messageDto.getType(), AliasName.INSPECTION_REPORT)){ - PdfUtils.base64StringToPDF(address,pdfFile.getAbsolutePath()); - pdfPath=pdfFile.getAbsolutePath(); + if (Objects.equals(messageDto.getType(), AliasName.INSPECTION_REPORT)) { + PdfUtils.base64StringToPDF(address, pdfFile.getAbsolutePath()); + pdfPath = pdfFile.getAbsolutePath(); } } } @@ -322,11 +321,11 @@ public class QueueService { // 转成格式 archiveDetail.setPageNumber(pageNum); archiveDetail.setPdfPath(pdfPath); - int i=archiveDetailService.countByMasterIDAndAssortIDAndTitleAndFlag(archiveDetail.getMasterID(),archiveDetail.getAssortID(),archiveDetail.getTitle()); + int i = archiveDetailService.countByMasterIDAndAssortIDAndTitleAndFlag(archiveDetail.getMasterID(), archiveDetail.getAssortID(), archiveDetail.getTitle()); //如果detail表有重复的分段数据,则把falg改为5(5为没人使用的自定义数字),同时修改修改完整性接口的sql // if(archiveDetailService.countByMasterIDAndAssortIDAndTitleAndFlag(archiveDetail.getMasterID(),archiveDetail.getAssortID(),archiveDetail.getTitle())>1) // { - // archiveDetail.setFlag("5"); + // archiveDetail.setFlag("5"); //} archiveDetailService.save(archiveDetail); @@ -346,11 +345,11 @@ public class QueueService { archiveDetailService.delete(archiveDetail.getId()); } } - logger.error("文件下载耗时:"+(System.currentTimeMillis() - start3)); + logger.error("文件下载耗时:" + (System.currentTimeMillis() - start3)); } else { messageSubordinate.setRemark("地址为空。。。。"); } - } else{ + } else { messageSubordinate.setRemark("住院号为:" + messageDto.getInpNo() + "的ArchiveMaster为空。。。。"); } } @@ -358,14 +357,14 @@ public class QueueService { } } catch (Exception e) { // 设置参数 - messageSubordinate.setRemark(e + ",问题发生时间:"+new Date()); + messageSubordinate.setRemark(e + ",问题发生时间:" + new Date()); // 报错删掉患者报告详情信息 if (archiveDetail != null) { if (archiveDetail.getId() != null) { archiveDetailService.delete(archiveDetail.getId()); } } - logger.error("messageId:"+messageId+"报错了:" ,e); + logger.error("messageId:" + messageId + "报错了:", e); } messageSubordinate.setStatus(status); @@ -390,38 +389,37 @@ public class QueueService { } - public void doSomethingByHIS() { try { while (true) { //循环开始处理 所有未处理的 List interfaceHisCaches = interfaceHisCacheService.findInterfaceHisCacheByState(); - if(CollectionUtils.isEmpty(interfaceHisCaches)){ + if (CollectionUtils.isEmpty(interfaceHisCaches)) { break; } doSomethingByHISMethod(interfaceHisCaches); } - }catch (Exception e){ - logger.error("出错咯!错误信息为{},以及错误行数为:{}" ,e,e.getStackTrace()[0]); + } catch (Exception e) { + logger.error("出错咯!错误信息为{},以及错误行数为:{}", e, e.getStackTrace()[0]); } } - private void doSomethingByHISMethod(List interfaceHisCaches){ - for (InterfaceHisCacheDto interfaceHisCacheDto: interfaceHisCaches) { + private void doSomethingByHISMethod(List interfaceHisCaches) { + for (InterfaceHisCacheDto interfaceHisCacheDto : interfaceHisCaches) { InterfaceHisCache interfaceHisCache = new InterfaceHisCache(); - BeanUtils.copyProperties(interfaceHisCacheDto,interfaceHisCache); - String type = null,remark = null,title = null,pdfPath = null,state = "2"; + BeanUtils.copyProperties(interfaceHisCacheDto, interfaceHisCache); + String type = null, remark = null, title = null, pdfPath = null, state = "2"; ArchiveDetail archiveDetail = null; - try{ + try { ArchiveMaster archiveMaster = archiveMasterService.findByInpNoAndVisitIdAndIsValid(interfaceHisCache.getInpNo(), interfaceHisCache.getVisitId()); - if(archiveMaster != null){ - if(interfaceHisCache.getType() != null){ + if (archiveMaster != null) { + if (interfaceHisCache.getType() != null) { //给type 属性赋值 - if(Objects.equals(interfaceHisCache.getType(),"0")){ + if (Objects.equals(interfaceHisCache.getType(), "0")) { type = AliasName.SOS; title = "临时医嘱"; - }else if(Objects.equals(interfaceHisCache.getType(),"1")){ + } else if (Objects.equals(interfaceHisCache.getType(), "1")) { type = AliasName.PRN; title = "长期医嘱"; } @@ -431,9 +429,9 @@ public class QueueService { Date date = new Date(); if (archiveDetail == null) { archiveDetail = new ArchiveDetail(archiveMaster.getId(), date, type, "HIS系统", title, - title ,1); + title, 1); archiveDetailService.save(archiveDetail); - }else{ + } else { //更新时间 archiveDetail.setUpLoadDateTime(date); } @@ -448,28 +446,28 @@ public class QueueService { archiveDetail.setPdfPath(pdfPath); archiveDetailService.save(archiveDetail); //删除FTP文件 - if(FTPUtil.deleteFile(interfaceHisCache.getPdfPath())){ + if (FTPUtil.deleteFile(interfaceHisCache.getPdfPath())) { // 成功 state = "1"; } - }else { + } else { remark = "下载失败"; } } - }else{ + } else { remark = "文件创建失败"; } - }else{ + } else { remark = "类型为空"; } - }else{ + } else { remark = "没有入院信息"; } - }catch (Exception e){ + } catch (Exception e) { remark = e.getMessage(); } - if(remark != null){ + if (remark != null) { // 报错删掉患者报告详情信息 if (archiveDetail != null) { try { @@ -480,12 +478,12 @@ public class QueueService { } } //赋值 - interfaceHisCache.setValue(state,remark,new Date()); + interfaceHisCache.setValue(state, remark, new Date()); interfaceHisCacheService.save(interfaceHisCache); } } - public boolean isInteger(String str) { + public boolean isInteger(String str) { Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); return pattern.matcher(str).matches(); }