From 50ddc2108fd9d6ef3095c25f42580ae72af4bde1 Mon Sep 17 00:00:00 2001
From: wyb <1977763549@qq.com>
Date: Mon, 24 Jul 2023 17:19:12 +0800
Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E7=AD=BE=E5=87=BA=E6=8E=A5?=
=?UTF-8?q?=E5=8F=A3=E5=AE=9A=E4=B9=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 4 ++
.../controller/MzZyHisController.java | 48 ++++++++++++++
.../converter/FirstPageCheckoutConverter.java | 40 ++++++++++++
.../dto/FirstPageCheckoutInDTO.java | 23 +++++++
.../dto/FirstPageCheckoutRequest.java | 35 ++++++++++
.../server/collection/dto/PatientInfoDTO.java | 32 ++++++++++
.../collection/service/MzZyHisService.java | 15 +++++
.../service/impl/MzZyHisServiceImpl.java | 19 ++++++
.../server/collection/util/DateTimeUtil.java | 27 ++++++++
.../validator/RequestValidator.java | 13 ++++
.../collection/validator/ValidateResult.java | 30 +++++++++
.../FirstPageCheckoutRequestValidator.java | 64 +++++++++++++++++++
src/main/resources/bootstrap.yml | 2 +-
13 files changed, 351 insertions(+), 1 deletion(-)
create mode 100644 src/main/java/com/docus/server/collection/controller/MzZyHisController.java
create mode 100644 src/main/java/com/docus/server/collection/converter/FirstPageCheckoutConverter.java
create mode 100644 src/main/java/com/docus/server/collection/dto/FirstPageCheckoutInDTO.java
create mode 100644 src/main/java/com/docus/server/collection/dto/FirstPageCheckoutRequest.java
create mode 100644 src/main/java/com/docus/server/collection/dto/PatientInfoDTO.java
create mode 100644 src/main/java/com/docus/server/collection/service/MzZyHisService.java
create mode 100644 src/main/java/com/docus/server/collection/service/impl/MzZyHisServiceImpl.java
create mode 100644 src/main/java/com/docus/server/collection/util/DateTimeUtil.java
create mode 100644 src/main/java/com/docus/server/collection/validator/RequestValidator.java
create mode 100644 src/main/java/com/docus/server/collection/validator/ValidateResult.java
create mode 100644 src/main/java/com/docus/server/collection/validator/impl/FirstPageCheckoutRequestValidator.java
diff --git a/pom.xml b/pom.xml
index f3f44d9..bfd690f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,6 +11,10 @@
docus-mzzy-collector
+
+ com.docus
+ docus-knife4j-starter
+
diff --git a/src/main/java/com/docus/server/collection/controller/MzZyHisController.java b/src/main/java/com/docus/server/collection/controller/MzZyHisController.java
new file mode 100644
index 0000000..047c047
--- /dev/null
+++ b/src/main/java/com/docus/server/collection/controller/MzZyHisController.java
@@ -0,0 +1,48 @@
+package com.docus.server.collection.controller;
+
+import com.docus.core.util.Func;
+import com.docus.infrastructure.web.api.CommonResult;
+import com.docus.infrastructure.web.api.ResultCode;
+import com.docus.server.collection.converter.FirstPageCheckoutConverter;
+import com.docus.server.collection.dto.FirstPageCheckoutInDTO;
+import com.docus.server.collection.dto.FirstPageCheckoutRequest;
+import com.docus.server.collection.service.MzZyHisService;
+import com.docus.server.collection.validator.RequestValidator;
+import com.docus.server.collection.validator.ValidateResult;
+import com.docus.server.collection.validator.impl.FirstPageCheckoutRequestValidator;
+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;
+
+@Api("梅州中西HIS相关接口")
+@Slf4j
+@RestController
+@RequestMapping("/his")
+public class MzZyHisController {
+ @Resource
+ private MzZyHisService mzZyHisService;
+
+ @ApiOperation("首页签出")
+ @PostMapping("/firstPageCheckout")
+ public CommonResult firstPageCheckout(@RequestBody FirstPageCheckoutRequest firstPageCheckoutRequest) {
+ log.info("首页签出接口参数:{}", Func.toJson(firstPageCheckoutRequest));
+ // 验证数据
+ RequestValidator validator = new FirstPageCheckoutRequestValidator(firstPageCheckoutRequest);
+ ValidateResult validateResult = validator.validate();
+ if (validateResult.getResultCode() == ResultCode.FAILED) {
+ return CommonResult.failed(validateResult.getMsg());
+ }
+ // 转换数据,业务处理
+ FirstPageCheckoutConverter converter = new FirstPageCheckoutConverter(firstPageCheckoutRequest);
+ FirstPageCheckoutInDTO checkoutInDTO = converter.req2dto();
+ mzZyHisService.firstPageCheckout(checkoutInDTO);
+ return CommonResult.success("操作成功!");
+ }
+
+}
diff --git a/src/main/java/com/docus/server/collection/converter/FirstPageCheckoutConverter.java b/src/main/java/com/docus/server/collection/converter/FirstPageCheckoutConverter.java
new file mode 100644
index 0000000..7b48961
--- /dev/null
+++ b/src/main/java/com/docus/server/collection/converter/FirstPageCheckoutConverter.java
@@ -0,0 +1,40 @@
+package com.docus.server.collection.converter;
+
+import com.docus.server.collection.dto.FirstPageCheckoutInDTO;
+import com.docus.server.collection.dto.FirstPageCheckoutRequest;
+
+import java.util.Objects;
+
+/**
+ * 首页签出转换
+ *
+ * @author WYBDEV
+ */
+public class FirstPageCheckoutConverter {
+ private FirstPageCheckoutRequest firstPageCheckoutRequest;
+
+ public FirstPageCheckoutConverter(FirstPageCheckoutRequest firstPageCheckoutRequest) {
+ this.firstPageCheckoutRequest = firstPageCheckoutRequest;
+ }
+
+ public FirstPageCheckoutConverter() {
+
+ }
+
+ /**
+ * 请求参数转service处理参数
+ *
+ * @return service处理参数
+ */
+ public FirstPageCheckoutInDTO req2dto() {
+ FirstPageCheckoutRequest firstPageCheckoutRequest = this.firstPageCheckoutRequest;
+ if (Objects.isNull(firstPageCheckoutRequest)) {
+ return null;
+ }
+ FirstPageCheckoutInDTO dto = new FirstPageCheckoutInDTO();
+ dto.setSyncType(firstPageCheckoutRequest.getSyncType());
+ dto.setPatientInfo(firstPageCheckoutRequest.getPatientInfo());
+ dto.setSysId(firstPageCheckoutRequest.getSysId());
+ return dto;
+ }
+}
diff --git a/src/main/java/com/docus/server/collection/dto/FirstPageCheckoutInDTO.java b/src/main/java/com/docus/server/collection/dto/FirstPageCheckoutInDTO.java
new file mode 100644
index 0000000..75ccad1
--- /dev/null
+++ b/src/main/java/com/docus/server/collection/dto/FirstPageCheckoutInDTO.java
@@ -0,0 +1,23 @@
+package com.docus.server.collection.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author wyb
+ */
+@Data
+@ApiModel("首页签出业务处理参数")
+public class FirstPageCheckoutInDTO {
+ @ApiModelProperty("患者基础信息")
+ private PatientInfoDTO patientInfo;
+
+ @ApiModelProperty("同步类型:ALL 或者 BY_SYS_ID")
+ private FirstPageCheckoutRequest.SyncType syncType;
+
+ @ApiModelProperty("系统id")
+ private List sysId;
+}
diff --git a/src/main/java/com/docus/server/collection/dto/FirstPageCheckoutRequest.java b/src/main/java/com/docus/server/collection/dto/FirstPageCheckoutRequest.java
new file mode 100644
index 0000000..1c5fc5a
--- /dev/null
+++ b/src/main/java/com/docus/server/collection/dto/FirstPageCheckoutRequest.java
@@ -0,0 +1,35 @@
+package com.docus.server.collection.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author wyb
+ */
+@Data
+@ApiModel("首页签出请求参数")
+public class FirstPageCheckoutRequest {
+
+ @ApiModelProperty("患者基础信息")
+ private PatientInfoDTO patientInfo;
+
+ @ApiModelProperty("同步类型:ALL 或者 BY_SYS_ID")
+ private SyncType syncType;
+
+ @ApiModelProperty("系统id")
+ private List sysId;
+
+ public enum SyncType{
+ /**
+ * 全部同步
+ */
+ ALL,
+ /**
+ * 根据系统id同步
+ */
+ BY_SYS_ID
+ }
+}
diff --git a/src/main/java/com/docus/server/collection/dto/PatientInfoDTO.java b/src/main/java/com/docus/server/collection/dto/PatientInfoDTO.java
new file mode 100644
index 0000000..c59dba7
--- /dev/null
+++ b/src/main/java/com/docus/server/collection/dto/PatientInfoDTO.java
@@ -0,0 +1,32 @@
+package com.docus.server.collection.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * @author 患者信息
+ */
+@ApiModel("患者信息")
+@Data
+public class PatientInfoDTO {
+
+ @ApiModelProperty("院方住院流水号,无纸化归档系统记账号")
+ private String inpatientNo;
+
+ @ApiModelProperty("住院号")
+ private String patientNo;
+
+ @ApiModelProperty("住院次数")
+ private Integer inTimes;
+
+ @ApiModelProperty("患者姓名")
+ private String name;
+
+ @ApiModelProperty("入院时间,格式:yyyy-MM-dd HH:mm:ss")
+ private String inDate;
+
+ @ApiModelProperty("出院时间,格式:yyyy-MM-dd HH:mm:ss")
+ private String outDate;
+}
diff --git a/src/main/java/com/docus/server/collection/service/MzZyHisService.java b/src/main/java/com/docus/server/collection/service/MzZyHisService.java
new file mode 100644
index 0000000..28398c1
--- /dev/null
+++ b/src/main/java/com/docus/server/collection/service/MzZyHisService.java
@@ -0,0 +1,15 @@
+package com.docus.server.collection.service;
+
+import com.docus.server.collection.dto.FirstPageCheckoutInDTO;
+
+/**
+ * @author wyb
+ */
+public interface MzZyHisService {
+ /**
+ * 首页签出
+ *
+ * @param checkoutInDTO 首页签出参数
+ */
+ void firstPageCheckout(FirstPageCheckoutInDTO checkoutInDTO);
+}
diff --git a/src/main/java/com/docus/server/collection/service/impl/MzZyHisServiceImpl.java b/src/main/java/com/docus/server/collection/service/impl/MzZyHisServiceImpl.java
new file mode 100644
index 0000000..d61b7ee
--- /dev/null
+++ b/src/main/java/com/docus/server/collection/service/impl/MzZyHisServiceImpl.java
@@ -0,0 +1,19 @@
+package com.docus.server.collection.service.impl;
+
+import com.docus.server.collection.dto.FirstPageCheckoutInDTO;
+import com.docus.server.collection.service.MzZyHisService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author wyb
+ */
+@Slf4j
+@Service
+public class MzZyHisServiceImpl implements MzZyHisService {
+ @Override
+ public void firstPageCheckout(FirstPageCheckoutInDTO dto) {
+ System.out.println(dto);
+ // todo 首页签出处理逻辑
+ }
+}
diff --git a/src/main/java/com/docus/server/collection/util/DateTimeUtil.java b/src/main/java/com/docus/server/collection/util/DateTimeUtil.java
new file mode 100644
index 0000000..7b91b9d
--- /dev/null
+++ b/src/main/java/com/docus/server/collection/util/DateTimeUtil.java
@@ -0,0 +1,27 @@
+package com.docus.server.collection.util;
+
+
+import cn.hutool.core.date.DatePattern;
+import com.docus.core.util.Func;
+
+/**
+ * 日期时间的工具类
+ * @author wyb
+ */
+public class DateTimeUtil {
+
+ /**
+ * 是否是一个标准的时间格式,yyyy-MM-dd HH:mm:ss" 字符串
+ * @param dateTimeStr 时间格式字符串
+ * @return 能否解析成标准的时间格式
+ */
+ public static boolean isNormDateTime(String dateTimeStr) {
+ try {
+ Func.parseDate(dateTimeStr, DatePattern.NORM_DATETIME_PATTERN);
+ return true;
+ } catch (Exception ex) {
+ return false;
+ }
+ }
+
+}
diff --git a/src/main/java/com/docus/server/collection/validator/RequestValidator.java b/src/main/java/com/docus/server/collection/validator/RequestValidator.java
new file mode 100644
index 0000000..21ed861
--- /dev/null
+++ b/src/main/java/com/docus/server/collection/validator/RequestValidator.java
@@ -0,0 +1,13 @@
+package com.docus.server.collection.validator;
+
+/**
+ * 请求参数验证
+ * @author WYBDEV
+ */
+public interface RequestValidator {
+ /**
+ * 验证
+ * @return 返回验证结果
+ */
+ ValidateResult validate();
+}
diff --git a/src/main/java/com/docus/server/collection/validator/ValidateResult.java b/src/main/java/com/docus/server/collection/validator/ValidateResult.java
new file mode 100644
index 0000000..3141e00
--- /dev/null
+++ b/src/main/java/com/docus/server/collection/validator/ValidateResult.java
@@ -0,0 +1,30 @@
+package com.docus.server.collection.validator;
+
+import com.docus.infrastructure.web.api.ResultCode;
+import lombok.Data;
+
+/**
+ * @author WYBDEV
+ */
+@Data
+public class ValidateResult {
+ /**
+ * 验证结果代码
+ */
+ private ResultCode resultCode;
+ /**
+ * 验证结果信息
+ */
+ private String msg;
+ public ValidateResult(ResultCode resultCode,String msg){
+ this.resultCode=resultCode;
+ this.msg=msg;
+ }
+ public static ValidateResult success(String msg){
+ return new ValidateResult(ResultCode.SUCCESS,msg);
+ }
+
+ public static ValidateResult failed(String msg){
+ return new ValidateResult(ResultCode.FAILED,msg);
+ }
+}
diff --git a/src/main/java/com/docus/server/collection/validator/impl/FirstPageCheckoutRequestValidator.java b/src/main/java/com/docus/server/collection/validator/impl/FirstPageCheckoutRequestValidator.java
new file mode 100644
index 0000000..af54cd6
--- /dev/null
+++ b/src/main/java/com/docus/server/collection/validator/impl/FirstPageCheckoutRequestValidator.java
@@ -0,0 +1,64 @@
+package com.docus.server.collection.validator.impl;
+
+import com.docus.core.util.Func;
+import com.docus.server.collection.dto.FirstPageCheckoutRequest;
+import com.docus.server.collection.dto.PatientInfoDTO;
+import com.docus.server.collection.util.DateTimeUtil;
+import com.docus.server.collection.validator.RequestValidator;
+import com.docus.server.collection.validator.ValidateResult;
+
+import java.util.Objects;
+
+/**
+ * 首页签出请求验证者
+ *
+ * @author wyb
+ */
+public class FirstPageCheckoutRequestValidator implements RequestValidator {
+ private final FirstPageCheckoutRequest request;
+
+ public FirstPageCheckoutRequestValidator(FirstPageCheckoutRequest request) {
+ this.request = request;
+ }
+
+ @Override
+ public ValidateResult validate() {
+ FirstPageCheckoutRequest request = this.request;
+ FirstPageCheckoutRequest.SyncType syncType = request.getSyncType();
+ if (Objects.isNull(syncType)) {
+ return ValidateResult.failed("同步类型不能为空!");
+ }
+ if (syncType == FirstPageCheckoutRequest.SyncType.BY_SYS_ID && Func.isEmpty(request.getSysId())) {
+ return ValidateResult.failed("同步类型为BY_SYS_ID,系统id不能为空!");
+ }
+ PatientInfoDTO patientInfo = request.getPatientInfo();
+ if (Objects.isNull(patientInfo)) {
+ return ValidateResult.failed("患者基础数据不能为空!");
+ }
+ String jzh = patientInfo.getInpatientNo();
+ String inPatientNo = patientInfo.getPatientNo();
+ String name = patientInfo.getName();
+ Integer inTimes = patientInfo.getInTimes();
+ String inDate = patientInfo.getInDate();
+ String outDate = patientInfo.getOutDate();
+ if (Objects.isNull(inTimes) || inTimes <= 0) {
+ return ValidateResult.failed("患者基础数据住院次数不能为空,且大于0!");
+ }
+ if (Func.isBlank(jzh)) {
+ return ValidateResult.failed("患者基础数据住院流水号不能为空!");
+ }
+ if (Func.isBlank(inPatientNo)) {
+ return ValidateResult.failed("患者基础数据住院号不能为空!");
+ }
+ if (Func.isBlank(name)) {
+ return ValidateResult.failed("患者基础数据姓名不能为空!");
+ }
+ if (Func.isBlank(inDate) || !DateTimeUtil.isNormDateTime(inDate)) {
+ return ValidateResult.failed("患者基础数据入院日期不能为空且按照格式:yyyy-MM-dd HH:mm:ss");
+ }
+ if (Func.isBlank(outDate) || !DateTimeUtil.isNormDateTime(outDate)) {
+ return ValidateResult.failed("患者基础数据出院日期不能为空且按照格式:yyyy-MM-dd HH:mm:ss");
+ }
+ return ValidateResult.success("验证通过");
+ }
+}
diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml
index 006f376..fd918f8 100644
--- a/src/main/resources/bootstrap.yml
+++ b/src/main/resources/bootstrap.yml
@@ -30,7 +30,7 @@ spring:
redis:
host: redis.docus.cn
-# password: 123456
+ password: JSdocus@702
cloud:
nacos:
discovery: