Compare commits

..

1 Commits

Author SHA1 Message Date
wyb f037d9e766 feat: 广东省中医用户科室推送 10 months ago

@ -1,29 +1,21 @@
package com.docus.server;
import com.docus.server.collection.webservice.IDeptServer;
import com.docus.server.collection.webservice.IUserServer;
import com.docus.server.collection.webservice.ReceiveServer;
import com.docus.server.collection.webservice.BasicService;
import org.apache.cxf.jaxws.EndpointImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.apache.cxf.Bus;
import org.apache.cxf.bus.spring.SpringBus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.apache.cxf.transport.servlet.CXFServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.xml.ws.Endpoint;
@Configuration
@RequiredArgsConstructor
public class CxfConfig {
private final IUserServer userServer;
private final IDeptServer deptServer;
private final BasicService tBasicService;
private final ReceiveServer receiveServer;
/**
* ServletbeanNamedispatcherServlet
@ -40,33 +32,11 @@ public class CxfConfig {
return new SpringBus();
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), receiveServer);
endpoint.publish("/api");
return endpoint;
}
@Bean
@Qualifier("userEndPoint")
public Endpoint userEndPoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), userServer);
endpoint.publish("/api/user");
return endpoint;
}
@Bean
@Qualifier("deptEndPoint")
public Endpoint deptEndPoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), deptServer);
endpoint.publish("/api/dept");
return endpoint;
}
@Bean
public Endpoint endpoint2() {
EndpointImpl endpoint = new EndpointImpl(springBus(), tBasicService);
endpoint.publish("/api/basic");
Endpoint endpoint = new EndpointImpl(this.springBus(), this.receiveServer);
endpoint.publish("/api/receive");
return endpoint;
}
}

@ -41,12 +41,4 @@ public interface PowerUserMapper {
* @return
*/
int delUserByUserName(@Param("userName") String userName);
/**
*
*
* @param userName
* @return
*/
int cancelUserByUserName(@Param("userName") String userName);
}

@ -157,7 +157,4 @@ public interface TBasicMapper {
* @author YongBin Wen
*/
List<TBasic> selectBasicListByInpNo(@Param("inpNo") String inpNo);
int deleteExtend(@Param("patientId") String patientId);
}

@ -20,5 +20,5 @@ public interface IPowerDeptService {
* @param deptCode
* @return
*/
void delDeptByDeptCode(String deptCode);
boolean delDeptByDeptCode(String deptCode);
}

@ -21,12 +21,4 @@ public interface IPowerUserService {
* @return
*/
boolean delUserByUserName(String userName);
/**
*
*
* @param userName
* @return
*/
boolean cancelUserByUserName(String userName);
}

@ -2,7 +2,6 @@ package com.docus.server.collection.service.impl;
import com.docus.core.util.Func;
import com.docus.infrastructure.redis.service.IdService;
import com.docus.server.collection.consts.PowerDeptConst;
import com.docus.server.collection.dto.DeptDto;
import com.docus.server.collection.dto.DeptModifyParam;
import com.docus.server.collection.entity.PowerDept;
@ -11,7 +10,6 @@ import com.docus.server.collection.service.IPowerDeptService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
/**
*
@ -27,51 +25,28 @@ public class PowerDeptServiceImpl implements IPowerDeptService {
@Override
public boolean register(DeptDto deptDto) {
String deptCode = deptDto.getDeptCode();
PowerDept powerDept = null;
PowerDept powerDept = this.powerDeptMapper.getDeptByDeptCode(deptDto.getDeptCode());
DeptModifyParam deptModifyParam = deptDto.transDeptAddParam();
if (deptCode.startsWith(PowerDeptConst.WARD_DEPT_PREFIX)) {
powerDept = powerDeptMapper.getWardDeptByDeptCode(deptCode);
} else if (deptCode.startsWith(PowerDeptConst.MZ_DEPT_PREFIX)) {
powerDept = powerDeptMapper.getMzDeptByDeptCode(deptCode);
} else {
powerDept = powerDeptMapper.getDeptByDeptCode(deptCode);
}
if (Objects.isNull(powerDept)) {
long deptId = idService.getDateSeq();
if (Func.isEmpty(powerDept)) {
long deptId = this.idService.getDateSeq();
deptModifyParam.setDeptId(deptId);
if (deptCode.startsWith(PowerDeptConst.WARD_DEPT_PREFIX)) {
powerDeptMapper.addWardDept(deptModifyParam);
} else if (deptCode.startsWith(PowerDeptConst.MZ_DEPT_PREFIX)) {
powerDeptMapper.addMzDept(deptModifyParam);
} else {
powerDeptMapper.addDept(deptModifyParam);
}
this.powerDeptMapper.addDept(deptModifyParam);
return true;
}
deptModifyParam.setDeptId(powerDept.getDeptId());
if (deptCode.startsWith(PowerDeptConst.WARD_DEPT_PREFIX)) {
powerDeptMapper.updateWardDept(deptModifyParam);
} else if (deptCode.startsWith(PowerDeptConst.MZ_DEPT_PREFIX)) {
powerDeptMapper.updateMzDept(deptModifyParam);
} else {
powerDeptMapper.updateDept(deptModifyParam);
deptModifyParam.setDeptId(powerDept.getDeptId());
this.powerDeptMapper.updateDept(deptModifyParam);
return true;
}
return true;
}
@Override
public void delDeptByDeptCode(String deptCode) {
if (deptCode.startsWith(PowerDeptConst.WARD_DEPT_PREFIX)) {
powerDeptMapper.delWardDeptByDeptCode(deptCode);
} else if (deptCode.startsWith(PowerDeptConst.MZ_DEPT_PREFIX)) {
powerDeptMapper.delMzDeptByDeptCode(deptCode);
public boolean delDeptByDeptCode(String deptCode) {
PowerDept powerDept = this.powerDeptMapper.getDeptByDeptCode(deptCode);
if (Func.isEmpty(powerDept)) {
return true;
} else {
powerDeptMapper.delDeptByDeptCode(deptCode);
this.powerDeptMapper.delDeptByDeptCode(deptCode);
return true;
}
}
}

@ -30,21 +30,19 @@ public class PowerUserServiceImpl implements IPowerUserService {
@Override
public boolean register(UserDto userDto) {
PowerUser powerUser = powerUserMapper.getUserByUserName(userDto.getUserName());
PowerUser powerUser = this.powerUserMapper.getUserByUserName(userDto.getUserName());
UserModifyParam userModifyParam = userDto.transUserAddParam();
if (Func.isEmpty(powerUser)) {
long userId = idService.getDateSeq();
long userId = this.idService.getDateSeq();
userModifyParam.setUserId(userId);
userModifyParam.setUserPwd(syncConfig.getPassword());
powerUserMapper.addUser(userModifyParam);
userModifyParam.setUserPwd(this.syncConfig.getPassword());
this.powerUserMapper.addUser(userModifyParam);
return true;
} else {
userModifyParam.setUserId(powerUser.getUserId());
this.powerUserMapper.updateUser(userModifyParam);
return true;
}
String powerDept = getUpdatePowerDept(powerUser, userDto);
userModifyParam.setPowerDept(powerDept);
userModifyParam.setUserId(powerUser.getUserId());
powerUserMapper.updateUser(userModifyParam);
return true;
}
@ -59,15 +57,6 @@ public class PowerUserServiceImpl implements IPowerUserService {
return true;
}
@Override
public boolean cancelUserByUserName(String userName) {
PowerUser powerUser = powerUserMapper.getUserByUserName(userName);
if (Func.isEmpty(powerUser)) {
return true;
}
powerUserMapper.cancelUserByUserName(userName);
return true;
}
/**
*

@ -100,7 +100,7 @@ public class TBasicServiceImpl implements ITBasicService {
}
String isDeadStr = tBasicDto.getIsDead();
Integer isDead = 0;
if ("死亡".equals(isDeadStr)) {
if ("死亡".equals(isDeadStr)) {
isDead = 1;
}
String leaveMethodStr = tBasicDto.getLeaveMethod();
@ -198,7 +198,7 @@ public class TBasicServiceImpl implements ITBasicService {
}
String isDeadStr = tBasicDto.getIsDead();
Integer isDead = 0;
if ("死亡".equals(isDeadStr)||"告死亡".equals(isDeadStr)) {
if ("死亡".equals(isDeadStr)) {
isDead = 1;
}
String leaveMethodStr = tBasicDto.getLeaveMethod();
@ -353,7 +353,6 @@ public class TBasicServiceImpl implements ITBasicService {
}
if ("2".equals(tBasicDto.getStatu())) {
tBasicMapper.deleteByPatientId(patientId);
tBasicMapper.deleteExtend(patientId);
log.info("入院信息删除jzh:{},patientId:{},statusCode:{}", tBasicDto.getJzh(), patientId, tBasicDto.getStatu());
return;
}

@ -1,11 +1,7 @@
package com.docus.server.collection.util;
import com.docus.core.util.DateUtil;
import com.docus.core.util.Func;
import lombok.Data;
import java.util.Date;
/**
* @BelongsProject: docus-webservice-sdry
* @BelongsPackage: com.docus.server.collection.util
@ -17,160 +13,11 @@ import java.util.Date;
@Data
public class Result {
public static String success(String serialId,String receive,String send){
String createTime= Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
String message="成功";
return "<MCCI_IN000002UV01 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3 file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI _IN000002UV01.xsd\"> \n" +
" <id extension=\""+Func.randomUUID()+"\"/> \n" +
" <creationTime value=\""+createTime+"\"/> \n" +
" <interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\"/> \n" +
" <processingCode code=\"P\"/> \n" +
" <processingModeCode/> \n" +
" <acceptAckCode code=\"AL\"/> \n" +
" <receiver typeCode=\"RCV\"> \n" +
" <device classCode=\"DEV\" determinerCode=\"INSTANCE\"> \n" +
" <id> \n" +
" <item extension=\""+receive+"\"/> \n" +
" </id> \n" +
" </device> \n" +
" </receiver> \n" +
" <sender typeCode=\"SND\"> \n" +
" <device classCode=\"DEV\" determinerCode=\"INSTANCE\"> \n" +
" <id> \n" +
// " <item extension=\""+send+"\"/> \n" +
" <item extension=\""+"PaperlessManagementMRIS-001"+"\"/> \n" +
" </id> \n" +
" </device> \n" +
" </sender> \n" +
" <acknowledgement typeCode=\"AA\"> \n" +
" <!--请求消息ID--> \n" +
" <targetMessage> \n" +
" <id extension=\""+serialId+"\"/> \n" +
" </targetMessage> \n" +
" <acknowledgementDetail> \n" +
" <text value=\""+message+"\"/> \n" +
" </acknowledgementDetail> \n" +
" </acknowledgement> \n" +
"</MCCI_IN000002UV01>\n";
}
public static String failed(String serialId,String message,String receive,String send){
String createTime= Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
return "<MCCI_IN000002UV01 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3 file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI_IN000002UV01.xsd\"> \n" +
" <id extension=\""+Func.randomUUID()+"\"/> \n" +
" <creationTime value=\""+createTime+"\"/> \n" +
" <interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\" displayable=\"true\"/> \n" +
" <processingCode code=\"P\"/> \n" +
" <processingModeCode/> \n" +
" <acceptAckCode code=\"AL\"/> \n" +
" <receiver typeCode=\"RCV\"> \n" +
" <device classCode=\"DEV\" determinerCode=\"INSTANCE\"> \n" +
" <id> \n" +
" <item extension=\""+receive+"\"/> \n" +
" </id> \n" +
" </device> \n" +
" </receiver> \n" +
" <sender typeCode=\"SND\"> \n" +
" <device classCode=\"DEV\" determinerCode=\"INSTANCE\"> \n" +
" <id> \n" +
// " <item extension=\""+send+"\"/> \n" +
" <item extension=\""+"PaperlessManagementMRIS-001"+"\"/> \n" +
" </id> \n" +
" </device> \n" +
" </sender> \n" +
" <acknowledgement typeCode=\"AE\"> \n" +
" <!--请求消息ID--> \n" +
" <targetMessage> \n" +
" <id extension=\""+serialId+"\"/> \n" +
" </targetMessage> \n" +
" <acknowledgementDetail> \n" +
" <text value=\""+message+"\"/> \n" +
" </acknowledgementDetail> \n" +
" </acknowledgement> \n" +
"</MCCI_IN000002UV01>\n";
public static String success() {
return "<RetInfo>\n <!--结果代码-->\n <RetCode>0</RetCode>\n <!--结果描述-->\n <RetCon>操作成功</RetCon>\n</RetInfo>";
}
public static String successMessage(String serialId,String receive,String send){
String createTime= Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
String message="成功";
return "<MCCI_IN000002UV01 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3 file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI _IN000002UV01.xsd\">\n" +
"\t<id extension=\""+Func.randomUUID()+"\"/>\n" +
"\t<creationTime value=\""+createTime+"\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\"/>\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 extension=\"Orion-001\"/>\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 extension=\"ygit\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</sender>\n" +
"\t<acknowledgement typeCode=\"AA\">\n" +
"\t\t<!--请求消息ID-->\n" +
"\t\t<targetMessage>\n" +
"\t\t\t<id extension=\""+serialId+"\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail>\n" +
"\t\t\t<text value=\""+message+"\"/>\n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"</MCCI_IN000002UV01>\n";
}
public static String failedMessage(String serialId,String message,String receive,String send){
String createTime= Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
return "<MCCI_IN000002UV01 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3 file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI _IN000002UV01.xsd\">\n" +
"\t<id extension=\""+Func.randomUUID()+"\"/>\n" +
"\t<creationTime value=\""+createTime+"\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\"/>\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 extension=\"Orion-001\"/>\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 extension=\"ygit\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</sender>\n" +
"\t<acknowledgement typeCode=\"AE\">\n" +
"\t\t<!--请求消息ID-->\n" +
"\t\t<targetMessage>\n" +
"\t\t\t<id extension=\""+serialId+"\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail>\n" +
"\t\t\t<text value=\""+message+"\"/>\n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"</MCCI_IN000002UV01>\n";
public static String failed() {
return "";
}
}

@ -1,6 +1,7 @@
package com.docus.server.collection.webservice;
import javax.jws.WebService;
import java.util.Map;
/**
* @author Fang Ruichuan
@ -8,10 +9,6 @@ import javax.jws.WebService;
*/
@WebService
public interface IDeptServer {
/**
*
* @param receiveUser
* @return
*/
String deptModify(String receiveUser);
String deptModify(Map<String, String> msgInfo);
}

@ -1,8 +1,7 @@
package com.docus.server.collection.webservice;
import com.docus.server.collection.dto.UserDto;
import javax.jws.WebService;
import java.util.Map;
/**
* @author Fang Ruichuan
@ -10,10 +9,6 @@ import javax.jws.WebService;
*/
@WebService
public interface IUserServer {
/**
*
* @param receiveUser
* @return
*/
String userModify(String receiveUser);
String userModify(Map<String, String> msgInfo);
}

@ -9,129 +9,5 @@ import javax.jws.WebService;
@WebService
public interface ReceiveServer {
/**
*
*
* @param receiveUser
* @return
*/
String deptModify(String receiveUser);
String setTBasic(String str);
String updateTBasic(String str);
/**
* @description
*/
public String setAdmissTBasic(String message);
/**
* @description
*/
public String updateAdmissTBasic(String message);
/**
* @description
*/
public String setBedDoctor(String message);
/**
*
*
* @param receiveUser
* @return
*/
String userModify(String receiveUser);
/**
*
*
* @param icuReportMessage
* @return
*/
String pushICUReport(String icuReportMessage);
/**
*
*
* @param examinationReportMessage
* @return
*/
public String pushExaminationReport(String examinationReportMessage);
/**
* HIP1166-pdf
*
* @param uploadMessage pdf
* @return
*/
String pdfUpload(String uploadMessage);
/**
* -
*
* @param inspectionReportMessage -
* @return
*/
String pushAddInspectionReport(String inspectionReportMessage);
/**
* -
*
* @param inspectionReportMessage -
* @return
*/
String pushUpdateInspectionReport(String inspectionReportMessage);
/**
*
*
* @param laboratoryMessage
* @return
*/
String pushAddLaboratoryReport(String laboratoryMessage);
/**
*
*
* @param laboratoryMessage
* @return
*/
String pushUpdateLaboratoryReport(String laboratoryMessage);
/**
* -
*
* @param xml -
* @return
*/
String querySdJxIndexTest(String xml);
String querySdJxIndexNoResultTest(String xml);
/**
*
* @param maternalInfantRelationshipMessage
* @return
*/
String pushMaternalInfantRelationship(String maternalInfantRelationshipMessage);
/**
*
* /
* @param recallInspectionReportMessage /
* @return
*/
String pushRecallInspectionReport(String recallInspectionReportMessage);
/**
* @description
*/
String cancelHospital(String message);
String receiveMsg(String Msg);
}

@ -1,20 +1,14 @@
package com.docus.server.collection.webservice.impl;
import com.docus.core.util.DateUtil;
import com.docus.core.util.Func;
import com.docus.infrastructure.core.exception.BaseException;
import com.docus.server.collection.dto.DeptDto;
import com.docus.server.collection.service.IPowerDeptService;
import com.docus.server.collection.util.IdUtil;
import com.docus.server.collection.util.XmlUtil;
import com.docus.server.collection.util.Result;
import com.docus.server.collection.webservice.IDeptServer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.w3c.dom.Node;
import javax.annotation.Resource;
import javax.jws.WebService;
import java.util.Date;
import java.util.Map;
/**
* @author wen yongbin
@ -28,145 +22,18 @@ public class DeptServerImpl implements IDeptServer {
IPowerDeptService powerDeptService;
@Override
public String deptModify(String receiveUser) {
log.info("新增/修改科室数据:{}", receiveUser);
DeptDto deptDto;
String msgId = "";
String receiver = "";
try {
deptDto = strToDeptDto(receiveUser);
msgId = deptDto.getMessageId();
receiver = deptDto.getReceiver();
String operateType = deptDto.getOperateType();
String delType = "D";
// 判断操作类型
if (Func.isNotEmpty(operateType) && operateType.contains(delType)) {
powerDeptService.delDeptByDeptCode(deptDto.getDeptCode());
} else {
powerDeptService.register(deptDto);
}
return successMessage("操作成功!", msgId, receiver);
} catch (BaseException e) {
log.error(e.getMessage(), e);
return failedMessage(e.getMessage(), msgId, receiver);
} catch (Exception e) {
log.error(e.getMessage(), e);
return failedMessage("系统出错啦!", msgId, receiver);
}
public String deptModify(Map<String, String> msgInfo) {
DeptDto deptDto = this.strToDeptDto(msgInfo);
this.powerDeptService.register(deptDto);
return Result.success();
}
/**
* DeptDto
*
* @param receiveUser
* @return UserDto
*/
public DeptDto strToDeptDto(String receiveUser) {
XmlUtil xmlParseUtil = XmlUtil.of(receiveUser);
Node msgIdNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/id/@extension");
Node receiverNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/receiver/device/id/item/@extension");
Node operateTypeNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/@operateType");
Node deptCodeNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/DEPT_CODE/@value");
Node deptNameNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/DEPT_NAME/@value");
Node authorIdNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/author/assignedEntity/id/item/@extension");
Node authorNameNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/author/assignedEntity/assignedPerson/name/item/part/@value");
public DeptDto strToDeptDto(Map<String, String> msgInfo) {
DeptDto deptDto = new DeptDto();
deptDto.setMessageId(msgIdNode.getNodeValue());
deptDto.setReceiver(receiverNode.getNodeValue());
deptDto.setOperateType(operateTypeNode.getNodeValue());
deptDto.setDeptCode(deptCodeNode.getNodeValue());
deptDto.setDeptName(deptNameNode.getNodeValue());
deptDto.setAuthorId(authorIdNode.getNodeValue());
deptDto.setAuthorName(authorNameNode.getNodeValue());
deptDto.setDeptCode(msgInfo.get("DEPT_CLASS_CODE"));
deptDto.setDeptName(msgInfo.get("DEPT_CLASS_NAME"));
return deptDto;
}
/**
* @param message
* @param msgId id
* @param receiver
* @return
*/
private String successMessage(String message, String msgId, 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\" xmlns=\"urn:hl7-org:v3\" xsi:schemaLocation=\"urn:hl7-org:v3\n" +
"file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI\n" +
"_IN000002UV01.xsd\">\n" +
"\t<id extension=\"" + IdUtil.standardUUID() + "\"/>\n" +
"\t<creationTime value=\"" + createTime + "\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\"/>\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 extension=\"MDM\"/>\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 extension=\"" + receiver + "\"/>\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 extension=\"" + msgId + "\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail>\n" +
"\t\t\t<text value=\"" + message + "\"/>\n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"</MCCI_IN000002UV01>";
}
/**
* @param message
* @param msgId id
* @param receiver
* @return
*/
private String failedMessage(String message, String msgId, String receiver) {
String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
return "<RCMR_IN000030UV01 ITSVersion=\"XML_1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"urn:hl7-org:v3\" xsi:schemaLocation=\"urn:hl7-org:v3\n" +
"file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/RCMR\n" +
"_IN000030UV01.xsd\">\n" +
"\t<id extension=\"" + IdUtil.standardUUID() + "\"/>\n" +
"\t<creationTime value=\"" + createTime + "\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"RCMR_IN000030UV01\"/>\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 extension=\"MDM\"/>\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 extension=\"" + receiver + "\"/>\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 extension=\"" + msgId + "\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail>\n" +
"\t\t\t<text value=\"" + message + "\"/>\n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"</RCMR_IN000030UV01>\n";
}
}

@ -1,14 +1,15 @@
package com.docus.server.collection.webservice.impl;
import com.docus.server.collection.webservice.BasicService;
import cn.hutool.core.util.XmlUtil;
import com.docus.server.collection.util.Result;
import com.docus.server.collection.webservice.IDeptServer;
import com.docus.server.collection.webservice.IUserServer;
import com.docus.server.collection.webservice.ReceiveServer;
import com.docus.server.report.webservice.IReportServer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Map;
/**
* @BelongsProject: docus-webservice-sdry
@ -22,203 +23,22 @@ import javax.annotation.Resource;
@Slf4j
public class ReceiveServerImpl implements ReceiveServer {
@Resource
private IUserServer userServer;
private IDeptServer deptServer;
@Resource
private IDeptServer deptServer;
@Resource
private BasicService basicService;
@Resource
private IReportServer reportServer;
@Override
public String deptModify(String receiveDept) {
return deptServer.deptModify(receiveDept);
}
@Override
public String setTBasic(String str) {
return basicService.setTBasic(str);
}
@Override
public String updateTBasic(String str) {
return basicService.updateTBasic(str);
}
@Override
public String setAdmissTBasic(String message) {
return basicService.setAdmissTBasic(message);
}
private IUserServer userServer;
@Override
public String updateAdmissTBasic(String message) {
return basicService.updateAdmissTBasic(message) ;
public String receiveMsg(String Msg) {
Map<String, Object> msgMap = XmlUtil.xmlToMap(Msg);
Map<String, String> msgInfo = (Map) msgMap.get("Msg");
String dictCode = msgInfo.get("DICT_CODE");
if ("STAFF_DICT".equals(dictCode)) {
return this.userServer.userModify(msgInfo);
}
if ("DEPT_DICT".equals(dictCode)) {
return this.deptServer.deptModify(msgInfo);
}
return Result.success();
}
@Override
public String setBedDoctor(String message) {
return basicService.setBedDoctor(message);
}
@Override
public String userModify(String receiveUser) {
return userServer.userModify(receiveUser);
}
@Override
public String pushICUReport(String icuReportMessage) {
return reportServer.pushICUReport(icuReportMessage);
}
@Override
public String pushExaminationReport(String examinationReportMessage) {
return reportServer.pushExaminationReport(examinationReportMessage);
}
@Override
public String pdfUpload(String uploadMessage) {
return reportServer.pdfUpload(uploadMessage);
}
@Override
public String pushAddInspectionReport(String inspectionReportMessage) {
return reportServer.pushAddInspectionReport(inspectionReportMessage);
}
@Override
public String pushUpdateInspectionReport(String inspectionReportMessage) {
return reportServer.pushUpdateInspectionReport(inspectionReportMessage);
}
@Override
public String pushAddLaboratoryReport(String laboratoryMessage) {
return reportServer.pushAddLaboratoryReport(laboratoryMessage);
}
@Override
public String pushUpdateLaboratoryReport(String laboratoryMessage) {
return reportServer.pushUpdateLaboratoryReport(laboratoryMessage);
}
@Override
public String pushMaternalInfantRelationship(String maternalInfantRelationshipMessage) {
return reportServer.pushMaternalInfantRelationship(maternalInfantRelationshipMessage);
}
@Override
public String pushRecallInspectionReport(String recallInspectionReportMessage) {
return reportServer.pushRecallInspectionReport(recallInspectionReportMessage);
}
@Override
public String cancelHospital(String message) {
return basicService.cancelHospital(message);
}
@Override
public String querySdJxIndexTest(String xml) {
System.out.println("收到那个人想查报告的动机,参数为:"+xml);
return "<PRPA_HIP1179 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xmlns=\"urn:hl7-org:v3\" xsi:schemaLocation=\"urn:hl7-org:v3 ../multicacheschemas/PRPA_IN201306UV02.xsd\">\n" +
"\t<id root=\"2.16.156.10011.0\" extension=\"8D73520B-D489-4B70-8F4B-7B5C2D7961B5\"/>\n" +
"\t<creationTime value=\"20120101010101\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"PRPA_HIP1179\"/>\n" +
"\t<processingCode code=\"P\"/>\n" +
"\t<processingModeCode/>\n" +
"\t<acceptAckCode code=\"AL\"/>\n" +
"\t<receiver typeCode=\"RCV\">\n" +
"\t\t<telecom/>\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=\"Orion-001\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</receiver>\n" +
"\t<sender typeCode=\"SND\">\n" +
"\t\t<telecom/>\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=\"\"/>\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=\"22a0f9e0-4454-11dc-a6be-3603d6866807\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail>\n" +
"\t\t\t<text value=\"处理结果说明\"/>\n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"\t<controlActProcess classCode=\"CACT\" moodCode=\"EVN\">\n" +
"\t\t<subject typeCode=\"SUBJ\">\n" +
"\t\t\t<!-- 交叉索引信息 -->\n" +
"\t\t\t<empiIndex>\n" +
"\t\t\t\t<patientIds>\n" +
"\t\t\t\t\t<!--patientId节点循环有多个-->\n" +
"\t\t\t\t\t<patientId>ceshi1</patientId>\n" +
"\t\t\t\t\t<patientId>ceshi2</patientId>\n" +
"\t\t\t\t\t<patientId>ceshi3</patientId>\n" +
"\t\t\t\t</patientIds>\n" +
"\t\t\t\t<idCards>\n" +
"\t\t\t\t\t<!-- type卡类型 value卡号 name患者姓名-->\n" +
"\t\t\t\t\t<idCard type=\"居民身份证\" value=\"xxx\" name=\"xxx\"/>\n" +
"\t\t\t\t</idCards>\n" +
"\t\t\t</empiIndex>\n" +
"\t\t</subject>\n" +
"\t</controlActProcess>\n" +
"</PRPA_HIP1179>\n";
}
@Override
public String querySdJxIndexNoResultTest(String xml) {
System.out.println("收到那个人想查报告的动机,参数为:"+xml);
return "<PRPA_HIP1179 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xmlns=\"urn:hl7-org:v3\" xsi:schemaLocation=\"urn:hl7-org:v3 ../multicacheschemas/PRPA_IN201306UV02.xsd\">\n" +
"\t<id root=\"2.16.156.10011.0\" extension=\"8D73520B-D489-4B70-8F4B-7B5C2D7961B5\"/>\n" +
"\t<creationTime value=\"20120101010101\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"PRPA_HIP1179\"/>\n" +
"\t<processingCode code=\"P\"/>\n" +
"\t<processingModeCode/>\n" +
"\t<acceptAckCode code=\"AL\"/>\n" +
"\t<receiver typeCode=\"RCV\">\n" +
"\t\t<telecom/>\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=\"Orion-001\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</receiver>\n" +
"\t<sender typeCode=\"SND\">\n" +
"\t\t<telecom/>\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=\"\"/>\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=\"22a0f9e0-4454-11dc-a6be-3603d6866807\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail>\n" +
"\t\t\t<text value=\"处理结果说明\"/>\n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"\t<controlActProcess classCode=\"CACT\" moodCode=\"EVN\">\n" +
"\t\t<subject typeCode=\"SUBJ\">\n" +
"\t\t\t<!-- 交叉索引信息 -->\n" +
"\t\t\t<empiIndex>\n" +
"\t\t\t\t<patientIds>\n" +
"\t\t\t\t\t<!--patientId节点循环有多个-->\n" +
"\t\t\t\t</patientIds>\n" +
"\t\t\t\t<idCards>\n" +
"\t\t\t\t\t<!-- type卡类型 value卡号 name患者姓名-->\n" +
"\t\t\t\t\t<idCard type=\"居民身份证\" value=\"xxx\" name=\"xxx\"/>\n" +
"\t\t\t\t</idCards>\n" +
"\t\t\t</empiIndex>\n" +
"\t\t</subject>\n" +
"\t</controlActProcess>\n" +
"</PRPA_HIP1179>\n";
}
}

@ -1,19 +1,14 @@
package com.docus.server.collection.webservice.impl;
import com.docus.core.util.DateUtil;
import com.docus.core.util.Func;
import com.docus.infrastructure.core.exception.BaseException;
import com.docus.server.collection.dto.UserDto;
import com.docus.server.collection.service.IPowerUserService;
import com.docus.server.collection.util.IdUtil;
import com.docus.server.collection.util.XmlUtil;
import com.docus.server.collection.util.Result;
import com.docus.server.collection.webservice.IUserServer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.w3c.dom.Node;
import javax.annotation.Resource;
import java.util.Date;
import java.util.Map;
/**
* @author wen yongbin
@ -22,161 +17,40 @@ import java.util.Date;
@Service
@Slf4j
public class UserServerImpl implements IUserServer {
@Resource
IPowerUserService iPowerUserService;
@Override
public String userModify(String receiveUser) {
log.info("新增/修改用户数据:{}", receiveUser);
UserDto userDto;
String msgId = "";
String receiver = "";
try {
userDto = strToUserDto(receiveUser);
msgId = userDto.getMessageId();
receiver = userDto.getReceiver();
String operateType = userDto.getOperateType();
String delType = "D";
// 判断操作类型 是否是删除,或者 删除标记的
boolean isDel = (Func.isNotEmpty(operateType) && operateType.contains(delType)) || userDto.isDelFlag();
if (isDel) {
iPowerUserService.cancelUserByUserName(userDto.getUserName());
} else {
iPowerUserService.register(userDto);
}
return successMessage("操作成功!", msgId, receiver);
} catch (BaseException e) {
log.error(e.getMessage(), e);
return failedMessage(e.getMessage(), msgId, receiver);
} catch (Exception e) {
log.error(e.getMessage(), e);
return failedMessage("系统出错啦!", msgId, receiver);
}
public String userModify(Map<String, String> msgInfo) {
log.info("新增/修改用户数据:{}", msgInfo);
UserDto userDto = this.strToUserDto(msgInfo);
this.iPowerUserService.register(userDto);
return Result.success();
}
/**
* UserDto
*
* @param receiveUser
* @return UserDto
*/
public UserDto strToUserDto(String receiveUser) {
final String notDelFlag = "1";
XmlUtil xmlParseUtil = XmlUtil.of(receiveUser);
Node msgIdNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/id/@extension");
Node receiverNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/receiver/device/id/item/@extension");
Node operateTypeNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/@operateType");
Node employeeCodeNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/EMPL_CODE/@value");
Node employeeNameNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/EMPL_NAME/@value");
Node deptCodeNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/DEPT_CODE/@value");
Node positionNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/POSI_NAME/@value");
Node authorIdNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/author/assignedEntity/id/item/@extension");
Node authorNameNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/author/assignedEntity/assignedPerson/name/item/part/@value");
Node telephoneNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/EMPL_TEL/@value");
Node delFlagNode = xmlParseUtil.getNode("/PRVS_IN000002UV01/controlActProcess/subject/registrationRequest/subject1/valueSet/valueSetItems/STATUS_CODE/@value");
boolean isDel = !notDelFlag.equals(delFlagNode.getNodeValue());
public UserDto strToUserDto(Map<String, String> msgInfo) {
UserDto userDto = new UserDto();
userDto.setDeptId(deptCodeNode.getNodeValue());
userDto.setReceiver(receiverNode.getNodeValue());
userDto.setOperateType(operateTypeNode.getNodeValue());
userDto.setUserName(employeeCodeNode.getNodeValue());
userDto.setName(employeeNameNode.getNodeValue());
userDto.setPosition(positionNode.getNodeValue());
userDto.setAuthorId(authorIdNode.getNodeValue());
userDto.setMessageId(msgIdNode.getNodeValue());
userDto.setAuthorName(authorNameNode.getNodeValue());
String deptCode = removeLeadingAndTrailingComma(msgInfo.get("DEPT_CODE"));
userDto.setDeptId(deptCode);
userDto.setUserName(msgInfo.get("STAFF_CODE"));
userDto.setName(msgInfo.get("STAFF_NAME"));
userDto.setPosition(msgInfo.get("TITLE_LEVEL_NAME"));
userDto.setRoleId(0L);
userDto.setTelephone(telephoneNode != null ? telephoneNode.getNodeValue() : "");
userDto.setDelFlag(isDel);
return userDto;
}
/**
* @param message
* @param msgId id
* @param receiver
* @return
*/
private String successMessage(String message, String msgId, 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\" xmlns=\"urn:hl7-org:v3\" xsi:schemaLocation=\"urn:hl7-org:v3\n" +
"file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI\n" +
"_IN000002UV01.xsd\">\n" +
"\t<id extension=\"" + IdUtil.standardUUID() + "\"/>\n" +
"\t<creationTime value=\"" + createTime + "\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\"/>\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 extension=\"MDM\"/>\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 extension=\"" + receiver + "\"/>\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 extension=\"" + msgId + "\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail>\n" +
"\t\t\t<text value=\"" + message + "\"/>\n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"</MCCI_IN000002UV01>";
public static String removeLeadingAndTrailingComma(String input) {
if (input == null || input.isEmpty()) {
return input;
}
input=input.trim();
// 使用正则表达式来删除前后的逗号
input = input.replaceAll("^,+|,+$", "");
return input;
}
/**
* @param message
* @param msgId id
* @param receiver
* @return
*/
private String failedMessage(String message, String msgId, String receiver) {
String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
return "<RCMR_IN000030UV01 ITSVersion=\"XML_1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"urn:hl7-org:v3\" xsi:schemaLocation=\"urn:hl7-org:v3\n" +
"file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/RCMR\n" +
"_IN000030UV01.xsd\">\n" +
"\n" +
"\t<id extension=\"" + IdUtil.standardUUID() + "\"/>\n" +
"\t<creationTime value=\"" + createTime + "\"/>\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"RCMR_IN000030UV01\"/>\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 extension=\"MDM\"/>\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 extension=\"" + receiver + "\"/>\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 extension=\"" + msgId + "\"/>\n" +
"\t\t</targetMessage>\n" +
"\t\t<acknowledgementDetail>\n" +
"\t\t\t<text value=\"" + message + "\"/>\n" +
"\t\t</acknowledgementDetail>\n" +
"\t</acknowledgement>\n" +
"</RCMR_IN000030UV01>\n";
public static void main(String[] args) {
System.out.println(removeLeadingAndTrailingComma(",hhh,jfa,fads,"));
}
}

@ -33,6 +33,4 @@ public interface AfCollectTaskMapper {
* @return
*/
int updateNewSubmit(@Param("id") Long id,@Param("c2") String fileName,@Param("c1") String serialnum);
int cancelFile(@Param("patientId")String patientId, @Param("sysFlag")String sysFlag,@Param("serialnum") String serialnum);
}

@ -1,6 +1,5 @@
package com.docus.server.report.scheduler;
import com.docus.server.report.thread.VerifyNisReportHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -14,13 +13,13 @@ public class JobScheduler {
private static final Logger logger = LoggerFactory.getLogger(JobScheduler.class);
public void init() throws Exception {
VerifyNisReportHelper.getInstance().start();
// VerifyNisReportHelper.getInstance().start();
logger.info(">>>>>>>>> init job admin success.");
}
public void destroy() throws Exception {
VerifyNisReportHelper.getInstance().toStop();
// VerifyNisReportHelper.getInstance().toStop();
}
}

@ -28,5 +28,4 @@ public interface ReportService {
*/
void makeupThreePartyPushReportByTaskIds(List<Long> taskIds) throws Exception;
void cancel(String patientId, String sysFlag, String serialnum);
}

@ -209,9 +209,4 @@ public class ReportServiceImpl implements ReportService {
// 当截取长度小于集合长度,可以进行下次循环截取
} while (loop);
}
@Override
public void cancel(String patientId, String sysFlag, String serialnum) {
collectTaskMapper.cancelFile(patientId,sysFlag,serialnum);
}
}

@ -75,12 +75,4 @@ public interface IReportServer {
* @return
*/
String pushMaternalInfantRelationship(String maternalInfantRelationshipMessage);
/**
*
* /
* @param recallInspectionReportMessage /
* @return
*/
String pushRecallInspectionReport(String recallInspectionReportMessage);
}

@ -9,7 +9,6 @@ public interface WebserviceMessageType {
String HIP1009="HIP1009";
String HIP1010="HIP1010";
String HIP1011="HIP1011";
String HIP1112="HIP1112";
String HIP1166="HIP1166";
String HIP1264="HIP1264";
String ICU="ICU";

@ -205,7 +205,7 @@ public class HIP1008InspectionReportAdditionHandler implements WebserviceReceive
String eafNo = eafNoNode.getNodeValue();
String serialnum = reportFlag + "@" + eafNo;
// 如果报告单号带下划线是合并报告,取报告单号下划线前的,可能有个别来源不需要
List<String> ignoreUnderlineSenders= Arrays.asList("lungFunction-001","BL-001");
List<String> ignoreUnderlineSenders= Arrays.asList("lungFunction-001");
if (reportFlag.contains("_") && !ignoreUnderlineSenders.contains(sender)) {
String[] split = reportFlag.split("_");
serialnum = split[0];

@ -189,7 +189,7 @@ public class HIP1009InspectionReportUpdatesHandler implements WebserviceReceiveS
String eafNo = eafNoNode.getNodeValue();
String serialnum = reportFlag + "@" + eafNo;
// 如果报告单号带下划线是合并报告,取报告单号下划线前的,可能有个别来源不需要
List<String> ignoreUnderlineSenders= Arrays.asList("lungFunction-001","BL-001");
List<String> ignoreUnderlineSenders= Arrays.asList("lungFunction-001");
if (reportFlag.contains("_") && !ignoreUnderlineSenders.contains(sender)) {
String[] split = reportFlag.split("_");
serialnum = split[0];

@ -1,545 +0,0 @@
package com.docus.server.report.webservice.impl;
import com.docus.core.util.DateUtil;
import com.docus.core.util.Func;
import com.docus.infrastructure.core.exception.BaseException;
import com.docus.server.collection.mapper.TBasicMapper;
import com.docus.server.report.config.SdRyReportQueryConfig;
import com.docus.server.report.service.ReportService;
import com.docus.server.report.util.IdUtil;
import com.docus.server.report.util.XmlUtil;
import com.docus.server.report.webservice.WebserviceMessageType;
import com.docus.server.report.webservice.WebserviceReceiveServerHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* HIP1008-
*
* @author jiahsi
*/
@Service(WebserviceMessageType.HIP1112)
@Slf4j
public class HIP1112RecallInspectionReportHandler implements WebserviceReceiveServerHandler {
@Resource
private ReportService reportService;
@Resource
private TBasicMapper tBasicMapper;
@Resource
private SdRyReportQueryConfig sdRyReportQueryConfig;
public static void main(String[] args) {
String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"\n" +
"<POOR_HIP1112 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3 ../multicacheschemas/POOR_IN200901UV.xsd\"> \n" +
" <!-- 消息ID --> \n" +
" <id extension=\"80ABD4579CC14D979BEFF422B58972F3\"/> \n" +
" <!-- 消息创建时间 --> \n" +
" <creationTime value=\"202502181107\"/> \n" +
" <!-- 交互ID --> \n" +
" <interactionId extension=\"POOR_IN200901UV23\"/> \n" +
" <!--消息用途: P(Production); D(Debugging); T(Training) --> \n" +
" <processingCode code=\"P\"/> \n" +
" <!-- 消息处理模式: A(Archive); I(Initial load); R(Restore from archive); T(Current\n" +
" processing) --> \n" +
" <processingModeCode code=\"R\"/> \n" +
" <!-- 消息应答: AL(Always); ER(Error/reject only); NE(Never) --> \n" +
" <acceptAckCode code=\"NE\"/> \n" +
" <!-- 接受者 --> \n" +
" <receiver typeCode=\"RCV\"> \n" +
" <device classCode=\"DEV\" determinerCode=\"INSTANCE\"> \n" +
" <!-- 接受者ID --> \n" +
" <id> \n" +
" <item root=\"\" extension=\"Orion-001\"/> \n" +
" </id> \n" +
" </device> \n" +
" </receiver> \n" +
" <!-- 发送者 --> \n" +
" <sender typeCode=\"SND\"> \n" +
" <device classCode=\"DEV\" determinerCode=\"INSTANCE\"> \n" +
" <!-- 发送者ID --> \n" +
" <id> \n" +
" <item root=\"\" extension=\"LIS\"/> \n" +
" </id> \n" +
" </device> \n" +
" </sender> \n" +
" <!-- 封装的消息内容(按Excel填写) --> \n" +
" <controlActProcess classCode=\"CACT\" moodCode=\"EVN\"> \n" +
" <!-- 消息交互类型 @code: 新增 :new 修改:update --> \n" +
" <code code=\"new\"/> \n" +
" <subject typeCode=\"SUBJ\" xsi:nil=\"false\"> \n" +
" <placerGroup> \n" +
" <!-- 1代表新增2代表更新--> \n" +
" <code/> \n" +
" <!-- 召回状态 必须项未使用 --> \n" +
" <statusCode code=\"1\"/> \n" +
" <!-- 患者信息 --> \n" +
" <subject typeCode=\"SBJ\"> \n" +
" <patient classCode=\"PAT\"> \n" +
" <id> \n" +
" <!--域ID --> \n" +
" <item root=\"1.2.156.10011.1.2.1.2\" extension=\"002120608400\"/> \n" +
" <!-- 患者ID --> \n" +
" <item root=\"2.16.156.10011.0.2.2\" extension=\"10143462\"/> \n" +
" <!--住院号标识--> \n" +
" <item root=\"2.16.156.10011.1.12\" extension=\"\"/> \n" +
" <!--门急诊号--> \n" +
" <item root=\"2.16.156.10011.1.11\" extension=\"10143462\"/> \n" +
" </id> \n" +
" <providerOrganization classCode=\"ORG\" determinerCode=\"INSTANCE\"> \n" +
" <!--报告科室编码--> \n" +
" <id> \n" +
" <item extension=\"\" root=\"1.2.156.10011.1.1.1\"/> \n" +
" </id> \n" +
" <!--报告科室名称 --> \n" +
" <name xsi:type=\"BAG_EN\"> \n" +
" <item> \n" +
" <part value=\"检验科\"/> \n" +
" </item> \n" +
" </name> \n" +
" <asOrganizationPartOf classCode=\"PART\"> \n" +
" <wholeOrganization determinerCode=\"INSTANCE\" classCode=\"ORG\"> \n" +
" <!--医疗机构代码 --> \n" +
" <id> \n" +
" <item extension=\"45608863-7\"/> \n" +
" </id> \n" +
" <!--医疗机构名称 --> \n" +
" <name xsi:type=\"BAG_EN\"> \n" +
" <item>\n" +
" <part value=\"南方医科大学顺德医院\"/>\n" +
" </item> \n" +
" </name> \n" +
" </wholeOrganization> \n" +
" </asOrganizationPartOf> \n" +
" </providerOrganization> \n" +
" </patient> \n" +
" </subject> \n" +
" <!--召回章节 如果多份报告召回,此处可循环--> \n" +
" <component> \n" +
" <!--召回报告号 检验/检查报告单号--> \n" +
" <id root=\"2.16.156.10011.1.32\" extension=\"20250214G0112502141040\"/> \n" +
" <!--召回关联申请单号--> \n" +
" <inFulfillmentOf> \n" +
" <order> \n" +
" <!-- 关联申请单号(可多个) --> \n" +
" <id extension=\"1\"/> \n" +
" <id extension=\"2\"/> \n" +
" <id extension=\"3\"/> \n" +
" <!--可多个,当还有需要关联的医嘱号时参照上述格式添加--> \n" +
" </order> \n" +
" </inFulfillmentOf> \n" +
" <!--报告属性 1代表检验、2代表PACS、3 内镜、4 静态心电、5 动态心电、6 病理、7 体检、8 Petct 9超声--> \n" +
" <reportAttribute extension=\"1\" displayName=\"报告属性\"/> \n" +
" <!--报告类型 013 微生物系统报告 007 检验系统报告--> \n" +
" <code code=\"007\" codeSystem=\"1.2.156.112672.1.1.27\"> \n" +
" <displayName value=\"检验系统报告\"/> \n" +
" </code> \n" +
" <!-- 报告召回信息 --> \n" +
" <performer typeCode=\"PRF\"> \n" +
" <time> \n" +
" <!-- 报告召回时间 --> \n" +
" <any value=\"\"/> \n" +
" </time> \n" +
" <assignedEntity classCode=\"ASSIGNED\"> \n" +
" <!-- 报告召回操作人编码 --> \n" +
" <id> \n" +
" <item extension=\"\" root=\"1.2.156.10011.1.1.2\"/> \n" +
" </id> \n" +
" <assignedPerson determinerCode=\"INSTANCE\" classCode=\"PSN\"> \n" +
" <!-- 报告召回操作人姓名 必须项已使用 --> \n" +
" <name xsi:type=\"BAG_EN\"> \n" +
" <item> \n" +
" <part value=\"\"/> \n" +
" </item> \n" +
" </name> \n" +
" </assignedPerson> \n" +
" </assignedEntity> \n" +
" </performer> \n" +
" <!--召回操作科室 --> \n" +
" <location typeCode=\"LOC\" xsi:nil=\"false\"> \n" +
" <!--必须项未使用 --> \n" +
" <time/> \n" +
" <!--就诊机构/科室 --> \n" +
" <serviceDeliveryLocation classCode=\"SDLOC\"> \n" +
" <serviceProviderOrganization determinerCode=\"INSTANCE\" classCode=\"ORG\"> \n" +
" <!--操作科室编码 --> \n" +
" <id> \n" +
" <item extension=\"30\" root=\"1.2.156.10011.1.1.1\"/> \n" +
" </id> \n" +
" <!--操作科室名称 --> \n" +
" <name xsi:type=\"BAG_EN\"> \n" +
" <item> \n" +
" <part value=\"检验室\"/> \n" +
" </item> \n" +
" </name> \n" +
" </serviceProviderOrganization> \n" +
" </serviceDeliveryLocation> \n" +
" </location> \n" +
" <!--召回原因--> \n" +
" <reason contextConductionInd=\"true\"> \n" +
" <observation moodCode=\"EVN\" classCode=\"OBS\"> \n" +
" <!-- 必须项 未使用--> \n" +
" <code/> \n" +
" <value xsi:type=\"ST\" value=\"报告状态修改\"/> \n" +
" </observation> \n" +
" </reason> \n" +
" </component> \n" +
" <!--就诊 --> \n" +
" <componentOf1 contextConductionInd=\"false\" xsi:nil=\"false\" typeCode=\"COMP\"> \n" +
" <!--就诊 --> \n" +
" <encounter classCode=\"ENC\" moodCode=\"EVN\"> \n" +
" <id> \n" +
" <!-- 就诊次数 必须项已使用 --> \n" +
" <item extension=\"6\" root=\"1.2.156.10011.1.2.1.7\"/> \n" +
" <!-- 就诊流水号 --> \n" +
" <item extension=\"10143462\" root=\"1.2.156.10011.1.2.1.6\"/> \n" +
" </id> \n" +
" <!--就诊类别编码 1:门诊2:急诊3:住院4:体检9:其他;--> \n" +
" <code codeSystem=\"1.2.156.10011.1.1.80\" code=\"3\"> \n" +
" <!-- 就诊类别名称 --> \n" +
" <displayName value=\"住院\"/> \n" +
" </code> \n" +
" <!--必须项未使用 --> \n" +
" <statusCode code=\"Active\"/> \n" +
" <!--病人(必须项未使用) --> \n" +
" <subject typeCode=\"SBJ\"> \n" +
" <patient classCode=\"PAT\"/> \n" +
" </subject> \n" +
" </encounter> \n" +
" </componentOf1> \n" +
" </placerGroup> \n" +
" </subject> \n" +
" </controlActProcess> \n" +
"</POOR_HIP1112>\n";
new HIP1112RecallInspectionReportHandler().handle(xml);
}
@Override
public String handle(String receiveMessage) {
log.info("检查/检验召回推送:{}", receiveMessage);
String msgId = "";
String sender = "";
String receiver = "";
try {
XmlUtil xmlUtil = XmlUtil.of(receiveMessage);
msgId = xmlUtil.getNode("/POOR_HIP1112/id/@extension").getNodeValue();
sender = xmlUtil.getNode("/POOR_HIP1112/sender/device/id/item/@extension").getNodeValue();
receiver = xmlUtil.getNode("/POOR_HIP1112/receiver/device/id/item/@extension").getNodeValue();
String mzFlag = "1";
String zyFlag = "3";
String flag = xmlUtil.getNode("/POOR_HIP1112/controlActProcess/subject/placerGroup/componentOf1/encounter/code/@code").getNodeValue();
if (zyFlag.equals(flag)) {
handleZy(xmlUtil, sender);
} else if (mzFlag.equals(flag)) {
handleMz(xmlUtil, sender);
}
return success(msgId, sender, receiver);
} catch (BaseException baseException) {
log.error(baseException.getMessage(), baseException);
return failed(msgId, sender, receiver, baseException.getMessage());
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
return failed(msgId, sender, receiver, "系统错误!");
}
}
private void handleMz(XmlUtil xmlUtil, String sender) {
String reportQueryMzInspectCollectorId = sdRyReportQueryConfig.getReportQueryMzInspectCollectorId();
String reportQueryLisCollectorId = sdRyReportQueryConfig.getReportQueryLisCollectorId();
// 处理门诊的
String sdryIndex;
int admissTimes;
String patientId;
Node sdryIndexNode = xmlUtil.getNode("/POOR_HIP1112/controlActProcess/subject/placerGroup/subject/patient/id/item[@root='1.2.156.10011.1.2.1.2']/@extension");
if (Objects.isNull(sdryIndexNode)) {
throw new BaseException("未找到域id节点");
}
sdryIndex = sdryIndexNode.getNodeValue();
if (Func.isBlank(sdryIndex)) {
throw new BaseException("域ID解析为空");
}
Node admissTimesNode = xmlUtil.getNode("/POOR_HIP1112/controlActProcess/subject/placerGroup/componentOf1/encounter/id/item[@root='1.2.156.10011.1.2.1.7']/@extension");
if (Objects.isNull(admissTimesNode)) {
throw new BaseException("未找到就诊次数节点!");
}
try {
admissTimes = Integer.parseInt(admissTimesNode.getNodeValue());
} catch (Exception ex) {
throw new BaseException("无法解析就诊次数!");
}
if (admissTimes <= 0) {
throw new BaseException("就诊次数解析不正常应该为大于0的数字");
}
try {
// patientId = tBasicMapper.getPatientIdByInpatientNoAndAdminssTimes(inpatientNo, admissTimes);
patientId = tBasicMapper.getPatientIdBySdRyIndexAndAdmissTimes(sdryIndex, admissTimes + "");
} catch (Exception ex) {
// log.error("门诊检查/检验召回,根据门急诊号:" + mzjNo + ",和就诊次数:" + admissTimes + ",无法匹配正确的患者!" + ex.getMessage(), ex);
log.error("门诊检查/检验召回根据域id" + sdryIndex + "无法匹配正确的患者!" + ex.getMessage(), ex);
return;
}
if (Func.isBlank(patientId)) {
log.error("门诊检查/检验召回根据域id" + sdryIndex + "无法匹配正确的患者!");
return;
}
String jy = "1";
String jc = "2";
String reportAttribute = xmlUtil.getNode("/POOR_HIP1112/controlActProcess/subject/placerGroup/component/reportAttribute/@extension").getNodeValue();
Node reportFlagNode = xmlUtil.getNode("/POOR_HIP1112/controlActProcess/subject/placerGroup/component/id[@root='2.16.156.10011.1.32']/@extension");
String reportFlag = reportFlagNode.getNodeValue();
if (Func.isBlank(reportFlag)) {
throw new BaseException("报告单号为空!");
}
NodeList requestNoNodes = xmlUtil.getNodeList("/POOR_HIP1112/controlActProcess/subject/placerGroup/component/inFulfillmentOf/order/id/@extension");
int length = requestNoNodes.getLength();
if (length > 0) {
for (int i = 0; i < length; i++) {
Node item = requestNoNodes.item(i);
String requestNo = item.getNodeValue();
if (jc.equals(reportAttribute)) {
String jianChaFileSerialnum = getJcFileSerialnum(reportFlag, requestNo, sender);
reportService.cancel(patientId, reportQueryMzInspectCollectorId, jianChaFileSerialnum);
}
if (jy.equals(reportAttribute)) {
String jianYanFileSerialnum = getMzJyFileSerialnum(reportFlag, requestNo);
if (Func.isNotBlank(jianYanFileSerialnum)) {
reportService.cancel(patientId, reportQueryLisCollectorId, jianYanFileSerialnum);
}
}
}
} else {
if (jc.equals(reportAttribute)) {
String jianChaFileSerialnum = getJcFileSerialnum(reportFlag, null, sender);
if (Func.isNotBlank(jianChaFileSerialnum)) {
reportService.cancel(patientId, reportQueryMzInspectCollectorId, jianChaFileSerialnum);
}
}
}
}
private void handleZy(XmlUtil xmlUtil, String sender) {
// 处理住院
String sdryIndex;
int admissTimes;
String patientId;
String sysFlag = sender;
Node sdryIndexNode = xmlUtil.getNode("/POOR_HIP1112/controlActProcess/subject/placerGroup/subject/patient/id/item[@root='1.2.156.10011.1.2.1.2']/@extension");
if (Objects.isNull(sdryIndexNode)) {
throw new BaseException("未找到域id节点");
}
sdryIndex = sdryIndexNode.getNodeValue();
if (Func.isBlank(sdryIndex)) {
throw new BaseException("域ID解析为空");
}
Node admissTimesNode = xmlUtil.getNode("/POOR_HIP1112/controlActProcess/subject/placerGroup/componentOf1/encounter/id/item[@root='1.2.156.10011.1.2.1.7']/@extension");
if (Objects.isNull(admissTimesNode)) {
throw new BaseException("未找到住院次数节点!");
}
try {
admissTimes = Integer.parseInt(admissTimesNode.getNodeValue());
} catch (Exception ex) {
throw new BaseException("无法解析住院次数!");
}
if (admissTimes <= 0) {
throw new BaseException("住院次数解析不正常应该为大于0的数字");
}
try {
patientId = tBasicMapper.getPatientIdBySdRyIndexAndAdmissTimes(sdryIndex, admissTimes + "");
} catch (Exception ex) {
log.error("住院检查/检验召回根据域ID" + sdryIndex + ",和住院次数:" + admissTimes + ",无法匹配正确的患者!" + ex.getMessage(), ex);
return;
}
if (Func.isBlank(patientId)) {
log.error("住院检查/检验召回根据域ID" + sdryIndex + ",和住院次数:" + admissTimes + ",无法匹配正确的患者!");
return;
}
String jy = "1";
String jc = "2";
String reportAttribute = xmlUtil.getNode("/POOR_HIP1112/controlActProcess/subject/placerGroup/component/reportAttribute/@extension").getNodeValue();
Node reportFlagNode = xmlUtil.getNode("/POOR_HIP1112/controlActProcess/subject/placerGroup/component/id[@root='2.16.156.10011.1.32']/@extension");
String reportFlag = reportFlagNode.getNodeValue();
if (Func.isBlank(reportFlag)) {
throw new BaseException("报告单号为空!");
}
NodeList requestNoNodes = xmlUtil.getNodeList("/POOR_HIP1112/controlActProcess/subject/placerGroup/component/inFulfillmentOf/order/id/@extension");
int length = requestNoNodes.getLength();
if (length > 0) {
for (int i = 0; i < length; i++) {
Node item = requestNoNodes.item(i);
String requestNo = item.getNodeValue();
if (jc.equals(reportAttribute)) {
String jianChaFileSerialnum = getJcFileSerialnum(reportFlag, requestNo, sender);
reportService.cancel(patientId, sysFlag, jianChaFileSerialnum);
}
if (jy.equals(reportAttribute)) {
String jianYanFileSerialnum = getZyJyFileSerialnum(reportFlag, requestNo);
reportService.cancel(patientId, sysFlag, jianYanFileSerialnum);
}
}
} else {
if (jc.equals(reportAttribute)) {
String jianChaFileSerialnum = getJcFileSerialnum(reportFlag, null, sender);
if (Func.isNotBlank(jianChaFileSerialnum)) {
reportService.cancel(patientId, sysFlag, jianChaFileSerialnum);
}
}
}
}
/**
* @param reportFlag
* @param requestNo
* @param sender
* @return id
*/
private String getJcFileSerialnum(String reportFlag, String requestNo, String sender) {
// 如果报告单号带下划线是合并报告,取报告单号下划线前的,可能有个别来源不需要
List<String> ignoreUnderlineSenders = Arrays.asList("lungFunction-001", "BL-001");
boolean splitCondition = reportFlag.contains("_") && !ignoreUnderlineSenders.contains(sender);
if (splitCondition) {
String[] split = reportFlag.split("_");
return split[0];
}
if (Objects.isNull(requestNo)) {
return null;
}
return reportFlag + "@" + requestNo;
}
/**
* @param reportFlag
* @param requestNo
* @return id
*/
private String getZyJyFileSerialnum(String reportFlag, String requestNo) {
return reportFlag + "@" + requestNo;
}
/**
* @param reportFlag
* @param requestNo
* @return id
*/
private String getMzJyFileSerialnum(String reportFlag, String requestNo) {
if (Objects.isNull(requestNo)) {
return null;
}
return reportFlag + requestNo;
}
/**
*
*
* @param msgId id
* @param sender
* @param receiver
* @return
*/
public String success(String msgId, String sender, String receiver) {
String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
return "<MCCI_IN000002UV01 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3 file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI _IN000002UV01.xsd\">" +
"<id extension=\"" + IdUtil.standardUUID() + "\"/>" +
"<creationTime value=\"" + createTime + "\"/>" +
"<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\"/>" +
"<processingCode code=\"P\"/>" +
"<processingModeCode/>" +
"<acceptAckCode code=\"AL\"/>" +
"<receiver typeCode=\"RCV\">" +
"<device classCode=\"DEV\" determinerCode=\"INSTANCE\">" +
"<id>" +
"<item extension=\"Orion-001\"/>" +
"</id>" +
"</device>" +
"</receiver>" +
"<sender typeCode=\"SND\">" +
"<device classCode=\"DEV\" determinerCode=\"INSTANCE\">" +
"<id>" +
"<item extension=\"PaperlessManagementMRIS-001\"/>" +
"</id>" +
"</device>" +
"</sender>" +
"<acknowledgement typeCode=\"AA\">" +
"<targetMessage>" +
"<id extension=\"" + msgId + "\"/>" +
"</targetMessage>" +
"<acknowledgementDetail>" +
"<text value=\"成功\"/>" +
"</acknowledgementDetail>" +
"</acknowledgement>" +
"</MCCI_IN000002UV01>";
}
/**
*
*
* @param msgId id
* @param sender
* @param receiver
* @return
*/
public String failed(String msgId, String sender, String receiver, String failedMessage) {
String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
return "<MCCI_IN000002UV01 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3 file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI _IN000002UV01.xsd\">" +
"<id extension=\"" + IdUtil.standardUUID() + "\"/>" +
"<creationTime value=\"" + createTime + "\"/>" +
"<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\"/>" +
"<processingCode code=\"P\"/>" +
"<processingModeCode/>" +
"<acceptAckCode code=\"AL\"/>" +
"<receiver typeCode=\"RCV\">" +
"<device classCode=\"DEV\" determinerCode=\"INSTANCE\">" +
"<id>" +
"<item extension=\"Orion-001\"/>" +
"</id>" +
"</device>" +
"</receiver>" +
"<sender typeCode=\"SND\">" +
"<device classCode=\"DEV\" determinerCode=\"INSTANCE\">" +
"<id>" +
"<item extension=\"PaperlessManagementMRIS-001\"/>" +
"</id>" +
"</device>" +
"</sender>" +
"<acknowledgement typeCode=\"AE\">" +
"<targetMessage>" +
"<id extension=\"" + msgId + "\"/>" +
"</targetMessage>" +
"<acknowledgementDetail>" +
"<text value=\"" + failedMessage + "\"/>" +
"</acknowledgementDetail>" +
"</acknowledgement>" +
"</MCCI_IN000002UV01>";
}
}

@ -66,9 +66,4 @@ public class SdryReportServerImpl implements IReportServer {
public String pushMaternalInfantRelationship(String maternalInfantRelationshipMessage) {
return webserviceReceiveServerHandler.get(WebserviceMessageType.HIP1264).handle(maternalInfantRelationshipMessage);
}
@Override
public String pushRecallInspectionReport(String recallInspectionReportMessage) {
return webserviceReceiveServerHandler.get(WebserviceMessageType.HIP1112).handle(recallInspectionReportMessage);
}
}

@ -16,13 +16,6 @@
recollect_time=now()
where `id` = #{id}
</update>
<delete id="cancelFile">
update `docus_archivefile`.`t_scan_assort`
set is_del=1
where `patient_id` = #{patientId}
and source= #{sysFlag}
and file_column_1= #{serialnum}
</delete>
<select id="getTaskById" resultType="com.docus.server.report.entity.AfCollectTask">
select *

@ -34,14 +34,6 @@
delete from `docus_system`.`power_user` where `user_name` = #{userName}
</delete>
<update id="cancelUserByUserName">
update `docus_system`.`power_user`
set `account_state`=2,
`enabled`=0,
`effective`=0
where `user_name` = #{userName}
</update>
<select id="getUserByUserName" resultType="com.docus.server.collection.entity.PowerUser">
SELECT `user_id`,`user_name`,`user_pwd`,`power_dept`,`role_id` FROM `docus_system`.`power_user`
WHERE `user_name` = #{userName} LIMIT 1

@ -330,9 +330,4 @@
where inpatient_no=#{inpatientNo}
and admiss_times=#{admissTimes}
</select>
<delete id="deleteExtend">
delete from `docus_medicalrecord`.`t_basic_extend`
where `patient_id`=#{patientId};
</delete>
</mapper>

@ -1,129 +0,0 @@
package com.docus.server.collection.webservice.impl;
import com.docus.server.collection.dto.DeptDto;
import com.docus.server.collection.dto.DeptModifyParam;
import com.docus.server.collection.dto.UserDto;
import com.docus.server.collection.dto.UserModifyParam;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.junit.Test;
public class DeptServerImplTest {
String xml = "<PRVS_IN000002UV01 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\">\n" +
"\t<!--消息唯一ID-->\n" +
"\t<id extension=\"a10f1ad0-6f12-41b6-95f2-a629490774cf\"/>\n" +
"\t<!--creationTime-消息创建时间-->\n" +
"\t<creationTime value=\"20221115164552\"/>\n" +
"\t<!--interactionId-消息的服务标识-->\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"PRVS_IN000002UV01\"/>\n" +
"\t<!--processingCode-处理代码。标识此消息是否是产品、训练、调试系统的一部分。D调试P产\n" +
"品T训练-->\n" +
"\t<processingCode code=\"P\"/>\n" +
"\t<!--processingModeCode-处理模型代码。定义此消息是一个文档处理还是一个初始装载的一部分。A\n" +
"存档I初始装载R从存档中恢复T当前处理间隔传递。-->\n" +
"\t<processingModeCode/>\n" +
"\t<!--acceptAckCode-接收确认类型 AL总是确认NE从不确认ER仅在错误/或拒绝时确认SU\n" +
"仅在成功完成时确认。-->\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<!-- 指定接收方,用于 Orion 通讯点路由 -->\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.1\" extension=\"MDM\"/>\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<!-- 指定发送方,用于 Orion 通讯点路由 -->\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.2\" extension=\"HIS-001\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</sender>\n" +
"\t<controlActProcess classCode=\"CACT\" moodCode=\"EVN\">\n" +
"\t\t<code code=\"ValueSetUpdate\">\n" +
"\t\t\t<displayName value=\"字典更新\"/>\n" +
"\t\t</code>\n" +
"\t\t<subject typeCode=\"SUBJ\">\n" +
"\t\t\t<registrationRequest classCode=\"REG\" moodCode=\"RQO\">\n" +
"\t\t\t\t<statusCode/>\n" +
"\t\t\t\t<!--值集注册subject1为1..1-->\n" +
"\t\t\t\t<subject1 typeCode=\"SBJ\">\n" +
"\t\t\t\t\t<valueSet>\n" +
"\t\t\t\t\t\t<!--值集标识符 STANDARD_CODE-->\n" +
"\t\t\t\t\t\t<id extension=\"HIP833\"/>\n" +
"\t\t\t\t\t\t<!--值集描述 COLLECTION_NAME + COLLECTION_VERSION-->\n" +
"\t\t\t\t\t\t<desc value=\"人员his科室字典\"/>\n" +
"\t\t\t\t\t\t<!--值集状态代码-->\n" +
"\t\t\t\t\t\t<statusCode code=\"1\"/>\n" +
"\t\t\t\t\t\t<!--字典的副本号 RELEASE_TAG-->\n" +
"\t\t\t\t\t\t<version code=\"1.0\">\n" +
"\t\t\t\t\t\t\t<originalText value=\"\"/>\n" +
"\t\t\t\t\t\t</version>\n" +
"\t\t\t\t\t\t<!-- 字典具体的某一行数据operateType有三种值C 代表新增、U 代表修改、D 代表删除-->\n" +
"\t\t\t\t\t\t<valueSetItems operateType=\"CU\">\n" +
"\t\t\t\t\t\t\t<!--科室编码-->\n" +
"\t\t\t\t\t\t\t<DEPT_CODE value=\"M010615\"/>\n" +
"\t\t\t\t\t\t\t<!--科室名称-->\n" +
"\t\t\t\t\t\t\t<DEPT_NAME value=\"卵巢早衰专科\"/>\n" +
"\t\t\t\t\t\t\t<!--科室类型(门诊住院)-->\n" +
"\t\t\t\t\t\t\t<DEPT_TYPE value=\"\"/>\n" +
"\t\t\t\t\t\t\t<!--拼音简码-->\n" +
"\t\t\t\t\t\t\t<SPELL_CODE value=\"LCZSZK\"/>\n" +
"\t\t\t\t\t\t\t<!--五笔简码-->\n" +
"\t\t\t\t\t\t\t<WB_CODE value=\"QVJYFT\"/>\n" +
"\t\t\t\t\t\t\t<!--科室地址-->\n" +
"\t\t\t\t\t\t\t<DEPT_ADDRESS value=\"1号楼6楼C区\"/>\n" +
"\t\t\t\t\t\t\t<!--备注-->\n" +
"\t\t\t\t\t\t\t<REMARKS value=\"\"/>\n" +
"\t\t\t\t\t\t\t<!--科室角色状态代码-->\n" +
"\t\t\t\t\t\t\t<STATUS_CODE value=\"1\"/>\n" +
"\t\t\t\t\t\t\t<!--机构代码-->\n" +
"\t\t\t\t\t\t\t<ORG_CODE value=\"4560886379\"/>\n" +
"\t\t\t\t\t\t\t<!--机构名称-->\n" +
"\t\t\t\t\t\t\t<ORG_NAME value=\"南方医科大学顺德医院\"/>\n" +
"\t\t\t\t\t\t</valueSetItems>\n" +
"\t\t\t\t\t</valueSet>\n" +
"\t\t\t\t</subject1>\n" +
"\t\t\t\t<!-- 谁做了本次操作-->\n" +
"\t\t\t\t<author typeCode=\"AUT\">\n" +
"\t\t\t\t\t<assignedEntity classCode=\"ASSIGNED\">\n" +
"\t\t\t\t\t\t<id>\n" +
"\t\t\t\t\t\t\t<item root=\"2.16.156.10011.1.4\" extension=\"操作人ID\"/>\n" +
"\t\t\t\t\t\t</id>\n" +
"\t\t\t\t\t\t<assignedPerson classCode=\"PSN\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t\t\t\t\t<name xsi:type=\"DSET_EN\">\n" +
"\t\t\t\t\t\t\t\t<item>\n" +
"\t\t\t\t\t\t\t\t\t<part value=\"操作人名称\"/>\n" +
"\t\t\t\t\t\t\t\t</item>\n" +
"\t\t\t\t\t\t\t</name>\n" +
"\t\t\t\t\t\t</assignedPerson>\n" +
"\t\t\t\t\t</assignedEntity>\n" +
"\t\t\t\t</author>\n" +
"\t\t\t</registrationRequest>\n" +
"\t\t</subject>\n" +
"\t</controlActProcess>\n" +
"</PRVS_IN000002UV01>\n";
@Test
public void parseDeptDtoTest() {
DeptServerImpl deptServer = new DeptServerImpl();
DeptDto deptDto = deptServer.strToDeptDto(xml);
DeptModifyParam addParam = deptDto.transDeptAddParam();
System.out.println(deptDto);
System.out.println(addParam);
assert deptDto.getDeptName().equals(addParam.getDeptName());
assert deptDto.getAuthorId().equals(addParam.getAuthorId());
assert deptDto.getAuthorName().equals(addParam.getAuthorName());
assert deptDto.getDeptCode().equals(addParam.getDeptCode());
}
@Test
public void modifyWebserviceTest() throws Exception{
// JaxWsDynamicClientFactory jaxWsDynamicClientFactory = JaxWsDynamicClientFactory.newInstance();
// Client client = jaxWsDynamicClientFactory.createClient("http://localhost:9111/webservice/api/dept?wsdl");
// Object[] invoke = client.invoke("deptModify", xml);
// System.out.println(invoke[0].toString());
}
}

@ -1,137 +0,0 @@
package com.docus.server.collection.webservice.impl;
import com.docus.server.collection.dto.UserDto;
import com.docus.server.collection.dto.UserModifyParam;
import org.junit.Test;
public class UserServerImplTest {
String xml = "<PRVS_IN000002UV01 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\">\n" +
"\t<!--消息唯一ID-->\n" +
"\t<id extension=\"c460c892-24ad-490a-979c-853afc65a208\"/>\n" +
"\t<!--creationTime-消息创建时间-->\n" +
"\t<creationTime value=\"20221115170803\"/>\n" +
"\t<!--interactionId-消息的服务标识-->\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"PRVS_IN000002UV01\"/>\n" +
"\t<!--processingCode-处理代码。标识此消息是否是产品、训练、调试系统的一部分。D调试P产\n" +
"品T训练-->\n" +
"\t<processingCode code=\"P\"/>\n" +
"\t<!--processingModeCode-处理模型代码。定义此消息是一个文档处理还是一个初始装载的一部分。A\n" +
"存档I初始装载R从存档中恢复T当前处理间隔传递。-->\n" +
"\t<processingModeCode/>\n" +
"\t<!--acceptAckCode-接收确认类型 AL总是确认NE从不确认ER仅在错误/或拒绝时确认SU\n" +
"仅在成功完成时确认。-->\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<!-- 指定接收方,用于 Orion 通讯点路由 -->\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.1\" extension=\"MDM\"/>\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<!-- 指定发送方,用于 Orion 通讯点路由 -->\n" +
"\t\t\t\t<item root=\"2.16.156.10011.0.1.2\" extension=\"HIS-001\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</sender>\n" +
"\t<controlActProcess classCode=\"CACT\" moodCode=\"EVN\">\n" +
"\t\t<code code=\"ValueSetUpdate\">\n" +
"\t\t\t<displayName value=\"字典更新\"/>\n" +
"\t\t</code>\n" +
"\t\t<subject typeCode=\"SUBJ\">\n" +
"\t\t\t<registrationRequest classCode=\"REG\" moodCode=\"RQO\">\n" +
"\t\t\t\t<statusCode/>\n" +
"\t\t\t\t<!--值集注册subject1为1..1-->\n" +
"\t\t\t\t<subject1 typeCode=\"SBJ\">\n" +
"\t\t\t\t\t<valueSet>\n" +
"\t\t\t\t\t\t<!--值集标识符 STANDARD_CODE-->\n" +
"\t\t\t\t\t\t<id extension=\"HIP834\"/>\n" +
"\t\t\t\t\t\t<!--值集描述 COLLECTION_NAME + COLLECTION_VERSION-->\n" +
"\t\t\t\t\t\t<desc value=\"HIS人员字典\"/>\n" +
"\t\t\t\t\t\t<!--值集状态代码-->\n" +
"\t\t\t\t\t\t<statusCode code=\"1\"/>\n" +
"\t\t\t\t\t\t<!--字典的副本号 RELEASE_TAG-->\n" +
"\t\t\t\t\t\t<version code=\"1.0\">\n" +
"\t\t\t\t\t\t\t<originalText value=\"\"/>\n" +
"\t\t\t\t\t\t</version>\n" +
"\t\t\t\t\t\t<!-- 字典具体的某一行数据operateType有三种值C 代表新增、U 代表修改、D 代表删除-->\n" +
"\t\t\t\t\t\t<valueSetItems operateType=\"CU\">\n" +
"\t\t\t\t\t\t\t<!--员工编码-->\n" +
"\t\t\t\t\t\t\t<HIS_CODE value=\"05231\"/>\n" +
"\t\t\t\t\t\t\t<!--员工工号-->\n" +
"\t\t\t\t\t\t\t<EMPL_CODE value=\"W-011\"/>\n" +
"\t\t\t\t\t\t\t<!--员工姓名-->\n" +
"\t\t\t\t\t\t\t<EMPL_NAME value=\"郑大海\"/>\n" +
"\t\t\t\t\t\t\t<!--员工所在科室编号-->\n" +
"\t\t\t\t\t\t\t<DEPT_CODE value=\"0402\"/>\n" +
"\t\t\t\t\t\t\t<!--员工所在科室名称-->\n" +
"\t\t\t\t\t\t\t<DEPT_NAME value=\"神经外科\"/>\n" +
"\t\t\t\t\t\t\t<!--职务名称-->\n" +
"\t\t\t\t\t\t\t<POSI_NAME value=\"主任医师\"/>\n" +
"\t\t\t\t\t\t\t<!--身份证号-->\n" +
"\t\t\t\t\t\t\t<IDENNO value=\"\"/>\n" +
"\t\t\t\t\t\t\t<!--创建人科室编号-->\n" +
"\t\t\t\t\t\t\t<CDEPT_CODE value=\"\"/>\n" +
"\t\t\t\t\t\t\t<!--创建人科室名称-->\n" +
"\t\t\t\t\t\t\t<CDEPT_NAME value=\"\"/>\n" +
"\t\t\t\t\t\t\t<!--科室角色状态代码-->\n" +
"\t\t\t\t\t\t\t<STATUS_CODE value=\"0\"/>\n" +
"\t\t\t\t\t\t\t<!--拼音码-->\n" +
"\t\t\t\t\t\t\t<SPELL_CODE value=\"ZDH\"/>\n" +
"\t\t\t\t\t\t\t<!--五笔码-->\n" +
"\t\t\t\t\t\t\t<WB_CODE value=\"UDI\"/>\n" +
"\t\t\t\t\t\t\t<!--电话号码-->\n" +
"\t\t\t\t\t\t\t<EMPL_TEL value=\"110\"/>\n" +
"\t\t\t\t\t\t\t<!--机构代码-->\n" +
"\t\t\t\t\t\t\t<ORG_CODE value=\"4560886379\"/>\n" +
"\t\t\t\t\t\t\t<!--机构名称-->\n" +
"\t\t\t\t\t\t\t<ORG_NAME value=\"南方医科大学顺德医院\"/>\n" +
"\t\t\t\t\t\t</valueSetItems>\n" +
"\t\t\t\t\t</valueSet>\n" +
"\t\t\t\t</subject1>\n" +
"\t\t\t\t<!-- 谁做了本次操作-->\n" +
"\t\t\t\t<author typeCode=\"AUT\">\n" +
"\t\t\t\t\t<assignedEntity classCode=\"ASSIGNED\">\n" +
"\t\t\t\t\t\t<id>\n" +
"\t\t\t\t\t\t\t<item root=\"2.16.156.10011.1.4\" extension=\"操作人ID\"/>\n" +
"\t\t\t\t\t\t</id>\n" +
"\t\t\t\t\t\t<assignedPerson classCode=\"PSN\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t\t\t\t\t<name xsi:type=\"DSET_EN\">\n" +
"\t\t\t\t\t\t\t\t<item>\n" +
"\t\t\t\t\t\t\t\t\t<part value=\"操作人名称\"/>\n" +
"\t\t\t\t\t\t\t\t</item>\n" +
"\t\t\t\t\t\t\t</name>\n" +
"\t\t\t\t\t\t</assignedPerson>\n" +
"\t\t\t\t\t</assignedEntity>\n" +
"\t\t\t\t</author>\n" +
"\t\t\t</registrationRequest>\n" +
"\t\t</subject>\n" +
"\t</controlActProcess>\n" +
"</PRVS_IN000002UV01>\n";
@Test
public void parseUserDtoTest() {
UserServerImpl userServer = new UserServerImpl();
UserDto userDto = userServer.strToUserDto(xml);
UserModifyParam addParam = userDto.transUserAddParam();
System.out.println(userServer);
System.out.println(addParam);
assert userDto.getUserName().equals(addParam.getUserName());
assert userDto.getName().equals(addParam.getName());
assert userDto.getAuthorId().equals(addParam.getAuthorId());
assert userDto.getAuthorName().equals(addParam.getAuthorName());
assert userDto.getDeptId().equals(addParam.getDeptId());
assert userDto.getPosition().equals(addParam.getPosition());
assert userDto.getRoleId().equals(addParam.getRoleId());
}
@Test
public void modifyWebserviceTest() throws Exception{
// JaxWsDynamicClientFactory jaxWsDynamicClientFactory = JaxWsDynamicClientFactory.newInstance();
// Client client = jaxWsDynamicClientFactory.createClient("http://localhost:9111/webservice/api/user?wsdl");
// Object[] invoke = client.invoke("userModify", xml);
// System.out.println(invoke[0].toString());
}
}
Loading…
Cancel
Save