Changeset c613cbf for sql/ddl.sql


Ignore:
Timestamp:
05/22/26 16:45:47 (4 months ago)
Author:
MBK <marija.karapandzova@…>
Branches:
master
Children:
9803972
Parents:
500b5be
Message:

Add exceptions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sql/ddl.sql

    r500b5be rc613cbf  
     1
     2BEGIN;
     3
     4DROP TABLE IF EXISTS medical_record_allergies CASCADE;
     5DROP TABLE IF EXISTS medical_record_symptoms CASCADE;
     6DROP TABLE IF EXISTS medical_record_procedures CASCADE;
     7DROP TABLE IF EXISTS medical_record_lab_results CASCADE;
     8DROP TABLE IF EXISTS performed_lab_tests CASCADE;
     9DROP TABLE IF EXISTS performed_procedures CASCADE;
     10DROP TABLE IF EXISTS medical_report_lab_results CASCADE;
     11DROP TABLE IF EXISTS prescription_medical_records CASCADE;
     12DROP TABLE IF EXISTS diagnosis_medical_records CASCADE;
     13DROP TABLE IF EXISTS doctor_medical_records CASCADE;
     14DROP TABLE IF EXISTS billing_lab_tests CASCADE;
     15DROP TABLE IF EXISTS billing_procedures CASCADE;
     16DROP TABLE IF EXISTS department_procedures CASCADE;
     17DROP TABLE IF EXISTS diagnosis_procedures CASCADE;
     18DROP TABLE IF EXISTS specialization_procedures CASCADE;
     19DROP TABLE IF EXISTS diagnosis_symptoms CASCADE;
     20DROP TABLE IF EXISTS patient_symptoms CASCADE;
     21DROP TABLE IF EXISTS allergy_prescription_restrictions CASCADE;
     22DROP TABLE IF EXISTS patient_allergies CASCADE;
     23DROP TABLE IF EXISTS symptoms CASCADE;
     24DROP TABLE IF EXISTS allergies CASCADE;
     25
     26DROP TABLE IF EXISTS billing CASCADE;
     27DROP TABLE IF EXISTS medical_report CASCADE;
     28DROP TABLE IF EXISTS referrals CASCADE;
     29DROP TABLE IF EXISTS medical_records CASCADE;
     30DROP TABLE IF EXISTS lab_results CASCADE;
     31DROP TABLE IF EXISTS lab_tests CASCADE;
     32DROP TABLE IF EXISTS prescription_restriction CASCADE;
     33DROP TABLE IF EXISTS prescriptions CASCADE;
     34DROP TABLE IF EXISTS procedure_results CASCADE;
     35DROP TABLE IF EXISTS procedures CASCADE;
     36DROP TABLE IF EXISTS diagnosis CASCADE;
     37DROP TABLE IF EXISTS appointments CASCADE;
     38DROP TABLE IF EXISTS lab_technician CASCADE;
     39DROP TABLE IF EXISTS admin CASCADE;
     40DROP TABLE IF EXISTS patients CASCADE;
     41DROP TABLE IF EXISTS doctors CASCADE;
     42DROP TABLE IF EXISTS departments CASCADE;
     43DROP TABLE IF EXISTS doctor_specialization CASCADE;
     44DROP TABLE IF EXISTS doctor_level CASCADE;
     45
     46
     47
     48
     49CREATE TABLE doctor_level (
     50                              level_id BIGINT,
     51                              level TEXT NOT NULL,
     52
     53                              CONSTRAINT doctor_level_PK
     54                                  PRIMARY KEY (level_id),
     55
     56                              CONSTRAINT doctor_level_level_UQ
     57                                  UNIQUE (level)
     58);
     59
     60CREATE TABLE doctor_specialization (
     61                                       specialization_id BIGINT,
     62                                       specialization_name TEXT NOT NULL,
     63
     64                                       CONSTRAINT doctor_specialization_PK
     65                                           PRIMARY KEY (specialization_id),
     66
     67                                       CONSTRAINT doctor_specialization_name_UQ
     68                                           UNIQUE (specialization_name)
     69);
     70
     71
     72CREATE TABLE departments (
     73                             department_id BIGINT,
     74                             department_name TEXT NOT NULL,
     75
     76                             CONSTRAINT departments_PK
     77                                 PRIMARY KEY (department_id),
     78
     79                             CONSTRAINT departments_name_UQ
     80                                 UNIQUE (department_name)
     81);
     82
     83CREATE TABLE doctors (
     84                         doctor_id BIGINT,
     85
     86                         first_name TEXT NOT NULL,
     87                         last_name TEXT NOT NULL,
     88
     89                         email_address TEXT NOT NULL,
     90
     91                         level_id BIGINT NOT NULL,
     92                         specialization_id BIGINT NOT NULL,
     93                         department_id BIGINT NOT NULL,
     94
     95                         CONSTRAINT doctors_PK
     96                             PRIMARY KEY (doctor_id),
     97
     98                         CONSTRAINT doctors_email_UQ
     99                             UNIQUE (email_address),
     100
     101                         CONSTRAINT doctors_email_chk
     102                             CHECK (email_address LIKE '%@%'),
     103
     104                         CONSTRAINT doctors_level_FK
     105                             FOREIGN KEY (level_id)
     106                                 REFERENCES doctor_level(level_id)
     107                                 ON DELETE RESTRICT,
     108
     109                         CONSTRAINT doctors_specialization_FK
     110                             FOREIGN KEY (specialization_id)
     111                                 REFERENCES doctor_specialization(specialization_id)
     112                                 ON DELETE RESTRICT,
     113
     114                         CONSTRAINT doctors_department_FK
     115                             FOREIGN KEY (department_id)
     116                                 REFERENCES departments(department_id)
     117                                 ON DELETE RESTRICT
     118);
     119
     120
     121
     122CREATE TABLE patients (
     123                          patient_id BIGINT,
     124
     125                          first_name TEXT NOT NULL,
     126                          last_name TEXT NOT NULL,
     127
     128                          email_address TEXT,
     129                          date_of_birth DATE NOT NULL,
     130
     131                          blood_type TEXT,
     132                          gender TEXT,
     133
     134                          phone_number TEXT,
     135                          embg TEXT NOT NULL,
     136
     137                          CONSTRAINT patients_PK
     138                              PRIMARY KEY (patient_id),
     139
     140                          CONSTRAINT patients_email_UQ
     141                              UNIQUE (email_address),
     142
     143                          CONSTRAINT patients_embg_UQ
     144                              UNIQUE (embg),
     145
     146                          CONSTRAINT patients_gender_chk
     147                              CHECK (gender IN ('MALE', 'FEMALE')),
     148
     149                          CONSTRAINT patients_blood_type_chk
     150                              CHECK (
     151                                  blood_type IN (
     152                                                 'A+', 'A-',
     153                                                 'B+', 'B-',
     154                                                 'AB+', 'AB-',
     155                                                 'O+', 'O-'
     156                                      )
     157                                  )
     158);
     159
     160CREATE TABLE admin (
     161                       admin_id BIGINT,
     162
     163                       username TEXT NOT NULL,
     164                       name TEXT NOT NULL,
     165                       lastname TEXT NOT NULL,
     166
     167                       email TEXT NOT NULL,
     168
     169                       CONSTRAINT admin_PK
     170                           PRIMARY KEY (admin_id),
     171
     172                       CONSTRAINT admin_username_UQ
     173                           UNIQUE (username),
     174
     175                       CONSTRAINT admin_email_UQ
     176                           UNIQUE (email),
     177
     178                       CONSTRAINT admin_email_chk
     179                           CHECK (email LIKE '%@adminmedora%')
     180);
     181
     182CREATE TABLE lab_technician (
     183                                technician_id BIGINT,
     184
     185                                username TEXT NOT NULL,
     186                                name TEXT NOT NULL,
     187                                lastname TEXT NOT NULL,
     188
     189                                email TEXT NOT NULL,
     190
     191                                CONSTRAINT lab_technician_PK
     192                                    PRIMARY KEY (technician_id),
     193
     194                                CONSTRAINT lab_technician_username_UQ
     195                                    UNIQUE (username),
     196
     197                                CONSTRAINT lab_technician_email_UQ
     198                                    UNIQUE (email),
     199
     200                                CONSTRAINT lab_technician_email_chk
     201                                    CHECK (email LIKE '%@labmedora%')
     202);
     203
     204
     205
     206CREATE TABLE appointments (
     207                              appointment_id BIGINT,
     208
     209                              appointment_date DATE NOT NULL,
     210                              appointment_time TIME NOT NULL,
     211
     212                              status TEXT NOT NULL,
     213
     214                              patient_id BIGINT NOT NULL,
     215                              doctor_id BIGINT NOT NULL,
     216
     217                              CONSTRAINT appointments_PK
     218                                  PRIMARY KEY (appointment_id),
     219
     220                              CONSTRAINT appointments_status_chk
     221                                  CHECK (
     222                                      status IN (
     223                                                 'SCHEDULED',
     224                                                 'COMPLETED',
     225                                                 'CANCELLED',
     226                                                 'IN_PROGRESS'
     227                                          )
     228                                      ),
     229
     230                              CONSTRAINT appointments_patient_FK
     231                                  FOREIGN KEY (patient_id)
     232                                      REFERENCES patients(patient_id)
     233                                      ON DELETE RESTRICT,
     234
     235                              CONSTRAINT appointments_doctor_FK
     236                                  FOREIGN KEY (doctor_id)
     237                                      REFERENCES doctors(doctor_id)
     238                                      ON DELETE RESTRICT
     239);
     240
     241CREATE TABLE diagnosis (
     242                           diagnosis_id BIGINT,
     243
     244                           name TEXT NOT NULL,
     245                           description TEXT,
     246
     247                           patient_id BIGINT NOT NULL,
     248                           doctor_id BIGINT NOT NULL,
     249
     250                           CONSTRAINT diagnosis_PK
     251                               PRIMARY KEY (diagnosis_id),
     252
     253                           CONSTRAINT diagnosis_patient_FK
     254                               FOREIGN KEY (patient_id)
     255                                   REFERENCES patients(patient_id)
     256                                   ON DELETE RESTRICT,
     257
     258                           CONSTRAINT diagnosis_doctor_FK
     259                               FOREIGN KEY (doctor_id)
     260                                   REFERENCES doctors(doctor_id)
     261                                   ON DELETE RESTRICT
     262);
     263
     264
     265
     266
     267CREATE TABLE procedures (
     268                            procedure_id BIGINT,
     269
     270                            procedure_type TEXT NOT NULL,
     271                            procedure_date DATE NOT NULL,
     272
     273                            description TEXT,
     274                            cost DECIMAL NOT NULL,
     275
     276                            doctor_id BIGINT NOT NULL,
     277                            diagnosis_id BIGINT NOT NULL,
     278
     279                            CONSTRAINT procedures_PK
     280                                PRIMARY KEY (procedure_id),
     281
     282                            CONSTRAINT procedures_cost_chk
     283                                CHECK (cost >= 0),
     284
     285                            CONSTRAINT procedures_type_chk
     286                                CHECK (length(trim(procedure_type)) > 0),
     287
     288                            CONSTRAINT procedures_doctor_FK
     289                                FOREIGN KEY (doctor_id)
     290                                    REFERENCES doctors(doctor_id)
     291                                    ON DELETE RESTRICT,
     292
     293                            CONSTRAINT procedures_diagnosis_FK
     294                                FOREIGN KEY (diagnosis_id)
     295                                    REFERENCES diagnosis(diagnosis_id)
     296                                    ON DELETE RESTRICT
     297);
     298
     299
     300
     301
     302CREATE TABLE procedure_results (
     303                                   result_id BIGINT,
     304
     305                                   result_description TEXT,
     306                                   result_date DATE NOT NULL,
     307
     308                                   procedure_id BIGINT NOT NULL,
     309
     310                                   CONSTRAINT procedure_results_PK
     311                                       PRIMARY KEY (result_id),
     312
     313                                   CONSTRAINT procedure_results_description_chk
     314                                       CHECK (
     315                                           result_description IS NULL
     316                                               OR length(trim(result_description)) > 0
     317                                           ),
     318
     319                                   CONSTRAINT procedure_results_procedure_FK
     320                                       FOREIGN KEY (procedure_id)
     321                                           REFERENCES procedures(procedure_id)
     322                                           ON DELETE RESTRICT
     323);
     324
     325CREATE TABLE prescriptions (
     326                               prescription_id BIGINT,
     327
     328                               medication_name TEXT NOT NULL,
     329
     330                               CONSTRAINT prescriptions_PK
     331                                   PRIMARY KEY (prescription_id)
     332);
     333
     334CREATE TABLE prescription_restriction (
     335                                          restriction_id BIGINT,
     336
     337                                          description TEXT NOT NULL,
     338
     339                                          prescription_id BIGINT NOT NULL,
     340
     341                                          CONSTRAINT prescription_restriction_PK
     342                                              PRIMARY KEY (restriction_id),
     343
     344                                          CONSTRAINT prescription_restriction_desc_chk
     345                                              CHECK (length(trim(description)) > 0),
     346
     347                                          CONSTRAINT prescription_restriction_prescription_FK
     348                                              FOREIGN KEY (prescription_id)
     349                                                  REFERENCES prescriptions(prescription_id)
     350                                                  ON DELETE RESTRICT
     351);
     352
     353
     354CREATE TABLE lab_tests (
     355                           test_id BIGINT,
     356
     357                           test_name TEXT NOT NULL,
     358                           description TEXT,
     359                           cost DECIMAL NOT NULL,
     360
     361                           CONSTRAINT lab_tests_PK
     362                               PRIMARY KEY (test_id),
     363
     364                           CONSTRAINT lab_tests_cost_chk
     365                               CHECK (cost >= 0),
     366
     367                           CONSTRAINT lab_tests_name_chk
     368                               CHECK (length(trim(test_name)) > 0)
     369);
     370
     371
     372CREATE TABLE lab_results (
     373                             result_id BIGINT,
     374
     375                             results TEXT NOT NULL,
     376                             result_date DATE NOT NULL,
     377
     378                             test_id BIGINT NOT NULL,
     379
     380                             CONSTRAINT lab_results_PK
     381                                 PRIMARY KEY (result_id),
     382
     383                             CONSTRAINT lab_results_results_chk
     384                                 CHECK (length(trim(results)) > 0),
     385
     386                             CONSTRAINT lab_results_date_chk
     387                                 CHECK (result_date <= CURRENT_DATE),
     388
     389                             CONSTRAINT lab_results_test_FK
     390                                 FOREIGN KEY (test_id)
     391                                     REFERENCES lab_tests(test_id)
     392                                     ON DELETE RESTRICT
     393);
     394
     395CREATE TABLE medical_records (
     396                                 record_id BIGINT PRIMARY KEY,
     397
     398                                 patient_id BIGINT NOT NULL,
     399
     400
     401                                 FOREIGN KEY (patient_id)
     402                                     REFERENCES patients(patient_id)
     403                                     ON DELETE RESTRICT
     404);
     405
     406
     407
     408
     409CREATE TABLE allergies (
     410                           allergy_id BIGINT,
     411
     412                           name TEXT NOT NULL,
     413                           allergy_severity TEXT NOT NULL,
     414
     415                           CONSTRAINT allergies_PK
     416                               PRIMARY KEY (allergy_id),
     417
     418                           CONSTRAINT allergies_name_UQ
     419                               UNIQUE (name),
     420
     421                           CONSTRAINT allergies_name_chk
     422                               CHECK (length(trim(name)) > 0),
     423
     424                           CONSTRAINT allergies_severity_chk
     425                               CHECK (allergy_severity IN ('LOW', 'MEDIUM', 'HIGH', 'CRITICAL'))
     426);
     427
     428
     429CREATE TABLE symptoms (
     430                          symptom_id BIGINT,
     431
     432                          name TEXT NOT NULL,
     433                          description TEXT,
     434
     435                          CONSTRAINT symptoms_PK
     436                              PRIMARY KEY (symptom_id),
     437
     438                          CONSTRAINT symptoms_name_UQ
     439                              UNIQUE (name),
     440
     441                          CONSTRAINT symptoms_name_chk
     442                              CHECK (length(trim(name)) > 0),
     443
     444                          CONSTRAINT symptoms_description_chk
     445                              CHECK (
     446                                  description IS NULL
     447                                      OR length(trim(description)) > 0
     448                                  )
     449);
     450
     451
     452CREATE TABLE referrals (
     453
     454                           referral_id BIGINT PRIMARY KEY,
     455
     456                           reason TEXT NOT NULL,
     457                           referral_date DATE NOT NULL,
     458
     459                           record_id BIGINT NOT NULL,
     460                           from_doctor_id BIGINT NOT NULL,
     461                           to_doctor_id BIGINT not null,
     462
     463                           CONSTRAINT referrals_reason_chk
     464                               CHECK (length(trim(reason)) > 0),
     465
     466                           FOREIGN KEY (record_id)
     467                               REFERENCES medical_records(record_id)
     468                               ON DELETE RESTRICT,
     469
     470                           FOREIGN KEY (from_doctor_id)
     471                               REFERENCES doctors(doctor_id)
     472                               ON DELETE RESTRICT,
     473
     474                           FOREIGN KEY (to_doctor_id)
     475                               REFERENCES doctors(doctor_id)
     476                               ON DELETE RESTRICT
     477);
     478
     479CREATE TABLE medical_report (
     480                                report_id BIGINT PRIMARY KEY,
     481
     482                                description TEXT NOT NULL,
     483                                report_date DATE NOT NULL,
     484
     485                                record_id BIGINT NOT NULL,
     486                                doctor_id BIGINT NOT NULL,
     487
     488                                FOREIGN KEY (record_id)
     489                                    REFERENCES medical_records(record_id)
     490                                    ON DELETE RESTRICT,
     491
     492                                FOREIGN KEY (doctor_id)
     493                                    REFERENCES doctors(doctor_id)
     494                                    ON DELETE RESTRICT
     495);
     496
     497
     498CREATE TABLE billing (
     499                         bill_id BIGINT PRIMARY KEY,
     500
     501                         total_cost DECIMAL NOT NULL,
     502
     503                         payment_status TEXT NOT NULL,
     504                         payment_date DATE,
     505
     506                         record_id BIGINT NOT NULL,
     507                         admin_id BIGINT NOT NULL,
     508
     509                         CONSTRAINT billing_cost_chk CHECK (total_cost >= 0),
     510                         CONSTRAINT billing_status_chk
     511                             CHECK (payment_status IN ('PENDING', 'PAID', 'CANCELLED')),
     512
     513                         FOREIGN KEY (record_id)
     514                             REFERENCES medical_records(record_id)
     515                             ON DELETE RESTRICT,
     516
     517                         FOREIGN KEY (admin_id)
     518                             REFERENCES admin(admin_id)
     519                             ON DELETE RESTRICT
     520);
     521
     522
     523
     524
     525CREATE TABLE patient_allergies (
     526                                   patient_id BIGINT NOT NULL,
     527                                   allergy_id BIGINT NOT NULL,
     528
     529                                   CONSTRAINT patient_allergies_PK
     530                                       PRIMARY KEY (patient_id, allergy_id),
     531
     532                                   CONSTRAINT patient_allergies_patient_FK
     533                                       FOREIGN KEY (patient_id)
     534                                           REFERENCES patients(patient_id)
     535                                           ON DELETE RESTRICT,
     536
     537                                   CONSTRAINT patient_allergies_allergy_FK
     538                                       FOREIGN KEY (allergy_id)
     539                                           REFERENCES allergies(allergy_id)
     540                                           ON DELETE RESTRICT
     541);
     542
     543
     544
     545CREATE TABLE allergy_prescription_restrictions (
     546                                                   allergy_id BIGINT NOT NULL,
     547                                                   restriction_id BIGINT NOT NULL,
     548
     549                                                   CONSTRAINT allergy_prescription_restrictions_PK
     550                                                       PRIMARY KEY (allergy_id, restriction_id),
     551
     552                                                   CONSTRAINT allergy_prescription_restrictions_allergy_FK
     553                                                       FOREIGN KEY (allergy_id)
     554                                                           REFERENCES allergies(allergy_id)
     555                                                           ON DELETE RESTRICT,
     556
     557                                                   CONSTRAINT allergy_prescription_restrictions_restriction_FK
     558                                                       FOREIGN KEY (restriction_id)
     559                                                           REFERENCES prescription_restriction(restriction_id)
     560                                                           ON DELETE RESTRICT
     561);
     562
     563
     564
     565CREATE TABLE patient_symptoms (
     566                                  patient_id BIGINT NOT NULL,
     567                                  symptom_id BIGINT NOT NULL,
     568
     569                                  CONSTRAINT patient_symptoms_PK
     570                                      PRIMARY KEY (patient_id, symptom_id),
     571
     572                                  CONSTRAINT patient_symptoms_patient_FK
     573                                      FOREIGN KEY (patient_id)
     574                                          REFERENCES patients(patient_id)
     575                                          ON DELETE RESTRICT,
     576
     577                                  CONSTRAINT patient_symptoms_symptom_FK
     578                                      FOREIGN KEY (symptom_id)
     579                                          REFERENCES symptoms(symptom_id)
     580                                          ON DELETE RESTRICT
     581);
     582
     583
     584
     585
     586CREATE TABLE diagnosis_symptoms (
     587                                    diagnosis_id BIGINT NOT NULL,
     588                                    symptom_id BIGINT NOT NULL,
     589
     590                                    CONSTRAINT diagnosis_symptoms_PK
     591                                        PRIMARY KEY (diagnosis_id, symptom_id),
     592
     593                                    CONSTRAINT diagnosis_symptoms_diagnosis_FK
     594                                        FOREIGN KEY (diagnosis_id)
     595                                            REFERENCES diagnosis(diagnosis_id)
     596                                            ON DELETE RESTRICT,
     597
     598                                    CONSTRAINT diagnosis_symptoms_symptom_FK
     599                                        FOREIGN KEY (symptom_id)
     600                                            REFERENCES symptoms(symptom_id)
     601                                            ON DELETE RESTRICT
     602);
     603
     604CREATE TABLE specialization_procedures (
     605                                           specialization_id BIGINT NOT NULL,
     606                                           procedure_id BIGINT NOT NULL,
     607
     608                                           CONSTRAINT specialization_procedures_PK
     609                                               PRIMARY KEY (specialization_id, procedure_id),
     610
     611                                           CONSTRAINT specialization_procedures_specialization_FK
     612                                               FOREIGN KEY (specialization_id)
     613                                                   REFERENCES doctor_specialization(specialization_id)
     614                                                   ON DELETE RESTRICT,
     615
     616                                           CONSTRAINT specialization_procedures_procedure_FK
     617                                               FOREIGN KEY (procedure_id)
     618                                                   REFERENCES procedures(procedure_id)
     619                                                   ON DELETE RESTRICT
     620);
     621
     622
     623
     624CREATE TABLE diagnosis_procedures (
     625                                      diagnosis_id BIGINT NOT NULL,
     626                                      procedure_id BIGINT NOT NULL,
     627
     628                                      CONSTRAINT diagnosis_procedures_PK
     629                                          PRIMARY KEY (diagnosis_id, procedure_id),
     630
     631                                      CONSTRAINT diagnosis_procedures_diagnosis_FK
     632                                          FOREIGN KEY (diagnosis_id)
     633                                              REFERENCES diagnosis(diagnosis_id)
     634                                              ON DELETE RESTRICT,
     635
     636                                      CONSTRAINT diagnosis_procedures_procedure_FK
     637                                          FOREIGN KEY (procedure_id)
     638                                              REFERENCES procedures(procedure_id)
     639                                              ON DELETE RESTRICT
     640);
     641
     642CREATE TABLE department_procedures (
     643                                       department_id BIGINT NOT NULL ,
     644                                       procedure_id BIGINT NOT NULL,
     645
     646                                       CONSTRAINT department_procedures_PK
     647                                           PRIMARY KEY (department_id, procedure_id),
     648
     649                                       CONSTRAINT department_procedures_department_FK
     650                                           FOREIGN KEY (department_id)
     651                                               REFERENCES departments(department_id)
     652                                               ON DELETE RESTRICT,
     653
     654                                       CONSTRAINT department_procedures_procedure_FK
     655                                           FOREIGN KEY (procedure_id)
     656                                               REFERENCES procedures(procedure_id)
     657                                               ON DELETE RESTRICT
     658);
     659
     660
     661CREATE TABLE billing_procedures (
     662                                    bill_id BIGINT  NOT NULL,
     663                                    procedure_id BIGINT  NOT NULL,
     664
     665                                    CONSTRAINT billing_procedures_PK
     666                                        PRIMARY KEY (bill_id, procedure_id),
     667
     668                                    CONSTRAINT billing_procedures_bill_FK
     669                                        FOREIGN KEY (bill_id)
     670                                            REFERENCES billing(bill_id)
     671                                            ON DELETE RESTRICT,
     672
     673                                    CONSTRAINT billing_procedures_procedure_FK
     674                                        FOREIGN KEY (procedure_id)
     675                                            REFERENCES procedures(procedure_id)
     676                                            ON DELETE RESTRICT
     677);
     678
     679
     680
     681
     682CREATE TABLE billing_lab_tests (
     683                                   bill_id BIGINT NOT NULL,
     684                                   test_id BIGINT NOT NULL,
     685
     686                                   CONSTRAINT billing_lab_tests_PK
     687                                       PRIMARY KEY (bill_id, test_id),
     688
     689                                   CONSTRAINT billing_lab_tests_bill_FK
     690                                       FOREIGN KEY (bill_id)
     691                                           REFERENCES billing(bill_id)
     692                                           ON DELETE RESTRICT,
     693
     694                                   CONSTRAINT billing_lab_tests_test_FK
     695                                       FOREIGN KEY (test_id)
     696                                           REFERENCES lab_tests(test_id)
     697                                           ON DELETE RESTRICT
     698);
     699
     700
     701
     702CREATE TABLE doctor_medical_records (
     703                                        doctor_id BIGINT NOT NULL,
     704                                        record_id BIGINT NOT NULL,
     705
     706                                        CONSTRAINT doctor_medical_records_PK
     707                                            PRIMARY KEY (doctor_id, record_id),
     708
     709                                        CONSTRAINT doctor_medical_records_doctor_FK
     710                                            FOREIGN KEY (doctor_id)
     711                                                REFERENCES doctors(doctor_id)
     712                                                ON DELETE RESTRICT,
     713
     714                                        CONSTRAINT doctor_medical_records_record_FK
     715                                            FOREIGN KEY (record_id)
     716                                                REFERENCES medical_records(record_id)
     717                                                ON DELETE RESTRICT
     718);
     719
     720
     721
     722CREATE TABLE diagnosis_medical_records (
     723                                           diagnosis_id BIGINT NOT NULL,
     724                                           record_id BIGINT NOT NULL,
     725
     726                                           CONSTRAINT diagnosis_medical_records_PK
     727                                               PRIMARY KEY (diagnosis_id, record_id),
     728
     729                                           CONSTRAINT diagnosis_medical_records_diagnosis_FK
     730                                               FOREIGN KEY (diagnosis_id)
     731                                                   REFERENCES diagnosis(diagnosis_id)
     732                                                   ON DELETE RESTRICT,
     733
     734                                           CONSTRAINT diagnosis_medical_records_record_FK
     735                                               FOREIGN KEY (record_id)
     736                                                   REFERENCES medical_records(record_id)
     737                                                   ON DELETE RESTRICT
     738);
     739
     740
     741CREATE TABLE prescription_medical_records (
     742                                              prescription_id BIGINT NOT NULL,
     743                                              record_id BIGINT NOT NULL,
     744
     745                                              dosage TEXT NOT NULL,
     746                                              frequency TEXT NOT NULL,
     747                                              duration TEXT NOT NULL,
     748
     749                                              notes TEXT,
     750
     751                                              CONSTRAINT prescription_medical_records_PK
     752                                                  PRIMARY KEY (prescription_id, record_id),
     753
     754                                              CONSTRAINT prescription_medical_records_prescription_FK
     755                                                  FOREIGN KEY (prescription_id)
     756                                                      REFERENCES prescriptions(prescription_id)
     757                                                      ON DELETE RESTRICT,
     758
     759                                              CONSTRAINT prescription_medical_records_record_FK
     760                                                  FOREIGN KEY (record_id)
     761                                                      REFERENCES medical_records(record_id)
     762                                                      ON DELETE RESTRICT
     763);
     764
     765
     766
     767CREATE TABLE medical_report_lab_results (
     768                                            report_id BIGINT NOT NULL,
     769                                            result_id BIGINT NOT NULL,
     770
     771                                            CONSTRAINT medical_report_lab_results_PK
     772                                                PRIMARY KEY (report_id, result_id),
     773
     774                                            CONSTRAINT medical_report_lab_results_report_FK
     775                                                FOREIGN KEY (report_id)
     776                                                    REFERENCES medical_report(report_id)
     777                                                    ON DELETE RESTRICT,
     778
     779                                            CONSTRAINT medical_report_lab_results_result_FK
     780                                                FOREIGN KEY (result_id)
     781                                                    REFERENCES lab_results(result_id)
     782                                                    ON DELETE RESTRICT
     783);
     784
     785
     786
     787CREATE TABLE performed_procedures (
     788                                      performed_id BIGINT,
     789
     790                                      procedure_id BIGINT NOT NULL,
     791                                      doctor_id BIGINT NOT NULL,
     792                                      patient_id BIGINT NOT NULL,
     793                                      diagnosis_id BIGINT,
     794
     795                                      procedure_date DATE NOT NULL,
     796                                      notes TEXT,
     797
     798                                      CONSTRAINT performed_procedures_PK
     799                                          PRIMARY KEY (performed_id),
     800
     801                                      CONSTRAINT performed_procedures_procedure_FK
     802                                          FOREIGN KEY (procedure_id)
     803                                              REFERENCES procedures(procedure_id)
     804                                              ON DELETE RESTRICT,
     805
     806                                      CONSTRAINT performed_procedures_doctor_FK
     807                                          FOREIGN KEY (doctor_id)
     808                                              REFERENCES doctors(doctor_id)
     809                                              ON DELETE RESTRICT,
     810
     811                                      CONSTRAINT performed_procedures_patient_FK
     812                                          FOREIGN KEY (patient_id)
     813                                              REFERENCES patients(patient_id)
     814                                              ON DELETE RESTRICT,
     815
     816                                      CONSTRAINT performed_procedures_diagnosis_FK
     817                                          FOREIGN KEY (diagnosis_id)
     818                                              REFERENCES diagnosis(diagnosis_id)
     819                                              ON DELETE RESTRICT
     820);
     821
     822CREATE TABLE performed_lab_tests (
     823                                     performed_test_id BIGINT,
     824
     825                                     test_id BIGINT NOT NULL,
     826                                     patient_id BIGINT NOT NULL,
     827                                     doctor_id BIGINT NOT NULL,
     828                                     technician_id BIGINT NOT NULL,
     829
     830                                     test_date DATE NOT NULL,
     831                                     notes TEXT,
     832
     833                                     CONSTRAINT performed_lab_tests_PK
     834                                         PRIMARY KEY (performed_test_id),
     835
     836                                     CONSTRAINT performed_lab_tests_test_FK
     837                                         FOREIGN KEY (test_id)
     838                                             REFERENCES lab_tests(test_id)
     839                                             ON DELETE RESTRICT,
     840
     841                                     CONSTRAINT performed_lab_tests_patient_FK
     842                                         FOREIGN KEY (patient_id)
     843                                             REFERENCES patients(patient_id)
     844                                             ON DELETE RESTRICT,
     845
     846                                     CONSTRAINT performed_lab_tests_doctor_FK
     847                                         FOREIGN KEY (doctor_id)
     848                                             REFERENCES doctors(doctor_id)
     849                                             ON DELETE RESTRICT,
     850
     851                                     CONSTRAINT performed_lab_tests_technician_FK
     852                                         FOREIGN KEY (technician_id)
     853                                             REFERENCES lab_technician(technician_id)
     854                                             ON DELETE RESTRICT
     855);
     856
     857CREATE TABLE medical_record_lab_results (
     858                                            record_id BIGINT NOT NULL,
     859                                            result_id BIGINT NOT NULL,
     860
     861                                            PRIMARY KEY (record_id, result_id),
     862
     863                                            FOREIGN KEY (record_id)
     864                                                REFERENCES medical_records(record_id)
     865                                                ON DELETE RESTRICT,
     866
     867                                            FOREIGN KEY (result_id)
     868                                                REFERENCES lab_results(result_id)
     869                                                ON DELETE RESTRICT
     870);
     871
     872
     873
     874
     875CREATE TABLE medical_record_procedures (
     876                                           record_id BIGINT NOT NULL,
     877                                           procedure_id BIGINT NOT NULL,
     878
     879                                           PRIMARY KEY (record_id, procedure_id),
     880
     881                                           FOREIGN KEY (record_id)
     882                                               REFERENCES medical_records(record_id)
     883                                               ON DELETE RESTRICT,
     884
     885                                           FOREIGN KEY (procedure_id)
     886                                               REFERENCES procedures(procedure_id)
     887                                               ON DELETE RESTRICT
     888);
     889
     890
     891
     892CREATE TABLE medical_record_symptoms (
     893                                         record_id BIGINT NOT NULL,
     894                                         symptom_id BIGINT NOT NULL,
     895                                         severity TEXT,
     896
     897                                         PRIMARY KEY (record_id, symptom_id),
     898
     899                                         FOREIGN KEY (record_id)
     900                                             REFERENCES medical_records(record_id)
     901                                             ON DELETE RESTRICT,
     902
     903                                         FOREIGN KEY (symptom_id)
     904                                             REFERENCES symptoms(symptom_id)
     905                                             ON DELETE RESTRICT
     906);
     907
     908CREATE TABLE medical_record_allergies (
     909                                          record_id BIGINT NOT NULL,
     910                                          allergy_id BIGINT NOT NULL,
     911                                          reaction TEXT,
     912                                          severity TEXT,
     913
     914                                          PRIMARY KEY (record_id, allergy_id),
     915
     916                                          FOREIGN KEY (record_id)
     917                                              REFERENCES medical_records(record_id)
     918                                              ON DELETE RESTRICT,
     919
     920                                          FOREIGN KEY (allergy_id)
     921                                              REFERENCES allergies(allergy_id)
     922                                              ON DELETE RESTRICT
     923);
     924
     925
     926COMMIT;
     927
Note: See TracChangeset for help on using the changeset viewer.