wip
This commit is contained in:
parent
336d18181b
commit
8cb1b317d3
@ -25,4 +25,8 @@ public function setArchived(bool $archived): self;
|
||||
public function setLocked(bool $locked): self;
|
||||
|
||||
public function get(?int $user_id = null): LengthAwarePaginator;
|
||||
|
||||
public function setStudyDate(string $from, ?string $to = null): self;
|
||||
|
||||
public function setReceiveDate(string $from, ?string $to = null): self;
|
||||
}
|
||||
|
@ -5,6 +5,7 @@
|
||||
use App\Models\Enums\ReportStatus;
|
||||
use App\Models\Enums\StudyLevelStatus;
|
||||
use App\Models\Study;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Contracts\Database\Eloquent\Builder;
|
||||
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
|
||||
|
||||
@ -14,8 +15,6 @@ abstract class WorklistBase implements IUserStudyLister
|
||||
|
||||
private array $sortColumns = [];
|
||||
|
||||
private ?string $sortDir = null;
|
||||
|
||||
private ?string $searchTerm = null;
|
||||
|
||||
private ?int $radiologist_id = null;
|
||||
@ -28,6 +27,14 @@ abstract class WorklistBase implements IUserStudyLister
|
||||
|
||||
private ?bool $archived = null;
|
||||
|
||||
private ?string $studyDateFrom = null;
|
||||
|
||||
private ?string $studyDateTo = null;
|
||||
|
||||
private ?string $receiveDateFrom = null;
|
||||
|
||||
private ?string $receiveDateTo = null;
|
||||
|
||||
public function setRadiologist(int $radiologist_id): self
|
||||
{
|
||||
$this->radiologist_id = $radiologist_id;
|
||||
@ -115,6 +122,7 @@ public function get(?int $user_id = null): LengthAwarePaginator
|
||||
$query = $this->applyReportStatus($query);
|
||||
$query = $this->applyArchived($query);
|
||||
$query = $this->applyLocked($query);
|
||||
$query = $this->applyDateFilters($query);
|
||||
|
||||
return $query->paginate($this->getPageSize($user_id));
|
||||
}
|
||||
@ -200,4 +208,47 @@ private function applyLocked(Builder $query): Builder
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
private function applyDateFilter(Builder $query, string $column, string $from, ?string $to): Builder
|
||||
{
|
||||
$start = Carbon::parse($from);
|
||||
if (filled($to)) {
|
||||
$end = Carbon::parse($to);
|
||||
$query = $query->whereBetween($column, [$start->toDateString(), $end->toDateString()]);
|
||||
} else {
|
||||
$query = $query->where($column, '>=', $start->toDateString());
|
||||
}
|
||||
|
||||
return $query;
|
||||
|
||||
}
|
||||
|
||||
private function applyDateFilters(Builder $query): Builder
|
||||
{
|
||||
if (filled($this->studyDateFrom)) {
|
||||
$query = $this->applyDateFilter($query, 'study_date', $this->studyDateFrom, $this->studyDateTo);
|
||||
}
|
||||
|
||||
if (filled($this->receiveDateFrom)) {
|
||||
$query = $this->applyDateFilter($query, 'receive_date', $this->receiveDateFrom, $this->receiveDateTo);
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
public function setStudyDate(string $from, ?string $to = null): self
|
||||
{
|
||||
$this->studyDateFrom = $from;
|
||||
$this->studyDateTo = $to;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setReceiveDate(string $from, ?string $to = null): self
|
||||
{
|
||||
$this->receiveDateFrom = $from;
|
||||
$this->receiveDateTo = $to;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
22
app/Http/Controllers/Api/WorklistController.php
Normal file
22
app/Http/Controllers/Api/WorklistController.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\DAL\Studies\WorklistFactory;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Presenters\StudyPresenter;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class WorklistController extends Controller
|
||||
{
|
||||
public function studies(Request $request)
|
||||
{
|
||||
if (! $request->ajax()) {
|
||||
abort(404);
|
||||
}
|
||||
$studies = StudyPresenter::pagination(WorklistFactory::getLister()->get());
|
||||
|
||||
// ->toArray();dd($studies);
|
||||
return response()->json($studies);
|
||||
}
|
||||
}
|
@ -174,4 +174,14 @@ public function allowed(): array
|
||||
'ohif.seg' => filled($this->getOhifSegmentationLink()),
|
||||
];
|
||||
}
|
||||
|
||||
public function toArray(): array
|
||||
{
|
||||
return array_merge(parent::toArray(), [
|
||||
'sex_age' => $this->sexAge(),
|
||||
'num_instances' => $this->numInstances(),
|
||||
'links' => $this->links(),
|
||||
'allowed' => $this->allowed(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
namespace App\Presenters;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use CultureGr\Presenter\Presenter;
|
||||
|
||||
class StudyPresenter extends Presenter
|
||||
@ -11,12 +10,4 @@ public function toArray(): array
|
||||
{
|
||||
return $this->model->toArray();
|
||||
}
|
||||
|
||||
public function sexAge(): array
|
||||
{
|
||||
$dob = $this->model->patient_birthdate;
|
||||
$age = $dob ? Carbon::make($dob)->diffInYears() : null;
|
||||
|
||||
return "$age / {$this->model->patient_sex}";
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\Api\WorklistController as ApiWorklistController;
|
||||
use App\Http\Controllers\Guest\ViewSharedStudyController;
|
||||
use App\Http\Controllers\Radiologist\ReportWriteController;
|
||||
use App\Http\Controllers\SocialLoginController;
|
||||
@ -29,6 +30,10 @@
|
||||
return view('dashboard');
|
||||
})->name('dashboard');
|
||||
|
||||
Route::group(['prefix' => 'api', 'as' => 'api.'], function () {
|
||||
Route::get('studies', [ApiWorklistController::class, 'studies'])->name('studies');
|
||||
});
|
||||
|
||||
Route::group(['prefix' => 'radiologist', 'as' => 'radiologist.'], function () {
|
||||
Route::get('/report-write/{id}', ReportWriteController::class)->name('report-write');
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user