FHIR CI-Build

This is the Continuous Integration Build of FHIR (will be incorrect/inconsistent at times).
See the Directory of published versions icon

Orders and Observations icon Work Group Maturity Level: 0Trial Use Use Context: Any

The canonical URL for this profile is:

http://hl7.org/fhir/StructureDefinition/vitalsigns

FHIR Vital Signs Profile

Vital signs will be one of the first areas where there is a need for a single, global vocabulary to allow for ubiquitous access and re-use. Particularly with the use of wearables by patients where they want to/need to share information from those devices. To meet this need there must be a consistent vocabulary and a common syntax to achieve semantic interoperability. The FHIR Vital Signs profile sets minimum expectations for the Observation resource to record, search and fetch the vital signs associated with a patient that include the primary vital signs plus additional measurements such as height, weight and BMI. Support for basic mandatory searching of resources is defined below in the Quick Start section. When a FHIR implementation supports any of the vital signs listed below, the implementation SHALL conform to this profile for the vital sign observation.

These requirements were originally developed, balloted, and published in FHIR DSTU2 as part of the ONC sponsored Data Access Framework (DAF) icon project and were subsequently updated to define the minimum mandatory conformance requirements needed for accessing patient data as defined by the Argonaut icon pilot implementations.

Example Usage Scenarios:

The following are example usage scenarios for this profile:

  • Query for vital signs of a particular patient

The following data-elements are mandatory (i.e. data SHALL be present). These are presented below in a simple human-readable explanation. Profile-specific guidance and valid examples are provided as well. Note that many of the examples capture more than the minimum required. The links to the Profile Definitions provide the formal views of the profile content, descriptions, mappings and the StructureDefinitions in JSON and XML.

Each Observation must have:

  1. a status
  2. a category code of 'vital-signs'
  3. a "magic value" which tells you what is being measured
    • LOINC was chosen for the "magic values" because this aligns with the most countries, but it can be treated as simply a fixed core set of common codes to communicate basic vital signs. Implementers that need to use a different code system can still map accordingly.
  4. a patient
  5. a time indicating when the measurement was taken
  6. a numeric result value and standard UCUM unit which is taken from the Unit Code column in the table below.
    • note: if there is no numeric result then you have to supply a reason

Vital Signs Profile : Link to the formal definition views for the vital signs listed in this table.

  • The table below represents a minimum set of vital sign concepts, the required codes ("magic values"), and UCUM units of measure codes used for representing vital signs observations. These are extensible bindings and require that when a system supports any of these vital signs concepts, they must represent them using these codes. In addition, if you have a blood pressure observation, you must have both a systolic and a diastolic component, though one or both may have dataAbsentReason instead of a value.
  • The first column of this table links to the formal views of the individual profile for each vital sign.
  • If a more specific code or another code system is recorded or required, implementers must support both the values (LOINC) listed below and the translated code - e.g. method specific LOINC codes, SNOMED CT concepts, system specific (local) codes.
  • In addition the implementer may choose to provide alternate codes in addition to the standard codes defined here. The examples illustrate using other codes as translations.
  • Other profiles may make rules about which vital sign must be present or must be present as part of a panel or expand the list to include other vital signs. For implementers using LOINC, optional qualifier codes are provided in the notes below.

Profile Name "Magic Value" (LOINC) LOINC Name and Comments UCUM Unit Code Examples
Vital Signs Panel 85353-1 Vital signs, weight, height, head circumference, oxygen saturation and BMI panel - It represent a panel of vital signs listed in this table. All members of the panel are optional and note that querying for the panel may miss individual results that are not part of the actual panel. When used, Observation.valueQuantity is not present; instead, related links (with type=has-member) reference the vital signs observations (e.g. respiratory rate, heart rate, BP, etc.). This code replaces the deprecated code 8716-3 - Vital signs which is used in the Argonaut Data Query Implementation Guide. - Vital Signs Panel Example
Respiratory Rate 9279-1 Respiratory Rate /min Respiratory Rate Example
Heart rate 8867-4 Heart rate - To supplement this vital sign observation, 8887-2 - Heart rate device type MAY be included as an additional observation. /min Heart Rate Example
Oxygen saturation 2708-6 Oxygen saturation in Arterial blood - This code replaces 59408-5 Oxygen saturation in Arterial blood by Pulse oximetry which MAY be included as an additional observation code. % Oxygen Saturation Example
Body temperature 8310-5 Body temperature - To supplement this vital sign observation, 8327-9 - Body temperature measurement site (oral, forehead, rectal, etc.) and 8326-1 -Type of body temperature device MAY be used as additional observations. Cel, [degF] Body Temperature Example
Body height 8302-2 Body height - To supplement this vital sign observation, 8306-3 -Body height - lying (i.e., body length - typically used for infants) MAY be included as an additional observation code. cm, [in_i] Body height Example
Head circumference 9843-4 Head Occipital-frontal circumference cm, [in_i] Head Circumference Example
Body weight 29463-7 Body weight - To supplement this vital sign observation, 8352-7 - Clothing worn during measure and 8361-8 - Body position with respect to gravity MAY be included as additional observation codes. g, kg,[lb_av] Body Weight Example
Body mass index 39156-5 Body mass index (BMI) [Ratio] kg/m2 Body Mass Example
Blood pressure systolic and diastolic 85354-9 Blood pressure panel with all children optional - This is a component observation. It has no value in Observation.valueQuantity and contains at least one component (systolic and/or diastolic). To supplement this vital sign observation, 8478-0 - Mean blood pressure, 8357-6 - Blood pressure method, 41904-4 - Blood pressure measurement site, 8358-4 - Blood pressure device cuff size, 41901-0 - Type of blood pressure device MAY be used as additional observations. - Blood Pressure Example, Blood Pressure Example with missing Diastolic measurement
Systolic blood pressure 8480-6 Systolic blood pressure - Observation.component code for a blood pressure Observation mm[Hg] Blood Pressure Example
Diastolic blood pressure 8462-4 Diastolic blood pressure - Observation.component code for a blood pressure Observation mm[Hg] Blood Pressure Example

Below is an overview of required search and read operations

Clients

  • A client has connected to a server and fetched all of a patient's vital signs by searching by category using GET [base]/Observation?patient=[id]&category=vital-signs.
  • A client has connected to a server and fetched all of a patient's vital signs searching by category code and date range using GET [base]/Observation?patient=[id]&category=vital-signs&date=[date]{&date=[date]}.
  • A client has connected to a server and fetched any of a patient's vital signs by searching by one or more of the codes listed above using GET [base]/Observation?patient=[id]&code[vital sign LOINC{,LOINC2,LOINC3,...}].
  • A client SHOULD be capable of connecting to a server and fetching any of a patient's vital signs searching by one or more of the codes listed above and date range using GET [base]/Observation?patient=[id]&code=[LOINC{,LOINC2...}]vital-signs&date=[date]{&date=[date]}.

Servers

  • A server is capable of returning all of a patient's vital signs that it supports using GET [base]/Observation?patient=[id]&category=vital-signs.
  • A server is capable of returning all of a patient's vital signs queried by date range using GET [base]/Observation?patient=[id]&category=vital-signs&date=[date]{&date=[date]}.
  • A server is capable of returning any of a patient's vital signs queried by one or more of the codes listed above using GET [base]/Observation?patient=[id]&code[vital sign LOINC{,LOINC2,LOINC3,...}].
  • A server SHOULD be capable of returning any of a patient's vital signs queried by one or more of the codes listed above and date range using GET [base]/Observation?patient=[id]&code=[LOINC{,LOINC2...}]vital-signs&date=[date]{&date=[date]}.
  • A server has ensured that every API request includes a valid Authorization token, supplied via:Authorization: Bearer {server-specific-token-here}
  • A server has rejected any unauthorized requests by returning an HTTP 401 Unauthorized response code.

Example: Search for all Vital Signs measurements for a patient

GET [base]/Observation?patient=1186747&category=vital-signs

Support: Mandatory to support search by category code.

Implementation Notes: Search based on vital sign category code. This search fetches a bundle of all Observation resources with category 'vital-signs' for the specified patient (how to search by reference) and (how to search by token). The table above is the minimum set, additional vital signs are allowed.

Response Class:

  • (Status 200): successful operation
  • (Status 400): invalid parameter
  • (Status 401/4xx): unauthorized request
  • (Status 403): insufficient scope

Example: Search for all heart rate observations for a patient:

GET [base]/Observation?patient=1186747&code=8867-4

Example: Search for all heart rate, respiratory rate and blood pressure observations for a patient:

GET [base]/Observation?patient=1186747&code=8867-4,9279-1,85354-9

Support: Mandatory to support search by vital sign LOINC(s) listed above.

Implementation Notes: 1)Search based on vital sign LOINC code(s). This fetches a bundle of all Observation resources for specific vital sign(s) listed in the table above for the specified patient (how to search by reference) and [how to search by token)]. 2) The "code" parameter searches only Observation.code. For example when fetching blood pressures the resource will be only be returned when the search is based on 85354-9(Systolic and Diastolic BP). Using the component codes 8480-6(Systolic BP) or 8462-4 (Diastolic BP) will not return the resource . In order to search both Observation.code and Observation.component.code in a single query, use the "combo-code" search parameter.

Response Class:

  • (Status 200): successful operation
  • (Status 400): invalid parameter
  • (Status 401/4xx): unauthorized request
  • (Status 403): insufficient scope

Example: Find all the blood pressures after 2015-01-14

GET [base]/Observation?patient=555580&code=85354-9&date=ge2015-01-14

Support: Mandatory to support search by category code and date

Implementation Notes: Search based on vital sign category code and date. This fetches a bundle of all Observation resources with category 'vital-signs' for the specified patient for a specified time period (how to search by reference) and (how to search by token).

Response Class:

  • (Status 200): successful operation
  • (Status 400): invalid parameter
  • (Status 401/4xx): unauthorized request
  • (Status 403): insufficient scope

This profile was published on Sat, Aug 11, 2018 00:00+0000 as a draft by Health Level Seven International (Orders and Observations Workgroup).

Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.

This structure is derived from Observation.

Summary

"#### Complete Summary of the Mandatory Requirements

  1. One status in Observation.status which has a required binding to:

  2. A category in Observation.category which must have:

    • a fixed Observation.category.coding.system="http://terminology.hl7.org/CodeSystem/observation-category"
    • a fixed Observation.category.coding.code= "vital-signs"
  3. A code in Observation.code

    • a fixed Observation.code.coding.system= "http://loinc.org""
    • a LOINC code in Observation.code.coding.code which has an extensible binding to:
  4. One patient in Observation.subject

  5. A date and time in effectiveDateTime or effectivePeriod

  6. Either one Observation.value[x] or, if there is no value, one code in Observation.DataAbsentReason

    • if a vital sign measure then:
      • One numeric value in Observation.valueQuantity.value
      • a fixed Observation.valueQuantity.system="http://unitsofmeasure.org"
      • a UCUM unit code in Observation.valueQuantity.code which has a required binding to the Vital Signs Units value set.
    • Observation.DataAbsentReason is bound to Observation Value Absent Reason value set.
  7. When using a panel code to group component observations (Note: See the comments regarding blood pressure in the table above), one or more Observation.component.code each of which must have:

    • a fixed Observation.component.code.coding.system =""http://loinc.org""
  8. Either one Observation.component.valueQuantity or, if there is no value, one code in Observation.component.DataAbsentReason

  9. When using a panel code to group observations, one or more reference to Vitals Signs Observations in Observation.related.target

    • a fixed Observation.related.type= "has-member""

Mandatory: 9 elements (+1 nested mandatory element)
Must-Support: 16 elements
Fixed Value: 2 elements

Slices

This structure defines the following Slices:

  • The element Observation.category is sliced based on the values of value:coding.code, value:coding.system

This indicates the differences between this profile and the base Observation structure.

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation C icon0..*ObservationFHIR Vital Signs Profile
vs-2: If there is no component or hasMember element then either a value[x] or a data absent reason must be present.
... status S1..1coderegistered | preliminary | final | amended +
Binding: Observation Status (required)
... Slices for category S1..*CodeableConceptClassification of type of observation
Slice: Unordered, Open by value:coding.code, value:coding.system
.... category:VSCat S1..1CodeableConceptClassification of type of observation
..... coding S1..*CodingCode defined by a terminology system
...... system S1..1uriIdentity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
...... code S1..1codeSymbol in syntax defined by the system
Fixed Value: vital-signs
... code S1..1CodeableConceptCoded Responses from C-CDA Vital Sign Results
Binding: Vital Signs (extensible): This identifies the vital sign result type. Original source C-CDA R1.1 , HITSP Vital Sign Result Type.

... effective[x] SC icon1..1Often just a dateTime for Vital Signs
vs-1: if Observation.effective[x] is dateTime and has a value then that value shall be precise to the day
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... value[x] SC icon0..1Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, time, dateTime, Period, Attachment, Reference(MolecularSequence)Vital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
... dataAbsentReason SC icon0..1CodeableConceptWhy the result is missing
... hasMember 0..*Reference(QuestionnaireResponse | MolecularSequence | Vital Signs Profile)Used when reporting vital signs panel components
... derivedFrom 0..*Reference(DocumentReference | ImagingStudy | QuestionnaireResponse | MolecularSequence | Vital Signs Profile)Related resource from which the observation is made
... component SC icon0..*BackboneElementUsed when reporting systolic and diastolic blood pressure.
vs-3: If there is no a value a data absent reason must be present
.... code S1..1CodeableConceptType of component observation (code / type)
Binding: Vital Signs (extensible): This identifies the vital sign result type. Original source C-CDA R1.1 , HITSP Vital Sign Result Type.

.... value[x] SC icon0..1Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, time, dateTime, Period, Attachment, Reference(MolecularSequence)Vital Sign Value
.... valueQuantity S0..1QuantityVital Sign Value recorded with UCUM
Binding: Vital Signs Units (required): Commonly encountered UCUM units for recording Vital Signs.

.... dataAbsentReason SC icon0..1CodeableConceptWhy the component result is missing

doco Documentation for this format icon

This provides the consolidated view (aka snapshot) of the profile after applying the changes in this profile to the base Observation structure.

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation C icon0..*ObservationFHIR Vital Signs Profile
vs-2: If there is no component or hasMember element then either a value[x] or a data absent reason must be present.
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: All Languages (required): IETF language tag for a human language

... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
... identifier Σ0..*IdentifierBusiness Identifier for observation
... instantiates[x] ΣTU0..1canonical(ObservationDefinition), Reference(ObservationDefinition)Instantiates FHIR ObservationDefinition
... basedOn Σ0..*Reference(CarePlan | DeviceRequest | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest)Fulfills plan, proposal or order
... triggeredBy TU0..*BackboneElementTriggering observation(s)
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... observation Σ1..1Reference(Observation)Triggering observation
.... type Σ1..1codereflex | repeat | re-run
Binding: triggered Bytype (required): The type of TriggeredBy Observation.

.... reason 0..1stringReason that the observation was triggered
... partOf Σ0..*Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy | GenomicStudy)Part of referenced event
... status ?!SΣ1..1coderegistered | preliminary | final | amended +
Binding: Observation Status (required)
... Slices for category S1..*CodeableConceptClassification of type of observation
Slice: Unordered, Open by value:coding.code, value:coding.system
Binding: Observation Category Codes (preferred): Codes for high level observation categories.


.... category:VSCat S1..1CodeableConceptClassification of type of observation
Binding: Observation Category Codes (preferred): Codes for high level observation categories.


..... id 0..1idUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... coding SΣ1..*CodingCode defined by a terminology system
...... id 0..1idUnique id for inter-element referencing
...... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
...... system SΣ1..1uriIdentity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
...... version Σ0..1stringVersion of the system - if relevant
...... code SΣC icon1..1codeSymbol in syntax defined by the system
Fixed Value: vital-signs
...... display ΣC icon0..1stringRepresentation defined by the system
...... userSelected Σ0..1booleanIf this coding was chosen directly by the user
..... text Σ0..1stringPlain text representation of the concept
... code SΣC icon1..1CodeableConceptCoded Responses from C-CDA Vital Sign Results
Binding: Vital Signs (extensible): This identifies the vital sign result type. Original source C-CDA R1.1 , HITSP Vital Sign Result Type.

... subject SΣ1..1Reference(Patient)Who and/or what the observation is about
... focus ΣTU0..*Reference(Resource)What the observation is about, when it is not about the subject of record
... encounter Σ0..1Reference(Encounter)Healthcare event during which this observation is made
... effective[x] SΣC icon1..1Often just a dateTime for Vital Signs
vs-1: if Observation.effective[x] is dateTime and has a value then that value shall be precise to the day
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... issued Σ0..1instantDate/Time this version was made available
... performer Σ0..*Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson)Who is responsible for the observation
... value[x] SΣC icon0..1Vital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
.... valueQuantityQuantity
.... valueCodeableConceptCodeableConcept
.... valueStringstring
.... valueBooleanboolean
.... valueIntegerinteger
.... valueRangeRange
.... valueRatioRatio
.... valueSampledDataSampledData
.... valueTimetime
.... valueDateTimedateTime
.... valuePeriodPeriod
.... valueAttachmentAttachment
.... valueReferenceReference(MolecularSequence)
... dataAbsentReason SC icon0..1CodeableConceptWhy the result is missing
Binding: Data Absent Reason (extensible): Codes specifying why the result (Observation.value[x]) is missing.

... interpretation 0..*CodeableConceptHigh, low, normal, etc
Binding: Observation Interpretation Codes (extensible): Codes identifying interpretations of observations.


... note 0..*AnnotationComments about the observation
... bodySite C icon0..1CodeableConceptObserved body part
Binding: SNOMED CT Body Structures (example): SNOMED CT Body site concepts

... bodyStructure C iconTU0..1Reference(BodyStructure)Observed body structure
... method 0..1CodeableConceptHow it was done
Binding: Observation Methods (example): Methods for simple observations.

... specimen C icon0..1Reference(Specimen | Group)Specimen used for this observation
... device 0..1Reference(Device | DeviceMetric)A reference to the device that generates the measurements or the device settings for the device
... referenceRange C icon0..*BackboneElementProvides guide for interpretation
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... low C icon0..1SimpleQuantityLow Range, if relevant
.... high C icon0..1SimpleQuantityHigh Range, if relevant
.... normalValue TU0..1CodeableConceptNormal value, if relevant
Binding: Observation Reference Range Normal Value Codes (extensible): Codes identifying the normal value of the observation.

.... type TU0..1CodeableConceptReference range qualifier
Binding: Observation Reference Range Meaning Codes (preferred): Code for the meaning of a reference range.

.... appliesTo 0..*CodeableConceptReference range population
Binding: Observation Reference Range Applies To Codes (example): Codes identifying the population the reference range applies to.


.... age 0..1RangeApplicable age range, if relevant
.... text C icon0..1markdownText based reference range in an observation
... hasMember Σ0..*Reference(QuestionnaireResponse | MolecularSequence | Vital Signs Profile)Used when reporting vital signs panel components
... derivedFrom Σ0..*Reference(DocumentReference | ImagingStudy | QuestionnaireResponse | MolecularSequence | Vital Signs Profile)Related resource from which the observation is made
... component SΣC icon0..*BackboneElementUsed when reporting systolic and diastolic blood pressure.
vs-3: If there is no a value a data absent reason must be present
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... code SΣC icon1..1CodeableConceptType of component observation (code / type)
Binding: Vital Signs (extensible): This identifies the vital sign result type. Original source C-CDA R1.1 , HITSP Vital Sign Result Type.

.... Slices for value[x] SΣC icon0..1Vital Sign Value
Slice: Unordered, Open by type:$this
..... valueQuantityQuantity
..... valueCodeableConceptCodeableConcept
..... valueStringstring
..... valueBooleanboolean
..... valueIntegerinteger
..... valueRangeRange
..... valueRatioRatio
..... valueSampledDataSampledData
..... valueTimetime
..... valueDateTimedateTime
..... valuePeriodPeriod
..... valueAttachmentAttachment
..... valueReferenceReference(MolecularSequence)
..... value[x]:valueQuantity SΣ0..1QuantityVital Sign Value recorded with UCUM
Binding: Vital Signs Units (required): Commonly encountered UCUM units for recording Vital Signs.

.... dataAbsentReason SC icon0..1CodeableConceptWhy the component result is missing
Binding: Data Absent Reason (extensible): Codes specifying why the result (Observation.value[x]) is missing.

.... interpretation 0..*CodeableConceptHigh, low, normal, etc
Binding: Observation Interpretation Codes (extensible): Codes identifying interpretations of observations.


.... referenceRange 0..*See referenceRange (Observation)Provides guide for interpretation of component result

doco Documentation for this format icon
<!-- Observationvitalsigns -->doco

<Observation xmlns="http://hl7.org/fhir"
>
  <!-- from Element: extension -->
 <id value="[id]"/><!-- 0..1 Logical id of this artifact -->
 <meta><!-- I 0..1 Meta Metadata about the resource --></meta>
 <implicitRules value="[uri]"/><!-- I 0..1 A set of rules under which this content was created -->
 <language value="[code]"/><!-- I 0..1 Language of the resource content   -->
 <text><!-- I 0..1 Narrative 
     Text summary of the resource, for human interpretation --></text>
 <contained><!-- 0..* Resource Contained, inline Resources --></contained>
 <modifierExtension><!-- I 0..* Extension  Extensions that cannot be ignored  --></modifierExtension>
 <identifier><!-- I 0..* Identifier 
     Business Identifier for observation --></identifier>
 <instantiates[x]><!-- I 0..1 canonical|Reference(ObservationDefinition) 
     Instantiates FHIR ObservationDefinition --></instantiates[x]>
 <basedOn><!-- I 0..* Reference(CarePlan) Fulfills plan, proposal or order --></basedOn>
 <triggeredBy> I 0..* BackboneElement  <!-- I 0..* Triggering observation(s) -->
  <modifierExtension><!-- I 0..* Extension  Extensions that cannot be ignored even if unrecognized  --></modifierExtension>
  <observation><!-- I 1..1 Reference(Observation) 
      Triggering observation --></observation>
  <type value="[code]"/><!-- I 1..1 reflex | repeat | re-run   -->
  <reason value="[string]"/><!-- I 0..1 Reason that the observation was triggered -->
 </triggeredBy>
 <partOf><!-- I 0..* Reference(MedicationAdministration) Part of referenced event --></partOf>
 <status value="[code]"/><!-- I 1..1 registered | preliminary | final | amended +   -->
 <-- category sliced by value:coding.code, value:coding.system  in the specified orderOpen-->
 <category> I 1..1 CodeableConcept  <!-- I 1..1 Classification of  type of observation -->
  <coding> I 1..* Coding  <!-- I 1..* Code defined by a terminology system -->
   <system value="[uri]"/><!-- I 1..1 Identity of the terminology system -->
   <version value="[string]"/><!-- I 0..1 Version of the system - if relevant -->
   <code value="[code]"/><!-- I 1..1 Symbol in syntax defined by the system -->
   <display value="[string]"/><!-- I 0..1 Representation defined by the system -->
   <userSelected value="[boolean]"/><!-- I 0..1 If this coding was chosen directly by the user -->
  </coding>
  <text value="[string]"/><!-- I 0..1 Plain text representation of the concept -->
 </category>
 <code><!-- I 1..1 CodeableConcept Coded Responses from C-CDA Vital Sign Results   --></code>
 <subject><!-- I 1..1 Reference(Patient) 
     Who and/or what the observation is about --></subject>
 <focus><!-- I 0..* Reference(Resource) 
     What the observation is about, when it is not about the subject of record --></focus>
 <encounter><!-- I 0..1 Reference(Encounter) 
     Healthcare event during which this observation is made --></encounter>
 <effective[x]><!-- I 1..1 dateTime|Period 
     Often just a dateTime for Vital Signs --></effective[x]>
 <issued value="[instant]"/><!-- I 0..1 Date/Time this version was made available -->
 <performer><!-- I 0..* Reference(Practitioner) 
     Who is responsible for the observation --></performer>
 <value[x]><!-- I 0..1 Quantity|CodeableConcept|string|boolean|integer|
   Range|Ratio|SampledData|time|dateTime|Period|Attachment|Reference(MolecularSequence) 
     Vital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept. --></value[x]>
 <dataAbsentReason><!-- I 0..1 CodeableConcept Why the result is missing   --></dataAbsentReason>
 <interpretation><!-- I 0..* CodeableConcept High, low, normal, etc   --></interpretation>
 <note><!-- I 0..* Annotation Comments about the observation --></note>
 <bodySite><!-- I 0..1 CodeableConcept Observed body part   --></bodySite>
 <bodyStructure><!-- I 0..1 Reference(BodyStructure) Observed body structure --></bodyStructure>
 <method><!-- I 0..1 CodeableConcept How it was done   --></method>
 <specimen><!-- I 0..1 Reference(Specimen) Specimen used for this observation --></specimen>
 <device><!-- I 0..1 Reference(Device) 
     A reference to the device that generates the measurements or the device settings for the device --></device>
 <referenceRange> I 0..* BackboneElement  <!-- I 0..* Provides guide for interpretation -->
  <modifierExtension><!-- I 0..* Extension  Extensions that cannot be ignored even if unrecognized  --></modifierExtension>
  <low><!-- I 0..1 Quantity 
      Low Range, if relevant --></low>
  <high><!-- I 0..1 Quantity 
      High Range, if relevant --></high>
  <normalValue><!-- I 0..1 CodeableConcept Normal value, if relevant   --></normalValue>
  <type><!-- I 0..1 CodeableConcept Reference range qualifier   --></type>
  <appliesTo><!-- I 0..* CodeableConcept Reference range population   --></appliesTo>
  <age><!-- I 0..1 Range 
      Applicable age range, if relevant --></age>
  <text value="[markdown]"/><!-- I 0..1 Text based reference range in an observation -->
 </referenceRange>
 <hasMember><!-- I 0..* Reference(QuestionnaireResponse) 
     Used when reporting vital signs panel components --></hasMember>
 <derivedFrom><!-- I 0..* Reference(DocumentReference) 
     Related resource from which the observation is made --></derivedFrom>
 <component> I 0..* BackboneElement  <!-- I 0..* Used when reporting systolic and diastolic blood pressure. -->
  <modifierExtension><!-- I 0..* Extension  Extensions that cannot be ignored even if unrecognized  --></modifierExtension>
  <code><!-- I 1..1 CodeableConcept Type of component observation (code / type)   --></code>
  <-- value[x] sliced by type:$this  in the specified orderOpen-->
  <valueQuantity><!-- I 0..1 Quantity Vital Sign Value recorded with UCUM   --></valueQuantity>
  <dataAbsentReason><!-- I 0..1 CodeableConcept Why the component result is missing   --></dataAbsentReason>
  <interpretation><!-- I 0..* CodeableConcept High, low, normal, etc   --></interpretation>
  <referenceRange><!-- See http://hl7.org/fhir/StructureDefinition/Observation#Observation.referenceRange  Provides guide for interpretation of component result --></referenceRange>
 </component>
</Observation>
{ // Observationvitalsigns
  // from Element: extension
    "meta" : { Meta }, // IMetadata about the resource
    "implicitRules" : "<uri>", // IA set of rules under which this content was created
    "language" : "<code>", // ILanguage of the resource content
    "text" : { Narrative }, // IText summary of the resource, for human interpretation
    "contained" : [{ Resource }], //Contained, inline Resources
    "modifierExtension" : [{ Extension }], // IExtensions that cannot be ignored
    "identifier" : [{ Identifier }], // IBusiness Identifier for observation
  // value[x]: Instantiates FHIR ObservationDefinition. One of these 2:
    "instantiatesCanonical" : "<canonical>", // IInstantiates FHIR ObservationDefinition
    "instantiatesReference" : { Reference(ObservationDefinition) }, // IInstantiates FHIR ObservationDefinition
    "basedOn" : [{ Reference(CarePlan) }], // IFulfills plan, proposal or order
    "triggeredBy" : [{ BackboneElement }], // ITriggering observation(s)
    "partOf" : [{ Reference(MedicationAdministration) }], // IPart of referenced event
    "status" : "<code>", // I R! registered | preliminary | final | amended +
    "category" : [ //  sliced by value:coding.code, value:coding.system  in the specified order, Open 
      { // Classification of  type of observation // I R! 
        // from Element: extension
        "extension" : [ //  sliced by value:url  in the specified order, Open ]
        "coding" : [{ Coding }], // I R! Code defined by a terminology system
        "text" : "<string>" // IPlain text representation of the concept
      }
    ],
    "code" : { CodeableConcept }, // I R! Coded Responses from C-CDA Vital Sign Results
    "subject" : { Reference(Patient) }, // I R! Who and/or what the observation is about
    "focus" : [{ Reference(Resource) }], // IWhat the observation is about, when it is not about the subject of record
    "encounter" : { Reference(Encounter) }, // IHealthcare event during which this observation is made
  // value[x]: Often just a dateTime for Vital Signs. One of these 2:
    "effectiveDateTime" : "<dateTime>", // I R! Often just a dateTime for Vital Signs
    "effectivePeriod" : { Period }, // I R! Often just a dateTime for Vital Signs
    "issued" : "<instant>", // IDate/Time this version was made available
    "performer" : [{ Reference(Practitioner) }], // IWho is responsible for the observation
  // value[x]: Vital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.. One of these 13:
    "valueQuantity" : { Quantity }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueCodeableConcept" : { CodeableConcept }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueString" : "<string>", // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueBoolean" : <boolean>, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueInteger" : <integer>, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueRange" : { Range }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueRatio" : { Ratio }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueSampledData" : { SampledData }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueTime" : "<time>", // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueDateTime" : "<dateTime>", // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valuePeriod" : { Period }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueAttachment" : { Attachment }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueReference" : { Reference(MolecularSequence) }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "dataAbsentReason" : { CodeableConcept }, // IWhy the result is missing
    "interpretation" : [{ CodeableConcept }], // IHigh, low, normal, etc
    "note" : [{ Annotation }], // IComments about the observation
    "bodySite" : { CodeableConcept }, // IObserved body part
    "bodyStructure" : { Reference(BodyStructure) }, // IObserved body structure
    "method" : { CodeableConcept }, // IHow it was done
    "specimen" : { Reference(Specimen) }, // ISpecimen used for this observation
    "device" : { Reference(Device) }, // IA reference to the device that generates the measurements or the device settings for the device
    "referenceRange" : [{ BackboneElement }], // IProvides guide for interpretation
    "hasMember" : [{ Reference(QuestionnaireResponse) }], // IUsed when reporting vital signs panel components
    "derivedFrom" : [{ Reference(DocumentReference) }], // IRelated resource from which the observation is made
    "component" : [{ BackboneElement }], // IUsed when reporting systolic and diastolic blood pressure.
  }

This structure is derived from Observation.

Summary

"#### Complete Summary of the Mandatory Requirements

  1. One status in Observation.status which has a required binding to:

  2. A category in Observation.category which must have:

    • a fixed Observation.category.coding.system="http://terminology.hl7.org/CodeSystem/observation-category"
    • a fixed Observation.category.coding.code= "vital-signs"
  3. A code in Observation.code

    • a fixed Observation.code.coding.system= "http://loinc.org""
    • a LOINC code in Observation.code.coding.code which has an extensible binding to:
  4. One patient in Observation.subject

  5. A date and time in effectiveDateTime or effectivePeriod

  6. Either one Observation.value[x] or, if there is no value, one code in Observation.DataAbsentReason

    • if a vital sign measure then:
      • One numeric value in Observation.valueQuantity.value
      • a fixed Observation.valueQuantity.system="http://unitsofmeasure.org"
      • a UCUM unit code in Observation.valueQuantity.code which has a required binding to the Vital Signs Units value set.
    • Observation.DataAbsentReason is bound to Observation Value Absent Reason value set.
  7. When using a panel code to group component observations (Note: See the comments regarding blood pressure in the table above), one or more Observation.component.code each of which must have:

    • a fixed Observation.component.code.coding.system =""http://loinc.org""
  8. Either one Observation.component.valueQuantity or, if there is no value, one code in Observation.component.DataAbsentReason

  9. When using a panel code to group observations, one or more reference to Vitals Signs Observations in Observation.related.target

    • a fixed Observation.related.type= "has-member""

Mandatory: 9 elements (+1 nested mandatory element)
Must-Support: 16 elements
Fixed Value: 2 elements

Slices

This structure defines the following Slices:

  • The element Observation.category is sliced based on the values of value:coding.code, value:coding.system

Differential View

This indicates the differences between this profile and the base Observation structure.

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation C icon0..*ObservationFHIR Vital Signs Profile
vs-2: If there is no component or hasMember element then either a value[x] or a data absent reason must be present.
... status S1..1coderegistered | preliminary | final | amended +
Binding: Observation Status (required)
... Slices for category S1..*CodeableConceptClassification of type of observation
Slice: Unordered, Open by value:coding.code, value:coding.system
.... category:VSCat S1..1CodeableConceptClassification of type of observation
..... coding S1..*CodingCode defined by a terminology system
...... system S1..1uriIdentity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
...... code S1..1codeSymbol in syntax defined by the system
Fixed Value: vital-signs
... code S1..1CodeableConceptCoded Responses from C-CDA Vital Sign Results
Binding: Vital Signs (extensible): This identifies the vital sign result type. Original source C-CDA R1.1 , HITSP Vital Sign Result Type.

... effective[x] SC icon1..1Often just a dateTime for Vital Signs
vs-1: if Observation.effective[x] is dateTime and has a value then that value shall be precise to the day
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... value[x] SC icon0..1Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, time, dateTime, Period, Attachment, Reference(MolecularSequence)Vital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
... dataAbsentReason SC icon0..1CodeableConceptWhy the result is missing
... hasMember 0..*Reference(QuestionnaireResponse | MolecularSequence | Vital Signs Profile)Used when reporting vital signs panel components
... derivedFrom 0..*Reference(DocumentReference | ImagingStudy | QuestionnaireResponse | MolecularSequence | Vital Signs Profile)Related resource from which the observation is made
... component SC icon0..*BackboneElementUsed when reporting systolic and diastolic blood pressure.
vs-3: If there is no a value a data absent reason must be present
.... code S1..1CodeableConceptType of component observation (code / type)
Binding: Vital Signs (extensible): This identifies the vital sign result type. Original source C-CDA R1.1 , HITSP Vital Sign Result Type.

.... value[x] SC icon0..1Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, time, dateTime, Period, Attachment, Reference(MolecularSequence)Vital Sign Value
.... valueQuantity S0..1QuantityVital Sign Value recorded with UCUM
Binding: Vital Signs Units (required): Commonly encountered UCUM units for recording Vital Signs.

.... dataAbsentReason SC icon0..1CodeableConceptWhy the component result is missing

doco Documentation for this format icon

Snapshot View

This provides the consolidated view (aka snapshot) of the profile after applying the changes in this profile to the base Observation structure.

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation C icon0..*ObservationFHIR Vital Signs Profile
vs-2: If there is no component or hasMember element then either a value[x] or a data absent reason must be present.
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: All Languages (required): IETF language tag for a human language

... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
... identifier Σ0..*IdentifierBusiness Identifier for observation
... instantiates[x] ΣTU0..1canonical(ObservationDefinition), Reference(ObservationDefinition)Instantiates FHIR ObservationDefinition
... basedOn Σ0..*Reference(CarePlan | DeviceRequest | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest)Fulfills plan, proposal or order
... triggeredBy TU0..*BackboneElementTriggering observation(s)
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... observation Σ1..1Reference(Observation)Triggering observation
.... type Σ1..1codereflex | repeat | re-run
Binding: triggered Bytype (required): The type of TriggeredBy Observation.

.... reason 0..1stringReason that the observation was triggered
... partOf Σ0..*Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy | GenomicStudy)Part of referenced event
... status ?!SΣ1..1coderegistered | preliminary | final | amended +
Binding: Observation Status (required)
... Slices for category S1..*CodeableConceptClassification of type of observation
Slice: Unordered, Open by value:coding.code, value:coding.system
Binding: Observation Category Codes (preferred): Codes for high level observation categories.


.... category:VSCat S1..1CodeableConceptClassification of type of observation
Binding: Observation Category Codes (preferred): Codes for high level observation categories.


..... id 0..1idUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... coding SΣ1..*CodingCode defined by a terminology system
...... id 0..1idUnique id for inter-element referencing
...... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
...... system SΣ1..1uriIdentity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
...... version Σ0..1stringVersion of the system - if relevant
...... code SΣC icon1..1codeSymbol in syntax defined by the system
Fixed Value: vital-signs
...... display ΣC icon0..1stringRepresentation defined by the system
...... userSelected Σ0..1booleanIf this coding was chosen directly by the user
..... text Σ0..1stringPlain text representation of the concept
... code SΣC icon1..1CodeableConceptCoded Responses from C-CDA Vital Sign Results
Binding: Vital Signs (extensible): This identifies the vital sign result type. Original source C-CDA R1.1 , HITSP Vital Sign Result Type.

... subject SΣ1..1Reference(Patient)Who and/or what the observation is about
... focus ΣTU0..*Reference(Resource)What the observation is about, when it is not about the subject of record
... encounter Σ0..1Reference(Encounter)Healthcare event during which this observation is made
... effective[x] SΣC icon1..1Often just a dateTime for Vital Signs
vs-1: if Observation.effective[x] is dateTime and has a value then that value shall be precise to the day
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... issued Σ0..1instantDate/Time this version was made available
... performer Σ0..*Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson)Who is responsible for the observation
... value[x] SΣC icon0..1Vital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
.... valueQuantityQuantity
.... valueCodeableConceptCodeableConcept
.... valueStringstring
.... valueBooleanboolean
.... valueIntegerinteger
.... valueRangeRange
.... valueRatioRatio
.... valueSampledDataSampledData
.... valueTimetime
.... valueDateTimedateTime
.... valuePeriodPeriod
.... valueAttachmentAttachment
.... valueReferenceReference(MolecularSequence)
... dataAbsentReason SC icon0..1CodeableConceptWhy the result is missing
Binding: Data Absent Reason (extensible): Codes specifying why the result (Observation.value[x]) is missing.

... interpretation 0..*CodeableConceptHigh, low, normal, etc
Binding: Observation Interpretation Codes (extensible): Codes identifying interpretations of observations.


... note 0..*AnnotationComments about the observation
... bodySite C icon0..1CodeableConceptObserved body part
Binding: SNOMED CT Body Structures (example): SNOMED CT Body site concepts

... bodyStructure C iconTU0..1Reference(BodyStructure)Observed body structure
... method 0..1CodeableConceptHow it was done
Binding: Observation Methods (example): Methods for simple observations.

... specimen C icon0..1Reference(Specimen | Group)Specimen used for this observation
... device 0..1Reference(Device | DeviceMetric)A reference to the device that generates the measurements or the device settings for the device
... referenceRange C icon0..*BackboneElementProvides guide for interpretation
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... low C icon0..1SimpleQuantityLow Range, if relevant
.... high C icon0..1SimpleQuantityHigh Range, if relevant
.... normalValue TU0..1CodeableConceptNormal value, if relevant
Binding: Observation Reference Range Normal Value Codes (extensible): Codes identifying the normal value of the observation.

.... type TU0..1CodeableConceptReference range qualifier
Binding: Observation Reference Range Meaning Codes (preferred): Code for the meaning of a reference range.

.... appliesTo 0..*CodeableConceptReference range population
Binding: Observation Reference Range Applies To Codes (example): Codes identifying the population the reference range applies to.


.... age 0..1RangeApplicable age range, if relevant
.... text C icon0..1markdownText based reference range in an observation
... hasMember Σ0..*Reference(QuestionnaireResponse | MolecularSequence | Vital Signs Profile)Used when reporting vital signs panel components
... derivedFrom Σ0..*Reference(DocumentReference | ImagingStudy | QuestionnaireResponse | MolecularSequence | Vital Signs Profile)Related resource from which the observation is made
... component SΣC icon0..*BackboneElementUsed when reporting systolic and diastolic blood pressure.
vs-3: If there is no a value a data absent reason must be present
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... code SΣC icon1..1CodeableConceptType of component observation (code / type)
Binding: Vital Signs (extensible): This identifies the vital sign result type. Original source C-CDA R1.1 , HITSP Vital Sign Result Type.

.... Slices for value[x] SΣC icon0..1Vital Sign Value
Slice: Unordered, Open by type:$this
..... valueQuantityQuantity
..... valueCodeableConceptCodeableConcept
..... valueStringstring
..... valueBooleanboolean
..... valueIntegerinteger
..... valueRangeRange
..... valueRatioRatio
..... valueSampledDataSampledData
..... valueTimetime
..... valueDateTimedateTime
..... valuePeriodPeriod
..... valueAttachmentAttachment
..... valueReferenceReference(MolecularSequence)
..... value[x]:valueQuantity SΣ0..1QuantityVital Sign Value recorded with UCUM
Binding: Vital Signs Units (required): Commonly encountered UCUM units for recording Vital Signs.

.... dataAbsentReason SC icon0..1CodeableConceptWhy the component result is missing
Binding: Data Absent Reason (extensible): Codes specifying why the result (Observation.value[x]) is missing.

.... interpretation 0..*CodeableConceptHigh, low, normal, etc
Binding: Observation Interpretation Codes (extensible): Codes identifying interpretations of observations.


.... referenceRange 0..*See referenceRange (Observation)Provides guide for interpretation of component result

doco Documentation for this format icon

XML Template

<!-- Observationvitalsigns -->doco

<Observation xmlns="http://hl7.org/fhir"
>
  <!-- from Element: extension -->
 <id value="[id]"/><!-- 0..1 Logical id of this artifact -->
 <meta><!-- I 0..1 Meta Metadata about the resource --></meta>
 <implicitRules value="[uri]"/><!-- I 0..1 A set of rules under which this content was created -->
 <language value="[code]"/><!-- I 0..1 Language of the resource content   -->
 <text><!-- I 0..1 Narrative 
     Text summary of the resource, for human interpretation --></text>
 <contained><!-- 0..* Resource Contained, inline Resources --></contained>
 <modifierExtension><!-- I 0..* Extension  Extensions that cannot be ignored  --></modifierExtension>
 <identifier><!-- I 0..* Identifier 
     Business Identifier for observation --></identifier>
 <instantiates[x]><!-- I 0..1 canonical|Reference(ObservationDefinition) 
     Instantiates FHIR ObservationDefinition --></instantiates[x]>
 <basedOn><!-- I 0..* Reference(CarePlan) Fulfills plan, proposal or order --></basedOn>
 <triggeredBy> I 0..* BackboneElement  <!-- I 0..* Triggering observation(s) -->
  <modifierExtension><!-- I 0..* Extension  Extensions that cannot be ignored even if unrecognized  --></modifierExtension>
  <observation><!-- I 1..1 Reference(Observation) 
      Triggering observation --></observation>
  <type value="[code]"/><!-- I 1..1 reflex | repeat | re-run   -->
  <reason value="[string]"/><!-- I 0..1 Reason that the observation was triggered -->
 </triggeredBy>
 <partOf><!-- I 0..* Reference(MedicationAdministration) Part of referenced event --></partOf>
 <status value="[code]"/><!-- I 1..1 registered | preliminary | final | amended +   -->
 <-- category sliced by value:coding.code, value:coding.system  in the specified orderOpen-->
 <category> I 1..1 CodeableConcept  <!-- I 1..1 Classification of  type of observation -->
  <coding> I 1..* Coding  <!-- I 1..* Code defined by a terminology system -->
   <system value="[uri]"/><!-- I 1..1 Identity of the terminology system -->
   <version value="[string]"/><!-- I 0..1 Version of the system - if relevant -->
   <code value="[code]"/><!-- I 1..1 Symbol in syntax defined by the system -->
   <display value="[string]"/><!-- I 0..1 Representation defined by the system -->
   <userSelected value="[boolean]"/><!-- I 0..1 If this coding was chosen directly by the user -->
  </coding>
  <text value="[string]"/><!-- I 0..1 Plain text representation of the concept -->
 </category>
 <code><!-- I 1..1 CodeableConcept Coded Responses from C-CDA Vital Sign Results   --></code>
 <subject><!-- I 1..1 Reference(Patient) 
     Who and/or what the observation is about --></subject>
 <focus><!-- I 0..* Reference(Resource) 
     What the observation is about, when it is not about the subject of record --></focus>
 <encounter><!-- I 0..1 Reference(Encounter) 
     Healthcare event during which this observation is made --></encounter>
 <effective[x]><!-- I 1..1 dateTime|Period 
     Often just a dateTime for Vital Signs --></effective[x]>
 <issued value="[instant]"/><!-- I 0..1 Date/Time this version was made available -->
 <performer><!-- I 0..* Reference(Practitioner) 
     Who is responsible for the observation --></performer>
 <value[x]><!-- I 0..1 Quantity|CodeableConcept|string|boolean|integer|
   Range|Ratio|SampledData|time|dateTime|Period|Attachment|Reference(MolecularSequence) 
     Vital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept. --></value[x]>
 <dataAbsentReason><!-- I 0..1 CodeableConcept Why the result is missing   --></dataAbsentReason>
 <interpretation><!-- I 0..* CodeableConcept High, low, normal, etc   --></interpretation>
 <note><!-- I 0..* Annotation Comments about the observation --></note>
 <bodySite><!-- I 0..1 CodeableConcept Observed body part   --></bodySite>
 <bodyStructure><!-- I 0..1 Reference(BodyStructure) Observed body structure --></bodyStructure>
 <method><!-- I 0..1 CodeableConcept How it was done   --></method>
 <specimen><!-- I 0..1 Reference(Specimen) Specimen used for this observation --></specimen>
 <device><!-- I 0..1 Reference(Device) 
     A reference to the device that generates the measurements or the device settings for the device --></device>
 <referenceRange> I 0..* BackboneElement  <!-- I 0..* Provides guide for interpretation -->
  <modifierExtension><!-- I 0..* Extension  Extensions that cannot be ignored even if unrecognized  --></modifierExtension>
  <low><!-- I 0..1 Quantity 
      Low Range, if relevant --></low>
  <high><!-- I 0..1 Quantity 
      High Range, if relevant --></high>
  <normalValue><!-- I 0..1 CodeableConcept Normal value, if relevant   --></normalValue>
  <type><!-- I 0..1 CodeableConcept Reference range qualifier   --></type>
  <appliesTo><!-- I 0..* CodeableConcept Reference range population   --></appliesTo>
  <age><!-- I 0..1 Range 
      Applicable age range, if relevant --></age>
  <text value="[markdown]"/><!-- I 0..1 Text based reference range in an observation -->
 </referenceRange>
 <hasMember><!-- I 0..* Reference(QuestionnaireResponse) 
     Used when reporting vital signs panel components --></hasMember>
 <derivedFrom><!-- I 0..* Reference(DocumentReference) 
     Related resource from which the observation is made --></derivedFrom>
 <component> I 0..* BackboneElement  <!-- I 0..* Used when reporting systolic and diastolic blood pressure. -->
  <modifierExtension><!-- I 0..* Extension  Extensions that cannot be ignored even if unrecognized  --></modifierExtension>
  <code><!-- I 1..1 CodeableConcept Type of component observation (code / type)   --></code>
  <-- value[x] sliced by type:$this  in the specified orderOpen-->
  <valueQuantity><!-- I 0..1 Quantity Vital Sign Value recorded with UCUM   --></valueQuantity>
  <dataAbsentReason><!-- I 0..1 CodeableConcept Why the component result is missing   --></dataAbsentReason>
  <interpretation><!-- I 0..* CodeableConcept High, low, normal, etc   --></interpretation>
  <referenceRange><!-- See http://hl7.org/fhir/StructureDefinition/Observation#Observation.referenceRange  Provides guide for interpretation of component result --></referenceRange>
 </component>
</Observation>

JSON Template

{ // Observationvitalsigns
  // from Element: extension
    "meta" : { Meta }, // IMetadata about the resource
    "implicitRules" : "<uri>", // IA set of rules under which this content was created
    "language" : "<code>", // ILanguage of the resource content
    "text" : { Narrative }, // IText summary of the resource, for human interpretation
    "contained" : [{ Resource }], //Contained, inline Resources
    "modifierExtension" : [{ Extension }], // IExtensions that cannot be ignored
    "identifier" : [{ Identifier }], // IBusiness Identifier for observation
  // value[x]: Instantiates FHIR ObservationDefinition. One of these 2:
    "instantiatesCanonical" : "<canonical>", // IInstantiates FHIR ObservationDefinition
    "instantiatesReference" : { Reference(ObservationDefinition) }, // IInstantiates FHIR ObservationDefinition
    "basedOn" : [{ Reference(CarePlan) }], // IFulfills plan, proposal or order
    "triggeredBy" : [{ BackboneElement }], // ITriggering observation(s)
    "partOf" : [{ Reference(MedicationAdministration) }], // IPart of referenced event
    "status" : "<code>", // I R! registered | preliminary | final | amended +
    "category" : [ //  sliced by value:coding.code, value:coding.system  in the specified order, Open 
      { // Classification of  type of observation // I R! 
        // from Element: extension
        "extension" : [ //  sliced by value:url  in the specified order, Open ]
        "coding" : [{ Coding }], // I R! Code defined by a terminology system
        "text" : "<string>" // IPlain text representation of the concept
      }
    ],
    "code" : { CodeableConcept }, // I R! Coded Responses from C-CDA Vital Sign Results
    "subject" : { Reference(Patient) }, // I R! Who and/or what the observation is about
    "focus" : [{ Reference(Resource) }], // IWhat the observation is about, when it is not about the subject of record
    "encounter" : { Reference(Encounter) }, // IHealthcare event during which this observation is made
  // value[x]: Often just a dateTime for Vital Signs. One of these 2:
    "effectiveDateTime" : "<dateTime>", // I R! Often just a dateTime for Vital Signs
    "effectivePeriod" : { Period }, // I R! Often just a dateTime for Vital Signs
    "issued" : "<instant>", // IDate/Time this version was made available
    "performer" : [{ Reference(Practitioner) }], // IWho is responsible for the observation
  // value[x]: Vital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.. One of these 13:
    "valueQuantity" : { Quantity }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueCodeableConcept" : { CodeableConcept }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueString" : "<string>", // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueBoolean" : <boolean>, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueInteger" : <integer>, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueRange" : { Range }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueRatio" : { Ratio }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueSampledData" : { SampledData }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueTime" : "<time>", // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueDateTime" : "<dateTime>", // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valuePeriod" : { Period }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueAttachment" : { Attachment }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "valueReference" : { Reference(MolecularSequence) }, // IVital Signs value are recorded using the Quantity data type. For supporting observations such as Cuff size could use other datatypes such as CodeableConcept.
    "dataAbsentReason" : { CodeableConcept }, // IWhy the result is missing
    "interpretation" : [{ CodeableConcept }], // IHigh, low, normal, etc
    "note" : [{ Annotation }], // IComments about the observation
    "bodySite" : { CodeableConcept }, // IObserved body part
    "bodyStructure" : { Reference(BodyStructure) }, // IObserved body structure
    "method" : { CodeableConcept }, // IHow it was done
    "specimen" : { Reference(Specimen) }, // ISpecimen used for this observation
    "device" : { Reference(Device) }, // IA reference to the device that generates the measurements or the device settings for the device
    "referenceRange" : [{ BackboneElement }], // IProvides guide for interpretation
    "hasMember" : [{ Reference(QuestionnaireResponse) }], // IUsed when reporting vital signs panel components
    "derivedFrom" : [{ Reference(DocumentReference) }], // IRelated resource from which the observation is made
    "component" : [{ BackboneElement }], // IUsed when reporting systolic and diastolic blood pressure.
  }

 

Alternate definitions: Master Definition (XML, JSON), Schematron

PathNameConformanceValueSet
Observation.languageAll LanguagesrequiredAll Languages
Observation.triggeredBy.typetriggered Bytyperequiredtriggered Bytype
Observation.statusObservation StatusrequiredObservation Status
Observation.categoryObservation Category CodespreferredObservation Category Codes
Observation.categoryObservation Category CodespreferredObservation Category Codes
Observation.codeVital SignsextensibleVital Signs
Observation.dataAbsentReasonData Absent ReasonextensibleData Absent Reason
Observation.interpretationObservation Interpretation CodesextensibleObservation Interpretation Codes
Observation.bodySiteSNOMED CT Body StructuresexampleSNOMED CT Body Structures
Observation.methodObservation MethodsexampleObservation Methods
Observation.referenceRange.normalValueObservation Reference Range Normal Value CodesextensibleObservation Reference Range Normal Value Codes
Observation.referenceRange.typeObservation Reference Range Meaning CodespreferredObservation Reference Range Meaning Codes
Observation.referenceRange.appliesToObservation Reference Range Applies To CodesexampleObservation Reference Range Applies To Codes
Observation.component.codeVital SignsextensibleVital Signs
Observation.component.value[x]Vital Signs UnitsrequiredVital Signs Units
Observation.component.dataAbsentReasonData Absent ReasonextensibleData Absent Reason
Observation.component.interpretationObservation Interpretation CodesextensibleObservation Interpretation Codes
RuleRuleRule
IdPathDetailsRequirements
vs-2ObservationIf there is no component or hasMember element then either a value[x] or a data absent reason must be present.
Expression icon: (component.empty() and hasMember.empty()) implies (dataAbsentReason.exists() or value.exists())
vs-1Observation.effective[x]if Observation.effective[x] is dateTime and has a value then that value shall be precise to the day
Expression icon: ($this as dateTime).toString().length() >= 8
vs-3Observation.componentIf there is no a value a data absent reason must be present
Expression icon: value.exists() or dataAbsentReason.exists()
. .