Deploy Ladill Care / deploy (push) Successful in 43s
Hospital admins can manage assignable doctors and invite team members from Ladill mailboxes; invited staff only see Care tools they need. Co-authored-by: Cursor <cursoragent@cursor.com>
187 lines
16 KiB
PHP
187 lines
16 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\Auth\SsoLoginController;
|
|
use App\Http\Controllers\Care\AiController;
|
|
use App\Http\Controllers\NotificationController;
|
|
use App\Http\Controllers\Care\AuditLogController;
|
|
use App\Http\Controllers\Care\AppointmentController;
|
|
use App\Http\Controllers\Care\AppointmentMeetController;
|
|
use App\Http\Controllers\Care\BillController;
|
|
use App\Http\Controllers\Care\BranchController;
|
|
use App\Http\Controllers\Care\ConsultationController;
|
|
use App\Http\Controllers\Care\DashboardController;
|
|
use App\Http\Controllers\Care\DepartmentController;
|
|
use App\Http\Controllers\Care\DrugController;
|
|
use App\Http\Controllers\Care\InvestigationController;
|
|
use App\Http\Controllers\Care\InvestigationTypeController;
|
|
use App\Http\Controllers\Care\MemberController;
|
|
use App\Http\Controllers\Care\OnboardingController;
|
|
use App\Http\Controllers\Care\PatientController;
|
|
use App\Http\Controllers\Care\PatientMessageController;
|
|
use App\Http\Controllers\Care\PractitionerController;
|
|
use App\Http\Controllers\Care\PrescriptionController;
|
|
use App\Http\Controllers\Care\QueueController;
|
|
use App\Http\Controllers\Care\ProController;
|
|
use App\Http\Controllers\Care\ReportController;
|
|
use App\Http\Controllers\Care\ServiceQueueController;
|
|
use App\Http\Controllers\Care\IntegrationsController;
|
|
use App\Http\Controllers\Care\SettingsController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::get('/', fn () => auth()->check()
|
|
? redirect()->route('care.dashboard')
|
|
: redirect()->route('sso.connect'))->name('care.root');
|
|
|
|
Route::get('/login', [SsoLoginController::class, 'connect'])->name('login');
|
|
Route::get('/sso/connect', [SsoLoginController::class, 'connect'])->name('sso.connect');
|
|
Route::get('/sso/callback', [SsoLoginController::class, 'callback'])->name('sso.callback');
|
|
Route::get('/sso/error', [SsoLoginController::class, 'failed'])->name('sso.failed');
|
|
Route::post('/logout', [SsoLoginController::class, 'logout'])->name('logout');
|
|
Route::get('/sso/logout-bridge', [SsoLoginController::class, 'logoutBridge'])->name('sso.logout-bridge');
|
|
Route::get('/sso/logout-frontchannel', [SsoLoginController::class, 'frontchannelLogout'])->name('sso.logout-frontchannel');
|
|
Route::get('/sso/platform-signed-out', [SsoLoginController::class, 'platformSignedOut'])->name('sso.platform-signed-out');
|
|
Route::get('/signed-out', fn () => auth()->check() ? redirect()->route('care.dashboard') : view('auth.signed-out'))->name('care.signed-out');
|
|
|
|
Route::middleware(['auth', 'platform.session'])->group(function () {
|
|
Route::get('/notifications', [NotificationController::class, 'index'])->name('notifications.index');
|
|
Route::get('/notifications/unread', [NotificationController::class, 'unread'])->name('notifications.unread');
|
|
Route::post('/notifications/{id}/read', [NotificationController::class, 'markAsRead'])->name('notifications.mark-read');
|
|
Route::post('/notifications/mark-all-read', [NotificationController::class, 'markAllAsRead'])->name('notifications.mark-all-read');
|
|
|
|
Route::get('/onboarding', [OnboardingController::class, 'show'])->name('care.onboarding.show');
|
|
Route::post('/onboarding', [OnboardingController::class, 'store'])->name('care.onboarding.store');
|
|
|
|
Route::middleware(['care.setup'])->group(function () {
|
|
Route::post('/ai/chat', [AiController::class, 'chat'])->middleware('throttle:30,1')->name('care.ai.chat');
|
|
|
|
Route::get('/dashboard', [DashboardController::class, 'index'])->name('care.dashboard');
|
|
|
|
Route::get('/patients', [PatientController::class, 'index'])->name('care.patients.index');
|
|
Route::get('/patients/create', [PatientController::class, 'create'])->name('care.patients.create');
|
|
Route::post('/patients', [PatientController::class, 'store'])->name('care.patients.store');
|
|
Route::get('/patients/{patient}', [PatientController::class, 'show'])->name('care.patients.show');
|
|
Route::post('/patients/{patient}/email', [PatientMessageController::class, 'sendEmail'])->name('care.patients.email');
|
|
Route::post('/patients/{patient}/sms', [PatientMessageController::class, 'sendSms'])->name('care.patients.sms');
|
|
Route::get('/patients/{patient}/edit', [PatientController::class, 'edit'])->name('care.patients.edit');
|
|
Route::put('/patients/{patient}', [PatientController::class, 'update'])->name('care.patients.update');
|
|
Route::delete('/patients/{patient}', [PatientController::class, 'destroy'])->name('care.patients.destroy');
|
|
|
|
Route::get('/appointments', [AppointmentController::class, 'index'])->name('care.appointments.index');
|
|
Route::get('/appointments/create', [AppointmentController::class, 'create'])->name('care.appointments.create');
|
|
Route::post('/appointments', [AppointmentController::class, 'store'])->name('care.appointments.store');
|
|
Route::get('/appointments/walk-in', [AppointmentController::class, 'walkInCreate'])->name('care.appointments.walk-in.create');
|
|
Route::post('/appointments/walk-in', [AppointmentController::class, 'walkInStore'])->name('care.appointments.walk-in.store');
|
|
Route::get('/appointments/{appointment}', [AppointmentController::class, 'show'])->name('care.appointments.show');
|
|
Route::post('/appointments/{appointment}/check-in', [AppointmentController::class, 'checkIn'])->name('care.appointments.check-in');
|
|
Route::post('/appointments/{appointment}/cancel', [AppointmentController::class, 'cancel'])->name('care.appointments.cancel');
|
|
Route::post('/appointments/{appointment}/no-show', [AppointmentController::class, 'noShow'])->name('care.appointments.no-show');
|
|
Route::post('/appointments/{appointment}/schedule-meet', [AppointmentMeetController::class, 'schedule'])->name('care.appointments.schedule-meet');
|
|
Route::post('/appointments/{appointment}/start-meet', [AppointmentMeetController::class, 'start'])->name('care.appointments.start-meet');
|
|
|
|
Route::get('/queue', [QueueController::class, 'index'])->name('care.queue.index');
|
|
Route::post('/queue/{appointment}/start', [QueueController::class, 'start'])->name('care.queue.start');
|
|
|
|
Route::get('/service-queues', [ServiceQueueController::class, 'index'])->name('care.service-queues.index');
|
|
Route::get('/service-queues/console/{counterUuid}', [ServiceQueueController::class, 'console'])->name('care.service-queues.console');
|
|
Route::post('/service-queues/console/{counterUuid}/action', [ServiceQueueController::class, 'action'])->name('care.service-queues.action');
|
|
|
|
Route::get('/consultations/{consultation}', [ConsultationController::class, 'show'])->name('care.consultations.show');
|
|
Route::put('/consultations/{consultation}', [ConsultationController::class, 'update'])->name('care.consultations.update');
|
|
Route::post('/consultations/{consultation}/complete', [ConsultationController::class, 'complete'])->name('care.consultations.complete');
|
|
|
|
Route::get('/lab/requests', [InvestigationController::class, 'index'])->name('care.lab.requests.index');
|
|
Route::get('/lab/queue', [InvestigationController::class, 'queue'])->name('care.lab.queue.index');
|
|
Route::get('/lab/requests/{investigation}', [InvestigationController::class, 'show'])->name('care.lab.requests.show');
|
|
Route::post('/consultations/{consultation}/investigations', [InvestigationController::class, 'requestFromConsultation'])->name('care.lab.requests.store');
|
|
Route::post('/lab/requests/{investigation}/collect-sample', [InvestigationController::class, 'collectSample'])->name('care.lab.requests.collect-sample');
|
|
Route::post('/lab/requests/{investigation}/start', [InvestigationController::class, 'startProcessing'])->name('care.lab.requests.start');
|
|
Route::post('/lab/requests/{investigation}/results', [InvestigationController::class, 'enterResults'])->name('care.lab.requests.results');
|
|
Route::post('/lab/requests/{investigation}/approve', [InvestigationController::class, 'approve'])->name('care.lab.requests.approve');
|
|
Route::post('/lab/requests/{investigation}/deliver', [InvestigationController::class, 'deliver'])->name('care.lab.requests.deliver');
|
|
Route::post('/lab/requests/{investigation}/cancel', [InvestigationController::class, 'cancel'])->name('care.lab.requests.cancel');
|
|
|
|
Route::get('/lab/catalog', [InvestigationTypeController::class, 'index'])->name('care.lab.catalog.index');
|
|
Route::get('/lab/catalog/create', [InvestigationTypeController::class, 'create'])->name('care.lab.catalog.create');
|
|
Route::post('/lab/catalog', [InvestigationTypeController::class, 'store'])->name('care.lab.catalog.store');
|
|
Route::get('/lab/catalog/{investigationType}/edit', [InvestigationTypeController::class, 'edit'])->name('care.lab.catalog.edit');
|
|
Route::put('/lab/catalog/{investigationType}', [InvestigationTypeController::class, 'update'])->name('care.lab.catalog.update');
|
|
|
|
Route::get('/prescriptions', [PrescriptionController::class, 'index'])->name('care.prescriptions.index');
|
|
Route::get('/prescriptions/queue', [PrescriptionController::class, 'queue'])->name('care.prescriptions.queue');
|
|
Route::get('/consultations/{consultation}/prescriptions/create', [PrescriptionController::class, 'create'])->name('care.prescriptions.create');
|
|
Route::post('/consultations/{consultation}/prescriptions', [PrescriptionController::class, 'store'])->name('care.prescriptions.store');
|
|
Route::get('/prescriptions/{prescription}', [PrescriptionController::class, 'show'])->name('care.prescriptions.show');
|
|
Route::post('/prescriptions/{prescription}/activate', [PrescriptionController::class, 'activate'])->name('care.prescriptions.activate');
|
|
Route::post('/prescriptions/{prescription}/dispense', [PrescriptionController::class, 'dispense'])->name('care.prescriptions.dispense');
|
|
Route::post('/prescriptions/{prescription}/cancel', [PrescriptionController::class, 'cancel'])->name('care.prescriptions.cancel');
|
|
|
|
Route::get('/bills', [BillController::class, 'index'])->name('care.bills.index');
|
|
Route::post('/visits/{visit}/bill', [BillController::class, 'generate'])->name('care.bills.generate');
|
|
Route::get('/bills/{bill}', [BillController::class, 'show'])->name('care.bills.show');
|
|
Route::get('/bills/{bill}/print', [BillController::class, 'print'])->name('care.bills.print');
|
|
Route::post('/bills/{bill}/line-items', [BillController::class, 'addLineItem'])->name('care.bills.line-items.store');
|
|
Route::post('/bills/{bill}/adjustments', [BillController::class, 'applyAdjustments'])->name('care.bills.adjustments');
|
|
Route::post('/bills/{bill}/payments', [BillController::class, 'recordPayment'])->name('care.bills.payments.store');
|
|
Route::post('/bills/{bill}/void', [BillController::class, 'void'])->name('care.bills.void');
|
|
|
|
Route::get('/pharmacy/drugs', [DrugController::class, 'index'])->name('care.pharmacy.drugs.index');
|
|
Route::get('/pharmacy/drugs/create', [DrugController::class, 'create'])->name('care.pharmacy.drugs.create');
|
|
Route::post('/pharmacy/drugs', [DrugController::class, 'store'])->name('care.pharmacy.drugs.store');
|
|
Route::get('/pharmacy/drugs/{drug}', [DrugController::class, 'show'])->name('care.pharmacy.drugs.show');
|
|
Route::get('/pharmacy/drugs/{drug}/edit', [DrugController::class, 'edit'])->name('care.pharmacy.drugs.edit');
|
|
Route::put('/pharmacy/drugs/{drug}', [DrugController::class, 'update'])->name('care.pharmacy.drugs.update');
|
|
Route::post('/pharmacy/drugs/{drug}/batches', [DrugController::class, 'receiveBatch'])->name('care.pharmacy.drugs.batches.store');
|
|
|
|
Route::get('/reports', [ReportController::class, 'index'])->name('care.reports.index');
|
|
Route::get('/reports/{type}', [ReportController::class, 'show'])->name('care.reports.show');
|
|
Route::get('/reports/{type}/export', [ReportController::class, 'export'])->name('care.reports.export');
|
|
|
|
Route::get('/settings', [SettingsController::class, 'edit'])->name('care.settings');
|
|
Route::put('/settings', [SettingsController::class, 'update'])->name('care.settings.update');
|
|
|
|
Route::get('/integrations', [IntegrationsController::class, 'edit'])->name('care.integrations');
|
|
Route::post('/integrations/sms', [IntegrationsController::class, 'saveSms'])->name('care.integrations.sms.save');
|
|
Route::post('/integrations/sms/disconnect', [IntegrationsController::class, 'disconnectSms'])->name('care.integrations.sms.disconnect');
|
|
Route::post('/integrations/bird', [IntegrationsController::class, 'saveBird'])->name('care.integrations.bird.save');
|
|
Route::post('/integrations/bird/disconnect', [IntegrationsController::class, 'disconnectBird'])->name('care.integrations.bird.disconnect');
|
|
Route::post('/integrations/sms/senders', [IntegrationsController::class, 'previewSenders'])->name('care.integrations.sms.senders');
|
|
|
|
Route::get('/pro', [ProController::class, 'index'])->name('care.pro.index');
|
|
Route::post('/pro/subscribe', [ProController::class, 'subscribe'])->name('care.pro.subscribe');
|
|
Route::post('/pro/subscribe-enterprise', [ProController::class, 'subscribeEnterprise'])->name('care.pro.subscribe-enterprise');
|
|
Route::post('/pro/subscribe-prepaid', [ProController::class, 'subscribePrepaid'])->name('care.pro.subscribe-prepaid');
|
|
Route::get('/pro/paystack/callback', [ProController::class, 'paystackCallback'])->name('care.pro.paystack.callback');
|
|
|
|
Route::get('/branches', [BranchController::class, 'index'])->name('care.branches.index');
|
|
Route::get('/branches/create', [BranchController::class, 'create'])->name('care.branches.create');
|
|
Route::post('/branches', [BranchController::class, 'store'])->name('care.branches.store');
|
|
Route::get('/branches/{branch}/edit', [BranchController::class, 'edit'])->name('care.branches.edit');
|
|
Route::put('/branches/{branch}', [BranchController::class, 'update'])->name('care.branches.update');
|
|
|
|
Route::get('/departments', [DepartmentController::class, 'index'])->name('care.departments.index');
|
|
Route::get('/departments/create', [DepartmentController::class, 'create'])->name('care.departments.create');
|
|
Route::post('/departments', [DepartmentController::class, 'store'])->name('care.departments.store');
|
|
Route::get('/departments/{department}/edit', [DepartmentController::class, 'edit'])->name('care.departments.edit');
|
|
Route::put('/departments/{department}', [DepartmentController::class, 'update'])->name('care.departments.update');
|
|
Route::delete('/departments/{department}', [DepartmentController::class, 'destroy'])->name('care.departments.destroy');
|
|
|
|
Route::get('/practitioners', [PractitionerController::class, 'index'])->name('care.practitioners.index');
|
|
Route::get('/practitioners/create', [PractitionerController::class, 'create'])->name('care.practitioners.create');
|
|
Route::post('/practitioners', [PractitionerController::class, 'store'])->name('care.practitioners.store');
|
|
Route::get('/practitioners/{practitioner}/edit', [PractitionerController::class, 'edit'])->name('care.practitioners.edit');
|
|
Route::put('/practitioners/{practitioner}', [PractitionerController::class, 'update'])->name('care.practitioners.update');
|
|
Route::delete('/practitioners/{practitioner}', [PractitionerController::class, 'destroy'])->name('care.practitioners.destroy');
|
|
|
|
Route::get('/members', [MemberController::class, 'index'])->name('care.members.index');
|
|
Route::get('/members/create', [MemberController::class, 'create'])->name('care.members.create');
|
|
Route::post('/members', [MemberController::class, 'store'])->name('care.members.store');
|
|
Route::delete('/members/{member}', [MemberController::class, 'destroy'])->name('care.members.destroy');
|
|
|
|
Route::get('/audit-logs', [AuditLogController::class, 'index'])->name('care.audit.index');
|
|
Route::get('/audit-logs/export', [AuditLogController::class, 'export'])->name('care.audit.export');
|
|
|
|
Route::get('/wallet', fn () => redirect()->away(ladill_account_url('/wallet')))->name('care.wallet');
|
|
Route::get('/team', fn () => redirect()->away(ladill_account_url('/account/team')))->name('care.team');
|
|
});
|
|
});
|