feat:梅州三院,提交后锁定归档这份患者

master
wyb 4 months ago
parent 9322ed5e70
commit fc541a5b3b

@ -5,27 +5,31 @@ import com.docus.core.util.Func;
import com.docus.infrastructure.core.exception.BaseException;
import com.docus.infrastructure.web.api.CommonResult;
import com.docus.infrastructure.web.api.ResultCode;
import com.docus.server.message.busservice.FsBusinessService;
import com.docus.server.message.busservice.MzsyBusinessService;
import com.docus.server.message.config.CollectTaskConfig;
import com.docus.server.message.controller.vo.PushInfoVo;
import com.docus.server.message.converters.FsWsRecordSubmitMessageConvert;
import com.docus.server.message.config.MeiZhouSyQueryConfig;
import com.docus.server.message.converters.MzsyWsRecordSubmitMessageConvert;
import com.docus.server.message.converters.NkWsRecordSubmitMessageConvert;
import com.docus.server.message.converters.WsRecordSubmitMessageConvert;
import com.docus.server.message.dto.*;
import com.docus.server.message.dto.Message;
import com.docus.server.message.dto.MessageResponse;
import com.docus.server.message.dto.NkRecordSubmitDTO;
import com.docus.server.message.dto.TbasicQrPreciseCondition;
import com.docus.server.message.entity.TBasic;
import com.docus.server.message.feign.dto.CompensateTasRequest;
import com.docus.server.message.feign.dto.HospitalSubmitNodeLogAddDTO;
import com.docus.server.message.feign.enums.HospitalSubmitNodeEnum;
import com.docus.server.message.feign.service.CollectTaskService;
import com.docus.server.message.feign.service.HospitalSubmitNodeServiceApi;
import com.docus.server.message.mapper.TBasicMapper;
import com.docus.server.message.rpc.MeiZhouSyRpc;
import com.docus.server.message.rpc.request.MzSyArchiveRecallRequest;
import com.docus.server.message.validate.NkRecordSubmitValidate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
@ -43,6 +47,12 @@ public class MzsyBusinessServiceImpl implements MzsyBusinessService {
@Resource
private TBasicMapper tBasicMapper;
@Resource
private MeiZhouSyRpc meiZhouSyRpc;
@Resource
private MeiZhouSyQueryConfig meiZhouSyConfig;
@Autowired
private HospitalSubmitNodeServiceApi hospitalSubmitNodeServiceApi;
@ -77,6 +87,7 @@ public class MzsyBusinessServiceImpl implements MzsyBusinessService {
nodeLogAddDTO.setCreater(submitName+"("+submitNo+")");
nodeLogAddDTO.setCreaterName(submitName+"("+submitNo+")");
hospitalSubmitNodeServiceApi.addLog(nodeLogAddDTO);
meiZhouSyRpc.archiveAndRecall(archiveRequest(patientIds.get(0),"EMR"));
return new MessageResponse(ResultCode.SUCCESS.getCode(), success());
} catch (BaseException baseException) {
log.error(baseException.getMessage(), baseException);
@ -93,6 +104,7 @@ public class MzsyBusinessServiceImpl implements MzsyBusinessService {
}
}
@Override
public MessageResponse nurseSubmitHandle(Message message) {
try {
@ -122,6 +134,7 @@ public class MzsyBusinessServiceImpl implements MzsyBusinessService {
nodeLogAddDTO.setCreater(submitName+"("+submitNo+")");
nodeLogAddDTO.setCreaterName(submitName+"("+submitNo+")");
hospitalSubmitNodeServiceApi.addLog(nodeLogAddDTO);
meiZhouSyRpc.archiveAndRecall(archiveRequest(patientIds.get(0),"NURSE"));
return new MessageResponse(ResultCode.SUCCESS.getCode(), success());
} catch (BaseException baseException) {
log.error(baseException.getMessage(), baseException);
@ -174,4 +187,57 @@ public class MzsyBusinessServiceImpl implements MzsyBusinessService {
"</RetInfo>" +
"</Response>";
}
/**
*
*
* @param patientId
* @param type EMR:NURSE:
* @return
*/
private MzSyArchiveRecallRequest archiveRequest(String patientId,String type) {
return archiveRecallRequest(patientId,type,"1");
}
/**
*
*
* @param patientId
* @param type EMR:NURSE:
* @return
*/
private MzSyArchiveRecallRequest unarchiveRequest(String patientId,String type) {
return archiveRecallRequest(patientId,type,"0");
}
/**
*
* /
* @param patientId
* @param type EMR:NURSE:
* @param archiveState / 0: 1:
* @return /
*/
private MzSyArchiveRecallRequest archiveRecallRequest(String patientId,String type,String archiveState) {
String formatDateTime = Func.formatDateTime(new Date());
TBasic basicInfo = tBasicMapper.getTBasicInfo(patientId);
MzSyArchiveRecallRequest request = new MzSyArchiveRecallRequest();
request.setType(type);
request.setArchiveState(archiveState);
request.setArchiveTime(basicInfo.getArchiveTime()==null?formatDateTime:Func.formatDateTime(basicInfo.getArchiveTime()));
request.setAdmitTime(Func.formatDateTime(basicInfo.getAdmissDate()));
request.setDisTime(Func.formatDateTime(basicInfo.getDisDate()));
request.setDischargeDeptCode(basicInfo.getDisDept());
request.setDischargeDeptName(basicInfo.getDisDeptName());
request.setInHospIndexNo(basicInfo.getInpatientNo());
request.setInHospNo(basicInfo.getJzh());
request.setVisitNo(basicInfo.getAdmissTimes());
request.setPatientName(basicInfo.getName());
request.setUnarchiveTime(formatDateTime);
request.setControlUserName(meiZhouSyConfig.getMedicalArchiveAndRecallWsdlUserCode());
request.setControlName(meiZhouSyConfig.getMedicalArchiveAndRecallWsdlUserName());
return request;
}
}

@ -0,0 +1,29 @@
package com.docus.server.message.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 MeiZhouSyQueryConfig {
@Value("${mzsy.medical-archive-recall.wsdl-addr:}")
private String medicalArchiveAndRecallWsdlAddr;
@Value("${mzsy.medical-archive-recall.namespace-uri:}")
private String medicalArchiveAndRecallWsdlNamespaceUri;
@Value("${mzsy.medical-archive-recall.operationName:}")
private String medicalArchiveAndRecallWsdlOperationName;
@Value("${mzsy.medical-archive-recall.userCode:}")
private String medicalArchiveAndRecallWsdlUserCode;
@Value("${mzsy.medical-archive-recall.userName:}")
private String medicalArchiveAndRecallWsdlUserName;
}

@ -0,0 +1,16 @@
package com.docus.server.message.rpc;
import com.docus.server.message.rpc.request.MzSyArchiveRecallRequest;
/**
* @author YongBin Wen
* @date 2025/8/29 0029 9:05
*/
public interface MeiZhouSyRpc {
/**
* /
* @param request /
* @return /
*/
String archiveAndRecall (MzSyArchiveRecallRequest request);
}

@ -0,0 +1,81 @@
package com.docus.server.message.rpc.impl;
import com.docus.server.message.config.MeiZhouSyQueryConfig;
import com.docus.server.message.rpc.MeiZhouSyRpc;
import com.docus.server.message.rpc.request.MzSyArchiveRecallRequest;
import com.docus.server.message.util.JaxWsDynamicClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.UUID;
/**
*
*
* @author YongBin Wen
* @date 2025/8/29 0029 9:52
*/
@Slf4j
@Service
public class MeiZhouSyRpcImpl implements MeiZhouSyRpc {
@Resource
private MeiZhouSyQueryConfig config;
@Override
public String archiveAndRecall(MzSyArchiveRecallRequest request) {
String requestId = UUID.randomUUID().toString();
request.setId(requestId);
String param = toXml(request);
String[] params = {param};
log.info("[{}]梅州三院解档/归档调用,地址:{},命名空间:{},方法:{},参数:{}",requestId,
config.getMedicalArchiveAndRecallWsdlAddr(),
config.getMedicalArchiveAndRecallWsdlNamespaceUri(),
config.getMedicalArchiveAndRecallWsdlOperationName(),
params);
String result = JaxWsDynamicClient.send(
config.getMedicalArchiveAndRecallWsdlAddr(),
config.getMedicalArchiveAndRecallWsdlNamespaceUri(),
config.getMedicalArchiveAndRecallWsdlOperationName(),
params);
log.info("[{}]梅州三院解档/归档调用,返回结果:{}",requestId,result);
return result;
}
private String toXml(MzSyArchiveRecallRequest request) {
return "<Request><Msg>" +
"<!--归档/解档ID-->" +
"<Id>" + request.getId() + "</Id>" +
"<!--住院号-->" +
"<inHospIndexNo>" + request.getInHospIndexNo() + "</inHospIndexNo>" +
"<!--住院次数-->" +
"<visitNo>" + request.getVisitNo() + "</visitNo>" +
"<!--患者姓名-->" +
"<patientName>" + request.getPatientName() + "</patientName>" +
"<!--住院就诊流水号-->" +
"<inHospNo>" + request.getInHospIndexNo() + "</inHospNo>" +
"<!--入院时间yyyy-MM-dd HH:mm:ss-->" +
"<admitTime>" + request.getAdmitTime() + "</admitTime>" +
"<!--出院时间yyyy-MM-dd HH:mm:ss-->" +
"<disTime>" + request.getDisTime() + "</disTime>" +
"<!--归档时间yyyy-MM-dd HH:mm:ss-->" +
"<archiveTime>" + request.getArchiveTime() + "</archiveTime>" +
"<!--解档时间yyyy-MM-dd HH:mm:ss-->" +
"<unarchiveTime>" + request.getUnarchiveTime() + "</unarchiveTime>" +
"<!--出院科室代码-->" +
"<dischargeDeptCode>" + request.getDischargeDeptCode() + "</dischargeDeptCode>" +
"<!--出院科室-->" +
"<dischargeDeptName>" + request.getDischargeDeptName() + "</dischargeDeptName>" +
"<!--操作人工号-->" +
"<controlUserName>" + request.getControlUserName() + "</controlUserName>" +
"<!--操作人姓名-->" +
"<controlName>" + request.getControlName() + "</controlName>" +
"<!--解档/归档状态 0:解档 1:归档-->" +
"<archiveState>" + request.getArchiveState() + "</archiveState>" +
"<!--推送类型 EMR:电子病例NURSE:护理-->" +
"<type>" + request.getType() + "</type>" +
"</Msg></Request>";
}
}

@ -0,0 +1,48 @@
package com.docus.server.message.rpc.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* /
* @author YongBin Wen
* @date 2025/8/29 0029 9:40
*/
@Data
@ApiModel("接收归档/解档信息推送参数")
public class MzSyArchiveRecallRequest {
@ApiModelProperty("归档/解档ID")
private String id;
@ApiModelProperty("住院号")
private String inHospIndexNo;
@ApiModelProperty("住院次数")
private Integer visitNo;
@ApiModelProperty("患者姓名")
private String patientName;
@ApiModelProperty("住院就诊流水号")
private String inHospNo;
@ApiModelProperty("入院时间yyyy-MM-dd HH:mm:ss")
private String admitTime;
@ApiModelProperty("出院时间yyyy-MM-dd HH:mm:ss")
private String disTime;
@ApiModelProperty("归档时间yyyy-MM-dd HH:mm:ss")
private String archiveTime;
@ApiModelProperty("解档时间yyyy-MM-dd HH:mm:ss")
private String unarchiveTime;
@ApiModelProperty("出院科室代码")
private String dischargeDeptCode;
@ApiModelProperty("出院科室")
private String dischargeDeptName;
@ApiModelProperty("操作人工号")
private String controlUserName;
@ApiModelProperty("操作人姓名")
private String controlName;
@ApiModelProperty("解档/归档状态 0:解档 1:归档")
private String archiveState;
@ApiModelProperty("推送类型 EMR:电子病例NURSE:护理")
private String type;
}

@ -137,3 +137,12 @@ sdry:
wsdl-addr: http://127.0.0.1:9311/webservice/api?wsdl
namespace-uri: http://impl.webservice.collection.server.docus.com/
operationName: querySdJxIndexTest
mzsy:
medical-archive-recall:
wsdl-addr: http://192.168.0.109:8880/medicalArchiveAndRecall.asmx?wsdl
namespace-uri: http://tempuri.org/
operationName: ArchiveAndRecall
userCode: wzh-collect
userName: wzh-collect

Loading…
Cancel
Save