"""initial_tables Revision ID: 001 Revises: Create Date: 2026-02-24 20:58:00.000000 """ import sqlalchemy as sa from alembic import op # revision identifiers, used by Alembic. revision = "001" down_revision = None branch_labels = None depends_on = None def upgrade() -> None: op.create_table( "patient_analyses", sa.Column("id", sa.String(length=36), nullable=False), sa.Column("request_id", sa.String(length=64), nullable=False), sa.Column("biomarkers", sa.JSON(), nullable=False), sa.Column("patient_context", sa.JSON(), nullable=True), sa.Column("predicted_disease", sa.String(length=128), nullable=False), sa.Column("confidence", sa.Float(), nullable=False), sa.Column("probabilities", sa.JSON(), nullable=True), sa.Column("analysis_result", sa.JSON(), nullable=True), sa.Column("safety_alerts", sa.JSON(), nullable=True), sa.Column("sop_version", sa.String(length=64), nullable=True), sa.Column("processing_time_ms", sa.Float(), nullable=False), sa.Column("model_provider", sa.String(length=32), nullable=True), sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False), sa.PrimaryKeyConstraint("id"), ) op.create_index(op.f("ix_patient_analyses_request_id"), "patient_analyses", ["request_id"], unique=True) op.create_table( "medical_documents", sa.Column("id", sa.String(length=36), nullable=False), sa.Column("title", sa.String(length=512), nullable=False), sa.Column("source", sa.String(length=512), nullable=False), sa.Column("source_type", sa.String(length=32), nullable=False), sa.Column("authors", sa.Text(), nullable=True), sa.Column("abstract", sa.Text(), nullable=True), sa.Column("content_hash", sa.String(length=64), nullable=True), sa.Column("page_count", sa.Integer(), nullable=True), sa.Column("chunk_count", sa.Integer(), nullable=True), sa.Column("parse_status", sa.String(length=32), nullable=False), sa.Column("metadata_json", sa.JSON(), nullable=True), sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False), sa.Column("indexed_at", sa.DateTime(timezone=True), nullable=True), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("content_hash"), ) op.create_index(op.f("ix_medical_documents_title"), "medical_documents", ["title"], unique=False) op.create_table( "sop_versions", sa.Column("id", sa.String(length=36), nullable=False), sa.Column("version_tag", sa.String(length=64), nullable=False), sa.Column("parameters", sa.JSON(), nullable=False), sa.Column("evaluation_scores", sa.JSON(), nullable=True), sa.Column("parent_version", sa.String(length=64), nullable=True), sa.Column("is_active", sa.Boolean(), nullable=False), sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False), sa.PrimaryKeyConstraint("id"), ) op.create_index(op.f("ix_sop_versions_version_tag"), "sop_versions", ["version_tag"], unique=True) def downgrade() -> None: op.drop_index(op.f("ix_sop_versions_version_tag"), table_name="sop_versions") op.drop_table("sop_versions") op.drop_index(op.f("ix_medical_documents_title"), table_name="medical_documents") op.drop_table("medical_documents") op.drop_index(op.f("ix_patient_analyses_request_id"), table_name="patient_analyses") op.drop_table("patient_analyses")