This
page
is
part
of
the
FHIR
Specification
(v3.0.2:
STU
3).
(v3.5.0:
R4
Ballot
#2).
The
current
version
which
supercedes
this
version
is
5.0.0
.
For
a
full
list
of
available
versions,
see
the
Directory
of
published
versions
.
Page
versions:
R5
R4B
R4
R3
R2
Orders
and
Observations
Work
Group
|
Maturity Level : 5 |
|
Compartments : Device , Encounter , Patient , Practitioner , RelatedPerson |
Normative Candidate Note: This page is candidate normative content for R4 in the Observation Package . Once normative, it will lose it's Maturity Level, and breaking changes will no longer be made.
Measurements and simple assertions made about a patient, device or other subject.
This resource is an event resource from a FHIR workflow perspective - see Workflow .
Observations
are
a
central
element
in
healthcare,
used
to
support
diagnosis,
monitor
progress,
determine
baselines
and
patterns
and
even
capture
demographic
characteristics.
Most
observations
are
simple
name/value
pair
assertions
with
some
metadata,
but
some
observations
group
other
observations
together
logically,
or
even
are
multi-component
observations.
Note
that
the
DiagnosticReport
resource
provides
a
clinical
or
workflow
context
for
a
set
of
observations
and
the
Observation
resource
is
referenced
by
DiagnosticReport
to
represent
lab,
laboratory,
imaging,
and
other
clinical
and
diagnostic
data
to
form
a
complete
report.
Uses for the Observation resource include:
* The boundaries between clinical findings and disorders remains a challenge in medical ontology. Refer the Boundaries section below and in Condition for general guidance. These boundaries can be clarified by profiling Observation for a particular use case.
The following core profiles for the Observation resource have been defined as well. If implementations use this Resource when expressing the profile-specific concepts as structured data, they SHALL conform to the following profiles:
| Profile | Description |
|---|---|
| Vital signs |
The
FHIR
Vital
Signs
profile
sets
|
In
contrast
to
the
At
its
core,
Observation
resource,
the
DiagnosticReport
resource
typically
includes
additional
clinical
context
and
some
mix
allows
expressing
a
name-value
pair
or
structured
collection
of
atomic
results,
images,
imaging
reports,
textual
and
coded
interpretation,
and
formatted
representations.
Laboratory
reports,
pathology
reports,
name-value
pairs.
As
such,
it
can
support
conveying
any
type
of
information
desired.
However,
that
is
not
its
intent.
Observation
is
intended
for
capturing
measurements
and
imaging
reports
should
subjective
point-in-time
assessments.
It
is
not
intended
to
be
represented
using
used
for
those
specific
contexts
and
use
cases
already
covered
by
other
FHIR
resources.
For
example,
the
DiagnosticReport
resource.
The
Observation
AllergyIntolerance
resource
is
referenced
represents
a
patient
allergies,
MedicationStatement
resource:
medications
taken
by
the
DiagnosticReport
to
provide
the
atomic
results
for
a
particular
investigation.
"Laboratories
routinely
have
patient,
FamilyMemberHistory
resource:
a
variable
that
is
summative
across
patient's
family
history,
Procedure
resource:
information
about
a
series
of
discrete
variables
-
these
are
usually
called
'impressions'
or
'interpretations'.
Sometimes
they
are
algorithmically
specified
procedure,
and
sometimes
they
have
the
imprimatur
QuestionnaireResponse
resource:
a
set
of
pathologists
and
they
are
conveyed
in
Observation
or
DiagnosticReport
instead
answers
to
a
set
of
the
Clinical
Impression
resource.
However,
the
questions.
The
Observation
resources
resource
should
not
be
used
to
record
clinical
diagnosis
about
a
patient
or
subject
that
are
typically
captured
in
the
Condition
resource
or
the
ClinicalImpression
resource.
The
Observation
resource
is
often
referenced
by
the
Condition
resource
to
provide
specific
subjective
and
objective
data
to
support
its
assertions.
There
are
other
resources
that
can
will
however
be
considered
"specializations"
situations
of
the
Observation
resource
and
should
overlap.
For
example,
a
response
to
a
question
of
"have
you
ever
taken
illicit
drugs"
could
in
principle
be
used
for
those
specific
contexts
and
use
cases.
They
include
AllergyIntolerance
resource,
FamilyMemberHistory
resource,
Procedure
resource,
and
Questionnaire
resource.
represented
using
MedicationStatement,
but
most
systems
would
treat
such
an
assertion
as
an
Observation.
In
some
cases,
such
as
when
source
data
is
coming
from
an
HL7
v2
feed,
a
system
may
might
not
have
information
that
allows
it
to
distinguish
diagnosis,
allergy
and
other
"specialized"
"specialized"
types
of
observations
from
lab,
laboratory,
vital
sign
and
other
observation
types
intended
to
be
conveyed
with
this
resource.
In
those
circumstances,
such
specialized
observations
may
also
appear
using
this
resource.
Adhering
to
such
convention
is
an
appropriate
use
of
Observation.
If
implementers
are
uncertain
whether
a
proposed
use
of
Observation
is
appropriate,
they're
encouraged
to
consult
with
implementers
on
chat.fhir.org
implementer's
stream
The
Media
resource
captures
a
specific
type
of
observation
whose
value
is
audio,
video
or
image
data.
This
resource
is
the
preferred
representation
used
instead
of
Observation
to
represent
such
forms
of
information
as
it
exposes
the
metadata
relevant
for
interpreting
the
information.
However,
in
some
implementations,
media
information
may
appear
in
See
Media's
boundaries
section
to
see
how
Media
(and
Observation)
differs
from
ImagingStudy
and
DocumentReference
.
In
contrast
to
the
Observation
susing
resource,
the
valueAttachment
element
DiagnosticReport
resource
typically
includes
additional
clinical
context
and
systems
some
mix
of
atomic
results,
images,
imaging
reports,
textual
and
coded
interpretation,
and
formatted
representations.
Laboratory
reports,
pathology
reports,
and
imaging
reports
should
be
aware
represented
using
the
DiagnosticReport
resource.
The
Observation
resource
is
referenced
by
the
DiagnosticReport
to
provide
the
atomic
results
for
a
particular
investigation.
"Laboratories
routinely
have
a
variable
that
is
summative
across
a
series
of
this
possibility.
discrete
variables
-
these
are
usually
called
'impressions'
or
'interpretations'.
Sometimes
they
are
algorithmically
specified
and
sometimes
they
have
the
imprimatur
of
pathologists
and
they
are
conveyed
in
Observation
or
DiagnosticReport
instead
of
the
Clinical
Impression
resource.
The
Observation
resource
should
not
be
used
to
record
clinical
diagnosis
about
a
patient
or
subject
as
discussed
above.
This
resource
is
referenced
by
AdverseEvent
,
CarePlan
,
ChargeItem
,
ClinicalImpression
,
Communication
,
CommunicationRequest
,
Condition
,
Contract
,
DeviceRequest
,
DeviceUseStatement
,
DiagnosticReport
,
FamilyMemberHistory
,
Goal
,
Immunization
GuidanceResponse
,
ImmunizationRecommendation
ImagingStudy
,
Immunization
,
MedicationAdministration
,
MedicationRequest
,
MedicationStatement
,
itself,
Procedure
,
ProcedureRequest
,
QuestionnaireResponse
,
ReferralRequest
RequestGroup
,
RiskAssessment
,
Sequence
,
ServiceRequest
and
Sequence
SupplyRequest
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
I N | DomainResource |
Measurements
and
simple
assertions
+ Rule: dataAbsentReason SHALL only be present if Observation.value[x] is not present + Rule: If |
|
|
Σ | 0..* | Identifier |
Business
Identifier
for
observation
|
|
Σ | 0..* |
Reference
(
CarePlan
|
DeviceRequest
|
ImmunizationRecommendation
|
MedicationRequest
|
NutritionOrder
|
|
Fulfills
plan,
proposal
or
order
|
| Σ | 0..* | Reference ( MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy ) |
Part
of
referenced
event
|
![]()
|
?! Σ | 1..1 | code |
registered
|
preliminary
|
final
|
amended
+
ObservationStatus ( Required ) |
|
0..* | CodeableConcept |
Classification
of
type
of
observation
Observation Category Codes ( Preferred ) |
|
|
Σ | 1..1 | CodeableConcept |
Type
of
observation
(code
/
type)
LOINC Codes ( Example ) |
|
Σ | 0..1 | Reference ( Patient | Group | Device | Location ) |
Who
and/or
what
|
|
Σ TU | 0..* | Reference ( Any ) |
What
the
observation
is
about,
when
it
is
not
about
the
subject
of
record
|
![]() ![]() | Σ | 0..1 |
Reference
(
Encounter
|
Healthcare event during which this observation is made |
|
Σ | 0..1 | Clinically relevant time/time-period for observation | |
|
dateTime | |||
|
Period | |||
| Timing | |||
![]() ![]() ![]() | instant | |||
|
Σ | 0..1 | instant | Date/Time this version was made available |
|
Σ | 0..* | Reference ( Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson ) |
Who
is
responsible
for
the
observation
|
|
Σ I | 0..1 | Actual result | |
|
Quantity | |||
|
CodeableConcept | |||
|
string | |||
|
boolean | |||
|
|
integer | ||
|
|
Range | ||
|
|
Ratio | ||
|
|
SampledData | ||
|
time | |||
|
dateTime | |||
|
Period | |||
|
I | 0..1 | CodeableConcept |
Why
the
result
is
missing
|
|
|
CodeableConcept |
High,
low,
normal,
etc.
Observation Interpretation Codes ( Extensible ) |
|
|
0..1 | string | Comments about the test result value | |
|
0..1 | CodeableConcept |
Observed
body
part
SNOMED CT Body Structures ( Example ) |
|
|
0..1 | CodeableConcept |
How
it
was
done
Observation Methods ( Example ) |
|
|
0..1 | Reference ( Specimen ) | Specimen used for this observation | |
|
0..1 | Reference ( Device | DeviceMetric ) | (Measurement) Device | |
|
I | 0..* | BackboneElement |
Provides
guide
for
interpretation
+ Rule: Must have at least a low or a high or text |
|
I | 0..1 | SimpleQuantity | Low Range, if relevant |
|
I | 0..1 | SimpleQuantity | High Range, if relevant |
|
0..1 | CodeableConcept |
Reference
range
qualifier
Observation Reference Range Meaning Codes ( |
|
|
0..* | CodeableConcept |
Reference
range
population
Observation Reference Range Applies To Codes ( Example ) |
|
|
0..1 | Range | Applicable age range, if relevant | |
|
0..1 | string | Text based reference range in an observation | |
|
Σ | 0..* |
|
|
|
|
|
Reference
(
|
|
|
Σ | 0..* | BackboneElement |
Component
results
|
|
Σ | 1..1 | CodeableConcept |
Type
of
component
observation
(code
/
type)
LOINC Codes ( Example ) |
|
Σ | 0..1 | Actual component result | |
|
Quantity | |||
|
CodeableConcept | |||
|
string | |||
|
|
boolean | ||
| integer | |||
|
|
Range | ||
|
|
Ratio | ||
|
|
SampledData | ||
|
time | |||
|
dateTime | |||
|
Period | |||
|
I | 0..1 | CodeableConcept |
Why
the
component
result
is
missing
|
|
|
CodeableConcept |
High,
low,
normal,
etc.
Observation Interpretation Codes ( Extensible ) |
|
|
0..* | see referenceRange |
Provides
guide
for
interpretation
of
component
result
|
|
Documentation
for
this
format
|
||||
UML Diagram ( Legend )
XML Template
<<Observation xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <identifier><!-- 0..* Identifier Business Identifier for observation --></identifier>
<| </basedOn> <<basedOn><!-- 0..* Reference(CarePlan|DeviceRequest|ImmunizationRecommendation| MedicationRequest|NutritionOrder|ServiceRequest) Fulfills plan, proposal or order --></basedOn> <partOf><!-- 0..* Reference(MedicationAdministration|MedicationDispense| MedicationStatement|Procedure|Immunization|ImagingStudy) Part of referenced event --></partOf> <status value="[code]"/><!-- 1..1 registered | preliminary | final | amended + --> <category><!-- 0..* CodeableConcept Classification of type of observation --></category> <code><!-- 1..1 CodeableConcept Type of observation (code / type) --></code><</subject> <</context> <</effective[x]> < <</performer> <| </value[x]> <</dataAbsentReason> <</interpretation> <<subject><!-- 0..1 Reference(Patient|Group|Device|Location) Who and/or what the observation is about --></subject> <focus><!-- 0..* Reference(Any) What the observation is about, when it is not about the subject of record --></focus> <encounter><!-- 0..1 Reference(Encounter) Healthcare event during which this observation is made --></encounter> <effective[x]><!-- 0..1 dateTime|Period|Timing|instant Clinically relevant time/time-period for observation --></effective[x]> <issued value="[instant]"/><!-- 0..1 Date/Time this version was made available --> <performer><!-- 0..* Reference(Practitioner|PractitionerRole|Organization| CareTeam|Patient|RelatedPerson) Who is responsible for the observation --></performer> <value[x]><!--0..1 Quantity|CodeableConcept|string|boolean|integer|Range|Ratio| SampledData|time|dateTime|Period Actual result --></value[x]> <dataAbsentReason><!--
0..1 CodeableConcept Why the result is missing --></dataAbsentReason> <interpretation><!-- 0..* CodeableConcept High, low, normal, etc. --></interpretation> <comment value="[string]"/><!-- 0..1 Comments about the test result value --> <bodySite><!-- 0..1 CodeableConcept Observed body part --></bodySite> <method><!-- 0..1 CodeableConcept How it was done --></method> <specimen><!-- 0..1 Reference(Specimen) Specimen used for this observation --></specimen> <device><!-- 0..1 Reference(Device|DeviceMetric) (Measurement) Device --></device> <referenceRange> <!-- 0..* Provides guide for interpretation -->
<</low> <</high><low><!--0..1 Quantity(SimpleQuantity) Low Range, if relevant --></low> <high><!--
0..1 Quantity(SimpleQuantity) High Range, if relevant --></high> <type><!-- 0..1 CodeableConcept Reference range qualifier --></type> <appliesTo><!-- 0..* CodeableConcept Reference range population --></appliesTo> <age><!-- 0..1 Range Applicable age range, if relevant --></age>
<<text value="[string]"/><!-- 0..1 Text based reference range in an observation --> </referenceRange>< < <</target> </related><hasMember><!-- 0..* Reference(Observation|QuestionnaireResponse|Sequence) Related resource that belongs to the Observation group --></hasMember> <derivedFrom><!-- 0..* Reference(DocumentReference|ImagingStudy|Media| QuestionnaireResponse|Observation|Sequence) Related measurements the observation is made from --></derivedFrom> <component> <!-- 0..* Component results --> <code><!-- 1..1 CodeableConcept Type of component observation (code / type) --></code><| </value[x]> <</dataAbsentReason> <</interpretation><value[x]><!-- 0..1 Quantity|CodeableConcept|string|boolean|integer|Range| Ratio|SampledData|time|dateTime|Period Actual component result --></value[x]> <dataAbsentReason><!--0..1 CodeableConcept Why the component result is missing --></dataAbsentReason> <interpretation><!-- 0..* CodeableConcept High, low, normal, etc. --></interpretation> <referenceRange><!-- 0..* Content as for Observation.referenceRange Provides guide for interpretation of component result --></referenceRange> </component> </Observation>
JSON Template
{
"resourceType" : "",
"resourceType" : "Observation",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"
"|
"
"
"
"
"
">",
" },
"
"
"identifier" : [{ Identifier }], // Business Identifier for observation
"basedOn" : [{ Reference(CarePlan|DeviceRequest|ImmunizationRecommendation|
MedicationRequest|NutritionOrder|ServiceRequest) }], // Fulfills plan, proposal or order
"partOf" : [{ Reference(MedicationAdministration|MedicationDispense|
MedicationStatement|Procedure|Immunization|ImagingStudy) }], // Part of referenced event
"status" : "<code>", // R! registered | preliminary | final | amended +
"category" : [{ CodeableConcept }], // Classification of type of observation
"code" : { CodeableConcept }, // R! Type of observation (code / type)
"subject" : { Reference(Patient|Group|Device|Location) }, // Who and/or what the observation is about
"focus" : [{ Reference(Any) }], // What the observation is about, when it is not about the subject of record
"encounter" : { Reference(Encounter) }, // Healthcare event during which this observation is made
// effective[x]: Clinically relevant time/time-period for observation. One of these 4:
"effectiveDateTime" : "<dateTime>",
"effectivePeriod" : { Period },
"effectiveTiming" : { Timing },
"effectiveInstant" : "<instant>",
"issued" : "<instant>", // Date/Time this version was made available
"performer" : [{ Reference(Practitioner|PractitionerRole|Organization|
CareTeam|Patient|RelatedPerson) }], // Who is responsible for the observation
// value[x]: Actual result. One of these 11:
" },
" },
">",
">,
" },
" },
" },
" },
">",
">",
" },
"
"
"
"
"
"
"
"
"
"
"
"
"
"
}],
"
"
"
"valueQuantity" : { Quantity },
"valueCodeableConcept" : { CodeableConcept },
"valueString" : "<string>",
"valueBoolean" : <boolean>,
"valueInteger" : <integer>,
"valueRange" : { Range },
"valueRatio" : { Ratio },
"valueSampledData" : { SampledData },
"valueTime" : "<time>",
"valueDateTime" : "<dateTime>",
"valuePeriod" : { Period },
"dataAbsentReason" : { CodeableConcept }, // C? Why the result is missing
"interpretation" : [{ CodeableConcept }], // High, low, normal, etc.
"comment" : "<string>", // Comments about the test result value
"bodySite" : { CodeableConcept }, // Observed body part
"method" : { CodeableConcept }, // How it was done
"specimen" : { Reference(Specimen) }, // Specimen used for this observation
"device" : { Reference(Device|DeviceMetric) }, // (Measurement) Device
"referenceRange" : [{ // Provides guide for interpretation
"low" : { Quantity(SimpleQuantity) }, // C? Low Range, if relevant
"high" : { Quantity(SimpleQuantity) }, // C? High Range, if relevant
"type" : { CodeableConcept }, // Reference range qualifier
"appliesTo" : [{ CodeableConcept }], // Reference range population
"age" : { Range }, // Applicable age range, if relevant
"text" : "<string>" // Text based reference range in an observation
}],
"
"
" },
" },
">",
" },
" },
" },
" },
">",
">",
" },
"
"
"
"hasMember" : [{ Reference(Observation|QuestionnaireResponse|Sequence) }], // Related resource that belongs to the Observation group
"derivedFrom" : [{ Reference(DocumentReference|ImagingStudy|Media|
QuestionnaireResponse|Observation|Sequence) }], // Related measurements the observation is made from
"component" : [{ // Component results
"code" : { CodeableConcept }, // R! Type of component observation (code / type)
// value[x]: Actual component result. One of these 11:
"valueQuantity" : { Quantity },
"valueCodeableConcept" : { CodeableConcept },
"valueString" : "<string>",
"valueBoolean" : <boolean>,
"valueInteger" : <integer>,
"valueRange" : { Range },
"valueRatio" : { Ratio },
"valueSampledData" : { SampledData },
"valueTime" : "<time>",
"valueDateTime" : "<dateTime>",
"valuePeriod" : { Period },
"dataAbsentReason" : { CodeableConcept }, // C? Why the component result is missing
"interpretation" : [{ CodeableConcept }], // High, low, normal, etc.
"referenceRange" : [{ Content as for Observation.referenceRange }] // Provides guide for interpretation of component result
}]
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:Observation; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:Observation.identifier [ Identifier ], ... ; # 0..* Business Identifier for observation
fhir:|fhir:Observation.basedOn [ Reference(CarePlan|DeviceRequest|ImmunizationRecommendation|MedicationRequest| NutritionOrder|ServiceRequest) ], ... ; # 0..* Fulfills plan, proposal or order fhir:Observation.partOf [ Reference(MedicationAdministration|MedicationDispense|MedicationStatement|Procedure| Immunization|ImagingStudy) ], ... ; # 0..* Part of referenced event fhir:Observation.status [ code ]; # 1..1 registered | preliminary | final | amended + fhir:Observation.category [ CodeableConcept ], ... ; # 0..* Classification of type of observation fhir:Observation.code [ CodeableConcept ]; # 1..1 Type of observation (code / type)fhir: fhir: # . One of these 2fhir:Observation.subject [ Reference(Patient|Group|Device|Location) ]; # 0..1 Who and/or what the observation is about fhir:Observation.focus [ Reference(Any) ], ... ; # 0..* What the observation is about, when it is not about the subject of record fhir:Observation.encounter [ Reference(Encounter) ]; # 0..1 Healthcare event during which this observation is made # Observation.effective[x] : 0..1 Clinically relevant time/time-period for observation. One of these 4 fhir:Observation.effectiveDateTime [ dateTime ] fhir:Observation.effectivePeriod [ Period ]fhir: fhir:fhir:Observation.effectiveTiming [ Timing ] fhir:Observation.effectiveInstant [ instant ] fhir:Observation.issued [ instant ]; # 0..1 Date/Time this version was made available fhir:Observation.performer [ Reference(Practitioner|PractitionerRole|Organization|CareTeam|Patient|RelatedPerson) ], ... ; # 0..* Who is responsible for the observation # Observation.value[x] : 0..1 Actual result. One of these 11 fhir:Observation.valueQuantity [ Quantity ] fhir:Observation.valueCodeableConcept [ CodeableConcept ] fhir:Observation.valueString [ string ] fhir:Observation.valueBoolean [ boolean ] fhir:Observation.valueInteger [ integer ] fhir:Observation.valueRange [ Range ] fhir:Observation.valueRatio [ Ratio ] fhir:Observation.valueSampledData [ SampledData ]fhir: ]fhir:Observation.valueTime [ time ] fhir:Observation.valueDateTime [ dateTime ] fhir:Observation.valuePeriod [ Period ] fhir:Observation.dataAbsentReason [ CodeableConcept ]; # 0..1 Why the result is missingfhir: fhir:fhir:Observation.interpretation [ CodeableConcept ], ... ; # 0..* High, low, normal, etc. fhir:Observation.comment [ string ]; # 0..1 Comments about the test result value fhir:Observation.bodySite [ CodeableConcept ]; # 0..1 Observed body part fhir:Observation.method [ CodeableConcept ]; # 0..1 How it was done fhir:Observation.specimen [ Reference(Specimen) ]; # 0..1 Specimen used for this observation fhir:Observation.device [ Reference(Device|DeviceMetric) ]; # 0..1 (Measurement) Device fhir:Observation.referenceRange [ # 0..* Provides guide for interpretationfhir: fhir:fhir:Observation.referenceRange.low [ Quantity(SimpleQuantity) ]; # 0..1 Low Range, if relevant fhir:Observation.referenceRange.high [ Quantity(SimpleQuantity) ]; # 0..1 High Range, if relevant fhir:Observation.referenceRange.type [ CodeableConcept ]; # 0..1 Reference range qualifier fhir:Observation.referenceRange.appliesTo [ CodeableConcept ], ... ; # 0..* Reference range population fhir:Observation.referenceRange.age [ Range ]; # 0..1 Applicable age range, if relevantfhir: ], ...; fhir: fhir: fhir:fhir:Observation.referenceRange.text [ string ]; # 0..1 Text based reference range in an observation ], ...; fhir:Observation.hasMember [ Reference(Observation|QuestionnaireResponse|Sequence) ], ... ; # 0..* Related resource that belongs to the Observation group fhir:Observation.derivedFrom [ Reference(DocumentReference|ImagingStudy|Media|QuestionnaireResponse|Observation|Sequence) ], ... ; # 0..* Related measurements the observation is made from fhir:Observation.component [ # 0..* Component results fhir:Observation.component.code [ CodeableConcept ]; # 1..1 Type of component observation (code / type)# . One of these 10# Observation.component.value[x] : 0..1 Actual component result. One of these 11 fhir:Observation.component.valueQuantity [ Quantity ] fhir:Observation.component.valueCodeableConcept [ CodeableConcept ] fhir:Observation.component.valueString [ string ] fhir:Observation.component.valueBoolean [ boolean ] fhir:Observation.component.valueInteger [ integer ] fhir:Observation.component.valueRange [ Range ] fhir:Observation.component.valueRatio [ Ratio ] fhir:Observation.component.valueSampledData [ SampledData ]fhir: ]fhir:Observation.component.valueTime [ time ] fhir:Observation.component.valueDateTime [ dateTime ] fhir:Observation.component.valuePeriod [ Period ]fhir: fhir:fhir:Observation.component.dataAbsentReason [ CodeableConcept ]; # 0..1 Why the component result is missing fhir:Observation.component.interpretation [ CodeableConcept ], ... ; # 0..* High, low, normal, etc. fhir:Observation.component.referenceRange [ See Observation.referenceRange ], ... ; # 0..* Provides guide for interpretation of component result ], ...; ]
Changes
since
DSTU2
R3
| Observation | |
| Observation.basedOn |
|
| Observation.partOf |
|
| Observation.focus |
|
| Observation.encounter |
|
|
|
|
|
|
|
| Observation.value[x] |
|
|
|
|
|
|
|
| Observation.referenceRange.type |
|
| Observation.hasMember |
|
| Observation.derivedFrom |
|
|
|
|
| Observation.component.dataAbsentReason |
|
| Observation.component.interpretation |
|
|
|
|
|
|
|
See the Full Difference for further information
This analysis is available as XML or JSON .
See
R2
<-->
R3
<-->
R4
Conversion
Maps
(status
=
34
48
tests
that
all
of
which
14
fail
to
execute
ok.
All
tests
pass
.
34
fail
round-trip
testing
and
15
34
r3
resources
are
invalid
(58
(0
errors).
).
)
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
I N | DomainResource |
Measurements
and
simple
assertions
+ Rule: dataAbsentReason SHALL only be present if Observation.value[x] is not present + Rule: If |
|
|
Σ | 0..* | Identifier |
Business
Identifier
for
observation
|
|
Σ | 0..* |
Reference
(
CarePlan
|
DeviceRequest
|
ImmunizationRecommendation
|
MedicationRequest
|
NutritionOrder
|
|
Fulfills
plan,
proposal
or
order
|
| Σ | 0..* | Reference ( MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy ) |
Part
of
referenced
event
|
![]()
|
?! Σ | 1..1 | code |
registered
|
preliminary
|
final
|
amended
+
ObservationStatus ( Required ) |
|
0..* | CodeableConcept |
Classification
of
type
of
observation
Observation Category Codes ( Preferred ) |
|
|
Σ | 1..1 | CodeableConcept |
Type
of
observation
(code
/
type)
LOINC Codes ( Example ) |
|
Σ | 0..1 | Reference ( Patient | Group | Device | Location ) |
Who
and/or
what
|
|
Σ TU | 0..* | Reference ( Any ) |
What
the
observation
is
about,
when
it
is
not
about
the
subject
of
record
|
![]() ![]() | Σ | 0..1 |
Reference
(
Encounter
|
Healthcare event during which this observation is made |
|
Σ | 0..1 | Clinically relevant time/time-period for observation | |
|
dateTime | |||
|
Period | |||
| Timing | |||
![]() ![]() ![]() | instant | |||
|
Σ | 0..1 | instant | Date/Time this version was made available |
|
Σ | 0..* | Reference ( Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson ) |
Who
is
responsible
for
the
observation
|
|
Σ I | 0..1 | Actual result | |
|
Quantity | |||
|
CodeableConcept | |||
|
string | |||
|
boolean | |||
|
|
integer | ||
|
|
Range | ||
|
|
Ratio | ||
|
|
SampledData | ||
|
time | |||
|
dateTime | |||
|
Period | |||
|
I | 0..1 | CodeableConcept |
Why
the
result
is
missing
|
|
|
CodeableConcept |
High,
low,
normal,
etc.
Observation Interpretation Codes ( Extensible ) |
|
|
0..1 | string | Comments about the test result value | |
|
0..1 | CodeableConcept |
Observed
body
part
SNOMED CT Body Structures ( Example ) |
|
|
0..1 | CodeableConcept |
How
it
was
done
Observation Methods ( Example ) |
|
|
0..1 | Reference ( Specimen ) | Specimen used for this observation | |
|
0..1 | Reference ( Device | DeviceMetric ) | (Measurement) Device | |
|
I | 0..* | BackboneElement |
Provides
guide
for
interpretation
+ Rule: Must have at least a low or a high or text |
|
I | 0..1 | SimpleQuantity | Low Range, if relevant |
|
I | 0..1 | SimpleQuantity | High Range, if relevant |
|
0..1 | CodeableConcept |
Reference
range
qualifier
Observation Reference Range Meaning Codes ( |
|
|
0..* | CodeableConcept |
Reference
range
population
Observation Reference Range Applies To Codes ( Example ) |
|
|
0..1 | Range | Applicable age range, if relevant | |
|
0..1 | string | Text based reference range in an observation | |
|
Σ | 0..* |
|
|
|
|
|
Reference
(
|
|
|
Σ | 0..* | BackboneElement |
Component
results
|
|
Σ | 1..1 | CodeableConcept |
Type
of
component
observation
(code
/
type)
LOINC Codes ( Example ) |
|
Σ | 0..1 | Actual component result | |
|
Quantity | |||
|
CodeableConcept | |||
|
string | |||
|
|
boolean | ||
| integer | |||
|
|
Range | ||
|
|
Ratio | ||
|
|
SampledData | ||
|
time | |||
|
dateTime | |||
|
Period | |||
|
I | 0..1 | CodeableConcept |
Why
the
component
result
is
missing
|
|
|
CodeableConcept |
High,
low,
normal,
etc.
Observation Interpretation Codes ( Extensible ) |
|
|
0..* | see referenceRange |
Provides
guide
for
interpretation
of
component
result
|
|
Documentation
for
this
format
|
||||
XML Template
<<Observation xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <identifier><!-- 0..* Identifier Business Identifier for observation --></identifier>
<| </basedOn> <<basedOn><!-- 0..* Reference(CarePlan|DeviceRequest|ImmunizationRecommendation| MedicationRequest|NutritionOrder|ServiceRequest) Fulfills plan, proposal or order --></basedOn> <partOf><!-- 0..* Reference(MedicationAdministration|MedicationDispense| MedicationStatement|Procedure|Immunization|ImagingStudy) Part of referenced event --></partOf> <status value="[code]"/><!-- 1..1 registered | preliminary | final | amended + --> <category><!-- 0..* CodeableConcept Classification of type of observation --></category> <code><!-- 1..1 CodeableConcept Type of observation (code / type) --></code><</subject> <</context> <</effective[x]> < <</performer> <| </value[x]> <</dataAbsentReason> <</interpretation> <<subject><!-- 0..1 Reference(Patient|Group|Device|Location) Who and/or what the observation is about --></subject> <focus><!-- 0..* Reference(Any) What the observation is about, when it is not about the subject of record --></focus> <encounter><!-- 0..1 Reference(Encounter) Healthcare event during which this observation is made --></encounter> <effective[x]><!-- 0..1 dateTime|Period|Timing|instant Clinically relevant time/time-period for observation --></effective[x]> <issued value="[instant]"/><!-- 0..1 Date/Time this version was made available --> <performer><!-- 0..* Reference(Practitioner|PractitionerRole|Organization| CareTeam|Patient|RelatedPerson) Who is responsible for the observation --></performer> <value[x]><!--0..1 Quantity|CodeableConcept|string|boolean|integer|Range|Ratio| SampledData|time|dateTime|Period Actual result --></value[x]> <dataAbsentReason><!--
0..1 CodeableConcept Why the result is missing --></dataAbsentReason> <interpretation><!-- 0..* CodeableConcept High, low, normal, etc. --></interpretation> <comment value="[string]"/><!-- 0..1 Comments about the test result value --> <bodySite><!-- 0..1 CodeableConcept Observed body part --></bodySite> <method><!-- 0..1 CodeableConcept How it was done --></method> <specimen><!-- 0..1 Reference(Specimen) Specimen used for this observation --></specimen> <device><!-- 0..1 Reference(Device|DeviceMetric) (Measurement) Device --></device> <referenceRange> <!-- 0..* Provides guide for interpretation -->
<</low> <</high><low><!--0..1 Quantity(SimpleQuantity) Low Range, if relevant --></low> <high><!--
0..1 Quantity(SimpleQuantity) High Range, if relevant --></high> <type><!-- 0..1 CodeableConcept Reference range qualifier --></type> <appliesTo><!-- 0..* CodeableConcept Reference range population --></appliesTo> <age><!-- 0..1 Range Applicable age range, if relevant --></age>
<<text value="[string]"/><!-- 0..1 Text based reference range in an observation --> </referenceRange>< < <</target> </related><hasMember><!-- 0..* Reference(Observation|QuestionnaireResponse|Sequence) Related resource that belongs to the Observation group --></hasMember> <derivedFrom><!-- 0..* Reference(DocumentReference|ImagingStudy|Media| QuestionnaireResponse|Observation|Sequence) Related measurements the observation is made from --></derivedFrom> <component> <!-- 0..* Component results --> <code><!-- 1..1 CodeableConcept Type of component observation (code / type) --></code><| </value[x]> <</dataAbsentReason> <</interpretation><value[x]><!-- 0..1 Quantity|CodeableConcept|string|boolean|integer|Range| Ratio|SampledData|time|dateTime|Period Actual component result --></value[x]> <dataAbsentReason><!--0..1 CodeableConcept Why the component result is missing --></dataAbsentReason> <interpretation><!-- 0..* CodeableConcept High, low, normal, etc. --></interpretation> <referenceRange><!-- 0..* Content as for Observation.referenceRange Provides guide for interpretation of component result --></referenceRange> </component> </Observation>
JSON Template
{
"resourceType" : "",
"resourceType" : "Observation",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"
"|
"
"
"
"
"
">",
" },
"
"
"identifier" : [{ Identifier }], // Business Identifier for observation
"basedOn" : [{ Reference(CarePlan|DeviceRequest|ImmunizationRecommendation|
MedicationRequest|NutritionOrder|ServiceRequest) }], // Fulfills plan, proposal or order
"partOf" : [{ Reference(MedicationAdministration|MedicationDispense|
MedicationStatement|Procedure|Immunization|ImagingStudy) }], // Part of referenced event
"status" : "<code>", // R! registered | preliminary | final | amended +
"category" : [{ CodeableConcept }], // Classification of type of observation
"code" : { CodeableConcept }, // R! Type of observation (code / type)
"subject" : { Reference(Patient|Group|Device|Location) }, // Who and/or what the observation is about
"focus" : [{ Reference(Any) }], // What the observation is about, when it is not about the subject of record
"encounter" : { Reference(Encounter) }, // Healthcare event during which this observation is made
// effective[x]: Clinically relevant time/time-period for observation. One of these 4:
"effectiveDateTime" : "<dateTime>",
"effectivePeriod" : { Period },
"effectiveTiming" : { Timing },
"effectiveInstant" : "<instant>",
"issued" : "<instant>", // Date/Time this version was made available
"performer" : [{ Reference(Practitioner|PractitionerRole|Organization|
CareTeam|Patient|RelatedPerson) }], // Who is responsible for the observation
// value[x]: Actual result. One of these 11:
" },
" },
">",
">,
" },
" },
" },
" },
">",
">",
" },
"
"
"
"
"
"
"
"
"
"
"
"
"
"
}],
"
"
"
"valueQuantity" : { Quantity },
"valueCodeableConcept" : { CodeableConcept },
"valueString" : "<string>",
"valueBoolean" : <boolean>,
"valueInteger" : <integer>,
"valueRange" : { Range },
"valueRatio" : { Ratio },
"valueSampledData" : { SampledData },
"valueTime" : "<time>",
"valueDateTime" : "<dateTime>",
"valuePeriod" : { Period },
"dataAbsentReason" : { CodeableConcept }, // C? Why the result is missing
"interpretation" : [{ CodeableConcept }], // High, low, normal, etc.
"comment" : "<string>", // Comments about the test result value
"bodySite" : { CodeableConcept }, // Observed body part
"method" : { CodeableConcept }, // How it was done
"specimen" : { Reference(Specimen) }, // Specimen used for this observation
"device" : { Reference(Device|DeviceMetric) }, // (Measurement) Device
"referenceRange" : [{ // Provides guide for interpretation
"low" : { Quantity(SimpleQuantity) }, // C? Low Range, if relevant
"high" : { Quantity(SimpleQuantity) }, // C? High Range, if relevant
"type" : { CodeableConcept }, // Reference range qualifier
"appliesTo" : [{ CodeableConcept }], // Reference range population
"age" : { Range }, // Applicable age range, if relevant
"text" : "<string>" // Text based reference range in an observation
}],
"
"
" },
" },
">",
" },
" },
" },
" },
">",
">",
" },
"
"
"
"hasMember" : [{ Reference(Observation|QuestionnaireResponse|Sequence) }], // Related resource that belongs to the Observation group
"derivedFrom" : [{ Reference(DocumentReference|ImagingStudy|Media|
QuestionnaireResponse|Observation|Sequence) }], // Related measurements the observation is made from
"component" : [{ // Component results
"code" : { CodeableConcept }, // R! Type of component observation (code / type)
// value[x]: Actual component result. One of these 11:
"valueQuantity" : { Quantity },
"valueCodeableConcept" : { CodeableConcept },
"valueString" : "<string>",
"valueBoolean" : <boolean>,
"valueInteger" : <integer>,
"valueRange" : { Range },
"valueRatio" : { Ratio },
"valueSampledData" : { SampledData },
"valueTime" : "<time>",
"valueDateTime" : "<dateTime>",
"valuePeriod" : { Period },
"dataAbsentReason" : { CodeableConcept }, // C? Why the component result is missing
"interpretation" : [{ CodeableConcept }], // High, low, normal, etc.
"referenceRange" : [{ Content as for Observation.referenceRange }] // Provides guide for interpretation of component result
}]
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:Observation; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:Observation.identifier [ Identifier ], ... ; # 0..* Business Identifier for observation
fhir:|fhir:Observation.basedOn [ Reference(CarePlan|DeviceRequest|ImmunizationRecommendation|MedicationRequest| NutritionOrder|ServiceRequest) ], ... ; # 0..* Fulfills plan, proposal or order fhir:Observation.partOf [ Reference(MedicationAdministration|MedicationDispense|MedicationStatement|Procedure| Immunization|ImagingStudy) ], ... ; # 0..* Part of referenced event fhir:Observation.status [ code ]; # 1..1 registered | preliminary | final | amended + fhir:Observation.category [ CodeableConcept ], ... ; # 0..* Classification of type of observation fhir:Observation.code [ CodeableConcept ]; # 1..1 Type of observation (code / type)fhir: fhir: # . One of these 2fhir:Observation.subject [ Reference(Patient|Group|Device|Location) ]; # 0..1 Who and/or what the observation is about fhir:Observation.focus [ Reference(Any) ], ... ; # 0..* What the observation is about, when it is not about the subject of record fhir:Observation.encounter [ Reference(Encounter) ]; # 0..1 Healthcare event during which this observation is made # Observation.effective[x] : 0..1 Clinically relevant time/time-period for observation. One of these 4 fhir:Observation.effectiveDateTime [ dateTime ] fhir:Observation.effectivePeriod [ Period ]fhir: fhir:fhir:Observation.effectiveTiming [ Timing ] fhir:Observation.effectiveInstant [ instant ] fhir:Observation.issued [ instant ]; # 0..1 Date/Time this version was made available fhir:Observation.performer [ Reference(Practitioner|PractitionerRole|Organization|CareTeam|Patient|RelatedPerson) ], ... ; # 0..* Who is responsible for the observation # Observation.value[x] : 0..1 Actual result. One of these 11 fhir:Observation.valueQuantity [ Quantity ] fhir:Observation.valueCodeableConcept [ CodeableConcept ] fhir:Observation.valueString [ string ] fhir:Observation.valueBoolean [ boolean ] fhir:Observation.valueInteger [ integer ] fhir:Observation.valueRange [ Range ] fhir:Observation.valueRatio [ Ratio ] fhir:Observation.valueSampledData [ SampledData ]fhir: ]fhir:Observation.valueTime [ time ] fhir:Observation.valueDateTime [ dateTime ] fhir:Observation.valuePeriod [ Period ] fhir:Observation.dataAbsentReason [ CodeableConcept ]; # 0..1 Why the result is missingfhir: fhir:fhir:Observation.interpretation [ CodeableConcept ], ... ; # 0..* High, low, normal, etc. fhir:Observation.comment [ string ]; # 0..1 Comments about the test result value fhir:Observation.bodySite [ CodeableConcept ]; # 0..1 Observed body part fhir:Observation.method [ CodeableConcept ]; # 0..1 How it was done fhir:Observation.specimen [ Reference(Specimen) ]; # 0..1 Specimen used for this observation fhir:Observation.device [ Reference(Device|DeviceMetric) ]; # 0..1 (Measurement) Device fhir:Observation.referenceRange [ # 0..* Provides guide for interpretationfhir: fhir:fhir:Observation.referenceRange.low [ Quantity(SimpleQuantity) ]; # 0..1 Low Range, if relevant fhir:Observation.referenceRange.high [ Quantity(SimpleQuantity) ]; # 0..1 High Range, if relevant fhir:Observation.referenceRange.type [ CodeableConcept ]; # 0..1 Reference range qualifier fhir:Observation.referenceRange.appliesTo [ CodeableConcept ], ... ; # 0..* Reference range population fhir:Observation.referenceRange.age [ Range ]; # 0..1 Applicable age range, if relevantfhir: ], ...; fhir: fhir: fhir:fhir:Observation.referenceRange.text [ string ]; # 0..1 Text based reference range in an observation ], ...; fhir:Observation.hasMember [ Reference(Observation|QuestionnaireResponse|Sequence) ], ... ; # 0..* Related resource that belongs to the Observation group fhir:Observation.derivedFrom [ Reference(DocumentReference|ImagingStudy|Media|QuestionnaireResponse|Observation|Sequence) ], ... ; # 0..* Related measurements the observation is made from fhir:Observation.component [ # 0..* Component results fhir:Observation.component.code [ CodeableConcept ]; # 1..1 Type of component observation (code / type)# . One of these 10# Observation.component.value[x] : 0..1 Actual component result. One of these 11 fhir:Observation.component.valueQuantity [ Quantity ] fhir:Observation.component.valueCodeableConcept [ CodeableConcept ] fhir:Observation.component.valueString [ string ] fhir:Observation.component.valueBoolean [ boolean ] fhir:Observation.component.valueInteger [ integer ] fhir:Observation.component.valueRange [ Range ] fhir:Observation.component.valueRatio [ Ratio ] fhir:Observation.component.valueSampledData [ SampledData ]fhir: ]fhir:Observation.component.valueTime [ time ] fhir:Observation.component.valueDateTime [ dateTime ] fhir:Observation.component.valuePeriod [ Period ]fhir: fhir:fhir:Observation.component.dataAbsentReason [ CodeableConcept ]; # 0..1 Why the component result is missing fhir:Observation.component.interpretation [ CodeableConcept ], ... ; # 0..* High, low, normal, etc. fhir:Observation.component.referenceRange [ See Observation.referenceRange ], ... ; # 0..* Provides guide for interpretation of component result ], ...; ]
Changes
since
DSTU2
Release
3
| Observation | |
| Observation.basedOn |
|
| Observation.partOf |
|
| Observation.focus |
|
| Observation.encounter |
|
|
|
|
|
|
|
| Observation.value[x] |
|
|
|
|
|
|
|
| Observation.referenceRange.type |
|
| Observation.hasMember |
|
| Observation.derivedFrom |
|
|
|
|
| Observation.component.dataAbsentReason |
|
| Observation.component.interpretation |
|
|
|
|
|
|
|
See the Full Difference for further information
This analysis is available as XML or JSON .
See
R2
<-->
R3
<-->
R4
Conversion
Maps
(status
=
34
48
tests
that
all
of
which
14
fail
to
execute
ok.
All
tests
pass
.
34
fail
round-trip
testing
and
15
34
r3
resources
are
invalid
(58
(0
errors).
).
)
Alternate
See
the
Profiles
&
Extensions
and
the
alternate
definitions:
Master
Definition
(
XML
,
+
JSON
),
,
XML
Schema
/
Schematron
(for
)
+
JSON
Schema
,
ShEx
(for
Turtle
)
+
see
the
extensions
&
the
dependency
analysis
| Path | Definition | Type | Reference |
|---|---|---|---|
| Observation.status | Codes providing the status of an observation. | Required | ObservationStatus |
| Observation.category | Codes for high level observation categories. | Preferred |
|
|
Observation.code
Observation.component.code |
Codes identifying names of simple observations. | Example |
|
|
Observation.dataAbsentReason
Observation.component.dataAbsentReason |
Codes
specifying
why
the
result
|
Extensible |
|
|
Observation.interpretation
Observation.component.interpretation |
Codes identifying interpretations of observations. | Extensible |
|
| Observation.bodySite | Codes describing anatomical locations. May include laterality. | Example |
|
| Observation.method | Methods for simple observations. | Example |
|
| Observation.referenceRange.type | Code for the meaning of a reference range. |
|
|
| Observation.referenceRange.appliesTo | Codes identifying the population the reference range applies to. | Example |
|
| id | Level |
|
Description
|
Expression |
|
obs-3
|
Rule | Observation.referenceRange |
Must
have
at
least
a
low
or
a
high
or
text
|
|
|
obs-6
|
Rule | (base) |
dataAbsentReason
SHALL
only
be
present
if
Observation.value[x]
is
not
present
|
|
|
obs-7
|
Rule | (base) |
If
|
|
At
its
simplest,
a
resource
instances
instance
can
consist
of
only
a
code
and
a
value,
and
status
flag.
The
relevance
of
other
properties
will
vary
based
on
the
type
of
observation.
Profiles
will
be
are
created
to
provide
guidance
on
capturing
certain
types
of
simple
observations.
This
observations
for
a
given
use
case.
The
Observation
resource
focuses
on
the
level
of
detail
captured
by
most
systems.
However,
any
"simple"
observation
can
easily
for
a
given
use
case
there
may
be
broken
into
numerous
components
additional
constraints
and
sub-components
to
provide
additional
information
relevant
in
certain
circumstances.
As
with
other
resources,
extensions
can
be
used
to
introduce
this
additional
complexity.
Typically,
an
observation
is
made
about
the
subject
-
a
patient,
or
group
of
patients,
location,
or
device
-
and
the
distinction
between
the
subject
and
what
is
directly
measured
for
an
observation
is
specified
in
the
observation
code
itself
(
e.g.,
"Blood
Glucose")
and
does
not
need
to
be
represented
separately.
However,
three
attributes
may
be
used
for
representing
the
focus
of
the
observation
if
it
is
not
the
subject
itself.
The
specimen
and
bodySite
elements
are
used
to
represent
measurements
taken
on
subject
samples
or
anatomic
and
morphological
locations,
and
focus
represents
specific
aspect
of
the
subject
that
are
the
point
of
attention
such
as
another
observation
or
a
device
implanted
in
a
patient.
Many
observations
have
important
relationships
to
other
observations
and
need
to
be
grouped
together.
Three
These
structures
have
been
defined
to
do
this:
DiagnosticReport
and
DiagnosticReport.result
,
Observation
and
the
elements:
Observation.component
,
and
Observation
Observation.hasMember
and
.
The
Observation.related
Observation.derivedFrom
table
sections
below
provides
guidance
around
which
structure
to
use.
Because
the
idea
of
what
to
group
together
is
often
highly
contextual
and
based
upon
the
end
user's
point
of
view,
the
choice
of
which
structure
to
use
will
be
driven
by
jurisdiction,
organizational
practice
and
context.
Profiling
will
normally
be
necessary
for
implementation.
DiagnosticReport
relates
directly
to
an
order
(ProcedureRequest).
(ServiceRequest).
The
DiagnosticReport.code
names
the
panel
and
serves
as
the
grouping
element,
which
is
traditionally
referred
to
as
a
"panel"
"panel"
or
"battery"
"battery"
by
laboratories.
The
DiagnosticReport.result
element
references
the
individual
observations.
Several
examples
demonstrate
observation
grouping
using
DiagnosticReport
as
the
grouping
structure.
Observation.component
is
used
for
any
supporting
result
that
cannot
reasonably
be
interpreted
and
used
outside
the
scope
of
the
Observation
it
is
a
component
of.
Component
observations
may
make
up
the
separate
and
individual
parts
of
the
observation
or
may
provide
qualifying
information
to
Observation.code
and
may
only
be
able
to
be
understood
in
relation
to
the
Observation.code
(for
example,
see
the
$stats
operation
).
Therefore
all
code-value
and
component.code-component.value
pairs
need
to
be
taken
into
account
to
correctly
understand
the
meaning
of
the
observation.
Components
should
only
be
used
when
there
is
only
one
method,
one
observation,
one
performer,
one
device,
and
one
time.
Some
use
cases
for
using
this
structure
include:
On
the
other
hand,
any
observations
that
are
clinically
relevant
outside
the
context
of
being
a
component
of
another
observation
should
be
able
to
represented
by
separate
Observation
resources.
For
example
a
Body
Mass
Index
(BMI)
Observation
should
not
contain
components
for
height
and
weight
because
they
are
clinically
relevant
observations
on
their
own
and
should
be
understood
in
relation
to
represented
by
separate
Observation
resources.
See
the
section
below
on
how
to
relate
independent
Observations.
Observation.code
Observation.hasMember
(for
example,
see
the
and
$stats
Observation.derivedFrom
operation
and
the
core
extensions:
Observation-sequelTo
).
and
Observation-replaces
Observation.related
is
are
used
for
any
supporting
result
that
can
be
interpreted
and
used
on
its
own
and
has
one
or
more
different
values
for
method,
observation,
performer,
device,
time,
and/or
error
conditions.
The
top
level
observation
specifies
the
Two
common
use
cases
for
using
this
structure
are:
Observation.code
,
but
represents
the
"panel"
code,
typically
Observation.value
,
Observation.value[x]
is
not
present,
and
the
set
of
member
Observation.related
element.
Observation.hasMember
.
This
structure
permits
nested
grouping
when
used
with
DiagnosticReport
(e.g.
complex
micro
isolate
and
sensitivities
report
).
Observation.code
and
Observation.value[x]
are
present,
and
the
linked
observations
are
listed
in
Observation.derivedFrom
.
An
example
of
this
would
be
a
Body
Mass
Index
(BMI)
Observation
where
the
height
and
weight
measurements
are
referenced.
When
a
result
value
is
a
represented
as
a
predefined
concept
using
a
code,
valueCodeableConcept
is
used.
This
element
is
bound
to
a
value
set
comprised
of
a
standard
nomenclature
such
as
SNOMED
CT
or
a
source
system
("local")
("local")
coded
result
values.
Results may be coded in multiple value sets based on different code systems and these may be mapped using the ConceptMap resource and/or given as translations directly in the element as shown in the example below.
For
example
the
LOINC
43304-5
Chlamydia
trachomatis
rRNA
[Presence]
in
Unspecified
specimen
by
Probe
and
target
amplification
method
is
typically
associated
with
coded
presence/absence
concepts.
Using
the
coded
value
for
'negative'
with
a
standard
code
translation,
valueCodeableConcept
would
be:
"valueCodeableConcept": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "260385009",
"display": "Negative"
}, {
"system": "https://acme.lab/resultcodes",
"code": "NEG",
"display": "Negative"
}
],
"text": "Negative for Chlamydia Trachomatis rRNA"
}
When
the
data
element
is
usually
coded
or
the
type
associated
with
the
code
element
defines
a
coded
value,
use
valueCodeableConcept
even
if
there
is
no
appropriate
code
and
only
un-coded
free
text
is
available.
For
example
using
text
only,
the
valueCodeableConcept
element
would
be:
"valueCodeableConcept": {
"text": "uncoded free text result"
}
When
a
coded
answer
list
includes
a
concept
code
for
"other"
"other"
and
there
is
a
free
text
description
of
the
concept,
the
valueCodeableConcept.text
element
should
be
used
to
capture
the
full
meaning
of
the
source.
In
the
example
below,
the
answer
code
"Other"
"Other"
is
provided
in
the
valueCodeableConcept
element
and
the
text
value
supplied
value
in
the
CodeableConcept.text
element.
{
"resourceType": "Observation",
... snip ...
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "74076-1",
"display": "Medication or substance involved"
}
]
},
.. snip ...
"valueCodeableConcept": {
"coding": [
{
"system": "http://loinc.org",
"code": " LA20343-2",
"display": "Other substance: PLEASE SPECIFY"
}
],
"text": "Other: Blue pills I found under my couch"
}
.. snip ...
}
A
recurring
issue
for
many
observation
events,
regardless
of
the
particular
pattern,
is
determining
how
to
populate
observation.code
and
observation.value.
While
this
is
typically
straight-forward
for
laboratory
observations,
it
can
get
blurry
for
other
types
of
observations,
such
as
findings
and
disorders,
family
history
observations,
etc.
This
discussion
focuses
on
the
way
in
which
the
coded
representation
of
such
statements
is
expressed
using
the
Observation.code
and
Observation.value
elements.
There are two distinct facets that are central to a FHIR Observations:
Several
different
ways
of
representing
the
same
information
exist
using
different
combinations
of
the
Observation.code
and
Observation.value
.
Unconstrained
use
of
the
alternatives
presents
a
major
challenge
for
computation
of
semantic
equivalence
and
for
safe
interpretation
of
observations
originating
from
different
applications
and
users.
The
following
four
patterns
could
reasonably
represent
the
same
case.
Considering
that
the
Observation
resource
needs
to
support
many
use
cases,
the
appropriate
place
to
define
the
specific
pattern
is
expected
to
be
done
through
profiles
and
implementation
guides
as
specified
by
the
jurisdictions
and/or
organizations
implementing
FHIR:
Observation.code
represents
the
nature
of
the
observation
and
the
Observation.value
a
code
represents
the
non-numeric
result
value.
These
are
two
distinct
facets
that
are
central
to
a
FHIR
Observations.
For
example:
Observation.code
is
nearly
identical
to
1)
above,
but
the
level
of
granularity
is
shifted
from
the
value
to
code.
For
example:
Observation.code
is
also
expressed
in
a
way
that
does
not
specify
the
observation
action
but
indicates
a
statement
about
findings
reduced
to
a
single
name
(or
term),
as
in
the
above
item.
In
this
example,
the
Observation.value
is
present
and
"qualifies"
the
finding
typically
confirming
or
refuting
it.
For
example:
Observation.code
is
expressed
in
a
way
that
does
not
specify
the
observation
action
but
indicates
a
statement
about
findings
reduced
to
a
single
name
(or
term).
In
this
particular
example
in
that
context,
the
Observation.value
is
omitted.
For
example:
concept
code.
concept
code
is
used,
the
expression
SHOULD
represent
a
363787002
(Observable
entity(Observable
entity))
or
386053000
(Evaluation
procedure(evaluation
procedure))
.
(
The
code
is
'ASSERTION'
and
the
value
is
a
SNOMED
CT
concept
or
expression
)
The following list provides guidance on using codes or other observations to provide addition context that may alter how an observation is interpreted.:
If possible, use the most specific code you can
e.g.: Observation.code = 49134-0 Glucose [Mass/?volume] in Blood 2 hours post dose glucose
Alternatively, use code translations in Observation.code.
e.g.: Observation.code = coding-1: 20564-1 Oxygen saturation in Blood, coding-2: 59408-5 Oxygen saturation in Arterial blood by Pulse oximetry
Another alternative is to use the precondition extension .
e.g.:
Observation.code = 20564-1 Oxygen saturation in Blood, Observation.value: 98%
observation-precondition extension: Observation.code: 19995-0 Oxygen/Inspired gas Respiratory system by O2 Analyzer on ventilator Observation.value: 100%
value[x]
because
most
observations
result
values
are
never
truly
Boolean
due
to
exceptional
values
such
as
(these
"yes/no"
concepts
can
be
mapped
to
the
display
name
"true/false"
or
other
mutually
exclusive
terms
that
may
be
needed")
valueQuantity
would
be:
"valueQuantity": {
"value": 2.0,
"comparator": "<",
"unit": "mmol/l",
"system": "http://unitsofmeasure.org",
"code": "mmol/L"
}
If
the
value
was
valueCodeableConcept
element
would
be
absent
and
dataAbsentReason
element
would
be:
"dataAbsentReason": { "coding": [ { "system": "http://hl7.org/fhir/data-absent-reason", "code": "NaN", "display": "Not a Number" }"dataAbsentReason": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", "code": "NaN", "display": "Not a Number" } ] }
The
effectiveDateTime
or
effectivePeriod
is
the
time
that
the
observation
is
most
relevant
as
an
observation
of
the
subject.
For
a
biological
subject
(e.g.
a
human
patient),
this
is
the
physiologically
relevant
time
of
the
observation.
In
the
case
of
an
observation
using
a
specimen,
this
represents
the
start
and
end
of
the
specimen
collection
(e.g.
24
hour
24-hour
Urine
Sodium),
but
if
the
collection
time
is
sufficiently
short,
this
is
reported
as
a
point
in
time
value
(e.g.
normal
venipuncture).
In
the
case
of
an
observation
obtained
directly
from
a
subject
(e.g.
BP,
Chest
X-ray),
this
is
the
start
and
end
time
of
the
observation
process,
which
again,
is
often
reported
as
a
single
point
in
time.
Most
common
observations
will
only
have
one
generic
reference
range.
Reference
ranges
may
be
useful
for
lab
laboratory
tests
and
other
measures
like
systolic
blood
pressure,
pressure
but
will
have
little
relevance
for
something
like
"pregnancy
status".
"pregnancy
status".
Systems
MAY
choose
to
restrict
to
only
supplying
the
relevant
reference
range
based
on
knowledge
about
the
patient
(e.g.
specific
to
the
patient's
age,
gender,
weight
and
other
factors),
but
this
may
might
not
be
possible
or
appropriate.
Whenever
more
than
one
reference
range
is
supplied,
the
differences
between
them
SHOULD
be
provided
in
the
reference
range
and/or
age
properties.
If
a
measurement
or
test
could
not
be
completed
(for
example
if
the
specimen
is
unsatisfactory
or
the
provider
cancelled
the
order),
then
the
status
value
should
be
updated
to
"cancelled"
"cancelled"
and
the
specific
details
given
-
preferably
as
coded
values
in
the
dataAbsentReason
or
valueCodeableConcept
element.
Additional
information
may
be
provided
in
comments
as
well.
The
specimen
reject
example
demonstrates
this
using
a
coded
value
for
unsatisfactory
specimen
in
dataAbsentReason.
Genetic
reporting
makes
heavy
use
of
the
DiagnosticReport
and
Observation
resources.
An
implementation
guide
describing
how
to
represent
genetic
results
can
be
found
here
.
The
lastn
query
operation
meets
the
common
need
for
searching
for
the
most
recent
or
"last
known"
"last
known"
Observations
for
a
subject.
Examples
where
this
query
could
be
used:
See the Last N Observations Query section in the Observation resource operations page for more information and examples
STU
Note:
This
is
the
first
draft
of
this
operation
and
we
are
seeking
input
from
the
implementer
community
on
it
and
whether
it
should
be
extended
to
other
resources
such
as
DiagnosticReport.
This
operation
could
be
the
subject
of
future
connectathon
testing.
Feedback
is
welcome
here
.
The stats operation performs a set of statistical calculations on a set of clinical measurements such as a blood pressure as stored on the server. This operation is focused on Observation resources with valueQuantity elements that have UCUM unit codes. Examples where this operation could be used:
Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.
| Name | Type | Description | Expression | In Common |
| based-on | reference |
Reference
to
the
|
Observation.basedOn
( |
|
| category | token | The classification of the type of observation | Observation.category | |
| code | token | The code of the observation type | Observation.code |
|
| code-value-concept | composite | Code and coded value parameter pair |
code: code value-concept: value.as(CodeableConcept) |
|
| code-value-date | composite | Code and date/time value parameter pair |
code: code value-date: value.as(DateTime) | value.as(Period) |
|
| code-value-quantity | composite | Code and quantity value parameter pair |
code: code value-quantity: value.as(Quantity) |
|
| code-value-string | composite | Code and string value parameter pair |
code: code value-string: value.as(string) |
|
| combo-code | token | The code of the observation type or component type | Observation.code | Observation.component.code | |
| combo-code-value-concept | composite | Code and coded value parameter pair, including in components |
On
Observation
|
combo-code: code combo-value-concept: value.as(CodeableConcept) |
|
| combo-code-value-quantity | composite | Code and quantity value parameter pair, including in components |
On
Observation
|
combo-code: code combo-value-quantity: value.as(Quantity) |
|
| combo-data-absent-reason | token | The reason why the expected value in the element Observation.value[x] or Observation.component.value[x] is missing. | Observation.dataAbsentReason | Observation.component.dataAbsentReason | |
| combo-value-concept | token | The value or component value of the observation, if the value is a CodeableConcept |
|
|
| combo-value-quantity | quantity | The value or component value of the observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data) |
|
|
| component-code | token | The component code of the observation type | Observation.component.code | |
| component-code-value-concept | composite | Component code and component coded value parameter pair |
component-code: code component-value-concept: value.as(CodeableConcept) |
|
| component-code-value-quantity | composite | Component code and component quantity value parameter pair |
component-code: code component-value-quantity: value.as(Quantity) |
|
| component-data-absent-reason | token | The reason why the expected value in the element Observation.component.value[x] is missing. | Observation.component.dataAbsentReason | |
| component-value-concept | token | The value of the component observation, if the value is a CodeableConcept |
|
|
| component-value-quantity | quantity | The value of the component observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data) |
|
|
| data-absent-reason | token | The reason why the expected value in the element Observation.value[x] is missing. | Observation.dataAbsentReason | |
| date | date | Obtained date/time. If the obtained element is a period, a date that falls in the period | Observation.effective |
|
| derived-from | reference | Related measurements the observation is made from |
Observation.derivedFrom
( Media , Observation , ImagingStudy , Sequence , QuestionnaireResponse , DocumentReference ) | |
| device | reference | The Device that generated the observation data. |
Observation.device
( Device , DeviceMetric ) |
|
| encounter | reference | Encounter related to the observation |
( Encounter ) |
12 Resources |
|
|
|
The
|
(Any) |
|
|
|
|
|
( Observation , Sequence , QuestionnaireResponse ) |
|
|
|
|
The
|
|
|
|
|
|
|
|
|
|
|
|
|
( Immunization , MedicationDispense , MedicationAdministration , Procedure , ImagingStudy , MedicationStatement ) |
|
|
|
reference |
|
( |
29 Resources |
|
|
|
|
( Practitioner , Organization , CareTeam , Patient , PractitionerRole , RelatedPerson ) |
|
| specimen | reference | Specimen used for this observation |
Observation.specimen
( Specimen ) |
|
| status | token | The status of the observation | Observation.status | |
| subject | reference | The subject that the observation is about |
Observation.subject
( Group , Device , Patient , Location ) |
|
| value-concept | token | The value of the observation, if the value is a CodeableConcept |
|
|
| value-date | date | The value of the observation, if the value is a date or period of time |
|
|
| value-quantity | quantity | The value of the observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data) |
|
|
| value-string | string | The value of the observation, if the value is a string, and also searches in CodeableConcept.text |
|