48 lines
1.7 KiB
MySQL
48 lines
1.7 KiB
MySQL
|
|
-- CreateTable
|
||
|
|
CREATE TABLE "patients" (
|
||
|
|
"id" TEXT NOT NULL,
|
||
|
|
"organizationId" TEXT NOT NULL,
|
||
|
|
"firstName" TEXT NOT NULL,
|
||
|
|
"lastName" TEXT NOT NULL,
|
||
|
|
"phone" TEXT,
|
||
|
|
"email" TEXT,
|
||
|
|
"dateOfBirth" TIMESTAMP(3),
|
||
|
|
"notes" TEXT,
|
||
|
|
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||
|
|
|
||
|
|
CONSTRAINT "patients_pkey" PRIMARY KEY ("id")
|
||
|
|
);
|
||
|
|
|
||
|
|
-- CreateTable
|
||
|
|
CREATE TABLE "patient_treatment_histories" (
|
||
|
|
"id" TEXT NOT NULL,
|
||
|
|
"patientId" TEXT NOT NULL,
|
||
|
|
"title" TEXT NOT NULL,
|
||
|
|
"status" TEXT NOT NULL,
|
||
|
|
"treatmentAt" TIMESTAMP(3) NOT NULL,
|
||
|
|
"tooth" TEXT,
|
||
|
|
"notes" TEXT,
|
||
|
|
"totalCost" DOUBLE PRECISION,
|
||
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||
|
|
|
||
|
|
CONSTRAINT "patient_treatment_histories_pkey" PRIMARY KEY ("id")
|
||
|
|
);
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "patients_organizationId_createdAt_idx" ON "patients"("organizationId", "createdAt");
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "patients_organizationId_lastName_firstName_idx" ON "patients"("organizationId", "lastName", "firstName");
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "patient_treatment_histories_patientId_treatmentAt_idx" ON "patient_treatment_histories"("patientId", "treatmentAt");
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE "patients" ADD CONSTRAINT "patients_organizationId_fkey" FOREIGN KEY ("organizationId") REFERENCES "organizations"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE "patient_treatment_histories" ADD CONSTRAINT "patient_treatment_histories_patientId_fkey" FOREIGN KEY ("patientId") REFERENCES "patients"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|