Identifier
Overview
See also Examples, Detailed Descriptions, Mappings, Profiles and Extensions
A string, typically numeric or alphanumeric, that is associated with a single object or entity within a given system. Typically, identifiers are used to connect content in resources to external content available in other frameworks or protocols. Identifiers are associated with objects and may be changed or retired due to human or system process and errors.
[%dt Identifier 9%]
The system is an absolute URI that defines a set of identifiers (i.e., how the value is made unique). It might be a specific application or a recognized standard/specification for a set of identifiers or a way of making identifiers unique. FHIR defines some useful or important system URIs directly. Here are some example identifier namespaces:
http://hl7.org/fhir/sid/us-ssnfor United States Social Security Number (SSN) valueshttp://ns.electronichealth.net.au/id/hi/ihi/1.0for Australian Individual Healthcare Identifier (IHI) numbersurn:ietf:rfc:3986for when the value of the identifier is itself a globally unique URI
If the system is a URL, it SHOULD resolve. Resolution might be to a web page that describes the identifier system and/or supports look-up of identifiers. Alternatively, it could be to a NamingSystem resource instance. Resolvable URLs are generally preferred by implementers over non-resolvable URNs, particularly opaque URNs such as OIDs (urn:oid:) or UUIDs (urn:uuid:). If being exchanged across institutional boundaries, OIDs and UUIDs SHOULD be available to communicating participants in a shared registry. The HL7 OID registry may be used for this purpose for OIDs. terminology.hl7.org may also be used to register NamingSystems for identifiers of broad international or national interest.
It is up to the implementer organization to determine an appropriate URL or URN structure that will avoid collisions and to manage that space (and the resolvability of URLs) over time.
Note that the scope of a given identifier system may extend beyond identifiers that might be captured by a single resource. For example, some systems might draw all "order" identifiers from a single namespace, though some might be used on MedicationRequest while others would appear on ServiceRequest.
The value SHALL be unique within the defined system and have a consistent meaning wherever it appears. Identifier.system is always case sensitive. Identifier.value is to be treated as case sensitive unless knowledge of the Identifier.system allows the processer to be confident that non-case-sensitive processing is safe.
Identifiers are expected to be globally unique by nature of the combination of system and value. In some cases, the 'value' element is already globally unique independent of Identifier.system. Typically, these are absolute URIs of some kind (e.g., an OID, a UUID, or a URI with no trailing local part). In such a case, an Identifier.system value may be established by the assigner or community to identify that collection of identifiers
When using globally unique identifiers that are expressible as URIs as a value, a system SHALL be provided. If there is no assigned system, then the system SHALL be urn:ietf:rfc:3986 and the value is expressed as a URI (OIDs and UUIDs using urn:oid: and urn:uuid: - see note on the V3 mapping and the examples.
In some cases, the system might not be known - only the value is known (e.g., a simple device that scans a barcode), or the system is known implicitly (simple exchange in a limited context, often driven by barcode readers). In this case, no useful matching may be performed using the value unless the system can be safely inferred by the context. Applications should provide a system wherever possible, as information sharing in a wider context is very likely to arise eventually, and values without a system are inherently limited in use. Whether or not the proper Identifier.system is known, the human-readable label for the Identifier.value typically appears in Identifier.type.text. e.g., 'BC provincial health number'.
In addition to the system (which provides a uniqueness scope) and the value, identifiers may also have a type, which may be useful when a system encounters identifiers with unknown system values. Note, however, that the type of an identifier is not a well-controlled vocabulary with wide variations in practice. The type deals only with general categories of identifiers and SHOULD not be used for codes that correspond 1..1 with the Identifier.system. Some identifiers may fall into multiple categories due to variations in common usage.
The assigner is used to indicate what registry/state/facility/etc. assigned the identifier. As a Reference, the assigner can include just a text description in the display.
Constraints
[%dt.constraints Identifier%] [%tx Identifier%]
Identifier is used in the following places: [%dtusage Identifier%]
Elements
- Identifier.use [0..1]: code The purpose of this identifier
- Identifier.type [0..1]: CodeableConcept A coded type for the identifier that can be used to determine which identifier to use for a specific purpose
- Identifier.system [0..1]: uri Establishes the namespace for the value - that is, an absolute URL that describes a set values that are unique.
- Identifier.value [0..1]: string The portion of the identifier typically relevant to the user and which is unique within the context of the system
- Identifier.period [0..1]: Period Time period during which identifier is/was valid for use
- Identifier.assigner [0..1]: Reference(Organization) Organization that issued/manages the identifier
Bindings
- Identifier.use:
IdentifierUse| strength: code list | reference: #identifier-use - Identifier.type:
IdentifierType
Modifiers
- Identifier.use: Is modifier
Invariants
- Identifier.value:
ident-1| warning | Identifier with no value has limited utility. If communicating that an identifier value has been suppressed or missing, the value element SHOULD be present with an extension indicating the missing semantic - e.g. data-absent-reason | XPath: exists(f:value)
Examples
- Identifier.system: http://www.acme.com/identifiers/patient
Requirements
- Identifier.use: Allows the appropriate identifier for a particular context of use to be selected from among a set of identifiers
- Identifier.type: Allows users to make use of identifiers when the identifier system is not known
- Identifier.system: There are many sets of identifiers. To perform matching of two identifiers, we need to know what set we're dealing with. The system identifies a particular set of unique identifiers
Comments
- Identifier.use: Applications can assume that an identifier is permanent unless it explicitly says that it is temporary
- Identifier.type: This element deals only with general categories of identifiers. It SHOULD not be used for codes that correspond 1..1 with the Identifier.system. Some identifiers may fall into multiple categories due to common usage. Where the system is known, a type is unnecessary because the type is always part of the system definition. However systems often need to handle identifiers where the system is not known. There is not a 1:1 relationship between type and system, since many different systems have the same type
- Identifier.system: Identifier.system is always case sensitive. The FHIR specification, terminology.hl7.org and HL7 affiliates (for identifiers specific to their jurisdiction) define identifier systems that SHALL be used for certain types of identifiers. Specific rules can be found here
- Identifier.value: If the value is a full URI, then the system SHALL be urn:ietf:rfc:3986. The value's primary purpose is computational mapping. As a result, it may be normalized for comparison purposes (e.g. removing non-significant whitespace, dashes, etc.) A value formatted for human display can be conveyed using the [[[http://hl7.org/fhir/StructureDefinition/rendered-value]]]). Identifier.value is to be treated as case sensitive unless knowledge of the Identifier.system allows the processer to be confident that non-case-sensitive processing is safe
- Identifier.assigner: The Identifier.assigner may omit the .reference element and only contain a .display element reflecting the name or other textual information about the assigning organization
Mappings
- Identifier.use: RIM Mapping: Role.code or implied by context
- Identifier.use: v2 Mapping: N/A
- Identifier.type: RIM Mapping: Role.code or implied by context
- Identifier.type: v2 Mapping: CX.5
- Identifier.system: RIM Mapping: II.root or Role.id.root
- Identifier.system: v2 Mapping: CX.4 / EI-2-4
- Identifier.system: ServD Mapping: ./IdentifierType
- Identifier.value: RIM Mapping: II.extension or II.root if system indicates OID or GUID (Or Role.id.extension or root)
- Identifier.value: v2 Mapping: CX.1 / EI.1
- Identifier.value: ServD Mapping: ./Value
- Identifier.period: RIM Mapping: Role.effectiveTime or implied by context
- Identifier.period: v2 Mapping: CX.7 + CX.8
- Identifier.period: ServD Mapping: ./StartDate and ./EndDate
- Identifier.assigner: RIM Mapping: II.assigningAuthorityName but note that this is an improper use by the definition of the field. Also Role.scoper
- Identifier.assigner: v2 Mapping: CX.4 / (CX.4,CX.9,CX.10)
- Identifier.assigner: ServD Mapping: ./IdentifierIssuingAuthority