Release: Edition2012
V3 Publishing Co-Chair | George Beeler Beeler Consulting LLC |
V3 Publishing Co-Chair | Andy Stechishin |
Director of Technical Publications | Don Lloyd Health Level Seven, Inc. |
Edited: 2011-05-31T09:53:01
Last Published: 20120831 11:51 AM
HL7® Version 3 Standard, © 2012 Health Level Seven® International. All Rights Reserved.
HL7 and Health Level Seven are registered trademarks of Health Level Seven International Reg. U.S. Pat & TM Off.
Use of these materials is governed by HL7 International's IP Compliance Policy.
In early 2006, the V3 Generator became a more integral part of preparing each V3 Publication. This vehicle draws upon a comprehensive collection of files containing the domain artifacts being processed. As a consequence the Publishing Committee created an analysis of the cross-references embedded in these files, since the "failure" of any cross-reference represents incomplete linkages in the published content, and, therefore, a publication quality issue.
The resulting quality review files have been used to guide the creation of each ballot publication, identifying potential problems or places where the "wrong" source file has been provided. They have also guided the modification of generator processes to correct systematic errors in the content. These files have been provided to the publishing facilitators in the raw XML form. This document represents this content in a form that can guide implementers of the standards and the individual Work Groups responsible for creating the content in their efforts to adapt and improve the content
At present, the principle forms of reference that have been tested are:
Almost half of the attributes used in HL7 static model (message) designs are coded attributes. Each of these carries a constraint specification that constitutes a reference to an element defined in the HL7 Vocabulary. In the HL7 "parallel development" environment these references are frequently inserted in model designs before their "target" has been added to the Vocabulary Content. This portion of the review looks for places where the necessary target is not in the Vocabulary. These arise for one of two reasons:
Within the messaging dynamic model, HL7 static models are assembled into complete communicable models by "wrapping" models within models. Thus, a transmission wrapper surrounds a control act wrapper that surrounds a payload. These are bindings from "stubs" to their corresponding payload. In the HL7 "parallel development" environment these references are asserted by one Work Group while another Work Group is creating the target. Thus, it is necessary to check that the referenced target exists and that the "type" of the stub matches the type of the root element being bound to that stub.
HL7 static models include a significant amount of "re-use" in the form of Common Model Element Type (CMET) references. In the HL7 "parallel development" environment these references are asserted by one Work Group while another Work Group is creating the target. Thus, it is necessary to check that the referenced target exists.
HL7 static models are designed in a graphic-editor environment (currently the RMIM Designer in Visio), but the relations of these static models to the rest of the "dynamic model" is documented separately in a "publication data base". This set of reference checks verifies that each static model design being distributed is "defined" in a dynamic model, and, conversely, that there is a static model design for each model defined in a publication data base.
Each specification may, and usually does, have references to numerous subsidiary files that provide graphics or supplemental information for the specification. This set of reference checks verifies that such files were included in the submission of the specification for publication. Further it provides a set of "URL"s for hyper-links within the documents. These cannot be automatically validated, but should be reviewed for continued for current validity.
In attempt to indicate to reviewers the severity of individual errors. Some of the results tables below have been set to indicate the presence of a "fatal" error by highlighting a portion of the error row in yellow. Items that are deemed "fatal" are those which fulfill one or more of the following criteria:
Note that in this context the term "invalid" means that one or more of the following will be true:
As an example, selected rows of the vocabulary errors within static models table are flagged with yellow highlight. In these rows, the data type of the RIM attribute is "CS", and the error detected will cause the schema for the that static model to fail to validate because the vocabulary schema (which enumerates the possible values for attributes of type "CS") does not represent the erroneous value. If this static model is a CMET, the schema for any other static model that includes this CMET will also fail to validate, as will any interactions. However, in many of these cases, the MIF file will validate against the MIF schemas, as these do not mandate checking vocabulary enumerations
The following sections list Vocabulary domain specifications for which a reference cannot be found in the current Vocabulary content. Almost half of the attributes used in HL7 static model (message) designs are coded attributes, and each of these requires a constraint specification that constitutes a reference to an element defined in the HL7 Vocabulary. As a consequence, an HL7 NormativeEdition will contain 50,000 to 100,000 (estimate) vocabulary constraint references. Many of these references are the same. Nevertheless, there are almost 10,000 (measured) unique reference expressions in these designs.
In the HL7 "parallel development" environment these references are frequently inserted in model designs before their "target" has been added to the Vocabulary Content. This portion of the quality review looks for places where the necessary target is not in the Vocabulary. These arise for one of three reasons:
Note: For Normative Edition 2009, there are about 100 reference errors (just over one per-cent of the unique instances). Of these, over 1/3 (35) are incorrectly entered, and can be "fixed" by editing the static model design. The remainder have either not been proposed (majority) or have been approved but not posted.
The current analysis is based on a complete list of all vocabulary constraints cited in static model designs. These are extracted from the "Visio" output (xml) files or the "hmd" files exported from RoseTree. The MIF representation for all static model designs is drawn from one of these two sources. The design process specifies whether the constraint is asserted as:
In matching these constraints, the mapping process takes into consideration the fact that early constraints were all expressed as domain constraints, whereas more recent tooling and vocabulary directions have made it easier to constrain directly to value sets or codes. Thus, any reference to a "domain" for which there is currently no Concept Domain is also tested to see if there is a Value Set of the same name. If there is, this is treated as a correct reference.
In preparing a Normative Edition. an attempt is made to analyze each unique error and recommend a "resolution" for the error. These resolutions may be specific corrections, such as"Use D:ControlActReason" or a simple "Need Proposal" for cases where no appropriate target can be identified in the current vocabulary content. As noted above, over a third of the errors represented invalid expressions for which a correct target could be identified. In selected cases (a total of about 50 static model designs), these corrections were made as a "technical correction" to the Normative Edition content before publications. The requirements for making such a technical correction were:
Amazingly, there are vocabulary errors detected for this package.
The previous listing showed the existing unique vocabulary reference errors and, if available, possible solutions. The following table lists all of the defined static models that have erroneous vocabulary references, along with the specific errors and, if available, their resolution. There are no new errors introduced in this table, rather it represents formulation that will facilitate repairing the flawed static models. The columns in the following table are:
The following sections list message-to-message binding specifications from the dynamic models (interactions) in this package for which a target cannot be found in the current package content.
As defined in the interaction specifications of the dynamic model, HL7 static models are assembled into complete communicable models by "wrapping" models within models. Thus, a transmission wrapper surrounds a control act wrapper that surrounds a payload. These are bindings from "stubs" to their corresponding payload. In the HL7 "parallel development" environment these references are asserted by one Work Group while another Work Group is creating the target. Thus, it is necessary to check that the referenced target exists.
The incomplete bindings are presented in three categories, in declining order of severity.
There are no failed interactions in this package.
There are no interactions with warnings in this package.
Listing of Example Interactions ( 33 rows) | ||||||
Dm | Interaction | Transmission | ControlAct | Payload | QueryDefinition | Resolution |
---|---|---|---|---|---|---|
QI | QUQI_IN000001UV01 | MCCI_MT000100UV01 | QUQI_MT020001UV01 | ControlAct wrapper not specified | ||
QI | QUQI_IN000002UV01 | MCCI_MT000300UV01 | QUQI_MT120001UV01 | ControlAct wrapper not specified | ||
QI | QUQI_IN000003UV01 | MCCI_MT000300UV01 | QUQI_MT000001UV01 | ControlAct wrapper not specified |
The following section lists CMET references for which a target cannot be found in the current ballot content. HL7 static models include a significant amount of "re-use" in the form of Common Model Element Type (CMET) references. In the HL7 "parallel development" environment these references are asserted by one Work Group while another Work Group is creating the target. Thus, it is necessary to check that the referenced target exists.
In the case of CMETs, there are three different sources that should agree. Specifically:
The CMET reference checking looks at these three sources seeking to determine that each CMET is listed in all three places, and, further, that each design that references a CMET points to one of these documented designs. The listings below show instances where a CMET is missing from one or more of these places. (NOTE: There is no test that confirms whether or not a CMET is actually referenced or used within another static model.)
There are no specification errors for listed CMETs in this package.
There are no unlisted CMETs in this package.
There are CMET reference warnings in this package.
The following section lists circumstances in which the package content contains a "non-serializable" static model or shows a mismatch between a static model design and a corresponding reference definition (from a Publication Database). There are variants of these errors include:
There are no non-serializable static models in this package.
There are MIF-name-invalid static models in this package.
There are no missing static model designs in this package.
There are no undefined static models in this package.
There are no duplicated static model designs in this package.
The following section lists files that are referenced in the specification, but which cannot be found in the appropriate directories submitted for publication; and references to external "URL"s that must be checked manually for current validity. Specificall::
Missing Files To Match References ( 4 rows) | |||
SpecificationId | Reference Type | Unsatisfied Reference | Directory Searched |
---|---|---|---|
uvqi | models | QUQI_RM000001UV*.hmd | sourcegraphics/ |
'' | models | QUQI_RM020000UV*.hmd | sourcegraphics/ |
'' | models | QUQI_RM021000UV*.hmd | sourcegraphics/ |
'' | models | QUQI_RM120000UV*.hmd | sourcegraphics/ |
Unvalidated URL References ( 1 rows) | |||
SpecificationId | Reference Type | Unvalidated Reference | Element Holding Ref |
---|---|---|---|
uvqi | spec | IMQUQI | xspecref |
Error Listing from V3 Generator Console Listing for Edition2012:
------------------------------------------------------------------------
Pre-Generation Report of Reference Errors in Generated Package (Summary)
========================================================================
14 errors involving references to known CMETs
0 CMETS in cmetInfo.txt, a PubDb and in an hmd/mif file but where the UVnn codes do not agree
0 CMETS in cmetInfo.txt but not in either PubDb or an hmd/mif file.
0 CMETS in cmetInfo.txt and in a PubDb but has no hmd/mif file.
2 CMETS in cmetInfo.txt and in an hmd/mif file but not defined in a PubDb
12 CMETs referenced in an hmd/mif file but not listed in cmetInfo.txt
4 warnings for likely CMET reference errors in static models
3 errors for messages defined in PubDb but not in hmd/mif files
3 errors for messages in hmd/mif files that are not defined in a PubDb
8 errors for messages referenced in a PubDB or hmd/mif file that are not in an hmd/mif file
0 messages referenced in a PubDB that are not in an hmd/mif file
8 CMETs referenced in an hmd/mif file that are not in another hmd/mif file.
4 Static models with name elements that are INVALID in MIF.
100 errors in vocabulary constraints in a design that are not in vocabulary source (13 fatal)
1 errors for Code Systems used in a design that are not in vocabulary source (0 fatal)
12 errors for individual Codes used in a design that are not in vocabulary source (4 fatal)
86 errors for Concept Domains used in a design that are not in vocabulary source (9 fatal)
1 errors for Value Sets used in a design that are not in vocabulary source (0 fatal)
43 interactions fail to bind because of stub-target mis-matches
39 incomplete interaction specifications that cause binding failures
2 stub-target binding mis-matches that cause interaction binding failures
(for details see Reports/MessageReferenceTestResults xml)
------------------------------------------------------------------------