NIH | National Cancer Institute | NCI Wiki  

Contents of this Page

General Comments

HL7 MIF Vocabulary to LexGrid Coding Scheme

The design and implementation of the LexEVS 6.1 HL7 MIF Vocabulary Loader assumes there is only one <vocabularyModel> XML element contained within the XML load source file being loaded.  A single LexGrid Coding Scheme will get created.  Refer to the mapping table labeled MIF Vocabulary - VocabularyModel Mapping to LexGrid Coding Scheme in the Mapping Information section for more information on what data is used to create the LexGrid Coding Scheme.

HL7 MIF Vocabulary load source file

As of the date this document was authored, the current version of the HL7 MIF Vocabulary that can be used as the load source is contained in the file named “DEFN=UV=VO=1189-20121121.coremif”.  To obtain a copy of this file, go to the HL7 web site http://www.hl7.org/implement/standards/rim.cfm.  From the HL7 web site, down load the latest version of the RIM (i.e. Version 2.41).  The down load will be a zip file containing other zip files.  Open the down loaded zip file and navigate to “d” zip file (i.e. rim0241d.zip).  The file containing the HL7 MIF Vocabulary (i.e. “DEFN=UV=VO=1189-20121121.coremif”) is contained in the “d” zip file.

Overview

The current implementation of the LexEVS 6.1 HL7 MIF Vocabulary Loader will load all codeSystems and concept related information contained within the XML load source.  Concept related information includes the concept and the properties, relationships and codes the concept has.  Concept domain, value set and code system supplement related information will NOT be loaded.

Consider the following image of a small set of HL7 MIF Vocabulary loaded data:

small set of HL7 MIF Vocabulary loaded data

As depicted under A1 in the above image, the LexEVS loader will create a default root node LexGrid Entity named "@".  For each codeSystem XML element in the load source, the LexEVS loader will create a LexGrid Entity (A3) and a "hasSubtype" association (A2) with the "@" root node where the "@" root node entity is the source entity and the codeSystem entity (A3) is the target entity.  The LexGrid Entity representing a codeSystem XML element will have its entityCode value comprised of the codeSystem's name attribute value and the codeSystem's codeSystemId attribute value concatenated with the colon (":") character as depicted by the value "ConceptStatus:2.16.840.1.113883.5.1086" under A3. 

For each concept XML element contained by a codeSystem XML element, the LexEVS loader will create a LexGrid Entity (A5) and a "hasSubtype" association (A4) with the respective LexGrid Entity (A3) representing the codeSystem where the codeSystem entity (A3) is the source entity and the concept entity (A5) is the target entity.  The LexGrid Entity representing a concept XML element will have its entityCode value comprised of the code attribute value of the code XML element contained by the concept XML element and the value of the conceptProperty XML element contained by the concept XML element where the conceptProperty element has a type attribute value defined as the concept's internal identifier type ("internalId").  These two values are concatenated with the colon (":") character to create the entityCode value of the LexGrid Entity as depicted by the value "A:19960" under A5.

Concepts having concept relationships with other concepts will be created by the LexEVS loader such the association's name (or association predicate) will be the relationshipName attribute value of the conceptRelationship XML element in the load source file.  NOTE:  these associations between concepts are not depicted in the above image. 

Concepts Containing Multiple Codes

The HL7 model design for the MIF Vocabulary allows concepts to have more than one code.  The load source file “DEFN=UV=VO=1189-20121121.coremif” has 100 concepts that contain multiple codes. 

The LexEVS loader handles the multiple code scenarios for a concept by creating a LexGrid Entity for each of the codes contained within the concept.  The entityCode value for the LexGrid Entity, as described in the previous Overview section, uses the code value along with concept’s internal identifier type property to distinguish the LexGrid Entities from each other and still have a mechanism via the concept’s internal identifier value to tie them to the same load source concept.  The LexEVS loader will apply any concept properties and concept relationships the concept has to each of the LexGrid Entities.  For example, if a concept having internal identifier value "12345" has codes ABC and DEF defined and has one concept relationship to the target code XYZ with a relationshipName attribute value of “Specializes” defined, the LexEVS loader will create the “Specializes” LexGrid AssociationPredicate and Associations to the target entity XZY for both source entities ABC and DEF as shown in the following diagram.

LexEVS loader diagram as explained in the text 

Mapping Information

MIF Vocabulary - VocabularyModel Mapping to LexGrid Coding Scheme

MIF Vocabulary - XML elementXML attributeLexGrid Model ElementNotes
vocabularyModelnameCodingScheme.codingSchemeName 
vocabularyModel CodingScheme.codingSchemeURIHard coded to value "urn:hl7-org:v3/mif2"
vocabularyModeltitleCodingScheme.formalName 
vocabularyModeltitleCodingScheme.entityDescription.content 
  CodingScheme.defaultLanguageHard coded to value "en"
  CodingScheme.copyRightHard coded to value "THIS DATA IS COVERED BY A COPYRIGHT"
packageLocationcombinedIdCodingScheme.representsVersion 

MIF Vocabulary - CodeSystem Mapping to LexGrid Entity (used as top node entities in hierarchy under “@” entity)

MIF Vocabulary - XML elementXML attributeLexGrid Model ElementNotes
 codeSystem name + “:” + codeSystemId Entity.entityCodeFormed value using two attributes
 codeSystem title Entity.entityDescription.content 
 vocabularyModel name Entity.entityCodeNamespace 
   Entity.entityTypeHard coded to value “concept”
   Entity.isActiveHard coded to boolean value true
    
 codeSystem title Entity.Presentation.value.Text.context 
   Entity.Presentation.isPreferredHard coded to boolean value true
   Entity.Presentation.propertyNameHard coded to value “print_name”
   Entity.Presentation.propertyIdHard coded to value “T1”
   Entity.Presentation.languageHard coded to value “en”
    
 codeSystem:annotations:documentation:description:text Element’s enclosed data Entity.Definition.value.Text.contentUsed if it exists. All HTML styling tags contained within the enclosed data of the text XML element are removed by the loader.
 codeSystem title Entity.Definition.value.Text.contentUsed if above entry does not exist
   Entity.Definition.propertyNameHard coded to value “definition”
   Entity.Definition.propertyIdHard coded to value “D1”
   Entity.Definition.languageHard coded to value “en”
   Entity.Definition.isActiveHard coded to boolean value true

MIF Vocabulary - Concept Mapping to LexGrid Entity

MIF Vocabulary - XML elementXML attributeLexGrid Model ElementNotes

 concept:code 

 concept:conceptProperty:value

 code + “:” +

 internalId

 Entity.entityCode

Formed value using two attributes.  The internal identifier (internalId) value represent’s the value for the conceptProperty with name attribute = “internalId”. 

 concept:printName text Entity.entityDescription.contentUsed if it exists
 concept:code code  Entity.entityDescription.contentUsed if above entry does not exist
 vocabularyModel name Entity.entityCodeNamespace 
   Entity.entityTypeHard coded to value “concept”
 concept:code status Entity.status 
   Entity.isActiveSet to boolean value true if Entity.status = “active” else set to boolean value false

MIF Vocabulary - Concept Mapping to LexGrid Entity.Presentation

MIF Vocabulary - XML elementXML attributeLexGrid Model ElementNotes
 concept:annotations:documentation:definition:textElement’s enclosed data Entity.Presentation.value.Text.contentUsed if it exists
 concept:codecode Entity.Presentation.value.Text.contentUsed if above entry does not exist
   Entity.Presentation.isPreferredHard coded to boolean value true
   Entity.Presentation.propertyNameHard coded to value “print_name”
   Entity.Presentation.propertyIdHard coded to value “T1”
   Entity.Presentation.languageHard coded to value “en”
   Entity.Presentation.PropertyQualifier.propertyQualifierName

Hard coded to “source-code”

 concept:code 

 concept:conceptProperty:value

code + “:” + internalId

 Entity.Presentation.PropertyQualifier.value.Text.contentFormed value using two attributes.  The internal identifier (internalId) value represent’s the value for the conceptProperty with name attribute = “internalId”.
 codeSystemname Entity.Presentation.Source.contentThe codeSystem the concept is contained within

MIF Vocabulary - Concept Mapping to LexGrid Entity.Definition

MIF Vocabulary - XML elementXML attributeLexGrid Model ElementNotes
concept:annotations:documentation:definition:textElement's enclosed data Entity.Definition.value.Text.contentUsed if it exists.  All HTML styling tags contained within the enclosed data of the text XML element are removed by the loader. 
concept:codecode Entity.Definition.value.Text.contentUsed if above entry does not exist
   Entity.Definition.propertyNameHard coded to value “definition” 
   Entity.Definition.propertyIdHard coded to value “D1” 
   Entity.Definition.languageHard coded to value “en”
   Entity.Definition.isActiveHard coded to boolean value true

MIF Vocabulary - Concept Property Mapping to LexGrid Entity

MIF Vocabulary - XML elementXML attributeLexGrid Model ElementNotes
concept:conceptProperty name Property.propertyName 
concept:conceptProperty value Property.value.Text.content 
   Property.propertyId Hard coded to value “P” + count where count is the current length of a collection holding the Property objects.
   Property.language Hard coded to value “en”

MIF Vocabulary - Concept Relationship Mapping to LexGrid

MIF Vocabulary - XML elementXML attributeLexGrid Model ElementNotes
 concept:conceptRelationship relationshipName AssociationPredicate 
 concept:conceptRelationship:targetConcept code AssociationTarget.targetEntityCodeUsed to determine the Entity from the known list of Entities in the CodingScheme.  The determined Entity’s entityCode is then used. 
 concept:conceptRelationship:targetConcept codeSystem AssociationTarget.targetEntityCode

If it exists, it is used to along with the code above to determine the Entity from the known list of Entities in the defined codeSystem. The determined Entity’s entityCode is then used. If this attribute does not exist it is assumed the target Entity is in the same codeSystem as the source Entity. 

 vocabularyModel name AssociationTarget.targetEntityCodeNamespace 
 concept:code code AssociationSource.sourceEntityCodeUsed to determine the Entity from the known list of Entities in the specific concept of the codeSystem.  The determined Entity’s entityCode is then used. 
 vocabularyModel name AssociationSource.sourceEntityCodeNamespace 
  • No labels