Den Gode LÆ Service MedCom, version 1.0 W 1
MedCom, Den Gode LÆ Service ver. 1.0 2
Den Gode LÆ Service MedCom version 1.0 Formål... 5 Serviceudbyders Ansvar... 6 Tilgængelighed... 6 Funktionalitet... 7 GetCaseList... 7 GetCase... 8 GetCaseStatus... 8 UpdateCase... 9 Bilag A: Forudsætninger... 10 Netværk... 10 Id-kort attributter... 10 Kommunikationsmodel... 10 Kuvert attributter... 11 Logning... 12 Server (Udbyder)... 12 Klienten... 12 Bilag B: Teknisk dokumentation... 13 DataListe... 13 Komplekse typer... 14 Operationer... 15 GetCase... 16 GetCaseStatus... 18 GetCaseList... 22 Referencer... 25 Bilag C: Escapet XML... 26 GetCase Response... 26 GetCaseStatus Response... 28 UpdateCase Response... 29 GetCaseList... 30 XML Kvalifikatorliste... 32 MedCom, Den Gode LÆ Service ver. 1.0 3
MedCom, Den Gode LÆ Service ver. 1.0 4
Formål Indenfor mange områder i den kommunale sagsbehandling, bl.a. vedrørende førtidspension og sygedagpenge, foregår der skriftlig kommunikation i form af forskellige blanketter - de såkaldte LÆ-blanketter. Kommunikationen sker primært mellem kommunen og de praktiserende læger, men også mellem kommunen og speciallæger på såvel sygehus som i privatpraksis. De benyttede blanketter er i papirformat i dag, og standardiserede rent indholdsmæssigt. Denne standardisering foregår i blanketudvalget, hvor der er repræsentation fra lægeforeningens attestudvalg samt KL. Elektroniske udgaver af disse blanketter indgår som en naturlig del af lægernes praksissystemer, men forsendelsen er ikke elektronisk i dag. Sagsgangen i forbindelse med LÆ-blanketterne består oftest af tre dele: 1. Anmodning fra kommunen med ønske om udfyldelse af en attest 1 2. Svar til kommunen i form af den udfyldte blanket 3. Afregning 2 Det er hensigten, at denne sagsgang gøres elektronisk og i denne forbindelse anvendes to standarder: Den Gode WebService (DGWS) til forsendelsen og MedCom s Den Dynamiske Blanket (DDB) til indholdet. Nærværende dokument beskriver hvordan forsendelsesstandarden Den Gode LÆ Service (DGLÆ) konkret anvendes i forbindelse med LÆ-blanketter. På MedComs hjemmeside forefindes endvidere de enkelte indholdsmæssige standarder som hedder DDB:LÆxxx og hvor xxx angiver nummeret for blanketten eksempelvis DDB:LÆ125. Der er altså fire typer dokumentation der er nødvendig for elektronisk kommunikation af LÆ-blanketter: 1. Den generelle DGWS dokumentation 2. Den generelle DDB dokumentation 3. Den specifikke DGLÆ beskrivelse (nærværende dokument) 4. De specifikke DDB:LÆxxx beskrivelser LÆ-blanketbeskrivelserne indeholder hver 2 blanketter. En anmodningsblanket, som afsendes fra kommunen til lægen, med anmodning om at lægen udfylder en specifik attest, som medsendes. Et sådant sæt med anmodning og tilhørende attest udgør en sag. Nærværende dokument beskriver de kald der er relevante i forhold til lægesystemerne i forbindelse med kommunikation af LÆ-blanketter. Dokumentation er udført af MedCom, (Rikke Viggers og Jacob Glasdam) og er baseret på implementation lavet af Kommuneinformation A/S til brug i Medcom s LÆ-projekt. 1 LÆ165 (Forslag om Socialmedicinsk Sagsbehandling) sendes dog på lægens initiativ til kommunen i forbindelse med eksempelvis behov for hjælpemidler eller terminal pleje, og er således ikke forudgået af en anmodning fra kommunen. 2 Indgår ikke i nærværende WS forløb udover at anmodningsblanketterne per 1. juni 2006 indeholder oplysninger om elektronisk betaling (dvs. EAN nr. mv.) og disse oplysninger vil også blive inddraget i den elektroniske overførsel af anmodningsblanketten. MedCom, Den Gode LÆ Service ver. 1.0 5
Serviceudbyders Ansvar Webservicen skal have en fornuftig oppe tid, her menes at den så vidt mulig skal være tilgængelig inden for alm. arbejdstid, dvs. mandag til fredag fra kl. 8 til kl. 16. Nedbrud er tilladt, men den skal være kørende igen efter en hverdag. Udbyderen skal sørge for at logge information omkring hvem der henter data, og lægger data op. Den loggede information er: - Tidspunkt for handling - Handlingstypen - Sags id - Idkort brugt - IP adresse Tilgængelighed Til test udstilles en webservice der er tilgængelig via Internettet. Produktionswebservicen skal udstilles via sundhedsdatanet og/eller via internet med SSL. For at få adgang til disse services skal brugernavn/password erhverves hos den enkelte serviceudbyder. MedCom, Den Gode LÆ Service ver. 1.0 6
Funktionalitet Der udbydes 4 kald. Hent liste over sager. Hent sag. Hent status på en sag. Opdatere sag. Blanketudbyder skal kunne modtage og svare på alle kald enkeltvis Et typisk forløb vil være at klienten, lægesystemet, først henter liste over sager, efter fulgt af hent en sag, som så opdateres med lægens udfyldning. Funktionaliteten for hvert af disse kald er beskrevet herunder. GetCaseList Klientsystemet kan hente en liste over sager ud. Request data Se Bilag B. Response data Liste over sager til pågældende ydernummer. MedCom, Den Gode LÆ Service ver. 1.0 7
Fejlmelding Ved syntaksfejl returneres en soap fault. GetCase Klientsystemet kan hente en sag ud, ved angivelse af sags id. Request data Id på sag der skal hentes ud. Response data Den pågældende sag, med anmodningsblanket og/eller svarblanket (såfremt disse eksisterer). Fejlmelding Hvis det angivne sags id ikke kan findes, returneres en fejl, som beskrevet i bilag C. GetCaseStatus Klientsystemet anmoder om status på en bestemt sag. Request data Id på sag som der ønskes status på. Response data Status på sag. Fejlmelding Hvis det angivne sags id ikke kan findes, returneres en fejl, som beskrevet i bilag C. MedCom, Den Gode LÆ Service ver. 1.0 8
UpdateCase Bruges til at lægge lægens udfyldning tilbage til serviceudbyderen, og ved sager der initieres af lægen. Request data Id på sag, anmod og/eller svarblanket, samt ønsket ny status på sag, hvis det er en sag som er initieret af lægen, sættes sags ID til 0. Response data Id på sag. Fejlmelding Hvis der er fejl i request, returneres en fejl som beskrevet i bilag C. MedCom, Den Gode LÆ Service ver. 1.0 9
Bilag A: Forudsætninger Netværk Den Gode Webservice kræver et krypteret transportlag og aftaler mellem de udvekslende parter for at sikre konfidentialitet af data. Den Gode NPN Service tillader følgende netværkstyper: Netværk Tilladt Sundhedsdatanettet (VPN) Andet VPN SSL Ja Nej Ja Id-kort attributter Oplysninger om afsenderens identitet lagres i id-kortet. Hvis afsenderen skal identificeres på bruger niveau, er id-kortet af typen USER. Hvis afsenderen skal identificeres på system niveau, er id-kortet af typen SYSTEM. Id-kortets versionsnummer referer til den tilhørende DGWS specifikation og autentifikationsniveauet angiver hvilke typer af akkreditiver der er medsendt. På det laveste niveau, 1 medsendes ingen akkreditiver, mens niveau 2 tillader brugernavn og password. På niveau 3 medsendes en digital signatur foretaget med et OCES virksomhedscertifikat (VOCES) og niveau 4 tillader alene medarbejder OCES signaturer (MOCES). Id-kort attribut Værdi Type SYSTEM Version 1.0 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. Id-kort attribut Tilladt Sign On Single Sign On Ja Nej MedCom, Den Gode LÆ Service ver. 1.0 10
Kuvert attributter I DGWS SOAP kuverters headere findes en række meta-oplysninger om de enkelte servicekald, hvoraf nogle udtrykker forventninger til serviceudbyderen. Selvom forventningerne i princippet kan variere fra operation til operation, idet der kan være forskel på hvor sensitive data der udveksles, ensretter denne specifikation attributterne på tværs af operationer aht. simpliciteten. En serviceudbyder skal således tage stilling til hvor lang tid der maksimalt må være gået siden brugeren blev autentificeret til et servicekald udføres. Dette Timeout implementeres af serviceudbyderen og kan medsendes i DGWS kuverter som et hint om hvad klienten forventer. DGWS definerer muligheden for at signere hele kuverten som sikkerhedsniveau 5. Klienter kan hvis serviceudbyderen understøtter det bede om at få en digital signatur på svaret i f.eks. indberetningssituationer. Endelig kan en klient angive sit ønske til behandlingsprioritet og serviceudbyderen kan, hvis det er muligt, derpå vælge at opprioritere behandlingen af kaldet. Kuvert attribut Tilladt Timeout - Sikkerhedsniveau 1-TOM Uafviselig kvittering Nej Prioritet RUTINE MedCom, Den Gode LÆ Service ver. 1.0 11
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. Kontrol Påkrævet Logning af adgang til personfølsomme data påkrævet? Ja Server (Udbyder) Udbyderen af servicen kan ikke logge hvem slutbrugeren er, men logger følgende informationer: IP-adresse på klienten Request og response. Klienten Skal logge hvem slutbrugeren måtte være og sikre sig at denne er korrekt autentificeret. MedCom, Den Gode LÆ Service ver. 1.0 12
Bilag B: Teknisk dokumentation De fulde XML Lister viser det maksimale dataindhold i webservicens request- som response-meddelelser. 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. Datatype, anvendelse og beskrivelse af de enkelte XML elementer fremgår af DataListen. I 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. Datatype, anvendelse og beskrivelse af de enkelte XML elementer fremgår af DataListen. DataListe XML element Type Beskrivelse http://www.kommuneinformation.dk GetCaseIn GetCaseInType Request til GetCase intcaseid Int Id på sag. GetCaseOut GetCaseOutType Response på GetCase GetCase_Response String Escapet xml GetCaseStatusIn GetCaseStatusIn Request til GetCaseStatus GetCaseStatusOut GetCaseStatusOut Response til GetCaseStatus GetCaseStatus_Response String Escapet xml UpdateCaseIn UpdateCaseInType Request til UpdateCase intcasestatusid Int Status på sag. strrecieveruserid String Lokalt id på bruger hos modtager. strrecieveruserid String Lokalt id på afdeling hos modtager. strdynamicformrequestxml String CDATA med DDB 1.0 som indhold, anmodningsblanket. strdynamicformresponsexml String CDATA med DDB 1.0 som indhold, svar blanket. UpdateCaseOut UpdateCaseOutType Response til UpdateCase. UpdateCase_Response String Escapet XML. GetCaseListIn GetCaseListInType Request til GetCaseList. GetCaseListOut GetCaseListOutType Response til GetCaseList. intcasetypeid Int Sagstype, altid 0. intshowallcases Int Altid 1. GetCaseList_Response String Escapet XML. MedCom, Den Gode LÆ Service ver. 1.0 13
Komplekse typer Type Antal Beskrivelse http://www.kommuneinformation.dk GetCaseInType intcaseid 1 Id på sag der hentes. GetCaseOutType GetCase_Response 0..1 Escapet XML. GetCaseStatusInType intcaseid 1 Id på sag. GetCaseStatusOutType GetCaseStatus_Response 0..1 Escapet XML. UpdateCaseInType intcaseid 1 Id på sag, ved sager som ikke er oprettet af udbyder, sættes det til 0. intcasestatusid 1 Status på sag strrecieveruserid 0..1 strrecieverdepartmentid 0..1 strdynamicformrequestxml 0..1 CDATA XML, anmodningsblanket. strdynamicformresponsexml 0..1 CDATA XML, svarblanket. UpdateCaseOutType UpdateCase_Response 0..1 Escapet XML. GetCaseListInType intcasetypeid 1 Typen af sager, altid 0. intshowallcases 1 Angiver om alle sager skal vises, altid 1. GetCaseListOutType GetCaseList_Response 0..1 Escapet XML. MedCom, Den Gode LÆ Service ver. 1.0 14
Operationer XML-Listen viser et eksempel på dataindhold i webservicens request- og responsemeddelelser for hver operation. Af hensyn til overskuelighed er header-informationer vedr. DGWS kun taget med på GetCaseStatus. Da denne service er speciel med indholdet af escapet xml i nogle af svarene, er dette XML beskrevet i bilag C. MedCom, Den Gode LÆ Service ver. 1.0 15
GetCase SoapAction: http://www.kommuneinformation.dk/getcase Henter en sag ned, angivet med sagsid. Request <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <soap:header> <!-- DGWS IDKORT --> </soap:header> <soap:body> <GetCaseIn xmlns="http://www.kommuneinformation.dk/"> <intcaseid>387</intcaseid> </GetCaseIn> </soap:body> </soap:envelope> Response: <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <soap:header> <!-- DGWS IDKORT --> </soap:header> <soap:body> <GetCaseOut xmlns="http://www.kommuneinformation.dk/"> <GetCase_Response><MedCom_GetCaseResponse><RequestInformation><MedCom_Request _SentDate>10-08-2010 10:14</MedCom_Request_SentDate><MedCom_Request_Identifier>0</MedCom_Request_Iden tifier><medcom_sender_locationid>5795555555556</medcom_sender_locationid><medco m_sender_localuserid></medcom_sender_localuserid><medcom_sender_localdepartmentid ></MedCom_Sender_LocalDepartmentId><MedCom_Request_OrganisationName></MedCo m_request_organisationname><medcom_request_departmentname></medcom_request_dep artmentname></requestinformation><result><case><medcom_caseid>387</med Com_CaseId><MedCom_CaseType_Id>2</MedCom_CaseType_Id><MedCom_CaseType_N ame>sociallægeligt samarbejde</medcom_casetype_name><medcom_case_statusid>11</medcom_case_statu sid><medcom_case_createdate>02-02-2008 00:00</MedCom_Case_CreateDate><MedCom_Case_LastModifiedDate>10-08-2010 09:46</MedCom_Case_LastModifiedDate><MedCom_Patient_CivilRegistrationNumber></MedC om_patient_civilregistrationnumber><medcom_patient_persongivenname>hans</medcom_pat ient_persongivenname><medcom_patient_personsurnamename>egestrup</medcom_patient_ PersonSurnameName><MedCom_Receiver_LocationId>5795555555556</MedCom_Receiver_Loc ationid><medcom_receiver_localuserid>albuerum</medcom_receiver_localuserid><med Com_Receiver_LocalDepartmentId>Bjarne</MedCom_Receiver_LocalDepartmentId><MedCom_S ender_locationid>5795555555555</medcom_sender_locationid><medcom_sender_localuseri d>albuerum</medcom_sender_localuserid><medcom_sender_localdepartmentid>bjarne< /MedCom_Sender_LocalDepartmentId><MedCom_DynamicFormPackage_Id>3</MedCom_Dynam icformpackage_id><medcom_dynamicformpackage_name>statusattest (LÆ121- LÆ125)</MedCom_DynamicFormPackage_Name><MedCom_DynamicFormPackage_SolicitedForm >1</MedCom_DynamicFormPackage_SolicitedForm><MedCom_DynamicFormPackageVersion_N umber>3</medcom_dynamicformpackageversion_number><medcom_dynamicform_requestx ml> MedCom, Den Gode LÆ Service ver. 1.0 16
<! DDB 1.0 i CDATA ---> </MedCom_DynamicForm_RequestXml><MedCom_DynamicForm_ResponseXml> <! DDB 1.0 i CDATA ---> </MedCom_DynamicForm_ResponseXml></Case></Result></MedCom_GetCaseResponse ></GetCase_Response> </GetCaseOut> </soap:body> </soap:envelope> MedCom, Den Gode LÆ Service ver. 1.0 17
GetCaseStatus SoapAction: http://www.kommuneinformation.dk/getcasestatus Viser status på en sag. Request: <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <soap:header> <wsa:action>http://www.kommuneinformation.dk/getdynamicformpackage</wsa:action> <wsa:messageid>urn:uuid:c426dade-c3f0-4119-be04-dc1a406866eb</wsa:messageid> <wsa:replyto> <wsa:address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:address> </wsa:replyto> <wsa:to>http://qawssundhed.kommuneinformation.dk/wsdatabroker.asmx</wsa:to> <Security xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <Timestamp xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility- 1.0.xsd"> <Created>2010-08-10T08:00:09.127616Z</Created> </Timestamp> <Assertion id="idcard" IssueInstant="2010-08-10T08:00:09" Version="2.0" xmlns="urn:oasis:names:tc:saml:2.0:assertion"> <Issuer>HealthClient</Issuer> <Subject> <NameID Format="medcom:cprnumber">2606444917</NameID> <SubjectConfirmation> <ConfirmationMethod>urn:oasis:names:tc:SAML:2.0:cm:holder-of-key</ConfirmationMethod> <SubjectConfirmationData> <UsernameToken xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecuritysecext-1.0.xsd"> <Username>medcom</Username> <Password>***</Password> </UsernameToken> </SubjectConfirmationData> </SubjectConfirmation> </Subject> <Conditions NotBefore="2010-08-10T08:00:09" NotOnOrAfter="2010-08-11T08:00:09"/> <AttributeStatement id="idcarddata"> <Attribute Name="sosi:IDCardID"> <AttributeValue>AAATX</AttributeValue> </Attribute> <Attribute Name="sosi:IDCardVersion"> <AttributeValue>user</AttributeValue> </Attribute> <Attribute Name="sosi:IDCardType"> <AttributeValue>1.0</AttributeValue> </Attribute> <Attribute Name="sosi:AuthenticationLevel"> <AttributeValue>2</AttributeValue> </Attribute> </AttributeStatement> <AttributeStatement id="userlog"> <Attribute Name="medcom:UserCivilRegistrationNumber"> <AttributeValue>1234567890</AttributeValue> </Attribute> MedCom, Den Gode LÆ Service ver. 1.0 18
<Attribute Name="medcom:UserGivenName"> <AttributeValue>Hans2</AttributeValue> </Attribute> <Attribute Name="medcom:UserSurName"> <AttributeValue>Hansen</AttributeValue> </Attribute> <Attribute Name="medcom:UserEmailAddress"> <AttributeValue>hansen@klinikken.dk</AttributeValue> </Attribute> <Attribute Name="medcom:UserRole"> <AttributeValue>læge</AttributeValue> </Attribute> <Attribute Name="medcom:UserOccupation"> <AttributeValue>doctor</AttributeValue> </Attribute> <Attribute Name="medcom:UserAuthorizationCode"> <AttributeValue>123</AttributeValue> </Attribute> </AttributeStatement> <AttributeStatement id="systemlog"> <Attribute Name="medcom:ITSystemName"> <AttributeValue>HealthClient 2.0</AttributeValue> </Attribute> <Attribute Name="medcom:CareProviderID"> <AttributeValue>5795555555556</AttributeValue> </Attribute> <Attribute Name="medcom:CareProviderName"> <AttributeValue>Lægehuset</AttributeValue> </Attribute> </AttributeStatement> </Assertion> </Security> <Header xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd"> <SecurityLevel>2</SecurityLevel> <TimeOut>1440</TimeOut> <Linking> <FlowID>AMRRMD1558407240</FlowID> <MessageID>AGQ5ZW1948839150</MessageID> </Linking> <FlowStatus>flow_running</FlowStatus> <Priority>RUTINE</Priority> <RequireNonRepudiationReceipt>no</RequireNonRepudiationReceipt> </Header> </soap:header> <soap:body> <GetCaseStatusIn xmlns="http://www.kommuneinformation.dk/"> <intcaseid>387</intcaseid> </GetCaseStatusIn> </soap:body> </soap:envelope> Response: <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <soap:header> <wsa:action>http://www.kommuneinformation.dk/getdynamicformpackageresponse</wsa:action> MedCom, Den Gode LÆ Service ver. 1.0 19
<wsa:messageid>urn:uuid:adb0c5f5-74ea-4914-b304-97712f2b9377</wsa:messageid> <wsa:relatesto>urn:uuid:c426dade-c3f0-4119-be04-dc1a406866eb</wsa:relatesto> <wsa:to>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:to> <Security xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <Timestamp xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility- 1.0.xsd"> <Created>2010-08-10T10:31:45</Created> </Timestamp> </Security> <Header xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd"> <SecurityLevel>2</SecurityLevel> <TimeOut>1440</TimeOut> <Linking> <FlowID>AMRRMD1558407240</FlowID> <MessageID>AGQ5ZW1948839150</MessageID> </Linking> <FlowStatus>flow_running</FlowStatus> <Priority>RUTINE</Priority> <RequireNonRepudiationReceipt>no</RequireNonRepudiationReceipt> </Header> </soap:header> <soap:body> <GetCaseStatusOut xmlns="http://www.kommuneinformation.dk/"> <GetCaseStatus_Response><MedCom_GetCaseStatusResponse><RequestInformation><MedC om_request_sentdate>10-08-2010 10:31</MedCom_Request_SentDate><MedCom_Request_Identifier>0</MedCom_Request_Iden tifier><medcom_sender_locationid>5795555555556</medcom_sender_locationid><medco m_sender_localuserid></medcom_sender_localuserid><medcom_sender_localdepartmentid ></MedCom_Sender_LocalDepartmentId><MedCom_Request_OrganisationName></MedCo m_request_organisationname><medcom_request_departmentname></medcom_request_dep artmentname></requestinformation><result><case><medcom_caseid>387</med Com_CaseId><MedCom_Status>11</MedCom_Status></Case></Result></MedCom _GetCaseStatusResponse></GetCaseStatus_Response> </GetCaseStatusOut> </soap:body> </soap:envelope> MedCom, Den Gode LÆ Service ver. 1.0 20
UpdateCase SoapAction: http://www.kommuneinformation.dk/updatecase Opdatere en sag, ved at lægge blanketterne op på serveren igen. Ved sager der initieres af lægen, sattes sags ID til 0, og lægens udfyldning indsættes i anmodningsdelen. Request: <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:header> <!-- DGWS IDKORT --> </soap:header> <soap:body> <UpdateCaseIn xmlns="http://www.kommuneinformation.dk/"> <intcaseid>387</intcaseid> <intcasestatusid>20</intcasestatusid> <strrecieveruserid>5795555555555</strrecieveruserid> <strrecieverdepartmentid>bjarne</strrecieverdepartmentid> <strdynamicformrequestxml> <!-- CDATA DDB --> </strdynamicformrequestxml> <strdynamicformresponsexml> <!-- CDATA DDB --> </strdynamicformresponsexml> </UpdateCaseIn> </soap:body> </soap:envelope> Response: <soap:envelope xmlns:soap="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:linking="urn:oio:medcom:laboratory:linking:1.0.0" xmlns:labid="urn:oio:medcom:laboratory:idservice:1.0.0" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <soap:header> <!-- DGWS IDKORT --> </soap:header> <soap:body> <UpdateCaseOut xmlns="http://www.kommuneinformation.dk/"> <UpdateCase_Response><MedCom_UpdateCase><RequestInformation><MedCom_Request_S entdate>10-08-2010 10:55</MedCom_Request_SentDate><MedCom_Request_Identifier>0</MedCom_Request_Iden tifier><medcom_sender_locationid>5795555555556</medcom_sender_locationid><medco m_sender_localuserid></medcom_sender_localuserid><medcom_sender_localdepartmentid ></MedCom_Sender_LocalDepartmentId><MedCom_Request_OrganisationName></MedCo m_request_organisationname><medcom_request_departmentname></medcom_request_dep artmentname></requestinformation><result><case><medcom_caseid>387</med Com_CaseId></Case></Result></MedCom_UpdateCase></UpdateCase_Response> </UpdateCaseOut> </soap:body> </soap:envelope> MedCom, Den Gode LÆ Service ver. 1.0 21
GetCaseList SoapAction: http://www.kommuneinformation.dk/getcaselist Hent en liste over sager til det i idkortet angivet ydernummer. Request: <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:header> <!-- DGWS IDKORT --> </soap:header> <soap:body> <GetCaseListIn xmlns="http://www.kommuneinformation.dk/"> <intcasetypeid>0</intcasetypeid> <intshowallcases>1</intshowallcases> </GetCaseListIn> </soap:body> </soap:envelope> Response: <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:soap="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:linking="urn:oio:medcom:laboratory:linking:1.0.0" xmlns:labid="urn:oio:medcom:laboratory:idservice:1.0.0" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <soap:header> <!-- DGWS IDKORT --> </soap:header> <soap:body> <GetCaseListOut xmlns="http://www.kommuneinformation.dk/"> <GetCaseList_Response><MedCom_GetCaseList><RequestInformation><MedCom_Request_S entdate>10-08-2010 09:52</MedCom_Request_SentDate><MedCom_Request_Identifier>0</MedCom_Request_Iden tifier><medcom_sender_locationid>5795555555556</medcom_sender_locationid><medco m_sender_localuserid></medcom_sender_localuserid><medcom_sender_localdepartmentid ></MedCom_Sender_LocalDepartmentId><MedCom_Request_OrganisationName></MedCo m_request_organisationname><medcom_request_departmentname></medcom_request_dep artmentname></requestinformation><result><case><medcom_caseid>387</med Com_CaseId><MedCom_CaseType_Id>2</MedCom_CaseType_Id><MedCom_CaseType_N ame>sociallægeligt samarbejde</medcom_casetype_name><medcom_case_statusid>10</medcom_case_statu sid><medcom_case_createdate>02-02-2008 00:00</MedCom_Case_CreateDate><MedCom_Case_LastModifiedDate>10-08-2010 09:46</MedCom_Case_LastModifiedDate><MedCom_Patient_CivilRegistrationNumber></MedC om_patient_civilregistrationnumber><medcom_patient_persongivenname>hans</medcom_pat ient_persongivenname><medcom_patient_personsurnamename>egestrup</medcom_patient_ PersonSurnameName><MedCom_Receiver_LocationId>5795555555556</MedCom_Receiver_Loc ationid><medcom_receiver_localuserid>albuerum</medcom_receiver_localuserid><med Com_Receiver_LocalDepartmentId>Bjarne</MedCom_Receiver_LocalDepartmentId><MedCom_S ender_locationid>5795555555555</medcom_sender_locationid><medcom_sender_localuseri d>albuerum</medcom_sender_localuserid><medcom_sender_localdepartmentid>bjarne< /MedCom_Sender_LocalDepartmentId><MedCom_DynamicFormPackage_Id>3</MedCom_Dynam icformpackage_id><medcom_dynamicformpackage_name>statusattest (LÆ121- LÆ125)</MedCom_DynamicFormPackage_Name><MedCom_DynamicFormPackage_SolicitedForm >1</MedCom_DynamicFormPackage_SolicitedForm></Case></Result></MedCom_GetC aselist></getcaselist_response> MedCom, Den Gode LÆ Service ver. 1.0 22
</GetCaseListOut> </soap:body> </soap:envelope> MedCom, Den Gode LÆ Service ver. 1.0 23
I DataListen er angivet alle værdibærende elementer i Den Gode Læ Service, i den rækkefølge variablene forekommer i XML Listen. XML-elementer der er medtaget i XMLListen af hensyn til dennes syntaks, er ikke medtaget i Datalisten. Skemaets type felt angiver en XML Schema type eller en enumeration. Følgende typer anvendes: 1. string angiver at dataindholdet skal være en streng. Reserverede xml styrekarakterer må ikke forekomme. Se http://www.w3.org/tr/xmlschema11-2/#string 2. integer angiver at dataindholdet er et positivt hel-tal. Se http://www.w3.org/tr/xmlschema11-2/#integer 3. datetime angiver at data er en dato og et klokkeslæt på UTC formen (Universal Time, Coordinated) YYYY-MM-DDTHH:MM:SSZ, f.eks. 2006-05-28T23:59:00Z for 28 maj 2006 kl. 23:59:00. UTC bruger ikke sommer- og vintertid, så for at omregne fra dansk tid til UTC trækkes i vinterhalvåret 1 time fra (dansk tid = UTC + 1) og i sommerhalvåret trækkes 2 timer fra (dansk tid = UTC + 2). DGWS kræver at webservice klienter og webservice udbydere synkroniserer urene efter en global anerkendt tidsserver og benytter UTC som tidsangivelse. Se http://www.w3.org/tr/xmlschema11-2/#datetime 4. anytype angiver at elementet kan indeholde et vilkårligt indlejret xml-dokument. 5. ENUM angiver at der skal benyttes én af de valgmuligheder der fremgår af Enumerationslisten. Nogle elementer kan forekomme flere gange, nogle er optionelle og nogle skal altid medtages. Dette angives med kolonnen Antal, hvor følgende gælder: 1. 1 betyder at elementet altid skal forekomme hvis betingelsen er opfyldt. 2. 0..1 betyder at elementet kan forekomme 0 eller 1 gang hvis betingelsen er opfyldt 3. 0..n betyder at elementet kan forekomme 0 eller vilkårligt mange gange hvis betingelserne opfyldt Endelig angives en beskrivelse af elementet i den sidste kolonne. MedCom, Den Gode LÆ Service ver. 1.0 24
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/ MedCom, Den Gode LÆ Service ver. 1.0 25
Bilag C: Escapet XML Her beskrives indholdet i hver af de escapet retur værdier. Ved fejl, udover dem der kan optræde i forbindelse med dgws idkort, indsættes følgende lige efter elementet RequestInformation. Element navn Type Beskrivelse MedCom_Errors @COUNT Int Antal af fejl meddelelser ErrorItem String Fejl besked @Code KVA Kode på fejl. Indholdstypen, DatoTid, afviger fra den gense, og er på formen DD-MM-YYYY HH:MM GetCase Response Element navn Type Beskrivelse MedCom_GetCaseResponse RequestInformation Data vedr. Request MedCom_Request_SentDate DatoTid Tidspunkt for request MedCom_Request_Identifier Int ID på request MedCom_Sender_LocationId Int Typisk ydernummeret MedCom_Sender_LocalUserId? ID på bruger MedCom_Sender_LocalDepartmentId? ID på afdeling MedCom_Request_OrganisationName String Navn på organisation MedCom_Request_DepartmentName String Navn på afdeling Result Selve resultatet af request Case Sagen MedCom_CaseId Int Sagens id MedCom_CaseType_Id Int Sagstype MedCom_CaseType_Name String Navn på sagstype MedCom_Case_StatusId KVA Status på sagen MedCom_Case_CreateDate DatoTid Oprettelsestidspunkt for sagen MedCom_Case_LastModifiedDate DatoTid Tidspunkt for sidste ændring MedCom_Patient_CivilRegistrationNumber Int Patientens cprnummer MedCom_Patient_PersonGivenName String Patientens fornavn MedCom_Patient_PersonSurnameName String Patientens efternavn MedCom_Receiver_LocationId Int Modtagers lokationsnummer MedCom_Receiver_LocalUserId? Modtagers bruger id. MedCom_Receiver_LocalDepartmentId? Modtagers afdelings id. MedCom_Sender_LocationId Int Modtagers lokationsnummer MedCom_Sender_LocalUserId? Modtagers bruger id. MedCom_Sender_LocalDepartmentId? Modtagers afdelings id. MedCom_DynamicFormPackage_Id Int Id på blanketpakke. MedCom, Den Gode LÆ Service ver. 1.0 26
Eksempel MedCom_DynamicFormPackage_Name String Navn på blanketpakke. MedCom_DynamicFormPackage_SolicitedForm KVA MedCom_DynamicFormPackageVersion_Number Int MedCom_DynamicForm_RequestXml MedCom_DynamicForm_ResponseXml Version på blanketpakke. CDATA Anmodnings blanket xml CDATA Svar blanket xml <MedCom_GetCaseResponse> <RequestInformation> <MedCom_Request_SentDate>10-08-2010 10:14</MedCom_Request_SentDate> <MedCom_Request_Identifier>0</MedCom_Request_Identifier> <MedCom_Sender_LocationId>5795555555556</MedCom_Sender_LocationId> <MedCom_Sender_LocalUserId/> <MedCom_Sender_LocalDepartmentId/> <MedCom_Request_OrganisationName/> <MedCom_Request_DepartmentName/> </RequestInformation> <Result> <Case> <MedCom_CaseId>387</MedCom_CaseId> <MedCom_CaseType_Id>2</MedCom_CaseType_Id> <MedCom_CaseType_Name>Sociallægeligt samarbejde</medcom_casetype_name> <MedCom_Case_StatusId>11</MedCom_Case_StatusId> <MedCom_Case_CreateDate>02-02-2008 00:00</MedCom_Case_CreateDate> <MedCom_Case_LastModifiedDate>10-08-2010 09:46</MedCom_Case_LastModifiedDate> <MedCom_Patient_CivilRegistrationNumber/> <MedCom_Patient_PersonGivenName>Hans</MedCom_Patient_PersonGivenName> <MedCom_Patient_PersonSurnameName>Egestrup</MedCom_Patient_PersonSurnameName> <MedCom_Receiver_LocationId>5795555555556</MedCom_Receiver_LocationId> <MedCom_Receiver_LocalUserId>Albuerum</MedCom_Receiver_LocalUserId> <MedCom_Receiver_LocalDepartmentId>Bjarne</MedCom_Receiver_LocalDepartmentId> <MedCom_Sender_LocationId>5795555555555</MedCom_Sender_LocationId> <MedCom_Sender_LocalUserId>Albuerum</MedCom_Sender_LocalUserId> <MedCom_Sender_LocalDepartmentId>Bjarne</MedCom_Sender_LocalDepartmentId> <MedCom_DynamicFormPackage_Id>3</MedCom_DynamicFormPackage_Id> <MedCom_DynamicFormPackage_Name>Statusattest (LÆ121- LÆ125)</MedCom_DynamicFormPackage_Name> <MedCom_DynamicFormPackage_SolicitedForm>1</MedCom_DynamicFormPackage_SolicitedForm> <MedCom_DynamicFormPackageVersion_Number>3</MedCom_DynamicFormPackageVersion_Number> <MedCom_DynamicForm_RequestXml> <!-- CDATA DDB --> </MedCom_DynamicForm_RequestXml> <MedCom_DynamicForm_ResponseXml> <!-- CDATA DDB --> </MedCom_DynamicForm_ResponseXml> </Case> </Result> </MedCom_GetCaseResponse> MedCom, Den Gode LÆ Service ver. 1.0 27
GetCaseStatus Response Eksempel Element navn Type Beskrivelse MedCom_GetCaseStatusResponse RequestInformation MedCom_Request_SentDate Data vedr. Request DatoTid Tidspunkt for request MedCom_Request_Identifier Int ID på request MedCom_Sender_LocationId Int Typisk ydernummeret MedCom_Sender_LocalUserId? ID på bruger MedCom_Sender_LocalDepartmentId? MedCom_Request_OrganisationName String MedCom_Request_DepartmentName String Result Case ID på afdeling Navn på organisation Navn på afdeling MedCom_CaseId Int Id på sagen MedCom_Status KVA Status på sagen <MedCom_GetCaseStatusResponse> <RequestInformation> <MedCom_Request_SentDate>10-08-2010 10:31</MedCom_Request_SentDate> <MedCom_Request_Identifier>0</MedCom_Request_Identifier> <MedCom_Sender_LocationId>5795555555556</MedCom_Sender_LocationId> <MedCom_Sender_LocalUserId/> <MedCom_Sender_LocalDepartmentId/> <MedCom_Request_OrganisationName/> <MedCom_Request_DepartmentName/> </RequestInformation> <Result> <Case> <MedCom_CaseId>387</MedCom_CaseId> <MedCom_Status>11</MedCom_Status> </Case> </Result> </MedCom_GetCaseStatusResponse> MedCom, Den Gode LÆ Service ver. 1.0 28
UpdateCase Response Eksempel Element navn Type Beskrivelse MedCom_UpdateCase RequestInformation MedCom_Request_SentDate Data vedr. Request DatoTid Tidspunkt for request MedCom_Request_Identifier Int ID på request MedCom_Sender_LocationId Int Typisk ydernummeret MedCom_Sender_LocalUserId? ID på bruger MedCom_Sender_LocalDepartmentId? MedCom_Request_OrganisationName String MedCom_Request_DepartmentName String Result Case ID på afdeling Navn på organisation Navn på afdeling MedCom_CaseId Int Id på sagen <MedCom_UpdateCase> <RequestInformation> <MedCom_Request_SentDate>10-08-2010 10:55</MedCom_Request_SentDate> <MedCom_Request_Identifier>0</MedCom_Request_Identifier> <MedCom_Sender_LocationId>5795555555556</MedCom_Sender_LocationId> <MedCom_Sender_LocalUserId/> <MedCom_Sender_LocalDepartmentId/> <MedCom_Request_OrganisationName/> <MedCom_Request_DepartmentName/> </RequestInformation> <Result> <Case> <MedCom_CaseId>387</MedCom_CaseId> </Case> </Result> </MedCom_UpdateCase> MedCom, Den Gode LÆ Service ver. 1.0 29
GetCaseList Element navn Type Beskrivelse MedCom_GetCaseList RequestInformation MedCom_Request_SentDate Data vedr. Request DatoTid Tidspunkt for request MedCom_Request_Identifier Int ID på request MedCom_Sender_LocationId Int Typisk ydernummeret MedCom_Sender_LocalUserId? ID på bruger MedCom_Sender_LocalDepartmentId? ID på afdeling MedCom_Request_OrganisationName String Navn på organisation MedCom_Request_DepartmentName String Navn på afdeling Result Case Eksempel MedCom_CaseId Int Sagens id MedCom_CaseType_Id Int Sagstype Selve resultatet af request MedCom_CaseType_Name String Navn på sagstype MedCom_Case_StatusId KVA Status på sagen MedCom_Case_CreateDate MedCom_Case_LastModifiedDate En Sag, gentages for hver sag der ligger i servicen. DatoTid Oprettelsestidspunkt for sagen DatoTid Tidspunkt for sidste ændring MedCom_Patient_CivilRegistrationNumber Int Patientens cprnummer MedCom_Patient_PersonGivenName String Patientens fornavn MedCom_Patient_PersonSurnameName String Patientens efternavn MedCom_Receiver_LocationId Int Modtagers lokationsnummer MedCom_Receiver_LocalUserId? Modtagers bruger id. MedCom_Receiver_LocalDepartmentId? Modtagers afdelings id. MedCom_Sender_LocationId Int Modtagers lokationsnummer MedCom_Sender_LocalUserId? Modtagers bruger id. MedCom_Sender_LocalDepartmentId? Modtagers afdelings id. MedCom_DynamicFormPackage_Id Int Id på blanketpakke. MedCom_DynamicFormPackage_Name String Navn på blanketpakke. MedCom_DynamicFormPackage_SolicitedForm KVA <MedCom_GetCaseList> <RequestInformation> <MedCom_Request_SentDate>10-08-2010 09:52</MedCom_Request_SentDate> <MedCom_Request_Identifier>0</MedCom_Request_Identifier> <MedCom_Sender_LocationId>5795555555556</MedCom_Sender_LocationId> <MedCom_Sender_LocalUserId/> <MedCom_Sender_LocalDepartmentId/> <MedCom_Request_OrganisationName/> <MedCom_Request_DepartmentName/> </RequestInformation> <Result> <Case> MedCom, Den Gode LÆ Service ver. 1.0 30
<MedCom_CaseId>387</MedCom_CaseId> <MedCom_CaseType_Id>2</MedCom_CaseType_Id> <MedCom_CaseType_Name>Sociallægeligt samarbejde</medcom_casetype_name> <MedCom_Case_StatusId>10</MedCom_Case_StatusId> <MedCom_Case_CreateDate>02-02-2008 00:00</MedCom_Case_CreateDate> <MedCom_Case_LastModifiedDate>10-08-2010 09:46</MedCom_Case_LastModifiedDate> <MedCom_Patient_CivilRegistrationNumber/> <MedCom_Patient_PersonGivenName>Hans</MedCom_Patient_PersonGivenName> <MedCom_Patient_PersonSurnameName>Egestrup</MedCom_Patient_PersonSurnameName> <MedCom_Receiver_LocationId>5795555555556</MedCom_Receiver_LocationId> <MedCom_Receiver_LocalUserId>Albuerum</MedCom_Receiver_LocalUserId> <MedCom_Receiver_LocalDepartmentId>Bjarne</MedCom_Receiver_LocalDepartmentId> <MedCom_Sender_LocationId>5795555555555</MedCom_Sender_LocationId> <MedCom_Sender_LocalUserId>Albuerum</MedCom_Sender_LocalUserId> <MedCom_Sender_LocalDepartmentId>Bjarne</MedCom_Sender_LocalDepartmentId> <MedCom_DynamicFormPackage_Id>3</MedCom_DynamicFormPackage_Id> <MedCom_DynamicFormPackage_Name>Statusattest (LÆ121- LÆ125)</MedCom_DynamicFormPackage_Name> <MedCom_DynamicFormPackage_SolicitedForm>1</MedCom_DynamicFormPackage_SolicitedForm> </Case> </Result> </MedCom_GetCaseList> MedCom, Den Gode LÆ Service ver. 1.0 31
XML Kvalifikatorliste Element navn Værdier Beskrivelse MedCom_Case_StatusId 10 Sag afleveret til service af kommune. MedCom_Case_StatusId 11 Sag hentet af lægesystem. MedCom_Case_StatusId 20 Sag afleveret af lægesystem. MedCom_Case_StatusId 21 Sag hentet af kommune. MedCom_Case_StatusId 30 Sag afsluttet af kommune. MedCom_Case_StatusId 50 Sag afvist af lægesystem. MedCom_Case_StatusId 51 Sag hentet af kommune. MedCom_Case_StatusId 99 Sag slettet. MedCom_DynamicFormPackage_SolicitedForm 0 Der er kun en blanket i blanketpakken. MedCom_DynamicFormPackage_SolicitedForm 1 Der er 2 blanketter i blanketpakken. MedCom, Den Gode LÆ Service ver. 1.0 32