KRAVSPECIFIKATION INAMN01 Indexformulär Sök person STU-08-T-8108 webbadress Projektnamn STU-T-8108 Fastställt av Dokumentansvarig Lars Hansson Dokumentidentitet Datum 2009-01-15 Status Levererad
Lars Hansson 2009-02-11 2 (17) Ändringshistorik Datum Av Kommentar Granskare Godkännare 2009-01-15 Lars Hansson Första utgåvan gjord inom ramen för projekt STU-T-8108. Begränsningar Kurs, Program och Institution levereras 2/4-09 2009-05-14 Anna-Carin Wiklund 2010-02-11 Ville Lahdensuo - - Laggt till vyer som läses i tabell listan. - - Åtgärd NOUVSD-8150: Lagt till avsnitt om utredning av databasslagningar Lars Hansson 2010-11-29 Magnus Böhlin Åtgärd NOUVSD-8150: Lagt till förtydligande om hur villkoren ska tolkas
Lars Hansson 2009-02-11 3 (17) Innehållsförteckning 1 INLEDNING... 4 1.1 Syfte med indexformuläret... 4 1.2 Beskrivning... 4 1.2.1 Formulärstruktur... 4 1.2.2 Tabeller... 4 2 KRAVLISTA... 6 2.1 Detaljerad beskrivning av kraven... 7 2.1.1 Öppna formulär... 7 2.1.2 Ange sökvillkor... 7 2.1.3 Söka ut personer... 9 2.1.4 Visning av sökresultat... 11 2.1.5 Hantering av sökresultat... 11 2.1.6 Avsluta... 12 3 DESIGN... 13 3.1 Gränssnitt... 13
Lars Hansson 2009-02-11 4 (17) 1 Inledning 1.1 Syfte med indexformuläret Syftet med indexformuläret är att kunna söka ut personer som läser vid högskolan. 1.2 Beskrivning Indexformuläret anropas från formulär som har inmatningsfält för personnummer. Med hjälp av indexformuläret kan användaren söka fram och välja ut en person som ska arbetas vidare med i anropande formulär. I utsökning finns möjlighet att begränsa på personnummer, för- och efternamn, kurs, program och institution. Systemet kontrollerar om varje person finns i katalogen, är gallrad, avliden eller har interimspersonnummer. Det är inte möjligt att ta med en person som är gallrad och ej återetablerad till anropande formulär. 1.2.1 Formulärstruktur Anropande formulär INAMN01 INAMN01H 1.2.2 Tabeller Tabeller Läser Uppdaterar NAMN X GALLRAD X INST X INTERIM X FFGKURS X FORTKURS X LINJE X OMKURS X FFGLIN X OMREGLIN X
Lars Hansson 2009-02-11 5 (17) KURS V_KURS01 V_INST01 V_LINJE00 X X X X
Lars Hansson 2009-02-11 6 (17) 2 Kravlista Krav Beskrivning Prioritet Status 1 Öppna formulär 1.1 Visning av värden Skall Levererad 2 Ange sökvillkor - - 2.1 Allmänna krav för begränsningar Skall Levererad 2.2 Begränsning: Personnummer Skall Levererad 2.3 Begränsning: Förnamn Skall Levererad 2.4 Begränsning: Efternamn Skall Levererad 2.5 Begränsning: Kurs Skall Levererad 2.6 Begränsning: Program Skall Levererad 2.7 Begränsning: Institution Skall Levererad 2.8 Begränsning: Terminsintervall Bör Godkänd 3 Utsökning av personer - - 3.1 Aktivera utsökning Skall Levererad 3.2 Utsökning med hänsyn till begränsningar Skall Levererad 3.3 Kontroll: Avliden Skall Levererad 3.4 Kontroll: Gallrad Skall Levererad 3.5 Kontroll: Interimspersonnummer Skall Levererad 4 Visning av sökresultat - - 4.1 Presentation av listan Skall Levererad 4.2 Sorteringsordning för listan Skall Levererad 4.3 Presentation av antal poster i listan Skall Levererad 5 Hantering av sökresultat - - 5.1 Sortera om listan Skall Levererad 5.2 Markera person i listan Skall Levererad 5.3 Utskrift Skall Levererad 6 Avsluta formulär 6.1 Bekräfta val Skall Levererad
Lars Hansson 2009-02-11 7 (17) 6.2 Avbryta Skall Levererad 2.1 Detaljerad beskrivning av kraven 2.1.1 Öppna formulär Visning av värden Den senaste utsökningen som gjordes i formuläret ska visas i bilden. 2.1.2 Ange sökvillkor Allmänna krav för begränsningar Begränsningarna ska vara möjliga att kombinera med undantag för: Användaren måste ange ett värde för någon av begränsningarna personnummer, förnamn eller efternamn för att få begränsa på kurs, institution, program eller terminsintervall. Användaren måste ange ett värde för någon av begränsningarna kurs, institution eller program för att få begränsa med terminsintervall. Ingen begränsning är obligatorisk. Begränsning: Personnummer Användaren ska kunna ange personnummer som begränsning. Det ska vara möjligt att ange sökmönster eller fullständigt personnummer. Systemet ska kontrollera att angivet värde har rätt format. Vid fel är det stopp och meddelande. Systemet ska kontrollera om personen finns i katalogen, är avliden eller gallrad. Om så informeras användaren på meddelanderaden. Begränsning: Förnamn Användaren ska kunna ange förnamn som begränsning. Det ska vara möjligt att ange sökmönster eller fullständigt förnamn. Begränsning: Efternamn Användaren ska kunna ange efternamn som begränsning. Det ska vara möjligt att ange sökmönster eller fullständigt efternamn. Begränsning: Kurs Användaren ska kunna ange kurs som begränsning. Det ska vara möjligt att ange sökmönster eller fullständig kurskod.
Lars Hansson 2009-02-11 8 (17) Systemet ska kontrollera att angivet värde har rätt format och existerar i katalogen. Vid fel är det stopp och meddelande. Systemet ska kontrollera om kursen är nedlagd. Om den är nedlagd ska användaren informeras på meddelanderaden. Det ska vara möjligt för användaren att ta hjälp av ett indexformulär för att söka ut kurser. Om användaren angivit en fullständig kurskod ska svensk benämning visas för kursen. Begränsning: Institution Användaren ska kunna ange institution som begränsning. Det ska vara möjligt att ange sökmönster eller fullständig institutionskod. Systemet ska kontrollera att angivet värde har rätt format och existerar i katalogen. Vid fel är det stopp och meddelande. Systemet ska kontrollera om institutionen är nedlagd. Om den är nedlagd ska användaren informeras på meddelanderaden. Det ska vara möjligt för användaren att ta hjälp av ett indexformulär för att söka ut institutioner. Om användaren angivit en fullständig institutionskod ska svensk benämning visas för institutionen. Begränsning: Program Användaren ska kunna ange program som begränsning. Det ska vara möjligt att ange sökmönster eller fullständig programkod. Systemet ska kontrollera att angivet värde har rätt format och existerar i katalogen. Vid fel är det stopp och meddelande. Systemet ska kontrollera om programmet är nedlagt. Om det är nedlagt ska användaren informeras på meddelanderaden. Det ska vara möjligt för användaren att ta hjälp av ett indexformulär för att söka ut program. Om användaren angivit en fullständig programkod ska svensk benämning visas för programmet. Begränsning: Terminsintervall Användaren ska kunna ange fr o m-termin och t o m-termin som begränsning. Om värde angivits ska systemet kontrollera: o Båda värdena måste vara angivna o Värden måste vara logiska i förhållande till varandra o Värden måste vara i rätt format o Värden måste existera i katalogen.
Lars Hansson 2009-02-11 9 (17) Vid fel är det stopp och meddelande. 2.1.3 Söka ut personer Aktivera utsökning Det ska vara möjligt för användaren att aktivera utsökning om inget sökresultat redan finns presenterat i bilden. Utsökning med hänsyn till begränsningar Systemet ska söka ut personer i databasen enligt begränsningar i formuläret. Följande kriterier måste uppfyllas om personen ska tas med i resultatet: o Personen ska ha angivet värde för personnummer. o Personen ska ha angivet värde för förnamn. o Personen ska ha angivet värde för efternamn. o Personen ska ha en kursregistrering (FFG, FO eller OM) i angivet värde för kurs. o Personen ska ha en kursregistrering som läses inom angivet program alt. terminsregistrering (FFG, OM) för angivet program. o Personen ska vara registrerad i en kurs som hör till angiven institution. o Personen ska ha en kursregistrering eller terminsregistrering inom angivet terminsintervall. (OBS! Prioritet: Bör, Status: Godkänd) Notera att principen både och gäller, inte antingen eller! Alla begränsningar ska gå att kombinera. Förtydligande: Om en institution och kurs är angiven så måste kurserna tillhöra institutionen. Om ett program och en kurs är angivet så måste personen ha en registrering på kursen och kursen måste ingå i programmet. Exempel1: sökkriterier kurs: AAA, program: B Person 1 är registrerad på kurs AAA och registrerad på program B Kursen AAA ingår inte i program B -> person 1 ska inte komma med i utsökningen Exempel2: sökkriterier kurs CCC, program: B Person 2 är registrerad på kurs CCC och kursen ingår i program B -> person 2 ska komma med i utsökningen
Lars Hansson 2009-02-11 10 (17) För varje person som uppfyller kriterierna ska systemet söka ut registreringsuppgifter (kursregistrering/terminsregistrering) för senaste terminen. Värde för termin, kurskod och programkod sparas för senare visning. Värde som har förtur vid presentation om det finns flera registreringar senaste terminen: Program: Kurser: 1. Förstagångsregistrering på termin 2. Omregistrering på termin 3. Programmärkning i förstagångsregistrering på kurs 4. Programmärkning i fortsättningsregistrering på kurs 5. Programmärkning i omregistrering på kurs 1. Förstagångsregistrering på kurs 2. Fortsättningsregistrering på kurs 3. Omregistrering på kurs Det är önskvärt att systemet hämtar de senaste registreringsuppgifterna inom terminsintervallet som användaren eventuellt angivit. (OBS! Prioritet: Önskas, Status: Godkänd). Kontroll: Antal poster får ej överstiga 400 Systemet ska avbryta utsökning om det blir träff på fler än 400 personer i katalogtabellen för person. Användaren ska upplysas om detta med hjälp av en informationsruta. Kontroll: Avliden Personer som är avlidna ska indikeras med (Avliden) i sökresultatet. Kontroll: Gallrad Systemet ska kontrollera om respektive person i sökresultatet är gallrad. Om gallrad person inte är återetablerad (finns i NAMN) sparas indikering om gallring och datum för gallring. Kontroll: Interimspersonnummer Systemet ska kontrollera om personen har interimspersonnummer. Om personen inte är etablerad (finns i NAMN) ska indikering om att personen har interimspersonnummer sparas.
Lars Hansson 2009-02-11 11 (17) 2.1.4 Visning av sökresultat Presentation i lista Sökresultatet ska presenteras för användaren i en lista. På varje rad i listan visas följande uppgifter i ordning: o Personnummer o Efternamn o Förnamn o Termin o Kurskod o Programkod Om personen är gallrad (och ej återetablerad) skrivs datum för gallring ut istället för registreringsuppgifter. Om personen har interimspersonnummer (och ej etablerad) skrivs detta ut istället för registreringsuppgifter. Sorteringsordning Som standard ska listan vara sorterad på efternamn, förnamn. Presentation av antal poster i listan I anslutning till listan ska antal poster som systemet sökt ut framgå. 2.1.5 Hantering av sökresultat Sortera om listan Det ska vara möjligt för användaren att sortera om listan på personnummer alt. efternamn, förnamn. Markera person i listan Det ska vara möjligt att markera vilken person i listan som ska följa med till anropande formulär. Utskrift Efter utsökning ska det vara möjligt att skriva ut sökresultatet på papper. I utskriften ska sökvillkor och sökresultat framgå.
Lars Hansson 2009-02-11 12 (17) 2.1.6 Avsluta Bekräfta val Det ska vara möjligt att bekräfta val av person genom att dubbelklicka på personen eller aktivera en knapp. Personen ska då följa med till anropande formulär. Det ska inte vara möjligt att ta med person som är gallrad och ej återetablerad. Avbryta Det ska vara möjligt att avsluta formuläret genom att klicka på kryssruta uppe till höger i fönstret. Då ska markerad person inte följa med till anropande formulär.
Lars Hansson 2009-02-11 13 (17) 3 Design 3.1 Gränssnitt 3.2 Databasslagningar Nuvarande situation Det finns 8 olika sätt att begränsa sökning av personer (sökstjärna tillåtet): Bara med pnr: 1. PNR (innehåller pnr, enamn och tnamn)
Lars Hansson 2009-02-11 14 (17) Pnr och en av de tre begränsningsalternativ (kurs, institution, program): 2. PNR + KURS (kurskod) 3. PNR + INSTITUTION (kursansvarig institution) 4. PNR + PROGRAM (programkod) Pnr och två begränsningsalternativ: 5. PNR + KURS + INSTITUTION 6. PNR + KURS + PROGRAM 7. PNR + INSTITUTION + PROGRAM Alla fyra ifyllda: 8. PNR + KURS + INSTITUTION + PROGRAM 3.2.1 Ett exempel - dagsläget Vi söker med följande testdata Pnr = 810318*, kurs = 2D*, program = MEDIA tabell FFGKURS ger 27 träffar totalt. 1. I dagsläget slår man först mot vy v_namn01 och söker fram occurences/rader i databasen som motsvarar sökmönstret (pnr och möjligtvis tnamn samt enamn) Tex. 810318* antalet träffar: 53 2. Sen tar man första occurence i v_namn01 (1 av 53 alltså) 3. och slår mha. pnr mot fem (5) tabeller FFGKURS, FORTKURS, OMKURS, FFGLIN samt OMREGLIN Efter detta har vi $fs_frist_kurs$ (kurser utan program), $kurs$ (alla kurser), $program$ (program med och utan kurser) 4. Beroende på hur användaren har valt att begränsa sökningen kontrollerar man nu om någon av kurserna, programmen och/eller institutionerna för personen (1 av de 53 personer) stämmer överens med begränsningen. I detta exempel har man begränsat med pnr, kurs och program 5. Först jämför man $kurs$ (11 träffar) med $fs_kurs_lista$ (som innehåller alla kurser som hittats från vy V_KURS01 mha. sökmönster kurs = 2D* 456 träffar) 11 x 456 = 5016 6. Efter detta går man på ett likadant sätt igenom och jämför $program$ (10 träffar) med $fs_progr_lista$ (innehåller program som hittades från vy V_LINJE00 mha. sökmönster kod = MEDIA 1 träff)
Lars Hansson 2009-02-11 15 (17) 10 x 1 = 10 7. Sen kollar man igenom fristående kurser ($fs_frist_kurs$) (inga träffar) och kopplar ihop ett program utan kurs med en fristående kurs med samma termin. 8. Man ser till också att den senaste terminen skrivs ut (ffgkurs, fortkurs, omkurs för kurs samt ffglin, omreglin för program) Det förenklade slutresultatet visar att man gör 53 x 5026 = 266.378 beräkningar/jämförelser oavsett hur många poster det finns som uppfyller sökvillkoren. (53 = antalet träffar i vy v_namn01 och 5026 = kombinationer när man jämför $kurs$ med $fs_kurs_lista$ (5016) + kombinationer när man jämför $program$ med $fs_progr_lista$ (10))
Lars Hansson 2009-02-11 16 (17) Efter nästan 10 minuters sökning får man fram två (2) träffar. Dvs. att det tar nästan tio (10) sekunder att gå igenom en occurence från vy v_namn01. 3.2.2 Hur kan sökeffektivitet förbättras? Ett alternativt sätt skulle kunna vara att skapa en ny vy (V_FFGKURS01) och med hjälp av den minska antalet räkningar/jämförelser som behövs göras för att få fram önskat resultat. V_FFGKURS01 skulle innehålla bl.a. Pnr, kurs, program och termin från tabell FFGKURS Enamn, tnamn (och avliden) från tabell NAMN Institution från tabell KURS Samma testdata som tidigare skulle ge 27 träffar och bara två olika personnummer, när man slår mot vy V_FFGKURS01. Med en slagning mot vyn skulle vi kunna veta vilka personnummer som skall skrivas ut. På det här sättet skulle man komma undan med mycket mindre beräkningar än vad man är tvungen att göra i nuläget. Obs! Exemplet ovan är en förenkling av hur sökning genomförs (steg 1 i kapitel 3.3) samt att det visar bara ett av de 8 sätten som begränsningar kan göras. Dvs. att mer utredning krävs för att kunna genomföra alla slagningar så effektivt som möjligt. 3.3 Databasslagningar Efter utveckling Lämpligen utförs slagning i databasen i tre steg (kapitel 3.2.2 Hur kan sökeffektivitet förbättras? handlar om steg 1 nedan): 1. Hämta förstagångsregistreringar i FFGKURS och FFGLIN med hjälp av begränsningsparametrar. Kontrollera om personnummerlistan (unika personnummer) överstiger 400 träffar. Meddela och avbryt om så är fallet. a. Antaganden: i. Att det inte kan finnas poster i FORTKURS och OMKURS om inga poster finns i tabell FFGKURS. ii. Att det inte kan finnas poster i OMREGLIN om inga poster finns i tabell FFGLIN. b. Dvs. att alla möjliga (unika) personnummer kan fås fram i och med att slå mot dessa två tabeller FFGKURS och FFGLIN. 2. Kontrollera personerna med avseende GALLRAD, INTERIM och AVLIDEN. För varje person vi får träff sparas uppgifter för visning i listboxen. Steg 3 behöver inte göras för personen. 3. Hämta senaste registreringen från FFGKURS, FORTKURS, OMKURS, FFGLIN, OMREGLIN för varje personnummer i listan. Uppgifter om termin, kurs och program visas i listboxen.
Lars Hansson 2009-02-11 17 (17) Öppna frågor Hantering av interim, avliden och gallrad/igallrad? Hur lösa prestanda i steg 1? Vy? Antagande att FFGKURS och FFGLUN räcker för att få fram alla unika personnummer? Mer utredning behövs för att.. fullständigt förstå formulärets funktionalitet (kontroller, slagningar, prioriteringar) steg 2 och 3 En grov tidsuppskattning för tid som krävs för att utreda+utveckla NOUVSD-8150: 30h utredning (utöver tiden som redan använts - c. 30h) 50h utveckling