From 2213876352daad4acec0ab57c25b79c0526a8317 Mon Sep 17 00:00:00 2001 From: jiangs <373297395@qq.com> Date: Fri, 10 Jul 2026 16:50:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BE=93=E8=A1=80=E7=94=B3=E8=AF=B7=E5=8D=95?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E4=B8=9A=E5=8A=A1=EF=BC=8C=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BloodInterfaceTypeConstants.java | 9 +++ .../bus/pojo/inter/CancelApplyRequest.java | 20 ++++++ .../bus/pojo/inter/InvokeHisEmrRequest.java | 20 ++++++ .../controller/TransfuseApplyController.java | 20 ++++-- .../TransfuseCheckExplainController.java | 7 +- .../busDoctor/pojo/VO/CancelApplyVO.java | 15 ++++ .../service/TransfuseApplyService.java | 9 +-- .../impl/TransfuseApplyServiceImpl.java | 68 ++++++++++++++++--- .../busDoctor/utils/TransfuseApplyUtil.java | 7 ++ sql/updatedb_blood.sql | 1 + 10 files changed, 153 insertions(+), 23 deletions(-) create mode 100644 blood_bus/src/main/java/com/czblood/bus/pojo/inter/CancelApplyRequest.java create mode 100644 blood_bus/src/main/java/com/czblood/bus/pojo/inter/InvokeHisEmrRequest.java create mode 100644 blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/VO/CancelApplyVO.java diff --git a/blood_bus/src/main/java/com/czblood/bus/constants/BloodInterfaceTypeConstants.java b/blood_bus/src/main/java/com/czblood/bus/constants/BloodInterfaceTypeConstants.java index 2b7e428..b8eedfc 100644 --- a/blood_bus/src/main/java/com/czblood/bus/constants/BloodInterfaceTypeConstants.java +++ b/blood_bus/src/main/java/com/czblood/bus/constants/BloodInterfaceTypeConstants.java @@ -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"; } diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/inter/CancelApplyRequest.java b/blood_bus/src/main/java/com/czblood/bus/pojo/inter/CancelApplyRequest.java new file mode 100644 index 0000000..7d3e90d --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/inter/CancelApplyRequest.java @@ -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); + } +} diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/inter/InvokeHisEmrRequest.java b/blood_bus/src/main/java/com/czblood/bus/pojo/inter/InvokeHisEmrRequest.java new file mode 100644 index 0000000..8466090 --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/inter/InvokeHisEmrRequest.java @@ -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); + } +} diff --git a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/controller/TransfuseApplyController.java b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/controller/TransfuseApplyController.java index ed8e6cc..483fb55 100644 --- a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/controller/TransfuseApplyController.java +++ b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/controller/TransfuseApplyController.java @@ -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); + } + } diff --git a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/controller/TransfuseCheckExplainController.java b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/controller/TransfuseCheckExplainController.java index 709adf3..0a2fa44 100644 --- a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/controller/TransfuseCheckExplainController.java +++ b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/controller/TransfuseCheckExplainController.java @@ -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); } diff --git a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/VO/CancelApplyVO.java b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/VO/CancelApplyVO.java new file mode 100644 index 0000000..cf9b6f1 --- /dev/null +++ b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/VO/CancelApplyVO.java @@ -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; +} diff --git a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/service/TransfuseApplyService.java b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/service/TransfuseApplyService.java index 1b167a1..ca77ed1 100644 --- a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/service/TransfuseApplyService.java +++ b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/service/TransfuseApplyService.java @@ -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); } diff --git a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/service/impl/TransfuseApplyServiceImpl.java b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/service/impl/TransfuseApplyServiceImpl.java index 0963629..ded2a7f 100644 --- a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/service/impl/TransfuseApplyServiceImpl.java +++ b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/service/impl/TransfuseApplyServiceImpl.java @@ -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); + } + /** * 校验医生职称是否符合要求 diff --git a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/utils/TransfuseApplyUtil.java b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/utils/TransfuseApplyUtil.java index 7f858c7..75a903a 100644 --- a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/utils/TransfuseApplyUtil.java +++ b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/utils/TransfuseApplyUtil.java @@ -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); + } } diff --git a/sql/updatedb_blood.sql b/sql/updatedb_blood.sql index cfa0ba0..8c02f77 100644 --- a/sql/updatedb_blood.sql +++ b/sql/updatedb_blood.sql @@ -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')