diff --git a/src/main/java/com/ann/demo/controller/TestController.java b/src/main/java/com/ann/demo/controller/TestController.java index ce91006..77f9038 100644 --- a/src/main/java/com/ann/demo/controller/TestController.java +++ b/src/main/java/com/ann/demo/controller/TestController.java @@ -42,6 +42,7 @@ public class TestController { Objects.equals(interfaceForm.getInterfaceName(), "BloodTransfusionUrl") || Objects.equals(interfaceForm.getInterfaceName(), InterfaceName.DOCTOR_DATA) || Objects.equals(interfaceForm.getInterfaceName(), InterfaceName.NURSE_DATA) || + Objects.equals(interfaceForm.getInterfaceName(), InterfaceName.HANDLE_MEDICAL_ADVICE) || Objects.equals(interfaceForm.getInterfaceName(), InterfaceName.PARAMETER_EXAMAPPLYSTATECHANGE)) { objects = client.invoke(interfaceForm.getInterfaceName(), interfaceForm.getContent()); } else { diff --git a/src/main/java/com/ann/demo/entity/constant/AliasName.java b/src/main/java/com/ann/demo/entity/constant/AliasName.java index db5cd48..e8a8a3e 100644 --- a/src/main/java/com/ann/demo/entity/constant/AliasName.java +++ b/src/main/java/com/ann/demo/entity/constant/AliasName.java @@ -51,6 +51,11 @@ public class AliasName { // 出院召回 public static final String PARAMETER_DISCHARGE_BACK = "8"; + // 手动处理有问题的医嘱 + public static final String HANDLE_MEDICAL_ADVICE = "38"; + + + // 手麻 // public static final String HANDNUMBNESS_REPORT = "117"; diff --git a/src/main/java/com/ann/demo/entity/constant/InterfaceName.java b/src/main/java/com/ann/demo/entity/constant/InterfaceName.java index 11e000b..09cefbf 100644 --- a/src/main/java/com/ann/demo/entity/constant/InterfaceName.java +++ b/src/main/java/com/ann/demo/entity/constant/InterfaceName.java @@ -144,6 +144,6 @@ public class InterfaceName { //20200909 新增出院召回 public static final String PARAMETER_DISCHARGE_BACK = "CalPatientOutRequest"; - + public static final String HANDLE_MEDICAL_ADVICE = "HandleMedicalAdvice"; } diff --git a/src/main/java/com/ann/demo/entity/constant/WebserviceId.java b/src/main/java/com/ann/demo/entity/constant/WebserviceId.java index c5e59ed..04f25cc 100644 --- a/src/main/java/com/ann/demo/entity/constant/WebserviceId.java +++ b/src/main/java/com/ann/demo/entity/constant/WebserviceId.java @@ -124,6 +124,13 @@ public class WebserviceId { */ public static final String PARAMETER_DISCHARGE_BACK = "22"; + /** + * 20200909 出院召回 + */ + public static final String HANDLE_MEDICAL_ADVICE = "23"; + + + } diff --git a/src/main/java/com/ann/demo/entity/interfaceEntity/ArchiveMaster.java b/src/main/java/com/ann/demo/entity/interfaceEntity/ArchiveMaster.java index 7a8cd6c..d4b7224 100644 --- a/src/main/java/com/ann/demo/entity/interfaceEntity/ArchiveMaster.java +++ b/src/main/java/com/ann/demo/entity/interfaceEntity/ArchiveMaster.java @@ -151,6 +151,8 @@ public class ArchiveMaster { //2020-12-28 新增床号 private String bedNumber; + private String isScanning = "0"; + } diff --git a/src/main/java/com/ann/demo/entity/interfaceEntity/InterfaceHisCache.java b/src/main/java/com/ann/demo/entity/interfaceEntity/InterfaceHisCache.java index 7d9d3c8..35732ee 100644 --- a/src/main/java/com/ann/demo/entity/interfaceEntity/InterfaceHisCache.java +++ b/src/main/java/com/ann/demo/entity/interfaceEntity/InterfaceHisCache.java @@ -42,6 +42,8 @@ public class InterfaceHisCache { //2020-7-6 新增修改时间 private Date updateTime = new Date(); + private String createState; + public InterfaceHisCache(String inpNo, String visitId, String type) { this.inpNo = inpNo; diff --git a/src/main/java/com/ann/demo/interfaces/HomepageDictionary.java b/src/main/java/com/ann/demo/interfaces/HomepageDictionary.java index 626f16b..1c6f838 100644 --- a/src/main/java/com/ann/demo/interfaces/HomepageDictionary.java +++ b/src/main/java/com/ann/demo/interfaces/HomepageDictionary.java @@ -11,4 +11,6 @@ public interface HomepageDictionary { @WebMethod String HIPMessageServer(@WebParam(name = "action") String action, @WebParam(name = "message") String message); + @WebMethod + String HandleMedicalAdvice( @WebParam(name = "message") String message); } diff --git a/src/main/java/com/ann/demo/interfaces/impl/HomepageDictionaryImpl.java b/src/main/java/com/ann/demo/interfaces/impl/HomepageDictionaryImpl.java index d472e02..8d4e59c 100644 --- a/src/main/java/com/ann/demo/interfaces/impl/HomepageDictionaryImpl.java +++ b/src/main/java/com/ann/demo/interfaces/impl/HomepageDictionaryImpl.java @@ -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; + } } diff --git a/src/main/java/com/ann/demo/repository/InterfaceHisCacheRepository.java b/src/main/java/com/ann/demo/repository/InterfaceHisCacheRepository.java index 93be36f..b231c94 100644 --- a/src/main/java/com/ann/demo/repository/InterfaceHisCacheRepository.java +++ b/src/main/java/com/ann/demo/repository/InterfaceHisCacheRepository.java @@ -6,6 +6,7 @@ import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import javax.transaction.Transactional; +import java.util.Date; import java.util.List; public interface InterfaceHisCacheRepository extends JpaRepository { @@ -19,4 +20,9 @@ public interface InterfaceHisCacheRepository extends JpaRepository 0) + return null; + return "更新状态失败"; + } + } diff --git a/src/main/java/com/ann/demo/utils/XMLUtils.java b/src/main/java/com/ann/demo/utils/XMLUtils.java index 68823bb..e4a01b0 100644 --- a/src/main/java/com/ann/demo/utils/XMLUtils.java +++ b/src/main/java/com/ann/demo/utils/XMLUtils.java @@ -83,6 +83,12 @@ public class XMLUtils { @Value("${file.dischargeBackPath}") private String dischargeBackPathTemp; + // 手动处理有问题医嘱 + public static String handleMedicalAdvicePath; + @Value("${file.handleMedicalAdvicePath}") + private String handleMedicalAdvicePathTemp; + + @PostConstruct public void init() { @@ -94,6 +100,7 @@ public class XMLUtils { dieMedicalAdvicePath = dieMedicalAdvicePathTemp; bedManagerPath = bedManagerPathTemp; dischargeBackPath = dischargeBackPathTemp; + handleMedicalAdvicePath = handleMedicalAdvicePathTemp; } private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddhhmmss"); @@ -251,6 +258,9 @@ public class XMLUtils { case InterfaceName.PARAMETER_DISCHARGE_BACK: // 同步出院召回 messageDto = new MessageDto(ArchiveMaster.class.getName(), new ArchiveMaster(), AliasName.PARAMETER_DISCHARGE_BACK, dischargeBackPath, source); break; + case InterfaceName.HANDLE_MEDICAL_ADVICE: // 手动处理有问题医嘱 + messageDto = new MessageDto(ArchiveMaster.class.getName(), new ArchiveMaster(), AliasName.HANDLE_MEDICAL_ADVICE, handleMedicalAdvicePath, source); + break; } return messageDto; } @@ -266,4 +276,21 @@ public class XMLUtils { return null; } + /** + * 生成普通xml字符串 + */ + public static String generateXmlStr(OutPara outPara) throws Exception{ + Field[] fields = outPara.getClass().getDeclaredFields(); + // 创建XML + Document document = DocumentHelper.createDocument(); + Element response = document.addElement("RESPONSE"); + for (Field field : fields) { + field.setAccessible(true); + response + .addElement(field.getName()) + .addText(field.get(outPara).toString()); + } + return document.getRootElement().asXML(); + } + } \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index d5b53c7..84e03f5 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -55,3 +55,4 @@ file: dieMedicalAdvicePath: D:\\1\dieMedicalAdvice.properties bedManagerPath: D:\\1\bedManager.properties dischargeBackPath: D:\\1\dischargeBack.properties + handleMedicalAdvicePath: D:\\1\handleMedicalAdvice.properties diff --git a/src/main/resources/templates/demo.html b/src/main/resources/templates/demo.html index 023df02..2432d04 100644 --- a/src/main/resources/templates/demo.html +++ b/src/main/resources/templates/demo.html @@ -32,6 +32,7 @@ +