Files
akmon/ec_doctor.sql
2026-01-20 08:04:15 +08:00

50 lines
2.2 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 诊疗记录系统数据库表
-- 包含医生诊疗记录及紧急程度评估
-- 先删除旧表以确保重新部署
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);