Cross-Enterprise Document Sharing Implementation

From IHE Wiki
Revision as of 22:09, 9 December 2008 by Kevino (talk | contribs) (→‎See Also)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


<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