|
|
|
@ -2,15 +2,21 @@ package com.docus.server.collect.collector;
|
|
|
|
|
|
|
|
|
|
import com.docus.core.util.Func;
|
|
|
|
|
import com.docus.server.collect.entity.TBasic;
|
|
|
|
|
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.List;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 检验报告采集
|
|
|
|
@ -21,6 +27,10 @@ import java.time.LocalDateTime;
|
|
|
|
|
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:}")
|
|
|
|
@ -37,8 +47,21 @@ public class LisSystemCollector{
|
|
|
|
|
*/
|
|
|
|
|
public void collect(TBasic basic, String beginDateTime, String endDateTime){
|
|
|
|
|
String collectData = collectData(basic, beginDateTime, endDateTime);
|
|
|
|
|
ReportFileInfoDTO reportFileInfoDTO = LisSystemCollectConverter.convert(collectData);
|
|
|
|
|
fileReportService.saveDownloadTaskAndReport(reportFileInfoDTO);
|
|
|
|
|
List<ReportFileInfoDTO> reportFileInfoDTOList = LisSystemCollectConverter.convert(collectData);
|
|
|
|
|
for (ReportFileInfoDTO reportFileInfoDTO : reportFileInfoDTOList) {
|
|
|
|
|
if(!isBelongToPatient(reportFileInfoDTO,basic)){
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
reportFileInfoDTO.setPatientId(basic.getPatientId());
|
|
|
|
|
reportFileInfoDTO.setAssortId(assortId);
|
|
|
|
|
reportFileInfoDTO.setSysFlag(sysFlag);
|
|
|
|
|
fileReportService.saveDownloadTaskAndReport(reportFileInfoDTO);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private boolean isBelongToPatient(ReportFileInfoDTO reportFileInfoDTO, TBasic basic) {
|
|
|
|
|
// todo 验证报告是否属于患者,暂时描述说查询条件是患者唯一,不需要实现
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String collectData(TBasic basic,String beginDateTime,String endDateTime){
|
|
|
|
@ -118,11 +141,173 @@ public class LisSystemCollector{
|
|
|
|
|
* @param lisSystemCollectData 验系统报告采集数据
|
|
|
|
|
* @return 文件上报信息
|
|
|
|
|
*/
|
|
|
|
|
public static ReportFileInfoDTO convert(String lisSystemCollectData) {
|
|
|
|
|
//todo 转换未实现 2023年9月1日15:49:45 2023-9-4
|
|
|
|
|
return null;
|
|
|
|
|
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 ("SAMPLE_TYPE_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_PDF_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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
String data="<Response>\n" +
|
|
|
|
|
" <RetInfo>\n" +
|
|
|
|
|
" <RetCode>0</RetCode>\n" +
|
|
|
|
|
" <RetCon>成功</RetCon>\n" +
|
|
|
|
|
" </RetInfo>\n" +
|
|
|
|
|
" <MsgInfo>\n" +
|
|
|
|
|
" <Msg>\n" +
|
|
|
|
|
" <HeadInfo>\n" +
|
|
|
|
|
" <MI_CODE>44A003</MI_CODE>\n" +
|
|
|
|
|
" <MI_NAME>广东省中医院</MI_NAME>\n" +
|
|
|
|
|
" <MI_EN_NAME>\n" +
|
|
|
|
|
" </MI_EN_NAME>\n" +
|
|
|
|
|
" <MI_ADDR>\n" +
|
|
|
|
|
" </MI_ADDR>\n" +
|
|
|
|
|
" <MI_ADDR_ZIP_CODE>\n" +
|
|
|
|
|
" </MI_ADDR_ZIP_CODE>\n" +
|
|
|
|
|
" <MI_PHONE_NO>\n" +
|
|
|
|
|
" </MI_PHONE_NO>\n" +
|
|
|
|
|
" </HeadInfo>\n" +
|
|
|
|
|
" <PatInfo>\n" +
|
|
|
|
|
" <VUID>L560966</VUID>\n" +
|
|
|
|
|
" <OUTHOSP_INDEX_NO>\n" +
|
|
|
|
|
" </OUTHOSP_INDEX_NO>\n" +
|
|
|
|
|
" <OUTHOSP_NO>\n" +
|
|
|
|
|
" </OUTHOSP_NO>\n" +
|
|
|
|
|
" <INHOSP_INDEX_NO>L560966</INHOSP_INDEX_NO>\n" +
|
|
|
|
|
" <INHOSP_NO>70120410</INHOSP_NO>\n" +
|
|
|
|
|
" <EMPI_ID>L560966</EMPI_ID>\n" +
|
|
|
|
|
" <PAT_NAME>等等</PAT_NAME>\n" +
|
|
|
|
|
" <AGE>84岁</AGE>\n" +
|
|
|
|
|
" <PHYSI_SEX_CODE>1</PHYSI_SEX_CODE>\n" +
|
|
|
|
|
" <PHYSI_SEX_NAME>女</PHYSI_SEX_NAME>\n" +
|
|
|
|
|
" <TEST_PAT_SOURCE_CODE>IN</TEST_PAT_SOURCE_CODE>\n" +
|
|
|
|
|
" <TEST_PAT_SOURCE_NAME>住院</TEST_PAT_SOURCE_NAME>\n" +
|
|
|
|
|
" </PatInfo>\n" +
|
|
|
|
|
" <ReportInfo>\n" +
|
|
|
|
|
" <SAMPLE_NO>20190928G0140001</SAMPLE_NO>\n" +
|
|
|
|
|
" <ORDER_NO>\n" +
|
|
|
|
|
" </ORDER_NO>\n" +
|
|
|
|
|
" <REPORT_NO>100026912200</REPORT_NO>\n" +
|
|
|
|
|
" <REPORT_PDF_URL>httt://nbplus/diaomao.pdf\n" +
|
|
|
|
|
" </REPORT_PDF_URL>\n" +
|
|
|
|
|
" <TEST_CATEG_CODE>LIS5149</TEST_CATEG_CODE>\n" +
|
|
|
|
|
" <TEST_CATEG_NAME>离子4项</TEST_CATEG_NAME>\n" +
|
|
|
|
|
" <SAMPLE_TYPE_CODE>LIS2860</SAMPLE_TYPE_CODE>\n" +
|
|
|
|
|
" <SAMPLE_TYPE_NAME>静脉血</SAMPLE_TYPE_NAME>\n" +
|
|
|
|
|
" <HOSPITAL_DISTRICT_CODE>A001</HOSPITAL_DISTRICT_CODE>\n" +
|
|
|
|
|
" <HOSPITAL_DISTRICT_NAME>\n" +
|
|
|
|
|
" </HOSPITAL_DISTRICT_NAME>\n" +
|
|
|
|
|
" <APPLY_DEPT_CODE>966</APPLY_DEPT_CODE>\n" +
|
|
|
|
|
" <APPLY_DEPT_NAME>测试科</APPLY_DEPT_NAME>\n" +
|
|
|
|
|
" <APPLY_DR_CODE>966</APPLY_DR_CODE>\n" +
|
|
|
|
|
" <APPLY_DR_NAME>测试科</APPLY_DR_NAME>\n" +
|
|
|
|
|
" <EXECUT_DEPT_CODE>\n" +
|
|
|
|
|
" </EXECUT_DEPT_CODE>\n" +
|
|
|
|
|
" <EXECUT_DEPT_NAME>\n" +
|
|
|
|
|
" </EXECUT_DEPT_NAME>\n" +
|
|
|
|
|
" <SAMPLE_BODYPART>\n" +
|
|
|
|
|
" </SAMPLE_BODYPART>\n" +
|
|
|
|
|
" <MICROBE_TEST_FLAG>\n" +
|
|
|
|
|
" </MICROBE_TEST_FLAG>\n" +
|
|
|
|
|
" <REPORT_NOTE>\n" +
|
|
|
|
|
" </REPORT_NOTE>\n" +
|
|
|
|
|
" <APPLY_DATETIME>2019-09-29 01:10:46</APPLY_DATETIME>\n" +
|
|
|
|
|
" <COLLECTION_DATETIME>2019-09-28 22:17:29</COLLECTION_DATETIME>\n" +
|
|
|
|
|
" <RECEIVE_DATETIME>2019-09-28 22:23:55</RECEIVE_DATETIME>\n" +
|
|
|
|
|
" <EXECUT_DATETIME>2019-09-28 22:23:56</EXECUT_DATETIME>\n" +
|
|
|
|
|
" <REPORT_APPROVAL_DATETIME>2019-09-28 22:27:15</REPORT_APPROVAL_DATETIME>\n" +
|
|
|
|
|
" <EXECUT_DR_CODE>3515</EXECUT_DR_CODE>\n" +
|
|
|
|
|
" <EXECUT_DR_NAME>韩光</EXECUT_DR_NAME>\n" +
|
|
|
|
|
" <PROOF_DR_CODE>3333</PROOF_DR_CODE>\n" +
|
|
|
|
|
" <PROOF_DR_NAME>吴晓宾</PROOF_DR_NAME>\n" +
|
|
|
|
|
" <REPORT_DR_CODE>3333</REPORT_DR_CODE>\n" +
|
|
|
|
|
" <REPORT_DR_NAME>吴晓宾</REPORT_DR_NAME>\n" +
|
|
|
|
|
" <CLINIC_DIAG_SIGNIFICANCE>C93.100||慢性单核细胞白血病</CLINIC_DIAG_SIGNIFICANCE>\n" +
|
|
|
|
|
" </ReportInfo>\n" +
|
|
|
|
|
" <ReportInfo>\n" +
|
|
|
|
|
" <SAMPLE_NO>20190928G0140002</SAMPLE_NO>\n" +
|
|
|
|
|
" <ORDER_NO>1121|3232</ORDER_NO>\n" +
|
|
|
|
|
" <REPORT_NO>100026912300</REPORT_NO>\n" +
|
|
|
|
|
" <REPORT_PDF_URL>\n" +
|
|
|
|
|
" </REPORT_PDF_URL>\n" +
|
|
|
|
|
" <TEST_CATEG_CODE>LIS5080</TEST_CATEG_CODE>\n" +
|
|
|
|
|
" <TEST_CATEG_NAME>肝功2项</TEST_CATEG_NAME>\n" +
|
|
|
|
|
" <SAMPLE_TYPE_CODE>LIS2860</SAMPLE_TYPE_CODE>\n" +
|
|
|
|
|
" <SAMPLE_TYPE_NAME>静脉血</SAMPLE_TYPE_NAME>\n" +
|
|
|
|
|
" <HOSPITAL_DISTRICT_CODE>A001</HOSPITAL_DISTRICT_CODE>\n" +
|
|
|
|
|
" <HOSPITAL_DISTRICT_NAME>\n" +
|
|
|
|
|
" </HOSPITAL_DISTRICT_NAME>\n" +
|
|
|
|
|
" <APPLY_DEPT_CODE>966</APPLY_DEPT_CODE>\n" +
|
|
|
|
|
" <APPLY_DEPT_NAME>测试科</APPLY_DEPT_NAME>\n" +
|
|
|
|
|
" <APPLY_DR_CODE>966</APPLY_DR_CODE>\n" +
|
|
|
|
|
" <APPLY_DR_NAME>测试科</APPLY_DR_NAME>\n" +
|
|
|
|
|
" <EXECUT_DEPT_CODE>\n" +
|
|
|
|
|
" </EXECUT_DEPT_CODE>\n" +
|
|
|
|
|
" <EXECUT_DEPT_NAME>\n" +
|
|
|
|
|
" </EXECUT_DEPT_NAME>\n" +
|
|
|
|
|
" <SAMPLE_BODYPART>\n" +
|
|
|
|
|
" </SAMPLE_BODYPART>\n" +
|
|
|
|
|
" <MICROBE_TEST_FLAG>\n" +
|
|
|
|
|
" </MICROBE_TEST_FLAG>\n" +
|
|
|
|
|
" <REPORT_NOTE>\n" +
|
|
|
|
|
" </REPORT_NOTE>\n" +
|
|
|
|
|
" <APPLY_DATETIME>2019-09-29 10:01:55</APPLY_DATETIME>\n" +
|
|
|
|
|
" <COLLECTION_DATETIME>2019-09-28 22:17:41</COLLECTION_DATETIME>\n" +
|
|
|
|
|
" <RECEIVE_DATETIME>2019-09-28 22:24:12</RECEIVE_DATETIME>\n" +
|
|
|
|
|
" <EXECUT_DATETIME>2019-09-28 22:24:12</EXECUT_DATETIME>\n" +
|
|
|
|
|
" <REPORT_APPROVAL_DATETIME>2019-09-28 22:27:08</REPORT_APPROVAL_DATETIME>\n" +
|
|
|
|
|
" <EXECUT_DR_CODE>3515</EXECUT_DR_CODE>\n" +
|
|
|
|
|
" <EXECUT_DR_NAME>韩光</EXECUT_DR_NAME>\n" +
|
|
|
|
|
" <PROOF_DR_CODE>3333</PROOF_DR_CODE>\n" +
|
|
|
|
|
" <PROOF_DR_NAME>吴晓宾</PROOF_DR_NAME>\n" +
|
|
|
|
|
" <REPORT_DR_CODE>3333</REPORT_DR_CODE>\n" +
|
|
|
|
|
" <REPORT_DR_NAME>吴晓宾</REPORT_DR_NAME>\n" +
|
|
|
|
|
" <CLINIC_DIAG_SIGNIFICANCE>C93.100||慢性单核细胞白血病</CLINIC_DIAG_SIGNIFICANCE>\n" +
|
|
|
|
|
" </ReportInfo>\n" +
|
|
|
|
|
" </Msg>\n" +
|
|
|
|
|
" </MsgInfo>\n" +
|
|
|
|
|
"</Response>\n";
|
|
|
|
|
System.out.println(LisSystemCollectConverter.convert(data));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|