78 lines
2.2 KiB
PHP
78 lines
2.2 KiB
PHP
<?php
|
|
require_once 'auth.php';
|
|
require_role('doctor');
|
|
require_once 'db/config.php';
|
|
|
|
header('Content-Type: application/json');
|
|
|
|
$response = ['success' => false, 'message' => 'Invalid request'];
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
$visit_id = $_POST['visit_id'] ?? null;
|
|
$status = $_POST['status'] ?? null;
|
|
$notes = $_POST['notes'] ?? null;
|
|
$service_rendered = $_POST['service_rendered'] ?? null;
|
|
$cost = $_POST['cost'] ?? null;
|
|
|
|
if ($visit_id && $status) {
|
|
try {
|
|
$pdo = db();
|
|
// All updates now go to the patient_visits table
|
|
$sql = "UPDATE patient_visits SET status = ?";
|
|
$params = [$status];
|
|
|
|
if ($notes !== null) {
|
|
$sql .= ", notes = ?";
|
|
$params[] = $notes;
|
|
}
|
|
|
|
if ($service_rendered !== null) {
|
|
$sql .= ", service_rendered = ?";
|
|
$params[] = $service_rendered;
|
|
}
|
|
|
|
if ($cost !== null) {
|
|
$sql .= ", cost = ?";
|
|
$params[] = $cost;
|
|
}
|
|
|
|
// When completing, set payment_status to unpaid for this specific visit
|
|
if ($status === 'Completed') {
|
|
$sql .= ", payment_status = 'unpaid'";
|
|
}
|
|
|
|
$sql .= " WHERE visit_id = ?";
|
|
$params[] = $visit_id;
|
|
|
|
$stmt = $pdo->prepare($sql);
|
|
|
|
if ($stmt->execute($params)) {
|
|
$response['success'] = true;
|
|
$response['message'] = 'Visit status updated successfully.';
|
|
$response['status_class'] = get_status_badge_class($status);
|
|
} else {
|
|
$response['message'] = 'Failed to update visit status.';
|
|
}
|
|
} catch (PDOException $e) {
|
|
$response['message'] = 'Database error: ' . $e->getMessage();
|
|
}
|
|
} else {
|
|
$response['message'] = 'Missing visit ID or status.';
|
|
}
|
|
}
|
|
|
|
echo json_encode($response);
|
|
|
|
function get_status_badge_class($status) {
|
|
switch ($status) {
|
|
case 'Pending':
|
|
return 'warning';
|
|
case 'In Progress':
|
|
return 'info';
|
|
case 'Completed':
|
|
return 'success';
|
|
default:
|
|
return 'secondary';
|
|
}
|
|
}
|
|
?>
|