This wiki has undergone a migration to Confluence found Here
<meta name="googlebot" content="noindex">

RIM Maintenance and Tooling Documentation

From HL7Wiki
Revision as of 06:49, 11 September 2011 by Gwbeeler (talk | contribs) (→‎HL7 Profile)
Jump to navigation Jump to search

Introduction

To quote the HL7 standard "Core Principle and Properties of V3 Models":

The essential feature of HL7 Version 3 is that its specifications (standards) SHALL be based on a set of common models, and that, to the extent possible, these models will be based on the object modeling facilities of the Unified Modeling Language (UML). In HL7 Version 3, the information models for the specifications (standards) are based on three "core" models that are published as individual specifications but have been developed and maintained though careful collaboration and coordination within the HL7 community. These models are:
  • HL7 Reference Information Model (RIM) is an "information model" covering all information that must be communicated in support of health care ...
  • HL7 Abstract Data Types Model is a robust specification of data types ...
  • HL7 Vocabulary Model is a set of HL7-defined and maintained Concept Domains, Code Systems and Value Sets ...

To this end, development of the HL7 Reference Information Model (RIM) was started in 1996, and has been a continuing process since. To date, HL7 has released over 60 RIM versions, including three "normative" releases. This document lays out the processes and tooling used to maintain the RIM.

Harmonization and Publication

The primary process for RIM development and maintenance process known as the Vocabulary and RIM Harmonization Process. This process was initiated as RIM Harmonization and extended when Vocabulary specifications became a key, formal part of V3 specifications. This process is documented elsewhere.

Publication of the RIM occurs in several forms:

  • As a formal document for balloting and inclusion in V3 Normative Editions.
  • As a set of formal definitions (represented in Model Interchange Format (MIF) files or data bases) and released for use with tools developed by HL7 and others. These are released under the "Design Repository Project" on Gforge. Prior to May 2011, the primary representation was an an HL7 Design Repository in Access. With the release of this updated process, the primary representations become MIF "definition files" for the RIM and Vocabulary.
  • A formal RIM "model package" release that inlcudes modeling tool files, documentation of Harmonization changes, graphics, etc.

Prior Maintenance and Objectives

As the first version 3 methodology was defined, an Access "Design Repository" database was designed to represent all of the HL7 modeling artifacts in Access tables. Thus, there were tables for RIM classes, attributes, etc. Moreover, for each of the major elements model, a set of unique identifiers (GUID) was defined, and recorded along with data showing which version of the RIM a particular element became effective, and/or was dropped.

Not only were the data recorded in the primary design repository tables, but they were also transferred to an archive of model elements that allowed reconstruction of any single RIM version. With these data, it is possible to track the evolution of a particular attribute from its initial introduction into the RIM, through a variety of updates, to its final version, or perhaps its elimination from the RIM altogether.

The actual modeling the RIM depended upon in early-release UML modeling tool produced by Rational Software. HL7-specific properties were added to this modeling tool to allow documentation of the assigned each identifiers, vocabulary constraints, etc. The maintenance tooling included software that used programming interfaces (API) to both the modeling program and the Access repository to automate the processes of loading models to the data base, comparing the content, documenting differences, and updating the unique identifiers as recorded in the modeling tool, if necessary.

The development of new tools used this suite of capabilities as its primary set of requirements.

RIM Maintenance Process

The Vocabulary and RIM Harmonization Process for RIM development remains unchanged.

Modeling Tool

The primary modeling is now performed with IBM's Rational Software Architect - a UML tool implemented in the Eclipse environment and using the Eclipse modeling framework. This model is then "exported" using the UML XMI format.

RIM Archive

Representation of individual RIM models is expressed as a "mif:staticModel" from MIF 2.1.6, The representation of the RIM Archive data is contained in a "mif:package" element whose "content" is made up of the most recent RIM "staticModel", in its entirety, and a set of historic "mif:staticModel"s that reflect the changes, version-to-version as the models evolved. Transforms are provided for updating the archive to accommodate a new RIM release, and for extracting any particular RIM from the archive.

RIM Distribution

RIM distribution continues in the three primary groups as outlined under publication in the Introduction section above, although the specific content of each changes, as outlined in the following tooling discussion.

RIM Maintenance Tooling

Base Modeler

Model Elements Used

As noted above, the base modeling tool is Rational Software Architect. Within the RIM, the following model elements from the UML suite are used:

  • Package to aggregate classes into "subject areas"
  • Class
  • Attribute
  • Primitive Type to capture the assignment of a particular HL7 data type. The data types are not explicitly modeled in the RIM. The Primitive Type "name" establishes the binding to an HL7 data type.
  • Bidirectional Association to capture the relationships, names and multiplicities between classes.
  • Generalization to establish inheritance relationships between classes.
  • State Machine made up of
    • State
      • Initial State
      • Final State
    • Transition - triggered by a named Signal Event

HL7 Profile

In order to support model properties that are extensions to the standard UML model, an "HL7" profile has been created for use with the RIM. The profile is defined in Rational Software Architect (RSA) as a named Stereotype defined as an Extension of a particular UML meta-class.

The naming convention for the Stereotypes was established by the software that upgraded the original RIM "property sets" from Rational Rose to RSA. The name uses the prefix "default__" followed by the metaclass name used previously.

Stereotype Definition

Each Stereotype is defined by a set of Attributes. Each such attribute has the following properties:

  • Name - unique within the stereotype
  • Type - With one exception (in each Stereotype) the types are either "Boolean" or String". The exception is the "base" element attribute which is typed by the UML Meta-class that the Styeroptype extends.
  • Default Value - populated principally for Boolean properties,
  • Is Static - uniformly set "false"
  • Multiplicity - uniformly set to "1"
  • Owner - which is set to the name of the Stereotype in which the attribute is found

History Properties

With the exception of the Stereotype "default__Model" assigned to the model as a whole, all of the other Stereotypes include a set of three properties that have been, and continue to be used to track the history of each model element. These three properties are:

History Properties
Name Type Default Notation
zhxId String n/a The current GUID assigned to this element when it was created or last updated. (This assignment will actually be made in the transforms that process each RIM, and then will be updated in the RSA model.)
zhxDate String n/a The RIM release date on which this zhxId GUID was assigned. (This assignment is tracked in the RIM Archive and will be updated in the RSA model.) .
zprevHxId String n/a The GUID assigned to this element (or is predecessor) before its most recent change. This GUID provides a thread that allows tracing the history of a particular model element.

Stereotypes Defined for RIM

Within the HL7 Profiles, the following Stereotypes contain only the History Properties listed above:

  • default__Category - extends the base type of Package.
  • default__Inherit - extends the base type of Generalization.
  • default__State - extends the base types of State, Pseudostate,InitalNode, and FinalNode.
  • default__StateTransition - extends the base types of Transition and ActivityEdge.


The following tables list the additional properties provided in the remaining stereotypes defined in the HL7 Profile.

default__Class extends type Class and includes History Properties
Name Type Default Notation
ClassCode String n/a For classes in the Act, Role or Entity hierarchies, this lists the terminology code that represents this RIM class.
StateAttribute String n/a For those classes that possess a defined StateMachine, this is the name of the attribute that holds the current state.



default__Attribute extends type Attribute and includes History Properties
Name Type Default Notation
SortKey String A two digit string that represents the appearance order of the RIM attributes, when the model is serialized. (Class displays should be also arranged to display this order in diagrams.)
isImmutable Boolean false Whether this is treated in the RIM and ITS as an immutable attribute.
isMandatory Boolean false Whether this is a Mandatory attribute in all RIM-derived designs.
isDocumentCharacteristic Boolean false Applies to attributes of Act class (and its descendants).
conductible Boolean false Whether this attribute can be conducted through ActRelationships and Participations.
conformance String U The RIM-defined "conformance" value for this attribute.
Vocab_domain String Each coded attribute in the RIM must use this to identify the Concept Domain that provides the concepts that are appropriate for this attribute.



The Following stereotype applies to the model itself. This profile has been extended beyond the elements required by the RIM to provide a variety of defining properties for "mif:staticModels" that are needed to fully characterize the model.

default__Model extends type Model
Name Type Default Notation
VocabularyVersion String The identifier of the Vocabulary version that should be imported for use with this model.
sortKey String Included but not applicable to this element of the RIM.
title String The formal title for this model.
isSerializable Boolean Whether this model can be serialized (determined by association traversals)..
representationKind String Determines whether the resultant should be represented in the MIF as a "flat" or "serialized" model.
pl1_root String The value for the "root" attribute in the "mif:packageLocation" for this Model. For the RIM, this is "DEFN".
pl2_section String The value for the "section" attribute in the "mif:packageLocation" for this Model. For the RIM, this is blank.
pl3_subSection String The value for the "subSection" attribute in the "mif:packageLocation" for this Model. For the RIM, this is blank.
pl4_artifact String The value for the "artifact" attribute in the "mif:packageLocation" for this Model. For the RIM, this is "RIM".
pl5_subArtifact String The value for the "subArtifact" attribute in the "mif:packageLocation" for this Model. For the RIM, this is blank.
pl6_domain String The value for the "domain" attribute in the "mif:packageLocation" for this Model. For the RIM, this is blank.
pl7_realmNamespace String The value for the "realmNamespace" attribute in the "mif:packageLocation" for this Model. For the RIM, this is "UV".
pl8_version String The value for the "version" attribute in the "mif:packageLocation" for this Model. For the RIM, this is version number (like "0235") for this RIM release.
pl9_name String The value for the "name" attribute in the "mif:packageLocation" for this Model. For the RIM, this is blank.
pla_id String The value for the "id" attribute in the "mif:packageLocation" for this Model. For the RIM, this is blank.
plb_releaseDate String The value for the "releaseDate" attribute in the "mif:packageLocation" for this Model. For the RIM, this is calendar date (like "2011-08-11") on which the RIM will be released.
pl0_combinedId String The value for the "combinedId" attribute in the "mif:packageLocation" for this Model. For the RIM, this is blank.

RIM Content Export

Updating Managed Object GUIDs

Archive Maintenance

Archive Structure

Archive Update for New Release

Base Model Update

RIM Release Distribution

Contents

Sourcing