# Edex

EDEX (EDucatieve EXport) is een Nederlandse open standaard, die gebruikt wordt voor het uitwisselen van gegevens tussen schooladministratieprogramma's en educatieve software. De EDEX-standaard beschrijft hoe de gegevens van leerlingen, leerkrachten en groepen volgens een vaste indeling opgeslagen kunnen worden.
EDEX is ontstaan begin jaren 90 en kent verschillende implementaties. In april 2000 is de eerste versie van de standaard vastgesteld die gebaseerd is op vier tekstbestanden. Deze versie wordt EDEX2000 genoemd. Pas sinds 2004 is de standaard volledig door het Nederlands Normalisatie-instituut vastgelegd als Nederlandse Technische Afspraak onder de naam NTA 2032:2004. Tijdens het vastleggen van de standaard is er met een schuin oog gekeken naar de internationale standaard voor het uitwisseling van gegevens van gebruikers en groepen in het onderwijs, het IMS Enterprise Information model. Tijdens het vastleggen van de standaard is er direct gekeken naar de tekortkomingen van de EDEX2000-standaard en is er nagedacht over een nieuwe versie van de standaard gebaseerd op een enkel XML-bestand. Deze standaard wordt EDEXml genoemd en is in dezelfde NTA vastgelegd.

## EDEX2000
### Bestanden

De EDEX2000 standaard bestaat uit vier bestanden waarin de gegevens worden opgeslagen. Het zijn ASCII-bestanden met de volgende vaste benamingen.
| Bestand | Omschrijving |
| EDEXLL.TXT | Gegevens van alle leerlingen |
| EDEXLK.TXT | Gegevens van alle leerkrachten |
| EDEXGR.TXT | Gegevens van alle groepen |
| EDEXLG.TXT | Koppeling van leerkracht(en) aan groep(en) |
Niet al deze bestanden hoeven aanwezig te zijn, met uitzondering van EDEXLL.TXT.
In de bestanden zijn alle velden aanwezig. Wanneer er geen informatie voor een veld beschikbaar is moet deze opgevuld worden met spaties. Is informatie voor een veld korter dan de maximumlengte, dan moet deze opgevuld worden met spaties. Dit kan voor of achter de informatie.

#### Opmaak EDEXLL.TXT

Een regel in EDEXLL.TXT bevat de volgende gegevens van een leerling.
| Veldnaam | Grootte | Positie | Verplichting | Toelichting |
| achternaam | 40 karakters | 01 t/m 40 | verplicht | alfanumeriek |
| tussenvoegsel | 10 karakters | 41 t/m 50 | aanbevolen | alfanumeriek |
| voornaam | 20 karakters | 51 t/m 70 | aanbevolen | alfanumeriek |
| geboortedatum | 8 karakters | 71 t/m 78 | aanbevolen | format: DDMMYYYY [1] |
| geslacht | 1 karakter | 79 | aanbevolen | format: J of M |
| etniciteit | 1 karakter | 80 | optioneel | numeriek: 0 = autochtoon 1 = allochtoon |
| leerlingkey | 5 karakters | 81 t/m 85 | aanbevolen | numeriek [2] |
| groepskey | 5 karakters | 86 t/m 90 | verplicht indien de leerling in een groep is geplaatst, niet aanwezig in alle andere gevallen | alfanumeriek [3] |
| schooljaar | 9 karakters | 91 t/m 99 | optioneel | format: YYYY-YYYY |
| sofinummer | 9 karakters | 100 t/m 108 | optioneel | numeriek |
| leerlinggewicht | 4 karakters | 109 t/m 112 | optioneel | alfanumeriek |
| postcodeNL woonadres | 6 karakters | 113 t/m 118 | optioneel | alfanumeriek |
| instroomdatum op school | 8 karakters | 119 t/m 126 | optioneel | format: DDMMYYYY [1] |
| uitstroomdatum op school | 8 karakters | 127 t/m 134 | niet aanwezig als leerling nog op school is, aanbevolen voor ex-leerlingen | format: DDMMYYYY [1] |
| land van herkomst | 2 karakters | 135 t/m 136 | optioneel | alfanumeriek [4] |
| brincode school | 4 karakters | 137 t/m 140 | optioneel | alfanumeriek |
| dependancecode school | 5 karakters | 141 t/m 145 | optioneel | numeriek |
[1] Er zijn ook pakketten die een formaat met een dash of een slash gebruiken, dus DD-MM-YY of DD/MM/YY. Er zijn ook pakketten die een (decimale) punt in de leerlingkey opnemen. [3] Een leerling komt in precies één groep voor. [4] Landcodes volgens ISO 3166-1 alpha-2.

#### Opmaak EDEXLK.TXT

Een regel in EDEXLK.TXT bevat de volgende gegevens van een leerkracht.
| Veldnaam | Grootte | Positie | Verplichting | Toelichting |
| achternaam | 40 karakters | 01 t/m 40 | verplicht | alfanumeriek |
| tussenvoegsel | 10 karakters | 41 t/m 50 | aanbevolen | alfanumeriek |
| voornaam | 20 karakters | 51 t/m 70 | aanbevolen | alfanumeriek |
| leerkrachtkey | 5 karakters | 71 t/m 75 | aanbevolen | alfanumeriek |
| brincode school | 4 karakters | 76 t/m 79 | optioneel | alfanumeriek |
| dependancecode school | 5 karakters | 80 t/m 84 | optioneel | numeriek |

#### Opmaak EDEXGR.TXT

Een regel in EDEXGR.TXT bevat de volgende gegevens van een groep.
| Veldnaam | Grootte | Positie | Verplichting | Toelichting |
| groepsnaam | 30 karakters | 01 t/m 30 | aanbevolen | alfanumeriek |
| jaargroep | 1 karakter | 31 | verplicht | alfanumeriek: [1] 0 voor Peutergroep 1 t/m 8 voor jaargroepen S voor speciaal onderwijs; H voor historische groepen |
| groepkey | 5 karakters | 32 t/m 36 | aanbevolen | alfanumeriek |
| schooljaar | 9 karakters | 37 t/m 45 | aanbevolen | format: YYYY-YYYY |
| brincode school | 4 karakters | 46 t/m 49 | optioneel | alfanumeriek |
| dependancecode school | 5 karakters | 50 t/m 54 | optioneel | numeriek |
[1] Een groep komt in precies één jaargroep voor.

#### Opmaak EDEXLG.TXT

Een regel in EDEXLG.TXT geeft aan welke leerkracht bij welke groep behoort. Hierbij kan het voorkomen dat een leerkracht bij verschillende groepen behoort, en dat bij een groep verschillende leerkrachten horen.
| Veldnaam | Grootte | Positie | Verplichting | Toelichting |
| leerkrachtkey | 5 karakters | 01 t/m 5 | verplicht | alfanumeriek; zie EDEXLK.TXT |
| groepkey | 5 karakters | 6 t/m 10 | verplicht | alfanumeriek; zie EDEXGR.TXT |
| schooljaar | 9 karakters | 11 t/m 19 | verplicht als in de tabellen waarnaar verwezen schooljaar ook gevuld is | format: YYYY-YYYY |
| brincode school | 4 karakters | 20 t/m 23 | optioneel | alfanumeriek |
| dependancecode school | 5 karakters | 24 t/m 28 | optioneel | numeriek |

### Kritiek

De EDEX2000 standaard heeft een aantal nadelen. Vooral de gefixeerde ASCII-binding van EDEX veroorzaakt problemen in de praktijk:
* Velden staan niet op de juiste plek, zoals een regel waarin alle velden opgeschoven zijn.
* Velden bevatten ongeldige waarden, zoals een ongeldige geboortedatum of een ongeldige geslachtscode.
* Onjuiste verwijzingen, bijvoorbeeld verwijzing naar een niet bestaande of dubbele groep.
* Onjuiste tekenset waardoor leestekens in een naam niet goed overkomen.
* Onduidelijkheid wanneer een export is gemaakt, voor welk schooljaar, door wie, etc., waardoor gegevens overschreven kunnen worden met verouderde gegevens of gegevens in een verkeerd schooljaar worden geïmporteerd.
* Wanneer een groepsbestand ontbreekt is het belangrijke gegeven Jaargroep (bijvoorbeeld groep 7) niet aanwezig bij een leerling.
* Het veld voornaam wordt soms gebruikt voor roepnaam en soms voor voorna(a)m(en).
Vanwege deze kritiek is op voorspraak van het ministerie van OCW in april 2004 een werkgroep opgericht met als opdracht om EDEX te beschrijven in XML-formaat. Het resultaat van deze werkgroep is EDEXml.

## EDEXml

EDEXml is de standaard ontwikkeld door het OSOSS in samenwerking met de Citogroep en vastgelegd door het Nederlands Normalisatie-instituut. EDEXml is meest recent vastgelegd in de NTA 2032:2005. EDEXml is in plaats van uit vier verschillende bestanden opgebouwd uit een enkel XML-bestand. Het voordeel van een XML-bestand is dat de structuur makkelijk uit te breiden is en er geen restricties zijn aan de lengtes van de verschillende velden. Verder is de structuur en de inhoud van een XML-bestand makkelijk te controleren aan de hand van een XML-schema. Ook is het mogelijk om partijspecifieke toevoegingen te maken zonder deze al expliciet vast te leggen.
De structuur van de EDEXml-standaard staat vastgelegd in vier verschillende XML schema deelbestanden. Er is voor vier verschillende en onafhankelijke schema's gekozen vanwege de overzichtelijkheid en om het onderhoud te vergemakkelijken. In het eerste schema staan een aantal vaste types beschreven. Deze vaste types bevatten de gegevens die hoogstwaarschijnlijk nooit zullen veranderen, zoals achternaam, sofinummer of brincode. In het tweede schema staan een aantal meer variabele types vastgelegd welke mogelijk wel veranderen, zoals jaargroep of schooljaar. Het derde XML-schema beschrijft de elementen gebruikt in een EDEXml-bestand. In deze elementen worden de verschillende types uit de eerste twee schema's samengevoegd om bijvoorbeeld een groep of een leerkracht te beschrijven. Het laatste schema beschrijft hoe de verschillende elementen samen de gehele structuur van een EDEXml-bestand vormen.