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:
FaultCode- FMK-fejlkodenFaultText- den formatterede fejltekstFaultDetails- valgfri liste af uddybende key-value pairs
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.:
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
