feat: add lab tests, patient file management, and prescription improvements

This commit is contained in:
SajjadMahmoody
2026-04-17 20:15:38 +03:30
parent 6a301c5529
commit bf0ada051f
53 changed files with 3201 additions and 387 deletions
+47 -1
View File
@@ -5,14 +5,17 @@
namespace App\Filament\Pages;
use App\Models\SyncLog;
use App\Services\OsurgImportService;
use App\Services\SyncService;
use Filament\Actions\Action;
use Filament\Notifications\Notification;
use Filament\Pages\Page;
use Livewire\WithFileUploads;
use Morilog\Jalali\Jalalian;
class SyncPage extends Page
{
use WithFileUploads;
protected string $view = 'filament.pages.sync-page';
protected static ?int $navigationSort = 99;
@@ -37,7 +40,11 @@ public static function getNavigationGroup(): ?string
return __('navigation.groups.system');
}
public string $report = '';
public string $report = '';
public string $importReport = '';
public bool $importing = false;
public $sqlFile = null;
public static function getNavigationLabel(): string
{
@@ -64,6 +71,14 @@ public function getLastSyncTime(): string
return Jalalian::fromCarbon($last->datetime->timezone('Asia/Tehran'))->format('Y/m/d H:i:s');
}
protected function rules(): array
{
return [
'sqlFile' => ['required', 'file', 'max:307200'],
];
}
protected function getHeaderActions(): array
{
return [
@@ -109,6 +124,37 @@ public function runSync(): void
->send();
}
public function startImport(): void
{
$this->validate();
$this->importing = true;
try {
@set_time_limit(600);
$tmpPath = $this->sqlFile->getRealPath();
$service = new OsurgImportService();
$result = $service->import($tmpPath);
$this->importReport = implode("\n", $result['report']);
Notification::make()
->title($result['success']
? __('navigation.import.success')
: __('navigation.import.failed'))
->body(__('navigation.sync.see_report'))
->color($result['success'] ? 'success' : 'danger')
->send();
} finally {
$this->sqlFile = null;
$this->importing = false;
}
}
public function downloadBackup(): \Symfony\Component\HttpFoundation\StreamedResponse
{
$data = [