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 新增三级标题
private String detailType;
public MessageDto() {
}

@ -84,24 +84,30 @@ public class MessageLog {
* xml
*/
private Long xmlExecutionTime;
//
// /*
// * 2020-3-20 新增masterId
// * */
// private String masterId;
/*
* id
* */
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.interfaceName = interfaceName;
this.createTime = createTime;
this.webserviceInfo = webserviceInfo;
}
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.result = result;
this.outJson = outJson;
@ -112,15 +118,15 @@ public class MessageLog {
this.remark = remark;
}
public void setValue(String outContent, Integer result, String outJson, Date xmlCreateTime, Long executionTime, Date endTime, String type) {
this.outContent = outContent;
this.result = result;
this.outJson = outJson;
this.xmlCreateTime = xmlCreateTime;
this.executionTime = executionTime;
this.endTime = endTime;
this.type = type;
}
// public void setValue(String outContent, Integer result, String outJson, Date xmlCreateTime, Long executionTime, Date endTime, String type) {
// this.outContent = outContent;
// this.result = result;
// this.outJson = outJson;
// this.xmlCreateTime = xmlCreateTime;
// this.executionTime = executionTime;
// this.endTime = endTime;
// this.type = type;
// }
public void setValue1(String outContent, Integer result, Long executionTime, Date endTime) {
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.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]);
}

@ -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")
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")
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
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());
// 只要没有传过 才会插入新的
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{
public static String getReturnResult(boolean resultCode,String remark) throws Exception{
OutPara outPara = new OutPara();
if (!resultCode) {
outPara.setRESULT_CODE(false);
outPara.setRESULT_CONTENT("失败");
outPara.setRESULT_CONTENT(remark);
} else {
outPara.setRESULT_CODE(true);
outPara.setRESULT_CONTENT("成功");
@ -228,27 +60,4 @@ public class AnalysisService {
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);
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;
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;
import com.ann.demo.entity.filing.ArchiveDetail;
import com.ann.demo.entity.filing.dto.MessageDto;
import com.ann.demo.entity.interfaceEntity.ArchiveMaster;
import com.ann.demo.repository.ArchiveDetailRepository;
@ -37,4 +38,18 @@ public class ArchiveDetailServiceImpl implements ArchiveDetailService {
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
public MedicalRecordHomepageCache handleMedicalRecordHomepageCache(MedicalRecordHomepage medicalRecordHomepage) throws Exception{
public MedicalRecordHomepageCache handleMedicalRecordHomepageCache(String masterId,MedicalRecordHomepage medicalRecordHomepage) throws Exception{
// 查询主键 姓名简写 是否手术 是否过敏药物
String masterId = null;
MedicalRecordHomepageCache medicalRecordHomepageCache = null;
CommonTable commonTable = medicalRecordHomepage.getCommonTable();
if (commonTable != null) {
if (commonTable.getYZY002() != null && commonTable.getYZY001() != null) {
ArchiveMaster archiveMaster = archiveMasterService.findByPatientIdAndVisitIdAndIsValid(commonTable.getYZY001(), commonTable.getYZY002());
if (archiveMaster != null) {
masterId = archiveMaster.getId();
if (masterId != null) {
List<OperDetail> operDetails = medicalRecordHomepage.getOperDetails();
List<DiagDetail> diagDetails = medicalRecordHomepage.getDiagDetails();
CommonTable1 commonTable1 = medicalRecordHomepage.getCommonTable1();
if (commonTable1 != null) {
// 处理公共表
commonTable.setMasterId(masterId);
// 将 患者id 赋值给 病案号
commonTable.setInpatient_no(commonTable.getYZY001());
if (operDetails != null) {
if (operDetails.size() > 0) {
commonTable.setIsOper("有");
} else {
commonTable.setIsOper("没有");
}
} else {
commonTable.setIsOper("没有");
}
if (commonTable.getAAC003() != null) {
commonTable.setNameCym(PinYinUtils.getPingYin(commonTable.getAAC003()));
}
String akc023 = commonTable.getAKC023();
if (akc023 != null) {
if (akc023.indexOf("岁") != -1) {
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) {
commonTable.setAge_day(Integer.parseInt(akc023.substring(0, akc023.indexOf("天"))));
}
}
// 处理公共表1
if (commonTable1.getYZY046() != null) {
commonTable1.setIs_medicine("是");
} else {
commonTable1.setIs_medicine("否");
}
commonTable1.setMasterId(masterId);
// 保存手术表
if (operDetails != null) {
for (OperDetail operDetail : operDetails) {
operDetail.setMasterId(masterId);
}
}
// 诊断表
if (diagDetails != null) {
for (DiagDetail diagDetail : diagDetails) {
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;
List<OperDetail> operDetails = medicalRecordHomepage.getOperDetails();
List<DiagDetail> diagDetails = medicalRecordHomepage.getDiagDetails();
CommonTable1 commonTable1 = medicalRecordHomepage.getCommonTable1();
if (commonTable1 != null) {
// 处理公共表
commonTable.setMasterId(masterId);
// 将 患者id 赋值给 病案号
commonTable.setInpatient_no(commonTable.getYZY001());
if (operDetails != null) {
if (operDetails.size() > 0) {
commonTable.setIsOper("有");
} else {
commonTable.setIsOper("没有");
}
} else {
commonTable.setIsOper("没有");
}
if (commonTable.getAAC003() != null) {
commonTable.setNameCym(PinYinUtils.getPingYin(commonTable.getAAC003()));
}
String akc023 = commonTable.getAKC023();
if (akc023 != null) {
if (akc023.indexOf("岁") != -1) {
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) {
commonTable.setAge_day(Integer.parseInt(akc023.substring(0, akc023.indexOf("天"))));
}
}
// 处理公共表1
if (commonTable1.getYZY046() != null) {
commonTable1.setIs_medicine("是");
} else {
commonTable1.setIs_medicine("否");
}
commonTable1.setMasterId(masterId);
// 保存手术表
if (operDetails != null) {
for (OperDetail operDetail : operDetails) {
operDetail.setMasterId(masterId);
}
}
// 诊断表
if (diagDetails != null) {
for (DiagDetail diagDetail : diagDetails) {
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;
}
}
return null;

Loading…
Cancel
Save