Meldingsutveksling med Kreftregisteret over Norsk Helsenett

Meldingsutveksling med Kreftregisteret over Norsk Helsenett
Versjonshistorikk
Versjon
0.1
0.2
0.3
Dato
2011-10-05
2011-10-06
2011-10-6
0.4
2011-10-17
Kommentar
Første utkast
Legge til oppsummering
Endre noe tekst og
layout.
Tekstlig innhold
Forfatter
Sølve Monteiro
Sølve Monteiro
Steinar Auensen
Jan Nygård
Innledning
Dette dokumentet beskriver delvis hvordan Kreftregisteret idag mottar meldinger, litt om
prosseseringen og litt om hvordan vi ønsker at nye partnere kan utveksle meldinger med oss. Det er
mange tekniske områder som ikke vil bli gjennomgått her (Norsk Helsenett, meldingstjeneren, KITH
sine XML’er, ebXML, HTML-skjema), da det finnes tilstrekkelig dokumentasjon for disse systemene
andre steder.
Per idag (05/10/2011) er det kun én aktør på Norsk Helsenett som innsender kliniske kreftmeldinger
til Kreftregisteret, Sykehuset Østfold, så dette vil bli brukt som eksempel.
Denne instruksen er ment for teknisk personell med litt kunnskap mo XML og generell IT.
Meldingstyper
Det brukes to forskjellige meldingstyper, begge definert av KITH: Hodemelding og
Applikasjonskvittering.
Hodemelding (http://kith.no/templates/kith_WebPage____1593.aspx )
Denne XMLfilen er en generisk type som kan brukes til alt. Siden de fleste andre meldingene er for
spesifikke og det er for mye arbeid å endre på disse, brukes hodemeldingen sitt åpne felt for å sende
data på formatet vi ønsker selv. I all hovedsak ser hodemeldingen slik ut:
<?xml version="1.0" encoding="utf-8"?>
<MsgHead xmlns="http://www.kith.no/xmlstds/msghead/2006-05-24">
<MsgInfo>
<Type V="{{meldingstype}}" />
<MIGVersion>{{versjonsnummer}}</MIGVersion>
<GenDate V="{{generert tidspunkt}}"/>
<MsgId>{{unik meldingsid}}</MsgId>
<Sender>
<Organisation>
<Ident>
<Id>{{avsender NHN ID}}</Id>
<TypeID V="ENH"/>
</Ident>
</Organisation>
</Sender>
<Receiver>
<Organisation>
<Ident>
<Id>{{Mottakers NHN ID}}</Id>
<TypeID V="ENH"/>
</Ident>
</Organisation>
</Receiver>
</MsgInfo>
<Document>
{{“Fritt” innhold}}
</Document>
</MsgHead>
Her har feltene som er aktuell for å sette inn data blitt farget i rødt for utheving. Her følger en
beskrivelse for disse.
Meldingstype og versjonsnummer
Disse to attributtene identifiserer hvilken type melding som blir sendt med hodemeldingen. Det er
ikke noen teknisk restriksjon på hva meldingen skal hete, men Kreftregisteret sorterer meldingene
etter denne verdien. Derfor er det viktig at denne verdien settes etter avtale med Kreftregisteret. Det
samme gjelder for versjonsnummer. I prosseseringen er det noen elementer som har blitt lagt til eller
fjernet avhengig av versjonen, derfor er denne også ganske rigid.
Generert tidspunkt
Dette er typisk satt av applikasjonen, og bør være i formatet ÅÅÅÅ-MM-DDTtt:mm:ssZ (ISO 8601).
Eksempel på en gyldig verdi for dette feltet er 2011-10-03T10:33:27Z
MeldingsID
Dette er en unik ID for hver melding. Det anbefales å bruke UUID eller lignende hvis mulig. Et
alternativ er å bruke for eksempel millisekundtelleren for UNIX TIME (01.01.1970). Denne må være
unik for at systemet med applikasjonskvitteringer skal fungere.
Avsender NHN ID
Dette er Norsk Helsenett ID til avsender. Denne må være korrekt for at applikasjonskvitteringene skal
komme fram. Dette nummeret er typisk organisasjonsnummeret. Eksempler på noen ID’er:
Kreftregisteret: 974771381
Sykehuset Østfold: 983971768
Rikshospitalet: 987399708
...
Mottakers NHN ID
Dette er Norsk HelseNett ID til mottaker. Dersom meldingen skal sendes til Kreftregisteret, må ID
være 974771381.
Innhold
Dette vil være selve kroppen, eller innholdet i meldingen. Her kan hva som helst inkluderes, så lenge
innholdet er gyldig XML.
Eksempel
Under følger et eksempel (litt forenklet) på en melding mottatt fra Sykehuset Østfold. Meldingen ble
generert av webapplikasjonen for å fylle ut kreftmeldinger.
<?xml version="1.0" encoding="utf-8"?>
<MsgHead xmlns="http://www.kith.no/xmlstds/msghead/2006-05-24">
<MsgInfo>
<Type V="HTML_KLIN_MAMMA"/>
<MIGVersion>1.3</MIGVersion>
<GenDate V="2011-10-03T10:33:27Z"/>
<MsgId>1317630807385</MsgId>
<Sender>
<Organisation>
<Ident>
<Id>983971768</Id>
<TypeID V="ENH"/>
</Ident>
</Organisation>
</Sender>
<Receiver>
<Organisation>
<Ident>
<Id>974771381</Id>
<TypeID V="ENH"/>
</Ident>
</Organisation>
</Receiver>
</MsgInfo>
<Document>
<!-- Her kommer alt innholdet i meldingen... -->
</Document>
</MsgHead>
Denne hodemeldingen er av type HTML_KLIN_MAMMA versjon 1.3. Dette har blitt satt opp slik at
Kreftregisteret vet hvordan å prossessere akkurat denne typen melding av denne versjonen. Den
unike ID’en her (1317630807385) ble generert av webapplikasjonen som lagde XML-filen, og er Unixtime (millisekunder siden 01.01.1970). Avsenderen er Sykehuset Østfold, og de har NHN ID (og
organisasjonsnummer) 983971768. Siden mottaker er Kreftregisteret, er mottaker ID satt til
974771381. I noden MsgHead/Document er selve innholdet i meldingen, som et annet XML-element
med mange underelementer. Siden dette innholdet er irrelevant for denne forklaringen (såfremt
innholdet er gyldig XML), vil ikke dette bli diskutert nærmere.
Applikasjonskvittering (http://www.kith.no/templates/kith_WebPage____1008.aspx )
Dette er også en generisk melding, men har mindre frihet i seg. Det aller viktigste i denne meldingen
er at den refererer til en tidligere mottatt melding. Meldingstjenere vil på grunnlag av denne
referansen kunne automatisk returnere applikasjonskvitteringen til korrekt avsender.
Under vises et eksempel på en applikasjonskvittering:
<?xml version="1.0" encoding="utf-8"?>
<AppRec xmlns="http://www.kith.no/xmlstds/apprec/2004-11-21"
xmlns:xsd="http://www.w3.org/2001/XMLSchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://www.kith.no/xmlstds/apprec/2004-11-21 AppRec-v1-2004-11-21.xsd">
<MsgType V="APPREC"/>
<MIGversion>1.0 2004-11-21</MIGversion>
<GenDate>2011-01-01T01:01:01</GenDate>
<Id>a055409e-32b1-4343-b386-a937d074ca18</Id>
<Sender>
<Role V="SENDER"/>
<HCP>
<Inst>
<Name>Kreftregisteret</Name>
<Id>974771381</Id>
<TypeId V="ENH"/>
</Inst>
</HCP>
</Sender>
<Receiver>
<Role V="RECEIVER"/>
<HCP>
<Inst>
<Name>Sykehuset Østfold</Name>
<Id>983971768</Id>
<TypeId V="ENH"/>
</Inst>
</HCP>
</Receiver>
<Status V="3" DN="Feil i innhold"/>
<Error V="1" DN="Ugyldig fødselsnummer, vennligst dobbeltsjekk og send inn ny versjon."/>
<OriginalMsgId>
<MsgType V="HTML_KLIN_MAMMA" DN="Meldeskjema brystkreft"/>
<IssueDate>2011-10-03T10:33:27Z</IssueDate>
<Id>1317630807385</Id>
</OriginalMsgId>
</AppRec>
Denne applikasjonskvitteringen referer til hodemeldingen vist som eksempel i forrige avsnitt:
elementet Apprec/OriginalMsgId/Id er det samme som hodemeldingens MsgHead/MsgInfo/MsgId.
Dette er det absolutt viktigste feltet i meldingen. Dersom denne er korrekt, vil den til og med
overstyre verdien angitt i ”Reciever” (ihvertfall for DIPS Communicator). Denne meldingen
inneholder ikke”frie” felt, så det er strengt tatt ikke mulig å gi tilbakemelding utenom en
forhåndsdefinert status (definert av KITH): ”OK”, ”Avvist” og ”feil i delmelding”, med verdier hhv 1, 2
og 3. Siden det behov for å gi mer tilbakemelding enn dette, er det heldigvis en måte å komme rundt
dette. Elementet <Error> kan legges ved selv om meldingen er OK. I attributten ”DN” kan man legge
inn fritekst, for en mer tekstlig tilbakemelding. Dette har blitt brukt av KRG for eksempel for å
bekrefte en melding med status OK, samtidig som forslag til endringer, forbedringer eller generelle
tilbakemeldinger har blitt gitt.
Meldingsflyt
Meldingsflyten med Kreftregisteret over Norsk HelseNett (NHN) er enkel. Avsender sender innholdet
sitt pakket inn i en KITH hodemelding, Kreftregisteret prosseserer den, og sender tilbake en
applikasjonskvittering. Selve innholdet i meldingen til Kreftregisteret vil være et element i
Figur 1: Meldingsflyten fra helseforetak til Kreftregisteret og tilbake igjen
hodemeldingen, mens resten av hodemeldingen blir å betrakte som metadata. Denne metadataen
brukes av Kreftregisteret for å sortere, behandle og gi korrekt tilbakemelding på den innsendte
meldingen. Følgende figur viser meldingsflyten mellom innsender og Kreftregisteret.
Beskrivelse:
- Helseforetaket fyller ut en melding i en innregistreringsløsning (HTMLSkjema, MRS, ...)
- Innregistreringsløsningen legger meldingen i en gitt mappe som overvåkes av
meldingstjeneren. Meldingen er av type KITH MsgHead med en gitt verdi for type og versjon.
- Meldingstjeneren plukker opp hodemeldingen og sender den til riktig partner angitt av
adressen i hodemeldingen.
- Kreftregisterets meldingstjener (DIPS Communicator) mottar meldingen og dumper den ut i
en mappe for videre behandling
- Gitt at den mottatte meldingen er av typen KITH hodemelding sendes den videre inn i
systemet og sorteres på type og versjon. Det er flere trinn med prossesering og validering
-
-
-
her, både en automatisk (sjekk av validitet, kompletthet, osv) og manuell (medisinsk innhold
er fornuftig, korrekt pasient,...).
Kreftregisteret genererer en applikasjonskvittering. Per idag aktiveres dette manuelt, etter
den medisinske vurderingen av meldingen. Siden meldingen ligger på vent helt til den blir
behandlet av en av Kreftregisterets medarbeidere, kan det ta lang tid før
applikasjonskvitteringen sendes. Denne delen av prossessen vil endres i framtiden ved at
kvittering vil gis raskere.
Meldingstjeneren plukker opp applikasjonskvitteringen. Siden applikasjonskvitteringen
referer til en melding med ID som har blitt mottatt tidligere, blir den automatisk returnert til
korrekt adresse.
Helseforetaket mottar applikasjonskvittering. Avhengig av deres system, kan denne routes
tilbake til innregistreringsløsningen for å gi en bekreftelse/tilbakemelding på den utfylte
meldingen.
Oppsummering
Meldingsutveksling med Kreftregisteret er per idag enkelt, men det må gjøres noen trinn på forhånd.
1. Avtale kommunikasjon med Kreftregisteret slik at partner kan bli satt opp i meldingstjener.
Dette kan involvere utveksling av sertifikater.
2. Avtale type hodemelding, versjon og innhold med Kreftregisteret.
3. Installer og konfigurer innregistreringsløsning, og pass på at meldinger blir lagret/eksportert
som KITH hodemeldinger etter avtale
4. Konfigurer meldingstjener til å automatisk plukke opp hodemeldingene og sende de til
Kreftregisteret.
5. Kreftregisteret vil returnere en applikasjonskvittering (AppRec). Det er aktuelt at HF
behandler disse for å gi tilbakemelding til innregistrere.