Den Gode Sårjournal Service MedCom, version 1.0.0 W 1
Den Gode Sårjournal Service Rettelser... 3 Formål... 4 Funktionalitet... 5 GetSignOnLink... 5 GetNumberOfUnreadNotes... 5 Bilag A: Specificering af DGWS... 6 Netværk... 6 Id-kortattributter... 6 Kommunikationsmodel... 6 Kuvertattributter... 6 Logning... 6 Bilag B: Teknisk dokumentation... 7 End point til servicen... 7 WSDL... 7 DataListe... 7 Komplekse typer... 7 Bilag C: Eksempler... 8 GetSignOnLink... 8 GetNumberOfUnreadNotes... 9 Referencer... 10 MedCom, Den Gode Sårjournal Service ver. 1.0.0 2
Rettelser Dato Ansvarlig Version Beskrivelse 24.09.2013 Ulrik Hardt Schønnemann 1.0.0 Første udgave. MedCom, Den Gode Sårjournal Service ver. 1.0.0 3
Formål Formålet med standarden er at understøtte adgangen til den elektroniske sårjournal direkte fra fagsystemerne i kommuner og på sygehusene. I første version af servicen implementeres funktionalitet til at understøtte single sign-on og forespørgsel om hvor mange ulæste notater der er i patienten s sårjournal. I senere versioner forventes udvidelser, der vil gøre det muligt for et klientsystem, at overføre data til og fra sårjournalen. MedCom, Den Gode Sårjournal Service ver. 1.0.0 4
Funktionalitet Servicen udstilles som webservice der overholder Den Gode Webservice version 1.0.1. De enkelte metoder i servicen beskrives herunder. GetSignOnLink Klientsystemet forespørger om et link, der anvendes i en browser til at logge brugeren ind samt vise en angivet patient i sårjournalen. Linket kan kun anvendes én gang. Det udløber og kan ikke anvendes efter 5 minutter. I kaldet angives et CPR nummer på patienten, der ønskes vist. Desuden angives brugerens arbejdssted via en SOR kode, arbejdsstedet anvendes til at autorisere om den pågældende bruger har ret til at se patienten. Se eksempel på request og response i Bilag C. GetNumberOfUnreadNotes Klientsystemet forespørger om hvor mange ulæste notater, en given bruger har for den aktuelle patient. Hvis der ikke findes en journal for patienten returneres, at denne er ukendt. Det er tanken med dette kald, at det eks. kan anvendes ved mouse over på signon knappen, således brugeren på forhånd dels vil kunne se om der findes en sårjournal og dels om der er ulæste notater på denne. I kaldet angives et CPR nummer på patienten, der ønskes vist. Desuden angives brugerens arbejdssted via en SOR kode, arbejdsstedet anvendes til at autorisere om den pågældende bruger har ret til at se patienten. Se eksempel på request og response i Bilag C. MedCom, Den Gode Sårjournal Service ver. 1.0.0 5
Bilag A: Specificering af DGWS Netværk Den Gode Sårjournal Service tillader følgende netværkstyper. Sundhedsdatanettet (VPN) Andet VPN SSL Ja Nej Nej Id-kortattributter Afsenderen skal identificeres på bruger niveau, hvilket betyder, at id-kortet af typen USER. Id-kortets versionsnummer er 1.0.1 referer til den tilhørende DGWS specifikation. Der skal anvendes brugernavn og password (niveau 2) til autentifikation af brugeren dog tildeles brugernavn og password til systemleverandøren, således alle brugere af et system anvender samme brugernavn og password. Det forventes at ændre autentifikationsniveauet til 4, så snart den tekniske infrastruktur er klar til dette på sygehuse og i kommunerne. Type USER Version 1.0.1 Autentifikationsniveau 2-Brugernavn og Password Kommunikationsmodel Den Gode Webservice definerer to overordnede kommunikationsmodeller: Sign On (SO) og Single Sign On (SSO). I et SO scenarium kommunikerer klient og serviceudbyder alene med hinanden, mens SSO scenariet introducerer en betroet tredjepart. Sign On Single Sign On Ja Nej Kuvertattributter Den Gode Sårjournal Service anvender følgende kuvertattributter. Timeout Sikkerhedsniveau Uafviselig kvittering Prioritet 28800 (8 timer) 1-TOM Nej RUTINE Logning Persondataloven [PERSLOV] og Sundhedsloven [SUNDLOV] udstikker retningslinjer for hvornår det er påkrævet at logge, hvem der har haft adgang til data. Dette fortolkes i bredeste forstand som, at have set eller opdateret personfølsom information om en anden person. Logning udføres af både klient og serviceudbyder. Logning af adgang til personfølsomme data påkrævet? Ja MedCom, Den Gode Sårjournal Service ver. 1.0.0 6
Bilag B: Teknisk dokumentation MedCom s Den Gode webservice er beskrevet hvordan headerens XML kode for forsendelses- og sikkerhedsdata benyttes. Nedenfor er derfor alene beskrevet det maksimale indhold i meddelelsernes body-del. End point til servicen URL følger.. WSDL WSDL en for servicen kan findes her: http://svn.medcom.dk/svn/projects/telesaar/ulcerrecord/wsdl/ulcerrecord_1.0.0.wsdl DataListe XML element Type Beskrivelse urn:oio:medcom:ulcerrecord:1.0.0 GetSignOnLinkRequest GetSignOnLinkRequestType Anmodning om et sign-on link. GetSignOnLinkResponse GetSignOnLinkResponseType Svar med et sign-on link. GetNumberOfUnreadNotesRequest GetNumberOfUnreadNotesRequ esttype Anmodning om antal ulæste notater GetNumberOfUnreadNotesResponse GetNumberOfUnreadNotesRepo nsetype Svar med antal ulæste notater Komplekse typer Type Antal Beskrivelse urn:oio:medcom:ulcerrecord:1.0.0 GetSignOnLinkRequestType Anmodning om et sign-on link. SorIdentifier 1 Brugerens arbejdssted via en SOR kode PersonIdentifier 1 Patientens CPR nummer uden bindestreg GetSignOnLinkResponseType Svar med et sign-on link. SignOnLink 1 Sign-on link GetNumberOfUnreadNotesRequestType Anmodning om antal ulæste notater SorIdentifier 1 Brugerens arbejdssted via en SOR kode PersonIdentifier 1 Patientens CPR nummer uden bindestreg GetNumberOfUnreadNotesReponseType Svar med antal ulæste notater (enten) NumberOfUnreadNotes 1 Antal ulæste notater (eller) PatientUnknownIndicator 1 Angivelse af at patienten er ukendt MedCom, Den Gode Sårjournal Service ver. 1.0.0 7
Bilag C: Eksempler Kun det første eksempel indeholder det komplette request og response. De efterfølgende eksempler undlader DGWS elementerne i headeren. GetSignOnLink SoapAction urn:oio:medcom:ulcerrecord:1.0.0#getsignonlink Request <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:saml="urn:oasis:names:tc:saml:2.0:assertion" xmlns:wsse="http://docs.oasis- open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig" xmlns:medcom="http://www.medcom.dk/dgws/2006/04/dgws- 1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis- open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:id="envelope"> <soap:header> <wsse:security> <wsu:timestamp> <wsu:created>2013-09-20t08:01:00z</wsu:created> </wsu:timestamp> <saml:assertion id="idcard" IssueInstant="2013-09-20T08:00:00Z" Version="2.0"> <saml:issuer>epj Systemet</saml:Issuer> <saml:subject> <saml:nameid Format="medcom:cprnumber">2512484916</saml:NameID> <saml:subjectconfirmation> <saml:confirmationmethod>urn:oasis:names:tc:saml:2.0:cm:holder-of-key</saml:confirmationmethod> <saml:subjectconfirmationdata> <wsse:usernametoken> <wsse:username>username</wsse:username> <wsse:password>password</wsse:password> </wsse:usernametoken> </saml:subjectconfirmationdata> </saml:subjectconfirmation> </saml:subject> <saml:conditions NotBefore="2013-09-20T08:00:00Z" NotOnOrAfter="2013-09-20T16:00:00Z"/> <saml:attributestatement id="idcarddata"> <saml:attribute Name="sosi:IDCardID"> <saml:attributevalue>urn:uuid:444e6ed0-21cd-11e3-8224-0800200c9a66</saml:attributevalue> <saml:attribute Name="sosi:IDCardVersion"> <saml:attributevalue>1.0.1</saml:attributevalue> <saml:attribute Name="sosi:IDCardType"> <saml:attributevalue>user</saml:attributevalue> <saml:attribute Name="sosi:AuthenticationLevel"> <saml:attributevalue>2</saml:attributevalue> </saml:attributestatement> <saml:attributestatement id="userlog"> <saml:attribute Name="medcom:UserCivilRegistrationNumber"> <saml:attributevalue>2512484916</saml:attributevalue> <saml:attribute Name="medcom:UserGivenName"> <saml:attributevalue>nany Ann</saml:AttributeValue> <saml:attribute Name="medcom:UserSurName"> <saml:attributevalue>berggren</saml:attributevalue> <saml:attribute Name="medcom:UserEmailAddress"> <saml:attributevalue>nancy.a.berggren@facebook.com</saml:attributevalue> <saml:attribute Name="medcom:UserRole"> <saml:attributevalue>læge</saml:attributevalue> <saml:attribute Name="medcom:UserOccupation"> <saml:attributevalue>speciallæge</saml:attributevalue> <saml:attribute Name="medcom:UserAuthorizationCode"> <saml:attributevalue>81pms</saml:attributevalue> <saml:attribute Name="medcom:CareProviderID" NameFormat="medcom:skscode"> <saml:attributevalue>1309349</saml:attributevalue> <saml:attribute Name="medcom:CareProviderName"> <saml:attributevalue>bispebjerg Hospital, Dermatovenerologisk Amb. D</saml:AttributeValue> </saml:attributestatement> <saml:attributestatement id="systemlog"> <saml:attribute Name="medcom:ITSystemName"> <saml:attributevalue>epj Systemet</saml:AttributeValue> </saml:attributestatement> </saml:assertion> </wsse:security> <medcom:header> <medcom:securitylevel>2</medcom:securitylevel> <medcom:timeout>28800</medcom:timeout> <medcom:linking> <medcom:flowid>urn:uuid:aeb920e0-21cc-11e3-8224-0800200c9a66</medcom:flowid> <medcom:messageid>urn:uuid:b3d1c140-21cc-11e3-8224-0800200c9a66</medcom:messageid> </medcom:linking> <medcom:priority>rutine</medcom:priority> </medcom:header> </soap:header> <soap:body> <GetSignOnLinkRequest xmlns="urn:oio:medcom:ulcerrecord:1.0.0"> <SorIdentifier>346361000016007</SorIdentifier> <PersonIdentifier>2512484916</PersonIdentifier> </GetSignOnLinkRequest> </soap:body> </soap:envelope> MedCom, Den Gode Sårjournal Service ver. 1.0.0 8
Response <?xml version='1.0' encoding='utf-8'?> <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:medcom="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" id="envelope"> <soapenv:header> <wsse:security> <wsu:timestamp> <wsu:created>2013-09-20t12:15:52z</wsu:created> </wsu:timestamp> </wsse:security> <medcom:header> <medcom:securitylevel>1</medcom:securitylevel> <medcom:linking> <medcom:flowid>urn:uuid:aeb920e0-21cc-11e3-8224-0800200c9a66</medcom:flowid> <medcom:messageid>urn:uuid:364e0400-21d5-11e3-8224-0800200c9a66</medcom:messageid> <medcom:inresponsetomessageid>urn:uuid:b3d1c140-21cc-11e3-8224-0800200c9a66</medcom:inresponsetomessageid> </medcom:linking> <medcom:flowstatus>flow_finalized_succesfully</medcom:flowstatus> </medcom:header> </soapenv:header> <soapenv:body> <GetSignOnLinkResponse xmlns="urn:oio:medcom:ulcerrecord:1.0.0"> <SignOnLink>https://www.pleje.net/LoginRemote.asp?SessionID=13128a1379668663a4ba8208cc943815</SignOnLink> </GetSignOnLinkResponse> </soapenv:body> </soapenv:envelope> GetNumberOfUnreadNotes SoapAction urn:oio:medcom:ulcerrecord:1.0.0#getnumberofunreadnotes Request <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:id="envelope"> <soap:header> <!-- DGWS HEADER --> </soap:header> <soap:body> <GetNumberOfUnreadNotesRequest xmlns="urn:oio:medcom:ulcerrecord:1.0.0"> <SorIdentifier>346361000016007</SorIdentifier> <PersonIdentifier>2512484916</PersonIdentifier> </GetNumberOfUnreadNotesRequest> </soap:body> </soap:envelope> Response <?xml version='1.0' encoding='utf-8'?> <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" id="envelope"> <soapenv:header> <!-- DGWS HEADER --> </soapenv:header> <soapenv:body> <GetNumberOfUnreadNotesResponse xmlns="urn:oio:medcom:ulcerrecord:1.0.0"> <NumberOfUnreadNotes>3</NumberOfUnreadNotes> </GetNumberOfUnreadNotesResponse> </soapenv:body> </soapenv:envelope> MedCom, Den Gode Sårjournal Service ver. 1.0.0 9
Referencer [DGWS] Den Gode Webservice, Version 1.0.1, MedCom 2008, http://sundcom.health-telematics.dk/svn/dgws/den%20gode%20webservice%201.0.1.pdf [DGWS] Den Gode Webservice, Version 1.0, MedCom 2008, http://sundcom.health-telematics.dk/svn/dgws/den%20gode%20webservice_1.0.pdf [DGWS] Den Gode Webservice, Version 1.0 Bilag, MedCom 2008, http://sundcom.health-telematics.dk/svn/dgws/bilag%20-%20den%20gode%20webservice_1.0.pdf [PERSLOV] Persondataloven, Datatilsynet, Lov nr. 429 af 31. maj 2000, http://www.datatilsynet.dk/lovgivning/persondataloven/ [SUNDLOV] Sundhedsloven, Lov nr. 546 af 24. juni 2005, http://www.retsinfo.dk/_link_0/0&accn/a20050054630 MedCom, Den Gode Sårjournal Service ver. 1.0.0 10