In the ODM, there are many instances where one element needs to reference another—both within the same file and across files within a series of ODM documents. To accomplish this, the target element is given a unique "name" or Object Identifier (OID). All elements that need to reference that target element can use the OID to refer to the object.
Example: An item definition (ItemDef) Name is "Systolic Blood Pressure" and OID "SYSBP". Any specific instance of that data item (ItemData) can link back to the definition by setting the ItemOID to "SYSBP".
The OIDs used have to be unique, but only within certain contexts. The uniqueness rules are:
- OIDs for each element type inside a MetaDataVersion (e.g., ItemGroupDef) must be unique within the scope of that MetaDataVersion.
- It is best practice to make OIDs unique within the entire MetaDataVersion, although it is allowable to use the same OID for different element types if necessary (e.g., an ItemDef may have the same OID as an ItemGroupDef, which can be confusing and should be avoided).
- Elements in a MetaDataVersion may have the same OID as those in an Included MetaDataVersion. An element in a MetaDataVersion with the same OID as the same element type in an Included MetaDataVersion is interpreted as replacing the earlier definition. See Section 3.2.2.1.1, Include.
- MetaDataVersion OIDs must be unique within the containing study.
- Study OIDs must be unique within the containing ODM.
- User, Location, and Signature OIDs must be unique within the containing AdminData.
- Whenever an element uses an OID to reference another element, the referenced element must occur (1) within the same document as the reference or (2) within a prior document in a linked series. Thus, the referenced element can always be found by tracing back through the PriorFileOID links.
Note: The fact that OID references need to cross files prevents the use of standard XML ID and IDREF values (which are references solely within a single file). This is highlighted in our element definitions by using the types oid and oidref instead of ID and IDREF.
Note: These reference rules imply the following.
- You cannot send a reference to an OID value unless that OID value has been defined, either in the current document or in a prior document within the series.
- If a definition identified by an OID has changed, the change in its definition must be transmitted before or in the document in which the changed definition is referenced.
- A document that initiates a series must contain all definitions that it references.
- A Transactional document must include any supporting definitions that are new or changed relative to its prior document.
- For example, suppose that document B3207 includes references to item definition X, and that a codelist constraint has been added to X since B3207's predecessor document. In that case, B3207 must also include a MetaDataVersion element (with an new OID) containing an updated definition of item X.