交叉配血

This commit is contained in:
jiangs 2026-08-05 09:08:17 +08:00
parent 5b44e56256
commit 701b75590e
15 changed files with 480 additions and 78 deletions

View File

@ -13,4 +13,5 @@ public class BloodSysLogConstants {
public static final String LOG_TYPE_SEARCH_TRANSFUSEBILL_INFO = "申请单扫描登记";
public static final String LOG_TYPE_ACCEPT_SAMPLE_INFO = "标本接收";
public static final String LOG_TYPE_SEND_SAMPLE_INFO = "标本送检";
public static final String LOG_TYPE_CHECK_BLOOD_TYPE = "血型复核";
}

View File

@ -2,8 +2,11 @@ package com.czblood.bus.mapper;
import com.czblood.bus.pojo.XkSampleInfo;
import java.util.List;
public interface XkSampleInfoMapper {
XkSampleInfo queryOne(String sampleNo);
void insert(XkSampleInfo xkSampleInfo);
void update(XkSampleInfo xkSampleInfo);
List<XkSampleInfo> queryList(XkSampleInfo xkSampleInfo);
}

View File

@ -0,0 +1,69 @@
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.math.BigDecimal;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("血液信息")
public class XkBloodInfo {
@ApiModelProperty("血液流水号")
private String blood_no;
@ApiModelProperty("产品码")
private String product_no;
@ApiModelProperty("血液批次")
private String blood_batch;
@ApiModelProperty("献血证号")
private String donor_no;
@ApiModelProperty("献血流水号")
private String donblood_no;
@ApiModelProperty("血液品种")
private String blood_breed;
@ApiModelProperty("血型")
private String blood_type;
@ApiModelProperty("RH血型")
private String rh_blood_type;
@ApiModelProperty("容量")
private BigDecimal capacity;
@ApiModelProperty("单位")
private String unit;
@ApiModelProperty("采集日期")
private Date pick_date;
@ApiModelProperty("制备日期")
private Date produce_date;
@ApiModelProperty("有效期日期")
private Date valid_date;
@ApiModelProperty("血袋种类")
private String blood_bag_kind;
@ApiModelProperty("血袋规格")
private String blood_bag_spec;
@ApiModelProperty("血袋号")
private String blood_bag_no;
@ApiModelProperty("血袋生成批号")
private String blood_bag_batch;
@ApiModelProperty("血液状态")
private String blood_status;
@ApiModelProperty("特殊处理")
private String special_deal;
@ApiModelProperty("医院ID")
private String hos_id;
@ApiModelProperty("血液来源")
private String blood_source;
@ApiModelProperty("自编号")
private String auto_no;
@ApiModelProperty("血液分类")
private String blood_sort;
@ApiModelProperty("最后修改时间")
private Date last_modified;
private String abnor_sign;
private String recycle_sign;
private String Remark;
}

View File

@ -0,0 +1,53 @@
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 XkMatchDetail {
private String bill_no;
private Integer sid;
private String hos_id;
@ApiModelProperty("血液流水号")
private String blood_no;
@ApiModelProperty("供者血型正定复核")
private String check_offer_abo;
@ApiModelProperty("供者血型反定复核")
private String check_offer_fabo;
@ApiModelProperty("供者血型正定结论")
private String offer_affirm_abo;
@ApiModelProperty("复核供者Rh(D)")
private String check_offer_rh;
@ApiModelProperty("配血医师")
private String match_medic;
@ApiModelProperty("复核医师")
private String second_match_medic;
@ApiModelProperty("配血日期")
private java.util.Date match_date;
@ApiModelProperty("配血方法")
private String match_method;
@ApiModelProperty("复核配血方法")
private String check_method;
@ApiModelProperty("主侧")
private String first_side;
@ApiModelProperty("次侧")
private String second_side;
@ApiModelProperty("配血结果")
private String result;
private String add_sign;
@ApiModelProperty("延迟天数")
private Integer delay_day;
@ApiModelProperty("延迟标志")
private Integer delay_sign;
private String product_no;
private String position_blood;
private String position_barcode;
}

View File

@ -0,0 +1,39 @@
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 XkMatchMain {
private String bill_no;
private String hos_id;
private String beinhos_id;
private String patient_name;
private String dept_id;
@ApiModelProperty("申请单号")
private String apply_no;
@ApiModelProperty("血型复核单号")
private String check_no;
@ApiModelProperty("条码号")
private String sample_id;
@ApiModelProperty("检验日期")
private Date test_date;
@ApiModelProperty("单据状态")
private String bill_status;
@ApiModelProperty("是否配型")
private String match_sign;
private String remark;
@ApiModelProperty("录入人")
private String input_person;
@ApiModelProperty("录入时间")
private Date input_date;
private Date last_modified;
}

View File

@ -92,4 +92,11 @@
<select id="queryOne" resultType="com.czblood.bus.pojo.XkSampleInfo">
select * from xk_sample_info where Sample_No = #{sampleNo}
</select>
<select id="queryList" resultType="com.czblood.bus.pojo.XkSampleInfo">
select * from xk_sample_info
<where>
<if test="sample_No != null ">and Sample_No = #{sample_No},</if>
<if test="relate_ApplyNo != null ">and relate_ApplyNo = #{relate_ApplyNo},</if>
</where>
</select>
</mapper>

View File

@ -1,12 +1,14 @@
package com.czblood.busBloodbank.controller;
import com.czblood.bus.pojo.XkCheckBloodtype;
import com.czblood.bus.constants.BloodSysLogConstants;
import com.czblood.busBloodbank.pojo.VO.HistoryQueryVO;
import com.czblood.busBloodbank.pojo.VO.XkCheckBloodtypeVO;
import com.czblood.busBloodbank.service.CheckBloodTypeService;
import com.czblood.common.annotation.Log;
import com.czblood.common.core.controller.BaseController;
import com.czblood.common.core.domain.Result;
import com.czblood.common.core.page.TableDataInfo;
import com.czblood.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
@ -35,12 +37,14 @@ public class CheckBloodTypeController extends BaseController {
return checkBloodTypeService.queryOne(billNo);
}
@Log(title = BloodSysLogConstants.LOG_TYPE_CHECK_BLOOD_TYPE, businessType = BusinessType.INSERT)
@ApiOperation("保存数据")
@PostMapping("/saveData")
public Result saveData(@RequestBody XkCheckBloodtypeVO xkCheckBloodtypeVO){
return checkBloodTypeService.saveData(xkCheckBloodtypeVO);
}
@Log(title = BloodSysLogConstants.LOG_TYPE_CHECK_BLOOD_TYPE, businessType = BusinessType.DELETE)
@ApiOperation("删除数据")
@GetMapping("/delCheckBloodTypeInfo")
public Result delCheckBloodTypeInfo(String billNo){

View File

@ -0,0 +1,32 @@
package com.czblood.busBloodbank.controller;
import com.czblood.busBloodbank.service.MatchBloodService;
import com.czblood.common.core.domain.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@Api(tags = "交叉配血")
@RestController
@RequestMapping("/bus/bloodbank/matchBlood")
public class MatchBloodController {
@Resource
MatchBloodService matchBloodService;
@ApiOperation("获取单条数据")
@GetMapping("/queryOne")
public Result queryOne(String billNo){
return matchBloodService.queryOne(billNo);
}
@ApiOperation("获取待处理单据")
@GetMapping("/queryWaitInfo")
public Result queryWaitInfo(){
return matchBloodService.queryWaitInfo();
}
}

View File

@ -0,0 +1,12 @@
package com.czblood.busBloodbank.mapper;
import java.util.Date;
import java.util.List;
import java.util.Map;
public interface MatchBloodMapper {
List<Map<String,Object>> queryWaitInfo();
int checkMatchBloodNotOut(String billNo);
int queryCheckBloodTypeCount(String applyNo);
Date querySampleMaxDate(String applyNo);
}

View File

@ -0,0 +1,8 @@
package com.czblood.busBloodbank.service;
import com.czblood.common.core.domain.Result;
public interface MatchBloodService {
Result queryWaitInfo();
Result queryOne(String billNo);
}

View File

@ -0,0 +1,57 @@
package com.czblood.busBloodbank.service.impl;
import com.czblood.bus.mapper.XkTransfuseApplyMapper;
import com.czblood.bus.pojo.XkTransfuseApply;
import com.czblood.busBloodbank.mapper.MatchBloodMapper;
import com.czblood.busBloodbank.service.MatchBloodService;
import com.czblood.busBloodbank.utils.MatchBloodUtil;
import com.czblood.common.core.domain.Result;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Service
public class MatchBloodServiceImpl implements MatchBloodService {
@Resource
private MatchBloodMapper matchBloodMapper;
@Resource
XkTransfuseApplyMapper xkTransfuseApplyMapper;
@Resource
MatchBloodUtil matchBloodUtil;
@Override
public Result queryWaitInfo() {
List<Map<String, Object>> mapList = matchBloodMapper.queryWaitInfo();
return new Result("0","获取数据成功!",mapList);
}
@Override
public Result queryOne(String billNo) {
XkTransfuseApply xkTransfuseApply = xkTransfuseApplyMapper.queryOne(billNo);
if(xkTransfuseApply == null) return new Result("-1","没有获取到申请单数据!");
if(!xkTransfuseApply.getBill_sort().equals("B")) return new Result("-1","该申请单无需配血!");
String billStatus = xkTransfuseApply.getBill_stasus();
switch (billStatus){
case "C":
return new Result("-1","该申请单已配血!");
case "Z":
return new Result("-1","该申请单已经作废!");
case "S":
return new Result("-1","该申请单已经追加配血,可直接在临床发血中发血!");
case "D":
if(matchBloodMapper.checkMatchBloodNotOut(billNo) > 0) return new Result("-1","检测到该申请单尚有配好的血液未出库,请先出库再进行配血!");
case "BD":
return new Result("-1","该申请单为补单,若要配血,请先复核血型!");
case "B":
if(matchBloodMapper.queryCheckBloodTypeCount(billNo) <= 0) return new Result("-1","该申请单尚未复核血型,请先复核血型!");
case "A":
return new Result("-1","该申请单尚未审核,请先审核!");
}
Result result = matchBloodUtil.checkSampleValid(billNo);
if(result.getCode().equals("-1")) return result;
return null;
}
}

View File

@ -0,0 +1,40 @@
package com.czblood.busBloodbank.utils;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.czblood.bus.mapper.XkSampleInfoMapper;
import com.czblood.bus.pojo.XkSampleInfo;
import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.busBloodbank.mapper.MatchBloodMapper;
import com.czblood.common.core.domain.Result;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
@Component
public class MatchBloodUtil {
@Resource
BloodBankUtil bloodBankUtil;
@Resource
MatchBloodMapper matchBloodMapper;
public Result checkSampleValid(String applyNo){
//xkSampleInfoMapper.queryOne()
//当标本采集时间与发血时间的间隔大于本参数时进行相应的操作
String overstepDay = bloodBankUtil.getParameterValue("overstep_day");
Date validDate = null;
if(overstepDay != null && !overstepDay.equals("")){
validDate = DateUtil.offsetDay(bloodBankUtil.getCurrentTimeDate(),-Integer.parseInt(overstepDay));
}
Date maxPickDate = matchBloodMapper.querySampleMaxDate(applyNo);
if (validDate != null && validDate.compareTo(maxPickDate) > 0) {
//当标本采集时间与发血时间的间隔大于“overstep_day”参数值时,执行本参数定义的操作。‘0’不操作、‘1’提醒、‘2’禁止发血
String overstepOperate = bloodBankUtil.getParameterValue("overstep_operate");
if (overstepOperate.equals("1")) return new Result("1", "请注意,标本时间已经超过了设定的有效天数");
if (overstepOperate.equals("2")) return new Result("-1", "标本时间已经超过了设定的有效天数,不可以继续操作!");
}
return new Result("0","校验通过!");
}
}

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.czblood.busBloodbank.mapper.MatchBloodMapper">
<select id="queryWaitInfo" resultType="java.util.Map">
SELECT xk_transfuse_apply.bill_no,
xk_patient_info.patient_name,
xk_transfuse_apply.dept_id ,apply_date,xk_transfuse_apply_bloodbreed.blood_breed
FROM xk_transfuse_apply LEFT OUTER JOIN xk_patient_info ON xk_transfuse_apply.beinhos_id = xk_patient_info.beinhos_id ,
xk_transfuse_apply_bloodbreed
WHERE (xk_transfuse_apply_bloodbreed.bill_no = xk_transfuse_apply.bill_no) and
(xk_transfuse_apply.check_sign = 'Y' or xk_transfuse_apply.check_sign = 'y' )and
(xk_transfuse_apply.bill_stasus = 'F' OR xk_transfuse_apply.bill_stasus = 'SF')AND
( xk_transfuse_apply.bill_sort = 'B' )AND
(xk_transfuse_apply.operation_type ='C' or isnull(xk_transfuse_apply.operation_type,'') = '') and
(xk_transfuse_apply.abnor_next = 'Y' or isnull(xk_transfuse_apply.abnor_next,'') = '')
-- 两天前 00:00:00 当天23:59:59
AND xk_transfuse_apply.apply_date between DATEADD(DD, DATEDIFF(DD,0,GETDATE())-2, 0) and DATEADD(SS, -1, DATEADD(DD, DATEDIFF(DD,0,GETDATE())+1, 0))
</select>
<select id="checkMatchBloodNotOut" resultType="java.lang.Integer">
SELECT Count ( xk_match_detail.blood_no )
FROM xk_blood_info , xk_match_detail , xk_match_main , xk_transfuse_apply , xk_dmzd
WHERE ( xk_blood_info.blood_no =xk_match_detail.blood_no ) AND
( xk_match_detail.bill_no =xk_match_main.bill_no ) AND
( xk_match_main.apply_no =xk_transfuse_apply.bill_no ) AND
( xk_transfuse_apply.bill_stasus ='D' ) AND
( xk_blood_info.blood_status ='1' ) AND
( xk_transfuse_apply.bill_no = #{billNo} ) and
( xk_match_detail.result =xk_dmzd.wordbook_code and
xk_dmzd.wordbook_sign ='pxjg' and
xk_dmzd.remark ='Y' )
</select>
<select id="queryCheckBloodTypeCount" resultType="java.lang.Integer">
SELECT COUNT(1) FROM xk_check_bloodtype Where apply_no = #{applyNo} AND remark='系统生成'
</select>
<select id="querySampleMaxDate" resultType="java.util.Date">
Select Max ( Pick_Date ) From xk_sample_info Where Relate_Applyno = #{applyNo}
</select>
</mapper>

View File

@ -47,19 +47,6 @@ if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xk_t
go
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_transfuse_apply_before' AND type = 'PK' )
BEGIN
ALTER TABLE xk_transfuse_apply_before ADD CONSTRAINT PK_xk_transfuse_apply_before PRIMARY KEY CLUSTERED (bill_no);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_transfuse_apply_testitem' AND type = 'PK' )
BEGIN
ALTER TABLE xk_transfuse_apply_testitem ADD CONSTRAINT PK_xk_transfuse_apply_testitem PRIMARY KEY CLUSTERED (bill_no,sid);
END
GO
if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xk_transfuse_apply' AND COLUMN_NAME = 'assess_bill_no')
BEGIN
alter table xk_transfuse_apply add assess_bill_no varchar(30)
@ -371,33 +358,12 @@ if not exists(select 1 from dbo.xk_dmzd where wordbook_sign = 'BASE')
END
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_dmzd' AND type = 'PK' )
BEGIN
ALTER TABLE xk_dmzd ADD CONSTRAINT PK_xk_dmzd PRIMARY KEY CLUSTERED (wordbook_sign,wordbook_code);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_patient_info' AND type = 'PK' )
BEGIN
ALTER TABLE xk_patient_info ADD CONSTRAINT PK_xk_patient_info PRIMARY KEY CLUSTERED (beinhos_id);
END
GO
if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xk_transfuse_apply_before' AND COLUMN_NAME = 'bill_status')
begin
alter table xk_transfuse_apply_before add bill_status varchar(10)
end
go
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_hos_info' AND type = 'PK' )
BEGIN
ALTER TABLE xk_hos_info ADD CONSTRAINT PK_xk_hos_info PRIMARY KEY CLUSTERED (hospital_code);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'UQ_sys_user_user_name' AND type = 'UQ')
BEGIN
ALTER TABLE sys_user ADD CONSTRAINT UQ_sys_user_user_name UNIQUE(user_name);
@ -472,43 +438,12 @@ if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xk_p
end
go
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_parameter' AND type = 'PK' )
BEGIN
ALTER TABLE xk_parameter ADD CONSTRAINT PK_xk_parameter PRIMARY KEY CLUSTERED (parameter_code);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_transfuse_apply_approval' AND type = 'PK' )
BEGIN
ALTER TABLE xk_transfuse_apply_approval ADD CONSTRAINT PK_xk_transfuse_apply_approval PRIMARY KEY CLUSTERED (bill_no);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_blood_apply_trans' AND type = 'PK' )
BEGIN
ALTER TABLE xk_blood_apply_trans ADD CONSTRAINT PK_xk_blood_apply_trans PRIMARY KEY CLUSTERED (blood_breed,sid);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_transfuse_apply_causalis' AND type = 'PK' )
BEGIN
ALTER TABLE xk_transfuse_apply_causalis ADD CONSTRAINT PK_xk_transfuse_apply_causalis PRIMARY KEY CLUSTERED (bill_no,Causalis_Code);
END
GO
if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'sys_dept' AND COLUMN_NAME = 'dept_type')
begin
alter table sys_dept add dept_type varchar(10)
end
go
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_transfuse_apply_bloodbreed' AND type = 'PK' )
BEGIN
ALTER TABLE xk_transfuse_apply_bloodbreed ADD CONSTRAINT PK_xk_transfuse_apply_bloodbreed PRIMARY KEY CLUSTERED (bill_no,blood_breed);
END
GO
if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xk_transfuse_apply' AND COLUMN_NAME = 'check_date')
BEGIN
@ -521,15 +456,3 @@ if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xk_s
alter table xk_search_transfuse_bill add hos_id varchar(10)
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_sample_info' AND type = 'PK' )
BEGIN
ALTER TABLE xk_sample_info ADD CONSTRAINT PK_xk_sample_info PRIMARY KEY CLUSTERED (Sample_No);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_check_bloodtype' AND type = 'PK' )
BEGIN
ALTER TABLE xk_check_bloodtype ADD CONSTRAINT PK_xk_check_bloodtype PRIMARY KEY CLUSTERED (bill_no);
END
GO

115
sql/updatedb_blood_pk.sql Normal file
View File

@ -0,0 +1,115 @@
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_transfuse_apply_before' AND type = 'PK' )
BEGIN
ALTER TABLE xk_transfuse_apply_before ADD CONSTRAINT PK_xk_transfuse_apply_before PRIMARY KEY CLUSTERED (bill_no);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_transfuse_apply_testitem' AND type = 'PK' )
BEGIN
ALTER TABLE xk_transfuse_apply_testitem ADD CONSTRAINT PK_xk_transfuse_apply_testitem PRIMARY KEY CLUSTERED (bill_no,sid);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_dmzd' AND type = 'PK' )
BEGIN
ALTER TABLE xk_dmzd ADD CONSTRAINT PK_xk_dmzd PRIMARY KEY CLUSTERED (wordbook_sign,wordbook_code);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_patient_info' AND type = 'PK' )
BEGIN
ALTER TABLE xk_patient_info ADD CONSTRAINT PK_xk_patient_info PRIMARY KEY CLUSTERED (beinhos_id);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_hos_info' AND type = 'PK' )
BEGIN
ALTER TABLE xk_hos_info ADD CONSTRAINT PK_xk_hos_info PRIMARY KEY CLUSTERED (hospital_code);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_parameter' AND type = 'PK' )
BEGIN
ALTER TABLE xk_parameter ADD CONSTRAINT PK_xk_parameter PRIMARY KEY CLUSTERED (parameter_code);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_transfuse_apply_approval' AND type = 'PK' )
BEGIN
ALTER TABLE xk_transfuse_apply_approval ADD CONSTRAINT PK_xk_transfuse_apply_approval PRIMARY KEY CLUSTERED (bill_no);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_blood_apply_trans' AND type = 'PK' )
BEGIN
ALTER TABLE xk_blood_apply_trans ADD CONSTRAINT PK_xk_blood_apply_trans PRIMARY KEY CLUSTERED (blood_breed,sid);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_transfuse_apply_causalis' AND type = 'PK' )
BEGIN
ALTER TABLE xk_transfuse_apply_causalis ADD CONSTRAINT PK_xk_transfuse_apply_causalis PRIMARY KEY CLUSTERED (bill_no,Causalis_Code);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_transfuse_apply_bloodbreed' AND type = 'PK' )
BEGIN
ALTER TABLE xk_transfuse_apply_bloodbreed ADD CONSTRAINT PK_xk_transfuse_apply_bloodbreed PRIMARY KEY CLUSTERED (bill_no,blood_breed);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_sample_info' AND type = 'PK' )
BEGIN
ALTER TABLE xk_sample_info ADD CONSTRAINT PK_xk_sample_info PRIMARY KEY CLUSTERED (Sample_No);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_check_bloodtype' AND type = 'PK' )
BEGIN
ALTER TABLE xk_check_bloodtype ADD CONSTRAINT PK_xk_check_bloodtype PRIMARY KEY CLUSTERED (bill_no);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_match_main' AND type = 'PK' )
BEGIN
ALTER TABLE xk_match_main ADD CONSTRAINT PK_xk_match_main PRIMARY KEY CLUSTERED (bill_no);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_blood_info' AND type = 'PK' )
BEGIN
ALTER TABLE xk_blood_info ADD CONSTRAINT PK_xk_blood_info PRIMARY KEY CLUSTERED (blood_no,product_no);
END
GO
ALTER TABLE xk_match_detail ALTER COLUMN product_no VARCHAR(18) NOT NULL;
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_match_detail' AND type = 'PK' )
BEGIN
ALTER TABLE xk_match_detail ADD CONSTRAINT PK_xk_match_detail PRIMARY KEY CLUSTERED (bill_no,blood_no,product_no);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_charge_main' AND type = 'PK' )
BEGIN
ALTER TABLE xk_charge_main ADD CONSTRAINT PK_xk_charge_main PRIMARY KEY CLUSTERED (bill_no);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_charge_detail' AND type = 'PK' )
BEGIN
ALTER TABLE xk_charge_detail ADD CONSTRAINT PK_xk_charge_detail PRIMARY KEY CLUSTERED (bill_no,sid);
END
GO