feat(transfer): add warehouse type support and lab specimen tables
This commit is contained in:
62
sql/create_lab_observation_table.sql
Normal file
62
sql/create_lab_observation_table.sql
Normal file
@@ -0,0 +1,62 @@
|
||||
-- =============================================
|
||||
-- 创建 lab_observation 表
|
||||
-- 用途: 实验室观察记录表
|
||||
-- 创建时间: 2026-03-09
|
||||
-- =============================================
|
||||
|
||||
-- 删除已存在的表(如果存在)
|
||||
DROP TABLE IF EXISTS lab_observation;
|
||||
|
||||
-- 创建序列(如果不存在)
|
||||
DROP SEQUENCE IF EXISTS lab_observation_id_seq;
|
||||
CREATE SEQUENCE lab_observation_id_seq
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
NO MAXVALUE
|
||||
CACHE 1;
|
||||
|
||||
-- 创建表
|
||||
CREATE TABLE lab_observation (
|
||||
id BIGINT PRIMARY KEY DEFAULT nextval('lab_observation_id_seq'),
|
||||
patient_id BIGINT,
|
||||
encounter_id BIGINT,
|
||||
specimen_id BIGINT,
|
||||
observation_definition_id BIGINT,
|
||||
observation_result TEXT,
|
||||
observation_date TIMESTAMP,
|
||||
technician_id BIGINT,
|
||||
delete_flag VARCHAR(1) DEFAULT '0',
|
||||
create_by VARCHAR(64) DEFAULT '',
|
||||
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
update_by VARCHAR(64) DEFAULT '',
|
||||
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
remark VARCHAR(500)
|
||||
);
|
||||
|
||||
-- 添加表注释
|
||||
COMMENT ON TABLE lab_observation IS '实验室观察记录表';
|
||||
|
||||
-- 添加字段注释
|
||||
COMMENT ON COLUMN lab_observation.id IS '观察记录的唯一标识符';
|
||||
COMMENT ON COLUMN lab_observation.patient_id IS '患者ID';
|
||||
COMMENT ON COLUMN lab_observation.encounter_id IS '就诊ID';
|
||||
COMMENT ON COLUMN lab_observation.specimen_id IS '关联的样本ID';
|
||||
COMMENT ON COLUMN lab_observation.observation_definition_id IS '观察定义ID';
|
||||
COMMENT ON COLUMN lab_observation.observation_result IS '观察结果,可能是文本描述或数值';
|
||||
COMMENT ON COLUMN lab_observation.observation_date IS '观察的日期和时间';
|
||||
COMMENT ON COLUMN lab_observation.technician_id IS '执行观察的技术员ID';
|
||||
COMMENT ON COLUMN lab_observation.delete_flag IS '删除状态,0-未删除,1-已删除';
|
||||
COMMENT ON COLUMN lab_observation.create_by IS '创建者';
|
||||
COMMENT ON COLUMN lab_observation.create_time IS '创建时间';
|
||||
COMMENT ON COLUMN lab_observation.update_by IS '更新者';
|
||||
COMMENT ON COLUMN lab_observation.update_time IS '更新时间';
|
||||
COMMENT ON COLUMN lab_observation.remark IS '备注';
|
||||
|
||||
-- 创建索引
|
||||
CREATE INDEX idx_lab_observation_patient_id ON lab_observation(patient_id);
|
||||
CREATE INDEX idx_lab_observation_specimen_id ON lab_observation(specimen_id);
|
||||
CREATE INDEX idx_lab_observation_observation_date ON lab_observation(observation_date);
|
||||
|
||||
-- 打印完成信息
|
||||
SELECT 'lab_observation 表创建成功!' AS message;
|
||||
86
sql/create_lab_specimen_tables.sql
Normal file
86
sql/create_lab_specimen_tables.sql
Normal file
@@ -0,0 +1,86 @@
|
||||
-- 创建 lab_specimen 检验标本表
|
||||
CREATE TABLE hisdev.lab_specimen (
|
||||
id BIGINT NOT NULL,
|
||||
service_id BIGINT,
|
||||
tenant_id BIGINT,
|
||||
specimen_definition_id BIGINT,
|
||||
collection_status_enum INTEGER,
|
||||
collection_date TIMESTAMP WITHOUT TIME ZONE,
|
||||
received_date TIMESTAMP WITHOUT TIME ZONE,
|
||||
specimen_volume VARCHAR(50),
|
||||
specimen_unit VARCHAR(20),
|
||||
create_by VARCHAR(50),
|
||||
create_time TIMESTAMP WITHOUT TIME ZONE,
|
||||
update_by VARCHAR(50),
|
||||
update_time TIMESTAMP WITH TIME ZONE,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
COMMENT ON TABLE hisdev.lab_specimen IS '检验标本表';
|
||||
COMMENT ON COLUMN hisdev.lab_specimen.id IS '主键ID';
|
||||
COMMENT ON COLUMN hisdev.lab_specimen.service_id IS '服务请求ID(关联wor_service_request)';
|
||||
COMMENT ON COLUMN hisdev.lab_specimen.tenant_id IS '租户ID';
|
||||
COMMENT ON COLUMN hisdev.lab_specimen.specimen_definition_id IS '标本定义ID(关联adm_specimen_definition)';
|
||||
COMMENT ON COLUMN hisdev.lab_specimen.collection_status_enum IS '采集状态(1:待采集 2:已采集 3:已接收)';
|
||||
COMMENT ON COLUMN hisdev.lab_specimen.collection_date IS '采集时间';
|
||||
COMMENT ON COLUMN hisdev.lab_specimen.received_date IS '接收时间';
|
||||
COMMENT ON COLUMN hisdev.lab_specimen.specimen_volume IS '标本量';
|
||||
COMMENT ON COLUMN hisdev.lab_specimen.specimen_unit IS '标本单位';
|
||||
COMMENT ON COLUMN hisdev.lab_specimen.create_by IS '创建人';
|
||||
COMMENT ON COLUMN hisdev.lab_specimen.create_time IS '创建时间';
|
||||
COMMENT ON COLUMN hisdev.lab_specimen.update_by IS '更新人';
|
||||
COMMENT ON COLUMN hisdev.lab_specimen.update_time IS '更新时间';
|
||||
|
||||
-- 创建 adm_specimen_definition 标本定义表
|
||||
CREATE TABLE hisdev.adm_specimen_definition (
|
||||
id BIGINT NOT NULL,
|
||||
code VARCHAR(50),
|
||||
name VARCHAR(100),
|
||||
specimen_name VARCHAR(100),
|
||||
delete_flag CHAR(1) DEFAULT '0',
|
||||
create_by VARCHAR(50),
|
||||
create_time TIMESTAMP WITHOUT TIME ZONE,
|
||||
update_by VARCHAR(50),
|
||||
update_time TIMESTAMP WITH TIME ZONE,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
COMMENT ON TABLE hisdev.adm_specimen_definition IS '标本定义表';
|
||||
COMMENT ON COLUMN hisdev.adm_specimen_definition.id IS '主键ID';
|
||||
COMMENT ON COLUMN hisdev.adm_specimen_definition.code IS '标本编码';
|
||||
COMMENT ON COLUMN hisdev.adm_specimen_definition.name IS '标本名称';
|
||||
COMMENT ON COLUMN hisdev.adm_specimen_definition.specimen_name IS '标本显示名称';
|
||||
COMMENT ON COLUMN hisdev.adm_specimen_definition.delete_flag IS '删除标志(0:正常 1:删除)';
|
||||
|
||||
-- 创建 adm_observation_definition 检验项目定义表
|
||||
CREATE TABLE hisdev.adm_observation_definition (
|
||||
id BIGINT NOT NULL,
|
||||
code VARCHAR(50),
|
||||
name VARCHAR(100),
|
||||
category VARCHAR(50),
|
||||
unit VARCHAR(20),
|
||||
reference_range VARCHAR(200),
|
||||
normal_range VARCHAR(200),
|
||||
delete_flag CHAR(1) DEFAULT '0',
|
||||
create_by VARCHAR(50),
|
||||
create_time TIMESTAMP WITHOUT TIME ZONE,
|
||||
update_by VARCHAR(50),
|
||||
update_time TIMESTAMP WITH TIME ZONE,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
COMMENT ON TABLE hisdev.adm_observation_definition IS '检验项目定义表';
|
||||
COMMENT ON COLUMN hisdev.adm_observation_definition.id IS '主键ID';
|
||||
COMMENT ON COLUMN hisdev.adm_observation_definition.code IS '项目编码';
|
||||
COMMENT ON COLUMN hisdev.adm_observation_definition.name IS '项目名称';
|
||||
COMMENT ON COLUMN hisdev.adm_observation_definition.category IS '项目类别';
|
||||
COMMENT ON COLUMN hisdev.adm_observation_definition.unit IS '单位';
|
||||
COMMENT ON COLUMN hisdev.adm_observation_definition.reference_range IS '参考范围';
|
||||
COMMENT ON COLUMN hisdev.adm_observation_definition.normal_range IS '正常范围';
|
||||
COMMENT ON COLUMN hisdev.adm_observation_definition.delete_flag IS '删除标志(0:正常 1:删除)';
|
||||
|
||||
-- 创建索引
|
||||
CREATE INDEX idx_lab_specimen_service_id ON hisdev.lab_specimen(service_id);
|
||||
CREATE INDEX idx_lab_specimen_specimen_def ON hisdev.lab_specimen(specimen_definition_id);
|
||||
CREATE INDEX idx_adm_specimen_definition_code ON hisdev.adm_specimen_definition(code);
|
||||
CREATE INDEX idx_adm_observation_definition_code ON hisdev.adm_observation_definition(code);
|
||||
327
sql/迁移记录-DB变更记录/202603051000_card_management_menu.sql
Normal file
327
sql/迁移记录-DB变更记录/202603051000_card_management_menu.sql
Normal file
@@ -0,0 +1,327 @@
|
||||
-- ============================================
|
||||
-- STORY #104: 增加报卡管理界面
|
||||
-- 创建时间: 2026-03-05
|
||||
-- 功能说明: 在疾病报告管理目录下增加报卡管理界面菜单
|
||||
-- ============================================
|
||||
|
||||
-- 1. 创建疾病报告管理目录(如果不存在)
|
||||
-- 注意:需要根据实际情况调整parent_id,这里假设是一级菜单
|
||||
INSERT INTO "sys_menu" (
|
||||
"menu_name",
|
||||
"parent_id",
|
||||
"order_num",
|
||||
"path",
|
||||
"component",
|
||||
"query",
|
||||
"route_name",
|
||||
"is_frame",
|
||||
"is_cache",
|
||||
"menu_type",
|
||||
"visible",
|
||||
"status",
|
||||
"perms",
|
||||
"icon",
|
||||
"create_by",
|
||||
"create_time",
|
||||
"update_by",
|
||||
"update_time",
|
||||
"remark"
|
||||
)
|
||||
SELECT
|
||||
'疾病报告管理',
|
||||
0, -- 一级菜单,根据实际情况调整
|
||||
100,
|
||||
'diseaseReport',
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
'1',
|
||||
'0',
|
||||
'M', -- M=目录
|
||||
'0',
|
||||
'0',
|
||||
NULL,
|
||||
'documentation',
|
||||
'admin',
|
||||
NOW(),
|
||||
NULL,
|
||||
NULL,
|
||||
'疾病报告管理目录'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM "sys_menu" WHERE "menu_name" = '疾病报告管理'
|
||||
);
|
||||
|
||||
-- 2. 创建报卡管理菜单
|
||||
-- 获取疾病报告管理目录的ID
|
||||
INSERT INTO "sys_menu" (
|
||||
"menu_name",
|
||||
"parent_id",
|
||||
"order_num",
|
||||
"path",
|
||||
"component",
|
||||
"query",
|
||||
"route_name",
|
||||
"is_frame",
|
||||
"is_cache",
|
||||
"menu_type",
|
||||
"visible",
|
||||
"status",
|
||||
"perms",
|
||||
"icon",
|
||||
"create_by",
|
||||
"create_time",
|
||||
"update_by",
|
||||
"update_time",
|
||||
"remark"
|
||||
)
|
||||
SELECT
|
||||
'报卡管理',
|
||||
(SELECT "menu_id" FROM "sys_menu" WHERE "menu_name" = '疾病报告管理' LIMIT 1),
|
||||
1,
|
||||
'cardManagement',
|
||||
'cardmanagement/index',
|
||||
NULL,
|
||||
'CardManagement',
|
||||
'1',
|
||||
'0',
|
||||
'C', -- C=菜单
|
||||
'0',
|
||||
'0',
|
||||
'card:management:list',
|
||||
'form',
|
||||
'admin',
|
||||
NOW(),
|
||||
NULL,
|
||||
NULL,
|
||||
'报卡管理界面'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM "sys_menu" WHERE "menu_name" = '报卡管理'
|
||||
);
|
||||
|
||||
-- 3. 创建报卡管理相关按钮权限
|
||||
-- 获取报卡管理菜单的ID
|
||||
INSERT INTO "sys_menu" (
|
||||
"menu_name",
|
||||
"parent_id",
|
||||
"order_num",
|
||||
"path",
|
||||
"component",
|
||||
"query",
|
||||
"route_name",
|
||||
"is_frame",
|
||||
"is_cache",
|
||||
"menu_type",
|
||||
"visible",
|
||||
"status",
|
||||
"perms",
|
||||
"icon",
|
||||
"create_by",
|
||||
"create_time",
|
||||
"update_by",
|
||||
"update_time",
|
||||
"remark"
|
||||
)
|
||||
SELECT
|
||||
'报卡查询',
|
||||
(SELECT "menu_id" FROM "sys_menu" WHERE "menu_name" = '报卡管理' LIMIT 1),
|
||||
1,
|
||||
'',
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
'1',
|
||||
'0',
|
||||
'F', -- F=按钮
|
||||
'0',
|
||||
'0',
|
||||
'card:management:query',
|
||||
'#',
|
||||
'admin',
|
||||
NOW(),
|
||||
NULL,
|
||||
NULL,
|
||||
''
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM "sys_menu" WHERE "perms" = 'card:management:query'
|
||||
);
|
||||
|
||||
INSERT INTO "sys_menu" (
|
||||
"menu_name",
|
||||
"parent_id",
|
||||
"order_num",
|
||||
"path",
|
||||
"component",
|
||||
"query",
|
||||
"route_name",
|
||||
"is_frame",
|
||||
"is_cache",
|
||||
"menu_type",
|
||||
"visible",
|
||||
"status",
|
||||
"perms",
|
||||
"icon",
|
||||
"create_by",
|
||||
"create_time",
|
||||
"update_by",
|
||||
"update_time",
|
||||
"remark"
|
||||
)
|
||||
SELECT
|
||||
'报卡审核',
|
||||
(SELECT "menu_id" FROM "sys_menu" WHERE "menu_name" = '报卡管理' LIMIT 1),
|
||||
2,
|
||||
'',
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
'1',
|
||||
'0',
|
||||
'F',
|
||||
'0',
|
||||
'0',
|
||||
'card:management:audit',
|
||||
'#',
|
||||
'admin',
|
||||
NOW(),
|
||||
NULL,
|
||||
NULL,
|
||||
''
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM "sys_menu" WHERE "perms" = 'card:management:audit'
|
||||
);
|
||||
|
||||
INSERT INTO "sys_menu" (
|
||||
"menu_name",
|
||||
"parent_id",
|
||||
"order_num",
|
||||
"path",
|
||||
"component",
|
||||
"query",
|
||||
"route_name",
|
||||
"is_frame",
|
||||
"is_cache",
|
||||
"menu_type",
|
||||
"visible",
|
||||
"status",
|
||||
"perms",
|
||||
"icon",
|
||||
"create_by",
|
||||
"create_time",
|
||||
"update_by",
|
||||
"update_time",
|
||||
"remark"
|
||||
)
|
||||
SELECT
|
||||
'报卡导出',
|
||||
(SELECT "menu_id" FROM "sys_menu" WHERE "menu_name" = '报卡管理' LIMIT 1),
|
||||
3,
|
||||
'',
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
'1',
|
||||
'0',
|
||||
'F',
|
||||
'0',
|
||||
'0',
|
||||
'card:management:export',
|
||||
'#',
|
||||
'admin',
|
||||
NOW(),
|
||||
NULL,
|
||||
NULL,
|
||||
''
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM "sys_menu" WHERE "perms" = 'card:management:export'
|
||||
);
|
||||
|
||||
-- 4. 创建数据库表(如果不存在)
|
||||
-- 传染病报卡表
|
||||
CREATE TABLE IF NOT EXISTS "infectious_card" (
|
||||
"id" BIGINT PRIMARY KEY,
|
||||
"card_no" VARCHAR(20) UNIQUE,
|
||||
"visit_id" BIGINT,
|
||||
"diag_id" BIGINT,
|
||||
"pat_id" BIGINT,
|
||||
"id_type" INTEGER,
|
||||
"id_no" VARCHAR(30),
|
||||
"pat_name" VARCHAR(50),
|
||||
"parent_name" VARCHAR(50),
|
||||
"sex" CHAR(1),
|
||||
"birthday" DATE,
|
||||
"age" INTEGER,
|
||||
"age_unit" CHAR(1),
|
||||
"workplace" VARCHAR(100),
|
||||
"phone" VARCHAR(20),
|
||||
"contact_phone" VARCHAR(20),
|
||||
"address_prov" VARCHAR(50),
|
||||
"address_city" VARCHAR(50),
|
||||
"address_county" VARCHAR(50),
|
||||
"address_town" VARCHAR(50),
|
||||
"address_village" VARCHAR(80),
|
||||
"address_house" VARCHAR(40),
|
||||
"patientbelong" VARCHAR(20),
|
||||
"occupation" VARCHAR(20),
|
||||
"disease_code" VARCHAR(10),
|
||||
"disease_name" VARCHAR(100),
|
||||
"disease_subtype" VARCHAR(50),
|
||||
"other_disease" VARCHAR(100),
|
||||
"disease_type" CHAR(1),
|
||||
"onset_date" DATE,
|
||||
"diag_date" TIMESTAMP,
|
||||
"death_date" DATE,
|
||||
"revised_disease_name" VARCHAR(100),
|
||||
"return_reason" VARCHAR(200),
|
||||
"report_org" VARCHAR(100),
|
||||
"report_org_phone" VARCHAR(20),
|
||||
"report_doc" VARCHAR(50),
|
||||
"report_date" DATE,
|
||||
"status" CHAR(1) DEFAULT '0',
|
||||
"fail_msg" VARCHAR(500),
|
||||
"xml_content" TEXT,
|
||||
"card_name_code" INTEGER,
|
||||
"registration_source" INTEGER,
|
||||
"dept_id" BIGINT,
|
||||
"dept_name" VARCHAR(100),
|
||||
"doctor_id" BIGINT,
|
||||
"create_by" VARCHAR(64),
|
||||
"create_time" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
"update_by" VARCHAR(64),
|
||||
"update_time" TIMESTAMP,
|
||||
"remark" VARCHAR(500)
|
||||
);
|
||||
|
||||
-- 审核记录表
|
||||
CREATE TABLE IF NOT EXISTS "infectious_audit" (
|
||||
"audit_id" BIGINT PRIMARY KEY,
|
||||
"card_id" BIGINT NOT NULL,
|
||||
"audit_seq" INTEGER NOT NULL,
|
||||
"audit_type" CHAR(1) NOT NULL,
|
||||
"audit_status_from" CHAR(1) NOT NULL,
|
||||
"audit_status_to" CHAR(1) NOT NULL,
|
||||
"audit_time" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"auditor_id" VARCHAR(20) NOT NULL,
|
||||
"auditor_name" VARCHAR(50) NOT NULL,
|
||||
"audit_opinion" TEXT,
|
||||
"reason_for_return" TEXT,
|
||||
"fail_reason_code" VARCHAR(20),
|
||||
"fail_reason_desc" TEXT,
|
||||
"is_batch" BOOLEAN DEFAULT FALSE,
|
||||
"batch_size" INTEGER DEFAULT 1,
|
||||
"create_by" VARCHAR(64),
|
||||
"create_time" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
"update_by" VARCHAR(64),
|
||||
"update_time" TIMESTAMP,
|
||||
"remark" VARCHAR(500)
|
||||
);
|
||||
|
||||
-- 创建索引
|
||||
CREATE INDEX IF NOT EXISTS idx_infectious_card_no ON "infectious_card"("card_no");
|
||||
CREATE INDEX IF NOT EXISTS idx_infectious_card_status ON "infectious_card"("status");
|
||||
CREATE INDEX IF NOT EXISTS idx_infectious_card_create_time ON "infectious_card"("create_time");
|
||||
CREATE INDEX IF NOT EXISTS idx_infectious_audit_card_id ON "infectious_audit"("card_id");
|
||||
|
||||
-- 添加迁移记录
|
||||
INSERT INTO __MigrationsHistory (MigrationId, ProductVersion)
|
||||
VALUES ('202603051000_card_management_menu', '1.0.0')
|
||||
ON CONFLICT DO NOTHING;
|
||||
Reference in New Issue
Block a user