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 eb5a646..fd81945 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 @@ -20,4 +20,8 @@ public class BloodInterfaceTypeConstants { * 输血前评估 */ public static final String BEFORE_ASSESS = "BEFORE_ASSESS"; + /** + * 使用his接口验证密码 + */ + public static final String HIS_USE_PASSWORD = "HIS_USE_PASSWORD"; } diff --git a/blood_bus/src/main/java/com/czblood/bus/controller/BloodCommonController.java b/blood_bus/src/main/java/com/czblood/bus/controller/BloodCommonController.java index fa369c0..25e935f 100644 --- a/blood_bus/src/main/java/com/czblood/bus/controller/BloodCommonController.java +++ b/blood_bus/src/main/java/com/czblood/bus/controller/BloodCommonController.java @@ -1,15 +1,17 @@ package com.czblood.bus.controller; import com.czblood.bus.mapper.XkProTransfuseProjectMapper; +import com.czblood.bus.mapper.XkTransfuseApplyMapper; import com.czblood.bus.mapper.XkXtwhIllDiagnoseMapper; -import com.czblood.bus.pojo.XkBloodBreed; -import com.czblood.bus.pojo.XkDmzd; -import com.czblood.bus.pojo.XkProTransfuseProject; -import com.czblood.bus.pojo.XkXtwhIllDiagnose; +import com.czblood.bus.pojo.*; +import com.czblood.bus.pojo.inter.HisUsePasswordRequest; import com.czblood.bus.utils.BloodBankUtil; +import com.czblood.bus.utils.BloodInterfaceUtil; import com.czblood.common.core.controller.BaseController; import com.czblood.common.core.domain.Result; +import com.czblood.common.core.domain.entity.SysUser; import com.czblood.common.core.page.TableDataInfo; +import com.czblood.common.utils.SecurityUtils; import com.czblood.system.util.CommonUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -81,4 +83,35 @@ public class BloodCommonController extends BaseController { return getDataTable(xkXtwhIllDiagnoseList); } + /** + * 校验用户名和密码是否成功 + * @return + */ + @ApiOperation("校验用户名和密码是否成功") + @GetMapping("/checkLoginAffirm") + public Result checkLoginAffirm(String userId,String password){ + String hisUsedpass = bloodBankUtil.getParameterValue("HIS_usedpass"); + if(hisUsedpass.equals("Y")){ + //使用his接口验证密码 + HisUsePasswordRequest hisUsePasswordRequest = new HisUsePasswordRequest(); + hisUsePasswordRequest.setUserId(userId); + hisUsePasswordRequest.setPassword(password); + Result result = BloodInterfaceUtil.invokeBloodInterface(hisUsePasswordRequest); + if(!result.getCode().equals("0")) return result; + }else{ + //使用本地密码校验 + SysUser userInfo = bloodBankUtil.getUserInfo(userId); + boolean match = SecurityUtils.matchesPassword(password, userInfo.getPassword()); + if(!match) return new Result("1","密码错误!"); + } + return new Result("0","校验成功!"); + } + +// @ApiOperation("测试接口") +// @GetMapping("/test01") +// public Result test01(String billNo){ +// XkTransfuseApply xkTransfuseApply = xkTransfuseApplyMapper.queryOne(billNo); +// return new Result("0","查询成功!",xkTransfuseApply); +// } + } diff --git a/blood_bus/src/main/java/com/czblood/bus/mapper/XkCausalisSetMapper.java b/blood_bus/src/main/java/com/czblood/bus/mapper/XkCausalisSetMapper.java new file mode 100644 index 0000000..f28932b --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/mapper/XkCausalisSetMapper.java @@ -0,0 +1,9 @@ +package com.czblood.bus.mapper; + +import com.czblood.bus.pojo.XkCausalisSet; + +import java.util.List; + +public interface XkCausalisSetMapper { + List queryList(XkCausalisSet xkCausalisSet); +} diff --git a/blood_bus/src/main/java/com/czblood/bus/mapper/XkCheckBloodtypeMapper.java b/blood_bus/src/main/java/com/czblood/bus/mapper/XkCheckBloodtypeMapper.java new file mode 100644 index 0000000..c841fc1 --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/mapper/XkCheckBloodtypeMapper.java @@ -0,0 +1,9 @@ +package com.czblood.bus.mapper; + +import com.czblood.bus.pojo.XkCheckBloodtype; + +import java.util.List; + +public interface XkCheckBloodtypeMapper { + List queryList(XkCheckBloodtype xkCheckBloodtype); +} diff --git a/blood_bus/src/main/java/com/czblood/bus/mapper/XkTransfuseApplyCausalisMapper.java b/blood_bus/src/main/java/com/czblood/bus/mapper/XkTransfuseApplyCausalisMapper.java index a455672..460bd29 100644 --- a/blood_bus/src/main/java/com/czblood/bus/mapper/XkTransfuseApplyCausalisMapper.java +++ b/blood_bus/src/main/java/com/czblood/bus/mapper/XkTransfuseApplyCausalisMapper.java @@ -6,4 +6,7 @@ import java.util.List; public interface XkTransfuseApplyCausalisMapper { List queryList(XkTransfuseApplyCausalis xkTransfuseApplyCausalis); + List queryListByBillNo(String billNo); + void deleteByBillNo(String billNo); + void insert(XkTransfuseApplyCausalis xkTransfuseApplyCausalis); } diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/XkCausalisSet.java b/blood_bus/src/main/java/com/czblood/bus/pojo/XkCausalisSet.java new file mode 100644 index 0000000..e5207a2 --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/XkCausalisSet.java @@ -0,0 +1,45 @@ +package com.czblood.bus.pojo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel("输血指征设置") +public class XkCausalisSet { + @ApiModelProperty("输血指征代码") + private String Causalis_Code; + @ApiModelProperty("科室类型,A手术科室,B非手术科室") + private String Dept_Type; + @ApiModelProperty("判断方式,N人工判断,Y系统判断,W待定") + private String Causalis_Type; + @ApiModelProperty("血液品种") + private String Blood_Breed; + @ApiModelProperty("检验项目名称") + private String Pro_Name; + @ApiModelProperty("检验结果值1") + private String Test_Value; + @ApiModelProperty("比较表达式,>,<,≥,≤,between") + private String Result_Expression; + @ApiModelProperty("输血指征名称") + private String Causalis_Name; + @ApiModelProperty("输血合理性标志,Y合理,N不合理") + private String Causalis_Result; + @ApiModelProperty("使用标志,Y使用,N不使用") + private String Use_Sign; + @ApiModelProperty("排序") + private Integer Sequence; + private Date Last_Modified; + @ApiModelProperty("类别,对应字典当中的operatype,nooperatype") + private String Use_Type; + @ApiModelProperty("补充说明") + private String Explain; + @ApiModelProperty("检验结果值2") + private String Test_Value2; +} diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/XkCheckBloodtype.java b/blood_bus/src/main/java/com/czblood/bus/pojo/XkCheckBloodtype.java new file mode 100644 index 0000000..f2021e8 --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/XkCheckBloodtype.java @@ -0,0 +1,40 @@ +package com.czblood.bus.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class XkCheckBloodtype { + private String bill_no; + private String apply_no; + private String beinhos_id; + private String patient_name; + private String dept_id; + private String check_abo; + private String check_fabo; + private String affirm_abo; + private String check_rh; + private String antibody1; + private String antibody2; + private String antibody3; + private String affirm_antibody; + private String proteid_test; + private String test_person; + private Date test_date; + private String check_person; + private String input_person; + private Date input_date; + private String sample_id; + private String need_match; + private String bill_sort; + private String bill_status; + private String remark; + private String Sub_Blood; + private String bz1; + private String hos_id; +} diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/XkDmzd.java b/blood_bus/src/main/java/com/czblood/bus/pojo/XkDmzd.java index 5d291fe..570daa6 100644 --- a/blood_bus/src/main/java/com/czblood/bus/pojo/XkDmzd.java +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/XkDmzd.java @@ -31,4 +31,5 @@ public class XkDmzd { private String use_sign; private Date last_modified; private String exp5; + private String wordbook_code_old; } diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/XkPatientInfo.java b/blood_bus/src/main/java/com/czblood/bus/pojo/XkPatientInfo.java index 642dad1..5b90ed5 100644 --- a/blood_bus/src/main/java/com/czblood/bus/pojo/XkPatientInfo.java +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/XkPatientInfo.java @@ -53,4 +53,6 @@ public class XkPatientInfo { private Date last_modified; @ApiModelProperty("住院次数") private String times; + @ApiModelProperty("病人唯一ID") + private String beinhos_number; } diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/XkTransfuseApply.java b/blood_bus/src/main/java/com/czblood/bus/pojo/XkTransfuseApply.java index 672b7cc..734a162 100644 --- a/blood_bus/src/main/java/com/czblood/bus/pojo/XkTransfuseApply.java +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/XkTransfuseApply.java @@ -27,35 +27,54 @@ public class XkTransfuseApply { @ApiModelProperty("床号") private String patient_bed; private String casehistory_id; + @ApiModelProperty("输血史") private String transfuse_history; + @ApiModelProperty("输血反应史") private String reaction_history; + @ApiModelProperty("妊娠史") private String gestation_history; + @ApiModelProperty("分娩史") private String parturition_history; + @ApiModelProperty("移植配型史") private String match_history; + @ApiModelProperty("器官移植史") private String transplant_history; private String dept_id; @ApiModelProperty("申请时间") private Date apply_date; private String send_person; + @ApiModelProperty("收费标志") private String charge_sign; + @ApiModelProperty("输入人") private String input_person; + @ApiModelProperty("接收时间") private Date receive_date; + @ApiModelProperty("主治医师") private String attending_medic; + @ApiModelProperty("上级医师") private String treat_medic; + @ApiModelProperty("输血指征") private String causalis; + @ApiModelProperty("输血科主任") private String bank_director; + @ApiModelProperty("医务部负责人") private String medical_affairs; @ApiModelProperty("对应的条码ID") private String sample_id; + @ApiModelProperty("采集时间") private Date gather_date; + @ApiModelProperty("ABO血型") private String abo_type; + @ApiModelProperty("RH血型") private String rh_type; @ApiModelProperty("审核标志") private String check_sign; + @ApiModelProperty("审核意见") private String check_explain; - @ApiModelProperty("状态") + @ApiModelProperty("状态(A=未审核、B=已审核、C=已配血、D=已发血、Z=作废、BD=未补录、W=已补录、F=已复核血型、S=已追加配血、N=审核未通过)") private String bill_stasus; private String bill_type; + @ApiModelProperty("申请医生") private String apply_medic; @ApiModelProperty("诊断") private String diagnoses; @@ -63,42 +82,70 @@ public class XkTransfuseApply { private String intent; @ApiModelProperty("申请单类型") private String apply_type; + @ApiModelProperty("第一次输血时间") private Date use1_date; + @ApiModelProperty("第二次输血时间") private Date use2_date; + @ApiModelProperty("第三次输血时间") private Date use3_date; private String remark; + @ApiModelProperty("预约入库标志(N=否、Y=是)") private String is_plan; - @ApiModelProperty("申请单状态类型") + @ApiModelProperty("单据类别(A,B,C,D,J)") private String bill_sort; + @ApiModelProperty("是否有标本申请") private String sample_sign; + @ApiModelProperty("输入科室") private String input_dept; + @ApiModelProperty("上级医师审核标志") private String send_able; + @ApiModelProperty("上级医师审核时间") private Date medic_check_date; + @ApiModelProperty("审核医生") private String check_medic; + @ApiModelProperty("是否大量用血(N=否、Y=是)") private String is_large_use; + @ApiModelProperty("操作类型(C输血申请,Z自体血申请单,S为输血治疗单)") private String operation_type; + @ApiModelProperty("血型复核结果与申请单的血型不一致继续配血标志(N=否、Y=是)") private String bloodcheck_abnor; + @ApiModelProperty("当血型复核结果与申请单的血型不一致时,输血申请单是否可以继续进行下一步的流程操作,Y表示可以,N表示不可以") private String abnor_next; + @ApiModelProperty("是否同意配血(N=否、Y=是)") private String agreement_ink; private String exp1; private String exp2; private String exp3; private String exp4; + @ApiModelProperty("最后修改时间") private Date last_modified; + @ApiModelProperty("通知标志") private String notify_sign; + @ApiModelProperty("联系手机") private String adm_no; private BigDecimal Use1_Num; private BigDecimal Use2_Num; private BigDecimal Use3_Num; + @ApiModelProperty("科室类型(A手术科室,B非手术科室)") private String Dept_Type; private String use_type; @ApiModelProperty("单病种") private String Ill_Code; + @ApiModelProperty("手术名称") private String Ops_Name; private String isemergency; + @ApiModelProperty("是否合理(不合理N,待定W,合理Y)") private String Valid_Flag; + @ApiModelProperty("通知消息确认标志(N=否、Y=是)") private String notice_yn; + @ApiModelProperty("his系统申请单号") private String his_SerialNo; @ApiModelProperty("输血评估单") private String assess_bill_no; + @ApiModelProperty("手术名称") + private String operation_name; + @ApiModelProperty("手术级别") + private String operation_level; + @ApiModelProperty("身份证号") + private String card_no; } diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/inter/HisUsePasswordRequest.java b/blood_bus/src/main/java/com/czblood/bus/pojo/inter/HisUsePasswordRequest.java new file mode 100644 index 0000000..76bae7b --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/inter/HisUsePasswordRequest.java @@ -0,0 +1,21 @@ +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 HisUsePasswordRequest implements BloodInterfaceType { + private final String method = BloodInterfaceTypeConstants.HIS_USE_PASSWORD; + private String userId; + private String password; + + @Override + public String serializationJson() { + return JSONUtil.toJsonStr(this); + } +} diff --git a/blood_bus/src/main/java/com/czblood/bus/system/BloodSysDeptServiceImpl.java b/blood_bus/src/main/java/com/czblood/bus/system/BloodSysDeptServiceImpl.java new file mode 100644 index 0000000..01ff3e9 --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/system/BloodSysDeptServiceImpl.java @@ -0,0 +1,76 @@ +package com.czblood.bus.system; + +import com.czblood.bus.mapper.XkDmzdMapper; +import com.czblood.bus.pojo.XkDmzd; +import com.czblood.common.core.domain.entity.SysDept; +import com.czblood.system.mapper.SysDeptMapper; +import com.czblood.system.service.impl.SysDeptServiceImpl; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +@Primary +public class BloodSysDeptServiceImpl extends SysDeptServiceImpl { + + @Resource + XkDmzdMapper xkDmzdMapper; + @Resource + SysDeptMapper sysDeptMapper; + + @Override + public int insertDept(SysDept dept) { + int i = super.insertDept(dept); + if(i <= 0) return i; + //兼容逻辑,向输血系统字典表中增加科室信息 + XkDmzd xkDmzd = new XkDmzd(); + xkDmzd.setWordbook_sign("ks"); + xkDmzd.setWordbook_code(dept.getDeptCode()); + xkDmzd.setWordbook_name(dept.getDeptName()); + xkDmzd.setUse_sign("Y"); + xkDmzdMapper.insertXkDmzd(xkDmzd); + return 1; + } + + /** + * 修改保存部门信息 + * + * @param dept 部门信息 + * @return 结果 + */ + @Override + public int updateDept(SysDept dept) { + int i = super.updateDept(dept); + if(i <= 0) return i; + //兼容逻辑,向输血系统字典表中更新科室信息 + XkDmzd xkDmzd = new XkDmzd(); + xkDmzd.setWordbook_sign("ks"); + xkDmzd.setWordbook_code(dept.getDeptCode()); + xkDmzd.setWordbook_name(dept.getDeptName()); + xkDmzd.setWordbook_code_old(dept.getDeptCodeOld()); + xkDmzd.setUse_sign(dept.getStatus().equals("0")?"Y":"N"); + xkDmzdMapper.updateXkDmzd(xkDmzd); + return 1; + } + + + @Override + public int deleteDeptById(Long deptId) { + int i = super.deleteDeptById(deptId); + if(i <= 0) return i; + //兼容逻辑,向输血系统字典表中删除科室信息 + SysDept sysDept = sysDeptMapper.selectDeptById(deptId); + if (sysDept == null) return i; + XkDmzd xkDmzd = new XkDmzd(); + xkDmzd.setWordbook_sign("ks"); + xkDmzd.setWordbook_code(sysDept.getDeptCode()); + xkDmzd.setWordbook_sign(sysDept.getDelFlag().equals("0")?"Y":"N"); + xkDmzdMapper.updateXkDmzd(xkDmzd); + return 1; + } + + + + +} diff --git a/blood_bus/src/main/java/com/czblood/bus/utils/BloodBankUtil.java b/blood_bus/src/main/java/com/czblood/bus/utils/BloodBankUtil.java index 6e220df..9f9ee48 100644 --- a/blood_bus/src/main/java/com/czblood/bus/utils/BloodBankUtil.java +++ b/blood_bus/src/main/java/com/czblood/bus/utils/BloodBankUtil.java @@ -12,6 +12,8 @@ import com.czblood.bus.pojo.XkBloodBreed; import com.czblood.bus.pojo.XkDmzd; import com.czblood.bus.pojo.XkParameter; import com.czblood.common.core.domain.Result; +import com.czblood.common.core.domain.entity.SysUser; +import com.czblood.system.mapper.SysUserMapper; import com.czblood.system.util.CommonUtil; import org.springframework.data.redis.connection.ReactiveSubscription; import org.springframework.stereotype.Component; @@ -36,6 +38,8 @@ public class BloodBankUtil { CommonUtil commonUtil; @Resource XkBloodBreedMapper xkBloodBreedMapper; + @Resource + SysUserMapper sysUserMapper; /** @@ -94,9 +98,10 @@ public class BloodBankUtil { XkParameter parameterCache = OptionCache.getOptCache(parameterCode); if(parameterCache == null){ XkParameter xkParameter = xkParameterMapper.queryOne(parameterCode); - return xkParameter.getParameter_value(); + if(xkParameter == null) return ""; + return BloodBankUtil.isBank(xkParameter.getParameter_value()); }else{ - return parameterCache.getParameter_value(); + return BloodBankUtil.isBank(parameterCache.getParameter_value()); } } @@ -141,4 +146,8 @@ public class BloodBankUtil { return commonUtil.getCurrentTimeDate(); } + public SysUser getUserInfo(String userId){ + return sysUserMapper.selectUserByUserName(userId); + } + } diff --git a/blood_bus/src/main/resources/mapper/XkCausalisSetMapper.xml b/blood_bus/src/main/resources/mapper/XkCausalisSetMapper.xml new file mode 100644 index 0000000..f66857e --- /dev/null +++ b/blood_bus/src/main/resources/mapper/XkCausalisSetMapper.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/blood_bus/src/main/resources/mapper/XkCheckBloodtypeMapper.xml b/blood_bus/src/main/resources/mapper/XkCheckBloodtypeMapper.xml new file mode 100644 index 0000000..6e62ce3 --- /dev/null +++ b/blood_bus/src/main/resources/mapper/XkCheckBloodtypeMapper.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/blood_bus/src/main/resources/mapper/XkDmzdMapper.xml b/blood_bus/src/main/resources/mapper/XkDmzdMapper.xml index 4df7c30..7fad80c 100644 --- a/blood_bus/src/main/resources/mapper/XkDmzdMapper.xml +++ b/blood_bus/src/main/resources/mapper/XkDmzdMapper.xml @@ -13,7 +13,7 @@ exp5=#{exp5}, remark=#{remark}, wordbook_code=#{wordbook_code} - where wordbook_sign = #{wordbook_sign} and wordbook_code= #{wordbook_code} + where wordbook_sign = #{wordbook_sign} and wordbook_code= #{wordbook_code_old} diff --git a/blood_bus/src/main/resources/mapper/XkTransfuseApplyBeforeMapper.xml b/blood_bus/src/main/resources/mapper/XkTransfuseApplyBeforeMapper.xml index 818df64..6438173 100644 --- a/blood_bus/src/main/resources/mapper/XkTransfuseApplyBeforeMapper.xml +++ b/blood_bus/src/main/resources/mapper/XkTransfuseApplyBeforeMapper.xml @@ -3,12 +3,9 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > diff --git a/blood_bus/src/main/resources/mapper/XkTransfuseApplyCausalisMapper.xml b/blood_bus/src/main/resources/mapper/XkTransfuseApplyCausalisMapper.xml index b19758f..b2bac8d 100644 --- a/blood_bus/src/main/resources/mapper/XkTransfuseApplyCausalisMapper.xml +++ b/blood_bus/src/main/resources/mapper/XkTransfuseApplyCausalisMapper.xml @@ -2,8 +2,18 @@ + + insert into xk_transfuse_apply_causalis (Bill_No, Hos_ID, SID,Causalis_Code,Causalis_Type,Causalis_Name,Causalis_Result,Use_Flag,Upload_Flag,Explain) + values (#{bill_no}, #{hos_id}, #{sid}, #{causalis_code}, #{causalis_type}, #{causalis_name}, #{causalis_result}, #{use_flag}, #{upload_flag}, #{explain}) + + + delete from xk_transfuse_apply_causalis where Bill_No = #{bill_no} + + \ No newline at end of file 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 2e18359..e8dfa9c 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 @@ -1,18 +1,15 @@ package com.czblood.busDoctor.controller; -import com.czblood.bus.pojo.XkXtwhIllDiagnose; +import com.czblood.busDoctor.pojo.DTO.TransfuseApplyDTO; import com.czblood.busDoctor.pojo.VO.TransfuseApplyVO; import com.czblood.busDoctor.service.TransfuseApplyService; import com.czblood.common.core.controller.BaseController; import com.czblood.common.core.domain.Result; -import com.czblood.common.core.page.TableDataInfo; 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.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -40,6 +37,7 @@ public class TransfuseApplyController extends BaseController { @ApiOperation("获取病人信息") @GetMapping("/getPatInfo") public Result getPatInfo(TransfuseApplyVO transfuseApplyVO){ + transfuseApplyVO.setUser_id(getUsername()); return transfuseApplyService.getPatInfo(transfuseApplyVO); } @@ -55,5 +53,31 @@ public class TransfuseApplyController extends BaseController { return transfuseApplyService.queryApplyOne(billNo); } + @ApiOperation("保存前校验") + @PostMapping("/savePreApplyInfo") + public Result savePreApplyInfo(@RequestBody TransfuseApplyDTO transfuseApplyDTO){ + transfuseApplyDTO.setUserId(getUsername()); + return transfuseApplyService.savePreApplyInfo(transfuseApplyDTO); + } + + @ApiOperation("自体血校验") + @GetMapping("/checkSelfBlood") + public Result checkSelfBlood(String beinhos_id){ + return transfuseApplyService.checkSelfBlood(beinhos_id); + } + + @ApiOperation("校验是否符合输血指征的规则") + @PostMapping("/checkCausalis") + public Result checkCausalis(@RequestBody TransfuseApplyDTO transfuseApplyDTO){ + return transfuseApplyService.checkCausalis(transfuseApplyDTO); + } + + @ApiOperation("保存申请单") + @PostMapping("/saveApplyInfo") + public Result saveApplyInfo(@RequestBody TransfuseApplyDTO transfuseApplyDTO){ + transfuseApplyDTO.setUserId(getUsername()); + return transfuseApplyService.saveApplyInfo(transfuseApplyDTO); + } + } diff --git a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/mapper/TransfuseApplyMapper.java b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/mapper/TransfuseApplyMapper.java index a6e1440..1a4f558 100644 --- a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/mapper/TransfuseApplyMapper.java +++ b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/mapper/TransfuseApplyMapper.java @@ -1,6 +1,7 @@ package com.czblood.busDoctor.mapper; +import com.czblood.busDoctor.pojo.DTO.TransfuseApplyInfoOne; import com.czblood.busDoctor.pojo.VO.TransfuseApplyVO; import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Param; @@ -10,7 +11,9 @@ import java.util.Map; public interface TransfuseApplyMapper { List> queryList(TransfuseApplyVO transfuseApplyVO); - @MapKey("bill_no") - Map queryApplyOne(TransfuseApplyVO transfuseApplyVO); + TransfuseApplyInfoOne queryApplyOne(TransfuseApplyVO transfuseApplyVO); List> queryApplyBeforeList(@Param("dept_id") String dept_id,@Param("assess_person") String assess_person); + int queryXkCheckBloodtypeCount(@Param("beinhos_id") String beinhos_id); + String checkSameBloodType(@Param("beinhos_id") String beinhos_id,@Param("blood_breed") String blood_breed); + List> checkSelfBlood(@Param("beinhos_id") String beinhos_id); } diff --git a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/DTO/TransfuseApplyCausalisSetDTO.java b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/DTO/TransfuseApplyCausalisSetDTO.java new file mode 100644 index 0000000..fb49cb6 --- /dev/null +++ b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/DTO/TransfuseApplyCausalisSetDTO.java @@ -0,0 +1,14 @@ +package com.czblood.busDoctor.pojo.DTO; + +import com.czblood.bus.pojo.XkCausalisSet; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TransfuseApplyCausalisSetDTO { + private XkCausalisSet xkCausalisSet; + private String testValue; +} diff --git a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/DTO/TransfuseApplyDTO.java b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/DTO/TransfuseApplyDTO.java index a227e6d..25f3e4a 100644 --- a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/DTO/TransfuseApplyDTO.java +++ b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/DTO/TransfuseApplyDTO.java @@ -1,7 +1,7 @@ package com.czblood.busDoctor.pojo.DTO; -import com.czblood.bus.pojo.XkTransfuseApply; import com.czblood.bus.pojo.XkTransfuseApplyBloodbreed; +import com.czblood.bus.pojo.XkTransfuseApplyCausalis; import com.czblood.bus.pojo.XkTransfuseApplyTestitem; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; @@ -9,18 +9,18 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; -import java.util.Map; @Data @AllArgsConstructor @NoArgsConstructor public class TransfuseApplyDTO { - @ApiModelProperty("输血申请单列表信息") - private List> transfuseApplyList; @ApiModelProperty("输血申请单信息") - private Map transfuseApplyMap; + private TransfuseApplyInfoOne transfuseApplyInfoOne; @ApiModelProperty(value = "输血前lis检查项目") private List xkTransfuseApplyTestitemList; @ApiModelProperty("输血申请单品种列表") private List xkTransfuseApplyBloodbreedList; + @ApiModelProperty("输血指征列表") + private List xkTransfuseApplyCausalisList; + private String userId; } diff --git a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/DTO/TransfuseApplyInfoOne.java b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/DTO/TransfuseApplyInfoOne.java new file mode 100644 index 0000000..59ac94e --- /dev/null +++ b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/DTO/TransfuseApplyInfoOne.java @@ -0,0 +1,168 @@ +package com.czblood.busDoctor.pojo.DTO; + +import com.czblood.bus.pojo.XkTransfuseApply; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TransfuseApplyInfoOne { + @ApiModelProperty("医疗机构ID") + private String hos_id; + @ApiModelProperty("住院号") + @NotBlank(message = "住院号不能为空") + private String beinhos_id; + @ApiModelProperty("病人姓名") + @NotBlank(message = "病人姓名不能为空") + private String patient_name; + @NotBlank(message = "病人性别不能为空") + @ApiModelProperty("病人性别") + private String patient_sex; + @ApiModelProperty("病人年龄") + private String age; + @ApiModelProperty("病人生日") + private Date patient_birthday; + @ApiModelProperty("病人属地") + private String apanage; + + @ApiModelProperty("单据号") + private String bill_no; + @ApiModelProperty("病人唯一号") + private String beinhos_number; + @ApiModelProperty("病区代码") + private String zone_id; + @ApiModelProperty("床号") + private String patient_bed; + private String casehistory_id; + @ApiModelProperty("输血史") + private String transfuse_history; + @ApiModelProperty("输血反应史") + private String reaction_history; + @ApiModelProperty("妊娠史") + private String gestation_history; + @ApiModelProperty("分娩史") + private String parturition_history; + @ApiModelProperty("移植配型史") + private String match_history; + @ApiModelProperty("器官移植史") + private String transplant_history; + private String dept_id; + @ApiModelProperty("申请时间") + private Date apply_date; + private String send_person; + @ApiModelProperty("收费标志") + private String charge_sign; + @ApiModelProperty("输入人") + private String input_person; + @ApiModelProperty("接收时间") + private Date receive_date; + @ApiModelProperty("主治医师") + private String attending_medic; + @ApiModelProperty("上级医师") + private String treat_medic; + @ApiModelProperty("输血指征") + private String causalis; + @ApiModelProperty("输血科主任") + private String bank_director; + @ApiModelProperty("医务部负责人") + private String medical_affairs; + @ApiModelProperty("对应的条码ID") + private String sample_id; + @ApiModelProperty("采集时间") + private Date gather_date; + @ApiModelProperty("ABO血型") + private String abo_type; + @ApiModelProperty("RH血型") + private String rh_type; + @ApiModelProperty("审核标志") + private String check_sign; + @ApiModelProperty("审核意见") + private String check_explain; + @ApiModelProperty("状态(A=未审核、B=已审核、C=已配血、D=已发血、Z=作废、BD=未补录、W=已补录、F=已复核血型、S=已追加配血、N=审核未通过)") + private String bill_stasus; + private String bill_type; + @ApiModelProperty("申请医生") + private String apply_medic; + @ApiModelProperty("诊断") + private String diagnoses; + @ApiModelProperty("输血目的") + private String intent; + @NotBlank(message = "申请单类型不能为空") + @ApiModelProperty("申请单类型") + private String apply_type; + @ApiModelProperty("第一次输血时间") + private Date use1_date; + @ApiModelProperty("第二次输血时间") + private Date use2_date; + @ApiModelProperty("第三次输血时间") + private Date use3_date; + private String remark; + @ApiModelProperty("预约入库标志(N=否、Y=是)") + private String is_plan; + @ApiModelProperty("单据类别(A,B,C,D,J)") + private String bill_sort; + @ApiModelProperty("是否有标本申请") + private String sample_sign; + @ApiModelProperty("输入科室") + private String input_dept; + @ApiModelProperty("上级医师审核标志") + private String send_able; + @ApiModelProperty("上级医师审核时间") + private Date medic_check_date; + @ApiModelProperty("审核医生") + private String check_medic; + @ApiModelProperty("是否大量用血(N=否、Y=是)") + private String is_large_use; + @ApiModelProperty("操作类型(C输血申请,Z自体血申请单,S为输血治疗单)") + private String operation_type; + @ApiModelProperty("血型复核结果与申请单的血型不一致继续配血标志(N=否、Y=是)") + private String bloodcheck_abnor; + @ApiModelProperty("当血型复核结果与申请单的血型不一致时,输血申请单是否可以继续进行下一步的流程操作,Y表示可以,N表示不可以") + private String abnor_next; + @ApiModelProperty("是否同意配血(N=否、Y=是)") + private String agreement_ink; + private String exp1; + private String exp2; + private String exp3; + private String exp4; + @ApiModelProperty("最后修改时间") + private Date last_modified; + @ApiModelProperty("通知标志") + private String notify_sign; + @ApiModelProperty("联系手机") + private String adm_no; + private BigDecimal Use1_Num; + private BigDecimal Use2_Num; + private BigDecimal Use3_Num; + @ApiModelProperty("科室类型(A手术科室,B非手术科室)") + private String Dept_Type; + @NotBlank(message = "手术科室必须填写后面的类型") + private String use_type; + @ApiModelProperty("单病种") + private String Ill_Code; + @ApiModelProperty("手术名称") + private String Ops_Name; + private String isemergency; + @ApiModelProperty("是否合理(不合理N,待定W,合理Y)") + private String Valid_Flag; + @ApiModelProperty("通知消息确认标志(N=否、Y=是)") + private String notice_yn; + @ApiModelProperty("his系统申请单号") + private String his_SerialNo; + @ApiModelProperty("输血评估单") + private String assess_bill_no; + @ApiModelProperty("手术名称") + private String operation_name; + @ApiModelProperty("手术级别") + private String operation_level; + @ApiModelProperty("身份证号") + private String card_no; + +} diff --git a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/VO/TransfuseApplyVO.java b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/VO/TransfuseApplyVO.java index 29ee2f9..7d09252 100644 --- a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/VO/TransfuseApplyVO.java +++ b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/pojo/VO/TransfuseApplyVO.java @@ -19,4 +19,6 @@ public class TransfuseApplyVO { private String doctor_code; @ApiModelProperty("查询的单据编号") private String bill_no; + @ApiModelProperty("操作用户") + private String user_id; } 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 33660ad..53b4381 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 @@ -1,6 +1,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.TransfuseApplyVO; import com.czblood.common.core.domain.Result; @@ -12,4 +13,12 @@ public interface TransfuseApplyService { Result queryApplyOne(String billNo); Result queryApplyBeforeList(String dept_id,String assess_person); + + Result savePreApplyInfo(TransfuseApplyDTO transfuseApplyDTO); + + Result checkSelfBlood(String beinhosId); + + Result saveApplyInfo(TransfuseApplyDTO transfuseApplyDTO); + + Result checkCausalis(TransfuseApplyDTO transfuseApplyDTO); } 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 10662e7..9a5167f 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 @@ -1,19 +1,24 @@ package com.czblood.busDoctor.service.impl; -import com.czblood.bus.mapper.XkPatientInfoMapper; -import com.czblood.bus.mapper.XkTransfuseApplyBeforeMapper; -import com.czblood.bus.mapper.XkTransfuseApplyBloodbreedMapper; -import com.czblood.bus.mapper.XkTransfuseApplyTestitemMapper; +import com.czblood.bus.mapper.*; import com.czblood.bus.pojo.*; +import com.czblood.bus.utils.BloodBankUtil; +import com.czblood.bus.utils.BloodInterfaceUtil; import com.czblood.busDoctor.mapper.TransfuseApplyMapper; +import com.czblood.busDoctor.pojo.DTO.TransfuseApplyCausalisSetDTO; import com.czblood.busDoctor.pojo.DTO.TransfuseApplyDTO; +import com.czblood.busDoctor.pojo.DTO.TransfuseApplyInfoOne; import com.czblood.busDoctor.pojo.VO.TransfuseApplyVO; import com.czblood.busDoctor.service.TransfuseApplyService; +import com.czblood.busDoctor.utils.TransfuseApplyUtil; import com.czblood.common.core.domain.Result; +import com.czblood.common.core.domain.entity.SysUser; +import com.czblood.common.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -32,7 +37,14 @@ public class TransfuseApplyServiceImpl implements TransfuseApplyService { XkTransfuseApplyBeforeMapper xkTransfuseApplyBeforeMapper; @Resource XkPatientInfoMapper xkPatientInfoMapper; - + @Resource + BloodBankUtil bloodBankUtil; + @Resource + XkProTransfuseProjectMapper xkProTransfuseProjectMapper; + @Resource + XkTransfuseApplyCausalisMapper xkTransfuseApplyCausalisMapper; + @Resource + TransfuseApplyUtil transfuseApplyUtil; /** * 获取病人信息 @@ -46,15 +58,67 @@ public class TransfuseApplyServiceImpl implements TransfuseApplyService { String billNo = transfuseApplyVO.getBill_no(); if (billNo == null || billNo.equals("")) return new Result("-1", "查询的申请单号不能为空!"); XkTransfuseApplyBefore xkTransfuseApplyBefore = xkTransfuseApplyBeforeMapper.queryOne(billNo); - if (xkTransfuseApplyBefore != null) return new Result("-1", "没有查到对应的输血评估单!"); + if (xkTransfuseApplyBefore == null) return new Result("-1", "没有查到对应的输血评估单!"); String beinhosId = xkTransfuseApplyBefore.getBeinhos_id(); XkPatientInfo xkPatientInfo = xkPatientInfoMapper.queryOne(beinhosId); - if (xkPatientInfo != null) return new Result("-1"," 没有查到对应的病人信息!"); + if (xkPatientInfo == null) return new Result("-1"," 没有查到对应的病人信息!"); //将输血评估的信息写入到输血申请单 - XkTransfuseApply xkTransfuseApply = new XkTransfuseApply(); - xkTransfuseApply.setBeinhos_id(beinhosId); + String userId = transfuseApplyVO.getUser_id(); + Result result = getTransfuseApplyInfo(xkTransfuseApplyBefore,xkPatientInfo,userId); + if (!result.getCode().equals("0")) return result; + //获取输血前lis检验信息 + List xkTransfuseApplyTestitemList = xkTransfuseApplyTestitemMapper.queryList(billNo); + int count = transfuseApplyMapper.queryXkCheckBloodtypeCount(beinhosId); + String warnMsg = ""; + String code = "0"; //返回值code + if(count > 0) warnMsg = "该患者历史血型复核为亚型,请联系输血科确认!"; + if(!warnMsg.equals("")) code = "3"; + TransfuseApplyDTO transfuseApplyDTO = new TransfuseApplyDTO(); + transfuseApplyDTO.setTransfuseApplyInfoOne((TransfuseApplyInfoOne)result.getData()); + transfuseApplyDTO.setXkTransfuseApplyTestitemList(xkTransfuseApplyTestitemList); + return new Result(code,warnMsg,transfuseApplyDTO); + } - return null; + private Result getTransfuseApplyInfo(XkTransfuseApplyBefore xkTransfuseApplyBefore,XkPatientInfo xkPatientInfo,String userId) { + String beinhosId = xkTransfuseApplyBefore.getBeinhos_id(); + TransfuseApplyInfoOne transfuseApplyInfoOne = new TransfuseApplyInfoOne(); + //XkTransfuseApply xkTransfuseApply = new XkTransfuseApply(); + transfuseApplyInfoOne.setBeinhos_id(beinhosId); + transfuseApplyInfoOne.setHos_id(xkTransfuseApplyBefore.getHos_id()); + transfuseApplyInfoOne.setBeinhos_number(xkPatientInfo.getBeinhos_number()); + transfuseApplyInfoOne.setZone_id(xkTransfuseApplyBefore.getZone_id()); + transfuseApplyInfoOne.setPatient_bed(xkTransfuseApplyBefore.getPatient_bed()); + transfuseApplyInfoOne.setTransfuse_history(xkPatientInfo.getTransfuse_history()); + transfuseApplyInfoOne.setReaction_history(xkPatientInfo.getReaction_history()); + transfuseApplyInfoOne.setGestation_history(xkPatientInfo.getGestation_history()); + transfuseApplyInfoOne.setParturition_history(xkPatientInfo.getParturition_history()); + transfuseApplyInfoOne.setMatch_history(xkPatientInfo.getMatch_history()); + transfuseApplyInfoOne.setTransplant_history(xkPatientInfo.getTransplant_history()); + transfuseApplyInfoOne.setDept_id(xkTransfuseApplyBefore.getDept_id()); + transfuseApplyInfoOne.setApply_date(bloodBankUtil.getCurrentTimeDate()); + transfuseApplyInfoOne.setInput_person(userId); + transfuseApplyInfoOne.setAttending_medic(userId); + transfuseApplyInfoOne.setTreat_medic(userId); + transfuseApplyInfoOne.setAbo_type(xkPatientInfo.getAbo()); + transfuseApplyInfoOne.setRh_type(xkPatientInfo.getRh()); + transfuseApplyInfoOne.setBill_stasus("A"); + transfuseApplyInfoOne.setApply_medic(userId); + transfuseApplyInfoOne.setDiagnoses(xkTransfuseApplyBefore.getDiagnoses()); + transfuseApplyInfoOne.setApply_type("001"); //常规用血 + transfuseApplyInfoOne.setUse1_date(bloodBankUtil.getCurrentTimeDate()); + transfuseApplyInfoOne.setSample_sign("N"); + transfuseApplyInfoOne.setInput_dept(BloodBankUtil.isBank(xkTransfuseApplyBefore.getDept_id())); + transfuseApplyInfoOne.setOperation_type("C"); + transfuseApplyInfoOne.setAgreement_ink("Y"); + //xkTransfuseApply.setDept_Type(""); //这个前端传吧,而且是必填的 + transfuseApplyInfoOne.setValid_Flag("Y"); //默认是合理的 + transfuseApplyInfoOne.setNotice_yn("N"); + transfuseApplyInfoOne.setAssess_bill_no(xkTransfuseApplyBefore.getBill_no()); //输血评估单号 + transfuseApplyInfoOne.setPatient_name(xkPatientInfo.getPatient_name()); + transfuseApplyInfoOne.setPatient_sex(xkPatientInfo.getPatient_sex()); + transfuseApplyInfoOne.setAge(xkPatientInfo.getAge()); + transfuseApplyInfoOne.setApanage(xkPatientInfo.getApanage()); + return new Result("0","操作成功",transfuseApplyInfoOne); } @Override @@ -69,13 +133,15 @@ public class TransfuseApplyServiceImpl implements TransfuseApplyService { public Result queryApplyOne(String billNo) { TransfuseApplyVO transfuseApplyVO = new TransfuseApplyVO(); transfuseApplyVO.setBill_no(billNo); - Map transfuseApplyMap = transfuseApplyMapper.queryApplyOne(transfuseApplyVO); + TransfuseApplyInfoOne transfuseApplyInfoOne = transfuseApplyMapper.queryApplyOne(transfuseApplyVO); TransfuseApplyDTO transfuseApplyDTO = new TransfuseApplyDTO(); - transfuseApplyDTO.setTransfuseApplyMap(transfuseApplyMap); + transfuseApplyDTO.setTransfuseApplyInfoOne(transfuseApplyInfoOne); List xkTransfuseApplyTestitemList = xkTransfuseApplyTestitemMapper.queryList(billNo); transfuseApplyDTO.setXkTransfuseApplyTestitemList(xkTransfuseApplyTestitemList); List xkTransfuseApplyBloodbreedList = xkTransfuseApplyBloodbreedMapper.queryOne(billNo); transfuseApplyDTO.setXkTransfuseApplyBloodbreedList(xkTransfuseApplyBloodbreedList); + List xkTransfuseApplyCausalisList = xkTransfuseApplyCausalisMapper.queryListByBillNo(billNo); + transfuseApplyDTO.setXkTransfuseApplyCausalisList(xkTransfuseApplyCausalisList); return new Result("0", "查询成功", transfuseApplyDTO); } @@ -89,4 +155,139 @@ public class TransfuseApplyServiceImpl implements TransfuseApplyService { List> transfuseApplyBeforeList = transfuseApplyMapper.queryApplyBeforeList(dept_id, assess_person); return new Result("0", "查询成功", transfuseApplyBeforeList); } + + @Override + public Result savePreApplyInfo(TransfuseApplyDTO transfuseApplyDTO) { + TransfuseApplyInfoOne transfuseApplyInfoOne = transfuseApplyDTO.getTransfuseApplyInfoOne(); + List xkTransfuseApplyBloodbreedList = transfuseApplyDTO.getXkTransfuseApplyBloodbreedList(); + List xkTransfuseApplyTestitemList = transfuseApplyDTO.getXkTransfuseApplyTestitemList(); + String beinhosId = transfuseApplyInfoOne.getBeinhos_id(); + String billStasus = transfuseApplyInfoOne.getBill_stasus(); + switch (billStasus) { + case "B": + return new Result("-1","该申请单已经审核!"); + case "C": + return new Result("-1","该申请单已经配血!"); + case "D": + return new Result("-1","该申请单已经发血!"); + case "Z": + return new Result("-1","该申请单已经作废!"); + case "S": + return new Result("-1","该申请单正在增加血液!"); + } + String applyType = transfuseApplyInfoOne.getApply_type(); + if(applyType.contains("手术")){ + String operationName = transfuseApplyInfoOne.getOperation_name(); + if(StringUtils.isEmpty(operationName)){ + return new Result("-1","手术备血必须填写手术名称!"); + } + } + XkDmzd dictCacheOne = bloodBankUtil.getDictCacheOne("sqlx", applyType); + //没有开启绿色通道的单据类型 + if(!dictCacheOne.getExp2().equals("Y")){ + String sfsyzckz = BloodBankUtil.isBank(bloodBankUtil.getParameterValue("SFSYZCKZ")); + //开启职称校验 + if(sfsyzckz.equals("Y")){ + //申请单的申请医生 + Result result = checkZC(transfuseApplyInfoOne.getApply_medic()); + if(!result.getCode().equals("0")) return result; + if(Integer.parseInt(result.getData().toString()) < 2) return new Result("-1","申请医师必须具备中级或以上职称,录入的申请医师不具备该职称。"); + //申请单的上级医师 + Result result1 = checkZC(transfuseApplyInfoOne.getTreat_medic()); + if(!result1.getCode().equals("0")) return result1; + if(Integer.parseInt(result1.getData().toString()) < 3) return new Result("-1","上级医师必须具备高级职称,录入的上级医师不具备该职称。"); + XkProTransfuseProject xkProTransfuseProject = new XkProTransfuseProject(); + xkProTransfuseProject.setNeed("Y"); + List xkProTransfuseProjectList = xkProTransfuseProjectMapper.queryList(xkProTransfuseProject); + //校验检验结果是否为空 + for (XkTransfuseApplyTestitem xkTransfuseApplyTestitem : xkTransfuseApplyTestitemList) { + String itemResult = xkTransfuseApplyTestitem.getItem_result(); + String itemName = xkTransfuseApplyTestitem.getItem_name(); + XkProTransfuseProject xkProTransfuseProject2 = xkProTransfuseProjectList.stream().filter(xkProTransfuseProject1 -> xkProTransfuseProject1.getPro_name().equals(itemName)).findFirst().orElse(null); + if(xkProTransfuseProject2 != null && StringUtils.isEmpty(itemResult)) return new Result("-1","请输入"+itemName+"的检验结果!"); + } + } + } + + String agreementInk = BloodBankUtil.isBank(transfuseApplyInfoOne.getAgreement_ink()); + if(!agreementInk.equals("Y")) return new Result("-1","请先签署输血知情同意书!"); + String intent = BloodBankUtil.isBank(transfuseApplyInfoOne.getIntent()); + if(intent.equals("")) return new Result("-1","请填写输血目的!"); + + for (XkTransfuseApplyBloodbreed xkTransfuseApplyBloodbreed : xkTransfuseApplyBloodbreedList) { + String bloodBreed = xkTransfuseApplyBloodbreed.getBlood_breed(); + String preBillNo = transfuseApplyMapper.checkSameBloodType(beinhosId, bloodBreed); + //申请血型校验 + String sqxxnfwk = bloodBankUtil.getParameterValue("SQXXNFWK"); + if(!sqxxnfwk.equals("Y")){ + //申请血型不能为空 + if(StringUtils.isEmpty(bloodBreed)) return new Result("-1","请输入申请血型!"); + } + if(!StringUtils.isEmpty(preBillNo)){ + return new Result("2","当前患者存在相同的血液品种并且未审核的申请单,是否调出此单进行修改?",preBillNo); + } + } + + return null; + } + + @Override + public Result checkSelfBlood(String beinhosId) { + List> mapList = transfuseApplyMapper.checkSelfBlood(beinhosId); + String msg = ""; + for (Map stringObjectMap : mapList) { + String breedName = BloodBankUtil.isBank(stringObjectMap.get("breed_name")); + String capacity = BloodBankUtil.isBank(stringObjectMap.get("capacity")); + String unit = BloodBankUtil.isBank(stringObjectMap.get("unit")); + msg = msg + breedName + ":" + capacity + unit + ","; + } + if(msg.equals("")){ + return new Result("0","校验通过!"); + }else{ + msg = "检测到该病患尚有贮存式自体血未出库,具体如下:" + msg + "是否继续申请血液?"; + return new Result("2",msg); + } + } + + /** + * 保存申请单 + * @param transfuseApplyDTO + * @return + */ + @Override + public Result saveApplyInfo(TransfuseApplyDTO transfuseApplyDTO) { + //前置校验 + //产生申请单编号 + //校验是否是大量用血 + //保存数据 + return null; + } + + /** + * 校验是否符合输血指征的规则 + * @param transfuseApplyDTO + * @return + */ + @Override + public Result checkCausalis(TransfuseApplyDTO transfuseApplyDTO) { + //输血指征处理 + //输血指征是否输血合理,校验是否符合输血指征的规则 + //他原来的逻辑,分单据类型了,没搞懂为啥分,先统一校验吧 + return transfuseApplyUtil.checkCausalis(transfuseApplyDTO); +// if(result.getCode().equals("1")){ +// List xkCausalisSetRetList = (List)result.getData(); +// } + } + + /** + * 校验医生职称是否符合要求 + * @return + */ + public Result checkZC(String userId){ + SysUser userInfo = bloodBankUtil.getUserInfo(userId); + if(userInfo == null) return new Result("-1","用户不存在!"); + String postname = BloodBankUtil.isBank(userInfo.getPostname()); + if(postname.equals("")) postname = "0"; + return new Result("0","",postname); + } } 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 0592bab..b5355ad 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 @@ -1,14 +1,160 @@ package com.czblood.busDoctor.utils; +import cn.hutool.core.util.StrUtil; +import com.czblood.bus.mapper.XkCausalisSetMapper; +import com.czblood.bus.pojo.XkCausalisSet; +import com.czblood.bus.pojo.XkTransfuseApplyBloodbreed; +import com.czblood.bus.pojo.XkTransfuseApplyTestitem; +import com.czblood.bus.utils.BloodBankUtil; +import com.czblood.busDoctor.pojo.DTO.TransfuseApplyCausalisSetDTO; +import com.czblood.busDoctor.pojo.DTO.TransfuseApplyDTO; +import com.czblood.busDoctor.pojo.DTO.TransfuseApplyInfoOne; +import com.czblood.common.core.domain.Result; import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + @Component public class TransfuseApplyUtil { + @Resource + XkCausalisSetMapper xkCausalisSetMapper; + /** * 计算大量用血 */ public void computeLargeBlood(){ } + + + /** + * 输血指征判断是否输血合理 + * @param transfuseApplyDTO + * @return + */ + public Result checkCausalis(TransfuseApplyDTO transfuseApplyDTO){ + TransfuseApplyInfoOne transfuseApplyInfoOne = transfuseApplyDTO.getTransfuseApplyInfoOne(); + List xkTransfuseApplyBloodbreedList = transfuseApplyDTO.getXkTransfuseApplyBloodbreedList(); + String beinhosId = BloodBankUtil.isBank(transfuseApplyInfoOne.getBeinhos_id()); + String deptType = BloodBankUtil.isBank(transfuseApplyInfoOne.getDept_Type()); + String useType = BloodBankUtil.isBank(transfuseApplyInfoOne.getUse_type()); + String billNo = BloodBankUtil.isBank(transfuseApplyInfoOne.getBill_no()); + XkCausalisSet xkCausalisSet = new XkCausalisSet(); + xkCausalisSet.setUse_Sign("Y"); + xkCausalisSet.setDept_Type(deptType); + xkCausalisSet.setUse_Type(useType); + List xkCausalisSetList = xkCausalisSetMapper.queryList(xkCausalisSet); + List xkCausalisSetRetList = new ArrayList<>(); + //这个返回也是原来的逻辑 + if(beinhosId.equals("") || deptType.equals("") || useType.equals("") ) return new Result("0","字段没有填完整,无法校验!"); + List xkTransfuseApplyTestitemList = transfuseApplyDTO.getXkTransfuseApplyTestitemList(); + for (XkTransfuseApplyBloodbreed xkTransfuseApplyBloodbreed : xkTransfuseApplyBloodbreedList) { + String bloodBreed = BloodBankUtil.isBank(xkTransfuseApplyBloodbreed.getBlood_breed()); + if(bloodBreed.equals("")) continue; + List collect = xkCausalisSetList.stream().filter(xkCausalisSet1 -> xkCausalisSet1.getBlood_Breed().equals(bloodBreed)).collect(Collectors.toList()); + //校验输血指征是否合理 + //这里的写法没有完全按照原来的逻辑来,原来的逻辑太稀碎了,我按照自己的理解写了一个,后面遇到问题再改吧,原来那个逻辑真看不下去 + for (XkTransfuseApplyTestitem xkTransfuseApplyTestitem : xkTransfuseApplyTestitemList) { + String itemName = xkTransfuseApplyTestitem.getItem_name(); + String itemResult = xkTransfuseApplyTestitem.getItem_result(); + XkCausalisSet xkCausalisSet2 = calcCausalis(collect, itemName, itemResult); + if(xkCausalisSet2 != null){ + //没有校验通过的,增加数据 + TransfuseApplyCausalisSetDTO transfuseApplyCausalisSetDTO = new TransfuseApplyCausalisSetDTO(); + transfuseApplyCausalisSetDTO.setXkCausalisSet(xkCausalisSet2); + transfuseApplyCausalisSetDTO.setTestValue(itemResult); + xkCausalisSetRetList.add(transfuseApplyCausalisSetDTO); + } + } + } + if(xkCausalisSetRetList.isEmpty()){ + return new Result("0","校验成功!"); + }else{ + return new Result("1","校验失败",xkCausalisSetRetList); + } + + } + + public XkCausalisSet calcCausalis(List xkCausalisSetList, String proName,String testValue){ + //查找是否包含该指标 + List collect = xkCausalisSetList.stream().filter(xkCausalisSet -> xkCausalisSet.getPro_Name().equals(proName)).collect(Collectors.toList()); + if(collect.isEmpty()) return null; + //校验指标是否合理 + for (XkCausalisSet xkCausalisSet : collect) { + String resultExpression = xkCausalisSet.getResult_Expression(); + String testValueStandard = xkCausalisSet.getTest_Value(); + String testValueStandard2 = xkCausalisSet.getTest_Value2(); + if(!StrUtil.isNumeric(testValue)) continue; //不是数字型的不处理 + if(!StrUtil.isNumeric(testValueStandard)) continue; + if(!StrUtil.isNumeric(testValueStandard2)) continue; + String causalisResult = xkCausalisSet.getCausalis_Result(); + if(causalisResult.equals("")) continue; + if(causalisResult.equals("Y")){ + //合理范围,那么不在这个范围内的,代表需要增加说明 + switch (resultExpression) { + case ">": + if(Integer.parseInt(testValue) > Integer.parseInt(testValueStandard)) { + + }else{ + return xkCausalisSet; + } + break; + case "<": + if(Integer.parseInt(testValue) < Integer.parseInt(testValueStandard)) { + + }else { + return xkCausalisSet; + } + break; + case "≥": + if(Integer.parseInt(testValue) >= Integer.parseInt(testValueStandard)) { + + }else{ + return xkCausalisSet; + } + break; + case "≤": + if(Integer.parseInt(testValue) <= Integer.parseInt(testValueStandard)) { + + }else{ + return xkCausalisSet; + } + break; + case "between": + if(Integer.parseInt(testValue) >= Integer.parseInt(testValueStandard) && Integer.parseInt(testValue) <= Integer.parseInt(testValueStandard2)) { + + }else{ + return xkCausalisSet; + } + break; + } + }else{ + //不合理范围,代表直接返回 + switch (resultExpression) { + case ">": + if(Integer.parseInt(testValue) > Integer.parseInt(testValueStandard)) return xkCausalisSet; + break; + case "<": + if(Integer.parseInt(testValue) < Integer.parseInt(testValueStandard)) return xkCausalisSet; + break; + case "≥": + if(Integer.parseInt(testValue) >= Integer.parseInt(testValueStandard)) return xkCausalisSet; + break; + case "≤": + if(Integer.parseInt(testValue) <= Integer.parseInt(testValueStandard)) return xkCausalisSet; + break; + case "between": + if(Integer.parseInt(testValue) >= Integer.parseInt(testValueStandard) && Integer.parseInt(testValue) <= Integer.parseInt(testValueStandard2)) return xkCausalisSet; + break; + } + } + + } + + return null; + } } diff --git a/blood_bus_doctor/src/main/resources/mapper/TransfuseApplyMapper.xml b/blood_bus_doctor/src/main/resources/mapper/TransfuseApplyMapper.xml index 3621320..b89aea0 100644 --- a/blood_bus_doctor/src/main/resources/mapper/TransfuseApplyMapper.xml +++ b/blood_bus_doctor/src/main/resources/mapper/TransfuseApplyMapper.xml @@ -17,13 +17,13 @@ from xk_transfuse_apply_bloodbreed x join xk_blood_breed xx on xx.breed_code=x.blood_breed where x.bill_no=xk_transfuse_apply.bill_no FOR XML PATH('') ),2,999) as req_breed FROM xk_patient_info RIGHT OUTER JOIN xk_transfuse_apply ON xk_patient_info.beinhos_id = xk_transfuse_apply.beinhos_id WHERE ( xk_transfuse_apply.operation_type = 'C' OR ISNULL(xk_transfuse_apply.operation_type,'') = '') - and xk_transfuse_apply.apply_date > getdate() - #{day} + and xk_transfuse_apply.apply_date > getdate() - #{day} and xk_transfuse_apply.hos_id = #{hos_id} and xk_transfuse_apply.bill_stasus = #{bill_status} and xk_transfuse_apply.dept_id = #{dept_code} and (xk_transfuse_apply.dept_id = #{dept_code} or xk_transfuse_apply.input_dept = #{dept_code}) and xk_transfuse_apply.apply_medic = #{doctor_code} - SELECT top 1 xk_patient_info.hos_id, xk_patient_info.patient_name, xk_patient_info.age, @@ -92,8 +92,9 @@ FROM xk_patient_info RIGHT OUTER JOIN xk_transfuse_apply ON xk_patient_info.beinhos_id = xk_transfuse_apply.beinhos_id , xk_transfuse_apply_bloodbreed WHERE xk_transfuse_apply.bill_no = xk_transfuse_apply_bloodbreed.bill_no AND - xk_transfuse_apply.bill_no = #{bill_no} + xk_transfuse_apply.bill_no = #{bill_no} and xk_transfuse_apply.hos_id = #{hos_id} + + + + \ No newline at end of file diff --git a/blood_common/src/main/java/com/czblood/common/core/domain/entity/SysDept.java b/blood_common/src/main/java/com/czblood/common/core/domain/entity/SysDept.java index ab16fd2..318a8b9 100644 --- a/blood_common/src/main/java/com/czblood/common/core/domain/entity/SysDept.java +++ b/blood_common/src/main/java/com/czblood/common/core/domain/entity/SysDept.java @@ -53,13 +53,23 @@ public class SysDept extends BaseEntity /** 父部门名称 */ private String parentName; + @NotNull(message = "部门编码不能为空") private String deptCode; + private String deptCodeOld; private String hos_id; /** 子部门 */ private List children = new ArrayList(); + public String getDeptCodeOld() { + return deptCodeOld; + } + + public void setDeptCodeOld(String deptCodeOld) { + this.deptCodeOld = deptCodeOld; + } + public String getHos_id() { return hos_id; } @@ -221,6 +231,7 @@ public class SysDept extends BaseEntity .append("updateTime", getUpdateTime()) .append("deptCode", getDeptCode()) .append("hos_id", getHos_id()) + .append("deptCodeOld", getDeptCodeOld()) .toString(); } } diff --git a/blood_system/src/main/resources/mapper/system/SysDeptMapper.xml b/blood_system/src/main/resources/mapper/system/SysDeptMapper.xml index c21942c..ad92d1c 100644 --- a/blood_system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/blood_system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -64,7 +64,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"