CCD ClinicalDocument.id: What is the value of root supposed to be?
Asked Answered
K

7

10

In the CDA R2 CCD implementation guide, a ClinicalDocument element (the root element of the document) is supposed to have an id element.

This id element is of the "II" datatype: http://wiki.hl7.no/index.php/R1:II This states that the root attribute is to have an OID value, to identify the type of identification used in the extension attribute.

Now, when looking at the sample CCD document that HL7 provides we see:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="CDASchemas\cda\Schemas\CCD.xsl"?>
<ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:voc="urn:hl7-org:v3/voc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:hl7-org:v3 CDA.xsd" >
...
   <id root="db734647-fc99-424c-a864-7e3cda82e703"/>
...
</ClinicalDocument>

The root value db734647-fc99-424c-a864-7e3cda82e703 is not an OID. I'm not sure what it is, but it looks like a UUID perhaps? Anyway, is this a static value for all CCD documents, or will it differ from document to another? Why is the extension attribute not used, isn't that what identifies the document?

Note that throughout that same sample document I also see things like

<id root="2.16.840.1.113883.19.5" />

which seem to be OIDs (in the root attribute).

EDIT: The sample document I reference is from the HL7 CCD implementation guide, i.e it is from the official source, it is unlikely that they would have a glaring error in their sample file that nobody has noticed before.

Krasnodar answered 11/5, 2011 at 21:10 Comment(1)
It seems to be an OID (a test OID to be more specific) oid-info.com/get/2.16.840.1.113883.19.5 (Root used for published examples; meaningless identifier, not to be used for any actual entities. Temporary, and used for example Coding Systems of type Internal HL7)Bolitho
K
2

According to these two links:

http://tl7.intelliware.ca/public/messages/dataTypes/ii.faces and http://cdatools.com/infocenter/index.jsp?topic=/org.openhealthtools.mdht.uml.cda.consol.doc/classes/GeneralHeaderConstraints.html

the "II" datatype accepts both OID and UUID in its root element.

Can someone direct me to the official documentation explaining this?

Sidenote: The lack of proper documentation and knowledge available online regarding HL7 is quite disappointing, given the fact that it is widely used.

Krasnodar answered 12/5, 2011 at 21:15 Comment(0)
D
5

Old question, I know, but I'm just learning about this stuff and I think I finally have my head wrapped around it.

The roots are basically like namespaces or domains in which the id will be valid and guaranteed to be unique. For example if your authority/organization is generating CDAs it will most likely have applied for a unique OID (the value you see in the root is an OID 2.16.840.1.113883.19.4).

So, for the example above,

    <id root="2.16.840.1.113883.19.4" extension="abc266"/>

I'm going to guess that 2.16.840.1.113883.19 is the base OID for the authority sending out the CDA and the .4 is most likely the OID to indicate that this

<id>

is in fact the document's identifier (the authority defines these OID extensions under the base OID)

"extension" is the Unique Identifier value for this particular document.

In regards to your comment about the implementation guide not having glaring errors, I've found quite the opposite in trying to figure this stuff out...there are errors abound. I do believe the root is always to be an OID, the extensions are usually UUIDs or some other unique ID.

Decimeter answered 7/9, 2012 at 21:39 Comment(1)
The root doesn't have to be an OID. The specification allows for multiple data types.Galcha
L
5

You can download the CDA Release 2 documentation here: http://www.hl7.org/implement/standards/product_brief.cfm?product_id=7

Note: you will have to create an account, but not a paid account. Also, when I forgot my password, they emailed it in plain text to me. Don't use your secure password here.

In datatypes-base.xsd, you can see an explanation of II type. Root is a UID, and there are 2 types of UID. An OID and a UUID.

UUIDs are GUIDs (your example). OIDs are HL7 designated IDs. You can file for an organizational OID, and you have control over any leaf OIDs from that point. Following pattern "[0-2](\.(0|[1-9][0-9]*))*"

Between the root and extension (string), the II should be universally unique. An OID can be unique by itself. A couple examples.

OID "2.16.840.1.113883" is Hl7 (https://www.hl7.org/oid/index.cfm). Leaf ".10.20.22" is HL7 Health Story Templates. Leaf ".1.2" is a Continuity Of Care Document.

<id root="2.16.840.1.113883.10.20.22.1.2" /> is globally unique for a CCD template, extension unneeded

OID "2.16.840.1.113883.5" is HL7 V3 Code Systems. ".1" is Administrative Gender

<id root="2.16.840.1.113883.5.1" extension="M" /> is globally unique for Male

That gives you two options for generating an II for your clinical document. You can generate your own GUID. Or you can use any local identifier, if you have a meaningful ID within an OID/leaf that your organization controls. Pulling the top OID from the hl7 registry ("2.16.840.1.113883.5.3" is external users; ".1" is ProVation) as an example:

They could define leafs as needed; and each time they send a document, it would reference the same unique document. Theoretically: 100=documents; 100.2=clinical documents; extension=databaseIdentityColumn.

<id root="2.16.840.1.113883.5.3.1.100.2" extension="1" /> = first document they created
<id root="2.16.840.1.113883.5.3.1.100.2" extension="15" /> = 15th document they created

It's also perfectly valid to use OID only format, as long as it's globally unique.

<id root="2.16.840.1.113883.5.3.1.100.2.15" /> = 15th document they created

Similar to a globally unique SSN

<id root="2.16.840.1.113883.4.1" extension="111-11-1111" />

Then locally defined patient identifier could be .12=patient chart

<id root="2.16.840.1.113883.5.3.1.12" extension="ZZ1234-111111" />
Lacasse answered 10/12, 2014 at 18:3 Comment(0)
K
4

I am working on the same thing myself. An example I received from our EHR certifying authority had the id's root looking like an OID. It was "2.16.840.1.113883.3.72".

Here is a link that may help somewhat: http://www.ihe.net/Technical_Framework/upload/ihe_lab_TF_rel2-3.pdf

I copied the relevant text below.

This element SHALL be present. It represents the unique instance identifier of the clinical document. The combination of the root and extension attributes SHALL provide a globally unique identifier. Example:

<id root="2.16.840.1.113883.19.4" extension="abc266"/>
Karenkarena answered 6/7, 2011 at 22:34 Comment(0)
K
2

According to these two links:

http://tl7.intelliware.ca/public/messages/dataTypes/ii.faces and http://cdatools.com/infocenter/index.jsp?topic=/org.openhealthtools.mdht.uml.cda.consol.doc/classes/GeneralHeaderConstraints.html

the "II" datatype accepts both OID and UUID in its root element.

Can someone direct me to the official documentation explaining this?

Sidenote: The lack of proper documentation and knowledge available online regarding HL7 is quite disappointing, given the fact that it is widely used.

Krasnodar answered 12/5, 2011 at 21:15 Comment(0)
P
2

I know this is an old post, but like user453441 said, HL7 info is hard to come by.

Regarding the <id> element, here is what I believe is going on:

According to some learning materials I have been given to read at work, the element is a "Document Identifier". It is a

"unique identifier for (the) document instance. The (id) is normally generated by the document creator."

My interpretation is that this element is to be used for security and verification purposes. I believe that the element that is a child of the main <Clinical Document> element is used to show the CDA recipient that this document did indeed originate from the expected origin. You, as a CDA sender, would have a unique ID of some sort (there doesn't seem to be a standard, but getting an OID for your organization would be helpful).

The root attribute of the <id> element is the unique identifier for the whole document, the unique ID for your organization. There is also an extension attribute that can be used to uniquely identify individual sections of the CDA. You mentioned there is more than one attribute in the CDA, this is why. The extension attribute could be used to identify, for example, the <assignedAuthor>. It appears that all children of any Participation element uses this <id> element.

Hope this helps.

Edit: After reading further, I have a couple more details. The root attribute of the <id> element

"...represents the unique instance identifier (UID)."

I am getting these quotes from learning materials from the "Asociacion HL7 Argentina -HL7". Their example of this uses a case number and a version sequencer for the extension attribute. That way, two different organizations could use the same extension, but since they have different UIDs in the root attribute, they are still different.

Pedicular answered 22/2, 2012 at 14:59 Comment(1)
These links (hl7.org/oid/index.cfm and oid-info.com/index.htm) should provide more information.Presumption
C
0

The 'id' attribute in the the ClinicalDocument class of a CDA document should hold a unique id for the document.

For an II datatype then the "root" should always be an OID, the extension can be any unique string. I would suggest that there is an error in your example XML ( where was this sourced from ).

It goes without saying that within the CDA document there will be many different OIDs used depending on the object they are used to Id.

Curb answered 11/5, 2011 at 21:35 Comment(2)
@benbun-coder So when generating a CCD document, I would simply generate an OID for it? Also, I found this cdatools.com/infocenter/index.jsp?topic=/… which says "The ClinicalDocument/setId element uses the instance identifier (II) data type. The root attribute is a UUID or OID that uniquely identifies the scope of the identifier," It is also an II type element, but they say I can use a UUID. Finally, the sample CCD document I provided is from the HL7 CCD implementation guide (HL7_CCD_final.zip).Krasnodar
@Krasnodar - you dont "generate" and OID. OID's have preassigned values and involve a process to get the OID and its attached data approved. for the document, you generate a unique ID of some sort, like a GUID, and that unique value goes into the id attribute of the document and its sections. for II datatype, the root should refer to a OID, but ive seen companies (whom are on the board with HL7) use GUID values for the root also.Hatpin
U
0

When you are looking in the CDA specifications, what has already been mentioned, you see that the datatype of the ClinicalDocument.id element is II (Instance Identifier).

If you are looking into the datatype definition (can be found in the datatypes-base.xsd file), you will find the following:

<xs:complexType name="II">
  <xs:annotation>
     <xs:documentation>
        An identifier that uniquely identifies a thing or object.
        Examples are object identifier for HL7 RIM objects,
        medical record number, order id, service catalog item id,
        Vehicle Identification Number (VIN), etc. Instance
        identifiers are defined based on ISO object identifiers.
     </xs:documentation>
     <xs:appinfo>
        <sch:pattern name="validate II">
           <sch:rule abstract="true" id="rule-II">
              <sch:report test="(@root or @nullFlavor) and not(@root and @nullFlavor)">
                 A root component is required or else the II value is NULL.
              </sch:report>
           </sch:rule>
        </sch:pattern>
     </xs:appinfo>
  </xs:annotation>
  <xs:complexContent>
     <xs:extension base="ANY">
        <xs:attribute name="root" type="uid" use="optional">
           <xs:annotation>
              <xs:documentation>
                 A unique identifier that guarantees the global uniqueness
                 of the instance identifier. The root alone may be the
                 entire instance identifier.
              </xs:documentation>
           </xs:annotation>
        </xs:attribute>
        <xs:attribute name="extension" type="st" use="optional">
           <xs:annotation>
              <xs:documentation>
                 A character string as a unique identifier within the
                 scope of the identifier root.
              </xs:documentation>
           </xs:annotation>
        </xs:attribute>
        <xs:attribute name="assigningAuthorityName" type="st" use="optional">
           <xs:annotation>
              <xs:documentation>
                 A human readable name or mnemonic for the assigning
                 authority. This name may be provided solely for the
                 convenience of unaided humans interpreting an II value
                 and can have no computational meaning. Note: no
                 automated processing must depend on the assigning
                 authority name to be present in any form.
              </xs:documentation>
           </xs:annotation>
        </xs:attribute>
        <xs:attribute name="displayable" type="bl" use="optional">
           <xs:annotation>
              <xs:documentation>
                 Specifies if the identifier is intended for human
                 display and data entry (displayable = true) as
                 opposed to pure machine interoperation (displayable
                 = false).
              </xs:documentation>
           </xs:annotation>
        </xs:attribute>
     </xs:extension>
  </xs:complexContent>

Here you can see that the root attribute has to be a uid with the following documentation:

A unique identifier that guarantees the global uniqueness of the instance identifier. The root alone may be the entire instance identifier.

Ugly answered 21/6, 2019 at 7:13 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.