From 3935af283f478be82d39233d120b1779482b2b46 Mon Sep 17 00:00:00 2001 From: DejanPerovic Date: Fri, 14 Jun 2024 19:08:09 +0200 Subject: [PATCH] Connected PostgresSQL with the app, created Patient entity, removed previous codes. #12 --- CMS/CMS/settings.py | 10 ++++-- CMS/CMS/urls.py | 1 - CMS/appointments/admin.py | 5 --- CMS/appointments/apps.py | 6 ---- CMS/appointments/forms.py | 7 ---- CMS/appointments/models.py | 21 ----------- .../appointments/appointment_detail.html | 23 ------------ CMS/appointments/templates/base.html | 29 --------------- CMS/appointments/urls.py | 6 ---- CMS/appointments/views.py | 20 ----------- CMS/{appointments => patient}/__init__.py | 0 CMS/{users => patient}/admin.py | 2 ++ CMS/patient/apps.py | 6 ++++ CMS/patient/migrations/0001_initial.py | 35 +++++++++++++++++++ .../migrations/0002_alter_patient_options.py | 17 +++++++++ .../migrations/__init__.py | 0 CMS/patient/models.py | 24 +++++++++++++ CMS/{appointments => patient}/tests.py | 0 CMS/{users => patient}/views.py | 0 .../clinic_management_system_ERD.pgerd | 2 +- CMS/users/__init__.py | 0 CMS/users/apps.py | 6 ---- CMS/users/migrations/__init__.py | 0 CMS/users/models.py | 3 -- CMS/users/tests.py | 3 -- 25 files changed, 92 insertions(+), 134 deletions(-) delete mode 100644 CMS/appointments/admin.py delete mode 100644 CMS/appointments/apps.py delete mode 100644 CMS/appointments/forms.py delete mode 100644 CMS/appointments/models.py delete mode 100644 CMS/appointments/templates/appointments/appointment_detail.html delete mode 100644 CMS/appointments/templates/base.html delete mode 100644 CMS/appointments/urls.py delete mode 100644 CMS/appointments/views.py rename CMS/{appointments => patient}/__init__.py (100%) rename CMS/{users => patient}/admin.py (52%) create mode 100644 CMS/patient/apps.py create mode 100644 CMS/patient/migrations/0001_initial.py create mode 100644 CMS/patient/migrations/0002_alter_patient_options.py rename CMS/{appointments => patient}/migrations/__init__.py (100%) create mode 100644 CMS/patient/models.py rename CMS/{appointments => patient}/tests.py (100%) rename CMS/{users => patient}/views.py (100%) delete mode 100644 CMS/users/__init__.py delete mode 100644 CMS/users/apps.py delete mode 100644 CMS/users/migrations/__init__.py delete mode 100644 CMS/users/models.py delete mode 100644 CMS/users/tests.py diff --git a/CMS/CMS/settings.py b/CMS/CMS/settings.py index 0c5cd08..578566f 100644 --- a/CMS/CMS/settings.py +++ b/CMS/CMS/settings.py @@ -38,7 +38,7 @@ "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", - "appointments", + "patient", ] MIDDLEWARE = [ @@ -77,8 +77,12 @@ DATABASES = { "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", + "ENGINE": "django.db.backends.postgresql", + "NAME": "clinic_management_system", + "USER": "postgres", + "PASSWORD": "root", + "HOST": "localhost", + "PORT": "5432", } } diff --git a/CMS/CMS/urls.py b/CMS/CMS/urls.py index 6d1447b..6301a9c 100644 --- a/CMS/CMS/urls.py +++ b/CMS/CMS/urls.py @@ -19,5 +19,4 @@ urlpatterns = [ path("admin/", admin.site.urls), - path('appointments/', include('appointments.urls')), ] diff --git a/CMS/appointments/admin.py b/CMS/appointments/admin.py deleted file mode 100644 index 4604bcf..0000000 --- a/CMS/appointments/admin.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.contrib import admin -from .models import Appointment, Note - -admin.site.register(Appointment) -admin.site.register(Note) diff --git a/CMS/appointments/apps.py b/CMS/appointments/apps.py deleted file mode 100644 index 36f9313..0000000 --- a/CMS/appointments/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class AppointmentsConfig(AppConfig): - default_auto_field = "django.db.models.BigAutoField" - name = "appointments" diff --git a/CMS/appointments/forms.py b/CMS/appointments/forms.py deleted file mode 100644 index 6411460..0000000 --- a/CMS/appointments/forms.py +++ /dev/null @@ -1,7 +0,0 @@ -from django import forms -from .models import Note - -class NoteForm(forms.ModelForm): - class Meta: - model = Note - fields = ['content'] diff --git a/CMS/appointments/models.py b/CMS/appointments/models.py deleted file mode 100644 index a9f0d12..0000000 --- a/CMS/appointments/models.py +++ /dev/null @@ -1,21 +0,0 @@ -from django.db import models -from django.contrib.auth.models import User - -class Appointment(models.Model): - patient = models.ForeignKey(User, related_name='patient_appointments', on_delete=models.CASCADE) - doctor = models.ForeignKey(User, related_name='doctor_appointments', on_delete=models.CASCADE) - date = models.DateTimeField() - reason = models.CharField(max_length=255) - # Add more fields as needed - - def __str__(self): - return f"{self.patient.username} - {self.date}" - -class Note(models.Model): - appointment = models.ForeignKey(Appointment, related_name='notes', on_delete=models.CASCADE) - author = models.ForeignKey(User, on_delete=models.CASCADE) - content = models.TextField() - created_at = models.DateTimeField(auto_now_add=True) - - def __str__(self): - return f"Note by {self.author.username} on {self.created_at}" diff --git a/CMS/appointments/templates/appointments/appointment_detail.html b/CMS/appointments/templates/appointments/appointment_detail.html deleted file mode 100644 index 45e97f8..0000000 --- a/CMS/appointments/templates/appointments/appointment_detail.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends "base.html" %} - -{% block content %} -

Appointment Detail

-

Patient: {{ appointment.patient.username }}

-

Doctor: {{ appointment.doctor.username }}

-

Date: {{ appointment.date }}

-

Reason: {{ appointment.reason }}

- -

Notes

- - -

Add a Note

-
- {% csrf_token %} - {{ form.as_p }} - -
-{% endblock %} diff --git a/CMS/appointments/templates/base.html b/CMS/appointments/templates/base.html deleted file mode 100644 index 153ab7e..0000000 --- a/CMS/appointments/templates/base.html +++ /dev/null @@ -1,29 +0,0 @@ - -{% load static %} - - - - - Clinic Management System - - - -
-

Clinic Management System

- -
-
- {% block content %} - {% endblock %} -
- - - diff --git a/CMS/appointments/urls.py b/CMS/appointments/urls.py deleted file mode 100644 index b353264..0000000 --- a/CMS/appointments/urls.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.urls import path -from . import views - -urlpatterns = [ - path('/', views.appointment_detail, name='appointment_detail'), -] diff --git a/CMS/appointments/views.py b/CMS/appointments/views.py deleted file mode 100644 index 2d916cf..0000000 --- a/CMS/appointments/views.py +++ /dev/null @@ -1,20 +0,0 @@ -from django.shortcuts import render, get_object_or_404, redirect -from django.contrib.auth.decorators import login_required -from .models import Appointment, Note -from .forms import NoteForm - -@login_required -def appointment_detail(request, appointment_id): - appointment = get_object_or_404(Appointment, id=appointment_id) - notes = appointment.notes.all() - if request.method == 'POST': - form = NoteForm(request.POST) - if form.is_valid(): - note = form.save(commit=False) - note.appointment = appointment - note.author = request.user - note.save() - return redirect('appointment_detail', appointment_id=appointment.id) - else: - form = NoteForm() - return render(request, 'appointments/appointment_detail.html', {'appointment': appointment, 'notes': notes, 'form': form}) diff --git a/CMS/appointments/__init__.py b/CMS/patient/__init__.py similarity index 100% rename from CMS/appointments/__init__.py rename to CMS/patient/__init__.py diff --git a/CMS/users/admin.py b/CMS/patient/admin.py similarity index 52% rename from CMS/users/admin.py rename to CMS/patient/admin.py index 8c38f3f..099a392 100644 --- a/CMS/users/admin.py +++ b/CMS/patient/admin.py @@ -1,3 +1,5 @@ from django.contrib import admin +from .models import Patient # Register your models here. +admin.site.register(Patient) \ No newline at end of file diff --git a/CMS/patient/apps.py b/CMS/patient/apps.py new file mode 100644 index 0000000..16d8ac4 --- /dev/null +++ b/CMS/patient/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class PatientConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'patient' diff --git a/CMS/patient/migrations/0001_initial.py b/CMS/patient/migrations/0001_initial.py new file mode 100644 index 0000000..5b3ca56 --- /dev/null +++ b/CMS/patient/migrations/0001_initial.py @@ -0,0 +1,35 @@ +# Generated by Django 5.0.6 on 2024-06-14 16:25 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Patient', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('first_name', models.CharField(max_length=100)), + ('last_name', models.CharField(max_length=100)), + ('birth_date', models.DateField()), + ('gender', models.CharField(choices=[('M', 'Male'), ('F', 'Female')], max_length=1)), + ('address', models.CharField(max_length=255)), + ('phone', models.CharField(max_length=20)), + ('email', models.EmailField(max_length=254)), + ('registration_date', models.DateTimeField()), + ('last_visit', models.DateTimeField()), + ('insurance', models.CharField(choices=[('YES', 'Yes'), ('NO', 'No')], max_length=3)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ], + options={ + 'db_table': 'patient', + }, + ), + ] diff --git a/CMS/patient/migrations/0002_alter_patient_options.py b/CMS/patient/migrations/0002_alter_patient_options.py new file mode 100644 index 0000000..354e457 --- /dev/null +++ b/CMS/patient/migrations/0002_alter_patient_options.py @@ -0,0 +1,17 @@ +# Generated by Django 5.0.6 on 2024-06-14 16:41 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('patient', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='patient', + options={'managed': False}, + ), + ] diff --git a/CMS/appointments/migrations/__init__.py b/CMS/patient/migrations/__init__.py similarity index 100% rename from CMS/appointments/migrations/__init__.py rename to CMS/patient/migrations/__init__.py diff --git a/CMS/patient/models.py b/CMS/patient/models.py new file mode 100644 index 0000000..4117991 --- /dev/null +++ b/CMS/patient/models.py @@ -0,0 +1,24 @@ +from django.db import models + + +class Patient(models.Model): + patient_id = models.AutoField(primary_key=True) + first_name = models.CharField(max_length=100) + last_name = models.CharField(max_length=100) + birth_date = models.DateField() + gender = models.CharField(max_length=1, choices=[('M', 'Male'), ('F', 'Female')]) + address = models.CharField(max_length=255) + phone = models.CharField(max_length=20) + email = models.EmailField() + registration_date = models.DateTimeField() + last_visit = models.DateTimeField() + insurance = models.CharField(max_length=255) + created_at = models.DateTimeField(auto_now_add=True) + updated_at = models.DateTimeField(auto_now=True) + + class Meta: + managed = False + db_table = 'patient' + + def __str__(self): + return f"{self.first_name} {self.last_name}" diff --git a/CMS/appointments/tests.py b/CMS/patient/tests.py similarity index 100% rename from CMS/appointments/tests.py rename to CMS/patient/tests.py diff --git a/CMS/users/views.py b/CMS/patient/views.py similarity index 100% rename from CMS/users/views.py rename to CMS/patient/views.py diff --git a/CMS/resources/clinic_management_system_ERD.pgerd b/CMS/resources/clinic_management_system_ERD.pgerd index f5f3f60..fcedc1b 100644 --- a/CMS/resources/clinic_management_system_ERD.pgerd +++ b/CMS/resources/clinic_management_system_ERD.pgerd @@ -1 +1 @@ -{"version":"80600","data":{"id":"ae1420dc-6fc3-45ca-a637-46ec601bc6db","offsetX":62.82794386479293,"offsetY":44.994816292515694,"zoom":81.11300011475858,"gridSize":15,"layers":[{"id":"388310f9-2a86-40b1-aaed-b5e3a67c20ce","type":"diagram-links","isSvg":true,"transformed":true,"models":{"2914055f-841c-4a0d-a20e-6fd2df9232cb":{"id":"2914055f-841c-4a0d-a20e-6fd2df9232cb","locked":true,"type":"onetomany","source":"28534a5d-8008-4a5c-b90c-47919a0628ae","sourcePort":"4856b922-425d-412e-a173-b559c221b785","target":"866e488e-757b-40f4-b843-5fd6acdeadd2","targetPort":"c18715a6-1b51-4006-8fa4-bc22f8b43a04","points":[{"id":"40c6ac40-db8f-4fbf-b606-ea7fe518ee73","type":"point","x":204.00990118767587,"y":92.95326506457421},{"id":"9b2ed721-5b9a-440f-8a7d-37d011157612","type":"point","x":204.00990118767587,"y":118.34777804477598},{"id":"398ad4b1-7e22-430c-b10c-fd9a61a8b6ea","type":"point","x":225.98699425015414,"y":118.34777804477598}],"labels":[],"width":1,"color":"gray","curvyness":50,"selectedColor":"rgb(0,192,255)","data":{"local_table_uid":"866e488e-757b-40f4-b843-5fd6acdeadd2","local_column_attnum":1,"referenced_table_uid":"28534a5d-8008-4a5c-b90c-47919a0628ae","referenced_column_attnum":0}},"a5b0fee0-beb9-4cd1-bb0e-a020da5e8dd1":{"id":"a5b0fee0-beb9-4cd1-bb0e-a020da5e8dd1","locked":true,"type":"onetomany","source":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","sourcePort":"1c256d7f-5287-47b1-90a7-261f809be3d9","target":"866e488e-757b-40f4-b843-5fd6acdeadd2","targetPort":"8859526f-b200-4ede-ac4c-42132d1a4919","points":[{"id":"654ec45d-4d40-4832-8650-8f55707aeaa1","type":"point","x":495.9900746036134,"y":92.95326506457421},{"id":"3cc589aa-9869-43f9-9ab0-c28c40ba46d2","type":"point","x":495.9900746036134,"y":143.74225340144255},{"id":"3b13a8c5-669b-4ba7-8e07-3a4511ab504b","type":"point","x":459.0067969153495,"y":143.74225340144255}],"labels":[],"width":1,"color":"gray","curvyness":50,"selectedColor":"rgb(0,192,255)","data":{"local_table_uid":"866e488e-757b-40f4-b843-5fd6acdeadd2","local_column_attnum":2,"referenced_table_uid":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","referenced_column_attnum":0}},"4aaf5c07-dab7-4dcf-80f7-cf72acf691b5":{"id":"4aaf5c07-dab7-4dcf-80f7-cf72acf691b5","locked":true,"type":"onetomany","source":"28534a5d-8008-4a5c-b90c-47919a0628ae","sourcePort":"4856b922-425d-412e-a173-b559c221b785","target":"5c71a774-a9d4-410b-914b-7f604f5472d9","targetPort":"9c8906d6-60f5-4878-a086-4407f48f63c3","points":[{"id":"d4408763-65bc-4dfd-b2b2-e689bb28be05","type":"point","x":204.00990118767587,"y":92.95326506457421},{"id":"1be90018-a6f9-48dc-a334-bb9f5921b0c6","type":"point","x":204.00990118767587,"y":553.3415164818016},{"id":"970c2243-a951-4461-9d80-d7a052c7106b","type":"point","x":225.98699425015414,"y":553.3415164818016}],"labels":[],"width":1,"color":"gray","curvyness":50,"selectedColor":"rgb(0,192,255)","data":{"local_table_uid":"5c71a774-a9d4-410b-914b-7f604f5472d9","local_column_attnum":1,"referenced_table_uid":"28534a5d-8008-4a5c-b90c-47919a0628ae","referenced_column_attnum":0}},"b111d4c1-c62e-4820-94a5-6140a7b0be5f":{"id":"b111d4c1-c62e-4820-94a5-6140a7b0be5f","locked":true,"type":"onetomany","source":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","sourcePort":"1c256d7f-5287-47b1-90a7-261f809be3d9","target":"5c71a774-a9d4-410b-914b-7f604f5472d9","targetPort":"023c70c8-ef26-4be7-ba4d-94892189f538","points":[{"id":"ef8078fc-550e-497f-b52a-a46abc620a6b","type":"point","x":495.9900746036134,"y":92.95326506457421},{"id":"11256025-6371-4131-b351-3573280e4e85","type":"point","x":495.9900746036134,"y":578.7360482737708},{"id":"5f8f379d-4345-4fb2-b31b-d19c21b9434f","type":"point","x":459.0067969153495,"y":578.7360482737708}],"labels":[],"width":1,"color":"gray","curvyness":50,"selectedColor":"rgb(0,192,255)","data":{"local_table_uid":"5c71a774-a9d4-410b-914b-7f604f5472d9","local_column_attnum":2,"referenced_table_uid":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","referenced_column_attnum":0}}}},{"id":"f971590e-f6bf-4a00-ab28-a018401c8fa7","type":"diagram-nodes","isSvg":false,"transformed":true,"models":{"28534a5d-8008-4a5c-b90c-47919a0628ae":{"id":"28534a5d-8008-4a5c-b90c-47919a0628ae","type":"table","selected":true,"x":0,"y":0,"ports":[{"id":"083fd056-abc4-4b02-9eb8-7fd93139abbe","type":"onetomany","x":0.9900938195385924,"y":92.95326506457421,"name":"coll-port-0-left","alignment":"left","parentNode":"28534a5d-8008-4a5c-b90c-47919a0628ae","links":[]},{"id":"4856b922-425d-412e-a173-b559c221b785","type":"onetomany","x":174.00990118767587,"y":92.95326506457421,"name":"coll-port-0-right","alignment":"right","parentNode":"28534a5d-8008-4a5c-b90c-47919a0628ae","links":["2914055f-841c-4a0d-a20e-6fd2df9232cb","4aaf5c07-dab7-4dcf-80f7-cf72acf691b5"]}],"name":"Untitled","color":"rgb(0,192,255)","portsInOrder":[],"portsOutOrder":["083fd056-abc4-4b02-9eb8-7fd93139abbe","4856b922-425d-412e-a173-b559c221b785"],"otherInfo":{"data":{"name":"patient","coll_inherits":[],"hastoasttable":true,"toast_autovacuum_enabled":"x","autovacuum_enabled":"x","primary_key":[{"columns":[{"column":"patient_id","cid":"c106"}],"include":[],"cid":"c105"}],"foreign_key":[],"partition_keys":[],"partitions":[],"partition_type":"range","is_partitioned":false,"columns":[{"name":"patient_id","is_primary_key":true,"attnum":0,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c107"},{"name":"first_name","is_primary_key":false,"attnum":1,"cltype":"character varying","attlen":"20","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c108","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"last_name","is_primary_key":false,"attnum":2,"cltype":"character varying","attlen":"20","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c109","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"birth_date","is_primary_key":false,"attnum":3,"cltype":"date","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c110"},{"name":"gender","is_primary_key":false,"attnum":4,"cltype":"\"char\"","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c111"},{"name":"address","is_primary_key":false,"attnum":5,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c112"},{"name":"phone","is_primary_key":false,"attnum":6,"cltype":"character varying","attlen":"20","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c113","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"email","is_primary_key":false,"attnum":7,"cltype":"character varying","attlen":"100","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c114","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"registration_date","is_primary_key":false,"attnum":8,"cltype":"timestamp without time zone","attlen":"","min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c115"},{"name":"last_visit","is_primary_key":false,"attnum":9,"cltype":"timestamp without time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c116","defval":"NULL"},{"name":"Insurance","is_primary_key":false,"attnum":10,"cltype":"character varying","attlen":"255","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c117","defval":"NULL","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"created_at","is_primary_key":false,"attnum":11,"cltype":"timestamp with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c118","defval":"CURRENT_TIMESTAMP"},{"name":"updated_at","is_primary_key":false,"attnum":12,"cltype":"timestamp with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c119","defval":"CURRENT_TIMESTAMP"}],"schema":"public","unique_constraint":[{"columns":[{"column":"email","cid":"c121"}],"include":[],"cid":"c120","name":"patient_email_unique"}]},"note":"","metadata":{"data_failed":false,"is_promise":false,"fillColor":null,"textColor":null}}},"4d140e65-530e-4516-aa5c-23b2e32bc2d6":{"id":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","type":"table","selected":false,"x":525,"y":0,"ports":[{"id":"1c256d7f-5287-47b1-90a7-261f809be3d9","type":"onetomany","x":525.9900746036134,"y":92.95326506457421,"name":"coll-port-0-left","alignment":"left","parentNode":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","links":["a5b0fee0-beb9-4cd1-bb0e-a020da5e8dd1","b111d4c1-c62e-4820-94a5-6140a7b0be5f"]},{"id":"b28a5595-9260-4299-a602-c67930887503","type":"onetomany","x":699.009914892344,"y":92.95326506457421,"name":"coll-port-0-right","alignment":"right","parentNode":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","links":[]}],"name":"Untitled","color":"rgb(0,192,255)","portsInOrder":[],"portsOutOrder":["1c256d7f-5287-47b1-90a7-261f809be3d9","b28a5595-9260-4299-a602-c67930887503"],"otherInfo":{"data":{"name":"doctor","coll_inherits":[],"hastoasttable":true,"toast_autovacuum_enabled":"x","autovacuum_enabled":"x","primary_key":[{"columns":[{"column":"doctor_id","cid":"c168"}],"include":[],"cid":"c167","name":"doctor_pkey"}],"foreign_key":[],"partition_keys":[],"partitions":[],"partition_type":"range","is_partitioned":false,"columns":[{"name":"doctor_id","is_primary_key":true,"attnum":0,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c169"},{"name":"first_name","is_primary_key":false,"attnum":1,"cltype":"character varying","attlen":"20","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c170","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"last_name","is_primary_key":false,"attnum":2,"cltype":"character varying","attlen":"20","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c171","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"birth_date","is_primary_key":false,"attnum":6,"cltype":"date","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c172"},{"name":"email","is_primary_key":false,"attnum":4,"cltype":"character varying","attlen":"100","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c173","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"phone","is_primary_key":false,"attnum":5,"cltype":"character varying","attlen":"20","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c174","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"hire_date","is_primary_key":false,"attnum":7,"cltype":"date","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c175"},{"name":"specialty","is_primary_key":false,"attnum":3,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c176"},{"name":"qualification","is_primary_key":false,"attnum":8,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":false,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c177"},{"name":"office_location","is_primary_key":false,"attnum":10,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":false,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c178"},{"name":"department","is_primary_key":false,"attnum":9,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":false,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c179"},{"name":"created_at","is_primary_key":false,"attnum":11,"cltype":"timestamp with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c180","defval":"CURRENT_TIMESTAMP"},{"name":"updated_at","is_primary_key":false,"attnum":12,"cltype":"timestamp with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c181","defval":"CURRENT_TIMESTAMP"}],"schema":"public","unique_constraint":[{"name":"doctor_email_unique","comment":"","columns":[{"column":"email","cid":"c183"}],"include":[],"cid":"c182"}]},"note":"","metadata":{"data_failed":false,"is_promise":false,"fillColor":null,"textColor":null}}},"866e488e-757b-40f4-b843-5fd6acdeadd2":{"id":"866e488e-757b-40f4-b843-5fd6acdeadd2","type":"table","selected":false,"x":255,"y":0,"ports":[{"id":"c18715a6-1b51-4006-8fa4-bc22f8b43a04","type":"onetomany","x":255.98699425015414,"y":118.34777804477598,"name":"coll-port-1-left","alignment":"left","parentNode":"866e488e-757b-40f4-b843-5fd6acdeadd2","links":["2914055f-841c-4a0d-a20e-6fd2df9232cb"]},{"id":"47a7aea4-7526-4306-a0f2-2835f3dd0cdd","type":"onetomany","x":429.0067969153495,"y":118.34777804477598,"name":"coll-port-1-right","alignment":"right","parentNode":"866e488e-757b-40f4-b843-5fd6acdeadd2","links":[]},{"id":"9d22ee36-0169-47c9-90a0-f679f88c25ee","type":"onetomany","x":255.98699425015414,"y":143.74225340144255,"name":"coll-port-2-left","alignment":"left","parentNode":"866e488e-757b-40f4-b843-5fd6acdeadd2","links":[]},{"id":"8859526f-b200-4ede-ac4c-42132d1a4919","type":"onetomany","x":429.0067969153495,"y":143.74225340144255,"name":"coll-port-2-right","alignment":"right","parentNode":"866e488e-757b-40f4-b843-5fd6acdeadd2","links":["a5b0fee0-beb9-4cd1-bb0e-a020da5e8dd1"]}],"name":"Untitled","color":"rgb(0,192,255)","portsInOrder":[],"portsOutOrder":["c18715a6-1b51-4006-8fa4-bc22f8b43a04","47a7aea4-7526-4306-a0f2-2835f3dd0cdd","9d22ee36-0169-47c9-90a0-f679f88c25ee","8859526f-b200-4ede-ac4c-42132d1a4919"],"otherInfo":{"data":{"name":"appointment","coll_inherits":[],"hastoasttable":true,"toast_autovacuum_enabled":"x","autovacuum_enabled":"x","primary_key":[{"columns":[{"column":"appointment_id","cid":"c199"}],"include":[],"cid":"c198","name":"appointment_pkey"}],"foreign_key":[{"name":"fk_appointment_patient_id","confmatchtype":false,"autoindex":true,"coveringindex":"fki_fk_appointment_patient_id","columns":[{"local_column":"patient_id","local_column_cid":"c198","referenced":"patient_id","references":"28534a5d-8008-4a5c-b90c-47919a0628ae","references_table_name":"patient","cid":"c201"}],"confupdtype":"c","confdeltype":"r","cid":"c200","convalidated":true},{"name":"fk_appointment_doctor_id","confmatchtype":false,"autoindex":true,"coveringindex":"fki_fk_appointment_doctor_id","columns":[{"local_column":"doctor_id","local_column_cid":"c442","referenced":"doctor_id","references":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","references_table_name":"doctor","cid":"c203"}],"confupdtype":"c","confdeltype":"r","cid":"c202","convalidated":true}],"partition_keys":[],"partitions":[],"partition_type":"range","is_partitioned":false,"columns":[{"name":"appointment_id","is_primary_key":true,"attnum":0,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c204"},{"name":"patient_id","is_primary_key":false,"attnum":1,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c205"},{"name":"doctor_id","is_primary_key":false,"attnum":2,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c206"},{"name":"appointment_date","is_primary_key":false,"attnum":3,"cltype":"date","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c207"},{"name":"appointment_time","is_primary_key":false,"attnum":4,"cltype":"timestamp without time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c208"},{"name":"status","is_primary_key":false,"attnum":5,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c209","defval":""},{"name":"reason","is_primary_key":false,"attnum":6,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c210","defval":""},{"name":"created_at","is_primary_key":false,"attnum":7,"cltype":"timestamp with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c211","defval":"CURRENT_TIMESTAMP"},{"name":"updated_at","is_primary_key":false,"attnum":8,"cltype":"timestamp with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c212","defval":"CURRENT_TIMESTAMP"}],"schema":"public"},"note":"","metadata":{"data_failed":false,"is_promise":false,"fillColor":null,"textColor":null}}},"5c71a774-a9d4-410b-914b-7f604f5472d9":{"id":"5c71a774-a9d4-410b-914b-7f604f5472d9","type":"table","selected":false,"x":255,"y":435,"ports":[{"id":"9c8906d6-60f5-4878-a086-4407f48f63c3","type":"onetomany","x":255.98699425015414,"y":553.3415164818016,"name":"coll-port-1-left","alignment":"left","parentNode":"5c71a774-a9d4-410b-914b-7f604f5472d9","links":["4aaf5c07-dab7-4dcf-80f7-cf72acf691b5"]},{"id":"bee9d010-8c9a-4791-a2f6-be19fee9cd6a","type":"onetomany","x":429.0067969153495,"y":553.3415164818016,"name":"coll-port-1-right","alignment":"right","parentNode":"5c71a774-a9d4-410b-914b-7f604f5472d9","links":[]},{"id":"502b946f-a102-442e-a5c3-4a887cba3733","type":"onetomany","x":255.98699425015414,"y":578.7360482737708,"name":"coll-port-2-left","alignment":"left","parentNode":"5c71a774-a9d4-410b-914b-7f604f5472d9","links":[]},{"id":"023c70c8-ef26-4be7-ba4d-94892189f538","type":"onetomany","x":429.0067969153495,"y":578.7360482737708,"name":"coll-port-2-right","alignment":"right","parentNode":"5c71a774-a9d4-410b-914b-7f604f5472d9","links":["b111d4c1-c62e-4820-94a5-6140a7b0be5f"]}],"name":"Untitled","color":"rgb(0,192,255)","portsInOrder":[],"portsOutOrder":["9c8906d6-60f5-4878-a086-4407f48f63c3","bee9d010-8c9a-4791-a2f6-be19fee9cd6a","502b946f-a102-442e-a5c3-4a887cba3733","023c70c8-ef26-4be7-ba4d-94892189f538"],"otherInfo":{"data":{"name":"medical_record","coll_inherits":[],"hastoasttable":true,"toast_autovacuum_enabled":"x","autovacuum_enabled":"x","primary_key":[{"columns":[{"column":"medical_record_id","cid":"c228"}],"include":[],"cid":"c227"}],"foreign_key":[{"name":"fk_medical_record_patient_id","comment":"","confmatchtype":false,"convalidated":true,"autoindex":true,"coveringindex":"fki_fk_medical_record_patient_id","columns":[{"local_column":"patient_id","local_column_cid":"c179","referenced":"patient_id","references":"28534a5d-8008-4a5c-b90c-47919a0628ae","references_table_name":"patient","cid":"c230"}],"confupdtype":"c","confdeltype":"r","cid":"c229"},{"name":"fk_medical_record_doctor_id","confmatchtype":false,"convalidated":true,"autoindex":true,"coveringindex":"fki_fk_medical_record_doctor_id","columns":[{"local_column":"doctor_id","local_column_cid":"c372","referenced":"doctor_id","references":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","references_table_name":"doctor","cid":"c232"}],"confupdtype":"a","confdeltype":"a","cid":"c231"}],"partition_keys":[],"partitions":[],"partition_type":"range","is_partitioned":false,"columns":[{"name":"medical_record_id","is_primary_key":true,"attnum":0,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c233"},{"name":"patient_id","is_primary_key":false,"attnum":1,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c234"},{"name":"doctor_id","is_primary_key":false,"attnum":2,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c235"},{"name":"visit_date","is_primary_key":false,"attnum":3,"cltype":"date","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c236"},{"name":"diagnosis","is_primary_key":false,"attnum":4,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c237"},{"name":"treatment","is_primary_key":false,"attnum":5,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","defval":"NULL","attnotnull":false,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c238"},{"name":"prescriptions","is_primary_key":false,"attnum":6,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","defval":"NULL","attnotnull":false,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c239"},{"name":"notes","is_primary_key":false,"attnum":7,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","defval":"NULL","attnotnull":false,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c240"},{"name":"created_at","is_primary_key":false,"attnum":8,"cltype":"time with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"defval":"CURRENT_TIMESTAMP","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c241"},{"name":"updated_at","is_primary_key":false,"attnum":9,"cltype":"time with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"defval":"CURRENT_TIMESTAMP","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c242"}],"schema":"public"},"note":"","metadata":{"data_failed":false,"is_promise":false,"fillColor":null,"textColor":null}}}}}]}} \ No newline at end of file +{"version":"80600","data":{"id":"ae1420dc-6fc3-45ca-a637-46ec601bc6db","offsetX":62.82794386479293,"offsetY":44.994816292515694,"zoom":81.11300011475858,"gridSize":15,"layers":[{"id":"388310f9-2a86-40b1-aaed-b5e3a67c20ce","type":"diagram-links","isSvg":true,"transformed":true,"models":{"2914055f-841c-4a0d-a20e-6fd2df9232cb":{"id":"2914055f-841c-4a0d-a20e-6fd2df9232cb","locked":true,"type":"onetomany","source":"28534a5d-8008-4a5c-b90c-47919a0628ae","sourcePort":"4856b922-425d-412e-a173-b559c221b785","target":"866e488e-757b-40f4-b843-5fd6acdeadd2","targetPort":"c18715a6-1b51-4006-8fa4-bc22f8b43a04","points":[{"id":"40c6ac40-db8f-4fbf-b606-ea7fe518ee73","type":"point","x":204.00990118767587,"y":92.95326506457421},{"id":"9b2ed721-5b9a-440f-8a7d-37d011157612","type":"point","x":204.00990118767587,"y":118.34777804477598},{"id":"398ad4b1-7e22-430c-b10c-fd9a61a8b6ea","type":"point","x":225.98699425015414,"y":118.34777804477598}],"labels":[],"width":1,"color":"gray","curvyness":50,"selectedColor":"rgb(0,192,255)","data":{"local_table_uid":"866e488e-757b-40f4-b843-5fd6acdeadd2","local_column_attnum":1,"referenced_table_uid":"28534a5d-8008-4a5c-b90c-47919a0628ae","referenced_column_attnum":0}},"a5b0fee0-beb9-4cd1-bb0e-a020da5e8dd1":{"id":"a5b0fee0-beb9-4cd1-bb0e-a020da5e8dd1","locked":true,"type":"onetomany","source":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","sourcePort":"1c256d7f-5287-47b1-90a7-261f809be3d9","target":"866e488e-757b-40f4-b843-5fd6acdeadd2","targetPort":"8859526f-b200-4ede-ac4c-42132d1a4919","points":[{"id":"654ec45d-4d40-4832-8650-8f55707aeaa1","type":"point","x":495.9900746036134,"y":92.95326506457421},{"id":"3cc589aa-9869-43f9-9ab0-c28c40ba46d2","type":"point","x":495.9900746036134,"y":143.74225340144255},{"id":"3b13a8c5-669b-4ba7-8e07-3a4511ab504b","type":"point","x":459.0067969153495,"y":143.74225340144255}],"labels":[],"width":1,"color":"gray","curvyness":50,"selectedColor":"rgb(0,192,255)","data":{"local_table_uid":"866e488e-757b-40f4-b843-5fd6acdeadd2","local_column_attnum":2,"referenced_table_uid":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","referenced_column_attnum":0}},"4aaf5c07-dab7-4dcf-80f7-cf72acf691b5":{"id":"4aaf5c07-dab7-4dcf-80f7-cf72acf691b5","locked":true,"type":"onetomany","source":"28534a5d-8008-4a5c-b90c-47919a0628ae","sourcePort":"4856b922-425d-412e-a173-b559c221b785","target":"5c71a774-a9d4-410b-914b-7f604f5472d9","targetPort":"9c8906d6-60f5-4878-a086-4407f48f63c3","points":[{"id":"d4408763-65bc-4dfd-b2b2-e689bb28be05","type":"point","x":204.00990118767587,"y":92.95326506457421},{"id":"1be90018-a6f9-48dc-a334-bb9f5921b0c6","type":"point","x":204.00990118767587,"y":553.3415164818016},{"id":"970c2243-a951-4461-9d80-d7a052c7106b","type":"point","x":225.98699425015414,"y":553.3415164818016}],"labels":[],"width":1,"color":"gray","curvyness":50,"selectedColor":"rgb(0,192,255)","data":{"local_table_uid":"5c71a774-a9d4-410b-914b-7f604f5472d9","local_column_attnum":1,"referenced_table_uid":"28534a5d-8008-4a5c-b90c-47919a0628ae","referenced_column_attnum":0}},"b111d4c1-c62e-4820-94a5-6140a7b0be5f":{"id":"b111d4c1-c62e-4820-94a5-6140a7b0be5f","locked":true,"type":"onetomany","source":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","sourcePort":"1c256d7f-5287-47b1-90a7-261f809be3d9","target":"5c71a774-a9d4-410b-914b-7f604f5472d9","targetPort":"023c70c8-ef26-4be7-ba4d-94892189f538","points":[{"id":"ef8078fc-550e-497f-b52a-a46abc620a6b","type":"point","x":495.9900746036134,"y":92.95326506457421},{"id":"11256025-6371-4131-b351-3573280e4e85","type":"point","x":495.9900746036134,"y":578.7360482737708},{"id":"5f8f379d-4345-4fb2-b31b-d19c21b9434f","type":"point","x":459.0067969153495,"y":578.7360482737708}],"labels":[],"width":1,"color":"gray","curvyness":50,"selectedColor":"rgb(0,192,255)","data":{"local_table_uid":"5c71a774-a9d4-410b-914b-7f604f5472d9","local_column_attnum":2,"referenced_table_uid":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","referenced_column_attnum":0}}}},{"id":"f971590e-f6bf-4a00-ab28-a018401c8fa7","type":"diagram-nodes","isSvg":false,"transformed":true,"models":{"28534a5d-8008-4a5c-b90c-47919a0628ae":{"id":"28534a5d-8008-4a5c-b90c-47919a0628ae","type":"table","selected":true,"x":0,"y":0,"ports":[{"id":"083fd056-abc4-4b02-9eb8-7fd93139abbe","type":"onetomany","x":0.9900938195385924,"y":92.95326506457421,"name":"coll-port-0-left","alignment":"left","parentNode":"28534a5d-8008-4a5c-b90c-47919a0628ae","links":[]},{"id":"4856b922-425d-412e-a173-b559c221b785","type":"onetomany","x":174.00990118767587,"y":92.95326506457421,"name":"coll-port-0-right","alignment":"right","parentNode":"28534a5d-8008-4a5c-b90c-47919a0628ae","links":["2914055f-841c-4a0d-a20e-6fd2df9232cb","4aaf5c07-dab7-4dcf-80f7-cf72acf691b5"]}],"name":"Untitled","color":"rgb(0,192,255)","portsInOrder":[],"portsOutOrder":["083fd056-abc4-4b02-9eb8-7fd93139abbe","4856b922-425d-412e-a173-b559c221b785"],"otherInfo":{"data":{"name":"patient","coll_inherits":[],"hastoasttable":true,"toast_autovacuum_enabled":"x","autovacuum_enabled":"x","primary_key":[{"columns":[{"column":"patient_id","cid":"c13"}],"include":[],"cid":"c12"}],"foreign_key":[],"partition_keys":[],"partitions":[],"partition_type":"range","is_partitioned":false,"columns":[{"name":"patient_id","is_primary_key":true,"attnum":0,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c14"},{"name":"first_name","is_primary_key":false,"attnum":1,"cltype":"character varying","attlen":"20","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c15","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"last_name","is_primary_key":false,"attnum":2,"cltype":"character varying","attlen":"20","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c16","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"birth_date","is_primary_key":false,"attnum":3,"cltype":"date","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c17"},{"name":"gender","is_primary_key":false,"attnum":4,"cltype":"\"char\"","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c18"},{"name":"address","is_primary_key":false,"attnum":5,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c19"},{"name":"phone","is_primary_key":false,"attnum":6,"cltype":"character varying","attlen":"20","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c20","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"email","is_primary_key":false,"attnum":7,"cltype":"character varying","attlen":"100","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c21","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"registration_date","is_primary_key":false,"attnum":8,"cltype":"timestamp without time zone","attlen":"","min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c22"},{"name":"last_visit","is_primary_key":false,"attnum":9,"cltype":"timestamp without time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c23","defval":"NULL"},{"name":"insurance","is_primary_key":false,"attnum":10,"cltype":"character varying","attlen":"255","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c24","defval":"NULL","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"created_at","is_primary_key":false,"attnum":11,"cltype":"timestamp with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c25","defval":"CURRENT_TIMESTAMP"},{"name":"updated_at","is_primary_key":false,"attnum":12,"cltype":"timestamp with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c26","defval":"CURRENT_TIMESTAMP"}],"schema":"public","unique_constraint":[{"columns":[{"column":"email","cid":"c28"}],"include":[],"cid":"c27","name":"patient_email_unique"}]},"note":"","metadata":{"data_failed":false,"is_promise":false,"fillColor":null,"textColor":null}}},"4d140e65-530e-4516-aa5c-23b2e32bc2d6":{"id":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","type":"table","selected":false,"x":525,"y":0,"ports":[{"id":"1c256d7f-5287-47b1-90a7-261f809be3d9","type":"onetomany","x":525.9900746036134,"y":92.95326506457421,"name":"coll-port-0-left","alignment":"left","parentNode":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","links":["a5b0fee0-beb9-4cd1-bb0e-a020da5e8dd1","b111d4c1-c62e-4820-94a5-6140a7b0be5f"]},{"id":"b28a5595-9260-4299-a602-c67930887503","type":"onetomany","x":699.009914892344,"y":92.95326506457421,"name":"coll-port-0-right","alignment":"right","parentNode":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","links":[]}],"name":"Untitled","color":"rgb(0,192,255)","portsInOrder":[],"portsOutOrder":["1c256d7f-5287-47b1-90a7-261f809be3d9","b28a5595-9260-4299-a602-c67930887503"],"otherInfo":{"data":{"columns":[{"name":"doctor_id","is_primary_key":true,"attnum":0,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c169"},{"name":"first_name","is_primary_key":false,"attnum":1,"cltype":"character varying","attlen":"20","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c170","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"last_name","is_primary_key":false,"attnum":2,"cltype":"character varying","attlen":"20","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c171","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"birth_date","is_primary_key":false,"attnum":6,"cltype":"date","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c172"},{"name":"email","is_primary_key":false,"attnum":4,"cltype":"character varying","attlen":"100","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c173","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"phone","is_primary_key":false,"attnum":5,"cltype":"character varying","attlen":"20","attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c174","min_val_attlen":1,"max_val_attlen":2147483647},{"name":"hire_date","is_primary_key":false,"attnum":7,"cltype":"date","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c175"},{"name":"specialty","is_primary_key":false,"attnum":3,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c176"},{"name":"qualification","is_primary_key":false,"attnum":8,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":false,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c177"},{"name":"office_location","is_primary_key":false,"attnum":10,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":false,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c178"},{"name":"department","is_primary_key":false,"attnum":9,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":false,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c179"},{"name":"created_at","is_primary_key":false,"attnum":11,"cltype":"timestamp with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c180","defval":"CURRENT_TIMESTAMP"},{"name":"updated_at","is_primary_key":false,"attnum":12,"cltype":"timestamp with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c181","defval":"CURRENT_TIMESTAMP"}],"name":"doctor","coll_inherits":[],"hastoasttable":true,"toast_autovacuum_enabled":"x","autovacuum_enabled":"x","primary_key":[{"columns":[{"column":"doctor_id","cid":"c168"}],"include":[],"cid":"c167","name":"doctor_pkey"}],"foreign_key":[],"partition_keys":[],"partitions":[],"partition_type":"range","is_partitioned":false,"schema":"public","unique_constraint":[{"name":"doctor_email_unique","comment":"","columns":[{"column":"email","cid":"c183"}],"include":[],"cid":"c182"}]},"note":"","metadata":{"data_failed":false,"is_promise":false,"fillColor":null,"textColor":null}}},"866e488e-757b-40f4-b843-5fd6acdeadd2":{"id":"866e488e-757b-40f4-b843-5fd6acdeadd2","type":"table","selected":false,"x":255,"y":0,"ports":[{"id":"c18715a6-1b51-4006-8fa4-bc22f8b43a04","type":"onetomany","x":255.98699425015414,"y":118.34777804477598,"name":"coll-port-1-left","alignment":"left","parentNode":"866e488e-757b-40f4-b843-5fd6acdeadd2","links":["2914055f-841c-4a0d-a20e-6fd2df9232cb"]},{"id":"47a7aea4-7526-4306-a0f2-2835f3dd0cdd","type":"onetomany","x":429.0067969153495,"y":118.34777804477598,"name":"coll-port-1-right","alignment":"right","parentNode":"866e488e-757b-40f4-b843-5fd6acdeadd2","links":[]},{"id":"9d22ee36-0169-47c9-90a0-f679f88c25ee","type":"onetomany","x":255.98699425015414,"y":143.74225340144255,"name":"coll-port-2-left","alignment":"left","parentNode":"866e488e-757b-40f4-b843-5fd6acdeadd2","links":[]},{"id":"8859526f-b200-4ede-ac4c-42132d1a4919","type":"onetomany","x":429.0067969153495,"y":143.74225340144255,"name":"coll-port-2-right","alignment":"right","parentNode":"866e488e-757b-40f4-b843-5fd6acdeadd2","links":["a5b0fee0-beb9-4cd1-bb0e-a020da5e8dd1"]}],"name":"Untitled","color":"rgb(0,192,255)","portsInOrder":[],"portsOutOrder":["c18715a6-1b51-4006-8fa4-bc22f8b43a04","47a7aea4-7526-4306-a0f2-2835f3dd0cdd","9d22ee36-0169-47c9-90a0-f679f88c25ee","8859526f-b200-4ede-ac4c-42132d1a4919"],"otherInfo":{"data":{"columns":[{"name":"appointment_id","is_primary_key":true,"attnum":0,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c204"},{"name":"patient_id","is_primary_key":false,"attnum":1,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c205"},{"name":"doctor_id","is_primary_key":false,"attnum":2,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c206"},{"name":"appointment_date","is_primary_key":false,"attnum":3,"cltype":"date","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c207"},{"name":"appointment_time","is_primary_key":false,"attnum":4,"cltype":"timestamp without time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c208"},{"name":"status","is_primary_key":false,"attnum":5,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c209","defval":""},{"name":"reason","is_primary_key":false,"attnum":6,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c210","defval":""},{"name":"created_at","is_primary_key":false,"attnum":7,"cltype":"timestamp with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c211","defval":"CURRENT_TIMESTAMP"},{"name":"updated_at","is_primary_key":false,"attnum":8,"cltype":"timestamp with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c212","defval":"CURRENT_TIMESTAMP"}],"name":"appointment","coll_inherits":[],"hastoasttable":true,"toast_autovacuum_enabled":"x","autovacuum_enabled":"x","primary_key":[{"columns":[{"column":"appointment_id","cid":"c199"}],"include":[],"cid":"c198","name":"appointment_pkey"}],"foreign_key":[{"name":"fk_appointment_patient_id","confmatchtype":false,"autoindex":true,"coveringindex":"fki_fk_appointment_patient_id","columns":[{"local_column":"patient_id","local_column_cid":"c198","referenced":"patient_id","references":"28534a5d-8008-4a5c-b90c-47919a0628ae","references_table_name":"patient","cid":"c201"}],"confupdtype":"c","confdeltype":"r","cid":"c200","convalidated":true},{"name":"fk_appointment_doctor_id","confmatchtype":false,"autoindex":true,"coveringindex":"fki_fk_appointment_doctor_id","columns":[{"local_column":"doctor_id","local_column_cid":"c442","referenced":"doctor_id","references":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","references_table_name":"doctor","cid":"c203"}],"confupdtype":"c","confdeltype":"r","cid":"c202","convalidated":true}],"partition_keys":[],"partitions":[],"partition_type":"range","is_partitioned":false,"schema":"public"},"note":"","metadata":{"data_failed":false,"is_promise":false,"fillColor":null,"textColor":null}}},"5c71a774-a9d4-410b-914b-7f604f5472d9":{"id":"5c71a774-a9d4-410b-914b-7f604f5472d9","type":"table","selected":false,"x":255,"y":435,"ports":[{"id":"9c8906d6-60f5-4878-a086-4407f48f63c3","type":"onetomany","x":255.98699425015414,"y":553.3415164818016,"name":"coll-port-1-left","alignment":"left","parentNode":"5c71a774-a9d4-410b-914b-7f604f5472d9","links":["4aaf5c07-dab7-4dcf-80f7-cf72acf691b5"]},{"id":"bee9d010-8c9a-4791-a2f6-be19fee9cd6a","type":"onetomany","x":429.0067969153495,"y":553.3415164818016,"name":"coll-port-1-right","alignment":"right","parentNode":"5c71a774-a9d4-410b-914b-7f604f5472d9","links":[]},{"id":"502b946f-a102-442e-a5c3-4a887cba3733","type":"onetomany","x":255.98699425015414,"y":578.7360482737708,"name":"coll-port-2-left","alignment":"left","parentNode":"5c71a774-a9d4-410b-914b-7f604f5472d9","links":[]},{"id":"023c70c8-ef26-4be7-ba4d-94892189f538","type":"onetomany","x":429.0067969153495,"y":578.7360482737708,"name":"coll-port-2-right","alignment":"right","parentNode":"5c71a774-a9d4-410b-914b-7f604f5472d9","links":["b111d4c1-c62e-4820-94a5-6140a7b0be5f"]}],"name":"Untitled","color":"rgb(0,192,255)","portsInOrder":[],"portsOutOrder":["9c8906d6-60f5-4878-a086-4407f48f63c3","bee9d010-8c9a-4791-a2f6-be19fee9cd6a","502b946f-a102-442e-a5c3-4a887cba3733","023c70c8-ef26-4be7-ba4d-94892189f538"],"otherInfo":{"data":{"columns":[{"name":"medical_record_id","is_primary_key":true,"attnum":0,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c233"},{"name":"patient_id","is_primary_key":false,"attnum":1,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c234"},{"name":"doctor_id","is_primary_key":false,"attnum":2,"cltype":"serial","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c235"},{"name":"visit_date","is_primary_key":false,"attnum":3,"cltype":"date","attlen":null,"attprecision":null,"attcompression":"","collspcname":null,"attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c236"},{"name":"diagnosis","is_primary_key":false,"attnum":4,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c237"},{"name":"treatment","is_primary_key":false,"attnum":5,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","defval":"NULL","attnotnull":false,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c238"},{"name":"prescriptions","is_primary_key":false,"attnum":6,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","defval":"NULL","attnotnull":false,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c239"},{"name":"notes","is_primary_key":false,"attnum":7,"cltype":"text","attlen":null,"attprecision":null,"attcompression":"","defval":"NULL","attnotnull":false,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c240"},{"name":"created_at","is_primary_key":false,"attnum":8,"cltype":"time with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"defval":"CURRENT_TIMESTAMP","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c241"},{"name":"updated_at","is_primary_key":false,"attnum":9,"cltype":"time with time zone","attlen":null,"min_val_attlen":0,"max_val_attlen":6,"attprecision":null,"collspcname":null,"defval":"CURRENT_TIMESTAMP","attnotnull":true,"colconstype":"n","attidentity":"a","attoptions":[],"cid":"c242"}],"name":"medical_record","coll_inherits":[],"hastoasttable":true,"toast_autovacuum_enabled":"x","autovacuum_enabled":"x","primary_key":[{"columns":[{"column":"medical_record_id","cid":"c228"}],"include":[],"cid":"c227"}],"foreign_key":[{"name":"fk_medical_record_patient_id","comment":"","confmatchtype":false,"convalidated":true,"autoindex":true,"coveringindex":"fki_fk_medical_record_patient_id","columns":[{"local_column":"patient_id","local_column_cid":"c179","referenced":"patient_id","references":"28534a5d-8008-4a5c-b90c-47919a0628ae","references_table_name":"patient","cid":"c230"}],"confupdtype":"c","confdeltype":"r","cid":"c229"},{"name":"fk_medical_record_doctor_id","confmatchtype":false,"convalidated":true,"autoindex":true,"coveringindex":"fki_fk_medical_record_doctor_id","columns":[{"local_column":"doctor_id","local_column_cid":"c372","referenced":"doctor_id","references":"4d140e65-530e-4516-aa5c-23b2e32bc2d6","references_table_name":"doctor","cid":"c232"}],"confupdtype":"a","confdeltype":"a","cid":"c231"}],"partition_keys":[],"partitions":[],"partition_type":"range","is_partitioned":false,"schema":"public"},"note":"","metadata":{"data_failed":false,"is_promise":false,"fillColor":null,"textColor":null}}}}}]}} \ No newline at end of file diff --git a/CMS/users/__init__.py b/CMS/users/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/CMS/users/apps.py b/CMS/users/apps.py deleted file mode 100644 index 88f7b17..0000000 --- a/CMS/users/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class UsersConfig(AppConfig): - default_auto_field = "django.db.models.BigAutoField" - name = "users" diff --git a/CMS/users/migrations/__init__.py b/CMS/users/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/CMS/users/models.py b/CMS/users/models.py deleted file mode 100644 index 71a8362..0000000 --- a/CMS/users/models.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.db import models - -# Create your models here. diff --git a/CMS/users/tests.py b/CMS/users/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/CMS/users/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here.