Compare commits

...

3 Commits

Author SHA1 Message Date
ef908dd4bd resource 2025-01-30 19:52:19 +06:00
19a501c2e2 FIX #41 - history indication 2025-01-30 19:41:41 +06:00
49b4341227 resource update 2025-01-30 19:30:15 +06:00
6 changed files with 20 additions and 6 deletions

View File

@ -627,7 +627,7 @@ private function generateActionButtons(Study $study): string
foreach (WorklistGuard::worklistButtons($study) as $button) { foreach (WorklistGuard::worklistButtons($study) as $button) {
switch ($button) { switch ($button) {
case WorklistButton::StudyMetadata: case WorklistButton::StudyMetadata:
$btns[] = $this->renderImageLink($study->hash, 'info.png', 'show-study', 'Info'); $btns[] = $this->renderImageLink($study->hash, $study->hasHistory() ? 'info-green.png' : 'info.png', 'show-study', 'Info');
break; break;
case WorklistButton::Assign: case WorklistButton::Assign:
$btns[] = $this->renderImageLink($study->hash, 'assign.png', 'show-assign', 'Assign'); $btns[] = $this->renderImageLink($study->hash, 'assign.png', 'show-assign', 'Assign');

View File

@ -9,12 +9,13 @@
use App\Models\StudyDetails; use App\Models\StudyDetails;
use App\Services\AuditTrail\Activity; use App\Services\AuditTrail\Activity;
use App\Services\SessionHelper; use App\Services\SessionHelper;
use Illuminate\Support\Facades\Cache;
class HistoryController extends HashidControllerBase class HistoryController extends HashidControllerBase
{ {
public function view() public function view()
{ {
abort_unless(auth()->user()->may(Permission::StudyHistoryView), 403); abort_unless(may(Permission::StudyHistoryView), 403);
$this->decodeKeys(); $this->decodeKeys();
$details = StudyDetails::historyOnly($this->key); $details = StudyDetails::historyOnly($this->key);
$study = Study::findOrFail($this->key); $study = Study::findOrFail($this->key);
@ -25,7 +26,7 @@ public function view()
public function edit() public function edit()
{ {
// SessionHelper::setIntendedUrl(); // SessionHelper::setIntendedUrl();
abort_unless(auth()->user()->may(Permission::StudyHistoryEdit), 403); abort_unless(may(Permission::StudyHistoryEdit), 403);
$this->decodeKeys(); $this->decodeKeys();
$details = StudyDetails::historyOnly($this->key); $details = StudyDetails::historyOnly($this->key);
$study = Study::findOrFail($this->key); $study = Study::findOrFail($this->key);
@ -35,12 +36,13 @@ public function edit()
public function save(StudyHistoryRequest $request) public function save(StudyHistoryRequest $request)
{ {
abort_unless(auth()->user()->may(Permission::StudyHistoryEdit), 403); abort_unless(may(Permission::StudyHistoryEdit), 403);
$this->decodeKeys(); $this->decodeKeys();
$details = StudyDetails::historyOnly($this->key); $details = StudyDetails::historyOnly($this->key);
$payload = array_trim_strings($request->validated()); $payload = array_trim_strings($request->validated());
unset($payload['study_id']); unset($payload['study_id']);
$details->update($payload); $details->update($payload);
Cache::forget("study.has_history.{$this->key}");
audit() audit()
->did(Activity::Study_History_Edit) ->did(Activity::Study_History_Edit)

View File

@ -12,12 +12,13 @@
use App\Services\Pacs\PacsUrlGen; use App\Services\Pacs\PacsUrlGen;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Concerns\HasTimestamps;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Support\Facades\Blade; use Illuminate\Support\Facades\Blade;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Spatie\MediaLibrary\HasMedia; use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia; use Spatie\MediaLibrary\InteractsWithMedia;
@ -28,7 +29,6 @@ class Study extends BaseModel implements HasMedia
use HasDepartment; use HasDepartment;
use HashableId; use HashableId;
use HasOrganization; use HasOrganization;
use HasTimestamps;
use InteractsWithMedia; use InteractsWithMedia;
public const string MEDIA_COLLECTION = 'attachments'; public const string MEDIA_COLLECTION = 'attachments';
@ -543,4 +543,16 @@ protected function casts(): array
'patient_birthdate' => 'immutable_date', 'patient_birthdate' => 'immutable_date',
]; ];
} }
public function hasHistory(): bool
{
return Cache::remember("study.has_history.{$this->id}",
now()->addMinutes(15),
function () {
return DB::table('study_details')
->where('study_id', $this->id)
->whereNotNull('clinical_history')
->exists();
});
}
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 902 B

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 915 B

After

Width:  |  Height:  |  Size: 1.2 KiB