@ -5,6 +5,7 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
import com.ann.demo.entity.constant.AliasName ;
import com.ann.demo.entity.constant.Identification ;
import com.ann.demo.entity.constant.InterfaceName ;
import com.ann.demo.entity.constant.WebserviceId ;
import com.ann.demo.entity.filing.ArchiveDetail ;
import com.ann.demo.entity.filing.MessageSubordinate ;
import com.ann.demo.entity.filing.dto.MessageDto ;
@ -50,84 +51,106 @@ public class HomepageDictionaryImpl implements HomepageDictionary {
@Autowired
private ArchiveDetailService archiveDetailService ;
@Autowired
private ArchiveMasterService archiveMasterService ;
@Autowired
ExamApplyService examApplyService ;
@Override
public String HIPMessageServer ( String action , String message ) {
String result = "" ;
try {
if ( action ! = null & & message ! = null & & ! ( message . equals ( "" ) & & action . equals ( "" ) ) ) {
switch ( action ) {
case InterfaceName . PARAMETER_ADMISSION :
// 入院
result = analysisService . getHIPMessageServerResult ( message , ArchiveMaster . class , InterfaceName . PARAMETER_ADMISSION ) ;
break ;
case InterfaceName . PARAMETER_DISCHARGE :
// 出院
result = analysisService . getHIPMessageServerResult ( message , ArchiveMaster . class , InterfaceName . PARAMETER_DISCHARGE ) ;
break ;
case InterfaceName . PARAMETER_TRANSFER :
// 转科
result = analysisService . getHIPMessageServerResult ( message , ArchiveMaster . class , InterfaceName . PARAMETER_TRANSFER ) ;
break ;
case InterfaceName . PARAMETER_CANCELLATION_DISCHARGE :
// 取消入院
result = analysisService . getHIPMessageServerResult ( message , ArchiveMaster . class , InterfaceName . PARAMETER_CANCELLATION_DISCHARGE ) ;
break ;
case InterfaceName . PARAMETER_PATIENT_UPDATE :
// 患者信息更新
result = analysisService . getHIPMessageServerResult ( message , ArchiveMaster . class , InterfaceName . PARAMETER_PATIENT_UPDATE ) ;
break ;
}
}
} catch ( Exception e ) {
return "" ;
}
// String result = "";
// try {
// if (action != null && message != null && !(message.equals("") && action.equals(""))) {
// switch (action) {
// case InterfaceName.PARAMETER_ADMISSION:
// // 入院
// result = analysisService.getHIPMessageServerResult(message, ArchiveMaster.class, InterfaceName.PARAMETER_ADMISSION);
// break;
// case InterfaceName.PARAMETER_DISCHARGE:
// // 出院
// result = analysisService.getHIPMessageServerResult(message, ArchiveMaster.class, InterfaceName.PARAMETER_DISCHARGE);
// break;
// case InterfaceName.PARAMETER_TRANSFER:
// // 转科
// result = analysisService.getHIPMessageServerResult(message, ArchiveMaster.class, InterfaceName.PARAMETER_TRANSFER);
// break;
// case InterfaceName.PARAMETER_CANCELLATION_DISCHARGE:
// // 取消入院
// result = analysisService.getHIPMessageServerResult(message, ArchiveMaster.class, InterfaceName.PARAMETER_CANCELLATION_DISCHARGE);
// break;
// case InterfaceName.PARAMETER_PATIENT_UPDATE:
// // 患者信息更新
// result = analysisService.getHIPMessageServerResult(message, ArchiveMaster.class, InterfaceName.PARAMETER_PATIENT_UPDATE);
// break;
// }
// }
// }catch (Exception e){
// return "";
// }
// ---------------------------------------这里捕捉 参数为空
return result ;
// return result;
return null ;
}
@Override
public String InpSummary ( String xmlStr ) {
String outContent = "失败" ;
String remark = null ;
String masterId = null ;
try {
// 1、定义变量
long startTime = System . currentTimeMillis ( ) ;
boolean flag = false ;
Integer result = 0 ;
Date xmlCreateTime = null ;
MessageLog messageLog = new MessageLog ( xmlStr , InterfaceName . INP_SUMMARY , new Date ( ) );
MessageLog messageLog = new MessageLog ( xmlStr , InterfaceName . INP_SUMMARY , new Date ( ) ,WebserviceId . INP_SUMMARY );
MedicalRecordHomepageCache medicalRecordHomepageCache = null ;
// if(messageService.countByInputContentAndInterfaceName(xmlStr,InterfaceName.INP_SUMMARY) == 0){
messageService . save ( messageLog ) ;
// 2、 解析
MedicalRecordHomepage medicalRecordHomepage = XMLUtils . xmlStrToObject1 ( xmlStr , MedicalRecordHomepage . class ) ;
if ( medicalRecordHomepage ! = null ) {
medicalRecordHomepageCache = medicalRecordHomepageCacheService . handleMedicalRecordHomepageCache ( medicalRecordHomepage ) ;
if ( medicalRecordHomepageCache ! = null ) {
if ( medicalRecordHomepageCacheService . save ( medicalRecordHomepageCache ) ) {
flag = true ;
result = 1 ;
} else {
messageLog . setRemark ( "已保存" ) ;
if ( medicalRecordHomepage . getCommonTable ( ) ! = null ) {
if ( medicalRecordHomepage . getCommonTable ( ) . getYZY001 ( ) ! = null & &
medicalRecordHomepage . getCommonTable ( ) . getYZY002 ( ) ! = null ) {
ArchiveMaster archiveMaster = archiveMasterService . findByPatientIdAndVisitIdAndIsValid ( medicalRecordHomepage . getCommonTable ( ) . getYZY001 ( ) , medicalRecordHomepage . getCommonTable ( ) . getYZY002 ( ) ) ;
if ( archiveMaster ! = null ) {
masterId = archiveMaster . getId ( ) ;
medicalRecordHomepageCache = medicalRecordHomepageCacheService . handleMedicalRecordHomepageCache ( archiveMaster . getId ( ) , medicalRecordHomepage ) ;
if ( medicalRecordHomepageCache ! = null ) {
if ( medicalRecordHomepageCacheService . save ( medicalRecordHomepageCache ) ) {
flag = true ;
result = 1 ;
} else {
remark = "病案首页缓存保存出错" ;
}
} else {
remark = "构建病案首页缓存出错" ;
}
} else {
remark = "患者ID或者住院次数为空" ;
}
} else {
remark = "没有入院信息" ;
}
} else {
messageLog . setRemark ( "没有入院信息。。。" ) ;
remark = "解析公共表失败" ;
}
} else {
messageLog . setRemark ( "消息解析错误。。。" ) ;
remark = "消息解析错误" ;
}
outContent = AnalysisService . getReturnResult ( flag ) ;
messageLog . setRemark ( remark ) ;
outContent = AnalysisService . getReturnResult ( flag , remark ) ;
// 更新日志表
long endTime = System . currentTimeMillis ( ) ;
messageLog . setValue ( outContent , result , medicalRecordHomepageCache = = null ? null : JSON . toJSONString ( medicalRecordHomepageCache ) , xmlCreateTime , ( endTime - startTime ) , new Date ( ) , AliasName . MEDICAL_RECORD_HOMEPAGE ) ;
messageLog . setValue ( masterId, outContent, result , medicalRecordHomepageCache = = null ? null : JSON . toJSONString ( medicalRecordHomepageCache ) , xmlCreateTime , ( endTime - startTime ) , new Date ( ) , AliasName . MEDICAL_RECORD_HOMEPAGE , remark ) ;
messageService . save ( messageLog ) ;
logger . info ( "-----------------------病案首页总用时长:" + ( endTime - startTime ) + "-------------------------" ) ;
} catch ( Exception e ) {
try {
outContent = AnalysisService . getReturnResult ( false );
outContent = AnalysisService . getReturnResult ( false ,remark );
logger . error ( "出错咯!错误信息为{},以及错误行数为:{}" , e , e . getStackTrace ( ) [ 0 ] ) ;
} catch ( Exception ex ) {
logger . error ( "出错咯!错误信息为{},以及错误行数为:{}" , ex , ex . getStackTrace ( ) [ 0 ] ) ;
@ -139,6 +162,7 @@ public class HomepageDictionaryImpl implements HomepageDictionary {
@Override
public String handNumbnessReport ( String xmlStr ) {
String outContent = null ;
String remark = null ;
try {
// 手麻系统 判断消息是否传过 存入消息 然后解析消息 然后存到附属表
// 1、定义变量
@ -147,7 +171,7 @@ public class HomepageDictionaryImpl implements HomepageDictionary {
String type = "" , patientMainStr = null , archiveMasterId = null ;
long startTime = System . currentTimeMillis ( ) ;
Date xmlCreateTime = null ;
MessageLog messageLog = new MessageLog ( xmlStr , InterfaceName . HANDNUMBNESS_REPORT , new Date ( ) );
MessageLog messageLog = new MessageLog ( xmlStr , InterfaceName . HANDNUMBNESS_REPORT , new Date ( ) ,WebserviceId . HANDNUMBNESS_REPORT );
messageService . save ( messageLog ) ;
// 2、 解析
@ -155,30 +179,26 @@ public class HomepageDictionaryImpl implements HomepageDictionary {
if ( messageDto ! = null ) {
archiveMasterId = messageService . getArchiveMasterId ( messageDto . getInpNo ( ) , messageDto . getVisitId ( ) ) ;
if ( archiveMasterId ! = null ) {
messageLog . setMasterId ( archiveMasterId ) ;
// 保存消息从属表
patientMainStr = JSON . toJSONString ( new PatientMainDto ( messageDto . getInpNo ( ) , messageDto . getVisitId ( ) ) , SerializerFeature . WriteMapNullValue ) ;
//if (messageDto.getType().equals("麻醉单")) {
type = AliasName . HANDNUMBNESS_REPORT ;
// } else {
// type = AliasName.OTHER;
// }
messageDto . setType ( type ) ;
result = 1 ;
flag = true ;
type = messageDto . getType ( ) ;
xmlCreateTime = messageDto . getXmlCreateTime ( ) ;
} else {
messageLog. setRemark ( "没有入院消息。。" ) ;
remark = "没有入院消息" ;
}
} else {
messageLog. setRemark ( "传过来的消息无法解析。。" ) ;
remark = "传过来的消息无法解析" ;
}
// 4、判断是否成功 失败 的原因 我们插入报错 然后无法解析xml 传入参数为null
outContent = AnalysisService . getReturnResult ( flag );
outContent = AnalysisService . getReturnResult ( flag ,remark );
// 更新日志表
long endTime = System . currentTimeMillis ( ) ;
messageLog . setValue ( outContent, result , messageDto = = null ? "" : JSON . toJSONString ( messageDto ) , xmlCreateTime , ( endTime - startTime ) , new Date ( ) , type ) ;
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 ) ) ) ;
@ -186,7 +206,7 @@ public class HomepageDictionaryImpl implements HomepageDictionary {
logger . info ( "-----------------------麻醉记录单总用时长:" + ( endTime - startTime ) + "-------------------------" ) ;
} catch ( Exception e ) {
try {
outContent = AnalysisService . getReturnResult ( false );
outContent = AnalysisService . getReturnResult ( false ,remark );
logger . error ( "出错咯!错误信息为{},以及错误行数为:{}" , e , e . getStackTrace ( ) [ 0 ] ) ;
} catch ( Exception ex ) {
logger . error ( "出错咯!错误信息为{},以及错误行数为:{}" , ex , ex . getStackTrace ( ) [ 0 ] ) ;
@ -198,70 +218,71 @@ public class HomepageDictionaryImpl implements HomepageDictionary {
@Override
public String ICUReport ( String xmlStr ) {
String outContent = "失败" ;
String remark = null ;
MessageLog messageLog = new MessageLog ( xmlStr , InterfaceName . ICU_REPORT , new Date ( ) , WebserviceId . ICU_REPORT ) ;
try {
// 1、定义变量
long startTime = System . currentTimeMillis ( ) ;
boolean flag = false ;
Integer result = 0 ;
String type = "" , patientMainStr = null , archiveMasterId = null ,remark = null ;
String type = "" , patientMainStr = null , archiveMasterId = null ;
Date xmlCreateTime = null ;
MessageLog messageLog = new MessageLog ( xmlStr , InterfaceName . ICU_REPORT , new Date ( ) ) ;
messageService . save ( messageLog ) ;
// 2、 解析
MessageDto messageDto = XMLUtils . xpathToBean ( xmlStr , ICUReport . class , InterfaceName . ICU_REPORT ) ;
if ( messageDto ! = null ) {
archiveMasterId = messageService . getArchiveMasterId ( messageDto . getInpNo ( ) , messageDto . getVisitId ( ) ) ;
if ( archiveMasterId ! = null ) {
String addFlag = messageDto . getAddFlag ( ) ;
messageDto . setApplyId ( messageDto . getDetailType ( ) + "~" + messageDto . getApplyId ( ) ) ;
//3、做增删改 增删新增从属 删除不新增
if ( Objects . equals ( addFlag , "insert" ) | | Objects . equals ( addFlag , "update" ) | | Objects . equals ( addFlag , "delete" ) ) {
ArchiveDetail archiveDetail = archiveDetailService . isExit ( archiveMasterId , messageDto . getType ( ) , messageDto . getSource ( ) , messageDto . getApplyId ( ) ) ;
if ( archiveDetail = = null & & ! Objects . equals ( addFlag , "insert" ) ) {
remark = messageDto . getDetailType ( ) + "没有生成对应的文件不能" + addFlag ;
} else {
if ( Objects . equals ( addFlag , "delete" ) ) {
if ( ! archiveDetailService . delete ( archiveDetail . getId ( ) ) ) {
remark = messageDto . getSubType ( ) + "删除失败!" ;
} else {
remark = "ok" ;
}
}
}
} else {
remark = "标识不包括insert/update/delete" ;
}
// String addFlag = messageDto.getAddFlag();
// //做增删改 增删新增从属 删除不新增
// if(Objects.equals(addFlag,"insert") || Objects.equals(addFlag,"update") || Objects.equals(addFlag,"delete")){
// ArchiveDetail archiveDetail = archiveDetailService.isExit(archiveMasterId, messageDto.getType(), messageDto.getSource(), messageDto.getApplyId());
// if(archiveDetail == null && !Objects.equals(addFlag,"insert")){
// remark = messageDto.getDetailType()+"没有生成对应的文件不能"+ addFlag;
// }else{
// if(Objects.equals(addFlag,"delete")){
// if(!archiveDetailService.delete(archiveDetail.getId())){
// remark = messageDto.getSubType()+"删除失败!";
// }else{
// remark = "ok";
// }
// }
// }
//
// }else{
// remark = "标识不包括insert/update/delete";
// }
// 保存消息从属表
patientMainStr = JSON . toJSONString ( new PatientMainDto ( messageDto . getInpNo ( ) , messageDto . getVisitId ( ) ) , SerializerFeature . WriteMapNullValue ) ;
xmlCreateTime = messageDto . getXmlCreateTime ( ) ;
result = 1 ;
type = messageDto . getType ( ) ;
flag = true ;
} else {
messageLog. setRemark ( "没有入院消息。。" ) ;
remark = "没有入院消息" ;
}
} else {
messageLog. setRemark ( "传过来的消息无法解析。。" ) ;
remark = "传过来的消息无法解析" ;
}
// 4、判断是否成功 失败 的原因 我们插入报错 然后无法解析xml 传入参数为null
outContent = AnalysisService . getReturnResult ( flag ) ;
// 更新日志表
if ( remark = = null | | remark . equals ( "ok" ) ) {
result = 1 ;
flag = true ;
patientMainStr = JSON . toJSONString ( new PatientMainDto ( messageDto . getInpNo ( ) , messageDto . getVisitId ( ) ) , SerializerFeature . WriteMapNullValue ) ;
}
outContent = AnalysisService . getReturnResult ( flag , remark ) ;
long endTime = System . currentTimeMillis ( ) ;
messageLog . setValue ( outContent , result , messageDto = = null ? "" : JSON . toJSONString ( messageDto ) , xmlCreateTime , ( endTime - startTime ) , new Date ( ) , type ) ;
messageLog . setValue ( archiveMasterId , outContent , result , messageDto = = null ? "" : JSON . toJSONString ( messageDto ) , xmlCreateTime , ( endTime - startTime ) , new Date ( ) , type , remark ) ;
// 4、更新消息表
messageService . save ( messageLog ) ;
if ( flag ) {
// 5、根据条件插入消息从属表
if ( remark = = null & & flag ) {
messageSubordinateService . save ( new MessageSubordinate ( messageLog . getId ( ) , patientMainStr , JSON . toJSONString ( messageLog ) ) ) ;
}
logger . info ( "-----------------------ICU报告总用时长:" + ( endTime - startTime ) + "-------------------------" ) ;
} catch ( Exception e ) {
try {
outContent = AnalysisService . getReturnResult ( false );
logger . error ( "出错咯! 错误信息为{},以及错误行数为:{}" , e , e . getStackTrace ( ) [ 0 ] ) ;
outContent = AnalysisService . getReturnResult ( false ,remark );
logger . error ( "出错咯! 消息id为{}, 错误信息为{},以及错误行数为:{}" , messageLog . getId ( ) , e , e . getStackTrace ( ) [ 0 ] ) ;
} catch ( Exception ex ) {
logger . error ( "出错咯! 错误信息为{},以及错误行数为:{}" , ex, ex . getStackTrace ( ) [ 0 ] ) ;
logger . error ( "出错咯! 消息id为{}, 错误信息为{},以及错误行数为:{}" , messageLog. getId ( ) , e , e . getStackTrace ( ) [ 0 ] ) ;
}
}
return outContent ;
@ -270,15 +291,16 @@ public class HomepageDictionaryImpl implements HomepageDictionary {
@Override
public String BloodTransfusionUrl ( String xmlStr ) {
String outContent = "失败" ;
String remark = null ;
try {
// 1、定义变量
boolean flag = false ;
Integer result = 0 ;
String type = "" ;
String patientMainStr = null , remark = null , archiveMasterId = null ;
String patientMainStr = null , archiveMasterId = null ;
long startTime = System . currentTimeMillis ( ) ;
Date xmlCreateTime = null ;
MessageLog messageLog = new MessageLog ( xmlStr , InterfaceName . BLOODAPPLY_REPORT , new Date ( ) );
MessageLog messageLog = new MessageLog ( xmlStr , InterfaceName . BLOODAPPLY_REPORT , new Date ( ) ,WebserviceId . BLOODAPPLY_REPORT );
messageService . save ( messageLog ) ;
// 2、 解析
@ -286,8 +308,6 @@ public class HomepageDictionaryImpl implements HomepageDictionary {
if ( messageDto ! = null ) {
archiveMasterId = messageService . getArchiveMasterId ( messageDto . getInpNo ( ) , messageDto . getVisitId ( ) ) ;
if ( archiveMasterId ! = null ) {
// 判断是否作废
if ( Objects . equals ( messageDto . getAddFlag ( ) , "DELETE" ) ) {
remark = archiveDetailService . updateFlag ( messageDto . getApplyId ( ) ) ;
@ -297,34 +317,31 @@ public class HomepageDictionaryImpl implements HomepageDictionary {
patientMainStr = JSON . toJSONString ( patientMainDto , SerializerFeature . WriteMapNullValue ) ;
}
if ( remark ! = null ) {
messageLog . setRemark ( remark ) ;
} else {
if ( remark = = null ) {
result = 1 ;
flag = true ;
}
} else {
messageLog. setRemark ( "没有入院消息。。" ) ;
remark = "没有入院消息" ;
}
xmlCreateTime = messageDto . getXmlCreateTime ( ) ;
type = messageDto . getType ( ) ;
} else {
messageLog. setRemark ( "传过来的消息无法解析。。" ) ;
remark = "传过来的消息无法解析" ;
}
outContent = AnalysisService . getReturnResult ( flag );
outContent = AnalysisService . getReturnResult ( flag ,remark );
// 更新日志表
long endTime = System . currentTimeMillis ( ) ;
messageLog . setValue ( outContent, result , messageDto = = null ? "" : JSON . toJSONString ( messageDto ) , xmlCreateTime , ( endTime - startTime ) , new Date ( ) , type ) ;
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 ) ) ) ;
}
logger . info ( "-----------------------输血单总用时长:" + ( endTime - startTime ) + "-------------------------" ) ;
} catch ( Exception e ) {
try {
logger . error ( "出错咯!错误信息为{},以及错误行数为:{}" , e , e . getStackTrace ( ) [ 0 ] ) ;
return AnalysisService . getReturnResult ( false );
return AnalysisService . getReturnResult ( false ,remark );
} catch ( Exception e1 ) {
logger . error ( "出错咯!错误信息为{},以及错误行数为:{}" , e1 , e1 . getStackTrace ( ) [ 0 ] ) ;
}