From fcb0dc17fd99c1c8cbb525bca39a640c5715af9a Mon Sep 17 00:00:00 2001 From: Masroor Ehsan Date: Mon, 27 Jan 2025 19:10:08 +0600 Subject: [PATCH] matching --- app/Services/StudyRouter/DicomStudyRouter.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/Services/StudyRouter/DicomStudyRouter.php b/app/Services/StudyRouter/DicomStudyRouter.php index 5c78949..e92725f 100644 --- a/app/Services/StudyRouter/DicomStudyRouter.php +++ b/app/Services/StudyRouter/DicomStudyRouter.php @@ -7,8 +7,10 @@ use App\Models\DicomRoutingRule; use App\Models\Organization; use App\Models\User; +use Exception; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Cache; +use Illuminate\Support\Facades\Log; use Symfony\Component\ExpressionLanguage\ExpressionLanguage; final class DicomStudyRouter @@ -27,9 +29,20 @@ public static function matchStudy(array $dicomHeaders): array return self::fallbackRouting(); } + $study = json_decode(json_encode($dicomHeaders)); // convert to object $expression = new ExpressionLanguage; foreach (self::$rules as $rule) { - $matches = (bool) $expression->evaluate($rule->condition, ['study' => $dicomHeaders]); + try { + $matches = (bool) $expression->evaluate($rule->condition, ['study' => $study]); + } catch (Exception $exc) { + Log::error('Error evaluating expression', [ + 'rule_id' => $rule->id, + 'condition' => $rule->condition, + 'error' => $exc->getMessage(), + ]); + + return self::fallbackRouting(); + } if ($matches) { return [