2nd DSTU Draft For Comment

This page is part of the FHIR Specification (v0.4.0: DSTU 2 Draft). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2

6.24 Resource NamingSystem - Content

This resource maintained by the FHIR Management Group Work Group

A curated namespace that issues unique symbols within that namespace for the identification of concepts, people, devices, etc. Represents a "System" used within the Identifier and Coding data types.

6.24.1 Scope and Usage

Defines a specific code system or identifier system

6.24.2 Resource Content

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. NamingSystem IDomainResourceSystem of unique identification
Can't have more than one preferred identifier for a type
Can only have replacedBy if namingsystem is retired
Root systems cannot have uuid or sid identifiers
... type 1..1codecodesystem | identifier | root
NamingSystemType (Required)
... name 1..1stringHuman-readable label
... date Σ1..1dateTimePublication Date(/time)
... status M1..1codedraft | active | retired
NamingSystemStatus (Required)
... country 0..1codeISO 3-char country code
Country (Required)
... category 0..1CodeableConceptdriver | provider | patient | bank
... responsible 0..1stringWho maintains system namespace?
... description 0..1stringWhat does namingsystem identify?
... usage 0..1stringHow/where is it used
... uniqueId 1..*ElementUnique identifiers used for system
.... type 1..1codeoid | uuid | uri | other
NamingSystemIdentifierType (Required)
.... value 1..1stringThe unique identifier
.... preferred 0..1booleanIs this the id that should be used for this type
.... period 0..1PeriodWhen is identifier valid?
... publisher Σ0..1stringName of the publisher (Organization or individual)
... contact Σ0..*ElementContact details of the publisher
.... name Σ0..1stringName of a individual to contact
.... telecom Σ0..*ContactPointContact details for individual or publisher
... replacedBy I0..1NamingSystemUse this instead

UML Diagram

NamingSystem (DomainResource)Indicates the purpose for the namingsystem - what kinds of things does it make unique?type : code 1..1 « Identifies the purpose of the namingsystemNamingSystemType »The descriptive name of this particular identifier type or code systemname : string 1..1The date (and optionally time) when the system was registered or publisheddate : dateTime 1..1Indicates whether the namingsystem is "ready for use" or not (this element modifies the meaning of other elements)status : code 1..1 « Indicates whether the namingsystem should be usedNamingSystemStatus »If present, indicates that the identifier or code system is principally intended for use or applies to entities within the specified country. For example, the country associated with a national code systemcountry : code 0..1 « Codes for identifying countriesCountry »Categorizes a namingsystem for easier search by grouping related namingsystemscategory : CodeableConcept 0..1The name of the organization that is responsible for issuing identifiers or codes for this namespace and ensuring their non-collisionresponsible : string 0..1Details about what the namespace identifies including scope, granularity, version labeling, etcdescription : string 0..1Provides guidance on the use of the namespace, including the handling of formatting characters, use of upper vs. lower case, etcusage : string 0..1The name of the individual or organization that published the naming systempublisher : string 0..1For namingsystems that are retired, indicates the namingsystem that should be used in their place (if any)replacedBy : Reference(NamingSystem) 0..1UniqueIdIdentifies the unique identifier scheme used for this particular identifiertype : code 1..1 « Identifies the style of unique identifier used to identify a namepaceNamingSystemIdentifierType »The string that should be sent over the wire to identify the code system or identifier systemvalue : string 1..1Indicates whether this identifier is the "preferred" identifier of this typepreferred : boolean 0..1Identifies the period of time over which this identifier is considered appropriate to refer to the namingsystem. Outside of this window, the identifier might be non-deterministicperiod : Period 0..1ContactThe name of an individual to contact regarding the naming systemname : string 0..1Contact details for individual (if a name was provided) or the publishertelecom : ContactPoint 0..*Indicates how the system may be identified when referenced in electronic exchangeuniqueId1..*Contacts to assist a user in finding and communicating with the publishercontact0..*

XML Template

<NamingSystem xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <type value="[code]"/><!-- 1..1 codesystem | identifier | root -->
 <name value="[string]"/><!-- 1..1 Human-readable label -->
 <date value="[dateTime]"/><!-- 1..1 Publication Date(/time) -->
 <status value="[code]"/><!-- 1..1 draft | active | retired -->
 <country value="[code]"/><!-- 0..1 ISO 3-char country code -->
 <category><!-- 0..1 CodeableConcept driver | provider | patient | bank --></category>
 <responsible value="[string]"/><!-- 0..1 Who maintains system namespace? -->
 <description value="[string]"/><!-- 0..1 What does namingsystem identify? -->
 <usage value="[string]"/><!-- 0..1 How/where is it used -->
 <uniqueId>  <!-- 1..* Unique identifiers used for system -->
  <type value="[code]"/><!-- 1..1 oid | uuid | uri | other -->
  <value value="[string]"/><!-- 1..1 The unique identifier -->
  <preferred value="[boolean]"/><!-- 0..1 Is this the id that should be used for this type -->
  <period><!-- 0..1 Period When is identifier valid? --></period>
 </uniqueId>
 <publisher value="[string]"/><!-- 0..1 Name of the publisher (Organization or individual) -->
 <contact>  <!-- 0..* Contact details of the publisher -->
  <name value="[string]"/><!-- 0..1 Name of a individual to contact -->
  <telecom><!-- 0..* ContactPoint Contact details for individual or publisher --></telecom>
 </contact>
 <replacedBy><!-- ?? 0..1 Reference(NamingSystem) Use this instead --></replacedBy>
</NamingSystem>

JSON Template

{doco
  "resourceType" : "NamingSystem",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "type" : "<code>", // R! codesystem | identifier | root
  "name" : "<string>", // R! Human-readable label
  "date" : "<dateTime>", // R! Publication Date(/time)
  "status" : "<code>", // R! draft | active | retired
  "country" : "<code>", // ISO 3-char country code
  "category" : { CodeableConcept }, // driver | provider | patient | bank
  "responsible" : "<string>", // Who maintains system namespace?
  "description" : "<string>", // What does namingsystem identify?
  "usage" : "<string>", // How/where is it used
  "uniqueId" : [{ // R! Unique identifiers used for system
    "type" : "<code>", // R! oid | uuid | uri | other
    "value" : "<string>", // R! The unique identifier
    "preferred" : <boolean>, // Is this the id that should be used for this type
    "period" : { Period } // When is identifier valid?
  }],
  "publisher" : "<string>", // Name of the publisher (Organization or individual)
  "contact" : [{ // Contact details of the publisher
    "name" : "<string>", // Name of a individual to contact
    "telecom" : [{ ContactPoint }] // Contact details for individual or publisher
  }],
  "replacedBy" : { Reference(NamingSystem) } // C? Use this instead
}

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. NamingSystem IDomainResourceSystem of unique identification
Can't have more than one preferred identifier for a type
Can only have replacedBy if namingsystem is retired
Root systems cannot have uuid or sid identifiers
... type 1..1codecodesystem | identifier | root
NamingSystemType (Required)
... name 1..1stringHuman-readable label
... date Σ1..1dateTimePublication Date(/time)
... status M1..1codedraft | active | retired
NamingSystemStatus (Required)
... country 0..1codeISO 3-char country code
Country (Required)
... category 0..1CodeableConceptdriver | provider | patient | bank
... responsible 0..1stringWho maintains system namespace?
... description 0..1stringWhat does namingsystem identify?
... usage 0..1stringHow/where is it used
... uniqueId 1..*ElementUnique identifiers used for system
.... type 1..1codeoid | uuid | uri | other
NamingSystemIdentifierType (Required)
.... value 1..1stringThe unique identifier
.... preferred 0..1booleanIs this the id that should be used for this type
.... period 0..1PeriodWhen is identifier valid?
... publisher Σ0..1stringName of the publisher (Organization or individual)
... contact Σ0..*ElementContact details of the publisher
.... name Σ0..1stringName of a individual to contact
.... telecom Σ0..*ContactPointContact details for individual or publisher
... replacedBy I0..1NamingSystemUse this instead

UML Diagram

NamingSystem (DomainResource)Indicates the purpose for the namingsystem - what kinds of things does it make unique?type : code 1..1 « Identifies the purpose of the namingsystemNamingSystemType »The descriptive name of this particular identifier type or code systemname : string 1..1The date (and optionally time) when the system was registered or publisheddate : dateTime 1..1Indicates whether the namingsystem is "ready for use" or not (this element modifies the meaning of other elements)status : code 1..1 « Indicates whether the namingsystem should be usedNamingSystemStatus »If present, indicates that the identifier or code system is principally intended for use or applies to entities within the specified country. For example, the country associated with a national code systemcountry : code 0..1 « Codes for identifying countriesCountry »Categorizes a namingsystem for easier search by grouping related namingsystemscategory : CodeableConcept 0..1The name of the organization that is responsible for issuing identifiers or codes for this namespace and ensuring their non-collisionresponsible : string 0..1Details about what the namespace identifies including scope, granularity, version labeling, etcdescription : string 0..1Provides guidance on the use of the namespace, including the handling of formatting characters, use of upper vs. lower case, etcusage : string 0..1The name of the individual or organization that published the naming systempublisher : string 0..1For namingsystems that are retired, indicates the namingsystem that should be used in their place (if any)replacedBy : Reference(NamingSystem) 0..1UniqueIdIdentifies the unique identifier scheme used for this particular identifiertype : code 1..1 « Identifies the style of unique identifier used to identify a namepaceNamingSystemIdentifierType »The string that should be sent over the wire to identify the code system or identifier systemvalue : string 1..1Indicates whether this identifier is the "preferred" identifier of this typepreferred : boolean 0..1Identifies the period of time over which this identifier is considered appropriate to refer to the namingsystem. Outside of this window, the identifier might be non-deterministicperiod : Period 0..1ContactThe name of an individual to contact regarding the naming systemname : string 0..1Contact details for individual (if a name was provided) or the publishertelecom : ContactPoint 0..*Indicates how the system may be identified when referenced in electronic exchangeuniqueId1..*Contacts to assist a user in finding and communicating with the publishercontact0..*

XML Template

<NamingSystem xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <type value="[code]"/><!-- 1..1 codesystem | identifier | root -->
 <name value="[string]"/><!-- 1..1 Human-readable label -->
 <date value="[dateTime]"/><!-- 1..1 Publication Date(/time) -->
 <status value="[code]"/><!-- 1..1 draft | active | retired -->
 <country value="[code]"/><!-- 0..1 ISO 3-char country code -->
 <category><!-- 0..1 CodeableConcept driver | provider | patient | bank --></category>
 <responsible value="[string]"/><!-- 0..1 Who maintains system namespace? -->
 <description value="[string]"/><!-- 0..1 What does namingsystem identify? -->
 <usage value="[string]"/><!-- 0..1 How/where is it used -->
 <uniqueId>  <!-- 1..* Unique identifiers used for system -->
  <type value="[code]"/><!-- 1..1 oid | uuid | uri | other -->
  <value value="[string]"/><!-- 1..1 The unique identifier -->
  <preferred value="[boolean]"/><!-- 0..1 Is this the id that should be used for this type -->
  <period><!-- 0..1 Period When is identifier valid? --></period>
 </uniqueId>
 <publisher value="[string]"/><!-- 0..1 Name of the publisher (Organization or individual) -->
 <contact>  <!-- 0..* Contact details of the publisher -->
  <name value="[string]"/><!-- 0..1 Name of a individual to contact -->
  <telecom><!-- 0..* ContactPoint Contact details for individual or publisher --></telecom>
 </contact>
 <replacedBy><!-- ?? 0..1 Reference(NamingSystem) Use this instead --></replacedBy>
</NamingSystem>

JSON Template

{doco
  "resourceType" : "NamingSystem",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "type" : "<code>", // R! codesystem | identifier | root
  "name" : "<string>", // R! Human-readable label
  "date" : "<dateTime>", // R! Publication Date(/time)
  "status" : "<code>", // R! draft | active | retired
  "country" : "<code>", // ISO 3-char country code
  "category" : { CodeableConcept }, // driver | provider | patient | bank
  "responsible" : "<string>", // Who maintains system namespace?
  "description" : "<string>", // What does namingsystem identify?
  "usage" : "<string>", // How/where is it used
  "uniqueId" : [{ // R! Unique identifiers used for system
    "type" : "<code>", // R! oid | uuid | uri | other
    "value" : "<string>", // R! The unique identifier
    "preferred" : <boolean>, // Is this the id that should be used for this type
    "period" : { Period } // When is identifier valid?
  }],
  "publisher" : "<string>", // Name of the publisher (Organization or individual)
  "contact" : [{ // Contact details of the publisher
    "name" : "<string>", // Name of a individual to contact
    "telecom" : [{ ContactPoint }] // Contact details for individual or publisher
  }],
  "replacedBy" : { Reference(NamingSystem) } // C? Use this instead
}

 

Alternate definitions: Schema/Schematron, Resource Profile (XML, JSON), Questionnaire

6.24.2.1 Terminology Bindings

PathDefinitionTypeReference
NamingSystem.type Identifies the purpose of the namingsystemFixedhttp://hl7.org/fhir/namingsystem-type
NamingSystem.status Indicates whether the namingsystem should be usedFixedhttp://hl7.org/fhir/namingsystem-status
NamingSystem.country Codes for identifying countriesFixedThe complete set of ISO country codes, as maintained form time to time
NamingSystem.category Identifies the general purpose of the namingsystem identifiers provided. E.g. Driver, Provider, Patient, Bank, etc.UnknownNo details provided yet
NamingSystem.uniqueId.type Identifies the style of unique identifier used to identify a namepaceFixedhttp://hl7.org/fhir/namingsystem-identifier-type

6.24.2.2 Constraints

  • nsd-1: Root systems cannot have uuid or sid identifiers (xpath: not(f:type/@value='root' and f:uniqueId/f:type=('uuid', 'ruid')))
  • nsd-2: Can't have more than one preferred identifier for a type (xpath: not(exists(for $type in distinct-values(f:uniqueId/f:type) return if (count(f:uniqueId[f:type/@value=$type and f:primary/@value='true'])>1) then $type else ())))
  • nsd-3: Can only have replacedBy if namingsystem is retired (xpath: not(f:replacedBy) or f:status/@value='retired')

6.24.2.3 Dealing with duplicate entries

In some cases, the same code or identifier system might accidentally get created more than once in a registry (perhaps because someone failed to check for an existing entry before adding a new one or knows the same concept with a different name. If this occurs, one of the system entries should be deleted and the remaining entry should have its information updated to include any identifiers present on the original entry (and possibly have its descriptive information modified to include additional information gleaned from the duplicate entry).