-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Joint degree functionaliteit #353
base: main
Are you sure you want to change the base?
Conversation
623c9e5
to
e0ea1b5
Compare
e0ea1b5
to
b0bb191
Compare
b0bb191
to
0d08632
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ziet er goed uit maar toch een paar opmerkingen.
(is (thrown? ExceptionInfo | ||
(simulate-upsert ooapi-loader | ||
(slurp (io/resource "fixtures/rio/integratie-program-0.xml")) | ||
"program"))))) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ik denk dat het duidelijker wordt als je van hier 1 deftest
maakt met testing
blokken erin en misschien wat van de let
duplicatie eruit haalt. Op dit moment kost het me wat moeite om te zien wat de verschillende tussen deze tests zijn omdat er een hoop ge-copy-paste is.
(if (= type "education-specification") | ||
id | ||
(ooapi-base/education-specification-id entity)) | ||
institution-oin))))))) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Goed idee om deze wrappers te verplaatsen als ze alleen in tests gebruikt worden! Ben wel nieuwsgierig geworden hoe deze functionaliteit in de applicatie aan elkaar geknoopt wordt. Weten we zeker dat het dan nog werkt? Kunnen we bijvoorbeeld een e2e test hiervoor toevoegen?
(->> request (load-entities loader) (f)))))) | ||
(validate-entity rio-consumer ::program/ProgramConsumerType "ProgramConsumerType")) | ||
(cond-> request | ||
true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Misschien moet we voor :always
gaan ipv true
en deze onderaan zetten. Net als dat we bij cond
een :else
hebben.
(assoc ::rio/aangeboden-opleiding-code | ||
(resolver type id institution-oin)) | ||
|
||
true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
:always
?
In het hoger onderwijs bestaan er joint degrees: opleidingen die door meer dan één onderwijsintelling verzorgd worden.
In RIO is de eigenaar van de OpleidingsEenheid dan de “penvoerende” instelling. Maar de andere deelnemende instellingen mogen daar dan ook AangebodenOpleidingen voor aanleveren.
DUO vertelde me er het volgende over:
Wanneer een instelling een aangeboden opleiding aanlevert voor een opleidingseenheid die niet van "hem" is, dan bepalen we of de opleidingseenheid (HoOpleiding) een opleidingssamenwerking betreft (Joint Degree).Wanneer dat het geval is bepalen we obv de licenties die gekoppeld zijn aan die HO-opleidingserkenning welke instellingen de opleiding zouden mogen verzorgen. Staat hun instelling in het lijstje voorkomt keuren we de aanlevering goed. Wanneer dat niet zo is ontvangt de instelling een foutcode "N09461 Het onderwijsbestuur maakt geen deel uit van de vastgestelde opleidingssamenwerking".
Het doel is dat onze mapper deze functionaliteit gaat ondersteunen. Na wat uitzoekwerk en navragen kom ik tot het volgende ontwerp:
We voegen twee nieuwe velden aan de RIO consumer voor een Program toe:
jointProgram: een boolean. Als die true is, gaan we kijken naar het tweede veld en nemen we een “nieuwe afslag” in de verwerking van het program. Als jointProgram, false is of het hele veld ontbreekt, dan volgen we de oude logica.
educationUnitCode: een string die moet voldoen aan de regex ^\d{4}O\d{4}$ , namelijk een OpleidingsEenheidCode. Als dit veld niet matcht met de regex of ontbreekt terwijl jointProgram true is, moeten we een foutmelding teruggeven.
als jointProgram niet true is word een educationUnitCode niet verwerkt (helemaal genegeerd)
Als een instelling een upsert job aanlevert voor een program en deze beide nieuwe velden zijn correct ingevuld, gaan we het program aanleveren als een AangebodenHoOpleiding, horende bij de OpleidingsEenheid zoals die in educationUnitCode staat.
We slaan het ophalen van de EducationSpecification helemaal over.
Wellicht moet de validatie van Programs aangepast worden: het veld educationSpecification is niet verplicht, als het veld jointProgram true is.
Opmerkingen:
We kunnen ervan uitgaan dat een Program wat aangeleverd wordt als jointProgram altijd een AangebodenHoOpleiding is. In RIO bestaan er geen andere vormen die “joint” kunnen zijn.