From c257464c137f176a1b86a5d9b2849f9347f3cbfe Mon Sep 17 00:00:00 2001 From: Masroor Ehsan Date: Mon, 30 Dec 2024 19:35:48 +0600 Subject: [PATCH] wip series --- app/Services/Pacs/StudyImporter.php | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/app/Services/Pacs/StudyImporter.php b/app/Services/Pacs/StudyImporter.php index 7f4179b..7422f4d 100644 --- a/app/Services/Pacs/StudyImporter.php +++ b/app/Services/Pacs/StudyImporter.php @@ -58,9 +58,13 @@ private function fetchStudyDetails(string $orthanc_uid): ?array if ($study == null) { return null; } + $stats = $this->client->getStudyStatistics($orthanc_uid); $study['Statistics'] = $stats; + $series = $this->client->getStudySeries($orthanc_uid); + $study['Series'] = $series; + return $study; } @@ -141,10 +145,30 @@ private function prepareData(mixed $orthanc_src): array 'manufacturer_model_name' => data_get($study, 'RequestedTags.ManufacturerModelName'), ]; + $series = []; + foreach ($orthanc_src['Series'] as $ser) { + $params = [ + 'orthanc_uid' => $ser['ID'], + 'series_instance_uid' => data_get($ser, 'MainDicomTags.SeriesInstanceUID'), + 'series_date' => DicomUtils::dateTimeToCarbon($ser['MainDicomTags']['SeriesDate'], $ser['MainDicomTags']['SeriesTime']), + 'series_number' => data_get($ser, 'MainDicomTags.SeriesNumber'), + 'protocol_name' => data_get($ser, 'MainDicomTags.ProtocolName'), + 'modality' => data_get($ser, 'MainDicomTags.Modality'), + 'body_part_examined' => data_get($ser, 'MainDicomTags.BodyPartExamined'), + 'performed_procedure_step_description' => data_get($ser, 'MainDicomTags.PerformedProcedureStepDescription'), + 'sequence_name' => data_get($ser, 'MainDicomTags.SequenceName'), + ]; + $params['num_instances'] = count(data_get($ser, 'Instances', [])); + $params = array_filter($params, fn ($v) => filled($v)); + if (! empty($params)) { + $series[] = array_filter($params, fn ($v) => filled($v)); + } + } + $study = array_filter($study, fn ($v) => filled($v)); $details = array_filter($details, fn ($v) => filled($v)); - return compact('study', 'details'); + return compact('study', 'details', 'series'); } private function setValue(array &$array, string $key, mixed $value): void