1、新增Message_Log masterId 以及webserviceInfo

2、新增是否入院判断
master
leijx 5 years ago
parent c375a0786b
commit a52230abe0

@ -0,0 +1,121 @@
package com.ann.demo.entity.constant;
import lombok.Data;
@Data
public class WebserviceId {
/**
* V3
*/
public static final String HIP_MESSAGE_SERVER = "HIPMessageServer";
/**
*
*/
public static final String PARAMETER_REPORT = "1";
/**
*
*/
public static final String PARAMETER_EXAMAPPLY = "2";
/**
* 2019-10-21
*
*/
public static final String PARAMETER_EXAMAPPLYSTATECHANGE = "3";
/**
* 2020-3-3
*
*/
public static final String PARAMETER_VERIFICATIONEXAMAPPLY = "4";
/**
*
*/
public static final String PARAMETER_ADMISSION = "5";
/**
*
*/
public static final String PARAMETER_DISCHARGE = "6";
/**
*
*/
public static final String PARAMETER_TRANSFER = "7";
/**
*
*/
public static final String PARAMETER_CANCELLATION_DISCHARGE = "8";
/**
*
*/
public static final String PARAMETER_PATIENT_UPDATE = "9";
/**
* lis
*/
public static final String INSPECTION_REPORT_NAME = "10";
/**
* 2019-12-23
*
*/
public static final String PARAMETER_INSPECTIONAPPLY = "11";
/**
* 2020-2-28
*
*/
public static final String PARAMETER_VERIFICATIONINSPECTIONAPPLY = "12";
/**
*
*/
public static final String DOCTOR_DATA = "13";
/**
* 2
*/
public static final String NURSE_DATA = "14";
/**
*
*/
public static final String INP_SUMMARY = "15";
/**
*
*/
public static final String HANDNUMBNESS_REPORT = "16";
/**
* ICU
*/
public static final String ICU_REPORT = "17";
/**
*
*/
public static final String BLOODAPPLY_REPORT = "18";
/**
* ReceiveDict
*/
public static final String RECEIVE_DICT = "19";
/**
* 20200609
*/
public static final String BED_MANAGER = "20";
/**
* 20200609
*/
public static final String DIE_MEDICAL_ADVICE = "21";
}

@ -54,7 +54,6 @@ public class MessageDto<T> {
// 2019-11-28 新增三级标题 // 2019-11-28 新增三级标题
private String detailType; private String detailType;
public MessageDto() { public MessageDto() {
} }

@ -84,24 +84,30 @@ public class MessageLog {
* xml * xml
*/ */
private Long xmlExecutionTime; private Long xmlExecutionTime;
//
// /* /*
// * 2020-3-20 新增masterId * id
// * */ * */
// private String masterId; private String masterId;
/*
* 2020-3-20 webserviceInfo
* */
private String webserviceInfo;
// ---------------------------时间怎么变成了毫秒数 // ---------------------------时间怎么变成了毫秒数
public MessageLog(String inputContent, String interfaceName, Date createTime) { public MessageLog(String inputContent, String interfaceName, Date createTime,String webserviceInfo) {
this.inputContent = inputContent; this.inputContent = inputContent;
this.interfaceName = interfaceName; this.interfaceName = interfaceName;
this.createTime = createTime; this.createTime = createTime;
this.webserviceInfo = webserviceInfo;
} }
public MessageLog() { public MessageLog() {
} }
public void setValue(String outContent, Integer result, String outJson, Date xmlCreateTime, Long executionTime, Date endTime, String type, String remark) { public void setValue(String masterId,String outContent, Integer result, String outJson, Date xmlCreateTime, Long executionTime, Date endTime, String type, String remark) {
this.masterId = masterId;
this.outContent = outContent; this.outContent = outContent;
this.result = result; this.result = result;
this.outJson = outJson; this.outJson = outJson;
@ -112,15 +118,15 @@ public class MessageLog {
this.remark = remark; this.remark = remark;
} }
public void setValue(String outContent, Integer result, String outJson, Date xmlCreateTime, Long executionTime, Date endTime, String type) { // public void setValue(String outContent, Integer result, String outJson, Date xmlCreateTime, Long executionTime, Date endTime, String type) {
this.outContent = outContent; // this.outContent = outContent;
this.result = result; // this.result = result;
this.outJson = outJson; // this.outJson = outJson;
this.xmlCreateTime = xmlCreateTime; // this.xmlCreateTime = xmlCreateTime;
this.executionTime = executionTime; // this.executionTime = executionTime;
this.endTime = endTime; // this.endTime = endTime;
this.type = type; // this.type = type;
} // }
public void setValue1(String outContent, Integer result, Long executionTime, Date endTime) { public void setValue1(String outContent, Integer result, Long executionTime, Date endTime) {
this.outContent = outContent; this.outContent = outContent;

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

@ -19,10 +19,17 @@ public interface ArchiveDetailRepository extends JpaRepository<ArchiveDetail, St
@Query(value = "UPDATE ArchiveDetail o set o.flag = 1 where o.id = ?1 and o.flag = 0") @Query(value = "UPDATE ArchiveDetail o set o.flag = 1 where o.id = ?1 and o.flag = 0")
public Integer updateFlag(String id); public Integer updateFlag(String id);
@Query("select o.id from ArchiveDetail o where o.applyId = ?1 and o.masterID = ?2 and o.flag = 0")
public String findIdByApplyIdAndMasterID(String applyId, String masterId);
@Query("select o.id from ArchiveDetail o where o.applyId = ?1 and o.flag = 0") @Query("select o.id from ArchiveDetail o where o.applyId = ?1 and o.flag = 0")
public String findIdByApplyId(String applyId); public String findIdByApplyId(String applyId);
@Query("select count (o) from ArchiveDetail o where o.masterID = ?1 and o.assortID = ?2 and o.source=?3 and (o.applyId = ?4 and o.applyId is not null) and o.flag = 0")
Integer countByMasterIDAndAssortIDAndSourceAndApplyId(String masterId, String AssortID, String source, String applyId);
public ArchiveDetail findByMasterIDAndAssortIDAndSourceAndApplyIdAndFlag(String masterId, String AssortID, String source, String applyId,String flag);
@Transactional
@Modifying
@Query(value = "UPDATE ArchiveDetail o set o.flag = 3 where o.id = ?1 and o.flag = 0 ")
Integer updateFlagById(String id);
} }

@ -47,180 +47,12 @@ public class AnalysisService {
@Autowired @Autowired
MedicalRecordHomepageCacheService medicalRecordHomepageCacheService; MedicalRecordHomepageCacheService medicalRecordHomepageCacheService;
/**
* 2019-7-8
*
* @Param xmlStr
* @Param tClass
* @Param parameter
* xml
*/
public String getHIPMessageServerResult(String message, Class tClass, String parameter) throws Exception{
long startTime = System.currentTimeMillis();
String textContent = "成功啦~", type = "", typeCodeValue = "AE", outContent = "", patientMainStr = "";
Date xmlCreateTime = null;
Integer result = 0;
long endTime = 0;
MessageLog messageLog = new MessageLog(message, InterfaceName.HIP_MESSAGE_SERVER, new Date()); public static String getReturnResult(boolean resultCode,String remark) throws Exception{
// 只要没有传过 才会插入新的
messageService.save(messageLog);
MessageDto messageDto = XMLUtils.xpathToBean(message, tClass, parameter);
if (messageDto != null) {
String textContentTemp = null;
if (Objects.equals(messageDto.getEntity(), ArchiveMaster.class.getName())) { // 患者信息
ArchiveMaster archiveMaster = JSON.parseObject(messageDto.getObject().toString(), ArchiveMaster.class);
textContentTemp = changeArchiveMaster(archiveMaster, messageDto.getAddFlag(), messageDto.getType());
}
if (textContentTemp != null) {
textContent = textContentTemp;
} else {
xmlCreateTime = messageDto.getXmlCreateTime();
type = messageDto.getType();
typeCodeValue = "AA";
result = 1;
}
} else {
textContent = "传过来的消息无法解析。。";
}
outContent = XMLUtils.generateV3XmlStr(typeCodeValue, textContent);
endTime = System.currentTimeMillis();
messageLog.setValue(outContent, result, messageDto == null ? "" : JSON.toJSONString(messageDto), xmlCreateTime, (endTime - startTime), new Date(), type, textContent);
messageService.save(messageLog);
logger.info("-----------------------" + type + ":" + (endTime - startTime) + "-------------------------");
return outContent;
}
private String changeArchiveMaster(ArchiveMaster archiveMaster, String changeStatus, String aliasName) {
String textContent = null;
if (changeStatus != null || aliasName != null) {
String archiveMasterId = archiveMasterService.findArchiveMasterId(archiveMaster.getPatientId(), archiveMaster.getVisitId(), archiveMaster.getInpNo());
if (archiveMasterId != null) {
// 如果不是新增 都会查询id
archiveMaster.setId(archiveMasterId);
if (Objects.equals(changeStatus, "update")) { // 更新患者住院信息
archiveMasterService.save(archiveMaster);
} else if (Objects.equals(changeStatus, "delete")) { // 取消入院
archiveMasterService.updateArchiveMasterValid(archiveMasterId);
}
if (aliasName != null) {
if (aliasName.equals(AliasName.TRANSFER_RECORD)) { // 转科
archiveMasterService.transferDepartment(archiveMaster);
} else if (aliasName.equals(AliasName.DISCHARGE_RECORD)) { // 出院
archiveMasterService.discharge(archiveMaster);
}else if(aliasName.equals(AliasName.PATIENT_UPDATE)){
if(!archiveMasterService.updateArchiveMaster(archiveMaster)){
textContent = "患者更新失败";
}
}
}
} else {
if (Objects.equals(changeStatus, "new")) { // 新增患者住院信息
archiveMasterService.save(archiveMaster);
} else {
textContent = "没有入院信息";
}
}
} else {
textContent = "信息解析错误";
}
return textContent;
}
private String changeExamApply(ExamApply examApply) {
String textContent = null;
Integer count = examApplyService.countExamApply(examApply.getApplyId());
// 如果 id存在 说明已经存了 就不能再存了
if (count > 0) {
if (Objects.equals(examApply.getResult(), "delete")) {
if (!examApplyService.updateExamApplyIsValid(examApply.getApplyId())) {
textContent = "检查申请单删除失败了";
}
} else {
textContent = "已经存在申请单了";
}
} else {
if (Objects.equals(examApply.getResult(), "new")) {
// 转换
if (examApply.getReportType() != null) {
switch (examApply.getReportType()) {
case "病理":
examApply.setReportType(AliasName.PATHOLOGY_REPORT);
break;
case "超声":
examApply.setReportType(AliasName.ULTRASONIC_REPORT);
break;
case "心电":
examApply.setReportType(AliasName.EKG_REPORT);
break;
case "放射":
examApply.setReportType(AliasName.RADIATION_REPORT);
break;
}
}
examApplyService.save(examApply);
} else {
textContent = "该申请单不存在:" + examApply.getApplyId();
}
}
return textContent;
}
private String changeApply(ExamApply examApply) {
String textContent = null;
ExamApply examApplyTemp = examApplyService.findExamApply(examApply.getApplyId());
if(examApplyTemp != null){
if (Objects.equals(examApply.getResult(), "delete")) {
if (!examApplyService.updateExamApplyIsValid(examApply.getApplyId())) {
textContent = "申请单删除失败了";
}
}else if (Objects.equals(examApply.getIsOpen(), "F")) {
examApplyTemp.setIsValid(1);
examApplyTemp.setIsOpen("F");
examApplyService.save(examApplyTemp);
}else {
textContent = "该申请单已存在";
}
}else{
if (Objects.equals(examApply.getResult(), "new")) {
if (examApply.getReportType() != null) {
switch (examApply.getReportType()) {
case "病理":
examApply.setReportType(AliasName.PATHOLOGY_REPORT);
break;
case "超声":
examApply.setReportType(AliasName.ULTRASONIC_REPORT);
break;
case "心电":
examApply.setReportType(AliasName.EKG_REPORT);
break;
case "放射":
examApply.setReportType(AliasName.RADIATION_REPORT);
break;
default:
examApply.setReportType(AliasName.INSPECTION_REPORT);
break;
}
}
examApplyService.save(examApply);
} else {
textContent = "该申请单不存在";
}
}
return textContent;
}
public static String getReturnResult(boolean resultCode) throws Exception{
OutPara outPara = new OutPara(); OutPara outPara = new OutPara();
if (!resultCode) { if (!resultCode) {
outPara.setRESULT_CODE(false); outPara.setRESULT_CODE(false);
outPara.setRESULT_CONTENT("失败"); outPara.setRESULT_CONTENT(remark);
} else { } else {
outPara.setRESULT_CODE(true); outPara.setRESULT_CODE(true);
outPara.setRESULT_CONTENT("成功"); outPara.setRESULT_CONTENT("成功");
@ -228,27 +60,4 @@ public class AnalysisService {
return XMLUtils.generateXmlStr(outPara); return XMLUtils.generateXmlStr(outPara);
} }
public void delete() {
try {
String type = "", patientMainStr = "", json = "";
MessageDto messageDto = null;
System.out.println("我开始查询数据了。。。。");
List<MessageLog> messageLogs = messageService.findAllMessage();
for (MessageLog messageLog : messageLogs) {
MedicalRecordHomepage medicalRecordHomepage = XMLUtils.xmlStrToObject1(messageLog.getInputContent(), MedicalRecordHomepage.class);
if (medicalRecordHomepage != null) {
MedicalRecordHomepageCache medicalRecordHomepageCache = medicalRecordHomepageCacheService.handleMedicalRecordHomepageCache(medicalRecordHomepage);
if (medicalRecordHomepageCache != null) {
if (medicalRecordHomepageCacheService.save(medicalRecordHomepageCache)) {
}
}
}
}
}catch (Exception e){
}
}
} }

@ -11,6 +11,7 @@ public interface ArchiveDetailService {
public String updateFlag(String applyId); public String updateFlag(String applyId);
boolean delete(String id);
// ArchiveDetail isExit(String archiveMasterId, String type, String source, String applyId); ArchiveDetail isExit(String archiveMasterId, String type, String source, String applyId);
} }

@ -15,6 +15,6 @@ public interface MedicalRecordHomepageCacheService {
void delete(String masterId) throws Exception; void delete(String masterId) throws Exception;
public MedicalRecordHomepageCache handleMedicalRecordHomepageCache(MedicalRecordHomepage medicalRecordHomepage) throws Exception; public MedicalRecordHomepageCache handleMedicalRecordHomepageCache(String masterId,MedicalRecordHomepage medicalRecordHomepage) throws Exception;
} }

@ -1,5 +1,6 @@
package com.ann.demo.service.impl; package com.ann.demo.service.impl;
import com.ann.demo.entity.filing.ArchiveDetail;
import com.ann.demo.entity.filing.dto.MessageDto; import com.ann.demo.entity.filing.dto.MessageDto;
import com.ann.demo.entity.interfaceEntity.ArchiveMaster; import com.ann.demo.entity.interfaceEntity.ArchiveMaster;
import com.ann.demo.repository.ArchiveDetailRepository; import com.ann.demo.repository.ArchiveDetailRepository;
@ -37,4 +38,18 @@ public class ArchiveDetailServiceImpl implements ArchiveDetailService {
return "applyId不存在。。。。"; return "applyId不存在。。。。";
} }
} }
@Override
public ArchiveDetail isExit(String id, String type, String source, String applyId) {
if (archiveDetailRepository.countByMasterIDAndAssortIDAndSourceAndApplyId(id, type, source, applyId) > 0)
return archiveDetailRepository.findByMasterIDAndAssortIDAndSourceAndApplyIdAndFlag(id, type, source, applyId,"0");
return null;
}
@Override
public boolean delete(String id) {
if(archiveDetailRepository.updateFlagById(id) > 0)
return true;
return false;
}
} }

@ -69,86 +69,77 @@ public class MedicalRecordHomepageCacheServiceImpl implements MedicalRecordHomep
} }
@Override @Override
public MedicalRecordHomepageCache handleMedicalRecordHomepageCache(MedicalRecordHomepage medicalRecordHomepage) throws Exception{ public MedicalRecordHomepageCache handleMedicalRecordHomepageCache(String masterId,MedicalRecordHomepage medicalRecordHomepage) throws Exception{
// 查询主键 姓名简写 是否手术 是否过敏药物 // 查询主键 姓名简写 是否手术 是否过敏药物
String masterId = null;
MedicalRecordHomepageCache medicalRecordHomepageCache = null; MedicalRecordHomepageCache medicalRecordHomepageCache = null;
CommonTable commonTable = medicalRecordHomepage.getCommonTable(); CommonTable commonTable = medicalRecordHomepage.getCommonTable();
if (commonTable != null) { if (commonTable != null) {
if (commonTable.getYZY002() != null && commonTable.getYZY001() != null) { List<OperDetail> operDetails = medicalRecordHomepage.getOperDetails();
ArchiveMaster archiveMaster = archiveMasterService.findByPatientIdAndVisitIdAndIsValid(commonTable.getYZY001(), commonTable.getYZY002()); List<DiagDetail> diagDetails = medicalRecordHomepage.getDiagDetails();
if (archiveMaster != null) { CommonTable1 commonTable1 = medicalRecordHomepage.getCommonTable1();
masterId = archiveMaster.getId();
if (masterId != null) { if (commonTable1 != null) {
List<OperDetail> operDetails = medicalRecordHomepage.getOperDetails(); // 处理公共表
List<DiagDetail> diagDetails = medicalRecordHomepage.getDiagDetails(); commonTable.setMasterId(masterId);
CommonTable1 commonTable1 = medicalRecordHomepage.getCommonTable1(); // 将 患者id 赋值给 病案号
commonTable.setInpatient_no(commonTable.getYZY001());
if (commonTable1 != null) { if (operDetails != null) {
// 处理公共表 if (operDetails.size() > 0) {
commonTable.setMasterId(masterId); commonTable.setIsOper("有");
// 将 患者id 赋值给 病案号 } else {
commonTable.setInpatient_no(commonTable.getYZY001()); commonTable.setIsOper("没有");
if (operDetails != null) { }
if (operDetails.size() > 0) { } else {
commonTable.setIsOper("有"); commonTable.setIsOper("没有");
} else { }
commonTable.setIsOper("没有"); if (commonTable.getAAC003() != null) {
} commonTable.setNameCym(PinYinUtils.getPingYin(commonTable.getAAC003()));
} else { }
commonTable.setIsOper("没有"); String akc023 = commonTable.getAKC023();
} if (akc023 != null) {
if (commonTable.getAAC003() != null) { if (akc023.indexOf("岁") != -1) {
commonTable.setNameCym(PinYinUtils.getPingYin(commonTable.getAAC003())); commonTable.setAge(Integer.parseInt(akc023.substring(0, akc023.indexOf("岁"))));
} } else if (akc023.indexOf("月") != -1 && akc023.indexOf("岁") == -1) {
String akc023 = commonTable.getAKC023(); commonTable.setAge_month(Integer.parseInt(akc023.substring(0, akc023.indexOf("月"))));
if (akc023 != null) { } else if (akc023.indexOf("天") != -1 && akc023.indexOf("岁") == -1 && akc023.indexOf("月") == -1) {
if (akc023.indexOf("岁") != -1) { commonTable.setAge_day(Integer.parseInt(akc023.substring(0, akc023.indexOf("天"))));
commonTable.setAge(Integer.parseInt(akc023.substring(0, akc023.indexOf("岁")))); }
} else if (akc023.indexOf("月") != -1 && akc023.indexOf("岁") == -1) { }
commonTable.setAge_month(Integer.parseInt(akc023.substring(0, akc023.indexOf("月"))));
} else if (akc023.indexOf("天") != -1 && akc023.indexOf("岁") == -1 && akc023.indexOf("月") == -1) { // 处理公共表1
commonTable.setAge_day(Integer.parseInt(akc023.substring(0, akc023.indexOf("天")))); if (commonTable1.getYZY046() != null) {
} commonTable1.setIs_medicine("是");
} } else {
commonTable1.setIs_medicine("否");
// 处理公共表1 }
if (commonTable1.getYZY046() != null) { commonTable1.setMasterId(masterId);
commonTable1.setIs_medicine("是");
} else {
commonTable1.setIs_medicine("否"); // 保存手术表
} if (operDetails != null) {
commonTable1.setMasterId(masterId); for (OperDetail operDetail : operDetails) {
operDetail.setMasterId(masterId);
}
// 保存手术表 }
if (operDetails != null) { // 诊断表
for (OperDetail operDetail : operDetails) { if (diagDetails != null) {
operDetail.setMasterId(masterId); for (DiagDetail diagDetail : diagDetails) {
} diagDetail.setMasterId(masterId);
} // 20200528 取出院诊断的主要诊断
// 诊断表 if(Objects.equals(diagDetail.getYZY203(),"3") && Objects.equals(diagDetail.getYZY201(),1) ){
if (diagDetails != null) { medicalRecordHomepage.getOtherData().setMainDiagCode(diagDetail.getAKC196());
for (DiagDetail diagDetail : diagDetails) { commonTable.setMainDiagName(diagDetail.getAKC185());
diagDetail.setMasterId(masterId);
// 20200528 取出院诊断的主要诊断
if(Objects.equals(diagDetail.getYZY203(),"3") && Objects.equals(diagDetail.getYZY201(),1) ){
medicalRecordHomepage.getOtherData().setMainDiagCode(diagDetail.getAKC196());
commonTable.setMainDiagName(diagDetail.getAKC185());
}
}
}
medicalRecordHomepage.setCommonTable(commonTable);
medicalRecordHomepage.setCommonTable1(commonTable1);
medicalRecordHomepage.setDiagDetails(diagDetails);
medicalRecordHomepage.setOperDetails(operDetails);
medicalRecordHomepageCache = new MedicalRecordHomepageCache(masterId, JSON.toJSONString(medicalRecordHomepage));
return medicalRecordHomepageCache;
} }
} }
} }
medicalRecordHomepage.setCommonTable(commonTable);
medicalRecordHomepage.setCommonTable1(commonTable1);
medicalRecordHomepage.setDiagDetails(diagDetails);
medicalRecordHomepage.setOperDetails(operDetails);
medicalRecordHomepageCache = new MedicalRecordHomepageCache(masterId, JSON.toJSONString(medicalRecordHomepage));
return medicalRecordHomepageCache;
} }
} }
return null; return null;

Loading…
Cancel
Save