Files
onboard/app/Infrastructure/Database/Repositories/Patient/PatientRepository.php
2026-07-31 17:19:03 +09:00

45 lines
1.9 KiB
PHP

<?php
namespace App\Infrastructure\Database\Repositories\Patient;
use App\Domain\Patient\Contracts\PatientRepositoryInterface;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
class PatientRepository implements PatientRepositoryInterface
{
private const TABLE = 'stt_LastJournalHistoryEntry';
private const TTL = 300;
private const TTL_KEY = 'mis:journal:';
private const JOURNAL_SELECT = [
'lj.LastJournalHistoryEntryID', 'lj.rf_MedicalHistoryID', 'lj.rf_MigrationPatientID',
'lj.rf_ExtractMigrationPatientId', 'lj.rf_DiagnosID', 'lj.rf_AttendingDoctorID',
'lj.rf_BedActionID', 'mh.MedicalHistoryID', 'mh.FAMILY', 'mh.Name', 'mh.OT', 'mh.BD', 'mh.DateRecipient',
'mh.DateExtract', 'mp.DateIngoing', 'mp.DateOut', 'mp.rf_StationarBranchID', 'd.DepartmentNAME'
];
public function getCurrentByDepartmentId(int $departmentId): ?\Illuminate\Support\Collection
{
$query = DB::connection('mis')->table('stt_LastJournalHistoryEntry as lj')
->join('stt_MedicalHistory as mh', 'mh.MedicalHistoryID', '=', 'lj.rf_MedicalHistoryID')
->join('stt_MigrationPatient as mp', 'mp.MigrationPatientID', '=', 'lj.rf_MigrationPatientID')
->leftJoin('stt_StationarBranch as sb', 'sb.StationarBranchID', '=', 'mp.rf_StationarBranchID')
->leftJoin('oms_Department as d', 'd.DepartmentID', '=', 'sb.rf_DepartmentID')
->select($this::JOURNAL_SELECT)
->where('lj.rf_ExtractMigrationPatientId', '=', 0)
->where('d.DepartmentID', '=', $departmentId)
->orderBy('mh.DateRecipient');
$results = Cache::remember($this::TTL_KEY . $departmentId, $this::TTL, function () use ($query) {
return $query->get();
});
return $results;
}
public function getById(int $patientId)
{
// TODO: Implement getById() method.
}
}