feat(transfer): add warehouse type support and lab specimen tables
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "openhis",
|
"name": "openhis",
|
||||||
"version": "3.8.8",
|
"version": "3.8.9",
|
||||||
"description": "OpenHIS管理系统",
|
"description": "OpenHIS管理系统",
|
||||||
"author": "OpenHIS",
|
"author": "OpenHIS",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -516,6 +516,7 @@ import {
|
|||||||
getPharmacyList,
|
getPharmacyList,
|
||||||
getTransferProductDetail,
|
getTransferProductDetail,
|
||||||
getTransferProductDetails,
|
getTransferProductDetails,
|
||||||
|
getWarehouseList,
|
||||||
productTransferApproved,
|
productTransferApproved,
|
||||||
reject,
|
reject,
|
||||||
submitApproval,
|
submitApproval,
|
||||||
@@ -775,6 +776,17 @@ function handleChangePurposeTypeEnum(value, type) {
|
|||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
console.error('Error fetching dispensary list:', error);
|
console.error('Error fetching dispensary list:', error);
|
||||||
});
|
});
|
||||||
|
} else if (value == 17) {
|
||||||
|
// 耗材库类型
|
||||||
|
getWarehouseList().then((res) => {
|
||||||
|
purposeTypeListOptions.value = res.data;
|
||||||
|
if (!route.query.supplyBusNo && !type) {
|
||||||
|
receiptHeaderForm.purposeLocationId = '';
|
||||||
|
receiptHeaderForm.purposeLocationId1 = '';
|
||||||
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('Error fetching warehouse list:', error);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
purposeTypeListOptions.value = [];
|
purposeTypeListOptions.value = [];
|
||||||
}
|
}
|
||||||
@@ -801,6 +813,17 @@ function handleChangeSourceTypeEnum(value, type) {
|
|||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
console.error('Error fetching dispensary list:', error);
|
console.error('Error fetching dispensary list:', error);
|
||||||
});
|
});
|
||||||
|
} else if (value == 17) {
|
||||||
|
// 耗材库类型
|
||||||
|
getWarehouseList().then((res) => {
|
||||||
|
sourceTypeListOptions.value = res.data;
|
||||||
|
if (!route.query.supplyBusNo && !type) {
|
||||||
|
receiptHeaderForm.sourceLocationId = '';
|
||||||
|
receiptHeaderForm.sourceLocationId1 = '';
|
||||||
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('Error fetching warehouse list:', error);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
sourceTypeListOptions.value = [];
|
sourceTypeListOptions.value = [];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -123,6 +123,14 @@ export function getDispensaryList() {
|
|||||||
method: 'get',
|
method: 'get',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取耗材库列表
|
||||||
|
export function getWarehouseList() {
|
||||||
|
return request({
|
||||||
|
url: '/app-common/warehouse-list',
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
}
|
||||||
// 获取仓库药房列表
|
// 获取仓库药房列表
|
||||||
export function getpharmacyCabinetList() {
|
export function getpharmacyCabinetList() {
|
||||||
return request({
|
return request({
|
||||||
|
|||||||
@@ -616,6 +616,7 @@ import {
|
|||||||
getInit,
|
getInit,
|
||||||
getPharmacyList,
|
getPharmacyList,
|
||||||
getTransferProductDetail,
|
getTransferProductDetail,
|
||||||
|
getWarehouseList,
|
||||||
productTransferApproved,
|
productTransferApproved,
|
||||||
reject,
|
reject,
|
||||||
submitApproval,
|
submitApproval,
|
||||||
@@ -1148,6 +1149,15 @@ function handleChangePurposeTypeEnum(value, type) {
|
|||||||
receiptHeaderForm.purposeLocationId1 = '';
|
receiptHeaderForm.purposeLocationId1 = '';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else if (value == 17) {
|
||||||
|
// 耗材库类型
|
||||||
|
getWarehouseList().then((res) => {
|
||||||
|
purposeTypeListOptions.value = res.data;
|
||||||
|
if (!route.query.supplyBusNo && !type) {
|
||||||
|
receiptHeaderForm.purposeLocationId = '';
|
||||||
|
receiptHeaderForm.purposeLocationId1 = '';
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1169,6 +1179,15 @@ function handleChangeSourceTypeEnum(value, type) {
|
|||||||
receiptHeaderForm.sourceLocationId1 = '';
|
receiptHeaderForm.sourceLocationId1 = '';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else if (value == 17) {
|
||||||
|
// 耗材库类型
|
||||||
|
getWarehouseList().then((res) => {
|
||||||
|
sourceTypeListOptions.value = res.data;
|
||||||
|
if (!route.query.supplyBusNo && !type) {
|
||||||
|
receiptHeaderForm.sourceLocationId = '';
|
||||||
|
receiptHeaderForm.sourceLocationId1 = '';
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
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