addColumn('action', 'worklist.action') ->editColumn('reader', function ($study) { if ($study->readingPhysician == null) { return ''; } return ''.$study->readingPhysician->display_name; }) ->editColumn('images', function (Study $study) { return $study->numInstances().'
'.human_filesize($study->disk_size).''; }) ->editColumn('study_date', function ($data) { return Carbon::parse($data->study_date)->isoFormat(self::DATE_FORMAT); }) ->editColumn('reported_at', function ($data) { return Carbon::parse($data->reported_at)->isoFormat(self::DATE_FORMAT); }) ->editColumn('received_at', function ($data) { return Carbon::parse($data->received_at)->isoFormat(self::DATE_FORMAT); }) ->orderColumn('patient_name', 'patient_name $1') ->rawColumns(['priority_icon', 'report_status_led', 'images', 'reader']) ->setRowId('id'); } /** * Get the query source of dataTable. */ public function query(Study $model): QueryBuilder { return WorklistFactory::getLister()->query(); // return $model->newQuery(); } /** * Optional method if you want to use the html builder. */ public function html(): HtmlBuilder { return $this->builder() ->setTableId('worklist-table') ->columns($this->getColumns()) ->minifiedAjax() ->searchPanes(SearchPane::make(['show' => true, 'hideCount' => true])) ->parameters( [ // 'dom' => 'Pfrtip', // 'dom' => 'Bfrtip', 'buttons' => [ 'searchPanes', 'excel', 'csv', 'pdf', 'print', 'reset', 'reload', ], ]) ->selectStyleSingle() ->pageLength(25) // Set default page length to 10 ->lengthMenu([15, 25, 50, 100, 250]) // Custom page length options ->buttons([ Button::make('excel'), Button::make('csv'), Button::make('pdf'), Button::make('print'), Button::make('reset'), Button::make('reload'), ]); } /** * Get the dataTable columns definition. */ public function getColumns(): array { return [ // Column::checkbox(''), Column::make('priority_icon') ->searchable(false) ->orderable(false) ->addClass('text-center') ->width('20px') ->title(''), Column::make('report_status_led') ->searchable(false) ->orderable(false) ->addClass('text-center') ->width('20px') ->title(''), Column::make('modality'), Column::make('patient_id'), Column::make('patient_name'), Column::make('sex_age') ->searchable(false) ->orderable(false) ->addClass('text-center') ->title('Age'), Column::make('study_date')->searchable(false)->title('Study'), Column::make('received_at')->searchable(false)->title('Received'), Column::make('reported_at')->searchable(false)->title('Reported'), Column::make('study_description'), Column::make('reader') ->title('Reader'), // Column::make('body_part_examined'), Column::make('images') ->searchable(false) ->orderable(false) ->addClass('text-center') ->title('Images'), // Column::make('xxx'), Column::computed('action') ->exportable(false) ->printable(false) ->width(60) ->addClass('text-center'), ]; } /** * Get the filename for export. */ protected function filename(): string { $parts = [ config('app.name'), 'worklist', date('YmdHi'), ]; return Str::slug(implode(' ', $parts), '_'); } }