This is an old revision of the document!
Retransmission
FMK benytter sig af Retransmission som defineret i DGWS: https://svn.medcom.dk/svn/releases/Standarder/DGWS/Dokumentation/Den%20Gode%20Webservice_1.0.pdf
Herved menes der, at alle requests som sendes til FMK fra et vilkårligt system, skal anvende et unikt MessageID/RequestId som ikke må genbruges med mindre der er tale om en retransmission.
Retransmission sikrer, at hvis kommunikationen bliver afbrudt under afsendelse/modtagelse af et response fra FMK, og kalderen derfor ikke ved om FMK har modtaget og behandlet forespørgslen, at man uden risiko for handlingen udføres dobbelt, kan gensendelse sammen kombination af MessageID + Request.
- Hvis det oprindelige request blev modtaget og behandlet, vil FMK gensende det oprindelig respons, som ikke var blevet modtaget i første omgang.
- Hvis FMK ikke har modtaget og behandlet requestet, bliver det behandlet, og FMK returnerer svaret.
Retransmission og fejlhåndtering
Bemærk: I følge fejlhåndtering er modtagelsen af en hvilken som helst fejl-meddelelse fra FMK (Inklusiv Applikationsfejl) også betegnet som en valid response. Får man en response indeholdende en fejl 3000 (Intern Server Fejl) fra FMK, så vil man gennem retransmission af MessageID + Request få samme response (fejl 3000) tilbage, da FMK har sorteret requesten fra som en dublet og derefter returnerer samme svar som blev sendt første gang requesten med dette MessageID blev sendt.
Får man en HTTP 503 fejl (Service Unavailable) eller anden HTTP fejlkode uden at der svaret indeholder fejlkode 1000-3999, er der med stor sansynlighed tale om en transient fejl, Man bør derfor forsøge at sende sit request igen. Der er i dette tilfælde ikke behov for at ændre MessageID ved gensendelse af requesten.
Får man en applikations-fejl (Fejlkode 1000-3999) fra FMK som sit response, skal man overveje om der er grundlag for at man skal forsøge at sende sit request igen (med et ny MessageID!), da der kan være tale om en transient fejl. Dog er det ikke alle applikations-fejl som nødvendigvis er transiente, og man skal derfor nøje overveje hvilke requests man vil forsøge at forsøge igen.
Som en vejlede liste vil der ved modtagelse af et respose med følgende fejlkoder muligvis være tale om transiente fejl som kan løses ved at sende samme request igen med et nyt MessageID:
| Fejl-kode | Kode tekst | Fejl betydning |
|---|---|---|
| 3000 | Intern Server Fejl | Der er opstået en ukendt/uventet fejl i FMK, kan fx betyde midlertidige drift-problemer |
| 3001 | Samtidig retransmission af besked med msgId {0} | Retransmission er blevet forsøgt inden første request er blevet færdigbehandlet |
| 3003 | Samtidig opdatering af medicinkortet {0}:{1} fejlede | Medicinkort er forsøgt opdateret mens et andet opdaterende kald endnu ikke er færdigbehandlet |
| 3004 | Samtidig opdatering af POR relation for patient {0}:{1} fejlede | POR oplysninger er forsøgt opdateret mens et andet opdaterende kald endnu ikke er færdigbehandlet |
| 3200 | Ukendt Idws Soap fejl | Der er opstået en ukendt/uventet fejl i håndteringen af Idws+Soap |
| 3700 | Der er opstået en uventet fejl i FMK ReceptModulet | Der er opstået en ukendt/uventet fejl i Recept-Modulet |
De følgende fejlkoder er der meget lidt chance for er transiente fejl, og der bør ikke forsøges at sende requesten igen uden grundig overvejelse:
| Fejl-kode | Kode tekst | Fejl betydning |
|---|---|---|
| 1007 | For få søgeparametre | Der er ikke angivet tilstrækkelige søge-parametre i forespørgslen |
| 2001 | Fejl under fremsendelse af forespørgsel til recept service: {0} ({1}) | Generisk håndteret fejl fra recept-modulet |
| 3002 | Requestet genbruger msgId {0} som allerede er brugt i et ikke identisk request | Samme messageID er blevet brug til et request som ikke er ens med det første som brugte det samme ID |
| 3100 | Metoden {0} er endnu ikke implementeret | Metoden er endnu ikke implementeret og bør ikke anvendes |
| 3101 | Servicen {0} er ikke understøttet | Servicen er endnu ikke fuldt understøttet og bør ikke anvendes |
