Difference between revisions of "Cross-Enterprise Document Sharing Implementation"

From IHE Wiki
Jump to navigation Jump to search
 
(7 intermediate revisions by 2 users not shown)
Line 5: Line 5:
  
  
== Example Provide and Register Document Set transaction ==
+
== Example Transactions ==
  
The following is an example of a Provide and Register Document Set transaction.  This was created from a package capture of the [http://ihewiki.wustl.edu/wiki/index.php/XDS_Main_Page Public Registry]. The original was chunk encoded, as signaled by the HTTP header ''Transfer-Encoding: chunked''. This encoding header or a Content-Length header is needed to make it valid HTTP again. The bulk of the metadata has been removed to make the structure of the submission more visible.
+
=== Provide and Register Document Set ===
 +
 
 +
The following is an example of a Provide and Register Document Set transaction. The process for capturing it and a discussion of what has been remvoved is available [[#Register Document Set|here]].
  
 
Request
 
Request
Line 79: Line 81:
  
 
</pre>
 
</pre>
 +
 +
=== Register Document Set ===
 +
 +
The following is an example of a Register Document Set transaction. The process for capturing it and a discussion of what has been remvoved is available [[#Register Document Set|here]]. The example is show twice, once initiated with the SAAJ package (the old xdstest tool used through the 2007 Connectathon) and once with Axis2 (the newer xdstest2 tool used starting with the 2008 Connectathon). SAAJ represents an older interpretation of SOAP coding and Axis2 the newer.  They are sometimes different enough to cause problems for implementer.
 +
 +
Request (Axis2/xdstest2) This originally had a ''Transfer-Encoding: chunked'' and chunk delimeters
 +
 +
<pre>
 +
POST /axis2/services/xdsregistrya HTTP/1.1
 +
Content-Type: text/xml; charset=UTF-8
 +
SOAPAction: "urn:anonOutInOp"
 +
User-Agent: Axis2
 +
Host: localhost:9087
 +
 +
<?xml version='1.0' encoding='UTF-8'?>
 +
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
 +
    <soapenv:Body>
 +
        <rs:SubmitObjectsRequest xmlns:rs="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1">
 +
            <rim:LeafRegistryObjectList xmlns:rim="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1">
 +
                <ExtrinsicObject xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1" id="Document01"
 +
                    mimeType="text/xml" objectType="urn:uuid:7edca82f-054d-47f2-a032-9b2a5b5186c1"> </ExtrinsicObject>
 +
                <RegistryPackage xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1"
 +
                    id="SubmissionSet01"> </RegistryPackage>
 +
                <Association xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1"
 +
                    associationType="HasMember" sourceObject="SubmissionSet01"
 +
                    targetObject="Document01" id="ID_2732257_1">
 +
                    <Slot name="SubmissionSetStatus">
 +
                        <ValueList>
 +
                            <Value>Original</Value>
 +
                        </ValueList>
 +
                    </Slot>
 +
                </Association>
 +
            </rim:LeafRegistryObjectList>
 +
        </rs:SubmitObjectsRequest>
 +
    </soapenv:Body>
 +
</soapenv:Envelope>
 +
</pre>
 +
 +
Request (SAAJ/xdstest) This originally had a ''Content-Length'' header.
 +
 +
<pre>
 +
POST /axis2/services/xdsregistrya HTTP/1.1
 +
Content-Type: text/xml; charset="utf-8"
 +
SOAPAction: ""
 +
Cache-Control: no-cache
 +
Pragma: no-cache
 +
User-Agent: Java/1.5.0_07
 +
Host: localhost:9087
 +
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
 +
Connection: keep-alive
 +
 +
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
 +
    <SOAP-ENV:Header> </SOAP-ENV:Header>
 +
    <SOAP-ENV:Body>
 +
        <rs:SubmitObjectsRequest xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1"
 +
            xmlns:rim="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1"
 +
            xmlns:rs="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1"
 +
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 +
            <LeafRegistryObjectList>
 +
                <ExtrinsicObject id="Document01" mimeType="text/xml"
 +
                    objectType="urn:uuid:7edca82f-054d-47f2-a032-9b2a5b5186c1">
 +
                </ExtrinsicObject>
 +
                <RegistryPackage id="SubmissionSet01">
 +
                </RegistryPackage>
 +
                <Association associationType="HasMember" sourceObject="SubmissionSet01"
 +
                    targetObject="Document01">
 +
                    <Slot name="SubmissionSetStatus">
 +
                        <ValueList>
 +
                            <Value>Original</Value>
 +
                        </ValueList>
 +
                    </Slot>
 +
                </Association>
 +
            </LeafRegistryObjectList>
 +
        </rs:SubmitObjectsRequest>
 +
    </SOAP-ENV:Body>
 +
</SOAP-ENV:Envelope>
 +
</pre>
 +
 +
Response (Axis2) Originally Chunked encoding
 +
 +
<pre>
 +
HTTP/1.1 200 OK
 +
Server: Apache-Coyote/1.1
 +
Content-Type: text/xml;charset=UTF-8
 +
Date: Fri, 28 Dec 2007 17:30:05 GMT
 +
 +
<?xml version='1.0' encoding='UTF-8'?>
 +
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
 +
    <soapenv:Body>
 +
        <rs:RegistryResponse xmlns:rs="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1"
 +
            status="Failure">
 +
            <rs:RegistryErrorList>
 +
                <rs:RegistryError
 +
                    codeContext="Document Document01 does not have the required slot URI"
 +
                    errorCode="XDSRegistryMetadataError" location="Attribute.java" severity="Error"
 +
                />
 +
            </rs:RegistryErrorList>
 +
        </rs:RegistryResponse>
 +
    </soapenv:Body>
 +
</soapenv:Envelope>
 +
</pre>
 +
 +
=== How this example was produced ===
 +
 +
This was created using the package capture program TCPMon.  The traces are of the [http://ihewiki.wustl.edu/wiki/index.php/XDS_Main_Page Public Registry]. The original was chunk encoded, as signaled by the HTTP header ''Transfer-Encoding: chunked''. This header and the related changes to the body have been removed for readability. This encoding header or a Content-Length header is needed to make it valid HTTP again. The bulk of the metadata has been removed to make the structure of the submission more visible. Unless otherwise noted, the transaction was initiated using the XDS testing utility [http://ihewiki.wustl.edu/wiki/index.php/XDS_Main_Page#Testing_Tools xdstest2].
  
 
==Toolkits==
 
==Toolkits==
Line 101: Line 208:
  
 
==Sample Data==
 
==Sample Data==
XDS Schema version 0.4 (http://hcxw2k1.nist.gov/XdsDocs/Schema/version_0_4/) - The Schema for XDS is new this year. It will be updated as problems are found and fixed. (Last updated 8 Oct 05)
+
XDS Schema version 0.4 (http://hcxw2k1.nist.gov:9080/XdsDocs/Schema/version_0_4/) - The Schema for XDS is new this year. It will be updated as problems are found and fixed. (Last updated 8 Oct 05)
  
Registry Initialization metadata  (http://hcxw2k1.nist.gov/XdsDocs/Initialize/) - This file contains a registry SubmitObjectsRequest that loads into a registry the datatypes and coding schemes necessary to support XDS. To view the contents of this initialization in table form, see XDS UUIDs. This download and table have been updated for the January 2007 Connectathon
+
Registry Initialization metadata  (http://hcxw2k1.nist.gov:9080/XdsDocs/Initialize/) - This file contains a registry SubmitObjectsRequest that loads into a registry the datatypes and coding schemes necessary to support XDS. To view the contents of this initialization in table form, see XDS UUIDs. This download and table have been updated for the January 2007 Connectathon
  
Example XDS Metadata  (http://hcxw2k1.nist.gov/XdsDocs/Example_Metadata/) - This is an example of a submission which includes:
+
Example XDS Metadata  (http://hcxw2k1.nist.gov:9080/XdsDocs/Example_Metadata/) - This is an example of a submission which includes:
  
 
* A Submission Set (XDSSubmissionSet)
 
* A Submission Set (XDSSubmissionSet)
Line 119: Line 226:
 
==See Also==
 
==See Also==
  
The [[Frameworks#IT Infrastructure Technical Framework| IT Infrastructure Technical Framework]] is the official master document for this Profile. ''<Replace Radiology Technical Framework with the Trial Implementation Supplement or Public Comment Supplement as appropriate.>''
+
The [[IT Infrastructure]] Domain manages this profile.
  
''<Replace the Template links below with links to the actual pages for the Profile>''
+
The [http://www.ihe.net/Technical_Framework/index.cfm#IT ITI Technical Framework] is the official master document for this Profile.
  
The [[Profile Template]] is an overview of the Profile.
+
The [[Cross Enterprise Document Sharing]] page is an overview of the Profile.  
  
 
The [[Profile FAQ Template]] answers typical questions about what the Profile does.
 
The [[Profile FAQ Template]] answers typical questions about what the Profile does.

Latest revision as of 22:09, 9 December 2008


<Most of the contents of this page shamelessly copied and misarranged from Bill's excellent Wiki at NIST>


Example Transactions

Provide and Register Document Set

The following is an example of a Provide and Register Document Set transaction. The process for capturing it and a discussion of what has been remvoved is available here.

Request

POST /axis2/services/repositoryAonedoc HTTP/1.1
Content-Type: multipart/related; boundary=MIMEBoundaryurn_uuid_181AA8ECA16E16E2D61198809912936; type="text/xml"; start="0.urn:uuid:181AA8ECA16E16E2D61198809912937@apache.org"
SOAPAction: "SubmitObjectsRequest"
User-Agent: Axis2
Host: localhost:9087

--MIMEBoundaryurn_uuid_181AA8ECA16E16E2D61198809912936
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID: <0.urn:uuid:181AA8ECA16E16E2D61198809912937@apache.org>

<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <rs:SubmitObjectsRequest xmlns:rs="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1">
            <rim:LeafRegistryObjectList xmlns:rim="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1">
                <ExtrinsicObject xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1" id="Document01"
                    mimeType="text/plain" objectType="urn:uuid:7edca82f-054d-47f2-a032-9b2a5b5186c1"> 
                </ExtrinsicObject>
                <RegistryPackage xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1"
                    id="SubmissionSet01"> 
                </RegistryPackage>
                <Association xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1"
                    associationType="HasMember" sourceObject="SubmissionSet01"
                    targetObject="Document01" id="ID_12928619_2">
                    <Slot name="SubmissionSetStatus">
                        <ValueList>
                            <Value>Original</Value>
                        </ValueList>
                    </Slot>
                </Association>
            </rim:LeafRegistryObjectList>
        </rs:SubmitObjectsRequest>
    </soapenv:Body>
</soapenv:Envelope>


--MIMEBoundaryurn_uuid_181AA8ECA16E16E2D61198809912936
Content-Type: text/plain
Content-Transfer-Encoding: binary
Content-ID: <Document01>

This is my document.

It is great!


--MIMEBoundaryurn_uuid_181AA8ECA16E16E2D61198809912936--


Response

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=UTF-8
Date: Fri, 28 Dec 2007 02:45:17 GMT

<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <rs:RegistryResponse xmlns:rs="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1"
            status="Success"/>
    </soapenv:Body>
</soapenv:Envelope>

Register Document Set

The following is an example of a Register Document Set transaction. The process for capturing it and a discussion of what has been remvoved is available here. The example is show twice, once initiated with the SAAJ package (the old xdstest tool used through the 2007 Connectathon) and once with Axis2 (the newer xdstest2 tool used starting with the 2008 Connectathon). SAAJ represents an older interpretation of SOAP coding and Axis2 the newer. They are sometimes different enough to cause problems for implementer.

Request (Axis2/xdstest2) This originally had a Transfer-Encoding: chunked and chunk delimeters

POST /axis2/services/xdsregistrya HTTP/1.1
Content-Type: text/xml; charset=UTF-8
SOAPAction: "urn:anonOutInOp"
User-Agent: Axis2
Host: localhost:9087

<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <rs:SubmitObjectsRequest xmlns:rs="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1">
            <rim:LeafRegistryObjectList xmlns:rim="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1">
                <ExtrinsicObject xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1" id="Document01"
                    mimeType="text/xml" objectType="urn:uuid:7edca82f-054d-47f2-a032-9b2a5b5186c1"> </ExtrinsicObject>
                <RegistryPackage xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1"
                    id="SubmissionSet01"> </RegistryPackage>
                <Association xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1"
                    associationType="HasMember" sourceObject="SubmissionSet01"
                    targetObject="Document01" id="ID_2732257_1">
                    <Slot name="SubmissionSetStatus">
                        <ValueList>
                            <Value>Original</Value>
                        </ValueList>
                    </Slot>
                </Association>
            </rim:LeafRegistryObjectList>
        </rs:SubmitObjectsRequest>
    </soapenv:Body>
</soapenv:Envelope>

Request (SAAJ/xdstest) This originally had a Content-Length header.

POST /axis2/services/xdsregistrya HTTP/1.1
Content-Type: text/xml; charset="utf-8"
SOAPAction: ""
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Java/1.5.0_07
Host: localhost:9087
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header> </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <rs:SubmitObjectsRequest xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1"
            xmlns:rim="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1"
            xmlns:rs="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <LeafRegistryObjectList>
                <ExtrinsicObject id="Document01" mimeType="text/xml"
                    objectType="urn:uuid:7edca82f-054d-47f2-a032-9b2a5b5186c1">
                </ExtrinsicObject>
                <RegistryPackage id="SubmissionSet01">
                </RegistryPackage>
                <Association associationType="HasMember" sourceObject="SubmissionSet01"
                    targetObject="Document01">
                    <Slot name="SubmissionSetStatus">
                        <ValueList>
                            <Value>Original</Value>
                        </ValueList>
                    </Slot>
                </Association>
            </LeafRegistryObjectList>
        </rs:SubmitObjectsRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Response (Axis2) Originally Chunked encoding

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=UTF-8
Date: Fri, 28 Dec 2007 17:30:05 GMT

<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <rs:RegistryResponse xmlns:rs="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1"
            status="Failure">
            <rs:RegistryErrorList>
                <rs:RegistryError
                    codeContext="Document Document01 does not have the required slot URI"
                    errorCode="XDSRegistryMetadataError" location="Attribute.java" severity="Error"
                />
            </rs:RegistryErrorList>
        </rs:RegistryResponse>
    </soapenv:Body>
</soapenv:Envelope>

How this example was produced

This was created using the package capture program TCPMon. The traces are of the Public Registry. The original was chunk encoded, as signaled by the HTTP header Transfer-Encoding: chunked. This header and the related changes to the body have been removed for readability. This encoding header or a Content-Length header is needed to make it valid HTTP again. The bulk of the metadata has been removed to make the structure of the submission more visible. Unless otherwise noted, the transaction was initiated using the XDS testing utility xdstest2.

Toolkits

<List public domain toolkits for this profile>

Reference Implementations

freebXML open source implementation on Source Forge.

Wiki devoted to Open Source implementation of standard

Test Tools

Discussion and documentation of the testing of XDS.a, XDS.b, XDM, XDR, XCA (together known as XD*) can be found [here].

Implementation FAQ

The XDS-FAQ contains Frequently Asked Questions about the XDS Profile

Testing Methods

Sample Data

XDS Schema version 0.4 (http://hcxw2k1.nist.gov:9080/XdsDocs/Schema/version_0_4/) - The Schema for XDS is new this year. It will be updated as problems are found and fixed. (Last updated 8 Oct 05)

Registry Initialization metadata (http://hcxw2k1.nist.gov:9080/XdsDocs/Initialize/) - This file contains a registry SubmitObjectsRequest that loads into a registry the datatypes and coding schemes necessary to support XDS. To view the contents of this initialization in table form, see XDS UUIDs. This download and table have been updated for the January 2007 Connectathon

Example XDS Metadata (http://hcxw2k1.nist.gov:9080/XdsDocs/Example_Metadata/) - This is an example of a submission which includes:

  • A Submission Set (XDSSubmissionSet)
  • A Document (XDSDocumentEntry) contained in the Submission Set
  • A Folder (XDSFolder) contained in the Submission Set

Related Standards

OASIS committee that develops ebXML Registry standard

ebXML Registry Links points to a page maintained by the folks who work on the ebXML Registry standard

See Also

The IT Infrastructure Domain manages this profile.

The ITI Technical Framework is the official master document for this Profile.

The Cross Enterprise Document Sharing page is an overview of the Profile.

The Profile FAQ Template answers typical questions about what the Profile does.

The Profile Purchasing Template describes considerations when purchasing equipment to deploy this Profile.


This page is based on the Profile Implementation Template