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 indholdet af SOAP-faultens detail-element ens for DGWS,
IDWS og IDWS-Xua. Dette er i modsætning til tidligere FMK versioner, hvor
fejlformatet afhænger af profilen.
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
For FMK 1.6.0 returneres der i SOAP-faultens detail-element præcis ét
FMKDetail-element. Klienter bør anvende FMKDetail/FaultCode som
FMK-fejlkode.
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:
FaultCode- FMK-fejlkodenFaultText- den formatterede fejltekstFaultDetails- valgfri liste af uddybende key-value pairs
Et typisk 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> <FMKDetail xmlns="http://fmk-teknik.dk/160"> <FaultCode>3</FaultCode> <FaultText>Medicinkortet 2603558084 findes ikke i version 999</FaultText> <FaultDetails> <KeyValueSet> <Key>ElementPath</Key> <Value>GetMedicineCardRequest</Value> </KeyValueSet> <KeyValueSet> <Key>MedicineCardVersion</Key> <Value>999</Value> </KeyValueSet> <KeyValueSet> <Key>PersonIdentifier</Key> <Value>2603558084</Value> </KeyValueSet> </FaultDetails> </FMKDetail> </detail> </SOAP-ENV:Fault>
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.:
DrugMedicationIdentifierPersonIdentifierElementPath
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
