输血申请单审核业务,取消审核修改

This commit is contained in:
jiangs 2026-07-10 16:50:04 +08:00
parent d94a86ed9b
commit 2213876352
10 changed files with 153 additions and 23 deletions

View File

@ -36,4 +36,13 @@ public class BloodInterfaceTypeConstants {
* 取消申请单审核
*/
public static final String CANCEL_APPLY_CHECK = "CANCEL_APPLY_CHECK";
/**
* 作废申请单
*/
public static final String CANCEL_APPLY = "CANCEL_APPLY";
/**
* 调用his电子病历接口
*/
public static final String INVOKE_HIS_EMR = "INVOKE_HIS_EMR";
}

View File

@ -0,0 +1,20 @@
package com.czblood.bus.pojo.inter;
import cn.hutool.json.JSONUtil;
import com.czblood.bus.constants.BloodInterfaceTypeConstants;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class CancelApplyRequest implements BloodInterfaceType {
private final String method = BloodInterfaceTypeConstants.CANCEL_APPLY;
private String billNo;
@Override
public String serializationJson() {
return JSONUtil.toJsonStr(this);
}
}

View File

@ -0,0 +1,20 @@
package com.czblood.bus.pojo.inter;
import cn.hutool.json.JSONUtil;
import com.czblood.bus.constants.BloodInterfaceTypeConstants;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class InvokeHisEmrRequest implements BloodInterfaceType{
private final String method = BloodInterfaceTypeConstants.INVOKE_HIS_EMR;
private String beinhos_id;
@Override
public String serializationJson() {
return JSONUtil.toJsonStr(this);
}
}

View File

@ -5,10 +5,7 @@ import com.czblood.bus.constants.BloodSysLogConstants;
import com.czblood.bus.mapper.XkXtwhIllDiagnoseMapper;
import com.czblood.bus.pojo.xtwh.XkXtwhIllDiagnose;
import com.czblood.busDoctor.pojo.DTO.TransfuseApplyDTO;
import com.czblood.busDoctor.pojo.VO.ApplyCheckVO;
import com.czblood.busDoctor.pojo.VO.CheckMedicVO;
import com.czblood.busDoctor.pojo.VO.ExplainVO;
import com.czblood.busDoctor.pojo.VO.TransfuseApplyVO;
import com.czblood.busDoctor.pojo.VO.*;
import com.czblood.busDoctor.service.TransfuseApplyService;
import com.czblood.common.annotation.Log;
import com.czblood.common.core.controller.BaseController;
@ -21,7 +18,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
@ -133,6 +129,7 @@ public class TransfuseApplyController extends BaseController {
return transfuseApplyService.cancelApplyMedicCheck(checkMedicVO);
}
@Log(title = BloodSysLogConstants.LOG_TYPE_TRANSFUSE_APPLY, businessType = BusinessType.UNCHECK)
@ApiOperation("取消申请单审核")
@GetMapping("/cancelApplyCheck")
public Result cancelApplyCheck(String billNo){
@ -140,5 +137,18 @@ public class TransfuseApplyController extends BaseController {
}
@Log(title = BloodSysLogConstants.LOG_TYPE_TRANSFUSE_APPLY, businessType = BusinessType.DELETE)
@ApiOperation("作废申请单")
@GetMapping("/cancelApply")
public Result cancelApply(CancelApplyVO cancelApplyVO){
return transfuseApplyService.cancelApply(cancelApplyVO);
}
@ApiOperation("调用电子病历接口")
@GetMapping("/invokeEMR")
public Result invokeEMR(String beinhos_id){
return transfuseApplyService.invokeEMR(beinhos_id);
}
}

View File

@ -10,10 +10,7 @@ import com.czblood.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -36,7 +33,7 @@ public class TransfuseCheckExplainController extends BaseController {
@Log(title = BloodSysLogConstants.LOG_TYPE_TRANSFUSE_APPLY, businessType = BusinessType.CHECK)
@ApiOperation("审核意见")
@PostMapping("/checkExplain")
public Result checkExplain(ExplainVO explainVO){
public Result checkExplain(@RequestBody ExplainVO explainVO){
explainVO.setUserId(getUsername());
return transfuseCheckExplainService.checkExplain(explainVO);
}

View File

@ -0,0 +1,15 @@
package com.czblood.busDoctor.pojo.VO;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CancelApplyVO {
private String billNo;
@ApiModelProperty("作废原因")
private String reason;
}

View File

@ -2,10 +2,7 @@ package com.czblood.busDoctor.service;
import com.czblood.bus.pojo.XkTransfuseApply;
import com.czblood.busDoctor.pojo.DTO.TransfuseApplyDTO;
import com.czblood.busDoctor.pojo.VO.ApplyCheckVO;
import com.czblood.busDoctor.pojo.VO.CheckMedicVO;
import com.czblood.busDoctor.pojo.VO.ExplainVO;
import com.czblood.busDoctor.pojo.VO.TransfuseApplyVO;
import com.czblood.busDoctor.pojo.VO.*;
import com.czblood.common.core.domain.Result;
public interface TransfuseApplyService {
@ -32,4 +29,8 @@ public interface TransfuseApplyService {
Result cancelApplyMedicCheck(CheckMedicVO checkMedicVO);
Result cancelApplyCheck(String billNo);
Result cancelApply(CancelApplyVO cancelApplyVO);
Result invokeEMR(String beinhosId);
}

View File

@ -4,17 +4,16 @@ import cn.hutool.core.date.DateUtil;
import com.czblood.bus.mapper.*;
import com.czblood.bus.pojo.*;
import com.czblood.bus.pojo.inter.CancelApplyCheckRequest;
import com.czblood.bus.pojo.inter.CancelApplyRequest;
import com.czblood.bus.pojo.inter.GetTestResultBloodTypeRequest;
import com.czblood.bus.pojo.inter.InvokeHisEmrRequest;
import com.czblood.bus.pojo.xtwh.XkDmzd;
import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.bus.utils.BloodInterfaceUtil;
import com.czblood.busDoctor.mapper.TransfuseApplyMapper;
import com.czblood.busDoctor.pojo.DTO.TransfuseApplyDTO;
import com.czblood.busDoctor.pojo.DTO.TransfuseApplyInfoOne;
import com.czblood.busDoctor.pojo.VO.ApplyCheckVO;
import com.czblood.busDoctor.pojo.VO.CheckMedicVO;
import com.czblood.busDoctor.pojo.VO.ExplainVO;
import com.czblood.busDoctor.pojo.VO.TransfuseApplyVO;
import com.czblood.busDoctor.pojo.VO.*;
import com.czblood.busDoctor.service.TransfuseApplyService;
import com.czblood.busDoctor.utils.TransfuseApplyUtil;
import com.czblood.common.core.domain.Result;
@ -390,13 +389,14 @@ public class TransfuseApplyServiceImpl implements TransfuseApplyService {
@Override
public Result applyMedicCheck(CheckMedicVO checkMedicVO) {
SysUser userInfo = bloodBankUtil.getUserInfo(checkMedicVO.getCheckMedic());
String postName = userInfo.getPostname();
String postName = BloodBankUtil.isBank(userInfo.getPostname());
if(!postName.equals("003") && !postName.equals("004")) return new Result("-1","审核医生不是副主任医师或主任医师!");
XkTransfuseApply xkTransfuseApply = new XkTransfuseApply();
xkTransfuseApply.setSend_able("Y");
xkTransfuseApply.setCheck_medic(checkMedicVO.getCheckMedic());
xkTransfuseApply.setMedic_check_date(checkMedicVO.getCheckDate());
xkTransfuseApply.setBill_no(checkMedicVO.getBillNo());
xkTransfuseApply.setBill_stasus("E"); //上级医生审核状态
xkTransfuseApplyMapper.update(xkTransfuseApply);
return new Result("0","审核通过!");
}
@ -428,7 +428,7 @@ public class TransfuseApplyServiceImpl implements TransfuseApplyService {
}
/**
* 下面是输血科审核的逻辑
* 下面是输血科审核的逻辑,为打开审核界面到审核界面open的逻辑
*/
//判断上级医生是否审核
String checkMedic = xkTransfuseApply.getCheck_medic();
@ -490,12 +490,12 @@ public class TransfuseApplyServiceImpl implements TransfuseApplyService {
threeDayBefore = DateUtil.offsetDay(xkCheckBloodtype.getTest_date(), 3);
if(testDate != null) explainVO.setCheckDateText("血型复核时间:"+ DateUtil.format(testDate,"yyyy-MM-dd HH:mm:ss"));
}
if(explainVO.getNeedCheck().equals("A") || explainVO.getNeedCheck().equals("B")){
if(explainVO.getBillSort().equals("A") || explainVO.getBillSort().equals("B")){
needCheck = "Y"; //需要做血型复核
}else{
needCheck = "N"; //不需要做血型复核
}
if(explainVO.getNeedCheck().equals("B")){
if(explainVO.getBillSort().equals("B")){
if(xkCheckBloodtype == null){ //没有做过血型鉴定的,必须要做
needCheck = "Y";
}else if(DateUtil.compare(bloodBankUtil.getCurrentTimeDate(),threeDayBefore) > 0){ //之前做的血型鉴定的结果,超过了三天,也需要重新再做
@ -547,6 +547,7 @@ public class TransfuseApplyServiceImpl implements TransfuseApplyService {
xkTransfuseApply.setCheck_medic("");
xkTransfuseApply.setMedic_check_date(DateUtil.parse("1900-01-01 00:00:00","yyyy-MM-dd HH:mm:ss"));
xkTransfuseApply.setBill_no(billNo);
xkTransfuseApply.setBill_stasus("A"); //未审核
xkTransfuseApplyMapper.update(xkTransfuseApply);
return new Result("0","取消上级医生审核成功!");
}
@ -576,7 +577,7 @@ public class TransfuseApplyServiceImpl implements TransfuseApplyService {
return new Result("-1","该申请单已经作废,不能取消审核!");
}
if(billStasus.equals("B")) return new Result("-1","该申请单还未审核,不能取消审核!");
if(!billStasus.equals("B") && !billStasus.equals("N")) return new Result("-1","该申请单还未审核,不能取消审核!");
int i = transfuseApplyMapper.queryXkOutMainCount(billNo);
if(i > 0) return new Result("-1","该申请单已经发血,不能取消审核!");
//修改申请单主表数据
@ -595,6 +596,55 @@ public class TransfuseApplyServiceImpl implements TransfuseApplyService {
return new Result("0","取消审核成功!");
}
/**
* 作废申请单
* @param cancelApplyVO
* @return
*/
@Override
public Result cancelApply(CancelApplyVO cancelApplyVO) {
String billNo = cancelApplyVO.getBillNo();
XkTransfuseApply xkTransfuseApply = xkTransfuseApplyMapper.queryOne(billNo);
if(xkTransfuseApply == null) return new Result("-1","没有查到该申请单的信息!");
String billStasus = xkTransfuseApply.getBill_stasus();
String reason = BloodBankUtil.isBank(cancelApplyVO.getReason());
switch (billStasus){
case "B":
return new Result("-1","该申请单输血科已经审核通过,不能作废!");
case "C":
return new Result("-1","该申请单已经配血,不能作废!");
case "F":
return new Result("-1","该申请单已经复核血型,不能作废!");
case "D":
return new Result("-1","该申请单已经发血,不能作废!");
case "SF":
return new Result("-1","该申请单已经发血且已追加复核血型,不能作废!");
case "S":
return new Result("-1","该申请单已经发血且已追加配血,不能作废!");
case "Z":
return new Result("-1","该申请单已经作废!");
}
XkTransfuseApply xkTransfuseApplyTemp = new XkTransfuseApply();
xkTransfuseApplyTemp.setBill_stasus("Z");
xkTransfuseApplyTemp.setExp1(reason);
xkTransfuseApplyTemp.setBill_no(billNo);
transfuseApplyUtil.saveCancelApply(xkTransfuseApplyTemp);
//调用外部接口
CancelApplyRequest cancelApplyRequest = new CancelApplyRequest();
cancelApplyRequest.setBillNo(billNo);
BloodInterfaceUtil.invokeBloodInterface(cancelApplyRequest);
return new Result("0","作废申请单成功!");
}
@Override
public Result invokeEMR(String beinhosId) {
InvokeHisEmrRequest invokeHisEmrRequest = new InvokeHisEmrRequest();
invokeHisEmrRequest.setBeinhos_id(beinhosId);
return BloodInterfaceUtil.invokeBloodInterface(invokeHisEmrRequest);
}
/**
* 校验医生职称是否符合要求

View File

@ -331,4 +331,11 @@ public class TransfuseApplyUtil {
}
return sort;
}
@Transactional
public void saveCancelApply(XkTransfuseApply xkTransfuseApply){
String billNo = xkTransfuseApply.getBill_no();
xkTransfuseApplyMapper.update(xkTransfuseApply);
xkTransfuseApplyCausalisMapper.deleteByBillNo(billNo);
}
}

View File

@ -314,6 +314,7 @@ if not exists(select 1 from dbo.xk_dmzd where wordbook_sign = 'BASE')
insert into xk_dmzd (wordbook_sign,wordbook_code,wordbook_name,use_sign) values('billApplyStatus','SF','已复核血型(追加)','Y')
insert into xk_dmzd (wordbook_sign,wordbook_code,wordbook_name,use_sign) values('billApplyStatus','S','已追加配血','Y')
insert into xk_dmzd (wordbook_sign,wordbook_code,wordbook_name,use_sign) values('billApplyStatus','N','审核未通过','Y')
insert into xk_dmzd (wordbook_sign,wordbook_code,wordbook_name,use_sign) values('billApplyStatus','E','上级医生审核','Y')
insert into xk_dmzd(wordbook_sign,wordbook_code,wordbook_name,use_sign) values('BASE','workgroup','工作组','Y')