Tällä sivulla ylläpidetään tietovarannossa tehtävien tarkistusten listaa. Tarkistusten tulos ilmenee siis Virta_Latausraportilla PUUTTEITA-listalla.

Vuonna 2023 lisätään monia uusia puutetarkistuksia. Samassa yhteydessä havaittuun puutteeseen on lisätty kaksi uutta tietoa:

virhTiedPvm : Virheellisen tiedon päivämäärä, esimerkiksi opintosuorituksen päivämäärä (jos virhe liittyy opintosuoritukseen). "Tiedon alkamispäivämäärä suurempi kuin päättymispäivämäärä" -tyyppisissä virheissä tähän asetetaan aina 31-12-9999, jotta virhe pysyy akuuttina siihen asti kun se on korjattu; poikkeus (tehty 11.2023): Jos opiskeluoikeuden tapauksessa opiskeluoikeudella on sen epätavallista päättymistä osoittava tila (passivoitu, luopunut), joka alkaa ennen (<=) opiskeluoikeuden alkua, niin asiantilasta ei tehdä puutetta.

opisOikAktPaatPvm: Opiskeluoikeuden aktiivisuuden päättymispäivämäärä. Jos virhe ei liity opiskeluoikeuteen liittyvään tietoon, niin silloin tämän päättelyyn käytetään opiskelijan kaikkia opiskeluoikeuksia. Tieto päätellään opiskeluoikeuden tiloista, siitä tilasta, jonka alkamispäivämäärä on suurin: Jos se tila on aktiivinen tai optio, niin otetaan tilan päättymispäivämäärä (sen puuttuessa 31-12-9999), muussa tapauksessa (valmistunut, passivoitu, luopunut, päättynyt) tilan alkamispäivämäärää edeltävä päivämäärä.

Mitä kauempana historiassa nämä päivämäärät ovat, sitä vähemmän (harvemmassa tapauksessa) ne enää vaikuttavat - joten virheiden korjaaminen kannattaa aloittaa niistä virheistä, joissa jompi kumpi näistä on joko tulevaisuudessa tai lähihistoriassa.

Marraskuussa 2023 puutteisiin on lisätty tieto onVanhempi (kyllä/ei). Puutteiden etsimisen jälkeen sovellus ottaa suuremman päivämääristä virhTiedPvm ja opisOikAktPaatPvm ja vertaa sen vuotta kuluvaan vuoteen; jos erotus on enemmän kuin viisi vuotta (esim. vuonna 2023 vertailuvuosi < 2018), niin silloin puute päätelllään vanhemmaksi puutteeksi (onVanhempi=kyllä). Näitä vanhempia puutteita ei ilmoiteta oppilaitokselle. Koska puutteen "iän" laskemisessa ei siis käytetä opiskeluoikeuden alkamispäivämäärää, niin "vanhuusrajana" voisi ehkä pitää jotain viittä pienempää vuotta.


KoodiSeliteLisätietoaHaitta-aste 1-5 tms

Opiskelijat

Koodit 1000-1999Opiskelija-tason tietojen puutteet

1001

Opiskelijalla ei ole ollenkaan opiskeluoikeutta, lukukausi-ilmoittautumista tai opintosuoritusta

Mikäli tietojen perusteella löytyy sellainen opiskelija, jonka tietoihin ei voida liittää opiskeluoikeutta, lukukausi-ilmoittautumista tai opintosuoritusta.

1002

Opiskelijalla ei ole virallista suomalaista hetua tai kansallista oppijanumeroa

Mikäli tiedoista löytyy sellainen opiskelija, johon ei liity virallista suomalaista hetua tai oppijanumeroa, ilmoitetaan. Tämä tarkistus yksinään ei näy listalla, sillä luultavasti näitä puutteita löytyy aivan kaikilta. Toisin sanoen tämä puute ilmoitetaan vain, mikäli on muitakin puutteita.


1003

 

Opiskelijan sukupuolitieto ei täsmää hetun kanssa

 

Katsotaan sellaiset henkilöt, joiden sukupuoli-tieto ei täsmää henkilötunnuksesta pääteltävissä olevasta sukupuolesta.
Ei tarkisteta jos sukupuoli on tuntematon (koodi 9)

 


1004

 

Hetuton - Väärä välimerkki lopussa. Jos 2000 luvulla syntynyt tulee olla A ei -

 

Katsotaan henkilöt  jolla ei ole henkilötunnusta mutta syntymäaika muodossa ppkkvv-. Jos vv on 00 tai muu vuonna 2000 syntynyt vuosi välimerkki tulisi olla A, eli syntymäaika muodossa ppkkvvA


1005

 

Henkilön pätevyyden päättymispaivämäärä on pienempi kuin alkamispäivämäärä

 

Voimassaoloajallinen (alkamispäivämäärä - päättymispäivämäärä) tieto päättyy ennen alkamistaan.


1006

Oppijanumero on väärän muotoinen

Vaatimuksia oikean muotoiselle:

  • pituus 20 merkkiä
  • sisältää vain numeroita ja pisteitä
  • alkuosa oltava '1.2.246.562.24.'

1007

 

Oppijanumero oltava tutkinto-opiskelijoilla vuodesta 2016 alkaen

 

Oppijanumero oltava, jos oppijalla on opiskeluoikeus, jonka tyyppi on 1, 2, 3 tai 4 (tässä tapauksessa ei 5, 6, 7) ja opiskeluoikeuden alkamispäivämäärä >= 01.01.2016


1008

 

Sama oppijanumero useammalla eri henkilöön liittyvällä opiskelijalla

 

 


1009

 

Puuttuu joko suku- tai etunimi

 

Henkilöillä on oltava molemmat nimet; yhdessä kentässä olevista sanoista ei pysty luotettavasti päättelemään mikä siellä on etu- ja mikä sukunimeä.


1010

 

Sukunimessä tai etunimissä on muita merkkejä kuin kirjaimia, välilyöntejä, tavuviivoja, heittomerkkejä, pilkku, ...

 

Nimi ei saa sisältää numeroita, hetuja, sähköpostiosoitteita ym.
Sallittuja merkkejä ovat (osa näistä otettu olemassa olevista nimistä löytäen):

  • isot ja pienet kirjaimet (A-Ö, a-ö)
  • heittomerkit (esim. O'Connor), unicode-merkit 39, 96, 190, 8216, 8217
  • saksalainen kaksois-s (ß), unicode 223
  • non-breaking space, unicode 160
  • pilkku, koska se (välilyönnin kanssa) esiintyy sukunimen jälkeen erottimena ennen van/von/af
  • kauttaviiva (siis '/'), koska sitä on käytetty paljon jostain syystä (entinen ja uusi nimi ?)

Virheellinen nimi näytetään puutteen lisätiedossa (etunimet + ' ' + sukunimi) niin, että sallitut merkit näytetään pisteellä ja ei-sallitut merkit muodossa '<' + unicode-numero(kymmenjärj.) + '>, esim. '........<40>.....<41>.......'

 


1011

 

Henkilötunnuksen seitsemäs merkki on ristiriidassa syntymäajan vuosisataan nähden (1800:+, 1900: -|Y|X|W|V|U, 2000: A|B|C|D|E|F)

 

 


Opiskeluoikeudet

 

 Koodit 2000-2999

 Opiskeluoikeus-tason tietojen puutteet


2001

 

Opiskeluoikeuden tila ei muodosta eheää aikajaksoa

 

Tiedoista katsotaan sellaiset opiskeluoikeudet, joihin liittyy usea tila, mutta tilojen väliin jää ajallisesti aukkoja tai ajat menevät päällekkäin.


2002

 

Opiskeluoikeuden opiskeluoikeusjakso ei muodosta eheää aikajaksoa

 

Tiedoista katsotaan sellaiset opiskeluoikeudet, joihin liittyy usea opiskeluoikeusjakso, mutta jaksojen väliin jää ajallisesti aukkoja tai ajat menevät päällekkäin.


2003

 

Opiskeluoikeuksien ensisijaisuuksissa päällekkäisyyksiä

 

Tiedoista katsotaan opiskelijan ensisijaisuudet (aikajakso), mutta ensijaisuuksien väliin jää ajallisesti aukkoja tai ajat menevät päällekkäin.


2004

 

Opiskeluoikeusjaksolta puuttuu koulutuskoodi

 

Tutkitaan tutkintoon johtavista opiskeluoikeuksista, liittyykö niissä oleviin opiskeluoikeusjaksoihin aina koulutuskoodi. Jos ei, puute.


2005

 

Ensisijaisuus puuttuu tutkinto-opiskelijan opiskeluoikeuksista (YO)

 

Tutkitaan opiskelijat, joilla on tutkintoon johtava opiskeluoikeus, liittyykö opiskeluoikeuksiin ollenkaan ensisijaisuutta. Jos ei, puute.

Koskee vain yliopistoja.

Rajoitettu koskemaan vain kuluvana vuonna voimassaolleita opiskeluoikeuksia.


2006

Opiskelijalla on vain optio-tilassa oleva opiskeluoikeus

Kyse on opiskelijasta, jolta ei löydy muita opiskeluoikeuksia kuin sellaisia, joiden tila on 2='optio'.


2007

Opiskeluoikeuden liittyvyys viittaa tietoon jota ei ole

Katsotaan että ilmoitettu opiskeluoikeuden liittyvyys viittaa myös tietoon joka on olemassa.


2008

Opiskeluoikeudella on monta myöntäjää

Katsotaan onko opiskeluoikeuteen ilmoitettu organisaatio-tietoa erikseen roolilla 1='myöntävä'. Jos on, tämä aiheuttaa sen että opiskeluoikeudella on monta myöntäjää.


2009

Opiskeluoikeuden päättymispaivämäärä on pienempi kuin alkamispäivämäärä

Voimassaoloajallinen (alkamispäivämäärä - päättymispäivämäärä) tieto päättyy ennen alkamistaan.

Jos opiskeluoikeudella on sen epätavallista päättymistä osoittava tila (passivoitu, luopunut), joka alkaa ennen (<=) opiskeluoikeuden alkua, niin asiantilasta ei tehdä puutetta (tämä lisätty 11/2023).

Puutteesta ilmoittamattomuus ei poista sitä, että ko. opiskeluoikeus ei tulisi mukaan tiedonkeruisiin ym. ja mahdollisesti aiheuttaisi niihin vääriä tuloksia.


2010

 

Opiskeluoikeusjakson päättymispaivämäärä on pienempi kuin alkamispäivämäärä

 

Voimassaoloajallinen (alkamispäivämäärä - päättymispäivämäärä) tieto päättyy ennen alkamistaan.


2011

 

Opiskeluoikeuden tilan päättymispaivämäärä on pienempi kuin alkamispäivämäärä

 

Voimassaoloajallinen (alkamispäivämäärä - päättymispäivämäärä) tieto päättyy ennen alkamistaan.


2012

 

Opiskeluoikeuden ensisijaisuuden päättymispaivämäärä on pienempi kuin alkamispäivämäärä

 

Voimassaoloajallinen (alkamispäivämäärä - päättymispäivämäärä) tieto päättyy ennen alkamistaan.


2013

 

Opiskeluoikeusjaksojen päivämäärät eivät ole opiskeluoikeuden alkamis- ja loppupäivämäärien sisällä

 

Puute tehdään jokaisesta opiskeluoikeusjaksosta, joka alkaa ennen opiskeluoikeutta tai päättyy opiskeluoikeuden päättymisen jälkeen. Puuteilmoituksessa avainsarake = 'opiskeluoikeusjaksoAvain'.


2014

 

Tutkintoon johtamattomasta opiskeluoikeudesta puuttuu OKM:n ohjausala (koodi 1 - 12)

 

Opiskeluoikeuden tyyppi ei ole jokin 1-7 ja opiskeluoikeudelta joko puuttuu koulutusala tai sitten koulutusalan versio != 'ohjausala'.


2015

 

Opiskeluoikeus päättynyt valmistumiseen (tila 3) ilman yhtään aiempaa aktiivista tilajaksoa

 

Vuodelta 2003 on sellaisia, joissa aktiivinenkin jakso on ollut (mutta siis myöhäisempi kuin päättynyt). Olisiko nämä tuoreemmat (ja harvat) tapaukset opiskeluoikeuden päättymisiä ilman valmistumista.


2016

 

Opiskeluoikeudella on aktiivisen tilan jakso (tilakoodi 1) opiskeluoikeuden päättymisen jälkeen

 

 


2017

 

Tutkintoon johtavasta (kand./maist., tyypit 1, 2, 3, 4) vuoden 2000 jälkeen alkaneesta opiskeluoikeudesta puuttuu laajuus tai laajuus on nolla

 

 


2018

 

Opiskeluoikeuden lajin (1,2,3,4,6,7) ja tutkintonimikkeen koulutusastetason välillä on ristiriita

Käsitellään tutkinto-tyyppiset opintosuoritukset -> saadaan suorituspäivämäärä. Suoritukseen liitetyltä opiskeluoikeudelta otetaan sen tyyppi, ja haetaan suorituspäivämäärällä voimassa oleva opiskeluoikeusjakso → saadaan tutkintonimikekoodi. Haetaan tutkintonimikekoodia vastaava koulutusastetaso -koodi. Ko. koodin pitäisi olla 6, jos opiskeluoikeuden tyyppi on 1 tai 2 (amk-tutkinto), 7, jos  3 tai 4 (kk-tutkinto), ja 8, jos lisensiaatin tai tohtorin tutkinto (6,7).






2019

 

Päättynyt (tila 3) tutkinto-oikeus (1,2,3,4,6,7), mihin ei liity tutkintosuoritusta (opintosuorituslaji 1)

 

Voivat olla tapauksia, joissa pitäisi käyttää nykyään tilaa 6 eli päättynyt.


2020

 

Tutkintolajin opintosuoritus (laji 1) ei liity tutkinto-opiskeluoikeuteen (1,2,3,4,6,7)

 



2021

 

Erikoistumiskoulutuksen opiskeluoikeudelta (tyyppi 19) puuttuu OPH:n kolmenumeroinen koulutuskoodi

 



2022

 

Opiskeluoikeusjakson kunta ei ole selvillä, tieto puuttuu tai on 999 (=Tuntematon)

 



2023

 

Tutkintosuorituksen tutkintokoodi on 00-loppuinen (TK:n "kohdistuskoodi")

 

Yhdeksän tapausta vuosilta 2005-2006.


2024

 

Opiskeluoikeuden tila koodilla 3 (valmistunut), 5 (luopunut) tai 6 (päättynyt) sisältää päättymispäivämäärän (!= 31.12.9999)

 

Nämä tilat ovat lopullisia, joten niillä ei saa olla päättymispäivää tai päättymispäivän on oltava 31.12.9999.


2025

 

Tutkintosuorituksen tutkintokoodi on 999999 (Tuntematon)

 

 


2026

 

Toisiinsa liittyvillä alemman ja ylemmän tutkinnon opiskeluoikeuksilla ei ole sama alkamispaivämäärä

 

 


2027

 

Opiskeluoikeusjakson tutkintokoodin koulutusaste ei vastaa opiskeluoikeuden tyyppiä

 

Tarkistus tehdään opiskeluoikeuden valmistumisajankohdalla olleen opiskeluoikeusjakson tutkintonimikkeelle (mutta ei tutkintokoodille 999999).

Puute syntyy kun jokin seuraavista toteutuu:

  • opiskeluoikeuden tyyppi = 1 ja koulutusastetaso2_koodi != 62
  • opiskeluoikeuden tyyppi = 2 ja koulutusastetaso2_koodi != 63
  • opiskeluoikeuden tyyppi = 3 ja koulutusastetaso2_koodi != 71
  • opiskeluoikeuden tyyppi = 4 ja koulutusastetaso2_koodi != 72
  • opiskeluoikeuden tyyppi = 5 ja koulutusastetaso2_koodi != 73
  • opiskeluoikeuden tyyppi = 6 ja koulutusastetaso2_koodi != 81
  • opiskeluoikeuden tyyppi = 7 ja koulutusastetaso2_koodi != 82
  • opiskeluoikeuden tyyppi != 1,2,3,4,5,6,7 ja koulutusastetaso2_koodi = 62|63|71|72|73|81|82

 


2028

 

Tutkinto-opiskeluoikeuden aktiiviselta jaksolta puuttuu läsnäoloilmoittautumisia

 

 


2029

 

Suomen kansalaisella on rahoituslähteenä lukuvuosimaksu (koodi 5)

 

Kansalaisuuden saamisesta(/menettämisestä) ei ole päivämäärätietoa, joten puutetta ei voida tarkistaa opiskeluoikeusjakson ajankohdan mukaisesti.


2030

 

Opiskeluoikeudella ei ole opiskeluoikeusjaksoa opiskeluoikeuden alusta alkaen

 

Toteutettu tiketin CSCTIE-440:n perusteella. Ko. tiketillä kirjattu mm. puutteen vaikutuksia seuraavasti:

"Jakso siirto-opiskelijan alkamisesta alkaen
Havaittu Peppi-yliopistoilla, erityisesti TY.

Puute tuli esille kun Kela opiskelijatiedonkeruun valmistuneiden aloituspäivämäärä muuttunut.

Kela kerää 2 viimeisen lukuvuoden aikana valmistuneet.

Aloittamispäivämäärä on laskettu opiskeluoikeusjakson alkamispäivämäärästä.
Kun tieto aiemmin tullut ok, on jaksoja opiskeluoikeuden alkamisesta alkaen ei lähtöpäivämäärä ole ollut virheellinen.

Vaikutusta myös tutkinnon suoritusaikaan siirto-opiskelijoiden kohdalla jos suoritetun tutkinnon opiskeluoikeuteen ei liity käytetyt läsnä, poissaolomäärät."


2031

Opiskelijaliikkuvuuden päättymispaivämäärä on pienempi kuin alkamispäivämäärä

Voimassaoloajallinen (alkamispäivämäärä - päättymispäivämäärä) tieto päättyy ennen alkamistaan.


2032

 

Tutkintoon johtavan opiskeluoikeuden laajuus ei ole jaollinen 30op

 

Opiskeluoikeuden, joka on tyypiltään 1, 2, 3, tai 4, laajuus on annettu (ei null eikä nolla) laajuus ei ole jaollinen 30:llä (eli ei ole 30, 60, 90, 120,150, 180,...).


2033

 

Tutkintoon johtavan opiskeluoikeuden laajuus poikkeaa koulutuskoodin mukaisesta laajuudesta

 

Koulutuskoodi otetaan opiskeluoikeuden ajallisesti viimeisimmältä (= suurin alkamispäivämäärä) opiskeluoikeusjaksolta) sellaiselta opiskeluoikeusjaksolta, jolle on määritelty tutkintonimike. Ajallisesti viimeisimmän perusteella oletetaan saavan tuorein tieto ja se estää sen, ettei yhdestä opiskeluoikeudesta tulee useampa puutetta (eräällä AMK:lla puutteiden lukumäärä väheni tällä tavalla 522:sta 507:ään - ei siis merkittävästi, mutta loogisesti oikeaan tulokseen onkin pyrkimys).

Puutetarkistuksen versiossa 20231214 voidaan koulutuskoodille määritellä (tallennetaan tietokantaan) useampi laajuus, ja opiskeluoikeudella tulisi olla jokin niistä.

 


2034

 

Opiskeluoikeuden opiskeluoikeusjaksoissa on aukkoja tai päällekkäisyyksiä

 

On kyse aukosta, jos edellisen jakson päättymispäivämäärä < seuraavan jakson alkamispaivämäärä - 1 - eli siinä välissä on vähintään yksi päivä.

On kyse päällekkäisyydestä, jos kaksi mitä tahansa saman opiskeluoikeuden jaksoa ovat voimassa ainakin yhtenä samana päivänä.

Tällä puutteella ei tutkita opiskeluoikeusjakson puuttumista opiskeluoikeuden alussa eikä lopussa, eikä opiskeluoikeusjakson olemassaoloa ennen tai jälkeen opiskeluoikeuden voimassaoloaikaa. Näille tapauksille on jo ennestään tarkistuksia (esim. 2002, 2013, 2030).

Lkm 19.01.2024 kaikki oppilaitokset yhteensä 16, kaikki alle 7 vuoden vanhoja tapauksia.


2035

 

Opiskeluoikeuden tilojen voimassaoloajoissa on aukkoja tai päällekkäisyyksiä

 

On kyse aukosta, jos edellisen tilan voimassaoloajan päättymispäivämäärä < seuraavan tilan voimassaoloajan alkamispaivämäärä - 1 - eli siinä välissä on vähintään yksi päivä.

On kyse päällekkäisyydestä, jos kaksi mitä tahansa saman opiskeluoikeuden tilan voimassaoloaikaa (alkPvm - paatPvm) ovat voimassa ainakin yhtenä samana päivänä.

Tällä puutteella ei tutkita opiskeluoikeuden tilan puuttumista opiskeluoikeuden alussa eikä lopussa, eikä opiskeluoikeuden tilan olemassaoloa ennen tai jälkeen opiskeluoikeuden voimassaoloaikaa. Näille tapauksille on jo ennestään tarkistuksia (esim. 2001, 2016).

Lkm 19.01.2024 kaikki oppilaitokset yhteensä 2400, kaikki alle 7 vuoden vanhoja tapauksia.


2036

 

Siirto-opiskeluoikeuden siirtopvm puuttuu tai on epälooginen opiskeluoikeuden voimassaoloaikaan nähden.

 

Korjaus 02.05.2024: Puutetta ei esiintynyt ollenkaan, koska yhdessä ehdossa säännön toteuksessa oli lapsus (oli 'and', kun pitää olla 'or').

Muutokset 23.02.2024:

  • Tarkistetaan vain tutkinto-oikeuksilta, tyypit 1, 2, 3, 4 (lisäys 23.02.2024)
  • Tämä sääntö poistetaan:

Tässä sallitaan siirtopäivämäärän olla > AlkPvm ja < PaatPvm. Tällöin tulkitaan saapuneeksi. Tähän on perusteena:

Silloin kun on kyseessä lähtevä, niin korkeakoululla on itsellään mahdollisuus asettaa opiskeluoikeuden päättymispäivämäärä; oletetaan, että korkeakoulu tekee niin.
Silloin kun kyseessä on saapuva, niin korkeakoulun sallitaan tallentaa siirtopäivämääräksi toiselta korkeakoululta saamansa tieto, vaikka se olisikin virheellinen.

Edellisen tilalle tämä:

Tietovarannon tiedot#opiskeluoikeus :sta

"Alkuperäisen opiskeluoikeuden alkamispäivämäärä, jos vastaanottava korkeakoulu (kohde), ja siis tämä päivämäärä on aikaisempi kuin opiskeluoikeuden alkamispäivämäärä.

Siirtopäivämäärä, jos lähettävä korkeakoulu (lähde), ja siis tämä päivämäärä on myöhempi kuin opiskeluoikeuden alkamispäivämäärä."

Lisäksi SiirtoPvm = AlkPvm käsitellään kuten SiirtoPvm > AlkPvm, jotta ei jäisi jäljelle säännötöntä tapausta.


Kohdeorg.Lähdeorg.SiirtosuuntaSiirtopäivämääräTulkinta




Tällä yksinkertaisella tavalla pystytään lähde- ja kohdeorganisaatioita tutkimatta päättelemään, onko kyseessä saapuva vai lähtevä "opiskelija" (opiskeluoikeudestahan tässä on kyse; opiskelijalla voi olla muita opiskeluoikeuksia siinä organisaatiossa, jossa hänen tietty opiskeluoikeus lakkautetaan).
ei oleei ole
ei oleOk.
ei oleei ole
< AlkPvmOk. Tulkitaan saapuneeksi; SiirtoPvm tarkoittaa lähdeorganisaation op.oikeuden AlkPvm:ää.
ei oleei ole
>= AlkPvmTulkitaan lähteneeksi. Virhe, jos PaatPvm ei ole asetettu; PaatPvm on oltava Siirtopvm - 1




Yllä olevien yksinkertaisten sääntöjen ja näiden seuraavien sääntöjen pitää olla hyvin pitkälti samanlaisia. 
onei olelähteväei oleVirhe.
onei olelähteväonVirhe, jos SiirtoPvm != PaatPvm+1 tai PaatPvm puuttuu





ononmolemmatei oleVirhe.
ononmolemmatonVirhe, jos SiirtoPvm >= AlkPvm ja (PaatPvm puuttuu tai SiirtoPvm != PaatPvm + 1).





ei oleonsaapuvaei oleVirhe. Ei voida tietää, milloin opiskeluoikeus alkoi lähtöorganisaatiossa.
ei oleonsaapuvaonVirhe, jos SiirtoPvm >= opiskeluoikeuden AlkPvm.



2037

Opiskeluoikeuden alkamispäivämäärä on kaukana tulevaisuudessa (> vuosi).

 

 


2038

 

Tutkinto (suorituksen laji 1) suoritettu mutta opiskeluoikeuden tila ei ole valmistunut (koodi 3).

 

Tutkintaa mukaan otetaan vain ne tutkintosuoritukset (laji = 1), joihin liitettyjen opiskeluoikeuksien alkamispäivämäärä on >= 01.01.2015,

Puute syntyy, jos ajallisesti viimeisimmän opiskeluoikeuden tilan (koodi) ei ole 3 (ml. sen, ettei ole ollenkaan opiskeluoikeuden tiloja).

 


2039

Opiskeluoikeuden päättymisen (oik.tila) pvm on varhaisempi kuin elossa oloa tarkoittavan tilan pvm.

Tarkastellaan opiskeluoikeuden tila -tietoja. Tilakoodeja ovat: 1 = aktiivinen, 2 = optio, 3 = valmistunut, 4 = passivoitu, 5 = luopunut, 6 = päättynyt.

Koodit 3, 5  ja 6 tarkoittavat, että opiskeluoikeus on lopullisesti ohi. Tällaisen tilan alkamispäivämäärän pitää siis olla suurin kaikista ko. opiskeluoikeuden tilojen alkamispäivämääristä. Puutekoodilla 2039 tarkistetaan, ettei jollain koodilla 1, 2, 4 ole suurempaa tai yhtäsuurta alkamispäivämäärää kuin jollain koodilla 3, 5, 6.


2040

Opiskeluoikeudella on useampi sen lopullista päättymistä tarkoittava tilatieto.

Tarkastellaan opiskeluoikeuden tila -tietoja. Tilakoodeja ovat: 1 = aktiivinen, 2 = optio, 3 = valmistunut, 4 = passivoitu, 5 = luopunut, 6 = päättynyt.

Koodit 3, 5  ja 6 tarkoittavat, että opiskeluoikeus on lopullisesti ohi. Puutekoodilla 2040 tarkistetaan, ettei opiskeluoikeudella ole useampaa tilakoodia 3, 5, 6.


Lukukausi-ilmoittautumiset

Koodit 3000-3999

Lukukausi-ilmoittauminen-tason tietojen puutteet


3001

 

Oppilaitoksella muiden korkeakoulujen lukukausi-ilmoittautumisia

Oppilaitoksella muiden korkeakoulujen lukukausi-ilmoittautumisia. Ilmoittaa tulisi vain oman organisaation lukukausi-ilmoittautumiset.


3002

 

Opiskeluoikeuteen liittyvän lukuvuosimaksun päättymispaivämäärä on pienempi kuin alkamispäivämäärä

 

Voimassaoloajallinen (alkamispäivämäärä - päättymispäivämäärä) tieto päättyy ennen alkamistaan.


3003

 

Lukukausi-ilmoittautumisen päättymispaivämäärä on pienempi kuin alkamispäivämäärä

 

Voimassaoloajallinen (alkamispäivämäärä - päättymispäivämäärä) tieto päättyy ennen alkamistaan.


3004

 

Lukuvuosimaksun velvollisuusjaksojen pitäisi olla lukuvuoden(kauden) alkamis- ja päättymispäivämäärien mukaisia

 

Alkamispäivämäärän oltava 01.08 tai 01.01 ja päättymispäivämäärän 31.12 tai 31.07, eikä alkamis- ja päättymispäivämäärän välinen aina saa olla niin suuri, että maksu koskisi enempää kuin yhtä lukukautta.


Opintosuoritukset

Koodit 4000-4999

 Opintosuoritus-tason tietojen puutteet


4001

Opintosuoritukselta puuttuu nimi

Mikäli tiedoista löytyy opintosuorituksia joihin liittyen ei ole minkäänlaista nimeä, ilmoitetaan tämä puutteena.


4002

Opintosuoritukselta puuttuu arvosana

Mikäli tiedoista löytyy opintosuorituksia joihin liittyen ei ole minkäänlaista arvosanaa, ilmoitetaan tämä puutteena.


4003

Opintosuoritukselta puuttuu koulutusala

Mikäli tiedoista löytyy opintosuorituksia joihin liittyen ei ole lainkaan koulutusala-tietoa (koulutusala2002 tai opintoala1995), ilmoitetaan tämä puutteena.
Opintosuoritukset jotka tarkistetaan laji 2.  Ei tarkisteta kokonaisuuksia, eli suorituksia jotka sisältävät muita suorituksia.

 


4004

Koulutusaste puuttuu



4005

Opintosuoritukselta (laji: tutkinto) puuttuu tutkintonimike/koulutuskoodi

Mikäli tutkintolajiselta opintosuoritukselta puuttuu koulutuskoodi, ilmoitetaan tämä puutteena.


4006

Opintosuoritukselta puuttuu opiskeluoikeus (AMK)

Tarkistetaan Ammattikorkeakoulujen osalta. Opintosuoritusten yhteydessä pitää ilmoittaa opiskeluoikeus.


4007

Opintosuoritus virheellisellä sisältyvyyden avaintiedolla

Mikäli XML-tiedoissa on ilmoitettu opintosuorituksen sisältyvyys, mutta sisaltyvaOpintosuoritusavain-tieto ei ole sama kuin mikään varsinainen opintosuorituksen avain-tieto, ilmoitetaan tämä puutteena. Tarkistetaan vain suorituksilta, jotka on suoritettu vuonna 2006 tai sen jälkeen.


4008

Opintosuorituksella on monta myöntäjää

Katsotaan onko opintosuoritukseen ilmoitettu organisaatio-tietoa erikseen roolilla 1='myöntävä'. Jos on, tämä aiheuttaa sen että opintosuorituksella on monta myöntäjää.


4009

Tutkintosuoritukselta puuttuu opiskeluoikeusliitäntä

Tutkintosuoritus tulee olla liitetty opiskeluoikeuteen, siihen opiskeluoikeuteen josta valmistunut.
Tarkistetaan vain suorituksilta jotka suoritettu vuonna 2000 tai sen jälkeen.


4010

Suorituspäivämäärä tulevaisuudessa (yli 1 v)

Suorituksen suorituspäivämäärä on yli vuoden tulevaisuudessa


4011

Erikois(hammas)lääkäri tutkintosuoritus (2015 alkaen ei ole tutkinto)

Valmistuneelle erikoislääkärille tuotu tutkintosuoritus (opintosuoritus laji 1). Vuodesta 2015 ei ole tutkinto.


4012

Opintosuoritus (suorituspäivämäärä) ajalla, jolloin opiskeluoikeudella ei ole opiskeluoikeusjaksoa

Opiskeluoikeudella ja opiskeluoikeusjaksolla olevia tietoja käytetään monissa tiedonkeruuissa (suodattamaan tai luokittelemaan), joissa on mukana opiskeltu määrä; suoritus ei tule mukaan määrään, jos se ei ajallisesti yhdisty opiskeluoikeusjaksoon.

Jos opintosuoritus on hyväksiluettu suoritus, niin silloin suorituspäivämäärää ei tarkisteta, mutta hyväksilukupäivämäärällä pitää olla opiskeluoikeusjakso - jos ei ole, niin tehdään tämä puute.

Jos opintosuoritus ei ole hyväksiluettu suoritus, ja suorituspäivämäärällä ei ole opiskeluoikeusjaksoa, niin puutetta ei tehdä seuraavissa tapauksissa:

1) Jos opiskeluoikeudella on siirtopäivämäärä, niin sitä käytetään tässä tarkistuksessa opiskeluoikeuden alkamispäivämäärän tai päättymispäivämäärän sijaan. Jos siirtopäivämäärä < alkamispäivämäärä, niin opiskeluoikeus on siirron kohde (!= lähde), ja sitä käytetään alkamispäivämäärän sijaan - tulkitaan niin, että opintosuoritus on suoritettu siirron lähteessä. Jos taas siirtopäivämäärä >= alkamispäivämäärä, niin opiskeluoikeuden katsotaan päättyneen siirtopäivämäärää edeltävänä päivänä - jolloin suorituspäivämäärän pitäisi olla < siirtopäivämäärä. 

2) Suorituksen opiskeluoikeuden opiskelijalla on jokin toinen tutkinto-opiskeluoikeus (= opiskeluoikeuden tyyppi 1, 2, 3 tai 4), joka on voimassa suorituspäivämäärällä.


Puutekoodin lopussa (ja lisätiedossa) on koodattuna lisätietoa tapauksesta


4013

Organisaatiokoodi 99 hyväksiluvun lähteenä



4014

Opintosuoritus (suorituspäivämäärä) ajalla, jolloin opiskeluoikeudella ei ole aktiivista opiskeluoikeuden tilaa

Samat tarkennukset kuin puutteella 4012 (11/2023 CSCVIRTAOTP-2386).


4015

Hyväksilukemispvm on pienempi kuin suorituspvm

Opintosuorituksen pitää olla suoritettu ennen kuin se voidaan hyväksilukea, joten hyväksymukemispäivämäärä ei voi olla aiempi kuin suorituspäivämäärä.


4016

Tutkinnon (suorituksen laji 1) suorituspvm on monta (6) kuukautta tulevaisuudessa.



4017

Hyväksiluettu suoritus liikkuvuusjakson ajalla ilman lähdeorganisaatiota (org.rooli koodi 3) koodilla UK/UM

Tutkitaan liikkuvuusjaksoja, joiden liikkuvuuden suunta on lähtevä (koodi 1).

Tällä tarkistuksella yritetään saada kiinni mahdolliset tapaukset, joiden kuuluisi olla merkitty ulkomaan suorituksiksi, hyväksiluettuja UK/UM.
Koska opiskelija on ollut suorituspäivämäärällä kv-liikkuvuusjaksolla, niin puutetarkistuksessa oletetaan suorituksen tehdyn ulkomailla,
mutta suoritusta ei kuitenkaan korkeakoulussa ole merkitty koodilla UK/UM.

Liikkuvuusjakson ajalla voi toki tulla suorituksia, jotka eivät ole ulkomaan, vaan jotain muuta, kuten avoimen opintoja jostain MOOCista.

Kyseiset opintopisteet, jos kuuluisi olla UK/UM, jäävät pois esim. OKM opintopistekeruun ulkomailla suoritetut opinnot pistekertymästä
https://wiki.eduuni.fi/display/CSCVIRTA/Opintopistetiedonkeruu+AMK#OpintopistetiedonkeruuAMK-Ulkomailla


sekä myös myöhemmin TK Tutkintokeruussa "Ulkomailla suoritetut opintopisteet (opulk)" pisteistä.
https://wiki.eduuni.fi/display/CSCVIRTA/Tilastokeskuksen+tutkintotiedonkeruu+ammattikorkeakoulut#Tilastokeskuksentutkintotiedonkeruuammattikorkeakoulut-Ulkomaillasuoritetutopintopisteet(opulk)

Ja voi vaikuttaa myös Kelan edistymisen seurannassa jossa hyväksiluetut pisteet lasketaan  mukaan kertymään siinä tapauksessa että niiden lähde ei ole kotimainen korkeakoulu.
Eli jos on UK/UM ne lasketaan mukaan. Juuri tällaisista jossa ei oltu merkitty ulkomaan suoritukseksi ollut viime Kelan edistymisen seurannassa tuoreita tapauksia.
Ja voinut olla merkittävistä opintopistekertymistä kyse sekä opiskelijan kannalta ikävä jos tullut Kelalta selvityspyyntö opintojen edistymisestä.
Kelan selvittäessä on sitten huomattu miksi opintopisteitä puuttunut, kun ei ollut ulkomaan vaihdosta pisteet huomioitu virheellisen kirjauksen vuoksi.
Tietysti nykyään voi olla niitä jossa kyse virtuaalisesta vaihdosta, eli ei fyysesti ole ollut ulkomailla vaihdossa, eikä näin myöskään varmaan kuulu olla ulkomailla suoritettu.

Puutelistan lisätiedossa olevat tiedot; tietojen pitäisi olla ymmärrettävissä ilman tulkkausta. Esim.

Suorituspvm=2024-03-12, Liikk.jakso=2024-01-08-2024-03-17, Hyväksilukupvm=2024-03-14, Liikk.maa=Espanja, Liikk.org=02629=Laurea-ammattikorkeakoulu,SuorOrg=Metropolia Ammattikorkeakoulu ,SuorOrgRooli=3=lähde

Yksi tulkkausesimerkki kuitenkin: "Laurean opiskelijalla on ollut kansainvälinen liikkuvuusjakso ajalla 2024-01-08 - 2024-03-17. Hänellä on tehtynä (liikkuvuusjakson ajalla) Metropoliassa opintosuoritus 2024-03-12, joka on hyväksiluettu 2024-03-14".



Liikkuvuusjaksot

Koodit 5000-

Liikkuvuusjakso-tason tietojen puutteet


5001

Liikkuvuusjakson saapuvan opiskelijan koulutusaste suomalaisessa korkeakoulussa

Tutkintaan löytyykö sellaista liikkuvuusjaksoa, jonka suunta on saapuva ja liikkuvuusjakson päättymispäivämäärä on menneisyydessä, jolta puuttuu koulutusaste (opiskeluoikeuden tyyppi -tieto).


5002

Liikkuvuusjakson päättymispäivä on varhaisempi kuin alkamispäivä

Jos löytyy liikkuvuusjaksoja, joissa päättymispäivä on varhaisempi kuin alkamispäivä, ilmoitetaan tämä puutetietona.


5003

Liikkuvuusjakson liikkuvuusohjelma puuttuu 87 pv tai pidemmältä jaksolta

Tarkistetaan liikkuvuusjaksoista, joiden kesto on 87 päivää tai enemmän, puuttuuko liikkuvuusohjelma, ja mikäli puuttuu ja liikkuvuusjakso on alkanut 1.1.2016 tai sen jälkeen, ilmoitetaan puute.


5004

Liikkuvuusjakson liikkuvuuden tyyppi puuttuu

Tarkistetaan liikkuvuusjaksoista puuttuuko liikkuvuuden tyyppi, ja mikäli puuttuu ja liikkuvuusjakso on alkanut 1.1.2016 tai sen jälkeen, ilmoitetaan puute.











4012 Opintosuoritus (suorituspäivämäärä) ajalla, jolloin opiskeluoikeudella ei ole opiskeluoikeusjaksoa

Puutetarkistuksen versiossa 20231215

1) Puutekoodin 4012 perässä on tavuviiva ja nelimerkkinen kirjain/numero-yhdistelmä, missä on lisätietoa tapauksesta. Vastaavat lisätiedot ilmenevät puutteen lisätiedon alusta.


LisatiedossaKoodien merkitysPuutekoodissaKoodien merkitys
[H0][S0][T][V1]

H0: hyväksiluettu=ei

S0: siirtyvä opiskeluoikeus=ei ole

T: on toinen tutkinto-oikeus suorituspäivämäärällä

V1: suorituspäivämäärä ennen opiskeluoikeuden alkua

V2: suorituspäivämäärä opiskeluoikeuden voimassaoloajalla

V3: suorituspäivämäärä opiskeluoikeuden päättymisen jälkeen

V2 ja V3 tapaukset lienevät kaikki selviä virheitä, riippumatta esim. siitä ovatko suoritukset kopioitu tai siirretty toiselta opiskeluoikeudelta.

00t1
  1. Onko hyväksiluettu 0/1
  2. Siirtyvä opiskeluoikeus:
    0 = ei ole, s = saapuva, l = lähtevä
  3. Onko toista tutkinto-oikeutta suorituspäivämäärällä
    t = on, u = ei ole
  4. Suorituspäivämäärä
    1 = ennen opiskeluoikeuden alkua
    2 = opiskeluoikeuden voimassaoloajalla
    3 = opiskeluoikeuden päättymisen jälkeen
[H0][S0][T][V2]
00t2
[H0][S0][T][V3]
00t3
[H0][SS][T][V1]SS: siirtyvä opiskeluoikeus=saapuva0st1
[H0][SS][T][V2]
0st2
[H0][SS][T][V3]
0st3
[H0][SL][T][V1]SL: siirtyvä opiskeluoikeus=lähtevä0lt1
[H0][SL][T][V2]
0lt2
[H0][SL][T][V3]
0lt3
[H0][S0][V1][T] puuttuu: ei ole toista tutkinto-oikeutta suorituspäivämäärällä00u1
[H0][S0][V2]
00u2
[H0][S0][V3]
00u3
[H0][SS][V1]
0su1
[H0][SS][V2]
0su2
[H0][SS][V3]
0su3
[H0][SL][V1]
0lu1
[H0][SL][V2]
0lu2
[H0][SL][V3]
0lu3




[H1][S0][T][V1]

H1: hyväksiluettu=kyllä

Muuten samoin kuin ei-hyväksiluetut.

Suorituspäivämäärän tilalla hyväksilukupäivämäärä.

10t1
...



2) Jos lisätiedossa on koodi [V1], niin puute katsotaan vanhaksi (→ ei ilmoiteta Virrasta korkeakoululle) riippumatta opiskeluoikeuden jatkumisesta, jos suoritus-/hyväksilukupäivämäärän vuosi on kuluvasta vuodesta yli kuuden vuoden päässä (esim. vuotta 2023 elettäessä se olisi < 2018).


Puutetarkistuksen versiossa 20240105: 

LisatiedossaKoodien merkitysPuutekoodissaKoodien merkitys
aa[H0][S0][Tbb][V1]

aa: Suoritukseen liittyvän opiskeluoikeuden tyyppi (alle kahden merkin mittaisen koodiarvon tapauksessa etunollitettu)

H0: hyväksiluettu=ei

S0: siirtyvä opiskeluoikeus=ei ole

Tbb: bb = suorituspäivämäärällä voimassaolevan toisen opiskeluoikeuden (kuin mihin suoritus on liitetty) tyyppi; jos useita tällaisia toisia opiskeluoikeuksia, niin niiden tyyppien pienin koodiarvo (mahdollisesti etunollitetun koodiarvon merkkijonomuotoisen arvon perusteella (ts. aakkosjärjestys)); jos ei ole yhtään, niin 00

V1: suorituspäivämäärä ennen opiskeluoikeuden alkua

V2: suorituspäivämäärä opiskeluoikeuden voimassaoloajalla

V3: suorituspäivämäärä opiskeluoikeuden päättymisen jälkeen

V2 ja V3 tapaukset lienevät kaikki selviä virheitä, riippumatta esim. siitä ovatko suoritukset kopioitu tai siirretty toiselta opiskeluoikeudelta.

S-bbE
  1. S = suoritettu, H = hyväksiluettu
  2. Siirtyvä opiskeluoikeus:
    - = ei ole, S= saapuva, L = lähtevä
  3. (bb) Toisen opiskeluoikeuden tyyppi (00 ei ole toista)
  4. Suorituspäivämäärä
    E = ennen opiskeluoikeuden alkua
    A = opiskeluoikeuden voimassaoloajalla
    J = opiskeluoikeuden päättymisen jälkeen
aa[H0][S0][Tbb][V2]
S-bbA
aa[H0][S0][Tbb][V3]
S-bbJ
aa[H0][SS][Tbb][V1]SS: siirtyvä opiskeluoikeus=saapuvaSSbbE
aa[H0][SS][Tbb][V2]
SSbbA
aa[H0][SS][Tbb][V3]
SSbbJ
aa[H0][SL][Tbb][V1]SL: siirtyvä opiskeluoikeus=lähteväSLbbE
aa[H0][SL][Tbb][V2]
SLbbA
aa[H0][SL][Tbb][V3]
SLbbJ




aa[H1][S0][Tbb][V1]

H1: hyväksiluettu=kyllä

Muuten samoin kuin ei-hyväksiluetut.

Suorituspäivämäärän tilalla hyväksilukupäivämäärä.

H-bbE
...



SQL-koodi

SQL
-- OPISKELIJA
select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '1001' as virhekoodi
, 'Opiskelijalla ei ole ollenkaan opiskeluoikeutta, lukukausi-ilmoittautumista tai opintosuoritusta' as kuvaus
, 'opiskelijaAvain' as avainsarake
, a.avain
FROM Opiskelija AS a
WHERE 1=1
AND a.ID NOT IN (
	SELECT OpiskelijaID FROM Opiskeluoikeus
)
AND a.ID NOT IN (
	SELECT OpiskelijaID FROM Opintosuoritus
)
AND a.ID NOT IN (
	SELECT OpiskelijaID FROM Lukukausi_ilmoittautuminen
)

select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '1002' as virhekoodi
, 'Opiskelijalla ei ole virallista suomalaista hetua tai kansallista oppijanumeroa' as kuvaus
, 'opiskelijaAvain' as avainsarake
, a.avain
FROM Opiskelija AS a
WHERE 1=1
AND a.HenkiloID IN (
	SELECT ID FROM Henkilo
	WHERE Henkilotunnus IS NULL
	OR Henkilotunnus NOT LIKE '______%____'
)
AND a.Kansallinen_op_id IS NULL

select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '1003' as virhekoodi
, 'Opiskelijan sukupuolitieto ei täsmää hetun kanssa' as kuvaus
, 'opiskelijaAvain' as avainsarake
, a.avain
, coalesce(a.avain,'#Puuttuu#') as opiskelijaAvain
FROM Opiskelija AS a
INNER JOIN Henkilo h ON h.ID=a.HenkiloID
where 1=1
and len(h.Henkilotunnus)=11 -- on hetu
and h.SukupuoliID is not null -- on sp
and(
	( --nainen
	   cast(substring(h.Henkilotunnus,10,1) as int)%2=0
	and h.SukupuoliID <> (select id from Sukupuoli where Koodi='2')
	)
	or
	( --mies
	   cast(substring(h.Henkilotunnus,10,1) as int)%2=1
	and h.SukupuoliID <> (select id from Sukupuoli where Koodi='1')
	)
)


-- OPISKELUOIKEUS
select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '2001' as virhekoodi
, 'Opiskeluoikeuden tila ei muodosta eheää aikajaksoa' as kuvaus
, 'opiskeluoikeusAvain' as avainsarake
, a.Avain
FROM Opiskeluoikeus AS a
INNER JOIN Op_oikeuteen_liittyva_tila AS b ON b.OpiskeluoikeusID=a.ID
WHERE 1=1
-- On usea
AND b.OpiskeluoikeusID IN (
	SELECT c.OpiskeluoikeusID
	FROM Op_oikeuteen_liittyva_tila AS c
	GROUP BY c.OpiskeluoikeusID HAVING COUNT(*)>1
)
-- Ei viimeinen
AND b.Alkamispaivamaara < (
	SELECT MAX(c.Alkamispaivamaara)
	FROM Op_oikeuteen_liittyva_tila AS c
	WHERE c.OpiskeluoikeusID=b.OpiskeluoikeusID
	GROUP BY c.OpiskeluoikeusID 
)
-- Ei seuraajaa
-- tai Paattymispaivamaaraa ei asetettu
AND(
	b.Paattymispaivamaara NOT IN (
		SELECT DATEADD(day,-1,c.Alkamispaivamaara)
		FROM Op_oikeuteen_liittyva_tila AS c
		WHERE c.OpiskeluoikeusID=b.OpiskeluoikeusID
	)
 OR b.Paattymispaivamaara IS NULL
)


select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '2002' as virhekoodi
, 'Opiskeluoikeuden opiskeluoikeusjakso ei muodosta eheää aikajaksoa' as kuvaus
, 'opiskeluoikeusAvain' as avainsarake
, a.Avain
FROM Opiskeluoikeus AS a
INNER JOIN Opiskeluoikeusjakso AS b ON b.OpiskeluoikeusID=a.ID
WHERE 1=1
-- On usea
AND b.OpiskeluoikeusID IN (
	SELECT c.OpiskeluoikeusID
	FROM Opiskeluoikeusjakso AS c
	GROUP BY c.OpiskeluoikeusID HAVING COUNT(*)>1
)
-- Ei viimeinen
AND b.Alkamispaivamaara < (
	SELECT MAX(c.Alkamispaivamaara)
	FROM Opiskeluoikeusjakso AS c
	WHERE c.OpiskeluoikeusID=b.OpiskeluoikeusID
	GROUP BY c.OpiskeluoikeusID
)
-- Ei seuraajaa
-- tai Paattymispaivamaaraa ei asetettu
AND(
	b.Paattymispaivamaara NOT IN (
		SELECT DATEADD(day,-1,c.Alkamispaivamaara)
		FROM Opiskeluoikeusjakso AS c
		WHERE c.OpiskeluoikeusID=b.OpiskeluoikeusID
	)
 OR b.Paattymispaivamaara IS NULL
)

 
select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '2003' as virhekoodi
, 'Opiskeluoikeuksien ensisijaisuuksissa päällekkäisyyksiä' as kuvaus
, 'opiskeluoikeusAvain' as avainsarake
, oik1.Avain+','+oik2.Avain
FROM Op_oikeuden_ensisijaisuus AS e1
inner join Opiskeluoikeus oik1 on oik1.ID=e1.OpiskeluoikeusID
inner join Opiskeluoikeus oik2 on oik2.OpiskelijaID=oik1.OpiskelijaID
inner join Op_oikeuden_ensisijaisuus e2 on e2.OpiskeluoikeusID=oik2.ID
WHERE 1=1
-- varmistetaan eri ensisijaisuus
AND 1 IN (
	CASE
	-- jos saman oikeuden, ...
	WHEN e1.OpiskeluoikeusID=e2.OpiskeluoikeusID THEN
	-- ...niin eri päivän => ensisijaisuudet ovat eri
		CASE WHEN e1.Alkamispaivamaara<>e2.Alkamispaivamaara THEN 1 ELSE 0 END
	ELSE
		1 -- eri oik => ok
	END
)
-- varmistetaan päällekkäisyys, siten...
AND(e1.Paattymispaivamaara BETWEEN e2.Alkamispaivamaara AND e2.Paattymispaivamaara
 OR e2.Paattymispaivamaara BETWEEN e1.Alkamispaivamaara AND e1.Paattymispaivamaara
)
--...että e1 sisältää aiemman päivämäärän
AND(e1.Alkamispaivamaara<e2.Alkamispaivamaara
 OR (e1.Alkamispaivamaara=e2.Alkamispaivamaara AND e1.Paattymispaivamaara<e2.Paattymispaivamaara)
 OR (e1.Alkamispaivamaara=e2.Alkamispaivamaara AND e1.Paattymispaivamaara=e2.Paattymispaivamaara)
)
--bonus: ilmoitetaan oikeudet vain kerran:
AND oik1.Avain<=oik2.Avain
 
select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '2004' as virhekoodi
, 'Opiskeluoikeusjaksolta puuttuu koulutuskoodi' as kuvaus
, 'opiskeluoikeusAvain' as avainsarake
, a.Avain
from Opiskeluoikeus AS a
inner join Opiskeluoikeusjakso AS b on b.OpiskeluoikeusID=a.ID
inner join Opiskeluoikeuden_tyyppi c on c.ID = a.Op_oikeuden_tyyppiID 
where b.TutkintonimikeID is null
and c.Koodi in ('1', '2', '3', '4', '5', '6', '7')

select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '2005' as virhekoodi
, 'Ensisijaisuus puuttuu tutkinto-opiskelijan opiskeluoikeuksista' as kuvaus
, 'opiskelijaAvain' as avainsarake
, a.Avain
FROM Opiskelija AS a
WHERE 1=1
-- ei niiden opiskeluoikeuksien joukossa joihin liittyy ensisijaisuus
AND a.ID NOT IN (
 select o.OpiskelijaID
 from Opiskeluoikeus o
 inner join Op_oikeuden_ensisijaisuus e on e.OpiskeluoikeusID=o.ID
)
-- on tutkintoon johtava opiskeluoikeus
AND a.ID IN (
 select o.OpiskelijaID
 from Opiskeluoikeus o
 inner join Opiskeluoikeuden_tyyppi k on k.ID=o.Op_oikeuden_tyyppiID
 where 1=1
 -- NB! Vain yliopistot!
 --and k.Koodi in ('1','2','3','4','5','6','7')
 and k.Koodi in ('2','4','5','6','7')
 -- opiskeluoikeus ollut voimassa 1.8.2005 tai sen jälkeen
 --and '2005-08-01' between o.Alkamispaivamaara and isnull(o.Paattymispaivamaara,'9999-01-01')
 -- opiskeluoikeus ollut voimassa kuluvana vuonna
 and cast(year(getdate()) as varchar)+'-01-01' <= isnull(o.Paattymispaivamaara,'9999-01-01')
)


select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '2006' as virhekoodi
, 'Opiskelijalla on vain optio-tilassa oleva opiskeluoikeus' as kuvaus
, 'opiskelijaAvain' as avainsarake
, a.Avain
FROM Opiskelija a
WHERE 1=1
-- EI niiden joukossa, joilla on muu kuin OPTIO-tilassa oleva opiskeluoikeus
AND a.ID NOT IN (
	select o2.OpiskelijaID
	from Opiskeluoikeus o2
	inner join Op_oikeuteen_liittyva_tila ot2 on ot2.OpiskeluoikeusID=o2.ID
	inner join Opiskeluoikeuden_tila t2 on t2.ID=ot2.Op_oikeuden_tilaID
	where t2.Koodi<>'2'--optio
)
-- ... mutta on OPTIO-tilassa oleva opiskeluoikeus
AND a.ID IN (
	select o.OpiskelijaID
	from Opiskeluoikeus o
	inner join Op_oikeuteen_liittyva_tila ot on ot.OpiskeluoikeusID=o.ID
	inner join Opiskeluoikeuden_tila t on t.ID=ot.Op_oikeuden_tilaID
	where t.Koodi='2'--optio
)

-- NB! Käyttää "XML_SA"-tietoja (ei yhteinen tietomalli)
select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '2007' as virhekoodi
, 'Opiskeluoikeuden liittyvyys viittaa tietoon jota ei ole' as kuvaus
, 'opiskeluoikeusAvain' as avainsarake
, a.Avain
, coalesce((select top 1 p.avain from Opiskelija p where p.ID=a.OpiskelijaID),'#Puuttuu#') as opiskelijaAvain
from Opiskeluoikeus AS a
inner join XML_SA.Opiskeluoikeus_Liittyvyys SA on SA.Opiskeluoikeus_Id=a.ID
where SA.liittyvaOpiskeluoikeusAvain not in (
	SELECT b.avain FROM Opiskeluoikeus b
)


select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '2008' as virhekoodi
, 'Opiskeluoikeudella on monta myöntäjää' as kuvaus
, 'opiskeluoikeusAvain' as avainsarake
, a.Avain
, coalesce((select top 1 p.avain from Opiskelija p where p.ID=a.OpiskelijaID),'#Puuttuu#') as opiskelijaAvain
from Opiskeluoikeus a
inner join Op_oikeuden_organisaatio ag on ag.OpiskeluoikeusID=a.ID
inner join Organisaation_rooli as gr on gr.ID=ag.Organisaation_rooliID
where gr.Koodi='1' --myöntävä
group by a.OpiskelijaID, a.Avain having COUNT(*)>1

-- LUKUKAUSI-ILMOITTAUTUMINEN
select  GETDATE() as pvm
, 'PUUTE' as tyyppi
, '3001' as virhekoodi
, 'Oppilaitoksella muiden korkeakoulujen lukukausi-ilmoittautumisia' as kuvaus
, 'opiskelijaAvain # opiskseluoikeusAvain' as avainsarake
, substring(Avain, (charindex('#',avain)+1), (len(avain) - (charindex('#', reverse(avain)) + (charindex('#',avain)))))
from Lukukausi_ilmoittautuminen a
inner join Organisaatio as b on a.OrganisaatioID = b.id
and b.Koodi not in (select OrganisaatioKoodi from Yhteiset.Asetukset.Instanssit where db = 'CSC')

-- OPINTOSUORITUS
select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '4001' as virhekoodi
, 'Opintosuoritukselta puuttuu nimi' as kuvaus
, 'opintosuoritusAvain' as avainsarake
, a.Avain
FROM Opintosuoritus AS a
WHERE a.Nimi IS NULL
AND a.Avain NOT IN (
	select b.Avain from Kieliversio b
	where b.OminaisuusID in (
		select c.id from Ominaisuus c
		where c.Nimi='Nimi'
		and c.KasiteID in (
			select d.ID from Kasite d
			where d.Nimi='Opintosuoritus'
		)
	)
)

select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '4002' as virhekoodi
, 'Opintosuoritukselta puuttuu arvosana' as kuvaus
, 'opintosuoritusAvain' as avainsarake
, a.Avain
FROM Opintosuoritus AS a
WHERE a.ArvosanaID IS NULL

select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '4003' as virhekoodi
, 'Opintosuoritukselta puuttuu koulutusala' as kuvaus
, 'opintosuoritusAvain' as avainsarake
, a.Avain
FROM Opintosuoritus a
inner join Opintosuorituksen_laji sl on sl.ID=a.Opintosuorituksen_lajiID
WHERE a.ID NOT IN (
	SELECT OpintosuoritusID FROM Op_suor_koulutusala
)
AND sl.Koodi=2 -- muu opintosuoritus

select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '4005' as virhekoodi
, 'Opintosuoritukselta (laji: tutkinto) puuttuu tutkintonimike/koulutuskoodi' as kuvaus
, 'opintosuoritusAvain' as avainsarake
, a.Avain
FROM Opintosuoritus AS a
WHERE a.TutkintonimikeID IS NULL
AND a.Opintosuorituksen_lajiID = (
	SELECT ID FROM Opintosuorituksen_laji WHERE Koodi='1' --Tutkinto
)

-- jos AMK:
select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '4006' as virhekoodi
, 'Opintosuoritukselta puuttuu opiskeluoikeus' as kuvaus
, 'opintosuoritusAvain' as avainsarake
, a.avain
from opintosuoritus a
where a.opiskeluoikeusid is null

-- NB! Käytetään XML_SA-taulua hyväksi (_Id = .id)
-- Katsotaan vain vuoden 2006 ja jälkeen suoritettuja (bologna jne).
select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '4007' as virhekoodi
, 'Opintosuoritus virheellisellä sisältyvyyden avaintiedolla' as kuvaus
, 'opintosuoritusAvain' as avainsarake
, a.Avain
from Opintosuoritus AS a
inner join XML_SA.Opintosuoritus_Sisaltyvyys SA on SA.Opintosuoritus_Id=a.ID
where SA.sisaltyvaOpintosuoritusAvain not in (
	SELECT b.avain FROM Opintosuoritus b
)
and YEAR(a.Suorituspaivamaara) >= 2006

 
-- NB! Käyttää "XML_SA"-tietoja (ei yhteinen tietomalli)
select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '4008' as virhekoodi
, 'Opintosuorituksella on monta myöntäjää' as kuvaus
, 'opintosuoritusAvain' as avainsarake
, a.Avain
, coalesce((select top 1 p.avain from Opiskelija p where p.ID=a.OpiskelijaID),'#Puuttuu#') as opiskelijaAvain
from Opintosuoritus a
inner join Op_suorituksen_organisaatio ag on ag.OpintosuoritusID=a.ID
inner join Organisaation_rooli as gr on gr.ID=ag.Organisaation_rooliID
where gr.Koodi='1' --myöntävä
group by a.OpiskelijaID, a.Avain having COUNT(*)>1
 
--
-- LIIKKUVUUSJAKSOT
select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '5001' as virhekoodi
, 'Liikkuvuusjakson saapuvan opiskelijan koulutusaste suomalaisessa korkeakoulussa' as kuvaus
, 'liikkuvuusjaksoAvain' as avainsarake
, a.Avain
, coalesce((select top 1 p.avain from Opiskelija p where p.ID=a.OpiskelijaID),'#Puuttuu#') as opiskelijaAvain
FROM Liikkuvuusjakso AS a
INNER JOIN Liikkuvuuden_suunta AS ks on ks.ID=a.Liikkuvuuden_suuntaID
WHERE ks.Koodi='2' --Saapuva
AND a.Opiskeluoikeuden_tyyppiID IS NULL --"koulutusaste" puuttuu
AND GETDATE() > coalesce(a.Paattymispaivamaara,'9999-9-9') --päättynyt menneisyydessä


select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '5002' as virhekoodi
, 'Liikkuvuusjakson päättymispäivä on varhaisempi kuin alkamispäivä' as kuvaus
, 'liikkuvuusjaksoAvain' as avainsarake
, a.Avain
, coalesce((select top 1 p.avain from Opiskelija p where p.ID=a.OpiskelijaID),'#Puuttuu#') as opiskelijaAvain
-- ++
, a.db
, a.Alkamispaivamaara, a.Paattymispaivamaara
, DATEDIFF(day,a.alkamispaivamaara,coalesce(a.paattymispaivamaara,'9999-9-9'))
FROM Liikkuvuusjakso AS a
WHERE 1=1
AND a.Paattymispaivamaara < a.Alkamispaivamaara

select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '5003' as virhekoodi
, 'Liikkuvuusjakson liikkuvuusohjelma puuttuu 87 pv tai pidemmältä jaksolta' as kuvaus
, 'liikkuvuusjaksoAvain' as avainsarake
, a.Avain
, coalesce((select top 1 p.avain from Opiskelija p where p.ID=a.OpiskelijaID),'#Puuttuu#') as opiskelijaAvain
FROM Liikkuvuusjakso AS a
WHERE 1=1
-- Liikkuvuusohjelma puuttuu
AND a.LiikkuvuusohjelmaID is null
-- 87 pv tai enemmän kestänyt
AND DATEDIFF(day,a.Alkamispaivamaara,coalesce(a.Paattymispaivamaara,'9999-9-9')) >= 87
-- ei kuitenkaan liian varhaisia (2016 tai jälkeen *alkaneet* (vs voimassa olleet))
AND coalesce(a.Alkamispaivamaara,'1900-1-1') >= '2016-01-01'

select GETDATE() as pvm
, 'PUUTE' as tyyppi
, '5004' as virhekoodi
, 'Liikkuvuusjakson liikkuvuuden tyyppi puuttuu' as kuvaus
, 'liikkuvuusjaksoAvain' as avainsarake
, a.Avain
, coalesce((select top 1 p.avain from Opiskelija p where p.ID=a.OpiskelijaID),'#Puuttuu#') as opiskelijaAvain
FROM Liikkuvuusjakso AS a
WHERE 1=1
-- Liikkuvuuden tyyppi puuttuu
AND a.Liikkuvuuden_tyyppiID is null
-- ei kuitenkaan liian varhaisia (2016 tai jälkeen *alkaneet* (vs voimassa olleet))
AND coalesce(a.Alkamispaivamaara,'1900-1-1') >= '2016-01-01'

  • No labels