feat(assessments): layered clinical assessment engine end-to-end
Deploy Ladill Care / deploy (push) Successful in 1m26s
Deploy Ladill Care / deploy (push) Successful in 1m26s
Add a template-driven assessment system with universal intake, clinical pathways, disease instruments (stroke MVP + extended, diabetes, and ten specialty packs), scoring, patient outcome trends, REST/API + FHIR export, and Enterprise org-level assessment analytics. Seed packs and design/licensing docs ship for deploy and pre-GA review.
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\Api\AppointmentController;
|
||||
use App\Http\Controllers\Api\AssessmentController;
|
||||
use App\Http\Controllers\Api\BillController;
|
||||
use App\Http\Controllers\Api\ConsultationController;
|
||||
use App\Http\Controllers\Api\DrugController;
|
||||
use App\Http\Controllers\Api\InvestigationController;
|
||||
use App\Http\Controllers\Api\PathwayController;
|
||||
use App\Http\Controllers\Api\PatientController;
|
||||
use App\Http\Controllers\Api\PrescriptionController;
|
||||
use App\Http\Controllers\Api\QueueController;
|
||||
@@ -59,4 +61,21 @@ Route::middleware(['auth:sanctum', 'care.setup'])->prefix('v1')->group(function
|
||||
Route::get('/drugs', [DrugController::class, 'index'])->name('api.drugs.index');
|
||||
Route::post('/drugs', [DrugController::class, 'store'])->name('api.drugs.store');
|
||||
Route::post('/prescriptions/{prescription}/dispense-stock', [DrugController::class, 'dispense'])->name('api.prescriptions.dispense-stock');
|
||||
|
||||
// Clinical assessments & pathways (gated by assessments_engine rollout)
|
||||
Route::get('/assessment-templates', [AssessmentController::class, 'templates'])->name('api.assessment-templates.index');
|
||||
Route::get('/patients/{patient}/assessments', [AssessmentController::class, 'index'])->name('api.assessments.index');
|
||||
Route::post('/patients/{patient}/assessments', [AssessmentController::class, 'store'])->name('api.assessments.store');
|
||||
Route::post('/consultations/{consultation}/assessments', [AssessmentController::class, 'storeForConsultation'])->name('api.consultations.assessments.store');
|
||||
Route::get('/assessments/{assessment}', [AssessmentController::class, 'show'])->name('api.assessments.show');
|
||||
Route::put('/assessments/{assessment}', [AssessmentController::class, 'update'])->name('api.assessments.update');
|
||||
Route::post('/assessments/{assessment}/complete', [AssessmentController::class, 'complete'])->name('api.assessments.complete');
|
||||
Route::post('/assessments/{assessment}/cancel', [AssessmentController::class, 'cancel'])->name('api.assessments.cancel');
|
||||
Route::get('/assessments/{assessment}/fhir', [AssessmentController::class, 'fhir'])->name('api.assessments.fhir');
|
||||
|
||||
Route::get('/pathways', [PathwayController::class, 'catalog'])->name('api.pathways.catalog');
|
||||
Route::get('/patients/{patient}/pathways', [PathwayController::class, 'index'])->name('api.pathways.index');
|
||||
Route::post('/patients/{patient}/pathways', [PathwayController::class, 'store'])->name('api.pathways.store');
|
||||
Route::post('/patients/{patient}/pathways/{patientPathway}/deactivate', [PathwayController::class, 'deactivate'])->name('api.pathways.deactivate');
|
||||
Route::get('/consultations/{consultation}/pathway-suggestions', [PathwayController::class, 'suggestions'])->name('api.consultations.pathway-suggestions');
|
||||
});
|
||||
|
||||
@@ -6,6 +6,7 @@ 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\AssessmentController;
|
||||
use App\Http\Controllers\Care\BillController;
|
||||
use App\Http\Controllers\Care\BranchController;
|
||||
use App\Http\Controllers\Care\ConsultationController;
|
||||
@@ -16,8 +17,10 @@ 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\OutcomeController;
|
||||
use App\Http\Controllers\Care\PatientController;
|
||||
use App\Http\Controllers\Care\PatientMessageController;
|
||||
use App\Http\Controllers\Care\PathwayController;
|
||||
use App\Http\Controllers\Care\PractitionerController;
|
||||
use App\Http\Controllers\Care\PrescriptionController;
|
||||
use App\Http\Controllers\Care\QueueController;
|
||||
@@ -141,6 +144,27 @@ Route::middleware(['auth', 'platform.session'])->group(function () {
|
||||
Route::put('/consultations/{consultation}', [ConsultationController::class, 'update'])->name('care.consultations.update');
|
||||
Route::post('/consultations/{consultation}/complete', [ConsultationController::class, 'complete'])->name('care.consultations.complete');
|
||||
|
||||
// Clinical assessments (gated by CareFeatures::assessments_engine)
|
||||
Route::get('/patients/{patient}/assessments', [AssessmentController::class, 'index'])->name('care.assessments.index');
|
||||
Route::get('/patients/{patient}/assessments/create', [AssessmentController::class, 'create'])->name('care.assessments.create');
|
||||
Route::post('/patients/{patient}/assessments', [AssessmentController::class, 'store'])->name('care.assessments.store');
|
||||
Route::post('/consultations/{consultation}/assessments', [AssessmentController::class, 'storeForConsultation'])->name('care.consultations.assessments.store');
|
||||
Route::get('/assessments/{assessment}', [AssessmentController::class, 'show'])->name('care.assessments.show');
|
||||
Route::put('/assessments/{assessment}', [AssessmentController::class, 'update'])->name('care.assessments.update');
|
||||
Route::post('/assessments/{assessment}/complete', [AssessmentController::class, 'complete'])->name('care.assessments.complete');
|
||||
Route::post('/assessments/{assessment}/cancel', [AssessmentController::class, 'cancel'])->name('care.assessments.cancel');
|
||||
Route::get('/assessments/{assessment}/fhir', [AssessmentController::class, 'fhirExport'])->name('care.assessments.fhir');
|
||||
|
||||
// Clinical pathways (Layer 2)
|
||||
Route::get('/patients/{patient}/pathways', [PathwayController::class, 'index'])->name('care.pathways.index');
|
||||
Route::post('/patients/{patient}/pathways', [PathwayController::class, 'store'])->name('care.pathways.store');
|
||||
Route::post('/patients/{patient}/pathways/{patientPathway}/deactivate', [PathwayController::class, 'deactivate'])->name('care.pathways.deactivate');
|
||||
Route::get('/consultations/{consultation}/pathway-suggestions', [PathwayController::class, 'suggestions'])->name('care.consultations.pathway-suggestions');
|
||||
|
||||
// Layer 4 — outcomes & patient trends (free per-patient; org analytics Enterprise)
|
||||
Route::get('/patients/{patient}/outcomes', [OutcomeController::class, 'index'])->name('care.outcomes.index');
|
||||
Route::post('/patients/{patient}/outcomes', [OutcomeController::class, 'store'])->name('care.outcomes.store');
|
||||
|
||||
Route::get('/settings', [SettingsController::class, 'edit'])->name('care.settings');
|
||||
Route::put('/settings', [SettingsController::class, 'update'])->name('care.settings.update');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user