Difference between revisions of "Asynch XDS.b Profile Detailed"
Line 2: | Line 2: | ||
* Proposal Editor: ''Vassil Peytchev/Roberto Ruggeri'' | * Proposal Editor: ''Vassil Peytchev/Roberto Ruggeri'' | ||
− | * Profile Editor: | + | * Profile Editor: ''Teddy Bachour'' |
* Date: N/A (Wiki keeps history) | * Date: N/A (Wiki keeps history) | ||
* Version: N/A (Wiki keeps history) | * Version: N/A (Wiki keeps history) |
Revision as of 09:29, 21 February 2008
1. Proposed Profile: Asynch XDS.b
- Proposal Editor: Vassil Peytchev/Roberto Ruggeri
- Profile Editor: Teddy Bachour
- Date: N/A (Wiki keeps history)
- Version: N/A (Wiki keeps history)
- Domain: IT Infrastructure
Summary
IHE XDS.b implies synchronous communication between actors: document consumers, sources, registries and repositories. While this can work in a tightly controlled environment, it is generally sub-optimal in environments where multiple intermediaries are present or where a high latency occurs.
One of the standards at the basis of XDS.b, WS-Addressing, supports asynchronous communication by specifying the endpoint where responses should be sent (wsa:ReplyTo) and the correlation between request and response (wsa:MessageID).
This profile proposes a solution to allow for asynchronous communications among the XDS.b actors by levaraging the WS-Addressing standard.
2. The Problem
IHE XDS.b implies synchronous communication between actors: document consumers, sources, registries and repositories. While this can work in a tightly controlled environment, it is generally sub-optimal in environments where multiple intermediaries are present or where a high latency occurs.
3. Key Use Cases
Scenario 1: asynch xds allows for multiple responses for the same request: pagination of results (return x records at a time), streaming of documents (return x Kilobytes at a time)…
Scenario 2: asynch xds allows for scenarios where actors are not connected at the same time (off-line) making store-and-forward scenarios possible through the use of intermediaries.
Scenario 3: in the integrated document source/document repository the xds document (medical summary, allergy list…) is retrieved from off-line storage and persisted. Allowing for asynch responses reduces the time that the document source is left hanging waiting for a response
RR: edit this scenario #4 to rephrase the "waiting for" issue.
Scenario 4: in XCA the gateway can issue separate queries to the federated affinity domains in parallel without having to hang until each one is satisfied. Responses can be received asynchronously and collated for the requestor. The response time will be shortened as the results are retrieved in parallel instead of sequentially.
How it works: The XCA Initiating Gateway (IG) issues a request to the Receiving Gateway (RG) and hangs waiting for a response or for a timeout to occur. Once the response has been received the IG moves on to another RG and repeats the process.
How it should work: The IG issues queries to all known RG in parallel without waiting for an immediate response. Responses from the RGs are received from the IG on another port and correlated to the initial query via message IDs stored in the WS-Addressing headers. Requests that timeout do not bloik the IG.
4. Standards & Systems
The XDS.b Asynchronous Profile uses the same standards as the XDS.b Profile.
Key enabler for Async communication is WS-Addressing that allows for:
- specification of the reply-to endpoint where responses should be sent
- specification of the SOAP message id to allow for correlation of responses to the original requests
5. Technical Approach
The XDS.b Asynch (AXDS) profile uses the same transactions specified in the XDS.b Profile without changing the message format. AXDS changes the WSDL definition of the messages decoupling the request from the response, allowing the two to be executed asynchronously.
For each transaction in XDS.b two transactions will be defined:
- one one-way transaction with the same input message of the original XDS.b transaction with no response message. This transaction is exposed by the destination actor
- one one-way transaction with the input message format being the same as the output message of the original XDS.b transaction with no response message. This transaction is exposed by the source actor
In practice this translates into the following for the RetrieveDocumentSet [ITI-43] transaction:
Before:
Document Repository WSDL:
<message name="RetrieveDocumentSet_Message"> <documentation>Retrieve Document Set</documentation> <part name="body" element="ihe:RetrieveDocumentSetRequest"/> </message> <message name="RetrieveDocumentSetResponse_Message"> <documentation>Retrieve Document Set Response</documentation> <part name="body" element="ihe:RetrieveDocumentSetResponse"/> </message> ... <operation name="DocumentRepository_RetrieveDocumentSet"> <input message="ihe:RetrieveDocumentSet_Message" wsaw:Action="urn:ihe:iti:2007:RetrieveDocumentSet"/> <output message="ihe:RetrieveDocumentSetResponse_Message" wsaw:Action="urn:ihe:iti:2007:RetrieveDocumentSetResponse"/> </operation> ...
After:
Document Repository WSDL:
<message name="RetrieveDocumentSet_Message"> <documentation>Retrieve Document Set</documentation> <part name="body" element="ihe:RetrieveDocumentSetRequest"/> </message> ... <operation name="DocumentRepository_RetrieveDocumentSet"> <input message="ihe:RetrieveDocumentSet_Message" wsaw:Action="urn:ihe:iti:2007:RetrieveDocumentSet"/> </operation> ...
Document Consumer WSDL:
<message name="RetrieveDocumentSetResponse_Message"> <documentation>Retrieve Document Set Response</documentation> <part name="body" element="ihe:RetrieveDocumentSetResponse"/> </message> ... <operation name="DocumentRepository_RetrieveDocumentSet"> <input message="ihe:RetrieveDocumentSetResponse_Message" wsaw:Action="urn:ihe:iti:2007:RetrieveDocumentSetResponse"/> </operation> ...
As shown in the previous sample, new WSDL will have to be defined for the Document Source and Document Consumer actors.
Existing actors
While the actors defined in XDS.b still maintain the same role, the technical details of how transactions are implemented will differ.
New actors
No new actors are necessary.
Existing transactions
Existing transactions in XDS.b will not be touched. XDS.b can be coupled with AXDS, that is the same actor can expose both synch and asych versions of the same transaction at the same time (on different ports/endpoints).
New transactions
Requests and responses for the existing XDS.b transactions will be decoupled, creating new transactions. This is a list of transactions by actor:
- Document Source
- Provide and Register Document Set-b Response [ITI-41-Response]
- Document Repository
- Provide and Register Document Set-b Request [ITI-41-Request]
- Register Document Set-b Response [ITI-42-Response]
- Retrieve Document Set Request [ITI-43-Request]
- Document Registry
- Register Document Set-b Request [ITI-42-Request]
- Registry Stored Query Request [ITI-18-Request]
- Document Source
- Registry Stored Query Response [ITI-18-Response]
- Retrieve Document Set Response [ITI-43-Response]
Requests and responses for the new transactions follow the same formats as the request and responses for the corresponding XDS.b transactions.
Profiles that reuse the XDS.b transactions such as XCA, will inherit the ability to use the asynch versions.
Impact on existing integration profiles
No impact on existing XDS.b profiles. XCA will take advantage of the new asynch transactions.
New integration profiles needed
No new integration profiles are needed.
6. Support & Resources
AXDS is very applicable to XCA and is at the basis of IHE XDS Publish/Subscribe Profile.
7. Risks
AXDS is self-contained and does not require changes in current XDS.b implementations.
8. Open Issues
- XDR off-line mode can now be updated to use the AXDS
9. Tech Cmte Evaluation
<The technical committee will use this area to record details of the effort estimation, etc.>
Effort Evaluation (as a % of Tech Cmte Bandwidth):
- 35% for ...
Responses to Issues:
- See italics in Risk and Open Issue sections
Candidate Editor:
- TBA