This commit is contained in:
Dr Masroor Ehsan 2025-01-23 10:19:11 +06:00
parent e13191ab44
commit a64959b2d0
2 changed files with 74 additions and 74 deletions

View File

@ -2,7 +2,7 @@
namespace App\Services\Pacs; namespace App\Services\Pacs;
use App\Services\StudyRouter\DicomTagIdentifiers; use App\Services\StudyRouter\RawDicomTag;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Str; use Illuminate\Support\Str;
@ -26,65 +26,65 @@ public static function dateTimeToCarbon(?string $datePart, ?string $timePart, st
return Carbon::createFromFormat('YmdHis', $datePart . Str::before($timePart, '.'), $timezone); return Carbon::createFromFormat('YmdHis', $datePart . Str::before($timePart, '.'), $timezone);
} }
public static function getDicomTagDescription(DicomTagIdentifiers $tag): string public static function getDicomTagDescription(RawDicomTag $tag): string
{ {
return match ($tag) { return match ($tag) {
DicomTagIdentifiers::PatientName => "Patient's Name", RawDicomTag::PatientName => "Patient's Name",
DicomTagIdentifiers::PatientID => 'Patient ID', RawDicomTag::PatientID => 'Patient ID',
DicomTagIdentifiers::PatientBirthDate => "Patient's Birth Date", RawDicomTag::PatientBirthDate => "Patient's Birth Date",
DicomTagIdentifiers::PatientSex => "Patient's Sex", RawDicomTag::PatientSex => "Patient's Sex",
DicomTagIdentifiers::StudyInstanceUID => 'Study Instance UID', RawDicomTag::StudyInstanceUID => 'Study Instance UID',
DicomTagIdentifiers::SeriesInstanceUID => 'Series Instance UID', RawDicomTag::SeriesInstanceUID => 'Series Instance UID',
DicomTagIdentifiers::StudyID => 'Study ID', RawDicomTag::StudyID => 'Study ID',
DicomTagIdentifiers::SeriesNumber => 'Series Number', RawDicomTag::SeriesNumber => 'Series Number',
DicomTagIdentifiers::InstanceNumber => 'Instance Number', RawDicomTag::InstanceNumber => 'Instance Number',
DicomTagIdentifiers::SOPClassUID => 'SOP Class UID', RawDicomTag::SOPClassUID => 'SOP Class UID',
DicomTagIdentifiers::SOPInstanceUID => 'SOP Instance UID', RawDicomTag::SOPInstanceUID => 'SOP Instance UID',
DicomTagIdentifiers::StudyDate => 'Study Date', RawDicomTag::StudyDate => 'Study Date',
DicomTagIdentifiers::StudyTime => 'Study Time', RawDicomTag::StudyTime => 'Study Time',
DicomTagIdentifiers::AccessionNumber => 'Accession Number', RawDicomTag::AccessionNumber => 'Accession Number',
DicomTagIdentifiers::Modality => 'Modality', RawDicomTag::Modality => 'Modality',
DicomTagIdentifiers::Manufacturer => 'Manufacturer', RawDicomTag::Manufacturer => 'Manufacturer',
DicomTagIdentifiers::InstitutionName => 'Institution Name', RawDicomTag::InstitutionName => 'Institution Name',
DicomTagIdentifiers::ReferringPhysicianName => "Referring Physician's Name", RawDicomTag::ReferringPhysicianName => "Referring Physician's Name",
DicomTagIdentifiers::StationName => 'Station Name', RawDicomTag::StationName => 'Station Name',
DicomTagIdentifiers::SeriesDescription => 'Series Description', RawDicomTag::SeriesDescription => 'Series Description',
DicomTagIdentifiers::ManufacturerModelName => "Manufacturer's Model Name", RawDicomTag::ManufacturerModelName => "Manufacturer's Model Name",
DicomTagIdentifiers::PatientAge => "Patient's Age", RawDicomTag::PatientAge => "Patient's Age",
DicomTagIdentifiers::PatientWeight => "Patient's Weight", RawDicomTag::PatientWeight => "Patient's Weight",
DicomTagIdentifiers::BodyPartExamined => 'Body Part Examined', RawDicomTag::BodyPartExamined => 'Body Part Examined',
DicomTagIdentifiers::ProtocolName => 'Protocol Name', RawDicomTag::ProtocolName => 'Protocol Name',
DicomTagIdentifiers::SoftwareVersions => 'Software Versions', RawDicomTag::SoftwareVersions => 'Software Versions',
DicomTagIdentifiers::AcquisitionDate => 'Acquisition Date', RawDicomTag::AcquisitionDate => 'Acquisition Date',
DicomTagIdentifiers::AcquisitionTime => 'Acquisition Time', RawDicomTag::AcquisitionTime => 'Acquisition Time',
DicomTagIdentifiers::ContentDate => 'Content Date', RawDicomTag::ContentDate => 'Content Date',
DicomTagIdentifiers::ContentTime => 'Content Time', RawDicomTag::ContentTime => 'Content Time',
DicomTagIdentifiers::AcquisitionDeviceProcessingDescription => 'Acquisition Device Processing Description', RawDicomTag::AcquisitionDeviceProcessingDescription => 'Acquisition Device Processing Description',
DicomTagIdentifiers::InstitutionAddress => 'Institution Address', RawDicomTag::InstitutionAddress => 'Institution Address',
DicomTagIdentifiers::StudyDescription => 'Study Description', RawDicomTag::StudyDescription => 'Study Description',
DicomTagIdentifiers::OperatorsName => "Operator's Name", RawDicomTag::OperatorsName => "Operator's Name",
DicomTagIdentifiers::Private10 => 'Private Tag 10', RawDicomTag::Private10 => 'Private Tag 10',
DicomTagIdentifiers::IW_Private => 'IW Private Tag', RawDicomTag::IW_Private => 'IW Private Tag',
DicomTagIdentifiers::ImageType => 'Image Type', RawDicomTag::ImageType => 'Image Type',
DicomTagIdentifiers::PatientOrientation => 'Patient Orientation', RawDicomTag::PatientOrientation => 'Patient Orientation',
DicomTagIdentifiers::ImagePositionPatient => 'Image Position (Patient)', RawDicomTag::ImagePositionPatient => 'Image Position (Patient)',
DicomTagIdentifiers::ImageOrientationPatient => 'Image Orientation (Patient)', RawDicomTag::ImageOrientationPatient => 'Image Orientation (Patient)',
DicomTagIdentifiers::FrameOfReferenceUID => 'Frame of Reference UID', RawDicomTag::FrameOfReferenceUID => 'Frame of Reference UID',
DicomTagIdentifiers::PositionReferenceIndicator => 'Position Reference Indicator', RawDicomTag::PositionReferenceIndicator => 'Position Reference Indicator',
DicomTagIdentifiers::SliceLocation => 'Slice Location', RawDicomTag::SliceLocation => 'Slice Location',
DicomTagIdentifiers::SamplesPerPixel => 'Samples per Pixel', RawDicomTag::SamplesPerPixel => 'Samples per Pixel',
DicomTagIdentifiers::PhotometricInterpretation => 'Photometric Interpretation', RawDicomTag::PhotometricInterpretation => 'Photometric Interpretation',
DicomTagIdentifiers::Rows => 'Rows', RawDicomTag::Rows => 'Rows',
DicomTagIdentifiers::Columns => 'Columns', RawDicomTag::Columns => 'Columns',
DicomTagIdentifiers::PixelSpacing => 'Pixel Spacing', RawDicomTag::PixelSpacing => 'Pixel Spacing',
DicomTagIdentifiers::BitsAllocated => 'Bits Allocated', RawDicomTag::BitsAllocated => 'Bits Allocated',
DicomTagIdentifiers::BitsStored => 'Bits Stored', RawDicomTag::BitsStored => 'Bits Stored',
DicomTagIdentifiers::HighBit => 'High Bit', RawDicomTag::HighBit => 'High Bit',
DicomTagIdentifiers::PixelRepresentation => 'Pixel Representation', RawDicomTag::PixelRepresentation => 'Pixel Representation',
DicomTagIdentifiers::WindowCenter => 'Window Center', RawDicomTag::WindowCenter => 'Window Center',
DicomTagIdentifiers::WindowWidth => 'Window Width', RawDicomTag::WindowWidth => 'Window Width',
DicomTagIdentifiers::RescaleIntercept => 'Rescale Intercept', RawDicomTag::RescaleIntercept => 'Rescale Intercept',
DicomTagIdentifiers::RescaleSlope => 'Rescale Slope', RawDicomTag::RescaleSlope => 'Rescale Slope',
}; };
} }
} }

View File

@ -8,7 +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 App\Services\StudyRouter\RawDicomTag;
use Carbon\Carbon; use Carbon\Carbon;
use Exception; use Exception;
use Illuminate\Pipeline\Pipeline; use Illuminate\Pipeline\Pipeline;
@ -109,21 +109,21 @@ public function fetchStudyDetails(string $orthanc_uuid): ?array
public function matchRouting(mixed $orthanc_src) public function matchRouting(mixed $orthanc_src)
{ {
$dicomData = [ $dicomData = [
DicomTagIdentifiers::PatientName->value => data_get($orthanc_src, 'PatientMainDicomTags.PatientName'), RawDicomTag::PatientName->value => data_get($orthanc_src, 'PatientMainDicomTags.PatientName'),
DicomTagIdentifiers::PatientID->value => data_get($orthanc_src, 'PatientMainDicomTags.PatientID'), RawDicomTag::PatientID->value => data_get($orthanc_src, 'PatientMainDicomTags.PatientID'),
DicomTagIdentifiers::Modality->value => data_get($orthanc_src, 'RequestedTags.Modality'), RawDicomTag::Modality->value => data_get($orthanc_src, 'RequestedTags.Modality'),
DicomTagIdentifiers::StudyDescription->value => $this->getStudyDescription($orthanc_src), RawDicomTag::StudyDescription->value => $this->getStudyDescription($orthanc_src),
DicomTagIdentifiers::BodyPartExamined->value => data_get($orthanc_src, 'RequestedTags.BodyPartExamined'), RawDicomTag::BodyPartExamined->value => data_get($orthanc_src, 'RequestedTags.BodyPartExamined'),
DicomTagIdentifiers::ReferringPhysicianName->value => data_get($orthanc_src, 'MainDicomTags.ReferringPhysicianName'), RawDicomTag::ReferringPhysicianName->value => data_get($orthanc_src, 'MainDicomTags.ReferringPhysicianName'),
DicomTagIdentifiers::AccessionNumber->value => data_get($orthanc_src, 'MainDicomTags.AccessionNumber'), RawDicomTag::AccessionNumber->value => data_get($orthanc_src, 'MainDicomTags.AccessionNumber'),
DicomTagIdentifiers::InstitutionName->value => data_get($orthanc_src, 'MainDicomTags.InstitutionName'), RawDicomTag::InstitutionName->value => data_get($orthanc_src, 'MainDicomTags.InstitutionName'),
DicomTagIdentifiers::InstitutionAddress->value => data_get($orthanc_src, 'RequestedTags.InstitutionAddress'), RawDicomTag::InstitutionAddress->value => data_get($orthanc_src, 'RequestedTags.InstitutionAddress'),
DicomTagIdentifiers::OperatorsName->value => data_get($orthanc_src, 'RequestedTags.OperatorsName'), RawDicomTag::OperatorsName->value => data_get($orthanc_src, 'RequestedTags.OperatorsName'),
DicomTagIdentifiers::StationName->value => data_get($orthanc_src, 'RequestedTags.StationName'), RawDicomTag::StationName->value => data_get($orthanc_src, 'RequestedTags.StationName'),
DicomTagIdentifiers::Manufacturer->value => data_get($orthanc_src, 'RequestedTags.Manufacturer'), RawDicomTag::Manufacturer->value => data_get($orthanc_src, 'RequestedTags.Manufacturer'),
DicomTagIdentifiers::ManufacturerModelName->value => data_get($orthanc_src, 'RequestedTags.ManufacturerModelName'), RawDicomTag::ManufacturerModelName->value => data_get($orthanc_src, 'RequestedTags.ManufacturerModelName'),
DicomTagIdentifiers::SoftwareVersions->value => data_get($orthanc_src, 'RequestedTags.SoftwareVersions'), RawDicomTag::SoftwareVersions->value => data_get($orthanc_src, 'RequestedTags.SoftwareVersions'),
DicomTagIdentifiers::ProtocolName->value => data_get($orthanc_src, 'xxx'), RawDicomTag::ProtocolName->value => data_get($orthanc_src, 'xxx'),
]; ];
$dicomData = array_purge($dicomData); $dicomData = array_purge($dicomData);