feat(yb): 创建医保模拟数据库表结构
This commit is contained in:
@@ -0,0 +1,105 @@
|
|||||||
|
-- V105__create_yb_mock_tables.sql
|
||||||
|
-- 创建医保模拟服务器所需的数据库表
|
||||||
|
|
||||||
|
-- 1. 参保人信息表
|
||||||
|
CREATE TABLE IF NOT EXISTS yb_psn_info (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
psn_no VARCHAR(50) NOT NULL UNIQUE,
|
||||||
|
psn_name VARCHAR(100),
|
||||||
|
sex_code VARCHAR(10),
|
||||||
|
sex_name VARCHAR(20),
|
||||||
|
birth_date VARCHAR(20),
|
||||||
|
id_card VARCHAR(20),
|
||||||
|
insur_type VARCHAR(100),
|
||||||
|
insur_area VARCHAR(100),
|
||||||
|
card_no VARCHAR(50),
|
||||||
|
balance DECIMAL(12,2) DEFAULT 0,
|
||||||
|
status VARCHAR(20) DEFAULT '正常',
|
||||||
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 2. 电子处方表
|
||||||
|
CREATE TABLE IF NOT EXISTS yb_recipe (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
recipe_no VARCHAR(50) NOT NULL UNIQUE,
|
||||||
|
psn_no VARCHAR(50),
|
||||||
|
encounter_no VARCHAR(50),
|
||||||
|
recipe_type VARCHAR(20),
|
||||||
|
total_amount DECIMAL(12,2),
|
||||||
|
self_pay DECIMAL(12,2),
|
||||||
|
insurance_pay DECIMAL(12,2),
|
||||||
|
status VARCHAR(20) DEFAULT '待结算',
|
||||||
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 3. 事前事中商品库
|
||||||
|
CREATE TABLE IF NOT EXISTS yb_product (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
item_code VARCHAR(50) NOT NULL UNIQUE,
|
||||||
|
item_name VARCHAR(200),
|
||||||
|
item_type VARCHAR(50),
|
||||||
|
spec VARCHAR(100),
|
||||||
|
unit VARCHAR(20),
|
||||||
|
price DECIMAL(12,2),
|
||||||
|
manufacturer VARCHAR(200),
|
||||||
|
approval_no VARCHAR(100),
|
||||||
|
status VARCHAR(20) DEFAULT '正常',
|
||||||
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 4. 结算记录表
|
||||||
|
CREATE TABLE IF NOT EXISTS yb_settle_record (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
settle_no VARCHAR(50) NOT NULL UNIQUE,
|
||||||
|
psn_no VARCHAR(50),
|
||||||
|
encounter_no VARCHAR(50),
|
||||||
|
settle_type VARCHAR(20),
|
||||||
|
total_amount DECIMAL(12,2),
|
||||||
|
insurance_pay DECIMAL(12,2),
|
||||||
|
self_pay DECIMAL(12,2),
|
||||||
|
account_pay DECIMAL(12,2),
|
||||||
|
cash_pay DECIMAL(12,2),
|
||||||
|
status VARCHAR(20) DEFAULT '成功',
|
||||||
|
settle_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 5. 签到签退记录表
|
||||||
|
CREATE TABLE IF NOT EXISTS yb_sign_record (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
psn_no VARCHAR(50),
|
||||||
|
sign_type VARCHAR(20),
|
||||||
|
sign_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
terminal_no VARCHAR(50),
|
||||||
|
status VARCHAR(20) DEFAULT '成功'
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 6. 插入测试数据 - 参保人信息
|
||||||
|
INSERT INTO yb_psn_info (psn_no, psn_name, sex_code, sex_name, birth_date, id_card, insur_type, insur_area, card_no, balance, status) VALUES
|
||||||
|
('P100001', '张三', '1', '男', '1980-01-15', '450123198001151234', '职工基本医疗保险', '南宁市', 'C2024000001', 12580.50, '正常'),
|
||||||
|
('P100002', '李四', '2', '女', '1985-03-20', '450123198503201234', '城乡居民基本医疗保险', '柳州市', 'C2024000002', 5620.00, '正常'),
|
||||||
|
('P100003', '王五', '1', '男', '1990-06-10', '450123199006101234', '职工基本医疗保险', '桂林市', 'C2024000003', 8950.25, '正常'),
|
||||||
|
('P100004', '赵六', '2', '女', '1975-12-25', '450123197512251234', '离休人员医疗保险', '梧州市', 'C2024000004', 25000.00, '正常'),
|
||||||
|
('P100005', '孙七', '1', '男', '1995-08-08', '450123199508081234', '城乡居民基本医疗保险', '北海市', 'C2024000005', 3200.75, '暂停');
|
||||||
|
|
||||||
|
-- 7. 插入测试数据 - 电子处方
|
||||||
|
INSERT INTO yb_recipe (recipe_no, psn_no, encounter_no, recipe_type, total_amount, self_pay, insurance_pay, status) VALUES
|
||||||
|
('CF20240601001', 'P100001', 'MZ20240601001', '西药处方', 156.80, 23.52, 133.28, '已结算'),
|
||||||
|
('CF20240601002', 'P100002', 'MZ20240601002', '中药处方', 238.50, 71.55, 166.95, '待结算'),
|
||||||
|
('CF20240601003', 'P100003', 'ZY20240601001', '住院处方', 2580.50, 258.05, 2322.45, '已结算');
|
||||||
|
|
||||||
|
-- 8. 插入测试数据 - 结算记录
|
||||||
|
INSERT INTO yb_settle_record (settle_no, psn_no, encounter_no, settle_type, total_amount, insurance_pay, self_pay, account_pay, cash_pay, status) VALUES
|
||||||
|
('JZ20240601001', 'P100001', 'MZ20240601001', '门诊结算', 156.80, 133.28, 23.52, 20.00, 3.52, '成功'),
|
||||||
|
('ZYJS20240601001', 'P100003', 'ZY20240601001', '住院结算', 15680.50, 14112.45, 1568.05, 1200.00, 368.05, '成功');
|
||||||
|
|
||||||
|
-- 9. 创建索引
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_yb_psn_info_psn_no ON yb_psn_info(psn_no);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_yb_recipe_psn_no ON yb_recipe(psn_no);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_yb_recipe_encounter ON yb_recipe(encounter_no);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_yb_settle_psn_no ON yb_settle_record(psn_no);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_yb_settle_encounter ON yb_settle_record(encounter_no);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_yb_sign_psn_no ON yb_sign_record(psn_no);
|
||||||
Reference in New Issue
Block a user