Page History
| Navitabs | ||||
|---|---|---|---|---|
| ||||
| 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 | |
| IDWS | Identity Based Web Services | |
| 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.
De enkelte brugerhistorier er beskrevet i dokumentet SFSK - Brugerhistorier og giver et overblik over SFSK set fra anvendersystemerne.
I dette dokument er der en oversigt over snitfladebeskrivelser for SFSK.
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.
Hver af SFSK services udstiller 3 WSDL filer.
- 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 file
- En IDWS WSDL: Denne WSDL er tilpasset således, at kravene i forhold til IDWS fremgår af WSDL file
| Standard ITI-18: Registry Stored Query | http://<NSP miljø>/sfsk/iti18 | http://<NSP miljø>/sfsk/iti18?wsdl | http://<NSP miljø>/sfsk/service-contract/wsdl/sfsk-2024101720250730/iti18.wsdl |
| DGWS ITI-18: Registry Stored Query | http://<NSP miljø>/sfsk/service-contract/secure-wsdl-dgws/sfsk-2024101720250730/iti18.wsdl | ||
| IDWS ITI-18: Registry Stored Query | http://<NSP miljø>/sfsk/service-contract/secure-wsdl-idws/sfsk-2024101720250730/iti18.wsdl | ||
| Standard ITI-43: Retrieve Document Set | http://<NSP miljø>/sfsk/iti43 | http://<NSP miljø>/sfsk/iti43?wsdl | http://<NSP miljø>/sfsk/service-contract/wsdl/sfsk-2024101720250730/iti18.wsdl |
| DGWS ITI-43: Retrieve Document Set | http://<NSP miljø>/sfsk/service-contract/secure-wsdl-dgws/sfsk-2024101720250730/iti43.wsdl | ||
| IDWS ITI-43: Retrieve Document Set | http://<NSP miljø>/sfsk/service-contract/secure-wsdl-idws/sfsk-2024101720250730/iti43.wsdl |
Yderligere er SFSK tilgængelig via DCC'en på de pågældende SOAPActions - dette er konfigureret med en særskilt serviceidentifier, da DCC'en ellers ville viderestille kaldene til dokumentdelingsservicen.
| ITI-snitflade | SOAPAction | Decoupling-url (test1) | ServiceIdentifier |
|---|---|---|---|
| ITI18 | urn:ihe:iti:2007:RegistryStoredQuery | http://test1.ekstern-test.nspop.dk:8080/decoupling/nspservices/sfskreg | /nspservices/sfskreg |
| ITI43 | urn:ihe:iti:2007:RetrieveDocumentSet | http://test1.ekstern-test.nspop.dk:8080/decoupling/nspservices/sfskrep | /nspservices/sfskrep |
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. Laver man en java-baseret løsning er "Dokumentdeling på NSP (DROS, DDS, NXRG/SDS Patientindex, OpenXDS)" et godt sted at starte.
Heri findes afsnittet "Hvordan kommer man i gang", der blandt andet henviser til et kode bibliotek, som letter arbejdet med programmeringen. Afsnittet forklarer centrale elementer, giver kode eksempler og eksempler på request og responses.
Asynkron hentning af stamkort
Dette er en beskrivelse af en implementationsdetalje til brugerhistorien "Hent stamkort".
...
http://sundhedsdatastyrelsen.dk/NoResuscitation/2023/06/01:NoResuscitationUpdated
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.
...
Begge servicekald kræver, at anvenderen autentificerer sig med et gyldigt system eller medarbejder idkort. SFSK tillader ikke kald med bruger idkort.Brugertyperne er beskrevet i SFSK Brugerhistorier
...
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.
...
| 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/Asynkron hentning af stamkort
Det er muligt at implementere asynkron hentning af stamkort, ved kun at hente stamkort når der er en ændring i det. Dette gøres ved at subscribe på følgende topics i NAS, som adviserer om ændringerne:
http://sundhedsdatastyrelsen.dk/ConsentAdministration/2021/03/01:ConsentUpdated
http://sundhedsdatastyrelsen.dk/LivingWill/2022/05/05:LivingWillUpdated
http://sundhedsdatastyrelsen.dk/OrganDonation/2022/05/05:OrganDonationUpdated
http://sundhedsdatastyrelsen.dk/PersonalDataCard/2020/11/01:DataCardUpdated
http://sundhedsdatastyrelsen.dk/TreatmentWill/2022/05/05:TreatmentWillUpdated
http://sundhedsdatastyrelsen.dk/NoResuscitation/2023/06/01:NoResuscitationUpdatedoasis-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:Slot name="$XDSDocumentEntryFormatCode">
<ns2:ValueList>
<ns2:Value>('urn:ad:dk:medcom:pdc-v3.0:full')</ns2:Value>
</ns2:ValueList>
</ns2:Slot>
</ns2:AdhocQuery>
</ns4:AdhocQueryRequest>
</soap:Body>
</soap:Envelope> |
...
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
ID: 5
Response-Code: 200
Encoding: UTF-8
Content-Type: text/xml;charset=UTF-8
Headers: {connection=[keep-alive], content-type=[text/xml;charset=UTF-8], Date=[Tue, 29 Jun 2021 06:43:07 GMT], transfer-encoding=[chunked]}
Payload:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<Action xmlns="http://www.w3.org/2005/08/addressing">urn:ihe:iti:2007:RegistryStoredQueryResponse</Action>
<MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:ca5dcbdd-7e89-467c-9d66-ed6b27fad490</MessageID>
<To xmlns="http://www.w3.org/2005/08/addressing">http://www.w3.org/2005/08/addressing/anonymous</To>
<RelatesTo xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:82669efe-6d6e-47d2-aa7b-44fcbfe3f21d</RelatesTo>
</soap:Header>
<soap:Body>
<ns4:AdhocQueryResponse 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" status="urn:ihe:iti:2007:ResponseStatusType:PartialSuccess">
<ns3:RegistryErrorList>
<ns3:RegistryError codeContext="urn:dk:nsi:Consent Filter Applied" errorCode="XDSRegistryError" severity="urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Warning" location="ITI-18"/>
</ns3:RegistryErrorList>
<ns2:RegistryObjectList/>
</ns4:AdhocQueryResponse>
</soap:Body>
</soap:Envelope> |
Understøttelse af brugerhistorien: Hent stamkort
Til hentning af en borgers stamkort anvendes snitfladen ITI-43 Retrieve Document Set.
...