XML Implementation Technology Specification - Data Types

HL7
HL7 V3 XMLITSDT, R1-2004
4/8/2004
Retired HL7 standard
Editor Gunther Schadow
gunther@aurora.rg.iupui.edu
Regenstrief Institute for Health Care
Editor Paul Vincent Biron
Paul.V.Biron@kp.org
Kaiser Permanente
Editor Grahame Grieve
grahame@kestral.com.au
Kestral Computing P/L
Editor Doug Pratt
doug.pratt@smed.com
Siemens Medical Solutions, Health Services Co.

Table of Contents

2.2.1  Examples
2.5.4  Charset : CS
2.5.11  Examples
2.6.11  Examples
2.7.7  Examples
2.8.8  Examples
2.10.9  Examples
2.11.1  Code : ST
2.11.9  Examples
2.12.1  Name : CV
2.12.2  Value : CD
2.12.4  Examples
2.14.4  Examples
2.15.1  Root : UID
2.15.5  Examples
2.16.2  Examples
2.17.2  Use : SET<CS>
2.17.3  Examples
2.18.3  Examples
2.19.1  Use : SET<CS>
2.19.4  Examples
2.20.4  Examples
2.21.1  Use : SET<CS>
2.21.3  Examples
2.22.3  Examples
2.23.3  Examples
2.24.3  Examples
2.28.1  Value : REAL
2.28.4  Examples
2.29.1  Value : REAL
2.29.8  Examples
2.30.1  Value : REAL
2.30.2  Currency : CS
2.30.3  Examples
2.31.3  Examples
2.32.1  Examples
3.1  Set (SET)
3.1.1  Examples
3.2.2  Examples
3.3.1  Examples
3.4.1  Head : T
3.4.5  Examples
3.5.1  Origin : T
3.5.4  Examples
3.6  Bag (BAG)
3.6.1  Examples
3.7.2  Examples
3.8.3  Center : T
3.8.5  Examples
4.1.1  Phase : IVL
4.1.5  Examples
4.2.1  Event : CS
4.2.3  Examples
4.3.2  Examples

Appendices

A.2.1  Examples

Preface

 

i

Preface

   

This document specifies the HL7 Version 3 Data Types in the context of their XML Implementation Technology Specification (ITS). Although ITS dependent, this document can stand on its own for the purpose of this ballot.

   

This document is based on the Data Types Abstract Specification, which defines the data types on an abstract layer independent from representation.

   

Vocabulary tables within this specification list the current contents of vocabulary domains for ease of reference by the reader. However, at any given time the normative source for these domains is the vocabulary tables in the RIM database. For some large domains, only a sample of possible values is shown. The complete domains can be referenced in the vocabulary tables by looking up the domain name associated with the table in the RIM vocabulary tables.

 

ii

Acknowledgements

   

The following persons served as co-editors of this document or have otherwise made major contributions to this specification. Wes Rishel (Gartner Group) has driven the initial forumlation of the approach. Paul V. Biron (Kaiser Permanente) has prepared the first ballot draft and continued to be a major support in all XML matters. Douglas Pratt (Siemens) has contributed the initial distillation of the abstract definitions. Gunther Schadow (Regenstrief Institute, Inc.) has done most of the editing, document automation, and maintenance during the many ballot cycles. Major contributions of thought are from Mark Tucker (Regenstrief Institute). Lloyd McKenzie (IBM), and Grahame Grieve (Kestral Computing Pty. Ltd.) have helped in the cleaning up of many aspects of the recent ballot draft.

 

1

Introduction

   

What is a Data Type? Data types are the basic building blocks used to construct messages, computerized patient record documents, business objects and their transactions. Data types define the meaning of any given field's value. Without knowing a field's data type, it is impossible to interpret the field's value.

   

Representation of Data Values. On an abstract layer, independent from representation, data types define properties of values. When values are represented, some of their properties are directly represented as atomic literal forms or as data structures. At that point we call those properties "components". On the representation layer we can also distinguish simple data types, represented as atomic literal forms, from complex ones, represented as structures with components. For the implementor, it is important to realize that data types have more properties than shown as components, and that it only depends on the implementation technology and ITS specification what data types are simple or complex and which of their properties are represented as "components" and which are inferred from those components.

   

This specification defines standard representations for data values in XML only. Other ITS, and programming environments may choose different representations and data structures, all of which must be consistent with the Data Types Abstract Specification.

 

1.1

Organization of this Specification

   

This specification is divided in two major parts:

   
  1. Basic data types
  2. Generic data types (templates)
   

The fully specified data types are organized approximately in the same order in which they appear in the Data Types Abstract Specification, divided in roughly three categories: (1) boolean, binary, text and multimedia, (2) codes and identifiers, and (3) quantitative data types.

   

Generic types are about collections (sets, lists, etc.) and common data type extensions to deal with uncertainty, time-dependency and other qualifications of data values. Finally, the framework of specifying complex timing patterns (e.g., for scheduling periodic activities) is mostly specified in terms of generic data types.

   

The following table lists all data types specified in the XML ITS.

   
  Table 1: Overview of HL7 version 3 data types
Name Symbol Description
Data Value ANY Defines the basic properties of every data value. This is an abstract type, meaning that no value can be just a data value without belonging to any concrete type. Every concrete type is a specialization of this general abstract DataValue type.
Boolean BL The Boolean type stands for the values of two-valued logic. A Boolean value can be either true or false, or, as any other value may be NULL.
BooleanNonNull BN The BooleanNonNull type is used where a Boolean cannot have a null value. A Boolean value can be either true or false.
Binary Data BIN Binary data is a raw block of bits. Binary data is a protected type that MUST not be used outside the data type specification.
Encapsulated Data ED Data that is primarily intended for human interpretation or for further machine processing is outside the scope of HL7. This includes unformatted or formatted written language, multimedia data, or structured information as defined by a different standard (e.g., XML-signatures.) Instead of the data itself, an ED may contain only a reference (see TEL.) Note that the ST data type is a specialization of ED when the mediaType is text/plain.
Character String ST The character string data type stands for text data, primarily intended for machine processing (e.g., sorting, querying, indexing, etc.) Used for names, symbols, and formal expressions.
Coded Simple Value CS Coded data in its simplest form, consists of a code. The code system and code system version is fixed by the context in which the CS value occurs. CS is used for coded attributes that have a single HL7-defined value set.
Coded Value CV Coded data, consists of a code, display name, code system, and original text. Used when a single code value must be sent.
Coded Ordinal CO Coded data, where the domain from which the codeset comes is ordered. The Coded Ordinal data type adds semantics related to ordering so that models that make use of such domains may introduce model elements that involve statements about the order of the terms in a domain.
Coded with Equivalents CE Coded data, consists of a coded value (CV) and, optionally, coded value(s) from other coding systems that identify the same concept. Used when alternative codes may exist.
Concept Descriptor CD A concept descriptor represents any kind of concept usually by giving a code defined in a code system. A concept descriptor can contain the original text or phrase that served as the basis of the coding and one or more translations into different coding systems. A concept descriptor can also contain qualifiers to describe, e.g., the concept of a "left foot" as a postcoordinated term built from the primary code "FOOT" and the qualifier "LEFT". In exceptional cases, the concept descriptor need not contain a code but only the original text describing that concept.
Concept Role CR A concept qualifier code with optionally named role. Both qualifier role and value codes must be defined by the coding system. For example, if SNOMED RT defines a concept "leg", a role relation "has-laterality", and another concept "left", the concept role relation allows to add the qualifier "has-laterality: left" to a primary code "leg" to construct the meaning "left leg".
Character String with Code SC An ST that optionally may have a code attached. The text must always be present if a code is present. The code is often a local code.
Unique Identifier String UID A unique identifier string is a character string which identifies an object in a globally unique and timeless manner. The allowable formats and values and procedures of this data type are strictly controlled by HL7. At this time, user-assigned identifiers may be certain character representations of ISO Object Identifiers (OID) and DCE Universally Unique Identifiers (UUID). HL7 also reserves the right to assign other forms of UIDs (RUID, such as mnemonic identifiers for code systems.
Instance Identifier II 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.
Universal Resource Locator URL A telecommunications address specified according to Internet standard RFC 1738 [http://www.ietf.org/rfc/rfc1738.txt]. The URL specifies the protocol and the contact point defined by that protocol for the resource. Notable uses of the telecommunication address data type are for telephone and telefax numbers, e-mail addresses, Hypertext references, FTP references, etc.
Telecommunication Address TEL A telephone number (voice or fax), e-mail address, or other locator for a resource (information or service) mediated by telecommunication equipment. The address is specified as a URL qualified by time specification and use codes that help in deciding which address to use for a given time and purpose.
Address Part ADXP A character string that may have a type-tag signifying its role in the address. Typical parts that exist in about every address are street, house number, or post box, postal code, city, country but other roles may be defined regionally, nationally, or on an enterprise level (e.g. in military addresses). Addresses are usually broken up into lines, which are indicated by special line-breaking delimiter elements (e.g., DEL).
Postal Address AD Mailing and home or office addresses. A sequence of address parts, such as street or post office Box, city, postal code, country, etc.
Entity Name Part ENXP A character string token representing a part of a name. May have a type code signifying the role of the part in the whole entity name, and a qualifier code for more detail about the name part type. Typical name parts for person names are given names, and family names, titles, etc.
Entity Name EN A name for a person, organization, place or thing. A sequence of name parts, such as given name or family name, prefix, suffix, etc. Examples for entity name values are "Jim Bob Walton, Jr.", "Health Level Seven, Inc.", "Lake Tahoe", etc. An entity name may be as simple as a character string or may consist of several entity name parts, such as, "Jim", "Bob", "Walton", and "Jr.", "Health Level Seven" and "Inc.", "Lake" and "Tahoe".
Person Name PN A name for a person. A sequence of name parts, such as given name or family name, prefix, suffix, etc. PN differs from EN because the qualifier type cannot include LS (Legal Status).
Organization Name ON A name for an organization. A sequence of name parts.
Trivial Name TN A restriction of entity name that is effectively a simple string used for a simple name for things and places.
Quantity QTY QTY is an abstract generalization for all data types (1) whose value set has an order relation (less-or-equal) and (2) where difference is defined in all of the data type's totally ordered value subsets. The quantity type abstraction is needed in defining certain other types, such as the interval and the probability distribution.
Integer Number INT Integer numbers (-1,0,1,2, 100, 3398129, etc.) are precise numbers that are results of counting and enumerating. Integer numbers are discrete, the set of integers is infinite but countable. No arbitrary limit is imposed on the range of integer numbers. Two NULL flavors are defined for the positive and negative infinity.
Real Number REAL Fractional numbers. Typically used whenever quantities are measured, estimated, or computed from other real numbers. The typical representation is decimal, where the number of significant decimal digits is known as the precision. Real numbers are needed beyond integers whenever quantities of the real world are measured, estimated, or computed from other real numbers. The term "Real number" in this specification is used to mean that fractional values are covered without necessarily implying the full set of the mathematical real numbers.
Physical Quantity PQ A dimensioned quantity expressing the result of a measurement act.
Physical Quantity Representation PQR A representation of a physical quantity in a unit from any code system. Used to show alternative representation for a physical quantity.
Monetary Amount MO A monetary amount is a quantity expressing the amount of money in some currency. Currencies are the units in which monetary amounts are denominated in different economic regions. While the monetary amount is a single kind of quantity (money) the exchange rates between the different units are variable. This is the principle difference between physical quantity and monetary amounts, and the reason why currency units are not physical units.
Ratio RTO A quantity constructed as the quotient of a numerator quantity divided by a denominator quantity. Common factors in the numerator and denominator are not automatically cancelled out. RTO supports titers (e.g., "1:128") and other quantities produced by laboratories that truly represent ratios. Ratios are not simply "structured numerics", particularly blood pressure measurements (e.g. "120/60") are not ratios. In many cases REAL should be used instead of RTO.
Point in Time TS A quantity specifying a point on the axis of natural time. A point in time is most often represented as a calendar expression.
Set SET A value that contains other distinct values in no particular order.
Set Component SXCM An ITS-defined generic type extension for the base data type of a set, representing a component of a general set over a discrete or continuous value domain. Its use is mainly for continuous value domains. Discrete (enumerable) set components are the individual elements of the base data type.
Sequence LIST A value that contains other discrete values in a defined sequence.
Generated Sequence GLIST A periodic or monotone sequence of values generated from a few parameters, rather than being enumerated. Used to specify regular sampling points for biosignals.
Sampled Sequence SLIST A sequence of sampled values scaled and translated from a list of integer values. Used to specify sampled biosignals.
Bag BAG An unordered collection of values, where each value can be contained more than once in the bag.
Bag Item BXIT An ITS-defined generic data type extension that represents a collection of a certain number of identical items in a bag.
Interval IVL A set of consecutive values of an ordered base data type.
Interval Boundary IVXB An ITS-defined generic type extension representing the boundary value for an interval.
History HIST A set of data values that conform to the history item (HXIT) type, (i.e., that have a valid-time property). The history information is not limited to the past; expected future values can also appear.
History Item HXIT A generic data type extension that tags a time range to any data value of any data type. The time range is the time in which the information represented by the value is (was) valid.
Uncertain Value - Probabilistic UVP A generic data type extension used to specify a probability expressing the information producer's belief that the given value holds.
Non-Parametric Probability Distribution NPPD A set of uncertain values with probabilities (also known as a histogram).
Periodic Interval of Time PIVL An interval of time that recurs periodically. Periodic intervals have two properties, phase and period. The phase specifies the "interval prototype" that is repeated every period.
Event-Related Interval of Time EIVL Specifies a periodic interval of time where the recurrence is based on activities of daily living or other important events that are time-related but not fully determined by time.
Parenthetic Set Expression SXPR A set-component that is itself made up of set-components that are evaluated as one value.
Parametric Probability Distribution PPD A generic data type extension specifying uncertainty of quantitative data using a distribution function and its parameters. Aside from the specific parameters of the distribution, a mean (expected value) and standard deviation is always given to help maintain a minimum layer of interoperability if receiving applications cannot deal with a certain probability distribution.
General Timing Specification GTS A set of points in time, specifying the timing of events and actions and the cyclical validity-patterns that may exist for certain kinds of information, such as phone numbers (evening, daytime), addresses (so called "snowbirds," residing closer to the equator during winter and farther from the equator during summer) and office hours.
   

Element and Attibute Forms

   

Data types may be represented in either an Element form or an abbreviated Attribute form. The context where the data type is used will define which form is to be used.

   

In the Element form, which is the normal case, the data type is represented using an XML elment. This is usually encountered for high-level HL7 content derived from the Reference Information Model (RIM).

   

In the abbreviated Attribute form, the data type is represented by a single XML attribute. This form is used when the data type is a property of other data types or when the data type is used in a Stuctutral RIM attribute. If an Attribute form is allowed, it is defined in the narrative.

   

Any data types represented in an Attribute form cannot convey any form of null flavor. If the attribute is not present in the XML instance then the data type has a null flavor of NI.

 

1.2

Defining the XML Representation of Data Types

   

This standard specifies the XML representation for the HL7 data types. The XML representation is described in several different ways:

   
  • Narrative
  • Template
   

XML Templates

   

The XML Template format used in this document has been adapted from the format used in the W3C XML Schema specification.

   
Type Template 1
<!-- type ED -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   representation = (B64 | TXT) : TXT
   language = CS
   mediaType = CS
   compression = CS
   integrityCheck = BIN
   integrityCheckAlgorithm = (SHA-1 | SHA-256) : SHA-1
   >
  Content: ( reference, thumbnail, (#PCDATA | any) )
</x>

<!-- type EN -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   use = CS*
   >
  Content: ( (delimiter | family | given | prefix | suffix)*, validTime )
</x>
   

This example template shows the attributes and elements for the ED and EN types. The template describes a set of XML attributes and elements that may be used to represent the semantics of the data type described in the Data Types Abstract Specification. There may not be a direct mapping between the XML attributes and elements and the properties of the type described in the Data Types Abstract Specification. If the name of the XML attribute or element matches a property name in the Data Types Abstract Specification then the semantics of the content will be as described in the Data Types Abstract Specification, otherwise the narrative will explain the use of the attribute or element.

   

This specification describes types, not elements, so the element name for a given type is not known. The character x is used in place of the element name, which will be determined by the context in which the type is used, either in this specification, or the name of the RIM attribute.

   

For each attribute, the XML name of the attribute is shown, followed by either a set of possible values or a type name. Allowed values are shown separated by vertical bars between parentheses. A default value, if applicable, is specified following a colon. If the attribute is assigned a type, then it is represented using the Attribute format described for the specified type. Some attributes are given the type CS*. For these attributes, the valid content is a whitespace separated list of CS codes.

   

For the element and text content, only the element names are shown. The type of the elements is described in the narrative associated with the type. The presence of a * denotes that the element or set of elements grouped by parentheses may appear more than once.

   

Some types may contain text data. This is represented using #PCDATA. Any text content must be properly escaped character content with no markup.

   

All attributes and elements are optional. If an attribute or element is not present, then the data type property it represents has the nullFlavor NI. Although all attributes and elements are optional, the datatype represented in the XML instance must be a valid instance of the datatype - it must meet all the constraints and specifications from the Data Types Abstract Specification.

   

The rules which determine which data types can be substituted for other data types are defined in the Data Types Abstract Specification.

   

Validation against Schema and Predicates

   

HL7 artefact processing systems are not required to validate any HL7 XML data type representations against any schema or XPath predicates. Systems may wish to perform schema validation to gain access to the Post Schema Validation Instance [http://www.w3.org/TR/xmlschema-1#key-psvi], but there will be no requirement to do this in order to properly understand the message, though all systems must be aware of the default values that are not represented in the instance by some means.

   
NOTE: All XML data type representations must conform to this specification irrespective of whether validation by schema or any other method is being performed.
   
NOTE: No existing technology for validating XML is able to completely validate the HL7 data types as represented in XML.
 

1.3

Namespaces used in this document

   
xml http://www.w3.org/XML/1998/namespace xml namespace defined in Namespaces in XML [http://www.w3.org/TR/1999/REC-xml-names-19990114]
xs http://www.w3.org/2001/XMLSchema W3C Schema namespace defined in XML Schema Part 1: Structures [http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/]
xsi http://www.w3.org/2001/XMLSchema-instance W3C Schema namespace defined in XML Schema Part 1: Structures [http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/]
hl7 urn:hl7-org:v3 HL7 defined namespace for V3
 

1.4

Use of attributes from XML specifications

   

The W3C XML specifications define several attributes in w3c namespaces that carry particular meaning when processing XML documents. This section documents the usage for several such attributes. Other attributes not described in this section may be used but HL7 artefact processing systems are not required to attach any meaning to them beyond that required in the context of processing the XML containing the HL7 artefacts.

   

xml:lang is not used. HL7 uses it's own attribute to convey the HL7 langauge property. This is done for several reasons. Many existing tools do not properly support xml:lang, and using xml:lang provides no useful outcomes. In addition, using a CS instead of xml:lang provides clear support for the realm variation by international HL7 affiliates. Note that at present, the codeset of language is identical to that of xml:lang so it is possible to transform from one to the other.

   

xsi:schemaLocation must not be used in an instance to point to a schema document to be used for validation. Instance processors are expected to provide their own schemas.

   

xsi:type is required when:

   
  • The type of the RIM attribute is ANY, RTO, or QTY
  • An instance of an SC is being sent as a promotion of an ST
   

xsi:type may be used at other times according to the XML Schema specification.

   

When xsi:type is used to describe a data type defined in this specification, the correct type name is the value of the "Symbol" column for the type as given in Table 1 in the hl7 namespace.

   

For generic types, the type names of the parameter types are appended to the generic type with an underscore between, so that an IVL<TS> becomes IVL_TS. No ambiguities arise with this naming scheme due to the way that the data types have been defined.

 

2

Basic Data Types

 

2.1

Data Value (ANY)

   

Definition:      Defines the basic properties of every data value. This is an abstract type, meaning that no value can be just a data value without belonging to any concrete type. Every concrete type is a specialization of this general abstract DataValue type.

   
XML Representation

   

ANY is an abstract datatype and may not be used directly; hence, ANY has no XML representation.

 

2.1.1

Null Flavor : CS

   

Definition:      An exceptional value expressing missing information and possibly the reason why the information is missing.

   

Every data element has either a proper value or it is considered NULL. If and only if it is NULL, a "null flavor" provides more detail as to in what way or why no proper value is supplied.

   
  Table 2: Domain NullFlavor
code name definition
NI NoInformation No information whatsoever can be inferred from this exceptional value. This is the most general exceptional value. It is also the default exceptional value.
  OTH other The actual value is not an element in the value domain of a variable. (e.g., concept not provided by required code system).
    NINF negative infinity Negative infinity of numbers.
    PINF positive infinity Positive infinity of numbers.
  UNK unknown A proper value is applicable, but not known.
    ASKU asked but unknown Information was sought but not found (e.g., patient was asked but didn't know)
      NAV temporarily unavailable Information is not available at this time but it is expected that it will be available later.
    NASK not asked This information has not been sought (e.g., patient was not asked)
    TRC trace The content is greater than zero, but too small to be quantified.
  MSK masked There is information on this item available but it has not been provided by the sender due to security, privacy or other reasons. There may be an alternate mechanism for gaining access to this information.Note: using this null flavor does provide information that may be a breach of confidentiality, even though no detail data is provided. Its primary purpose is for those circumstances where it is necessary to inform the receiver that the information does exist without providing any detail.
  NA not applicable No proper value is applicable in this context (e.g., last menstrual period for a male).
NP not present Value is not present in a message. This is only defined in messages, never in application data! All values not present in the message must be replaced by the applicable default, or no-information (NI) as the default of all defaults.
   
XML Representation

   

nullFlavor is represented by the XML attributenullFlavor whose value, if present, must be a valid value from the NullFlavor domain (Table 2).

 

2.2

Boolean (BL)

   

Definition:      The Boolean type stands for the values of two-valued logic. A Boolean value can be either true or false, or, as any other value may be NULL.

   

All Boolean values obey the common operators negation, conjunction, and disjunction. With the NULL value these common Boolean operations are extended as shown in the following tables.

   
  Table 3: Truth tables for Boolean logic with NULL values
NOT   AND true false NULL OR true false NULL
true false true true false NULL true true true true
false true false false false false false true false NULL
NULL NULL NULL NULL false NULL NULL true NULL NULL
   
XML Representation

   

BL is represented by both Element and Attribute forms. In the Element form, the name of the element is determined by the context in which it is used. The element has attributes as described in the template and the sub-sections below.

   
Type Template 2
<!-- type BL -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   value = (true | false)
   />
   

XML instances may carry either a nullFlavor or a value, but not both.

   

The Attribute form of BL is used when properties of other data types have type BL. The name of the attribute is determined by the context in which it is used. The attribute must have the value true or false.

 

2.2.1

Examples

   

The first example shows true and false negation and context conduction indicators.

   
Example 1
<negationInd value='true'/>
<contextConductionInd value='false'/>
   

The second example shows the use of true and false inclusive interval boundaries.

   
Example 2
<effectiveTime>
   <low value='20020101' inclusive='true'/>
   <high value='20040101' inclusive='false'/>
</effectiveTime>
 

2.3

BooleanNonNull (BN)

   

Definition:      The BooleanNonNull type is used where a Boolean cannot have a null value. A Boolean value can be either true or false.

   
XML Representation

   

BN is represented by both Element and Attribute forms. In the Element form, the name of the element is determined by the context in which it is used. The element has attributes as described in the template and the sub-sections below.

   
Type Template 3
<!-- type BN -->
<x
   value = (true | false)
   />
   

XML instances must carry a value.

   

The Attribute form of BN is used when properties of other data types have type BN. The name of the attribute is determined by the context in which it is used and whose value is either true or false. Unless the value has a default property the attribute must be present.

 

2.4

Binary Data (BIN)

   

Definition:      Binary data is a raw block of bits. Binary data is a protected type that MUST not be used outside the data type specification.

   
  Table 4: Components of Binary Data
Name Type Description
data XML Text Content The data itself represented in the XML instance encoding according to the binary data representation element (text or base64 form.) ST and types that specialize ST use only the text representation.
representation CS Specifies the representation of the binary data that is the content of the binary data value.
   
XML Representation

   

BIN is represented by both Element and Attribute forms. The Element form serves as the basis of the encapsulated data type, used for both written text and multimedia (binary data). When an element is defined to be of type that property is represented as the character data (e.g., #PCDATA) content of the element in question.

   

The Attribute form of BIN is used when properties of other data types have type BIN (e.g., ED.integrityCheck). The name of the XML attribute is determined by the name of the property in question. The value of the XML attribute must be the base64 encoding [http://www.ietf.org/rfc/rfc2045.txt] of the binary data.

 

2.4.1

Data : XML Text Content

   

Definition:      The data itself represented in the XML instance encoding according to the binary data representation element (text or base64 form.) ST and types that specialize ST use only the text representation.

   
XML Representation

   

data is represented as the text content of the XML element representing the BIN value, whose value, if present must be the base64 encoding of the actual value.

 

2.4.2

Representation : CS

   

Definition:      Specifies the representation of the binary data that is the content of the binary data value.

   

BIN in the Data Types Abstract Specification does not have a representation property since, for HL7's purposes, representation is not a meaningful property of data. Therefore applications need not retain the representation.

   
XML Representation

   

representation is represented by the XML attributerepresentation whose value, if present, must be TXT or B64. The default value is TXT.

   

TXT indicates that the character data of the BIN is to be interpreted directly as characters; B64 indicates that the BIN data has been base64 encoded and must be decoded in order to recover the original data.

 

2.5

Encapsulated Data (ED) specializes BIN

   

Definition:      Data that is primarily intended for human interpretation or for further machine processing is outside the scope of HL7. This includes unformatted or formatted written language, multimedia data, or structured information as defined by a different standard (e.g., XML-signatures.) Instead of the data itself, an ED may contain only a reference (see TEL.) Note that the ST data type is a specialization of ED when the mediaType is text/plain.

   
  Table 5: Components of Encapsulated Data
Name Type Description
data XML Text Content The data itself represented in the XML instance encoding according to the binary data representation element (text or base64 form.) ST and types that specialize ST use only the text representation.
representation CS Specifies the representation of the binary data that is the content of the binary data value.
mediaType CS Identifies the type of the encapsulated data and identifies a method to interpret or render the data.
charset CS For character-based encoding types, this property specifies the character set and character encoding used. The charset shall be identified by an Internet Assigned Numbers Authority (IANA) Charset Registration [http://www.iana.org/assignments/character-sets] in accordance with RFC 2978 [http://www.ietf.org/rfc/rfc2978.txt].
language CS For character based information the language property specifies the human language of the text.
compression CS Indicates whether the raw byte data is compressed, and what compression algorithm was used.
reference TEL A telecommunication address (TEL), such as a URL for HTTP or FTP, which will resolve to precisely the same binary data that could as well have been provided as inline data.
integrityCheck BIN The integrity check is a short binary value representing a cryptographically strong checksum that is calculated over the binary data. The purpose of this property, when communicated with a reference is for anyone to validate later whether the reference still resolved to the same data that the reference resolved to when the encapsulated data value with reference was created.
integrityCheckAlgorithm CS Specifies the algorithm used to compute the integrityCheck value.
thumbnail ED A thumbnail is an abbreviated rendition of the full data. A thumbnail requires significantly fewer resources than the full data, while still maintaining some distinctive similarity with the full data. A thumbnail is typically used with by-reference encapsulated data. It allows a user to select data more efficiently before actually downloading through the reference.
   

Encapsulated data can be present in one of two forms, inline or by reference. Inline data is communicated or moved as part of the encapsulated data value, whereas by-reference data may reside at a different (remote) location. The data is the same whether it is located inline or remote.

   
XML Representation

   
Type Template 4
<!-- type ED -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   representation = (B64 | TXT) : TXT
   language = CS
   mediaType = CS
   compression = CS
   integrityCheck = BIN
   integrityCheckAlgorithm = (SHA-1 | SHA-256) : SHA-1
   >
   Content: ( reference, thumbnail, (#PCDATA | any) )
</x>
   

ED is always represented in Element form as described in the template and sub-sections below. The binary data is conveyed as inline character content. Alternatively addition ED can contain the data as XML markup. In these cases the mediaType is expected to describe some form of XML markup, and the content must be well-formed XML contained in a single element in the ED content. If the in-line content is HTML or SGML, it must be well-formed XML or it must be represented as escaped or base64 encoded character content.

   

Markup contained in an ED can come from any namespace other than the HL7 V3 namespace (urn:hl7-org:v3) without restriction. Additionally, any element in the HL7 namespace that represents an interaction or the root of a CDA document may also appear. The reason for this restriction on elements from the HL7 namespace is to help support those who choose to do optional XML Schema processing. It would not be possible to write a schema definition that would allow arbitrary content from the HL7 namespace since that would result in a violation of Schema Component Constraint: Unique Particle Attribution.

   

Because inline data for ED (and its restricted form, ST) may be encoded as character data, and the content model also includes a thumbnail and reference element, ED has mixed content. An instance of ED may only contain at most one text node.

 

2.5.1

Data : XML Text Content (inherited from BIN)

   

Definition:      The data itself represented in the XML instance encoding according to the binary data representation element (text or base64 form.) ST and types that specialize ST use only the text representation.

   
XML Representation

   

data is represented as the text content of the XML element representing the ED value.

 

2.5.2

Representation : CS (inherited from BIN)

   

Definition:      Specifies the representation of the binary data that is the content of the binary data value.

   
XML Representation

   

representation is represented by the XML attributerepresentation whose value must either TXT or B64.

 

2.5.3

Media Type : CS

   

Definition:      Identifies the type of the encapsulated data and identifies a method to interpret or render the data.

   

The IANA defined domain of media types is established by the Internet standard RFC 2046 [http://www.ietf.org/rfc/rfc2046.txt].

   

To promote interoperability, this specification prefers certain media types to others. This is to define a greatest common denominator on which interoperability is not only possible, but that is powerful enough to support even advanced multimedia communication needs.

   

Table 6 below assigns a status to certain MIME media types, where the status means one of the following:

   

required: Every HL7 application must support at least the required media types if it supports a given kind of media. One required media-type for each kind of media exists. Some media types are required for a specific purpose, which is then indicated as "required for ..."

   

recommended: Other media types are recommended for a particular purpose. For any given purpose there should be only very few additionally recommended media types and the rationale, conditions and assumptions of such recommendations must be made very clear.

   

indifferent: This status means, HL7 does neither forbid nor endorse the use of this media type. All media types not mentioned here by default belong into the indifferent category. Since there is one required and several recommended media types for most practically relevant use cases, media types of this status should be used very conservatively.

   

deprecated: Deprecated media types should not be used, because these media types are flawed, because there are better alternatives, or because of certain risks. Such risks could be security risks, for example, the risk that such a media type could spread computer viruses. Not every flawed media type is marked as deprecated, though. A media type that is not mentioned, and thus considered other by default, may well be flawed.

   
  Table 6: Domain MediaType
code name status definition
text/plain  Plain Text  required  For any plain text. This is the default and is equivalent to a character string (ST) data type. 
text/html  HTML Text  recommended  For marked-up text according to the Hypertext Mark-up Language. HTML markup is sufficient for typographically marking-up most written-text documents. HTML is platform independent and widely deployed. 
text/x-hl7-ft  HL7 Text  recommended  For compatibility, this represents the HL7 v2.x FT data type. Its use is recommended only for backward compatibility with HL7 v2.x systems. 
text/xml  XML Text  indifferent  For structured character based data. There is a risk that general SGML/XML is too powerful to allow a sharing of general SGML/XML documents between different applications. 
text/rtf  RTF Text  indifferent  The Rich Text Format is widely used to share word-processor documents. However, RTF does have compatibility problems, as it is quite dependent on the word processor. May be useful if word processor edit-able text should be shared. 
text/sgml  SGML Text  indifferent  For structured character based data. There is a risk that general SGML/XML is too powerful to allow a sharing of general SGML/XML documents between different applications. 
image/png  PNG Image  required  Portable Network Graphics (PNG) [http://www.cdrom.com/pub/png] is a widely supported lossless image compression standard with open source code available. 
image/jpeg  JPEG Image  required  This format is required for high compression of high color photographs. It is a "lossy" compression, but the difference to lossless compression is almost unnoticeable to the human vision. 
image/g3fax  G3Fax Image  recommended  This is recommended only for fax applications. 
image/gif  GIF Image  indifferent  GIF is a popular format that is universally well supported. However GIF is patent encumbered and should therefore be used with caution. 
image/tiff  TIFF Image  indifferent  Although TIFF (Tag Image File Format) is an international standard it has many interoperability problems in practice. Too many different versions that are not handled by all software alike. 
audio/basic  Basic Audio  required  This is a format for single channel audio, encoded using 8bit ISDN mu-law [PCM] at a sample rate of 8000 Hz. This format is standardized by: CCITT, Fascicle III.4 -Recommendation G.711. Pulse Code Modulation (PCM) of Voice Frequencies. Geneva, 1972. 
audio/mpeg  MPEG audio layer 3  required  MPEG-1 Audio layer-3 is an audio compression algorithm and file format defined in ISO 11172-3 and ISO 13818-3. MP3 has an adjustable sampling frequency for highly compressed telephone to CD quality audio. 
audio/k32adpcm  K32ADPCM Audio  indifferent  ADPCM allows compressing audio data. It is defined in the Internet specification RFC 2421 [ftp://ftp.isi.edu/in-notes/rfc2421.txt]. Its implementation base is unclear. 
video/mpeg  MPEG Video  required  MPEG is an international standard, widely deployed, highly efficient for high color video; open source code exists; highly interoperable. 
video/x-avi  X-AVI Video  deprecated  The AVI file format is just a wrapper for many different codecs; it is a source of many interoperability problems. 
model/vrml  VRML Model  recommended  This is an openly standardized format for 3D models that can be useful for virtual reality applications such as anatomy or biochemical research (visualization of the steric structure of macromolecules) 
application/pdf  PDF  recommended  The Portable Document Format is recommended for written text that is completely laid out and read-only. PDF is a platform independent, widely deployed, and open specification with freely available creation and rendering tools. 
application/dicom  DICOM  recommended  Digital Imaging and Communications in Medicine (DICOM) MIME type defined in RFC3240 [http://ietf.org/rfc/rfc3240.txt]. 
application/msword  MSWORD  deprecated  This format is very prone to compatibility problems. If sharing of edit-able text is required, text/plain, text/html or text/rtf should be used instead. 
multipart/x-hl7-cda-level1  CDA Level 1 Multipart  recommended  The HL7 clinical document Architecture, Level 1 MIME package. 
   

The set of required media types is very small so that no undue requirements are forced on HL7 applications, especially legacy systems. In general, no HL7 application is forced to support any given kind of media other than written text. For example, many systems just do not want to receive audio data, because those systems can only show written text to their users. It is a matter of application conformance statements to say: "I will not handle audio". Only if a system claims to handle audio media, it must support the required media type for audio.

   
XML Representation

   

mediaType is represented by the XML attributemediaType whose value, if present, must be a valid mediaType as specified by the Internet standard RFC 2046 [http://www.ietf.org/rfc/rfc2046.txt]. The default value is text/plain.

 

2.5.4

Charset : CS

   

Definition:      For character-based encoding types, this property specifies the character set and character encoding used. The charset shall be identified by an Internet Assigned Numbers Authority (IANA) Charset Registration [http://www.iana.org/assignments/character-sets] in accordance with RFC 2978 [http://www.ietf.org/rfc/rfc2978.txt].

   
XML Representation

   

charset is not explicitly represented in the XML ITS. Rather, the value of charset is to be inferred from the encoding used in the XML entity in which the ED value is contained.

 

2.5.5

Language : CS

   

Definition:      For character based information the language property specifies the human language of the text.

   

The HL7 table for human languages is based on RFC 3066, Tags for the Identification of Languages [http://www.ietf.org/rfc/rfc3066.txt]. It is a set of pre-coordinated pairs of one 2-letter ISO 639 language code and one 2-letter ISO 3166 country code (e.g., en-us [English, United States]).

   

Language tags do not modify the meaning of the characters found in the text; they are only an advice on if and how to present or communicate the text. For this reason, any system or site that does not deal with multilingual text or names in the real world can safely ignore the language property.

   
XML Representation

   

language is represented by the XML attributelanguage whose value, if present, must be a valid language tag as defined by RFC 3066 [http://www.ietf.org/rfc/rfc3066.txt].

 

2.5.6

Compression : CS

   

Definition:      Indicates whether the raw byte data is compressed, and what compression algorithm was used.

   
  Table 7: Domain CompressionAlgorithm
code name status definition
DF  deflate  required  The deflate compressed data format as specified in RFC 1951 [http://www.ietf.org/rfc/rfc1951.txt]. 
GZ  gzip  indifferent  A compressed data format that is compatible with the widely used GZIP utility as specified in RFC 1952 [http://www.ietf.org/rfc/rfc1952.txt] (uses the deflate algorithm). 
ZL  zlib  indifferent  A compressed data format that also uses the deflate algorithm. Specified as RFC 1950 [http://www.ietf.org/rfc/rfc1952.txt] 
compress  deprecated  Original UNIX compress algorithm and file format using the LZC algorithm (a variant of LZW). Patent encumbered and less efficient than deflate. 
   
XML Representation

   

compression is represented as the XML attributecompression whose value, if present, must be a valid value from the CompressionAlgorithm domain (Table 7). There is no compression by default.

 

2.5.7

Reference : TEL

   

Definition:      A telecommunication address (TEL), such as a URL for HTTP or FTP, which will resolve to precisely the same binary data that could as well have been provided as inline data.

   

The semantic value of an encapsulated data value is the same, regardless whether the data is present inline data or just by-reference. However, an encapsulated data value without inline data behaves differently, since any attempt to examine the data requires the data to be downloaded from the reference.

   

An encapsulated data value may have both inline data and a reference. The reference must point to the same data as provided inline.

   
XML Representation

   

reference is represented as the XML elementreference which, if present, must be a valid TEL.

 

2.5.8

Integrity Check : BIN

   

Definition:      The integrity check is a short binary value representing a cryptographically strong checksum that is calculated over the binary data. The purpose of this property, when communicated with a reference is for anyone to validate later whether the reference still resolved to the same data that the reference resolved to when the encapsulated data value with reference was created.

   

The integrity check is calculated according to the integrity check algorithm. By default, the Secure Hash Algorithm-1 (SHA-1) shall be used. The integrity check is binary encoded according to the rules of the integrity check algorithm.

   

The integrity check is calculated over the raw binary data that is contained in the data component, or that is accessible through the reference. No transformations are made before the integrity check is calculated. If the data is compressed, the Integrity Check is calculated over the compressed data.

   
XML Representation

   

integrityCheck is represented by the XML attributeintegrityCheck whose value, if present, must be a valid BIN. There is no default value.

   

When generating instances, applications must base64 encode the integrity check prior to populating the XML attributeintegrityCheck. When receiving instances, applications must base64 decode the value of the XML attributeintegrityCheck to obtain the integrity check value.

 

2.5.9

Integrity Check Algorithm : CS

   

Definition:      Specifies the algorithm used to compute the integrityCheck value.

   
  Table 8: Domain IntegrityCheckAlgorithm
code name definition
SHA-1 secure hash algorithm - 1 This algorithm is defined in FIPS PUB 180-1: Secure Hash Standard. As of April 17, 1995.
SHA-256 secure hash algorithm - 256 This algorithm is defined in FIPS PUB 180-2: Secure Hash Standard.
   
XML Representation

   

integrityCheckAlgorithm is represented by the XML attributeintegrityCheckAlgorithm whose value must be a valid value from the IntegrityCheckAlgorithm domain (Table 8). The default value is SHA-1.

 

2.5.10

Thumbnail : ED

   

Definition:      A thumbnail is an abbreviated rendition of the full data. A thumbnail requires significantly fewer resources than the full data, while still maintaining some distinctive similarity with the full data. A thumbnail is typically used with by-reference encapsulated data. It allows a user to select data more efficiently before actually downloading through the reference.

   

For example, a large image may be represented by a small image; a high quality audio sequence by a shorter low-quality audio; a movie may be represented by a shorter clip (or just an image); text may be summarized to an abstract.

   

A thumbnail may not itself contain a thumbnail.

   
XML Representation

   

thumbnail is represented as the XML elementthumbnail which, if present, is a restricted form of ED that does not allow thumbnail children.

   
Type Template 5
<!-- internal type Thumbnail -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   representation = (B64 | TXT) : TXT
   language = CS
   mediaType = CS
   compression = CS
   integrityCheck = BIN
   integrityCheckAlgorithm = (SHA-1 | SHA-256) : SHA-1
   >
   Content: ( reference, (#PCDATA | any) )
</x>
 

2.5.11

Examples

   

The first example shows an Adobe Acrobat document that has been compressed using the GZip compression algorithm.

   
Example 3
<text mediaType='application/pdf' representation='B64' compression='GZ'>
   omSJUEdmde9j44zmMiromSJUEdmde9j44zmMirdMDSsWdIJdksIJR3373jeu83
   6edjzMMIjdMDSsWdIJdksIJR3373jeu83MNYD83jmMdomSJUEdmde9j44zmMir
   ...
   MNYD83jmMdomSJUEdmde9j44zmMir6edjzMMIjdMDSsWdIJdksIJR3373jeu83
   4zmMir6edjzMMIjdMDSsWdIJdksIJR3373jeu83==
</text>
   

The next example contains a reference to an image, stored at particular URL and available for the next month. An integrity check is provided for the image, as well as in inline thumbnail.

   
Example 4
<text mediaType='image/png' representation='B64'
      integrityCheck='aA5mb7c8TXtu392KMsaSa2MKkAwL5LKAo2d99azAs3MdUdw'>
   <reference value='http://example.org/xrays/128s8d9ej229se32s.png'>
      <useablePeriod xsi:type='IVL_TS'>
         <low value='200007200845'/>
         <high value='200008200845'/>
      </useablePeriod>
   </reference>
   <thumbnail mediaType='image/jpeg' representation='B64'>
      MNYD83jmMdomSJUEdmde9j44zmMir6edjzMMIjdMDSsWdIJdksIJR3373jeu83
      6edjzMMIjdMDSsWdIJdksIJR3373jeu83MNYD83jmMdomSJUEdmde9j44zmMir
      ...
      omSJUEdmde9j44zmMiromSJUEdmde9j44zmMirdMDSsWdIJdksIJR3373jeu83
      4zmMir6edjzMMIjdMDSsWdIJdksIJR3373jeu83==
   </thumbnail>
</text>
 

2.6

Character String (ST) specializes ED

   

Definition:      The character string data type stands for text data, primarily intended for machine processing (e.g., sorting, querying, indexing, etc.) Used for names, symbols, and formal expressions.

   
  Table 9: Components of Character String
Name Type Description
data XML Text Content The data itself represented in the XML instance encoding.
representation CS Specifies the representation of the binary data that is the content of the binary data value.
mediaType CS Identifies the type of the encapsulated data and identifies a method to interpret or render the data.
charset CS For character-based encoding types, this property specifies the character set and character encoding used. The charset shall be identified by an Internet Assigned Numbers Authority (IANA) Charset Registration [http://www.iana.org/assignments/character-sets] in accordance with RFC 2978 [http://www.ietf.org/rfc/rfc2978.txt].
language CS For character based information the language property specifies the human language of the text.
   

A character string must at least have one character or else it is NULL. The length of a string is the number of characters, not the number of encoded bytes.

   

ST interprets the encapsulated data as character data (as opposed to bits), depending on the charset property. In other words, the string S1 "Rose" is equal to the string S2 "Rose" even if S1 is ASCII encoded (hex '526f7365') and S2 is EBCDIC encoded (hex 'd996a285') or UTF-16 encoded (hex '0052006f00730065').

   
XML Representation

   

ST is represented by both Element and Attribute forms. In the Element form, the name of the XML element is determined by the context in which it is used. The element has attributes as described in the template and sub-sections below.

   
Type Template 6
<!-- type ST -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   representation = (TXT) : TXT
   mediaType = (text/plain) : text/plain
   language = CS
   >
   Content: ( #PCDATA )
</x>
   

The Attribute form of ST is used when properties of other data types have type ST. The name of the attribute is determined by the context in which it is used. The value of the attribute is the content of the string.

 

2.6.1

Data : XML Text Content (inherited from BIN)

   

Definition:      The data itself represented in the XML instance encoding.

   
XML Representation

   

data is represented as the text content of the XML element representing the ST value.

 

2.6.2

Representation : CS (inherited from BIN)

   

Definition:      Specifies the representation of the binary data that is the content of the binary data value.

   
XML Representation

   

representation is represented by the XML attributerepresentation whose value, if present, must be TXT. Since the representation always has a fixed value, it is not normally present in the XML instance.

 

2.6.3

Media Type : CS (inherited from ED)

   

Definition:      Identifies the type of the encapsulated data and identifies a method to interpret or render the data.

   
XML Representation

   

mediaType is represented by the XML attributemediaType whose value, if present, must be text/plain. Since the media type always has a fixed value, it is not normally present in the XML instance.

 

2.6.4

Charset : CS (inherited from ED)

   

Definition:      For character-based encoding types, this property specifies the character set and character encoding used. The charset shall be identified by an Internet Assigned Numbers Authority (IANA) Charset Registration [http://www.iana.org/assignments/character-sets] in accordance with RFC 2978 [http://www.ietf.org/rfc/rfc2978.txt].

   
XML Representation

   

charset is not explicitly represented in the XML ITS. Rather, the value of charset is to be inferred from the encoding used in the XML entity in which the ST value is contained.

 

2.6.5

Language : CS (inherited from ED)

   

Definition:      For character based information the language property specifies the human language of the text.

   
XML Representation

   

language is represented by the XML attributelanguage whose value, if present, must be a valid language tag as defined by RFC 3066 [http://www.ietf.org/rfc/rfc3066.txt].

 

2.6.6

Compression : CS (fixed)

   

Definition:      Indicates whether the raw byte data is compressed, and what compression algorithm was used.

   
XML Representation

   

compression is inherited from an ancestor data type but does not appear in the XML representation of this data type.

 

2.6.7

Reference : TEL (fixed)

   

Definition:      A telecommunication address (TEL), such as a URL for HTTP or FTP, which will resolve to precisely the same binary data that could as well have been provided as inline data.

   
XML Representation

   

reference is inherited from an ancestor data type but does not appear in the XML representation of this data type.

 

2.6.8

Integrity Check : BIN (fixed)

   

Definition:      The integrity check is a short binary value representing a cryptographically strong checksum that is calculated over the binary data. The purpose of this property, when communicated with a reference is for anyone to validate later whether the reference still resolved to the same data that the reference resolved to when the encapsulated data value with reference was created.

   
XML Representation

   

integrityCheck is inherited from an ancestor data type but does not appear in the XML representation of this data type.

 

2.6.9

Integrity Check Algorithm : CS (fixed)

   

Definition:      Specifies the algorithm used to compute the integrityCheck value.

   
XML Representation

   

integrityCheckAlgorithm is inherited from an ancestor data type but does not appear in the XML representation of this data type.

 

2.6.10

Thumbnail : ED (fixed)

   

Definition:      A thumbnail is an abbreviated rendition of the full data. A thumbnail requires significantly fewer resources than the full data, while still maintaining some distinctive similarity with the full data. A thumbnail is typically used with by-reference encapsulated data. It allows a user to select data more efficiently before actually downloading through the reference.

   
XML Representation

   

thumbnail is inherited from an ancestor data type but does not appear in the XML representation of this data type.

 

2.6.11

Examples

   

This example shows a simple case of a character string for Act.text.

   
Example 5
<text language='en'>cellulitis of the left foot</text>
 

2.7

Coded Simple Value (CS) specializes CV

   

Definition:      Coded data in its simplest form, consists of a code. The code system and code system version is fixed by the context in which the CS value occurs. CS is used for coded attributes that have a single HL7-defined value set.

   
  Table 10: Components of Coded Simple Value
Name Type Description
code ST The plain code symbol defined by the code system. For example, "784.0" is the code symbol of the ICD-9 code "784.0" for headache.
   
XML Representation

   

CS is represented by both Element and Attribute forms. In the Element form, the type is represented by an XML element whose name is determined by the context in which it is used. The code value is represented by an XML attributecode, whose value, if present, must be a valid xs:token with no internal whitespace.

   
Type Template 7
<!-- type CS -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   code = ST
   />
   

In the Attribute form, code is represented as an XML attribute whose name is determined by the context in which it is used, and whose value, if present, must be a valid xs:token with no internal whitespace.

 

2.7.1

Code : ST (inherited from CD)

   

Definition:      The plain code symbol defined by the code system. For example, "784.0" is the code symbol of the ICD-9 code "784.0" for headache.

   
XML Representation

   

code is represented by the XML attributecode whose value, if present, must be a valid xs:token with no internal whitespace.

 

2.7.2

Code System : UID (fixed)

   

Definition:      Specifies the code system that defines the code.

   
XML Representation

   

codeSystem is inherited from an ancestor data type but does not appear in the XML representation of this data type.

   

The fact that a sending system is prohibited from specifying a code system for an CS data value should not be misconstrued as if such codes would not have any code system. Rather, the code system in CS values is fixed by the context. That context is defined by the model in which CS is used.

 

2.7.3

Code System Name : ST (fixed)

   

Definition:      A common name of the coding system.

   
XML Representation

   

codeSystemName is inherited from an ancestor data type but does not appear in the XML representation of this data type.

 

2.7.4

Code System Version : ST (fixed)

   

Definition:      If applicable, a version descriptor defined specifically for the given code system.

   
XML Representation

   

codeSystemVersion is inherited from an ancestor data type but does not appear in the XML representation of this data type.

 

2.7.5

Display Name : ST (fixed)

   

Definition:      A name or title for the code, under which the sending system shows the code value to its users.

   
XML Representation

   

displayName is inherited from an ancestor data type but does not appear in the XML representation of this data type.

 

2.7.6

Original Text : ED (fixed)

   

Definition:      The text or phrase used as the basis for the coding.

   
XML Representation

   

originalText is inherited from an ancestor data type but does not appear in the XML representation of this data type.

 

2.7.7

Examples

   

This example shows a US realmCode.

   
Example 6
<realmCode code='US'/>
   

This example shows a ControlAct with a classCode of CACT and a moodCode of EVN, both of which are CS.

   
Example 7
<controlActProcess classCode='CACT' moodCode='EVN'>
   ...
</controlActProcess>
 

2.8

Coded Value (CV) specializes CE

   

Definition:      Coded data, consists of a code, display name, code system, and original text. Used when a single code value must be sent.

   
  Table 11: Components of Coded Value
Name Type Description
code ST The plain code symbol defined by the code system. For example, "784.0" is the code symbol of the ICD-9 code "784.0" for headache.
codeSystem UID Specifies the code system that defines the code.
codeSystemName ST A common name of the coding system.
codeSystemVersion ST If applicable, a version descriptor defined specifically for the given code system.
displayName ST A name or title for the code, under which the sending system shows the code value to its users.
originalText ED The text or phrase used as the basis for the coding.
   
XML Representation

   

CV is always represented in Element form as described in the template and sub-sections below.

   
Type Template 8
<!-- type CV -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   code = ST
   codeSystem = UID
   codeSystemName = ST
   codeSystemVersion = ST
   displayName = ST
   >
   Content: ( originalText )
</x>
 

2.8.1

Code : ST (inherited from CD)

   

Definition:      The plain code symbol defined by the code system. For example, "784.0" is the code symbol of the ICD-9 code "784.0" for headache.

   
XML Representation

   

code is represented by the XML attributecode whose value, if present, must be a valid xs:token with no internal whitespace.

 

2.8.2

Code System : UID (inherited from CD)

   

Definition:      Specifies the code system that defines the code.

   
XML Representation

   

codeSystem is represented by the XML attributecodeSystem whose value, if present, must be a valid UID.

 

2.8.3

Code System Name : ST (inherited from CD)

   

Definition:      A common name of the coding system.

   
XML Representation

   

codeSystemName is represented by the XML attributecodeSystemName whose value, if present, must be a valid ST.

 

2.8.4

Code System Version : ST (inherited from CD)

   

Definition:      If applicable, a version descriptor defined specifically for the given code system.

   
XML Representation

   

codeSystemVersion is represented by the XML attributecodeSystemVersion whose value, if present, must be a valid ST.

 

2.8.5

Display Name : ST (inherited from CD)

   

Definition:      A name or title for the code, under which the sending system shows the code value to its users.

   
XML Representation

   

displayName is represented by the XML attributedisplayName whose value, if present, must be a valid ST.

 

2.8.6

Original Text : ED (inherited from CD)

   

Definition:      The text or phrase used as the basis for the coding.

   
XML Representation

   

originalText is represented by the XML elementoriginalText which, if present, must be a valid ED.

 

2.8.7

Translation : SET<CD> (fixed)

   

Definition:      A set of other concept descriptors that translate this concept descriptor into other code systems.

   
XML Representation

   

translation is inherited from an ancestor data type but does not appear in the XML representation of this data type.

 

2.8.8

Examples

   

The first example shows the LOINC code for "consultation note".

   
Example 8
<code code='11488-4' codeSystem='2.16.840.1.113883.19.6.1' codeSystemName='LOINC'
   displayName='Consultation note'/>
   

The second example shows a SNOMED-CT code with CD.originalText for "osteoarthritis of the right knee".

   
Example 9
<code code='396275006' codeSystem='2.16.840.1.113883.19.6.96'
      codeSystemName='SNOMED CT' displayName='Osteoarthritis'>
   <originalText>osteoarthritis of the right knee</originalText>
</code>
   

The final example shows the use of nullFlavor='OTHER' to indicate that a code does not exist in a coding system.

   
Example 10
<code codeSystem='2.16.840.1.113883.19.6.96'
      codeSystemName='SNOMED CT' nullFlavor='OTH'>
   <originalText>normal cardiac silhouette</originalText>
</code>
 

2.9

Coded Ordinal (CO) specializes CV

   

Definition:      Coded data, where the domain from which the codeset comes is ordered. The Coded Ordinal data type adds semantics related to ordering so that models that make use of such domains may introduce model elements that involve statements about the order of the terms in a domain.

   
  Table 12: Components of Coded Ordinal
Name Type Description
code ST The plain code symbol defined by the code system. For example, "784.0" is the code symbol of the ICD-9 code "784.0" for headache.
codeSystem UID Specifies the code system that defines the code.
codeSystemName ST A common name of the coding system.
codeSystemVersion ST If applicable, a version descriptor defined specifically for the given code system.
displayName ST A name or title for the code, under which the sending system shows the code value to its users.
originalText ED The text or phrase used as the basis for the coding.
   
XML Representation

   

CO is always represented in Element form as described in the template and sub-sections below.

   
Type Template 9
<!-- type CO -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   code = ST
   codeSystem = UID
   codeSystemName = ST
   codeSystemVersion = ST
   displayName = ST
   >
   Content: ( originalText )
</x>
 

2.9.1

Code : ST (inherited from CD)

   

Definition:      The plain code symbol defined by the code system. For example, "784.0" is the code symbol of the ICD-9 code "784.0" for headache.

   
XML Representation

   

code is represented by the XML attributecode whose value, if present, must be a valid xs:token with no internal whitespace.

 

2.9.2

Code System : UID (inherited from CD)

   

Definition:      Specifies the code system that defines the code.

   
XML Representation

   

codeSystem is represented by the XML attributecodeSystem whose value, if present, must be a valid UID.

 

2.9.3

Code System Name : ST (inherited from CD)

   

Definition:      A common name of the coding system.

   
XML Representation

   

codeSystemName is represented by the XML attributecodeSystemName whose value, if present, must be a valid ST.

 

2.9.4

Code System Version : ST (inherited from CD)

   

Definition:      If applicable, a version descriptor defined specifically for the given code system.

   
XML Representation

   

codeSystemVersion is represented by the XML attributecodeSystemVersion whose value, if present, must be a valid ST.

 

2.9.5

Display Name : ST (inherited from CD)

   

Definition:      A name or title for the code, under which the sending system shows the code value to its users.

   
XML Representation

   

displayName is represented by the XML attributedisplayName whose value, if present, must be a valid ST.

 

2.9.6

Original Text : ED (inherited from CD)

   

Definition:      The text or phrase used as the basis for the coding.

   
XML Representation

   

originalText is represented by the XML elementoriginalText which, if present, must be a valid ED.

 

2.9.7

Translation : SET<CD> (fixed)

   

Definition:      A set of other concept descriptors that translate this concept descriptor into other code systems.

   
XML Representation

   

translation is inherited from an ancestor data type but does not appear in the XML representation of this data type.

 

2.10

Coded with Equivalents (CE) specializes CD

   

Definition:      Coded data, consists of a coded value (CV) and, optionally, coded value(s) from other coding systems that identify the same concept. Used when alternative codes may exist.

   
  Table 13: Components of Coded with Equivalents
Name Type Description
code ST The plain code symbol defined by the code system. For example, "784.0" is the code symbol of the ICD-9 code "784.0" for headache.
codeSystem UID Specifies the code system that defines the code.
codeSystemName ST A common name of the coding system.
codeSystemVersion ST If applicable, a version descriptor defined specifically for the given code system.
displayName ST A name or title for the code, under which the sending system shows the code value to its users.
originalText ED The text or phrase used as the basis for the coding.
translation SET<CD> A set of other concept descriptors that translate this concept descriptor into other code systems.
   
XML Representation

   

CE is always represented in Element form as described in the template and sub-sections below.

   
Type Template 10
<!-- type CE -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   code = ST
   codeSystem = UID
   codeSystemName = ST
   codeSystemVersion = ST
   displayName = ST
   >
   Content: ( originalText, translation* )
</x>
 

2.10.1

Code : ST (inherited from CD)

   

Definition:      The plain code symbol defined by the code system. For example, "784.0" is the code symbol of the ICD-9 code "784.0" for headache.

   
XML Representation

   

code is represented by the XML attributecode whose value, if present, must be a valid xs:token with no internal whitespace.

 

2.10.2

Code System : UID (inherited from CD)

   

Definition:      Specifies the code system that defines the code.

   
XML Representation

   

codeSystem is represented by the XML attributecodeSystem whose value, if present, must be a valid UID.

 

2.10.3

Code System Name : ST (inherited from CD)

   

Definition:      A common name of the coding system.

   
XML Representation

   

codeSystemName is represented by the XML attributecodeSystemName whose value, if present, must be a valid ST.

 

2.10.4

Code System Version : ST (inherited from CD)

   

Definition:      If applicable, a version descriptor defined specifically for the given code system.

   
XML Representation

   

codeSystemVersion is represented by the XML attributecodeSystemVersion whose value, if present, must be a valid ST.

 

2.10.5

Display Name : ST (inherited from CD)

   

Definition:      A name or title for the code, under which the sending system shows the code value to its users.

   
XML Representation

   

displayName is represented by the XML attributedisplayName whose value, if present, must be a valid ST.

 

2.10.6

Qualifier : LIST<CR> (fixed)

   

Definition:      Specifies additional codes that increase the specificity of the primary code.

   
XML Representation

   

qualifier is inherited from an ancestor data type but does not appear in the XML representation of this data type.

 

2.10.7

Original Text : ED (inherited from CD)

   

Definition:      The text or phrase used as the basis for the coding.

   
XML Representation

   

originalText is represented by the XML elementoriginalText which, if present, must be a valid ED.

 

2.10.8

Translation : SET<CD> (inherited from CD)

   

Definition:      A set of other concept descriptors that translate this concept descriptor into other code systems.

   
XML Representation

   

translation is represented by 0 or more XML elementstranslation each of which must be a valid CD.

 

2.10.9

Examples

   

This example shows an observation whose value is the SNOMED-CT code for "asthma" as well as a translation of that code in ICD9CM.

   
Example 11
<code code='195967001' codeSystem='2.16.840.1.113883.19.6.96'
      codeSystemName='SNOMED CT' displayName='Asthma'>
   <translation code='49390' codeSystem='2.16.840.1.113883.19.6.2'
      codeSystemName='ICD9CM' displayName='ASTHMA W/O STATUS ASTHMATICUS'/>
</code>
   

For additional examples see Examples (§ 2.8.8 ).

 

2.11

Concept Descriptor (CD)

   

Definition:      A concept descriptor represents any kind of concept usually by giving a code defined in a code system. A concept descriptor can contain the original text or phrase that served as the basis of the coding and one or more translations into different coding systems. A concept descriptor can also contain qualifiers to describe, e.g., the concept of a "left foot" as a postcoordinated term built from the primary code "FOOT" and the qualifier "LEFT". In exceptional cases, the concept descriptor need not contain a code but only the original text describing that concept.

   
  Table 14: Components of Concept Descriptor
Name Type Description
code ST The plain code symbol defined by the code system. For example, "784.0" is the code symbol of the ICD-9 code "784.0" for headache.
codeSystem UID Specifies the code system that defines the code.
codeSystemName ST A common name of the coding system.
codeSystemVersion ST If applicable, a version descriptor defined specifically for the given code system.
displayName ST A name or title for the code, under which the sending system shows the code value to its users.
originalText ED The text or phrase used as the basis for the coding.
qualifier LIST<CR> Specifies additional codes that increase the specificity of the primary code.
translation SET<CD> A set of other concept descriptors that translate this concept descriptor into other code systems.
   
XML Representation

   

CD is always represented in Element form as described in the template and sub-sections below.

   
Type Template 11
<!-- type CD -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   code = ST
   codeSystem = UID
   codeSystemName = ST
   codeSystemVersion = ST
   displayName = ST
   >
   Content: ( originalText, qualifier*, translation* )
</x>
 

2.11.1

Code : ST

   

Definition:      The plain code symbol defined by the code system. For example, "784.0" is the code symbol of the ICD-9 code "784.0" for headache.

   
XML Representation

   

code is represented by the XML attributecode whose value, if present, must be a valid xs:token with no internal whitespace.

 

2.11.2

Code System : UID

   

Definition:      Specifies the code system that defines the code.

   
XML Representation

   

codeSystem is represented by the XML attributecodeSystem whose value, if present, must be a valid UID.

 

2.11.3

Code System Name : ST

   

Definition:      A common name of the coding system.

   
XML Representation

   

codeSystemName is represented by the XML attributecodeSystemName whose value, if present, must be a valid ST.

 

2.11.4

Code System Version : ST

   

Definition:      If applicable, a version descriptor defined specifically for the given code system.

   
XML Representation

   

codeSystemVersion is represented by the XML attributecodeSystemVersion whose value, if present, must be a valid ST.

 

2.11.5

Display Name : ST

   

Definition:      A name or title for the code, under which the sending system shows the code value to its users.

   
XML Representation

   

displayName is represented by the XML attributedisplayName whose value, if present, must be a valid ST.

 

2.11.6

Original Text : ED

   

Definition:      The text or phrase used as the basis for the coding.

   
XML Representation

   

originalText is represented by the XML elementoriginalText which, if present, must be a valid ED.

 

2.11.7

Translation : SET<CD>

   

Definition:      A set of other concept descriptors that translate this concept descriptor into other code systems.

   
XML Representation

   

translation is represented by a 0 or more XML elementstranslation each which must be a valid CD.

 

2.11.8

Qualifier : LIST<CR>

   

Definition:      Specifies additional codes that increase the specificity of the primary code.

   
XML Representation

   

qualifier is represented by a 0 or more XML elementsqualifer each of which must be a valid CR.

 

2.11.9

Examples

   

The first example shows the SNOMED-CT code with qualifier for "skin of palmer surface of left index finger".

   
Example 12
<targetSiteCode code='48856004' codeSystem='2.16.840.1.113883.19.6.96'
      codeSystemName='SNOMED CT'
      displayName='Skin of palmer surface of index finger'>
   <qualifier>
      <name code='78615007' codeSystem='2.16.840.1.113883.19.6.96'
         codeSystemName='SNOMED CT' displayName='with laterality'/>
      <value code='7771000' codeSystem='2.16.840.1.113883.19.6.96'
         codeSystemName='SNOMED CT' displayName='left'/>
   </qualifier>
</targetSiteCode>
   

The second example shows an observation whose value is the SNOMED-CT code with qualifier and originalText for "osteoarthritis of the right knee".

   
Example 13
<code code='396275006' codeSystem='2.16.840.1.113883.19.6.96'
      codeSystemName='SNOMED CT' displayName='Osteoarthritis'>
   <originalText>osteoarthritis of the right knee</originalText>
   <qualifier>
      <name code='363698007' codeSystem='2.16.840.1.113883.19.6.96'
         codeSystemName='SNOMED CT' displayName='finding site'/>
      <value code='6757004' codeSystem='2.16.840.1.113883.19.6.96'
         codeSystemName='SNOMED CT' displayName='right knee'/>
   </qualifier>
</code>
 

2.12

Concept Role (CR)

   

Definition:      A concept qualifier code with optionally named role. Both qualifier role and value codes must be defined by the coding system. For example, if SNOMED RT defines a concept "leg", a role relation "has-laterality", and another concept "left", the concept role relation allows to add the qualifier "has-laterality: left" to a primary code "leg" to construct the meaning "left leg".

   
  Table 15: Components of Concept Role
Name Type Description
name CV Specifies the manner in which the concept role value contributes to the meaning of a code phrase. For example, if SNOMED RT defines a concept "leg", a role relation "has-laterality", and another concept "left", the concept role relation allows to add the qualifier "has-laterality: left" to a primary code "leg" to construct the meaning "left leg". In this example "has-laterality" is name.
value CD The concept that modifies the primary code of a code phrase through the role relation. For example, if SNOMED RT defines a concept "leg", a role relation "has-laterality", and another concept "left", the concept role relation allows adding the qualifier "has-laterality: left" to a primary code "leg" to construct the meaning "left leg". In this example "left" is value.
inverted BN Indicates if the sense of the role name is inverted. This can be used in cases where the underlying code system defines inversion but does not provide reciprocal pairs of role names. By default, inverted is false.
   

The use of qualifiers is strictly governed by the code system used. The CD data type does not permit using qualifiers with code systems that do not provide for qualifiers (e.g. pre-coordinated systems, such as LOINC, ICD-10 PCS.)

   
XML Representation

   

CR is represented in Element form as described in the template and sub-sections below.

   
Type Template 12
<!-- type CR -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   inverted = (true | false) : false
   >
   Content: ( name, value )
</x>
 

2.12.1

Name : CV

   

Definition:      Specifies the manner in which the concept role value contributes to the meaning of a code phrase. For example, if SNOMED RT defines a concept "leg", a role relation "has-laterality", and another concept "left", the concept role relation allows to add the qualifier "has-laterality: left" to a primary code "leg" to construct the meaning "left leg". In this example "has-laterality" is name.

   

The name component can be NULL if a coding system allows postcoordination but no role names.

   
XML Representation

   

name is represented by the XML elementname which, if present, must be a valid CV.

 

2.12.2

Value : CD

   

Definition:      The concept that modifies the primary code of a code phrase through the role relation. For example, if SNOMED RT defines a concept "leg", a role relation "has-laterality", and another concept "left", the concept role relation allows adding the qualifier "has-laterality: left" to a primary code "leg" to construct the meaning "left leg". In this example "left" is value.

   

value is of type CD and thus can be in turn have qualifiers. This allows qualifiers to nest. Qualifiers can only be used as far as the underlying code system defines them. It is not allowed to use any kind of qualifiers for code systems that do not explicitly allow and regulate such use of qualifiers.

   
XML Representation

   

value is represented by the XML elementvalue which, if present, must be a valid CD.

 

2.12.3

Inversion Indicator : BN

   

Definition:      Indicates if the sense of the role name is inverted. This can be used in cases where the underlying code system defines inversion but does not provide reciprocal pairs of role names. By default, inverted is false.

   

For example, a code system may define the role relation "causes" besides the concepts "Streptococcus pneumoniae" and "Pneumonia". If that code system allows its roles to be inverted, one can construct the post-coordinated concept "Pneumococcus pneumonia" through "Pneumonia - causes, inverted - Streptococcus pneumoniae."

   

Roles may only be inverted if the underlying coding systems allows such inversion. Notably, if a coding system defines roles in inverse pairs or intentionally does not define certain inversions, the appropriate role code (e.g. "caused-by") must be used rather than inversion. It must be known whether the inverted property is true or false, if it is NULL, the role cannot be interpreted.

   
XML Representation

   

inverted is represented by the XML attributeinverted whose value, if present, must be either true or false. The default value is false.

 

2.12.4

Examples

   

See the examples using CD.qualifier in Examples (§ 2.11.9 ).

 

2.13

Character String with Code (SC) specializes ST

   

Definition:      An ST that optionally may have a code attached. The text must always be present if a code is present. The code is often a local code.

   
  Table 16: Components of Character String with Code
Name Type Description
code ST The plain code symbol defined by the code system. For example, "784.0" is the code symbol of the ICD-9 code "784.0" for headache.
codeSystem UID Specifies the code system that defines the code.
codeSystemName ST A common name of the coding system.
codeSystemVersion ST If applicable, a version descriptor defined specifically for the given code system.
displayName ST A name or title for the code, under which the sending system shows the code value to its users.
   
XML Representation

   

SC is represented in Element form as described in the template and sub-sections below.

   
Type Template 13
<!-- type SC -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   code = ST
   codeSystem = UID
   codeSystemName = ST
   codeSystemVersion = ST
   displayName = ST
   >
   Content: ( #PCDATA )
</x>
 

2.13.1

Code : ST (inherited from CD)

   

Definition:      The plain code symbol defined by the code system. For example, "784.0" is the code symbol of the ICD-9 code "784.0" for headache.

   
XML Representation

   

code is represented by the XML attributecode whose value, if present, must be a valid xs:token with no internal whitespace.

 

2.13.2

Code System : UID (inherited from CD)

   

Definition:      Specifies the code system that defines the code.

   
XML Representation

   

codeSystem is represented by the XML attributecodeSystem whose value, if present, must be a valid UID.

 

2.13.3

Code System Name : ST (inherited from CD)

   

Definition:      A common name of the coding system.

   
XML Representation

   

codeSystemName is represented by the XML attributecodeSystemName whose value, if present, must be a valid ST.

 

2.13.4

Code System Version : ST (inherited from CD)

   

Definition:      If applicable, a version descriptor defined specifically for the given code system.

   
XML Representation

   

codeSystemVersion is represented by the XML attributecodeSystemVersion whose value, if present, must be a valid ST.

 

2.13.5

Display Name : ST (inherited from CD)

   

Definition:      A name or title for the code, under which the sending system shows the code value to its users.

   
XML Representation

   

displayName is represented by the XML attributedisplayName whose value, if present, must be a valid ST.

 

2.14

Unique Identifier String (UID)

   

Definition:      A unique identifier string is a character string which identifies an object in a globally unique and timeless manner. The allowable formats and values and procedures of this data type are strictly controlled by HL7. At this time, user-assigned identifiers may be certain character representations of ISO Object Identifiers (OID) and DCE Universally Unique Identifiers (UUID). HL7 also reserves the right to assign other forms of UIDs (RUID, such as mnemonic identifiers for code systems.

   

The sole purpose of the UID is to be a globally and timelessly unique identifier. The form of the UID, whether it is an OID, an UUID or RUID is entirely irrelevant. As far as HL7 is concerned, the only thing one can do with an UID is denote to the object for which it stands. Comparison of UIDs is literal, i.e. if two UIDs have the same character sequence, they are assumed to denote the same object. If two UIDs are not literally identical they may not denote to the same object.

   

No difference in semantics is recognized between the different allowed forms of the UID. The different forms are not distinguished by a component within or aside from the identifier string itself.

   
XML Representation

   

UID is only represented in Attribute form, where the value must be a valid OID, UUID, or HL7 reserved identifier as defined in the sections below.

 

2.14.1

ISO Object Identifier (OID) Scheme

   

Definition:      A globally unique string representing an ISO Object Identifier (OID) in a form that consists only of non-negative numbers with no leading zeros and dots (e.g., "2.16.840.1.113883.19.3.1"). According to ISO, OIDs are paths in a tree structure, with the left-most number representing the root and the right-most number representing a leaf.

   

Each branch under the root corresponds to an assigning authority. Each of these assigning authorities may, in turn, designate its own set of assigning authorities that work under its auspices, and so on down the line. Eventually, one of these authorities assigns a unique (to it as an assigning authority) number that corresponds to a leaf node on the tree. The leaf may represent an assigning authority (in which case the OID identifies the authority), or an instance of an object. An assigning authority owns a namespace, consisting of its sub-tree.

   

OIDs are the preferred scheme for unique identifiers. OIDs should always be used except if one of the inclusion criteria for other schemes apply.

 

2.14.2

DCE Universal Unique Identifier (UUID) Scheme

   

Definition:      A DCE Universal Unique Identifier is a globally unique string consisting of 5 groups of upper- or lower-case hexadecimal digits having 8, 4, 4, 4, and 12 places respectively. UUIDs are assigned using Ethernet MAC addresses, the point in time of creation and some random components. This mix is believed to generate sufficiently unique identifiers without any organizational policy for identifier assignment (in fact this piggy-backs on the organization of MAC address assignment.)

   

UUIDs are not the preferred identifier scheme for use as UIDs. UUIDs may be used when identifiers are issued to objects representing individuals (e.g., entity instance identifiers, act event identifiers, etc.) For objects describing classes of things or events (e.g., catalog items), OIDs are the preferred identifier scheme.

 

2.14.3

HL7 Reserved Identifier Scheme

   

Definition:      HL7 reserved identifiers are strings consisting only of (US-ASCII) letters, digits and hyphens, where the first character must be a letter. HL7 may assign these reserved identifiers as mnemonic identifiers for major concepts of interest to HL7.

 

2.14.4

Examples

   

See the examples in Examples (§ 2.15.5 ).

 

2.15

Instance Identifier (II)

   

Definition:      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.

   
  Table 17: Components of Instance Identifier
Name Type Description
root UID A unique identifier that guarantees the global uniqueness of the instance identifier. The root alone may be the entire instance identifier.
extension ST A character string as a unique identifier within the scope of the identifier root.
assigningAuthorityName ST 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.
displayable BL Specifies if the identifier is intended for human display and data entry (displayable = true) as opposed to pure machine interoperation (displayable = false).
   

Some identifier schemes define certain style options to their code values. For example, the U.S. Social Security Number (SSN) is normally written with dashes that group the digits into a pattern "123-12-1234". However, the dashes are not meaningful and a SSN can just as well be represented as "123121234" without the dashes.

   

In the case where identifier schemes provide for multiple representations, HL7 shall make a ruling about which is the preferred form. HL7 shall document that ruling where that respective external identifier scheme is recognized. HL7 shall decide upon the preferred form based on criteria of practicality and common use. In absence of clear criteria of practicality and common use, the safest, most extensible, and least stylized (the least decorated) form shall be given preference.

   

From practical experience it is recommended that extension be an alphanumeric identifier not containing leading zero digits, for these are often erroneously stripped. "000123" and "123" would be different extension values, but this is prone to be misunderstood, leading to false non-matches and duplicate record entries. However applications should maintain any leading zero digits encountered in extension. Leading zero digits are prohibited in OIDs, but may occur in UUIDs, where they must be maintained.

   

There is no separate check digit property. Check digits are used for human purpose and work best if kept completely transparent. extension MAY contain check digits anywhere, and the particular check digit scheme (if any) would be implied by the root. However, a separate check digit property is intentionally not recognized by this specification.

   
XML Representation

   

II is represented in Element form as described in the template and sub-sections below.

   
Type Template 14
<!-- type II -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   root = UID
   extension = ST
   assigningAuthorityName = ST
   displayable = BL
   />
 

2.15.1

Root : UID

   

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

   
XML Representation

   

root is represented by the XML attributeroot whose value, if present, must be a valid UID.

 

2.15.2

Extension : ST

   

Definition:      A character string as a unique identifier within the scope of the identifier root.

   
XML Representation

   

extension is represented by the XML attributeextension whose value, if present, must be a valid ST.

 

2.15.3

Assigning Authority Name : ST

   

Definition:      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.

   
XML Representation

   

assigningAuthorityName is represented by the XML attributeassigningAuthorityName whose value, if present, must be a valid ST.

 

2.15.4

Displayable : BL

   

Definition:      Specifies if the identifier is intended for human display and data entry (displayable = true) as opposed to pure machine interoperation (displayable = false).

   
XML Representation

   

displayable is represented by the XML attributedisplayable whose value, if present, must be a valid BL.

 

2.15.5

Examples

   

The first example shows a root that is an OID.

   
Example 14
<id root='2.16.840.1.113883.19' extension='123A45'/>
   

The next example shows a root that is a UUID.

   
Example 15
<id root='343EA54F-D0E0-CE95-56C7-23108D6E25B8' extension='N8718349'/>
   

The final example shows a root that is a RUID.

   
Example 16
<id root='A208d6E-25b8' extension='827-92837-99812'/>
 

2.16

Universal Resource Locator (URL)

   

Definition:      A telecommunications address specified according to Internet standard RFC 1738 [http://www.ietf.org/rfc/rfc1738.txt]. The URL specifies the protocol and the contact point defined by that protocol for the resource. Notable uses of the telecommunication address data type are for telephone and telefax numbers, e-mail addresses, Hypertext references, FTP references, etc.

   

URLs have a standard representation as a character string, formatted as "<code><scheme>:<address>;</code>" where the most common schemes are listed in Table 18. The address portion of the URL is a character string whose format is entirely defined by the URL scheme.

   

Similar to the ED.mediaType, HL7 makes suggestions about values classifying them as required, recommended, other, and deprecated. Any scheme not mentioned has status other.

   
  Table 18: Domain URLScheme
code name status definition
tel  Telephone  required  A voice telephone number [http://www.ietf.org/rfc/rfc3966.txt and http://www.ietf.org/rfc/rfc2806.txt]. 
fax  Fax  required  A telephone number served by a fax device [http://www.ietf.org/rfc/rfc3966.txt and http://www.ietf.org/rfc/rfc2806.txt]. 
mailto  Mailto  required  Electronic mail address [http://www.ietf.org/rfc/rfc2368.txt]. 
http  HTTP  required  Hypertext Transfer Protocol [http://www.ietf.org/rfc/rfc2368.txt]. 
ftp  FTP  required  The File Transfer Protocol (FTP) [http://www.ietf.org/rfc/rfc1738.txt]. 
mllp  MLLP  required  The traditional HL7 Minimal Lower Layer Protocol. The URL has the form of a common IP URL e.g., mllp://<host>:<port>/ with <host> being the IP address or DNS hostname and <port> being a port number on which the MLLP protocol is served.  
file  File  deprecated  Host-specific local file names [RCF 1738]. Note that the file scheme works only for local files. There is little use for exchanging local file names between systems, since the receiving system likely will not be able to access the file. 
nfs  NFS  other  Network File System protocol [http://www.ietf.org/rfc/rfc2224.txt]. Some sites use NFS servers to share data files. 
telnet  Telnet  other  Reference to interactive sessions [http://www.ietf.org/rfc/rfc1738.txt]. Some sites, (e.g., laboratories) have TTY based remote query sessions that can be accessed through telnet. 
modem  Modem  other  A telephone number served by a modem device [http://www.ietf.org/rfc/rfc3966.txt and http://www.ietf.org/rfc/rfc2806.txt]. 
   
XML Representation

   

URL is a protected type and is represented only in Attribute form in the value component of TEL; the XML attributevalue must be a valid xs:anyURI.

 

2.16.1

Telephone and FAX Numbers

   

Telephone and FAX Numbers. There is no special data type for telephone numbers. Telephone numbers are telecommunication addresses and are specified as a URL. Voice telephone URLs begin with "tel:" and fax URLs begin with "fax:".

   

The telephone number URL is defined in the Internet RFC 2806 [http://www.ietf.org/rfc/rfc2806.txt] URLs for Telephone Calls. For example, "tel:+1(317)630-7960" is a phone number, and "fax:+49(30)8101-724" is a FAX number. The global absolute telephone numbers starting with the "+" and country code are preferred. Separator characters serve as decoration but have no meaning for the telephone number, thus "tel:+13176307960" and "fax:+49308101724" are the same telephone and FAX numbers as the previous respective examples.

 

2.16.2

Examples

   

See the examples in Examples (§ 2.17.3 ).

 

2.17

Telecommunication Address (TEL) specializes URL

   

Definition:      A telephone number (voice or fax), e-mail address, or other locator for a resource (information or service) mediated by telecommunication equipment. The address is specified as a URL qualified by time specification and use codes that help in deciding which address to use for a given time and purpose.

   
  Table 19: Components of Telecommunication Address
Name Type Description
useablePeriod GTS Specifies the periods of time during which the telecommunication address can be used. For a telephone number, this can indicate the time of day in which the party can be reached on that telephone. For a web address, it may specify a time range in which the web content is promised to be available under the given address.
use SET<CS> One or more codes advising a system or user which telecommunication address in a set of like addresses to select for a given telecommunication need.
   
XML Representation

   

TEL is represented in Element form as described in the template and sub-sections below.

   
Type Template 15
<!-- type TEL -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   value = ST
   use = CS*
   >
   Content: ( useablePeriod* )
</x>
 

2.17.1

Useable Period : GTS

   

Definition:      Specifies the periods of time during which the telecommunication address can be used. For a telephone number, this can indicate the time of day in which the party can be reached on that telephone. For a web address, it may specify a time range in which the web content is promised to be available under the given address.

   
XML Representation

   

useablePeriod is represented by 0 or more XML elementsuseablePeriod each of which must be a valid GTS.

 

2.17.2

Use : SET<CS>

   

Definition:      One or more codes advising a system or user which telecommunication address in a set of like addresses to select for a given telecommunication need.

   

The telecommunication address use codes are defined by the HL7 domain TelecommunicationAddressUse (Table 20).

   
  Table 20: Domain TelecommunicationAddressUse
code name definition
  H home address A communication address at a home, attempted contacts for business purposes might intrude privacy and chances are one will contact family or other household members instead of the person one wishes to call. Typically used with urgent cases, or if no other contacts are available.
    HP primary home The primary home, to reach a person after business hours.
    HV vacation home A vacation home, to reach a person while on vacation.
  WP work place An office address. First choice for business related contacts during business hours.
    DIR Direct Indicates a work place address or telecommunication address that reaches the individual or organization directly without intermediaries. For phones, often referred to as a 'private line'.
    PUB Public Indicates a work place address or telecommunication address that is a 'standard' address which may reach a reception service, mail-room, or other intermediary prior to the target entity.
  BAD bad address A flag indicating that the address is bad, in fact, useless.
  TMP temporary address A temporary address, may be good for visit or mailing. Note that an address history can provide more detailed information.
AS answering service An automated answering machine used for less urgent cases and if the main purpose of contact is to leave a message or access an automated announcement.
EC emergency contact A contact specifically designated to be used for emergencies. This is the first choice in emergencies, independent of any other use codes.
MC mobile contact A telecommunication device that moves and stays with its owner. May have characteristics of all other use codes, suitable for urgent matters, not the first choice for routine business.
PG pager A paging device suitable to solicit a callback or to leave a very short message.
   

The telecommunication use code is not a complete classification for equipment types or locations. Its main purpose is to suggest or discourage the use of a particular telecommunication address. The use code should not be considered in isolation. The data element in which the telephone number appears (class and attribute) and the context to other data may express the precise nature and use of the telecommunication address more appropriately than a use code.

   
XML Representation

   

use is represented by the XML attributeuse whose value, if present, must be 0 or more valid values from the TelecommunicationAddressUse (Table 20) separated by whitespace.

 

2.17.3

Examples

   

The first example shows a work email address.

   
Example 17
<telecom use='WP' value='mailto://someone@example.com'/>
   

The second example shows a PNG file that is only accessible between 08:45 and 09:45 on July 20, 2000.

   
Example 18
<reference value='http://example.org/xrays/128s8d9ej229se32s.png'>
   <useablePeriod xsi:type='IVL_TS'>
      <low value='200007200845'/>
      <high value='200008200945'/>
   </useablePeriod>
</reference>
   

The final example shows a home phone number of 555-555-5001.

   
Example 19
<telecom use='H' value='tel:555-555-5001'/>
 

2.18

Address Part (ADXP)

   

Definition:      A character string that may have a type-tag signifying its role in the address. Typical parts that exist in about every address are street, house number, or post box, postal code, city, country but other roles may be defined regionally, nationally, or on an enterprise level (e.g. in military addresses). Addresses are usually broken up into lines, which are indicated by special line-breaking delimiter elements (e.g., DEL).

   
  Table 21: Components of Address Part
Name Type Description
data XML Text Content The data itself represented in the XML instance encoding.
partType CS Specifies whether an address part names the street, city, country, postal code, post box, etc. If the type is NULL the address part is unclassified and would simply appear on an address label as is.
   
XML Representation

   

ADXP is represented as an XML element whose name is derived from the address part type code (see table below) and whose content is just like an ST, except that it also has an XML attributepartType as described above, whose value is fixed to the appropriate address part type. The XML attributepartType is generally not used.

   
Type Template 16
<!-- type ADXP -->
<additionalLocator
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (ADL) : ADL
   >
   Content: ( #PCDATA )
</additionalLocator>

<unitID
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (UNID) : UNID
   >
   Content: ( #PCDATA )
</unitID>

<unitType
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (UNIT) : UNIT
   >
   Content: ( #PCDATA )
</unitType>

<deliveryAddressLine
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (DAL) : DAL
   >
   Content: ( #PCDATA )
</deliveryAddressLine>

<deliveryInstallationType
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (DINST) : DINST
   >
   Content: ( #PCDATA )
</deliveryInstallationType>

<deliveryInstallationArea
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (DINSTA) : DINSTA
   >
   Content: ( #PCDATA )
</deliveryInstallationArea>

<deliveryInstallationQualifier
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (DINSTQ) : DINSTQ
   >
   Content: ( #PCDATA )
</deliveryInstallationQualifier>

<deliveryMode
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (DMOD) : DMOD
   >
   Content: ( #PCDATA )
</deliveryMode>

<deliveryModeIdentifier
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (DMODID) : DMODID
   >
   Content: ( #PCDATA )
</deliveryModeIdentifier>

<streetAddressLine
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (SAL) : SAL
   >
   Content: ( #PCDATA )
</streetAddressLine>

<houseNumber
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (BNR) : BNR
   >
   Content: ( #PCDATA )
</houseNumber>

<buildingNumberSuffix
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (BNS) : BNS
   >
   Content: ( #PCDATA )
</buildingNumberSuffix>

<postBox
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (POB) : POB
   >
   Content: ( #PCDATA )
</postBox>

<houseNumberNumeric
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (BNN) : BNN
   >
   Content: ( #PCDATA )
</houseNumberNumeric>

<streetName
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (STR) : STR
   >
   Content: ( #PCDATA )
</streetName>

<streetNameBase
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (STB) : STB
   >
   Content: ( #PCDATA )
</streetNameBase>

<streetNameType
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (STTYP) : STTYP
   >
   Content: ( #PCDATA )
</streetNameType>

<direction
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (DIR) : DIR
   >
   Content: ( #PCDATA )
</direction>

<careOf
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (CAR) : CAR
   >
   Content: ( #PCDATA )
</careOf>

<censusTract
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (CEN) : CEN
   >
   Content: ( #PCDATA )
</censusTract>

<country
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (CNT) : CNT
   >
   Content: ( #PCDATA )
</country>

<county
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (CPA) : CPA
   >
   Content: ( #PCDATA )
</county>

<city
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (CTY) : CTY
   >
   Content: ( #PCDATA )
</city>

<delimiter
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (DEL) : DEL
   >
   Content: ( #PCDATA )
</delimiter>

<precinct
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (PRE) : PRE
   >
   Content: ( #PCDATA )
</precinct>

<state
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (STA) : STA
   >
   Content: ( #PCDATA )
</state>

<postalCode
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (ZIP) : ZIP
   >
   Content: ( #PCDATA )
</postalCode>
 

2.18.1

Data : XML Text Content (inherited from BIN)

   

Definition:      The data itself represented in the XML instance encoding.

   
XML Representation

   

is represented as the text content of the XML element representing the ADXP value.

 

2.18.2

Address Part Type : CS

   

Definition:      Specifies whether an address part names the street, city, country, postal code, post box, etc. If the type is NULL the address part is unclassified and would simply appear on an address label as is.

   

Address part types are as defined in Table 22

   
  Table 22: Domain AddressPartType
code name definition
ADL additional locator This can be a unit designator, such as apartment number, suite number, or floor. There may be several unit designators in an address (e.g., "3rd floor, Appt. 342"). This can also be a designator pointing away from the location, rather than specifying a smaller location within some larger one (e.g., Dutch "t.o." means "opposite to" for house boats located across the street facing houses).
  UNID unit identifier The number or name of a specific unit contained within a building or complex, as assigned by that building or complex.
  UNIT unit designator Indicates the type of specific unit contained within a building or complex. E.g. Appartment, Floor
DAL delivery address line A delivery address line is frequently used instead of breaking out delivery mode, delivery installation, etc. An address generally has only a delivery address line or a street address line, but not both.
  DINST delivery installation type Indicates the type of delivery installation (the facility to which the mail will be delivered prior to final shipping via the delivery mode.) Example: post office, letter carrier depot, community mail center, station, etc.
  DINSTA delivery installation area The location of the delivery installation, usually a town or city, and is only required if the area is different from the municipality. Area to which mail delivery service is provided from any postal facility or service such as an individual letter carrier, rural route, or postal route.
  DINSTQ delivery installation qualifier A number, letter or name identifying a delivery installation. E.g., for Station A, the delivery installation qualifier would be 'A'.
  DMOD delivery mode Indicates the type of service offered, method of delivery. For example: post office box, rural route, general delivery, etc.
  DMODID delivery mode identifier Represents the routing information such as a letter carrier route number. It is the identifying number of the designator (the box number or rural route number).
SAL street address line
  BNR building number The number of a building, house or lot alongside the street. Also known as "primary street number". This does not number the street but rather the building.
    BNN building number numeric The numeric portion of a building number
    BNS building number suffix Any alphabetic character, fraction or other text that may appear after the numeric portion of a building number
  STR street name
    STB street name base The base name of a roadway or artery recognized by a municipality (excluding street type and direction)
    STTYP street type The designation given to the street. (e.g. Street, Avenue, Crescent, etc.)
  DIR direction Direction (e.g., N, S, W, E)
CAR care of The name of the party who will take receipt at the specified address, and will take on responsibility for ensuring delivery to the target recipient
CEN census tract A geographic sub-unit delineated for demographic purposes.
CNT country Country
CPA county or parish A sub-unit of a state or province. (49 of the United States of America use the term "county;" Louisiana uses the term "parish".)
CTY municipality The name of the city, town, village, or other community or delivery center
DEL delimiter Delimiters are printed without framing white space. If no value component is provided, the delimiter appears as a line break.
POB post box A numbered box located in a post station.
PRE precinct A subsection of a municipality
STA state or province A sub-unit of a country with limited sovereignty in a federally organized country.
ZIP postal code A postal code designating a region defined by the postal service.
   

Addresses are conceptualized as text with added mark-up. The mark-up may break the address into lines and may describe in detail the role of each address part if it is known. Address parts occur in the address in the order in which they would be printed on a mailing label. The model is similar to HTML or XML markup of text.

   
XML Representation

   

partType is represented simultaneously in Element and Attribute forms. In the Element form, the name of the element is determined by the part type, as specified in Table 23 below. Additionally, each such element has an XML attributepartType whose value, if present, must be a valid value from the domain AddressPartType (Table 22) corresponding to the part type represented by the element on which it appears. Since the XML attributepartType always has a fixed value, it is not normally present in the XML instance.

   
  Table 23: AddressPartType Element Names
Element Name Part Type
additionalLocator ADL
unitID UNID
unitType UNIT
deliveryAddressLine DAL
deliveryInstallationType DINST
deliveryInstallationArea DINSTA
deliveryInstallationQualifier DINSTQ
deliveryMode DMOD
deliveryModeIdentifier DMODID
streetAddressLine SAL
houseNumber BNR
buildingNumberSuffix BNS
postBox POB
houseNumberNumeric BNN
streetName STR
streetNameBase STB
streetNameType STTYP
direction DIR
careOf CAR
censusTract CEN
country CNT
county CPA
city CTY
delimiter DEL
precinct PRE
state STA
postalCode ZIP
 

2.18.3

Examples

   

See the examples in Examples (§ 2.19.4 ).

 

2.19

Postal Address (AD)

   

Definition:      Mailing and home or office addresses. A sequence of address parts, such as street or post office Box, city, postal code, country, etc.

   

AD is primarily used to communicate data that will allow printing mail labels, that will allow a person to physically visit that address. The postal address data type is not supposed to be a container for additional information that might be useful for finding geographic locations (e.g., GPS coordinates) or for performing epidemiological studies. Such additional information is captured by other, more appropriate HL7 elements.

   

Structurally, the postal address data type is a sequence of address part values with an added "use" code and a valid time range for information about if and when the address can be used for a given purpose.

   

Applications are not required to preserve the ordering of the address parts.

   
  Table 24: Components of Postal Address
Name Type Description
use SET<CS> A set of codes advising a system or user which address in a set of like addresses to select for a given purpose.
useablePeriod GTS A GTS specifying the periods of time during which the address can be used. This is used to specify different addresses for different times of the year or to refer to historical addresses.
isNotOrdered BL A boolean value specifying whether the order of the address parts is known or not. While the address parts are always a Sequence, the order in which they are presented may or may not be known. Where this matters, isNotOrdered can be used to convey this information.
   
XML Representation

   

AD is represented by an XML element whose name is determined by the context in which it is used. The element has attributes and child elements as described in the template and the sub-sections below.

   
Type Template 17
<!-- type AD -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   isNotOrdered = BL
   use = CS*
   >
   Content: ( ( delimiter | country | state | county | city | postalCode | streetAddressLine |
                houseNumber | houseNumberNumeric | direction | streetName | streetNameBase |
                streetNameType | additionalLocator | unitID | unitType | careOf | censusTract |
                deliveryAddressLine | deliveryInstallationType | deliveryInstallationArea |
                deliveryInstallationQualifier | deliveryMode | deliveryModeIdentifier |
                buildingNumberSuffix | postBox | precinct | #PCDATA )*, useablePeriod* )
</x>
   

Any non whitespace text in the AD content is interpreted as ADXP parts with a null partType. Refer to the the Formatting Address section (2.21.1.5) in Abstract Data Types Specification for full details on interpretation of AD content.

 

2.19.1

Use : SET<CS>

   

Definition:      A set of codes advising a system or user which address in a set of like addresses to select for a given purpose.

   

The postal address use codes are defined by the PostalAddressUse domain (Table 25).

   
  Table 25: Domain PostalAddressUse
code name definition
  H home address A communication address at a home, attempted contacts for business purposes might intrude privacy and chances are one will contact family or other household members instead of the person one wishes to call. Typically used with urgent cases, or if no other contacts are available.
    HP primary home The primary home, to reach a person after business hours.
    HV vacation home A vacation home, to reach a person while on vacation.
  WP work place An office address. First choice for business related contacts during business hours.
    DIR Direct Indicates a work place address or telecommunication address that reaches the individual or organization directly without intermediaries. For phones, often referred to as a 'private line'.
    PUB Public Indicates a work place address or telecommunication address that is a 'standard' address which may reach a reception service, mail-room, or other intermediary prior to the target entity.
  BAD bad address A flag indicating that the address is bad, in fact, useless.
  TMP temporary address A temporary address, may be good for visit or mailing. Note that an address history can provide more detailed information.
Identifies the different representations of a name. The representation may affect how the name is used. (E.g. use of Ideographic for formal communications.)
  ABC Alphabetic Alphabetic transcription of name (Japanese: romaji)
  IDE Ideographic Ideographic representation of name (e.g., Japanese kanji, Chinese characters)
  SYL Syllabic Syllabic transcription of name (e.g., Japanese kana, Korean hangul)
PHYS physical visit address Used primarily to visit an address.
PST postal address Used to send mail.
   

The postal address use code is not a complete classification for locations or activities that take place at these locations. Its main purpose is to suggest or discourage the use of a particular address. The use code should not be considered in isolation. The data element in which the address appears (class and attribute) and the context to other data may express the precise nature and use of the address more appropriately than a use code.

   
XML Representation

   

use is represented by the XML attributeuse whose value, if present, must be 0 or more valid values from the PostalAddressUse domain (Table 25) separated by whitespace.

 

2.19.2

Useable Period : GTS

   

Definition:      A GTS specifying the periods of time during which the address can be used. This is used to specify different addresses for different times of the year or to refer to historical addresses.

   
XML Representation

   

useablePeriod is represented by 0 or more XML elementsuseablePeriod each of which must be a valid GTS.

 

2.19.3

Is Not Ordered : BL

   

Definition:      A boolean value specifying whether the order of the address parts is known or not. While the address parts are always a Sequence, the order in which they are presented may or may not be known. Where this matters, isNotOrdered can be used to convey this information.

   
XML Representation

   

isNotOrdered is represented by the XML attributeisNotOrdered whose value, if present, must be a valid BL.

 

2.19.4

Examples

   

The following are examples of addresses in an XML encoded form, where the XML tag is the address part type and the data content is the address part value.

   

The address:

   
1050 W Wishard Blvd,
RG 5th floor,
Indianapolis, IN 46240
   

can be encoded in any of the following forms:

   

The first form would result from a system that only stores addresses as free text or in a list of fields line1, line2, etc.:

   
Example 20
<addr use='WP'>
   1050 W Wishard Blvd,
   RG 5th floor,
   Indianapolis, IN 46240
</addr>
   

The second form is more specific about the role of the address parts than the first one and is the typical form seen in the U.S., where street address is sometimes separated, and city, state and ZIP code are always separated.

   
Example 21
<addr use='WP'>
   <streetAddressLine>1050 W Wishard Blvd</streetAddressLine>,
   <streetAddressLine>RG 5th floor</streetAddressLine>,
   <city>Indianapolis</city>, <state>IN</state>
   <postalCode>46240</postalCode>
</addr>
   

The third is even more specific:

   
Example 22
<addr use='WP'>
   <houseNumber>1050</houseNumber>
   <direction>W</direction>
   <streetName>Wishard Blvd</streetName>,
   <additionalLocator>RG 5th floor</additionalLocator>,
   <city>Indianapolis</city>, <state>IN</state>
   <postalCode>46240</postalCode>
</addr>
   

The latter form above is not often used in the USA. However, it is useful in Germany, where many systems keep house number as a distinct field. For example, the German address:

   
Windsteiner Weg 54a,
D-14165 Berlin
   

would most likely be encoded as follows:

   
Example 23
<addr use='HP'>
   <streetName>Windsteiner Weg</streetName>
   <houseNumber>54a</houseNumber>,<delimiter/>
   <country>D</country>-<postalCode>14165</postalCode>
   <city>Berlin</city>
</addr>
 

2.20

Entity Name Part (ENXP)

   

Definition:      A character string token representing a part of a name. May have a type code signifying the role of the part in the whole entity name, and a qualifier code for more detail about the name part type. Typical name parts for person names are given names, and family names, titles, etc.

   
  Table 26: Components of Entity Name Part
Name Type Description
data XML Text Content The data itself represented in the XML instance encoding.
partType CS Indicates whether the name part is a given name, family name, prefix, suffix, etc.
qualifier SET<CS> qualifier is a set of codes each of which specifies a certain subcategory of the name part in addition to the main name part type. For example, a given name may be flagged as a nickname, a family name may be a pseudonym or a name of public records.
   
XML Representation

   

ENXP is represented as an XML element whose name is derived from the entity name part type code (see table below) and whose content is just like an ST, except that it also has XML attributepartType and XML attributequalifier as described above. The value of the XML attributepartType is fixed to the appropriate name part type. The XML attributepartType is generally not used.

   
Type Template 18
<!-- type ENXP -->
<family
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (FAM): FAM
   qualifier = CS*
   >
   Content: ( #PCDATA )
</family>

<given
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (GIV) : GIV
   qualifier = CS*
   >
   Content: ( #PCDATA )
</given>

<prefix
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (PFX) : PFX
   qualifier = CS*
   >
   Content: ( #PCDATA )
</prefix>

<suffix
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (SFX) : SFX
   qualifier = CS*
   >
   Content: ( #PCDATA )
</suffix>

<delimiter
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   language = CS
   partType = (DEL) : DEL
   qualifier = CS*
   >
   Content: ( #PCDATA )
</delimiter>
 

2.20.1

Data : XML Text Content (inherited from BIN)

   

Definition:      The data itself represented in the XML instance encoding.

   
XML Representation

   

is represented as the text content of the XML element representing the ENXP value.

 

2.20.2

Name Part Type : CS

   

Definition:      Indicates whether the name part is a given name, family name, prefix, suffix, etc.

   

Entity name part types are as defined in Table 27

   
  Table 27: Domain EntityNamePartType
code name definition
FAM family Family name, this is the name that links to the genealogy. In some cultures (e.g. Eritrea) the family name of a son is the first name of his father.
GIV given Given name (don't call it "first name" since this given names do not always come first)
PFX prefix A prefix has a strong association to the immediately following name part. A prefix has no implicit trailing white space (it has implicit leading white space though). Note that prefixes can be inverted.
SFX suffix A suffix has a strong association to the immediately preceding name part. A prefix has no implicit leading white space (it has implicit trailing white space though). Suffices can not be inverted.
DEL delimiter A delimiter has no meaning other than being literally printed in this name representation. A delimiter has no implicit leading and trailing white space.
   

Not every name part must have a type code, if the type code is unknown, not applicable, or simply undefined this is expressed by a null value (type.isNull). For example, a name may be "Rogan Sulma" and it may not be clear which one is a given name or which is a last name, or whether Rogan may be a title.

   

Entity names are conceptualized as text with added mark-up. The mark-up may describe in detail the role of each name part if it is known. Name parts occur in the order in which they would be printed on a mailing label. The model is similar to HTML or XML markup of text.

   
XML Representation

   

partType is represented simultaneously in Element and Attribute forms. In the Element form, the name of the element is determined by the part type, as specified in Table 28 below. Additionally, each such element has an XML attributepartType whose value, if present, must be a valid value from the domain EntityNamePartType (Table 27) corresponding to the part type represented by the element on which it appears. Since the XML attributepartType always has a fixed value, it is not normally present in the XML instance.

   
  Table 28: EntityNamePartType Element Names
Element Name Part Type
delimiter DEL
family FAM
given GIV
prefix PFX
suffix SFX
 

2.20.3

Qualifier : SET<CS>

   

Definition:     qualifier is a set of codes each of which specifies a certain subcategory of the name part in addition to the main name part type. For example, a given name may be flagged as a nickname, a family name may be a pseudonym or a name of public records.

   

Entity name part qualifiers are as defined in Table 29

   
  Table 29: Domain EntityNamePartQualifier
code name definition
  LS Legal status For organizations a suffix indicating the legal status, e.g., "Inc.", "Co.", "AG", "GmbH", "B.V." "S.A.", "Ltd." etc.
  
    AC academic Indicates that a prefix like "Dr." or a suffix like "M.D." or "Ph.D." is an academic title.
    NB nobility In Europe and Asia, there are still people with nobility titles (aristocrats). German "von" is generally a nobility title, not a mere voorvoegsel. Others are "Earl of" or "His Majesty King of..." etc. Rarely used nowadays, but some systems do keep track of this.
    PR professional Primarily in the British Imperial culture people tend to have an abbreviation of their professional organization as part of their credential suffices.
    VV voorvoegsel A Dutch "voorvoegsel" is something like "van" or "de" that might have indicated nobility in the past but no longer so. Similar prefixes exist in other languages such as Spanish, French or Portugese.
  
    AD adopted The name the person was given at the time of adoption.
    BR birth A name that a person had shortly after being born. Usually for family names but may be used to mark given names at birth that may have changed later.
    SP spouse The name assumed from the partner in a marital relationship (hence the "M"). Usually the spouse's family name. Note that no inference about gender can be made from the existence of spouse names.
  
    CL callme A callme name is (usually a given name) that is preferred when a person is directly addressed.
  IN initial Indicates that a name part is just an initial. Initials do not imply a trailing period since this would not work with non-Latin scripts. Initials may consist of more than one letter, e.g., "Ph." could stand for "Philippe" or "Th." for "Thomas".
  TITLE title Indicates that a prefix or a suffix is a title that applies to the whole name, not just the adjacent name part.
   
XML Representation

   

qualifier is represented as the XML attributequalifier whose value, if present, must be 0 or more values from the EntityNamePartQualifier domain (Table 29) separated by whitespace.

 

2.20.4

Examples

   

See the examples in Examples (§ 2.22.3 ), Examples (§ 2.23.3 ) and Examples (§ 2.24.3 ).

 

2.21

Entity Name (EN)

   

Definition:      A name for a person, organization, place or thing. A sequence of name parts, such as given name or family name, prefix, suffix, etc. Examples for entity name values are "Jim Bob Walton, Jr.", "Health Level Seven, Inc.", "Lake Tahoe", etc. An entity name may be as simple as a character string or may consist of several entity name parts, such as, "Jim", "Bob", "Walton", and "Jr.", "Health Level Seven" and "Inc.", "Lake" and "Tahoe".

   

Structurally, the entity name data type is a sequence of entity name part values with an added "use" code and a valid time range for information about if and when the name can be used for a given purpose.

   
  Table 30: Components of Entity Name
Name Type Description
use SET<CS> A set of codes advising a system or user which name in a set of like names to select for a given purpose. A name without specific use code might be a default name useful for any purpose, but a name with a specific use code would be preferred for that respective purpose.
validTime IVL<TS> An interval of time specifying the time during which the name is or was used for the entity. This accomodates the fact that people change names for people, places and things.
   
XML Representation

   

EN is represented by an XML element whose name is determined by the context in which it is used. The element has attributes and child elements as described in the template and the sub-sections below.

   
Type Template 19
<!-- type EN -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   use = CS*
   >
   Content: ( (delimiter | family | given | prefix | suffix | #PCDATA)*, validTime )
</x>
   

Any non whitespace text in the EN content is interpreted as ENXP parts with a null partType. Refer to the the Formatting Name section (2.23.1.4) in Abstract Data Types Specification for full details on interpretation of EN content.

 

2.21.1

Use : SET<CS>

   

Definition:      A set of codes advising a system or user which name in a set of like names to select for a given purpose. A name without specific use code might be a default name useful for any purpose, but a name with a specific use code would be preferred for that respective purpose.

   

The entity names use codes are defined by the EntityNameUse domain (Table 31).

   
  Table 31: Domain EntityNameUse
code name definition
C License As recorded on a license, record, certificate, etc. (only if different from legal name)
I Indigenous/Tribal e.g. Chief Red Cloud
L Legal Known as/conventional/the one you use
P pseudonym A self asserted name that the person is using or has used.
  A Artist/Stage Includes writer's pseudonym, stage name, etc
R Religious e.g. Sister Mary Francis, Brother John
SRCH search A name intended for use in searching or matching.
  PHON phonetic A name spelled phonetically.
  SNDX Soundex A name spelled according to the SoundEx algorithm.
ABC Alphabetic Alphabetic transcription of name (Japanese: romaji)
SYL Syllabic Syllabic transcription of name (e.g., Japanese kana, Korean hangul)
IDE Ideographic Ideographic representation of name (e.g., Japanese kanji, Chinese characters)
   
XML Representation

   

use is represented by the XML attributeuse whose value, if present, must be 0 or more valid values from the EntityNameUse domain (Table 31) separated by whitespace.

 

2.21.2

Valid Time : IVL<TS>

   

Definition:      An interval of time specifying the time during which the name is or was used for the entity. This accomodates the fact that people change names for people, places and things.

   
XML Representation

   

validTime is represented by 0 or more XML elementsvalidTime each of which must be a valid IVL<TS>.

 

2.21.3

Examples

   

See the examples in Examples (§ 2.22.3 ), Examples (§ 2.23.3 ) and Examples (§ 2.24.3 ).

 

2.22

Person Name (PN) specializes EN

   

Definition:      A name for a person. A sequence of name parts, such as given name or family name, prefix, suffix, etc. PN differs from EN because the qualifier type cannot include LS (Legal Status).

   
  Table 32: Components of Person Name
Name Type Description
use SET<CS> A set of codes advising a system or user which name in a set of like names to select for a given purpose. A name without specific use code might be a default name useful for any purpose, but a name with a specific use code would be preferred for that respective purpose.
validTime IVL<TS> An interval of time specifying the time during which the name is or was used for the entity. This accomodates the fact that people change names for people, places and things.
   
XML Representation

   

PN is represented by an XML element whose name is determined by the context in which it is used. The element has attributes and child elements as described in the template and the sub-sections below.

   
Type Template 20
<!-- type PN -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   use = CS*
   >
   Content: ( (delimiter | family | given | prefix | suffix | #PCDATA)*, validTime )
</x>
   

Any non whitespace text in the PN content is interpreted as ENXP parts with a null partType. Refer to the the Formatting Name section (2.23.1.4) in Abstract Data Types Specification for full details on interpretation of PN content.

 

2.22.1

Use : SET<CS> (inherited from EN)

   

Definition:      A set of codes advising a system or user which name in a set of like names to select for a given purpose. A name without specific use code might be a default name useful for any purpose, but a name with a specific use code would be preferred for that respective purpose.

   
XML Representation

   

use is represented by the XML attributeuse whose value, if present, must be 0 or more valid values from the EntityNameUse domain (Table 31) separated by whitespace.

 

2.22.2

Valid Time : IVL<TS> (inherited from EN)

   

Definition:      An interval of time specifying the time during which the name is or was used for the entity. This accomodates the fact that people change names for people, places and things.

   
XML Representation

   

validTime is represented by 0 or more XML elementsvalidTime each of which must be a valid IVL<TS>.

 

2.22.3

Examples

   

A very simple encoding of "Adam A. Everyman" would be:

   
Example 24
<name>
   <given>Adam</given>
   <given>A.</given>
   <family>Everyman</family>
</name>
   

None of the special qualifiers need to be mentioned if they are unknown or irrelevant. The next example shows extensive use of multiple given names, prefixes, suffixes, for academic degrees, nobility titles, vorvoegsels ("van"), and professional designations.

   
Example 25
<name>
   <prefix qualifier='AC'>Dr. phil. </prefix>
   <given>Regina</given>
   <given>Johanna</given>
   <given>Maria</given>
   <prefix qualifier='NB'>Gr&auml;fin </prefix>
   <family qualifier='BR'>Hochheim</family>-<family qualifier='SP'>Weilenfels</family>
   <suffix qualifier='PR'>NCFSA</suffix>
</name>
   

The following example shows a Japanese name in the three forms: ideographic (Kanji), syllabic (Hiragana), and alphabetic (Romaji).

   
Example 26
<name use='IDE'>
   <family>木村</family>
   <given>道男</given>
</name>
<name use="SYL">
   <family>きむら</family>
   <given>みちお</given>
</name>
<name use="ABC">
   <family>KIMURA</family>
   <given>MICHIO</given>
</name>
 

2.23

Organization Name (ON) specializes EN

   

Definition:      A name for an organization. A sequence of name parts.

   
  Table 33: Components of Organization Name
Name Type Description
use SET<CS> A set of codes advising a system or user which name in a set of like names to select for a given purpose. A name without specific use code might be a default name useful for any purpose, but a name with a specific use code would be preferred for that respective purpose.
validTime IVL<TS> An interval of time specifying the time during which the name is or was used for the entity. This accomodates the fact that people change names for people, places and things.
   
XML Representation

   

ON is represented by an XML element whose name is determined by the context in which it is used. The element has attributes and child elements as described in the template and the sub-sections below.

   
Type Template 21
<!-- type ON -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   use = CS*
   >
   Content: ( (delimiter | prefix | suffix | #PCDATA)*, validTime )
</x>
   

Any non whitespace text in the ON content is interpreted as ENXP parts with a null partType. Refer to the the Formatting Name section (2.23.1.4) in Abstract Data Types Specification for full details on interpretation of ON content.

 

2.23.1

Use : SET<CS> (inherited from EN)

   

Definition:      A set of codes advising a system or user which name in a set of like names to select for a given purpose. A name without specific use code might be a default name useful for any purpose, but a name with a specific use code would be preferred for that respective purpose.

   
XML Representation

   

use is represented by the XML attributeuse whose value, if present, must be 0 or more valid values from the EntityNameUse domain (Table 31) separated by whitespace.

 

2.23.2

Valid Time : IVL<TS> (inherited from EN)

   

Definition:      An interval of time specifying the time during which the name is or was used for the entity. This accomodates the fact that people change names for people, places and things.

   
XML Representation

   

validTime is represented by 0 or more XML elementsvalidTime each of which must be a valid IVL<TS>.

 

2.23.3

Examples

   

The following is the name of HL7 with the legal status "Inc." as a distinguished name part:

   
Example 27
<name>Health Level Seven, <suffix qualifier='LS'>Inc.</suffix></name>
 

2.24

Trivial Name (TN) specializes EN

   

Definition:      A restriction of entity name that is effectively a simple string used for a simple name for things and places.

   
  Table 34: Components of Trivial Name
Name Type Description
use SET<CS> A set of codes advising a system or user which name in a set of like names to select for a given purpose. A name without specific use code might be a default name useful for any purpose, but a name with a specific use code would be preferred for that respective purpose.
validTime IVL<TS> An interval of time specifying the time during which the name is or was used for the entity. This accomodates the fact that people change names for people, places and things.
   
XML Representation

   

TN is represented by an XML element whose name is determined by the context in which it is used. The element has attributes and child elements as described in the template and the sub-sections below.

   
Type Template 22
<!-- type TN -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   use = CS*
   >
   Content: ( #PCDATA, validTime )
</x>
 

2.24.1

Use : SET<CS> (inherited from EN)

   

Definition:      A set of codes advising a system or user which name in a set of like names to select for a given purpose. A name without specific use code might be a default name useful for any purpose, but a name with a specific use code would be preferred for that respective purpose.

   
XML Representation

   

use is represented by the XML attributeuse whose value, if present, must be 0 or more valid values from the EntityNameUse domain (Table 31) separated by whitespace.

 

2.24.2

Valid Time : IVL<TS> (inherited from EN)

   

Definition:      An interval of time specifying the time during which the name is or was used for the entity. This accomodates the fact that people change names for people, places and things.

   
XML Representation

   

validTime is represented by 0 or more XML elementsvalidTime each of which must be a valid IVL<TS>.

 

2.24.3

Examples

   

The following is the organization name, "Health Level Seven, Inc." in a simple string form:

   
Example 28
<name>Health Level Seven, Inc.</name>
 

2.25

Quantity (QTY)

   

Definition:     QTY is an abstract generalization for all data types (1) whose value set has an order relation (less-or-equal) and (2) where difference is defined in all of the data type's totally ordered value subsets. The quantity type abstraction is needed in defining certain other types, such as the interval and the probability distribution.

   

The Data Types Abstract Specification defines a diff property of a data type (not data value) that is the data type of the difference value between two data values of the quantity type. By default the diff property equals the same data type, but it may be overridden by a specialization of QTY. For instance, the difference between two TS values has the data type PQ (in the dimension of elapsed time.)

   
XML Representation

   

QTY is an abstract data type and cannot be used directly in the XML instance, so it has no XML representation. Instead, a specific descendent type must be used.

 

2.26

Integer Number (INT) specializes QTY

   

Definition:      Integer numbers (-1,0,1,2, 100, 3398129, etc.) are precise numbers that are results of counting and enumerating. Integer numbers are discrete, the set of integers is infinite but countable. No arbitrary limit is imposed on the range of integer numbers. Two NULL flavors are defined for the positive and negative infinity.

   
XML Representation

   

INT is represented by both Element and Attribute forms. In the Element form, the name of the element is determined by the context in which it is used. The element has attributes as described in the template and the sub-sections below.

   
Type Template 23
<!-- type INT -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   value = xs:integer
   />
   

XML instances may carry either a nullFlavor or a value, but not both.

   

The Attribute form of INT is used when properties of other data types have type INT. The name of the attribute is determined by the context in which it is used. The attribute value is the integer value.

 

2.27

Real Number (REAL) specializes QTY

   

Definition:      Fractional numbers. Typically used whenever quantities are measured, estimated, or computed from other real numbers. The typical representation is decimal, where the number of significant decimal digits is known as the precision. Real numbers are needed beyond integers whenever quantities of the real world are measured, estimated, or computed from other real numbers. The term "Real number" in this specification is used to mean that fractional values are covered without necessarily implying the full set of the mathematical real numbers.

   
XML Representation

   

REAL is represented by both Element and Attribute forms. In the Element form, the name of the element is determined by the context in which it is used. The element has attributes as described in the template and the sub-sections below.

   
Type Template 24
<!-- type REAL -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   value = Union of (xs:decimal xs:double)
   />
   

XML instances may carry either a nullFlavor or a value, but not both.

   

The Attribute form of REAL is used when properties of other data types have type REAL. The name of the attribute is determined by the context in which it is used. The attribute value is the real value.

   

For both the element and Attribute form, the value of the REAL as represented must conform to either of the XML Schema data types decimal or double.

 

2.28

Physical Quantity (PQ) specializes QTY

   

Definition:      A dimensioned quantity expressing the result of a measurement act.

   
  Table 35: Components of Physical Quantity
Name Type Description
value REAL The magnitude of the quantity measured in terms of the unit.
unit CS The unit of measure specified in the Unified Code for Units of Measure (UCUM) [http://aurora.rg.iupui.edu/UCUM].
translation PQR An alternative representation of the same physical quantity expressed in a different unit, of a different unit code system and possibly with a different value.
   
XML Representation

   

PQ is represented by an XML element whose name is determined by the context in which it is used. The element has attributes and child elements as described in the template and the sub-sections below.

   
Type Template 25
<!-- type PQ -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   value = REAL
   unit = CS
   >
   Content: ( translation* )
</x>
   

XML instances may carry either a nullFlavor or a value, but not both. The unit attribute must be populated if the value attribute is present, and cannot be present when the value attribute is not present.

 

2.28.1

Value : REAL

   

Definition:      The magnitude of the quantity measured in terms of the unit.

   
XML Representation

   

value is represented by the XML attributevalue whose value, if present, must be a valid REAL.

 

2.28.2

Unit of Measure : CS

   

Definition:      The unit of measure specified in the Unified Code for Units of Measure (UCUM) [http://aurora.rg.iupui.edu/UCUM].

   

More detail on the Unified Code for Units of Measure, and example tables of units commonly seen in practice with HL7 are provided in an appendix of the Data Types Abstract Specification.

   

The default unit of measure is 1 (the "unity").

   
XML Representation

   

unit is represented by the XML attributeunit whose value, if present, must be a valid unit of measure as defined in UCUM [http://aurora.rg.iupui.edu/UCUM].

 

2.28.3

Translation : PQR

   

Definition:      An alternative representation of the same physical quantity expressed in a different unit, of a different unit code system and possibly with a different value.

   
XML Representation

   

translation is represented by 0 or more XML elementstranslation each of which must be a valid PQR.

 

2.28.4

Examples

   

This example shows a value of 22.35 millimoles per milliliter.

   
Example 29
<value value='22.35' unit='mmol/mL'/>
   

The final example shows a value of 1.77 meters as well as a translation into inches.

   
Example 30
<value value='1.77' unit='m'>
   <translation value='69.7' code='[in_I]'
      codeSystem='2.16.840.1.113883.19.6.8' codeSystemName='UCUM'/>
</value>
 

2.29

Physical Quantity Representation (PQR) specializes CV

   

Definition:      A representation of a physical quantity in a unit from any code system. Used to show alternative representation for a physical quantity.

   
  Table 36: Components of Physical Quantity Representation
Name Type Description
value REAL The magnitude of the measurement value in terms of the unit specified in the code.
code ST The plain code symbol defined by the code system. For example, "784.0" is the code symbol of the ICD-9 code "784.0" for headache.
codeSystem UID Specifies the code system that defines the code.
codeSystemName ST A common name of the coding system.
codeSystemVersion ST If applicable, a version descriptor defined specifically for the given code system.
displayName ST A name or title for the code, under which the sending system shows the code value to its users.
originalText ED The text or phrase used as the basis for the coding.
   

This is an extension of the coded value data type.

   
XML Representation

   

PQR is represented by an XML element whose name is determined by the context in which it is used. The element has attributes and child elements as described in the template and the sub-sections below.

   
Type Template 26
<!-- type PQR -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   code = ST
   codeSystem = UID
   codeSystemName = ST
   codeSystemVersion = ST
   displayName = ST
   value = REAL
   >
   Content: ( originalText )
</x>
 

2.29.1

Value : REAL

   

Definition:      The magnitude of the measurement value in terms of the unit specified in the code.

   
XML Representation

   

value is represented by the XML attributevalue whose value, if present, must be a valid REAL.

 

2.29.2

Code : ST (inherited from CD)

   

Definition:      The plain code symbol defined by the code system. For example, "784.0" is the code symbol of the ICD-9 code "784.0" for headache.

   
XML Representation

   

code is represented by the XML attributecode whose value, if present, must be a valid xs:token with no internal whitespace.

 

2.29.3

Code System : UID (inherited from CD)

   

Definition:      Specifies the code system that defines the code.

   
XML Representation

   

codeSystem is represented by the XML attributecodeSystem whose value, if present, must be a valid UID.

 

2.29.4

Code System Name : ST (inherited from CD)

   

Definition:      A common name of the coding system.

   
XML Representation

   

codeSystemName is represented by the XML attributecodeSystem whose value, if present, must be a valid ST.

 

2.29.5

Code System Version : ST (inherited from CD)

   

Definition:      If applicable, a version descriptor defined specifically for the given code system.

   
XML Representation

   

codeSystemVersion is represented by the XML attributecodeSystemVersion whose value, if present, must be a valid ST.

 

2.29.6

Display Name : ST (inherited from CD)

   

Definition:      A name or title for the code, under which the sending system shows the code value to its users.

   
XML Representation

   

displayName is represented by the XML attributedisplayName whose value, if present, must be a valid ST.

 

2.29.7

Original Text : ED (inherited from CD)

   

Definition:      The text or phrase used as the basis for the coding.

   
XML Representation

   

originalText is represented by the XML elementoriginalText which, if present, must be a valid ED.

 

2.29.8

Examples

   

See the example using PQ.translation in Examples (§ 2.28.4 ).

 

2.30

Monetary Amount (MO) specializes QTY

   

Definition:      A monetary amount is a quantity expressing the amount of money in some currency. Currencies are the units in which monetary amounts are denominated in different economic regions. While the monetary amount is a single kind of quantity (money) the exchange rates between the different units are variable. This is the principle difference between physical quantity and monetary amounts, and the reason why currency units are not physical units.

   
  Table 37: Components of Monetary Amount
Name Type Description
value REAL The magnitude of the monetary amount in terms of the currency unit.
currency CS The currency unit as defined in ISO 4217.
   
XML Representation

   

MO is represented by an XML element whose name is determined by the context in which it is used. The element has attributes as described in the template and the sub-sections below.

   
Type Template 27
<!-- type MO -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   value = REAL
   currency = CS
   />
 

2.30.1

Value : REAL

   

Definition:      The magnitude of the monetary amount in terms of the currency unit.

   
XML Representation

   

value is represented by the XML attributevalue whose value, if present, must be a valid REAL.

 

2.30.2

Currency : CS

   

Definition:      The currency unit as defined in ISO 4217.

   
  Table 38: Domain Currency
code name definition
ARS Argentine Peso Argentine Peso, monetary currency of Argentina
AUD Australian Dollar Australian Dollar, monetary currency of Australia
BRL Brazilian Real Brazilian Real, monetary currency of Brazil
CAD Canadian Dollar Canadian Dollar, monetary currency of Canada
CHF Swiss Franc Swiss Franc, monetary currency of Switzerland
CLF Unidades de Formento Unidades de Formento, monetary currency of Chile
CNY Yuan Renminbi Yuan Renminbi, monetary currency of China
DEM Deutsche Mark Deutsche Mark, monetary currency of Germany
ESP Spanish Peseta Spanish Peseta, monetary currency of Spain
EUR Euro Euro, monetary currency of European Union
FIM Markka Markka, monetary currency of Finland
FRF French Franc French Franc, monetary currency of France
GBP Pound Sterling Pound Sterling, monetary currency of United Kingdom
ILS Shekel Shekel, monetary currency of Israel
INR Indian Rupee Indian Rupee, monetary currency of India
JPY Yen Yen, monetary currency of Japan
KRW Won Won, monetary currency of Korea (South)
MXN Mexican Nuevo Peso Mexican Nuevo Peso, monetary currency of Mexico
NLG Netherlands Guilder Netherlands Guilder, monetary currency of Netherlands
NZD New Zealand Dollar New Zealand Dollar, monetary currency of New Zealand
PHP Philippine Peso Philippine Peso, monetary currency of Philippines
RUR Russian Ruble Russian Ruble, monetary currency of Russian Federation
THB Baht Baht, monetary currency of Thailand
TRL Lira Lira, monetary currency of Turkey
TWD Taiwan Dollar Taiwan Dollar, monetary currency of Taiwan
USD US Dollar US Dollar, monetary currency of United States
ZAR Rand Rand, monetary currency of South Africa
   

This table only shows a representative subset of the codes defined by ISO 4217. All codes from ISO 4127 are valid for this attribute.

   
XML Representation

   

currency is represented by the XML attributevalue whose value, if present, must be a valid currency code as defined by ISO 4217.

 

2.30.3

Examples

   

This example shows an amount of 10 Euros.

   
Example 31
<amt value='10' currency='EUR'/>
 

2.31

Ratio (RTO) specializes QTY

   

Definition:      A quantity constructed as the quotient of a numerator quantity divided by a denominator quantity. Common factors in the numerator and denominator are not automatically cancelled out. RTO supports titers (e.g., "1:128") and other quantities produced by laboratories that truly represent ratios. Ratios are not simply "structured numerics", particularly blood pressure measurements (e.g. "120/60") are not ratios. In many cases REAL should be used instead of RTO.

   
NOTE: This data type is not defined to generally represent rational numbers. It is used only if common factors in numerator and denominator are not supposed to cancel out. This is only rarely the case. For observation values, ratios occur almost exclusively with titers.
   
  Table 39: Components of Ratio
Name Type Description
numerator QTY The quantity that is being divided in the ratio. The default is the integer number 1 (one).
denominator QTY The quantity that devides the numerator in the ratio. The default is the integer number 1 (one). The denominator must not be zero.
   

The default value for both numerator and denominator is the integer number 1 (one.) The denominator may not be zero.

   
NOTE: This data type is defined as a generic data type but discussed in the context of the other quantity-related data types. The reason for defining RTO as a generic data type is so that it can be constrained precisely as to what the numerator and denominator types should be.
   
XML Representation

   

RTO is represented by an XML element whose name is determined by the context in which it is used. The element has attributes as described in the template and the sub-sections below.

   
Type Template 28
<!-- type RTO -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   >
   Content: ( numerator, denominator )
</x>
   

Both numerator and denominator are required for a ratio or else it has a NULL value. (Note that both numerator and denominator have 1 (one) as their default.)

   

XML instances must use the xsi:type schema type assertion mechanism to specify the particular restriction of QTY being used for numerator and denominator respectively. The types may be asserted on the numerator or denominator directly (as in Example 32 and Example 34), or the combined type may be asserted on the element representing the RTO value (as in Example 33). In the later case, the type name to be asserted follows the rules described in Use of attributes from XML specifications (§ 1.4 ).

 

2.31.1

Numerator : QTY

   

Definition:      The quantity that is being divided in the ratio. The default is the integer number 1 (one).

   
XML Representation

   

numerator is represented by the XML elementnumerator which, if present, must be valid instance of a descendant of QTY.

 

2.31.2

Denominator : QTY

   

Definition:      The quantity that devides the numerator in the ratio. The default is the integer number 1 (one). The denominator must not be zero.

   
XML Representation

   

denominator is represented by the XML elementdenominator which, if present, must be valid instance of a descendant of QTY.

 

2.31.3

Examples

   

The first example shows a ratio of INTs, where the types of the numerator and demoninator are asserted individually.

   
Example 32
<unitQuanity>
   <numerator value='1' xsi:type='INT'/>
   <denominator value='64' xsi:type='INT'/>
</unitQuanity>
   

The second example shows a ratio of MO and PQ where the types of the numerator and demoninator are asserted on the element representing the RTO value.

   
Example 33
<unitPriceAmount xsi:type='RTO_MO_PQ'>
   <numerator value='1.15' currency='USD'/>
   <denominator value='1' unit='[gal_us]'/>
</unitPriceAmount>
   

The final example shows a ratio of PQs, where the types of the numerator and demoninator are asserted individually.

   
Example 34
<maxDoseQuantity>
   <numerator xsi:type='PQ' value='25' unit='mg'/>
   <denominator xsi:type='PQ' value='5' unit='mL'/>
</maxDoseQuantity>
 

2.32

Point in Time (TS) specializes QTY

   

Definition:      A quantity specifying a point on the axis of natural time. A point in time is most often represented as a calendar expression.

   
XML Representation

   

TS is represented by an XML element whose name is determined by the context in which it is used. The element has attributes as described in the template below. The format of the value attribute is described below.

   
Type Template 29
<!-- type TS -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   value = ST
   />
   

XML instances may carry either a nullFlavor or a value, but not both.

   

The value of a point in time is represented using the ISO 8601 compliant form traditionally in use with HL7. This is the form that has no decorating dashes, colons and no "T" between the date and time. In short, the syntax is "YYYYMMDDHHMMSS.UUUU[+|-ZZzz]" where digits can be omitted from the right side to express less precision. Common forms are "YYYYMMDD" and "YYYYMMDDHHMM", but the ability to truncate on the right side is not limited to these two variants. See the Data Types Abstract Specification for detail.

   
NOTE: This is not the W3C Schema form for dateTime. The W3C Schema time data types do not lend themselves as well to representing the varying precision as well as the simpler ISO 8601 variant that is well established in HL7.
 

2.32.1

Examples

   

This example shows April 7, 2000.

   
Example 35
<effectiveTime value="20000407"/>
   

The next example shows 12:42 pm (in the time zone that is 8 hours before UTC) on September 21, 2005.

   
Example 36
<effectiveTime value="200509211242-08"/>
 

3

Generic Data Types

   

The Data Types Abstract Specification defines generic types, also called "parameterized types" (UML), "generics" (ADA) or "templates" (C++). Generic types are incomplete types with parameters such that they define actual types (sometimes called "instantiated" types) when their parameters are specified. For example, a LIST is a generic sequence of any values of a parameter type T. Given this generic type we can specify specific types such as LIST<CE> as sequences of codes or LIST<PQ> for a sequences of physical quantities.

   

The Data Types Abstract Specification specifies two different kinds of generic types, "generic collections" and "generic type extensions". Generic collections specify sets, sequences or other groups of data values. Generic type extensions provide extensions to normal types that are of general use, such as a valid-time for a "history item" or a probability for an "uncertain value".

   

In this XML specification, however, we will present these two kinds of types together. The reason is that enumerated collection types do not exist in the common use of XML. Instead it is common practice in XML to represent enumerated collections as a sequence of XML elements with the same name (repeated element). Therefore we define all such enumerated collection types as generic type extensions of their element type. For example, instead of having an XML element that stands for a whole BAG, we have generic type extension for bag-item (BXIT) so that the XML-element of type BAG is defined in the schema as a bag-item that can repeat.

 

3.1

Set (SET)

   

Definition:      A value that contains other distinct values in no particular order.

   

Exceptional values (NULL-values) can not be elements of a set.

   

The empty set is a set without any elements. The empty set is a proper set value, not an exceptional value (NULL-value).

   
XML Representation

   

SET is represented by both Element and Attribute forms. In the Element form, SET is represented by a sequence of XML elements, each of whose name is determined by the context in which it is used. The elements are of type T or SXCM, and have attributes and child elements as described for the data type T and also the attributes described below for SXCM.

   

The Attribute form of SET is used when properties of other data types have type SET and T also has an Attribute form with no whitespace content. The name of the attribute is determined by the context in which it is used. The attribute value is a series of values of type T separated by whitespace.

 

3.1.1

Examples

   

The first example shows an Act with a set of id's.

   
Example 37
<act>
   <id root='2.16.840.1.113883.19' extension='123A45'/>
   <id root='343EA54F-D0E0-CE95-56C7-23108D6E25B8' extension='N8718349'/>
   ...
</act>
   

The next example shows an Act with a set of reasonCode's.

   
Example 38
<act>
   ...
   <reasonCode code='PHY' codeSystem='2.16.840.1.113883.19.5.8'
      codeSystemName='ActReason' displayName='Physician request'/>
   <reasonCode code='MEDNEC' codeSystem='2.16.840.1.113883.19.5.8'
      codeSystemName='ActReason' displayName='Medical Necessity'/>
   ...
</act>
   

The final example shows an Act with an effectiveTime that uses the intersect SXCM.operator.

   
Example 39
<act>
   ...
   <effectiveTime xsi:type='IVL_TS'>
      <low value='20040204'/>
   </effectiveTime>
   <effectiveTime xsi:type='PIVL_TS' operator='A'>
      <phase>
         <center value='200402041200'/>
      </phase>
      <period value='1' unit='d'/>
   </effectiveTime>
   ...
</act>
 

3.2

Set Component (SXCM)

   

Definition:      An ITS-defined generic type extension for the base data type of a set, representing a component of a general set over a discrete or continuous value domain. Its use is mainly for continuous value domains. Discrete (enumerable) set components are the individual elements of the base data type.

   
  Table 40: Components of Set Component
Name Type Description
operator CS A code specifying whether the set component is included (union) or excluded (set-difference) from the set, or other set operations with the current set component and the set as constructed from the representation stream up to the current point.
   
XML Representation

   

SXCM is represented by an XML element whose name is determined by the context in which it is used. SXCM has all the attributes and child elements described for the Element form of T and adds an XML attributeoperator as described in the template and sub-sections below.

   
Type Template 30
<!-- type SXCM -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   {any attributes from T}
   operator = (I | E | A | H | P) : I
   >
   Content: ( {any elements from T} )
</x>
 

3.2.1

Operator : CS

   

Definition:      A code specifying whether the set component is included (union) or excluded (set-difference) from the set, or other set operations with the current set component and the set as constructed from the representation stream up to the current point.

   
  Table 41: Domain SetOperator
code name definition
A intersect Form the intersection with the value.
E exclude Form the set-difference with this value, i.e., exclude this element or set from the resulting set.
H convex hull Form the convex hull with the value. The convex hull is defined over ordered domains and is the smallest contiguous superset (interval) that of all the operand sets.
I include Form the union with this value, i.e., include this element or set in the resulting set.
P periodic hull Form the periodic hull with the value. The periodic hull is defined over ordered domains and is the periodic set that contains all contiguous supersets of pairs of intervals generated by the operand periodic intervals.
   
XML Representation

   

operator is represented as the XML attributeoperator, whose value, if present, must be a valid code from the SetOperator domain (Table 41). The default value is I.

 

3.2.2

Examples

   

See the examples using operator in Examples (§ 3.1.1 ).

 

3.3

Sequence (LIST)

   

Definition:      A value that contains other discrete values in a defined sequence.

   
XML Representation

   

LIST is represented by both Element and Attribute forms. In the Element form, the list is represented by a sequence of XML elements, each of whose name is determined by the context in which it is used. The elements have attributes and element children as described for the data type T.

   

The Attribute form of LIST is used when properties of other data types have type LIST and T also has an Attribute form which does not allow whitespace. The name of the attribute is determined by the context in which it is used. The attribute value is a series of values of type T separated by whitespace.

 

3.3.1

Examples

   

The first example shows a list of templateId's.

   
Example 40
<act>
   ...
   <templateId root='2.16.840.1.113883.19' extension='Acme Template 1'/>
   <templateId root='2.16.840.1.113883.19' extension='Acme Template 2'/>
   ...
</act>
   

The second example shows a regionOfInterest whose value is a list of INT (that specifies the coordinates of the endpoints of the major and minor axes.

   
Example 41
<regionOfInterest classCode='ROIOVL'>
   <code code='ELLIPSE'/>
   <value value='3'/>
   <value value='1'/>
   <value value='3'/>
   <value value='7'/>
   <value value='2'/>
   <value value='4'/>
   <value value='4'/>
   <value value='4'/>
</regionOfInterest>
 

3.4

Generated Sequence (GLIST)

   

Definition:      A periodic or monotone sequence of values generated from a few parameters, rather than being enumerated. Used to specify regular sampling points for biosignals.

   
  Table 42: Components of Generated Sequence
Name Type Description
head T This is the start-value of the generated list.
increment T.diff The difference between one value and its previous different value. For example, to generate the sequence (1; 4; 7; 10; 13; ...) the increment is 3; likewise to generate the sequence (1; 1; 4; 4; 7; 7; 10; 10; 13; 13; ...) the increment is also 3.
period INT If non-NULL, specifies that the sequence alternates, i.e., after this many increments, the sequence item values roll over to start from the initial sequence item value. For example, the sequence (1; 2; 3; 1; 2; 3; 1; 2; 3; ...) has period 3; also the sequence (1; 1; 2; 2; 3; 3; 1; 1; 2; 2; 3; 3; ...) has period 3 too.
denominator INT The integer by which the index for the sequence is divided, effectively the number of times the sequence generates the same sequence item value before incrementing to the next sequence item value. For example, to generate the sequence (1; 1; 1; 2; 2; 2; 3; 3; 3; ...) the denominator is 3.
   

The item at a certain index in the list is calculated by performing an integer division on the index (i) with the denominator (d) and then take that value's remainder with the period (p). Multiply this value with the increment (Δx) and add to the head (x0.)

   
XML Representation

   

GLIST is represented in Element form as described in the template and sub-sections below. The name of the element is determined by the context in which it is used.

   
Type Template 31
<!-- type GLIST -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   period = INT
   denominator = INT
   >
   Content: ( head, increment )
</x>
 

3.4.1

Head : T

   

Definition:      This is the start-value of the generated list.

   
XML Representation

   

head is represented as XML elementhead which, if present, must be a valid T.

 

3.4.2

Increment : T.diff

   

Definition:      The difference between one value and its previous different value. For example, to generate the sequence (1; 4; 7; 10; 13; ...) the increment is 3; likewise to generate the sequence (1; 1; 4; 4; 7; 7; 10; 10; 13; 13; ...) the increment is also 3.

   
XML Representation

   

increment is represented as the XML elementincrement which, if present, must be a valid T.diff.

 

3.4.3

Period Step Count : INT

   

Definition:      If non-NULL, specifies that the sequence alternates, i.e., after this many increments, the sequence item values roll over to start from the initial sequence item value. For example, the sequence (1; 2; 3; 1; 2; 3; 1; 2; 3; ...) has period 3; also the sequence (1; 1; 2; 2; 3; 3; 1; 1; 2; 2; 3; 3; ...) has period 3 too.

   
XML Representation

   

period is represented as the XML attributeperiod, whose value, if present, must be a valid INT.

 

3.4.4

Denominator : INT

   

Definition:      The integer by which the index for the sequence is divided, effectively the number of times the sequence generates the same sequence item value before incrementing to the next sequence item value. For example, to generate the sequence (1; 1; 1; 2; 2; 2; 3; 3; 3; ...) the denominator is 3.

   
XML Representation

   

denominator is represented as the XML attributedenominator, whose value, if present, must be a valid INT.

 

3.4.5

Examples

   

The first example shows the time base for an EKG strip written at October 29, 2002 at 16:51:13 at a per 2 ms sampling rate.

   
Example 42
<value xsi:type='GLIST_TS'>
   <head value='20021029165113'/>
   <increment value='2' unit='ms'/>
</value>
   

The second example shows a RADAR scan that increments in 2 degrees and has a period of 360 degrees, i.e., of 180 increments.

   
Example 43
<value xsi:type='GLIST_PQ' period='180'>
   <head value='0'/>
   <increment value='2' unit='deg'/>
</value>
 

3.5

Sampled Sequence (SLIST)

   

Definition:      A sequence of sampled values scaled and translated from a list of integer values. Used to specify sampled biosignals.

   
  Table 43: Components of Sampled Sequence
Name Type Description
origin T The origin of the list item value scale, i.e., the physical quantity that a zero-digit in the sequence would represent.
scale T.diff A ratio-scale quantity that is factored out of the digit sequence.
digits LIST<INT> A sequence of raw digits for the sample values. This is typically the raw output of an A/D converter.
   

The item at a certain index (i) in the list is calculated by multiplying the item at the same index in the digits sequence (di) with the scale (s) and then add that value to the origin (xo).

   
XML Representation

   

SLIST is represented in Element form as described in the template and sub-sections below. The name of the element is determined by the context in which it is used.

   
Type Template 32
<!-- type SLIST -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   >
   Content: ( origin, scale, digits )
</x>
 

3.5.1

Origin : T

   

Definition:      The origin of the list item value scale, i.e., the physical quantity that a zero-digit in the sequence would represent.

   
XML Representation

   

origin is represented as the XML elementorigin which, if present, must be a valid T.

 

3.5.2

Scale Factor : T.diff

   

Definition:      A ratio-scale quantity that is factored out of the digit sequence.

   
XML Representation

   

scale is represented as the XML elementscale which, if present, must be a valid T.diff.

 

3.5.3

Sampled Digits : LIST<INT>

   

Definition:      A sequence of raw digits for the sample values. This is typically the raw output of an A/D converter.

   
XML Representation

   

digits is represented as the XML elementdigits which, if present, is a whitespace separated list of the Attribute form of INT.

   
NOTE: The representation of this property does not match any of the allowed representations for LIST<INT>.
 

3.5.4

Examples

   

This example shows Lead II of an EKG tracing, with origin calibrated at 0 μV and with a scale factor of 2.5 μV.

   
Example 44
<value xsi:type='SLIST_PQ'>
   <origin value='0' unit='uV'/>
   <scale value='2.5' unit='uV'/>
   <digits>-4 -13 -18 -18 -18 -17 -16 -16 -16 -16 -16 -17 -18 -18 -18
      -17 -16 -16 -16 -15 -13 -11 -10 -10 -9 -6 -4 -5 -5 -3 -2 -2 -1 1 2 3 5
      7 8 9 10 11 12 13 15 17 19 21 23 25 27 29 30 30 31 34 37 40 43 45 46
      46 46 46 46 47 49 51 53 55 57 59 60 59 58 58 58 57 56 56 56 57 57 55
      53 50 47 45 74 51 38 33 31 28 25 21 16 14 15 13 9 7 4 1 -1 -3 -4 -6
      -10 -12 -13 -12 -12 -17 -18 -18 -18 -19 -20 -21 -20 -20 -20 -20 -20
      ...
      2 1 0 0 0 1 2 2 1 1 1 0 -1 0 1 1 1 1 2 1</digits>
</value>
 

3.6

Bag (BAG)

   

Definition:      An unordered collection of values, where each value can be contained more than once in the bag.

   
XML Representation

   

BAG is represented by both Element and Attribute forms. In the Element form, the bag is represented by a sequence of XML elements, each of whose name is determined by the context in which it is used. The elements are of type T or BXIT, and have attributes and child elements as described for the data type T and may also the attributes described below for BXIT.

   

The Attribute form of BAG is used when properties of other data types have type BAG and T also has an Attribute form with no whitespace content. The name of the attribute is determined by the context in which it is used. The attribute value is a series of values of type T separated by whitespace.

 

3.6.1

Examples

   

This example shows an Organization with multiple addresses.

   
Example 45
<organization>
   ...
   <addr use='DIR'>123 Main St., Anytown, CA, US</addr>
   <addr use='PUB'>456 Boradway St., Anytown, CA, US</addr>
   ...
</organization>
 

3.7

Bag Item (BXIT)

   

Definition:      An ITS-defined generic data type extension that represents a collection of a certain number of identical items in a bag.

   
  Table 44: Components of Bag Item
Name Type Description
qty INT The quantity in which the bag item occurs in its containing bag.
   

BXIT allows a "compressed" representation of BAG, where the same bag items need not be represented repeatedly, but can be quantified by a number. This representation of a bag is useful if relatively few different items occur in relatively large numbers, as it is the case in statistical data collections.

   

BXIT, although it is fully consistent with the Data Types Abstract Specification, is only defined in the ITS, because it only specifies a certain form in which a bag of values can be represented more efficiently without adding any special semantics that was not already given in the definition of the bag data type.

   
XML Representation

   

BXIT is represented by an XML element whose name is determined by the context in which it is used. BXIT type has all the attributes and child elements described for the Element form of T and adds the XML attributeqty as described in the template and sub-sections below.

   
Type Template 33
<!-- type BXIT -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   {any attributes from T}
   qty = INT : 1
   >
   Content: {any elements from T}
</x>
 

3.7.1

Quantity : INT

   

Definition:      The quantity in which the bag item occurs in its containing bag.

   
XML Representation

   

qty is represented as the XML attributeqty, whose value, if present, must be a valid INT. The default value is 1, i.e., the qty attribute need not be specified if items are not quantified but simply repeated.

 

3.7.2

Examples

   

See the examples in Examples (§ 3.6.1 ).

 

3.8

Interval (IVL) specializes SXCM

   

Definition:      A set of consecutive values of an ordered base data type.

   

Note that the interval boundaries must be of comparable types. It makes no sense to specify the interval between 2 meters and 4 seconds.

   
  Table 45: Components of Interval
Name Type Description
low IVXB The low limit of the interval.
high IVXB The high limit of the interval.
center T The arithmetic mean of the interval (low plus high divided by 2). The purpose of distinguishing the center as a semantic property is for conversions of intervals from and to point values.
width T.diff The difference between high and low boundary. The purpose of distinguishing a width property is to handle all cases of incomplete information symmetrically. In any interval representation only two of the three properties high, low, and width need to be stated and the third can be derived.
   

In any interval representation only two of the four properties high, low, width and center need to be stated and the other two can be derived. Incomplete intervals exist, where only one property is valued, particularly, when no boundary or center is known, the width may still be known. For example, one knows that an activity takes about 30 minutes, but one may not yet know when that activity is started.

   
XML Representation

   

IVL is represented by an XML element whose name is determined by the context in which it is used. IVL type has all the attributes and child elements as described in the template and sub-sections below.

   
Type Template 34
<!-- type IVL -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   operator = (I | E | A | H | P) : I
   >
   Content: ( low, high, center, width )
</x>
   

You can have any of these combinations of children:

   
  • low
  • width
  • high
  • low, width
  • width, high
  • low, high
  • center
  • center, width
 

3.8.1

Low Boundary : IVXB

   

Definition:      The low limit of the interval.

   
XML Representation

   

low is represented as the XML elementlow which, if present, must be a valid IVXB.

 

3.8.2

High Boundary : IVXB

   

Definition:      The high limit of the interval.

   
XML Representation

   

high is represented as the XML elementhigh which, if present, must be a valid IVXB.

 

3.8.3

Center : T

   

Definition:      The arithmetic mean of the interval (low plus high divided by 2). The purpose of distinguishing the center as a semantic property is for conversions of intervals from and to point values.

   

Note that a center doesn't always exist for every interval. Notably intervals that are infinite on one side do not have a center. Also intervals of discrete base types with an even number of elements do not have a center. If an interval is unknown on one (or both) boundaries, the center can still be asserted. In fact, the main use case for the center is to be asserted when no boundary is known.

   
XML Representation

   

center is represented as the XML elementcenter which, if present, must be a valid T.

 

3.8.4

Width : T.diff

   

Definition:      The difference between high and low boundary. The purpose of distinguishing a width property is to handle all cases of incomplete information symmetrically. In any interval representation only two of the three properties high, low, and width need to be stated and the third can be derived.

   

When both boundaries are known, width can be derived as high minus low. When one boundary and the width is known, the other boundary is also known. When no boundary is known, the width may still be known. For example, one knows that an activity takes about 30 minutes, but one may not yet know when that activity is started.

   

Note that the data type of the width is not always the same as for the boundaries. For ratio scale quantities (REAL, PQ, MO) it is the same. For difference scale quantities (e.g., TS) is the data type of the difference (e.g., PQ in the dimension of time for TS).

   
XML Representation

   

width is represented as the XML elementwidth which, if present, must be a valid T.diff.

 

3.8.5

Examples

   

The first example shows a simple interval of INT between 2 and 4.

   
Example 46
<value xsi:type='IVL_INT'>
   <low value='2'/>
   <high value='4'/>
</value>
   

The second example shows an interval of PQ between 2.8 meters, inclusive, and 4.6 meters, exclusive.

   
Example 47
<offset>
   <low value='2.8' unit='m' inclusive='true'/>
   <high value='4.6' unit='m' inclusive='false'/>
</offset>
   

Finally, the last example shows an interval of TS on December 4, 2000, between 10:00 am and 10:30 am.

   
Example 48
<effectiveTime>
   <low value='200012041000'/>
   <high value='200012041030'/>
</effectiveTime>
 

3.9

Interval Boundary (IVXB)

   

Definition:      An ITS-defined generic type extension representing the boundary value for an interval.

   
  Table 46: Components of Interval Boundary
Name Type Description
inclusive BL Specifies whether the limit is included in the interval (interval is closed) or excluded from the interval (interval is open).
   

In any interval representation the low and high boundaries may be either inclusive or exclusive. This generic extension type adds the component inclusive to the QTY type T.

   
XML Representation

   

IVXB is represented by an XML element whose name is determined by the context in which it is used. IVXB has all the attributes and child elements described for the Element form of T and adds the inclusive attribute as described in the template and sub-sections below.

   
Type Template 35
<!-- type IVXB - used internally within IVL -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   {any attributes from T}
   inclusive = (true | false) : true
   >
   Content: ( {any elements from T} )
</x>
 

3.9.1

Inclusive : BL

   

Definition:      Specifies whether the limit is included in the interval (interval is closed) or excluded from the interval (interval is open).

   
XML Representation

   

inclusive is represented as the XML attributeinclusive, whose value, if present, must be either true or false. The default value is true.

 

3.10

History (HIST)

   

Definition:      A set of data values that conform to the history item (HXIT) type, (i.e., that have a valid-time property). The history information is not limited to the past; expected future values can also appear.

   
XML Representation

   

HIST is represented by a sequence of XML elements whose name is determined by the context in which it is used. Each element is of type HXIT.

 

3.11

History Item (HXIT)

   

Definition:      A generic data type extension that tags a time range to any data value of any data type. The time range is the time in which the information represented by the value is (was) valid.

   
  Table 47: Components of History Item
Name Type Description
validTime IVL<TS> The time interval during which the given information was, is, or is expected to be valid. The interval can be open or closed, as well as infinite or undefined on either side.
   

For example, a value of type HXIT<CS> extended from CS has all of the properties of the original CS value, plus a time range indicating when that code is or was valid.

   

Data types that already have a valid time range property (i.e., EN and specializations) obviously do not need these extensions. Their valid time range property can be mapped to the valid time property of the HXIT, in fact, those data types are considered history items by themselves. For example, EN is the same data type as HXIT<EN>.

   
XML Representation

   

HXIT is represented by an XML element whose name is determined by the context in which it is used. HXIT has all the attributes and child elements described for the Element form of T and adds the XML elementvalidTime as described in the template and sub-sections below.

   
Type Template 36
<!-- type HXIT -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   {any attributes from T}
   >
   Content: ( {any elements from T}, validTime )
</x>
 

3.11.1

Valid Time : IVL<TS>

   

Definition:      The time interval during which the given information was, is, or is expected to be valid. The interval can be open or closed, as well as infinite or undefined on either side.

   
XML Representation

   

validTime is represented as the XML elementvalidTime which, if present, must be a valid IVL<TS>.

 

3.12

Uncertain Value - Probabilistic (UVP)

   

Definition:      A generic data type extension used to specify a probability expressing the information producer's belief that the given value holds.

   
  Table 48: Components of Uncertain Value - Probabilistic
Name Type Description
probability REAL The probability assigned to the value, a decimal number between 0 (very uncertain) and 1 (certain).
   

Probabilities are subjective and (as any data value) must be interpreted in their individual context, for example, when new information is found the probability might change. Thus, for any message (document, or other information representation) the information - and particularly the probabilities - reflect what the information producer believed was appropriate for the purpose and at the time the message (document) was created.

   

For example, at the beginning of the 2000 baseball season (May), the Las Vegas odds makers may have given the New York Yankees a probability of 1 in 10 (0.100) of winning the World Series. At the time of this writing, the Yankees and Mets have won their respective pennants, but the World Series has yet to begin. The probability of the Yankees winning the World Series is obviously significantly greater at this point in time, perhaps 6 in 10 (0.600). The context, and in particular the time of year, made all the difference in the world.

   

Since probabilities are subjective measures of belief, they can be stated without being "correct" or "incorrect" per se, let alone "precise" or "imprecise". Notably, one does not have to conduct experiments to measure a frequency of some outcome in order to specify a probability. In fact, whenever statements about individual people or events are made, it is not possible to confirm such probabilities with "frequentists" experiments.

   

Returning to our example, the Las Vegas odds makers can not insist on the Yankees and Mets playing 1000 trial games prior to the Series; even if they could, they would not have the fervor of the real Series and therefore not be accurate. Instead, the odds makers must derive the probability from past history, player statistics, injuries, etc.

   
XML Representation

   

UVP is represented by an XML element whose name is determined by the context in which it is used. UVP has all the attributes and child elements described for the Element form of T and adds the XML attributeprobability as described in the template and sub-sections below.

   
Type Template 37
<!-- type UVP -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   {any attributes from T}
   probability = REAL
   >
   Content: ( {any elements from T} )
</x>
 

3.12.1

Probability : REAL

   

Definition:      The probability assigned to the value, a decimal number between 0 (very uncertain) and 1 (certain).

   
XML Representation

   

probability is represented as the XML attributeprobability, whose value, if present, must be a valid REAL.

 

3.13

Non-Parametric Probability Distribution (NPPD)

   

Definition:      A set of uncertain values with probabilities (also known as a histogram).

   

The easiest way to visualize this is a bar chart as shown below.

   
Example of a Histogram
Example of a Histogram
   

This example illustrates the probability of selected major league baseball teams winning the World Series (prior to the season start). Each team is mutually exclusive, and were we to include all of the teams, the sum of the probabilities would equal 1 (i.e., it is certain that one of the teams will win).

   

Semantically, a non-parametric probability distribution contains all possible values and assigns probabilities to each of them. Our example has left out quite a few teams. The rules for this data type tell us that the other teams would share the "leftover" probability equally. The 8 teams in the example have a collective probability of winning the World Series of 0.47. If there were a total of 24 teams in the league, then 16 are not shown. Each of these teams would be assigned a probability of (1.00 - 0.47) / 16 = 0.033125.

   
XML Representation

   

NPPD is represented by a sequence of XML elements, each of whose name is determined by the context in which it is used. Each element is of type UVP.

 

4

Timing Specification

   

The timing specification suite of data types is used to specify the complex timing of events and actions such as those that occur in order management and scheduling systems. It also supports the cyclical validity patterns that may exist for certain kinds of information, such as phone numbers (evening, daytime), addresses (so called "snowbirds," residing closer to the equator during winter and farther from the equator during summer) and office hours.

   

The timing specification data types include point in time (TS) and the interval of time (IVL<T>) and add types that are specifically suited to repeated schedules. These additional types include periodic interval, event-related periodic interval, and finally the general timing specification types itself. All these timing types describe the time distribution of repeating states or events.

 

4.1

Periodic Interval of Time (PIVL) specializes SXCM

   

Definition:      An interval of time that recurs periodically. Periodic intervals have two properties, phase and period. The phase specifies the "interval prototype" that is repeated every period.

   
  Table 49: Components of Periodic Interval of Time
Name Type Description
phase IVL A prototype of the repeating interval specifying the duration of each occurrence and anchors the periodic interval sequence at a certain point in time.
period T.diff A time duration specifying a reciprocal measure of the frequency at which the periodic interval repeats.
alignment CS Specifies if and how the repetitions are aligned to the cycles of the underlying calendar (e.g., to distinguish every 30 days from "the 5th of every month".) A non-aligned periodic interval recurs independently from the calendar. An aligned periodic interval is synchronized with the calendar.
institutionSpecified BL Indicates whether the exact timing is up to the party executing the schedule (e.g., to distinguish "every 8 hours" from "3 times a day".)
   

For example, "every eight hours for two minutes" is a periodic interval where the interval's width equals two minutes and the period at which the interval recurs equals eight hours.

   

The phase also marks the anchor point in time for the entire series of periodically recurring intervals. The recurrence of a periodic interval has no beginning or ending, but is infinite in both future and past.

   
XML Representation

   

PIVL is represented by an XML element whose name is determined by the context in which it is used. PIVL has all the attributes and child elements as described in the template and sub-sections below.

   
Type Template 38
<!-- type PIVL -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   operator = (I | E | A | H | P)
   alignment = CS
   institutionSpecified = (true | false} : false
   >
   Content: ( phase, period )
</x>
 

4.1.1

Phase : IVL

   

Definition:      A prototype of the repeating interval specifying the duration of each occurrence and anchors the periodic interval sequence at a certain point in time.

   

phase also marks the anchor point in time for the entire series of periodically recurring intervals. The recurrence of a periodic interval has no begin or end but is infinite in both future and past. A phase must be specified for every non-NULL periodic interval. The width of the phase must be less or equal the period.

   
XML Representation

   

phase is represented as the XML elementphase which, if present, must be a valid IVL.

 

4.1.2

Period : T.diff

   

Definition:      A time duration specifying a reciprocal measure of the frequency at which the periodic interval repeats.

   

period is a QTY in the dimension of time (T.diff). For an uncertain PIVL is a probability distribution over elapsed time.

   
XML Representation

   

period is represented as the XML elementperiod which, if present, must be a valid T.diff.

 

4.1.3

Alignment to the Calendar : CS

   

Definition:      Specifies if and how the repetitions are aligned to the cycles of the underlying calendar (e.g., to distinguish every 30 days from "the 5th of every month".) A non-aligned periodic interval recurs independently from the calendar. An aligned periodic interval is synchronized with the calendar.

   

alignment specifies a calendar cycle to which the periodic interval is aligned. The even flow of time will then be partitioned by the calendar cycle. The partitioning is called the calendar "grid" generated by the aligned-to calendar cycle. The boundaries of each occurrence interval will then have equal distance from the earliest point in each partition. In other words, the distance from the next lower grid-line to the beginning of the interval is constant.

   
  Table 50: Domain CalendarCycle
name code counter digits start condition
year  CY   
month of the year  MY   
month (continuous)  CM       
week (continuous)  CW       
week of the year  WY     
day of the month  DM   
day (continuous)  CD       
day of the year  DY     
day of the week (begins with Monday)  DW     
hour of the day  HD   
hour (continuous)  CH       
minute of the hour  NH   
minute (continuous)  CN       
second of the minute  SN   
second (continuous)  CS       
   

For example, with every 5th of the month the alignment calendar cycle would be month of the year (MY.) The even flow of time is partitioned in months of the year. The distance between the beginning of each month and the beginning of its occurrence interval is 4 days (4 days because day of month (DM) starts counting with 1.) Thus, as months differ in their number of days, the distances between the recurring intervals will vary slightly, so that the interval occurs always on the 5th.

   
XML Representation

   

alignment is represented as the XML attributealignment, whose value, if present, must be a valid code from the domain CalenderCycle (Table 50).

 

4.1.4

Institution Specified Timing : BL

   

Definition:      Indicates whether the exact timing is up to the party executing the schedule (e.g., to distinguish "every 8 hours" from "3 times a day".)

   

For example, with a schedule "three times a day" the average time between repetitions is 8 hours, however, with institution specified time indicator true, the timing could follow some rule made by the executing person or organization ("institution"), that, e.g., three times a day schedules are executed at 7 am, noon, and 7 pm.

   
XML Representation

   

institutionSpecified is represented as the XML attributeinstitutionSpecified, whose value, if present, must be a valid BL. The default value is false.

 

4.1.5

Examples

   

The first example shows twice a day (BID), i.e., every 2 hours, at institution specified times.

   
Example 49
<effectiveTime xsi:type='PIVL_TS' institutionSpecified='true'>
   <period value='12' unit='h'/>
</effectiveTime>
   

The next examples shows twice a day for ten minutes.

   
Example 50
<effectiveTime xsi:type='PIVL_TS'>
   <phase>
      <width value='10' unit='min'/>
   </phase>
   <period value='12' unit='h'/>
</effectiveTime>
   

The next example is slightly more complex and shows the month of September that recurs every year (note that in the year 1987 in this form is irrelevant since the periodic interval recurs every year past and future.)

   
Example 51
<effectiveTime xsi:type='PIVL_TS' alignment='MY'>
   <phase>
      <low value='198709' inclusive='true'/>
      <high value='198710' inclusive='false'/>
   </phase>
   <period value='1' unit='a'/>
</effectiveTime>
   

The next example shows every other Saturday.

   
Example 52
<effectiveTime xsi:type='PIVL_TS' alignment='DW'>
   <phase>
      <low value='20001202' inclusive='true'/>
      <high value='20001203' inclusive='false'/>
   </phase>
   <period value='2' unit='wk'/>
</effectiveTime>
   

The last example shows every four to six hours.

   
Example 53
<effectiveTime xsi:type='PIVL_PPD_TS'>
   <period value='5' unit='h' distributionType='U'>
      <standardDeviation value='0.57735' unit='h'/>
   </period>
</effectiveTime>
 

4.2

Event-Related Interval of Time (EIVL) specializes SXCM

   

Definition:      Specifies a periodic interval of time where the recurrence is based on activities of daily living or other important events that are time-related but not fully determined by time.

   

For example, "one hour after breakfast" specifies the beginning of the interval at one hour after breakfast is finished. Breakfast is assumed to occur before lunch but is not determined to occur at any specific time.

   
  Table 51: Components of Event-Related Interval of Time
Name Type Description
event CS A code for a common (periodical) activity of daily living based on which the event related periodic interval is specified.
offset IVL<T.diff> An interval of elapsed time (duration, not absolute point in time) that marks the offsets for the beginning, width and end of the event-related periodic interval measured from the time each such event actually occurred.
   
XML Representation

   

EIVL is represented by an XML element whose name is determined by the context in which it is used. EIVL has all the attributes and child elements as described in the template and sub-sections below.

   
Type Template 39
<!-- type EIVL -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   operator = (I | E | A | H | P)
   >
   Content: ( event, offset )
</x>
 

4.2.1

Event : CS

   

Definition:      A code for a common (periodical) activity of daily living based on which the event related periodic interval is specified.

   

Such events qualify for being adopted in the domain of this attribute for which all of the following is true:

   
  • the event commonly occurs on a regular basis,
  • the event is being used for timing activities, and
  • the event is not entirely determined by time.
   
  Table 52: Domain TimingEvent
code name definition
AC AC before meal (from lat. ante cibus)
ACD ACT before lunch (from lat. ante cibus diurnus)
ACM ACM before breakfast (from lat. ante cibus matutinus)
ACV ACV before dinner (from lat. ante cibus vespertinus)
HS HS the hour of sleep
IC IC between meals (from lat. inter cibus)
ICD ICD between lunch and dinner
ICM ICM between breakfast and lunch
ICV ICV between dinner and the hour of sleep
PC PC after meal (from lat. post cibus)
PCD PCD after lunch (from lat. post cibus diurnus)
PCM PCM after breakfast (from lat. post cibus matutinus)
PCV PCV after dinner (from lat. post cibus vespertinus)
   
XML Representation

   

event is represented as the XML elementevent which, if present, must be a valid CE, whose CE.code must be a valid value from the TimingEvent domain (Table 52).

 

4.2.2

Offset : IVL<T.diff>

   

Definition:      An interval of elapsed time (duration, not absolute point in time) that marks the offsets for the beginning, width and end of the event-related periodic interval measured from the time each such event actually occurred.

   

For example: if the specification is "one hour before breakfast for 10 minutes" the offset's low boundary is 1 h and the offset's width is 10 min (consequently the offset's high boundary is 50 min).

   
XML Representation

   

offset is represented as the XML elementoffset which, if present, must be a valid IVL<T.diff>.

 

4.2.3

Examples

   

The first example shows one hour before breakfast for 10 minutes.

   
Example 54
<effectiveTime xsi:type='EIVL_TS'>
   <event code='ACM' codeSystem='2.16.840.1.113883.5.139'/>
   <offset>
      <low value='1' unit ='h'/>
      <width value='10' unit='min'/>
   </offset>
</effectiveTime>
   

The next example shows 30 minutes after dinner.

   
Example 55
<effectiveTime xsi:type='EIVL_TS'>
   <event code='PCV' codeSystem='2.16.840.1.113883.5.139'/>
   <offset>
      <center value='30' unit ='min'/>
   </offset>
</effectiveTime>
 

4.3

Parenthetic Set Expression (SXPR) specializes SXCM

   

Definition:      A set-component that is itself made up of set-components that are evaluated as one value.

   
XML Representation

   

SXPR is represented by an XML element whose name is determined by the context in which it is used. SXPR has all the attributes and child elements as described in the template and sub-sections below. SXPR can be used in place of any SXCM.

   
Type Template 40
<!-- type SXPR -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   operator = (I | E | A | H | P)
   >
   Content: ( comp, comp+ )
</x>
   

There must be at least 2 comp elements.

 

4.3.1

Sub-Expression : SXCM

   

Definition:      A component of a parenthetic set expression.

   
XML Representation

   

comp is represented by the XML elementcomp which, if present, must be a valid SXCM.

 

4.3.2

Examples

   

The first example shows daily at noon, starting on February 4 2004.

   
Example 56
<effectiveTime xsi:type='SXPR_TS'>
   <comp xsi:type='IVL_TS'>
      <low value='20040204'/>
   </comp>
   <comp xsi:type='PIVL_TS' operator='A'>
      <phase>
         <center value='200402041200'/>
      </phase>
      <period value='1' unit='d' />
   </comp>
</effectiveTime>
   

The first example shows four times a day (at insitution specified times) starting on June 3, 2005.

   
Example 57
<effectiveTime xsi:type='SXPR_TS'>
   <comp xsi:type='IVL_TS'>
      <low value='20050603' />
   </comp>
   <comp xsi:type='PIVL_TS' operator='A' institutionSpecified='true'>
      <period value='6' unit='h' />
   </comp>
</effectiveTime>
   
 

A

Informative Types

   

These types are currently marked as informative while known issues relating to their design are being resolved.

 

A.1

Parametric Probability Distribution (PPD)

   

Definition:      A generic data type extension specifying uncertainty of quantitative data using a distribution function and its parameters. Aside from the specific parameters of the distribution, a mean (expected value) and standard deviation is always given to help maintain a minimum layer of interoperability if receiving applications cannot deal with a certain probability distribution.

   

For example, the most common college entrance exam in the United States is the SAT, which is comprised of two parts: verbal and math. Each part has a minimum score of 400 (no questions answered correctly) and a perfect score of 800. In 1998, according to the College Board, 1,172,779 college-bound seniors took the test. The mean score for the math portion of the test was 512, and the standard deviation 112. These parameter values (512, 112), tagged as the normal distribution parameters, paint a pretty good picture of test score distribution. In most cases, there is no need to specify all 1-million+ points of data when just 2 parameters will do!

   
Parametric Probability Distribution
Parametric Probability Distribution
   

Note that the normal distribution is only one of several distributions defined for HL7.

   
  Table 53: Components of Parametric Probability Distribution
Name Type Description
standardDeviation T.diff The primary measure of variance/uncertainty of the value (the square root of the sum of the squares of the differences between all data points and the mean). The standard deviation is used to normalize the data for computing the distribution function. Applications that cannot deal with probability distributions can still get an idea about the confidence level by looking at the standard deviation.
distributionType CS A code specifying the type of probability distribution. Possible values are as shown in the attached table. The NULL value (unknown) for the type code indicates that the probability distribution type is unknown. In that case, the standard deviation has the meaning of an informal guess.
   

Since PPD extends its parameter type T, a simple T value is the mean (expected value or first moment) of the probability distribution. Applications that cannot deal with distributions will take the simple T value neglecting the uncertainty. That simple value of type T is also used to standardize the data for computing the distribution.

   

Probability distributions are defined over integer or real numbers and normalized to a certain reference point (typically zero) and reference unit (e.g., standard deviation = 1). When other quantities defined in this specification are used as base types, the mean and the standard deviation are used to scale the probability distribution. For example, if a PPD<PQ> for a length is given with mean 20 ft and a standard deviation of 2 in, the normalized distribution function f(x) that maps a real number x to a probability density would be translated to f′(x′) that maps a length x′ to a probability density as f′(x′) = f((x′ - μ) / σ).

   

Where applicable, PPD conforms to the ISO Guide to the Expression of Uncertainty in Measurement (GUM) as reflected by NIST publication 1297 Guidelines for Evaluating and Expressing the Uncertainty of NIST Measurement Results. PPD does not describe how uncertainty is to be evaluated but only how it is expressed. The concept of "standard uncertainty" as set forth by the ISO GUM corresponds to standardDeviation.

   
XML Representation

   

PPD is represented by an XML element whose name is determined by the context in which it is used. PPD has all the attributes and child elements defined for the type T and adds the attributes and elements defined in the type template and subsections below.

   
Type Template 41
<!-- type PPD -->
<x
   nullFlavor = (NI | OTH | NINF | PINF | UNK | ASKU | NAV | NASK | TRC | MSK | NA | NP)
   {any attributes from T}
   distributionType  = CS
   >
   Content: ( {any elements from T}, standardDeviation )
</x>
 

A.1.1

Standard Deviation : T.diff

   

Definition:      The primary measure of variance/uncertainty of the value (the square root of the sum of the squares of the differences between all data points and the mean). The standard deviation is used to normalize the data for computing the distribution function. Applications that cannot deal with probability distributions can still get an idea about the confidence level by looking at the standard deviation.

   
XML Representation

   

standardDeviation is represented by the XML elementstandardDeviation which, if present, must be a valid T.diff.

 

A.1.2

Probability Distribution Type : CS

   

Definition:      A code specifying the type of probability distribution. Possible values are as shown in the attached table. The NULL value (unknown) for the type code indicates that the probability distribution type is unknown. In that case, the standard deviation has the meaning of an informal guess.

   

Table 54 lists the defined probability distributions. Many distribution types are defined in terms of special parameters (e.g., the parameters α and β for the γ-distribution, number of degrees of freedom for the t-distribution, etc.) For all distribution types, however, the mean and standard deviation are defined. PPD is specified with the parameters mean and standard distribution only. The definition column contains the relationship between the special parameters and the mean μ and standard deviation σ.

   
  Table 54: Domain ProbabilityDistributionType
code name definition
(NULL) unknown Used to indicate that the mean is estimated without any closer consideration of its probability distribution. In this case, the meaning of the standard deviation is not crisply defined. However, interpretation should be along the lines of the normal distribution, e.g., the interval covered by the mean ±1 standard deviation should be at the level of about two thirds confidence.
U uniform The uniform distribution assigns a constant probability over the entire interval of possible outcomes, while all outcomes outside this interval are assumed to have zero probability. The width of this interval is 2 σ √3. Thus, the uniform distribution assigns the probability densities f(x) = (2 σ √3) -1 to values μ - σ √3 ≥ x ≤ μ + σ √3 and f(x) = 0 otherwise.
N normal (Gaussian) This is the well-known bell-shaped normal distribution. Because of the central limit theorem, the normal distribution is the distribution of choice for an unbounded random variable that is an outcome of a combination of many stochastic processes. Even for values bounded on a single side (i.e. greater than 0) the normal distribution may be accurate enough if the mean is "far away" from the bound of the scale measured in terms of standard deviations.
LN log-normal The logarithmic normal distribution is used to transform skewed random variable X into a normally distributed random variable U = log X. The log-normal distribution can be specified with the properties mean μ and standard deviation σ. Note however that mean μ and standard deviation σ are the parameters of the raw value distribution, not the transformed parameters of the lognormal distribution that are conventionally referred to by the same letters. Those log-normal parameters μ log and σlog relate to the mean μ and standard deviation σ of the data value through σlog2 = log (σ22 + 1) and μlog = log μ - σlog2/2.
G γ (gamma) The gamma-distribution used for data that is skewed and bounded to the right, i.e. where the maximum of the distribution curve is located near the origin. The γ-distribution has two parameters α and β. The relationship to mean μ and variance σ 2 is μ = α β and σ2 = α β2.
E exponential Used for data that describes extinction. The exponential distribution is a special form of γ-distribution where α = 1, hence, the relationship to mean μ and variance σ 2 are μ = β and σ 2 = β2.
X2 χ Used to describe the sum of squares of random variables that occurs when a variance is estimated (rather than presumed) from the sample. The only parameter of the χ2-distribution is υ, so called the number of degrees of freedom (which is the number of independent parts in the sum). The χ2-distribution is a special type of γ-distribution with parameter α = υ /2 and β = 2. Hence, μ = υ and σ2 = 2 υ.
T t (Student) Used to describe the quotient of a normal random variable and the square root of a χ2 random variable. The t-distribution has one parameter υ, the number of degrees of freedom. The relationship to mean μ and variance σ2 are: μ = 0 and σ 2 = υ / (υ - 2).
F F Used to describe the quotient of two χ2 random variables. The F-distribution has two parameters υ1 and υ2, which are the numbers of degrees of freedom of the numerator and denominator variable respectively. The relationship to mean μ and variance σ2 are: μ = υ2 / (υ2 - 2) and σ2 = (2 υ22 + υ1 - 2)) / (υ 12 - 2) 22 - 4)).
B β (beta) The beta-distribution is used for data that is bounded on both sides and may or may not be skewed (e.g., occurs when probabilities are estimated.) Two parameters α and β are available to adjust the curve. The mean μ and variance σ2 relate as follows: μ = α / (α + β) and (σ2 = α β/((α + β)2 (α + β + 1)).
   

The three distribution-types unknown (NULL), uniform and normal must be supported by every system that claims to support PPD. All other distribution types are optional. When a system interpreting a PPD representation encounters an unknown distribution type, it maps this type to the unknown (NULL) distribution-type.

   
XML Representation

   

distributionType is represented by the XML attributestandardDeviation whose value, if present, must be a valid code from the ProbabilityDistributionType domain (Table 54).

 

A.2

General Timing Specification (GTS)

   

Definition:      A set of points in time, specifying the timing of events and actions and the cyclical validity-patterns that may exist for certain kinds of information, such as phone numbers (evening, daytime), addresses (so called "snowbirds," residing closer to the equator during winter and farther from the equator during summer) and office hours.

   
NOTE: GTS is conceptually nothing other than SET<TS>.
   

The XML representation of GTS is informative but not the GTS type itself.

   
XML Representation

   

GTS is represented as a sequence of XML elements of type SXCM or its specializations, including IVL<TS>, PIVL, EIVL, SXPR.

 

A.2.1

Examples

   

This example shows every other Tuesday in the season from the (US holidays) Memorial Day to Labor Day in the years 2002 and 2003.

   
Example 58
<effectiveTime xsi:type='SXPR_TS'>
<!-- memorial day -->
   <comp xsi:type='SXPR_TS'>
      <comp xsi:type='PIVL_TS'>
         <phase>
           <low value='19870525'/>
           <high value='19870601' inclusive='false'/>
         </phase>
         <period value='1' unit='a'/>
      </comp>
      <comp xsi:type='PIVL_TS' operator='A'>
         <phase>
            <low value='19870105'/>
            <high value='19870106' inclusive='false'/>
         </phase>
         <period value='1' unit='wk'/>
      </comp>
   </comp>
<!-- labor day -->
   <comp xsi:type='SXPR_TS' operator='P'>
      <comp xsi:type='PIVL_TS'>
         <phase>
            <low value='19870901'/>
            <high value='19870908' inclusive='false'/>
         </phase>
         <period value='1' unit='a'/>
      </comp>
      <comp xsi:type='PIVL_TS' operator='A'>
         <phase>
            <low value='19870105'/>
            <high value='19870106' inclusive='false'/>
         </phase>
         <period value='1' unit='wk'/>
      </comp>
   </comp>
</effectiveTime>
<effectiveTime xsi:type='PIVL_TS' alignment='DW' operator='A'>
<!-- every other Tuesday -->
   <phase>
      <low value='20001202' inclusive='true'/>
      <high value='20001203' inclusive='false'/>
   </phase>
   <period value='2' unit='wk'/>
</effectiveTime>
<effectiveTime xsi:type='IVL_TS' operator='A'>
<!-- from 2002 and 2003 -->
   <low value='20020101' inclusive='true'/>
   <high value='20040101' inclusive='false'/>
</effectiveTime>
 

B

W3C XML Schema

   

The schema representations are provided for convenience, as the XML schema is a compact and specific way to describe the XML representation. However the schema is not in itself a normative part of this specification. While HL7 publishes schema for the HL7 data types, other schemas could be proposed that describes the same XML representation, and these schemas are no less valid, though they may differ in their usefulness for a given task. It is the XML representation of the data type that is normative.

   

This schema defines a complex type for each data type described in this specification as having an Element form (e.g., ED and CD), the name of the complex type is the value of the "Symbol" column for the type as given in Table 1.

   

This schema also defines a simple type for each data type described in this specification as having an Attribute form (e.g., ST and CS), the name of the simple type is the lower-case version of the "Symbol" column for the type as given in Table 1.

   

For some data types, one or more Schematron [http://www.schematron.com] patterns are defined as xs:appinfo annotations in either the complex type or simple type defintion. These patterns define additional validation rules that go above-and-beyond what can be expressed in XML Schema. The most common rule checks the condition that an instance of a type can have either an nullFlavor or some combination of other s but not both. Please refer to the Schematron specification [http://www.schematron.com] for further information.

   

This schema does not completely represent all constraints for every data type as specified in the Data Types Abstract Specification. For example, the distinction between SET, BAG and LIST (unique/unordered, non-unique/unordered and non-unique/ordered) are not enforced by this schema. The Schematron rules described in above can be used to check some, but not all, of these additional contraints. This has the implication that an instance which validates against the schema may still not be a valid HL7 instance.

   

The schema is contained in two separate schema documents, one for the base types and a smaller one for instantiations of generic types. Note: at present, definitions for generic types that are used as the type of data type components are defined in the schema document for the base types.

 

B.1

Base Types

   
               
<?xml version="1.0" encoding="UTF-8"?><!--
    This schema is generated from a Generic Schema Definition (GSD)
    by gsd2xsl. Do not edit this file.
  -->
<xs:schema xmlns:sch="http://www.ascc.net/xml/schematron"

      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      elementFormDefault="qualified">
   <xs:annotation>
      <xs:documentation>
           Copyright (c) 2001, 2002, 2003, 2004, 2005 Health Level Seven.
           All rights reserved.

           Redistribution and use in source and binary forms, with or
           without modification, are permitted provided that the following
           conditions are met:
           1. Redistributions of source code must retain the above
              copyright notice, this list of conditions and the following
              disclaimer.
           2. Redistributions in binary form must reproduce the above
              copyright notice, this list of conditions and the following
              disclaimer in the documentation and/or other materials
              provided with the distribution.
           3. All advertising materials mentioning features or use of this
              software must display the following acknowledgement:
           
           This product includes software developed by Health Level Seven.
 
           THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS
           ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
           NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
           FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT
           SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
           INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
           DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
           GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
           INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
           WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
           NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
           OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
           DAMAGE.
        
           Generated by $Id: gsd2xsd.xsl,v 1.4 2005/04/17 03:20:15 lmckenzi
           Exp $
</xs:documentation>
   </xs:annotation>
   <xs:include schemaLocation="voc.xsd"/>
   <xs:annotation>
      <xs:documentation>
        Generated by $Id: v3dt-schema.xsl,v 1.5 2005/05/24 05:44:38 lmckenzi
        Exp $
</xs:documentation>
   </xs:annotation>
   <xs:complexType name="ANY" abstract="true">
      <xs:annotation>
         <xs:documentation>
            Defines the basic properties of every data value. This
            is an abstract type, meaning that no value can be just
            a data value without belonging to any concrete type.
            Every concrete type is a specialization of this
            general abstract DataValue type.
         </xs:documentation>
      </xs:annotation>
      <xs:attribute name="nullFlavor" type="NullFlavor" use="optional">
         <xs:annotation>
            <xs:documentation>
               An exceptional value expressing missing information
               and possibly the reason why the information is missing.
            </xs:documentation>
         </xs:annotation>
      </xs:attribute>
   </xs:complexType>
   <xs:simpleType name="bl">
      <xs:annotation>
         <xs:documentation>
            The Boolean type stands for the values of two-valued logic.
            A Boolean value can be either true or
            false, or, as any other value may be NULL.
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:boolean">
         <xs:pattern value="true|false"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="BL">
      <xs:annotation>
         <xs:documentation>
            The Boolean type stands for the values of two-valued logic.
            A Boolean value can be either true or
            false, or, as any other value may be NULL.
         </xs:documentation>
         <xs:appinfo>
            <sch:pattern name="validate BL">
               <sch:rule abstract="true" id="rule-BL">
                  <sch:report test="(@nullFlavor or @value) and
                     not(@nullFlavor and @value)"/>
               </sch:rule>
            </sch:pattern>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="ANY">
            <xs:attribute name="value" use="optional" type="bl"/>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="bn">
      <xs:annotation>
         <xs:documentation>
            The BooleanNonNull type is used where a Boolean cannot
            have a null value. A Boolean value can be either
            true or false.
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="bl"/>
   </xs:simpleType>
   <xs:complexType name="ANYNonNull">
      <xs:annotation>
         <xs:documentation>
            The BooleanNonNull type is used where a Boolean cannot
            have a null value. A Boolean value can be either
            true or false.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:restriction base="ANY">
            <xs:attribute name="nullFlavor" type="NullFlavor"
               use="prohibited"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BN">
      <xs:annotation>
         <xs:documentation>
            The BooleanNonNull type is used where a Boolean cannot
            have a null value. A Boolean value can be either
            true or false.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="ANYNonNull">
            <xs:attribute name="value" use="optional" type="bn"/>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BIN" abstract="true" mixed="true">
      <xs:annotation>
         <xs:documentation>
            Binary data is a raw block of bits. Binary data is a
            protected type that MUST not be used outside the data
            type specification.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="ANY">
            <xs:attribute name="representation" use="optional"
                  type="BinaryDataEncoding" default="TXT">
               <xs:annotation>
                  <xs:documentation>
                     Specifies the representation of the binary data that
                     is the content of the binary data value.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="bin">
      <xs:annotation>
         <xs:documentation>
            Binary data is a raw block of bits. Binary data is a
            protected type that MUST not be used outside the data
            type specification.
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:base64Binary"/>
   </xs:simpleType>
   <xs:simpleType name="BinaryDataEncoding">
      <xs:restriction base="xs:NMTOKEN">
         <xs:enumeration value="B64"/>
         <xs:enumeration value="TXT"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="ED" mixed="true">
      <xs:annotation>
         <xs:documentation>
            Data that is primarily intended for human interpretation
            or for further machine processing is outside the scope of
            HL7. This includes unformatted or formatted written language,
            multimedia data, or structured information as defined by a
            different standard (e.g., XML-signatures.)  Instead of the
            data itself, an ED may contain 
            only a reference (see TEL.) Note
            that the ST data type is a
            specialization of the ED data type
            when the ED media type is text/plain.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="BIN">
            <xs:sequence>
               <xs:element name="reference" type="TEL" minOccurs="0"
                     maxOccurs="1">
                  <xs:annotation>
                     <xs:documentation>
                        A telecommunication address (TEL), such as a URL
                        for HTTP or FTP, which will resolve to precisely
                        the same binary data that could as well have been
                        provided as inline data.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="thumbnail" minOccurs="0" maxOccurs="1"
                  type="thumbnail"/>
            </xs:sequence>
            <xs:attribute name="mediaType" type="cs" use="optional"
                  default="text/plain">
               <xs:annotation>
                  <xs:documentation>
                     Identifies the type of the encapsulated data and
                     identifies a method to interpret or render the data.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="language" type="cs" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     For character based information the language property
                     specifies the human language of the text.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="compression" type="CompressionAlgorithm"
                  use="optional">
               <xs:annotation>
                  <xs:documentation>
                     Indicates whether the raw byte data is compressed,
                     and what compression algorithm was used.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="integrityCheck" type="bin" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     The integrity check is a short binary value representing
                     a cryptographically strong checksum that is calculated
                     over the binary data. The purpose of this property, when
                     communicated with a reference is for anyone to validate
                     later whether the reference still resolved to the same
                     data that the reference resolved to when the encapsulated
                     data value with reference was created.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="integrityCheckAlgorithm"
                  type="IntegrityCheckAlgorithm" use="optional"
                  default="SHA-1">
               <xs:annotation>
                  <xs:documentation>
                     Specifies the algorithm used to compute the
                     integrityCheck value.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="thumbnail" mixed="true">
      <xs:annotation>
         <xs:documentation>
                     A thumbnail is an abbreviated rendition of the full
                     data. A thumbnail requires significantly fewer
                     resources than the full data, while still maintaining
                     some distinctive similarity with the full data. A
                     thumbnail is typically used with by-reference
                     encapsulated data. It allows a user to select data
                     more efficiently before actually downloading through
                     the reference.
                  </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:restriction base="ED">
            <xs:sequence>
               <xs:element name="reference" type="TEL" minOccurs="0"
                  maxOccurs="1"/>
               <xs:element name="thumbnail" type="thumbnail" minOccurs="0"
                  maxOccurs="0"/>
            </xs:sequence>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="st">
      <xs:annotation>
         <xs:documentation>
            The character string data type stands for text data,
            primarily intended for machine processing (e.g.,
            sorting, querying, indexing, etc.) Used for names,
            symbols, and formal expressions.
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:minLength value="1"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="ST" mixed="true">
      <xs:annotation>
         <xs:documentation>
            The character string data type stands for text data,
            primarily intended for machine processing (e.g.,
            sorting, querying, indexing, etc.) Used for names,
            symbols, and formal expressions.
         </xs:documentation>
         <xs:appinfo>
            <sch:pattern name="validate ST">
               <sch:rule abstract="true" id="rule-ST">
                  <sch:report test="(@nullFlavor or text()) and
                        not(@nullFlavor and text())">
                     <p>
                        Text content is only allowed in non-NULL
                        values.
                     </p>
                  </sch:report>
               </sch:rule>
            </sch:pattern>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:restriction base="ED">
            <xs:sequence>
               <xs:element name="reference" type="TEL" minOccurs="0"
                  maxOccurs="0"/>
               <xs:element name="thumbnail" type="ED" minOccurs="0"
                  maxOccurs="0"/>
            </xs:sequence>
            <xs:attribute name="representation" type="BinaryDataEncoding"
               fixed="TXT"/>
            <xs:attribute name="mediaType" type="cs" fixed="text/plain"/>
            <xs:attribute name="language" type="cs" use="optional"/>
            <xs:attribute name="compression" type="CompressionAlgorithm"
               use="prohibited"/>
            <xs:attribute name="integrityCheck" type="bin" use="prohibited"/>
            <xs:attribute name="integrityCheckAlgorithm"
               type="IntegrityCheckAlgorithm" use="prohibited"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="cs">
      <xs:annotation>
         <xs:documentation>
            Coded data in its simplest form, consists of a code.
            The code system and code system version is fixed by 
            the context in which the CS value occurs. CS is used
            for coded attributes that have a single HL7-defined
            value set.
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:token">
         <xs:pattern value="[^\s]+"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="CD">
      <xs:annotation>
         <xs:documentation>
            A concept descriptor represents any kind of concept usually
            by giving a code defined in a code system.  A concept
            descriptor can contain the original text or phrase that
            served as the basis of the coding and one or more
            translations into different coding systems. A concept
            descriptor can also contain qualifiers to describe, e.g.,
            the concept of a "left foot" as a postcoordinated term built
            from the primary code "FOOT" and the qualifier "LEFT".
            In exceptional cases, the concept descriptor need not
            contain a code but only the original text describing
            that concept.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="ANY">
            <xs:sequence>
               <xs:element name="originalText" type="ED" minOccurs="0"
                     maxOccurs="1">
                  <xs:annotation>
                     <xs:documentation>
                        The text or phrase used as the basis for the coding.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="qualifier" type="CR" minOccurs="0"
                     maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation>
                        Specifies additional codes that increase the
                        specificity of the primary code.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="translation" type="CD" minOccurs="0"
                     maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation>
                        A set of other concept descriptors that translate
                        this concept descriptor into other code systems.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="code" type="cs" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     The plain code symbol defined by the code system.
                     For example, "784.0" is the code symbol of the ICD-9
                     code "784.0" for headache.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="codeSystem" type="uid" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     Specifies the code system that defines the code.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="codeSystemName" type="st" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     A common name of the coding system.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="codeSystemVersion" type="st" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     If applicable, a version descriptor defined
                     specifically for the given code system.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="displayName" type="st" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     A name or title for the code, under which the sending
                     system shows the code value to its users.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CE">
      <xs:annotation>
         <xs:documentation>
            Coded data, consists of a coded value (CV)
            and, optionally, coded value(s) from other coding systems
            that identify the same concept. Used when alternative
            codes may exist.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:restriction base="CD">
            <xs:sequence>
               <xs:element name="originalText" type="ED" minOccurs="0"
                     maxOccurs="1">
                  <xs:annotation>
                     <xs:documentation>
                        The text or phrase used as the basis for the coding.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="qualifier" type="CR" minOccurs="0"
                  maxOccurs="0"/>
               <xs:element name="translation" type="CD" minOccurs="0"
                     maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation>
                        A set of other concept descriptors that translate
                        this concept descriptor into other code systems.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="code" type="cs" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     The plain code symbol defined by the code system.
                     For example, "784.0" is the code symbol of the ICD-9
                     code "784.0" for headache.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="codeSystem" type="uid" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     Specifies the code system that defines the code.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="codeSystemName" type="st" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     A common name of the coding system.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="codeSystemVersion" type="st" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     If applicable, a version descriptor defined
                     specifically for the given code system.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="displayName" type="st" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     A name or title for the code, under which the sending
                     system shows the code value to its users.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CV">
      <xs:annotation>
         <xs:documentation>
            Coded data, consists of a code, display name, code system,
            and original text. Used when a single code value must be sent.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:restriction base="CE">
            <xs:sequence>
               <xs:element name="originalText" type="ED" minOccurs="0"
                     maxOccurs="1">
                  <xs:annotation>
                     <xs:documentation>
                        The text or phrase used as the basis for the coding.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="translation" type="CD" minOccurs="0"
                  maxOccurs="0"/>
            </xs:sequence>
            <xs:attribute name="code" type="cs" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     The plain code symbol defined by the code system.
                     For example, "784.0" is the code symbol of the ICD-9
                     code "784.0" for headache.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="codeSystem" type="uid" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     Specifies the code system that defines the code.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="codeSystemName" type="st" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     A common name of the coding system.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="codeSystemVersion" type="st" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     If applicable, a version descriptor defined
                     specifically for the given code system.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="displayName" type="st" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     A name or title for the code, under which the sending
                     system shows the code value to its users.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CS">
      <xs:annotation>
         <xs:documentation>
            Coded data, consists of a code, display name, code system,
            and original text. Used when a single code value must be sent.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:restriction base="CV">
            <xs:attribute name="code" type="cs" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     The plain code symbol defined by the code system.
                     For example, "784.0" is the code symbol of the ICD-9
                     code "784.0" for headache.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="codeSystem" type="uid" use="prohibited"/>
            <xs:attribute name="codeSystemName" type="st" use="prohibited"/>
            <xs:attribute name="codeSystemVersion" type="st" use="prohibited"/>
            <xs:attribute name="displayName" type="st" use="prohibited"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CO">
      <xs:annotation>
         <xs:documentation>
            Coded data, where the domain from which the codeset comes
            is ordered. The Coded Ordinal data type adds semantics
            related to ordering so that models that make use of such
            domains may introduce model elements that involve statements
            about the order of the terms in a domain. 
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="CV"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="CR">
      <xs:annotation>
         <xs:documentation>
            A concept qualifier code with optionally named role.
            Both qualifier role and value codes must be defined by
            the coding system.  For example, if SNOMED RT defines a
            concept "leg", a role relation "has-laterality", and
            another concept "left", the concept role relation allows
            to add the qualifier "has-laterality: left" to a primary
            code "leg" to construct the meaning "left leg".
         </xs:documentation>
         <xs:appinfo>
            <sch:pattern name="validate CR">
               <sch:rule abstract="true" id="rule-CR">
                  <sch:report test="(value or @nullFlavor) and
                        not(@nullFlavor and node())">
                     <p>
                        A value component is required or else the
                        code role is NULL.
                     </p>
                  </sch:report>
               </sch:rule>
            </sch:pattern>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="ANY">
            <xs:sequence>
               <xs:element name="name" type="CV" minOccurs="0" maxOccurs="1">
                  <xs:annotation>
                     <xs:documentation>
                        Specifies the manner in which the concept role value
                        contributes to the meaning of a code phrase.  For
                        example, if SNOMED RT defines a concept "leg", a role
                        relation "has-laterality", and another concept "left",
                        the concept role relation allows to add the qualifier
                        "has-laterality: left" to a primary code "leg" to
                        construct the meaning "left leg".  In this example
                        "has-laterality" is the CR.name.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="value" type="CD" minOccurs="0" maxOccurs="1">
                  <xs:annotation>
                     <xs:documentation>
                        The concept that modifies the primary code of a code
                        phrase through the role relation.  For example, if
                        SNOMED RT defines a concept "leg", a role relation
                        "has-laterality", and another concept "left", the
                        concept role relation allows adding the qualifier
                        "has-laterality: left" to a primary code "leg" to
                        construct the meaning "left leg".  In this example
                        "left" is the CR.value.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="inverted" type="bn" use="optional"
                  default="false">
               <xs:annotation>
                  <xs:documentation>
                     Indicates if the sense of the role name is inverted.
                     This can be used in cases where the underlying code
                     system defines inversion but does not provide reciprocal
                     pairs of role names. By default, inverted is false.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SC" mixed="true">
      <xs:annotation>
         <xs:documentation>
            A ST that optionally may have a code attached.
            The text must always be present if a code is present. The
            code is often a local code.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="ST">
            <xs:attribute name="code" type="cs" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     The plain code symbol defined by the code system.
                     For example, "784.0" is the code symbol of the ICD-9
                     code "784.0" for headache.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="codeSystem" type="uid" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     Specifies the code system that defines the code.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="codeSystemName" type="st" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     A common name of the coding system.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="codeSystemVersion" type="st" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     If applicable, a version descriptor defined
                     specifically for the given code system.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="displayName" type="st" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     A name or title for the code, under which the sending
                     system shows the code value to its users.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="uid">
      <xs:annotation>
         <xs:documentation>
            A unique identifier string is a character string which
            identifies an object in a globally unique and timeless
            manner. The allowable formats and values and procedures
            of this data type are strictly controlled by HL7. At this
            time, user-assigned identifiers may be certain character
            representations of ISO Object Identifiers (OID) and DCE
            Universally Unique Identifiers (UUID). HL7 also reserves
            the right to assign other forms of UIDs, such as mnemonic
            identifiers for code systems.
         </xs:documentation>
      </xs:annotation>
      <xs:union memberTypes="oid uuid ruid"/>
   </xs:simpleType>
   <xs:simpleType name="oid">
      <xs:annotation>
         <xs:documentation>
            A globally unique string representing an ISO Object Identifier
            (OID) in a form that consists only of non-negative numbers with
            no leading zeros and dots (e.g., "2.16.840.1.113883.3.1").
            According to ISO, OIDs are paths in a tree structure, with the
            left-most number representing the root and the right-most number
            representing a leaf.
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:pattern value="[0-2](\.(0|[1-9][0-9]*))*"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="uuid">
      <xs:annotation>
         <xs:documentation>
            A DCE Universal Unique Identifier is a globally unique
            string consisting of 5 groups of upper- or lower-case
            hexadecimal digits having 8, 4, 4, 4, and 12 places
            respectively. UUIDs are assigned using Ethernet MAC
            addresses, the point in time of creation and some random
            components. This mix is believed to generate sufficiently
            unique identifiers without any organizational policy for
            identifier assignment (in fact this piggy-backs on the
            organization of MAC address assignment.)
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:pattern value="[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-
            [0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="ruid">
      <xs:annotation>
         <xs:documentation>
            HL7 reserved identifiers are strings consisting only of
            (US-ASCII) letters, digits and hyphens, where the first
            character must be a letter. HL7 may assign these reserved
            identifiers as mnemonic identifiers for major concepts of
            interest to HL7.
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:pattern value="[A-Za-z][A-Za-z0-9\-]*"/>
      </xs:restriction>
   </xs:simpleType>
   <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>
   </xs:complexType>
   <xs:simpleType name="url">
      <xs:annotation>
         <xs:documentation>
            A telecommunications address  specified according to
            Internet standard RFC 1738
            [http://www.ietf.org/rfc/rfc1738.txt]. The
            URL specifies the protocol and the contact point defined
            by that protocol for the resource.  Notable uses of the
            telecommunication address data type are for telephone and
            telefax numbers, e-mail addresses, Hypertext references,
            FTP references, etc.
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:anyURI"/>
   </xs:simpleType>
   <xs:complexType name="URL" abstract="true">
      <xs:annotation>
         <xs:documentation>
            A telecommunications address  specified according to
            Internet standard RFC 1738
            [http://www.ietf.org/rfc/rfc1738.txt]. The
            URL specifies the protocol and the contact point defined
            by that protocol for the resource.  Notable uses of the
            telecommunication address data type are for telephone and
            telefax numbers, e-mail addresses, Hypertext references,
            FTP references, etc.
         </xs:documentation>
         <xs:appinfo>
            <sch:pattern name="validate URL">
               <sch:rule abstract="true" id="rule-URL">
                  <sch:report test="(@nullFlavor or @value) and
                     not(@nullFlavor and @value)"/>
               </sch:rule>
            </sch:pattern>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="ANY">
            <xs:attribute name="value" type="url" use="optional"/>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="ts">
      <xs:annotation>
         <xs:documentation>
            A quantity specifying a point on the axis of natural time.
            A point in time is most often represented as a calendar
            expression.
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:pattern value="[0-9]{1,8}|([0-9]{9,14}|[0-9]{14,14}
            \.[0-9]+)([+\-][0-9]{1,4})?"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="TS">
      <xs:annotation>
         <xs:documentation>
            A quantity specifying a point on the axis of natural time.
            A point in time is most often represented as a calendar
            expression.
         </xs:documentation>
         <xs:appinfo>
            <diff>PQ</diff>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="QTY">
            <xs:attribute name="value" use="optional" type="ts"/>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TEL">
      <xs:annotation>
         <xs:documentation>
            A telephone number (voice or fax), e-mail address, or
            other locator for a resource (information or service)
            mediated by telecommunication equipment. The address
            is specified as a Universal Resource Locator (URL)
            qualified by time specification and use codes that help
            in deciding which address to use for a given time and
            purpose.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="URL">
            <xs:sequence>
               <xs:element name="useablePeriod" minOccurs="0"
                     maxOccurs="unbounded" type="SXCM_TS">
                  <xs:annotation>
                     <xs:documentation>
                     Specifies the periods of time during which the
                     telecommunication address can be used.  For a
                     telephone number, this can indicate the time of day
                     in which the party can be reached on that telephone.
                     For a web address, it may specify a time range in
                     which the web content is promised to be available
                     under the given address.
                  </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="use" use="optional"
                  type="set_TelecommunicationAddressUse">
               <xs:annotation>
                  <xs:documentation>
                     One or more codes advising a system or user which
                     telecommunication address in a set of like addresses
                     to select for a given telecommunication need.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ADXP" mixed="true">
      <xs:annotation>
         <xs:documentation>
            A character string that may have a type-tag signifying its
            role in the address. Typical parts that exist in about
            every address are street, house number, or post box,
            postal code, city, country but other roles may be defined
            regionally, nationally, or on an enterprise level (e.g. in
            military addresses). Addresses are usually broken up into
            lines, which are indicated by special line-breaking
            delimiter elements (e.g., DEL).
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="ST">
            <xs:attribute name="partType" type="AddressPartType">
               <xs:annotation>
                  <xs:documentation>
                     Specifies whether an address part names the street,
                     city, country, postal code, post box, etc. If the type
                     is NULL the address part is unclassified and would
                     simply appear on an address label as is.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.delimiter">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="DEL"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.country">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="CNT"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.state">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="STA"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.county">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="CPA"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.city">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="CTY"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.postalCode">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="ZIP"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.streetAddressLine">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="SAL"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.houseNumber">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="BNR"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.houseNumberNumeric">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="BNN"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.direction">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="DIR"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.streetName">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="STR"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.streetNameBase">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="STB"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType><!--
   jaxb implementors note: the jaxb code generator (v1.0.?) will
   fail to append "Type" to streetNameType so that there will be
   duplicate definitions in the java source for streetNameType.
   You will have to fix this manually.
  -->
   <xs:complexType mixed="true" name="adxp.streetNameType">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType"
               fixed="STTYP"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.additionalLocator">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="ADL"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.unitID">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="UNID"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.unitType">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="UNIT"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.careOf">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="CAR"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.censusTract">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="CEN"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.deliveryAddressLine">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="DAL"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.deliveryInstallationType">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType"
               fixed="DINST"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.deliveryInstallationArea">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType"
               fixed="DINSTA"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.deliveryInstallationQualifier">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType"
               fixed="DINSTQ"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.deliveryMode">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="DMOD"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.deliveryModeIdentifier">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType"
               fixed="DMODID"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.buildingNumberSuffix">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="BNS"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.postBox">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="POB"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType mixed="true" name="adxp.precinct">
      <xs:complexContent>
         <xs:restriction base="ADXP">
            <xs:attribute name="partType" type="AddressPartType" fixed="PRE"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="AD" mixed="true">
      <xs:annotation>
         <xs:documentation>
            Mailing and home or office addresses. A sequence of
            address parts, such as street or post office Box, city,
            postal code, country, etc.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="ANY">
            <xs:sequence>
               <xs:choice minOccurs="0" maxOccurs="unbounded">
                  <xs:element name="delimiter" type="adxp.delimiter"/>
                  <xs:element name="country" type="adxp.country"/>
                  <xs:element name="state" type="adxp.state"/>
                  <xs:element name="county" type="adxp.county"/>
                  <xs:element name="city" type="adxp.city"/>
                  <xs:element name="postalCode" type="adxp.postalCode"/>
                  <xs:element name="streetAddressLine"
                     type="adxp.streetAddressLine"/>
                  <xs:element name="houseNumber" type="adxp.houseNumber"/>
                  <xs:element name="houseNumberNumeric"
                     type="adxp.houseNumberNumeric"/>
                  <xs:element name="direction" type="adxp.direction"/>
                  <xs:element name="streetName" type="adxp.streetName"/>
                  <xs:element name="streetNameBase"
                     type="adxp.streetNameBase"/>
                  <xs:element name="streetNameType"
                     type="adxp.streetNameType"/>
                  <xs:element name="additionalLocator"
                     type="adxp.additionalLocator"/>
                  <xs:element name="unitID" type="adxp.unitID"/>
                  <xs:element name="unitType" type="adxp.unitType"/>
                  <xs:element name="careOf" type="adxp.careOf"/>
                  <xs:element name="censusTract"
                     type="adxp.censusTract"/>
                  <xs:element name="deliveryAddressLine"
                     type="adxp.deliveryAddressLine"/>
                  <xs:element name="deliveryInstallationType"
                     type="adxp.deliveryInstallationType"/>
                  <xs:element name="deliveryInstallationArea"
                     type="adxp.deliveryInstallationArea"/>
                  <xs:element name="deliveryInstallationQualifier"
                     type="adxp.deliveryInstallationQualifier"/>
                  <xs:element name="deliveryMode"
                     type="adxp.deliveryMode"/>
                  <xs:element name="deliveryModeIdentifier"
                     type="adxp.deliveryModeIdentifier"/>
                  <xs:element name="buildingNumberSuffix"
                     type="adxp.buildingNumberSuffix"/>
                  <xs:element name="postBox" type="adxp.postBox"/>
                  <xs:element name="precinct" type="adxp.precinct"/>
               </xs:choice>
               <xs:element name="useablePeriod" minOccurs="0"
                     maxOccurs="unbounded" type="SXCM_TS">
                  <xs:annotation>
                     <xs:documentation>
                        A General Timing Specification (GTS) specifying the
                        periods of time during which the address can be used.
                        This is used to specify different addresses for
                        different times of the year or to refer to historical
                        addresses.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="use" use="optional"
                  type="set_PostalAddressUse">
               <xs:annotation>
                  <xs:documentation>
                     A set of codes advising a system or user which address
                     in a set of like addresses to select for a given purpose.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="isNotOrdered" type="bl" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     A boolean value specifying whether the order of the
                     address parts is known or not. While the address parts
                     are always a Sequence, the order in which they are
                     presented may or may not be known. Where this matters, the
                     isNotOrdered property can be used to convey this
                     information.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ENXP" mixed="true">
      <xs:annotation>
         <xs:documentation>
            A character string token representing a part of a name.
            May have a type code signifying the role of the part in
            the whole entity name, and a qualifier code for more detail
            about the name part type. Typical name parts for person
            names are given names, and family names, titles, etc.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="ST">
            <xs:attribute name="partType" type="EntityNamePartType">
               <xs:annotation>
                  <xs:documentation>
                     Indicates whether the name part is a given name,
                     family name, prefix, suffix, etc.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="qualifier" use="optional"
                  type="set_EntityNamePartQualifier">
               <xs:annotation>
                  <xs:documentation>
                     The qualifier is a set of codes each of which specifies
                     a certain subcategory of the name part in addition to
                     the main name part type. For example, a given name may
                     be flagged as a nickname, a family name may be a
                     pseudonym or a name of public records.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="en.delimiter" mixed="true">
      <xs:complexContent>
         <xs:restriction base="ENXP">
            <xs:attribute name="partType" type="EntityNamePartType"
               fixed="DEL"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="en.family" mixed="true">
      <xs:complexContent>
         <xs:restriction base="ENXP">
            <xs:attribute name="partType" type="EntityNamePartType"
               fixed="FAM"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="en.given" mixed="true">
      <xs:complexContent>
         <xs:restriction base="ENXP">
            <xs:attribute name="partType" type="EntityNamePartType"
               fixed="GIV"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="en.prefix" mixed="true">
      <xs:complexContent>
         <xs:restriction base="ENXP">
            <xs:attribute name="partType" type="EntityNamePartType"
               fixed="PFX"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="en.suffix" mixed="true">
      <xs:complexContent>
         <xs:restriction base="ENXP">
            <xs:attribute name="partType" type="EntityNamePartType"
               fixed="SFX"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="EN" mixed="true">
      <xs:annotation>
         <xs:documentation>
            A name for a person, organization, place or thing. A
            sequence of name parts, such as given name or family
            name, prefix, suffix, etc. Examples for entity name
            values are "Jim Bob Walton, Jr.", "Health Level Seven,
            Inc.", "Lake Tahoe", etc. An entity name may be as simple
            as a character string or may consist of several entity name
            parts, such as, "Jim", "Bob", "Walton", and "Jr.", "Health
            Level Seven" and "Inc.", "Lake" and "Tahoe".
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="ANY">
            <xs:sequence>
               <xs:choice minOccurs="0" maxOccurs="unbounded">
                  <xs:element name="delimiter" type="en.delimiter"/>
                  <xs:element name="family" type="en.family"/>
                  <xs:element name="given" type="en.given"/>
                  <xs:element name="prefix" type="en.prefix"/>
                  <xs:element name="suffix" type="en.suffix"/>
               </xs:choice>
               <xs:element name="validTime" minOccurs="0" maxOccurs="1"
                     type="IVL_TS">
                  <xs:annotation>
                     <xs:documentation>
                        An interval of time specifying the time during which
                        the name is or was used for the entity. This
                        accomodates the fact that people change names for
                        people, places and things.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="use" use="optional" type="set_EntityNameUse">
               <xs:annotation>
                  <xs:documentation>
                     A set of codes advising a system or user which name
                     in a set of like names to select for a given purpose.
                     A name without specific use code might be a default
                     name useful for any purpose, but a name with a specific
                     use code would be preferred for that respective purpose.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PN" mixed="true">
      <xs:annotation>
         <xs:documentation>
            A name for a person. A sequence of name parts, such as
            given name or family name, prefix, suffix, etc. PN differs
            from EN because the qualifier type cannot include LS
            (Legal Status).
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="EN"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ON" mixed="true">
      <xs:annotation>
         <xs:documentation>
            A name for an organization. A sequence of name parts.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:restriction base="EN">
            <xs:sequence>
               <xs:choice minOccurs="0" maxOccurs="unbounded">
                  <xs:element name="delimiter" type="en.delimiter"/>
                  <xs:element name="prefix" type="en.prefix"/>
                  <xs:element name="suffix" type="en.suffix"/>
               </xs:choice>
               <xs:element name="validTime" minOccurs="0" maxOccurs="1"
                     type="IVL_TS">
                  <xs:annotation>
                     <xs:documentation>
                        An interval of time specifying the time during which
                        the name is or was used for the entity. This
                        accomodates the fact that people change names for
                        people, places and things.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="use" use="optional" type="set_EntityNameUse">
               <xs:annotation>
                  <xs:documentation>
                     A set of codes advising a system or user which name
                     in a set of like names to select for a given purpose.
                     A name without specific use code might be a default
                     name useful for any purpose, but a name with a specific
                     use code would be preferred for that respective purpose.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="TN" mixed="true">
      <xs:annotation>
         <xs:documentation>
            A restriction of entity name that is effectively a simple
            string used for a simple name for things and places.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:restriction base="EN">
            <xs:sequence>
               <xs:element name="validTime" minOccurs="0" maxOccurs="1"
                     type="IVL_TS">
                  <xs:annotation>
                     <xs:documentation>
                        An interval of time specifying the time during which
                        the name is or was used for the entity. This
                        accomodates the fact that people change names for
                        people, places and things.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="QTY" abstract="true">
      <xs:annotation>
         <xs:documentation>
            The quantity data type is an abstract generalization
            for all data types (1) whose value set has an order
            relation (less-or-equal) and (2) where difference is
            defined in all of the data type's totally ordered value
            subsets.  The quantity type abstraction is needed in
            defining certain other types, such as the interval and
            the probability distribution.
         </xs:documentation>
         <xs:appinfo>
            <diff>QTY</diff>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="ANY"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="int">
      <xs:annotation>
         <xs:documentation>
            Integer numbers (-1,0,1,2, 100, 3398129, etc.) are precise
            numbers that are results of counting and enumerating.
            Integer numbers are discrete, the set of integers is
            infinite but countable.  No arbitrary limit is imposed on
            the range of integer numbers. Two NULL flavors are
            defined for the positive and negative infinity.
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:integer"/>
   </xs:simpleType>
   <xs:complexType name="INT">
      <xs:annotation>
         <xs:documentation>
            Integer numbers (-1,0,1,2, 100, 3398129, etc.) are precise
            numbers that are results of counting and enumerating.
            Integer numbers are discrete, the set of integers is
            infinite but countable.  No arbitrary limit is imposed on
            the range of integer numbers. Two NULL flavors are
            defined for the positive and negative infinity.
         </xs:documentation>
         <xs:appinfo>
            <diff>INT</diff>
            <sch:pattern name="validate INT">
               <sch:rule abstract="true" id="rule-INT">
                  <sch:report test="(@value or @nullFlavor) and
                     not(@value and @nullFlavor)"/>
               </sch:rule>
            </sch:pattern>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="QTY">
            <xs:attribute name="value" use="optional" type="int"/>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="real">
      <xs:annotation>
         <xs:documentation>
            Fractional numbers. Typically used whenever quantities
            are measured, estimated, or computed from other real
            numbers.  The typical representation is decimal, where
            the number of significant decimal digits is known as the
            precision. Real numbers are needed beyond integers
            whenever quantities of the real world are measured,
            estimated, or computed from other real numbers. The term
            "Real number" in this specification is used to mean
            that fractional values are covered without necessarily
            implying the full set of the mathematical real numbers.
         </xs:documentation>
      </xs:annotation>
      <xs:union memberTypes="xs:decimal xs:double"/>
   </xs:simpleType>
   <xs:complexType name="REAL">
      <xs:annotation>
         <xs:documentation>
            Fractional numbers. Typically used whenever quantities
            are measured, estimated, or computed from other real
            numbers.  The typical representation is decimal, where
            the number of significant decimal digits is known as the
            precision. Real numbers are needed beyond integers
            whenever quantities of the real world are measured,
            estimated, or computed from other real numbers. The term
            "Real number" in this specification is used to mean
            that fractional values are covered without necessarily
            implying the full set of the mathematical real numbers.
         </xs:documentation>
         <xs:appinfo>
            <diff>REAL</diff>
            <sch:pattern name="validate REAL">
               <sch:rule abstract="true" id="rule-REAL">
                  <sch:report test="(@nullFlavor or @value) and
                     not(@nullFlavor and @value)"/>
               </sch:rule>
            </sch:pattern>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="QTY">
            <xs:attribute name="value" use="optional" type="real"/>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PQR">
      <xs:annotation>
         <xs:documentation>
            A representation of a physical quantity in a unit from
            any code system. Used to show alternative representation
            for a physical quantity.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="CV">
            <xs:attribute name="value" type="real" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     The magnitude of the measurement value in terms of
                     the unit specified in the code.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PQ">
      <xs:annotation>
         <xs:documentation>
            A dimensioned quantity expressing the result of a
            measurement act.
        </xs:documentation>
         <xs:appinfo>
            <diff>PQ</diff>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="QTY">
            <xs:sequence>
               <xs:element name="translation" type="PQR" minOccurs="0"
                     maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation>
                        An alternative representation of the same physical
                        quantity expressed in a different unit, of a different
                        unit code system and possibly with a different value.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="value" type="real" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     The magnitude of the quantity measured in terms of
                     the unit.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="unit" type="cs" use="optional" default="1">
               <xs:annotation>
                  <xs:documentation>
                     The unit of measure specified in the Unified Code for
                     Units of Measure (UCUM)
                     [http://aurora.rg.iupui.edu/UCUM].
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="MO">
      <xs:annotation>
         <xs:documentation>
            A monetary amount is a quantity expressing the amount of
            money in some currency. Currencies are the units in which
            monetary amounts are denominated in different economic
            regions. While the monetary amount is a single kind of
            quantity (money) the exchange rates between the different
            units are variable.  This is the principle difference
            between physical quantity and monetary amounts, and the
            reason why currency units are not physical units.
         </xs:documentation>
         <xs:appinfo>
            <diff>MO</diff>
            <sch:pattern name="validate MO">
               <sch:rule abstract="true" id="rule-MO">
                  <sch:report test="not(@nullFlavor and
                     (@value or @currency))"/>
               </sch:rule>
            </sch:pattern>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="QTY">
            <xs:attribute name="value" type="real" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     The magnitude of the monetary amount in terms of the
                     currency unit.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="currency" type="cs" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     The currency unit as defined in ISO 4217.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="RTO">
      <xs:annotation>
         <xs:documentation>
            A quantity constructed as the quotient of a numerator
            quantity divided by a denominator quantity. Common
            factors in the numerator and denominator are not
            automatically cancelled out.  RTO supports titers
            (e.g., "1:128") and other quantities produced by
            laboratories that truly represent ratios. Ratios are
            not simply "structured numerics", particularly blood
            pressure measurements (e.g. "120/60") are not ratios.
            In many cases REAL should be used instead
            of RTO.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="RTO_QTY_QTY"/>
      </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="probability">
      <xs:annotation>
         <xs:documentation>
               The probability assigned to the value, a decimal number
               between 0 (very uncertain) and 1 (certain).
            </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:double">
         <xs:minInclusive value="0.0"/>
         <xs:maxInclusive value="1.0"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="EIVL.event">
      <xs:annotation>
         <xs:documentation>
                        A code for a common (periodical) activity of daily
                        living based on which the event related periodic
                        interval is specified.
                     </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:restriction base="CE">
            <xs:attribute name="code" type="TimingEvent" use="optional"/>
            <xs:attribute name="codeSystem" type="uid"
               fixed="2.16.840.1.113883.5.139"/>
            <xs:attribute name="codeSystemName"
               type="st" fixed="TimingEvent"/>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
<!--
      Instantiated templates
    -->
   <xs:complexType name="SXCM_TS">
      <xs:complexContent>
         <xs:extension base="TS">
            <xs:attribute name="operator" type="SetOperator"
                  use="optional" default="I">
               <xs:annotation>
                  <xs:documentation>
                     A code specifying whether the set component is included
                     (union) or excluded (set-difference) from the set, or
                     other set operations with the current set component and
                     the set as constructed from the representation stream
                     up to the current point.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="set_TelecommunicationAddressUse">
      <xs:list itemType="TelecommunicationAddressUse"/>
   </xs:simpleType>
   <xs:simpleType name="set_PostalAddressUse">
      <xs:list itemType="PostalAddressUse"/>
   </xs:simpleType>
   <xs:simpleType name="set_EntityNamePartQualifier">
      <xs:list itemType="EntityNamePartQualifier"/>
   </xs:simpleType>
   <xs:complexType name="IVL_TS">
      <xs:complexContent>
         <xs:extension base="SXCM_TS">
            <xs:choice minOccurs="0">
               <xs:sequence>
                  <xs:element name="low" minOccurs="1" maxOccurs="1"
                        type="IVXB_TS">
                     <xs:annotation>
                        <xs:documentation>
                           The low limit of the interval.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:choice minOccurs="0">
                     <xs:element name="width" minOccurs="0" maxOccurs="1"
                           type="PQ">
                        <xs:annotation>
                           <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                        </xs:annotation>
                     </xs:element>
                     <xs:element name="high" minOccurs="0" maxOccurs="1"
                           type="IVXB_TS">
                        <xs:annotation>
                           <xs:documentation>
                           The high limit of the interval.
                        </xs:documentation>
                        </xs:annotation>
                     </xs:element>
                  </xs:choice>
               </xs:sequence>
               <xs:element name="high" minOccurs="1" maxOccurs="1"
                     type="IVXB_TS">
                  <xs:annotation>
                     <xs:documentation/>
                  </xs:annotation>
               </xs:element>
               <xs:sequence>
                  <xs:element name="width" minOccurs="1" maxOccurs="1"
                        type="PQ">
                     <xs:annotation>
                        <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:element name="high" minOccurs="0" maxOccurs="1"
                        type="IVXB_TS">
                     <xs:annotation>
                        <xs:documentation>
                           The high limit of the interval.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
               </xs:sequence>
               <xs:sequence>
                  <xs:element name="center" minOccurs="1" maxOccurs="1"
                        type="TS">
                     <xs:annotation>
                        <xs:documentation>
                           The arithmetic mean of the interval (low plus
                           high divided by 2). The purpose of distinguishing
                           the center as a semantic property is for
                           conversions of intervals from and to point values.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:element name="width" minOccurs="0" maxOccurs="1"
                        type="PQ">
                     <xs:annotation>
                        <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
               </xs:sequence>
            </xs:choice>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IVXB_TS">
      <xs:complexContent>
         <xs:extension base="TS">
            <xs:attribute name="inclusive" type="bl" use="optional"
                  default="true">
               <xs:annotation>
                  <xs:documentation>
                     Specifies whether the limit is included in the
                     interval (interval is closed) or excluded from the
                     interval (interval is open).
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="set_EntityNameUse">
      <xs:list itemType="EntityNameUse"/>
   </xs:simpleType>
   <xs:complexType name="RTO_QTY_QTY">
      <xs:annotation>
         <xs:appinfo>
            <diff>RTO_QTY_QTY</diff>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="QTY">
            <xs:sequence>
               <xs:element name="numerator" type="QTY">
                  <xs:annotation>
                     <xs:documentation>
                        The quantity that is being divided in the ratio.
                        The default is the integer number 1 (one).
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="denominator" type="QTY">
                  <xs:annotation>
                     <xs:documentation>
                        The quantity that devides the numerator in the ratio.
                        The default is the integer number 1 (one).
                        The denominator must not be zero.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
</xs:schema>

            
 

B.2

Generic Type Instantiations

   
               
<?xml version="1.0" encoding="UTF-8"?><!-- $Id: datatypes-its-xml.xml,v 1.6 2005/09/26 08:59:04 mcraig Exp $ --><!--
    This schema is generated from a Generic Schema Definition (GSD)
    by gsd2xsl. Do not edit this file.
  -->
<xs:schema xmlns:sch="http://www.ascc.net/xml/schematron"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      elementFormDefault="qualified">
   <xs:annotation>
      <xs:documentation>
           Copyright (c) 2001, 2002, 2003, 2004, 2005 Health Level Seven.
           All rights reserved.

           Redistribution and use in source and binary forms, with or
           without modification, are permitted provided that the following
           conditions are met:
           1. Redistributions of source code must retain the above
              copyright notice, this list of conditions and the following
              disclaimer.
           2. Redistributions in binary form must reproduce the above
              copyright notice, this list of conditions and the following
              disclaimer in the documentation and/or other materials
              provided with the distribution.
           3. All advertising materials mentioning features or use of this
              software must display the following acknowledgement:
           
           This product includes software developed by Health Level Seven.
 
           THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS
           ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
           NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
           FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT
           SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
           INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
           DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
           GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
           INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
           WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
           NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
           OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
           DAMAGE.
        
           Generated by $Id: gsd2xsd.xsl,v 1.4 2005/04/17 03:20:15 lmckenzi
           Exp $
</xs:documentation>
   </xs:annotation>
   <xs:include schemaLocation="datatypes-base.xsd"/>
<!--
      Instantiated templates
    -->
   <xs:complexType name="PIVL_TS">
      <xs:annotation>
         <xs:documentation>
            Note: because this type is defined as an extension of SXCM_T,
            all of the attributes and elements accepted for T are also
            accepted by this definition.  However, they are NOT allowed
            by the normative description of this type.  Unfortunately,
            we cannot write a general purpose schematron contraints to
            provide that extra validation, thus applications must be
            aware that instance (fragments) that pass validation with
            this might might still not be legal.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="SXCM_TS">
            <xs:sequence>
               <xs:element name="phase" minOccurs="0" maxOccurs="1"
                     type="IVL_TS">
                  <xs:annotation>
                     <xs:documentation>
                        A prototype of the repeating interval specifying the
                        duration of each occurrence and anchors the periodic
                        interval sequence at a certain point in time.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="period" minOccurs="0" maxOccurs="1" type="PQ">
                  <xs:annotation>
                     <xs:documentation>
                        A time duration specifying a reciprocal measure of
                        the frequency at which the periodic interval repeats.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="alignment" type="CalendarCycle" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     Specifies if and how the repetitions are aligned to
                     the cycles of the underlying calendar (e.g., to
                     distinguish every 30 days from "the 5th of every
                     month".) A non-aligned periodic interval recurs
                     independently from the calendar. An aligned periodic
                     interval is synchronized with the calendar.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="institutionSpecified" type="bl" use="optional"
                  default="false">
               <xs:annotation>
                  <xs:documentation>
                     Indicates whether the exact timing is up to the party
                     executing the schedule (e.g., to distinguish "every 8
                     hours" from "3 times a day".)
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="EIVL_TS">
      <xs:annotation>
         <xs:documentation>
            Note: because this type is defined as an extension of SXCM_T,
            all of the attributes and elements accepted for T are also
            accepted by this definition.  However, they are NOT allowed
            by the normative description of this type.  Unfortunately,
            we cannot write a general purpose schematron contraints to
            provide that extra validation, thus applications must be
            aware that instance (fragments) that pass validation with
            this might might still not be legal.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="SXCM_TS">
            <xs:sequence>
               <xs:element name="event" type="EIVL.event" minOccurs="0"
                     maxOccurs="1">
                  <xs:annotation>
                     <xs:documentation>
                        A code for a common (periodical) activity of daily
                        living based on which the event related periodic
                        interval is specified.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="offset" minOccurs="0" maxOccurs="1"
                     type="IVL_PQ">
                  <xs:annotation>
                     <xs:documentation>
                        An interval of elapsed time (duration, not absolute
                        point in time) that marks the offsets for the
                        beginning, width and end of the event-related periodic
                        interval measured from the time each such event
                        actually occurred.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IVL_PQ">
      <xs:complexContent>
         <xs:extension base="SXCM_PQ">
            <xs:choice minOccurs="0">
               <xs:sequence>
                  <xs:element name="low" minOccurs="1" maxOccurs="1"
                        type="IVXB_PQ">
                     <xs:annotation>
                        <xs:documentation>
                           The low limit of the interval.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:choice minOccurs="0">
                     <xs:element name="width" minOccurs="0" maxOccurs="1"
                           type="PQ">
                        <xs:annotation>
                           <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                        </xs:annotation>
                     </xs:element>
                     <xs:element name="high" minOccurs="0" maxOccurs="1"
                           type="IVXB_PQ">
                        <xs:annotation>
                           <xs:documentation>
                           The high limit of the interval.
                        </xs:documentation>
                        </xs:annotation>
                     </xs:element>
                  </xs:choice>
               </xs:sequence>
               <xs:element name="high" minOccurs="1" maxOccurs="1"
                     type="IVXB_PQ">
                  <xs:annotation>
                     <xs:documentation/>
                  </xs:annotation>
               </xs:element>
               <xs:sequence>
                  <xs:element name="width" minOccurs="1" maxOccurs="1"
                        type="PQ">
                     <xs:annotation>
                        <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:element name="high" minOccurs="0" maxOccurs="1"
                        type="IVXB_PQ">
                     <xs:annotation>
                        <xs:documentation>
                           The high limit of the interval.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
               </xs:sequence>
               <xs:sequence>
                  <xs:element name="center" minOccurs="1" maxOccurs="1"
                        type="PQ">
                     <xs:annotation>
                        <xs:documentation>
                           The arithmetic mean of the interval (low plus high
                           divided by 2). The purpose of distinguishing the
                           center as a semantic property is for conversions
                           of intervals from and to point values.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:element name="width" minOccurs="0" maxOccurs="1"
                        type="PQ">
                     <xs:annotation>
                        <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
               </xs:sequence>
            </xs:choice>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SXCM_PQ">
      <xs:complexContent>
         <xs:extension base="PQ">
            <xs:attribute name="operator" type="SetOperator" use="optional"
                  default="I">
               <xs:annotation>
                  <xs:documentation>
                     A code specifying whether the set component is included
                     (union) or excluded (set-difference) from the set, or
                     other set operations with the current set component and
                     the set as constructed from the representation stream
                     up to the current point.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IVXB_PQ">
      <xs:complexContent>
         <xs:extension base="PQ">
            <xs:attribute name="inclusive" type="bl" use="optional"
                  default="true">
               <xs:annotation>
                  <xs:documentation>
                     Specifies whether the limit is included in the
                     interval (interval is closed) or excluded from the
                     interval (interval is open).
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PPD_TS">
      <xs:annotation>
         <xs:appinfo>
            <diff>PPD_PQ</diff>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="TS">
            <xs:sequence>
               <xs:element name="standardDeviation" minOccurs="0"
                     maxOccurs="1" type="PQ">
                  <xs:annotation>
                     <xs:documentation>
                        The primary measure of variance/uncertainty of the
                        value (the square root of the sum of the squares of
                        the differences between all data points and the mean).
                        The standard deviation is used to normalize the data
                        for computing the distribution function. Applications
                        that cannot deal with probability distributions can
                        still get an idea about the confidence level by looking
                        at the standard deviation.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="distributionType"
                  type="ProbabilityDistributionType" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     A code specifying the type of probability distribution.
                     Possible values are as shown in the attached table.
                     The NULL value (unknown) for the type code indicates
                     that the probability distribution type is unknown. In
                     that case, the standard deviation has the meaning of an
                     informal guess.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PPD_PQ">
      <xs:annotation>
         <xs:appinfo>
            <diff>PPD_PQ</diff>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="PQ">
            <xs:sequence>
               <xs:element name="standardDeviation" minOccurs="0"
                     maxOccurs="1" type="PQ">
                  <xs:annotation>
                     <xs:documentation>
                        The primary measure of variance/uncertainty of the
                        value (the square root of the sum of the squares of
                        the differences between all data points and the mean).
                        The standard deviation is used to normalize the data
                        for computing the distribution function. Applications
                        that cannot deal with probability distributions can
                        still get an idea about the confidence level by looking
                        at the standard deviation.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="distributionType"
                  type="ProbabilityDistributionType" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     A code specifying the type of probability distribution.
                     Possible values are as shown in the attached table.
                     The NULL value (unknown) for the type code indicates
                     that the probability distribution type is unknown. In
                     that case, the standard deviation has the meaning of an
                     informal guess.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="PIVL_PPD_TS">
      <xs:annotation>
         <xs:documentation>
            Note: because this type is defined as an extension of SXCM_T,
            all of the attributes and elements accepted for T are also
            accepted by this definition.  However, they are NOT allowed
            by the normative description of this type.  Unfortunately,
            we cannot write a general purpose schematron contraints to
            provide that extra validation, thus applications must be
            aware that instance (fragments) that pass validation with
            this might might still not be legal.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="SXCM_PPD_TS">
            <xs:sequence>
               <xs:element name="phase" minOccurs="0" maxOccurs="1"
                     type="IVL_PPD_TS">
                  <xs:annotation>
                     <xs:documentation>
                        A prototype of the repeating interval specifying the
                        duration of each occurrence and anchors the periodic
                        interval sequence at a certain point in time.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="period" minOccurs="0" maxOccurs="1"
                     type="PPD_PQ">
                  <xs:annotation>
                     <xs:documentation>
                        A time duration specifying a reciprocal measure of
                        the frequency at which the periodic interval repeats.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="alignment" type="CalendarCycle" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     Specifies if and how the repetitions are aligned to
                     the cycles of the underlying calendar (e.g., to
                     distinguish every 30 days from "the 5th of every
                     month".) A non-aligned periodic interval recurs
                     independently from the calendar. An aligned periodic
                     interval is synchronized with the calendar.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="institutionSpecified" type="bl"
                  use="optional" default="false">
               <xs:annotation>
                  <xs:documentation>
                     Indicates whether the exact timing is up to the party
                     executing the schedule (e.g., to distinguish "every 8
                     hours" from "3 times a day".)
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SXCM_PPD_TS">
      <xs:complexContent>
         <xs:extension base="PPD_TS">
            <xs:attribute name="operator" type="SetOperator" use="optional"
                  default="I">
               <xs:annotation>
                  <xs:documentation>
                     A code specifying whether the set component is included
                     (union) or excluded (set-difference) from the set, or
                     other set operations with the current set component and
                     the set as constructed from the representation stream
                     up to the current point.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IVL_PPD_TS">
      <xs:complexContent>
         <xs:extension base="SXCM_PPD_TS">
            <xs:choice minOccurs="0">
               <xs:sequence>
                  <xs:element name="low" minOccurs="1" maxOccurs="1"
                        type="IVXB_PPD_TS">
                     <xs:annotation>
                        <xs:documentation>
                           The low limit of the interval.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:choice minOccurs="0">
                     <xs:element name="width" minOccurs="0" maxOccurs="1"
                           type="PPD_PQ">
                        <xs:annotation>
                           <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                        </xs:annotation>
                     </xs:element>
                     <xs:element name="high" minOccurs="0" maxOccurs="1"
                           type="IVXB_PPD_TS">
                        <xs:annotation>
                           <xs:documentation>
                           The high limit of the interval.
                        </xs:documentation>
                        </xs:annotation>
                     </xs:element>
                  </xs:choice>
               </xs:sequence>
               <xs:element name="high" minOccurs="1" maxOccurs="1"
                     type="IVXB_PPD_TS">
                  <xs:annotation>
                     <xs:documentation/>
                  </xs:annotation>
               </xs:element>
               <xs:sequence>
                  <xs:element name="width" minOccurs="1" maxOccurs="1"
                        type="PPD_PQ">
                     <xs:annotation>
                        <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:element name="high" minOccurs="0" maxOccurs="1"
                        type="IVXB_PPD_TS">
                     <xs:annotation>
                        <xs:documentation>
                           The high limit of the interval.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
               </xs:sequence>
               <xs:sequence>
                  <xs:element name="center" minOccurs="1" maxOccurs="1"
                        type="PPD_TS">
                     <xs:annotation>
                        <xs:documentation>
                           The arithmetic mean of the interval (low plus high
                           divided by 2). The purpose of distinguishing the
                           center as a semantic property is for conversions
                           of intervals from and to point values.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:element name="width" minOccurs="0" maxOccurs="1"
                        type="PPD_PQ">
                     <xs:annotation>
                        <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
               </xs:sequence>
            </xs:choice>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IVXB_PPD_TS">
      <xs:complexContent>
         <xs:extension base="PPD_TS">
            <xs:attribute name="inclusive" type="bl" use="optional"
                  default="true">
               <xs:annotation>
                  <xs:documentation>
                     Specifies whether the limit is included in the
                     interval (interval is closed) or excluded from the
                     interval (interval is open).
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="EIVL_PPD_TS">
      <xs:annotation>
         <xs:documentation>
            Note: because this type is defined as an extension of SXCM_T,
            all of the attributes and elements accepted for T are also
            accepted by this definition.  However, they are NOT allowed
            by the normative description of this type.  Unfortunately,
            we cannot write a general purpose schematron contraints to
            provide that extra validation, thus applications must be
            aware that instance (fragments) that pass validation with
            this might might still not be legal.
         </xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="SXCM_PPD_TS">
            <xs:sequence>
               <xs:element name="event" type="EIVL.event" minOccurs="0"
                     maxOccurs="1">
                  <xs:annotation>
                     <xs:documentation>
                        A code for a common (periodical) activity of daily
                        living based on which the event related periodic
                        interval is specified.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="offset" minOccurs="0" maxOccurs="1"
                     type="IVL_PPD_PQ">
                  <xs:annotation>
                     <xs:documentation>
                        An interval of elapsed time (duration, not absolute
                        point in time) that marks the offsets for the
                        beginning, width and end of the event-related periodic
                        interval measured from the time each such event
                        actually occurred.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IVL_PPD_PQ">
      <xs:complexContent>
         <xs:extension base="SXCM_PPD_PQ">
            <xs:choice minOccurs="0">
               <xs:sequence>
                  <xs:element name="low" minOccurs="1" maxOccurs="1"
                        type="IVXB_PPD_PQ">
                     <xs:annotation>
                        <xs:documentation>
                           The low limit of the interval.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:choice minOccurs="0">
                     <xs:element name="width" minOccurs="0" maxOccurs="1"
                           type="PPD_PQ">
                        <xs:annotation>
                           <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                        </xs:annotation>
                     </xs:element>
                     <xs:element name="high" minOccurs="0" maxOccurs="1"
                           type="IVXB_PPD_PQ">
                        <xs:annotation>
                           <xs:documentation>
                           The high limit of the interval.
                        </xs:documentation>
                        </xs:annotation>
                     </xs:element>
                  </xs:choice>
               </xs:sequence>
               <xs:element name="high" minOccurs="1" maxOccurs="1"
                     type="IVXB_PPD_PQ">
                  <xs:annotation>
                     <xs:documentation/>
                  </xs:annotation>
               </xs:element>
               <xs:sequence>
                  <xs:element name="width" minOccurs="1" maxOccurs="1"
                        type="PPD_PQ">
                     <xs:annotation>
                        <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:element name="high" minOccurs="0" maxOccurs="1"
                        type="IVXB_PPD_PQ">
                     <xs:annotation>
                        <xs:documentation>
                           The high limit of the interval.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
               </xs:sequence>
               <xs:sequence>
                  <xs:element name="center" minOccurs="1" maxOccurs="1"
                        type="PPD_PQ">
                     <xs:annotation>
                        <xs:documentation>
                           The arithmetic mean of the interval (low plus high
                           divided by 2). The purpose of distinguishing the
                           center as a semantic property is for conversions
                           of intervals from and to point values.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:element name="width" minOccurs="0" maxOccurs="1"
                        type="PPD_PQ">
                     <xs:annotation>
                        <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
               </xs:sequence>
            </xs:choice>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SXCM_PPD_PQ">
      <xs:complexContent>
         <xs:extension base="PPD_PQ">
            <xs:attribute name="operator" type="SetOperator" use="optional"
                  default="I">
               <xs:annotation>
                  <xs:documentation>
                     A code specifying whether the set component is included
                     (union) or excluded (set-difference) from the set, or
                     other set operations with the current set component and
                     the set as constructed from the representation stream
                     up to the current point.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IVXB_PPD_PQ">
      <xs:complexContent>
         <xs:extension base="PPD_PQ">
            <xs:attribute name="inclusive" type="bl" use="optional"
                  default="true">
               <xs:annotation>
                  <xs:documentation>
                     Specifies whether the limit is included in the
                     interval (interval is closed) or excluded from the
                     interval (interval is open).
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SXPR_TS">
      <xs:complexContent>
         <xs:extension base="SXCM_TS">
            <xs:sequence>
               <xs:element name="comp" minOccurs="2" maxOccurs="unbounded"
                     type="SXCM_TS">
                  <xs:annotation>
                     <xs:documentation/>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SXCM_CD">
      <xs:complexContent>
         <xs:extension base="CD">
            <xs:attribute name="operator" type="SetOperator" use="optional"
                  default="I">
               <xs:annotation>
                  <xs:documentation>
                     A code specifying whether the set component is included
                     (union) or excluded (set-difference) from the set, or
                     other set operations with the current set component and
                     the set as constructed from the representation stream
                     up to the current point.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SXCM_MO">
      <xs:complexContent>
         <xs:extension base="MO">
            <xs:attribute name="operator" type="SetOperator" use="optional"
                  default="I">
               <xs:annotation>
                  <xs:documentation>
                     A code specifying whether the set component is included
                     (union) or excluded (set-difference) from the set, or
                     other set operations with the current set component and
                     the set as constructed from the representation stream
                     up to the current point.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SXCM_INT">
      <xs:complexContent>
         <xs:extension base="INT">
            <xs:attribute name="operator" type="SetOperator" use="optional"
                  default="I">
               <xs:annotation>
                  <xs:documentation>
                     A code specifying whether the set component is included
                     (union) or excluded (set-difference) from the set, or
                     other set operations with the current set component and
                     the set as constructed from the representation stream
                     up to the current point.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SXCM_REAL">
      <xs:complexContent>
         <xs:extension base="REAL">
            <xs:attribute name="operator" type="SetOperator" use="optional"
                  default="I">
               <xs:annotation>
                  <xs:documentation>
                     A code specifying whether the set component is included
                     (union) or excluded (set-difference) from the set, or
                     other set operations with the current set component and
                     the set as constructed from the representation stream
                     up to the current point.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IVL_INT">
      <xs:complexContent>
         <xs:extension base="SXCM_INT">
            <xs:choice minOccurs="0">
               <xs:sequence>
                  <xs:element name="low" minOccurs="1" maxOccurs="1"
                        type="IVXB_INT">
                     <xs:annotation>
                        <xs:documentation>
                           The low limit of the interval.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:choice minOccurs="0">
                     <xs:element name="width" minOccurs="0" maxOccurs="1"
                           type="INT">
                        <xs:annotation>
                           <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                        </xs:annotation>
                     </xs:element>
                     <xs:element name="high" minOccurs="0" maxOccurs="1"
                           type="IVXB_INT">
                        <xs:annotation>
                           <xs:documentation>
                           The high limit of the interval.
                        </xs:documentation>
                        </xs:annotation>
                     </xs:element>
                  </xs:choice>
               </xs:sequence>
               <xs:element name="high" minOccurs="1" maxOccurs="1"
                     type="IVXB_INT">
                  <xs:annotation>
                     <xs:documentation/>
                  </xs:annotation>
               </xs:element>
               <xs:sequence>
                  <xs:element name="width" minOccurs="1" maxOccurs="1"
                        type="INT">
                     <xs:annotation>
                        <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:element name="high" minOccurs="0" maxOccurs="1"
                        type="IVXB_INT">
                     <xs:annotation>
                        <xs:documentation>
                           The high limit of the interval.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
               </xs:sequence>
               <xs:sequence>
                  <xs:element name="center" minOccurs="1" maxOccurs="1"
                        type="INT">
                     <xs:annotation>
                        <xs:documentation>
                           The arithmetic mean of the interval (low plus high
                           divided by 2). The purpose of distinguishing the
                           center as a semantic property is for conversions
                           of intervals from and to point values.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:element name="width" minOccurs="0" maxOccurs="1"
                        type="INT">
                     <xs:annotation>
                        <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
               </xs:sequence>
            </xs:choice>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IVXB_INT">
      <xs:complexContent>
         <xs:extension base="INT">
            <xs:attribute name="inclusive" type="bl" use="optional"
                  default="true">
               <xs:annotation>
                  <xs:documentation>
                     Specifies whether the limit is included in the
                     interval (interval is closed) or excluded from the
                     interval (interval is open).
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IVL_REAL">
      <xs:complexContent>
         <xs:extension base="SXCM_REAL">
            <xs:choice minOccurs="0">
               <xs:sequence>
                  <xs:element name="low" minOccurs="1" maxOccurs="1"
                        type="IVXB_REAL">
                     <xs:annotation>
                        <xs:documentation>
                           The low limit of the interval.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:choice minOccurs="0">
                     <xs:element name="width" minOccurs="0" maxOccurs="1"
                           type="REAL">
                        <xs:annotation>
                           <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                        </xs:annotation>
                     </xs:element>
                     <xs:element name="high" minOccurs="0" maxOccurs="1"
                           type="IVXB_REAL">
                        <xs:annotation>
                           <xs:documentation>
                           The high limit of the interval.
                        </xs:documentation>
                        </xs:annotation>
                     </xs:element>
                  </xs:choice>
               </xs:sequence>
               <xs:element name="high" minOccurs="1" maxOccurs="1"
                     type="IVXB_REAL">
                  <xs:annotation>
                     <xs:documentation/>
                  </xs:annotation>
               </xs:element>
               <xs:sequence>
                  <xs:element name="width" minOccurs="1" maxOccurs="1"
                        type="REAL">
                     <xs:annotation>
                        <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:element name="high" minOccurs="0" maxOccurs="1"
                        type="IVXB_REAL">
                     <xs:annotation>
                        <xs:documentation>
                           The high limit of the interval.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
               </xs:sequence>
               <xs:sequence>
                  <xs:element name="center" minOccurs="1" maxOccurs="1"
                        type="REAL">
                     <xs:annotation>
                        <xs:documentation>
                           The arithmetic mean of the interval (low plus high
                           divided by 2). The purpose of distinguishing the
                           center as a semantic property is for conversions
                           of intervals from and to point values.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:element name="width" minOccurs="0" maxOccurs="1"
                        type="REAL">
                     <xs:annotation>
                        <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
               </xs:sequence>
            </xs:choice>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IVXB_REAL">
      <xs:complexContent>
         <xs:extension base="REAL">
            <xs:attribute name="inclusive" type="bl" use="optional"
                  default="true">
               <xs:annotation>
                  <xs:documentation>
                     Specifies whether the limit is included in the
                     interval (interval is closed) or excluded from the
                     interval (interval is open).
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IVL_MO">
      <xs:complexContent>
         <xs:extension base="SXCM_MO">
            <xs:choice minOccurs="0">
               <xs:sequence>
                  <xs:element name="low" minOccurs="1" maxOccurs="1"
                        type="IVXB_MO">
                     <xs:annotation>
                        <xs:documentation>
                           The low limit of the interval.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:choice minOccurs="0">
                     <xs:element name="width" minOccurs="0" maxOccurs="1"
                           type="MO">
                        <xs:annotation>
                           <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation
                           only two of the three properties high, low, and
                           width need to be stated and the third can be
                           derived.
                        </xs:documentation>
                        </xs:annotation>
                     </xs:element>
                     <xs:element name="high" minOccurs="0" maxOccurs="1"
                           type="IVXB_MO">
                        <xs:annotation>
                           <xs:documentation>
                           The high limit of the interval.
                        </xs:documentation>
                        </xs:annotation>
                     </xs:element>
                  </xs:choice>
               </xs:sequence>
               <xs:element name="high" minOccurs="1" maxOccurs="1"
                      type="IVXB_MO">
                  <xs:annotation>
                     <xs:documentation/>
                  </xs:annotation>
               </xs:element>
               <xs:sequence>
                  <xs:element name="width" minOccurs="1" maxOccurs="1"
                        type="MO">
                     <xs:annotation>
                        <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:element name="high" minOccurs="0" maxOccurs="1"
                        type="IVXB_MO">
                     <xs:annotation>
                        <xs:documentation>
                           The high limit of the interval.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
               </xs:sequence>
               <xs:sequence>
                  <xs:element name="center" minOccurs="1" maxOccurs="1"
                        type="MO">
                     <xs:annotation>
                        <xs:documentation>
                           The arithmetic mean of the interval (low plus high
                           divided by 2). The purpose of distinguishing the
                           center as a semantic property is for conversions
                           of intervals from and to point values.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
                  <xs:element name="width" minOccurs="0" maxOccurs="1"
                        type="MO">
                     <xs:annotation>
                        <xs:documentation>
                           The difference between high and low boundary. The
                           purpose of distinguishing a width property is to
                           handle all cases of incomplete information
                           symmetrically. In any interval representation only
                           two of the three properties high, low, and width
                           need to be stated and the third can be derived.
                        </xs:documentation>
                     </xs:annotation>
                  </xs:element>
               </xs:sequence>
            </xs:choice>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="IVXB_MO">
      <xs:complexContent>
         <xs:extension base="MO">
            <xs:attribute name="inclusive" type="bl" use="optional"
                  default="true">
               <xs:annotation>
                  <xs:documentation>
                     Specifies whether the limit is included in the
                     interval (interval is closed) or excluded from the
                     interval (interval is open).
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="HXIT_PQ">
      <xs:complexContent>
         <xs:extension base="PQ">
            <xs:sequence>
               <xs:element name="validTime" minOccurs="0" maxOccurs="1"
                     type="IVL_TS">
                  <xs:annotation>
                     <xs:documentation>
                        The time interval during which the given information
                        was, is, or is expected to be valid. The interval can
                        be open or closed, as well as infinite or undefined on
                        either side.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="HXIT_CE">
      <xs:complexContent>
         <xs:extension base="CE">
            <xs:sequence>
               <xs:element name="validTime" minOccurs="0" maxOccurs="1"
                     type="IVL_TS">
                  <xs:annotation>
                     <xs:documentation>
                        The time interval during which the given information
                        was, is, or is expected to be valid. The interval can
                        be open or closed, as well as infinite or undefined on
                        either side.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BXIT_CD">
      <xs:complexContent>
         <xs:extension base="CD">
            <xs:attribute name="qty" type="int" use="optional" default="1">
               <xs:annotation>
                  <xs:documentation>
                     The quantity in which the bag item occurs in its
                     containing bag.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="BXIT_IVL_PQ">
      <xs:complexContent>
         <xs:extension base="IVL_PQ">
            <xs:attribute name="qty" type="int" use="optional" default="1">
               <xs:annotation>
                  <xs:documentation>
                     The quantity in which the bag item occurs in its
                     containing bag.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SLIST_PQ">
      <xs:complexContent>
         <xs:extension base="ANY">
            <xs:sequence>
               <xs:element name="origin" minOccurs="1" maxOccurs="1"
                     type="PQ">
                  <xs:annotation>
                     <xs:documentation>
                     The origin of the list item value scale, i.e., the
                     physical quantity that a zero-digit in the sequence
                     would represent.
                  </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="scale" minOccurs="1" maxOccurs="1"
                     type="PQ">
                  <xs:annotation>
                     <xs:documentation>
                     A ratio-scale quantity that is factored out of the
                     digit sequence.
                  </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="digits" minOccurs="1" maxOccurs="1"
                     type="list_int">
                  <xs:annotation>
                     <xs:documentation>
                     A sequence of raw digits for the sample values. This is
                     typically the raw output of an A/D converter.
                  </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="list_int">
      <xs:list itemType="int"/>
   </xs:simpleType>
   <xs:complexType name="SLIST_TS">
      <xs:complexContent>
         <xs:extension base="ANY">
            <xs:sequence>
               <xs:element name="origin" minOccurs="1" maxOccurs="1" type="TS">
                  <xs:annotation>
                     <xs:documentation>
                     The origin of the list item value scale, i.e., the
                     physical quantity that a zero-digit in the sequence
                     would represent.
                  </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="scale" minOccurs="1" maxOccurs="1" type="PQ">
                  <xs:annotation>
                     <xs:documentation>
                     A ratio-scale quantity that is factored out of the
                     digit sequence.
                  </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="digits" minOccurs="1" maxOccurs="1"
                     type="list_int">
                  <xs:annotation>
                     <xs:documentation>
                     A sequence of raw digits for the sample values. This is
                     typically the raw output of an A/D converter.
                  </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="GLIST_TS">
      <xs:complexContent>
         <xs:extension base="ANY">
            <xs:sequence>
               <xs:element name="head" minOccurs="1" maxOccurs="1" type="TS">
                  <xs:annotation>
                     <xs:documentation>
                     This is the start-value of the generated list. 
                  </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="increment" minOccurs="1" maxOccurs="1"
                     type="PQ">
                  <xs:annotation>
                     <xs:documentation>
                     The difference between one value and its previous
                     different value. For example, to generate the sequence
                     (1; 4; 7; 10; 13; ...) the increment is 3; likewise to
                     generate the sequence (1; 1; 4; 4; 7; 7; 10; 10; 13;
                     13; ...) the increment is also 3.
                  </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="period" type="int" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     If non-NULL, specifies that the sequence alternates,
                     i.e., after this many increments, the sequence item
                     values roll over to start from the initial sequence
                     item value. For example, the sequence (1; 2; 3; 1; 2;
                     3; 1; 2; 3; ...) has period 3; also the sequence
                     (1; 1; 2; 2; 3; 3; 1; 1; 2; 2; 3; 3; ...) has period
                     3 too.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="denominator" type="int" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     The integer by which the index for the sequence is
                     divided, effectively the number of times the sequence
                     generates the same sequence item value before
                     incrementing to the next sequence item value. For
                     example, to generate the sequence (1; 1; 1; 2; 2; 2; 3; 3;
                     3; ...)  the denominator is 3.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="GLIST_PQ">
      <xs:complexContent>
         <xs:extension base="ANY">
            <xs:sequence>
               <xs:element name="head" minOccurs="1" maxOccurs="1" type="PQ">
                  <xs:annotation>
                     <xs:documentation>
                     This is the start-value of the generated list. 
                  </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="increment" minOccurs="1" maxOccurs="1"
                     type="PQ">
                  <xs:annotation>
                     <xs:documentation>
                     The difference between one value and its previous
                     different value. For example, to generate the sequence
                     (1; 4; 7; 10; 13; ...) the increment is 3; likewise to
                     generate the sequence (1; 1; 4; 4; 7; 7; 10; 10; 13;
                     13; ...) the increment is also 3.
                  </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="period" type="int" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     If non-NULL, specifies that the sequence alternates,
                     i.e., after this many increments, the sequence item
                     values roll over to start from the initial sequence
                     item value. For example, the sequence (1; 2; 3; 1; 2;
                     3; 1; 2; 3; ...) has period 3; also the sequence
                     (1; 1; 2; 2; 3; 3; 1; 1; 2; 2; 3; 3; ...) has period
                     3 too.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="denominator" type="int" use="optional">
               <xs:annotation>
                  <xs:documentation>
                     The integer by which the index for the sequence is
                     divided, effectively the number of times the sequence
                     generates the same sequence item value before
                     incrementing to the next sequence item value. For
                     example, to generate the sequence (1; 1; 1; 2; 2; 2; 3; 3;
                     3; ...)  the denominator is 3.
                  </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="RTO_PQ_PQ">
      <xs:annotation>
         <xs:appinfo>
            <diff>RTO_PQ_PQ</diff>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="QTY">
            <xs:sequence>
               <xs:element name="numerator" type="PQ">
                  <xs:annotation>
                     <xs:documentation>
                        The quantity that is being divided in the ratio.  The
                        default is the integer number 1 (one).
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="denominator" type="PQ">
                  <xs:annotation>
                     <xs:documentation>
                        The quantity that devides the numerator in the ratio.
                        The default is the integer number 1 (one).
                        The denominator must not be zero.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="RTO_MO_PQ">
      <xs:annotation>
         <xs:appinfo>
            <diff>RTO_MO_PQ</diff>
         </xs:appinfo>
      </xs:annotation>
      <xs:complexContent>
         <xs:extension base="QTY">
            <xs:sequence>
               <xs:element name="numerator" type="MO">
                  <xs:annotation>
                     <xs:documentation>
                        The quantity that is being divided in the ratio.  The
                        default is the integer number 1 (one).
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="denominator" type="PQ">
                  <xs:annotation>
                     <xs:documentation>
                        The quantity that devides the numerator in the ratio.
                        The default is the integer number 1 (one).
                        The denominator must not be zero.
                     </xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="UVP_TS">
      <xs:complexContent>
         <xs:extension base="TS">
            <xs:attribute name="probability" type="probability" use="optional">
               <xs:annotation>
                  <xs:documentation>
               The probability assigned to the value, a decimal number
               between 0 (very uncertain) and 1 (certain).
            </xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:extension>
      </xs:complexContent>
   </xs:complexType>
</xs:schema>