r1 - 23 Oct 2007 - 08:10:22 - ChristianGasserYou are here: TWiki >  Afkobling Web > TekniskBeskrivelse

Afkoblingsmodel

Det er muligt for det kaldende EPJ system at angive hvilken afkoblingsmodel, der skal anvendes. Der findes 3 modeller:

Model Betydning Typisk anvendelse
Synkron timeout Svartidsgaranti. Lav synkront kald, men returner fejl ved timeout. Rekvirering af oplysninger. Er de ikke tilgængelige inden timeout, anses servicen og at være utilgængelig.
Kø efter timeout Lav synkront kald og returner svar, hvis det kommer inden timeout. Ved timeout returneres timeout_queued og kaldet konverteres til et asynkront kald. Når svaret kommer sendes det til den angivne svar-kø. Opdateringer som returnerer Id'er eller andet, som det kan være hensigtsmæssige at have i det videre forløb.
Asynkron Fire-and-forget. Der returneres med det samme, og kaldet udføres snarest muligt. Svaret sendes til den angivne svar-kø. Opdateringer, hvor man ikke behøver retur-data.

Hvis der ikke angives en afkoblingsmodel, vil afkoblingskomponenten benytte en default-model og en default timeout. Disse default værdier er:

Kald Afkoblingsmodel Timeout
Hent medicinkort synkron timeout 20 sek
Hent lægemiddelordination synkron timeout 20 sek
Opret lægemiddelordination kø efter timeout 10 sek
Opdater lægemiddelordination kø efter timeout 10 sek
Pausering af lægemiddelordination kø efter timeout 10 sek
Ophæv pausering af lægemiddelordination kø efter timeout 10 sek
Seponer lægemiddelordination kø efter timeout 10 sek
Suspendering af medicinkort kø efter timeout 10 sek
Frigiv medicinkort asynkron -
Opret effektuering asynkron -
Bulk opdatering af medicinkort asynkron -
Hent medicinkort-version synkron timeout 10 sek
Opret receptordination ud fra "Den gode XML recept" synkron timeout 10 sek
Hent receptordination synkron timeout 20 sek
Opret eller ophæv tilknytning af lægemiddelordination til receptordination asynkron -
Søg efter seponerede lægemiddelordinationer synkron timeout 20 sek

Ønskes en specifik afkoblingsmodel angives dette i soap-envelope'n med et DecouplingHeader-tag, der er defineret i et SOSI-decoupling-component namespace. Der mulige værdier for DecouplingModel er:

  • synchronous_timeout
  • queue_after_timeout
  • asynchronous

For de to første angives timeout-tiden i sekunder.

Eksempel:

... xmlns:dcc="http://www.sosi.dk/2007/07/decoupling-component-1.0.xds"  ...

      <dcc:DecouplingHeader>
         <dcc:DecouplingModel>synchronous_timeout</dcc:DecouplingModel>
         <dcc:Timeout>5</dcc:Timeout>
      </dcc:DecouplingHeader>

Asynkron svarkø

For kald der anvender afkoblingsmodel queue_after_timeout eller asynchronous, skal der angives, hvor afkoblingskomponenten skal aflevere svar, der modtages fra PEM2 efter at kaldet er afsluttet. Det er muligt at angive en MQ eller en mail adresse som en URI:

  • MQ: mq://[<username>:<password>@]host[:<port>]/<queuemanager>/<channel>/<queue>
  • Mail: mailto:person@server

Svar køen angives med et ReplyTo-tag der er defineret i SOSI-decoupling-component namespace. Eksempel:

... xmlns:dcc="http://www.sosi.dk/2007/07/decoupling-component-1.0.xds"  ...

      <dcc:DecouplingHeader>
         <dcc:DecouplingModel>queue_after_timeout</dcc:DecouplingModel>
         <dcc:Timeout>20</dcc:Timeout>
         <dcc:ReplyTo>mailto:hmadsen@svs.rsd.dk</dcc:ReplyTo>
      </dcc:DecouplingHeader>

Hvis der ikke er angivet en svarkø, vil svaret blive afleveret i en default svarkø eller default mail-addresse, som er defineret i afkoblingskomponenten. Der kan defineres en default svardestination for hvert system-id.

Status og fejl svar fra afkoblingskomponenten

For at overholde Den Gode WebService returneres både fejlbeskeder og status svar fra afkoblingskomponenten som DGWSFaults med følgende mulige FaultCodes:

medcom:FaultCode Forklaring
dcc_syntax_error Beskeden kunne ikke parses. Faultstring indeholder en beskrivelse af fejlen
dcc_general_error Der er opstået en fejl i afkoblingskomponenten. Faulstringen indeholder en beskrivelse af fejlen
dcc_timeout Timeout på forespørgslen under synchronous_timeout afkoblingsmodellen
dcc_queued Status meddelse om at kaldet bliver videreført som asynkront kald under asynchronous afkoblingsmodellen
dcc_queued_after_timeout Status meddelse på forespørgslen under queue_after_timeout afkoblingsmodellen om at der opstået et timeout, men at kaldet videreføres asynkront

Et eksempel på en fejl svar fra afkoblingskomponenten.

   <soapenv:Body>
      <soapenv:Fault>
         <faultcode>Server</faultcode>
         <detail>
            <medcom:FaultCode>dcc_syntax_error</medcom:FaultCode>
         </detail>
         <faultstring>
            org.xml.sax.SAXException: Unable to parse decoupling
            timeout as a number: 5 seconds
         </faultstring>
      </soapenv:Fault>
   </soapenv:Body>

Et fuldstændig eksempel på en request kan ses her.

-- ChristianGasser - 23 Oct 2007

Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r1 | More topic actions
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback