This commit is contained in:
Masroor Ehsan 2025-01-22 19:25:59 +06:00
parent 9811638361
commit adce481226

View File

@ -8,6 +8,7 @@
use App\Services\Pacs\DicomUtils;
use App\Services\Pacs\OrthancRestClient;
use App\Services\StudyRouter\DicomStudyRouter;
use App\Services\StudyRouter\DicomTagIdentifiers;
use Carbon\Carbon;
use Exception;
use Illuminate\Pipeline\Pipeline;
@ -105,6 +106,40 @@ public function fetchStudyDetails(string $orthanc_uuid): ?array
return $study;
}
public function matchOrganization(mixed $orthanc_src)
{
$dicomData = [
DicomTagIdentifiers::PatientName->value => data_get($orthanc_src, 'PatientMainDicomTags.PatientName'),
DicomTagIdentifiers::PatientID->value => data_get($orthanc_src, 'PatientMainDicomTags.PatientID'),
DicomTagIdentifiers::Modality->value => data_get($orthanc_src, 'RequestedTags.Modality'),
DicomTagIdentifiers::BodyPartExamined->value => data_get($orthanc_src, 'RequestedTags.BodyPartExamined'),
DicomTagIdentifiers::InstitutionName->value => data_get($orthanc_src, 'MainDicomTags.InstitutionName'),
DicomTagIdentifiers::InstitutionAddress->value => data_get($orthanc_src, 'RequestedTags.InstitutionAddress'),
DicomTagIdentifiers::StudyDescription->value => $this->getStudyDescription($orthanc_src),
DicomTagIdentifiers::OperatorsName->value => data_get($orthanc_src, 'MainDicomTags.InstitutionName'),
DicomTagIdentifiers::StationName->value => data_get($orthanc_src, 'MainDicomTags.InstitutionName'),
DicomTagIdentifiers::ReferringPhysicianName->value => data_get($orthanc_src, 'MainDicomTags.InstitutionName'),
DicomTagIdentifiers::Manufacturer->value => data_get($orthanc_src, 'MainDicomTags.InstitutionName'),
DicomTagIdentifiers::SoftwareVersions->value => data_get($orthanc_src, 'MainDicomTags.InstitutionName'),
DicomTagIdentifiers::ProtocolName->value => data_get($orthanc_src, 'MainDicomTags.InstitutionName'),
];
}
public function getStudyDescription(mixed $orthanc_src): ?string
{
$result = data_get($orthanc_src, 'MainDicomTags.StudyDescription');
if (blank($result)) {
$result = data_get($orthanc_src, 'RequestedTags.AcquisitionDeviceProcessingDescription');
}
if (blank($result)) {
$result = data_get($orthanc_src, 'MainDicomTags.AcquisitionDeviceProcessingDescription');
}
return $result;
}
public function transformData(mixed $orthanc_src): array
{
$inst_name = data_get($orthanc_src, 'MainDicomTags.InstitutionName');
@ -112,6 +147,7 @@ public function transformData(mixed $orthanc_src): array
$patient_name = data_get($orthanc_src, 'PatientMainDicomTags.PatientName');
$descr = $this->getStudyDescription($orthanc_src);
$study = [
'dicom_server_id' => $this->dicomServer->id,
'orthanc_uuid' => strtolower($orthanc_src['ID']),
@ -137,6 +173,8 @@ public function transformData(mixed $orthanc_src): array
'image_count' => data_get($orthanc_src, 'Statistics.CountInstances'),
'series_count' => data_get($orthanc_src, 'Statistics.CountSeries'),
'disk_size' => data_get($orthanc_src, 'Statistics.DiskSize'),
'study_description' =>$descr,
];
if ((bool) data_get($orthanc_src, 'IsStable', false)) {
@ -155,15 +193,6 @@ public function transformData(mixed $orthanc_src): array
}
}
$descr = data_get($orthanc_src, 'MainDicomTags.StudyDescription');
if (blank($descr)) {
$descr = data_get($orthanc_src, 'RequestedTags.AcquisitionDeviceProcessingDescription');
}
if (blank($descr)) {
$descr = data_get($orthanc_src, 'MainDicomTags.AcquisitionDeviceProcessingDescription');
}
$this->setValue($study, 'study_description', trim($descr));
// check for priority in patient name or description
if (preg_match('/\b(urgent|stat)\b/i', implode(' ', [$descr, $patient_name]))) {
$this->setValue($study, 'priority', Priority::Stat->value);