diff --git a/src/main/java/com/docus/server/message/busservice/impl/MzsyBusinessServiceImpl.java b/src/main/java/com/docus/server/message/busservice/impl/MzsyBusinessServiceImpl.java index 308bb81..9e0ff5a 100644 --- a/src/main/java/com/docus/server/message/busservice/impl/MzsyBusinessServiceImpl.java +++ b/src/main/java/com/docus/server/message/busservice/impl/MzsyBusinessServiceImpl.java @@ -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 { "" + ""; } + + + + + + /** + * + * 获取归档请求参数 + * @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; + } } diff --git a/src/main/java/com/docus/server/message/config/MeiZhouSyQueryConfig.java b/src/main/java/com/docus/server/message/config/MeiZhouSyQueryConfig.java new file mode 100644 index 0000000..d9eea99 --- /dev/null +++ b/src/main/java/com/docus/server/message/config/MeiZhouSyQueryConfig.java @@ -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; + +} diff --git a/src/main/java/com/docus/server/message/rpc/MeiZhouSyRpc.java b/src/main/java/com/docus/server/message/rpc/MeiZhouSyRpc.java new file mode 100644 index 0000000..43ce41e --- /dev/null +++ b/src/main/java/com/docus/server/message/rpc/MeiZhouSyRpc.java @@ -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); +} diff --git a/src/main/java/com/docus/server/message/rpc/impl/MeiZhouSyRpcImpl.java b/src/main/java/com/docus/server/message/rpc/impl/MeiZhouSyRpcImpl.java new file mode 100644 index 0000000..a8dbf87 --- /dev/null +++ b/src/main/java/com/docus/server/message/rpc/impl/MeiZhouSyRpcImpl.java @@ -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.getId() + "" + + "" + + "" + request.getInHospIndexNo() + "" + + "" + + "" + request.getVisitNo() + "" + + "" + + "" + request.getPatientName() + "" + + "" + + "" + request.getInHospIndexNo() + "" + + "" + + "" + request.getAdmitTime() + "" + + "" + + "" + request.getDisTime() + "" + + "" + + "" + request.getArchiveTime() + "" + + "" + + "" + request.getUnarchiveTime() + "" + + "" + + "" + request.getDischargeDeptCode() + "" + + "" + + "" + request.getDischargeDeptName() + "" + + "" + + "" + request.getControlUserName() + "" + + "" + + "" + request.getControlName() + "" + + "" + + "" + request.getArchiveState() + "" + + "" + + "" + request.getType() + "" + + ""; + } +} diff --git a/src/main/java/com/docus/server/message/rpc/request/MzSyArchiveRecallRequest.java b/src/main/java/com/docus/server/message/rpc/request/MzSyArchiveRecallRequest.java new file mode 100644 index 0000000..31b2b76 --- /dev/null +++ b/src/main/java/com/docus/server/message/rpc/request/MzSyArchiveRecallRequest.java @@ -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; + + +} diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml index 3d1fde3..57f239f 100644 --- a/src/main/resources/bootstrap.yml +++ b/src/main/resources/bootstrap.yml @@ -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