首页签出接口定义

首页签出2023/07/24
wyb 2 years ago
parent 427f9aa7e2
commit 50ddc2108f

@ -11,6 +11,10 @@
<artifactId>docus-mzzy-collector</artifactId>
<dependencies>
<dependency>
<groupId>com.docus</groupId>
<artifactId>docus-knife4j-starter</artifactId>
</dependency>
<!--配置中心客户端-->
<dependency>

@ -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<String> 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("操作成功!");
}
}

@ -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;
}
}

@ -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<String> sysId;
}

@ -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<String> sysId;
public enum SyncType{
/**
*
*/
ALL,
/**
* id
*/
BY_SYS_ID
}
}

@ -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;
}

@ -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);
}

@ -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 首页签出处理逻辑
}
}

@ -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;
}
}
}

@ -0,0 +1,13 @@
package com.docus.server.collection.validator;
/**
*
* @author WYBDEV
*/
public interface RequestValidator {
/**
*
* @return
*/
ValidateResult validate();
}

@ -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);
}
}

@ -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("验证通过");
}
}

@ -30,7 +30,7 @@ spring:
redis:
host: redis.docus.cn
# password: 123456
password: JSdocus@702
cloud:
nacos:
discovery:

Loading…
Cancel
Save