Difference between revisions of "Metadata Update"

From IHE Wiki
Jump to navigation Jump to search
Line 1: Line 1:
This page contains examples supporting the Metadata Update profile.
+
This page contains examples supporting the Metadata Update profile. These examples show only enough metadata to explain the operation of the update.  Many of these metadata objects are incomplete.
  
== OASIS ebXML Registry 3.0 support for Metadata Versioning ==
+
== Update DocumentEntry Metadata ==
  
This work is enabled by new metadata management features introduced into version 3.0 of the ebXML Registry standard (ebRIM and ebRS). The key new concept is the ability to maintain multiple copies or versions of a metadata object, such as an ExtrinsicObject, which represents in metadata a single real document in a repository. In terminology of the standard, all objects stored in the registry are called Registry Objects.  A new concept is the Registry Object Instance, a specific version of a Registry Object. Collectively, all the versions of a Registry Object are called a Logical Registry Object.
+
Trigger object shown with SubmissionSet HasMember Association. Note the PreviousVersion slot in the Association.
  
All Registry Objects are identifiable by their id attribute. All objects in the registry must have a unique value for their id attribute. This sense of identity is maintained when metadata versioning is introduced. To allow a collection of registry objects to be grouped together and be identified as versions of the same object, two new attributes are introduced: the Logical ID and the VersionInfo element. While all  objects must have unique value for their id attribute to maintain their identity, all objects that are versions of the same logical object have the same logical id or lid attribute.
+
<pre>
 +
  <ExtrinsicObject id="Document01"
 +
        lid="urn:uuid:06b5ba28-4b6e-47ec-b3f0-d42e2ebd637a">
  
The simplest form of an ExtrinsicObject, as specified in ebRIM 2.1, looks like:
+
        <!-- UniqueId attribute -->
 +
        <ExternalIdentifier
 +
            identificationScheme="urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab"
 +
            value="1.2009.0827.08.33.5016"
 +
            objectType="urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:ExternalIdentifier"
 +
            id="urn:uuid:a89a35db-cb9c-4e9e-9f9a-e55fda5c9475"
 +
            registryObject="Document01">
 +
            <Name>
 +
                <LocalizedString value="XDSDocumentEntry.uniqueId"/>
 +
            </Name>
 +
        </ExternalIdentifier>
 +
    </ExtrinsicObject>
  
<pre>
+
    <Association id="urn:uuid:883e0490-ff31-4753-8133-945b73d99d94"
<ExtrinsicObject id=”urn:uuid:123...”>     
+
        objectType="urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:Association"
</ExtrinsicObject>
+
        associationType="urn:oasis:names:tc:ebxml-regrep:AssociationType:HasMember"
 +
        sourceObject="SubmissionSet01"
 +
        targetObject="Document01">
 +
        <Slot name="SubmissionSetStatus">
 +
            <ValueList>
 +
                <Value>Original</Value>
 +
            </ValueList>
 +
        </Slot>
 +
        <Slot name="PreviousVersion">
 +
            <ValueList>
 +
                <Value>1</Value>
 +
            </ValueList>
 +
        </Slot>
 +
     </Association>
 
</pre>
 
</pre>
  
containing only an id attribute giving it its identity. Note that we use a shortened format for UUIDs to improve readability. In ebRIM 3.0 this same object could be coded as:
+
Precondition object
  
 
<pre>
 
<pre>
<ExtrinsicObject id=”urn:uuid:123...” lid=”urn:uuid:123...”>     
+
    <ExtrinsicObject  
</ExtrinsicObject>
+
        id="urn:uuid:e0985823-dc50-45a5-a6c8-a11a829893bd"
 +
        lid="urn:uuid:06b5ba28-4b6e-47ec-b3f0-d42e2ebd637a"
 +
        status="urn:oasis:names:tc:ebxml-regrep:StatusType:Approved">
 +
       
 +
        <VersionInfo versionName="1"/>
 +
       
 +
        <!-- UniqueId attribute -->
 +
        <ExternalIdentifier
 +
            identificationScheme="urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab"
 +
            value="1.2009.0827.08.33.5016"
 +
            objectType="urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:ExternalIdentifier"
 +
            id="urn:uuid:7ae00a8d-0152-46d9-bc66-aae8ab4e2edd"             
 +
            registryObject="urn:uuid:e0985823-dc50-45a5-a6c8-a11a829893bd">
 +
            <Name>
 +
                <LocalizedString value="XDSDocumentEntry.uniqueId"/>
 +
            </Name>
 +
        </ExternalIdentifier>
 +
     </ExtrinsicObject>
 
</pre>
 
</pre>
  
In this version of the standard, the registry object still maintains its identity by having a unique value for the id attribute. The presence of the lid attribute having the same value as the id attribute indicates that this is the first, the original, version of the object. Current XDS, XDS.a and XDS.b, return this format from a Stored Query since that transaction is coded in ebRIM 3.0.  Future versions of an object, that is version 2..n of an object, will have new values for the id attribute but the original value for the lid attribute. The value of the lid attribute is always equal to the value of the id attribute of the first version of the registry object. To query, in SQL, for all versions of this ExtrinsicObject one would use an SQL clause of
+
Trigger object and SubmissionSet HasMember Association as saved to registry. Note:
 
+
* Version has been filled in
<pre>
+
* id attributes have had UUIDs generated
lid='urn:uuid:123...'
+
* Status attribute has been filled in
</pre>
 
  
and each ExtrinsicObject returned would have the same value for the lid attribute but a different value for its id attribute.
 
  
Note that while the lid attribute labels the various versions of a registry object and the id attribute allows each version to be addressable by being unique, these two attributes are inadequate for determining which is the first version, the second version, etc. For this the standard introduces the VersionInfo element which looks like:
 
  
 
<pre>
 
<pre>
<VersionInfo versionName=”2” comment=””/>
+
<!-- Trigger object -->
</pre>
+
    <ExtrinsicObject id="urn:uuid:f139f6ea-ba10-4887-86d1-f95bf698ee3d"
 +
        lid="urn:uuid:06b5ba28-4b6e-47ec-b3f0-d42e2ebd637a"
 +
        status="urn:oasis:names:tc:ebxml-regrep:StatusType:Approved">
  
This element is required in all registry objects.  In XDS, this means it is required in ExtrinsicObject, RegistryPackage (submission set and folder), and Association. It is also required on Classification and ExternalIdentifier objects.
+
        <VersionInfo versionName="2"/>
  
The ebRIM 3.0 specification introduces rules on the behavior of versions of registry objects. All versions of an ExtrinsicObject reference the same document in the repository. For XDS.b this implies that all versions of a DocumentEntry/ExtrinsicObject must carry the same value for the XDSDocumentEntry.uniqueId attribute since it is used to reference the actual document in the repository.
+
        <!-- UniqueId attribute -->
An Association always references a specific version of a registry object through its id attribute. Its attributes sourceObject and targetObject hold the id attribute of the object being pointed at.
+
        <ExternalIdentifier identificationScheme="urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab"
 +
            value="1.2009.0827.08.33.5016"
 +
            objectType="urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:ExternalIdentifier"
 +
            id="urn:uuid:a89a35db-cb9c-4e9e-9f9a-e55fda5c9475"
 +
            registryObject="urn:uuid:f139f6ea-ba10-4887-86d1-f95bf698ee3d">
 +
            <Name>
 +
                <LocalizedString value="XDSDocumentEntry.uniqueId"/>
 +
            </Name>
 +
        </ExternalIdentifier>
 +
    </ExtrinsicObject>
  
The lid attribute is not required in the submission of a registry object.  The value of the lid attribute defaults to the value of the id attribute thus creating the first version of a registry object by default.
+
    <Association id="urn:uuid:883e0490-ff31-4753-8133-945b73d99d94"
 +
        objectType="urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:Association"
 +
        associationType="urn:oasis:names:tc:ebxml-regrep:AssociationType:HasMember"
 +
        sourceObject="urn:uuid:93f9e4f8-cd53-4118-b197-ed9e0453ece0"
 +
        targetObject="urn:uuid:f139f6ea-ba10-4887-86d1-f95bf698ee3d">
 +
        <Slot name="SubmissionSetStatus">
 +
            <ValueList>
 +
                <Value>Original</Value>
 +
            </ValueList>
 +
        </Slot>
 +
        <Slot name="PreviousVersion">
 +
            <ValueList>
 +
                <Value>1</Value>
 +
            </ValueList>
 +
        </Slot>
 +
    </Association>
 +
</pre>
  
The VersionInfo attribute is never submitted to the registry, it is generated by the registry and always returned from a query. The versionName portion of the VersionInfo attribute is automatically allocated and set by the registry. It defaults, in the standard, to versionName=”1.1” but the registry implementation is not constrained in what numbering scheme it uses. The comment portion of the VersionInfo attribute is set by the comment attribute of the <rim:Request/> elementIn XDS.b this corresponds to the <rim:SubmitObjectsRequest/> element that is coded in the Provide And Register Document Set and Register Document Set transactions. Note that this comment applies to all objects submitted in the request.
+
This is the updated metadata of the original objectNote the status has changed to Deprecated
  
The ebRS 3.0 standard includes the request/verb, UpdateObjectsRequest, for submitting updates to a Registry Object. A traditional update in ebRS is to update or add a single attribute, such as a Slot, to an existing Registry Object. Creating a new version of an object is a separate operation. Note that updates can be carried in either UpdateObjectsRequest or SubmitObjectsRequest requests according to ebRS 3.0.  
+
<pre>
 
+
    <ExtrinsicObject
When a registry object (such as an ExtrinsicObject) is updated, the submitter must query the registry for the previous version, update the parts of the object as needed and resubmit the entire registry object. Individual attributes cannot be updated.
+
        id="urn:uuid:e0985823-dc50-45a5-a6c8-a11a829893bd"
 
+
        lid="urn:uuid:06b5ba28-4b6e-47ec-b3f0-d42e2ebd637a"
The ebRIM 3.0 standard allows for the creation of new status attribute values.
+
        status="urn:oasis:names:tc:ebxml-regrep:StatusType:Deprecated">
 +
       
 +
        <VersionInfo versionName="1"/>
 +
       
 +
        <!-- UniqueId attribute -->
 +
        <ExternalIdentifier
 +
            identificationScheme="urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab"
 +
            value="1.2009.0827.08.33.5016"
 +
            objectType="urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:ExternalIdentifier"
 +
            id="urn:uuid:7ae00a8d-0152-46d9-bc66-aae8ab4e2edd"             
 +
            registryObject="urn:uuid:e0985823-dc50-45a5-a6c8-a11a829893bd">
 +
            <Name>
 +
                <LocalizedString value="XDSDocumentEntry.uniqueId"/>
 +
            </Name>
 +
        </ExternalIdentifier>
 +
    </ExtrinsicObject>
 +
</pre>

Revision as of 04:26, 23 April 2010

This page contains examples supporting the Metadata Update profile. These examples show only enough metadata to explain the operation of the update. Many of these metadata objects are incomplete.

Update DocumentEntry Metadata

Trigger object shown with SubmissionSet HasMember Association. Note the PreviousVersion slot in the Association.

   <ExtrinsicObject id="Document01" 
        lid="urn:uuid:06b5ba28-4b6e-47ec-b3f0-d42e2ebd637a">

        <!-- UniqueId attribute -->
        <ExternalIdentifier 
            identificationScheme="urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab"
            value="1.2009.0827.08.33.5016"
            objectType="urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:ExternalIdentifier"
            id="urn:uuid:a89a35db-cb9c-4e9e-9f9a-e55fda5c9475" 
            registryObject="Document01">
            <Name>
                <LocalizedString value="XDSDocumentEntry.uniqueId"/>
            </Name>
        </ExternalIdentifier>
    </ExtrinsicObject>

    <Association id="urn:uuid:883e0490-ff31-4753-8133-945b73d99d94"
        objectType="urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:Association"
        associationType="urn:oasis:names:tc:ebxml-regrep:AssociationType:HasMember"
        sourceObject="SubmissionSet01" 
        targetObject="Document01">
        <Slot name="SubmissionSetStatus">
            <ValueList>
                <Value>Original</Value>
            </ValueList>
        </Slot>
        <Slot name="PreviousVersion">
            <ValueList>
                <Value>1</Value>
            </ValueList>
        </Slot>
    </Association>

Precondition object

    <ExtrinsicObject 
        id="urn:uuid:e0985823-dc50-45a5-a6c8-a11a829893bd"
        lid="urn:uuid:06b5ba28-4b6e-47ec-b3f0-d42e2ebd637a"
        status="urn:oasis:names:tc:ebxml-regrep:StatusType:Approved">
        
        <VersionInfo versionName="1"/>
        
        <!-- UniqueId attribute -->
        <ExternalIdentifier
            identificationScheme="urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab"
            value="1.2009.0827.08.33.5016"
            objectType="urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:ExternalIdentifier"
            id="urn:uuid:7ae00a8d-0152-46d9-bc66-aae8ab4e2edd"               
            registryObject="urn:uuid:e0985823-dc50-45a5-a6c8-a11a829893bd">
            <Name>
                <LocalizedString value="XDSDocumentEntry.uniqueId"/>
            </Name>
        </ExternalIdentifier>
    </ExtrinsicObject>

Trigger object and SubmissionSet HasMember Association as saved to registry. Note:

  • Version has been filled in
  • id attributes have had UUIDs generated
  • Status attribute has been filled in


<!-- Trigger object -->
    <ExtrinsicObject id="urn:uuid:f139f6ea-ba10-4887-86d1-f95bf698ee3d"
        lid="urn:uuid:06b5ba28-4b6e-47ec-b3f0-d42e2ebd637a"
        status="urn:oasis:names:tc:ebxml-regrep:StatusType:Approved">

        <VersionInfo versionName="2"/>

        <!-- UniqueId attribute -->
        <ExternalIdentifier identificationScheme="urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab"
            value="1.2009.0827.08.33.5016"
            objectType="urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:ExternalIdentifier"
            id="urn:uuid:a89a35db-cb9c-4e9e-9f9a-e55fda5c9475"
            registryObject="urn:uuid:f139f6ea-ba10-4887-86d1-f95bf698ee3d">
            <Name>
                <LocalizedString value="XDSDocumentEntry.uniqueId"/>
            </Name>
        </ExternalIdentifier>
    </ExtrinsicObject>

    <Association id="urn:uuid:883e0490-ff31-4753-8133-945b73d99d94"
        objectType="urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:Association"
        associationType="urn:oasis:names:tc:ebxml-regrep:AssociationType:HasMember"
        sourceObject="urn:uuid:93f9e4f8-cd53-4118-b197-ed9e0453ece0"
        targetObject="urn:uuid:f139f6ea-ba10-4887-86d1-f95bf698ee3d">
        <Slot name="SubmissionSetStatus">
            <ValueList>
                <Value>Original</Value>
            </ValueList>
        </Slot>
        <Slot name="PreviousVersion">
            <ValueList>
                <Value>1</Value>
            </ValueList>
        </Slot>
    </Association>

This is the updated metadata of the original object. Note the status has changed to Deprecated

    <ExtrinsicObject 
        id="urn:uuid:e0985823-dc50-45a5-a6c8-a11a829893bd"
        lid="urn:uuid:06b5ba28-4b6e-47ec-b3f0-d42e2ebd637a"
        status="urn:oasis:names:tc:ebxml-regrep:StatusType:Deprecated">
        
        <VersionInfo versionName="1"/>
        
        <!-- UniqueId attribute -->
        <ExternalIdentifier
            identificationScheme="urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab"
            value="1.2009.0827.08.33.5016"
            objectType="urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:ExternalIdentifier"
            id="urn:uuid:7ae00a8d-0152-46d9-bc66-aae8ab4e2edd"               
            registryObject="urn:uuid:e0985823-dc50-45a5-a6c8-a11a829893bd">
            <Name>
                <LocalizedString value="XDSDocumentEntry.uniqueId"/>
            </Name>
        </ExternalIdentifier>
    </ExtrinsicObject>