====== 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 | [[fmk:generel:udvidet_validering|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 [[fmk:generel:fejlkoder_og_-tekster|Fejlkoder og -tekster]]. Ved transiente fejl og retransmission, se [[fmk:generel:retransmission|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-fejlkoden * ''FaultText'' - den formatterede fejltekst * ''FaultDetails'' - valgfri liste af uddybende key-value pairs Et typisk DGWS-eksempel på en SOAP fejl kan se således ud: SOAP-ENV:Client Medicinkortet 2603558084 findes ikke i version 999 3 3 Medicinkortet 2603558084 findes ikke i version 999 MedicineCardVersion 999 PersonIdentifier 2603558084 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. [[fmk:generel:fejlkoder_og_-tekster|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.: * ''DrugMedicationIdentifier'' * ''PersonIdentifier'' * ''ElementPath'' 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å [[fmk:generel:elementpath|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: [[fmk:generel:udvidet_validering|Udvidet validering]]