*/ public static function map(?string $input): array { if (is_null(self::$rules)) { self::$rules = Cache::remember('dicom.routers', now()->addMinutes(15), fn () => DicomRoutingRule::active()->with('conditions')->get() ); self::$catchAll = DB::table('institutes') ->where('name', 'Catch-all') ->first('id') ->id; } if (! blank($input)) { $input = strtolower($input); foreach (self::$rules as $pattern) { if (ContentMatcher::match($input, $pattern->name, MatchMode::from($pattern->match_mode))) { return [$pattern->institute_id, $pattern->facility_id]; } } } return [self::$catchAll, null]; } }