diff --git a/app/Domain/Study/WorkflowLevel.php b/app/Domain/Study/WorkflowLevel.php
index 4974cd6..51d56ef 100644
--- a/app/Domain/Study/WorkflowLevel.php
+++ b/app/Domain/Study/WorkflowLevel.php
@@ -18,7 +18,7 @@ enum WorkflowLevel: int
case Archived = 200;
case Cancelled = 240;
- public function description(): string
+ public function describe(): string
{
return match ($this) {
self::Received => 'Study Received',
diff --git a/app/Http/Controllers/Staff/AssignmentController.php b/app/Http/Controllers/Staff/AssignmentController.php
index 478aef8..8160055 100644
--- a/app/Http/Controllers/Staff/AssignmentController.php
+++ b/app/Http/Controllers/Staff/AssignmentController.php
@@ -44,7 +44,10 @@ public function remove(AssignPhysicianRequest $request)
$study->assignedPhysicians()->detach($rad->id);
if ($study->assignedPhysicians()->count() === 0) {
- $study->update(['assigned_at' => null]);
+ $study->update([
+ 'workflow_level' => WorkflowLevel::Unassigned->value,
+ 'assigned_at' => null,
+ ]);
}
audit()
@@ -64,7 +67,10 @@ public function save(AssignPhysicianRequest $request)
$rad = User::active()->findOrFail($request->input('rad_id'));
$study->assignedPhysicians()->attach($rad->id);
- $study->update(['assigned_at' => now()]);
+ $study->update([
+ 'workflow_level' => WorkflowLevel::Assigned->value,
+ 'assigned_at' => now(),
+ ]);
audit()
->did(Activity::Assign_Physician)
->on($study)
diff --git a/app/Http/Controllers/Staff/DicomViewerController.php b/app/Http/Controllers/Staff/DicomViewerController.php
index c459659..78c838c 100644
--- a/app/Http/Controllers/Staff/DicomViewerController.php
+++ b/app/Http/Controllers/Staff/DicomViewerController.php
@@ -2,13 +2,13 @@
namespace App\Http\Controllers\Staff;
-use App\Http\Controllers\HashidControllerBase;
+use App\Http\Controllers\HashedStudyControllerBase;
use App\Models\Study;
use App\Services\AuditTrail\Activity;
use Closure;
use Illuminate\Support\Str;
-class DicomViewerController extends HashidControllerBase
+class DicomViewerController extends HashedStudyControllerBase
{
public function stone()
{
@@ -22,8 +22,7 @@ public function ohif()
private function loadViewer(Closure $callback)
{
- $this->decodeKeys();
- $study = Study::findOrFail($this->key);
+ $study = $this->getStudy();
$url = $callback($study);
abort_if(blank($url), 404);
$title = Str::limit($study->getPatientDemographic(), 40);
diff --git a/app/Models/Study.php b/app/Models/Study.php
index 16fa6bc..7aabc33 100644
--- a/app/Models/Study.php
+++ b/app/Models/Study.php
@@ -3,7 +3,6 @@
namespace App\Models;
use App\Domain\ACL\Permission;
-use App\Domain\Report\ReportStatus;
use App\Domain\Study\Priority;
use App\Domain\Study\WorkflowLevel;
use App\Models\Traits\HasDepartment;
@@ -178,23 +177,24 @@ public function isArchived(): bool
public function getWorkflowLevelLedAttribute(): string
{
$icon = match ($this->workflow_level) {
- WorkflowLevel::Received, WorkflowLevel::Unassigned => 'folder-arrow-down',
- WorkflowLevel::Assigned => 'identification',
- WorkflowLevel::Dictated => 'speaker-wave',
- WorkflowLevel::Transcribed => 'chat-bubble-left-ellipsis',
- WorkflowLevel::Repetition => 'receipt-refund',
- WorkflowLevel::ReadInProgress => 'wrench-screwdriver',
- WorkflowLevel::DraftAvailable => 'inbox-arrow-down',
- WorkflowLevel::Finalized => 'clipboard-document-check',
- WorkflowLevel::UnderReview => 'eye',
- WorkflowLevel::Published => 'shield-check',
- WorkflowLevel::Archived => 'archive-box',
- WorkflowLevel::Cancelled => 'archive-box-x-mark',
-
+ WorkflowLevel::Received, WorkflowLevel::Unassigned => 'download-2-line',
+ WorkflowLevel::Assigned => 'pass-valid-line',
+ WorkflowLevel::Dictated => 'speak-line',
+ WorkflowLevel::Transcribed => 'message-2-line',
+ WorkflowLevel::Repetition => 'repeat-line',
+ WorkflowLevel::ReadInProgress => 'line-chart-line',
+ WorkflowLevel::DraftAvailable => 'draft-line',
+ WorkflowLevel::Finalized => 'git-repository-private-line',
+ WorkflowLevel::UnderReview => 'eye-line',
+ WorkflowLevel::Published => 'graduation-cap-line',
+ WorkflowLevel::Archived => 'archive-line',
+ WorkflowLevel::Cancelled => 'close-circle-line',
default => 'cog-6-tooth',
};
- return sprintf('', $color, $icon);
+ $descr = $this->workflow_level->describe();
+
+ return sprintf('', $descr, $descr, $icon);
}
public function getArchiveLink(): ?string
@@ -369,14 +369,14 @@ public function isUnlocked(): bool
return $this->locked_at === null;
}
- public function lockStudy(User|int|null $user = null, ?WorkflowLevel $status = null): void
+ public function lockStudy(User|int|null $user = null, ?WorkflowLevel $level = null): void
{
$params = [
'locking_physician_id' => me($user)->id,
'locked_at' => now(),
];
- if ($status) {
- $params['workflow_level'] = $status->value;
+ if ($level !== null) {
+ $params['workflow_level'] = $level->value;
}
$this->update($params);
diff --git a/app/Services/Report/ReportManager.php b/app/Services/Report/ReportManager.php
index 82179a6..dacb743 100644
--- a/app/Services/Report/ReportManager.php
+++ b/app/Services/Report/ReportManager.php
@@ -112,7 +112,7 @@ public function check(): ?View
public function lockStudyIfRequired(): void
{
if ($this->study->isUnlocked()) {
- $this->study->lockStudy();
+ $this->study->lockStudy(level: WorkflowLevel::ReadInProgress);
audit()
->on($this->study)
->did(Activity::Study_Lock)