@ -1,16 +1,23 @@
package com.ann.demo.interfaces.impl ;
import com.alibaba.fastjson.JSON ;
import com.ann.demo.entity.constant.AliasName ;
import com.ann.demo.entity.constant.InterfaceName ;
import com.ann.demo.entity.constant.WebserviceId ;
import com.ann.demo.entity.filing.MessageSubordinate ;
import com.ann.demo.entity.filing.dto.MessageDto ;
import com.ann.demo.entity.interfaceEntity.* ;
import com.ann.demo.interfaces.HomepageDictionary ;
import com.ann.demo.service.* ;
import com.ann.demo.service.impl.AnalysisService ;
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 ;
import java.util.Objects ;
/ * *
* @Author : LeiJiaXin
@ -28,6 +35,20 @@ public class HomepageDictionaryImpl implements HomepageDictionary {
@Autowired
private AnalysisService analysisService ;
@Autowired
private MessageService messageService ;
@Autowired
private MessageSubordinateService messageSubordinateService ;
@Autowired
private ArchiveMasterService archiveMasterService ;
@Autowired
private InterfaceHisCacheService interfaceHisCacheService ;
@Override
public String HIPMessageServer ( String action , String message ) {
String result = "" ;
@ -75,6 +96,59 @@ public class HomepageDictionaryImpl implements HomepageDictionary {
return result ;
}
@Override
public String HandleMedicalAdvice ( String xmlStr ) { // 手动处理有问题医嘱
String outContent = "失败" ;
String remark = null ;
try {
// 1、定义变量
boolean flag = false ;
Integer result = 0 ;
String type = "" ;
String patientMainStr = null , archiveMasterId = null ;
long startTime = System . currentTimeMillis ( ) ;
Date xmlCreateTime = null ;
MessageLog messageLog = new MessageLog ( xmlStr , InterfaceName . HANDLE_MEDICAL_ADVICE , new Date ( ) , WebserviceId . HANDLE_MEDICAL_ADVICE ) ;
messageService . save ( messageLog ) ;
// 2、 解析
MessageDto messageDto = XMLUtils . xpathToBean ( xmlStr , ArchiveMaster . class , InterfaceName . HANDLE_MEDICAL_ADVICE ) ;
if ( messageDto ! = null ) {
archiveMasterId = messageService . getArchiveMasterId ( messageDto . getInpNo ( ) , messageDto . getVisitId ( ) ) ;
if ( archiveMasterId ! = null ) {
remark = interfaceHisCacheService . handleMedicalAdvice ( messageDto . getInpNo ( ) , messageDto . getVisitId ( ) , messageDto . getType ( ) , messageDto . getXmlCreateTime ( ) ) ;
if ( remark = = null ) {
result = 1 ;
flag = true ;
}
} else {
remark = "没有入院消息" ;
}
xmlCreateTime = messageDto . getXmlCreateTime ( ) ;
type = AliasName . HANDLE_MEDICAL_ADVICE ;
} else {
remark = "传过来的消息无法解析" ;
}
outContent = AnalysisService . getReturnResult ( flag , remark ) ;
// 更新日志表
long endTime = System . currentTimeMillis ( ) ;
messageLog . setValue ( archiveMasterId , outContent , result , messageDto = = null ? "" : JSON . toJSONString ( messageDto ) , xmlCreateTime , ( endTime - startTime ) , new Date ( ) , type , remark ) ;
messageService . save ( messageLog ) ;
if ( flag ) {
messageSubordinateService . save ( new MessageSubordinate ( messageLog . getId ( ) , patientMainStr , JSON . toJSONString ( messageLog ) ) ) ;
}
} catch ( Exception e ) {
try {
logger . error ( "当前参数:{},报错信息:{}" , "HandleMedicalAdvice" , e . getMessage ( ) ) ;
return AnalysisService . getReturnResult ( false , remark ) ;
} catch ( Exception ex ) {
logger . error ( "当前参数:{},报错信息:{}" , "HandleMedicalAdvice" , ex . getMessage ( ) ) ;
}
}
return outContent ;
}
}