wip dicom servers

This commit is contained in:
Dr Masroor Ehsan 2025-01-26 12:22:50 +06:00
parent b13c15ce5c
commit 4c68b3626a
6 changed files with 29 additions and 9 deletions

View File

@ -239,18 +239,22 @@ public function getColumns(): array
case WorklistColumn::Organization: case WorklistColumn::Organization:
$columns[] = Column::make($col->value) $columns[] = Column::make($col->value)
->searchable(true) ->searchable(false)
->orderable(true)
->title('Org'); ->title('Org');
break; break;
case WorklistColumn::Department: case WorklistColumn::Department:
$columns[] = Column::make($col->value) $columns[] = Column::make($col->value)
->searchable(true) ->searchable(false)
->orderable(true)
->title('Dept'); ->title('Dept');
break; break;
case WorklistColumn::DicomServer:
$columns[] = Column::make($col->value)
->searchable(false)
->title('Server');
break;
default: default:
// dd(Str::slug($col->value, '-')); // dd(Str::slug($col->value, '-'));
$columns[] = Column::make($col->value)->title(formatTitle($col->value)); $columns[] = Column::make($col->value)->title(formatTitle($col->value));
@ -451,7 +455,9 @@ private function renderCustomColumns(): array
}; };
break; break;
case WorklistColumn::StudyDescription: case WorklistColumn::StudyDescription:
$columns[$col->value] = static fn (Study $study) => $study->sanitizedStudyDescription(); $columns[$col->value] = function (Study $study) {
return sprintf('<span data-bs-toggle="tooltip" data-bs-placement="top" title="%s">%s</span>', $study->study_description, str_limit($study->sanitizedStudyDescription(), 20));
};
break; break;
case WorklistColumn::AssignedPhysician: case WorklistColumn::AssignedPhysician:
$columns[$col->value] = static function (Study $study) { $columns[$col->value] = static function (Study $study) {
@ -506,6 +512,13 @@ private function renderCustomColumns(): array
case WorklistColumn::ReportButtons: case WorklistColumn::ReportButtons:
$columns[$col->value] = fn (Study $study) => $this->generateReportingButtons($study); $columns[$col->value] = fn (Study $study) => $this->generateReportingButtons($study);
break; break;
case WorklistColumn::DicomServer:
$columns[$col->value] = function (Study $study) {
return sprintf('<span class="fi fi-%s msg-icon me-1"></span>%s',
strtolower($study->dicomServer->geo_code),
$study->dicomServer->server_name);
};
break;
} }
} }

View File

@ -36,4 +36,5 @@ enum WorklistColumn: string
case ReportButtons = 'report_buttons'; case ReportButtons = 'report_buttons';
case Organization = 'organization'; case Organization = 'organization';
case Department = 'department'; case Department = 'department';
case DicomServer = 'dicom_server';
} }

View File

@ -45,6 +45,7 @@ public static function worklistColumns(User|int|null $usr = null): Collection
if ($user->isAdmin()) { if ($user->isAdmin()) {
$columns->push(WorklistColumn::Organization); $columns->push(WorklistColumn::Organization);
$columns->push(WorklistColumn::Department); $columns->push(WorklistColumn::Department);
$columns->push(WorklistColumn::DicomServer);
} }
return $columns; return $columns;

View File

@ -14,6 +14,7 @@ public function up(): void
$table->id(); $table->id();
$table->boolean('is_active')->index(); $table->boolean('is_active')->index();
$table->string('server_name')->unique(); $table->string('server_name')->unique();
$table->string('geo_code', 2)->index();
$table->string('host'); $table->string('host');
$table->integer('port'); $table->integer('port');
$table->string('rest_api_endpoint'); $table->string('rest_api_endpoint');

View File

@ -36,14 +36,14 @@ public function run(): void
$dept_chev_xr = Department::create( $dept_chev_xr = Department::create(
[ [
'is_active' => true, 'is_active' => true,
'name' => 'Chevron XR', 'name' => 'Chev-CR',
'organization_id' => $chev->id, 'organization_id' => $chev->id,
] ]
); );
$chev_dep_ct_mr = Department::create( $chev_dep_ct_mr = Department::create(
[ [
'is_active' => true, 'is_active' => true,
'name' => 'Chevron CT/MR', 'name' => 'Chev-MR',
'organization_id' => $chev->id, 'organization_id' => $chev->id,
] ]
); );
@ -109,7 +109,8 @@ public function run(): void
DicomServer::create( DicomServer::create(
[ [
'is_active' => true, 'is_active' => true,
'server_name' => 'Orthanc Main', 'server_name' => 'CTG-1',
'geo_code' => 'BD',
'host' => 'pacs.mylabctg.com', 'host' => 'pacs.mylabctg.com',
'port' => 8042, 'port' => 8042,
'rest_api_endpoint' => 'http://pacs.mylabctg.com:8042/', 'rest_api_endpoint' => 'http://pacs.mylabctg.com:8042/',
@ -122,8 +123,9 @@ public function run(): void
DicomServer::create( DicomServer::create(
[ [
'is_active' => false, 'is_active' => false,
'server_name' => 'Orthanc XR', 'server_name' => 'MAA-1',
'host' => 'pacs.mylabctg.com', 'host' => 'pacs.mylabctg.com',
'geo_code' => 'IN',
'port' => 8043, 'port' => 8043,
'rest_api_endpoint' => 'http://pacs.mylabctg.com:8042/', 'rest_api_endpoint' => 'http://pacs.mylabctg.com:8042/',
'ae_title' => 'RADFUSION', 'ae_title' => 'RADFUSION',

View File

@ -27,6 +27,8 @@
'resources/assets/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.scss', 'resources/assets/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.scss',
'resources/assets/vendor/libs/bootstrap-daterangepicker/bootstrap-daterangepicker.scss', 'resources/assets/vendor/libs/bootstrap-daterangepicker/bootstrap-daterangepicker.scss',
]) ])
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/7.2.3/css/flag-icons.min.css" crossorigin="anonymous" referrerpolicy="no-referrer" />
@endsection @endsection
@section('vendor-script') @section('vendor-script')