检查报告推送逻辑处理

master
wyb 2 years ago
parent 4e31ac1ede
commit 6166abd921

@ -1,25 +0,0 @@
<!-- 报告接收 webservice 需要的数据对应下载服务,标签内有 xpath 路径,则取 接收xml中的数据否则取 标签 value值 -->
<REPORT>
<!--住院号-->
<INPATIENT_NO>/Request/Msg/INHOSP_INDEX_NO</INPATIENT_NO>
<!--住院流水号-->
<JZH>/Request/Msg/INHOSP_NO</JZH>
<!--住院次数-->
<ADMISS_TIMES>/Request/Msg/INHOSP_NUM</ADMISS_TIMES>
<!--采集流水号/报告唯一单号-->
<SERIALNUM>/Request/Msg/UNIQUE_FILE</SERIALNUM>
<!--文件标题-->
<FILE_TITLE>/Request/Msg/FILE_NAME</FILE_TITLE>
<!--下载地址-->
<DOWNURL>/Request/Msg/PDF_PATH</DOWNURL>
<!--表单类型 -->
<TABLE_TYPE>/Request/Msg/TABLE_TYPE</TABLE_TYPE>
<!--文件分类 无则取 TABLE_TYPE 在js-table-type中 取文件分类-->
<ASSORT_ID value="123456"> </ASSORT_ID>
<!--采集系统 文件表的source-->
<SYSTEM_FLAG>/Request/Msg/TABLE_TYPE</SYSTEM_FLAG>
<!--采集类型(文件来源 1:采集器2扫描生产软件)-->
<FILESOURCE value="1"> </FILESOURCE>
<!--文件保存位置类型 1:服务器本地2ftp服务器3共享文件夹-->
<FILE_STORAGE_TYPE value="1"> </FILE_STORAGE_TYPE>
</REPORT>

@ -0,0 +1,24 @@
#-- 服务接收报告消息保存数据--#
USE `docus_archivefile`;
CREATE TABLE `af_report_record` (
`task_id` bigint(19) NOT NULL COMMENT 'af_collect_task 主键id',
`inpatient_no` varchar(50) DEFAULT NULL COMMENT '住院号',
`jzh` varchar(50) DEFAULT NULL COMMENT '住院流水号,记账号',
`admiss_times` int(11) DEFAULT NULL COMMENT '住院次数',
`down_url` varchar(2048) DEFAULT NULL COMMENT '下载地址,多个使用| 分隔',
`down_type` int(11) DEFAULT NULL COMMENT '下载路径类型 1:url,2:base64,3:url base64,4:共享文件5本地文件base64',
`state` int(11) DEFAULT NULL COMMENT '状态 0 未开始可用于补偿1 已发送下载',
`serialnum` varchar(200) DEFAULT NULL COMMENT '文件唯一标识',
`sysflag` varchar(50) DEFAULT NULL COMMENT '文件来源 采集系统',
`zd_assort_id` varchar(200) DEFAULT NULL COMMENT '文件分段id',
`create_time` datetime DEFAULT NULL COMMENT '记录创建时间',
`update_time` datetime DEFAULT NULL COMMENT '记录更新时间',
`file_name` varchar(255) DEFAULT NULL COMMENT '文件名称',
`patient_id` varchar(50) DEFAULT NULL COMMENT '病案主键',
PRIMARY KEY (`task_id`),
KEY `idx_af_report_record_patientid` (`patient_id`) USING BTREE,
KEY `idx_af_report_record_inpatient_no` (`inpatient_no`) USING BTREE,
KEY `idx_af_report_record_jzh` (`jzh`) USING BTREE,
KEY `idx_af_report_record_state` (`state`) USING BTREE,
KEY `idx_af_report_record_sysflag` (`sysflag`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文件上报接收记录';

@ -1,11 +1,17 @@
package com.docus.server.report.config;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
*
* @author wyb
*/
@Component
@Getter
@Setter
public class ApplicationBusinessConfig {
@Value("${docus.report.downurl:}")
private String downUrl;

@ -1,5 +1,6 @@
package com.docus.server.report.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -13,12 +14,17 @@ public class ReportDownDto {
@ApiModelProperty(value = "采集器ip")
private String ip;
@ApiModelProperty(value = "文件信息")
private List<ReportDownScanFileDto> scanfiles;
@ApiModelProperty(value = "分类id")
private String assortid;
@ApiModelProperty(value = "患者信息")
private ReportDownPatientDto patient;
@ApiModelProperty(value = "分类id")
private String assortid;
@ApiModelProperty(value = "文件信息")
private List<ReportDownScanFileDto> scanfiles;
}
@ApiModelProperty(value = "扫描用户代码")
private String scanusercode;
@ApiModelProperty(value = "扫描用户名称")
private String scanusername;
}

@ -7,4 +7,20 @@ import lombok.Data;
public class ReportDownPatientDto {
@ApiModelProperty(value = "记帐号")
private String jzh;
@ApiModelProperty(value = "住院次数,记帐号重复则加这个参数无则Null")
private Integer admisstimes;
@ApiModelProperty(value = "病案主键如有传则使用无则使用jzh")
private String patientid;
@ApiModelProperty(value = "病案号")
private String inpatientno;
@ApiModelProperty(value = "物理存储位置,有则传")
private String storagelocation;
public ReportDownPatientDto(ReportDto reportDto) {
this.patientid = reportDto.getPatientId();
this.jzh = reportDto.getJzh();
this.admisstimes = reportDto.getAdmisstimes();
this.inpatientno = reportDto.getInpatientNo();
}
}

@ -5,20 +5,36 @@ import lombok.Data;
@Data
public class ReportDownScanFileDto {
@ApiModelProperty(value = "任务id(如无效任务id则不更新任务表数据)")
private Long taskid;
@ApiModelProperty(value = "文件标题")
private String filetitle;
@ApiModelProperty(value = "采集类型(文件来源 1:采集器2扫描生产软件)")
private int filesource;
@ApiModelProperty(value = "下载类型(1:服务器本地2ftp服务器3共享文件夹)")
private int filestoragetype;
@ApiModelProperty(value = "文件类型(1:url,2:base64,3:url base64,4:共享文件5本地文件base64)")
private int filetype=1;
@ApiModelProperty(value = "下载地址")
private String downurl;
@ApiModelProperty(value = "档案信息")
private String recordid;
@ApiModelProperty("采集流水号")
// @ApiModelProperty(value = "档案信息")
// private String recordid;
@ApiModelProperty(value = "采集流水号")
private String serialnum;
@ApiModelProperty(value = "任务id")
private Long taskid;
@ApiModelProperty("文件类型(1:url,2:base64)")
private Integer filetype = 1;
@ApiModelProperty(value = "排序日期")
private String sortdate;
@ApiModelProperty(value = "是否作废 0否 不作废1是 作废")
private int cancel=0;
public ReportDownScanFileDto(ReportDto reportDto) {
this.taskid=reportDto.getTaskId();
this.filetitle=reportDto.getFileTitle();
this.filesource=Integer.parseInt(reportDto.getFileSource());
this.filestoragetype=Integer.parseInt(reportDto.getFilestoragetype());
this.filetype=reportDto.getDowntype();
this.downurl=reportDto.getDownUrl();
this.serialnum=reportDto.getSerialnum();
}
}

@ -52,7 +52,17 @@ public class ReportDto {
private String filestoragetype;
/**
* id
* id ,
*/
private Long taskId;
/**
*
*/
private String patientId;
/**
* 1:url2:base643:url base644:5base64
*/
private Integer downtype=1;
}

@ -32,8 +32,6 @@ public class AfCollectTask implements Serializable {
@ApiModelProperty(value = "病案主键")
private String patientId;
@ApiModelProperty(value = "来源 1护理文书2 电子病历3 Pacs检查4心电图5手麻系统6 Lis检验7病案首页8长临医嘱")
private String sysflag;

@ -0,0 +1,103 @@
package com.docus.server.report.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.docus.server.report.dto.ReportDto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
*
*/
@Data
public class AfReportRecord implements Serializable {
private static final long serialVersionUID = 1L;
/**
* af_collect_task id
*/
private Long taskId;
/**
*
*/
private String inpatientNo;
/**
*
*/
private String jzh;
/**
*
*/
private Integer admissTimes;
/**
* 使 |
*/
private String downUrl;
/**
* 1:url2:base643:url base644:5base64
*/
private Integer downType;
/**
* 0 1
*/
private Integer state;
/**
* id
*/
private String serialnum;
/**
*
*/
private String sysflag;
/**
* id
*/
private String zdAssortId;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
/**
*
*/
private String fileName;
/**
*
*/
private String patientId;
public AfReportRecord() {
}
public AfReportRecord(ReportDto reportDto){
this.jzh=reportDto.getJzh();
this.admissTimes=reportDto.getAdmisstimes();
this.inpatientNo=reportDto.getInpatientNo();
this.downUrl=reportDto.getDownUrl();
this.sysflag=reportDto.getSysFlag();
this.zdAssortId=reportDto.getAssortId();
this.serialnum=reportDto.getSerialnum();
this.fileName=reportDto.getFileTitle();
this.downType=reportDto.getDowntype();
}
}

@ -1,19 +1,77 @@
package com.docus.server.report.listener;
import cn.hutool.core.net.Ipv4Util;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import com.alibaba.fastjson.JSON;
import com.docus.core.util.Func;
import com.docus.server.report.config.ApplicationBusinessConfig;
import com.docus.server.report.dto.ReportDownDto;
import com.docus.server.report.dto.ReportDownPatientDto;
import com.docus.server.report.dto.ReportDownScanFileDto;
import com.docus.server.report.dto.ReportDto;
import com.docus.server.report.event.ReportDownEvent;
import com.docus.server.report.mapper.AfReportRecordMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
*
* @author wyb
*/
@Component
@Slf4j
public class ReportDownListener {
@Resource
private ApplicationBusinessConfig applicationBusinessConfig;
@Resource
private AfReportRecordMapper afReportRecordMapper;
@EventListener
@Async
@Async("threadPoolExecutor")
public void reportDown(ReportDownEvent reportDownEvent){
ReportDto reportDto = reportDownEvent.getReportDto();
// 组织基础信息数据
ReportDownPatientDto reportDownPatientDto = new ReportDownPatientDto(reportDto);
// 组织文件数据
List<ReportDownScanFileDto> reportDownScanFileDtos = new ArrayList<>(5);
ReportDownScanFileDto reportDownScanFileDto = new ReportDownScanFileDto(reportDto);
reportDownScanFileDtos.add(reportDownScanFileDto);
// 组织下载数据,基础信息和文件数据
ReportDownDto reportDownDto = new ReportDownDto();
reportDownDto.setAssortid(reportDto.getAssortId());
reportDownDto.setCollectorid(reportDto.getSysFlag());
reportDownDto.setScanusercode("admin");
reportDownDto.setScanusername("admin");
reportDownDto.setPatient(reportDownPatientDto);
reportDownDto.setScanfiles(reportDownScanFileDtos);
// 下面是调用下载服务
String requestParam = JSON.toJSONString(reportDownDto);
try {
HttpRequest post = HttpUtil.createPost(applicationBusinessConfig.getDownUrl());
post.timeout(5*1000);
post.header("Content-Type","application/json; charset=utf-8");
post.body(requestParam);
HttpResponse response = post.execute();
String respBody = response.body();
log.info("调用下载服务成功,响应参数:{}",respBody);
afReportRecordMapper.updateStateByTaskId(reportDto.getTaskId());
}catch (Exception e){
log.error("调用下载服务失败:地址为:"+applicationBusinessConfig.getDownUrl()+" 参数为 "+requestParam,e);
}
}
}

@ -1,5 +1,8 @@
package com.docus.server.report.mapper;
import com.docus.server.report.entity.AfCollectTask;
import org.apache.ibatis.annotations.Param;
/**
* mapper
* @author wyb
@ -8,4 +11,17 @@ package com.docus.server.report.mapper;
public interface AfCollectTaskMapper {
/**
*
* @param afCollectTask
* @return
*/
int saveTask(@Param("task") AfCollectTask afCollectTask);
/**
*
* @param taskId
* @return
*/
AfCollectTask getTaskById(@Param("id") Long taskId);
}

@ -0,0 +1,46 @@
package com.docus.server.report.mapper;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.docus.server.report.entity.AfReportRecord;
import lombok.Data;
import org.apache.ibatis.annotations.Param;
import java.io.Serializable;
/**
*
* @author wyb
*/
public interface AfReportRecordMapper {
/**
*
* @param afReportRecord
* @return
*/
int saveRecord(@Param("reportRecord") AfReportRecord afReportRecord);
/**
*
* @param serialnum
* @param inpatientNo
* @param admisstimes
* @param sysFlag
* @return
*/
AfReportRecord getRecordBySerialnumAndInpatientNoAndSysFlag(@Param("serialnum") String serialnum, @Param("inpatientNo")String inpatientNo,@Param("admisstimes") Integer admisstimes, @Param("sysFlag")String sysFlag);
/**
*
* @param afReportRecord
* @return
*/
int updateRecordByTaskId(@Param("reportRecord")AfReportRecord afReportRecord);
/**
*
* @param taskId id
* @return
*/
int updateStateByTaskId(@Param("taskId") Long taskId);
}

@ -3,6 +3,7 @@ package com.docus.server.report.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.docus.server.report.entity.TBasic;
import org.apache.ibatis.annotations.Param;
/**
* <p>
@ -14,4 +15,11 @@ import com.docus.server.report.entity.TBasic;
*/
public interface TBasicMapper{
/**
*
* @param inpatientNo
* @param admissTimes
* @return
*/
String getPatientIdByInpatientNoAndAdminssTimes(@Param("inpatientNo") String inpatientNo,@Param("adminssTimes") Integer admissTimes);
}

@ -1,14 +1,21 @@
package com.docus.server.report.service.impl;
import com.docus.core.util.Func;
import com.docus.infrastructure.redis.service.IdService;
import com.docus.server.report.dto.ReportDto;
import com.docus.server.report.entity.AfCollectTask;
import com.docus.server.report.entity.AfReportRecord;
import com.docus.server.report.event.ReportDownEvent;
import com.docus.server.report.mapper.AfCollectTaskMapper;
import com.docus.server.report.mapper.AfReportRecordMapper;
import com.docus.server.report.mapper.TBasicMapper;
import com.docus.server.report.service.ReportService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
*
* @author wyb
@ -17,12 +24,66 @@ import org.springframework.stereotype.Service;
@Service
public class ReportServiceImpl implements ReportService {
@Autowired
@Resource
private ApplicationContext applicationContext;
@Resource
private AfCollectTaskMapper collectTaskMapper;
@Resource
private AfReportRecordMapper afReportRecordMapper;
@Resource
private TBasicMapper tBasicMapper;
@Resource
private IdService idService;
@Override
public void report(ReportDto reportDto) {
String patientId=null;
try {
// 如果出现多条出错的情况,还是得保存收到的信息,人工干预处理
patientId=tBasicMapper.getPatientIdByInpatientNoAndAdminssTimes(reportDto.getInpatientNo(),reportDto.getAdmisstimes());
}catch (Exception ex){
log.error("查询病案主键出错了",ex);
}
// 不验证数据,始终保存收到的信息
AfReportRecord afReportRecord = afReportRecordMapper.getRecordBySerialnumAndInpatientNoAndSysFlag(reportDto.getSerialnum(),reportDto.getInpatientNo(),reportDto.getAdmisstimes(),reportDto.getSysFlag());
if(afReportRecord==null){
long id = idService.getDateSeq();
afReportRecord = new AfReportRecord(reportDto);
afReportRecord.setTaskId(id);
afReportRecord.setPatientId(patientId);
afReportRecordMapper.saveRecord(afReportRecord);
}else {
// 更新 主要更新 url
afReportRecord.setDownUrl(reportDto.getDownUrl());
afReportRecord.setDownType(reportDto.getDowntype());
afReportRecord.setFileName(reportDto.getFileTitle());
afReportRecord.setPatientId(patientId);
afReportRecordMapper.updateRecordByTaskId(afReportRecord);
}
// 不使用事务,不需要回滚上面的保存
// 根据记录中的任务id查询是否需要新增任务
if(Func.isBlank(patientId)){
log.warn("病案号:{},住院次数:{} 未找到病案基础数据,暂不进行下载任务!",reportDto.getInpatientNo(),reportDto.getAdmisstimes());
return;
}
// 判断是否需要保存任务
AfCollectTask afCollectTask=collectTaskMapper.getTaskById(afReportRecord.getTaskId());
if(afCollectTask==null){
afCollectTask=new AfCollectTask();
afCollectTask.setId(afReportRecord.getTaskId());
afCollectTask.setC1(reportDto.getSerialnum());
afCollectTask.setC2(reportDto.getFileTitle());
afCollectTask.setC3(reportDto.getJzh());
afCollectTask.setPatientId(patientId);
afCollectTask.setSysflag(reportDto.getSysFlag());
afCollectTask.setState("0");
afCollectTask.setPatientId(patientId);
collectTaskMapper.saveTask(afCollectTask);
}
// 都成功后发布下载事件
reportDto.setTaskId(afReportRecord.getTaskId());
reportDto.setPatientId(patientId);
applicationContext.publishEvent(new ReportDownEvent(reportDto));
}
}

@ -24,15 +24,15 @@ public interface IReportServer {
String pushICUReport(String icuReportMessage);
/**
* -
* @param inspectionReportMessage -
* -
* @param inspectionReportMessage -
* @return
*/
String pushAddInspectionReport(String inspectionReportMessage);
/**
* -
* @param inspectionReportMessage -
* -
* @param inspectionReportMessage -
* @return
*/
String pushUpdateInspectionReport(String inspectionReportMessage);

@ -1,20 +1,23 @@
package com.docus.server.report.webservice.impl;
import com.alibaba.fastjson.JSONObject;
import com.docus.core.util.DateUtil;
import com.docus.core.util.Func;
import com.docus.infrastructure.core.exception.BaseException;
import com.docus.server.report.dto.ReportDto;
import com.docus.server.report.service.ReportService;
import com.docus.server.report.util.IdUtil;
import com.docus.server.report.util.JSXMLResult;
import com.docus.server.report.util.TableJsonRead;
import com.docus.server.report.util.XmlUtil;
import com.docus.server.report.webservice.IReportServer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import javax.annotation.Resource;
import java.util.Date;
/**
* @author wyb
* @date 20233313:42:36
@ -23,7 +26,7 @@ import org.w3c.dom.Node;
@Slf4j
public class SdryReportServerImpl implements IReportServer {
@Autowired
@Resource
private ReportService reportService;
@Override
@ -36,6 +39,7 @@ public class SdryReportServerImpl implements IReportServer {
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) {
@ -47,18 +51,6 @@ public class SdryReportServerImpl implements IReportServer {
}
}
public static void main(String[] args) {
TableJsonRead jsonRead = new TableJsonRead();
JSONObject jsonObject = jsonRead.Read("data-config", "js-table-type.json", JSONObject.class);
String jsReportConfigXml = jsonRead.ReadContent("data-config", "js-report-config.xml");
XmlUtil of = XmlUtil.of(jsReportConfigXml);
Node node = of.getNode("/REPORT/ASSORT_ID");
System.out.println(node.getTextContent());
System.out.println(node.getNodeValue());
NamedNodeMap attributes = node.getAttributes();
System.out.println(attributes.getNamedItem("value").getNodeValue());
}
/**
* 使xml
@ -72,48 +64,48 @@ public class SdryReportServerImpl implements IReportServer {
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);
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);
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);
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);
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);
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);
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);
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();
Node assortIdXpathNode = configXmlUtil.getNode("/REPORT/ASSORT_ID");
String assortIdXpath = assortIdXpathNode.getTextContent();
String assortId;
if (Func.isBlank(assortIdXPath)) {
if (Func.isBlank(assortIdXpath)) {
// 如果没有配置 取value 属性如果value也未配置 取 tableType 对应的json配置最终方案默认 other 分段
Node assortIdValueNode = assortIdXPathNode.getAttributes().getNamedItem("value");
Node assortIdValueNode = assortIdXpathNode.getAttributes().getNamedItem("value");
if (Func.isEmpty(assortIdValueNode)) {
assortId = assortIdValueNode.getNodeValue();
} else {
@ -123,20 +115,20 @@ public class SdryReportServerImpl implements IReportServer {
assortId = tableTypeJson.getString("other");
}
} else {
Node assortIdNode = xmlUtil.getNode(assortIdXPath);
Node assortIdNode = xmlUtil.getNode(assortIdXpath);
assortId = assortIdNode.getTextContent();
}
Node sysFlagXPathNode = configXmlUtil.getNode("/REPORT/SYSTEM_FLAG");
String sysFlagXPath = sysFlagXPathNode.getTextContent();
Node sysFlagNode = xmlUtil.getNode(sysFlagXPath);
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();
Node fileSourceXpathNode = configXmlUtil.getNode("/REPORT/FILESOURCE");
String fileSourceXpath = fileSourceXpathNode.getTextContent();
String fileSource;
if (Func.isBlank(fileSourceXPath)) {
Node fileSourceValueNode = fileSourceXPathNode.getAttributes().getNamedItem("value");
if (Func.isBlank(fileSourceXpath)) {
Node fileSourceValueNode = fileSourceXpathNode.getAttributes().getNamedItem("value");
if (Func.isEmpty(fileSourceValueNode)) {
fileSource = null;
} else {
@ -144,16 +136,16 @@ public class SdryReportServerImpl implements IReportServer {
}
} else {
Node fileSourceNode = xmlUtil.getNode(fileSourceXPath);
Node fileSourceNode = xmlUtil.getNode(fileSourceXpath);
fileSource = fileSourceNode.getTextContent();
}
Node fileStorageTypeXPathNode = configXmlUtil.getNode("/REPORT/FILE_STORAGE_TYPE");
String fileStorageTypeXPath = fileStorageTypeXPathNode.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.isBlank(fileStorageTypeXpath)) {
Node filestoragetypeValueNode = fileStorageTypeXpathNode.getAttributes().getNamedItem("value");
if (Func.isEmpty(filestoragetypeValueNode)) {
fileStorageType = "1";
} else {
@ -161,7 +153,7 @@ public class SdryReportServerImpl implements IReportServer {
}
} else {
Node filestoragetypeNode = xmlUtil.getNode(fileStorageTypeXPath);
Node filestoragetypeNode = xmlUtil.getNode(fileStorageTypeXpath);
fileStorageType = filestoragetypeNode.getTextContent();
}
@ -188,6 +180,7 @@ public class SdryReportServerImpl implements IReportServer {
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) {
@ -201,37 +194,336 @@ public class SdryReportServerImpl implements IReportServer {
@Override
public String pushAddInspectionReport(String inspectionReportMessage) {
log.info("收到检查检验报告新增消息:{}", inspectionReportMessage);
log.info("收到检查报告新增消息:{}", inspectionReportMessage);
String msgId = "";
String sender = "";
String receiver = "";
try {
XmlUtil xmlUtil = XmlUtil.of(inspectionReportMessage);
Node msgNode = xmlUtil.getNode("/Request/Msg/ID");
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, "系统错误!");
}
return null;
}
@Override
public String pushUpdateInspectionReport(String inspectionReportMessage) {
log.info("收到检查检验报告更新消息{}", inspectionReportMessage);
log.info("收到检查报告更新消息{}", inspectionReportMessage);
String msgId = "";
String sender = "";
String receiver = "";
try {
XmlUtil xmlUtil = XmlUtil.of(inspectionReportMessage);
Node msgNode = xmlUtil.getNode("");
msgNode.getTextContent();
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 insertFailed(msgId, sender, receiver, baseException.getMessage());
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
return insertFailed(msgId, sender, receiver, "系统错误");
}
}
/**
*
*
* @param reportDto
* @throws BaseException
*/
private void verifyReportDto(ReportDto reportDto) throws BaseException {
if (Func.isBlank(reportDto.getInpatientNo())) {
throw new BaseException("住院号不能为空!");
}
return null;
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 "<MCCI_IN000002UV01 ITSVersion=\"XML_1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"urn:hl7-org:v3 ../multicacheschemas/MCCI_IN000002UV01.xsd\" xmlns=\"urn:hl7-org:v3\">\n" +
"\t<id root=\"2.16.156.10011.0\" extension=\"" + IdUtil.standardUUID() + "\"/>\n" +
"\t<creationTime value=\"" + createTime + "\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\" displayable=\"true\"/>\n" +
"\t<processingCode code=\"P\"/>\n" +
"\t<processingModeCode/>\n" +
"\t<acceptAckCode code=\"AL\"/>\n" +
"\t<receiver typeCode=\"RCV\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.1\" extension=\"" + receiver + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</receiver>\n" +
"\t<sender typeCode=\"SND\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.2\" extension=\"" + sender + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</sender>\n" +
"\t<acknowledgement typeCode=\"AA\">\n" +
"\t\t<targetMessage>\n" +
"\t\t\t<id root=\"2.16.156.10011.0\" extension=\"" + msgId + "\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail typeCode=\"I\">\n" +
"\t\t\t<text>\n" +
"\t\t\t\t<description value=\"成功!\"/>\n" +
"\t\t\t</text>\n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"</MCCI_IN000002UV01>\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 "<MCCI_IN000002UV01 ITSVersion=\"XML_1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"urn:hl7-org:v3 ../multicacheschemas/MCCI_IN000002UV01.xsd\" xmlns=\"urn:hl7-org:v3\">\n" +
"\t<id root=\"2.16.156.10011.0\" extension=\"" + IdUtil.standardUUID() + "\"/>\n" +
"\t<creationTime value=\"" + createTime + "\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\" displayable=\"true\"/>\n" +
"\t<processingCode code=\"P\"/>\n" +
"\t<processingModeCode/>\n" +
"\t<acceptAckCode code=\"AL\"/>\n" +
"\t<receiver typeCode=\"RCV\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.1\" extension=\"" + receiver + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</receiver>\n" +
"\t<sender typeCode=\"SND\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.2\" extension=\"" + sender + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</sender>\n" +
"\t<acknowledgement typeCode=\"AE\">\n" +
"\t\t<targetMessage>\n" +
"\t\t\t<id root=\"2.16.156.10011.0\" extension=\"" + msgId + "\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail typeCode=\"I\">\n" +
"\t\t\t<text>\n" +
"\t\t\t\t<description value=\"" + failedMessage + "\"/>\n" +
"\t\t\t</text>\n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"</MCCI_IN000002UV01>\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 "<MCCI_IN000002UV01 ITSVersion=\"XML_1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"urn:hl7-org:v3 ../multicacheschemas/MCCI_IN000002UV01.xsd\" xmlns=\"urn:hl7-org:v3\">\n" +
"\t<id root=\"2.16.156.10011.0\" extension=\"" + IdUtil.standardUUID() + "\"/>\n" +
"\t<creationTime value=\"" + createTime + "\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\" displayable=\"true\"/>\n" +
"\t<processingCode code=\"P\"/>\n" +
"\t<processingModeCode/>\n" +
"\t<acceptAckCode code=\"AL\"/>\n" +
"\t<receiver typeCode=\"RCV\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.1\" extension=\"" + receiver + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</receiver>\n" +
"\t<sender typeCode=\"SND\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.2\" extension=\"" + sender + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</sender>\n" +
"\t<acknowledgement typeCode=\"AA\">\n" +
"\t\t<targetMessage>\n" +
"\t\t\t<id root=\"2.16.156.10011.0\" extension=\"" + msgId + "\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail typeCode=\"I\">\n" +
"\t\t\t<text>\n" +
"\t\t\t\t<description value=\"成功!\"/>\n" +
"\t\t\t</text>\n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"</MCCI_IN000002UV01>\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 "<MCCI_IN000002UV01 ITSVersion=\"XML_1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"urn:hl7-org:v3 ../multicacheschemas/MCCI_IN000002UV01.xsd\" xmlns=\"urn:hl7-org:v3\">\n" +
"\t<id root=\"2.16.156.10011.0\" extension=\"" + IdUtil.standardUUID() + "\"/>\n" +
"\t<creationTime value=\"" + createTime + "\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\" displayable=\"true\"/>\n" +
"\t<processingCode code=\"P\"/>\n" +
"\t<processingModeCode/>\n" +
"\t<acceptAckCode code=\"AL\"/>\n" +
"\t<receiver typeCode=\"RCV\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.1\" extension=\"" + receiver + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</receiver>\n" +
"\t<sender typeCode=\"SND\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.2\" extension=\"" + sender + "\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</sender>\n" +
"\t<acknowledgement typeCode=\"AE\">\n" +
"\t\t<targetMessage>\n" +
"\t\t\t<id root=\"2.16.156.10011.0\" extension=\"" + msgId + "\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail typeCode=\"I\">\n" +
"\t\t\t<text>\n" +
"\t\t\t\t<description value=\"" + failedMessage + "\"/>\n" +
"\t\t\t</text>\n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"</MCCI_IN000002UV01>\n";
}
}

@ -4,7 +4,7 @@ spring:
application:
name: @artifactId@
profiles:
active: dev
active: test
datasource:
url: jdbc:log4jdbc:mysql://db.docus.cn:3306/docus_medicalrecord?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: docus

@ -3,5 +3,15 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.server.report.mapper.AfCollectTaskMapper">
<insert id="saveTask">
INSERT INTO `docus_archivefile`.`af_collect_task`(`id`, `patient_id`, `sysflag`,
`state`, `C1`,`C2`, `C3`)
VALUES (#{task.id}, #{task.patientId}, #{task.sysflag}, '0', #{task.C1}, #{task.C2}, #{task.C3});
</insert>
<select id="getTaskById" resultType="com.docus.server.report.entity.AfCollectTask">
select *
from `docus_archivefile`.`af_collect_task`
where `id` = #{id}
</select>
</mapper>

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.server.report.mapper.AfReportRecordMapper">
<insert id="saveRecord">
INSERT INTO `docus_archivefile`.`af_report_record`(`task_id`, `inpatient_no`, `jzh`, `admiss_times`, `down_url`,
`down_type`, `state`, `serialnum`, `sysflag`, `zd_assort_id`,
`create_time`, `update_time`, `file_name`,`patient_id`)
VALUES (#{reportRecord.taskId}, #{reportRecord.inpatientNo}, #{reportRecord.jzh}, #{reportRecord.admissTimes},
#{reportRecord.downUrl}, #{reportRecord.downType}, 0, #{reportRecord.serialnum},
#{reportRecord.zdAssortId}, #{reportRecord.zdAssortId}, now(), now(), #{reportRecord.fileName},#{reportRecord.patientId});
</insert>
<update id="updateRecordByTaskId">
update `docus_archivefile`.`af_report_record`
set `down_url`=#{reportRecord.downUrl},
`down_type`=#{reportRecord.downType},
`state`=0,
`file_name`=#{reportRecord.fileName},
`patient_id`=#{reportRecord.patientId},
`update_time`=now()
where `task_id` = #{reportRecord.taskId}
</update>
<update id="updateStateByTaskId">
update `docus_archivefile`.`af_report_record`
set `state`= 1,
`update_time`=now()
where `task_id` = #{taskId}
</update>
<select id="getRecordBySerialnumAndInpatientNoAndSysFlag"
resultType="com.docus.server.report.entity.AfReportRecord">
select *
from `docus_archivefile`.`af_report_record`
where `inpatient_no` = #{inpatientNo}
and `serialnum` = #{serialnum}
and `sysflag` = #{sysFlag}
and admiss_times = #{admisstimes}
</select>
</mapper>

@ -4,4 +4,10 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.server.report.mapper.TBasicMapper">
<select id="getPatientIdByInpatientNoAndAdminssTimes" resultType="java.lang.String">
select `patient_id`
from `docus_medicalrecord`.`t_basic`
where `inpatient_no` = #{inpatientNo}
and `admiss_times` = #{adminssTimes}
</select>
</mapper>

Loading…
Cancel
Save