*/ protected array $defaultOn = [ self::ASSESSMENTS_ENGINE, ]; public function enabled(Organization $organization, string $flag): bool { $settings = $organization->settings ?? []; $rollout = is_array($settings['rollout'] ?? null) ? $settings['rollout'] : []; if (array_key_exists($flag, $rollout)) { return (bool) $rollout[$flag]; } return in_array($flag, $this->defaultOn, true); } /** * @param array $flags */ public function setFlags(Organization $organization, array $flags): Organization { $settings = $organization->settings ?? []; $rollout = is_array($settings['rollout'] ?? null) ? $settings['rollout'] : []; $settings['rollout'] = array_merge($rollout, $flags); $organization->settings = $settings; $organization->save(); return $organization->fresh(); } /** * Ensure platform assessment/pathway catalog exists (idempotent seed). * Call when the engine is enabled so consult/patient UI has templates. */ public function ensureAssessmentCatalog(): void { if (! Schema::hasTable('care_assessment_templates')) { return; } if (AssessmentTemplate::query()->whereNull('organization_id')->exists()) { return; } Artisan::call('db:seed', [ '--class' => AssessmentTemplateSeeder::class, '--force' => true, ]); if (Schema::hasTable('care_clinical_pathways')) { Artisan::call('db:seed', [ '--class' => ClinicalPathwaySeeder::class, '--force' => true, ]); } } }