wip
This commit is contained in:
parent
9811638361
commit
adce481226
@ -8,6 +8,7 @@
|
|||||||
use App\Services\Pacs\DicomUtils;
|
use App\Services\Pacs\DicomUtils;
|
||||||
use App\Services\Pacs\OrthancRestClient;
|
use App\Services\Pacs\OrthancRestClient;
|
||||||
use App\Services\StudyRouter\DicomStudyRouter;
|
use App\Services\StudyRouter\DicomStudyRouter;
|
||||||
|
use App\Services\StudyRouter\DicomTagIdentifiers;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Pipeline\Pipeline;
|
use Illuminate\Pipeline\Pipeline;
|
||||||
@ -105,6 +106,40 @@ public function fetchStudyDetails(string $orthanc_uuid): ?array
|
|||||||
return $study;
|
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
|
public function transformData(mixed $orthanc_src): array
|
||||||
{
|
{
|
||||||
$inst_name = data_get($orthanc_src, 'MainDicomTags.InstitutionName');
|
$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');
|
$patient_name = data_get($orthanc_src, 'PatientMainDicomTags.PatientName');
|
||||||
|
|
||||||
|
$descr = $this->getStudyDescription($orthanc_src);
|
||||||
$study = [
|
$study = [
|
||||||
'dicom_server_id' => $this->dicomServer->id,
|
'dicom_server_id' => $this->dicomServer->id,
|
||||||
'orthanc_uuid' => strtolower($orthanc_src['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'),
|
'image_count' => data_get($orthanc_src, 'Statistics.CountInstances'),
|
||||||
'series_count' => data_get($orthanc_src, 'Statistics.CountSeries'),
|
'series_count' => data_get($orthanc_src, 'Statistics.CountSeries'),
|
||||||
'disk_size' => data_get($orthanc_src, 'Statistics.DiskSize'),
|
'disk_size' => data_get($orthanc_src, 'Statistics.DiskSize'),
|
||||||
|
|
||||||
|
'study_description' =>$descr,
|
||||||
];
|
];
|
||||||
|
|
||||||
if ((bool) data_get($orthanc_src, 'IsStable', false)) {
|
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
|
// check for priority in patient name or description
|
||||||
if (preg_match('/\b(urgent|stat)\b/i', implode(' ', [$descr, $patient_name]))) {
|
if (preg_match('/\b(urgent|stat)\b/i', implode(' ', [$descr, $patient_name]))) {
|
||||||
$this->setValue($study, 'priority', Priority::Stat->value);
|
$this->setValue($study, 'priority', Priority::Stat->value);
|
||||||
|
Loading…
Reference in New Issue
Block a user