IPS Technical Background 1
Contents
Technical Background
What is a CDA
CDA R2 is "… a document markup standard that specifies the structure and semantics of clinical documents for the purpose of exchange” [CDA R2, Section 1.1]. Clinical documents, according to CDA, have the following characteristics:
- Persistence
- Stewardship
- Potential for authentication
- Context
- Wholeness
- Human readability
CDA defines a header for classification and management and a document body that carries the clinical record. While the header metadata are prescriptive and designed for consistency across all instances, the body is highly generic, leaving the designation of semantic requirements to implementation.
Templated CDA
CDA R2 can be constrained by mechanisms defined in the “Refinement and Localization” section of the HL7 Version 3 Interoperability Standards. The mechanism most commonly used to constrain CDA is referred to as “templated CDA”. This specification created a set of artifacts containing modular CDA templates (and associated value sets) for the purpose of the International Patient Summary, and the templates can be reused across any number of CDA document types.
There are different kinds of templates that might be created. Among them, the most common ones are:
- CDA Document Level Templates constrain fields in the Clinical Document Architecture (CDA) header, and define containment relationships to CDA sections.
For example, a History-and-Physical document-level template might require that the patient’s name be present, and that the document contain a Physical Exam section. - CDA Header Level Templates constrain fields for parts of the CDA header, like the patient (record target), the author, participations or the service event.
- CDA Section Level Templates constrain fields in the CDA section, and define containment relationships to CDA entries.
For example, a Physical-exam section-level template might require that the section/code be fixed to a particular LOINC code, and that the section contain a Systolic Blood Pressure observation. - CDA Entry Level Templates constrain the CDA clinical statement model in accordance with real world observations and acts.
For example, a Systolic-blood-pressure entry-level template defines how the CDA Observation class is constrained (how to populate observation/code, how to populate observation/value, etc.) to represent the notion of a systolic blood pressure.
Open and Closed Templates
Open templates permit anything to be done in the underlying standard that is not explicitly prohibited. This allows templates to be built up over time that extend and go beyond the original use cases for which they were originally designed.
Closed templates only permit what has been defined in the template, and do not permit anything beyond that. There are good reasons to use closed templates, sometimes having to do with local policy. For example, in communicating information from a healthcare provider to an insurance company, some information may need to be omitted to ensure patient privacy laws are followed. Most templates developed for CDA are of the open sort.
Template versioning
Template versioning is needed to enable template designs to evolve over time.
Template versioning enables template designers to control and shape the conformance statements that make up a template’s design over time tailoring the design to fit the template’s intended purpose.
Each template version is associated with a particular template. The template – as a whole – has a mandatory globally unique, non-semantic, identifier. The identifier serves as the identifier of the original intent of the template and as the identifier of the set of versions that represent the template over time.
Template versions have a mandatory timestamp (date and optional time), called the “effective date”. The date can be seen as the point in time when the template version “came into being”, i.e. was recognized as existent by the governance group. Use of the template prior to this date would be considered an invalid use of the template.
For further information on Templates, Template Versions and related topics refer to the HL7 Templates Standard[1].
Conformance Verbs
The conformance verb keywords SHALL, SHOULD, MAY and SHALL NOT in this document are to be interpreted as described in the HL7 Version 3 Publishing Facilitator's Guide[2].
- SHALL: an absolute requirement
- SHALL NOT: an absolute prohibition against inclusion
- SHOULD: best practice or recommendation. There may be valid reasons to ignore an item, but the full implications must be understood and carefully weighed before choosing a different course
- MAY: truly optional; can be included or omitted as the author decides with no implications
Identifiers for Templates and Value Sets
This specification uses the following OIDs for the artifacts that are registered at the HL7 OID registry.
- The root OID for templates is 2.16.840.1.113883.10.22
- Document Level Templates are sub branch .1, e.g. 2.16.840.1.113883.10.22.1.1 International Patient Summary
- Header Level Templates are summarized under 2.16.840.1.113883.10.22.2, e.g. 2.16.840.1.113883.10.22.2.1 IPS CDA recordTarget
- Section Level Templates are summarized under 2.16.840.1.113883.10.22.3, e.g. 2.16.840.1.113883.10.22.3.1 IPS Medication Summary Section
- Entry Level templates are summarized under 2.16.840.1.113883.10.22.4, e.g. 2.16.840.1.113883.10.22.4.19 IPS Certainty Observation
- “other” assistance templates are summarized under 2.16.840.1.113883.10.22.9, e.g. 2.16.840.1.113883.10.22.9.2 IPS CDA Device
- The root OID for Value Sets is 2.16.840.1.113883.11
The sub branches for templates follow the recommendations of HL7 International and ISO 13582[3]
Terminologies
Note: Much of the description provided in this section is copied and adapted from the §4.2.8 Vocabulary Conformance section of the C-CDA DSTU R2.1 Implementation Guide Volume 1.[4]
The templates in this document use terms from several code systems. These vocabularies are defined in various supporting specifications and may be maintained by other bodies, as is the case for the LOINC® and SNOMED CT® vocabularies. The primary terminologies identified for this specification are listed here.
Note that value set identifiers (e.g., ValueSet 2.16.840.1.113883.1.11.78 Observation Interpretation (DYNAMIC)) used in the binding definitions of template conformance statements do not appear in the XML instance of a CDA document. The definition of the template must be referenced to determine or validate the vocabulary conformance requirements of the template.
Value set bindings adhere to HL7 Vocabulary Working Group best practices, and include both an indication of stability and of coding strength for the binding. Value set bindings can be STATIC, meaning that they bind to a specified version of a value set, or DYNAMIC, meaning that they bind to the most current version of the value set. If a STATIC binding is specified, a date SHALL be included to indicate the value set version. If a DYNAMIC binding is specified, the value set authority and link to the base definition of the value set SHALL be included, if available, so implementers can access the current version of the value set. When a vocabulary binding binds to a single code, the stability of the binding is implicitly STATIC.
For example, to convey @code=11450-4, the code’s displayName (Problem List), the OID of the codeSystem from which the code is drawn (2.16.840.1.113883.6.1), and the codeSystemName (LOINC). In the tabular view used in this guide this information is presented as shown below.
hl7:code | 1 … 1 | M | |||
@code | CONF | 1 … 1 | F | 11450-4 | |
@codeSystem | 1 … 1 | F | 2.16.840.1.113883.6.1 (LOINC) | ||
@displayName | 1 … 1 | F | Problem List |
[Figure 1] Binding to a Single Code (tabular view)
HL7 Data Types Release 1 requires the codeSystem attribute unless the underlying data type is “Coded Simple” or “CS”, in which case it is prohibited. The displayName and the codeSystemName are optional, but recommended, in all cases.
The above example would be properly expressed as follows.
<code code="11450-4" codeSystem="2.16.840.1.113883.6.1"/>
<!-- or -->
<code code="11450-4" codeSystem="2.16.840.1.113883.6.1"
displayName="Problem List" codeSystemName=”LOINC”/>
[Figure 2] XML Expression of a Single-Code Binding
A full discussion of the representation of vocabulary is outside the scope of this document; for more information, see the HL7 V3 Normative Edition 2010[5] sections on Abstract Data Types and XML Data Types R1.
There is a discrepancy between the HL7 R1 Data Types and this guide in the implementation of translation code versus the original code. The R1 data type requires the original code in the root. The convention agreed upon for this implementation guide is that a code from the required value set is used in the element and other codes not included in the value set are to be represented in a translation for the element. Note: This discrepancy is resolved in HL7 Data Types R2, but that is not available for use in CDA R2.
In the next example, the conformant code is SNOMED CT code 206525008.
<code code="206525008" codeSystem="2.16.840.1.113883.6.96"
displayName="neonatal necrotizing enterocolitis" codeSystemName="SNOMED CT">
<translation code="NEC-1" codeSystem="2.16.840.1.113883.19"
displayName="necrotizing enterocolitis"/>
</code>
[Figure 3] Translation Code Example
Value set tables are present below a template, or are referenced if they occur elsewhere in the specification, when there are value set bindings in the template. The value set table provides the value set identifier, a description, and a link to the source of the value set when possible. Ellipses in the last row indicate the value set members shown are examples and the true source must be accessed to see all members.
If a value set binding has a DYNAMIC stability, implementers creating a CDA document must go to the location in the URL to check for the most current version of the value set expansion.
Value Set Definitions and Expansions
Note: Core Principles and Properties of HL7 Version 3 Models
Two approaches can be used to define the contents of a Value Set:
- Extensional Definition: Explicitly enumerating each of the Value Set concepts.
- An Extensional Definition is an enumeration of all of the concepts within the Value Set. Value Sets defined by extension are composed of explicitly enumerated sets of concept representations (with the Code System in which they are valid). The simplest case is when the Value Set consists of only one code.
- Intensional Definition: Defining an algorithm that, when executed by a machine (or interpreted by a human being), yields such a set of elements.
- An Intensional Definition is a set of rules that can be expanded (ideally computationally) to an exact list of concept representations at a particular point in time.
To obtain a list of enumerated concepts, Value Sets must be expanded. This means that the Value Set Definition must be converted to a list of concept representations at a point in time. This list usually consists of codes so that the Value Set Expansion may be used in populating or validating communicated model instances, but may alternatively be a list of designations. While this is straightforward for extensional Value Set Definitions, an intensional Value Set Definition must be resolved to a Value Set Expansion by processing the rules contained in the Value Set Definition. This process should record the exact set of definitional rules used to resolve the Value Set using the specified definition version (see below). Value Set Expansion can be done as early as the point of Value Set definition or as late as run time. For intensional Value Sets, the set of concepts contained in the expansion will generally change when the definition is changed (a new version of the Value Set Definition), but also may change with the identical version of the definition if the underlying code systems change, and the changes are part of the Value Set Expansion. This can be controlled if the definition statement refers to specific code system versions, thereby prohibiting the expansion from changing when the code system changes with a new version release.
See Core Principles and Properties of HL7 Version 3 Models for additional details.
How to extend Value Sets
- ? Coded with Extensibility / no Extensions ? or other topics ?
- If needed: Example binding
- We must use NI as a nullFlavor instead on UNC (uncoded). Write a note on this. - added to the note in 4.3 Uncoded information, which should be sufficient
- ↑ Cite error: Invalid
<ref>
tag; no text was provided for refs namedteits
- ↑ HL7 Version 3 Publishing Facilitator's Guide http://www.hl7.org/v3ballot/html/help/pfg/pfg.htm
- ↑ ISO/TS 13582:2013 Health informatics -- Sharing of OID registry information
- ↑ Cite error: Invalid
<ref>
tag; no text was provided for refs namedccda21
- ↑ HL7 V3 Normative Edition 2010 http://www.hl7.org/memonly/downloads/v3edition.cfm
Cite error: <ref>
tags exist for a group named "Figure", but no corresponding <references group="Figure"/>
tag was found, or a closing </ref>
is missing