XDS Transactions
From IHEWiki
Contents |
Provide and Register Document Set
This transaction uses
- SwA (Soap with Attachments) to convey both metadata and attached documents from the Document Source actor to the Document Repository actor
- ebRIM version 2.1 for coding the metadata
Register Document Set
This transaction uses
- SOAP to convey metadata from the Document Repository actor to the Document Registry actor
- ebRIM version 2.1 for coding the metadata
Provide and Register Document Set-b
This transaction uses
- MTOM/XOP to convey both metadata and attached documents from the Document Source actor to the Document Repository actor
- ebRIM version 3.0 to code the metadata
Register Document Set-b
This transaction uses
- SOAP to convey metadata from the Document Repository actor to the Document Registry actor
- ebRIM version 3.0 for coding the metadata
Retrieve Document Set
This XDS.b transaction uses
- SOAP request and response
- Can request multiple documents from same repository (when used in XDS profile and sent to a Document Repository actor)
- MTOM or MTOM/XOP encoding for RetrieveDocumentSetResponse message
Registry Stored Query
This transaction is the same for XDS.a and XDS.b.
Some typical responses are:
Query Response for ObjectRefs
<query:AdhocQueryResponse xmlns:query="urn:oasis:names:tc:ebxml-regrep:xsd:query:3.0" status="urn:oasis:names:tc:
ebxml-regrep:ResponseStatusType:Success">
<rim:RegistryObjectList xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0">
<rim:ObjectRef id="urn:uuid:e66e0376-3a2f-4776-bd15-e4fbd860f5cf" home="" />
<rim:ObjectRef id="urn:uuid:9c60a57d-c4fe-487b-8523-ed11f0a4a128" home="" />
<rim:ObjectRef id="urn:uuid:8acd0982-d9a3-4495-8db9-ef64971d3659" home="" />
<rim:ObjectRef id="urn:uuid:c61f7643-4405-4654-ad46-cd3a7e229cf1" home="" />
<rim:ObjectRef id="urn:uuid:29e7a1c5-ca26-4e9b-9463-ac4fa7a70292" home="" />
</rim:RegistryObjectList>
</query:AdhocQueryResponse>
Query Response for LeafClass
<query:AdhocQueryResponse xmlns:query="urn:oasis:names:tc:ebxml-regrep:xsd:query:3.0" status="urn:oasis:names:tc:
ebxml-regrep:ResponseStatusType:Success">
<rim:RegistryObjectList xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0">
<rim:ExtrinsicObject id="urn:uuid:e66e0376-3a2f-4776-bd15-e4fbd860f5cf" objectType="urn:uuid:7edca82f-054d-47f2
-a032-9b2a5b5186c1" status="urn:oasis:names:tc:ebxml-regrep:StatusType:Approved" mimeType="text/xml" isOpaque="false"
home="" lid="urn:uuid:e66e0376-3a2f-4776-bd15-e4fbd860f5cf">
<rim:Slot name="creationTime">
<rim:ValueList>
<rim:Value>20061224</rim:Value>
</rim:ValueList>
</rim:Slot>
<rim:Slot name="hash">
<rim:ValueList>
<rim:Value>3j456da</rim:Value>
</rim:ValueList>
</rim:Slot>
<rim:Slot name="languageCode">
<rim:ValueList>
<rim:Value>en-us</rim:Value>
</rim:ValueList>
</rim:Slot>
...
</rim:RegistryObjectList>
</query:AdhocQueryResponse>
Query response with errors
<query:AdhocQueryResponse xmlns:query="urn:oasis:names:tc:ebxml-regrep:xsd:query:3.0" status="urn:oasis:names:tc:ebxml-regrep:ResponseStatusType:Failure">
<rs:RegistryErrorList xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0">
<rs:RegistryError codeContext="Required parameter, $XDSDocumentEntryPatientId, not present in query request" errorCode="XDSRegistryError" location="StoredQuery.java" severity="Error" />
<rs:RegistryError codeContext="Metadata Error: Metadata Validation error present" errorCode="XDSRegistryError" location="Exception thrown: gov.nist.registry.common2.exception.MetadataValidationException
Metadata Validation error presen
t
gov.nist.registry.common2.exception.MetadataValidationException: Metadata Validation error present
at gov.nist.registry.ws.sq.FindDocuments.<init>(FindDocuments.java:52)
at gov.nist.registry.ws.AdhocQueryRequest.stored
_query(AdhocQueryRequest.java:217)
at gov.nist.registry.ws.AdhocQueryRequest.AdhocQueryRequestInternal(AdhocQueryRequest.java:152)
at gov.nist.registry.ws.AdhocQueryRequest.adhocQueryRequest(AdhocQueryRequest.java:79)
at gov.nist.registry.ws.serviceclasses.RegistryB.AdhocQueryRequest(RegistryB.java:52)
at sun.reflect.GeneratedMethodAccessor52.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm
pl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at gov.nist.registry.ws.receivers.AbstractXDSRawXMLINoutMessageReceiver.invokeBusinessLogic(AbstractXDSRawXMLINoutMessageReceiver.java:96)
at org.apache.a
xis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96)
at org.apache.axis2.engine.Axi
sEngine.receive(AxisEngine.java:145)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
	
;at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:26
9)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.Standar
dContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at o
rg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor
.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:613)
" severity="Error" />
</rs:RegistryErrorList>
<rim:RegistryObjectList xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0" />
</query:AdhocQueryResponse>
Reporting Errors
All XDS transactions, except Retrieve Document, report errors using the same RegistryErrorList XML structure. A version 2.1 example of this structure, shown inside a RegistryResponse message, is:
<RegistryResponse
xmlns="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1"
status="Failure">
<RegistryErrorList>
<RegistryError
severity="Error"
errorCode="XDSSqlError"
codeContext="SqlRepair: XDS does not allow SQL queries using SELECT *, must be SELECT something.id"
location="Stack trace or other location information goes here" />
</RegistryErrorList>
</RegistryResponse>
A version 3.0 example is:
<RegistryResponse
xmlns="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0"
status="urn:oasis:names:tc:ebxml-regrep:ResponseStatusType:Failure">
<RegistryErrorList>
<RegistryError
severity="urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Error"
errorCode="XDSPatientIdDoesNotMatch"
codeContext="Patient ID in Document (Document1) does not match Submission Set"
location="Stack trace or other location information goes here" />
</RegistryErrorList>
</RegistryResponse>
This material is covered in section 4.1.13 Error Reporting of Volume 2 of the Technical Framework.
Some things to note:
- The RegistryErrorList can contain multiple RegistryError elements (it must contain at least 1).
- A single logical error may generate multiple RegistryError elements. This depends on the implementation and is not controlled by the profile.
- The use of the PartialSuccess status is available to implementers of the Cross-Community Access (XCA) profile only. It is not to be used within the context of XDS. A Change Proposal has been initiated to make this more obvious. It is specified indirectly in tables 4.1-12 through 4.1-15.