diff --git a/collect-sdry/src/main/java/com/docus/server/collect/basic/ws/TBasicConverter.java b/collect-sdry/src/main/java/com/docus/server/collect/basic/ws/TBasicConverter.java index 248a073..4fb4619 100644 --- a/collect-sdry/src/main/java/com/docus/server/collect/basic/ws/TBasicConverter.java +++ b/collect-sdry/src/main/java/com/docus/server/collect/basic/ws/TBasicConverter.java @@ -5,13 +5,15 @@ import com.docus.core.util.XmlUtil; import com.docus.server.collect.infrastructure.dao.FlagEnum; import com.docus.server.record.pojo.dto.TBasicDTO; import com.docus.server.tool.ParamsUtils; -import com.docus.server.ws.convert.ITBasicConverter; +import com.docus.server.ws.convert.IConverter; +import org.springframework.stereotype.Component; import org.w3c.dom.Node; -public class TBasicConverter implements ITBasicConverter { +@Component("tBasicConverter") +public class TBasicConverter implements IConverter { @Override - public TBasicDTO xmlToConvertBasicDTO(String message, FlagEnum flagEnum) { + public TBasicDTO convert(String message, FlagEnum flagEnum) { XmlUtil xml = XmlUtil.of(message); //id-消息流水号 String serialId = null; diff --git a/collect-sdry/src/main/java/com/docus/server/collect/dept/ws/powerDeptConverter.java b/collect-sdry/src/main/java/com/docus/server/collect/dept/ws/PowerDeptConverter.java similarity index 87% rename from collect-sdry/src/main/java/com/docus/server/collect/dept/ws/powerDeptConverter.java rename to collect-sdry/src/main/java/com/docus/server/collect/dept/ws/PowerDeptConverter.java index 4db0a8e..00681f6 100644 --- a/collect-sdry/src/main/java/com/docus/server/collect/dept/ws/powerDeptConverter.java +++ b/collect-sdry/src/main/java/com/docus/server/collect/dept/ws/PowerDeptConverter.java @@ -1,15 +1,18 @@ package com.docus.server.collect.dept.ws; import com.docus.core.util.XmlUtil; +import com.docus.server.collect.infrastructure.dao.FlagEnum; import com.docus.server.sys.common.pojo.dto.DeptDTO; import com.docus.server.tool.ParamsUtils; -import com.docus.server.ws.convert.IPowerDeptConverter; +import com.docus.server.ws.convert.IConverter; +import org.springframework.stereotype.Component; import org.w3c.dom.Node; -public class powerDeptConverter implements IPowerDeptConverter { +@Component("powerDeptConverter") +public class PowerDeptConverter implements IConverter { @Override - public DeptDTO xmlToConvertDeptDTO(String message) { + public DeptDTO convert(String message, FlagEnum flagEnum) { //TODO: 根据协议进行解析。 XmlUtil xmlParseUtil = XmlUtil.of(message); Node msgIdNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/id/@extension"); @@ -37,5 +40,4 @@ public class powerDeptConverter implements IPowerDeptConverter { return deptDto; } - } diff --git a/collect-sdry/src/main/java/com/docus/server/collect/report/ReportConverter.java b/collect-sdry/src/main/java/com/docus/server/collect/report/ReportConverter.java new file mode 100644 index 0000000..efc5b12 --- /dev/null +++ b/collect-sdry/src/main/java/com/docus/server/collect/report/ReportConverter.java @@ -0,0 +1,158 @@ +package com.docus.server.collect.report; + +import com.alibaba.fastjson.JSONObject; +import com.docus.core.util.Func; +import com.docus.core.util.XmlUtil; +import com.docus.infrastructure.core.exception.BaseException; +import com.docus.server.collect.infrastructure.dao.FlagEnum; +import com.docus.server.collect.infrastructure.pojo.dto.ReportDTO; +import com.docus.server.tool.ParamsUtils; +import com.docus.server.tool.TableJsonRead; +import com.docus.server.ws.convert.IConverter; +import org.springframework.stereotype.Component; +import org.w3c.dom.Node; + +@Component("reportConverter") +public class ReportConverter implements IConverter { + + @Override + public ReportDTO convert(String message, FlagEnum flagEnum) { + //TODO: 根据协议进行解析。 + XmlUtil xmlUtil = XmlUtil.of(message); + Node msgNode = xmlUtil.getNode("/Request/Msg/ID"); + String msgId = msgNode.getTextContent(); + + TableJsonRead jsonRead = new TableJsonRead(); + JSONObject tableTypeJson = jsonRead.Read("data-config", "js-table-type.json", JSONObject.class); + String jsReportConfigXml = jsonRead.ReadContent("data-config", "js-report-config.xml"); + XmlUtil configXmlUtil = XmlUtil.of(jsReportConfigXml); + + Node inpatientNoXpathNode = configXmlUtil.getNode("/REPORT/INPATIENT_NO"); + String inpatientNoXpath = inpatientNoXpathNode.getTextContent(); + Node inpatientNoNode = xmlUtil.getNode(inpatientNoXpath); + String inpatientNo = inpatientNoNode.getTextContent(); + + Node jzhXpathNode = configXmlUtil.getNode("/REPORT/JZH"); + String jzhXpath = jzhXpathNode.getTextContent(); + Node jzhNode = xmlUtil.getNode(jzhXpath); + String jzh = jzhNode.getTextContent(); + + Node admissTimesXpathNode = configXmlUtil.getNode("/REPORT/ADMISS_TIMES"); + String admissTimesXpath = admissTimesXpathNode.getTextContent(); + Node admissTimesNode = xmlUtil.getNode(admissTimesXpath); + Integer admissTimes = Integer.valueOf(admissTimesNode.getTextContent()); + + Node serialnumXpathNode = configXmlUtil.getNode("/REPORT/SERIALNUM"); + String serialnumXpath = serialnumXpathNode.getTextContent(); + Node serialnumNode = xmlUtil.getNode(serialnumXpath); + String serialnum = serialnumNode.getTextContent(); + + Node fileTitleXpathNode = configXmlUtil.getNode("/REPORT/FILE_TITLE"); + String fileTitleXpath = fileTitleXpathNode.getTextContent(); + Node fileTitleNode = xmlUtil.getNode(fileTitleXpath); + String fileTitle = fileTitleNode.getTextContent(); + + Node downUrlXpathNode = configXmlUtil.getNode("/REPORT/DOWNURL"); + String downUrlXpath = downUrlXpathNode.getTextContent(); + Node downUrlNode = xmlUtil.getNode(downUrlXpath); + String downUrl = downUrlNode.getTextContent(); + + Node tableTypeXpathNode = configXmlUtil.getNode("/REPORT/TABLE_TYPE"); + String tableTypeXpath = tableTypeXpathNode.getTextContent(); + Node tableTypeNode = xmlUtil.getNode(tableTypeXpath); + String tableType = tableTypeNode.getTextContent(); + + + Node assortIdXpathNode = configXmlUtil.getNode("/REPORT/ASSORT_ID"); + String assortIdXpath = assortIdXpathNode.getTextContent(); + String assortId; + if (Func.isBlank(assortIdXpath)) { + // 如果没有配置 取value 属性,如果value也未配置 取 tableType 对应的json配置,最终方案默认 other 分段 + Node assortIdValueNode = assortIdXpathNode.getAttributes().getNamedItem("value"); + if (Func.isEmpty(assortIdValueNode)) { + assortId = assortIdValueNode.getNodeValue(); + } else { + assortId = tableTypeJson.getString(tableType); + } + if (Func.isBlank(assortId)) { + assortId = tableTypeJson.getString("other"); + } + } else { + Node assortIdNode = xmlUtil.getNode(assortIdXpath); + assortId = assortIdNode.getTextContent(); + } + + Node sysFlagXpathNode = configXmlUtil.getNode("/REPORT/SYSTEM_FLAG"); + String sysFlagXpath = sysFlagXpathNode.getTextContent(); + Node sysFlagNode = xmlUtil.getNode(sysFlagXpath); + String sysFlag = sysFlagNode.getTextContent(); + + Node fileSourceXpathNode = configXmlUtil.getNode("/REPORT/FILESOURCE"); + String fileSourceXpath = fileSourceXpathNode.getTextContent(); + String fileSource; + if (Func.isBlank(fileSourceXpath)) { + Node fileSourceValueNode = fileSourceXpathNode.getAttributes().getNamedItem("value"); + if (Func.isEmpty(fileSourceValueNode)) { + fileSource = null; + } else { + fileSource = fileSourceValueNode.getNodeValue(); + } + + } else { + Node fileSourceNode = xmlUtil.getNode(fileSourceXpath); + fileSource = fileSourceNode.getTextContent(); + } + + + Node fileStorageTypeXpathNode = configXmlUtil.getNode("/REPORT/FILE_STORAGE_TYPE"); + String fileStorageTypeXpath = fileStorageTypeXpathNode.getTextContent(); + String fileStorageType; + if (Func.isBlank(fileStorageTypeXpath)) { + Node filestoragetypeValueNode = fileStorageTypeXpathNode.getAttributes().getNamedItem("value"); + if (Func.isEmpty(filestoragetypeValueNode)) { + fileStorageType = "1"; + } else { + fileStorageType = filestoragetypeValueNode.getNodeValue(); + } + + } else { + Node filestoragetypeNode = xmlUtil.getNode(fileStorageTypeXpath); + fileStorageType = filestoragetypeNode.getTextContent(); + } + + ReportDTO reportDTO = new ReportDTO(); + reportDTO.setAdmisstimes(admissTimes); + reportDTO.setInpatientNo(inpatientNo); + reportDTO.setJzh(jzh); + reportDTO.setSerialnum(serialnum); + reportDTO.setFileTitle(fileTitle); + reportDTO.setDownUrl(downUrl); + reportDTO.setAssortId(assortId); + reportDTO.setSysFlag(sysFlag); + reportDTO.setFileSource(fileSource); + reportDTO.setFilestoragetype(fileStorageType); + + reportDTO.setParams(ParamsUtils.addParam("msgId", msgId).param()); + + valid(reportDTO); + return reportDTO; + } + + private void valid(ReportDTO reportDTO) { + + if (Func.isBlank(reportDTO.getInpatientNo())) { + throw new BaseException("住院号不能为空!"); + } + + if (Func.isEmpty(reportDTO.getAdmisstimes()) && Func.isBlank(reportDTO.getJzh())) { + throw new BaseException("当住院号与住院次数都为空时,住院流水号/记账号不能为空!"); + } + + if (Func.isBlank(reportDTO.getFileTitle())) { + throw new BaseException("文件名不能为空!"); + } + if (Func.isBlank(reportDTO.getDownUrl())) { + throw new BaseException("文件下载路径不能为空!"); + } + } +} diff --git a/collect-sdry/src/main/java/com/docus/server/collect/report/WsReportResultImpl.java b/collect-sdry/src/main/java/com/docus/server/collect/report/WsReportResultImpl.java new file mode 100644 index 0000000..ed34342 --- /dev/null +++ b/collect-sdry/src/main/java/com/docus/server/collect/report/WsReportResultImpl.java @@ -0,0 +1,20 @@ +package com.docus.server.collect.report; + +import com.docus.server.ws.IWsResult; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component("wsReportResultImpl") +public class WsReportResultImpl implements IWsResult { + + @Override + public String ok(Map params) { + return null; + } + + @Override + public String fail(Map params) { + + } +} diff --git a/collect-sdry/src/main/java/com/docus/server/collect/user/ws/powerUserConverter.java b/collect-sdry/src/main/java/com/docus/server/collect/user/ws/PowerUserConverter.java similarity index 88% rename from collect-sdry/src/main/java/com/docus/server/collect/user/ws/powerUserConverter.java rename to collect-sdry/src/main/java/com/docus/server/collect/user/ws/PowerUserConverter.java index afba057..686b083 100644 --- a/collect-sdry/src/main/java/com/docus/server/collect/user/ws/powerUserConverter.java +++ b/collect-sdry/src/main/java/com/docus/server/collect/user/ws/PowerUserConverter.java @@ -1,15 +1,18 @@ package com.docus.server.collect.user.ws; import com.docus.core.util.XmlUtil; +import com.docus.server.collect.infrastructure.dao.FlagEnum; import com.docus.server.sys.common.pojo.dto.UserDTO; import com.docus.server.tool.ParamsUtils; -import com.docus.server.ws.convert.IPowerUserConverter; +import com.docus.server.ws.convert.IConverter; +import org.springframework.stereotype.Component; import org.w3c.dom.Node; -public class powerUserConverter implements IPowerUserConverter { +@Component("powerUserConverter") +public class PowerUserConverter implements IConverter { @Override - public UserDTO xmlToConvertUserDTO(String message) { + public UserDTO convert(String message, FlagEnum flagEnum) { XmlUtil xmlParseUtil = XmlUtil.of(message); Node msgIdNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/id/@extension"); Node receiverNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/receiver/device/id/item/@extension"); @@ -39,4 +42,5 @@ public class powerUserConverter implements IPowerUserConverter { return userDTO; } + } diff --git a/common-collect/src/main/java/com/docus/server/collect/infrastructure/dao/CollectTypeEnum.java b/common-collect/src/main/java/com/docus/server/collect/infrastructure/dao/CollectTypeEnum.java index f8e5432..0bd0b76 100644 --- a/common-collect/src/main/java/com/docus/server/collect/infrastructure/dao/CollectTypeEnum.java +++ b/common-collect/src/main/java/com/docus/server/collect/infrastructure/dao/CollectTypeEnum.java @@ -6,7 +6,11 @@ public enum CollectTypeEnum implements IIntegerEnum { WS_XML_DEPT(0, "ws同步的科室数据"), WS_XML_USER(1, "ws同步的用户数据"), - WS_XML_BASIC(2, "ws同步的病患数据"); + WS_XML_BASIC(2, "ws同步的病患数据"), + WS_XML_SA_REPORT(2, "ws同步的手麻报告数据"), + WS_XML_ICU_REPORT(2, "ws同步的重症报告数据"), + WS_XML_INSERT_INSPECTION_REPORT(2, "ws同步的新增检查报告数据"), + WS_XML_UPDATE_INSPECTION_REPORT(2, "ws同步的更新检查报告数据"); private Integer value; private String display; diff --git a/common-collect/src/main/java/com/docus/server/collect/infrastructure/mapper/TaskConfigMapper.java b/common-collect/src/main/java/com/docus/server/collect/infrastructure/mapper/TaskConfigMapper.java index c5cfcb6..174e4fe 100644 --- a/common-collect/src/main/java/com/docus/server/collect/infrastructure/mapper/TaskConfigMapper.java +++ b/common-collect/src/main/java/com/docus/server/collect/infrastructure/mapper/TaskConfigMapper.java @@ -1,7 +1,7 @@ package com.docus.server.collect.infrastructure.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.docus.server.collect.domain.TaskConfig; +import com.docus.server.collect.infrastructure.pojo.domain.TaskConfig; import org.apache.ibatis.annotations.Mapper; @Mapper diff --git a/common-collect/src/main/java/com/docus/server/collect/domain/TaskConfig.java b/common-collect/src/main/java/com/docus/server/collect/infrastructure/pojo/domain/TaskConfig.java similarity index 96% rename from common-collect/src/main/java/com/docus/server/collect/domain/TaskConfig.java rename to common-collect/src/main/java/com/docus/server/collect/infrastructure/pojo/domain/TaskConfig.java index bab5b39..1762261 100644 --- a/common-collect/src/main/java/com/docus/server/collect/domain/TaskConfig.java +++ b/common-collect/src/main/java/com/docus/server/collect/infrastructure/pojo/domain/TaskConfig.java @@ -1,9 +1,8 @@ -package com.docus.server.collect.domain; +package com.docus.server.collect.infrastructure.pojo.domain; import com.docus.server.tool.DateSpiltUtil; import com.docus.server.tool.PeriodTime; import lombok.Data; -import lombok.Getter; import java.util.Date; import java.util.List; diff --git a/common-collect/src/main/java/com/docus/server/collect/infrastructure/pojo/dto/ReportDTO.java b/common-collect/src/main/java/com/docus/server/collect/infrastructure/pojo/dto/ReportDTO.java new file mode 100644 index 0000000..3f37f55 --- /dev/null +++ b/common-collect/src/main/java/com/docus/server/collect/infrastructure/pojo/dto/ReportDTO.java @@ -0,0 +1,75 @@ +package com.docus.server.collect.infrastructure.pojo.dto; + +import lombok.Data; + +import java.util.Map; + +/** + * 报告推送信息 + */ +@Data +public class ReportDTO { + /** + * 住院号 + */ + private String inpatientNo; + /** + * 记账号/住院流水号 + */ + private String jzh; + /** + * 住院次数 + */ + private Integer admisstimes; + /** + * 采集来源系统 + */ + private String sysFlag; + /** + * 下载地址 + */ + private String downUrl; + /** + * 文件名 + */ + private String fileTitle; + /** + * 采集流水号/文件唯一id + */ + private String serialnum; + + /** + * 文件分类id + */ + private String assortId; + + /** + * 采集类型(文件来源 1:采集器;2:扫描生产软件) + */ + private String fileSource; + + /** + * 文件保存位置类型 1:服务器本地;2:ftp服务器;3:共享文件夹 + */ + private String filestoragetype; + + /** + * 下载对应任务id ,接收处理 + */ + private Long taskId; + + /** + * 业务病案主键 + */ + private String patientId; + + /** + * 下载路径类型 1:url,2:base64,3:url base64,4:共享文件,5:本地文件base64 + */ + private Integer downtype = 1; + + /** + * 拓展参数 + */ + private Map params; +} diff --git a/common-collect/src/main/java/com/docus/server/collect/job/basic/AbstractTBasicCollectJob.java b/common-collect/src/main/java/com/docus/server/collect/job/basic/AbstractTBasicCollectJob.java index ef2e3d2..8e0d8d5 100644 --- a/common-collect/src/main/java/com/docus/server/collect/job/basic/AbstractTBasicCollectJob.java +++ b/common-collect/src/main/java/com/docus/server/collect/job/basic/AbstractTBasicCollectJob.java @@ -1,7 +1,7 @@ package com.docus.server.collect.job.basic; import com.docus.core.util.Func; -import com.docus.server.collect.domain.TaskConfig; +import com.docus.server.collect.infrastructure.pojo.domain.TaskConfig; import com.docus.server.collect.service.ITaskConfigService; import com.docus.server.record.pojo.dto.TBasicDTO; import com.docus.server.record.service.ITBasicService; diff --git a/common-collect/src/main/java/com/docus/server/collect/job/dept/AbstractDeptCollectJob.java b/common-collect/src/main/java/com/docus/server/collect/job/dept/AbstractDeptCollectJob.java index e5eba59..e15f8e3 100644 --- a/common-collect/src/main/java/com/docus/server/collect/job/dept/AbstractDeptCollectJob.java +++ b/common-collect/src/main/java/com/docus/server/collect/job/dept/AbstractDeptCollectJob.java @@ -1,7 +1,7 @@ package com.docus.server.collect.job.dept; import com.docus.core.util.Func; -import com.docus.server.collect.domain.TaskConfig; +import com.docus.server.collect.infrastructure.pojo.domain.TaskConfig; import com.docus.server.collect.service.ITaskConfigService; import com.docus.server.sys.common.pojo.dto.DeptDTO; import com.docus.server.sys.service.IPowerDeptService; diff --git a/common-collect/src/main/java/com/docus/server/collect/job/user/AbstractUserCollectJob.java b/common-collect/src/main/java/com/docus/server/collect/job/user/AbstractUserCollectJob.java index 107c9b6..11eede5 100644 --- a/common-collect/src/main/java/com/docus/server/collect/job/user/AbstractUserCollectJob.java +++ b/common-collect/src/main/java/com/docus/server/collect/job/user/AbstractUserCollectJob.java @@ -1,7 +1,7 @@ package com.docus.server.collect.job.user; import com.docus.core.util.Func; -import com.docus.server.collect.domain.TaskConfig; +import com.docus.server.collect.infrastructure.pojo.domain.TaskConfig; import com.docus.server.collect.service.ITaskConfigService; import com.docus.server.sys.common.pojo.dto.UserDTO; import com.docus.server.sys.service.IPowerUserService; diff --git a/common-collect/src/main/java/com/docus/server/collect/service/ITaskConfigService.java b/common-collect/src/main/java/com/docus/server/collect/service/ITaskConfigService.java index c311b49..88b830b 100644 --- a/common-collect/src/main/java/com/docus/server/collect/service/ITaskConfigService.java +++ b/common-collect/src/main/java/com/docus/server/collect/service/ITaskConfigService.java @@ -1,6 +1,6 @@ package com.docus.server.collect.service; -import com.docus.server.collect.domain.TaskConfig; +import com.docus.server.collect.infrastructure.pojo.domain.TaskConfig; import java.util.Date; diff --git a/common-collect/src/main/java/com/docus/server/collect/service/impl/TaskConfigServiceImpl.java b/common-collect/src/main/java/com/docus/server/collect/service/impl/TaskConfigServiceImpl.java index 874b6b8..ddf6d14 100644 --- a/common-collect/src/main/java/com/docus/server/collect/service/impl/TaskConfigServiceImpl.java +++ b/common-collect/src/main/java/com/docus/server/collect/service/impl/TaskConfigServiceImpl.java @@ -1,7 +1,7 @@ package com.docus.server.collect.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.docus.server.collect.domain.TaskConfig; +import com.docus.server.collect.infrastructure.pojo.domain.TaskConfig; import com.docus.server.collect.infrastructure.mapper.TaskConfigMapper; import com.docus.server.collect.service.ITaskConfigService; import org.springframework.stereotype.Service; diff --git a/common-collect/src/main/java/com/docus/server/tool/TableJsonRead.java b/common-collect/src/main/java/com/docus/server/tool/TableJsonRead.java new file mode 100644 index 0000000..8811857 --- /dev/null +++ b/common-collect/src/main/java/com/docus/server/tool/TableJsonRead.java @@ -0,0 +1,185 @@ +package com.docus.server.tool; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.util.StringUtils; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStreamReader; + +public class TableJsonRead { + + /** + * 读取数据结构 + * @param path 路径后缀 + * @param fileName 文件名称 + * @return + */ + public T Read(String path,String fileName,Class clazz){ + String currentPath=CurrentPath(); + path = currentPath+"\\"+path; + StringBuilder sb = new StringBuilder(); + T dto =null; + File file = new File(path+"\\"+fileName); + try { + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + } + if (!file.exists()) { + try { + file.createNewFile(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } else { + BufferedReader bufferedReader = null; + bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file))); + String line; + while (!StringUtils.isEmpty(line = bufferedReader.readLine())) { + sb.append(line); + } + if (sb.length() > 0) { + ObjectMapper objectMapper = new ObjectMapper(); + //dto = (T)JSONObject.parse(sb.toString()); + dto= objectMapper.readValue(sb.toString(), clazz); + //dto = objectMapper.convertValue(o, new TypeReference() { }); + } + bufferedReader.close(); + } + + return dto; + } + catch (Exception ex){ + ex.printStackTrace(); + return null; + } + } + + public T Read(File file,Class clazz) { + StringBuilder sb = new StringBuilder(); + T dto =null; + try { + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + } + if (!file.exists()) { + try { + file.createNewFile(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } else { + BufferedReader bufferedReader = null; + bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file))); + String line; + while (!StringUtils.isEmpty(line = bufferedReader.readLine())) { + sb.append(line); + } + if (sb.length() > 0) { + ObjectMapper objectMapper = new ObjectMapper(); + //dto = (T)JSONObject.parse(sb.toString()); + dto= objectMapper.readValue(sb.toString(), clazz); + //dto = objectMapper.convertValue(o, new TypeReference() { }); + } + bufferedReader.close(); + } + + return dto; + } + catch (Exception ex){ + ex.printStackTrace(); + return null; + } + } + /** + * 取得当前jar路径 + * @return + */ + private String CurrentPath(){ + File dir = new File("."); + String currentpath =""; + try { + currentpath = dir.getCanonicalPath(); + } catch (IOException e) { + e.printStackTrace(); + } + return currentpath; + } + + /** + * 读取文件内容 + * @param path + * @param fileName + * @return + */ + public String ReadContent(String path,String fileName){ + String currentPath=CurrentPath(); + path = currentPath+"\\"+path; + StringBuilder sb = new StringBuilder(); + File file = new File(path+"\\"+fileName); + try { + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + } + if (!file.exists()) { + try { + file.createNewFile(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } else { + BufferedReader bufferedReader = null; + bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file))); + String line; + while (!StringUtils.isEmpty(line = bufferedReader.readLine())) { + sb.append(line); + } + + bufferedReader.close(); + } + + return sb.toString(); + } + catch (Exception ex){ + ex.printStackTrace(); + return null; + } + } + + /** + * 保存json至文件 + * @param path 路径后缀 + * @param fileName 文件名称 + * @param data json信息 + * @return + */ + public void Save(String path,String fileName,String data){ + String currentPath=CurrentPath(); + path = currentPath+"\\"+path; + FileWriter fwriter = null; + try { + File file = new File(path); + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + } + fwriter = new FileWriter(path+"\\"+fileName); + fwriter.write(data); + } catch (IOException ex) { + ex.printStackTrace(); + } finally { + try { + fwriter.flush(); + fwriter.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + } + +} diff --git a/common-collect/src/main/java/com/docus/server/ws/ITaskOriginalMessageService.java b/common-collect/src/main/java/com/docus/server/ws/ITaskOriginalMessageService.java index cc2b57e..8644ed4 100644 --- a/common-collect/src/main/java/com/docus/server/ws/ITaskOriginalMessageService.java +++ b/common-collect/src/main/java/com/docus/server/ws/ITaskOriginalMessageService.java @@ -4,7 +4,7 @@ import com.docus.server.collect.infrastructure.dao.CollectTypeEnum; public interface ITaskOriginalMessageService { - long insertTaskOriginalMessage(String deptXml, CollectTypeEnum collectType); + long insertTaskOriginalMessage(String xml, CollectTypeEnum collectType); void updateTaskOriginalMessage(long id); diff --git a/common-collect/src/main/java/com/docus/server/ws/convert/IConverter.java b/common-collect/src/main/java/com/docus/server/ws/convert/IConverter.java new file mode 100644 index 0000000..138e03d --- /dev/null +++ b/common-collect/src/main/java/com/docus/server/ws/convert/IConverter.java @@ -0,0 +1,9 @@ +package com.docus.server.ws.convert; + +import com.docus.server.collect.infrastructure.dao.FlagEnum; + +public interface IConverter { + + T convert(String message, FlagEnum flagEnum); + +} diff --git a/common-collect/src/main/java/com/docus/server/ws/convert/IPowerDeptConverter.java b/common-collect/src/main/java/com/docus/server/ws/convert/IPowerDeptConverter.java deleted file mode 100644 index 4afbb79..0000000 --- a/common-collect/src/main/java/com/docus/server/ws/convert/IPowerDeptConverter.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.docus.server.ws.convert; - -import com.docus.server.sys.common.pojo.dto.DeptDTO; - -public interface IPowerDeptConverter { - /** - * 解析 ws dept xml - * - * @param message - * @return - */ - DeptDTO xmlToConvertDeptDTO(String message); - -} diff --git a/common-collect/src/main/java/com/docus/server/ws/convert/IPowerUserConverter.java b/common-collect/src/main/java/com/docus/server/ws/convert/IPowerUserConverter.java deleted file mode 100644 index 1fe51be..0000000 --- a/common-collect/src/main/java/com/docus/server/ws/convert/IPowerUserConverter.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.docus.server.ws.convert; - -import com.docus.server.sys.common.pojo.dto.UserDTO; - -public interface IPowerUserConverter { - /** - * 解析 ws user xml - * - * @param message - * @return - */ - UserDTO xmlToConvertUserDTO(String message); - -} diff --git a/common-collect/src/main/java/com/docus/server/ws/convert/ITBasicConverter.java b/common-collect/src/main/java/com/docus/server/ws/convert/ITBasicConverter.java deleted file mode 100644 index 4167e8e..0000000 --- a/common-collect/src/main/java/com/docus/server/ws/convert/ITBasicConverter.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.docus.server.ws.convert; - -import com.docus.server.collect.infrastructure.dao.FlagEnum; -import com.docus.server.record.pojo.dto.TBasicDTO; - -public interface ITBasicConverter { - /** - * 解析 ws basic xml - * - * @param message - * @param update - * @return - */ - TBasicDTO xmlToConvertBasicDTO(String message, FlagEnum update); - -} diff --git a/common-collect/src/main/java/com/docus/server/ws/impl/BasicServiceImpl.java b/common-collect/src/main/java/com/docus/server/ws/impl/BasicServiceImpl.java index 6d8ab88..71986ab 100644 --- a/common-collect/src/main/java/com/docus/server/ws/impl/BasicServiceImpl.java +++ b/common-collect/src/main/java/com/docus/server/ws/impl/BasicServiceImpl.java @@ -9,7 +9,7 @@ import com.docus.server.tool.ParamsUtils; import com.docus.server.ws.IBasicService; import com.docus.server.ws.ITaskOriginalMessageService; import com.docus.server.ws.IWsResult; -import com.docus.server.ws.convert.ITBasicConverter; +import com.docus.server.ws.convert.IConverter; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -28,11 +28,11 @@ import javax.annotation.Resource; public class BasicServiceImpl implements IBasicService { @Resource(name = "wsDeptResultImpl") private IWsResult wsResult; + @Resource(name = "tBasicConverter") + private IConverter converter; @Resource private ITBasicService tBasicService; @Resource - private ITBasicConverter converter; - @Resource private ITaskOriginalMessageService taskOriginalMessageService; @Override @@ -48,7 +48,7 @@ public class BasicServiceImpl implements IBasicService { long id = 0; try { id = taskOriginalMessageService.insertTaskOriginalMessage(message, CollectTypeEnum.WS_XML_BASIC); - tBasicDTO = converter.xmlToConvertBasicDTO(message, FlagEnum.INSERT); + tBasicDTO = (TBasicDTO) converter.convert(message, FlagEnum.INSERT); tBasicService.insertTBasic(tBasicDTO); return wsResult.ok(tBasicDTO.getParams()); } catch (Exception e) { @@ -71,7 +71,7 @@ public class BasicServiceImpl implements IBasicService { long id = 0; try { id = taskOriginalMessageService.insertTaskOriginalMessage(message, CollectTypeEnum.WS_XML_BASIC); - tBasicDTO = converter.xmlToConvertBasicDTO(message, FlagEnum.UPDATE); + tBasicDTO = (TBasicDTO) converter.convert(message, FlagEnum.UPDATE); tBasicService.updateTBasic(tBasicDTO); return wsResult.ok(tBasicDTO.getParams()); } catch (Exception e) { diff --git a/common-collect/src/main/java/com/docus/server/ws/impl/DeptServerImpl.java b/common-collect/src/main/java/com/docus/server/ws/impl/DeptServerImpl.java index 8063f37..ca92b1c 100644 --- a/common-collect/src/main/java/com/docus/server/ws/impl/DeptServerImpl.java +++ b/common-collect/src/main/java/com/docus/server/ws/impl/DeptServerImpl.java @@ -1,12 +1,13 @@ package com.docus.server.ws.impl; import com.docus.server.collect.infrastructure.dao.CollectTypeEnum; +import com.docus.server.collect.infrastructure.dao.FlagEnum; import com.docus.server.collect.service.CollectService; import com.docus.server.sys.common.pojo.dto.DeptDTO; import com.docus.server.ws.IDeptServer; import com.docus.server.ws.ITaskOriginalMessageService; import com.docus.server.ws.IWsResult; -import com.docus.server.ws.convert.IPowerDeptConverter; +import com.docus.server.ws.convert.IConverter; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -21,11 +22,11 @@ import javax.annotation.Resource; public class DeptServerImpl implements IDeptServer { @Resource(name = "wsBasicResultImpl") private IWsResult wsResult; + @Resource(name = "powerDeptConverter") + private IConverter converter; @Resource private CollectService collectService; @Resource - private IPowerDeptConverter converter; - @Resource private ITaskOriginalMessageService taskOriginalMessageService; @Override @@ -38,7 +39,7 @@ public class DeptServerImpl implements IDeptServer { try { //此处需要存储原xml内容。 id = taskOriginalMessageService.insertTaskOriginalMessage(message, CollectTypeEnum.WS_XML_DEPT); - deptDTO = converter.xmlToConvertDeptDTO(message); + deptDTO = (DeptDTO) converter.convert(message, FlagEnum.INSERT); collectService.toInsertOrUpdateDept(deptDTO); return wsResult.ok(deptDTO.getParams()); } catch (Exception e) { diff --git a/common-collect/src/main/java/com/docus/server/ws/impl/ReportServerImpl.java b/common-collect/src/main/java/com/docus/server/ws/impl/ReportServerImpl.java new file mode 100644 index 0000000..290c526 --- /dev/null +++ b/common-collect/src/main/java/com/docus/server/ws/impl/ReportServerImpl.java @@ -0,0 +1,548 @@ +package com.docus.server.ws.impl; + +import com.alibaba.fastjson.JSONObject; +import com.docus.core.util.DateUtil; +import com.docus.core.util.Func; +import com.docus.core.util.XmlUtil; +import com.docus.infrastructure.core.exception.BaseException; +import com.docus.infrastructure.core.utils.TableJsonRead; +import com.docus.server.collect.infrastructure.dao.CollectTypeEnum; +import com.docus.server.collect.infrastructure.dao.FlagEnum; +import com.docus.server.collect.infrastructure.pojo.dto.ReportDTO; +import com.docus.server.collect.service.CollectService; +import com.docus.server.tool.IdUtil; +import com.docus.server.ws.IReportServer; +import com.docus.server.ws.ITaskOriginalMessageService; +import com.docus.server.ws.IWsResult; +import com.docus.server.ws.convert.IConverter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.w3c.dom.Node; + +import javax.annotation.Resource; +import java.util.Date; + +/** + * @author wyb + * @date 2023年3月3日13:42:36 + */ +@Service +@Slf4j +public class ReportServerImpl implements IReportServer { + @Resource(name = "wsReportResultImpl") + private IWsResult wsResult; + @Resource(name = "reportConverter") + private IConverter converter; + @Resource + private CollectService collectService; + @Resource + private ITaskOriginalMessageService taskOriginalMessageService; + @Resource + private ReportService reportService; + + @Override + public String pushSAReport(String message) { + log.info("收到手麻消息:{}", message); + ReportDTO reportDTO = new ReportDTO(); + long id = 0; + try { + id = taskOriginalMessageService.insertTaskOriginalMessage(message, CollectTypeEnum.WS_XML_SA_REPORT); + reportDTO = (ReportDTO) converter.convert(message, FlagEnum.INSERT); + medicalRecordService.receive(medicalRecord); + return wsResult.ok(reportDTO.getParams()); + } catch (Exception e) { + log.error(e.getMessage(), e); + taskOriginalMessageService.updateTaskOriginalMessage(id); + reportDTO.getParams().put("msg", e.getMessage()); + return wsResult.fail(reportDTO.getParams()); + } + + + // 待做 + log.info("收到手麻消息:{}", saReportMessage); + String msgId = ""; + try { + XmlUtil xmlUtil = XmlUtil.of(saReportMessage); + Node msgNode = xmlUtil.getNode("/Request/Msg/ID"); + msgId = msgNode.getTextContent(); + ReportDto reportDto = getReportDtoByJSXML(xmlUtil); + verifyReportDto(reportDto); + reportService.report(reportDto); + return JSXMLResult.success(msgId); + } catch (BaseException baseException) { + log.error(baseException.getMessage(), baseException); + return JSXMLResult.failed(msgId, baseException.getMessage()); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + return JSXMLResult.failed(msgId, "系统故障!"); + } + } + + + /** + * 嘉时自定义接收接口使用,从xml工具读取返回文件上报需要的数据 + * + * @param xmlUtil xml消息工具封装 + * @return 文件上报数据 + */ + public ReportDto getReportDtoByJSXML(XmlUtil xmlUtil) { + TableJsonRead jsonRead = new TableJsonRead(); + JSONObject tableTypeJson = jsonRead.Read("data-config", "js-table-type.json", JSONObject.class); + String jsReportConfigXml = jsonRead.ReadContent("data-config", "js-report-config.xml"); + XmlUtil configXmlUtil = XmlUtil.of(jsReportConfigXml); + + Node inpatientNoXpathNode = configXmlUtil.getNode("/REPORT/INPATIENT_NO"); + String inpatientNoXpath = inpatientNoXpathNode.getTextContent(); + Node inpatientNoNode = xmlUtil.getNode(inpatientNoXpath); + String inpatientNo = inpatientNoNode.getTextContent(); + + Node jzhXpathNode = configXmlUtil.getNode("/REPORT/JZH"); + String jzhXpath = jzhXpathNode.getTextContent(); + Node jzhNode = xmlUtil.getNode(jzhXpath); + String jzh = jzhNode.getTextContent(); + + Node admissTimesXpathNode = configXmlUtil.getNode("/REPORT/ADMISS_TIMES"); + String admissTimesXpath = admissTimesXpathNode.getTextContent(); + Node admissTimesNode = xmlUtil.getNode(admissTimesXpath); + Integer admissTimes = Integer.valueOf(admissTimesNode.getTextContent()); + + Node serialnumXpathNode = configXmlUtil.getNode("/REPORT/SERIALNUM"); + String serialnumXpath = serialnumXpathNode.getTextContent(); + Node serialnumNode = xmlUtil.getNode(serialnumXpath); + String serialnum = serialnumNode.getTextContent(); + + Node fileTitleXpathNode = configXmlUtil.getNode("/REPORT/FILE_TITLE"); + String fileTitleXpath = fileTitleXpathNode.getTextContent(); + Node fileTitleNode = xmlUtil.getNode(fileTitleXpath); + String fileTitle = fileTitleNode.getTextContent(); + + Node downUrlXpathNode = configXmlUtil.getNode("/REPORT/DOWNURL"); + String downUrlXpath = downUrlXpathNode.getTextContent(); + Node downUrlNode = xmlUtil.getNode(downUrlXpath); + String downUrl = downUrlNode.getTextContent(); + + Node tableTypeXpathNode = configXmlUtil.getNode("/REPORT/TABLE_TYPE"); + String tableTypeXpath = tableTypeXpathNode.getTextContent(); + Node tableTypeNode = xmlUtil.getNode(tableTypeXpath); + String tableType = tableTypeNode.getTextContent(); + + + Node assortIdXpathNode = configXmlUtil.getNode("/REPORT/ASSORT_ID"); + String assortIdXpath = assortIdXpathNode.getTextContent(); + String assortId; + if (Func.isBlank(assortIdXpath)) { + // 如果没有配置 取value 属性,如果value也未配置 取 tableType 对应的json配置,最终方案默认 other 分段 + Node assortIdValueNode = assortIdXpathNode.getAttributes().getNamedItem("value"); + if (Func.isEmpty(assortIdValueNode)) { + assortId = assortIdValueNode.getNodeValue(); + } else { + assortId = tableTypeJson.getString(tableType); + } + if (Func.isBlank(assortId)) { + assortId = tableTypeJson.getString("other"); + } + } else { + Node assortIdNode = xmlUtil.getNode(assortIdXpath); + assortId = assortIdNode.getTextContent(); + } + + Node sysFlagXpathNode = configXmlUtil.getNode("/REPORT/SYSTEM_FLAG"); + String sysFlagXpath = sysFlagXpathNode.getTextContent(); + Node sysFlagNode = xmlUtil.getNode(sysFlagXpath); + String sysFlag = sysFlagNode.getTextContent(); + + Node fileSourceXpathNode = configXmlUtil.getNode("/REPORT/FILESOURCE"); + String fileSourceXpath = fileSourceXpathNode.getTextContent(); + String fileSource; + if (Func.isBlank(fileSourceXpath)) { + Node fileSourceValueNode = fileSourceXpathNode.getAttributes().getNamedItem("value"); + if (Func.isEmpty(fileSourceValueNode)) { + fileSource = null; + } else { + fileSource = fileSourceValueNode.getNodeValue(); + } + + } else { + Node fileSourceNode = xmlUtil.getNode(fileSourceXpath); + fileSource = fileSourceNode.getTextContent(); + } + + + Node fileStorageTypeXpathNode = configXmlUtil.getNode("/REPORT/FILE_STORAGE_TYPE"); + String fileStorageTypeXpath = fileStorageTypeXpathNode.getTextContent(); + String fileStorageType; + if (Func.isBlank(fileStorageTypeXpath)) { + Node filestoragetypeValueNode = fileStorageTypeXpathNode.getAttributes().getNamedItem("value"); + if (Func.isEmpty(filestoragetypeValueNode)) { + fileStorageType = "1"; + } else { + fileStorageType = filestoragetypeValueNode.getNodeValue(); + } + + } else { + Node filestoragetypeNode = xmlUtil.getNode(fileStorageTypeXpath); + fileStorageType = filestoragetypeNode.getTextContent(); + } + + ReportDto reportDto = new ReportDto(); + reportDto.setAdmisstimes(admissTimes); + reportDto.setInpatientNo(inpatientNo); + reportDto.setJzh(jzh); + reportDto.setSerialnum(serialnum); + reportDto.setFileTitle(fileTitle); + reportDto.setDownUrl(downUrl); + reportDto.setAssortId(assortId); + reportDto.setSysFlag(sysFlag); + reportDto.setFileSource(fileSource); + reportDto.setFilestoragetype(fileStorageType); + return reportDto; + } + + @Override + public String pushICUReport(String icuReportMessage) { + log.info("收到重症消息:{}", icuReportMessage); + String msgId = ""; + try { + XmlUtil xmlUtil = XmlUtil.of(icuReportMessage); + Node msgNode = xmlUtil.getNode("/Request/Msg/ID"); + msgId = msgNode.getTextContent(); + ReportDto reportDto = getReportDtoByJSXML(xmlUtil); + verifyReportDto(reportDto); + reportService.report(reportDto); + return JSXMLResult.success(msgId); + } catch (BaseException baseException) { + log.error(baseException.getMessage(), baseException); + return JSXMLResult.failed(msgId, baseException.getMessage()); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + return JSXMLResult.failed(msgId, "系统故障!"); + } + } + + @Override + public String pushAddInspectionReport(String inspectionReportMessage) { + log.info("收到检查报告新增消息:{}", inspectionReportMessage); + String msgId = ""; + String sender = ""; + String receiver = ""; + try { + XmlUtil xmlUtil = XmlUtil.of(inspectionReportMessage); + msgId = xmlUtil.getNode("/POOR_HIP1008/id/@extension").getNodeValue(); + sender = xmlUtil.getNode("/POOR_HIP1008/sender/device/id/item/@extension").getNodeValue(); + receiver = xmlUtil.getNode("/POOR_HIP1008/receiver/device/id/item/@extension").getNodeValue(); + + ReportDto reportDto = getReportDtoByInspectionInsert(xmlUtil); + verifyReportDto(reportDto); + reportService.report(reportDto); + return insertSuccess(msgId, sender, receiver); + } catch (BaseException baseException) { + log.error(baseException.getMessage(), baseException); + return insertFailed(msgId, sender, receiver, baseException.getMessage()); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + return insertFailed(msgId, sender, receiver, "系统错误!"); + } + } + + + @Override + public String pushUpdateInspectionReport(String inspectionReportMessage) { + log.info("收到检查报告更新消息{}", inspectionReportMessage); + String msgId = ""; + String sender = ""; + String receiver = ""; + try { + XmlUtil xmlUtil = XmlUtil.of(inspectionReportMessage); + msgId = xmlUtil.getNode("/POOR_HIP1009/id/@extension").getNodeValue(); + sender = xmlUtil.getNode("/POOR_HIP1009/sender/device/id/item/@extension").getNodeValue(); + receiver = xmlUtil.getNode("/POOR_HIP1009/receiver/device/id/item/@extension").getNodeValue(); + + ReportDto reportDto = getReportDtoByInspectionUpdate(xmlUtil); + verifyReportDto(reportDto); + reportService.report(reportDto); + return updateSuccess(msgId, sender, receiver); + } catch (BaseException baseException) { + log.error(baseException.getMessage(), baseException); + return updateFailed(msgId, sender, receiver, baseException.getMessage()); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + return updateFailed(msgId, sender, receiver, "系统错误"); + } + + } + + /** + * 验证上报文件的信息 + * + * @param reportDto 上报文件的信息 + * @throws BaseException 验证不通过抛出业务异常 + */ + private void verifyReportDto(ReportDto reportDto) throws BaseException { + + if (Func.isBlank(reportDto.getInpatientNo())) { + throw new BaseException("住院号不能为空!"); + } + + if (Func.isEmpty(reportDto.getAdmisstimes()) && Func.isBlank(reportDto.getJzh())) { + throw new BaseException("当住院号与住院次数都为空时,住院流水号/记账号不能为空!"); + } + + if (Func.isBlank(reportDto.getFileTitle())) { + throw new BaseException("文件名不能为空!"); + } + if (Func.isBlank(reportDto.getDownUrl())) { + throw new BaseException("文件下载路径不能为空!"); + } + } + + public ReportDto getReportDtoByInspectionInsert(XmlUtil inspectionInsertXmlUtil) { + + Node inpatientNoNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.12']/@extension"); + String inpatientNo = inpatientNoNode.getNodeValue(); + + Node admissTimesNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/item[@root='1.2.156.112635.1.2.1.7']/@extension"); + Integer admissTimes = Integer.valueOf(admissTimesNode.getNodeValue()); + + // 检查报告单号标识 + Node reportFlagNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.32']/@extension"); + String reportFlag = reportFlagNode.getNodeValue(); + //电子申请单编号 + Node eafNoNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.24']/@extension"); + String eafNo = eafNoNode.getNodeValue(); + String serialnum = reportFlag + "@" + eafNo; + + Node assortIdNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName"); + String assortId = assortIdNode.getNodeValue(); + + Node sysFlagNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName"); + String sysFlag = sysFlagNode.getNodeValue(); + + Node fileTitleNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查报告类型']/observation/code/@displayName"); + String fileTitle = fileTitleNode.getNodeValue(); + + Node downUrlNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告图像']/report/entry[@displayName='检查报告图像URL地址']/observation/value"); + String downUrl = downUrlNode.getTextContent(); + + ReportDto reportDto = new ReportDto(); + reportDto.setAdmisstimes(admissTimes); + reportDto.setInpatientNo(inpatientNo); + reportDto.setSerialnum(serialnum); + reportDto.setFileTitle(fileTitle); + reportDto.setDownUrl(downUrl); + reportDto.setAssortId(assortId); + reportDto.setSysFlag(sysFlag); + reportDto.setFileSource("1"); + reportDto.setFilestoragetype("1"); + return reportDto; + } + + public ReportDto getReportDtoByInspectionUpdate(XmlUtil inspectionUpdateXmlUtil) { + Node inpatientNoNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.12']/@extension"); + String inpatientNo = inpatientNoNode.getNodeValue(); + + Node admissTimesNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/item[@root='1.2.156.112635.1.2.1.7']/@extension"); + Integer admissTimes = Integer.valueOf(admissTimesNode.getNodeValue()); + + // 检查报告单号标识 + Node reportFlagNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.32']/@extension"); + String reportFlag = reportFlagNode.getNodeValue(); + //电子申请单编号 + Node eafNoNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.24']/@extension"); + String eafNo = eafNoNode.getNodeValue(); + String serialnum = reportFlag + "@" + eafNo; + + Node assortIdNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName"); + String assortId = assortIdNode.getNodeValue(); + + Node sysFlagNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName"); + String sysFlag = sysFlagNode.getNodeValue(); + + Node fileTitleNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查报告类型']/observation/code/@displayName"); + String fileTitle = fileTitleNode.getNodeValue(); + + Node downUrlNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告图像']/report/entry[@displayName='检查报告图像URL地址']/observation/value"); + String downUrl = downUrlNode.getTextContent(); + + + ReportDto reportDto = new ReportDto(); + reportDto.setAdmisstimes(admissTimes); + reportDto.setInpatientNo(inpatientNo); + reportDto.setSerialnum(serialnum); + reportDto.setFileTitle(fileTitle); + reportDto.setDownUrl(downUrl); + reportDto.setAssortId(assortId); + reportDto.setSysFlag(sysFlag); + reportDto.setFileSource("1"); + reportDto.setFilestoragetype("1"); + return reportDto; + } + + /** + * 返回检查报告新增成功消息 + * + * @param msgId 消息id + * @param sender 发送路由 + * @param receiver 接收路由 + * @return 新增成功消息响应 + */ + public String insertSuccess(String msgId, String sender, String receiver) { + String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI); + return "\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\t\n" + + " \n" + + "\t\t\n" + + "\t\n" + + "\n"; + } + + /** + * 返回检查报告插入失败响应消息 + * + * @param msgId 消息id + * @param sender 发送路由 + * @param receiver 接收路由 + * @return 检查报告新增失败响应消息 + */ + public String insertFailed(String msgId, String sender, String receiver, String failedMessage) { + String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI); + return "\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\t\n" + + " \n" + + "\t\t\n" + + "\t\n" + + "\n"; + } + + /** + * 返回检查报告更新成功响应消息 + * + * @param msgId 消息id + * @param sender 发送路由 + * @param receiver 接收路由 + * @return 更新成功响应消息 + */ + public String updateSuccess(String msgId, String sender, String receiver) { + String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI); + return "\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\t\n" + + " \n" + + "\t\t\n" + + "\t\n" + + "\n"; + } + + /** + * 检查报告更新失败响应 + * + * @param msgId 消息id + * @param sender 发送路由 + * @param receiver 接收路由 + * @param failedMessage 失败信息 + * @return 更新失败响应信息 + */ + public String updateFailed(String msgId, String sender, String receiver, String failedMessage) { + String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI); + return "\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\t\n" + + " \n" + + "\t\t\n" + + "\t\n" + + "\n"; + } +} diff --git a/common-collect/src/main/java/com/docus/server/ws/impl/TaskOriginalMessageServiceImpl.java b/common-collect/src/main/java/com/docus/server/ws/impl/TaskOriginalMessageServiceImpl.java index 5445ece..a2a2123 100644 --- a/common-collect/src/main/java/com/docus/server/ws/impl/TaskOriginalMessageServiceImpl.java +++ b/common-collect/src/main/java/com/docus/server/ws/impl/TaskOriginalMessageServiceImpl.java @@ -25,8 +25,8 @@ public class TaskOriginalMessageServiceImpl extends ServiceImpl