1. Indholdsfortegnelse


2. Introduktion

2.1. Formål

Denne guide har som formål at give et overblik over Digital Post Adapter (DPA). Formålet med dokumentet er at give anvendere et overblik over løsningen, samt en oversigt over, hvilke User Stories der er understøttet af DPA og hvordan disse er implementeret.

2.2. Beskrivelse

Digital Post Adapter står for at videresende breve til Digital Post Komponent. Dette gøres asynkront via en kø, således at brevene vil blive sendt før eller senere, selv hvis DPK er utilgængelig.

2.3. Links til mere information

Dokumentationen for DPK kan findes her: https://github.com/trifork/dpk-docs/wiki

Det er kaldet SendPDF der bliver brugt af DPA.

2.4. Grafisk fremstilling og sammenhængen

DPA modtager breve fra andre services og sender dem videre til DPK, som omdanner dem til PDF og sender dem videre.

2.5. Læsevejledning og forudsætninger

Dette dokument er henvendt til udviklere og arkitekter, der skal anvende Digital Post Adapter .

Det forventes at læseren har kendskab til SOAP WebService, Den Gode WebService (DGWS) og Sercurity Token Service (STS).

2.6. Sikkerhed

Service udstil type DGWS
Krævet sikkerhedsniveau  VOCES eller FOCES certifikat
Logning Der logges svar fra DPK, i de tilfælde hvor DPK melder fejl

2.7. Definitioner og referencer

Reference Beskrivelse
DPA Digital Post Adapter
DPK Digital Post Komponent. Komponent som leverer digital post til Digital Post og Strålfors

3. Adgang, brug og snitflader

3.1. Adgang

3.2. Snitfladebeskrivelse og brug

3.3. SendDigitalPost

SendDigitalPost kaldet sætter et Digital Post brev på en kø, som afvikles med jævne mellemrum. Hvis et brev succesfuldt sendes til DPK fjernes det fra køen, men hvis kaldet mod DPK fejler beholdes brevet i køen og forsøges afsendt igen senere og supporten får vha. is-alive kald besked om at der er et brev som er fejlet.

3.3.1. SendDigitalPostRequest

SendDigitalPostRequest
Element Beskrivelse Påkrævet
message-id UUID version 4 som unikt udpeger genne beske X
recipient-id ID-nummer for modtager af brevet. På nuværende tidspunkt understøttes kun CPR-numre X
recipient-id-source OID for ID-nummeret. På nuværende tidspunkt understøttes kun 1.2.208.176.1.2 X
template-physical ID for den fysiske skabelon der skal udfyldes. 
template-digital ID for den digitale skabelon der skal udfyldes. X
recipient-details Key-value liste over modtager-specifikke detaljer der skal erstattes ind i skabelonen Nogle templates har påkrævede detailer, som skal fremgå i enten recipient-details eller template-details
template-details Key-value liste over skabelon-specifikke detaljer der skal erstattes ind i skabelonen Nogle templates har påkrævede detailer, som skal fremgå i enten recipient-details eller template-details

3.3.2. SendDigitalPostResponse

SendDigitalPostResponse
Element Beskrivelse Påkrævet
message-id Samme message-id som blev sendt ind vil blive returneret. Dette betyder ikke at brevet er sendt succesfuldt afsted, men at det er blevet sat i køen og vil blive forsøgt afsendt snarest X

3.4. Generelle koder, værdier, etc.

Disse Identifiers kan angives som template i requestet, og sender de tilsvarende Identifiers til DPK. Substitutions-nøglerne kan enten tilføjes som recipient-details eller som template-details. Hvis en substitutions-nøgle er angivet som både recipient-details og template-details vil recipient-details værdien blive valgt.

Identifiers hos DPK Obligatoriske substitutions-nøgler Valgfri substitutions-nøgler

fgvhr/20241218/digital/BekraeftelseRegistreringFravalg

fgvhr/20241218/physical/BekraeftelseRegistreringFravalg

  • ikrafttraedelsesdato
  • date

fgvhr/20241218/digital/BekraeftelseFortrydelseFravalg

fgvhr/20241218/physical/BekraeftelseFortrydelseFravalg


  • date 

fgvhr/20241218/digital/PaamindelseRegistreringFravalg

fgvhr/20241218/physical/PaamindelseRegistreringFravalg


  • date

3.5. Fejlbeskeder

I fejl-scenarier vises disse fejlkoder:

Fejlkode Scenarie
system-validation-error Fejl i sikkerheds-billet valideringen
invalid-oid-error

Hvis der angives en anden recipient-id-source end understøttet. På nuværende tidspunkt understøttes kun 1.2.208.176.1.2 

invalid-uuid-error Hvis message-id ikke er en UUID version 4

4. Eksempler på request/response

Eksempler på request og response til de operationer der udstilles. De enkelte elementer er beskrevet under snitfladebeskrivelse. Klient proxier kan genereres udfra WSDL'en.

4.1. Eksempel på SendDigitalPostRequest/Response

Eksempel request/response
<SendDigitalPostRequest>
  <message-id>7edac017-97a1-4cdc-aa7c-ff2298514aff</message-id>
  <recipient-id>1111111118</recipient-id>
  <recipient-id-source>1.2.208.176.1.2</recipient-id-source>
  <template-physical>fgvhr/20241218/physical/BekraeftelseRegistreringFravalg</template-physical>
  <template-digital>fgvhr/20241218/digital/BekraeftelseRegistreringFravalg</template-digital> 
  <recipient-details>
    <key>ikrafttraedelsesdato</key>
    <value>2025-05-01</value>
  </recipient-details>
  <template-details>
    <key>date</key>
    <value>2025-04-25</value>
  </template-details>
</SendDigitalPostRequest>

<SendDigitalPostResponse>
  <message-id>7edac017-97a1-4cdc-aa7c-ff2298514aff</message-id> 
</SendDigitalPostResponse>

5. Eksempel kode

5.1. Eksempel kode

Denne eksempel-kode gør brug af nsp-test-idp biblioteket til håndtering af SOAP og SEAL.

Eksempel kode
        URI endpoint = URI.create("http://localhost:8080/digitalpost/2024/05/29/send");
        String action = "http://nspop.dk/digitalpost/2024/05/29/#send";
        Identity identity = sundhedsdatastyrelsen();



        String request = """
                <ns1:sendDigitalPostRequest xmlns:ns1="http://nspop.dk/digitalpost/2024/05/29/" >
                  <message-id>7edac017-97a1-4cdc-aa7c-ff2298514aff</message-id>
                  <recipient-id>1111111118</recipient-id>
                  <recipient-id-source>1.2.208.176.1.2</recipient-id-source>
                  <template-physical>fgvhr/20241218/physical/BekraeftelseRegistreringFravalg</template-physical>
				  <template-digital>fgvhr/20241218/digital/BekraeftelseRegistreringFravalg</template-digital>  
                  <recipient-details>
                    <key>ikrafttraedelsesdato</key>
                    <value>2025-05-01</value>
                  </recipient-details>
                  <template-details>
                    <key>date</key>
                    <value>2025-04-25</value>
                  </template-details>
                </ns1:sendDigitalPostRequest>
                """;
        try (NspSoapClient nspSoapClient = new NspSoapClient(System.out::println)) {
            try (NspSoapClient.NspSoapResponse soapResponse = nspSoapClient.request(endpoint, action).as(identity).execute(request)) {
                assertEquals(200, soapResponse.getStatus());
                String response = IOUtils.toString(soapResponse.getResponse(), StandardCharsets.UTF_8);
                assertTrue("Actual response: " + response, response.contains("7edac017-97a1-4cdc-aa7c-ff2298514aff"));
            }
        }



6. Dokument Historik

3/4 2025 Martin Henriksen/SDS Etablering af dokumentation
4/6 2025 Markus Andreassen/Trifork Udfyldelse af dokumentation
27/7 2025 Markus Andreassen/Trifork Udvidelse af dokumentation ifbm. QA


  • No labels