You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
213 lines
11 KiB
Java
213 lines
11 KiB
Java
5 years ago
|
package com.ann.demo.interfaces.impl;
|
||
|
|
||
|
import com.alibaba.fastjson.JSON;
|
||
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||
|
import com.ann.demo.entity.constant.AliasName;
|
||
|
import com.ann.demo.entity.constant.InterfaceName;
|
||
|
import com.ann.demo.entity.filing.MessageSubordinate;
|
||
|
import com.ann.demo.entity.filing.dto.MessageDto;
|
||
|
import com.ann.demo.entity.filing.dto.PatientMainDto;
|
||
|
import com.ann.demo.entity.interfaceEntity.*;
|
||
|
import com.ann.demo.interfaces.HomepageDictionary;
|
||
|
import com.ann.demo.repository.ArchiveMasterRepository;
|
||
|
import com.ann.demo.service.*;
|
||
|
import com.ann.demo.utils.XMLUtils;
|
||
|
import org.slf4j.Logger;
|
||
|
import org.slf4j.LoggerFactory;
|
||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||
|
|
||
|
import javax.jws.WebService;
|
||
|
import java.util.Date;
|
||
|
|
||
|
/**
|
||
|
* @Author: LeiJiaXin
|
||
|
* @Date: 2019/6/11 17:01
|
||
|
*/
|
||
|
|
||
|
@WebService(serviceName = "HomepageDictionary", // 与接口中指定的name一致
|
||
|
targetNamespace = "http://interfaces.demo.ann.com/", // 与接口中的命名空间一致,一般是接口的包名倒
|
||
|
endpointInterface = "com.ann.demo.interfaces.HomepageDictionary"// 接口地址
|
||
|
)
|
||
|
public class HomepageDictionaryImpl implements HomepageDictionary {
|
||
|
|
||
|
private static final Logger logger = LoggerFactory.getLogger(HomepageDictionaryImpl.class);
|
||
|
|
||
|
@Autowired
|
||
|
private MessageService messageService;
|
||
|
|
||
|
@Autowired
|
||
|
private MessageSubordinateService messageSubordinateService;
|
||
|
|
||
|
@Autowired
|
||
|
private ArchiveDetailService archiveDetailService;
|
||
|
|
||
|
@Autowired
|
||
|
private ArchiveMasterRepository archiveMasterRepository;
|
||
|
|
||
|
@Override
|
||
|
public String NurseData(String xmlStr) {
|
||
|
String outContent = "失败";
|
||
|
try {
|
||
|
// 1、定义变量
|
||
|
boolean flag = false;
|
||
|
Integer result = 0;
|
||
|
String type = "", patientMainStr = null;
|
||
|
ArchiveMaster archiveMaster ;
|
||
|
long startTime = System.currentTimeMillis();
|
||
|
Date xmlCreateTime = null;
|
||
|
|
||
|
MessageLog messageLog = new MessageLog(xmlStr, InterfaceName.NURSE_DATA, new Date());
|
||
|
messageService.save(messageLog);
|
||
|
// 2、 解析
|
||
|
MessageDto messageDto = XMLUtils.xpathToBean(xmlStr, EMRData.class, InterfaceName.NURSE_DATA);
|
||
|
if (messageDto != null) {
|
||
|
archiveMaster = archiveMasterRepository.findByInpNoAndVisitIdAndIsValid(messageDto.getInpNo(),messageDto.getVisitId(),0);
|
||
|
if(archiveMaster != null){
|
||
|
|
||
|
// 区分类型
|
||
|
String reportType = messageDto.getType();
|
||
|
if (reportType != null) {
|
||
|
if (AliasName.NURSE_MAP.containsKey(reportType)) {
|
||
|
String subType = messageDto.getSubType();
|
||
|
if (AliasName.NURSE_MAP.containsKey(subType)) {
|
||
|
type = AliasName.NURSE_MAP.get(subType);
|
||
|
} else {
|
||
|
// 如果都不包含,但是有大类 那么归为其他记录
|
||
|
if (subType != null && !subType.equals("")) {
|
||
|
type = AliasName.OTHER;
|
||
|
} else {
|
||
|
type = AliasName.NURSE_MAP.get(reportType);
|
||
|
}
|
||
|
}
|
||
|
messageDto.setType(type);
|
||
|
}
|
||
|
// 根据住院次数 患者id 查询是否存在记录 如果存在 那么就作废
|
||
|
messageDto.setApplyId(messageDto.getInpNo() + "-" + messageDto.getVisitId()+"-nurse-"+messageDto.getCommitTime());
|
||
|
if(!(archiveMaster.getArchiveState().equals("初审") || archiveMaster.getArchiveState().equals("已归档") ||
|
||
|
archiveMaster.getArchiveState().equals("复审退回") )){
|
||
|
String temp = archiveDetailService.updateAllFlag(messageDto.getApplyId(), messageDto.getSource());
|
||
|
if(temp != null){
|
||
|
messageLog.setRemark(temp);
|
||
|
}else{
|
||
|
patientMainStr = JSON.toJSONString(new PatientMainDto(messageDto.getInpNo(), messageDto.getVisitId()), SerializerFeature.WriteMapNullValue);
|
||
|
result = 1;
|
||
|
flag = true;
|
||
|
}
|
||
|
}else{
|
||
|
messageLog.setRemark("该病历已"+archiveMaster.getArchiveState()+",不再接收");
|
||
|
}
|
||
|
}
|
||
|
// 保存消息从属表
|
||
|
xmlCreateTime = messageDto.getXmlCreateTime();
|
||
|
}else{
|
||
|
messageLog.setRemark("没有入院消息。。");
|
||
|
}
|
||
|
} else {
|
||
|
messageLog.setRemark("传过来的消息无法解析。。");
|
||
|
}
|
||
|
|
||
|
// 4、判断是否成功 失败 的原因 我们插入报错 然后无法解析xml 传入参数为null
|
||
|
outContent = AnalysisService.getReturnResult(flag);
|
||
|
// 更新日志表
|
||
|
long endTime = System.currentTimeMillis();
|
||
|
messageLog.setValue(outContent, result, messageDto == null ? "" : JSON.toJSONString(messageDto), xmlCreateTime, (endTime - startTime), new Date(), type);
|
||
|
messageService.save(messageLog);
|
||
|
|
||
|
if (flag) {
|
||
|
messageSubordinateService.save(new MessageSubordinate(messageLog.getId(), patientMainStr, JSON.toJSONString(messageLog)));
|
||
|
}
|
||
|
logger.info("-----------------------护理总时长:" + (endTime - startTime) + "-------------------------");
|
||
|
}catch (Exception e){
|
||
|
try {
|
||
|
logger.error("出错咯!错误信息为{},以及错误行数为:{}" ,e,e.getStackTrace()[0]);
|
||
|
return AnalysisService.getReturnResult(false);
|
||
|
} catch (Exception e1) {
|
||
|
logger.error("出错咯!错误信息为{},以及错误行数为:{}" ,e1,e1.getStackTrace()[0]);
|
||
|
return outContent;
|
||
|
}
|
||
|
}
|
||
|
return outContent;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String DoctorData(String xmlStr) {
|
||
|
String outContent = "失败";
|
||
|
try {
|
||
|
// 1、定义变量
|
||
|
boolean flag = false;
|
||
|
Integer result = 0;
|
||
|
String type = "", patientMainStr = null;
|
||
|
ArchiveMaster archiveMaster ;
|
||
|
long startTime = System.currentTimeMillis();
|
||
|
Date xmlCreateTime = null;
|
||
|
MessageLog messageLog = new MessageLog(xmlStr, InterfaceName.DOCTOR_DATA, new Date());
|
||
|
messageService.save(messageLog);
|
||
|
// 2、 解析
|
||
|
MessageDto messageDto = XMLUtils.xpathToBean(xmlStr, EMRData.class, InterfaceName.DOCTOR_DATA);
|
||
|
if (messageDto != null) {
|
||
|
archiveMaster = archiveMasterRepository.findByInpNoAndVisitIdAndIsValid(messageDto.getInpNo(),messageDto.getVisitId(),0);
|
||
|
if(archiveMaster != null) {
|
||
|
// 区分类型
|
||
|
String reportType = messageDto.getType();
|
||
|
if (reportType != null) {
|
||
|
// 分配类型
|
||
|
if (AliasName.DOCTOR_MAP.containsKey(reportType)) {
|
||
|
String subType = messageDto.getSubType();
|
||
|
if (AliasName.DOCTOR_MAP.containsKey(subType)) {
|
||
|
type = AliasName.DOCTOR_MAP.get(subType);
|
||
|
} else {
|
||
|
// 如果都不包含,但是有大类 那么归为其他记录
|
||
|
if (subType != null && !subType.equals("")) {
|
||
|
type = AliasName.OTHER;
|
||
|
} else {
|
||
|
type = AliasName.DOCTOR_MAP.get(reportType);
|
||
|
}
|
||
|
}
|
||
|
messageDto.setType(type);
|
||
|
}
|
||
|
// 根据住院次数 患者id 查询是否存在记录 如果存在 那么就作废
|
||
|
messageDto.setApplyId(messageDto.getInpNo() + "-" + messageDto.getVisitId() + "-doctor-" + messageDto.getCommitTime());
|
||
|
if(!(archiveMaster.getArchiveState().equals("初审") || archiveMaster.getArchiveState().equals("已归档") ||
|
||
|
archiveMaster.getArchiveState().equals("复审退回") )){
|
||
|
String temp = archiveDetailService.updateAllFlag(messageDto.getApplyId(), messageDto.getSource());
|
||
|
if (temp != null) {
|
||
|
messageLog.setRemark(temp);
|
||
|
} else {
|
||
|
result = 1;
|
||
|
flag = true;
|
||
|
patientMainStr = JSON.toJSONString(new PatientMainDto(messageDto.getInpNo(), messageDto.getVisitId()), SerializerFeature.WriteMapNullValue);
|
||
|
}
|
||
|
}else{
|
||
|
messageLog.setRemark("该病历已"+archiveMaster.getArchiveState()+",不再接收");
|
||
|
}
|
||
|
}
|
||
|
xmlCreateTime = messageDto.getXmlCreateTime();
|
||
|
}else{
|
||
|
messageLog.setRemark("没有入院消息。。");
|
||
|
}
|
||
|
} else {
|
||
|
messageLog.setRemark("传过来的消息无法解析。。");
|
||
|
}
|
||
|
// 4、判断是否成功 失败 的原因 我们插入报错 然后无法解析xml 传入参数为null
|
||
|
outContent = AnalysisService.getReturnResult(flag);
|
||
|
// 更新日志表
|
||
|
long endTime = System.currentTimeMillis();
|
||
|
messageLog.setValue(outContent, result, messageDto == null ? "" : JSON.toJSONString(messageDto), xmlCreateTime, (endTime - startTime), new Date(), type);
|
||
|
messageService.save(messageLog);
|
||
|
|
||
|
if (flag) {
|
||
|
messageSubordinateService.save(new MessageSubordinate(messageLog.getId(), patientMainStr, JSON.toJSONString(messageLog)));
|
||
|
}
|
||
|
logger.info("-----------------------医生总时长:" + (endTime - startTime) + "-------------------------");
|
||
|
}catch (Exception e){
|
||
|
try {
|
||
|
logger.error("出错咯!错误信息为{},以及错误行数为:{}" ,e,e.getStackTrace()[0]);
|
||
|
return AnalysisService.getReturnResult(false);
|
||
|
} catch (Exception e1) {
|
||
|
logger.error("出错咯!错误信息为{},以及错误行数为:{}" ,e1,e1.getStackTrace()[0]);
|
||
|
}
|
||
|
}
|
||
|
return outContent;
|
||
|
}
|
||
|
}
|