添加测试接口,JZH 采集

collector-LIS
wyb 2 years ago
parent 197b798ed7
commit 82044fbc33

@ -1,6 +1,7 @@
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.enums.DownWayEnum;
import com.docus.server.collect.service.FileReportService;
@ -43,14 +44,23 @@ public class LisSystemCollector {
/**
*
*
* @param basic
* @param beginDateTime
* @param endDateTime
* @param basic
*/
public void collect(TBasic basic, String beginDateTime, String endDateTime) {
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);
// 普通的检验报告和 微生物检验报告
String collectDataNormal = collectData(basic, beginDateTime, endDateTime, 0);
String collectDataMtf = collectData(basic, beginDateTime, endDateTime, 1);
String collectDataNormal = collectData(new Jzh(jzh), beginDateTime, endDateTime, 0);
String collectDataMtf = collectData(new Jzh(jzh), beginDateTime, endDateTime, 1);
List<ReportFileInfoDTO> reportFileInfoDTOList = LisSystemCollectConverter.convert(collectDataNormal);
List<ReportFileInfoDTO> reportFileInfoDtoList2 = LisSystemCollectConverter.convert(collectDataMtf);
reportFileInfoDTOList.addAll(reportFileInfoDtoList2);
@ -65,6 +75,11 @@ public class LisSystemCollector {
}
}
private boolean isBelongToPatient(ReportFileInfoDTO reportFileInfoDTO, TBasic basic) {
// todo 验证报告是否属于患者,暂时描述说查询条件是患者唯一,不需要实现
return true;
@ -79,7 +94,7 @@ public class LisSystemCollector {
* @param microbeTestFlag 10
* @return
*/
public String collectData(TBasic basic, String beginDateTime, String endDateTime, int microbeTestFlag) {
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));
@ -150,7 +165,87 @@ public class LisSystemCollector {
}
private static class LisSystemCollectConverter {
/**
*
*
* @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 class LisSystemCollectConverter {
/**
*

@ -43,7 +43,7 @@ public class CollectController implements GdSzyCollectServiceApi {
log.error("采集失败jzh:{} 患者住院或者出院时间为空!", jzh);
return CommonResult.failed("采集失败,患者住院或者出院时间为空!");
}
lisSystemCollector.collect(tBasic, tBasic.getAdmissDate(), tBasic.getDisDate());
lisSystemCollector.collect(tBasic);
return CommonResult.success("采集完成!");
}
@ -72,7 +72,7 @@ public class CollectController implements GdSzyCollectServiceApi {
log.error("采集失败jzh:{} 患者住院或者出院时间为空!", basic.getJzh());
continue;
}
lisSystemCollector.collect(basic, basic.getAdmissDate(), basic.getDisDate());
lisSystemCollector.collect(basic);
}
}
}

@ -1,12 +1,22 @@
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
*/
@ -18,9 +28,18 @@ public class TestCollectController {
@Autowired
private LisSystemCollector lisSystemCollector;
// @ApiOperation("采集测试 LIS 采集接口")
// @GetMapping("/lis")
// public CommonResult<String> lisSystemCollect() {
// return CommonResult.success(lisSystemCollector.collectData(null, null, null));
// }
@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;
}
}

@ -1,9 +1,21 @@
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
@ -11,10 +23,56 @@ import org.springframework.stereotype.Component;
@Component
@Slf4j
public class LisSystemCollectJob {
@XxlJob("LisSystemCollectJob")
public void lisSystemCollectJob(){
// lisSystemCollector.collect(null,null,null);
@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 ===================================");
}
}

Loading…
Cancel
Save