KReM, projekt formatu pliku z danymi o szkołach

Transkrypt

KReM, projekt formatu pliku z danymi o szkołach
KReM, format pliku z danymi o szkołach
Michał Kurzydłowski
(konsultacje ze strony CKE: Wojtek Śpionek)
wersja 1.2, 23.04.2008
1. Do systemu KReM będzie przekazywany – przez odpowiednią dla danego
maturzysty OKE – identyfikator szkoły (według słownika przekazanego przez CKE;
nazwijmy go „kodem szkoły”), do której chodził tenże maturzysta. Identyfikatory
szkół będą przekazywane w oddzielnym pliku, analogicznym do tych, które już
istnieją w systemie. Dzięki temu możliwe jest dodanie informacji o szkole maturzysty
niezależnie od pozostałych informacji o maturzyście (jak oceny, osiągnięcia i
dokumenty). Jako, że plik z dokumentami zawiera w założeniach pełną informację o
dokumentach maturzysty i np. w razie dodania aneksu musi zostać wysłany w całości
wraz z poprzednimi dokumentami, więc dodanie do niego pola o szkole maturzysty
oznaczałoby wysyłanie dodatkowo informacji o szkole (która rzadko będzie ulegać
zmianie – jedynie w przypadku poprawiania błędu). Takie rozwiązanie uzależniłoby
także zmianę lub usunięcie listy dokumentów od zmiany lub usunięcia kodu szkoły i
na odwrót, co nie byłoby dobrym rozwiązaniem.
2. Pliki z danymi dla maturzystów wysyłane przez OKE powinny być jak najmniejsze i
najprostsze, by mogły być szybko przetworzone przez system. W tym celu OKE
będzie do systemu wysyłało jedynie plik, w których jeden wiersz zawiera numer
PESEL maturzysty oraz przyporządkowany do niego kod szkoły.
3. Nowy format pliku, zawierającego szkoły maturzystów, będzie miał, analogicznie do
poprzednich formatów, postać:
Pesel1;Kod_szkoły1
Pesel2;Kod_szkoły2
…
Zatem wiersz ma budowę: PESEL(;KOD_SZKOŁY)?
PESEL – CHAR(11), np. 86012590104
KOD_SZKOŁY – CHAR(12), np. 162082-5AK3C
Pesele w wierszach będą mogły się powtarzać, lecz w takim przypadku każdy
następny wiersz z powtarzającym się peselem będzie oznaczał nadpisanie
poprzedniego przypisania maturzysty do szkoły, co będzie skutkować wprowadzeniem
poprzednich szkół do historii szkół dla danego maturzysty. Tym samym można
traktować każdy wiersz tak jakby pochodził z innego pliku z uwzględnieniem
kolejności występowania wierszy.
Jednocześnie zapamiętany zostanie identyfikator pliku, w którym maturzysta otrzymał
kod swojej szkoły, tak jak to się dzieje w przypadku ocen, olimpiad, dokumentów i
wycofań. Również fakt posiadania szkoły zostanie zapamiętany w rekordzie
maturzysty.
-1-
W przypadku, gdy przy peselu nie występuje kod szkoły, dotychczasowy kod szkoły
zostaje usunięty (przeniesiony do historii szkół dla maturzysty) oraz zaznaczony
będzie fakt nie posiadania przez maturzysty kodu szkoły.
4. W przypadku, gdy informacja o szkole maturzysty przyjdzie z dwóch różnych OKE,
zgłoszony zostanie konflikt. Administrator systemu będzie mógł rozwiązać konflikt, a
informacje o wprowadzonych przez oba OKE kodach szkół zostaną zachowane.
5. Aby przetłumaczyć kod szkoły na dane o szkole (takie jak jej nazwa) oraz publiczny
kod szkoły (kod używany przez system KReM i przekazywany uczelniom), należy
dodać do bazy danych słownik szkół. Słownik ten będzie wysyłany do systemu w
postaci pliku z interfejsu administratora oraz eksportowany do pliku (bez kolumny
zawierającej kod) i wysyłany uczelniom poprzez ich interfejs.
W tym celu interfejs administratora zostanie wzbogacony o nową zakładkę „Słownik
szkół”. Będzie ona umożliwiała wysłanie pliku zawierającego aktualizację do
słownika szkół znajdującego się w systemie.
Najlepszym rozwiązaniem wydaje się w obu przypadkach przyjęcie formatu CSV (ze
średnikiem jako separatorem kolejnych pól w wierszu), gdyż w przypadku importu
kodów do KReM można by użyć do tego celu zmodyfikowany parser, który obsługuje
już wszystkie pliki wprowadzające dane do systemu. Z drugiej zaś strony format ten
łatwo przekształcić z i do arkuszy kalkulacyjnych.
Podczas importu do systemu kodów szkół wygenerowany zostanie publiczny kod
szkoły odpowiadający kodowi przekazanemu przez OKE. Nie będzie istniała w
systemie funkcja odwrotna, gdyż istotne jest by publiczny kod nie umożliwiał
odnalezienie kodu stosowanego przez OKE.
6. Słownik będzie zawierał następujące pola: kod szkoły, nazwa szkoły, miejscowość,
ulica, numer budynku, kod pocztowy, kod publiczny szkoły. W pliku wysyłanym
przez administratora nie będzie jedynie widniał kod publiczny szkoły (zostanie
wygenerowany przez system), zaś w pliku pobieranym przez uczelnię nie będzie
widniał kod szkoły. Unikatowym polem w słowniku będzie kod szkoły, względem
którego będą wykonywane aktualizacje pozostałych pól (unikatowy będzie zatem
także publiczny kod szkoły wygenerowany przez funkcję przyjmującą jako parametr
kod szkoły).
7. Plik w formacie CSV zawierający nowe kody i aktualizacje starych kodów będzie się
składał z wierszy postaci:
Kod_szkoły;Nazwa_szkoły;Miejscowość;Ulica;Budynek_nr;Poczta;Kod_pocztowy
Kod_szkoły - CHAR(12), np. 162082-5AK3C
Nazwa_szkoły – VARCHAR(200)
Miejscowość – VARCHAR(50)
Ulica – VARCHAR(50)
Budynek_nr – VARCHAR(20)
Poczta – VARCHAR(50)
Kod_pocztowy – CHAR(6), np. 05-077
-2-
W przypadku, gdy dla pewnego wiersza w pliku, kod szkoły już istnieje w bazie
następuje aktualizacja pozostałych pól przez nadpisanie tych pól nowymi wartościami
(prócz pola z kodem publicznym, które nie musi być zmieniane). Zatem gdyby w
pliku wystąpiło kilka wierszy z tym samym kodem, nastąpi nadpisanie danych o
szkole informacjami z kolejnych wierszy, tak, iż pozostanie jedynie informacja
zawarta w ostatnim wierszu opisującym tę szkołę, a pozostałe informacje przepadną.
Jeśli nie ma jeszcze w bazie szkoły o danych kodzie, to dany kod i informacja o szkole
zostaną dodane do systemu oraz wyliczony zostanie publiczny kod odpowiadający
danej szkole, a wyliczony na podstawie kodu.
Informacja o zaimportowanym do systemu pliku zostanie zapisana w tablicy plików
otrzymanych, tak jak to się dzieje w przypadku wszystkich innych plików
otrzymanych od administratorów.
Wszystkie uczelnie zostaną poinformowane o aktualizacji słownika i potrzebie jego
ponownego pobrania poprzez zmianę pola w rekordzie jednostki, informującego o
tym, że pobrany wcześniej słownik jest nieaktualny.
8. Uczelnie będą mogły składać zapytanie o publiczne kody szkół maturzystów poprzez
wysłanie pliku z peselami maturzystów z interfejsu uczelni. Są to zapytania o
wszystkie dane o maturzyście, a więc w tym przypadku zapytanie będzie obejmować
również kody szkół. Uczelnie będą informowane o możliwości pobrania kodów szkół
maturzystów, o których wcześniej zapytały, gdy poszukiwane osoby otrzymają kody
szkół od OKE. Opcja ta będzie dostępna w zakładce „pobierania wyników” (tak jak
opcje pobierania ocen, olimpiad, dokumentów i wycofań). Analogicznie do
pozostałych informacji, podana będzie:
liczba osób z nowo przypisanymi szkołami,
liczba wszystkich osób z przypisanymi szkołami,
liczba osób bez przypisanych szkół,
liczba osób, których szkoły uległy zmianie
oraz dla każdej z tych list osób będzie możliwe pobranie pliku z peselami i kodami
szkół danych maturzystów.
Poniżej pojawi się także opcja pobrania aktualnego słownika z informacją czy dana
uczelnia musi pobrać aktualizację słownika (czy został on zmieniony po ostatnim jego
pobraniu).
Informacja o ewentualnym pobraniu słownika zostanie zapamiętany (tak jak w
przypadku wszystkich pobieranych z systemu plików) w tabeli pobrań.
-3-
9. Nowy format pliku pobieranego przez uczelnie, zawierający szkoły maturzystów,
będzie miał, analogicznie do poprzednich formatów, postać:
Pesel1;Publiczny_kod_szkoły1
Pesel2;Publiczny_kod_szkoły2
…
Zatem wiersz ma budowę: PESEL;PUBLICZNY_KOD_SZKOŁY
PESEL – CHAR(11), np. 86012590104
PUBLICZNY_KOD_SZKOŁY – CHAR(14), np. 01EAC2434EC948
-4-
10. W przypadku wycofania przez kandydata zgody na przekazywanie wyników uczelni,
podobnie jak to się dzieje z ocenami, dokumentami i osiągnięciami maturzysty, także
publiczny kod szkoły nie będzie przekazywany uczelni (plik z aktualnym kodem
szkoły będzie zachowany, ale zaznaczone zostanie w odpowiednim polu rekordu
maturzysty, iż nie posiada on szkoły, zaś szkoła zostanie przeniesiona do historii
szkół). Maturzysta będzie „nie posiadał szkoły” także wtedy, kiedy szkoła zostanie
usunięta z rekordu maturzysty, zaś będzie spowrotem „posiadał szkołę”, kiedy szkoła
zostanie dodana lub zmieniona na inną.
11. Warto zauważyć, że scenariusz działań OKE oraz uczelni nie ulegnie zmianie. OKE
będą dodatkowo wysyłały pliki z kodami szkół, ale czynią to tak samo jak w
przypadku innych informacji o maturzyście. Uczelnie zaś tak jak wcześniej wysyłają
zapytania o wszystkie dane o maturzystach, tylko tym razem mogą dodatkowo pobrać
informacje o kodach szkół, jak również, kiedy zachodzi taka potrzeba, mogą pobrać
słownik tłumaczący te kody na dane o szkołach, tak jak to jest opisane w punkcie 6.
12. Zachowana jest także zgodność wsteczna danych, gdyż nowe pola oraz tablice można
zainicjalizować jak podano w nawiasach utrzymując spójność systemu:
Maturzysta – szkoła (null), plik ze szkołą (null), posiadanie szkoły (false)
Jednostka – nowy słownik do pobrania (false)
Słownik – pusty
Historia szkół – pusta
13. Możliwe scenariusze dla plików z kodami szkół wysyłanych przez OKE:
Opis sytuacji
Dwa wiersze z tym samym
numerem PESEL, opatrzone w
kody szkół
Dwa wiersze z tym samym
numerem PESEL, drugi wiersz
zawiera tylko PESEL
Dwa wiersza z tym samym
numerem PESEL, ale każdy od
innej OKE
Przykład
P; S1
P; S2
P; S1
P
OKE1: P; S1
OKE2: P; S2
Oznaczenia:
P – numer PESEL,
S1,S2,.. – szkoły,
OKE1,OKE2,.. – komisje okręgowe.
-5-
Komentarz
Drugi wiersz traktujemy jako nowy kod
szkoły dla maturzysty P, czyli jako
aktualizację wcześniejszego wiersza
Drugi wiersz traktujemy jako nowy kod
szkoły dla maturzysty P, czyli szkoła z
wcześniejszego wiersza zostanie usunięta
Konflikt, ręcznie należy wybrać, która szkoła
obowiązuje