Async XDS.b
Problem Statement 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.
Key Use Cases Scenario 1: Async XDS allows for scenarios where actors are not simultaneously connected (off-line) making store-and-forward scenarios possible through the use of intermediaries. Scenario 2 (on demand query): In the integrated document source/document repository the XDS document is retrieved from off-line storage and persisted. Allowing for Async responses reduces the time that the document source is left hanging waiting for a response. Scenario 3: Async 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 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.
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
Summary Technical Approach Transactions The XDS.b Async profile uses the same transactions specified in the XDS.b profile without changing the message format. Async XDS changes the WSDL definition of the messages decoupling the request from the response, allowing the two to be executed asynchronously. 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 Async XDS, that is the same actor can expose both sync and async versions of the same transaction at the same time (on different ports/endpoints).
XDS.b Actors and Transactions Patient Identity Source Patient Identity Feed [ITI-8] Patient Identity Feed HL7v3 [ITI-44] Registry Stored Query [ITI-18] Document Registry Document Consumer Register Document Set-b [ITI-42] Provide and Register Document Set-b [ITI-41] Retrieve Document Set [ITI-43] Document Source Document Repository Integrated Document Source/Repository
Provide and Register Document Set-b Sync Provide and Register Document Set-b [ITI-41] Document Source Document Repository
Provide and Register Document Set-b ASync Provide and Register Document Set-b Request Document Source Document Repository Provide and Register Document Set-b Response
Async XDS.b Actors and Transactions Patient Identity Source Patient Identity Feed [ITI-8] Patient Identity Feed HL7v3 [ITI-44] Registry Stored Query Request [ITI-18 Request] Document Registry Document Consumer New WSDL Registry Stored Query Response [ITI-18 Response] Register Document Set-b Response [ITI-42 Response] Register Document Set-b Request [ITI-42 Request] Retrieve Document Set Request [ITI-43 Request] Provide and Register Document Set-b Request [ITI-41 Request] Document Source New WSDL Document Repository Provide and Register Document Set-b Response Request [ITI-41 Response] Retrieve Document Set Response [ITI-43 Response] Integrated Document Source/Repository
Transactions by Actors 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] Registry Stored Query Response [ITI-18-Response] Retrieve Document Set Response [ITI-43-Response]
Sample WSDL Update Document Repository Async (Updated) Document Repository Sync <portType name="DocumentRepository_PortType"> <operation name="DocumentRepository_ProvideAndRegisterDocumentSet-b"> <input message="ihe:ProvideAndRegisterDocumentSet-b_Message" wsaw:Action="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b"/> <output message="ihe:ProvideAndRegisterDocumentSet-bResponse_Message" wsaw:Action="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-bResponse"/> </operation> <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"/> </portType> Document Repository Async (Updated) <portType name="DocumentRepository_PortType"> <operation name="DocumentRepository_ProvideAndRegisterDocumentSet-b(a)"> <input message="ihe:ProvideAndRegisterDocumentSet-b_Message" wsaw:Action="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b"/> </operation> <operation name="DocumentRepository_RetrieveDocumentSet(a)"> <input message="ihe:RetrieveDocumentSet_Message" wsaw:Action="urn:ihe:iti:2007:RetrieveDocumentSet"/> </portType> Document Source Async (New) <portType name="DocumentSource_PortType"> <operation name="DocumentSource_ProvideAndRegisterDocumentSet-b(a)"> <input message="ihe:ProvideAndRegisterDocumentSet-bResponse_Message" wsaw:Action="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-bResponse"/> </operation> </portType>
How SOAP Headers Change Document Source Sync - ProvideAndRegisterDocumentSet-b Request <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://www.w3.org/2005/08/addressing"> <soap:Header> <wsa:Action soap:mustUnderstand="1">urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b</wsa:Action> <wsa:MessageID>urn:uuid:67cd539a-87ca-2684-4e54-00016c82368a</wsa:MessageID> <wsa:ReplyTo> <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address> </wsa:ReplyTo> <wsa:To soap:mustUnderstand="1">http://localhost:9080/XDS/RepositoryReceiver</wsa:To> </soap:Header> <soap:Body> </soap:Body> </soap:Envelope> Document Source Async - ProvideAndRegisterDocumentSet-b Request (Updated) <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://www.w3.org/2005/08/addressing"> <soap:Header> <wsa:Action soap:mustUnderstand="1">urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b</wsa:Action> <wsa:MessageID>urn:uuid:67cd539a-87ca-2684-4e54-00016c82368a</wsa:MessageID> <wsa:ReplyTo> <wsa:Address> http://192.168.2.4:9080/XDS/DocumentSourceReceiver</wsa:Address> </wsa:ReplyTo> <wsa:To soap:mustUnderstand="1">http://localhost:9080/XDS/RepositoryReceiver</wsa:To> </soap:Header> <soap:Body> </soap:Body> </soap:Envelope>
How SOAP Headers Change (2) Document Repository - ProvideAndRegisterDocumentSet-b Response (New) <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://www.w3.org/2005/08/addressing"> <soap:Header> <wsa:Action soap:mustUnderstand="1">urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b</wsa:Action> <wsa:MessageID>urn:uuid:aaaabbbb-cccc-dddd-eeee-wwwwwwwwwww</wsa:MessageID> <wsa:RelatesTo>urn:uuid:67cd539a-87ca-2684-4e54-00016c82368a</wsa:RelatesTo> <wsa:To soap:mustUnderstand="1">http://localhost:9080/XDS/SourceReceiver</wsa:To> </soap:Header> <soap:Body> </soap:Body> </soap:Envelope>
Enabled/Enhanced Scenarios
Store & Forward, Offline Request Queue Provide and Register Document Set-b Request Document Source Document Repository Provide and Register Document Set-b Response Response Queue
Reliable Messaging Document Source Document Repository Provide and Register Document Set-b Request Document Source Document Repository Provide and Register Document Set-b Response
XCA Actors and Transactions Initiating Community Responding Community Registry Stored Query [ITI-18] Retrieve Document Set Request Document Consumer Retrieve Document Set [ITI-43] Cross Gateway Query [ITI-38] Retrieve Document Set Response Initiating Gateway Responding Gateway Cross Gateway Retrieve [ITI-39]
Discussion