نوبت دهی کلینیک با استفاده از PHP و SQLite3
نوبت دهی کلینیک یکی از نیازهای اساسی در مدیریت خدمات درمانی است. با استفاده از PHP و SQLite3 میتوان یک سیستم نوبت دهی ساده و کارآمد طراحی کرد. در ادامه، مراحل ایجاد این سیستم را بررسی خواهیم کرد.
۱. راهاندازی محیط
ابتدا به یک سرور محلی مثل XAMPP یا WAMP نیاز دارید که PHP و SQLite3 را پشتیبانی کند. پس از نصب، یک پروژه جدید ایجاد کنید.
۲. ایجاد پایگاه داده
با استفاده از SQLite3 میتوانید یک پایگاه داده برای ذخیرهسازی اطلاعات نوبتها ایجاد کنید.
```php
<?php
$db = new SQLite3('clinic.db');
$db->exec("CREATE TABLE IF NOT EXISTS appointments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
patient_name TEXT NOT NULL,
appointment_date TEXT NOT NULL,
doctor TEXT NOT NULL
)");
?>
```
۳. فرم نوبت دهی
یک فرم HTML ساده برای دریافت اطلاعات بیمار و تاریخ نوبت طراحی کنید.
```html
<form action="book_appointment.php" method="POST">
نام بیمار: <input type="text" name="patient_name" required>
تاریخ نوبت: <input type="date" name="appointment_date" required>
پزشک: <input type="text" name="doctor" required>
<input type="submit" value="رزرو نوبت">
</form>
```
۴. پردازش فرم
در فایل `book_appointment.php`، اطلاعات فرم را پردازش و در پایگاه داده ذخیره کنید.
```php
<?php
$db = new SQLite3('clinic.db');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$patient_name = $_POST['patient_name'];
$appointment_date = $_POST['appointment_date'];
$doctor = $_POST['doctor'];
$stmt = $db->prepare("INSERT INTO appointments (patient_name, appointment_date, doctor) VALUES (:patient_name, :appointment_date, :doctor)");
$stmt->bindValue(':patient_name', $patient_name, SQLITE3_TEXT);
$stmt->bindValue(':appointment_date', $appointment_date, SQLITE3_TEXT);
$stmt->bindValue(':doctor', $doctor, SQLITE3_TEXT);
$stmt->execute();
echo "نوبت با موفقیت رزرو شد!";
}
?>
```
۵. نمایش نوبتها
برای نمایش نوبتهای رزرو شده، میتوانید یک صفحه جدید ایجاد کنید.
```php
<?php
$db = new SQLite3('clinic.db');
$result = $db->query('SELECT * FROM appointments');
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
echo "نام بیمار: " . $row['patient_name'] . " - تاریخ نوبت: " . $row['appointment_date'] . " - پزشک: " . $row['doctor'] . "<br>";
}
?>
```
نتیجهگیری
این سیستم نوبت دهی با PHP و SQLite3 بسیار ساده است، اما میتوان آن را با امکانات بیشتری مثل احراز هویت، ارسال پیامک و یادآوری نوبت، گسترش داد. با این رویکرد، میتوانید کارایی و راحتی بیشتری را برای بیماران و کادر درمانی فراهم کنید.
نوبتدهی کلینیک با PHP و SQLite3: راهنمای جامع
در این پروژه، هدف اصلی ساخت یک سیستم نوبتدهی ساده اما کارآمد برای کلینیک است، که با زبان PHP و پایگاه داده SQLite3 ساخته شده است. این سیستم باید قابلیت ثبت نوبت، مشاهده نوبتهای جاری، حذف یا تغییر نوبتها و مدیریت کلی را داشته باشد. در ادامه، به صورت گام به گام، نحوه طراحی و پیادهسازی این سیستم را توضیح میدهم.
۱. طراحی پایگاه داده
ابتدا باید جداول مورد نیاز را تعریف کنیم. برای این سیستم، یک جدول کافی است:
- appointments: اطلاعات نوبتها شامل شناسه، نام بیمار، تاریخ و زمان نوبت، و وضعیت.
کد SQL برای ساخت این جدول:
```sql
CREATE TABLE IF NOT EXISTS appointments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
patient_name TEXT NOT NULL,
appointment_date DATE NOT NULL,
appointment_time TIME NOT NULL,
status TEXT DEFAULT 'Pending'
);
```
این جدول به ما اجازه میدهد هر نوبت را با جزئیات ثبت کنیم، و وضعیت آن را کنترل کنیم.
۲. راهاندازی پروژه PHP
در محیط PHP، فایلهایی برای مدیریت عملیات مختلف نیاز است:
- `index.php`: صفحه اصلی و فرم ثبت نوبت.
- `add.php`: پردازش فرم و افزودن نوبت به پایگاه داده.
- `list.php`: نمایش لیست نوبتها.
- `delete.php`: حذف نوبت.
- `update.php`: تغییر وضعیت نوبت یا ویرایش اطلاعات.
در این طرح، هر فایل به صورت مجزا کار میکند و ارتباطشان از طریق فرمها و لینکها برقرار است.
۳. کد نمونه برای اتصال به پایگاه داده SQLite3
در هر فایل PHP باید اتصال برقرار کنیم:
```php
$db = new SQLite3('clinic_appointments.db');
// اگر پایگاه داده وجود ندارد، آن را بسازید
$db->exec('CREATE TABLE IF NOT EXISTS appointments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
patient_name TEXT NOT NULL,
appointment_date DATE NOT NULL,
appointment_time TIME NOT NULL,
status TEXT DEFAULT "Pending"
)');
```
این کد را در ابتدای هر فایل قرار دهید تا اطمینان حاصل شود جدول وجود دارد.
۴. ثبت نوبت جدید
در فایل `index.php`، فرم HTML برای دریافت اطلاعات بیمار:
```html
<form action="add.php" method="post">
نام بیمار: <input type="text" name="patient_name" required>
تاریخ نوبت: <input type="date" name="appointment_date" required>
زمان نوبت: <input type="time" name="appointment_time" required>
<button type="submit">ثبت نوبت</button>
</form>
```
در فایل `add.php`, پس از ارسال فرم، اطلاعات را دریافت و در پایگاه داده ذخیره میکنیم:
```php
<?php
$db = new SQLite3('clinic_appointments.db');
$patient_name = $_POST['patient_name'];
$appointment_date = $_POST['appointment_date'];
$appointment_time = $_POST['appointment_time'];
$stmt = $db->prepare('INSERT INTO appointments (patient_name, appointment_date, appointment_time) VALUES (?, ?, ?)');
$stmt->bindValue(1, $patient_name, SQLITE3_TEXT);
$stmt->bindValue(2, $appointment_date, SQLITE3_TEXT);
$stmt->bindValue(3, $appointment_time, SQLITE3_TEXT);
$stmt->execute();
header("Location: list.php");
?>
```
این کد نوبت جدید را ثبت میکند و کاربر را به لیست نوبتها هدایت میکند.
۵. نمایش نوبتها
در فایل `list.php`، نوبتها را از پایگاه داده خوانده و نمایش میدهیم:
```php
<?php
$db = new SQLite3('clinic_appointments.db');
$result = $db->query('SELECT * FROM appointments ORDER BY appointment_date, appointment_time');
echo "<table border='1'>";
echo "<tr><th>شناسه</th><th>نام بیمار</th><th>تاریخ</th><th>زمان</th><th>وضعیت</th><th>عملیات</th></tr>";
while($row = $result->fetchArray()) {
echo "<tr>";
echo "<td>{$row['id']}</td>";
echo "<td>{$row['patient_name']}</td>";
echo "<td>{$row['appointment_date']}</td>";
echo "<td>{$row['appointment_time']}</td>";
echo "<td>{$row['status']}</td>";
echo "<td>";
echo "<a href='delete.php?id={$row['id']}'>حذف</a> | ";
echo "<a href='update.php?id={$row['id']}'>تغییر وضعیت</a>";
echo "</td>";
echo "</tr>";
}
echo "</table>";
?>
```
در اینجا، لیستی از نوبتها به همراه عملیات حذف و تغییر وضعیت نمایش داده میشود.
۶. حذف و ویرایش نوبتها
در فایل `delete.php`، نوبت بر اساس شناسه حذف میشود:
```php
<?php
$db = new SQLite3('clinic_appointments.db');
$id = $_GET['id'];
$db->exec("DELETE FROM appointments WHERE id = $id");
header("Location: list.php");
?>
```
در `update.php`، وضعیت نوبت تغییر میکند، مثلا از "Pending" به "Completed":
```php
<?php
$db = new SQLite3('clinic_appointments.db');
$id = $_GET['id'];
// تغییر وضعیت به 'Completed'
$db->exec("UPDATE appointments SET status='Completed' WHERE id=$id");
header("Location: list.php");
?>
```
۷. نکات و بهبودها
- میتوان سیستم را توسعه داد و امکانات بیشتری افزود، مثلا امکان ویرایش جزییات، جستوجو، تایید نوبت و غیره.
- از امنیت بیشتر، مثل جلوگیری از SQL Injection، استفاده کنید.
- رابط کاربری را جذابتر و کاربرپسندتر کنید.
- برای پروژههای بزرگتر، استفاده از فریمورکهای PHP مثل Laravel توصیه میشود.
در کل، این پروژه نمونهای ساده و پایه است اما پایهای قوی برای سیستمهای نوبتدهی حرفهای است، که میتواند با افزودن ویژگیهای جدید، توسعه و بهبود یابد.