diff --git a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotAmmatillinenSchema.scala b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotAmmatillinenSchema.scala index 9bd28830a6..b41d67924d 100644 --- a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotAmmatillinenSchema.scala +++ b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotAmmatillinenSchema.scala @@ -142,6 +142,8 @@ case class AktiivisetJaPäättyneetOpinnotAmmatillinenTutkintoKoulutus( perusteenDiaarinumero: Option[String], perusteenNimi: Option[schema.LocalizedString], koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends AktiivisetJaPäättyneetOpinnotAmmatillisenSuorituksenKoulutusmoduuli trait AktiivisetJaPäättyneetOpinnotMuuAmmatillinenKoulutus extends AktiivisetJaPäättyneetOpinnotAmmatillisenSuorituksenKoulutusmoduuli @@ -150,29 +152,39 @@ trait AktiivisetJaPäättyneetOpinnotMuuAmmatillinenKoulutus extends AktiivisetJ case class AktiivisetJaPäättyneetOpinnotAmmatilliseenTehtäväänValmistavaKoulutus( tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, kuvaus: Option[schema.LocalizedString], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends AktiivisetJaPäättyneetOpinnotMuuAmmatillinenKoulutus @Title("Paikallinen muu ammatillinen koulutus") case class AktiivisetJaPäättyneetOpinnotPaikallinenMuuAmmatillinenKoulutus( tunniste: AktiivisetJaPäättyneetOpinnotPaikallinenKoodi, - kuvaus: schema.LocalizedString -) extends AktiivisetJaPäättyneetOpinnotMuuAmmatillinenKoulutus + kuvaus: schema.LocalizedString, + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] + ) extends AktiivisetJaPäättyneetOpinnotMuuAmmatillinenKoulutus case class AktiivisetJaPäättyneetOpinnotTelmaKoulutus( tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, perusteenDiaarinumero: Option[String], koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends AktiivisetJaPäättyneetOpinnotAmmatillisenSuorituksenKoulutusmoduuli case class AktiivisetJaPäättyneetOpinnotTutkinnonOsaaPienemmistäKokonaisuuksistaKoostuvaKoulutus( tunniste: AktiivisetJaPäättyneetOpinnotPaikallinenKoodi, kuvaus: schema.LocalizedString, + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends AktiivisetJaPäättyneetOpinnotAmmatillisenSuorituksenKoulutusmoduuli case class AktiivisetJaPäättyneetOpinnotValmaKoulutus( tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, perusteenDiaarinumero: Option[String], koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends AktiivisetJaPäättyneetOpinnotAmmatillisenSuorituksenKoulutusmoduuli case class OsaamisenHankkimistapa ( diff --git a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotEBTutkintoSchema.scala b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotEBTutkintoSchema.scala index 44412cdbe3..78411bec02 100644 --- a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotEBTutkintoSchema.scala +++ b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotEBTutkintoSchema.scala @@ -40,5 +40,7 @@ case class AktiivisetJaPäättyneetOpinnotEBTutkinnonPäätasonSuoritus( case class AktiivisetJaPäättyneetOpinnotEBTutkinnonKoulutusmoduuli( tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, curriculum: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, - koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite] + koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKooditettuKoulutusmoduuli diff --git a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotESHSchema.scala b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotESHSchema.scala index 24cb4deba8..18be3d43bb 100644 --- a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotESHSchema.scala +++ b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotESHSchema.scala @@ -41,5 +41,7 @@ case class AktiivisetJaPäättyneetOpinnotEuropeanSchoolOfHelsinkiPäätasonSuor case class AktiivisetJaPäättyneetOpinnotESHKoulutusmoduuli( tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, curriculum: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, - koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite] + koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKooditettuKoulutusmoduuli diff --git a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotInternationalSchoolSchema.scala b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotInternationalSchoolSchema.scala index bab82df6d1..85a7529710 100644 --- a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotInternationalSchoolSchema.scala +++ b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotInternationalSchoolSchema.scala @@ -43,4 +43,6 @@ case class AktiivisetJaPäättyneetOpinnotInternationalSchoolKoulutusmoduuli( tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite], diplomaType: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKooditettuKoulutusmoduuli diff --git a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotKorkeakouluSchema.scala b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotKorkeakouluSchema.scala index e38c718d5c..f4b85f3920 100644 --- a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotKorkeakouluSchema.scala +++ b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotKorkeakouluSchema.scala @@ -64,6 +64,8 @@ object AktiivisetJaPäättyneetOpinnotKorkeakoulunOpiskeluoikeus { koulutusmoduuli = AktiivisetJaPäättyneetOpinnotKorkeakoulunOpintojakso( tunniste = AktiivisetJaPäättyneetOpinnotPaikallinenKoodi.fromKoskiSchema(s.koulutusmoduuli.tunniste), nimi = s.koulutusmoduuli.nimi, + eurooppalainenTutkintojenViitekehysEQF = None, // Täydennetään myöhemmässä vaiheessa + kansallinenTutkintojenViitekehysNQF = None, // Täydennetään myöhemmässä vaiheessa ), vahvistus = s.vahvistus.map(v => Vahvistus(v.päivä)), suorituskieli = s.suorituskieli.map(AktiivisetJaPäättyneetOpinnotKoodistokoodiviite.fromKoskiSchema), @@ -79,7 +81,9 @@ object AktiivisetJaPäättyneetOpinnotKorkeakoulunOpiskeluoikeus { koulutusmoduuli = AktiivisetJaPäättyneetOpinnotKorkeakoulututkinto( tunniste = AktiivisetJaPäättyneetOpinnotKoodistokoodiviite.fromKoskiSchema(s.koulutusmoduuli.tunniste), koulutustyyppi = s.koulutusmoduuli.koulutustyyppi.map(AktiivisetJaPäättyneetOpinnotKoodistokoodiviite.fromKoskiSchema), - virtaNimi = s.koulutusmoduuli.virtaNimi + virtaNimi = s.koulutusmoduuli.virtaNimi, + eurooppalainenTutkintojenViitekehysEQF = None, // Täydennetään myöhemmässä vaiheessa + kansallinenTutkintojenViitekehysNQF = None, // Täydennetään myöhemmässä vaiheessa ), vahvistus = s.vahvistus.map(v => Vahvistus(v.päivä)), suorituskieli = s.suorituskieli.map(AktiivisetJaPäättyneetOpinnotKoodistokoodiviite.fromKoskiSchema), @@ -95,6 +99,8 @@ object AktiivisetJaPäättyneetOpinnotKorkeakoulunOpiskeluoikeus { koulutusmoduuli = AktiivisetJaPäättyneetOpinnotMuuKorkeakoulunOpinto( tunniste = AktiivisetJaPäättyneetOpinnotKoodistokoodiviite.fromKoskiSchema(s.koulutusmoduuli.tunniste), nimi = s.koulutusmoduuli.nimi, + eurooppalainenTutkintojenViitekehysEQF = None, // Täydennetään myöhemmässä vaiheessa + kansallinenTutkintojenViitekehysNQF = None, // Täydennetään myöhemmässä vaiheessa ), vahvistus = s.vahvistus.map(v => Vahvistus(v.päivä)), suorituskieli = s.suorituskieli.map(AktiivisetJaPäättyneetOpinnotKoodistokoodiviite.fromKoskiSchema), @@ -191,19 +197,25 @@ case class AktiivisetJaPäättyneetOpinnotLukuvuosi_IlmoittautumisjaksonLukuvuos case class AktiivisetJaPäättyneetOpinnotMuuKorkeakoulunOpinto( tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, nimi: schema.LocalizedString, + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKoulutusmoduuli @Title("Korkeakoulututkinto") case class AktiivisetJaPäättyneetOpinnotKorkeakoulututkinto( tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite], - virtaNimi: Option[schema.LocalizedString] + virtaNimi: Option[schema.LocalizedString], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKoulutusmoduuli @Title("Korkeakoulun opintojakso") case class AktiivisetJaPäättyneetOpinnotKorkeakoulunOpintojakso( tunniste: AktiivisetJaPäättyneetOpinnotPaikallinenKoodi, nimi: schema.LocalizedString, + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKoulutusmoduuli @Title("Koulutuskuntajakso") diff --git a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotMUKSSchema.scala b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotMUKSSchema.scala index 7a146d7bab..57b0d71563 100644 --- a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotMUKSSchema.scala +++ b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotMUKSSchema.scala @@ -40,4 +40,6 @@ case class AktiivisetJaPäättyneetOpinnotMuuKuinSäänneltyKoulutus( tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite], opintokokonaisuus: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKoulutusmoduuli diff --git a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotSchema.scala b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotSchema.scala index 579b4245e9..e893ad972a 100644 --- a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotSchema.scala +++ b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotSchema.scala @@ -1,6 +1,7 @@ package fi.oph.koski.aktiivisetjapaattyneetopinnot import fi.oph.koski.henkilo.LaajatOppijaHenkilöTiedot +import fi.oph.koski.koodisto.KoodistoViitePalvelu import fi.oph.koski.schema import fi.oph.koski.schema.annotation.{Deprecated, KoodistoUri, Representative} import fi.oph.scalaschema.annotation.{Discriminator, ReadFlattened, SyntheticProperty, Title} @@ -67,10 +68,17 @@ trait Suoritus { def tyyppi: schema.Koodistokoodiviite def vahvistus: Option[Vahvistus] def toimipiste: Option[Toimipiste] + + def withKoulutusmoduuli(km: SuorituksenKoulutusmoduuli): Suoritus = { + import mojave._ + shapeless.lens[Suoritus].field[SuorituksenKoulutusmoduuli]("koulutusmoduuli").set(this)(km) + } } trait AktiivisetJaPäättyneetOpinnotKoodiViite { def koodiarvo: String + + def toKoskiSchema: Option[schema.Koodistokoodiviite] } @Title("Koodistokoodiviite") @@ -80,7 +88,21 @@ case class AktiivisetJaPäättyneetOpinnotKoodistokoodiviite( lyhytNimi: Option[schema.LocalizedString], koodistoUri: Option[String], koodistoVersio: Option[Int] -) extends AktiivisetJaPäättyneetOpinnotKoodiViite +) extends AktiivisetJaPäättyneetOpinnotKoodiViite { + def toKoskiSchema: Option[schema.Koodistokoodiviite] = { + koodistoUri match { + case Some(uri) => + Some(schema.Koodistokoodiviite( + koodiarvo, + nimi, + lyhytNimi, + uri, + koodistoVersio + )) + case _ => None + } + } +} object AktiivisetJaPäättyneetOpinnotKoodistokoodiviite{ def fromKoskiSchema(kv: schema.Koodistokoodiviite) = AktiivisetJaPäättyneetOpinnotKoodistokoodiviite( @@ -97,7 +119,9 @@ case class AktiivisetJaPäättyneetOpinnotPaikallinenKoodi( koodiarvo: String, nimi: schema.LocalizedString, koodistoUri: Option[String] -) extends AktiivisetJaPäättyneetOpinnotKoodiViite +) extends AktiivisetJaPäättyneetOpinnotKoodiViite { + def toKoskiSchema: Option[schema.Koodistokoodiviite] = None +} object AktiivisetJaPäättyneetOpinnotPaikallinenKoodi { def fromKoskiSchema(kv: schema.PaikallinenKoodi) = AktiivisetJaPäättyneetOpinnotPaikallinenKoodi( @@ -142,6 +166,36 @@ trait AktiivisetJaPäättyneetOpinnotOpiskeluoikeudenLisätiedot trait SuorituksenKoulutusmoduuli { def tunniste: AktiivisetJaPäättyneetOpinnotKoodiViite + + @KoodistoUri("eqf") + def eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite] + @KoodistoUri("nqf") + def kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] + + def withViitekehykset(koodistoViitePalvelu: KoodistoViitePalvelu): SuorituksenKoulutusmoduuli = { + import mojave._ + + val eqf: Option[schema.Koodistokoodiviite] = haeSisältyväKoodi(koodistoViitePalvelu, "eqf") + val nqf: Option[schema.Koodistokoodiviite] = haeSisältyväKoodi(koodistoViitePalvelu, "nqf") + + val withEqf = shapeless.lens[SuorituksenKoulutusmoduuli].field[Option[schema.Koodistokoodiviite]]("eurooppalainenTutkintojenViitekehysEQF").set(this)(eqf) + shapeless.lens[SuorituksenKoulutusmoduuli].field[Option[schema.Koodistokoodiviite]]("kansallinenTutkintojenViitekehysNQF").set(withEqf)(nqf) + } + + private def haeSisältyväKoodi(koodistoViitePalvelu: KoodistoViitePalvelu, koodistoUri: String): Option[schema.Koodistokoodiviite] = { + val koodisto = koodistoViitePalvelu.koodistoPalvelu.getLatestVersionRequired(koodistoUri) + tunniste.toKoskiSchema match { + case Some(koodiViite) => + val sisältyvä: Option[schema.Koodistokoodiviite] = koodistoViitePalvelu.getSisältyvätKoodiViitteet(koodisto, koodiViite) match { + case Some(List(viite)) => + Some(viite) + case _ => + None + } + sisältyvä + case None => None + } + } } trait SuorituksenKooditettuKoulutusmoduuli extends SuorituksenKoulutusmoduuli { @@ -162,6 +216,8 @@ case class AktiivisetJaPäättyneetOpinnotPäätasonKoulutusmoduuli( tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, perusteenDiaarinumero: Option[String], koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKooditettuKoulutusmoduuli @ReadFlattened diff --git a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotService.scala b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotService.scala index 765aa6aaad..843906523d 100644 --- a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotService.scala +++ b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotService.scala @@ -66,6 +66,7 @@ class AktiivisetJaPäättyneetOpinnotService(application: KoskiApplication) exte .filter(josYOTutkintoNiinVahvistettu) .filter(josEBTutkintoNiinVahvistettu) .filter(vähintäänS5josESHSecondaryLower) + .map(lisääViitekehystiedot) ) }.filter(_.suoritukset.nonEmpty) } @@ -115,4 +116,8 @@ class AktiivisetJaPäättyneetOpinnotService(application: KoskiApplication) exte case _ => true } } + + private def lisääViitekehystiedot(s: Suoritus): Suoritus = { + s.withKoulutusmoduuli(s.koulutusmoduuli.withViitekehykset(application.koodistoViitePalvelu)) + } } diff --git a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotVSTSchema.scala b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotVSTSchema.scala index da2d6b635d..53d1a6f3a8 100644 --- a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotVSTSchema.scala +++ b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotVSTSchema.scala @@ -76,6 +76,8 @@ case class AktiivisetJaPäättyneetOpinnotVapaanSivistystyönMaahanmuuttajienKot tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, perusteenDiaarinumero: Option[String], koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKooditettuKoulutusmoduuli @Title("Oppivelvollisille suunnattu vapaan sivistystyön koulutus") @@ -83,6 +85,8 @@ case class AktiivisetJaPäättyneetOpinnotOppivelvollisilleSuunnattuVapaanSivist tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, perusteenDiaarinumero: Option[String], koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKooditettuKoulutusmoduuli @Title("Vapaan sivistystyön JOTPA-koulutus") @@ -90,6 +94,8 @@ case class AktiivisetJaPäättyneetOpinnotVapaanSivistystyönJotpaKoulutus( tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite], opintokokonaisuus: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKooditettuKoulutusmoduuli @Title("Vapaan sivistystyön lukutaitokoulutus") @@ -97,4 +103,6 @@ case class AktiivisetJaPäättyneetOpinnotVapaanSivistystyönLukutaitokoulutus( tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, perusteenDiaarinumero: Option[String], koulutustyyppi: Option[AktiivisetJaPäättyneetOpinnotKoodistokoodiviite], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKooditettuKoulutusmoduuli diff --git a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotYlioppilastutkintoSchema.scala b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotYlioppilastutkintoSchema.scala index 0e33729bfe..c8b34b90ba 100644 --- a/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotYlioppilastutkintoSchema.scala +++ b/src/main/scala/fi/oph/koski/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotYlioppilastutkintoSchema.scala @@ -33,7 +33,9 @@ object AktiivisetJaPäättyneetOpinnotYlioppilastutkinnonOpiskeluoikeus { ), suoritukset = yo.suoritukset.map(s => AktiivisetJaPäättyneetOpinnotYlioppilastutkinnonPäätasonSuoritus( AktiivisetJaPäättyneetOpinnotYlioppilastutkinnonSuorituksenKoulutusmoduuli( - AktiivisetJaPäättyneetOpinnotKoodistokoodiviite.fromKoskiSchema(s.koulutusmoduuli.tunniste) + AktiivisetJaPäättyneetOpinnotKoodistokoodiviite.fromKoskiSchema(s.koulutusmoduuli.tunniste), + eurooppalainenTutkintojenViitekehysEQF = None, // Täydennetään myöhemmässä vaiheessa + kansallinenTutkintojenViitekehysNQF = None, // Täydennetään myöhemmässä vaiheessa ), Some(Toimipiste( s.toimipiste.oid, @@ -77,5 +79,7 @@ case class AktiivisetJaPäättyneetOpinnotYlioppilastutkinnonPäätasonSuoritus( case class AktiivisetJaPäättyneetOpinnotYlioppilastutkinnonSuorituksenKoulutusmoduuli( tunniste: AktiivisetJaPäättyneetOpinnotKoodistokoodiviite, + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKoulutusmoduuli diff --git a/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotAmmatillinenSchema.scala b/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotAmmatillinenSchema.scala index 8d76dbea4b..dd7d2c70d7 100644 --- a/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotAmmatillinenSchema.scala +++ b/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotAmmatillinenSchema.scala @@ -1,6 +1,7 @@ package fi.oph.koski.suoritetuttutkinnot import fi.oph.koski.schema +import fi.oph.koski.schema.Koodistokoodiviite import fi.oph.koski.schema.annotation.{Deprecated, KoodistoKoodiarvo} import fi.oph.koski.util.DateOrdering.localDateOptionOrdering import fi.oph.scalaschema.annotation.{Description, ReadFlattened, Title} @@ -103,13 +104,17 @@ case class SuoritetutTutkinnotKokoTaiOsittaisenAmmatillisenTutkinnonKoulutusmodu tunniste: SuoritetutTutkinnotKoodistokoodiviite, perusteenDiaarinumero: Option[String], perusteenNimi: Option[schema.LocalizedString], - koulutustyyppi: Option[SuoritetutTutkinnotKoodistokoodiviite] + koulutustyyppi: Option[SuoritetutTutkinnotKoodistokoodiviite], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuoritetutTutkinnotAmmatillisenSuorituksenKoulutusmoduuli case class SuoritetutTutkinnotMuunAmmatillisenKoulutuksenKoulutusmoduuli( tunniste: SuoritetutTutkinnotKoodistokoodiviite, laajuus: Option[SuoritetutTutkinnotLaajuus], - kuvaus: Option[schema.LocalizedString] + kuvaus: Option[schema.LocalizedString], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuoritetutTutkinnotAmmatillisenSuorituksenKoulutusmoduuli trait OsaamisenHankkimistapa { diff --git a/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotDIASchema.scala b/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotDIASchema.scala index 539aefa897..07172c574d 100644 --- a/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotDIASchema.scala +++ b/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotDIASchema.scala @@ -33,5 +33,7 @@ case class SuoritetutTutkinnotDIATutkinnonSuoritus( ) extends Suoritus case class SuoritetutTutkinnotDIATutkinto( - tunniste: SuoritetutTutkinnotKoodistokoodiviite + tunniste: SuoritetutTutkinnotKoodistokoodiviite, + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKoulutusmoduuli diff --git a/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotEBSchema.scala b/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotEBSchema.scala index d9babdd3ab..71b8653084 100644 --- a/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotEBSchema.scala +++ b/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotEBSchema.scala @@ -34,5 +34,7 @@ case class SuoritetutTutkinnotEBTutkinnonSuoritus( case class SuoritetutTutkinnotEBTutkinto( tunniste: SuoritetutTutkinnotKoodistokoodiviite, - curriculum: SuoritetutTutkinnotKoodistokoodiviite + curriculum: SuoritetutTutkinnotKoodistokoodiviite, + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKoulutusmoduuli diff --git a/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotKorkeakouluSchema.scala b/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotKorkeakouluSchema.scala index 07cd3f685c..9dfece28b9 100644 --- a/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotKorkeakouluSchema.scala +++ b/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotKorkeakouluSchema.scala @@ -35,7 +35,9 @@ object SuoritetutTutkinnotKorkeakoulunOpiskeluoikeus { SuoritetutTutkinnotKorkeakoulututkinto( SuoritetutTutkinnotKoodistokoodiviite.fromKoskiSchema(s.koulutusmoduuli.tunniste), s.koulutusmoduuli.koulutustyyppi.map(SuoritetutTutkinnotKoodistokoodiviite.fromKoskiSchema), - s.koulutusmoduuli.virtaNimi + s.koulutusmoduuli.virtaNimi, + eurooppalainenTutkintojenViitekehysEQF = None, + kansallinenTutkintojenViitekehysNQF = None // TODO: TOR-2210 ), Some(Toimipiste( s.toimipiste.oid, @@ -81,5 +83,7 @@ case class SuoritetutTutkinnotKorkeakoulututkinnonSuoritus( case class SuoritetutTutkinnotKorkeakoulututkinto( tunniste: SuoritetutTutkinnotKoodistokoodiviite, koulutustyyppi: Option[SuoritetutTutkinnotKoodistokoodiviite], - virtaNimi: Option[schema.LocalizedString] + virtaNimi: Option[schema.LocalizedString], + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKoulutusmoduuli diff --git a/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotSchema.scala b/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotSchema.scala index 0311c1dfb2..c36e0b5c46 100644 --- a/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotSchema.scala +++ b/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotSchema.scala @@ -1,6 +1,7 @@ package fi.oph.koski.suoritetuttutkinnot import fi.oph.koski.henkilo.LaajatOppijaHenkilöTiedot +import fi.oph.koski.koodisto.KoodistoViitePalvelu import fi.oph.koski.schema import fi.oph.koski.schema.annotation.{Deprecated, KoodistoUri} import fi.oph.scalaschema.annotation.Discriminator @@ -50,10 +51,41 @@ trait Suoritus{ @Discriminator def tyyppi: schema.Koodistokoodiviite def vahvistus: Option[Vahvistus] + + def withKoulutusmoduuli(km: SuorituksenKoulutusmoduuli): Suoritus = { + import mojave._ + shapeless.lens[Suoritus].field[SuorituksenKoulutusmoduuli]("koulutusmoduuli").set(this)(km) + } } trait SuorituksenKoulutusmoduuli { def tunniste: SuoritetutTutkinnotKoodistokoodiviite + + @KoodistoUri("eqf") + def eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite] + @KoodistoUri("nqf") + def kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] + + def withViitekehykset(koodistoViitePalvelu: KoodistoViitePalvelu): SuorituksenKoulutusmoduuli = { + import mojave._ + + val eqf: Option[schema.Koodistokoodiviite] = haeSisältyväKoodi(koodistoViitePalvelu, "eqf") + val nqf: Option[schema.Koodistokoodiviite] = haeSisältyväKoodi(koodistoViitePalvelu, "nqf") + + val withEqf = shapeless.lens[SuorituksenKoulutusmoduuli].field[Option[schema.Koodistokoodiviite]]("eurooppalainenTutkintojenViitekehysEQF").set(this)(eqf) + shapeless.lens[SuorituksenKoulutusmoduuli].field[Option[schema.Koodistokoodiviite]]("kansallinenTutkintojenViitekehysNQF").set(withEqf)(nqf) + } + + private def haeSisältyväKoodi(koodistoViitePalvelu: KoodistoViitePalvelu, koodistoUri: String): Option[schema.Koodistokoodiviite] = { + val koodisto = koodistoViitePalvelu.koodistoPalvelu.getLatestVersionRequired(koodistoUri) + val sisältyvä: Option[schema.Koodistokoodiviite] = koodistoViitePalvelu.getSisältyvätKoodiViitteet(koodisto, tunniste.toKoskiSchema) match { + case Some(List(viite)) => + Some(viite) + case _ => + None + } + sisältyvä + } } case class SuoritetutTutkinnotKoodistokoodiviite( @@ -62,7 +94,15 @@ case class SuoritetutTutkinnotKoodistokoodiviite( lyhytNimi: Option[schema.LocalizedString], koodistoUri: Option[String], koodistoVersio: Option[Int] -) +) { + def toKoskiSchema: schema.Koodistokoodiviite = schema.Koodistokoodiviite( + koodiarvo, + nimi, + lyhytNimi, + koodistoUri.getOrElse(throw new InternalError("Ei tuettu")), + koodistoVersio + ) +} object SuoritetutTutkinnotKoodistokoodiviite{ def fromKoskiSchema(kv: schema.Koodistokoodiviite) = SuoritetutTutkinnotKoodistokoodiviite( kv.koodiarvo, diff --git a/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotService.scala b/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotService.scala index c4a0f0a431..7f8cf68b0a 100644 --- a/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotService.scala +++ b/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotService.scala @@ -66,6 +66,7 @@ class SuoritetutTutkinnotService(application: KoskiApplication) extends GlobalEx .filter(vahvistettuNykyhetkeenMennessä) .filter(josMuuAmmatillinenNiinTehtäväänValmistava) .filterNot(onKorotusSuoritus) + .map(lisääViitekehystiedot) ) }.filter(_.suoritukset.nonEmpty) } @@ -122,4 +123,8 @@ class SuoritetutTutkinnotService(application: KoskiApplication) extends GlobalEx case _ => false } } + + private def lisääViitekehystiedot(s: Suoritus): Suoritus = { + s.withKoulutusmoduuli(s.koulutusmoduuli.withViitekehykset(application.koodistoViitePalvelu)) + } } diff --git a/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotYlioppilastutkintoSchema.scala b/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotYlioppilastutkintoSchema.scala index 5f611e0977..d29bdb60cf 100644 --- a/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotYlioppilastutkintoSchema.scala +++ b/src/main/scala/fi/oph/koski/suoritetuttutkinnot/SuoritetutTutkinnotYlioppilastutkintoSchema.scala @@ -24,7 +24,9 @@ object SuoritetutTutkinnotYlioppilastutkinnonOpiskeluoikeus { ), suoritukset = yo.suoritukset.map(s => SuoritetutTutkinnotYlioppilastutkinnonPäätasonSuoritus( SuoritetutTutkinnotYlioppilastutkinnonSuorituksenKoulutusmoduuli( - SuoritetutTutkinnotKoodistokoodiviite.fromKoskiSchema(s.koulutusmoduuli.tunniste) + SuoritetutTutkinnotKoodistokoodiviite.fromKoskiSchema(s.koulutusmoduuli.tunniste), + eurooppalainenTutkintojenViitekehysEQF = None, // Täydennetään myöhemmässä vaiheessa + kansallinenTutkintojenViitekehysNQF = None // Täydennetään myöhemmässä vaiheessa ), Some(Toimipiste( s.toimipiste.oid, @@ -65,4 +67,6 @@ case class SuoritetutTutkinnotYlioppilastutkinnonPäätasonSuoritus( case class SuoritetutTutkinnotYlioppilastutkinnonSuorituksenKoulutusmoduuli( tunniste: SuoritetutTutkinnotKoodistokoodiviite, + eurooppalainenTutkintojenViitekehysEQF: Option[schema.Koodistokoodiviite], + kansallinenTutkintojenViitekehysNQF: Option[schema.Koodistokoodiviite] ) extends SuorituksenKoulutusmoduuli diff --git a/src/test/scala/fi/oph/koski/suoritusjako/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotServiceSpec.scala b/src/test/scala/fi/oph/koski/suoritusjako/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotServiceSpec.scala index e02bef9e3b..fb00f8388f 100644 --- a/src/test/scala/fi/oph/koski/suoritusjako/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotServiceSpec.scala +++ b/src/test/scala/fi/oph/koski/suoritusjako/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotServiceSpec.scala @@ -10,7 +10,7 @@ import fi.oph.koski.koskiuser.KoskiSpecificSession.SUORITUSJAKO_KATSOMINEN_USER import fi.oph.koski.koskiuser.Rooli.OPHKATSELIJA import fi.oph.koski.koskiuser._ import fi.oph.koski.organisaatio.MockOrganisaatiot -import fi.oph.koski.schema.MYPVuosiluokanSuoritus +import fi.oph.koski.schema.{Koodistokoodiviite, MYPVuosiluokanSuoritus} import fi.oph.koski.suoritusjako.AktiivisetJaPäättyneetOpinnotOppijaJakolinkillä import fi.oph.koski.virta.MockVirtaClient import fi.oph.koski.ytr.MockYtrClient @@ -71,6 +71,26 @@ class AktiivisetJaPäättyneetOpinnotServiceSpec }) } + "Palautetaan EQF- ja NQF-tietoja" in { + val oppija = KoskiSpecificMockOppijat.ammattilainen + + val expectedOoData = getOpiskeluoikeus(oppija.oid, schema.OpiskeluoikeudenTyyppi.ammatillinenkoulutus.koodiarvo) + + val result = suoritusjakoService.findAktiivisetJaPäättyneetOpinnotOppija(oppija.oid) + + result.isRight should be(true) + + result.map(o => { + verifyOppija(oppija, o) + + val actualOo = o.opiskeluoikeudet.head + val actualSuoritukset = actualOo.suoritukset + + actualSuoritukset.foreach(_.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(Some(Koodistokoodiviite("4", "eqf")))) + actualSuoritukset.foreach(_.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(Some(Koodistokoodiviite("4", "nqf")))) + }) + } + "Ammatillinen" - { val oppijat = Seq( diff --git a/src/test/scala/fi/oph/koski/suoritusjako/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotVerifiers.scala b/src/test/scala/fi/oph/koski/suoritusjako/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotVerifiers.scala index 1be9be54b9..36d2afa13c 100644 --- a/src/test/scala/fi/oph/koski/suoritusjako/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotVerifiers.scala +++ b/src/test/scala/fi/oph/koski/suoritusjako/aktiivisetjapaattyneetopinnot/AktiivisetJaPaattyneetOpinnotVerifiers.scala @@ -1,7 +1,8 @@ package fi.oph.koski.suoritusjako.aktiivisetjapaattyneetopinnot import fi.oph.koski.aktiivisetjapaattyneetopinnot.{AktiivisetJaPäättyneetOpinnotAikuistenPerusopetuksenOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotAmmatillinenOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotAmmatillinenPäätasonSuoritus, AktiivisetJaPäättyneetOpinnotDIAOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotEBTutkinnonOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotEBTutkinnonPäätasonSuoritus, AktiivisetJaPäättyneetOpinnotEuropeanSchoolOfHelsinkiOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotEuropeanSchoolOfHelsinkiPäätasonSuoritus, AktiivisetJaPäättyneetOpinnotIBOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotInternationalSchoolOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotInternationalSchoolVuosiluokanSuoritus, AktiivisetJaPäättyneetOpinnotKorkeakouluSuoritus, AktiivisetJaPäättyneetOpinnotKorkeakoulunOpintojaksonSuoritus, AktiivisetJaPäättyneetOpinnotKorkeakoulunOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotKorkeakoulututkinnonSuoritus, AktiivisetJaPäättyneetOpinnotKoskeenTallennettavaOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotLukionOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotMuuKorkeakoulunSuoritus, AktiivisetJaPäättyneetOpinnotMuunAmmatillisenKoulutuksenSuoritus, AktiivisetJaPäättyneetOpinnotMuunKuinSäännellynKoulutuksenOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotMuunKuinSäännellynKoulutuksenPäätasonSuoritus, AktiivisetJaPäättyneetOpinnotOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotOsaamisenHankkimistavallinen, AktiivisetJaPäättyneetOpinnotPäätasonSuoritus, AktiivisetJaPäättyneetOpinnotTutkintokoulutukseenValmentavanOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotVapaanSivistystyönOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotVapaanSivistystyönPäätasonSuoritus, AktiivisetJaPäättyneetOpinnotYlioppilastutkinnonOpiskeluoikeus, AktiivisetJaPäättyneetOpinnotYlioppilastutkinnonPäätasonSuoritus, Suoritus} -import fi.oph.koski.schema +import fi.oph.koski.schema.KoodistostaLöytyväKoulutusmoduuli +import fi.oph.koski.{KoskiApplicationForTests, schema} import org.scalatest.matchers.should.Matchers trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { @@ -144,6 +145,9 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { actualSuoritus.tyyppi.koodiarvo should equal(expectedSuoritusData.tyyppi.koodiarvo) actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should equal(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) } private def verifyEB( @@ -156,6 +160,9 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { actualSuoritus.tyyppi.koodiarvo should equal(expectedSuoritusData.tyyppi.koodiarvo) actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should equal(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) } private def verifyISH( @@ -168,6 +175,9 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { actualSuoritus.tyyppi.koodiarvo should equal(expectedSuoritusData.tyyppi.koodiarvo) actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should equal(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) } private def verifyMUKS( @@ -182,6 +192,9 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should equal(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) actualSuoritus.koulutusmoduuli.koulutustyyppi.map(_.koodiarvo) should equal(expectedSuoritusData.koulutusmoduuli.koulutustyyppi.map(_.koodiarvo)) actualSuoritus.koulutusmoduuli.opintokokonaisuus.koodiarvo should equal(expectedSuoritusData.koulutusmoduuli.opintokokonaisuus.koodiarvo) + + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) } private def verifyVST( @@ -194,6 +207,13 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { actualSuoritus.tyyppi.koodiarvo should equal(expectedSuoritusData.tyyppi.koodiarvo) actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should equal(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + + expectedSuoritusData.koulutusmoduuli match { + case k: KoodistostaLöytyväKoulutusmoduuli => + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", k.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", k.tunniste)) + case _ => + } } private def verifyYO( @@ -206,6 +226,10 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { actualSuoritus.tyyppi.koodiarvo should equal(expectedSuoritusData.tyyppi.koodiarvo) actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should equal(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.vahvistus.map(_.päivä) should equal(expectedSuoritusData.vahvistus.map(_.päivä)) actualSuoritus.vahvistus.isDefined should be(true) } @@ -242,6 +266,9 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { verifyPäätasonSuoritus(actualSuoritus, expectedSuoritusData) actualSuoritus.koulutusmoduuli.koulutustyyppi.map(_.koodiarvo) should equal(expectedSuoritusData.koulutusmoduuli.koulutustyyppi.map(_.koodiarvo)) actualSuoritus.koulutusmoduuli.perusteenDiaarinumero should equal(expectedSuoritusData.koulutusmoduuli.perusteenDiaarinumero) + + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) } private def verifyAmmatillinen( @@ -278,6 +305,9 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { ): Unit = { actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should be(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + verifyOsaamisenHankkimistavallinen(actualSuoritus, expectedSuoritusData) verifyKoulutussopimuksellinen(actualSuoritus, expectedSuoritusData) } @@ -288,6 +318,9 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { ): Unit = { actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should be(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + verifyOsaamisenHankkimistavallinen(actualSuoritus, expectedSuoritusData) verifyKoulutussopimuksellinen(actualSuoritus, expectedSuoritusData) } @@ -298,6 +331,13 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { ): Unit = { actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should be(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + expectedSuoritusData.koulutusmoduuli match { + case k: KoodistostaLöytyväKoulutusmoduuli => + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", k.asInstanceOf[KoodistostaLöytyväKoulutusmoduuli].tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", k.asInstanceOf[KoodistostaLöytyväKoulutusmoduuli].tunniste)) + case _ => + } + verifyOsaamisenHankkimistavallinen(actualSuoritus, expectedSuoritusData) verifyKoulutussopimuksellinen(actualSuoritus, expectedSuoritusData) } @@ -307,6 +347,14 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { expectedSuoritusData: schema.MuunAmmatillisenKoulutuksenSuoritus ): Unit = { actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should be(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + + expectedSuoritusData.koulutusmoduuli match { + case k: KoodistostaLöytyväKoulutusmoduuli => + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", k.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", k.tunniste)) + case _ => + } + actualSuoritus.täydentääTutkintoa.map(_.tunniste.koodiarvo) should be(expectedSuoritusData.täydentääTutkintoa.map(_.tunniste.koodiarvo)) verifyOsaamisenHankkimistavallinen(actualSuoritus, expectedSuoritusData) @@ -319,6 +367,9 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { ): Unit = { actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should be(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + verifyOsaamisenHankkimistavallinen(actualSuoritus, expectedSuoritusData) verifyKoulutussopimuksellinen(actualSuoritus, expectedSuoritusData) } @@ -329,6 +380,9 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { ): Unit = { actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should be(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + verifyKoulutussopimuksellinen(actualSuoritus, expectedSuoritusData) } @@ -338,6 +392,9 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { ): Unit = { actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should be(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + verifyKoulutussopimuksellinen(actualSuoritus, expectedSuoritusData) } @@ -393,10 +450,18 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { actualSuoritus.suorituskieli.map(_.koodiarvo) should equal(expectedSuoritusData.suorituskieli.map(_.koodiarvo)) actualSuoritus.koulutusmoduuli.koulutustyyppi should equal(expectedSuoritusData.koulutusmoduuli.koulutustyyppi) actualSuoritus.koulutusmoduuli.virtaNimi should equal(expectedSuoritusData.koulutusmoduuli.virtaNimi) + + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + case (actualSuoritus: AktiivisetJaPäättyneetOpinnotMuuKorkeakoulunSuoritus, expectedSuoritusData: schema.MuuKorkeakoulunSuoritus) => actualSuoritus.koulutusmoduuli.nimi should equal(expectedSuoritusData.koulutusmoduuli.nimi) + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + case (actualSuoritus: AktiivisetJaPäättyneetOpinnotKorkeakoulunOpintojaksonSuoritus, expectedSuoritusData: schema.KorkeakoulunOpintojaksonSuoritus) => actualSuoritus.koulutusmoduuli.nimi should equal(expectedSuoritusData.koulutusmoduuli.nimi) + case _ => fail(s"Palautettiin tunnistamattoman tyyppistä suoritusdataa actual: (${actualSuoritus.getClass.getName}), expected:(${expectedSuoritusData.getClass.getName})") } } @@ -404,6 +469,14 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { private def verifyPäätasonSuoritus(actualSuoritus: AktiivisetJaPäättyneetOpinnotPäätasonSuoritus, expectedSuoritusData: schema.PäätasonSuoritus) = { actualSuoritus.tyyppi.koodiarvo should equal(expectedSuoritusData.tyyppi.koodiarvo) actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should equal(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + + expectedSuoritusData.koulutusmoduuli match { + case k: KoodistostaLöytyväKoulutusmoduuli => + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", k.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", k.tunniste)) + case _ => + } + expectedSuoritusData match { case es: schema.Suorituskielellinen => actualSuoritus.suorituskieli.koodiarvo should equal(es.suorituskieli.koodiarvo) case _ => fail(s"Yritettiin tutkita suorituskieletöntä päätason suoritustyyppiä: ${expectedSuoritusData.tyyppi.koodiarvo}") @@ -469,5 +542,15 @@ trait AktiivisetJaPäättyneetOpinnotVerifiers extends Matchers { actualOo.tila.opiskeluoikeusjaksot.map(_.alku) should equal(expectedOoData.tila.opiskeluoikeusjaksot.map(_.alku)) } + private def haeSisältyväKoodi(koodistoUri: String, tunniste: schema.Koodistokoodiviite): Option[schema.Koodistokoodiviite] = { + val koodisto = KoskiApplicationForTests.koodistoViitePalvelu.koodistoPalvelu.getLatestVersionRequired(koodistoUri) + val sisältyvä: Option[schema.Koodistokoodiviite] = KoskiApplicationForTests.koodistoViitePalvelu.getSisältyvätKoodiViitteet(koodisto, tunniste) match { + case Some(List(viite)) => + Some(viite) + case _ => + None + } + sisältyvä + } } diff --git a/src/test/scala/fi/oph/koski/suoritusjako/suoritetuttutkinnot/SuoritetutTutkinnotServiceSpec.scala b/src/test/scala/fi/oph/koski/suoritusjako/suoritetuttutkinnot/SuoritetutTutkinnotServiceSpec.scala index 0867a92635..e52a256993 100644 --- a/src/test/scala/fi/oph/koski/suoritusjako/suoritetuttutkinnot/SuoritetutTutkinnotServiceSpec.scala +++ b/src/test/scala/fi/oph/koski/suoritusjako/suoritetuttutkinnot/SuoritetutTutkinnotServiceSpec.scala @@ -15,7 +15,7 @@ import fi.oph.koski.{DatabaseTestMethods, KoskiApplicationForTests, KoskiHttpSpe import fi.oph.koski.ytr.MockYtrClient import fi.oph.koski.localization.LocalizedStringImplicits._ import fi.oph.koski.organisaatio.MockOrganisaatiot.omnia -import fi.oph.koski.schema.AmmatillinenOpiskeluoikeus +import fi.oph.koski.schema.{AmmatillinenOpiskeluoikeus, Koodistokoodiviite} import fi.oph.koski.virta.MockVirtaClient import org.scalatest.{BeforeAndAfterAll, BeforeAndAfterEach} import org.scalatest.freespec.AnyFreeSpec @@ -340,12 +340,13 @@ class SuoritetutTutkinnotServiceSpec val actualSuoritus = actualOo.suoritukset.head verifyOpiskeluoikeusJaSuoritus(actualOo, actualSuoritus, expectedOoData, expectedSuoritusData) + + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(Some(Koodistokoodiviite("7", "eqf"))) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(Some(Koodistokoodiviite("7", "nqf"))) }) } } - - "Linkitetyt oppijat" - { "Masterin ja slaven tutkinnot palautetaan kummankin oideilla" in { val oppijaMaster = KoskiSpecificMockOppijat.masterYlioppilasJaAmmattilainen diff --git a/src/test/scala/fi/oph/koski/suoritusjako/suoritetuttutkinnot/SuoritetutTutkinnotVerifiers.scala b/src/test/scala/fi/oph/koski/suoritusjako/suoritetuttutkinnot/SuoritetutTutkinnotVerifiers.scala index e5b0b0a7fd..42514e163a 100644 --- a/src/test/scala/fi/oph/koski/suoritusjako/suoritetuttutkinnot/SuoritetutTutkinnotVerifiers.scala +++ b/src/test/scala/fi/oph/koski/suoritusjako/suoritetuttutkinnot/SuoritetutTutkinnotVerifiers.scala @@ -1,6 +1,7 @@ package fi.oph.koski.suoritusjako.suoritetuttutkinnot -import fi.oph.koski.schema +import fi.oph.koski.schema.KoodistostaLöytyväKoulutusmoduuli +import fi.oph.koski.{KoskiApplicationForTests, schema} import fi.oph.koski.suoritetuttutkinnot.{SuoritetutTutkinnotAmmatillinenOpiskeluoikeus, SuoritetutTutkinnotAmmatillisenTutkinnonOsittainenSuoritus, SuoritetutTutkinnotAmmatillisenTutkinnonOsittainenTaiKokoSuoritus, SuoritetutTutkinnotAmmatillisenTutkinnonSuoritus, SuoritetutTutkinnotDIAOpiskeluoikeus, SuoritetutTutkinnotDIATutkinnonSuoritus, SuoritetutTutkinnotEBTutkinnonOpiskeluoikeus, SuoritetutTutkinnotEBTutkinnonSuoritus, SuoritetutTutkinnotKorkeakoulunOpiskeluoikeus, SuoritetutTutkinnotKorkeakoulututkinnonSuoritus, SuoritetutTutkinnotKoskeenTallennettavaOpiskeluoikeus, SuoritetutTutkinnotMuunAmmatillisenKoulutuksenSuoritus, SuoritetutTutkinnotOpiskeluoikeus, SuoritetutTutkinnotYlioppilastutkinnonOpiskeluoikeus, SuoritetutTutkinnotYlioppilastutkinnonPäätasonSuoritus, Suoritus} import org.scalatest.matchers.should.Matchers @@ -121,6 +122,9 @@ trait SuoritetutTutkinnotVerifiers extends Matchers actualSuoritus.koulutusmoduuli.perusteenNimi should equal(expectedSuoritusData.koulutusmoduuli.perusteenNimi) actualSuoritus.koulutusmoduuli.koulutustyyppi.map(_.koodiarvo) should equal(expectedSuoritusData.koulutusmoduuli.koulutustyyppi.map(_.koodiarvo)) + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.toimipiste.map(_.oid) should equal(Some(expectedSuoritusData.toimipiste.oid)) actualSuoritus.vahvistus.map(_.päivä) should equal(expectedSuoritusData.vahvistus.map(_.päivä)) actualSuoritus.tyyppi.koodiarvo should equal(expectedSuoritusData.tyyppi.koodiarvo) @@ -136,6 +140,14 @@ trait SuoritetutTutkinnotVerifiers extends Matchers actualSuoritus.koulutusmoduuli.laajuus.map(_.arvo) should equal(expectedSuoritusData.koulutusmoduuli.laajuus.map(_.arvo)) actualSuoritus.koulutusmoduuli.laajuus.map(_.yksikkö.koodiarvo) should equal(expectedSuoritusData.koulutusmoduuli.laajuus.map(_.yksikkö.koodiarvo)) actualSuoritus.koulutusmoduuli.laajuus.map(_.yksikkö.koodistoUri) should equal(expectedSuoritusData.koulutusmoduuli.laajuus.map(_.yksikkö.koodistoUri)) + + expectedSuoritusData.koulutusmoduuli match { + case k: KoodistostaLöytyväKoulutusmoduuli => + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", k.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", k.tunniste)) + case _ => + } + actualSuoritus.toimipiste.map(_.oid) should equal(Some(expectedSuoritusData.toimipiste.oid)) actualSuoritus.vahvistus.map(_.päivä) should equal(expectedSuoritusData.vahvistus.map(_.päivä)) actualSuoritus.tyyppi.koodiarvo should equal(expectedSuoritusData.tyyppi.koodiarvo) @@ -160,6 +172,10 @@ trait SuoritetutTutkinnotVerifiers extends Matchers actualOo.suoritukset.length should equal(1) actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should equal(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.toimipiste.map(_.oid) should equal(Some(expectedSuoritusData.toimipiste.oid)) actualSuoritus.vahvistus.map(_.päivä) should equal(expectedSuoritusData.vahvistus.map(_.päivä)) actualSuoritus.tyyppi.koodiarvo should equal(expectedSuoritusData.tyyppi.koodiarvo) @@ -180,6 +196,10 @@ trait SuoritetutTutkinnotVerifiers extends Matchers actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should equal(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) actualSuoritus.koulutusmoduuli.koulutustyyppi.map(_.koodiarvo) should equal(expectedSuoritusData.koulutusmoduuli.koulutustyyppi.map(_.koodiarvo)) actualSuoritus.koulutusmoduuli.virtaNimi should equal(expectedSuoritusData.koulutusmoduuli.virtaNimi) + + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.toimipiste.map(_.oid) should equal(Some(expectedSuoritusData.toimipiste.oid)) actualSuoritus.vahvistus.map(_.päivä) should equal(expectedSuoritusData.vahvistus.map(_.päivä)) actualSuoritus.tyyppi.koodiarvo should equal(expectedSuoritusData.tyyppi.koodiarvo) @@ -196,6 +216,10 @@ trait SuoritetutTutkinnotVerifiers extends Matchers actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should equal(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) actualSuoritus.koulutusmoduuli.curriculum.koodiarvo should equal(expectedSuoritusData.koulutusmoduuli.curriculum.koodiarvo) + + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.toimipiste.map(_.oid) should equal(Some(expectedSuoritusData.toimipiste.oid)) actualSuoritus.vahvistus.map(_.päivä) should equal(expectedSuoritusData.vahvistus.map(_.päivä)) actualSuoritus.tyyppi.koodiarvo should equal(expectedSuoritusData.tyyppi.koodiarvo) @@ -211,6 +235,10 @@ trait SuoritetutTutkinnotVerifiers extends Matchers actualOo.suoritukset.length should equal(1) actualSuoritus.koulutusmoduuli.tunniste.koodiarvo should equal(expectedSuoritusData.koulutusmoduuli.tunniste.koodiarvo) + + actualSuoritus.koulutusmoduuli.eurooppalainenTutkintojenViitekehysEQF should equal(haeSisältyväKoodi("eqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.koulutusmoduuli.kansallinenTutkintojenViitekehysNQF should equal(haeSisältyväKoodi("nqf", expectedSuoritusData.koulutusmoduuli.tunniste)) + actualSuoritus.toimipiste.map(_.oid) should equal(Some(expectedSuoritusData.toimipiste.oid)) actualSuoritus.vahvistus.map(_.päivä) should equal(expectedSuoritusData.vahvistus.map(_.päivä)) actualSuoritus.suorituskieli.map(_.koodiarvo) should equal(Some(expectedSuoritusData.suorituskieli.koodiarvo)) @@ -236,4 +264,14 @@ trait SuoritetutTutkinnotVerifiers extends Matchers actualOo.tyyppi.koodiarvo should equal(expectedOoData.tyyppi.koodiarvo) } + private def haeSisältyväKoodi(koodistoUri: String, tunniste: schema.Koodistokoodiviite): Option[schema.Koodistokoodiviite] = { + val koodisto = KoskiApplicationForTests.koodistoViitePalvelu.koodistoPalvelu.getLatestVersionRequired(koodistoUri) + val sisältyvä: Option[schema.Koodistokoodiviite] = KoskiApplicationForTests.koodistoViitePalvelu.getSisältyvätKoodiViitteet(koodisto, tunniste) match { + case Some(List(viite)) => + Some(viite) + case _ => + None + } + sisältyvä + } }