Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: SDS-6774 Flyt afsnit

...

  1. En standard ITI WSDL: Denne WSDL beskriver den standardiserede snitflade som er defineret som en del af IHE XDS stanadarden
  2. En DGWS WSDL: Denne WSDL er tilpasset således, at kravene i forhold til DGWS fremgår af WSDL filenfile
ITI-18: Registry Stored Queryhttp://<NSP miljø>/sfsk/iti18http://<NSP miljø>/sfsk/iti18?wsdlhttp://<NSP miljø>/sfsk/dgws-wsdl/iti18.wsdl
ITI-43: Retrieve Document Sethttp://<NSP miljø>/sfsk/iti43http://<NSP miljø>/sfsk/iti43?wsdlhttp://<NSP miljø>/sfsk/dgws-wsdl/iti43.wsdl

...

Eksempelkoden er tilgængelig her: https://svn.nspop.dk/svn/test/drs/

...


Asynkron hentning af

...

stamkort

Dette er en beskrivelse af en implementationsdetalje til brugerhistorien "Hent 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: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.

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. Anvendere, der ønsker at kalde SFSK, skal whitelistes. Dette gøres ved at oprette en supportsag via https://www.nspop.dk/category/sup - husk at vedhæfte den offentlige del af det certifikat, der skal anvendes eller angiv subjectserialnumber i sagen.

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
titleRequest til ITI-18 Registry Stored Query
linenumberstrue
collapsetrue
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

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. Anvendere, der ønsker at kalde SFSK, skal whitelistes. Dette gøres ved at oprette en supportsag via https://www.nspop.dk/category/sup - husk at vedhæfte den offentlige del af det certifikat, der skal anvendes eller angiv subjectserialnumber i sagen.

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
titleRequest til ITI-18 Registry Stored Query
linenumberstrue
collapsetrue
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: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>

...

Da stamkort i den nationale infrastruktur er CDA dokumenter af typen on-demand er det obligatorisk, at angive, at man søger efter disse (i eksemplet er det søgeparameterværdien 'urn:uuid:34268e47-fdf5-41a6-ba33-82133c465248' under '$XDSDocumentEntryType'. Man kan ydermere (hvilket er valgfrigt) styre hvilken CDA-version af stamkortet man får, ved at angive det i "$XDSDocumentEntryFormatCode" som det ses i eksemplet (her "pdc-v3.0").

...