### مستندات پروژه پایگاه داده سیستم مدیریت کلینیک پزشکی
#### ۱. معرفی پروژه
**عنوان پروژه:** سیستم مدیریت کلینیک پزشکی
**توضیح:** این پروژه برای مدیریت عملیاتهای مختلف یک کلینیک پزشکی طراحی شده است. سیستم شامل مدیریت بیماران، پزشکان، نوبتها، سوابق پزشکی و پرداختها است. هدف اصلی این سیستم، بهبود کارایی در ارائه خدمات پزشکی، پیگیری نوبتها و مدیریت اطلاعات بیماران و پزشکان است.
#### ۲. شرح جداول پایگاه داده
##### جدول بیماران (`Patients`)
- **توضیح:** این جدول شامل اطلاعات مربوط به بیماران مراجعهکننده به کلینیک است.
- **فیلدها:**
- **PatientID:** شناسه منحصر به فرد برای هر بیمار (کلید اصلی).
- **FirstName:** نام بیمار.
- **LastName:** نام خانوادگی بیمار.
- **DateOfBirth:** تاریخ تولد بیمار.
- **PhoneNumber:** شماره تماس بیمار.
- **Email:** آدرس ایمیل بیمار.
- **Address:** آدرس محل سکونت بیمار.
##### جدول پزشکان (`Doctors`)
- **توضیح:** این جدول شامل اطلاعات مربوط به پزشکان فعال در کلینیک است.
- **فیلدها:**
- **DoctorID:** شناسه منحصر به فرد برای هر پزشک (کلید اصلی).
- **FirstName:** نام پزشک.
- **LastName:** نام خانوادگی پزشک.
- **Specialization:** تخصص پزشک.
- **PhoneNumber:** شماره تماس پزشک.
- **Email:** آدرس ایمیل پزشک.
##### جدول نوبتها (`Appointments`)
- **توضیح:** این جدول شامل اطلاعات مربوط به نوبتهای بیماران برای ملاقات با پزشکان است.
- **فیلدها:**
- **AppointmentID:** شناسه منحصر به فرد برای هر نوبت (کلید اصلی).
- **PatientID:** شناسه بیمار که نوبت را ثبت کرده است (کلید خارجی که به جدول `Patients` متصل است).
- **DoctorID:** شناسه پزشک که قرار است بیمار را معاینه کند (کلید خارجی که به جدول `Doctors` متصل است).
- **AppointmentDate:** تاریخ و زمان نوبت.
- **Status:** وضعیت نوبت (مثلاً برنامهریزی شده، لغو شده، انجام شده).
##### جدول سوابق پزشکی (`MedicalRecords`)
- **توضیح:** این جدول شامل سوابق پزشکی و نتایج معاینههای بیماران است.
- **فیلدها:**
- **RecordID:** شناسه منحصر به فرد برای هر رکورد پزشکی (کلید اصلی).
- **PatientID:** شناسه بیمار مربوط به رکورد پزشکی (کلید خارجی که به جدول `Patients` متصل است).
- **DoctorID:** شناسه پزشک که رکورد را ثبت کرده است (کلید خارجی که به جدول `Doctors` متصل است).
- **RecordDate:** تاریخ ثبت رکورد پزشکی.
- **Diagnosis:** تشخیص پزشکی.
- **Treatment:** درمان یا تجویزات انجامشده.
- **Notes:** یادداشتهای اضافی.
##### جدول پرداختها (`Payments`)
- **توضیح:** این جدول شامل اطلاعات مربوط به پرداختهای انجامشده برای خدمات پزشکی است.
- **فیلدها:**
- **PaymentID:** شناسه منحصر به فرد برای هر پرداخت (کلید اصلی).
- **PatientID:** شناسه بیمار که پرداخت را انجام داده است (کلید خارجی که به جدول `Patients` متصل است).
- **AppointmentID:** شناسه نوبتی که پرداخت مربوط به آن است (کلید خارجی که به جدول `Appointments` متصل است).
- **PaymentDate:** تاریخ پرداخت.
- **Amount:** مبلغ پرداختشده.
- **PaymentMethod:** روش پرداخت (مانند نقدی، کارت اعتباری).
#### ۳. شرح روابط جداول
- **ارتباط بین جدول بیماران و جدول نوبتها:** هر بیمار میتواند چندین نوبت داشته باشد، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول پزشکان و جدول نوبتها:** هر پزشک میتواند چندین نوبت داشته باشد، بنابراین بین این دو جدول نیز یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول بیماران و جدول سوابق پزشکی:** هر بیمار میتواند چندین رکورد پزشکی داشته باشد، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول پزشکان و جدول سوابق پزشکی:** هر پزشک میتواند چندین رکورد پزشکی برای بیماران ثبت کند، بنابراین بین این دو جدول نیز یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول نوبتها و جدول پرداختها:** هر نوبت ممکن است شامل یک یا چند پرداخت باشد، بنابراین بین این دو جدول یک ارتباط یک به چند (One-to-Many) برقرار است.
- **ارتباط بین جدول بیماران و جدول پرداختها:** هر بیمار ممکن است چندین پرداخت انجام دهد، بنابراین بین این دو جدول نیز یک ارتباط یک به چند (One-to-Many) برقرار است.
#### ۴. توضیحات اضافی
- **کلیدهای اصلی:** هر جدول دارای یک کلید اصلی است که بهصورت منحصر به فرد هر رکورد را شناسایی میکند.
- **کلیدهای خارجی:** کلیدهای خارجی برای برقراری ارتباط بین جداول استفاده میشوند. به عنوان مثال، `PatientID` در جدول `Appointments` به جدول `Patients` و `DoctorID` در جدول `MedicalRecords` به جدول `Doctors` متصل است.
#### ۵. مثالهای استفاده
- **دریافت لیست تمام نوبتهای یک پزشک خاص:**
- با استفاده از `DoctorID` میتوان لیست تمام نوبتهای مربوط به یک پزشک خاص را از جدول `Appointments` استخراج کرد.
- **پیگیری سوابق پزشکی یک بیمار خاص:**
- با استفاده از `PatientID` در جدول `MedicalRecords` میتوان سوابق پزشکی مربوط به آن بیمار را مشاهده کرد.
- **محاسبه کل درآمد کلینیک از پرداختهای انجامشده در یک بازه زمانی مشخص:**
- با جمعبندی `Amount` در جدول `Payments` برای پرداختهای انجامشده در یک بازه زمانی مشخص، میتوان کل درآمد کلینیک را محاسبه کرد.
---
این مستندات ساختار و توضیحات ضروری برای درک و استفاده از پایگاه داده سیستم مدیریت کلینیک پزشکی را ارائه میدهد و میتواند بهعنوان راهنمایی برای توسعه و بهبود این سیستم مفید باشد.