50 lines
2.2 KiB
SQL
50 lines
2.2 KiB
SQL
-- 诊疗记录系统数据库表
|
||
-- 包含医生诊疗记录及紧急程度评估
|
||
|
||
-- 先删除旧表以确保重新部署
|
||
DROP TABLE IF EXISTS public.ec_doctor_consultations CASCADE;
|
||
|
||
-- 创建诊疗记录表
|
||
CREATE TABLE public.ec_doctor_consultations (
|
||
id SERIAL PRIMARY KEY,
|
||
patient_name VARCHAR(100) NOT NULL,
|
||
consultation_date DATE NOT NULL DEFAULT CURRENT_DATE,
|
||
diagnosis TEXT NOT NULL,
|
||
urgency VARCHAR(20) NOT NULL DEFAULT 'normal', -- urgency: emergency, urgent, normal
|
||
doctor_id UUID, -- 可选:关联医生ID
|
||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
-- 添加字段注释
|
||
COMMENT ON COLUMN public.ec_doctor_consultations.urgency IS '紧急程度: emergency (红色), urgent (橙色), normal (普通)';
|
||
|
||
-- 插入初始化测试数据
|
||
INSERT INTO public.ec_doctor_consultations (patient_name, consultation_date, diagnosis, urgency)
|
||
VALUES
|
||
('张三', '2024-01-15', '感冒,发热,建议休息多喝水', 'normal'),
|
||
('李四', '2024-01-14', '高血压,建议定期检查', 'urgent'),
|
||
('王五', '2024-01-16', '急性胸痛,疑心肌梗死,需紧急处置', 'emergency');
|
||
|
||
-- 创建常用查询索引
|
||
CREATE INDEX IF NOT EXISTS idx_consultation_patient_name ON public.ec_doctor_consultations(patient_name);
|
||
CREATE INDEX IF NOT EXISTS idx_consultation_date ON public.ec_doctor_consultations(consultation_date);
|
||
CREATE INDEX IF NOT EXISTS idx_consultation_urgency ON public.ec_doctor_consultations(urgency);
|
||
|
||
-- 启用行级安全 (RLS)
|
||
ALTER TABLE public.ec_doctor_consultations ENABLE ROW LEVEL SECURITY;
|
||
|
||
-- 创建基本的安全策略 (允许所有认证用户读取,实际生产应根据角色细分)
|
||
DROP POLICY IF EXISTS "允许认证用户查看诊疗记录" ON public.ec_doctor_consultations;
|
||
CREATE POLICY "允许认证用户查看诊疗记录" ON public.ec_doctor_consultations
|
||
FOR SELECT
|
||
TO authenticated
|
||
USING (true);
|
||
|
||
-- 即使在本地预览模式下,也允许匿名访问(仅限测试)
|
||
DROP POLICY IF EXISTS "允许匿名查询测试数据" ON public.ec_doctor_consultations;
|
||
CREATE POLICY "允许匿名查询测试数据" ON public.ec_doctor_consultations
|
||
FOR SELECT
|
||
TO anon
|
||
USING (true);
|