Import sanitized HIS processing tools
This commit is contained in:
102
患者列表处理/数据处理工作区/09_PostgreSQL住院号非空唯一约束.sql
Normal file
102
患者列表处理/数据处理工作区/09_PostgreSQL住院号非空唯一约束.sql
Normal file
@@ -0,0 +1,102 @@
|
||||
-- 住院号为唯一定位条件:数据库强制“不能为空且唯一”。
|
||||
-- 不校验 ZY 位数格式;空住院号记录会先删除,重复住院号保留 id 最大/最新的一条。
|
||||
|
||||
DELETE FROM "Patient_Lists"
|
||||
WHERE inpatient_no IS NULL OR btrim(inpatient_no) = '';
|
||||
|
||||
DELETE FROM "Patient_Lists" p
|
||||
USING (
|
||||
SELECT record_id
|
||||
FROM (
|
||||
SELECT record_id, row_number() OVER (PARTITION BY inpatient_no ORDER BY record_id DESC) AS rn
|
||||
FROM "Patient_Lists"
|
||||
) ranked
|
||||
WHERE rn > 1
|
||||
) duplicate_rows
|
||||
WHERE p.record_id = duplicate_rows.record_id;
|
||||
|
||||
ALTER TABLE "Patient_Lists"
|
||||
DROP CONSTRAINT IF EXISTS ck_patient_lists_inpatient_no_format;
|
||||
|
||||
ALTER TABLE "Patient_Lists"
|
||||
DROP CONSTRAINT IF EXISTS uq_patient_lists_inpatient_no;
|
||||
|
||||
DROP INDEX IF EXISTS uq_patient_lists_inpatient_no;
|
||||
|
||||
ALTER TABLE "Patient_Lists"
|
||||
DROP CONSTRAINT IF EXISTS ck_patient_lists_inpatient_no_present;
|
||||
|
||||
ALTER TABLE "Patient_Lists"
|
||||
DROP CONSTRAINT IF EXISTS ck_patient_lists_inpatient_no_required;
|
||||
|
||||
ALTER TABLE "Patient_Lists"
|
||||
ALTER COLUMN inpatient_no SET NOT NULL;
|
||||
|
||||
ALTER TABLE "Patient_Lists"
|
||||
ADD CONSTRAINT ck_patient_lists_inpatient_no_present
|
||||
CHECK (btrim(inpatient_no) <> '');
|
||||
|
||||
ALTER TABLE "Patient_Lists"
|
||||
ADD CONSTRAINT uq_patient_lists_inpatient_no UNIQUE (inpatient_no);
|
||||
|
||||
COMMENT ON COLUMN "Patient_Lists".inpatient_no
|
||||
IS '住院号,不能为空且全库唯一;不强制校验格式';
|
||||
|
||||
COMMENT ON CONSTRAINT ck_patient_lists_inpatient_no_present ON "Patient_Lists"
|
||||
IS '住院号不能为空;格式不做强制校验';
|
||||
|
||||
COMMENT ON CONSTRAINT uq_patient_lists_inpatient_no ON "Patient_Lists"
|
||||
IS '保证同一个住院号只归档一条患者记录';
|
||||
|
||||
DELETE FROM "Patient_FrontPages"
|
||||
WHERE inpatient_no IS NULL OR btrim(inpatient_no) = '';
|
||||
|
||||
DELETE FROM "Patient_FrontPages" p
|
||||
USING (
|
||||
SELECT id
|
||||
FROM (
|
||||
SELECT id, row_number() OVER (PARTITION BY inpatient_no ORDER BY id DESC) AS rn
|
||||
FROM "Patient_FrontPages"
|
||||
) ranked
|
||||
WHERE rn > 1
|
||||
) duplicate_rows
|
||||
WHERE p.id = duplicate_rows.id;
|
||||
|
||||
ALTER TABLE "Patient_FrontPages"
|
||||
DROP CONSTRAINT IF EXISTS "ck_Patient_FrontPages_inpatient_no_format";
|
||||
|
||||
ALTER TABLE "Patient_FrontPages"
|
||||
DROP CONSTRAINT IF EXISTS ck_patient_frontpages_inpatient_no_format;
|
||||
|
||||
ALTER TABLE "Patient_FrontPages"
|
||||
DROP CONSTRAINT IF EXISTS uq_patient_frontpages_inpatient_no;
|
||||
|
||||
DROP INDEX IF EXISTS uq_patient_frontpages_inpatient_no;
|
||||
|
||||
ALTER TABLE "Patient_FrontPages"
|
||||
DROP CONSTRAINT IF EXISTS ck_patient_frontpages_inpatient_no_present;
|
||||
|
||||
ALTER TABLE "Patient_FrontPages"
|
||||
DROP CONSTRAINT IF EXISTS "ck_Patient_FrontPages_inpatient_no_required";
|
||||
|
||||
ALTER TABLE "Patient_FrontPages"
|
||||
DROP CONSTRAINT IF EXISTS ck_patient_frontpages_inpatient_no_required;
|
||||
|
||||
ALTER TABLE "Patient_FrontPages"
|
||||
ALTER COLUMN inpatient_no SET NOT NULL;
|
||||
|
||||
ALTER TABLE "Patient_FrontPages"
|
||||
ADD CONSTRAINT ck_patient_frontpages_inpatient_no_present
|
||||
CHECK (btrim(inpatient_no) <> '');
|
||||
|
||||
ALTER TABLE "Patient_FrontPages"
|
||||
ADD CONSTRAINT uq_patient_frontpages_inpatient_no UNIQUE (inpatient_no);
|
||||
|
||||
COMMENT ON COLUMN "Patient_FrontPages".inpatient_no
|
||||
IS '住院号,不能为空且全库唯一;不强制校验格式';
|
||||
|
||||
COMMENT ON CONSTRAINT ck_patient_frontpages_inpatient_no_present ON "Patient_FrontPages"
|
||||
IS '住院号不能为空;格式不做强制校验';
|
||||
|
||||
COMMENT ON CONSTRAINT uq_patient_frontpages_inpatient_no ON "Patient_FrontPages"
|
||||
IS '保证同一个住院号只保留一条首页记录';
|
||||
Reference in New Issue
Block a user