26 februari 2015

Jalle har sett dagens ljus

(Den här bloggposten riktar sig först och främst till mina arbetskamrater, men läs gärna om du tycker att det verkar intressant!)

Just nu har jag ett kul uppdrag på jobbet, nämligen att utveckla ett system för dokumentation på KTC, kliniskt träningscenter. Bakgrunden är att studenterna inte kan dokumentera sina åtgärder och bedömningar elektroniskt. I den mån de alls dokumenterar, sker det på lösa papper, vilket (nästan) ingen gör i verkligheten nuförtiden. Så för att förbättra träningssituationen på KTC ska jag nu utveckla ett system just för dokumentation.

Man hade kunnat tänka sig att institutionen köpte in ett kommersiellt journalsystem i stället. Men ett standardsystem skulle bli extremt dyrt att köpa in och det finns en mängd funktioner som inte behövs på KTC, till exempel avancerade sekretessfunktioner, krav på hög driftssäkerhet och tillgänglighet, diagnosstatistik, e-recept, och mängder av kopplingar till andra system inom sjukvården.

Genom att göra ett eget system kan man bygga in andra användbara funktioner, som att spara ett case och köra det upprepade gånger, egenregistrering av användare och så vidare. Vi kan prioritera tydlighet före komplexitet för att underlätta inlärningen.

Jag tänkte försöka blogga regelbundet och berätta vad jag gör och hur det skrider framåt. Om man jobbar på institutionen får man gärna testköra - e-posta mig så förklarar jag mer.
Jag kom igång för någon vecka sedan, och nu finns det ett första embryo. Hittills har jag byggt följande funktioner:

Grundläggande webblayout. Grunden här är ett ramverk som heter Bootstrap, som var överraskande lätt att lära sig och ge hyfsat snygga sidor. Templatemo 415 dashboard är en utbyggnad av Bootstrap som innehåller sidomenyer, diagramfunktioner och lite till. Under huven rullar också jQuery - ett av de vanligaste javascriptbiblioteken som underlättar en massa saker när man kodar.

In- och utloggning via CAS. Man hade kunnat göra en helt lokal användaredatabas, men genom att koppla den till CAS så får enbart personer anknutna till UmU tillgång till systemet, och vi får viss information på köpet (t.ex. namn och CAS-id, som unikt identifierar studenterna). Dessutom slipper studenterna hålla rätt på en inloggning till.

Kopplingen sker rent tekniskt via Google Apps. Jag hittade en färdig komponent för att autentisera användare via openID och då var det inte över sig krångligt. På sikt skulle man förstås kunna knyta systemet direkt till Shibboleth, som är systemet bakom UmU:s CAS. Men nu var det viktigare att fort få upp ett system för inloggning.

Den tredje saken jag gjort såhär långt är patientregistret. Systemet behöver förstås låtsaspatienter att öva på. För att man ska slippa hitta på namn och åldrar själv, slumpar systemet fram det om man vill. Så här ser det ut:



När man väljer kön, så slumpar Jalle automagiskt fram ett för- och efternamn. Namnen kommer från valmyndigheten (listan på alla kandidater till kommunval i landet hösten 2014). De är sannolikt inte helt representativa för det svenska nutida namnskicket (om man tänker på att invandrare ofta är underrepresenterade i politiken), men det får duga. Åldern slumpas också fram inom det specificerade intervallet.

Systemet arbetar med fejkade personnummer. De följer den gängse algoritmen för personnummer, men lägger ökar kontrollsiffran med 1. Det innebär alltså att personnumren i Jalle inte går att använda i andra system. Bra ur säkerhetshänseende, tänker jag, så ingen vanlig människa slinker in i Jalle och vice versa.

Slutligen har jag kodat en beläggningslista och funktion för att skriva in och ut patienter i systemet.

Jag försöker att hårdkoda så lite jag bara kan, så att systemet ska vara anpassningsbart. Ibland är det dock inte praktiskt genomförbart, men tanken är att jag ska fixa det så småningom. Men nu prioriterar jag som sagt att få det i drift snabbare i stället.

Och namnet då? Jalle? Jo, det är initialerna på Jenny, Anna-Lisa, Lina och Elina - de fyra första sjuksköterskestudenterna i Umeå 1907.