Automatisk oversettelse av pasientjournaler

Vegard Nossum


Innholdsfortegnelse

1. Prosjektdeltakere
2. Prototypeimplementasjon
3. DocuLive
4. Norsk Elektronisk Legehåndbok (NEL)
5. Felleskatalogen
6. Klinisk studie
7. Database
7.1. Konfigurasjon
7.2. Opprette databasen
7.3. Importere data fra NEL og ordbok definert ved IVS
7.4. Importere data fra Felleskatalogen
8. Oversettelsesserver (thesaurus)
8.1. Konfigurere og bygge programmer
8.2. Kjøre server
8.3. Oversette 1 dokument
8.4. Bygge dokumentasjon av kode
8.5. Protokoll for oppslag/oversettelse
9. Installere prototypen på en Linux-maskin
9.1. Montere databasefilene
9.2. Montere PHP-programfilene
9.3. Dokumentasjon
Ordliste

1. Prosjektdeltakere

  • Erik Fosse: Avdelingsleder. Opphavsmann til prosjektidé.

  • Ilangko Balasingham: Professor ved NTNU. Prosjektleder.

  • Karl Øyri: Oversykepleier. Karl skal skrive en artikkel om den kliniske delen av prosjektet i forbindelse med sin doktorgrad.

  • Elena Ivanova: Masterstudent ved IDI, NTNU 2005/2006. Skrev masteroppgave om prosjektet, og denne ligger til grunn for det meste av arbeidet som er gjort senere. Skrev prototypeimplementasjonen.

  • Ola Vikholt: Sivilarbeider 2005/2006. Videreutviklet prototypen. Arbeidet med innhenting av tillatelse fra pasienter, forbedring av oppslagsalgoritmer og integrering mot DocuLive.

  • Vegard Nossum: Sivilarbeider 2006/2007. Utvikling av en arkitektur som passert bedre for praktisk bruk.

2. Prototypeimplementasjon

Et prototype av programvaren i prosjektet ble utviklet av Elena Ivanova (og senere også Ola Vikholt). Dette programmet ble skrevet i PHP og var derfor en web-applikasjon. Med dette programmet kunne man lese journaler som ble lagt inn på forhånd, og både lese forklaringer på ord som ble gjenkjent og legge til nye definisjoner på ord som ikke ble gjenkjent.

Prototypen ble installert på en av IVS' maskiner. Brukernavn og passord til denne maskinen er root og e60breh. Programfilene finnes i /var/www/masterwww4, og dataene er lagret i flere databaser, nel, masterwww og minjournal. Brukernavn og passord for disse er root og bjarne.

Brukernavn og passord for å logge inn i programmet er admin og e60breh.

Fordi dette var et program utviklet i forbindelse med en masteroppgave, ble det ikke lagt stor vekt på integrasjon med sykehusets EPJ, skalerbarhet eller sikkerhet. Derfor begynte vi å utvikle en ny arkitektur som tok hensyn til disse tingene og samtidig være mer fleksibel.

De journalene som ligger i programmet er hentet ut av Datacor, EPJ-systemet som før ble brukt på Torakskirurgisk avdeling, og som delvis blir brukt på Intervensjonssenteret i dag. Journalene ble hentet ut av dette systemet manuelt ved å skrive ut journalnotater til en virtuell printer og så trekke ut selve journalteksten av dette dokumentet.

3. DocuLive

DocuLive er pasientjournalsystemet som Rikshospitalet bruker i dag, og er utviklet av Siemens. Systemet er basert på papirjournalen, dvs. at det finnes hundrevis av forskjellige dokumenttyper som hver inneholder flere felter. Dokumenttypene er kategorisert ut ifra en formalisert standard.

DocuLive lagrer pasientinformasjon og inneholder en adgangskontroll som gjør at kun helsepersonell som har med pasienten å gjøre, kan lese en pasients journal.

DocuLive består av to deler, en server og en klient. Sykehuset drifter serveren(e) sentralt, og klientene brukes av klinisk personell. DocuLive bruker MS SQL Server for å lagre informasjonen i systemet. Denne databasen er lukket og kan bare leses/skrives gjennom DocuLive. Det er imidlertid mulig å lage eksterne klienter som kommuniserer med DocuLive server over .NET WebServices (SOAP over HTTP).

Dokumentasjonen av DocuLive.NET WebServices finnes på http://www.doculive.net/WebServices.aspx

Ola Vikholt og Vegard Nossum har vært i kontakt med Bjørnar S. Haugland som jobber på IT-avdelingen, for å få en lokal installasjon av siste versjon av DocuLive server og klient med Microsoft SQL Server og DocuLive WebServices .NET som kan brukes til å eksperimentere med WebServices. Dette er fullt mulig, men foreløpig finnes det ikke noe sted å plassere denne maskinen, som må være en RH-klient koblet til RH-nettet.

4. Norsk Elektronisk Legehåndbok (NEL)

NEL er en medisinsk ordbok som inneholder forklaringer på medisinske termer. NEL finnes i papirutgave og nettutgave. NEL har derimot ingen stavekontroll, og kan ikke gjøre oppslag på flere ord i en tekst.

Intervensjonssenteret har tillatelse til å bruke NEL i dette prosjektet.

http://www.legehandboka.no/

5. Felleskatalogen

Felleskatalogen er et register over alle preparater som selges i Norge. Dette registeret inneholder pakningsvedleggene til disse preparatene. Ved å hente ut navn på og en kort beskrivelse av hvert preparat, kan vi forklare også disse ordene dersom de forekommer i journalen, og samtidig gi pasienten direkte tilgang på pakningsvedlegget til dette preparatet.

Intervensjonssenteret har tillatelse til å bruke Felleskatalogen i dette prosjektet.

Felleskatalogen nedlastbar web” kan lastes ned fra http://www.felleskatalogen.no/tjenester med brukernavn fk-web og passord fk-web. Vår kontaktperson hos Felleskatalogen er Ole-Kristian Setnes .

http://www.felleskatalogen.no/

6. Klinisk studie

Intervensjonssenteret vil gjerne gjøre en klinisk studie som viser om systemet gir pasienten en bedre erfaring ved opphold på sykehuset og ved lesing av journalen. Det er allerede søkt regional-etisk komité, og tillatelse til å gjøre studien er gitt. Intervensjonssenteret har også bedt omkring 300 (?) toraks-pasienter om tillatelse til å bruke deres journal i prosjektet. Disse svarene kan finnes i tre permer markert “MinJournal 2006 - Svar fra pasienter ang. bruk av journal”.

7. Database

For å opprette en ny MySQL-database, følg instruksjonene i MySQL-instruksjonsmanualen (http://dev.mysql.com/doc/).

7.1. Konfigurasjon

Det lønner seg å ha en konfigurasjonsfil for MySQL-klienter i hjemmekatalogen. Dette gjør det mye enklere å bruke databasen fordi en slipper å skrive inn brukernavn og passord hver gang en kobler til. Lag en fil ~/.my.cnf og sett inn følgende:

# For the command-line client
[client]
user=root
password=
database=minjournal2

# For the thesaurus application
[minjournal]
user=root
password=
database=minjournal2

7.2. Opprette databasen

Databaseformatet er lagret som et MySQL-skript i data/tables.mysql. Dette kan kjøres ved å gå til katalogen data og skrive mysql minjournal2 < tables.mysql. Dette vil slette alle data som finnes i databasen minjournal2.

7.3. Importere data fra NEL og ordbok definert ved IVS

For å importere data fra prototypeimplementasjonen, gå til katalogen data og kjør perl import-database2.pl. Det vil muligens være nødvendig å endre tilkoblingsparametere (brukernavn og passord) for databasen(e) hvis disse har blitt endret. Dette vil importere data både fra NEL-databasen og de ordene som har blitt definert ved Intervensjonssenteret. Ordlisten med definisjoner fra NEL vil lagres med id 1, og ordlisten med definisjoner fra IVS vil lagres med id 2.

7.4. Importere data fra Felleskatalogen

For å importere data fra Felleskatalogen, gå til katalogen som inneholder mappen preparat-register. Kjør herifra perl import-felleskatalogen.pl. Ordlisten med definisjoner fra Felleskatalogen vil lagres med id 0.

8. Oversettelsesserver (thesaurus)

8.1. Konfigurere og bygge programmer

Før programmene kan bygges, må libxml2 (se http://www.xmlsoft.org/) være installert. Om denne installeres gjennom distribusjonens pakkesystem, må -devel-pakken også installeres.

Gå til prosjektets rotkatalog. Kjør ./autogen.sh. Kjør ./configure. Kjør make. Se også filen INSTALL i rotkatalogen.

8.2. Kjøre server

For å starte oversettelsesserveren, kjør thesaurus/thesaurus. Programmet vil nå lytte etter forespørsler.

8.3. Oversette 1 dokument

I client-katalogen finnes en eksempelklient som leser 1 dokument i format som avtalt med Siemens, og skriver 1 dokument i HTML-format for visning i nettleser. Dette programmet kan kjøres som CGI-skript (gjennom webserver) eller som et frittstående program (fra kommandolinjen). Inndata leses fra stdin og utdata skrives til stdout. For å oversette et eksempeldokument, kjør client/view < client/doculive-request.txt > client/doculive-request.out.html. Deretter kan html-filen åpnes i en nettleser.

8.4. Bygge dokumentasjon av kode

For å bygge HTML- og LaTex-versjoner av dokumentasjonen som finnes i kildekoden, kjør doxygen. Filer vil bli generert i documentation-katalogen.

8.5. Protokoll for oppslag/oversettelse

Denne protokollen brukes av klientene og serveren for å kommunisere til serveren hvilke ord som skal slås opp. Protokollen består i å utveksle en forespørsel (fra klient til server) og svar (fra server til klient). Forespørsel og svar er XML-dokumenter som følger oppbygningen som beskrevet i protocol/request.xsd og protocol/response.xsd. Denne protokollen bruker TCP/IP som transport-lag, og kommunikasjonen foregår på port 49152.

9. Installere prototypen på en Linux-maskin

For å gjøre det lett å installere prototypen på andre maskiner, har vi valgt å lage øyeblikksbilder av filsystemet til den originale maskinen. Disse øyeblikksbildene er kun lesbare, men mange programmer (inkludert MySQL og PHP) må ha skrivetilgang til noen av filene. Derfor må bildene monteres og så kopieres til et område som også kan skrives til. Nedenfor vises framgangsmåten for kopiere bildene til en midlertidig mappe (tmpfs) i RAM. Det vil det også være mulig å gjøre dette med unionfs, da også mer effektivt.

Når prototypen er installert, kan den gjøes tilgjengelig ved å gå inn på http://localhost/.

9.1. Montere databasefilene

Advarsel

Dette øyeblikksbildet ble laget under MySQL versjon 5.0.32. Senere versjoner er kanskje ikke bakoverkompatible med dette formatet!

  1. Stopp MySQL.

    /etc/init.d/mysql stop

  2. Lag en midlertidig katalog der øyeblikksbildet kan monteres.

    mkdir -p mnt/var-lib-mysql

  3. Monter øyeblikksbildet.

    mount -o loop -t squashfs var-lib-mysql.squashfs mnt/var-lib-mysql

  4. Monter en midlertidig katalog over gjeldende /var/lib/mysql.

    mount -t tmpfs tmpfs /var/lib/mysql

  5. Kopier øyeblikksbildefilene til den midlertidige katalogen.

    cp -a mnt/var-lib-mysql/* /var/lib/mysql/

  6. Avmonter øyeblikksbildet.

    umount mnt/var-lib-mysql

  7. Bytt eier- og gruppenummer på databasefilene. Dette steget er nødvendig fordi forskjellige systemer kan ha forskjellige brukernummer for samme brukernavn, i dette tilfellet mysql.

    chown -R mysql:mysql /var/lib/mysql/

  8. Start MySQL.

    /etc/init.d/mysql start

For å avmontere øyeblikksbildet, kjør umount /var/lib/mysql. Husk å stoppe MySQL før du gjør dette!

9.2. Montere PHP-programfilene

  1. Stopp Apache HTTPd.

    /etc/init.d/httpd stop

  2. Lag en midlertidig katalog der øyeblikksbildet kan monteres.

    mkdir -p mnt/var-www

  3. Monter øyeblikksbildet.

    mount -o loop -t squashfs var-www.squashfs mnt/var-www

  4. Monter en midlertidig katalog over gjeldende /var/www.

    mount -t tmpfs tmpfs /var/www

  5. Kopier øyeblikksbildefilene til den midlertidige katalogen.

    cp -a mnt/var-www/* /var/www/

  6. Avmonter øyeblikksbildet.

    umount mnt/var-www

  7. Start Apache HTTPd.

    /etc/init.d/httpd start

For å avmontere øyeblikksbildet, kjør umount /var/www.

Husk å endre DocumentRoot i /etc/httpd/httpd.conf til /var/www/masterwww_4!

9.3. Dokumentasjon

Øyeblikksbildet home-ola-ivs_minjournal.squashfs kan monteres hvor som helst ved å bruke samme framgangsmåte som ovenfor. Dette bildet inneholder filer og dokumentasjon skrevet av Ola Vikholt.

Ordliste

DocuLive

EPJ-systemet som brukes ved Rikshospitalet.

EPJ

Elektronisk pasientjournal.

EPR

Electronic patient record.

Se EPJ.

IVS

Intervensjonssenteret.

klinisk

Pasientrettet/-orientert.

NEL

Norsk Elektronisk Legehåndbok.

RH

Rikhospitalet.

squashfs

Et kun-les filsystem med komprimering.

unionfs

Et filsystem som slår sammen to filsystemer, f.eks. ett kun-les-filsystem og ett les-skriv-filsystem.

øyeblikksbilde

Et filsystem eller mappe fryst i tid.