-- 1. 创建 doc_definition 表主键自增序列
CREATE SEQUENCE doc_definition_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

-- 2. 创建文书定义表（doc_definition）
CREATE TABLE "doc_definition" (
  -- 主键ID
  "id" int8 NOT NULL DEFAULT nextval('doc_definition_id_seq'::regclass),
  -- 文书名称
  "name" varchar(200) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying,
  -- 文书版本号
  "version" varchar(50) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
  -- 文书类型（一级菜单）枚举值（允许NULL）
  "primary_menu_enum" int4,
  -- 文书类型（二级菜单）
  "sub_menu" varchar(100) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
  -- 文书业务编码
  "bus_no" varchar(100) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying,
  -- Vue Router路径
  "vue_router" varchar(100) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying,
  -- 所属医院ID
  "hospital_id" int8 NOT NULL,
  -- 显示顺序
  "display_order" int4,
  -- 是否有效 0-有效 1-无效 
  "is_valid" int4,
  -- 使用范围枚举值（允许NULL）
  "use_range_enum" int4,
  -- 医生权限枚举值（允许NULL）
  "doctor_permission_enum" int4,
  -- 护士权限枚举值（允许NULL）
  "nursing_permission_enum" int4,
  -- 医技权限枚举值（允许NULL）
  "medical_permission_enum" int4,
  -- 药剂师权限枚举值（允许NULL）
  "pharmacist_permission_enum" int4,
  -- 通用审计字段
  "tenant_id" int8 NOT NULL,
  "delete_flag" char(1) COLLATE "pg_catalog"."default" NOT NULL DEFAULT '0',
  "create_by" varchar(32) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying,
  "create_time" timestamptz(6) NOT NULL,
  "update_by" varchar(32) COLLATE "pg_catalog"."default",
  "update_time" timestamptz(6),
  
  -- 主键约束
  CONSTRAINT "doc_definition_pkey" PRIMARY KEY ("id")
);

-- 3. 设置表所有者
ALTER TABLE "doc_definition"
  OWNER TO "postgres";

-- 4. 表和字段注释
COMMENT ON TABLE "doc_definition" IS '文书定义表：存储门诊病历、体温单、患者护理记录单等文书的定义信息';

COMMENT ON COLUMN "doc_definition"."id" IS 'ID';
COMMENT ON COLUMN "doc_definition"."name" IS '文书名称';
COMMENT ON COLUMN "doc_definition"."version" IS '文书的版本号';
COMMENT ON COLUMN "doc_definition"."primary_menu_enum" IS '文书类型（一级菜单），从枚举中获取 DocTypeEnum（允许NULL）';
COMMENT ON COLUMN "doc_definition"."sub_menu" IS '文书类型（二级菜单），自定义';
COMMENT ON COLUMN "doc_definition"."bus_no" IS '文书业务编码（busNo），在新建时由系统自动生成';
COMMENT ON COLUMN "doc_definition"."vue_router" IS 'Vue Router路径';
COMMENT ON COLUMN "doc_definition"."hospital_id" IS '所属医院ID';
COMMENT ON COLUMN "doc_definition"."display_order" IS '显示顺序';
COMMENT ON COLUMN "doc_definition"."is_valid" IS '是否有效 0-有效 1-无效';
COMMENT ON COLUMN "doc_definition"."use_range_enum" IS '使用范围：0-暂不使用 1-全院使用 2-指定科室使用（允许NULL）';
COMMENT ON COLUMN "doc_definition"."doctor_permission_enum" IS '医生权限：0-不限制 1-查看 2-编辑（允许NULL）';
COMMENT ON COLUMN "doc_definition"."nursing_permission_enum" IS '护士权限：0-不限制 1-查看 2-编辑（允许NULL）';
COMMENT ON COLUMN "doc_definition"."medical_permission_enum" IS '医技权限：0-不限制 1-查看 2-编辑（允许NULL）';
COMMENT ON COLUMN "doc_definition"."pharmacist_permission_enum" IS '药剂师权限：0-不限制 1-查看 2-编辑（允许NULL）';
COMMENT ON COLUMN "doc_definition"."tenant_id" IS '租户ID';
COMMENT ON COLUMN "doc_definition"."delete_flag" IS '删除状态：0-未删除，1-已删除';
COMMENT ON COLUMN "doc_definition"."create_by" IS '创建人';
COMMENT ON COLUMN "doc_definition"."create_time" IS '创建时间';
COMMENT ON COLUMN "doc_definition"."update_by" IS '更新人';
COMMENT ON COLUMN "doc_definition"."update_time" IS '更新时间';

-- 5. 索引设计
--CREATE INDEX "idx_doc_definition_tenant_hospital" ON "doc_definition" ("tenant_id", "hospital_id");
CREATE INDEX "idx_doc_definition_primary_menu" ON "doc_definition" ("primary_menu_enum");
CREATE INDEX "idx_doc_definition_display_order" ON "doc_definition" ("display_order");




-- 向迁移历史表插入记录
INSERT INTO __MigrationsHistory (MigrationId, ProductVersion)
VALUES ('202508181333 doc_definition', '1.0.0');