This
page
is
part
of
the
FHIR
Specification
(v3.0.2:
STU
3).
(v3.3.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
FHIR
Infrastructure
Work
Group
|
Maturity Level : 5 |
|
Compartments : Not linked to any defined compartments |
Normative Candidate Note: This page is candidate normative content for R4 in the Infrastructure Package . Once normative, it will lose it's Maturity Level, and breaking changes will no longer be made.
A collection of error, warning or information messages that result from a system action.
Operation outcomes are sets of error, warning and information messages that provide detailed information about the outcome of an attempted system operation. They are provided as a direct system response or component of one and provide information about the outcome of the operation.
The OperationOutcome resource is used in the following circumstances:
This resource is referenced by GuidanceResponse and MessageHeader . The reference from GuidanceResponse indicates that there is an additional use context that needs to be addressed in the scope.
This resource is not used for reporting clinical or workflow issues associated with a proposed or ongoing action; these would be handled using DetectedIssue or other resources. The resource is not designed to be persisted or referenced from other parts of the workflow.
It
is
possible
to
have
both
OperationOutcome
and
DetectedIssue
together,
where
the
OperationOutcome
might
indicate
that
a
requested
action
was
rejected
due
to
a
clinical
issue
and
the
DetectedIssue
provides
the
details
of
the
issue.
This resource is referenced by GuidanceResponse and MessageHeader
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
Σ N | DomainResource |
Information
about
the
success/failure
of
an
action
Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension |
|
|
Σ | 1..* | BackboneElement |
A
single
issue
associated
with
the
action
|
|
?! Σ | 1..1 | code |
fatal
|
error
|
warning
|
information
IssueSeverity ( Required ) |
|
Σ | 1..1 | code |
Error
or
warning
code
IssueType ( Required ) |
|
Σ | 0..1 | CodeableConcept |
Additional
details
about
the
error
Operation Outcome Codes ( Example ) |
|
Σ | 0..1 | string | Additional diagnostic information about the issue |
|
Σ | 0..* | string |
Path
of
element(s)
related
to
issue
|
|
Σ | 0..* | string |
FHIRPath
of
element(s)
related
to
issue
|
Documentation
for
this
format
|
||||
UML Diagram ( Legend )
XML Template
<<OperationOutcome xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <issue> <!-- 1..* A single issue associated with the action -->
< <<severity value="[code]"/><!-- 1..1 fatal | error | warning | information --> <code value="[code]"/><!-- 1..1 Error or warning code --> <details><!-- 0..1 CodeableConcept Additional details about the error --></details>< < <<diagnostics value="[string]"/><!-- 0..1 Additional diagnostic information about the issue --> <location value="[string]"/><!-- 0..* Path of element(s) related to issue --> <expression value="[string]"/><!-- 0..* FHIRPath of element(s) related to issue --> </issue> </OperationOutcome>
JSON Template
{
"resourceType" : "",
"resourceType" : "OperationOutcome",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"
"
"
"
"
"
"
"issue" : [{ // R! A single issue associated with the action
"severity" : "<code>", // R! fatal | error | warning | information
"code" : "<code>", // R! Error or warning code
"details" : { CodeableConcept }, // Additional details about the error
"diagnostics" : "<string>", // Additional diagnostic information about the issue
"location" : ["<string>"], // Path of element(s) related to issue
"expression" : ["<string>"] // FHIRPath of element(s) related to issue
}]
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:OperationOutcome; 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:OperationOutcome.issue [ # 1..* A single issue associated with the action fhir:OperationOutcome.issue.severity [ code ]; # 1..1 fatal | error | warning | information fhir:OperationOutcome.issue.code [ code ]; # 1..1 Error or warning code fhir:OperationOutcome.issue.details [ CodeableConcept ]; # 0..1 Additional details about the error fhir:OperationOutcome.issue.diagnostics [ string ]; # 0..1 Additional diagnostic information about the issue fhir:OperationOutcome.issue.location [ string ], ... ; # 0..* Path of element(s) related to issue
fhir:fhir:OperationOutcome.issue.expression [ string ], ... ; # 0..* FHIRPath of element(s) related to issue ], ...; ]
Changes
since
DSTU2
R3
| OperationOutcome |
See the Full Difference for further information
This analysis is available as XML or JSON .
See R2 <--> R3 Conversion Maps (status = 6 tests that all execute ok. All tests pass round-trip testing and all r3 resources are valid.). Note: these have note yet been updated to be R3 to R4
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
Σ N | DomainResource |
Information
about
the
success/failure
of
an
action
Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension |
|
|
Σ | 1..* | BackboneElement |
A
single
issue
associated
with
the
action
|
|
?! Σ | 1..1 | code |
fatal
|
error
|
warning
|
information
IssueSeverity ( Required ) |
|
Σ | 1..1 | code |
Error
or
warning
code
IssueType ( Required ) |
|
Σ | 0..1 | CodeableConcept |
Additional
details
about
the
error
Operation Outcome Codes ( Example ) |
|
Σ | 0..1 | string | Additional diagnostic information about the issue |
|
Σ | 0..* | string |
Path
of
element(s)
related
to
issue
|
|
Σ | 0..* | string |
FHIRPath
of
element(s)
related
to
issue
|
Documentation
for
this
format
|
||||
XML Template
<<OperationOutcome xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <issue> <!-- 1..* A single issue associated with the action -->
< <<severity value="[code]"/><!-- 1..1 fatal | error | warning | information --> <code value="[code]"/><!-- 1..1 Error or warning code --> <details><!-- 0..1 CodeableConcept Additional details about the error --></details>< < <<diagnostics value="[string]"/><!-- 0..1 Additional diagnostic information about the issue --> <location value="[string]"/><!-- 0..* Path of element(s) related to issue --> <expression value="[string]"/><!-- 0..* FHIRPath of element(s) related to issue --> </issue> </OperationOutcome>
JSON Template
{
"resourceType" : "",
"resourceType" : "OperationOutcome",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"
"
"
"
"
"
"
"issue" : [{ // R! A single issue associated with the action
"severity" : "<code>", // R! fatal | error | warning | information
"code" : "<code>", // R! Error or warning code
"details" : { CodeableConcept }, // Additional details about the error
"diagnostics" : "<string>", // Additional diagnostic information about the issue
"location" : ["<string>"], // Path of element(s) related to issue
"expression" : ["<string>"] // FHIRPath of element(s) related to issue
}]
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:OperationOutcome; 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:OperationOutcome.issue [ # 1..* A single issue associated with the action fhir:OperationOutcome.issue.severity [ code ]; # 1..1 fatal | error | warning | information fhir:OperationOutcome.issue.code [ code ]; # 1..1 Error or warning code fhir:OperationOutcome.issue.details [ CodeableConcept ]; # 0..1 Additional details about the error fhir:OperationOutcome.issue.diagnostics [ string ]; # 0..1 Additional diagnostic information about the issue fhir:OperationOutcome.issue.location [ string ], ... ; # 0..* Path of element(s) related to issue
fhir:fhir:OperationOutcome.issue.expression [ string ], ... ; # 0..* FHIRPath of element(s) related to issue ], ...; ]
Changes since DSTU2
| OperationOutcome |
See the Full Difference for further information
This analysis is available as XML or JSON .
See R2 <--> R3 Conversion Maps (status = 6 tests that all execute ok. All tests pass round-trip testing and all r3 resources are valid.). Note: these have note yet been updated to be R3 to R4
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 |
|---|---|---|---|
| OperationOutcome.issue.severity | How the issue affects the success of the action. | Required | IssueSeverity |
| OperationOutcome.issue.code | A code that describes the type of issue. | Required | IssueType |
| OperationOutcome.issue.details | A code that provides details as the exact issue. | Example | Operation Outcome Codes |
On the RESTful interface, operation outcome resources are only relevant when a level of computable detail is required that is more granular than that provided by the HTTP response codes. This granularity could include:
Operation
outcomes
returned
SHOULD
be
in
alignment
with
the
HTTP
response
code.
For
example,
if
the
HTTP
code
indicates
a
failure
(300+),
at
least
one
of
the
issues
should
have
a
severity
of
"error",
"error",
indicating
the
reason
for
the
failure.
Each
issue
in
an
operation
outcome
may
have
a
location
reported.
Systems
that
create
operation
outcomes
SHOULD
populate
the
location
of
an
error.
A
correctly
propulated
populated
location
can
allow
client
systems
to:
In
order
to
support
these
kinds
of
usages,
this
these
applications
need
to
use
the
location
element
consistently.
Applications
can
use
the
location
element
to
refer
to
a
location
inside
a
resource,
or
some
location
in
the
HTTP
request
(when
appropriate).
While resources may be represented in XML, JSON, or other forms, error locations are always reported using a simplified XPath notation:
<location value="/f:Patient/f:identifier"/><location value="/f:Patient/f:identifier"/>
The XPath must use the FHIR standard XPath prefixes f: and h: for the FHIR and XHTML namespaces respectively.
The XPath here can be used to automatically find the relevant XML element in a resource if the resource is represented in XML. Because resources are often represented in JSON, and because applications will often process the XPath directly (e.g. to determine the relevant widget), the XPath statement must be simple. Specifically, the XPath SHALL only contain element names and repetition indicators. So this is legal:
<location value="/f:Patient/f:identifier[2]/f:label"/><location value="/f:Patient/f:identifier[2]/f:label"/>
but this is not:
<location value="/f:Patient/f:identifier[f:system/@value='http://example.com/mrn']/f:label"/><location value="/f:Patient/f:identifier[f:system/@value='http://example.com/mrn']/f:label"/>
Because
the
Xpath
is
required
to
be
simple,
it
can
be
converted
to
JsonPointer
by
dropping
the
namespace
prefixes,
and
correcting
for
array
offsets.
The
XPaths
above
have
these
equivalent
JsonPointer
representations:
Patient/identifier Patient/identifier/2/label
Note that correcting for array offsets may require knowledge of which elements are Arrays in JSON. It is also possible to convert the XPath statements to JsonPath, though there is no single standard for JsonPath.
Servers
may
also
need
to
report
errors
in
the
HTTP
headers
-
especially
query
parameters
when
processing
searches.
Errors
are
reported
using
a
case
sensitive
location
that
has
two
parts,
a
fixed
"http"
"http"
and
the
header
or
query
parameter
name
separated
by
a
".".
".".
Some
examples:
| Location | Description |
| http.name:exact |
A
reference
to
the
search
parameter
|
| http.Authorization | A reference to the Authorization header - perhaps to indicate that it is missing, and some form of authentication is required. |