Compare commits

...

26 Commits

Author SHA1 Message Date
wyb 4a84c6e685 fix: 分批查询 4 months ago
wyb 0f710b61d2 fix: 判断出院日期 4 months ago
wyb c7f8ec2418 fix: 文件id交给下载服务处理 9 months ago
wyb 5a669a1c51 fix: 获取文件新的id,判断是否存在 9 months ago
wyb 3e420be139 fix:取消异步上传 11 months ago
wyb ca170ac217 style: todo注释删除 2 years ago
wyb ea490e6c52 feat: 添加封存病案根据封存id进行Lis报告采集。 2 years ago
wyb 64144d74da lis查询患者条件修复,出院时间 2 years ago
wyb 37adc6e6df lis 分支,查询下载文件任务修复 2 years ago
wyb 82044fbc33 添加测试接口,JZH 采集 2 years ago
wyb 197b798ed7 Merge branch 'master' into collector-LIS 2 years ago
wyb adcfd6ff1d Merge branch 'master' into collector-LIS 2 years ago
wyb fb208d6b94 省中医lis采集,查询二次接口,有微生物 2 years ago
wyb fba6c0540c 地址和文件标题节点修改 2 years ago
wyb 15471e8371 添加出院日期采集 2 years ago
wyb 63fd3f1df3 Merge branch 'master' into collector-LIS 2 years ago
wyb 738023ac53 log配置和打包配置 2 years ago
wyb 0960884929 main方法删除 2 years ago
wyb c4b2088a1e Merge branch 'master' into collector-LIS 2 years ago
wyb 019c5de378 jzh 说明 2 years ago
wyb 4bf82a503a lis报告数据转换 2 years ago
wyb f9a405d915 Merge branch 'master' into collector-LIS 2 years ago
wyb 528b415158 Merge remote-tracking branch 'origin/collector-LIS' into collector-LIS
# Conflicts:
#	src/main/java/com/docus/server/collect/entity/TBasic.java
2 years ago
wyb b5010290ff 采集feign接口提供与控制层实现,后面可分模块 2 years ago
wyb 198a9a0a82 采集逻辑定义 2 years ago
wyb 12b295e06f 采集逻辑定义 2 years ago

@ -0,0 +1,73 @@
<assembly xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/assembly-1.0.0.xsd">
<id>exe</id>
<formats>
<format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<outputDirectory>/lib</outputDirectory>
<directory>${basedir}/target/lib</directory>
</fileSet>
<fileSet>
<outputDirectory>/config</outputDirectory>
<directory>${basedir}/target/resources</directory>
<fileMode>0755</fileMode>
<includes>
<include>*.xml</include>
<include>*.yml</include>
<include>*.properties</include>
</includes>
</fileSet>
<fileSet>
<outputDirectory>/dataConfig</outputDirectory>
<directory>${basedir}/target/dataConfig</directory>
<fileMode>0755</fileMode>
<includes>
<include>*.json</include>
</includes>
</fileSet>
<fileSet>
<outputDirectory>/</outputDirectory>
<directory>${basedir}/target/resources/bin</directory>
<fileMode>0755</fileMode>
<includes>
<include>*.bat</include>
</includes>
</fileSet>
<fileSet>
<outputDirectory>/</outputDirectory>
<directory>${basedir}/target/resources/bin</directory>
<fileMode>0755</fileMode>
<includes>
<include>*.xml</include>
</includes>
</fileSet>
<fileSet>
<outputDirectory>/</outputDirectory>
<directory>${basedir}</directory>
<fileMode>0755</fileMode>
<includes>
<include>*.exe</include>
</includes>
</fileSet>
<!-- 将项目启动jar打包到boot目录中 -->
<fileSet>
<directory>${basedir}/target</directory>
<outputDirectory>/</outputDirectory>
<fileMode>0755</fileMode>
<includes>
<include>${project.build.finalName}.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>

@ -0,0 +1,440 @@
package com.docus.server.collect.collector;
import com.docus.core.util.Func;
import com.docus.server.collect.entity.Jzh;
import com.docus.server.collect.entity.TBasic;
import com.docus.server.collect.entity.TSeal;
import com.docus.server.collect.enums.DownWayEnum;
import com.docus.server.collect.service.FileReportService;
import com.docus.server.collect.service.dto.ReportFileInfoDTO;
import com.docus.server.collect.util.JaxWsDynamicClientUtil;
import com.docus.server.collect.util.XmlUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
/**
*
*
* @author wyb
*/
@Component("LisSystemCollector")
@Slf4j
public class LisSystemCollector {
@Value("${docus.report.lis.url}")
private String url;
@Value("${docus.report.lis.assortId}")
private String assortId;
@Value("${docus.report.lis.sysFlag}")
private String sysFlag;
@Value("${docus.report.lis.method}")
private String method;
@Value("${docus.report.lis.namespaceUri:}")
private String namespaceUri;
@Autowired
private FileReportService fileReportService;
@Value("${docus.report.lis.incrDays:}")
private String incrDays;
/**
*
*
* @param basic
*/
public void collect(TBasic basic) {
String jzh = basic.getJzh();
String admissDate = basic.getAdmissDate();
String disDate = basic.getDisDate();
if (Func.isBlank(admissDate) || Func.isBlank(disDate)) {
log.error("采集失败jzh:{} 患者住院或者出院时间为空!", jzh);
return;
}
// 报告的开始和结束时间就是入院时间 和 出院时间+15天
String beginDateTime = admissDate;
LocalDateTime endLocalDateTime = Func.parseDateTime(disDate).plusDays(15L);
String endDateTime = Func.formatDateTime(endLocalDateTime);
// 普通的检验报告和 微生物检验报告
List<ReportFileInfoDTO> reportFileInfoDTOList = new ArrayList<>();
if (Func.isNotBlank(incrDays)) {
LocalDateTime qrBeginLocalDateTime = Func.parseDateTime(beginDateTime);
int limitDays = Integer.parseInt(incrDays);
while (true) {
LocalDateTime qrEndLocalDateTime = qrBeginLocalDateTime.plusDays(limitDays);
if (qrBeginLocalDateTime.isAfter(endLocalDateTime)) {
break;
}
boolean endFlag = false;
if (qrEndLocalDateTime.isAfter(endLocalDateTime)) {
qrEndLocalDateTime = endLocalDateTime;
endFlag = true;
}
String qrBeginDateTime = Func.formatDateTime(qrBeginLocalDateTime);
String qrEndDateTime = Func.formatDateTime(qrEndLocalDateTime);
String collectDataNormal = collectData(new Jzh(jzh), qrBeginDateTime, qrEndDateTime, 0);
String collectDataMtf = collectData(new Jzh(jzh), qrBeginDateTime, qrEndDateTime, 1);
List<ReportFileInfoDTO> reportFileInfoDtoList1 = LisSystemCollectConverter.convert(collectDataNormal);
List<ReportFileInfoDTO> reportFileInfoDtoList2 = LisSystemCollectConverter.convert(collectDataMtf);
reportFileInfoDTOList.addAll(reportFileInfoDtoList1);
reportFileInfoDTOList.addAll(reportFileInfoDtoList2);
if (endFlag) {
break;
}
qrBeginLocalDateTime = qrEndLocalDateTime;
}
} else {
String collectDataNormal = collectData(new Jzh(jzh), beginDateTime, endDateTime, 0);
String collectDataMtf = collectData(new Jzh(jzh), beginDateTime, endDateTime, 1);
List<ReportFileInfoDTO> reportFileInfoDtoList1 = LisSystemCollectConverter.convert(collectDataNormal);
List<ReportFileInfoDTO> reportFileInfoDtoList2 = LisSystemCollectConverter.convert(collectDataMtf);
reportFileInfoDTOList.addAll(reportFileInfoDtoList1);
reportFileInfoDTOList.addAll(reportFileInfoDtoList2);
}
for (ReportFileInfoDTO reportFileInfoDTO : reportFileInfoDTOList) {
if (!isBelongToPatient(reportFileInfoDTO, basic)) {
continue;
}
reportFileInfoDTO.setPatientId(basic.getPatientId());
reportFileInfoDTO.setAssortId(assortId);
reportFileInfoDTO.setSysFlag(sysFlag);
fileReportService.saveDownloadTaskAndReport(reportFileInfoDTO);
}
}
/**
* Lis
*
* @param tSeal
* @param tBasic
* @date 2024/1/10 17:04
* @author YongBin Wen
*/
public void sealCollect(TSeal tSeal, TBasic tBasic) {
Date admissDate = tSeal.getAdmissDate();
String disDateStr = (Objects.isNull(tBasic) || Func.isBlank(tBasic.getDisDate())) ? null : tBasic.getDisDate();
String jzh = tSeal.getJzh();
if (Objects.isNull(admissDate)) {
log.error("封存病案采集失败patientId:{} 患者住院时间为空!", tSeal.getPatientId());
return;
}
// 报告的开始和结束时间就是入院时间 和 出院时间+15天(没有就取现在时间)
String beginDateTime = Func.formatDateTime(admissDate);
String endDateTime = Func.formatDateTime(new Date());
if (Func.isNotBlank(disDateStr)) {
LocalDateTime endLocalDateTime = Func.parseDateTime(disDateStr).plusDays(15L);
endDateTime = Func.formatDateTime(endLocalDateTime);
}
LocalDateTime endLocalDateTime = Func.parseDateTime(endDateTime);
// 普通的检验报告和 微生物检验报告
List<ReportFileInfoDTO> reportFileInfoDTOList = new ArrayList<>();
if (Func.isNotBlank(incrDays)) {
LocalDateTime qrBeginLocalDateTime = Func.parseDateTime(beginDateTime);
int limitDays = Integer.parseInt(incrDays);
while (true) {
LocalDateTime qrEndLocalDateTime = qrBeginLocalDateTime.plusDays(limitDays);
if (qrBeginLocalDateTime.isAfter(endLocalDateTime)) {
break;
}
boolean endFlag = false;
if (qrEndLocalDateTime.isAfter(endLocalDateTime)) {
qrEndLocalDateTime = endLocalDateTime;
endFlag = true;
}
String qrBeginDateTime = Func.formatDateTime(qrBeginLocalDateTime);
String qrEndDateTime = Func.formatDateTime(qrEndLocalDateTime);
String collectDataNormal = collectData(new Jzh(jzh), qrBeginDateTime, qrEndDateTime, 0);
String collectDataMtf = collectData(new Jzh(jzh), qrBeginDateTime, qrEndDateTime, 1);
List<ReportFileInfoDTO> reportFileInfoDtoList1 = LisSystemCollectConverter.convert(collectDataNormal);
List<ReportFileInfoDTO> reportFileInfoDtoList2 = LisSystemCollectConverter.convert(collectDataMtf);
reportFileInfoDTOList.addAll(reportFileInfoDtoList1);
reportFileInfoDTOList.addAll(reportFileInfoDtoList2);
if (endFlag) {
break;
}
qrBeginLocalDateTime = qrEndLocalDateTime;
}
} else {
String collectDataNormal = collectData(new Jzh(jzh), beginDateTime, endDateTime, 0);
String collectDataMtf = collectData(new Jzh(jzh), beginDateTime, endDateTime, 1);
List<ReportFileInfoDTO> reportFileInfoDtoList1 = LisSystemCollectConverter.convert(collectDataNormal);
List<ReportFileInfoDTO> reportFileInfoDtoList2 = LisSystemCollectConverter.convert(collectDataMtf);
reportFileInfoDTOList.addAll(reportFileInfoDtoList1);
reportFileInfoDTOList.addAll(reportFileInfoDtoList2);
}
for (ReportFileInfoDTO reportFileInfoDTO : reportFileInfoDTOList) {
reportFileInfoDTO.setPatientId(tSeal.getPatientId());
reportFileInfoDTO.setAssortId(assortId);
reportFileInfoDTO.setSysFlag(sysFlag);
fileReportService.saveDownloadTaskAndSealReport(reportFileInfoDTO);
}
}
private boolean isBelongToPatient(ReportFileInfoDTO reportFileInfoDTO, TBasic basic) {
// todo 验证报告是否属于患者,暂时描述说查询条件是患者唯一,不需要实现
return true;
}
/**
*
*
* @param basic
* @param beginDateTime
* @param endDateTime
* @param microbeTestFlag 10
* @return
*/
private String collectData(TBasic basic, String beginDateTime, String endDateTime, int microbeTestFlag) {
String contextWorkId = Func.randomUUID();
Object[] params = createQrParams(basic, beginDateTime, endDateTime, microbeTestFlag);
log.info("[{}]:LIS检验报告采集地址{},方法:{},命名空间:{},参数:{}", contextWorkId, url, method, namespaceUri, Func.toJson(params));
String result = JaxWsDynamicClientUtil.send(url, namespaceUri, method, params);
log.info("[{}]:LIS检验报告采集结果为:{}", contextWorkId, result);
return result;
}
/**
* ws
*
* @param basic
* @param beginDateTime
* @param endDateTime
* @param microbeTestFlag 10
* @return
*/
private Object[] createQrParams(TBasic basic, String beginDateTime, String endDateTime, int microbeTestFlag) {
String param1 = "<ESBEntry>" +
" <AccessControl>" +
" <SysFlag>1</SysFlag>" +
" <UserName>WZHBAGL</UserName>" +
" <Password>WZHBAGL_1127</Password>" +
" <Fid>BS03102</Fid>" +
" <OrderNo>BS03102S51001</OrderNo>" +
" <SUBOR_HOSPITAL_DISTRICT>GZ</SUBOR_HOSPITAL_DISTRICT>" +
" </AccessControl>" +
" <MessageHeader>" +
" <Fid>BS03102</Fid>" +
" <OrderNo>BS03102S51001</OrderNo>" +
" <SourceSysCode>S51</SourceSysCode>" +
" <TargetSysCode>S00</TargetSysCode>" +
" <MsgDate>" + Func.formatDateTime(LocalDateTime.now()) + "</MsgDate>" +
" </MessageHeader>" +
" <RequestOption>" +
" <triggerData>0</triggerData>" +
" <dataAmount>500</dataAmount>" +
" </RequestOption>" +
" <MsgInfo flag=\"1\">" +
" <Msg/>" +
" <distinct value=\"0\"/>" +
" <query item=\"WS_INPUT\" compy=\" = \" value=\" 1 \" splice=\"AND\"/>" +
" <query_ws action=\"Q_WS_JYBGLBCX\">" +
" <content>" +
" <Request>" +
" <Msg>" +
" <VUID/>" +
" <OUTHOSP_INDEX_NO/>" +
" <OUTHOSP_NO/>" +
" <INHOSP_INDEX_NO/>" +
" <INHOSP_NO/>" +
" <EMPI_ID>" + basic.getEmpId() + "</EMPI_ID/>" +
" <TEST_PAT_SOURCE_CODE/>" +
" <MICROBE_TEST_FLAG>" + microbeTestFlag + "</MICROBE_TEST_FLAG>" +
" <BEGIN_DATETIME>" + beginDateTime + "</BEGIN_DATETIME>" +
" <END_DATETIME>" + endDateTime + "</END_DATETIME>" +
" </Msg>" +
" </Request>" +
" </content>" +
" </query_ws>" +
" </MsgInfo>" +
" <GroupInfo flag=\"0\">" +
" <AS ID=\"\" linkField=\"\"/>" +
" </GroupInfo>" +
"</ESBEntry>";
return new Object[]{param1};
}
/**
*
*
* @param jzh jzh
* @param beginDateTime
* @param endDateTime
* @param microbeTestFlag 10
* @return
*/
public String collectData(Jzh jzh, String beginDateTime, String endDateTime, int microbeTestFlag) {
String contextWorkId = Func.randomUUID();
Object[] params = createQrParams(jzh, beginDateTime, endDateTime, microbeTestFlag);
log.info("[{}]:LIS检验报告采集地址{},方法:{},命名空间:{},参数:{}", contextWorkId, url, method, namespaceUri, Func.toJson(params));
String result = JaxWsDynamicClientUtil.send(url, namespaceUri, method, params);
log.info("[{}]:LIS检验报告采集结果为:{}", contextWorkId, result);
return result;
}
/**
* ws
*
* @param jzh jzh
* @param beginDateTime
* @param endDateTime
* @param microbeTestFlag 10
* @return
*/
private Object[] createQrParams(Jzh jzh, String beginDateTime, String endDateTime, int microbeTestFlag) {
String param1 = "<ESBEntry>" +
" <AccessControl>" +
" <SysFlag>1</SysFlag>" +
" <UserName>WZHBAGL</UserName>" +
" <Password>WZHBAGL_1127</Password>" +
" <Fid>BS03102</Fid>" +
" <OrderNo>BS03102S51001</OrderNo>" +
" <SUBOR_HOSPITAL_DISTRICT>GZ</SUBOR_HOSPITAL_DISTRICT>" +
" </AccessControl>" +
" <MessageHeader>" +
" <Fid>BS03102</Fid>" +
" <OrderNo>BS03102S51001</OrderNo>" +
" <SourceSysCode>S51</SourceSysCode>" +
" <TargetSysCode>S00</TargetSysCode>" +
" <MsgDate>" + Func.formatDateTime(LocalDateTime.now()) + "</MsgDate>" +
" </MessageHeader>" +
" <RequestOption>" +
" <triggerData>0</triggerData>" +
" <dataAmount>500</dataAmount>" +
" </RequestOption>" +
" <MsgInfo flag=\"1\">" +
" <Msg/>" +
" <distinct value=\"0\"/>" +
" <query item=\"WS_INPUT\" compy=\" = \" value=\" 1 \" splice=\"AND\"/>" +
" <query_ws action=\"Q_WS_JYBGLBCX\">" +
" <content>" +
" <Request>" +
" <Msg>" +
" <VUID/>" +
" <OUTHOSP_INDEX_NO/>" +
" <OUTHOSP_NO/>" +
" <INHOSP_INDEX_NO/>" +
" <INHOSP_NO>" + jzh.getJzh() + "</INHOSP_NO>" +
" <EMPI_ID/>" +
" <TEST_PAT_SOURCE_CODE/>" +
" <MICROBE_TEST_FLAG>" + microbeTestFlag + "</MICROBE_TEST_FLAG>" +
" <BEGIN_DATETIME>" + beginDateTime + "</BEGIN_DATETIME>" +
" <END_DATETIME>" + endDateTime + "</END_DATETIME>" +
" </Msg>" +
" </Request>" +
" </content>" +
" </query_ws>" +
" </MsgInfo>" +
" <GroupInfo flag=\"0\">" +
" <AS ID=\"\" linkField=\"\"/>" +
" </GroupInfo>" +
"</ESBEntry>";
return new Object[]{param1};
}
public static void main(String[] args) {
String beginDateTime = "2025-02-06 19:48:52";
LocalDateTime endLocalDateTime = Func.parseDateTime("2025-04-04 12:00:00").plusDays(15L);
String endDateTime = Func.formatDateTime(endLocalDateTime);
// 普通的检验报告和 微生物检验报告
LocalDateTime qrBeginLocalDateTime = Func.parseDateTime(beginDateTime);
int limitDays = 10;
List<ReportFileInfoDTO> reportFileInfoDTOList = new ArrayList<>();
while (true) {
LocalDateTime qrEndLocalDateTime = qrBeginLocalDateTime.plusDays(limitDays);
if (qrBeginLocalDateTime.isAfter(endLocalDateTime)) {
break;
}
boolean endFlag = false;
if (qrEndLocalDateTime.isAfter(endLocalDateTime)) {
qrEndLocalDateTime = endLocalDateTime;
endFlag = true;
}
System.out.println(Func.formatDateTime(qrBeginLocalDateTime) + ">>>>>>>" + Func.formatDateTime(qrEndLocalDateTime));
if (endFlag) {
break;
}
qrBeginLocalDateTime = qrEndLocalDateTime;
try {
TimeUnit.MILLISECONDS.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static class LisSystemCollectConverter {
/**
*
*
* @param lisSystemCollectData
* @return
*/
public static List<ReportFileInfoDTO> convert(String lisSystemCollectData) {
XmlUtil xmlUtil = XmlUtil.of(lisSystemCollectData);
List<ReportFileInfoDTO> list = new ArrayList<>();
NodeList reportInfoNodeList = xmlUtil.getNodeList("/Response/MsgInfo/Msg/ReportInfo");
if (reportInfoNodeList != null && reportInfoNodeList.getLength() > 0) {
int length = reportInfoNodeList.getLength();
for (int i = 0; i < length; i++) {
Node item = reportInfoNodeList.item(i);
NodeList childNodes = item.getChildNodes();
int childNodesLength = childNodes.getLength();
String fileTitle = null;
String serialNum = null;
String downUrl = null;
for (int j = 0; j < childNodesLength; j++) {
Node childNodeItem = childNodes.item(j);
if ("TEST_CATEG_NAME".equals(childNodeItem.getNodeName())) {
fileTitle = childNodeItem.getTextContent();
}
// if ("TEST_CATEG_NAME".equals(childNodeItem.getNodeName())) {
// fileTitle=childNodeItem.getTextContent();
// }
if ("SAMPLE_NO".equals(childNodeItem.getNodeName())) {
serialNum = childNodeItem.getTextContent();
}
if ("REPORT_URL".equals(childNodeItem.getNodeName())) {
downUrl = childNodeItem.getTextContent();
}
}
ReportFileInfoDTO fileInfoDTO = new ReportFileInfoDTO();
fileInfoDTO.setFileTitle(fileTitle);
fileInfoDTO.setSerialNum(serialNum);
fileInfoDTO.setDownUrl(downUrl);
fileInfoDTO.setDownWayEnum(DownWayEnum.HTTP);
fileInfoDTO.setIp("docus-collect-gdszy");
fileInfoDTO.setUserName("LIS采集服务");
fileInfoDTO.setReportUserFullName("LIS采集服务");
fileInfoDTO.setTaskId(-1L);
list.add(fileInfoDTO);
}
}
return list;
}
}
}

@ -0,0 +1,116 @@
package com.docus.server.collect.controller;
import cn.hutool.core.util.PageUtil;
import com.docus.core.util.Func;
import com.docus.infrastructure.core.exception.BaseException;
import com.docus.infrastructure.web.api.CommonResult;
import com.docus.server.collect.collector.LisSystemCollector;
import com.docus.server.collect.dto.TBasicQrDto;
import com.docus.server.collect.entity.TBasic;
import com.docus.server.collect.entity.TSeal;
import com.docus.server.collect.feign.api.GdSzyCollectServiceApi;
import com.docus.server.collect.infrastructure.dao.DownloadTaskDao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Objects;
/**
* @author WYBDEV
*/
@Slf4j
@RestController
@RequestMapping
public class CollectController implements GdSzyCollectServiceApi {
@Autowired
private LisSystemCollector lisSystemCollector;
@Autowired
private DownloadTaskDao downloadTaskDao;
@Override
public CommonResult<String> lisSystemCollectByJzh(String jzh) {
log.info("根据jzh进行lis采集,jzh为{}", jzh);
TBasic basic = new TBasic();
basic.setJzh(jzh);
List<TBasic> basicInfo = downloadTaskDao.getBasicInfo(basic);
if (Func.isEmpty(basicInfo) || basicInfo.size() > 1) {
log.error("采集失败jzh:{} 基础数据匹配失败!", jzh);
return CommonResult.failed("采集失败,基础数据匹配失败!");
}
TBasic tBasic = basicInfo.get(0);
if (Func.isBlank(tBasic.getAdmissDate()) || Func.isBlank(tBasic.getDisDate())) {
log.error("采集失败jzh:{} 患者住院或者出院时间为空!", jzh);
return CommonResult.failed("采集失败,患者住院或者出院时间为空!");
}
lisSystemCollector.collect(tBasic);
return CommonResult.success("采集完成!");
}
@Override
public CommonResult<String> lisSystemCollectByDisDate(String disDateStart, String disDateEnd) {
log.info("根据出院时间进行lis采集出院时间开始{} ,出院时间结束:{}", disDateStart, disDateEnd);
validateDateStr(disDateStart);
validateDateStr(disDateEnd);
disDateStart = disDateStart + " 00:00:00";
disDateEnd = disDateEnd + " 23:59:59";
TBasicQrDto qrDto = new TBasicQrDto();
qrDto.setDisDateStart(disDateStart);
qrDto.setDisDateEnd(disDateEnd);
int count = downloadTaskDao.countBasicInfo(qrDto);
log.warn("本次根据出院日期时间 {} 到 {} ,可采集患者有 {} 个!", disDateStart, disDateEnd, count);
if (count <= 0) {
return CommonResult.success("本次采集0个患者");
}
final int size = 200;
int page = PageUtil.totalPage(count, size);
for (int i = 1; i <= page; i++) {
List<TBasic> tBasics = downloadTaskDao.pageBasicInfo(qrDto, (i - 1) * size, size);
if (Func.isNotEmpty(tBasics)) {
for (TBasic basic : tBasics) {
if (Func.isBlank(basic.getAdmissDate()) || Func.isBlank(basic.getDisDate())) {
log.error("采集失败jzh:{} 患者住院或者出院时间为空!", basic.getJzh());
continue;
}
lisSystemCollector.collect(basic);
}
}
}
return CommonResult.success("本次采集" + count + "个患者");
}
@Override
public CommonResult<String> lisSystemCollectBySealId(String sealId) {
log.info("根据 封存id 进行封存病案lis采集,sealId为{}", sealId);
TSeal sealCondition = new TSeal();
sealCondition.setSealId(sealId);
TSeal tSeal = downloadTaskDao.findSealByCondition(sealCondition);
if (Objects.isNull(tSeal)) {
log.error("采集失败封存id{} 没有找到封存病案信息!", sealId);
return CommonResult.failed("封存id" + sealId + " 没有找到封存病案信息!");
}
String jzh = tSeal.getJzh();
if (Func.isBlank(jzh)) {
log.error("采集失败封存id{} 没有找到封存病案记帐号信息!", sealId);
return CommonResult.failed("封存id" + sealId + " 没有找到封存病案记帐号信息!");
}
TBasic basic = new TBasic();
basic.setJzh(jzh);
List<TBasic> basicInfo = downloadTaskDao.getBasicInfo(basic);
TBasic tBasic = Func.isEmpty(basicInfo) ? null : basicInfo.get(0);
lisSystemCollector.sealCollect(tSeal, tBasic);
return CommonResult.success("采集完成!");
}
private void validateDateStr(String dateStr) {
try {
Func.parseDate(dateStr);
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
throw new BaseException("日期验证失败,格式为 yyyy-MM-dd");
}
}
}

@ -0,0 +1,45 @@
package com.docus.server.collect.controller.test;
import com.docus.infrastructure.web.api.CommonResult;
import com.docus.server.collect.collector.LisSystemCollector;
import com.docus.server.collect.entity.Jzh;
import com.docus.server.collect.service.dto.ReportFileInfoDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author WYBDEV
*/
@Slf4j
@RestController
@Api(tags = "采集测试")
@RequestMapping("/collect/test/gdszy")
public class TestCollectController {
@Autowired
private LisSystemCollector lisSystemCollector;
@ApiOperation("采集测试 LIS 采集接口")
@GetMapping("/lis")
public CommonResult<Map<String,Object>> lisSystemCollect(@RequestParam("jzh") String jzh, @RequestParam("beginDateTime") String beginDateTime, @RequestParam("endDateTime") String endDateTime ) {
String normal = lisSystemCollector.collectData(new Jzh(jzh), beginDateTime, endDateTime, 0);
String mt = lisSystemCollector.collectData(new Jzh(jzh), beginDateTime, endDateTime, 1);
List<ReportFileInfoDTO> normalParse = LisSystemCollector.LisSystemCollectConverter.convert(normal);
List<ReportFileInfoDTO> mtParse = LisSystemCollector.LisSystemCollectConverter.convert(mt);
Map<String, Object> map = new HashMap<>();
map.put("普通报告",normal);
map.put("细菌微生物报告",mt);
map.put("普通报告解析",normalParse);
map.put("细菌微生物报告解析",mtParse);
return CommonResult.success(map);
}
}

@ -0,0 +1,21 @@
package com.docus.server.collect.entity;
import java.util.Objects;
/**
* t_basic jzh
*
* @author wyb
*/
public class Jzh {
private final String jzh;
public Jzh(String jzh) {
Objects.requireNonNull(jzh,"记账号为空!");
this.jzh = jzh;
}
public String getJzh() {
return jzh;
}
}

@ -46,6 +46,5 @@ public class TBasic {
this.patientId = fileInfoDTO.getPatientId();
this.inpatientNo = fileInfoDTO.getInpatientNo();
this.admissTimes = fileInfoDTO.getAdmisstimes();
;
}
}

@ -0,0 +1,66 @@
package com.docus.server.collect.entity;
import com.docus.server.collect.service.dto.ReportFileInfoDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author jiashi
* @since 2023-05-16
*/
@Data
@ApiModel(value="TSeal对象", description="在院封存")
public class TSeal implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "在院封存病案主键")
private String patientId;
@ApiModelProperty(value = "封存id")
private String sealId;
@ApiModelProperty(value = "住院号")
private String inpatientNo;
@ApiModelProperty(value = "住院就诊号")
private String jzh;
@ApiModelProperty(value = "患者姓名")
private String name;
@ApiModelProperty(value = "住院时间")
private Date admissDate;
@ApiModelProperty(value = "封存时间")
private Date sealDate;
@ApiModelProperty(value = "文件来源")
private Integer fileSource;
@ApiModelProperty(value = "就诊次数")
private Integer admissTimes;
@ApiModelProperty(value = "纸质是否签名 0否 1是")
private Integer signinfo;
@ApiModelProperty(value = "备注")
private String remark;
public TSeal() {
}
public TSeal(ReportFileInfoDTO dto) {
this.patientId=dto.getPatientId();
this.jzh = dto.getJzh();
this.inpatientNo = dto.getInpatientNo();
this.admissTimes = dto.getAdmisstimes();
}
}

@ -0,0 +1,46 @@
package com.docus.server.collect.feign.api;
import com.docus.infrastructure.web.api.CommonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* 广api
*
* @author WYBDEV
*/
@Api(tags = "采集控制层")
@FeignClient(value = "docus-webservice-gdszy", contextId = "collect-gdszy")
public interface GdSzyCollectServiceApi {
String PREFIX = "/collect/gdszy";
@ApiOperation("LIS 检验报告采集,根据jzh")
@ApiImplicitParams({
@ApiImplicitParam(name ="empId",value = "你别看这个参数名是empId其实传的和使用的是jzh有偷懒的选手",required = true,paramType = "query",dataTypeClass = String.class)
})
@GetMapping(PREFIX + "/lisByJzh")
CommonResult<String> lisSystemCollectByJzh(@RequestParam("empId") String empId);
@ApiOperation("LIS 检验报告采集,根据封存id进行封存病案的采集")
@ApiImplicitParams({
@ApiImplicitParam(name ="sealId",value = "封存id",required = true,paramType = "query",dataTypeClass = String.class)
})
@GetMapping(PREFIX + "/lisBySealId")
CommonResult<String> lisSystemCollectBySealId(@RequestParam("sealId") String sealId);
@ApiOperation("LIS 检验报告采集,根据出院区间")
@ApiImplicitParams({
@ApiImplicitParam(name ="disDateStart",value = "出院时间 开始区间 yyyy-MM-dd",required = true,paramType = "query",dataTypeClass = String.class),
@ApiImplicitParam(name ="disDateEnd",value = "出院时间 结束区间 yyyy-MM-dd",required = true,paramType = "query",dataTypeClass = String.class)
})
@GetMapping(PREFIX + "/lisByDisDate")
CommonResult<String> lisSystemCollectByDisDate(@RequestParam("disDateStart") String disDateStart,@RequestParam("disDateEnd")String disDateEnd);
}

@ -18,4 +18,8 @@ public interface DownloadPlatformService {
@ApiOperation("病案上报文件(通用)")
@RequestMapping(value = "/api/downplatform/report",method = RequestMethod.POST)
public CommonResult report(@RequestBody ReportDownDto resources);
@ApiOperation("封存病历上报文件(省中医使用)")
@RequestMapping(value = "/api/downplatform/sealReport",method = RequestMethod.POST)
public CommonResult sealReport(@RequestBody ReportDownDto resources);
}

@ -1,8 +1,11 @@
package com.docus.server.collect.infrastructure.dao;
import com.docus.infrastructure.core.db.dao.IBaseDao;
import com.docus.server.collect.dto.TBasicQrDto;
import com.docus.server.collect.entity.DownloadTask;
import com.docus.server.collect.entity.TBasic;
import com.docus.server.collect.entity.TSeal;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -20,6 +23,22 @@ public interface DownloadTaskDao extends IBaseDao<DownloadTask> {
*/
List<TBasic> getBasicInfo(TBasic tBasic);
/**
*
* @param qrDto
* @return
*/
int countBasicInfo(@Param("dto") TBasicQrDto qrDto);
/**
*
* @param qrDto
* @param offset
* @param size
* @return
*/
List<TBasic> pageBasicInfo(@Param("dto") TBasicQrDto qrDto,@Param("offset") int offset,@Param("size") int size);
/**
* id
@ -48,4 +67,19 @@ public interface DownloadTaskDao extends IBaseDao<DownloadTask> {
* @return idid
*/
Long getDownloadTaskIdFromDownFile(String patientId, String source, String serialNum);
/**
*
* @date 2024/1/10 16:52
* @author YongBin Wen
* @param seal
* @return com.docus.server.collect.entity.TSeal
*/
TSeal findSealByCondition(TSeal seal);
boolean existIdFromSanAssort(Long fileId);
boolean existIdFromDownfile(Long fileId);
boolean existIdFromDownloadTask(Long fileId);
}

@ -3,8 +3,10 @@ package com.docus.server.collect.infrastructure.dao.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.docus.core.util.Func;
import com.docus.infrastructure.core.db.dao.impl.BaseDaoImpl;
import com.docus.server.collect.dto.TBasicQrDto;
import com.docus.server.collect.entity.DownloadTask;
import com.docus.server.collect.entity.TBasic;
import com.docus.server.collect.entity.TSeal;
import com.docus.server.collect.infrastructure.dao.DownloadTaskDao;
import com.docus.server.collect.infrastructure.mapper.DownloadTaskMapper;
import org.springframework.stereotype.Repository;
@ -23,6 +25,16 @@ public class DownloadTaskDaoImpl extends BaseDaoImpl<DownloadTaskMapper, Downloa
return baseMapper.getBasicInfo(basic);
}
@Override
public int countBasicInfo(TBasicQrDto qrDto) {
return baseMapper.countBasicInfo(qrDto);
}
@Override
public List<TBasic> pageBasicInfo(TBasicQrDto qrDto, int offset, int size) {
return baseMapper.pageBasicInfo(qrDto,offset,size);
}
@Override
public Long getDownloadTaskIdFromDownloadTask(DownloadTask downloadTask) {
LambdaQueryWrapper<DownloadTask> wrapper = new LambdaQueryWrapper<>();
@ -31,6 +43,8 @@ public class DownloadTaskDaoImpl extends BaseDaoImpl<DownloadTaskMapper, Downloa
wrapper.eq(Func.isNotBlank(downloadTask.getJzh()), DownloadTask::getJzh, downloadTask.getJzh());
wrapper.eq(Func.isNotBlank(downloadTask.getInpatientNo()), DownloadTask::getInpatientNo, downloadTask.getInpatientNo());
wrapper.eq(Func.isNotEmpty(downloadTask.getAdmissions()), DownloadTask::getAdmissions, downloadTask.getAdmissions());
wrapper.eq(DownloadTask::getFileSerialNum, downloadTask.getFileSerialNum());
wrapper.eq(DownloadTask::getSource, downloadTask.getSource());
List<DownloadTask> downloadTasks = baseMapper.selectList(wrapper);
if (Func.isNotEmpty(downloadTasks) && downloadTasks.size() == 1) {
return downloadTasks.get(0).getId();
@ -47,4 +61,30 @@ public class DownloadTaskDaoImpl extends BaseDaoImpl<DownloadTaskMapper, Downloa
public Long getDownloadTaskIdFromDownFile(String patientId, String source, String serialNum) {
return baseMapper.getDownloadTaskIdFromDownFile(patientId, source, serialNum);
}
@Override
public TSeal findSealByCondition(TSeal seal) {
return baseMapper.findSealByCondition(seal);
}
@Override
public boolean existIdFromSanAssort(Long fileId) {
Long id = baseMapper.getFileIdFromSanAssort(fileId);
return id != null;
}
@Override
public boolean existIdFromDownfile(Long fileId) {
Long id = baseMapper.getFileIdFromDownfile(fileId);
return id != null;
}
@Override
public boolean existIdFromDownloadTask(Long fileId) {
LambdaQueryWrapper<DownloadTask> wrapper = new LambdaQueryWrapper<>();
wrapper.select(DownloadTask::getId);
wrapper.eq(DownloadTask::getId, fileId);
DownloadTask downloadTask = baseMapper.selectOne(wrapper);
return downloadTask != null;
}
}

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.docus.server.collect.dto.TBasicQrDto;
import com.docus.server.collect.entity.DownloadTask;
import com.docus.server.collect.entity.TBasic;
import com.docus.server.collect.entity.TSeal;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -21,6 +22,7 @@ public interface DownloadTaskMapper extends BaseMapper<DownloadTask> {
/**
*
*
* @param qrDto
* @return
*/
@ -28,27 +30,46 @@ public interface DownloadTaskMapper extends BaseMapper<DownloadTask> {
/**
*
* @param qrDto
*
* @param qrDto
* @param offset
* @param size
* @param size
* @return
*/
List<TBasic> pageBasicInfo(@Param("dto") TBasicQrDto qrDto,@Param("offset") long offset,@Param("size") long size);
List<TBasic> pageBasicInfo(@Param("dto") TBasicQrDto qrDto, @Param("offset") long offset, @Param("size") long size);
/**
* idid
*
* @param patientId
* @param source
* @param source
* @param serialNum
* @return idid
*/
Long getDownloadTaskIdFromSanAssort(@Param("patientId") String patientId, @Param("source") String source, @Param("serialNum") String serialNum);
/**
* idid
*
* @param patientId
* @param source
* @param source
* @param serialNum
* @return idid
*/
Long getDownloadTaskIdFromDownFile(@Param("patientId") String patientId, @Param("source") String source, @Param("serialNum") String serialNum);
/**
*
*
* @param seal
* @return com.docus.server.collect.entity.TSeal
* @date 2024/1/10 16:52
* @author YongBin Wen
*/
TSeal findSealByCondition(@Param("seal") TSeal seal);
Long getFileIdFromDownfile(@Param("fileId") Long fileId);
Long getFileIdFromSanAssort(@Param("fileId") Long fileId);
}

@ -0,0 +1,78 @@
package com.docus.server.collect.job;
import cn.hutool.core.collection.CollUtil;
import com.docus.core.util.Func;
import com.docus.server.collect.collector.LisSystemCollector;
import com.docus.server.collect.dto.TBasicQrDto;
import com.docus.server.collect.entity.TBasic;
import com.docus.server.collect.infrastructure.dao.DownloadTaskDao;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.List;
/**
*
* @author wyb
*/
@Component
@Slf4j
public class LisSystemCollectJob {
@Resource
private LisSystemCollector lisSystemCollector;
@Resource
private DownloadTaskDao downloadTaskDao;
/**
* Lis
*/
@XxlJob("LisSystemCollectOnDisDateJob")
public void lisSystemCollectOnDisDateJob(){
log.error(" =================================== 根据出院时间进行Lis报告采集LisSystemCollectOnDisDateJob START ===================================");
String jobParam = XxlJobHelper.getJobParam();
int[] defaultDisDays = {15};
int[] finalDisDays;
try {
if (Func.isBlank(jobParam)) {
finalDisDays = defaultDisDays;
} else {
String[] dayStrs = jobParam.split(",");
int length = dayStrs.length;
finalDisDays = new int[length];
for (int i = 0; i < length; i++) {
finalDisDays[i] = Integer.parseInt(dayStrs[i]);
}
}
} catch (Exception ex) {
log.error("LIS系统采集job参数解析错误,使用默认出院" + Arrays.toString(defaultDisDays) + "天采集!", ex);
finalDisDays = defaultDisDays;
}
LocalDate nowLocalDate = LocalDate.now();
for (int day : finalDisDays) {
LocalDate localDate = nowLocalDate.plusDays(-day);
String disDateStart=localDate+" 00:00:00";
String disDateEnd=localDate+" 23:59:59";
TBasicQrDto qrDto = new TBasicQrDto();
qrDto.setDisDateStart(disDateStart);
qrDto.setDisDateEnd(disDateEnd);
// 直接查一万条
List<TBasic> tBasics = downloadTaskDao.pageBasicInfo(qrDto, 0, 10000);
if(CollUtil.isNotEmpty(tBasics)){
for (TBasic basic : tBasics) {
lisSystemCollector.collect(basic);
}
}
tBasics.clear();
}
log.error(" =================================== 根据出院时间进行Lis报告采集LisSystemCollectOnDisDateJob END ===================================");
}
}

@ -15,6 +15,13 @@ public interface FileReportService {
*/
void saveDownloadTaskAndReport(ReportFileInfoDTO fileInfoDTO);
/**
*
* | t_seal
* @param fileInfoDTO
*/
void saveDownloadTaskAndSealReport(ReportFileInfoDTO fileInfoDTO);
/**
* idid
* patientIdpatientId
@ -22,4 +29,5 @@ public interface FileReportService {
* @return id
*/
Long getDownloadTaskId(DownloadTask downloadTask);
}

@ -4,10 +4,13 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.docus.core.util.Func;
import com.docus.infrastructure.redis.service.IdService;
import com.docus.infrastructure.web.api.CommonResult;
import com.docus.server.collect.converter.FileReportConverter;
import com.docus.server.collect.entity.DownloadTask;
import com.docus.server.collect.entity.TBasic;
import com.docus.server.collect.entity.TSeal;
import com.docus.server.collect.infrastructure.client.DownloadPlatformService;
import com.docus.server.collect.infrastructure.client.dto.ReportDownDto;
import com.docus.server.collect.infrastructure.dao.DownloadTaskDao;
import com.docus.server.collect.service.FileReportService;
import com.docus.server.collect.service.dto.ReportFileInfoDTO;
@ -16,7 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.ThreadPoolExecutor;
/**
@ -55,26 +57,64 @@ public class FileReportServiceImpl implements FileReportService {
}
// 转换下载任务对象
DownloadTask downloadTask = fileReportConverter.convertDownloadTask(fileInfoDTO, 0);
// 为什么不保存呢因为总出现文件id重复所有文件id交给下载服务生成
// 查询旧的下载任务id,更新/保存任务信息
Long downloadTaskId = Optional.ofNullable(getDownloadTaskId(downloadTask)).orElse(idService.getDateSeq());
downloadTask.setId(downloadTaskId);
downloadTaskDao.saveOrUpdate(downloadTask);
// Long downloadTaskId = Optional.ofNullable(getDownloadTaskId(downloadTask)).orElse(getNewFileId());
// downloadTask.setId(downloadTaskId);
// downloadTaskDao.saveOrUpdate(downloadTask);
report(downloadTask);
}
@Override
public void saveDownloadTaskAndSealReport(ReportFileInfoDTO fileInfoDTO) {
TSeal sealCondition = new TSeal(fileInfoDTO);
// 查询基础数据,更新新的病案信息
TSeal seal = downloadTaskDao.findSealByCondition(sealCondition);
// 如果找到患者基础数据并且刚好为1条
fileInfoDTO.setPatientId(seal.getPatientId());
fileInfoDTO.setInpatientNo(seal.getInpatientNo());
fileInfoDTO.setAdmisstimes(seal.getAdmissTimes());
fileInfoDTO.setJzh(seal.getJzh());
// 转换下载任务对象
DownloadTask downloadTask = fileReportConverter.convertDownloadTask(fileInfoDTO, 2);
// 为什么不保存呢因为总出现文件id重复所有文件id交给下载服务生成
// 查询旧的下载任务id,更新/保存任务信息
// Long downloadTaskId = Optional.ofNullable(getDownloadTaskId(downloadTask)).orElse(getNewFileId());
// downloadTask.setId(downloadTaskId);
// downloadTaskDao.saveOrUpdate(downloadTask);
reportSeal(downloadTask);
}
/**
* idid
*/
private Long getNewFileId() {
Long fileId = idService.getDateSeq();
while (true) {
boolean existIdFromSanAssort = downloadTaskDao.existIdFromSanAssort(fileId);
boolean existIdFromDownfile = downloadTaskDao.existIdFromDownfile(fileId);
boolean existIdFromDownloadTask = downloadTaskDao.existIdFromDownloadTask(fileId);
if (!existIdFromSanAssort && !existIdFromDownfile && !existIdFromDownloadTask) {
return fileId;
}
fileId = fileId + 16;
}
}
@Override
public Long getDownloadTaskId(DownloadTask downloadTask) {
String patientId = downloadTask.getPatientId();
if(StrUtil.isNotBlank(patientId)){
if (StrUtil.isNotBlank(patientId)) {
String serialNum = downloadTask.getFileSerialNum();
String source = downloadTask.getSource();
// 从文件表获取
Long downloadTaskId = downloadTaskDao.getDownloadTaskIdFromSanAssort(patientId,source,serialNum);
Long downloadTaskId = downloadTaskDao.getDownloadTaskIdFromSanAssort(patientId, source, serialNum);
if (Func.isNotEmpty(downloadTaskId)) {
return downloadTaskId;
}
// 从下载记录表获取
downloadTaskId = downloadTaskDao.getDownloadTaskIdFromDownFile(patientId,source,serialNum);
downloadTaskId = downloadTaskDao.getDownloadTaskIdFromDownFile(patientId, source, serialNum);
if (Func.isNotEmpty(downloadTaskId)) {
return downloadTaskId;
}
@ -89,10 +129,35 @@ public class FileReportServiceImpl implements FileReportService {
* @param downloadTask
*/
private void report(DownloadTask downloadTask) {
threadPoolExecutor.execute(() -> {
if (downloadTask.getBasicDataType().equals(0)) {
downloadPlatformService.report(fileReportConverter.convertDownloadPlatformParam(downloadTask));
ReportDownDto reportDownDto = fileReportConverter.convertDownloadPlatformParam(downloadTask);
String paramJson = Func.toJson(reportDownDto);
try {
log.info("基础病案上报文件,参数:{}", paramJson);
CommonResult result = downloadPlatformService.report(reportDownDto);
log.info("基础病案上报文件,返回结果:{}", Func.toJson(result));
} catch (Exception ex) {
log.error("基础病案上报文件发生未知错误,参数:" + paramJson, ex);
}
}
}
/**
*
*
* @param downloadTask
*/
private void reportSeal(DownloadTask downloadTask) {
if (downloadTask.getBasicDataType().equals(2)) {
ReportDownDto reportDownDto = fileReportConverter.convertDownloadPlatformParam(downloadTask);
String paramJson = Func.toJson(reportDownDto);
try {
log.info("封存病案上报文件,参数:{}", paramJson);
CommonResult result = downloadPlatformService.sealReport(reportDownDto);
log.info("封存病案上报文件,返回结果:{}", Func.toJson(result));
} catch (Exception ex) {
log.error("封存病案上报文件发生未知错误,参数:" + paramJson, ex);
}
}
});
}
}

@ -49,6 +49,15 @@ docus:
url:
# 下载平台服务地址
downloadPlatform: http://192.168.16.85:9291
report:
lis:
assortId: lis-zdAssortId
sysFlag: lis
url: http://192.168.198.101:7827/Ewell_WS_S51?wsdl
method: OperationA
namespaceUri:
incrDays: 10
mybatis-plus:
configuration:

@ -26,26 +26,7 @@
<MaxHistory>30</MaxHistory>
</rollingPolicy>
</appender>
<appender name="external-interface" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<!-- 指定日志输出格式 -->
<pattern>[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%X{traceId}] [%L] [%-5p] %m%n</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 指定收集策略:滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--指定生成日志保存地址 -->
<fileNamePattern>${log.path}external%d.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
</appender>
<logger name="com.docus.services.system.service.ClientGetBasicServiceImpl" level="DEBUG" additivity="false">
<appender-ref ref="external-interface" />
</logger>
<springProfile name="dev">

@ -63,7 +63,7 @@
<if test="dto.admisstimes != null">
and `admiss_times` = #{dto.admissTimes}
</if>
<if test="dto.admisstimes != null">
<if test="dto.disDateStart != null and dto.disDateStart != ''">
and `dis_date` between #{dto.disDateStart} AND #{dto.disDateEnd}
</if>
@ -89,10 +89,7 @@
<if test="dto.admisstimes != null">
and `admiss_times` = #{dto.admissTimes}
</if>
<if test="dto.admisstimes != null">
and `dis_date` between #{dto.disDateStart} AND #{dto.disDateEnd}
</if>
<if test="dto.admisstimes != null">
<if test="dto.disDateStart != null and dto.disDateStart != ''">
and `dis_date` between #{dto.disDateStart} AND #{dto.disDateEnd}
</if>
LIMIT ${offset},${size}
@ -120,4 +117,25 @@
order by `create_time` desc limit 1
</select>
<select id="findSealByCondition" resultType="com.docus.server.collect.entity.TSeal">
SELECT *
FROM
`docus_medicalrecord`.`t_seal`
where
1=1
<if test="seal.sealId != null and seal.sealId != ''">
AND seal_id=#{seal.sealId}
</if>
<if test="seal.patientId != null and seal.patientId != ''">
AND patient_id=#{seal.patientId}
</if>
</select>
<select id="getFileIdFromDownfile" resultType="java.lang.Long">
select `t_scan_assort_id` from `docus_archivefile`.`af_downfile` where `t_scan_assort_id`=#{fileId} LIMIT 1
</select>
<select id="getFileIdFromSanAssort" resultType="java.lang.Long">
select id from `docus_archivefile`.`t_scan_assort` where id=#{fileId}
</select>
</mapper>

Loading…
Cancel
Save