From 9f9a5b2dd84a6459f35ecfec64b1bed5c2d5cd69 Mon Sep 17 00:00:00 2001 From: Dr Masroor Ehsan Date: Sat, 4 Jan 2025 21:17:37 +0600 Subject: [PATCH] wip --- app/DataTables/WorklistDataTable.php | 27 ++++++++++++----------- app/Models/Study.php | 32 ++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 13 deletions(-) diff --git a/app/DataTables/WorklistDataTable.php b/app/DataTables/WorklistDataTable.php index 659bd5e..bd15d62 100644 --- a/app/DataTables/WorklistDataTable.php +++ b/app/DataTables/WorklistDataTable.php @@ -34,7 +34,9 @@ public function dataTable(QueryBuilder $query): EloquentDataTable { return (new EloquentDataTable($query)) ->addColumn('action', 'worklist.action') - ->editColumn('reader', function ($study) { + ->editColumn('patient_name', fn (Study $study) => $study->sanitizedPatientName()) + ->editColumn('study_description', fn (Study $study) => $study->sanitizedStudyDescription()) + ->editColumn('reader', function (Study $study) { if ($study->readingPhysician == null) { return ''; } @@ -44,14 +46,14 @@ public function dataTable(QueryBuilder $query): EloquentDataTable ->editColumn('images', function (Study $study) { return $study->numInstances().''.human_filesize($study->disk_size).''; }) - ->editColumn('study_date', function ($data) { - return self::dtFormat($data->study_date); + ->editColumn('study_date', function (Study $study) { + return self::dtFormat($study->study_date); }) - ->editColumn('reported_at', function ($data) { - return self::dtFormat($data->reported_at); + ->editColumn('reported_at', function (Study $study) { + return self::dtFormat($study->reported_at); }) - ->editColumn('received_at', function ($data) { - return self::dtFormat($data->received_at); + ->editColumn('received_at', function (Study $study) { + return self::dtFormat($study->received_at); }) ->orderColumn('patient_name', 'patient_name $1') ->rawColumns(['priority_icon', 'report_status_led', 'images', 'reader']) @@ -134,20 +136,19 @@ public function getColumns(): array ->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') ->title('Study'), - Column::make('reader') - ->title('Read by'), + + Column::make('study_date')->searchable(false)->title('Scan Dt'), + Column::make('reader')->title('Read by'), + Column::make('reported_at')->searchable(false)->title('Reported'), // Column::make('body_part_examined'), Column::make('images') ->searchable(false) ->orderable(false) ->addClass('text-center') ->title('Images'), + Column::make('received_at')->searchable(false)->title('Received'), // Column::make('xxx'), Column::computed('action') diff --git a/app/Models/Study.php b/app/Models/Study.php index 8d00d76..b9fa5ff 100644 --- a/app/Models/Study.php +++ b/app/Models/Study.php @@ -12,6 +12,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; +use Illuminate\Support\Str; class Study extends BaseModel { @@ -197,6 +198,37 @@ public function allowed(): array ]; } + public function sanitizedPatientName(): string + { + $name = preg_replace('/[^[:alnum:][:space:]]/u', ' ', $this->patient_name); + + return Str::of($name) + ->slug(' ') + ->title(); + } + + public function sanitizedStudyDescription(): string + { + $name = preg_replace('/[^[:alnum:][:space:]\/\-\&]/u', ' ', $this->study_description); + + $name = Str::of($name)->title(); + $lut = [ + 'ct' => 'CT', + 'mr' => 'MR', + 'mri' => 'MRI', + 'hrct' => 'HRCT', + 'hub' => 'KUB', + 'ap' => 'AP', + 'pa' => 'PA', + 'with' => 'w/', + ]; + foreach ($lut as $search => $replace) { + $name = preg_replace("/\b$search\b/i", $replace, $name); + } + + return $name; + } + public function toArray(): array { return array_merge(parent::toArray(), [