# E3.S1 - Organization Seed **Epic:** E3 - Patients & Organizations **Story:** E3.S1 - Organization seed **Story Points:** 2 **Status:** 🔄 In Progress (scripts ready, database migration pending) ## Doel Default organization voor development aanmaken. ## Acceptatiecriteria - [x] Default organization in seed data - [x] Organization heeft realistische GGZ data - [x] Organization is bruikbaar voor development - [ ] Migratie toegepast op database (wacht op Supabase maintenance) ## Implementatie ### 1. Migratie bestand aangemaakt 📁 **Locatie:** `supabase/migrations/20251122_seed_default_organization.sql` De migratie maakt een default GGZ organization aan met: - **ID:** `00000000-0000-0000-0000-000000000001` - **AGB-code:** `AGB-DEMO-001` - **KVK-nummer:** `12345678` - **Naam:** Demo GGZ Instelling - **Alias:** Demo GGZ, DGGZ - **Contact:** 030-1234567, info@demo-ggz.nl - **Adres:** Demonstratiestraat 1, 3511 AB Utrecht ### 2. Scripts aangemaakt #### TypeScript script (aanbevolen) 📁 **Locatie:** `scripts/seed-organization.ts` **Gebruik:** ```bash npx tsx scripts/seed-organization.ts ``` Dit script: - ✅ Gebruikt Supabase service role key (bypass RLS) - ✅ Idempotent: kan veilig opnieuw uitgevoerd worden - ✅ Verificatie na insert/update - ✅ Duidelijke output en error handling #### Bash script (alternatief) 📁 **Locatie:** `scripts/apply-organization-seed.sh` **Gebruik:** ```bash chmod +x scripts/apply-organization-seed.sh ./scripts/apply-organization-seed.sh ``` ### 3. Handmatige toepassing Als de scripts niet werken, kan de migratie handmatig toegepast worden via: **Supabase Dashboard:** 1. Ga naar: https://supabase.com/dashboard/project/dqugbrpwtisgyxscpefg/sql 2. Kopieer de SQL uit `supabase/migrations/20251122_seed_default_organization.sql` 3. Plak in SQL Editor 4. Klik "Run" **Supabase CLI:** ```bash npx supabase db push ``` **psql (met database password):** ```bash psql 'postgresql://postgres:[PASSWORD]@db.dqugbrpwtisgyxscpefg.supabase.co:5432/postgres' \ -f supabase/migrations/20251122_seed_default_organization.sql ``` ## Verificatie Na het toepassen van de migratie, controleer: ```sql SELECT * FROM organizations WHERE identifier_agb = 'AGB-DEMO-001'; ``` **Verwacht resultaat:** ``` id | 00000000-0000-0000-0000-000000000001 identifier_agb | AGB-DEMO-001 identifier_kvk | 12345678 name | Demo GGZ Instelling alias | {Demo GGZ,DGGZ} type_code | prov type_display | Healthcare Provider telecom_phone | 030-1234567 telecom_email | info@demo-ggz.nl telecom_website | https://demo-ggz.nl address_line | {Demonstratiestraat 1} address_city | Utrecht address_postal_code | 3511 AB address_country | NL active | t ``` ## Afhankelijkheden Deze organization wordt gebruikt door: - ✅ **Practitioners** - organizational affiliation - ✅ **Encounters** - organization_id foreign key (zie seed data in `20241121_seed_demo_data.sql`) - ✅ **Care Plans** - care team organization De bestaande seed data (`20241121_seed_demo_data.sql`) verwijst al naar deze organization via `identifier_agb = 'AGB-DEMO-001'`, maar de organization werd nog niet aangemaakt. Deze story lost dat op. ## Technische details ### Database schema De `organizations` tabel bestaat al in de database (zie `docs/archive/migrations/20251122-current-db-scheme.sql` - archived snapshot): ```sql CREATE TABLE public.organizations ( id uuid NOT NULL DEFAULT gen_random_uuid(), identifier_agb text UNIQUE, identifier_kvk text, name text NOT NULL, alias text[], type_code text DEFAULT 'prov'::text, type_display text DEFAULT 'Healthcare Provider'::text, telecom_phone text, telecom_email text, telecom_website text, address_line text[], address_city text, address_postal_code text, address_country text DEFAULT 'NL'::text, active boolean DEFAULT true, created_at timestamp with time zone DEFAULT now(), updated_at timestamp with time zone DEFAULT now(), CONSTRAINT organizations_pkey PRIMARY KEY (id) ); ``` ### Idempotentie De migratie gebruikt `ON CONFLICT (id) DO UPDATE` om te zorgen dat: 1. Bij eerste run: organization wordt aangemaakt 2. Bij herhaalde runs: organization wordt geupdatet met nieuwe waardes 3. Geen dubbele entries ontstaan ## Volgende stappen Na het voltooien van E3.S1: - [ ] **E3.S2** - Patients lijst pagina (`/clients` met tabel, search, filters) - [ ] **E3.S3** - Patient CRUD (Create/Update/Delete patient + validatie) ## Referenties - **Bouwplan:** `docs/bouwplan-mini-epd.md` (regel 352-356) - **Database schema:** `docs/archive/migrations/20251122-current-db-scheme.sql` (archived snapshot, regel 175-194) - **Bestaande seed data:** `supabase/migrations/20241121_seed_demo_data.sql` (regel 13-19, 173-188) --- **Datum aangemaakt:** 2025-11-22 **Laatste update:** 2025-11-22 **Status:** Scripts klaar, database migratie moet handmatig worden toegepast **Blocker:** Supabase environment variables niet geconfigureerd (NEXT_PUBLIC_SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY) **Actie vereist:** Voer migratie handmatig uit via Supabase Dashboard SQL Editor