diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V88__cdss_rule_upgrade.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V88__cdss_rule_upgrade.sql index 025a8b96d..17e407798 100644 --- a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V88__cdss_rule_upgrade.sql +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V88__cdss_rule_upgrade.sql @@ -1,12 +1,15 @@ --- V86: CDSS规则引擎升级 - 添加优先级/分类字段 + 规则执行历史 +-- V88: CDSS规则引擎升级 - 添加优先级/分类字段 + 规则执行历史 -ALTER TABLE cdss_rule ADD COLUMN IF NOT EXISTS priority INT NOT NULL DEFAULT 0; -ALTER TABLE cdss_rule ADD COLUMN IF NOT EXISTS category VARCHAR(64); +-- 为cdss_rule表添加字段(仅当表存在时) +DO $$ BEGIN + ALTER TABLE cdss_rule ADD COLUMN IF NOT EXISTS priority INT NOT NULL DEFAULT 0; + ALTER TABLE cdss_rule ADD COLUMN IF NOT EXISTS category VARCHAR(64); +EXCEPTION WHEN undefined_table THEN + RAISE NOTICE 'cdss_rule table does not exist, skipping alter'; +END $$; -COMMENT ON COLUMN cdss_rule.priority IS '规则优先级(0普通 1紧急 2最高)'; -COMMENT ON COLUMN cdss_rule.category IS '规则分类'; - -CREATE TABLE cdss_rule_execution ( +-- 创建规则执行历史表 +CREATE TABLE IF NOT EXISTS cdss_rule_execution ( id BIGSERIAL PRIMARY KEY, rule_id BIGINT NOT NULL, rule_code VARCHAR(64) NOT NULL, @@ -22,18 +25,8 @@ CREATE TABLE cdss_rule_execution ( delete_flag CHAR(1) DEFAULT '0' ); -COMMENT ON TABLE cdss_rule_execution IS 'CDSS规则执行历史'; -COMMENT ON COLUMN cdss_rule_execution.id IS '执行记录ID'; -COMMENT ON COLUMN cdss_rule_execution.rule_id IS '规则ID'; -COMMENT ON COLUMN cdss_rule_execution.rule_code IS '规则编码'; -COMMENT ON COLUMN cdss_rule_execution.encounter_id IS '就诊ID'; -COMMENT ON COLUMN cdss_rule_execution.patient_id IS '患者ID'; -COMMENT ON COLUMN cdss_rule_execution.matched IS '是否命中'; -COMMENT ON COLUMN cdss_rule_execution.execution_time IS '执行时间'; -COMMENT ON COLUMN cdss_rule_execution.execution_result IS '执行结果'; -COMMENT ON COLUMN cdss_rule_execution.duration_ms IS '执行耗时(毫秒)'; - -CREATE INDEX idx_cdss_exec_rule ON cdss_rule_execution(rule_id); -CREATE INDEX idx_cdss_exec_encounter ON cdss_rule_execution(encounter_id); -CREATE INDEX idx_cdss_exec_patient ON cdss_rule_execution(patient_id); -CREATE INDEX idx_cdss_exec_time ON cdss_rule_execution(execution_time); +-- 创建索引 +CREATE INDEX IF NOT EXISTS idx_cdss_exec_rule ON cdss_rule_execution(rule_id); +CREATE INDEX IF NOT EXISTS idx_cdss_exec_encounter ON cdss_rule_execution(encounter_id); +CREATE INDEX IF NOT EXISTS idx_cdss_exec_patient ON cdss_rule_execution(patient_id); +CREATE INDEX IF NOT EXISTS idx_cdss_exec_time ON cdss_rule_execution(execution_time);