R6 Ballot (1st Draft)

This page is part of the FHIR Specification v6.0.0-ballot1: Release 6 Ballot (1st Draft) (see Ballot Notes). The current version is 5.0.0. For a full list of available versions, see the Directory of published versions

2.1.28.0 Datatypes

Modeling and Methodology icon Work GroupMaturity Level: NormativeStandards Status: Partially Normative

Types Framework Cross Reference: Base Types | Datatypes | Resources | Patterns

The FHIR specification defines a set of datatypes that are used for the resource elements. There are five categories of datatypes:

  1. The base abstract types that provide the foundation for all types
  2. Simple / primitive types, which are single elements with a primitive value (below)
  3. General-purpose complex types, which are re-usable clusters of elements (below)
  4. MetaDatatypes: A set of types for use with metadata resources
  5. Special purpose datatypes - defined elsewhere in the specification for specific usages: Reference, Meta, Narrative, Extension, xhtml, ElementDefinition and Dosage.

This page describes the general-purpose datatypes (categories 1 and 2).

Datatypes Summary.

Legend: see Standards Status Colors

A limited set of these datatypes may appear in extensions. All datatypes (including primitives) may have extensions, but only the following datatypes may include Modifier Extensions:

PrimitiveTypeinstantActual value attribute of the datatypevalue : xs:dateTime 0..1timeActual value attribute of the datatypevalue : xs:time 0..1dateActual value attribute of the datatypevalue : xs:gYear|xs:gYearMonth|xs:date 0..1dateTimeActual value attribute of the datatypevalue : xs:gYear|xs:gYearMonth|xs:date|xs:dateTime 0..1decimalActual value attribute of the datatypevalue : xs:decimal|xs:double 0..1booleanActual value attribute of the datatypevalue : xs:boolean 0..1integerActual value attribute of the datatypevalue : xs:int 0..1stringActual value attribute of the datatypevalue : xs:string 0..1uriActual value attribute of the datatypevalue : xs:anyURI 0..1base64BinaryActual value attribute of the datatypevalue : xs:base64Binary 0..1codeidoidunsignedIntpositiveIntmarkdownurlcanonicaluuidinteger64Actual value attribute of the datatypevalue : xs:long 0..1

The following table describes the primitive types that are used in this specification. Primitive types are those that specialize PrimitiveType, with a value, and no additional elements as children (though, like all types, they have id and extensions). See also the Examples.

Primitive Types
FHIR Name Value Domain XML Representation JSON representation
base64Binary A stream of bytes, base64 encoded (RFC 4648 icon). base64Binary content does not include any whitespace or line feeds, but reading applications should ignore whitespace characters (per RFC 4648 icon) xs:base64Binary A JSON string - base64 content
Regex: (?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)? XML Definition JSON Definition
There is no specified upper limit to the size of a binary, but systems will have to impose some implementation based limit to the size they support. This should be clearly documented, though there is no computable way for this at this time
boolean true | false xs:boolean, except that 0 and 1 are not valid values JSON boolean (true or false)
Regex: true|false XML Definition JSON Definition
canonical A URI that refers to a resource by its canonical URL (resources with a url property). The canonical type differs from a uri in that it has special meaning in this specification, and in that it may have a version appended, separated by a vertical bar (|). Note that the type canonical is not used for the actual canonical URLs that are the target of these references, but for the URIs that refer to them, and may have the version suffix in them. Like other URIs, elements of type canonical may also have #fragment references. Unlike other URIs, canonical URLs are never relative - they are either absolute URIs, or fragment identifiers xs:anyURI A JSON string - a canonical URL
Regex: \S* XML Definition JSON Definition
code Indicates that the value is taken from a set of controlled strings defined elsewhere (see Using codes for further discussion). Technically, a code is restricted to a string which has at least one character and no leading or trailing whitespace, and where there is no whitespace other than single spaces in the contents xs:token JSON string
Regex: [^\s]+( [^\s]+)*
This datatype can be bound to a ValueSet
XML Definition JSON Definition
date A date, or partial date (e.g. just year or year + month) as used in human communication. The format is a subset of [ISO8601] icon: YYYY, YYYY-MM, or YYYY-MM-DD, e.g. 2018, 1973-06, or 1905-08-23. There SHALL be no timezone offset. Dates SHALL be valid dates. union of xs:date, xs:gYearMonth, xs:gYear A JSON string - a union of xs:date, xs:gYearMonth, xs:gYear
Regex: ([0-9]([0-9]([0-9][1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2][0-9]|3[0-1])
)?)?
XML Definition JSON Definition
dateTime A date, date-time or partial date (e.g. just year or year + month) as used in human communication. The format is a subset of [ISO8601] icon: YYYY, YYYY-MM, YYYY-MM-DD or YYYY-MM-DDThh:mm:ss+zz:zz, e.g. 2018, 1973-06, 1905-08-23, 2015-02-07T13:28:17-05:00 or 2017-01-01T00:00:00.000Z. If hours and minutes are specified, a timezone offset SHALL be populated. Actual timezone codes can be sent using the Timezone Code extension, if desired. Seconds must be provided due to schema type constraints but may be zero-filled and may be ignored at receiver discretion. Milliseconds are optionally allowed. Dates SHALL be valid dates. The time "24:00" is not allowed. Leap Seconds are allowed - see below union of xs:dateTime, xs:date, xs:gYearMonth, xs:gYear A JSON string - a union of xs:dateTime, xs:date, xs:gYearMonth, xs:gYear
Regex: ([0-9]([0-9]([0-9][1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2][0-9]|3[0-1])
(T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]{1,9})?)?)?(Z|(\+|-)((0[0-9]|1[0-3]):[0-
5][0-9]|14:00)?)?)?
XML Definition JSON Definition
decimal Rational numbers that have a decimal representation. Decimals in FHIR cannot have more than 18 digits and a decimal point. See below about the precision of the number union of xs:decimal and xs:double (see below for limitations) A JSON number (see below for limitations)
Regex: -?(0|[1-9][0-9]{0,17})(\.[0-9]{1,17})?([eE][+-]?[0-9]{1,9}})? XML Definition JSON Definition
id Any combination of upper- or lower-case ASCII letters ('A'..'Z', and 'a'..'z', numerals ('0'..'9'), '-' and '.', with a length limit of 64 characters. (This might be an integer, an un-prefixed OID, UUID or any other identifier pattern that meets these constraints.) xs:string JSON string
Regex: [A-Za-z0-9\-\.]{1,64} XML Definition JSON Definition
instant An instant in time in a format that is a subset of [ISO8601] icon: YYYY-MM-DDThh:mm:ss.sss+zz:zz (e.g. 2015-02-07T13:28:17.239+02:00 or 2017-01-01T00:00:00Z). The time SHALL specified at least to the second and SHALL include a timezone offset. Actual timezone codes can be sent using the [[[http://hl7.org/fhir/StructureDefinition/timezone extension]]], if desired. Note: This is intended for when precisely observed times are required (typically system logs etc.), and not human-reported times - for those, use date or dateTime (which can be as precise as instant, but is not required to be). instant is a more constrained dateTime xs:dateTime A JSON string - an xs:dateTime
Note: This type is for system times, not human times (see date and dateTime below).
Regex: ([0-9]([0-9]([0-9][1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])T(
[01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]{1,9})?(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]
|14:00))
XML Definition JSON Definition
integer A signed integer in the range −2,147,483,648..2,147,483,647 (32-bit; for larger values, use decimal) xs:int, except that leading 0 digits are not allowed JSON number (with no decimal point)
Regex: [0]|[-+]?[1-9][0-9]* XML Definition JSON Definition
integer64 A signed integer in the range -9,223,372,036,854,775,808 to +9,223,372,036,854,775,807 (64-bit).
This type is defined to allow for record/time counters that can get very large
xs:long, except that leading 0 digits are not allowed JSON String (due to issues with precision in floating point libraries)
Regex: [0]|[-+]?[1-9][0-9]* XML Definition JSON Definition
markdown A FHIR string (see below) that may contain markdown syntax for optional processing by a markdown presentation engine, in the GFM extension of CommonMark format (see below) xs:string JSON string
Regex: ^[\s\S]+$ (can't put size limit in the regex - too large) XML Definition JSON Definition
oid An OID represented as a URI (RFC 3001 icon); e.g. urn:oid:1.2.3.4.5 xs:anyURI JSON string - uri
Regex: urn:oid:[0-2](\.(0|[1-9][0-9]*))+ XML Definition JSON Definition
string A sequence of Unicode characters xs:string JSON String
Note that strings SHALL NOT exceed 1,048,576 (1024*1024) characters in size. Because UTF-8 characters can be expressed with more than one byte, the string size may be more than 1MB. Strings SHOULD not contain Unicode character points below 32, except for u0009 (horizontal tab), u000D (carriage return) and u000A (line feed). Leading and Trailing whitespace is allowed, but SHOULD be removed when using the XML format. Note: This means that a string that consists only of whitespace could be trimmed to nothing, which would be treated as an invalid element value. Therefore strings SHOULD always contain non-whitespace content
This datatype can be bound to a ValueSet
Regex: ^[\s\S]+$ (see notes below) XML Definition JSON Definition
positiveInt Any positive integer in the range 1..2,147,483,647 xs:positiveInteger JSON number
Regex: [1-9][0-9]* XML Definition JSON Definition
time A time during the day, in the format hh:mm:ss (a subset of [ISO8601] icon). There is no date specified. Seconds must be provided due to schema type constraints but may be zero-filled and may be ignored at receiver discretion. The time "24:00" SHALL NOT be used. A timezone offset SHALL NOT be present. Times can be converted to a Duration since midnight. xs:time A JSON string - an xs:time
Regex: ([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]{1,9})? XML Definition JSON Definition
unsignedInt Any non-negative integer in the range 0..2,147,483,647 xs:nonNegativeInteger JSON number
Regex: [0]|([1-9][0-9]*) XML Definition JSON Definition
uri A Uniform Resource Identifier Reference (RFC 3986 icon). Note: URIs are case sensitive. For UUID (urn:uuid:53fefa32-fcbb-4ff8-8a92-55ee120877b7) use all lowercase xs:anyURI A JSON string - a URI
Regex: \S* (This regex is very permissive, but URIs must be valid. Implementers are welcome to use more specific regex statements for a URI in specific contexts) XML Definition JSON Definition
URIs can be absolute or relative, and may have an optional fragment identifier
This datatype can be bound to a ValueSet
url A Uniform Resource Locator (RFC 1738 icon). Note URLs are accessed directly using the specified protocol. Common URL protocols are http{s}:, ftp:, mailto: and mllp:, though many others are defined xs:anyURI A JSON string - a URL
Regex: \S* XML Definition JSON Definition
uuid A UUID (aka GUID) represented as a URI (RFC 4122 icon); e.g. urn:uuid:c757873d-ec9a-4326-a141-556f43239520 xs:anyURI JSON string - uri
Regex: urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} XML Definition JSON Definition

Notes:

  • For all the types, the XML, JSON and Turtle representations of the primitive values are the same except for different escaping in XML and JSON
  • For string content, parsers and serializers MAY retain, escape or strip unescaped non-supported UNICODE characters. If the characters are retained, a subsequent application-layer process can then determine appropriate handling based on context.
  • For decimal values, the XML special values INF, -INF and NaN are not allowed, and JSON is restricted to the precision limits documented in XML schema for xs:double and xs:decimal icon
  • The precision of the decimal value has significance:
    • e.g. 0.010 is regarded as different to 0.01, and the original precision should be preserved
    • Implementations SHALL handle decimal values in ways that preserve and respect the precision of the value as represented for presentation purposes.
    • Implementations are not required to perform calculations with these numbers differently, though they may choose to do so (i.e. preserve significance).
    • See implementation comments for XML, JSON and RDF.
    • In object code, implementations that might meet this constraint are GMP implementations or equivalents to Java BigDecimal that implement arbitrary precision, or a combination of a (64 bit) floating point value with a precision field.
    • Note that large and/or highly precise values are extremely rare in medicine. One element where highly precise decimals may be encountered is the Location coordinates. Irrespective of this, the limits documented in XML Schema apply.
  • Boolean values can also be represented using coded values (such as HL7 V2 Table 0136). See Observation for one such use.
  • Issues with the specified regexes:
    • The regexes are provided to assist with tooling, but are informative, not normative. There are several issues with the regexes.
    • The string regex has problems with Unicode - specifically, it might or might not allow Unicode whitespace to some degree depending on Unicode support in the regex engine being used. The regexes [\r\n\t\x{0020}-\x{FFFF}]* or [\r\n\t\u0020-\uFFFF]* are better expressions of the constraints on string, but poorly supported (see Regex Tutorial icon for details). The string regex also applies to markdown as well. The regex does not enforce the length limit
    • The Unicode issues also apply to the regex for code.
    • The regexes should be qualified with start of string and end of string anchors based on the regex implementation used (e.g. caret '^' and dollar-sign '$' for JavaScript, POSIX, XML and XPath; '\A' and '\Z' for .NET, Java, Python and others; please verify these definitions with the regex implementation used).
    • The regexes may allow a broader set of values than are actually valid (e.g. leap years) so additional validation is always needed.
  • Leap second are allowed in the datetime, instant and time types. Note, though, that many systems and libraries do not support leap seconds. Applications reading times SHOULD accept and handle leap seconds gracefully, and applications producing them MAY choose to avoid encoding leap seconds.
  • About the id datatype:
    • Ids are case sensitive. UUIDs SHALL be sent using lowercase letters.
    • The ID type includes identifiers consistent with ISO 18232 icon, but also includes other identifier formats as well, and is not case insensitive like ISO 18232.
    • In a typical FHIR URL, like http://example.com/fhir/Patient/1234, the last part "1234" (highlighted in red) is the part that is an id datatype.
    • A full UUID is a uri, not an id. UUIDs in URIs SHALL also be represented in lowercase (urn:uuid:59bf0ef4-e89c-4628-9b51-12ae3fdbe22b).
  • About the uri, url and canonical datatypes:
    • They all contain URIs, but differ in how applications resolve the reference.
    • Although the url and canonical are specializations of uri, they are never substituted for each other.
    • They are all case sensitive for comparison purposes. Applications SHOULD not create URIs that only differ by case.
    • A general URI may be either a URL or a canonical URL or some other kind of URI.
  • About the markdown datatype:
    • Markdown is a string, and subject to the same rules (e.g. length limit, valid characters)
    • This specification requires and uses the GFM (Github Flavored Markdown) icon extensions on CommonMark icon format, with the exception of support for inline HTML which is not supported.
    • Processors SHALL treat embedded XML tags as string content, not as tags. This may be done by pre-processing and escaping any ">" characters preceding character content (">" becomes "\>") before processing the content or by using a markdown processor-specific flag that accomplishes the same effect. This means that HTML content cannot be embedded in markdown to influence rendering.
    • Systems are not required to have markdown support, so the content of a string should be readable without markdown processing, per markdown philosophy.
    • Converting an element that has the type string to markdown in a later version of this FHIR specification is considered a non-breaking change for elements with a single type. It is a breaking change for multi-type/choice elements because the type name is reflected in the element name. (Adding markdown as an additional choice to a multi-type element is not a breaking change). The impact of a lack of escaping on existing string data on safe rendering should be considered in evaluating changes from string to markdown - see next bullet.
    • WARNING: Because markdown renderers will interpret certain characters as formatting characters and strip them from the display, it is essential that systems transmitting plain string data in a markdown field take steps to appropriately escape the string to avoid loss of information when rendering for human display.

Implementation Note: A simple way to convert plain text to be safe as markdown is to prefix any of the characters *, &, #, [, <, >, and ` with a backslash (\). When presenting markdown as plain text, implementers may wish to reverse this transform.

All elements using these primitive types may have one or more of a value as described above, an internal identity (e.g. xml:id), and extensions. For an example, take an element of name "count" and type "integer".

XML

The value is represented in XML as an attribute named "value":

  <count value="2"/>

The full representation, with id, extensions and value:

  <count id="a1" value="2">
    <extension url="...">
      <valueXX.../>
    </extension>
  </count>

JSON

In JSON, for convenience, the value is represented as the property itself:

  "count" : 2

The full representation, with id, extensions and value, showing the id and extensions in the sibling property:

  "count" : 2
  "_count" : {
    "id" : "a1",
    "extension" : [{
      "url" : "...",
      "valueXXX" : "...."
    }]
  }

RDF

The value is represented in RDF as a relationship with the URI "http://hl7.org/fhir/value". Using the normal prefix, this becomes:

  fhir:Type.count [ fhir:value "2"^^xsd:integer ]

For the types date and DateTime, the type must be specified explicitly. For all other types, it is optional. The full representation, with id, extensions and value:

  fhir:Type.count [
    Element.id "a1";
    fhir:value "2"^^xsd:integer;
    Element.extension [
      fhir:Extension.url "..";
      fhir:Extension.valueXX...
    ]
  ]

For additional details, see the XML, JSON and Turtle format definitions. When the value is missing, and there are no extensions, the element is not represented at all. This means that in xml, attributes are never present with a length of 0 (value=""), and properties are never a 0 length string or null in JSON ("name" : "" is not valid). (note: there is one specific use of the null in the JSON representation).

According to XML schema, leading and trailing whitespace in the value attribute is ignored for the types boolean, integer, decimal, base64Binary, instant, uri, date, dateTime, oid, and uri. Note that this means that the schema aware XML libraries give different attribute values to non-schema aware libraries when reading the XML instances. For this reason, the value attribute for these types SHOULD not have leading and trailing spaces. String values should only have leading and trailing spaces if they are part of the content of the value. In JSON and Turtle whitespace in string values is always significant. Primitive types other than string SHALL NOT have leading or trailing whitespace.


In XML, these types are represented as XML Elements with child elements with the name of the defined elements of the type. The name of the element is defined where the type is used. In JSON, the datatype is represented by an object with properties named the same as the XML elements. Since the JSON representation is almost exactly the same, only the first example has an additional explicit JSON representation.

Complex datatypes may be "profiled". A Structure Definition or type "constraint" makes a set of rules about which elements SHALL have values and what the possible values are.

UML Diagrams of the Datatypes

DataTypeQuantityThe value of the measured amount. The value includes an implicit precision in the presentation of the valuevalue : decimal [0..1]How the value should be understood and represented - whether the actual value is greater or less than the stated value due to measurement issues; e.g. if the comparator is "<" , then the real value is < stated value (this element modifies the meaning of other elements)comparator : code [0..1] « How the Quantity should be understood and represented. (Strength=Required)QuantityComparator! »A human-readable form of the unitunit : string [0..1]The identification of the system that provides the coded form of the unitsystem : uri [0..1] « This element has or is affected by some invariantsC »A computer processable form of the unit in some unit representation systemcode : code [0..1] « This element has or is affected by some invariantsC »AgeDistanceDurationCountMoneyQuantitySimpleQuantityAttachmentIdentifies the type of the data in the attachment and allows a method to be chosen to interpret or render the data. Includes mime type parameters such as charset where appropriatecontentType : code [0..1] « The mime type of an attachment. Any valid mime type is allowed. (Strength=Required)MimeTypes! » « This element has or is affected by some invariantsC »The human language of the content. The value can be any valid value according to BCP 47language : code [0..1] « IETF language tag for a human language. (Strength=Required)AllLanguages! »The actual data of the attachment - a sequence of bytes, base64 encodeddata : base64Binary [0..1] « This element has or is affected by some invariantsC »A location where the data can be accessedurl : url [0..1]The number of bytes of data that make up this attachment (before base64 encoding, if that is done)size : integer64 [0..1]The calculated hash of the data using SHA-1. Represented using base64hash : base64Binary [0..1]A label or set of text to display in place of the datatitle : string [0..1]The date that the attachment was first createdcreation : dateTime [0..1]Height of the image in pixels (photo/video)height : positiveInt [0..1]Width of the image in pixels (photo/video)width : positiveInt [0..1]The number of frames in a photo. This is used with a multi-page fax, or an imaging acquisition context that takes multiple slices in a single image, or an animated gif. If there is more than one frame, this SHALL have a value in order to alert interface software that a multi-frame capable rendering widget is requiredframes : positiveInt [0..1]The duration of the recording in seconds - for audio and videoduration : decimal [0..1]The number of pages when printedpages : positiveInt [0..1]RangeThe low limit. The boundary is inclusivelow : Quantity(SimpleQuantity) [0..1] « This element has or is affected by some invariantsC »The high limit. The boundary is inclusivehigh : Quantity(SimpleQuantity) [0..1] « This element has or is affected by some invariantsC »PeriodThe start of the period. The boundary is inclusivestart : dateTime [0..1] « This element has or is affected by some invariantsC »The end of the period. If the end of the period is missing, it means no end was known or planned at the time the instance was created. The start may be in the past, and the end date in the future, which means that period is expected/planned to end at that timeend : dateTime [0..1] « This element has or is affected by some invariantsC »RatioThe value of the numeratornumerator : Quantity [0..1] « This element has or is affected by some invariantsC »The value of the denominatordenominator : Quantity(SimpleQuantity) [0..1] « This element has or is affected by some invariantsC »RatioRangeThe value of the low limit numeratorlowNumerator : Quantity(SimpleQuantity) [0..1] « This element has or is affected by some invariantsC »The value of the high limit numeratorhighNumerator : Quantity(SimpleQuantity) [0..1] « This element has or is affected by some invariantsC »The value of the denominatordenominator : Quantity(SimpleQuantity) [0..1] « This element has or is affected by some invariantsC »CodeableConceptA reference to a code defined by a terminology systemcoding : Coding [0..*]A human language representation of the concept as seen/selected/uttered by the user who entered the data and/or which represents the intended meaning of the usertext : string [0..1]CodingThe identification of the code system that defines the meaning of the symbol in the codesystem : uri [0..1]The version of the code system which was used when choosing this code. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured, and when the meaning is not guaranteed to be consistent, the version SHOULD be exchangedversion : string [0..1]A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination)code : code [0..1] « This element has or is affected by some invariantsC »A representation of the meaning of the code in the system, following the rules of the systemdisplay : string [0..1] « This element has or is affected by some invariantsC »Indicates that this coding was chosen by a user directly - e.g. off a pick list of available items (codes or displays)userSelected : boolean [0..1]AnnotationThe individual responsible for making the annotationauthor[x] : DataType [0..1] « Reference(Practitioner| PractitionerRole|Patient|RelatedPerson|Organization)|string »Indicates when this particular annotation was madetime : dateTime [0..1]The text of the annotation in markdown formattext : markdown [1..1]MoneyNumerical value (with implicit precision)value : decimal [0..1]ISO 4217 Currency Codecurrency : code [0..1] « A code indicating the currency, taken from ISO 4217. (Strength=Required)Currencies! »
DataTypeIdentifierThe purpose of this identifier (this element modifies the meaning of other elements)use : code [0..1] « Identifies the purpose for this identifier, if known . (Strength=Required)IdentifierUse! »A coded type for the identifier that can be used to determine which identifier to use for a specific purposetype : CodeableConcept [0..1] « A coded type for an identifier that can be used to determine which identifier to use for a specific purpose. (Strength=Extensible)IdentifierTypeCodes+ »Establishes the namespace for the value - that is, an absolute URL that describes a set values that are uniquesystem : uri [0..1]The portion of the identifier typically relevant to the user and which is unique within the context of the systemvalue : string [0..1] « This element has or is affected by some invariantsC »Time period during which identifier is/was valid for useperiod : Period [0..1]Organization that issued/manages the identifierassigner : Reference [0..1] « Organization »HumanNameIdentifies the purpose for this name (this element modifies the meaning of other elements)use : code [0..1] « The use of a human name. (Strength=Required)NameUse! »Specifies the entire name as it should be displayed e.g. on an application UI. This may be provided instead of or as well as the specific partstext : string [0..1]The part of a name that links to the genealogy. In some cultures (e.g. Eritrea) the family name of a son is the first name of his fatherfamily : string [0..1]Given namegiven : string [0..*]Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the start of the nameprefix : string [0..*]Part of the name that is acquired as a title due to academic, legal, employment or nobility status, etc. and that appears at the end of the namesuffix : string [0..*]Indicates the period of time when this name was valid for the named personperiod : Period [0..1]AddressThe purpose of this address (this element modifies the meaning of other elements)use : code [0..1] « The use of an address. (Strength=Required)AddressUse! »Distinguishes between physical addresses (those you can visit) and mailing addresses (e.g. PO Boxes and care-of addresses). Most addresses are bothtype : code [0..1] « The type of an address (physical / postal). (Strength=Required)AddressType! »Specifies the entire address as it should be displayed e.g. on a postal label. This may be provided instead of or as well as the specific partstext : string [0..1]This component contains the house number, apartment number, street name, street direction, P.O. Box number, delivery hints, and similar address informationline : string [0..*]The name of the city, town, suburb, village or other community or delivery centercity : string [0..1]The name of the administrative area (county)district : string [0..1]Sub-unit of a country with limited sovereignty in a federally organized country. A code may be used if codes are in common use (e.g. US 2 letter state codes)state : string [0..1]A postal code designating a region defined by the postal servicepostalCode : string [0..1]Country - a nation as commonly understood or generally acceptedcountry : string [0..1]Time period when address was/is in useperiod : Period [0..1]ContactPointTelecommunications form for contact point - what communications system is required to make use of the contactsystem : code [0..1] « Telecommunications form for contact point. (Strength=Required)ContactPointSystem! » « This element has or is affected by some invariantsC »The actual contact point details, in a form that is meaningful to the designated communication system (i.e. phone number or email address)value : string [0..1] « This element has or is affected by some invariantsC »Identifies the purpose for the contact point (this element modifies the meaning of other elements)use : code [0..1] « Use of contact point. (Strength=Required)ContactPointUse! »Specifies a preferred order in which to use a set of contacts. ContactPoints with lower rank values are more preferred than those with higher rank valuesrank : positiveInt [0..1]Time period when the contact point was/is in useperiod : Period [0..1]TimingIdentifies specific times when the event occursevent : dateTime [0..*]A code for the timing schedule (or just text in code.text). Some codes such as BID are ubiquitous, but many institutions define their own additional codes. If a code is provided, the code is understood to be a complete statement of whatever is specified in the structured timing data, and either the code or the data may be used to interpret the Timing, with the exception that .repeat.bounds still applies over the code (and is not contained in the code)code : CodeableConcept [0..1] « Code for a known / defined timing pattern. (Strength=Preferred)TimingAbbreviation? »RepeatEither a duration for the length of the timing schedule, a range of possible length, or outer bounds for start and/or end limits of the timing schedulebounds[x] : DataType [0..1] « Duration|Range|Period »A total count of the desired number of repetitions across the duration of the entire timing specification. If countMax is present, this element indicates the lower bound of the allowed range of count valuescount : positiveInt [0..1] « This element has or is affected by some invariantsC »If present, indicates that the count is a range - so to perform the action between [count] and [countMax] timescountMax : positiveInt [0..1] « This element has or is affected by some invariantsC »How long this thing happens for when it happens. If durationMax is present, this element indicates the lower bound of the allowed range of the durationduration : decimal [0..1] « This element has or is affected by some invariantsC »If present, indicates that the duration is a range - so to perform the action between [duration] and [durationMax] time lengthdurationMax : decimal [0..1] « This element has or is affected by some invariantsC »The units of time for the duration, in UCUM units Normal practice is to use the 'mo' code as a calendar month when calculating the next occurrencedurationUnit : code [0..1] « A unit of time (units from UCUM). (Strength=Required)UnitsOfTime! » « This element has or is affected by some invariantsC »The number of times to repeat the action within the specified period. If frequencyMax is present, this element indicates the lower bound of the allowed range of the frequencyfrequency : positiveInt [0..1]If present, indicates that the frequency is a range - so to repeat between [frequency] and [frequencyMax] times within the period or period rangefrequencyMax : positiveInt [0..1]Indicates the duration of time over which repetitions are to occur; e.g. to express "3 times per day", 3 would be the frequency and "1 day" would be the period. If periodMax is present, this element indicates the lower bound of the allowed range of the period lengthperiod : decimal [0..1] « This element has or is affected by some invariantsC »If present, indicates that the period is a range from [period] to [periodMax], allowing expressing concepts such as "do this once every 3-5 daysperiodMax : decimal [0..1] « This element has or is affected by some invariantsC »The units of time for the period in UCUM units Normal practice is to use the 'mo' code as a calendar month when calculating the next occurrenceperiodUnit : code [0..1] « A unit of time (units from UCUM). (Strength=Required)UnitsOfTime! » « This element has or is affected by some invariantsC »If one or more days of week is provided, then the action happens only on the specified day(s)dayOfWeek : code [0..*] « (Strength=Required)DaysOfWeek! »Specified time of day for action to take placetimeOfDay : time [0..*] « This element has or is affected by some invariantsC »An approximate time period during the day, potentially linked to an event of daily living that indicates when the action should occurwhen : code [0..*] « Real-world event relating to the schedule. (Strength=Required)EventTiming! » « This element has or is affected by some invariantsC »The number of minutes from the event. If the event code does not indicate whether the minutes is before or after the event, then the offset is assumed to be after the eventoffset : unsignedInt [0..1] « This element has or is affected by some invariantsC »SignatureAn indication of the reason that the entity signed this document. This may be explicitly included as part of the signature information and can be used when determining accountability for various actions concerning the documenttype : Coding [0..*] « An indication of the reason that an entity signed the object. (Strength=Preferred)SignatureTypeCodes? »When the digital signature was signedwhen : instant [0..1]A reference to an application-usable description of the identity that signed (e.g. the signature used their private key)who : Reference [0..1] « Practitioner|PractitionerRole|RelatedPerson| Patient|Device|Organization »A reference to an application-usable description of the identity that is represented by the signatureonBehalfOf : Reference [0..1] « Practitioner|PractitionerRole| RelatedPerson|Patient|Device|Organization »A mime type that indicates the technical format of the target resources signed by the signaturetargetFormat : code [0..1] « The mime type of an attachment. Any valid mime type is allowed. (Strength=Required)MimeTypes! »A mime type that indicates the technical format of the signature. Important mime types are application/signature+xml for X ML DigSig, application/jose for JWS, and image/* for a graphical image of a signature, etcsigFormat : code [0..1] « The mime type of an attachment. Any valid mime type is allowed. (Strength=Required)MimeTypes! »The base64 encoding of the Signature content. When signature is not recorded electronically this element would be emptydata : base64Binary [0..1]SampledDataThe base quantity that a measured value of zero represents. In addition, this provides the units of the entire measurement seriesorigin : Quantity(SimpleQuantity) [1..1]Amount of intervalUnits between samples, e.g. milliseconds for time-based samplinginterval : decimal [0..1] « This element has or is affected by some invariantsC »The measurement unit in which the sample interval is expressedintervalUnit : code [1..1] « Units of measure allowed for an element. (Strength=Required)UCUMCodes! »A correction factor that is applied to the sampled data points before they are added to the originfactor : decimal [0..1]The lower limit of detection of the measured points. This is needed if any of the data points have the value "L" (lower than detection limit)lowerLimit : decimal [0..1]The upper limit of detection of the measured points. This is needed if any of the data points have the value "U" (higher than detection limit)upperLimit : decimal [0..1]The number of sample points at each time point. If this value is greater than one, then the dimensions will be interlaced - all the sample points for a point in time will be recorded at oncedimensions : positiveInt [1..1]Reference to ConceptMap that defines the codes used in the datacodeMap : canonical [0..1] « ConceptMap »A series of data points which are decimal values separated by a single space (character u20). The units in which the offsets are expressed are found in intervalUnit. The absolute point at which the measurements begin SHALL be conveyed outside the scope of this datatype, e.g. Observation.effectiveDateTime for a timing offsetoffsets : string [0..1] « This element has or is affected by some invariantsC »A series of data points which are decimal values or codes separated by a single space (character u20). The special codes "E" (error), "L" (below detection limit) and "U" (above detection limit) are also defined for used in place of decimal valuesdata : string [0..1]BackboneTypeMay be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself) (this element modifies the meaning of other elements)modifierExtension : Extension [0..*]A set of rules that describe when the event is scheduledrepeat[0..1]
FHIR Infrastructure icon Work GroupMaturity Level: 5Standards Status: Normative

See also Examples, Detailed Descriptions, Mappings, Profiles, Extensions and R4 Conversions

This type is for containing or referencing attachments - additional data content defined in other formats. The most common use of this type is to include images or reports in some report format such as PDF. However, it can be used for any data that has a MIME type.

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. AttachmentNElementContent in a format defined elsewhere
+ Rule: If the Attachment has data, it SHALL have a contentType

Elements defined in Ancestors: id, extension
... contentTypeΣC0..1codeMime type of the content, with charset etc.
Binding: Mime Types (Required)
... languageΣ0..1codeHuman language of the content (BCP-47)
Binding: All Languages (Required)
Additional BindingsPurpose
Common LanguagesStarter Set

... dataC0..1base64BinaryData inline, base64ed