feat: migrate clients module to patients + add docs
This commit is contained in:
170
docs/release/E3.S1-organization-seed.md
Normal file
170
docs/release/E3.S1-organization-seed.md
Normal file
@@ -0,0 +1,170 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user