From 1d456fdc2050d5fea02fc8a13189075eab5e5429 Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Mon, 22 Jan 2024 15:31:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=82=87=E5=BA=86=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E4=BA=BA=E6=B0=91=E5=8C=BB=E9=99=A2=E6=B7=BB=E5=8A=A0=E4=B8=B4?= =?UTF-8?q?=E5=BA=8A=E6=8F=90=E4=BA=A4=E7=94=B5=E5=AD=90=E7=97=85=E5=8E=86?= =?UTF-8?q?=E5=92=8C=E6=8A=A4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data-config/message-forward-config.json | 4 +- src/main/java/com/docus/server/CxfConfig.java | 14 +- .../busservice/SubmitBusinessService.java | 29 +++ .../message/busservice/ZqBusinessService.java | 10 ++ .../impl/ZqBusinessServiceImpl.java | 167 ++++++++++++++++++ .../ZhaoQingFirstHospitalController.java | 43 +++++ .../ZqWsNurseSubmitMessageConvert.java | 116 ++++++++++++ .../ZqWsRecordSubmitMessageConvert.java | 114 ++++++++++++ .../message/dto/TbasicQrPreciseCondition.java | 37 ++++ .../server/message/dto/ZqRecordSubmitDTO.java | 42 +++++ .../message/dto/ZqWsNurseSubmitDTO.java | 39 ++++ .../server/message/mapper/TBasicMapper.java | 4 + .../validate/ZqRecordSubmitValidate.java | 22 +++ .../validate/ZqWsNurseSubmitValidate.java | 22 +++ src/main/resources/logback.xml | 1 + src/main/resources/mapper/TBasicMapper.xml | 26 +++ 16 files changed, 681 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/docus/server/message/busservice/SubmitBusinessService.java create mode 100644 src/main/java/com/docus/server/message/busservice/ZqBusinessService.java create mode 100644 src/main/java/com/docus/server/message/busservice/impl/ZqBusinessServiceImpl.java create mode 100644 src/main/java/com/docus/server/message/controller/ZhaoQingFirstHospitalController.java create mode 100644 src/main/java/com/docus/server/message/converters/ZqWsNurseSubmitMessageConvert.java create mode 100644 src/main/java/com/docus/server/message/converters/ZqWsRecordSubmitMessageConvert.java create mode 100644 src/main/java/com/docus/server/message/dto/TbasicQrPreciseCondition.java create mode 100644 src/main/java/com/docus/server/message/dto/ZqRecordSubmitDTO.java create mode 100644 src/main/java/com/docus/server/message/dto/ZqWsNurseSubmitDTO.java create mode 100644 src/main/java/com/docus/server/message/validate/ZqRecordSubmitValidate.java create mode 100644 src/main/java/com/docus/server/message/validate/ZqWsNurseSubmitValidate.java diff --git a/data-config/message-forward-config.json b/data-config/message-forward-config.json index f15cc6a..fff8adb 100644 --- a/data-config/message-forward-config.json +++ b/data-config/message-forward-config.json @@ -1,12 +1,12 @@ [ { "method": "WS_RECORD_SUBMIT", - "urls": ["http://127.0.0.1:9314/message/receive/wsRecordSubmit/do"], + "urls": ["http://127.0.0.1:9314/hospital/zqFirstRy/wsRecordSubmit/do"], "errorResult": "0成功", "messageDataType": 1 } , { "method": "WS_NURS_SUBMIT", - "urls": ["http://127.0.0.1:9314/message/receive/wsNurseSubmit/do"], + "urls": ["http://127.0.0.1:9314/hospital/zqFirstRy/wsNurseSubmit/do"], "errorResult": "1系统内部错误!", "messageDataType": 1 } diff --git a/src/main/java/com/docus/server/CxfConfig.java b/src/main/java/com/docus/server/CxfConfig.java index c2b554c..40b476d 100644 --- a/src/main/java/com/docus/server/CxfConfig.java +++ b/src/main/java/com/docus/server/CxfConfig.java @@ -58,11 +58,11 @@ public class CxfConfig { return endpoint; } - @Bean - @Qualifier("wsRecordSubmitEndPoint") - public Endpoint wsRecordSubmitEndPoint() { - EndpointImpl endpoint = new EndpointImpl(springBus(), sdWebServiceUnifyMessageService); - endpoint.publish("/WS_RECORD_SUBMIT"); - return endpoint; - } +// @Bean +// @Qualifier("wsRecordSubmitEndPoint") +// public Endpoint wsRecordSubmitEndPoint() { +// EndpointImpl endpoint = new EndpointImpl(springBus(), sdWebServiceUnifyMessageService); +// endpoint.publish("/WS_RECORD_SUBMIT"); +// return endpoint; +// } } diff --git a/src/main/java/com/docus/server/message/busservice/SubmitBusinessService.java b/src/main/java/com/docus/server/message/busservice/SubmitBusinessService.java new file mode 100644 index 0000000..371225c --- /dev/null +++ b/src/main/java/com/docus/server/message/busservice/SubmitBusinessService.java @@ -0,0 +1,29 @@ +package com.docus.server.message.busservice; + +import com.docus.server.message.dto.Message; +import com.docus.server.message.dto.MessageResponse; + +/** + * 临床提交业务接口 + * + * @author YongBin Wen + * @date 2024/1/22 13:50 + */ +public interface SubmitBusinessService { + /** + * 临床电子病历提交信息 + * + * @param message 信息 + * @return 消息处理结果 + */ + MessageResponse recordSubmitHandle(Message message); + + /** + * 临床护理提交信息 + * + * @param message 信息 + * @return 消息处理结果 + */ + MessageResponse wsNurseSubmitHandle(Message message); + +} diff --git a/src/main/java/com/docus/server/message/busservice/ZqBusinessService.java b/src/main/java/com/docus/server/message/busservice/ZqBusinessService.java new file mode 100644 index 0000000..06ec770 --- /dev/null +++ b/src/main/java/com/docus/server/message/busservice/ZqBusinessService.java @@ -0,0 +1,10 @@ +package com.docus.server.message.busservice; +/** + * 肇庆第一人民医院业务接口 + * @date 2024/1/22 13:51 + * @author YongBin Wen + */ +public interface ZqBusinessService extends SubmitBusinessService{ + + +} diff --git a/src/main/java/com/docus/server/message/busservice/impl/ZqBusinessServiceImpl.java b/src/main/java/com/docus/server/message/busservice/impl/ZqBusinessServiceImpl.java new file mode 100644 index 0000000..1393484 --- /dev/null +++ b/src/main/java/com/docus/server/message/busservice/impl/ZqBusinessServiceImpl.java @@ -0,0 +1,167 @@ +package com.docus.server.message.busservice.impl; + +import com.docus.core.util.DateUtil; +import com.docus.core.util.Func; +import com.docus.infrastructure.core.exception.BaseException; +import com.docus.infrastructure.web.api.CommonResult; +import com.docus.infrastructure.web.api.ResultCode; +import com.docus.server.message.busservice.ZqBusinessService; +import com.docus.server.message.config.CollectTaskConfig; +import com.docus.server.message.converters.ZqWsNurseSubmitMessageConvert; +import com.docus.server.message.converters.ZqWsRecordSubmitMessageConvert; +import com.docus.server.message.dto.*; +import com.docus.server.message.feign.dto.CompensateTasRequest; +import com.docus.server.message.feign.dto.HospitalSubmitNodeLogAddDTO; +import com.docus.server.message.feign.enums.HospitalSubmitNodeEnum; +import com.docus.server.message.feign.service.CollectTaskService; +import com.docus.server.message.feign.service.HospitalSubmitNodeServiceApi; +import com.docus.server.message.mapper.TBasicMapper; +import com.docus.server.message.validate.ZqRecordSubmitValidate; +import com.docus.server.message.validate.ZqWsNurseSubmitValidate; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 肇庆业务实现类 + * + * @author YongBin Wen + * @date 2024/1/22 13:58 + */ +@Slf4j +@Service("ZqBusinessService") +public class ZqBusinessServiceImpl implements ZqBusinessService { + + @Resource + private TBasicMapper tBasicMapper; + + @Resource + private HospitalSubmitNodeServiceApi hospitalSubmitNodeServiceApi; + + @Resource + private CollectTaskService collectTaskService; + + @Override + public MessageResponse recordSubmitHandle(Message message) { + try { + CollectTaskConfig.TaskConfig taskConfig = CollectTaskConfig.getTaskConfig("WS_RECORD_SUBMIT"); + if (taskConfig == null || Func.isEmpty(taskConfig.getCollectorIds())) { + throw new RuntimeException("任务配置未配置采集器id,WS_RECORD_SUBMIT"); + } + ZqRecordSubmitDTO recordSubmitDto = ZqWsRecordSubmitMessageConvert.convert(message.getMessage()); + ZqRecordSubmitValidate.verifyRecordSubmitDTO(recordSubmitDto); + TbasicQrPreciseCondition condition = ZqWsRecordSubmitMessageConvert.convert(recordSubmitDto); + List patientIds = tBasicMapper.getPatientIdByPreciseConditions(condition); + verifyPatientIds(patientIds); + + String submitDate = recordSubmitDto.getSubmitDate(); + + // 添加提交记录 + HospitalSubmitNodeLogAddDTO nodeLogAddDTO = new HospitalSubmitNodeLogAddDTO(); + nodeLogAddDTO.setPatientId(patientIds.get(0)); + nodeLogAddDTO.setContent(new String[]{submitDate}); + nodeLogAddDTO.setSubmitNodeEnum(HospitalSubmitNodeEnum.EMR); + nodeLogAddDTO.setCreater("电子病历提交"); + nodeLogAddDTO.setCreaterName("电子病历提交"); + hospitalSubmitNodeServiceApi.addLog(nodeLogAddDTO); + + tBasicMapper.insertOrUpdateDoctorSubmitTime(patientIds.get(0), Func.parseDate(submitDate, DateUtil.PATTERN_DATETIME)); + + compensateTask("电子病历提交",patientIds, taskConfig.getCollectorIds()); + tBasicMapper.updateEmrSubmitState(patientIds.get(0), 1); + return new MessageResponse(ResultCode.SUCCESS.getCode(), success()); + } catch (BaseException baseException) { + log.error(baseException.getMessage(), baseException); + // 业务异常,不希望重试,直接消息返回错误 + MessageResponse response = new MessageResponse(ResultCode.FAILED.getCode(), fail(baseException.getMessage())); + response.setRetry(0); + return response; + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + // 不可知的错误,希望重试 + MessageResponse response = new MessageResponse(ResultCode.FAILED.getCode(), fail("系统错误")); + response.setRetry(1); + return response; + } + } + + @Override + public MessageResponse wsNurseSubmitHandle(Message message) { + try { + CollectTaskConfig.TaskConfig taskConfig = CollectTaskConfig.getTaskConfig("WS_NURS_SUBMIT"); + if (taskConfig == null || Func.isEmpty(taskConfig.getCollectorIds())) { + throw new RuntimeException("任务配置未配置采集器id,WS_NURS_SUBMIT"); + } + ZqWsNurseSubmitDTO nurseSubmitDTO = ZqWsNurseSubmitMessageConvert.convert(message.getMessage()); + ZqWsNurseSubmitValidate.verifyNurseSubmitDTO(nurseSubmitDTO); + TbasicQrPreciseCondition condition = ZqWsNurseSubmitMessageConvert.convert(nurseSubmitDTO); + List patientIds = tBasicMapper.getPatientIdByPreciseConditions(condition); + verifyPatientIds(patientIds); + + String submitDate = nurseSubmitDTO.getSubmitDate(); + // 添加提交内容 + HospitalSubmitNodeLogAddDTO nodeLogAddDTO = new HospitalSubmitNodeLogAddDTO(); + nodeLogAddDTO.setPatientId(patientIds.get(0)); + nodeLogAddDTO.setContent(new String[]{submitDate}); + nodeLogAddDTO.setSubmitNodeEnum(HospitalSubmitNodeEnum.NURSE); + nodeLogAddDTO.setCreater("护理提交"); + nodeLogAddDTO.setCreaterName("护理提交"); + hospitalSubmitNodeServiceApi.addLog(nodeLogAddDTO); + + tBasicMapper.insertOrUpdateNurseSubmitTime(patientIds.get(0), Func.parseDate(submitDate, DateUtil.PATTERN_DATETIME)); + compensateTask("护理提交",patientIds, taskConfig.getCollectorIds()); + return new MessageResponse(ResultCode.SUCCESS.getCode(), success()); + } catch (BaseException baseException) { + log.error(baseException.getMessage(), baseException); + // 业务异常,不希望重试,直接消息返回错误 + MessageResponse response = new MessageResponse(ResultCode.FAILED.getCode(), fail(baseException.getMessage())); + response.setRetry(0); + return response; + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + // 不可知的错误,希望重试 + MessageResponse response = new MessageResponse(ResultCode.FAILED.getCode(), fail("系统错误")); + response.setRetry(1); + return response; + } + } + + private void verifyPatientIds(List patientIds) { + if (Func.isEmpty(patientIds)) { + throw new BaseException("系统无此患者!"); + } + if (patientIds.size() > 1) { + throw new BaseException("系统中患者有多个,无法确认!"); + } + } + + private void compensateTask(String source,List patientIds, List collectorIds) { + log.info("{},补偿任务 patientIds:{} collectId:{}",source, patientIds, collectorIds); + CompensateTasRequest dto = new CompensateTasRequest(); + dto.setPatientIds(patientIds); + dto.setCollectorIds(collectorIds); + dto.setPriority(3); + CommonResult result = collectTaskService.compensateTask(dto); + log.info("{},补偿任务结果:{}", source,Func.toJson(result)); + } + + private String success() { + return "" + + "" + + "0" + + "成功" + + "" + + ""; + } + + private String fail(String message) { + return "" + + "" + + "1" + + "" + message + "" + + "" + + ""; + } +} diff --git a/src/main/java/com/docus/server/message/controller/ZhaoQingFirstHospitalController.java b/src/main/java/com/docus/server/message/controller/ZhaoQingFirstHospitalController.java new file mode 100644 index 0000000..2095320 --- /dev/null +++ b/src/main/java/com/docus/server/message/controller/ZhaoQingFirstHospitalController.java @@ -0,0 +1,43 @@ +package com.docus.server.message.controller; + +import com.docus.server.message.busservice.ZqBusinessService; +import com.docus.server.message.dto.Message; +import com.docus.server.message.dto.MessageResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author WYBDEV + */ +@Api("肇庆第一人民医院") +@RestController +@Slf4j +@RequestMapping("/hospital/zqFirstRy") +public class ZhaoQingFirstHospitalController { + + @Resource + private ZqBusinessService zqBusinessService; + + + @PostMapping("/wsRecordSubmit/do") + @ApiOperation("肇庆第一人医电子病历提交消息接收") + public MessageResponse receiveWsRecordSubmitMessage(@RequestBody Message message) { + log.info("肇庆第一人医电子病历提交消息接收:{}", message); + return zqBusinessService.recordSubmitHandle(message); + } + + @PostMapping("/wsNurseSubmit/do") + @ApiOperation("肇庆第一人医护理提交消息接收") + public MessageResponse receiveWsNurseSubmitMessage(@RequestBody Message message) { + log.info("肇庆第一人医护理提交消息接收:{}", message); + return zqBusinessService.wsNurseSubmitHandle(message); + } + +} diff --git a/src/main/java/com/docus/server/message/converters/ZqWsNurseSubmitMessageConvert.java b/src/main/java/com/docus/server/message/converters/ZqWsNurseSubmitMessageConvert.java new file mode 100644 index 0000000..3ec6acd --- /dev/null +++ b/src/main/java/com/docus/server/message/converters/ZqWsNurseSubmitMessageConvert.java @@ -0,0 +1,116 @@ +package com.docus.server.message.converters; + +import com.docus.core.util.DateUtil; +import com.docus.core.util.Func; +import com.docus.infrastructure.core.exception.BaseException; +import com.docus.server.message.dto.TbasicQrPreciseCondition; +import com.docus.server.message.dto.ZqWsNurseSubmitDTO; +import com.docus.server.message.util.XmlUtil; +import org.w3c.dom.Node; + +import java.util.Date; + +public class ZqWsNurseSubmitMessageConvert { + public static ZqWsNurseSubmitDTO convert(String str) { + String jzh = null; + String inpatientNo = null; + String name = null; + String submitDate = null; + Integer admissTimes = null; + String admissDate = null; + String disDate = null; + XmlUtil xmlUtil = XmlUtil.of(str); + try { + // 住院流水号 + Node inHospNoNode = xmlUtil.getNode("/Request/Msg/INHOSP_NO"); + jzh = inHospNoNode.getTextContent(); + } catch (Exception ex) { + throw new BaseException("解析 住院流水号 出错!"); + } + + try { + // 住院号 + Node inHospIndexNoNode = xmlUtil.getNode("/Request/Msg/INHOSP_INDEX_NO"); + inpatientNo = inHospIndexNoNode.getTextContent(); + } catch (Exception ex) { + throw new BaseException("解析 住院号 出错!"); + } + try { + // 住院次数 + Node visitNoNode = xmlUtil.getNode("/Request/Msg/VISIT_NO"); + String admissTimesStr = visitNoNode.getTextContent(); + if (Func.isNotBlank(admissTimesStr)) { + admissTimes = Integer.parseInt(admissTimesStr.trim()); + } + } catch (Exception ex) { + throw new BaseException("解析 住院次数 出错!"); + } + try { + // 患者姓名 + Node nameNode = xmlUtil.getNode("/Request/Msg/NAME"); + name = nameNode.getTextContent(); + } catch (Exception ex) { + throw new BaseException("解析 姓名 出错!"); + } + try { + // 提交时间 + Node admissTimeNode = xmlUtil.getNode("/Request/Msg/ADMISS_TIME"); + String admissTime = admissTimeNode.getTextContent(); + if (Func.isNotBlank(admissTime)) { + Date admissDateTime = Func.parseDate(admissTime.trim(), DateUtil.PATTERN_DATETIME); + admissDate = Func.formatDateTime(admissDateTime); + } + + } catch (Exception ex) { + throw new BaseException("解析 入院时间 出错!"); + } + try { + // 提交时间 + Node disTimeNode = xmlUtil.getNode("/Request/Msg/DIS_TIME"); + String disTime = disTimeNode.getTextContent(); + if (Func.isNotBlank(disTime)) { + Date disDateTime = Func.parseDate(disTime.trim(), DateUtil.PATTERN_DATETIME); + disDate = Func.formatDateTime(disDateTime); + } + + } catch (Exception ex) { + throw new BaseException("解析 出院时间 出错!"); + } + + try { + // 提交时间 + Node submitTimeNode = xmlUtil.getNode("/Request/Msg/SUBMIT_TIME"); + String submitTime = submitTimeNode.getTextContent(); + Date submitDateTime = Func.parseDate(submitTime.trim(), DateUtil.PATTERN_DATETIME); + submitDate = Func.formatDateTime(submitDateTime); + } catch (Exception ex) { + throw new BaseException("解析 提交时间 出错!"); + } + + ZqWsNurseSubmitDTO nurseSubmitDTO = new ZqWsNurseSubmitDTO(); + nurseSubmitDTO.setJzh(jzh); + nurseSubmitDTO.setInpatientNo(inpatientNo); + nurseSubmitDTO.setAdmissTimes(admissTimes); + nurseSubmitDTO.setName(name); + nurseSubmitDTO.setAdmissDate(admissDate); + nurseSubmitDTO.setDisDate(disDate); + nurseSubmitDTO.setSubmitDate(submitDate); + return nurseSubmitDTO; + } + + + public static TbasicQrPreciseCondition convert(ZqWsNurseSubmitDTO dto) { + if (dto == null) { + return null; + } + TbasicQrPreciseCondition condition = new TbasicQrPreciseCondition(); + condition.setJzh(dto.getJzh()); + condition.setInpatientNo(dto.getInpatientNo()); + condition.setAdmissTimes(dto.getAdmissTimes()); + condition.setAdmissDate(dto.getAdmissDate()); + condition.setDisDate(dto.getDisDate()); + condition.setName(dto.getName()); + return condition; + } + +} diff --git a/src/main/java/com/docus/server/message/converters/ZqWsRecordSubmitMessageConvert.java b/src/main/java/com/docus/server/message/converters/ZqWsRecordSubmitMessageConvert.java new file mode 100644 index 0000000..7892d58 --- /dev/null +++ b/src/main/java/com/docus/server/message/converters/ZqWsRecordSubmitMessageConvert.java @@ -0,0 +1,114 @@ +package com.docus.server.message.converters; + +import com.docus.core.util.DateUtil; +import com.docus.core.util.Func; +import com.docus.infrastructure.core.exception.BaseException; +import com.docus.server.message.dto.TbasicQrPreciseCondition; +import com.docus.server.message.dto.ZqRecordSubmitDTO; +import com.docus.server.message.util.XmlUtil; +import org.w3c.dom.Node; + +import java.util.Date; + +public class ZqWsRecordSubmitMessageConvert { + public static ZqRecordSubmitDTO convert(String str) { + String jzh = null; + String inpatientNo = null; + String name = null; + String submitDate = null; + Integer admissTimes = null; + String admissDate = null; + String disDate = null; + XmlUtil xmlUtil = XmlUtil.of(str); + try { + // 住院流水号 + Node inHospNoNode = xmlUtil.getNode("/Request/Msg/INHOSP_NO"); + jzh = inHospNoNode.getTextContent(); + } catch (Exception ex) { + throw new BaseException("解析 住院流水号 出错!"); + } + + try { + // 住院号 + Node inHospIndexNoNode = xmlUtil.getNode("/Request/Msg/INHOSP_INDEX_NO"); + inpatientNo = inHospIndexNoNode.getTextContent(); + } catch (Exception ex) { + throw new BaseException("解析 住院号 出错!"); + } + try { + // 住院次数 + Node visitNoNode = xmlUtil.getNode("/Request/Msg/VISIT_NO"); + String admissTimesStr = visitNoNode.getTextContent(); + if (Func.isNotBlank(admissTimesStr)) { + admissTimes = Integer.parseInt(admissTimesStr.trim()); + } + } catch (Exception ex) { + throw new BaseException("解析 住院次数 出错!"); + } + try { + // 患者姓名 + Node nameNode = xmlUtil.getNode("/Request/Msg/NAME"); + name = nameNode.getTextContent(); + } catch (Exception ex) { + throw new BaseException("解析 姓名 出错!"); + } + try { + // 提交时间 + Node admissTimeNode = xmlUtil.getNode("/Request/Msg/ADMISS_TIME"); + String admissTime = admissTimeNode.getTextContent(); + if (Func.isNotBlank(admissTime)) { + Date admissDateTime = Func.parseDate(admissTime.trim(), DateUtil.PATTERN_DATETIME); + admissDate = Func.formatDateTime(admissDateTime); + } + + } catch (Exception ex) { + throw new BaseException("解析 入院时间 出错!"); + } + try { + // 提交时间 + Node disTimeNode = xmlUtil.getNode("/Request/Msg/DIS_TIME"); + String disTime = disTimeNode.getTextContent(); + if (Func.isNotBlank(disTime)) { + Date disDateTime = Func.parseDate(disTime.trim(), DateUtil.PATTERN_DATETIME); + disDate = Func.formatDateTime(disDateTime); + } + + } catch (Exception ex) { + throw new BaseException("解析 出院时间 出错!"); + } + + try { + // 提交时间 + Node submitTimeNode = xmlUtil.getNode("/Request/Msg/SUBMIT_TIME"); + String submitTime = submitTimeNode.getTextContent(); + Date submitDateTime = Func.parseDate(submitTime.trim(), DateUtil.PATTERN_DATETIME); + submitDate = Func.formatDateTime(submitDateTime); + } catch (Exception ex) { + throw new BaseException("解析 提交时间 出错!"); + } + + ZqRecordSubmitDTO recordSubmitDTO = new ZqRecordSubmitDTO(); + recordSubmitDTO.setJzh(jzh); + recordSubmitDTO.setInpatientNo(inpatientNo); + recordSubmitDTO.setAdmissTimes(admissTimes); + recordSubmitDTO.setName(name); + recordSubmitDTO.setAdmissDate(admissDate); + recordSubmitDTO.setDisDate(disDate); + recordSubmitDTO.setSubmitDate(submitDate); + return recordSubmitDTO; + } + + public static TbasicQrPreciseCondition convert(ZqRecordSubmitDTO dto) { + if (dto==null) { + return null; + } + TbasicQrPreciseCondition condition = new TbasicQrPreciseCondition(); + condition.setJzh(dto.getJzh()); + condition.setInpatientNo(dto.getInpatientNo()); + condition.setAdmissTimes(dto.getAdmissTimes()); + condition.setAdmissDate(dto.getAdmissDate()); + condition.setDisDate(dto.getDisDate()); + condition.setName(dto.getName()); + return condition; + } +} diff --git a/src/main/java/com/docus/server/message/dto/TbasicQrPreciseCondition.java b/src/main/java/com/docus/server/message/dto/TbasicQrPreciseCondition.java new file mode 100644 index 0000000..2811fc8 --- /dev/null +++ b/src/main/java/com/docus/server/message/dto/TbasicQrPreciseCondition.java @@ -0,0 +1,37 @@ +package com.docus.server.message.dto; + +import lombok.Data; + +/** + * 病案基础信息查询精准条件,都采用 等于 的匹配方式 + * + * @author YongBin Wen + * @date 2024/1/22 14:54 + */ +@Data +public class TbasicQrPreciseCondition { + /** + * 住院流水号/记账号 + */ + private String jzh; + /** + * 住院号 + */ + private String inpatientNo; + /** + * 住院次数 + */ + private Integer admissTimes; + /** + * 患者姓名 + */ + private String name; + /** + * 入院时间 yyyy-MM-dd HH:mm:ss + */ + private String admissDate; + /** + * 出院时间 yyyy-MM-dd HH:mm:ss + */ + private String disDate; +} diff --git a/src/main/java/com/docus/server/message/dto/ZqRecordSubmitDTO.java b/src/main/java/com/docus/server/message/dto/ZqRecordSubmitDTO.java new file mode 100644 index 0000000..af64620 --- /dev/null +++ b/src/main/java/com/docus/server/message/dto/ZqRecordSubmitDTO.java @@ -0,0 +1,42 @@ +package com.docus.server.message.dto; + +import lombok.Data; + +/** + * 肇庆第一人民医院电子病历提交信息 + * + * @author wyb + */ +@Data +public class ZqRecordSubmitDTO { + /** + * 住院流水号/记账号 + */ + private String jzh; + /** + * 住院号 + */ + private String inpatientNo; + /** + * 住院次数 + */ + private Integer admissTimes; + /** + * 患者姓名 + */ + private String name; + /** + * 入院时间 yyyy-MM-dd HH:mm:ss + */ + private String admissDate; + /** + * 出院时间 yyyy-MM-dd HH:mm:ss + */ + private String disDate; + /** + * 提交时间 yyyy-MM-dd HH:mm:ss + */ + private String submitDate; + + +} \ No newline at end of file diff --git a/src/main/java/com/docus/server/message/dto/ZqWsNurseSubmitDTO.java b/src/main/java/com/docus/server/message/dto/ZqWsNurseSubmitDTO.java new file mode 100644 index 0000000..15e87e3 --- /dev/null +++ b/src/main/java/com/docus/server/message/dto/ZqWsNurseSubmitDTO.java @@ -0,0 +1,39 @@ +package com.docus.server.message.dto; + +import lombok.Data; +/** + * 肇庆第一人民医院临床护理提交信息 + * + * @author wyb + */ +@Data +public class ZqWsNurseSubmitDTO { + /** + * 住院流水号/记账号 + */ + private String jzh; + /** + * 住院号 + */ + private String inpatientNo; + /** + * 住院次数 + */ + private Integer admissTimes; + /** + * 患者姓名 + */ + private String name; + /** + * 入院时间 yyyy-MM-dd HH:mm:ss + */ + private String admissDate; + /** + * 出院时间 yyyy-MM-dd HH:mm:ss + */ + private String disDate; + /** + * 提交时间 yyyy-MM-dd HH:mm:ss + */ + private String submitDate; +} \ No newline at end of file diff --git a/src/main/java/com/docus/server/message/mapper/TBasicMapper.java b/src/main/java/com/docus/server/message/mapper/TBasicMapper.java index 1b87892..d895d15 100644 --- a/src/main/java/com/docus/server/message/mapper/TBasicMapper.java +++ b/src/main/java/com/docus/server/message/mapper/TBasicMapper.java @@ -1,6 +1,7 @@ package com.docus.server.message.mapper; +import com.docus.server.message.dto.TbasicQrPreciseCondition; import com.docus.server.message.entity.MaternalInfantRelationship; import com.docus.server.message.entity.TBasic; import org.apache.ibatis.annotations.Mapper; @@ -13,6 +14,9 @@ import java.util.List; public interface TBasicMapper { List getPatientIdsByInpatientNoAndTimes(@Param("inpatientNo") String inHospIndexNo, @Param("admissTimes") Integer visitNo); + List getPatientIdByPreciseConditions(@Param("condition")TbasicQrPreciseCondition condition); + + /** * 更新医生提交时间 * diff --git a/src/main/java/com/docus/server/message/validate/ZqRecordSubmitValidate.java b/src/main/java/com/docus/server/message/validate/ZqRecordSubmitValidate.java new file mode 100644 index 0000000..002f84e --- /dev/null +++ b/src/main/java/com/docus/server/message/validate/ZqRecordSubmitValidate.java @@ -0,0 +1,22 @@ +package com.docus.server.message.validate; + +import com.docus.core.util.Func; +import com.docus.infrastructure.core.exception.BaseException; +import com.docus.server.message.dto.ZqRecordSubmitDTO; + +public class ZqRecordSubmitValidate { + public static void verifyRecordSubmitDTO(ZqRecordSubmitDTO recordSubmitDto) throws BaseException{ + String jzh = recordSubmitDto.getJzh(); + String inpatientNo = recordSubmitDto.getInpatientNo(); + String name = recordSubmitDto.getName(); + String submitDate = recordSubmitDto.getSubmitDate(); + if (Func.isBlank(jzh) + && Func.isBlank(inpatientNo) + && Func.isBlank(name)) { + throw new BaseException("住院流水号、住院号、患者姓名 不可全部为空!"); + } + if (Func.isBlank(submitDate)) { + throw new BaseException("提交时间不能为空!"); + } + } +} diff --git a/src/main/java/com/docus/server/message/validate/ZqWsNurseSubmitValidate.java b/src/main/java/com/docus/server/message/validate/ZqWsNurseSubmitValidate.java new file mode 100644 index 0000000..1687918 --- /dev/null +++ b/src/main/java/com/docus/server/message/validate/ZqWsNurseSubmitValidate.java @@ -0,0 +1,22 @@ +package com.docus.server.message.validate; + +import com.docus.core.util.Func; +import com.docus.infrastructure.core.exception.BaseException; +import com.docus.server.message.dto.ZqWsNurseSubmitDTO; + +public class ZqWsNurseSubmitValidate { + public static void verifyNurseSubmitDTO(ZqWsNurseSubmitDTO dto) throws BaseException { + String jzh = dto.getJzh(); + String inpatientNo = dto.getInpatientNo(); + String name = dto.getName(); + String submitDate = dto.getSubmitDate(); + if (Func.isBlank(jzh) + && Func.isBlank(inpatientNo) + && Func.isBlank(name)) { + throw new BaseException("住院流水号、住院号、患者姓名 不可全部为空!"); + } + if (Func.isBlank(submitDate)) { + throw new BaseException("提交时间不能为空!"); + } + } +} diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 8b30e12..2a7c4c8 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -40,6 +40,7 @@ + diff --git a/src/main/resources/mapper/TBasicMapper.xml b/src/main/resources/mapper/TBasicMapper.xml index 5565b5d..073c6fc 100644 --- a/src/main/resources/mapper/TBasicMapper.xml +++ b/src/main/resources/mapper/TBasicMapper.xml @@ -50,6 +50,31 @@ FROM `docus_medicalrecord`.t_basic tb WHERE tb.inpatient_no=#{inpatientNo} and tb.admiss_times=#{admissTimes} + + + +