News:

Velkommen til FMK Teknik

Main Menu

Retur af SOAP Faults fra DDV

Started by Michael Berg, 2020-09-17 13:52:18

Previous topic - Next topic

Michael Berg

Kære alle,

Fejlende kald til DDV snitfladerne returnerer i dag et response med forholdsvis begrænsede detaljer om årsagen. For eksempel:

<SOAP-ENV:Body>
    <SOAP-ENV:Fault>
        <faultcode>SOAP-ENV:Server</faultcode>
        <faultstring xml:lang="en">Person med CPR-nr. 1234561111 kunne ikke findes!</faultstring>
    </SOAP-ENV:Fault>
</SOAP-ENV:Body>


DokuWiki findes en bruttoliste over hvilke fejl man kan få tilbage i forbindelse med kald til DDV. Hver fejl har sin egen fejlkode, som eksempelvis "4000   Person med CPR-nr. {0} kunne ikke findes!". Problemet er at koden "4000" ikke returneres i fejlsvaret. Der burde være et <detail> element inkluderet med oplysninger om fejlkoden og øvrige detaljer om årsagen, som det bl.a. kendes fra FMK. En fejl har dog indtil nu forhindret at dette element blev inkluderet i svaret.

Det retter vi nu op på, så det dermed bliver muligt at reagere på specifikke fejl uden at skulle parse fejlteksten. Et fejlende kald vil således returnere følgende volumiøse svar:


<SOAP-ENV:Body>
    <SOAP-ENV:Fault>
        <faultcode>SOAP-ENV:Client</faultcode>
        <faultstring xml:lang="en">Vaccinationsforløb kunne ikke findes!</faultstring>
        <detail>
            <medcom:FaultCode xmlns:medcom="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd">VaccinationPlanNotFound</medcom:FaultCode>
            <ddv:errorcode xmlns:ddv="http://vaccinationsregister.dk/schemas/2010/07/01">4010</ddv:errorcode>
            <ddv:stacktrace xmlns:ddv="http://vaccinationsregister.dk/schemas/2010/07/01">
            dk.vaccinationsregister.ddvshared.shared.exceptions.ValidationException: Vaccinationsforløb kunne ikke findes!
            at dk.vaccinationsregister.server.services.commands.serverintern.GetVaccinationPlanForSubscriptionActionHandler.execute(GetVaccinationPlanForSubscriptionActionHandler.java:28)
            at dk.vaccinationsregister.server.services.commands.serverintern.GetVaccinationPlanForSubscriptionActionHandler.execute(GetVaccinationPlanForSubscriptionActionHandler.java:18)
            ...afkortet...
            at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
            at java.lang.Thread.run(Thread.java:748)</ddv:stacktrace>
        </detail>
    </SOAP-ENV:Fault>
</SOAP-ENV:Body>


Bemærk det nye <detail> element som indeholder både en errorcode samt en faultcode. Errorcode henviser her direkte til fejlkoderne, der er beskrevet på DokuWiki.

Der returneres også et stacktrace, som kan benyttes i forbindelse med oprettelse af supportsager. Det er ikke noget vi forventer blot noget der kan gøre fejlsøgning lidt lettere i visse situationer.

Grunden til denne serviceoplysning er, at vi tidligere har oplevet at anvendersystemer af forskellige årsager er løbet ind i problemer hvis responset indeholder elementer, der ikke tidligere har været sendt ud. Derfor håber vi at I vil være med til at teste funktionaliteten, som p.t. er enabled på Test1. I alle andre miljøer, herunder PROD, er funktionaliteten slået fra og her får man kun det "korte" fejlsvar tilbage.

Test kan eksempelvis udføres ved at lave opslag på personer der ikke findes (CPR nummer ikke fundet) ændring eller sletning af identifiers der ikke findes - osv. Verificer, at det nye <detail> element ikke har uønskede sideeffekter i jeres løsninger.

Hvis ikke der indløber protester så håber vi at kunne slå det udvidede fejl-respons til i produktion 1/10 2020.