# Opleidingsresultaten

Wanneer een cursist een opleiding afrondt wordt dit in Pynter geregistreerd in de tabel `FinishedModule`. Dit noemen we een *resultaat*. Hierin wordt (o.a.) geregistreerd wanneer iemand welke opleiding heeft afgerond. Belangrijk detail hierbij is dat het mogelijk is om per opleiding meerdere resultaten te hebben, bijvoorbeeld wanneer een opleiding periodiek herhaald moet worden.

Om gemakkelijker inzicht te krijgen in de *huidige* status van een opleiding voor een persoon is er de tabel `PersonModuleStatus`. Waar een opleiding in de `FinishedModule` meerdere keren kan voorkomen, bevat de `PersonModuleStatus` altijd één rij per persoon per opleiding, als deze persoon ooit aan deze opleiding begonnen is.

Verder wordt er ook per persoon per module (`LearningTask`) bijgehouden wat de status daarvan is.

[![Untitled(3).png](https://docs.pynter.nl/uploads/images/gallery/2025-10/scaled-1680-/vJLK8JdXHrBOJXHN-untitled3.png)](https://docs.pynter.nl/uploads/images/gallery/2025-10/vJLK8JdXHrBOJXHN-untitled3.png)

<details id="bkmrk-broncode-diagram-tab"><summary>Broncode diagram</summary>

Dit is de broncode van het diagram hierboven. Dit kun je gebruiken om het diagram te bewerken op [dbdiagram.io](https://dbdiagram.io).

```ruby
table Person {
  Id int [pk]
}

table LearningModule {
  Id int [pk]
}

table LearningModuleTasks {
  LearningModuleId int [ref: > LearningModule.Id, not null]
  TaskId int [ref: - LearningTask.Id, not null]
}

table LearningTask {
  Id int [pk]
}

table PersonLearningTask {
  Id int [pk]
  PersonId int [ref: - Person.Id, not null]
  TaskId int [ref: - LearningTask.Id, not null]
  Status enum
}

table FinishedModule {
  Id int [pk]
  PersonId int [ref: > Person.Id, not null]
  ModuleId int [ref: - LearningModule.Id, not null]
  FinishDate date
}

table PersonModuleStatus {
  Id int [pk]
  PersonId int [ref: - Person.Id, not null]
  ModuleId int [ref: - LearningModule.Id, not null]
  Status enum
}
```

</details>