Dokumentoplysninger
Ændringshistorik
Indhold
Indledning
Dette dokument indeholder den overordnede beskrivelse af den webservice, der giver adgang til at hente oplysninger om lærepladsforhold fra Lærepladsen.dk. Herefter blot omtalt som 'webservicen'. Version 2.x af webservicen er den gældende version af webservicen pr februar 2023.
Fra 1. januar 2022 trådte den nye terminologi på erhvervsuddannelsesområdet i kraft. Den nye terminologi er dog ikke anvendt konsekvent i dette dokument. Dette dokument handler bl.a. om en ny datamodel som bliver udstillet i webservicen. Den nye datamodel blev implementeret før 1. jan. 2022, og entiteter i den nye datamodel fik navne som passede med den terminologi der blev brugt før 1. jan. 2022. Det blev besluttet at den nye datamodel ikke vil blive opdateret til at afspejle den nye terminologi i første omgang.
Adgang til webservice og data
Webservicen er en system-til-system integration, som kaldes gennem STIL's integrationsplatform, IPL. Adgang til webservicen kræver, at der er indgået en aftale mellem aftagerinstitutionen og STIL. Aftaler kan indgås med institutioner for erhvervsuddannelse, Arbejdsgivernes Uddannelsesbidrag (AUB) og andre institutioner eller interessenter med behov for og hjemmel til at modtage og opbevare data om erhvervsskoleelevers lærepladsforhold.
Det er aftagerens ansvar at afgrænse afhentningen af lærepladsforhold til de elever, som aftageren har et sagligt behov for at hente. F.eks. når der afhentes lærepladsforhold til en erhvervsskole, er det skolens og dens systemleverandørs ansvar at afgrænse afhentning af lærepladsforhold til de elever som skolen har et sagligt behov for at hente. Når et sekretariat for et fagligt udvalg afhenter lærepladsforhold, vil webservicen returnere kun de lærepladsforhold som vedrører uddannelser som er relevant for sekretariatet.
Lærepladsforhold i webservicen
Begrebet lærepladsforhold omfatter i denne sammenhæng alle uddannelsesaftaler i henhold til lov om erhvervsuddannelser, aftaler om oplæring i udlandet (OPU), skoleoplæringsrelaterede registreringer og aftaler, samt registreringer og aftaler relateret til erhvervsuddannelse baseret på forberedende grunduddannelse (forkortes FGU-baseret erhvervsuddannelse, eller FGU-eud).
Data om lærepladsforhold, som er slettet fysisk, er ikke omfattet af udtrækket. Regler for, hvornår STIL sletter data vedr. lærepladsforhold ift. persondataforordningen, er under afklaring.
Hvis STIL på sigt sletter data vedr. lærepladsforhold pga. persondataforordningen, vil det betyde, at dataaftagere selv vil være ansvarlige for at opbevare ældre data i den udstrækning, de har lovhjemmel til det.
Den overordnede datamodel
I dette afsnit præsenteres den overordnede datamodel for en elevs uddannelsesforløb i Lærepladsen.dk ganske kort.
Udgangspunktet for webservicen og for den overordnede datamodel er at få de forskellige entiteter og deres egenskaber integreret i en datamodel, der afspejler de logiske relationer mellem entiteter og egenskaber. Udgangspunktet er, at modellen skal kunne repræsentere og håndtere informationer af relevans for administration af lærepladsområdet.
En elev er identificeret via et CPR-nummer. Eleven kan have flere helt separate uddannelsesforløb, hvis vedkommende har været indskrevet på og evt. fuldført flere forskellige uddannelser. En elev kan i denne model også have flere ikke-afsluttede uddannelsesforløb, hvis vedkommende skifter uddannelsesspor til et nyt CØSA-formål, men ikke afmeldes fra erhvervsuddannelsesinstitutionen.
Et uddannelsesforløb kan indeholde skoleundervisning med tilhørende skoleforløb, som vi dog ikke udstiller i webservicen.
En elevs lærepladsforhold kan være helt simpelt, hvis det er en ordinær uddannelsesaftale, der omfatter hele elevens hovedforløb – og der i øvrigt ikke sker ændringer ift. uddannelse, speciale, varighed, skift af arbejdssted eller lignende. Men det kan også være – og er for mange elevers vedkommende – noget mere komplekst. I eksemplet herunder starter eleven i skoleoplæring. Som led i skoleoplæringen er der to korte forløb med virksomhedsforlagt oplæring (VFO), hvorefter skoleoplæringen afbrydes, fordi eleven får en restuddannelsesaftale. Denne restaftale afbrydes, hvorefter eleven starter et nyt skoleoplæringsforløb, hvor der er et enkelt forløb med virksomhedsforlagt oplæring. Også denne skoleoplæring afbrydes, fordi eleven får en ny restuddannelsesaftale, som dækker den resterende periode indtil eleven er udlært.
Specifikation af webservicen
Overordnet struktur
Webservicen er bygget op omkring to forespørgsler: HentAendringerRequest
og HentForloebRequest
. De to forespørgsler vil normalt skulle bruges sammen, idet HentAendringerRequest
forespørger på ændringer siden et givet tidspunkt. I svaret, HentAendringerResponse
returneres CPR-numrene for de elever, hvis lærepladsforhold eller uddannelsesforløb er ændret siden det i forespørgslen angivne tidspunkt. Dette svar bruges derefter som parameter til at hente de konkret uddannelsesforløb med tilhørende lærepladsforhold med metoden HentForloebRequest
.
HentAendringer
HentAendringerRequest
HentAendringerRequest
har som sin centrale parameter et tidspunkt (fraTidspunkt
). Desuden skal der angives et udbyder id og et CVR-nummer i kaldet. Parametrene SystemName
og SystemTransaktionID
bruges til at logge en transaktion samt til at finde transaktionen i loggen, hvis noget går galt.
Forespørgslen har følgende egenskaber:
Felt | Type | Krævet | Beskrivelse |
---|---|---|---|
| RestrictedString | J | Et navn som identificerer det system hvor forespørgslen kommer fra. |
| RestrictedString | J | Et id til transaktionen. |
| string(6) | J | Udbyder id’et for den organisation der kalder webservicen. En organisation får et udbyder id, når der oprettes en tilslutningsaftale med STIL, se f.eks. https://tilslutning.stil.dk/. |
| string(8) | J | Et CVR nummer. For mere om cvr se nedenfor. |
| Timestamp | J | Tidspunktet angiver hvornår man vil have de seneste ændringer fra. |
Om cvr
: for organisationer som henter data på vegne af et fagligt udvalg, skal cvr
være CVR-nummeret for det sekretariat, som det faglige udvalg hører til. Desuden skal organisationen være godkendt til at hente data for sekretariatet. Alle andre organisationer kan bruge deres eget CVR-nummer.
HentAendringerResponse
HentAendringerResponse
returnerer en liste med de CPR-numre, for hvilke der er sket ændringer i perioden fra det angivne tidspunkt og frem til forespørgselstidspunktet. Der er sket en ændring for en elev enten hvis der er blevet skabt nye feltændringer for eleven eller hvis fremtidige feltændringer for eleven er trådt i kraft og en af elevens snapshots er blevet opdateret. Dog for AUB vil HentAendringerResponse
returner et CPR-nummer kun hvis der er blevet skabt nye feltændringer siden det angivne tidspunkt.
Ud over listen med CPR-numre returnerer svaret også et tidspunkt (aendringerFremTil
) som angiver, til hvilket tidspunkt der er fundet ændringer. Dette tidspunkt bør bruges, næste gang man kalder HentAendringerRequest
. På denne måde kan man sikre, at der ikke er huller i de data, man får returneret.
Responsen har følgende egenskaber:
Felt | Type | Krævet | Beskrivelse |
---|---|---|---|
| RestrictedString | J | Værdien fra forespørgslen sendes retur |
| RestrictedString | J | Værdien fra forespørgslen sendes retur |
| UUID | J | Et unikt id fra Integrationsplatformen, som kan bruges f.eks. ifm. support |
| Timestamp | J | Sluttidspunktet for hvornår der er kigget efter ændringer. |
| array | J | Liste af CPR-numre for de elever hvor der har været ændringer i deres lærepladsforhold siden det angivne tidspunkt fra forespørgslen. |
HentForloeb
Den anden forespørgsel, HentForloebRequest
, sender som parameter en liste med CPR-numre. I svaret, HentForloebResponse
, returneres hele uddannelsesforløb med tilhørende lærepladsforhold for de elever, hvis CPR-numre er angivet i forespørgslens CPR-liste.
HentForloebRequest
CPR-numrene fra listen bruges i forbindelse med HentForloebRequest
, hvor man angiver de CPR-numre, man ønsker at hente data om lærepladsforhold for. HentForloebRequest
tillader, at man henter uddannelsesforløb for max. 500 CPR-numre ad gangen. Parametrene SystemName
og SystemTransaktionID
bruges som før til at logge en transaktion, samt til at finde transaktionen i loggen, hvis noget går galt.
Forespørgslen har følgende egenskaber:
Felt | Type | Krævet | Beskrivelse |
---|---|---|---|
| RestrictedString | J | Et navn som identificerer det system hvor forespørgslen kommer fra. |
| RestrictedString | J | Et id til transaktionen. |
| string(6) | J | Udbyder id’et for den organisation der kalder webservicen. |
| string(8) | J | Et CVR nummer. For mere om cvr se afsnittet om HentAendringerRequest. |
| array | J | Liste af CPR-numre for de elever man ønsker at hente lærepladsforhold for. Listen skal indeholde mellem 1 og 500 CPR-numre. Listen indeholder data af type string(10), som er på præcis 10 tegn. Der er ingen validering på et CPR-nummer ud over at den skal indeholde 10 tegn. |
HentForloebResponse
HentForloebResponse
returnerer uddannelsesforløb for elever med de angivne CPR-numre. Der returneres uddannelsesforløb for op til 500 elever, hvis man spørger med det maksimale antal tilladte CPR-numre.
Responsen har følgende egenskaber:
Felt | Type | Krævet | Beskrivelse |
---|---|---|---|
| RestrictedString | J | Værdien fra forespørgslen sendes retur |
| RestrictedString | J | Værdien fra forespørgslen sendes retur |
| UUID | J | Et unikt id fra Integrationsplatformen, som kan bruges f.eks. ifm. support |
| array | J | Listen af elever med deres uddannelsesforløb for de CPR-numre som var angivet i forespørgslen. Hvis der ikke findes en elev for et givet CPR-nummer, bliver der ikke returneret noget for det CPR-nummer. |
Det helt centrale element i svaret er uddannelsesforløbet for den enkelte elev, som vil blive gennemgået i næste afsnit.
Datamodel og struktur for elev og uddannelsesforløb
Overordnet struktur for uddannelsesforløb i webservicen
Dette afsnit viser den overordnede struktur for entiteter i webservicen. Et uddannelsesforløb er repræsenteret som en Uddannelsesforloeb
-entitet, og er beskrevet i afsnit Datamodel for Uddannelsesforloeb-entitet. I webservicen er der ikke entiteter for Oplaering
eller et overordnet Laerepladsforhold
. Der er entiteter som repræsenterer de forskellige typer af lærepladsforhold: Uddannelsesaftale, Kombinationsaftale, Skolepraktik, PraktikIudlandet, og FguEudForloeb, VirksomhedsforlagtPraktik og VirksomhedsforlagtPraktikIUdlandet
. Disse entiteter er knyttet direkte til en Uddannelsesforloeb
-entitet i webservicen.
Når webservicen returnerer en entitet, f.eks. en Uddannelsesaftale
, bliver der returneret både et snapshot af entiteten, en række såkaldte feltændringer for entiteten, samt evt. nogle fremtidige feltændringer for entiteten. Snapshottet viser entitetens tilstand i Lærepladsen.dk på det tidspunkt, hvor entiteten blev returneret af webservicen. Entitetens feltændringer viser hvordan entitetens felter har ændret sig siden entiteten blev oprettet. De fremtidige feltændringer viser planlagte ændringer til entitetens felter, hvor ændringerne først træder i kraft i fremtiden. Feltændringer er beskrevet i afsnit Datamodel for feltAendring.
Datamodel for Elev-entitet
Egenskaber og udfaldsrum for Elev
En Elev
har følgende egenskaber:
Felt | Type | Nullable | Beskrivelse |
---|---|---|---|
| string(10) | N | Elevens CPR-nummer. Det vil være en streng på præcis 10 tegn. Det kan være et fiktivt CPR-nummer. Det vil være et af de CPR-numre som var angivet i forespørgslen. |
| array | N | Elevens uddannelsesforløb. Listen kan være tom. |
| array | N | Feltændringer knyttet til eleven. |
| array | N | Fremtidige feltændringer knyttet til eleven. Listen kan være tom |
| date-time | J | Det tidspunkt, hvor eleven er blevet markeret som slettet i Lærepladsen.dk |
- Rækkefølgen af felterne i denne og lignende tabeller afspejler ikke den rækkefølge, som felterne bliver angivet med i XSD-skemaet. Felterne i tabellerne er grupperet så der er en mere logisk sammenhæng i denne grænsefladebeskrivelse. XSD-skemaet angiver den rækkefølge som felterne bliver returneret i fra webservicen.
- Når der returneres et snapshot af en entitet, bliver alle felter returneret, dvs. alle felter er obligatoriske. Men nogle felter tillader null som værdi. Denne kolonne viser hvorvidt et felt må være null. Dvs. hvis der står et 'N' i denne kolonne, vil der altid være en ikke-null værdi for feltet. Det gælder for de andre entiteter hvor der er en "Nullable" kolonne i tabellen.
Feltændringer for oprettelse af en Elev
Når en elev bliver oprettet, vil der være feltændringer for følgende felter:
cpr
Der vil ikke være feltændringer for de felter som er null ved oprettelsen.
Datamodel for Uddannelsesforloeb-entitet
Egenskaber og udfaldsrum for Uddannelsesforloeb
Datamodellen for et Uddannelsesforloeb
indeholder de egenskaber, der gælder på tværs af alle lærepladsforhold, samt alle elevens lærepladsforhold.
Felt | Type | Nullable | Beskrivelse |
---|---|---|---|
| UUID | N | Uddannelsesforløbets unikke id |
| string(4) | N | Ofte en reference til Uddannelsesmodellen. |
| integer | N | Ofte en reference til Uddannelsesmodellen. |
| string(2) | J | Ofte en reference til Uddannelsesmodellen. |
| string(10) | J | Reference til Uddannelsesmodellen. |
| string(2) | J | Ofte en reference til Uddannelsesmodellen. |
| string(50) | J | Uddannelsesvej, der gælder for uddannelsesforløbet |
| date | N | Uddannelsesforløbets startdato. |
| date | J | Dato, hvor eleven forventes at være udlært, dvs. den dato hvor uddannelsesforløbet forventes at slutte og der er hverken skoleundervisning eller praktikophold tilbage i uddannelsesforløbet. |
| string(50) | J | Afslutningsgrund for uddannelsesforløbet. |
| array | N | Pauser fra uddannelsesforløbet. Listen kan være tom. |
| array | N | Uddannelsesaftaler knyttet til uddannelsesforløbet. Listen kan være tom. |
| array | N | Kombinationsaftaler knyttet til uddannelsesforløbet. Listen kan være tom. |
| array | N | Aftaler om skoleoplæring knyttet til uddannelsesforløbet. Listen kan være tom. |
| array | N | Aftaler om oplæring udlandet knyttet til uddannelsesforløbet. Listen kan være tom. |
| array | N | Elevens virksomhedsforlagt oplæringer. Listen kan være tom. |
| array | N | Elevens virksomhedsforlagt oplæringer i udlandet. Listen kan være tom. |
| array | N | Aftaler om FGU-baseret erhvervsuddannelse tilknyttet til uddannelsesforløbet. Listen kan være tom. |
| array | N | Feltændringer knyttet til uddannelsesforløbet. |
| array | N | Fremtidige feltændringer knyttet til uddannelsesforløbet. Listen kan være tom. |
| date-time | J | Det tidspunkt, hvor uddannelsesforløbet er blevet markeret som slettet. |
Om startdato
: for data migreret fra EASY-P bruges startdato for det første lærepladsforhold som startdato for uddannelsesforløbet. I fremtiden kan startdato komme f.eks. fra indberetninger fra skolerne eller via brugerregistreringer. Startdato på uddannelsesforløbet burde være den dato, eleven starter på uddannelsen enten på en uddannelsesinstitution eller i oplæring.
Felterne uddannelsesvej
og afslutningsgrund
har begge et fast udfaldsrum:
Felt | Udfaldsrum |
---|---|
|
|
|
|
Feltændringer for oprettelse af et Uddannelsesforloeb
Når et Uddannelsesforloeb
bliver oprettet, vil der være feltændringer for følgende felter:
id
coesaFormaal
uddannelseVersion
startdato
Der kan være feltændringer for flere felter ifm. oprettelse af et Uddannelsesforloeb
. Der vil ikke være feltændringer for de felter som er null ved oprettelsen.
Datamodel for Pause-entitet
Undervejs i et uddannelsesforløb kan der komme én eller flere pauser, eksempelvis i form af barselsorlov, sygdom e.l.
En Pause
har følgende egenskaber:
Felt | Type | Nullable | Beskrivelse |
---|---|---|---|
| UUID | N | Pausens unikke id |
| date | N | Startdato for pausen |
| date | J | Slutdato for pausen |
| array | N | Feltændringer knyttet til pausen |
| array | N | Fremtidige feltændringer knyttet til pausen |
| UUID | N | Id på det Uddannelsesforloeb, som pausen er tilknyttet |
| date-time | J | Det tidspunkt, hvor pausen er blevet markeret som slettet. |
Feltændringer for oprettelse af en Pause
Når en Pause
bliver oprettet, vil der være feltændringer for følgende felter:
id
startdato
uddannelsesforloebId
Der kan være feltændringer for flere felter ifm. oprettelse af en Pause
. Der vil ikke være feltændringer for de felter som er null ved oprettelsen.
Datamodel for Uddannelsesaftale-entitet
Egenskaber og udfaldsrum for Uddannelsesaftale
En Uddannelsesaftale
har følgende egenskaber:
Felt | Type | Nullable | Beskrivelse |
---|---|---|---|
| UUID | N | Uddannelsesaftalens unikke id |
| string(100) | N | Uddannelsesaftalens type. Udfaldsrummet findes nedenfor. |
| string(8) | N | Arbejdsstedets CVR-nummer. Reference til CVR-registret. |
| string(10) | J | Arbejdsstedets P-nummer. Reference til CVR-registret. |
| string(8) | N | Det SE-nummer, som bruges af AUB til refusion mm for denne uddannelsesaftale. |
| date | N | Uddannelsesaftaleperiodens startdato |
| date | N | Uddannelsesaftaleperiodens slutdato |
| date | J | Dato for aftalens indgåelse, som er den seneste af de underskriftsdatoer på uddannelsesaftalen. |
| string(6) | N | Institutionsnummer for den erhvervsskole, der registrerer uddannelsesaftalen. |
| string(6) | J | Institutionsnummer for en afdeling af den erhvervsskole, der registrerer uddannelsesaftalen. |
| date | N | Dato for hvornår uddannelsesaftalen er modtaget på erhvervsskolen. |
| date | J | Angiver hvornår uddannelsesaftalen er blevet markeret som færdigregistreret af skolen. En skole kan fjerne en færdigregistreringsmarkering. |
| string(50) | J | Aftalens afslutningsgrund. Udfaldsrummet findes nedenfor. |
| array | N | Supplerende informationer, der kan være tilknyttet en uddannelsesaftale. Listen kan være tom. Arrayet indeholder data af type string(100) |
| array | N | Feltændringer knyttet til uddannelsesaftalen. |
| array | N | Fremtidige feltændringer knyttet til aftalen. Listen kan være tom. |
| UUID | J | Id på det uddannelsesforløb som uddannelsesaftalen er tilknyttet. Vil være null kun hvis typen af aftalen er |
| UUID | J | Id på den kombinationsaftale som uddannelsesaftalen er tilknyttet. Hvis typen af aftalen er |
| date-time | J | Det tidspunkt, hvor uddannelsesaftalen er blevet markeret som slettet. |
Felterne type
, afslutningsgrund
og supplerendeInformationer
har følgende udfaldsrum:
Felt | Udfaldsrum |
---|---|
|
|
|
|
|
|
Feltændringer for oprettelse af en Uddannelsesaftale
Når en Uddannelsesaftale bliver oprettet vil der være feltændringer for følgende felter:
id
cvr
senr
registrerendeSkoleInstnr
startdato
slutdato
type
supplerendeInformationer
kombinationsaftaleId
– kun hvis type erDELAFTALE_I_KOMBINATIONSAFTALE
uddannelsesforloebId
– kun hvis type ikke erDELAFTALE_I_KOMBINATIONSAFTALE
Når en Uddannelsesaftale
bliver oprettet vil der altid være en feltændring for enten uddannelsesforloebId
eller kombinationsaftaleId
, og aldrig for begge disse felter.
Der kan være feltændringer for flere felter ifm. oprettelse af en Uddannelsesaftale
. Der vil ikke være feltændringer for de felter som er null ved oprettelsen.
Datamodel for Kombinationsaftale-entitet
En kombinationsaftale er en kobling af separate delaftaler i ét sammenhængende oplæringsforløb. Begrebet fungerer som en container, der indeholder alle de delaftaler, der indgår i kombinationsaftalen.
Egenskaber for Kombinationsaftale
En Kombinationsaftale
har følgende egenskaber:
Felt | Type | Nullable | Beskrivelse |
---|---|---|---|
| UUID | N | Kombinationsaftalens unikke id |
| date | N | Startdatoen for kombinationsaftalen. Det er startdatoen for den første delaftale i kombinationsaftalen. |
| date | N | Slutdatoen for kombinationsaftalen. Det er slutdatoen for den sidste delaftale i kombinationsaftalen. |
| array | N | De uddannelsesaftaler der indgår i kombinationsaftalen. Disse uddannelsesaftaler kan kun have typen |
| array | N | Feltændringer knyttet til kombinationsaftalen |
| array | N | Fremtidige feltændringer knyttet til kombinationsaftalen. Listen kan være tom. |
| UUID | N | Id på det uddannelsesforløb som kombinationsaftalen er tilknyttet. |
| date-time | J | Formatet er ISO-8601 med offset på formen: yyyy-MM-dd''T''HH:mm:ss''TZD''. |
Feltændringer for oprettelse af Kombinationsaftale
Når en Kombinationsaftale
bliver oprettet vil der være feltændringer for følgende felter:
id
startdato
slutdato
uddannelsesforloebId
Der kan være feltændringer for flere felter ifm. oprettelse af en Kombinationsaftale
. Der vil ikke være feltændringer for de felter som er null ved oprettelsen.
Datamodel for PraktikIUdlandet-entitet
Aftaler om oplæring i udlandet (OPU-aftaler) er specielle, idet de ikke betragtes som uddannelsesaftaler i bekendtgørelsessammenhæng. En OPU-aftale har af den grund andre egenskaber end de almindelige uddannelsesaftaler på erhvervsskoleområdet. Oplysninger om en OPU-aftale er repræsenteret som en PraktikIUdlandet
entitet.
Egenskaber og udfaldsrum for PraktikIUdlandet
En PraktikIUdlandet
har følgende egenskaber:
Felt | Type | Nullable | Beskrivelse |
---|---|---|---|
| UUID | N | OPU-aftalens unikke id |
| string(512) | J | Virksomhedens navn |
| string(1000) | J | Adressen for den udenlandske virksomhed |
| string(2) | N | Det land, hvor oplæringen i udlandet finder sted. Formatet er 'ISO 3166-1 alpha-2' |
| date | N | Startdato for OPU-aftalen |
| date | N | Slutdato for OPU-aftalen |
| date | J | Dato for OPU-aftalens indgåelse, som er den seneste af de underskriftsdatoer på OPU-aftalen. |
| string(6) | N | Institutionsnummer for den erhvervsskole, der registrerer OPU-aftalen og som eleven er tilknyttet ifm. OPU-aftalen |
| string(6) | J | Institutionsnummer for den skoleafdeling som eleven er knyttet til |
| date | J | Den dato hvor skolen eller det faglige udvalg har givet/underskrevet en forhåndsgodkendelse af meritten for oplæringen i udlandet. |
| date | J | Den dato, hvor skolen eller det faglige udvalg, endelige godkender meritten for oplæringen i udlandet. Det sker efter opholdet i udlandet er afsluttet. |
| date | J | Dato for hvornår OPU-aftalen er modtaget på erhvervsskolen |
| date | J | Angiver hvornår OPU-aftalen er blevet markeret som færdigregistreret af skolen |
| array | N | Supplerende information, der er tilknyttet en aftale om praktik i udlandet. Listen kan være tom. |
| string(50) | J | Afslutningsgrunden for OPU-aftalen |
| array | N | Feltændringer knyttet til OPU-aftalen |
| array | N | Fremtidige feltændringer knyttet til OPU-aftalen. Listen kan være tom. |
| UUID | N | Id på det uddannelsesforløb som OPU-aftalen er tilknyttet. |
| date-time | J | Det tidspunkt, hvor OPU-aftalen er blevet markeret som slettet. |
Felterne afslutningsgrund
og supplerendeInformationer
har følgende udfaldsrum:
Felt | Udfaldsrum |
---|---|
|
|
|
|
Feltændringer for oprettelse af en PraktikIUdlandet
Når en PraktikIUdlandet
bliver oprettet vil der være feltændringer for følgende felter:
id
landekode
piuSkoleInstnr
startdato
slutdato
supplerendeInformationer
uddannelsesforloebId
Der kan være feltændringer for flere felter ifm. oprettelse af en PraktikIUdlandet
. Der vil ikke være feltændringer for de felter som er null ved oprettelsen.
Datamodel for Skolepraktik-entitet
Aftaler om skoleoplæring er, på samme måde som OPU-aftaler, ikke uddannelsesaftaler i bekendtgørelsesforstand. Oplysninger om en skoleoplæring er repræsenteret som en Skolepraktik
entitet.
Egenskaber og udfaldsrum for Skolepraktik
En Skolepraktik
har følgende egenskaber:
Felt | Type | Nullable | Beskrivelse |
---|---|---|---|
| UUID | N | Skoleoplæringens unikke id |
| string(6) | N | Institutionsnummer på skoleoplæringscentret. |
| string(6) | J | Evt. institutionsnummer på den afdeling, som eleven har som fysisk oplæringssted. |
| date | N | Startdatoen for skoleoplæringen. |
| date | N | Slutdatoen for skoleoplæringen. |
| string(50) | J | Skoleoplæringens afslutningsgrund. |
| array | N | Supplerende informationer, der kan være tilknyttet en skolepraktik. |
| string(6) | J | Institutionsnummer på et evt. udlagt oplæringscenter. |
| string(6) | J | Institutionsnummer på en evt. afdeling for det udlagte oplæringscenter. |
| array | N | Feltændringer som er knyttet til skoleoplæringen |
| array | N | Fremtidige feltændringer som er knyttet til skoleoplæringen. Listen kan være tom. |
| UUID | N | Id på det uddannelsesforløb som skoleoplæringen er tilknyttet. |
| date-time | J | Det tidspunkt, hvor skoleoplæringen er blevet markeret som slettet. |
Feltet afslutningsgrund
har et fast udfaldsrum:
Felt | Udfaldsrum |
---|---|
|
|
|
|
Feltændringer for oprettelse af en Skolepraktik
Når en Skolepraktik
bliver oprettet, vil der være feltændringer for følgende felter:
id
praktikcenterInstnr
startdato
slutdato
supplerendeInformationer
uddannelsesforloebId
Der kan være feltændringer for flere felter ifm. oprettelse af en Skolepraktik
. Der vil ikke være feltændringer for de felter som er null ved oprettelsen.
Datamodel for FguEudForloeb-entitet
Aftaler om en FGU-baseret erhvervsuddannelse er, på samme måde som aftaler om skoleoplæring og OPU-aftaler, ikke uddannelsesaftaler i bekendtgørelsesforstand. En FGU-eud forløb er en aftale mellem en erhvervsskole og en FGU-institution om elevens FGU-baseret erhvervsuddannelse.
Egenskaber og udfaldsrum for FguEudForloeb
Felt | Type | Nullable | Beskrivelse |
---|---|---|---|
| UUID | N | Unik id for FGU-eud forløbet |
| date | N | Startdato for FGU-eud forløbet |
| date | N | Slutdato for FGU-eud forløbet |
| string(6) | N | Institutionsnummer for den erhvervsskole som eleven er tilknyttet. |
| string(6) | J | Institutionsnummer for en afdeling af den erhvervsskole som eleven er tilknyttet. |
| string(8) | J | CVR nummer for den FGU institution hvor elevens oplæring foregår. |
| string(10) | N | P-nummer for den FGU institution, som eleven har som fysisk oplæringssted |
| date | J | Angiver, hvornår FGU-eud forløbet er blevet markeret som færdigregistreret af skolen. |
| string(50) | J | Afslutningsgrunden for FGU-eud forløbet. |
| array | N | Feltændringer som er knyttet til FGU-eud forløbet |
| array | N | Fremtidige feltændringer som er knyttet til FGU-eud forløbet. Listen kan være tom. |
| UUID | N | Id på det uddannelsesforløb, som FGU-eud forløbet er tilknyttet |
| date-time | J | Det tidspunkt, hvor FGU-eud forløbet er blevet markeret som slettet. |
Feltet afslutningsgrund
har følgende udfaldsrum:
Felt | Udfaldsrum |
---|---|
|
|
Feltændringer for oprettelse af et FguEudForloeb
Når et FguEudForloeb bliver oprettet, vil der være feltændringer for følgende felter:
id
erhvervsskoleInstnr
fguInstitutionCvr
fguInstitutionPnr
startdato
slutdato
uddannelsesforloebId
Der kan være feltændringer for flere felter ifm. oprettelse af et FguEudFoeloeb
. Der vil ikke være feltændringer for de felter som er null ved oprettelsen.
Datamodel for VirksomhedsforlagtPraktik-entitet
En aftale om virksomhedsforlagt oplæring (VFO-aftale) er speciel, idet det ikke drejer sig om en aftale mellem en elev og en virksomhed, men derimod om en aftale mellem en skole og en virksomhed. Oplysninger om en VFO-aftale er repræsenteret som en VirksomhedsforlagtPraktik
entitet.
Egenskaber og udfaldsrum for VirksomhedsforlagtPraktik
En VirksomhedsforlagtPraktik
har følgende egenskaber:
Felt | Type | Nullable | Beskrivelse |
---|---|---|---|
| UUID | N | VFO-aftalens unikke id |
| string(8) | N | CVR-nummer på virksomhed. |
| string(10) | J | P-nummer på virksomhed. |
| date | N | VFO-aftalens startdato |
| date | N | VFO-aftalens slutdato |
| date | J | Dato for VFO-aftalens indgåelse, som er den seneste af de underskriftsdatoer på VFO-aftalen |
| date | J | Dato for hvornår VFO-aftalen er modtaget på skolen |
| date | J | Angiver hvornår VFO-aftalen er blevet markeret som færdigregistreret af skolen |
| string(50) | J | VFO-aftalens afslutningsgrund. |
| array | N | Feltændringer knyttet til VFO-aftalen |
| array | N | Fremtidige ændringer knyttet til VFO-aftalen |
| UUID | J | Id på en |
| UUID | J | Id på et |
| date-time | J | Det tidspunkt, hvor VFO-aftalen er blevet markeret som slettet. |
Feltet afslutningsgrund
har følgende udfaldsrum:
Felt | Udfaldsrum |
---|---|
|
|
Feltændringer for oprettelse af en VirksomhedsforlagtPraktik
Når en VirksomhedsforlagtPraktik
bliver oprettet, vil der være feltændringer for følgende felter:
id
cvr
startdato
slutdato
underskriftsdato
skolepraktikId
– kun hvis VFO’en er foregået under en skoleoplæringfguEudForloebId
– kun VFO’en er foregået under et FGU-eud forløb
Når en VirksomhedsforlagtPraktik
bliver oprettet vil der altid være en feltændring for enten skolepraktikId
eller fguEudForloebId
, og aldrig for begge disse felter.
Der kan være feltændringer for flere felter ifm. oprettelse af en VirksomhedsforlagtPraktik
. Der vil ikke være feltændringer for de felter som er null ved oprettelsen.
Datamodel for VirksomhedsforlagtPraktikIUdlandet-entitet
En aftale om virksomhedsforlagt oplæring i udlandet er en aftale mellem en skole og en virksomhed uden for Danmark. Oplysninger om en VFO-aftale med en udenlandsk virksomhed er repræsenteret som en VirksomhedsforlagtPraktikIUdlandet
entitet.
Egenskaber og udfaldsrum for VirksomhedsforlagtPraktikIUdlandet
En VirksomhedsforlagtPraktikIUdlandet
har følgende egenskaber:
Felt | Type | Nullable | Beskrivelse |
---|---|---|---|
| UUID | N | Unikke id for et VFO i udlandet |
| string(512) | J | Virksomhedens navn |
| string(1000) | J | Adressen for den udenlandske virksomhed |
| string(2) | N | Det land, hvor VFO i udlandet finder sted. Formatet er 'ISO 3166-1 alpha-2' |
| date | N | Startdato for VFO i udlandet |
| date | N | Slutdato for VFO i udlandet |
| date | J | Dato for aftalens indgåelse, som er den seneste af de underskriftsdatoer på aftalen om VFO i udlandet |
| date | J | Dato for hvornår aftalen om VFO i udlandet er modtaget på skolen |
| date | J | Angiver hvornår aftalen om VFO i udlandet er blevet markeret som færdigregistreret af skolen |
| string(50) | J | Afslutningsgrund for VFO i udlandet. |
| array | N | Feltændringer som er knyttet til VFO i udlandet |
| array | N | Fremtidige feltændringer som er knyttet til VFO i udlandet |
| UUID | J | Id på en |
| UUID | J | Id på et |
| date-time | J | Det tidspunkt, hvor aftalen om VFO i udlandet er blevet markeret som slettet. |
Feltet afslutningsgrund
har følgende udfaldsrum:
Felt | Udfaldsrum |
---|---|
|
|
Feltændringer for oprettelse af en VirksomhedsforlagtPraktikIUdlandet
Når en VirksomhedsforlagtPraktikIUdlandet
bliver oprettet vil der være feltændringer for følgende felter:
id
landekode
startdato
slutdato
skolepraktikId
– kun hvis VFO i udlandet er foregået under en skoleoplæringfguEudForloebId
– kun VFO i udlandet er foregået under et FGU-eud forløb
Når en VirksomhedsforlagtPraktikIUdlandet
bliver oprettet vil der altid være en feltændring for enten skolepraktikId
eller fguEudForloebId
, og aldrig for begge disse felter.
Der kan være feltændringer for flere felter ifm. oprettelse af en VirksomhedsforlagtPraktikIUdlandet
. Der vil ikke være feltændringer for de felter som er null ved oprettelsen.
Datamodel for feltændringer
Når webservicen returnerer en entitet, f.eks. en Uddannelsesaftale
, bliver der returneret både et snapshot af entiteten, en række feltændringer for entiteten, samt evt. nogle fremtidige feltændringer for entiteten. Snapshottet viser entitetens tilstand i Lærepladsen.dk på det tidspunkt, hvor entiteten blev returneret af webservicen. Entitetens feltændringer viser hvordan entitetens felter har ændret sig siden entiteten blev oprettet. Hvis man spoler en entitets feltændringer igennem, skal man ende med entitetens snapshot.
Feltændringsbegrebet er helt centralt i datamodellen og i forståelsen af, hvordan data hænger sammen, idet feltændringer beskriver den enkelte entitets historik, dvs. de ændringer, der er sket undervejs i entitetens levetid.
En given feltændring er tilknyttet én entitet. En feltændring beskriver bl.a. hvilket felt i entiteten blev ændret, datatypen for feltet, og den nye værdi for feltet. Feltændringer som bliver lavet samtidig bliver grupperet sammen i en ændringsgruppe.
Der skelnes mellem feltændringer som er indtruffet og fremtidige feltændringer for en entitet. De feltændringer som er indtruffet udgør entitetens historik. Fremtidige feltændringer er feltændringer som er registreret for entiteten, men som først skal træde i kraft ud i fremtiden. Hvis der for eksempel registreres et tillæg til en uddannelsesaftale, hvor eleven skal skifte til et nyt fast arbejdssted om en måneds tid, vil det blive afspejlet som fremtidige feltændringer for den pågældende Uddannelsesaftale
.
En beskrivelse af hvordan en entitets feltændringer skal forstås findes i et efterfølgende afsnit.
Data i entiteter og feltændringer er lagret efter "event sourcing" designmønstret, hvor feltændringerne er datamodellens events.
Struktur for feltændringer og fremtidige feltændringer
Feltændringer og fremtidige feltændringer er defineret ved hjælp af en abstrakt type for en feltvaerditype
:
Der er følgende konkrete typer som er undertyper af feltvaerditype: BIGINT, BOOLEAN, DATE, DOUBLE, INTEGER, TEXT, TEXT_ARRAY, TIMESTAMP, UUID
. Her er strukturen for en feltændring for en DATE
:
Alle undertyperne har, ud over de felter som de arver fra feltvaerditype
, typisk én ekstra felt: nyVaerdi
. En TEXT_ARRAY
vil have en liste af nyVaerdier
, og listen kan være tom.
En feltændring eller fremtidig feltændring er en konkret instans af én af undertyperne af feltvaerditype
. Strukturen for feltændringer og fremtidige feltændringer for entiteter, ser således ud:
Feltændringer og fremtidige feltændringer for en entitet bliver returneret som sorterede lister, og rækkefølgen af feltændringerne skal ikke laves om. En feltændring som er indtruffet vil aldrig blive modificeret.
Egenskaber og udfaldsrum for feltvaerditype
En feltvaerditype
har følgende egenskaber:
Felt | Type | Nullable | Beskrivelse |
---|---|---|---|
| UUID | N | Feltændringens unikke id |
| string(100) | N | Navnet på det felt, der er blevet ændret, på den pågældende entitet |
| date-time | N | Tidspunktet hvor ændringen er blevet oprettet på Lærepladsen.dk. |
| string(100) | J | Årsagen til feltændringen. |
| date | J | Den dato hvorfra feltændringen er gældende. En fremtidig feltændring vil have en gældende fra dato. Mens en feltændring som er indtruffet, dvs. en feltændring som ikke er en fremtidig feltændring, vil ikke nødvendigvis have en gældende fra dato. |
| UUID | J | Hvis flere feltændringer er blevet lavet samtidig, er de knyttet sammen i en ændringsgruppe, og alle vil referere til samme ændringsgruppe id. |
Fremtidige feltændringer bliver automatisk tjekket dagligt. Når gaeldendeFraDato
for en fremtidig feltændring er det samme som dagens dato ved dette tjek, vil feltændringen blive rullet på entitetens snapshot, feltændringen bliver fjernet som fremtidig feltændring for entiteten, og det bliver en indtruffet feltændring for entiteten.
En ændringsgruppe kan indeholde feltændringer for flere entiteter. Feltændringer i en ændringsgruppe vil ikke altid have samme værdi i feltet aarsag
.
Følgende værdier findes som aarsag
:
ANNULLERET_I_EASY_P
FORLAENGET_PGA_SYGDOM_ORLOV_M_M
FORVENTET_TILLAEG_IKKE_FUNDET_I_EASY_P
SLETTET_I_EASY_P
SLETTET_PGA_SLETNING_I_EASY_P
UDDANNELSESAFTALE_FORTSAETTES_I_NY_VIRKSOMHED
UNDO
UNDO_PGA_ANNULLERET_I_EASY_P
UNDO_PGA_SLETTET_I_EASY_P
VIRKSOMHED_OVERDRAGET
Udfaldsrummet for feltet aarsag
vil ikke være begrænset til ovenstående liste. Listen med mulige værdier for feltet aarsag
bliver udvidet efter behov.
Der er følgende sammenhæng mellem felterne feltvaerditype
og nyVaerdi
i en feltændring:
Undertype af 'feltvaerditype' | Type for felt 'nyVaerdi' | nyVærdi krævet | Beskrivelse |
---|---|---|---|
|
| J | I øjeblikket er ingen felter med denne datatype |
|
| J | Udfaldsrum: true, false. I øjeblikket er ingen felter med denne datatype |
|
| J | En dato i format: åååå-mm-dd |
|
| J | I øjeblikket er ingen felter med denne datatype |
|
| J | |
|
| J | |
|
| J | En |
|
| J | En dato og tid. |
|
| J | Et UUID i format: [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12} |
Alle nyVaerdi
felter er nillable.
Feltændringer for en entitet
Generelt om feltændringer
Hvordan feltændringer skal fortolkes beskrives nedenfor ved hjælp af en række eksempler. Men først nogle generelle bemærkninger om feltændringer.
Et felt på en snapshot-entitet kan have en værdi, og denne værdi kan ændre sig. En ændring kan skyldes f.eks. en rettelse af en forkert værdi, eller en periodiseret ændring som gælder fra en given dato. Feltændringer for et givet felt indeholder oplysninger om hvad feltets værdi er og hvordan værdien eventuelt ændrer sig.
Der gælder disse regler for feltændringer:
- Feltændringer kan ikke ændres. Hvis der skal ændres i et felt på en entitet, skal det derfor ske ved at der oprettes en eller flere nye feltændringer.
- Feltændringer for en entitet kommer i en fortløbende rækkefølge og skal fortolkes i den rækkefølge.
- En feltændring F2 "overskriver" en tidligere feltændring F1, hvis følgende er opfyldt:
- Feltændring F2 kommer efter feltændring F1 i entitetens sorterede liste af feltændringer.
- Feltændringerne F2 og F1 ændrer samme felt i samme entitet
- Feltændringen F2 har en gældende fra dato der er lig med eller før gældende fra datoen for F1. (gældendeFraDato=null kommer før en ikke-null gældende fra dato).
En feltændrings gaeldendeFraDato
er den dato hvorfra feltændringen er gældende for entiteten.
Hvis en feltændrings gældende fra dato er null, skal det fortolkes sådan at feltændringen gælder fra et initierings- eller starttidspunkt for den ting som entiteten repræsenterer. Mulige initieringstidspunkter for en uddannelsesaftale er startdatoen for aftalen, eller underskriftsdatoen for aftalen. Et initieringstidspunkt handler ikke om hvornår en entitet blev oprettet for første gang i Lærepladsen.dk. Der er ikke faste regler for hvad en entitets initieringstidspunkt er, bl.a. fordi der mangler data for gamle lærepladsforhold.
En gældende fra dato som ikke er null skal fortolkes sådan at ændringen gælder fra, eller træder i kraft fra, den givne dato. Det bruges til at periodisere ændringer til en felts værdi.
En liste med (indtrufne) feltændringer kan faktisk godt indeholde feltændringer med gældende fra datoer i fremtiden. Det sker i de tilfælde hvor der er kommet nye feltændringer til, der ikke er fremtidige. Dette beskrives nærmere i et eksempel nedenfor.
For at få det fulde billede af feltændringer for en entitet skal entitetens lister af (indtrufne) feltændringer og fremtidige feltændringer konkateneres.
Eksempel scenarie - en uddannelsesaftale med to tillæg
Hvordan feltændringer skal forstås beskrives ved hjælp af nogle eksempler som for overskuelighedens skyld kun omfatter startdato, pnr (P-nummeret for arbejdsstedet), og afslutningsgrund for en uddannelsesaftale.
I dette scenarie er der indgået en uddannelsesaftale mellem en elev og en virksomhed, og der er indgået to tillæg til aftalen.
Registreringen af selve uddannelsesaftalen resulterer i en række feltændringer hvor gældende fra datoen er null.
Et tillæg til en uddannelsesaftale har en dato hvorfra tillægget er gældende. Denne dato bliver gældende fra datoen for de feltændringer som stammer fra registreringen af tillægget.
Eksempel 1: P-nr skifter to gange via tillæg
I det første eksempel er der en uddannelsesaftale med en startdato der ikke ændrer sig, et pnr der ændrer sig via to tillæg, samt en afslutningsgrund som ikke bliver sat.
En forsimplet liste af de sorterede feltændringerne for Uddannelsesaftale-entiteten ser sådan ud:
# | Felt | Værdi | GældendeFra |
1 | startdato | 1. januar 2020 | null |
2 | pnr | 111111 | null |
3 | pnr | 222222 | 15. april 2020 |
4 | pnr | 333333 | 1. august 2020 |
Fortolkningen af disse feltændringer er at uddannelsesaftalen starter den 1. januar 2020, og at eleven skal starte på arbejdsstedet med pnr 111111 fra starten af aftalen. Gældende fra den 15. april skifter pnr til 222222, og igen gældende fra 1. august skifter pnr til 333333.
For de feltændringer med en gældende fra dato lig med null, skal det fortolkes sådan at feltændringen gælder fra initieringstidspunktet af uddannelsesaftalen. Det bedste bud på initieringstidspunktet for aftalen er aftalens startdato, dvs. d. 1. januar 2020 med det givne data. Hvis der havde været en underskriftsdato, f.eks. d. 6 dec. 2019, kunne man betragte den dato som initieringstidspunktet for aftalen.
Der er ingen feltændring for afslutningsgrund, og det skal fortolkes således at afslutningsgrunden ikke er sat, dvs. afslutningsgrund=null fra initieringstidspunktet.
Eksempel 2: Pnr der er skiftet via tillæg 1 bliver rettet
Dette eksempel tager udgangspunkt i eksempel 1 hvor pnr er blevet skiftet via tillæg. Her bliver P-nummeret i det første tillæg rettet fra 222222 til 444444, fordi man har opdaget en indtastningsfejl i det første tillæg. Pnr 333333, der blev sat i det andet tillæg, skal ikke ændres.
Feltændringerne for Uddannelsesaftalen ser sådan ud:
# | Felt | Værdi | GældendeFra |
1 | startdato | 1. januar 2020 | null |
2 | pnr | 111111 | null |
3 | pnr | 222222 | 15. april 2020 |
4 | pnr | 333333 | 1. august 2020 |
5 | pnr | 444444 | 15. april 2020 |
6 | pnr | 333333 | 1. august 2020 |
I forhold til eksempel 1 er der to nye feltændringer som følge af rettelsen til det første tillæg:
- Feltændring nr 5 af pnr til 444444 gældende fra den 15. april 2020 retter fejlen
- Feltændring nr 6, som er en gentagelse af feltændring nr 4. Denne gentagelse er nødvendig, da ændringen af pnr fra tillæg 2 stadig skal være gældende, og feltændring nr 5 har en tidligere gældende fra dato end feltændringen nr 4.
Eksempel 3: Tillæg 2 bliver slettet
Igen tages der udgangspunkt i eksempel 1, men hvor tillæg 2 bliver slettet efter en fejlagtig registrering. Dvs pnr ændringen til 333333 gældende fra d. 1. august skal slettes.
Feltændringerne for Uddannelsesaftalen ser sådan ud:
# | Felt | Værdi | GældendeFra |
1 | startDato | 1. januar 2020 | null |
2 | pnr | 111111 | null |
3 | pnr | 222222 | 15. april 2020 |
4 | pnr | 333333 | 1. august 2020 |
5 | pnr | 222222 | 1. august 2020 |
Det er ikke tilladt at slette feltændringen nr 4. Derfor laves i stedet en ny feltændring, nemlig feltændring nr 5, der effektivt set ruller ændringen tilbage til værdien den havde før.
Eksempel 4: Tillæg 1 bliver slettet
Atter engang tages der udgangspunkt i eksempel 1, men denne gang hvor tillæg 1 bliver slettet, mens tillæg 2 bibeholdes.
Feltændringerne for Uddannelsesaftalen ser sådan ud:
# | Felt | Værdi | GældendeFra |
1 | startDato | 1. januar 2020 | null |
2 | pnr | 111111 | null |
3 | pnr | 222222 | 15. april 2020 |
4 | pnr | 333333 | 1. august 2020 |
5 | pnr | 111111 | 15. april 2020 |
6 | pnr | 333333 | 1. august 2020 |
På samme måde som i eksempel 3 bliver der oprettet feltændring nr 5, der ruller værdien tilbage til den foregående. Derudover bliver feltændring nr 4, der kom som følge af tillæg 2, gentaget som feltændring nr 6.
Eksempel 5: Fremtidige feltændringer i listen af (indtrufne) feltændringer
I dette scenarie er der indgået en uddannelsesaftale samt et tillæg som ændrer pnr, hvor tillægget træder i kraft i fremtiden (6. maj 2035). Senere blev aftalen ophævet pr 17. sept. 2021, dvs. inden tillægget når at træde i kraft.
Før uddannelsesaftalen bliver ophævet, ser dens (indtrufne) feltændringer sådan ud:
# | Felt | Værdi | GældendeFra |
1 | startdato | 1. januar 2020 | null |
2 | pnr | 111111 | null |
Og uddannelsesaftalen har også en fremtidig feltændring, hvor gældende fra datoen er i fremtiden:
# | Felt | Værdi | GældendeFra |
1 | pnr | 222222 | 6. maj 2035 |
Det fulde billede af aftalens feltændringer er disse to lister konkateneret:
# | Felt | Værdi | GældendeFra |
1 | startdato | 1. januar 2020 | null |
2 | pnr | 111111 | null |
3 | pnr | 222222 | 6. maj 2035 |
Efter uddannelsesaftalen blev ophævet pr 17. sept. 2021, ser dens feltændringer sådan ud:
# | Felt | Værdi | GældendeFra |
1 | startdato | 1. januar 2020 | null |
2 | pnr | 111111 | null |
3 | pnr | 222222 | 6. maj 2035 |
4 | pnr | 111111 | 17. september 2021 |
5 | afslutningsgrund | OPHAEVET_EFTER_PROEVETIDEN | 17. september 2021 |
Her er der tre nye feltændringer i listen af (indtrufne) feltændringer:
- Feltændring nr 3 må ikke slettes, selvom ændringen ikke når at træde i kraft for aftalen. Feltændringen 3 bliver flyttet fra listen af fremtidige feltændringer til listen af (indtrufne) feltændringer, til trods for at den har en gældende fra dato ud i fremtiden.
- Feltændring nr 4 "overskriver" den ikke længere gældende fremtidige ændring fra feltændring nr 3. Feltændringen nr 4 gentager værdien fra feltændring nr 2. Den gælder fra den dato hvor aftalen blev ophævet.
- Feltændring nr 5 sætter afslutningsgrunden gældende fra den dato hvor aftalen blev ophævet.
Summeret tidslinje
Der er tilfælde hvor værdien af et felt af forskellige årsager er ændret mange gange. Det kan for eksempel være der er blevet rettet nogle gange i registreringerne, før man får dem til at være rigtige.
Som nævnt ovenfor må man ikke rette i eksisterende feltændringer. Så skal der rettes eller ændres, skal det ske ved at der oprettes nye feltændringer.
I nogle tilfælde har man brug for at kunne vise en historik over alle de gange feltet har skiftet værdi. Det kan man få ved at tage feltændringerne for det pågældende felt direkte.
Men andre gange kan man have brug for at se “slutresultatet”. Dvs. hvad blev den resulterende ændringshistorik for et givet felt eller med andre ord, den såkaldte summerede tidslinje for feltet.
Den summerede tidslinje for en entitet består af summerede tidslinjer for alle entitetens felter. For at finde ud af hvordan en entitet så ud på en given dato, skal man først beregne den summerede tidslinje for entiteten, og derefter beregne hvilke værdier gjaldt for entitetens felter på den givne dato. Et eksempel gives nedenfor.
I de følgende afsnit beregnes summeret tidslinje for pnr for de ovennævnte fire eksempler.
Summeret tidslinje for eksempel 1
Dette var feltændringer for pnr fra eksempel 1:
# | Værdi | GældendeFra |
2 | 111111 | null |
3 | 222222 | 15. april 2020 |
4 | 333333 | 1. august 2020 |
Denne række af feltændringer kan ikke summeres yderligere. Det er allerede den resulterende historik over ændringer.
Summeret tidslinje for pnr for eksempel 2
Feltændringerne for pnr fra eksempel 2 så sådan her ud:
# | Værdi | GældendeFra |
2 | 111111 | null |
3 | 222222 | 15. april 2020 |
4 | 333333 | 1. august 2020 |
5 | 444444 | 15. april 2020 |
6 | 333333 | 1. august 2020 |
Her skal det fortolkes således at feltændringen nr 5, der ændrer pnr til 444444, “overskriver” feltændringer nr 3 og 4. Det er fordi gældende fra datoen for feltændring 5 (dvs. 15. april 2020) er lig med eller før gældende fra datoerne for feltændringer 3 og 4, samt at feltændring 5 kommer efter feltændringer 3 og 4 i entitetens sorterede liste af feltændringer.
Vi kan derfor beregne at den summerede tidslinje for pnr for eksempel 2 er:
Felt | Værdi | GældendeFra |
pnr | 111111 | null |
pnr | 444444 | 15. april 2020 |
pnr | 333333 | 1. august 2020 |
Summeret tidslinje for pnr for eksempel 3
Feltændringer for pnr for eksempel 3 så sådan her ud:
# | Værdi | GældendeFra |
2 | 111111 | null |
3 | 222222 | 15. april 2020 |
4 | 333333 | 1. august 2020 |
5 | 222222 | 1. august 2020 |
Her skal det fortolkes således at feltændring nr 5 "overskriver” feltændringen nr 4 og sætter dermed værdien af pnr tilbage til værdien den var før.
Den summerede tidslinje for pnr for eksempel 3 er derfor:
Felt | Værdi | GældendeFra |
pnr | 111111 | null |
pnr | 222222 | 15. april 2020 |
Summeret tidslinje for pnr for eksempel 4
For eksempel 4 så feltændringerne for pnr sådan her ud:
# | Værdi | GældendeFra |
2 | 111111 | null |
3 | 222222 | 15. april 2020 |
4 | 333333 | 1. august 2020 |
5 | 111111 | 15. april 2020 |
6 | 333333 | 1. august 2020 |
Her er det feltændring nr 5, der effektivt set ruller feltændring nr 3 tilbage, sådan at den summerede tidslinje for pnr bliver:
Værdi | GældendeFra |
111111 | null |
333333 | 1. august 2020 |
Summeret tidslinje for entiteten for eksempel 4
Her er feltændringerne for hele Uddannelsesaftale-entiteten, for eksempel 4 hvor tillæg 1 blev slettet:
# | Felt | Værdi | GældendeFra |
1 | startdato | 1. januar 2020 | null |
2 | pnr | 111111 | null |
3 | pnr | 222222 | 15. april 2020 |
4 | pnr | 333333 | 1. august 2020 |
5 | pnr | 111111 | 15. april 2020 |
6 | pnr | 333333 | 1. august 2020 |
Den summerede tidslinje for entiteten består af de summerede tidslinjer for entitetens felter. I dette eksempel består det af de summerede tidslinjer for startdato og pnr:
Felt | Værdi | GældendeFra |
startdato | 1. januar 2020 | null |
Felt | Værdi | GældendeFra |
pnr | 111111 | null |
pnr | 333333 | 1. august 2020 |
Den summerede tidslinje for entiteten skal bruges til at beregne hvordan entiteten så ud på en given dato.
For en given dato D og en entitet, hvor D er lig med eller efter entitetens initieringstidspunkt, kan man beregne hvordan entiteten så ud på dato D ved at anvende disse regler:
- Den summerede tidslinje skal beregnes for hver af entitetens felter.
- Hvis der er ingen summerede tidslinje for et felt i entiteten, dvs. der er ingen feltændringer for feltet, så er feltens værdi lig med null ved dato D.
- For hver felt med en summeret tidslinje, find feltets feltændring F, som har den største gældende fra dato som er mindre eller lig med dato D. (gældendeFra=null er altid mindre end en given ikke-null dato.) Værdien fra feltændring F, er feltets værdi ved dato D.
Her er hvordan uddannelsesaftalen så ud på et par forskellige datoer ift. eksempel 4.
Uddannelsesaftalen pr 1. januar 2020:
Felt | Værdi |
startdato | 1. januar 2020 |
pnr | 111111 |
afslutningsgrund | null |
Uddannelsesaftalen pr 15. april:
Felt | Værdi |
startdato | 1. januar 2020 |
pnr | 111111 |
afslutningsgrund | null |
Uddannelsesaftalen pr 15. september 2020:
Felt | Værdi |
startdato | 1. januar 2020 |
pnr | 333333 |
afslutningsgrund | null |
Ændringsgrupper
Oprettelse af lærepladsforhold, uddannelsesforløb, og elever
Når et lærepladsforhold bliver oprettet, skal det knyttes til et uddannelsesforløb for en elev. Hvis eleven eller et passende uddannelsesforløb ikke findes i forvejen, bliver eleven og uddannelsesforløbet oprettet samtidig med lærepladsforholdet. Når lærepladsforholdet bliver oprettet, vil der være en ændringsgruppe som indeholder alle de feltændringer for de entiteter som bliver oprettet samtidigt med lærepladsforholdet. Der vil ikke være angivet en årsag for disse feltændringer.
Ændringer til registreringer om uddannelsesaftaler
Bekendtgørelsen om erhvervsuddannelser kræver at visse ændringer til uddannelsesaftaler bliver aftalt og underskrevet af parterne og registreret. Disse ændringer er ofte omtalt som tillæg til uddannelsesaftaler.
Ændring af aftaleperiode
Ved registrering af en ændring af aftaleperioden for en uddannelsesaftale vil der være en ændringsgruppe med følgende typiske feltændringer:
Entitet | Felt | Krævet | Beskrivelse |
---|---|---|---|
|
| N | Der er gamle tillæg i EASY-P som mangler underskriftsdatoer. Det forventes at være krævet fremadrettet. |
|
| N | Startdato og/eller slutdato vil være ændret |
|
| N | Slutdato og/eller startdato vil være ændret. |
|
| N | Typen kan blive ændret. For eksempel, hvis en kort aftale bliver forlænget til at være en restaftale. |
|
| N |
Værdien for gaeldendeFraDato
-felterne i feltændringerne stammer fra den underskrevne aftaleændring.
Der kan være andre feltændringer i ændringsgruppen.
Ændring af ejerforhold ved virksomhedsoverdragelse
Ved registrering af en ændring af ejerforholdet for virksomheden ifm. virksomhedsoverdragelse vil der være en ændringsgruppe med følgende typiske feltændringer:
Entitet | Felt | Krævet | Beskrivelse |
---|---|---|---|
|
| N | Der er gamle tillæg i EASY-P som mangler underskriftsdatoer. Det forventes at være krævet fremadrettet. |
|
| N | |
|
| N | |
|
| N |
Når ændringer til ejerforholdet for en virksomhed bliver registreret, forventes der at der oftest vil være både et nyt cvr-nummer, se-nummer og p-nummer. Men der er tillæg som er migreret fra EASY-P som er registreret som ændringer til ejerforholdet for virksomheden, men hvor kun en eller to af disse felter er ændret. Det er bl.a. derfor at cvr
, senr
og pnr
er ikke kan være krævede ændringer for registrerede ændringer i ejerforhold for en virksomhed.
Årsagen til feltændringerne for cvr
, senr
og pnr
vil være VIRKSOMHED_OVERDRAGET
.
Værdien for gaeldendeFraDato
-felterne i feltændringerne stammer fra den underskrevne aftaleændring.
Der kan være andre feltændringer i ændringsgruppen.
Ændring af oplæringsvirksomhed
I nogle uddannelser (f.eks. gartner, landbrug, mejerist) bliver en elev oplært i forskellige virksomheder. Det er muligt at ændre oplæringsvirksomheden i disse uddannelser via et tillæg til en uddannelsesaftale.
Ved registrering af en ændring af oplæringsvirksomhed vil der være en ændringsgruppe med følgende typiske feltændringer:
Entitet | Felt | Krævet | Beskrivelse |
---|---|---|---|
|
| N | Der er gamle tillæg i EASY-P som mangler underskriftsdatoer. Det forventes at være krævet fremadrettet. |
|
| N | Hvis |
|
| N | |
|
| N |
|
Årsagen til feltændringerne for cvr
, senr
og pnr
vil være UDDANNELSESAFTALE_FORTSAETTES_I_NY_VIRKSOMHED
.
Værdien for gaeldendeFraDato
-felterne i feltændringerne stammer fra den underskrevne aftaleændring.
Der kan være andre feltændringer i ændringsgruppen.
Andre væsentlige ændringer til forhold i uddannelsesaftaler
Ved registrering af andre ændringer af væsentlige forhold i uddannelsesaftaler vil der typisk være en ændringsgruppe som indeholder en feltændring for underskriftsdato
i Uddannelesaftalen
samt en eller flere af følgende felter:
Uddannelsesforløb: coesaFormaal, speciale, uddannelsesVersion
Uddannelsesaftale: startdato, slutdato, cvr, pnr, senr, supplerendeInformation
Værdien for gaeldendeFraDato
-felterne i feltændringerne stammer fra den underskrevne aftaleændring.
Der kan være andre feltændringer i ændringsgruppen.
Webservicen
Udstilling af webservice
Webservicen kaldes via STIL's integrationsplatform, IPL. Integrationsplatformen er en platform, som understøtter udveksling af data mellem STIL's centrale systemer og eksterne systemer. IPL anvendes af uddannelsesinstitutioner, myndigheder og organisationer på førskole-, grundskole-, ungdomsuddannelses-, voksen- og efteruddannelsesområdet.
Integrationsplatformen tilbyder ensartede webservices for indberetning til og afhentning af data fra STIL's centrale systemer inkl. autentificering, autorisering og logning af hændelser i forbindelse med dataudvekslingen. IPL er en ren infrastrukturkomponent, og har ingen brugergrænseflade, ligesom den ikke opbevarer data.
Integrationsplatformen understøtter, at systemleverandører, blandt andet leverandører af studieadministrative systemer på de ovennævnte uddannelsesområder, kan udveksle data med STIL's systemer på en institutions vegne på en ensartet, transparent og sikker måde.
Yderligere oplysninger om tilslutning og tekniske detaljer kan findes på STIL's support-site: https://viden.stil.dk/display/OFFintegrationsplatformen.
For at kunne hente data via webservicen skal der angives et udbyder id som en parameter i kaldene. En organisation får et udbyder id, når der oprettes en tilslutningsaftale med STIL, se f.eks. https://tilslutning.stil.dk/. Et udbyder id skal også blive tilføjet til en udbyder-tabel i Lærepladsen.dk. Når en organisation med et udbyder id ønsker at få adgang til webservicen, skal der oprettes en supportsag vedr. Lærepladsen.dk. Supportsagen skal indeholde udbyder-id'et. Hvis der skal hentes data for et sekretariat for faglige udvalg, skal supportsagen også indikere hvilket sekretariat det drejer sig om, samt sekretariatets CVR-nummer. Hvis der skal hentes data for en skole er det ikke nødvendigt at opgive et CVR-nummer i supportsagen. En supportsag vedr. Lærepladsen.dk kan oprettes her: https://jira.stil.dk/servicedesk/customer/portal/1/create/9
Endpoints til webservicen findes på: https://viden.stil.dk/display/OFFintegrationsplatformen/Services
Afhentning af data
Afhentning af ændringer til personers uddannelsesforløb sker i to tempi. Først hentes en liste med de CPR-numre, for hvilke der er sket ændringer siden det tidspunkt, der angives i forespørgsel. Dernæst hentes data om uddannelses- og aftaleforløb for et antal CPR-numre.
Det er op til aftagersystemet at holde rede på, hvilken tidspunkt der skal spørges på, hvis aftagersystemet hele tiden skal have det fulde billede af alle relevante ændrede uddannelses- og oplæringsforløb.
Webservicen er opdelt i to metoder:
HentAendringer
HentForloeb
HentAendringer
Request
Metoden HentAendringer
kan kaldes med request der ligner følgende:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:v2="http://ipl.stil.dk/services/laerepladsen/laerepladsforhold/v2.0" xmlns:v21="http://stil.dk/laerepladsen/laerepladsforhold/v2.0"> <soap:Header/> <soap:Body> <v2:HentAendringerRequest> <v2:Identifier> <v2:SystemName>MinSoapUI</v2:SystemName> <v2:SystemTransactionID>TestHentAendringer</v2:SystemTransactionID> </v2:Identifier> <v2:Message> <v21:HentAendringerRequest> <v21:udbyderId>Z12345</v21:udbyderId> <v21:cvr>12341234</v21:cvr> <v21:fraTidspunkt>2022-10-15T10:15:30+01:00</v21:fraTidspunkt> </v21:HentAendringerRequest> </v2:Message> </v2:HentAendringerRequest> </soap:Body> </soap:Envelope>
Response
HentAendringer
returnerer et svar der ligner følgende (CPR-numrene i eksemplet er anonymiseret):
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Body> <HentAendringerResponse xmlns="http://ipl.stil.dk/services/laerepladsen/laerepladsforhold/v2.0" xmlns:ns2="http://stil.dk/laerepladsen/laerepladsforhold/v2.0"> <Identifier> <SystemName>MinSoapUI</SystemName> <SystemTransactionID>TestHentAendringer</SystemTransactionID> </Identifier> <CorrelationID>fbb98c20-7ca9-4a69-8296-9ad0858e797f</CorrelationID> <Message> <ns2:HentAendringerResponse> <ns2:ElevIdForAendredeUddannelsesforloeb> <ns2:aendringerFremTil>2022-10-16T08:34:45+01:00</ns2:aendringerFremTil> <ns2:cprNumre> <ns2:cpr>060902xxxx</ns2:cpr> <ns2:cpr>100501xxxx</ns2:cpr> <ns2:cpr>240998xxxx</ns2:cpr> </ns2:cprNumre> </ns2:ElevIdForAendredeUddannelsesforloeb> </ns2:HentAendringerResponse> </Message> </HentAendringerResponse> </soap:Body> </soap:Envelope>
HentForloeb
Request
I følgende eksempel er CPR-nummeret anonymiseret. Der skal sendes et validt CPR-nummer for en elev for at hente vedkommendes uddannelsesforløb.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:v2="http://ipl.stil.dk/services/laerepladsen/laerepladsforhold/v2.0" xmlns:v21="http://stil.dk/laerepladsen/laerepladsforhold/v2.0"> <soap:Header/> <soap:Body> <v2:HentForloebRequest> <v2:Identifier> <v2:SystemName>MinSoapUI</v2:SystemName> <v2:SystemTransactionID>TestHentForloeb</v2:SystemTransactionID> </v2:Identifier> <v2:Message> <v21:HentForloebRequest> <v21:udbyderId>Z12345</v21:udbyderId> <v21:cvr>12341234</v21:cvr> <v21:CprListe> <!--1 to 500 repetitions:--> <v21:Cpr>010100xxxx</v21:Cpr> </v21:CprListe> </v21:HentForloebRequest> </v2:Message> </v2:HentForloebRequest> </soap:Body> </soap:Envelope>
Response
CPR-nummeret i eksemplet er anonymiseret.
Fejlhåndtering i webservicen
Denne sektion beskriver de fejlkoder, som er returneret af Integrationsplatformen og webservicen.
Fejlbeskeder fra Integrationsplatformen
De HTTP-fejlkoder som Integrationsplatformen anvender er beskrevet her: https://viden.stil.dk/display/OFFintegrationsplatformen/Fejlkoder
Fejlbeskeder fra webservicen
Fejlbeskeder i HentForloebResponse
Fejlkode | Tekst på fejl | Kommentar |
400 | Ingen udbyder med id xxxxxx er konfigureret til at hente for nnnnnnnn | Opret en supportsag vedr. Lærepladsen.dk for at få udbyder id xxxxxx tilføjet til udbyder-tabellen i Lærepladsen.dk |
413 | Antallet af CPR-numre har overskredet det maksimalt tilladte. |