Files
clinicpro/migrations/Version20260801170043.php
hamed c4f1f25c80 Refactor booking system: Remove unused policies, packages, and related entities
- Removed package consumption flags and related properties from PriceQuote.
- Eliminated unused domain event publishing for policies and waitlist in Schedule.
- Cleaned up BookingEngineSeeder by removing package and policy related logic.
- Updated SeedScenariosCommand to reflect removal of policies from output.
- Dropped policy, package, treatment course, cancellation, waitlist, and domain event tables in migration.
- Removed domain event assertions from tests related to resource blocking.
2026-08-01 20:50:47 +03:30

113 lines
21 KiB
PHP

<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20260801170043 extends AbstractMigration
{
public function getDescription(): string
{
return 'Drop the policy, package, treatment-course, cancellation, waitlist and domain-event tables. '
. 'Those subsystems were removed from the product; the booking model keeps only resources, '
. 'services and service options. down() recreates the schema but not the data.';
}
public function up(Schema $schema): void
{
// ترتیب حذف مهم نیست چون کلیدهای خارجی موقتاً خاموش می‌شوند؛ و `IF EXISTS`
// لازم است چون اجرای نیمه‌کارهٔ قبلی ممکن است بخشی را برداشته باشد و
// migrationی که فقط یک بار کار کند، روی محیط نیمه‌مهاجرت‌کرده گیر می‌کند.
$this->addSql('SET FOREIGN_KEY_CHECKS = 0');
foreach ([
'policy_simulation_runs',
'policy_version_logs',
'policies',
'session_credit_ledger',
'patient_packages',
'package_services',
'packages',
'course_sessions',
'course_protocol_steps',
'course_protocols',
'treatment_courses',
'no_show_records',
'cancellation_policies',
'waitlist_entries',
'domain_events',
] as $table) {
$this->addSql(sprintf('DROP TABLE IF EXISTS %s', $table));
}
$this->addSql('SET FOREIGN_KEY_CHECKS = 1');
// ستون نوبت که به جلسهٔ دوره اشاره می‌کرد.
if ($schema->getTable('appointments')->hasColumn('course_session_id')) {
$this->addSql('ALTER TABLE appointments DROP FOREIGN KEY FK_6A41727ABEDDA25C');
$this->addSql('DROP INDEX IDX_6A41727ABEDDA25C ON appointments');
$this->addSql('ALTER TABLE appointments DROP course_session_id');
}
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE TABLE cancellation_policies (id INT AUTO_INCREMENT NOT NULL, uuid VARCHAR(36) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, free_window_hours SMALLINT DEFAULT 24 NOT NULL, penalty_mode VARCHAR(10) CHARACTER SET utf8mb4 DEFAULT \'none\' NOT NULL COLLATE `utf8mb4_unicode_520_ci`, penalty_value INT DEFAULT 0 NOT NULL, deposit_refundable TINYINT DEFAULT 0 NOT NULL, credit_refundable TINYINT DEFAULT 1 NOT NULL, no_show_threshold SMALLINT DEFAULT 3 NOT NULL, risk_tag_uuid VARCHAR(36) CHARACTER SET utf8mb4 DEFAULT NULL COLLATE `utf8mb4_unicode_520_ci`, active TINYINT DEFAULT 1 NOT NULL, created_at INT NOT NULL, updated_at INT NOT NULL, entity_type VARCHAR(10) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, entity_id INT NOT NULL, service_item_id INT DEFAULT NULL, INDEX idx_cancel_policies_tenant (entity_type, entity_id, active), UNIQUE INDEX UNIQ_52BE2A1D17F50A6 (uuid), INDEX IDX_52BE2A1DDEB00C2 (service_item_id), UNIQUE INDEX uniq_cancel_policy_scope (entity_type, entity_id, service_item_id), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('CREATE TABLE course_protocols (id INT AUTO_INCREMENT NOT NULL, uuid VARCHAR(36) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, session_count SMALLINT NOT NULL, min_days SMALLINT NOT NULL, ideal_days SMALLINT NOT NULL, max_days SMALLINT NOT NULL, prefer_same_resource TINYINT DEFAULT 1 NOT NULL, active TINYINT DEFAULT 1 NOT NULL, created_at INT NOT NULL, updated_at INT NOT NULL, entity_type VARCHAR(10) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, entity_id INT NOT NULL, service_item_id INT NOT NULL, INDEX idx_protocols_tenant (entity_type, entity_id, active), UNIQUE INDEX UNIQ_E60D42A0D17F50A6 (uuid), UNIQUE INDEX uniq_protocol_service (service_item_id), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('CREATE TABLE course_protocol_steps (id INT AUTO_INCREMENT NOT NULL, session_number SMALLINT NOT NULL, params JSON DEFAULT NULL, override_duration_minutes SMALLINT DEFAULT NULL, protocol_id INT NOT NULL, UNIQUE INDEX uniq_step (protocol_id, session_number), INDEX IDX_58A0726CCD59258 (protocol_id), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('CREATE TABLE course_sessions (id INT AUTO_INCREMENT NOT NULL, uuid VARCHAR(36) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, session_number SMALLINT NOT NULL, params JSON DEFAULT NULL, status VARCHAR(12) CHARACTER SET utf8mb4 DEFAULT \'planned\' NOT NULL COLLATE `utf8mb4_unicode_520_ci`, completed_at INT DEFAULT NULL, created_at INT NOT NULL, updated_at INT NOT NULL, entity_type VARCHAR(10) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, entity_id INT NOT NULL, course_id INT NOT NULL, appointment_id INT DEFAULT NULL, INDEX idx_sessions_tenant (entity_type, entity_id, status), UNIQUE INDEX uniq_session_appointment (appointment_id), UNIQUE INDEX UNIQ_33D4F045D17F50A6 (uuid), INDEX IDX_33D4F045591CC992 (course_id), UNIQUE INDEX uniq_course_session (course_id, session_number), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('CREATE TABLE domain_events (id BIGINT AUTO_INCREMENT NOT NULL, uuid VARCHAR(36) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, name VARCHAR(60) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, payload JSON NOT NULL, occurred_at INT NOT NULL, published_at INT DEFAULT NULL, attempts SMALLINT DEFAULT 0 NOT NULL, last_error VARCHAR(255) CHARACTER SET utf8mb4 DEFAULT NULL COLLATE `utf8mb4_unicode_520_ci`, entity_type VARCHAR(10) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, entity_id INT NOT NULL, INDEX idx_de_name (name, occurred_at), INDEX idx_de_tenant (entity_type, entity_id, occurred_at), UNIQUE INDEX UNIQ_3CE45B83D17F50A6 (uuid), INDEX idx_de_pending (published_at, occurred_at), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('CREATE TABLE no_show_records (id INT AUTO_INCREMENT NOT NULL, uuid VARCHAR(36) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, recorded_at INT NOT NULL, entity_type VARCHAR(10) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, entity_id INT NOT NULL, patient_record_id INT NOT NULL, appointment_id INT NOT NULL, recorded_by INT DEFAULT NULL, INDEX idx_no_show_tenant (entity_type, entity_id, recorded_at), INDEX IDX_C37342082D4278B (recorded_by), UNIQUE INDEX UNIQ_C373420D17F50A6 (uuid), INDEX idx_no_show_patient (patient_record_id, recorded_at), UNIQUE INDEX uniq_no_show_appointment (appointment_id), INDEX IDX_C373420EB76A733 (patient_record_id), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('CREATE TABLE packages (id INT AUTO_INCREMENT NOT NULL, uuid VARCHAR(36) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, name VARCHAR(200) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, session_count SMALLINT NOT NULL, price_rials BIGINT NOT NULL, validity_days SMALLINT DEFAULT NULL, active TINYINT DEFAULT 1 NOT NULL, created_at INT NOT NULL, updated_at INT NOT NULL, entity_type VARCHAR(10) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, entity_id INT NOT NULL, UNIQUE INDEX UNIQ_9BB5C0A7D17F50A6 (uuid), INDEX idx_packages_tenant (entity_type, entity_id, active), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('CREATE TABLE package_services (id INT AUTO_INCREMENT NOT NULL, package_id INT NOT NULL, service_item_id INT NOT NULL, INDEX IDX_97B37507F44CABFF (package_id), INDEX IDX_97B37507DDEB00C2 (service_item_id), UNIQUE INDEX uniq_pkg_service (package_id, service_item_id), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('CREATE TABLE patient_packages (id INT AUTO_INCREMENT NOT NULL, uuid VARCHAR(36) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, session_count SMALLINT NOT NULL, price_paid_rials BIGINT NOT NULL, purchased_at INT NOT NULL, valid_to INT DEFAULT NULL, created_at INT NOT NULL, updated_at INT NOT NULL, entity_type VARCHAR(10) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, entity_id INT NOT NULL, package_id INT NOT NULL, patient_record_id INT NOT NULL, payment_id INT DEFAULT NULL, INDEX IDX_AC3098024C3A3BB (payment_id), UNIQUE INDEX UNIQ_AC309802D17F50A6 (uuid), INDEX idx_pp_patient (patient_record_id, valid_to), INDEX idx_pp_tenant (entity_type, entity_id, purchased_at), INDEX IDX_AC309802F44CABFF (package_id), INDEX IDX_AC309802EB76A733 (patient_record_id), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('CREATE TABLE policies (id INT AUTO_INCREMENT NOT NULL, uuid VARCHAR(36) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, category VARCHAR(20) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, name VARCHAR(200) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, condition_json JSON NOT NULL, effects JSON NOT NULL, priority SMALLINT DEFAULT 0 NOT NULL, valid_from INT DEFAULT NULL, valid_to INT DEFAULT NULL, version SMALLINT DEFAULT 1 NOT NULL, active TINYINT DEFAULT 0 NOT NULL, created_at INT NOT NULL, updated_at INT NOT NULL, entity_type VARCHAR(10) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, entity_id INT NOT NULL, address_id INT DEFAULT NULL, service_item_id INT DEFAULT NULL, catalog_category_id INT DEFAULT NULL, specificity SMALLINT DEFAULT 0 NOT NULL, INDEX IDX_E08BBFCE3F2BC4C (catalog_category_id), UNIQUE INDEX UNIQ_E08BBFCED17F50A6 (uuid), INDEX idx_policy_tenant_category (entity_type, entity_id, category, active), INDEX IDX_E08BBFCEF5B7AF75 (address_id), INDEX idx_policy_validity (valid_from, valid_to), INDEX IDX_E08BBFCEDDEB00C2 (service_item_id), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('CREATE TABLE policy_simulation_runs (id INT AUTO_INCREMENT NOT NULL, uuid VARCHAR(36) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, policy_version SMALLINT NOT NULL, sample_size SMALLINT NOT NULL, affected_count SMALLINT NOT NULL, severity VARCHAR(10) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, report JSON NOT NULL, created_at INT NOT NULL, entity_type VARCHAR(10) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, entity_id INT NOT NULL, policy_id INT NOT NULL, run_by INT DEFAULT NULL, INDEX IDX_F993F7C82D29E3C6 (policy_id), INDEX IDX_F993F7C84114BD6 (run_by), INDEX idx_psr_tenant (entity_type, entity_id, created_at), INDEX idx_psr_policy (policy_id, policy_version, created_at), UNIQUE INDEX UNIQ_F993F7C8D17F50A6 (uuid), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('CREATE TABLE policy_version_logs (id INT AUTO_INCREMENT NOT NULL, version SMALLINT NOT NULL, snapshot JSON NOT NULL, created_at INT NOT NULL, policy_id INT NOT NULL, INDEX IDX_B27F258B2D29E3C6 (policy_id), UNIQUE INDEX uniq_policy_version (policy_id, version), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('CREATE TABLE session_credit_ledger (id BIGINT AUTO_INCREMENT NOT NULL, uuid VARCHAR(36) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, kind VARCHAR(15) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, delta SMALLINT NOT NULL, reason VARCHAR(255) CHARACTER SET utf8mb4 DEFAULT NULL COLLATE `utf8mb4_unicode_520_ci`, created_at INT NOT NULL, entity_type VARCHAR(10) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, entity_id INT NOT NULL, patient_package_id INT NOT NULL, appointment_id INT DEFAULT NULL, service_item_id INT DEFAULT NULL, created_by INT DEFAULT NULL, INDEX idx_scl_package (patient_package_id, created_at), INDEX IDX_6B3C6BD6428C0D10 (patient_package_id), UNIQUE INDEX UNIQ_6B3C6BD6D17F50A6 (uuid), INDEX IDX_6B3C6BD6DDEB00C2 (service_item_id), UNIQUE INDEX uniq_scl_consume (appointment_id, kind), INDEX idx_scl_appt (appointment_id), INDEX idx_scl_tenant (entity_type, entity_id, created_at), INDEX IDX_6B3C6BD6DE12AB56 (created_by), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('CREATE TABLE treatment_courses (id INT AUTO_INCREMENT NOT NULL, uuid VARCHAR(36) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, session_count SMALLINT NOT NULL, min_days SMALLINT NOT NULL, ideal_days SMALLINT NOT NULL, max_days SMALLINT NOT NULL, status VARCHAR(12) CHARACTER SET utf8mb4 DEFAULT \'active\' NOT NULL COLLATE `utf8mb4_unicode_520_ci`, active_course_key VARCHAR(64) CHARACTER SET utf8mb4 DEFAULT NULL COLLATE `utf8mb4_unicode_520_ci`, abandon_reason VARCHAR(255) CHARACTER SET utf8mb4 DEFAULT NULL COLLATE `utf8mb4_unicode_520_ci`, started_at INT NOT NULL, completed_at INT DEFAULT NULL, created_at INT NOT NULL, updated_at INT NOT NULL, entity_type VARCHAR(10) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, entity_id INT NOT NULL, patient_record_id INT NOT NULL, service_item_id INT NOT NULL, protocol_id INT NOT NULL, patient_package_id INT DEFAULT NULL, preferred_resource_id INT DEFAULT NULL, INDEX IDX_D1639880CB4D0F54 (preferred_resource_id), INDEX IDX_D1639880DDEB00C2 (service_item_id), UNIQUE INDEX UNIQ_D1639880D17F50A6 (uuid), INDEX idx_courses_tenant (entity_type, entity_id, status, started_at), INDEX IDX_D1639880CCD59258 (protocol_id), UNIQUE INDEX UNIQ_D1639880DEBE4F6D (active_course_key), INDEX idx_courses_patient (patient_record_id, status), INDEX IDX_D1639880428C0D10 (patient_package_id), INDEX IDX_D1639880EB76A733 (patient_record_id), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('CREATE TABLE waitlist_entries (id INT AUTO_INCREMENT NOT NULL, uuid VARCHAR(36) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, branch_id INT DEFAULT NULL, desired_from INT NOT NULL, desired_to INT NOT NULL, preferred_day_parts JSON DEFAULT NULL, priority SMALLINT DEFAULT 0 NOT NULL, status VARCHAR(12) CHARACTER SET utf8mb4 DEFAULT \'waiting\' NOT NULL COLLATE `utf8mb4_unicode_520_ci`, notified_at INT DEFAULT NULL, notify_count SMALLINT DEFAULT 0 NOT NULL, created_at INT NOT NULL, updated_at INT NOT NULL, entity_type VARCHAR(10) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_520_ci`, entity_id INT NOT NULL, patient_record_id INT NOT NULL, service_item_id INT NOT NULL, converted_appointment_id INT DEFAULT NULL, INDEX IDX_E74550EEDDEB00C2 (service_item_id), INDEX idx_waitlist_tenant (entity_type, entity_id, status, created_at), INDEX IDX_E74550EE4B79C8F8 (converted_appointment_id), UNIQUE INDEX UNIQ_E74550EED17F50A6 (uuid), INDEX idx_waitlist_patient (patient_record_id, status), INDEX idx_waitlist_match (service_item_id, branch_id, status, desired_from, desired_to), INDEX IDX_E74550EEEB76A733 (patient_record_id), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB COMMENT = \'\' ');
$this->addSql('ALTER TABLE cancellation_policies ADD CONSTRAINT `FK_52BE2A1DDEB00C2` FOREIGN KEY (service_item_id) REFERENCES service_items (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE course_protocols ADD CONSTRAINT `FK_E60D42A0DDEB00C2` FOREIGN KEY (service_item_id) REFERENCES service_items (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE course_protocol_steps ADD CONSTRAINT `FK_58A0726CCD59258` FOREIGN KEY (protocol_id) REFERENCES course_protocols (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE course_sessions ADD CONSTRAINT `FK_33D4F045591CC992` FOREIGN KEY (course_id) REFERENCES treatment_courses (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE course_sessions ADD CONSTRAINT `FK_33D4F045E5B533F9` FOREIGN KEY (appointment_id) REFERENCES appointments (id) ON DELETE SET NULL');
$this->addSql('ALTER TABLE no_show_records ADD CONSTRAINT `FK_C37342082D4278B` FOREIGN KEY (recorded_by) REFERENCES users (id) ON DELETE SET NULL');
$this->addSql('ALTER TABLE no_show_records ADD CONSTRAINT `FK_C373420E5B533F9` FOREIGN KEY (appointment_id) REFERENCES appointments (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE no_show_records ADD CONSTRAINT `FK_C373420EB76A733` FOREIGN KEY (patient_record_id) REFERENCES patient_records (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE package_services ADD CONSTRAINT `FK_97B37507DDEB00C2` FOREIGN KEY (service_item_id) REFERENCES service_items (id)');
$this->addSql('ALTER TABLE package_services ADD CONSTRAINT `FK_97B37507F44CABFF` FOREIGN KEY (package_id) REFERENCES packages (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE patient_packages ADD CONSTRAINT `FK_AC3098024C3A3BB` FOREIGN KEY (payment_id) REFERENCES payments (id) ON DELETE SET NULL');
$this->addSql('ALTER TABLE patient_packages ADD CONSTRAINT `FK_AC309802EB76A733` FOREIGN KEY (patient_record_id) REFERENCES patient_records (id)');
$this->addSql('ALTER TABLE patient_packages ADD CONSTRAINT `FK_AC309802F44CABFF` FOREIGN KEY (package_id) REFERENCES packages (id)');
$this->addSql('ALTER TABLE policies ADD CONSTRAINT `FK_E08BBFCE3F2BC4C` FOREIGN KEY (catalog_category_id) REFERENCES service_catalog_categories (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE policies ADD CONSTRAINT `FK_E08BBFCEDDEB00C2` FOREIGN KEY (service_item_id) REFERENCES service_items (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE policies ADD CONSTRAINT `FK_E08BBFCEF5B7AF75` FOREIGN KEY (address_id) REFERENCES doctor_addresses (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE policy_simulation_runs ADD CONSTRAINT `FK_F993F7C82D29E3C6` FOREIGN KEY (policy_id) REFERENCES policies (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE policy_simulation_runs ADD CONSTRAINT `FK_F993F7C84114BD6` FOREIGN KEY (run_by) REFERENCES users (id) ON DELETE SET NULL');
$this->addSql('ALTER TABLE policy_version_logs ADD CONSTRAINT `FK_B27F258B2D29E3C6` FOREIGN KEY (policy_id) REFERENCES policies (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE session_credit_ledger ADD CONSTRAINT `FK_6B3C6BD6428C0D10` FOREIGN KEY (patient_package_id) REFERENCES patient_packages (id)');
$this->addSql('ALTER TABLE session_credit_ledger ADD CONSTRAINT `FK_6B3C6BD6DDEB00C2` FOREIGN KEY (service_item_id) REFERENCES service_items (id) ON DELETE SET NULL');
$this->addSql('ALTER TABLE session_credit_ledger ADD CONSTRAINT `FK_6B3C6BD6DE12AB56` FOREIGN KEY (created_by) REFERENCES users (id) ON DELETE SET NULL');
$this->addSql('ALTER TABLE session_credit_ledger ADD CONSTRAINT `FK_6B3C6BD6E5B533F9` FOREIGN KEY (appointment_id) REFERENCES appointments (id) ON DELETE SET NULL');
$this->addSql('ALTER TABLE treatment_courses ADD CONSTRAINT `FK_D1639880428C0D10` FOREIGN KEY (patient_package_id) REFERENCES patient_packages (id) ON DELETE SET NULL');
$this->addSql('ALTER TABLE treatment_courses ADD CONSTRAINT `FK_D1639880CB4D0F54` FOREIGN KEY (preferred_resource_id) REFERENCES clinic_resources (id) ON DELETE SET NULL');
$this->addSql('ALTER TABLE treatment_courses ADD CONSTRAINT `FK_D1639880CCD59258` FOREIGN KEY (protocol_id) REFERENCES course_protocols (id)');
$this->addSql('ALTER TABLE treatment_courses ADD CONSTRAINT `FK_D1639880DDEB00C2` FOREIGN KEY (service_item_id) REFERENCES service_items (id)');
$this->addSql('ALTER TABLE treatment_courses ADD CONSTRAINT `FK_D1639880EB76A733` FOREIGN KEY (patient_record_id) REFERENCES patient_records (id)');
$this->addSql('ALTER TABLE waitlist_entries ADD CONSTRAINT `FK_E74550EE4B79C8F8` FOREIGN KEY (converted_appointment_id) REFERENCES appointments (id) ON DELETE SET NULL');
$this->addSql('ALTER TABLE waitlist_entries ADD CONSTRAINT `FK_E74550EEDDEB00C2` FOREIGN KEY (service_item_id) REFERENCES service_items (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE waitlist_entries ADD CONSTRAINT `FK_E74550EEEB76A733` FOREIGN KEY (patient_record_id) REFERENCES patient_records (id) ON DELETE CASCADE');
$this->addSql('ALTER TABLE appointments ADD course_session_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE appointments ADD CONSTRAINT `FK_6A41727ABEDDA25C` FOREIGN KEY (course_session_id) REFERENCES course_sessions (id) ON DELETE SET NULL');
$this->addSql('CREATE INDEX IDX_6A41727ABEDDA25C ON appointments (course_session_id)');
}
}