Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Anchor
_Toc477258559
_Toc477258559
Indholdsfortegnelse
Anchor
_GoBack
_GoBack

Indholdsfortegnelse
1 Formål
1.1 Baggrund
1.2 Målgruppe og forudsætninger
2 Snitfladebeskrivelse
2.1 Behandlingsrelationsservice
2.1.1 Endpoint
2.1.2 treatmentRelationRequestBody
2.1.3 treatmentRelationResponse
2.1.4 BRS notifikationer via Notifikationsservicen
2.2 Notifikationsservice
2.2.1 Endpoint
2.2.2 Betingelser for kald
2.2.3 notificationQueryRequestBody
2.2.4 notificationQueryResponse
2.2.5 TreatmentRelationAlarm
2.2.6 TreatmentRelationFollowup
2.2.7 TreatmentRelationRelayerData
2.3 Format for tidsstempler
2.4 Fejlkoder
3 Eksempler på at kalde services
3.1 Java frameworks
3.1.1 Eksempelkode i Java
3.2 .NET frameworks
4 Ændringslog


Anchor
_Toc40578283
_Toc40578283
Anchor
_Toc477258560
_Toc477258560
Formål

Denne guide har som formål at give et overblik over, hvordan behandlingsrelationsservicen (BRS) kaldes, samt hvorledes der hentes notifikationer fra opfølgninger ed notifikationsservicen.
Guiden indeholder referencer til kodeeksempler og snitfladebeskrivelser for kald til behandlingsrelationsservicen og notifikations-servicen.

Anchor
_Toc477258561
_Toc477258561
Baggrund

Behandlingsrelationsservicen (BRS) er en service, der returnerer den bedst kendte behandlingsrelation imellem en borger og en sundhedsfaglig person på et givet tidspunkt.
I sundhedssektoren findes der ikke et register over behandlingsrelationer, og BRS gør derfor brug af afledt viden fra en række nationale registre for at bestemme den aktuelle behandlingsrelation.
Da den gængse registreringspraksis tillader opdateringer af registrene i et relativt stort tidsrum efter en handling, kan gentagne kald til BRS med samme input give forskelligt resultat over tid, idet datagrundlaget med stor sikkerhed vil ændre sig i dagene og ugerne efter en sundhedsfaglig hændelse, f.eks. en lægekonsultation eller et indlæggelsesforløb på et sygehus.
Man kan i kaldet til BRS vælge at lade servicen håndtere denne kompleksitet, idet man gennem en række parametre kan konfigurere BRS-håndteringen og styre hvordan – og hvornår – der skal leveres et svar til kaldet.

Anchor
_Toc477258562
_Toc477258562
Målgruppe og forudsætninger

Slutbrugerne er i denne sammenhæng f.eks. udviklere og arkitekter hos leverandører, som ønsker at integrere til BRS.
Det forudsættes at læseren kender til Den Gode Webservice (DGWS) og den nationale serviceplatform (NSP).

Anchor
_Toc477258563
_Toc477258563
Snitfladebeskrivelse

Behandlingsrelationsservicen giver mulighed for at bestille opfølgninger gennem brug af notifikationsservicen. Da det forventes at denne option vil blive brugt af de fleste anvendere, er begge snitflader dokumenteret nedenfor.
Bemærk at der refereres til teknisk dokumentation af snitfladeelementerne i afsnittene nedenfor med referencer sat i anførselstegn. Disse referencer peger på BRS-projektet på nspop, og det følgende præfiks er underforstået i referencerne:
{*}{+}https://svn.nspop.dk/public/components/brs/latest/code/+*

Anchor
_Toc477258564
_Toc477258564
Behandlingsrelationsservice

Anchor
_Toc477258565
_Toc477258565
Endpoint

Wiki Markup
Behandlingsrelationsservicen kan tilgås i de decentrale NSP-miljøer (dNSP) under adressen
*\[miljøurl\]/brs-nsp/service/brs*
\\
hvor den stiller operationen "treatmentRelation" til rådighed. Denne operation tager en soap besked som input, indeholdende en header og en body. Headeren indeholder en wsse header samt en medcom header som specificeret i Den Gode Webservice (DGWS) version 1.0.1. IDKortet i headeren skal være på niveau 3 og udstedt af SOSI-STS. WSDL findes ved at tilføje "?wsdl"-postfix til adressen.
Eksempel på endpoint i testmiljøerne (dNSP i TEST2-miljøet):
*http://test2-dnsp.ekstern-test.nspop.dk:8080/brs-nsp/service/brs*

Anchor
_Toc477258566
_Toc477258566
treatmentRelationRequestBody

Body er defineret som et element af typen treatmentRelationRequestBody, der er en complexType indeholdende en række felter, er specificeret i
"common/src/main/resources/xsd/"
Frem for at læse disse foreslås det at studere eksemplet på en korrekt forespørgsel i
"doc/brs/bilag/requests-and-responses/"
En korrekt forespørgsel skal indeholde informationer om følgende:

treatmentRelationRequestBody

Elementer

Beskrivelse

OrganisationIdentifier

Organisationen inden for hvilken relationen skal findes. Feltet er struktureret og kan indeholde et sks, ydernummer eller EAN-nummer.

PatientCpr

Patientens cpr-nummer.

HealthProfessionalCpr

Behandlers cpr-nummer.

RelationLookupTimeInterval

Tidsinterval inden for hvilket behandleren har foretaget opslaget. Kan f.eks. være validetsperioden for behandlerens ID-kort.

TimeLimit

Udløbstidspunkt for opfølgningen efter hvilket der skal oprettes en notifikation, hvis de angivne kriterier ikke er opfyldt (se AcceptableRelations nedenfor).

ExternalReferenceId

Ikke obligatorisk. Et id der vil blive brugt ved returnering af en eventuel notifikation.
Hvis ikke feltet udfyldes, genererer BRS automatisk en værdi i svaret (se tabellen nedenfor).
Formålet med feltet er at give det kaldende system mulighed for at lave egne referencer til eventuelle afklaringer af hændelsesforløb på et senere tidspunkt.

QueryableCvr

CVR nummer der skal have adgang til en eventuel efterfølgende notifikation.
Kan være det samme som den kaldende service, men det behøver det ikke være.
Eventuelle notifikationer kan alene hentes af organisationer, hvor det angivne CVR nummer i dette felt matcher CVR nummeret i den anvendte digitale signatur.

AcceptableRelations

En liste af acceptable relationer (f.eks. "A+, A, B").
Hvis den fundne kategori for en given behandlingsrelation ikke optræder i listen, bestiller BRS en opfølgning afhængigt af værdien i FollowupRelations (se næste række).

FollowupRelations

En liste af relationer der, i tilfælde af at ingen acceptable relationer forefindes (se ovenfor), vil give anledning til en opfølgning, f.eks. "D, E". Ønskes der opfølgning på alle kategorier udover dem der er angivet i AcceptableRelations sættes værdien til "ALL".

AuthorisationIdentifier

Autorisationskode for den behandleren.

ServiceProvider

Tekststreng indeholdende navnet på serviceudbyderen (f.eks. FMK). Bruges til logformål.


Anchor
_Toc477258567
_Toc477258567
treatmentRelationResponse

Operationen "treatmentRelation" returnerer et treatmentRelationResponse, der opfylder DGWS. Det vil sige, at det har en wsse og en medcom header. Selve svaret er defineret som et treatmentRelationResponseBody som defineret i
"common/src/main/resources/xsd/"
Svaret indeholder information om:

...


Et eksempel på et svar fra servicen kan findes i
"bilag/requests-and-responses/"
Den komplette wsdl for servicen kan findes i
"common/src/main/resources/wsdl"

Anchor
_Toc477258568
_Toc477258568
BRS notifikationer via Notifikationsservicen

Hvis der i kaldet til behandlingsrelationsservicen er angivet at der skal bestilles opfølgninger i opfølgningsservicen, vil der komme alarm-notifikationer, hvis de angivne kriterier ikke er opfyldt indenfor det i kaldet angivne tidsrum.
Disse notifikationer kan hentes med notifikationsservicen i det decentrale NSP-miljø.
Hvis der derimod indenfor det angivne tidsrum opnås tilstrækkelig evidens, så de angivne kriterier er opfyldt, bliver der ikke genereret notifikationer.

Anchor
_Toc265831725
_Toc265831725
Anchor
_Toc477258569
_Toc477258569
Notifikationsservice

Anchor
_Toc265831726
_Toc265831726
Anchor
_Toc477258570
_Toc477258570
Endpoint

Wiki Markup
Notifikationsservicen udstilles på NSP'erne under adressen 
*\[miljøurl\]gos/service/notification*
\\
hvor den sætter operationen "notificationQuery" til rådighed.
Eksempel på endpoint i testmiljøerne (dNSP i TEST2-miljøet):
*http://test2-dnsp.ekstern-test.nspop.dk:8080/gos/service/notification*
_Bemærk: NSP miljøernes loadbalancer router trafikken fra ovennævnte endpoint til brs-nsp/service/notification, idet dette er adressen i BRS2._

Anchor
_Toc265831727
_Toc265831727
Anchor
_Toc477258571
_Toc477258571
Betingelser for kald

Man kan hente notifikationer der er "udstedt" til ens eget CVR nummer – altså notifikationer, hvis QueryableCvr matcher CVR nummeret i headeren ved kaldet til Notifikationsservicen. Bemærk at CVR nummeret ikke indgår som en eksplicit parameter, da det er indeholdt i IDKortet, der optræder i soap headeren.
Denne operation tager en soap besked som input, indeholdende en header og en body. Headeren indeholder en wsse header samt en medcom header, som specificeret i Den Gode Webservice (DGWS) version 1.0.1. IDKortet i headeren skal være på niveau 3.

Anchor
_Toc265831728
_Toc265831728
Anchor
_Toc477258572
_Toc477258572
notificationQueryRequestBody

Body er defineret som et element af typen notificationQueryRequestBody, der er en complexType indeholdende en række felter, der er specificeret i
"common/src/main/resources/xsd/notification/"
Frem for at læse denne foreslås det at studere eksemplet på en korrekt forespørgsel i
"doc/bilag/requests-and-responses/"
En korrekt forespørgsel skal indeholde informationer om følgende:

notificationQueryRequestBody

Elementer

Beskrivelse

Type

Typen af notifikationen. For en behandlingsrelation vil værdien være "BRS".

SerialNumber

Et notifikationserienummer der bruges som afsæt i databasen. Kun notifikationer med et serienummer større end eller lig dette returneres.


Anchor
_Toc477258573
_Toc477258573
notificationQueryResponse

Operationen "notificationQuery" returnerer et notificationQueryResponse der opfylder DGWS. Det vil bl.a. sige, at det har en wsse og en medcom header. Selve svaret er defineret som et notificationQueryResponseBody som defineret i
"common/src/main/resources/xsd/notification/"
Svaret indeholder de første 100 notifikationer med serienummer højere end eller lig det der er angivet i forespørgslen. Notifikationerne returneres i sorteret rækkefølge. Hver notifikation indeholder følgende informationer:

...


Et eksempel på et svar fra servicen kan findes i
"doc/bilag/requests-and-responses/"
Den komplette wsdl for servicen kan findes i
"common/src/main/resources/wsdl"
Notifikationers "payload" er af typen TreatmentRelationAlarm. Skema for dette findes her:
"common/src/main/resources/xsd/brs/treatmentRelationAlarm.xsd"
Dette indeholder følgende elementer:

Anchor
_Toc477258574
_Toc477258574
TreatmentRelationAlarm

treatmentRelationAlarm

Elementer

Beskrivelse

ActualRelations

De faktiske relationer fundet for den pågældende behandler og patient.

TreatmentRelationFollowup

Opfølgningen der gav anledning til notifikationen.

Anchor
_Toc477258575
_Toc477258575
TreatmentRelationFollowup

TreatmentRelationFollowup-elementet er af typen beskrevet i
"common/src/main/resources/xsd/brs/treatmentRelationFollowup.xsd"
Denne indeholder felterne:

treatmentRelationFollowup

Elementer

Beskrivelse

TreatmentRelationFollowupSerialNumber

Serienummeret for den pågældende opfølgning.

TreatmentRelationRelayerData

Datastruktur med de nødvendige data for at udtrække gældende relationer, se tabellen nedenfor.

TimeLimit

Tidsgrænse for en relations opståelse. En eventuel notifikation oprettes hvis der efter denne tidsgrænse ikke er opstået en gyldig relation.

RequestSource

Det komplette kald (treatmentRelationRequestBody) der blev sendt til BRS da opfølgningen blev bestilt.

ExternalReferenceId

Samme værdi som i det oprindelige svar fra BRS.

UniqueId

Samme værdi som i det oprindelige svar fra BRS.

QueryableCvr

CVR-nummer på instansen der har ret til at læse eventuelle notifikationer.

AcceptableRelations

Relationer der skal være til stede for at opfølgningen slettes uden at give anledning til en notifikation.


Anchor
_Toc477258576
_Toc477258576
TreatmentRelationRelayerData

Elementet TreatmentRelationRelayerData indeholder følgende data, der er nok til at identificere de kendte relationer mellem en behandler og en patient.

TreatmentRelationRelayerData

Elementer

Beskrivelse

OrganisationIdentifier

Organisationen inden for hvilken relationen skal findes. Feltet er struktureret og kan indeholde et sks, ydernummer eller EAN-nummer.

PatientCpr

Patientents CPR-nummer.

HealthProfessionalCpr

Den sundhedsfagliges CPR-nummer.

RelationLookupTimeInterval

Intervallet inden for hvilket relationen skal forefindes. Vil i første omgang være trukket ud fra id-kortet i den oprindelige treatmentRelationRequest (Intervallet sættes til id-kortets gyldighedsperiode).

Anchor
_Toc477258577
_Toc477258577
Format for tidsstempler

Bemærk at formatet på alle tidsstempler (f.eks. TimeLimit og RelationLookupTimeInterval) er som følger: YYYY-MM-DD'T'HH:MM:SS'+'forskydning fra GMT', f.eks. "2013-01-31T22:59:40+02:00"

Anchor
_Toc265831730
_Toc265831730
Anchor
_Toc477258578
_Toc477258578
Fejlkoder

Nedenfor ses en liste af typiske fejl der kan forekomme når en service kaldes. Fejl der returneres indeholder en fejlkode samt en fejltekst med yderligere detaljer. Teksten er ikke medtaget i tabellen nedenfor da den kan variere afhængig af hvad der gav anledning til fejlen.

Kode

Betydning

processing_problem

Som oftest validerings fejl, kan dog også opstå ved en generel fejl i servicen.
Fault message vil indeholde yderligere beskrivelse af årsagen.

missing_required_header

En sikkerheds eller medcom header mangler i requestet

security_level_failed

Authentification level som angivet i headeren er ikke tilstrækkelig til at tilgå servicen.

invalid_idcard

Ugyldigt id-kort.

expired_idcard

Id-kortet er udløbet.

not_authorized

Manglende whitelisting (kontakt nsp operatøren for at blive whitelistet)


Anchor
_Toc477258579
_Toc477258579
Eksempler på at kalde services

Anchor
_Toc477258580
_Toc477258580
Java frameworks

JAVA SEAL er et open source bibliotek, der kan håndtere SOSI IDKort, DGWS og integration til SOSI-STS. Biblioteket er dokumenteret på digitaliser.dk:
{+}http://digitaliser.dk/group/374971+

Anchor
_Toc477258581
_Toc477258581
Eksempelkode i Java

Der er udviklet testkode, der gør brug af JAVA SEAL biblioteket, sammen med JAXWS webservicestakken til at kalde de to services. Eksemplet kan bruges til at teste de forskellige service-håndtag fra ydersiden. Man kan med fordel tage udgangspunkt i eksemplet, når der implementeres en javabaseret webserviceklient, der gør brug af BRS og opfølgningsservicen.
Test-koden kan hentes fra projektet på nspop:

...


production/src/main/java/dk/nsi/behandlingsrelationservice/BRSQueries.java

Anchor
_Toc477258582
_Toc477258582
.NET frameworks

Seal.NET er et open source framework, der kan håndtere SOSI IDKort, DGWS og integration til SOSI-STS. Seal.NET er dokumenteret på digitaliser.dk:
{+}http://digitaliser.dk/group/375117+
Der er pt. ikke skrevet eksempelkode på at kalde de to services fra et .NET projekt, men der er WSDL'er til rådighed, som man kan anvende i Visual Studio's webservice wizard, kombineret med Seal.NET.

Anchor
_Toc263424147
_Toc263424147
Anchor
_Toc477258583
_Toc477258583
Ændringslog

Kilden til dette dokument kan findes på nspop:
{+}https://svn.nspop.dk/svn/trifork/brs/trunk/doc/brs/+

...