Table of Contents

Fejlhåndtering

Hvis der opstår en fejl ved behandling af en forespørgsel, returnerer FMK et fejlsvar, og den forretningsmæssige del af transaktionen vil blive rullet tilbage. Det betyder f.eks., at der ikke oprettes, opdateres eller seponeres på nogen af de medsendte medicinkort eller lægemiddelordinationer, hvis ét element i samme kald fejler. Kaldet vil dog stadig blive logget.

For FMK 1.6.0 er fejlformatet næsten ens for DGWS og IDWS. I begge profiler returneres et FMKDetail-element, men ved DGWS returneres der desuden et top-level medcom:FaultCode-element i SOAP-faultens detail-element.

Fejlkoder

Der returneres altid en FMK-fejlkode. De mulige fejlkoder er opdelt i følgende intervaller:

Interval Betydning Eksempel
1-1000 Typisk brugerfejl eller fejl forårsaget af afsendersystemet 2: Cpr-nr 1111111117 (PersonIdentifier) findes ikke
1000-3999 Applikationsfejl 3000: Intern server fejl
4000-9999 Valideringsfejl, autentificeringsfejl, autorisationsfejl, rolle-/rettighedsfejl m.v. 4003: “SOSI xml fejl: ID card is not valid in time. The card has to be less than 9 hours old 4200: Ingen roller passer på brugeren
10000-10999 Udvidet valideringsfejl, dvs. fejl som kan ignoreres ved brug af ModificationMetadata 10001: Ej muligt at seponere lægemiddelordination 31237621536712 da der findes en åben recept

En samlet liste af fejl FMK kan returnere findes i Fejlkoder og -tekster.

Ved transiente fejl og retransmission, se Retransmission.

Fejlformat

Der returneres altid et FMKDetail-element i SOAP-faultens detail-element. Ved IDWS er dette det eneste element. Ved DGWS returneres der derudover et top-level medcom:FaultCode-element før FMKDetail. Klienter bør anvende FMKDetail/FaultCode som FMK-fejlkode. Ved DGWS vil samme kode også fremgå af detail/medcom:FaultCode. SOAP-felterne faultcode og faultstring følger stadig SOAP fault-formatet. Feltet faultcode angiver overordnet om der er tale om en klient fejl eller en server fejl, og faultstring vil typisk være identisk med FMKDetail/FaultText.

FMKDetail indeholder:

Et typisk DGWS-eksempel på en SOAP fejl kan se således ud:

<SOAP-ENV:Fault xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <faultcode>SOAP-ENV:Client</faultcode>
  <faultstring>Medicinkortet 2603558084 findes ikke i version 999</faultstring>
  <detail>
    <medcom:FaultCode xmlns:medcom="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd">3</medcom:FaultCode>
    <FMKDetail xmlns="http://fmk-teknik.dk/160">
      <FaultCode>3</FaultCode>
      <FaultText>Medicinkortet 2603558084 findes ikke i version 999</FaultText>
      <FaultDetails>
        <KeyValueSet>
          <Key>MedicineCardVersion</Key>
          <Value>999</Value>
        </KeyValueSet>
        <KeyValueSet>
          <Key>PersonIdentifier</Key>
          <Value>2603558084</Value>
        </KeyValueSet>
      </FaultDetails>
    </FMKDetail>
  </detail>
</SOAP-ENV:Fault>

Ved IDWS vil detail-elementet tilsvarende kun indeholde FMKDetail og ikke det ekstra medcom:FaultCode-element.

FaultDetails og KeyValueSet

FaultDetails indeholder en liste af KeyValueSet-elementer for den konkrete fejl. Keys følger fejlens parameter-keys, jf. Fejlkoder og -tekster.

Rækkefølgen af KeyValueSet-elementer er ikke en del af kontrakten og må ikke antages at være stabil.

En Key vil typisk ligne navnet på et relevant felt eller begreb i requestet, f.eks.:

Det er ikke et krav, at en Key svarer direkte til et XML-element i responsen. ElementPath er især værd at bemærke. Se også ElementPath.

Udvidet validering

Den sidste type af validering er de såkaldte udvidede valideringer. I modsætning til de øvrige typer af valideringsfejl kan disse valideringer i mange tilfælde ignoreres ved brug af feltet ModificationMetadata, som findes i de fleste opdaterende requests til FMK.

Se mere her: Udvidet validering