Page History
Table of Contents |
---|
...
Introduktion
...
Formål
Dette dokument er en vejledning til anvendelse af Synkroniseringsservice til Fælles Stamkort (SFKS).
...
Formålet med dette dokument er at vejlede udviklere, der skal udvikle eller vedligeholde systemer, som anvender SFSK snitflader.
...
Læsevejledning
Dette dokument er rettet mod udviklere, der skal udvikle eller teste services, der har grænseflader mod SFSK.
Læseren forudsættes at være bekendt med de involverede teknologier, som f.eks. SOAP og DGWS. Derudover forudsættes, at læseren er bekendt med IHE XDS (herunder ITI-XX services).
...
Referencer
DGWS | Den Gode Webservice | |
IHE XDS | Cross Enterprise Document Sharing (IHE) | Cross-Enterprise Document Sharing |
...
Introduktion til SFSK
SFSK er en service på NSP, der udstiller snitflader til fremsøgning og hentning af stamkortdokumenter og -metadata i den nationale XDS infrastruktur.
...
Efterfølgende gennemgås de brugerhistorier, der er beskrevet i SFSK - Brugerhistorier og der gives en oversigt over, hvordan de enkelte brugerhistorier kan realiseres: Dvs. hvilke snitflader i SFSK er i spil samt eksempler på requests og responses.
...
Snitfladebeskrivelser og endpoints
SFSK udstiller to services til fremsøgning og hentning af stamkortdokumenter og disses metadata. SFSK snitfladerne tager udgangspunkt i de standardsnitflader, der er beskrevet som en del af IHE XDS.
...
- En standard ITI WSDL: Denne WSDL beskriver den standardiserede snitflade som er defineret som en del af IHE XDS stanadarden
- En DGWS WSDL: Denne WSDL er tilpasset således, at kravene i forhold til DGWS fremgår af WSDL filen
ITI-18: |
Registry Stored Query | http://<NSP miljø>/sfsk/iti18 | http://<NSP miljø>/sfsk/iti18?wsdl | http://<NSP miljø>/sfsk/dgws-wsdl/iti18.wsdl |
ITI-43: |
Retrieve Document Set | http://<NSP miljø>/sfsk/iti43 | http://<NSP miljø>/sfsk/iti44?wsdl | http://<NSP miljø>/sfsk/dgws-wsdl/iti43.wsdl |
...
Understøttelse af udvikling for anvendere
Det er op til anvenderen selv at vælge platform og frameworks, der passer til resten af dennes løsning. Der er dog et eksempel på "anvenderkode", der eventuelt kan bruges som inspiration, hvis anvenderen laver en Java-baseret løsning.
Eksempelkoden er tilgængelig her: https://svn.nspop.dk/svn/test/drs/
...
Understøttelse af Brugerhistorier
Med udgangspunkt i brugerhistorierne i SFSK - Brugerhistorier beskrives i det følgende, hvorledes de enkelte snitflader skal anvendes til at understøtte disse.
Alle brugerhistorier indeholder eksempler på succesfulde requests og responses.
Anvendelsen af SFSK består som i andre IHE XDS baserede systemer i to interaktioner:
- Fremsøgning af metadata om en borgers stamkort: ITI-18 Registry Stored Query anvendes til at fremsøge metadata (herunder dokument-id'er) for en borgers stamkort dokumenter.
- Hentning af stamkort dokumenter: ITI-43 Retrieve Document Set anvendes til at hente konkrete stamkort dokumenter udfra disses dokument-id'er.
Disse interaktioner beskrives i brugerhistorierne Brugerhistorie: Fremsøg stamkort og Brugerhistorie: Hent stamkort.
Begge servicekald kræver, at anvenderen autentificerer sig med et gyldigt system idkort. SFSK tillader ikke kald med bruger idkort. Derudover skal det anvendte (FOCES/VOCES) certifikat være whitelistet til kald til SFSK.
Fejl i autentificeringen (herunder whitelisting) rapporteres tilbage til brugeren som en SOAP Fault.
Understøttelse af brugerhistorien: Fremsøg stamkort
Til fremsøgning af en borgers stamkort anvendes snitfladen ITI-18 Registry Stored Query.
Nedenfor vises et eksempel på et succesfuldt request og det tilhørende response.
Code Block | ||||
---|---|---|---|---|
| ||||
ID: 1 Address: http://localhost:8060/sfsk/iti18 Encoding: UTF-8 Http-Method: POST Content-Type: application/soap+xml Headers: {Accept=[*/*]} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsu:Created>2021-06-29T06:30:57Z</wsu:Created> </wsu:Timestamp> <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" IssueInstant="2021-06-29T06:25:57Z" Version="2.0" id="IDCard"> <saml:Issuer>TEST2-NSP-STS</saml:Issuer> <saml:Subject> <saml:NameID Format="medcom:other">SubjectDN={SERIALNUMBER=CVR:46837428-UID:27910135 + CN=Statens Serum Institut - Test VOCES, O=Statens Serum Institut // CVR:46837428, C=DK},IssuerDN={CN=TRUST2408 Systemtest XXII CA, O=TRUST2408, C=DK},CertSerial={1495058165}</saml:NameID> <saml:SubjectConfirmation> <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:2.0:cm:holder-of-key</saml:ConfirmationMethod> <saml:SubjectConfirmationData> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:KeyName>OCESSignature</ds:KeyName> </ds:KeyInfo> </saml:SubjectConfirmationData> </saml:SubjectConfirmation> </saml:Subject> <saml:Conditions NotBefore="2021-06-29T06:25:57Z" NotOnOrAfter="2021-06-30T06:25:57Z"/> <saml:AttributeStatement id="IDCardData"> <saml:Attribute Name="sosi:IDCardID"> <saml:AttributeValue>t9eKkssIKrREqCxShV729w==</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="sosi:IDCardVersion"> <saml:AttributeValue>1.0.1</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="sosi:IDCardType"> <saml:AttributeValue>system</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="sosi:AuthenticationLevel"> <saml:AttributeValue>3</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="sosi:OCESCertHash"> <saml:AttributeValue>xe/OtYMBaE1RFJ7l9lN2zAuiXAU=</saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement> <saml:AttributeStatement id="SystemLog"> <saml:Attribute Name="medcom:ITSystemName"> <saml:AttributeValue>SFSK</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="medcom:CareProviderID" NameFormat="medcom:cvrnumber"> <saml:AttributeValue>46837428</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="medcom:CareProviderName"> <saml:AttributeValue>Statens Serum Institut</saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" id="OCESSignature"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:Reference URI="#IDCard"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <ds:DigestValue>FWHQCXJv1DPXZ6VIn6lZ2FfMpOI=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>oSWAQuB3zjqzLLOwB6lEiY2JPLcjhgV3b6v/NphEz1H6helxQSze/NehoIadxSSu3YG5KsAtiry3AaPgULcIpUQ17r8xxzHjoFUpYIq/mFgPR4pH6vACEFFtpFvwUuboqMLoVETGAj56Q0vjZa7QDvcb6F0pnGSz+bWViCxlLXJxJXYvlhyZs3zx0vngpc44IzrDLC8iQfQ0juqi2NJjYJi4tWis75DmA7FR8th2zCNjMayCGJzqTaV9FfRGSfh/I/5a/DB8WESRtSIJzTgPQTc6ZvWxNzTe7NrgJCllxaAhGDtMZ345kokJHibtIEbtRdZ65jKtb9bKTTTF9zwAKA==</ds:SignatureValue> <ds:KeyInfo> <ds:X509Data> <ds:X509Certificate>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</ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </ds:Signature> </saml:Assertion> </wsse:Security> <medcom:Header xmlns:medcom="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd"> <medcom:SecurityLevel>3</medcom:SecurityLevel> <medcom:Linking> <medcom:MessageID>AAABelZ2sZtjsFlZV2aLmlNPU0k=</medcom:MessageID> </medcom:Linking> <medcom:RequireNonRepudiationReceipt>no</medcom:RequireNonRepudiationReceipt> </medcom:Header> <Action xmlns="http://www.w3.org/2005/08/addressing" soap:mustUnderstand="1">urn:ihe:iti:2007:RegistryStoredQuery</Action> <MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:6c00c46d-eac1-4a2f-bbf3-2ed23972bc31</MessageID> <To xmlns="http://www.w3.org/2005/08/addressing">http://localhost:8060/sfsk/iti18</To> <ReplyTo xmlns="http://www.w3.org/2005/08/addressing" soap:mustUnderstand="1"> <Address>http://www.w3.org/2005/08/addressing/anonymous</Address> </ReplyTo> </soap:Header> <soap:Body> <ns4:AdhocQueryRequest xmlns:ns6="urn:oasis:names:tc:ebxml-regrep:xsd:lcm:3.0" xmlns:ns5="urn:ihe:iti:xds-b:2007" xmlns:ns4="urn:oasis:names:tc:ebxml-regrep:xsd:query:3.0" xmlns:ns3="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0" xmlns:ns2="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"> <ns4:ResponseOption returnType="LeafClass" returnComposedObjects="true"/> <ns2:AdhocQuery id="urn:uuid:14d4debf-8f97-4251-9a74-a90016b0af0d"> <ns2:Slot name="$XDSDocumentEntryPatientId"> <ns2:ValueList> <ns2:Value>'2222222222^^^&1.2.208.176.1.2&ISO'</ns2:Value> </ns2:ValueList> </ns2:Slot> <ns2:Slot name="$XDSDocumentEntryType"> <ns2:ValueList> <ns2:Value>('urn:uuid:34268e47-fdf5-41a6-ba33-82133c465248')</ns2:Value> <ns2:Value>('urn:uuid:7edca82f-054d-47f2-a032-9b2a5b5186c1')</ns2:Value> </ns2:ValueList> </ns2:Slot> <ns2:Slot name="$XDSDocumentEntryStatus"> <ns2:ValueList> <ns2:Value>('urn:oasis:names:tc:ebxml-regrep:StatusType:Approved')</ns2:Value> </ns2:ValueList> </ns2:Slot> </ns2:AdhocQuery> </ns4:AdhocQueryRequest> </soap:Body> </soap:Envelope> |