diff --git a/app/DataTables/WorklistDataTable.php b/app/DataTables/WorklistDataTable.php index 17bdfb1..0491b89 100644 --- a/app/DataTables/WorklistDataTable.php +++ b/app/DataTables/WorklistDataTable.php @@ -239,18 +239,22 @@ public function getColumns(): array case WorklistColumn::Organization: $columns[] = Column::make($col->value) - ->searchable(true) - ->orderable(true) + ->searchable(false) ->title('Org'); break; case WorklistColumn::Department: $columns[] = Column::make($col->value) - ->searchable(true) - ->orderable(true) + ->searchable(false) ->title('Dept'); break; + case WorklistColumn::DicomServer: + $columns[] = Column::make($col->value) + ->searchable(false) + ->title('Server'); + break; + default: // dd(Str::slug($col->value, '-')); $columns[] = Column::make($col->value)->title(formatTitle($col->value)); @@ -451,7 +455,9 @@ private function renderCustomColumns(): array }; break; case WorklistColumn::StudyDescription: - $columns[$col->value] = static fn (Study $study) => $study->sanitizedStudyDescription(); + $columns[$col->value] = function (Study $study) { + return sprintf('%s', $study->study_description, str_limit($study->sanitizedStudyDescription(), 20)); + }; break; case WorklistColumn::AssignedPhysician: $columns[$col->value] = static function (Study $study) { @@ -506,6 +512,13 @@ private function renderCustomColumns(): array case WorklistColumn::ReportButtons: $columns[$col->value] = fn (Study $study) => $this->generateReportingButtons($study); break; + case WorklistColumn::DicomServer: + $columns[$col->value] = function (Study $study) { + return sprintf('%s', + strtolower($study->dicomServer->geo_code), + $study->dicomServer->server_name); + }; + break; } } diff --git a/app/Services/ACL/WorklistColumn.php b/app/Services/ACL/WorklistColumn.php index 9786d5e..8ac5e34 100644 --- a/app/Services/ACL/WorklistColumn.php +++ b/app/Services/ACL/WorklistColumn.php @@ -36,4 +36,5 @@ enum WorklistColumn: string case ReportButtons = 'report_buttons'; case Organization = 'organization'; case Department = 'department'; + case DicomServer = 'dicom_server'; } diff --git a/app/Services/ACL/WorklistGuard.php b/app/Services/ACL/WorklistGuard.php index 16b923f..dfa3abf 100644 --- a/app/Services/ACL/WorklistGuard.php +++ b/app/Services/ACL/WorklistGuard.php @@ -45,6 +45,7 @@ public static function worklistColumns(User|int|null $usr = null): Collection if ($user->isAdmin()) { $columns->push(WorklistColumn::Organization); $columns->push(WorklistColumn::Department); + $columns->push(WorklistColumn::DicomServer); } return $columns; diff --git a/database/migrations/0000_01_31_074312_create_dicom_servers_table.php b/database/migrations/0000_01_31_074312_create_dicom_servers_table.php index 576bfaa..fe8ab3e 100644 --- a/database/migrations/0000_01_31_074312_create_dicom_servers_table.php +++ b/database/migrations/0000_01_31_074312_create_dicom_servers_table.php @@ -14,6 +14,7 @@ public function up(): void $table->id(); $table->boolean('is_active')->index(); $table->string('server_name')->unique(); + $table->string('geo_code', 2)->index(); $table->string('host'); $table->integer('port'); $table->string('rest_api_endpoint'); diff --git a/database/seeders/OrganizationSeeder.php b/database/seeders/OrganizationSeeder.php index 16f8ba3..c30f09a 100644 --- a/database/seeders/OrganizationSeeder.php +++ b/database/seeders/OrganizationSeeder.php @@ -36,14 +36,14 @@ public function run(): void $dept_chev_xr = Department::create( [ 'is_active' => true, - 'name' => 'Chevron XR', + 'name' => 'Chev-CR', 'organization_id' => $chev->id, ] ); $chev_dep_ct_mr = Department::create( [ 'is_active' => true, - 'name' => 'Chevron CT/MR', + 'name' => 'Chev-MR', 'organization_id' => $chev->id, ] ); @@ -109,7 +109,8 @@ public function run(): void DicomServer::create( [ 'is_active' => true, - 'server_name' => 'Orthanc Main', + 'server_name' => 'CTG-1', + 'geo_code' => 'BD', 'host' => 'pacs.mylabctg.com', 'port' => 8042, 'rest_api_endpoint' => 'http://pacs.mylabctg.com:8042/', @@ -122,8 +123,9 @@ public function run(): void DicomServer::create( [ 'is_active' => false, - 'server_name' => 'Orthanc XR', + 'server_name' => 'MAA-1', 'host' => 'pacs.mylabctg.com', + 'geo_code' => 'IN', 'port' => 8043, 'rest_api_endpoint' => 'http://pacs.mylabctg.com:8042/', 'ae_title' => 'RADFUSION', diff --git a/resources/views/staff/worklist/index.blade.php b/resources/views/staff/worklist/index.blade.php index 3d1f75a..da3e290 100644 --- a/resources/views/staff/worklist/index.blade.php +++ b/resources/views/staff/worklist/index.blade.php @@ -27,6 +27,8 @@ 'resources/assets/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.scss', 'resources/assets/vendor/libs/bootstrap-daterangepicker/bootstrap-daterangepicker.scss', ]) + + @endsection @section('vendor-script')