This
page
is
part
of
the
FHIR
Specification
(v1.0.2:
DSTU
(v3.0.2:
STU
2).
3).
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
R3
R2
FHIR
Infrastructure
Work
Group
|
Maturity
Level
:
|
Trial Use | Compartments : Not linked to any defined compartments |
A formal computable definition of an operation (on the RESTful interface) or a named query (using the search interaction).
The OperationDefinition resource provides a formal computable definition of an operation or a named query . The OperationDefinition serves two principal purposes:
See
below
for
further
information
about
these,
and
about
how
Operations
operations
and
Named
Queries
named
queries
are
executed.
Operation
Definitions
OperationDefinitions
are
published
to
define
operations
that
servers
can
implement
in
a
common
fashion.
The
FHIR
specification
itself
describes
a
number
some
(see
below),
and
other
organizations,
including
organizations
(including
IHE,
national
programs,
jurisdictions
and
vendors
vendors)
are
able
to
publish
additional
operation
definitions.
OperationDefinitions.
OperationDefinition resources are referred to from two different places:
This
resource
is
referenced
by
conformance
CapabilityStatement
and
ServiceDefinition
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
DomainResource |
Definition
of
an
operation
or
a
named
query
Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension |
||
|
Σ | 0..1 | uri |
Logical
|
|
Σ | 0..1 | string | Business version of the operation definition |
|
Σ | 1..1 | string | Name for this operation definition (computer friendly) |
|
?! Σ | 1..1 | code |
draft
|
active
|
retired
|
unknown
|
|
1..1 | code |
operation
|
query
OperationKind ( Required ) |
|
|
?! Σ | 0..1 | boolean | For testing purposes, not real usage |
| Σ | 0..1 | dateTime | Date this was last changed |
![]() ![]() |
Σ | 0..1 | string |
Name
of
the
publisher
|
|
Σ | 0..* |
|
Contact
details
|
|
0..1 |
|
Natural
language
description
of
|
|
|
Σ | 0..* |
|
Context
the
content
is
intended
to
support
|
|
Σ
|
0..* | CodeableConcept |
Intended
jurisdiction
for
Jurisdiction ValueSet |
|
0..1 |
|
Why
|
|
|
Σ | 0..1 | boolean | Whether content is unchanged by the operation |
|
Σ | 1..1 | code | Name used to invoke the operation |
|
0..1 | string | Additional information about use | |
|
Σ | 0..1 | Reference ( OperationDefinition ) | Marks this as a profile of the base |
| Σ | 0..* | code |
Types
this
operation
applies
to
ResourceType ( Required ) |
![]() ![]() |
Σ | 1..1 | boolean | Invoke at the system level? |
|
Σ
|
1..1 | boolean |
Invole
at
|
|
Σ | 1..1 | boolean | Invoke on an instance? |
|
I | 0..* | BackboneElement |
Parameters
for
the
operation/query
+ Either a type must be provided, or parts + A search type can only be specified for parameters of type string |
|
1..1 | code | Name in Parameters.parameter.name or in URL | |
|
1..1 | code |
in
|
out
OperationParameterUse ( Required ) |
|
|
1..1 | integer | Minimum Cardinality | |
|
1..1 | string | Maximum Cardinality (a number or *) | |
|
0..1 | string | Description of meaning/use | |
|
I | 0..1 | code |
What
type
this
parameter
has
|
| I | 0..1 | code |
number
|
date
|
string
|
token
|
reference
|
composite
|
quantity
|
uri
SearchParamType ( Required ) |
![]() ![]() ![]() |
0..1 | Reference ( StructureDefinition ) | Profile on the type | |
|
0..1 | BackboneElement | ValueSet details if this is coded | |
|
1..1 | code |
required
|
extensible
|
preferred
|
example
BindingStrength ( Required ) |
|
|
1..1 | Source of value set | ||
|
uri | |||
|
Reference ( ValueSet ) | |||
|
I | 0..* | see parameter |
Parts
of
a
|
| 0..* | BackboneElement |
Define
overloaded
variants
for
when
generating
code
| |
![]() ![]() ![]() | 0..* | string |
Name
of
parameter
to
include
in
overload
| |
![]() ![]() ![]() | 0..1 | string | Comments to go on overload | |
Documentation
for
this
format
|
||||
UML Diagram ( Legend )
XML Template
<<OperationDefinition xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension -->
< < < < < < < < < <</telecom> </contact> < < < < < < <</base> < < < < < < < < < < <</profile> < < <</valueSet[x]><url value="[uri]"/><!-- 0..1 Logical URI to reference this operation definition (globally unique) --> <version value="[string]"/><!-- 0..1 Business version of the operation definition --> <name value="[string]"/><!-- 1..1 Name for this operation definition (computer friendly) --> <status value="[code]"/><!-- 1..1 draft | active | retired | unknown --> <kind value="[code]"/><!-- 1..1 operation | query --> <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage --> <date value="[dateTime]"/><!-- 0..1 Date this was last changed --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) --> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact> <description value="[markdown]"/><!-- 0..1 Natural language description of the operation definition --> <useContext><!-- 0..* UsageContext Context the content is intended to support --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for operation definition (if applicable) --></jurisdiction> <purpose value="[markdown]"/><!-- 0..1 Why this operation definition is defined --> <idempotent value="[boolean]"/><!-- 0..1 Whether content is unchanged by the operation --> <code value="[code]"/><!-- 1..1 Name used to invoke the operation --> <comment value="[string]"/><!-- 0..1 Additional information about use --> <base><!-- 0..1 Reference(OperationDefinition) Marks this as a profile of the base --></base> <resource value="[code]"/><!-- 0..* Types this operation applies to --> <system value="[boolean]"/><!-- 1..1 Invoke at the system level? --> <type value="[boolean]"/><!-- 1..1 Invole at the type level? --> <instance value="[boolean]"/><!-- 1..1 Invoke on an instance? --> <parameter> <!-- 0..* Parameters for the operation/query --> <name value="[code]"/><!-- 1..1 Name in Parameters.parameter.name or in URL --> <use value="[code]"/><!-- 1..1 in | out --> <min value="[integer]"/><!-- 1..1 Minimum Cardinality --> <max value="[string]"/><!-- 1..1 Maximum Cardinality (a number or *) --> <documentation value="[string]"/><!-- 0..1 Description of meaning/use --> <type value="[code]"/><!--0..1 What type this parameter has --> <searchType value="[code]"/><!--
0..1 number | date | string | token | reference | composite | quantity | uri --> <profile><!-- 0..1 Reference(StructureDefinition) Profile on the type --></profile> <binding> <!-- 0..1 ValueSet details if this is coded --> <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example --> <valueSet[x]><!-- 1..1 uri|Reference(ValueSet) Source of value set --></valueSet[x]> </binding>
<</part><part><!--0..* Content as for OperationDefinition.parameter Parts of a nested Parameter --></part> </parameter> <overload> <!-- 0..* Define overloaded variants for when generating code --> <parameterName value="[string]"/><!-- 0..* Name of parameter to include in overload --> <comment value="[string]"/><!-- 0..1 Comments to go on overload --> </overload> </OperationDefinition>
JSON Template
{ "resourceType" : "",{"resourceType" : "OperationDefinition", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension
" " " " " " " " " " }], " " " " " " " " " " " " " " " " " " " ""url" : "<uri>", // Logical URI to reference this operation definition (globally unique) "version" : "<string>", // Business version of the operation definition "name" : "<string>", // R! Name for this operation definition (computer friendly) "status" : "<code>", // R! draft | active | retired | unknown "kind" : "<code>", // R! operation | query "experimental" : <boolean>, // For testing purposes, not real usage "date" : "<dateTime>", // Date this was last changed "publisher" : "<string>", // Name of the publisher (organization or individual) "contact" : [{ ContactDetail }], // Contact details for the publisher "description" : "<markdown>", // Natural language description of the operation definition "useContext" : [{ UsageContext }], // Context the content is intended to support "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for operation definition (if applicable) "purpose" : "<markdown>", // Why this operation definition is defined "idempotent" : <boolean>, // Whether content is unchanged by the operation "code" : "<code>", // R! Name used to invoke the operation "comment" : "<string>", // Additional information about use "base" : { Reference(OperationDefinition) }, // Marks this as a profile of the base "resource" : ["<code>"], // Types this operation applies to "system" : <boolean>, // R! Invoke at the system level? "type" : <boolean>, // R! Invole at the type level? "instance" : <boolean>, // R! Invoke on an instance? "parameter" : [{ // Parameters for the operation/query "name" : "<code>", // R! Name in Parameters.parameter.name or in URL "use" : "<code>", // R! in | out "min" : <integer>, // R! Minimum Cardinality "max" : "<string>", // R! Maximum Cardinality (a number or *) "documentation" : "<string>", // Description of meaning/use "type" : "<code>", // C? What type this parameter has "searchType" : "<code>", // C? number | date | string | token | reference | composite | quantity | uri "profile" : { Reference(StructureDefinition) }, // Profile on the type "binding" : { // ValueSet details if this is coded "strength" : "<code>", // R! required | extensible | preferred | example // valueSet[x]: Source of value set. One of these 2:">" " }"valueSetUri" : "<uri>" "valueSetReference" : { Reference(ValueSet) } },""part" : [{ Content as for OperationDefinition.parameter }] // C? Parts of a nested Parameter }], "overload" : [{ // Define overloaded variants for when generating code "parameterName" : ["<string>"], // Name of parameter to include in overload "comment" : "<string>" // Comments to go on overload }] }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:OperationDefinition; 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:OperationDefinition.url [ uri ]; # 0..1 Logical URI to reference this operation definition (globally unique) fhir:OperationDefinition.version [ string ]; # 0..1 Business version of the operation definition fhir:OperationDefinition.name [ string ]; # 1..1 Name for this operation definition (computer friendly) fhir:OperationDefinition.status [ code ]; # 1..1 draft | active | retired | unknown fhir:OperationDefinition.kind [ code ]; # 1..1 operation | query fhir:OperationDefinition.experimental [ boolean ]; # 0..1 For testing purposes, not real usage fhir:OperationDefinition.date [ dateTime ]; # 0..1 Date this was last changed fhir:OperationDefinition.publisher [ string ]; # 0..1 Name of the publisher (organization or individual) fhir:OperationDefinition.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:OperationDefinition.description [ markdown ]; # 0..1 Natural language description of the operation definition fhir:OperationDefinition.useContext [ UsageContext ], ... ; # 0..* Context the content is intended to support fhir:OperationDefinition.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for operation definition (if applicable) fhir:OperationDefinition.purpose [ markdown ]; # 0..1 Why this operation definition is defined fhir:OperationDefinition.idempotent [ boolean ]; # 0..1 Whether content is unchanged by the operation fhir:OperationDefinition.code [ code ]; # 1..1 Name used to invoke the operation fhir:OperationDefinition.comment [ string ]; # 0..1 Additional information about use fhir:OperationDefinition.base [ Reference(OperationDefinition) ]; # 0..1 Marks this as a profile of the base fhir:OperationDefinition.resource [ code ], ... ; # 0..* Types this operation applies to fhir:OperationDefinition.system [ boolean ]; # 1..1 Invoke at the system level? fhir:OperationDefinition.type [ boolean ]; # 1..1 Invole at the type level? fhir:OperationDefinition.instance [ boolean ]; # 1..1 Invoke on an instance? fhir:OperationDefinition.parameter [ # 0..* Parameters for the operation/query fhir:OperationDefinition.parameter.name [ code ]; # 1..1 Name in Parameters.parameter.name or in URL fhir:OperationDefinition.parameter.use [ code ]; # 1..1 in | out fhir:OperationDefinition.parameter.min [ integer ]; # 1..1 Minimum Cardinality fhir:OperationDefinition.parameter.max [ string ]; # 1..1 Maximum Cardinality (a number or *) fhir:OperationDefinition.parameter.documentation [ string ]; # 0..1 Description of meaning/use fhir:OperationDefinition.parameter.type [ code ]; # 0..1 What type this parameter has fhir:OperationDefinition.parameter.searchType [ code ]; # 0..1 number | date | string | token | reference | composite | quantity | uri fhir:OperationDefinition.parameter.profile [ Reference(StructureDefinition) ]; # 0..1 Profile on the type fhir:OperationDefinition.parameter.binding [ # 0..1 ValueSet details if this is coded fhir:OperationDefinition.parameter.binding.strength [ code ]; # 1..1 required | extensible | preferred | example # OperationDefinition.parameter.binding.valueSet[x] : 1..1 Source of value set. One of these 2 fhir:OperationDefinition.parameter.binding.valueSetUri [ uri ] fhir:OperationDefinition.parameter.binding.valueSetReference [ Reference(ValueSet) ] ]; fhir:OperationDefinition.parameter.part [ See OperationDefinition.parameter ], ... ; # 0..* Parts of a nested Parameter ], ...; fhir:OperationDefinition.overload [ # 0..* Define overloaded variants for when generating code fhir:OperationDefinition.overload.parameterName [ string ], ... ; # 0..* Name of parameter to include in overload fhir:OperationDefinition.overload.comment [ string ]; # 0..1 Comments to go on overload ], ...; ]
Changes since DSTU2
| OperationDefinition | |
| OperationDefinition.status |
|
| OperationDefinition.experimental |
|
| OperationDefinition.contact |
|
| OperationDefinition.description |
|
| OperationDefinition.useContext |
|
| OperationDefinition.jurisdiction |
|
| OperationDefinition.purpose |
|
| OperationDefinition.comment |
|
| OperationDefinition.resource |
|
| OperationDefinition.type |
|
| OperationDefinition.parameter.type |
|
| OperationDefinition.parameter.searchType |
|
| OperationDefinition.overload |
|
| OperationDefinition.overload.parameterName |
|
| OperationDefinition.overload.comment |
|
| OperationDefinition.contact.name |
|
| OperationDefinition.contact.telecom |
|
See the Full Difference for further information
This analysis is available as XML or JSON .
See R2 <--> R3 Conversion Maps (status = 18 tests that all execute ok. 1 fail round-trip testing and all r3 resources are valid.).
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
DomainResource |
Definition
of
an
operation
or
a
named
query
Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension |
||
|
Σ | 0..1 | uri |
Logical
|
|
Σ | 0..1 | string | Business version of the operation definition |
|
Σ | 1..1 | string | Name for this operation definition (computer friendly) |
|
?! Σ | 1..1 | code |
draft
|
active
|
retired
|
unknown
|
|
1..1 | code |
operation
|
query
OperationKind ( Required ) |
|
|
?! Σ | 0..1 | boolean | For testing purposes, not real usage |
| Σ | 0..1 | dateTime | Date this was last changed |
![]() ![]() |
Σ | 0..1 | string |
Name
of
the
publisher
|
|
Σ | 0..* |
|
Contact
details
|
|
0..1 |
|
Natural
language
description
of
|
|
|
Σ | 0..* |
|
Context
the
content
is
intended
to
support
|
|
Σ
|
0..* | CodeableConcept |
Intended
jurisdiction
for
Jurisdiction ValueSet |
|
0..1 |
|
Why
|
|
|
Σ | 0..1 | boolean | Whether content is unchanged by the operation |
|
Σ | 1..1 | code | Name used to invoke the operation |
|
0..1 | string | Additional information about use | |
|
Σ | 0..1 | Reference ( OperationDefinition ) | Marks this as a profile of the base |
| Σ | 0..* | code |
Types
this
operation
applies
to
ResourceType ( Required ) |
![]() ![]() |
Σ | 1..1 | boolean | Invoke at the system level? |
|
Σ
|
1..1 | boolean |
Invole
at
|
|
Σ | 1..1 | boolean | Invoke on an instance? |
|
I | 0..* | BackboneElement |
Parameters
for
the
operation/query
+ Either a type must be provided, or parts + A search type can only be specified for parameters of type string |
|
1..1 | code | Name in Parameters.parameter.name or in URL | |
|
1..1 | code |
in
|
out
OperationParameterUse ( Required ) |
|
|
1..1 | integer | Minimum Cardinality | |
|
1..1 | string | Maximum Cardinality (a number or *) | |
|
0..1 | string | Description of meaning/use | |
|
I | 0..1 | code |
What
type
this
parameter
has
|
| I | 0..1 | code |
number
|
date
|
string
|
token
|
reference
|
composite
|
quantity
|
uri
SearchParamType ( Required ) |
![]() ![]() ![]() |
0..1 | Reference ( StructureDefinition ) | Profile on the type | |
|
0..1 | BackboneElement | ValueSet details if this is coded | |
|
1..1 | code |
required
|
extensible
|
preferred
|
example
BindingStrength ( Required ) |
|
|
1..1 | Source of value set | ||
|
uri | |||
|
Reference ( ValueSet ) | |||
|
I | 0..* | see parameter |
Parts
of
a
|
| 0..* | BackboneElement |
Define
overloaded
variants
for
when
generating
code
| |
![]() ![]() ![]() | 0..* | string |
Name
of
parameter
to
include
in
overload
| |
![]() ![]() ![]() | 0..1 | string | Comments to go on overload | |
Documentation
for
this
format
|
||||
XML Template
<<OperationDefinition xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension -->
< < < < < < < < < <</telecom> </contact> < < < < < < <</base> < < < < < < < < < < <</profile> < < <</valueSet[x]><url value="[uri]"/><!-- 0..1 Logical URI to reference this operation definition (globally unique) --> <version value="[string]"/><!-- 0..1 Business version of the operation definition --> <name value="[string]"/><!-- 1..1 Name for this operation definition (computer friendly) --> <status value="[code]"/><!-- 1..1 draft | active | retired | unknown --> <kind value="[code]"/><!-- 1..1 operation | query --> <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage --> <date value="[dateTime]"/><!-- 0..1 Date this was last changed --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) --> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact> <description value="[markdown]"/><!-- 0..1 Natural language description of the operation definition --> <useContext><!-- 0..* UsageContext Context the content is intended to support --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for operation definition (if applicable) --></jurisdiction> <purpose value="[markdown]"/><!-- 0..1 Why this operation definition is defined --> <idempotent value="[boolean]"/><!-- 0..1 Whether content is unchanged by the operation --> <code value="[code]"/><!-- 1..1 Name used to invoke the operation --> <comment value="[string]"/><!-- 0..1 Additional information about use --> <base><!-- 0..1 Reference(OperationDefinition) Marks this as a profile of the base --></base> <resource value="[code]"/><!-- 0..* Types this operation applies to --> <system value="[boolean]"/><!-- 1..1 Invoke at the system level? --> <type value="[boolean]"/><!-- 1..1 Invole at the type level? --> <instance value="[boolean]"/><!-- 1..1 Invoke on an instance? --> <parameter> <!-- 0..* Parameters for the operation/query --> <name value="[code]"/><!-- 1..1 Name in Parameters.parameter.name or in URL --> <use value="[code]"/><!-- 1..1 in | out --> <min value="[integer]"/><!-- 1..1 Minimum Cardinality --> <max value="[string]"/><!-- 1..1 Maximum Cardinality (a number or *) --> <documentation value="[string]"/><!-- 0..1 Description of meaning/use --> <type value="[code]"/><!--0..1 What type this parameter has --> <searchType value="[code]"/><!--
0..1 number | date | string | token | reference | composite | quantity | uri --> <profile><!-- 0..1 Reference(StructureDefinition) Profile on the type --></profile> <binding> <!-- 0..1 ValueSet details if this is coded --> <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example --> <valueSet[x]><!-- 1..1 uri|Reference(ValueSet) Source of value set --></valueSet[x]> </binding>
<</part><part><!--0..* Content as for OperationDefinition.parameter Parts of a nested Parameter --></part> </parameter> <overload> <!-- 0..* Define overloaded variants for when generating code --> <parameterName value="[string]"/><!-- 0..* Name of parameter to include in overload --> <comment value="[string]"/><!-- 0..1 Comments to go on overload --> </overload> </OperationDefinition>
JSON Template
{ "resourceType" : "",{"resourceType" : "OperationDefinition", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension
" " " " " " " " " " }], " " " " " " " " " " " " " " " " " " " ""url" : "<uri>", // Logical URI to reference this operation definition (globally unique) "version" : "<string>", // Business version of the operation definition "name" : "<string>", // R! Name for this operation definition (computer friendly) "status" : "<code>", // R! draft | active | retired | unknown "kind" : "<code>", // R! operation | query "experimental" : <boolean>, // For testing purposes, not real usage "date" : "<dateTime>", // Date this was last changed "publisher" : "<string>", // Name of the publisher (organization or individual) "contact" : [{ ContactDetail }], // Contact details for the publisher "description" : "<markdown>", // Natural language description of the operation definition "useContext" : [{ UsageContext }], // Context the content is intended to support "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for operation definition (if applicable) "purpose" : "<markdown>", // Why this operation definition is defined "idempotent" : <boolean>, // Whether content is unchanged by the operation "code" : "<code>", // R! Name used to invoke the operation "comment" : "<string>", // Additional information about use "base" : { Reference(OperationDefinition) }, // Marks this as a profile of the base "resource" : ["<code>"], // Types this operation applies to "system" : <boolean>, // R! Invoke at the system level? "type" : <boolean>, // R! Invole at the type level? "instance" : <boolean>, // R! Invoke on an instance? "parameter" : [{ // Parameters for the operation/query "name" : "<code>", // R! Name in Parameters.parameter.name or in URL "use" : "<code>", // R! in | out "min" : <integer>, // R! Minimum Cardinality "max" : "<string>", // R! Maximum Cardinality (a number or *) "documentation" : "<string>", // Description of meaning/use "type" : "<code>", // C? What type this parameter has "searchType" : "<code>", // C? number | date | string | token | reference | composite | quantity | uri "profile" : { Reference(StructureDefinition) }, // Profile on the type "binding" : { // ValueSet details if this is coded "strength" : "<code>", // R! required | extensible | preferred | example // valueSet[x]: Source of value set. One of these 2:">" " }"valueSetUri" : "<uri>" "valueSetReference" : { Reference(ValueSet) } },""part" : [{ Content as for OperationDefinition.parameter }] // C? Parts of a nested Parameter }], "overload" : [{ // Define overloaded variants for when generating code "parameterName" : ["<string>"], // Name of parameter to include in overload "comment" : "<string>" // Comments to go on overload }] }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:OperationDefinition; 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:OperationDefinition.url [ uri ]; # 0..1 Logical URI to reference this operation definition (globally unique) fhir:OperationDefinition.version [ string ]; # 0..1 Business version of the operation definition fhir:OperationDefinition.name [ string ]; # 1..1 Name for this operation definition (computer friendly) fhir:OperationDefinition.status [ code ]; # 1..1 draft | active | retired | unknown fhir:OperationDefinition.kind [ code ]; # 1..1 operation | query fhir:OperationDefinition.experimental [ boolean ]; # 0..1 For testing purposes, not real usage fhir:OperationDefinition.date [ dateTime ]; # 0..1 Date this was last changed fhir:OperationDefinition.publisher [ string ]; # 0..1 Name of the publisher (organization or individual) fhir:OperationDefinition.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:OperationDefinition.description [ markdown ]; # 0..1 Natural language description of the operation definition fhir:OperationDefinition.useContext [ UsageContext ], ... ; # 0..* Context the content is intended to support fhir:OperationDefinition.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for operation definition (if applicable) fhir:OperationDefinition.purpose [ markdown ]; # 0..1 Why this operation definition is defined fhir:OperationDefinition.idempotent [ boolean ]; # 0..1 Whether content is unchanged by the operation fhir:OperationDefinition.code [ code ]; # 1..1 Name used to invoke the operation fhir:OperationDefinition.comment [ string ]; # 0..1 Additional information about use fhir:OperationDefinition.base [ Reference(OperationDefinition) ]; # 0..1 Marks this as a profile of the base fhir:OperationDefinition.resource [ code ], ... ; # 0..* Types this operation applies to fhir:OperationDefinition.system [ boolean ]; # 1..1 Invoke at the system level? fhir:OperationDefinition.type [ boolean ]; # 1..1 Invole at the type level? fhir:OperationDefinition.instance [ boolean ]; # 1..1 Invoke on an instance? fhir:OperationDefinition.parameter [ # 0..* Parameters for the operation/query fhir:OperationDefinition.parameter.name [ code ]; # 1..1 Name in Parameters.parameter.name or in URL fhir:OperationDefinition.parameter.use [ code ]; # 1..1 in | out fhir:OperationDefinition.parameter.min [ integer ]; # 1..1 Minimum Cardinality fhir:OperationDefinition.parameter.max [ string ]; # 1..1 Maximum Cardinality (a number or *) fhir:OperationDefinition.parameter.documentation [ string ]; # 0..1 Description of meaning/use fhir:OperationDefinition.parameter.type [ code ]; # 0..1 What type this parameter has fhir:OperationDefinition.parameter.searchType [ code ]; # 0..1 number | date | string | token | reference | composite | quantity | uri fhir:OperationDefinition.parameter.profile [ Reference(StructureDefinition) ]; # 0..1 Profile on the type fhir:OperationDefinition.parameter.binding [ # 0..1 ValueSet details if this is coded fhir:OperationDefinition.parameter.binding.strength [ code ]; # 1..1 required | extensible | preferred | example # OperationDefinition.parameter.binding.valueSet[x] : 1..1 Source of value set. One of these 2 fhir:OperationDefinition.parameter.binding.valueSetUri [ uri ] fhir:OperationDefinition.parameter.binding.valueSetReference [ Reference(ValueSet) ] ]; fhir:OperationDefinition.parameter.part [ See OperationDefinition.parameter ], ... ; # 0..* Parts of a nested Parameter ], ...; fhir:OperationDefinition.overload [ # 0..* Define overloaded variants for when generating code fhir:OperationDefinition.overload.parameterName [ string ], ... ; # 0..* Name of parameter to include in overload fhir:OperationDefinition.overload.comment [ string ]; # 0..1 Comments to go on overload ], ...; ]
Changes
since
DSTU2
| OperationDefinition | |
| OperationDefinition.status |
|
| OperationDefinition.experimental |
|
| OperationDefinition.contact |
|
| OperationDefinition.description |
|
| OperationDefinition.useContext |
|
| OperationDefinition.jurisdiction |
|
| OperationDefinition.purpose |
|
| OperationDefinition.comment |
|
| OperationDefinition.resource |
|
| OperationDefinition.type |
|
| OperationDefinition.parameter.type |
|
| OperationDefinition.parameter.searchType |
|
| OperationDefinition.overload |
|
| OperationDefinition.overload.parameterName |
|
| OperationDefinition.overload.comment |
|
| OperationDefinition.contact.name |
|
| OperationDefinition.contact.telecom |
|
See the Full Difference for further information
This analysis is available as XML or JSON .
See R2 <--> R3 Conversion Maps (status = 18 tests that all execute ok. 1 fail round-trip testing and all r3 resources are valid.).
Alternate
definitions:
Schema
/
Schematron
,
Resource
Profile
Master
Definition
(
XML
,
JSON
),
Questionnaire
XML
Schema
/
Schematron
(for
)
+
JSON
Schema
,
ShEx
(for
Turtle
)
| Path | Definition | Type | Reference |
|---|---|---|---|
| OperationDefinition.status | The lifecycle status of a Value Set or Concept Map. | Required |
|
| OperationDefinition.kind | Whether an operation is a normal operation or a query. | Required | OperationKind |
| OperationDefinition.jurisdiction | Countries and regions within which this artifact is targeted for use | Extensible | Jurisdiction ValueSet |
| OperationDefinition.resource | One of the resource types defined as part of FHIR. | Required |
|
| OperationDefinition.parameter.use | Whether an operation parameter is an input or an output parameter. | Required | OperationParameterUse |
| OperationDefinition.parameter.type |
|
Required |
|
| OperationDefinition.parameter.searchType |
Data
types
allowed
to
be
used
| Required | SearchParamType |
| OperationDefinition.parameter.binding.strength | Indication of the degree of conformance expectations associated with a binding. | Required | BindingStrength |
on
on
OperationDefinition.parameter:
searchType
implies
type
=
'string'
)
| Base Operations (All resource types) | |
| Validate a resource | [base]/[Resource]/$validate | [base]/[Resource]/[id]/$validate |
| Access a list of profiles, tags, and security labels | [base]/$meta | [base]/[Resource]/$meta | [base]/[Resource]/[id]/$meta |
| Add profiles, tags, and security labels to a resource | [base]/[Resource]/[id]/$meta-add |
| Delete profiles, tags, and security labels for a resource | [base]/[Resource]/[id]/$meta-delete |
| Operations Defined by Resource Types | |
| Apply | [base]/ActivityDefinition/[id]/$apply |
| Data Requirements | [base]/ActivityDefinition/[id]/$data-requirements |
| Fetch a subset of the CapabilityStatement resource | [base]/CapabilityStatement/$subset | [base]/CapabilityStatement/[id]/$subset |
| Test if a server implements a client's required operations | [base]/CapabilityStatement/$implements | [base]/CapabilityStatement/[id]/$implements |
| Test if a server implements a client's required operations | [base]/CapabilityStatement/$conforms |
| Concept Look Up & Decomposition | [base]/CodeSystem/$lookup |
| Subsumption Testing | [base]/CodeSystem/$subsumes | [base]/CodeSystem/[id]/$subsumes |
| Code Composition based on supplied properties | [base]/CodeSystem/$compose | [base]/CodeSystem/[id]/$compose |
| Generate a Document | [base]/Composition/$document | [base]/Composition/[id]/$document |
| Concept Translation | [base]/ConceptMap/$translate | [base]/ConceptMap/[id]/$translate |
| Closure Table Maintenance | [base]/$closure |
| Fetch Encounter Record | [base]/Encounter/[id]/$everything |
| Data Requirements | [base]/$data-requirements | [base]/Library/[id]/$data-requirements |
| Find a functional list | [base]/List/$find |
| Evaluate Measure | [base]/Measure/$evaluate-measure | [base]/Measure/[id]/$evaluate-measure |
| Data Requirements | [base]/Measure/[id]/$data-requirements |
| Process Message | [base]/$process-message |
| Observation Statistics | [base]/Observation/$stats |
| Last N Observations Query | [base]/Observation/$lastn |
| Find patient matches using MPI based logic | [base]/Patient/$match |
| Fetch Patient Record | [base]/Patient/$everything | [base]/Patient/[id]/$everything |
| Apply | [base]/PlanDefinition/[id]/$apply |
| Data Requirements | [base]/PlanDefinition/[id]/$data-requirements |
| Populate Questionnaire | [base]/Questionnaire/$populate | [base]/Questionnaire/[id]/$populate |
| Generate HTML for Questionnaire | [base]/Questionnaire/$populatehtml | [base]/Questionnaire/[id]/$populatehtml |
| Generate a link to a Questionnaire completion webpage | [base]/Questionnaire/$populatelink | [base]/Questionnaire/[id]/$populatelink |
| Evaluate | [base]/ServiceDefinition/[id]/$evaluate |
| Data Requirements | [base]/ServiceDefinition/[id]/$data-requirements |
| Build Questionnaire | [base]/StructureDefinition/$questionnaire | [base]/StructureDefinition/[id]/$questionnaire |
|
|
|
|
|
|
| Value Set based Validation | [base]/ValueSet/$validate-code | [base]/ValueSet/[id]/$validate-code |
Operations
are
executed
by
POSTing
to
a
URL
that
is
defined
by
the
operation
definition
.
Named
Queries
queries
are
executed
by
performing
a
search
with
the
value
of
the
search
parameter
"_query"
set
to
the
name
provided
in
the
definition.
If
the
named
query
is
to
be
performed
over
the
RESTful
API,
all
the
parameters
must
be
simple
search
parameters,
so
that
they
can
be
represented
directly
in
the
URL
without
tricky
encoding
issues.
Named
queries
always
return
a
bundle
containing
a
set
of
resources,
so
all
the
out
parameters
must
be
resources,
not
data
types
etc.
types.
There
are
two
ways
to
pass
resources
to
an
operation
-
directly,
operation:
directly
or
by
reference.
Since
the
two
forms
havevery
different
behaviors
and
consequences,
the
The
definition
of
an
Operation
operation
distinguishes
between
these
two.
two,
since
they
have
very
different
behaviors
and
consequences.
As
an
example,
take
the
Questionnaire.$populate
operation
.
This
operation
takes
a
questionnaire
as
a
direct
parameter.
The
type
of
the
parameter
is
defined
as
'Questionnaire'.
In
a
parameters
Parameters
resource,
it
would
be
represented
like
this:
<parameter>
<name value="questionnaire"/>
<resource>
<Questionnaire>
<!-- Questionnaire contents -->
</Questionnaire>
</resource>
</parameter>
or, in JSON:
"parameter": [
{
"name": "questionnaire",
"resource": {
"resourceType": "Questionnaire",
// Questionnaire contents
}
}
]
Other
parameters
are
passed
by
reference.
For
example,
populate
$populate
takes
a
set
of
references
to
other
resources
that
should
be
used
to
pre-populate
the
questionnaire.
These
are
passed
by
reference,
and
the
type
of
the
parameter
is
'Reference(Any)'
Reference(Any)
-
a
reference
to
any
kind
of
resource.
In
a
parameters
resource,
it
would
be
represented
like
this:
<parameter>
<name value="content"/>
<valueReference>
<reference value="Patient/123">
</Questionnaire>
</valueReference>
</parameter>
or, in JSON:
"parameter": [
{
"name": "questionnaire",
"valueReference" : {
"reference" : "Patient/123"
}
}
]
Some
operations
can
take
either
form;
in
that
case,
two
different
distinct
parameters
must
be
defined,
one
for
a
resource
directly,
as
a
direct
parameter,
and
one
for
a
reference.
It's
It
is
possible
for
two
different
organizations
to
create
different
operation
definitions
that
have
with
the
same
name
(or,
or,
perhaps
more
likely,
to
define
equivalent
operations
that
have
the
same
name
but
incompatible
approaches
in
their
parameter
lists).
lists.
It's
It
is
also
possible,
though
unlikely,
that
a
server
will
be
required
to
support
both
of
these
operations.
Should
If
this
be
is
the
case,
the
server
is
able
to
do
this
by
giving
one
of
them
a
new
name,
name
and
then
referring
to
it
by
definition
in
the
conformance
capability
statement.
To
illustrate
this,
let's
assume
that
two
different
organizations
(orgA
organizations,
"orgA"
and
orgB)
"orgB",
both
define
an
operation
called
"dothis",
and
the
definitions
are
incompatible.
OrgA
publishes
its
operation
definition
at
http://orga.com/fhir/dothis.xml,
and
OrgB
publishes
its
operation
at
http://fhir.orgb.com/meta/OperationDefinition/dothis.
The
server
is
able
to
implement
both.
Its
conformance
capability
statement
will
say:
<Conformance xmlns="http://hl7.org/fhir"><CapabilityStatement xmlns="http://hl7.org/fhir"> <!-- snip --> <rest> <!-- snip --> <operation> <name value="dothis"/> <definition> <reference value="http://orga.com/fhir/dothis.xml"/> </definition> </operation> <operation> <name value="dothis2"/> <definition> <reference value="http://fhir.orgb.com/meta/OperationDefinition/dothis"/> </definition> </operation> <!-- snip --> </rest> <!-- snip --></Conformance></CapabilityStatement>
If
a
general
purpose
cross
server
client
is
looking
for
the
implementation
of
the
http://fhir.orgb.com/meta/OperationDefinition/dothis
operation,
operation
and
wants
to
be
robust
against
this
name
clash
problem,
instead
of
simply
executing
the
$dothis
operation,
it
can
look
at
the
server's
conformance
statement
CapabilityStatement
for
the
underlying
definition
URI,
URI
and
then
execute
the
name
given
in
the
conformance
capability
statement.
A
client
can
determine
the
compatibility
of
the
server
by
iterating
processing
its
conformance
capability
statement
and
seeing
whether
any
of
ensuring
that
the
operations
it
declares
to
support
source
from
server
implements
the
same
specific
operation
definitions
as
those
the
client
depends
on,
and
whether
the
server
supports
the
parameters
it
uses.
A
required
by
the
client.
The
client
that
does
this
can
then
report
a
useful
error
to
the
user
rather
than
allowing
mystifying
operational
errors
to
occur.
Note,
however,
that
However,
there
are
fundamental
limitations
to
this
approach
because
there
are
many
aspects
of
these
operations
that
aren't
(and
can't
are
not
(or
cannot
be)
defined
in
a
formal
fashion.
(For
fashion
using
OperationDefinition,
for
example,
co-occurrence
constraints
amongst
parameters.)
among
parameters.
In
the
same
sense,
a
3rd
party
tool
can
examine
the
conformance
statements
from
a
server
server's
CapabilityStatement
and
a
client
client's
definition
of
an
acceptable
server
and
confirm
to
determine
whether
those
two
system
are
would
be
unable
to
interoperate.
interoperable
or
not.
Finally,
it
is
possible
to
generate
user
interface
forms
automatically
from
the
operation
definitions.
OperationDefinition.
The
documentation
in
the
form
definition
OperationDefinition.description
and
the
parameter
documentation
OperationDefinition.parameter.documentation
should
be
sufficiently
useful
sufficient
to
allow
moderately
technical
users
to
guess
at
the
correct
content
of
the
form.
For
this
reason,
highly
technical
documentation
should
go
in
OperationDefinition.notes.
OperationDefinition.comment
.
Note
also
this
It
is
not
expected
to
anticipated
that
this
would
be
a
tool
of
use
used
to
typical
healthcare
end-users;
automate
development
processes,
rather
than
to
generate
end-user
forms:
such
users
will
usually
need
more
support
than
can
be
offered
in
a
generated
form.
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 |
| In Common |
| base | reference | Marks this as a profile of the base |
OperationDefinition.base
( OperationDefinition ) |
|
| code | token | Name used to invoke the operation | OperationDefinition.code | |
| date | date |
| OperationDefinition.date | |
| description | string | The description of the operation definition |
|
|
| instance | token | Invoke on an instance? | OperationDefinition.instance | |
| jurisdiction | token | Intended jurisdiction for the operation definition | OperationDefinition.jurisdiction | |
| kind | token | operation | query | OperationDefinition.kind | |
| name | string |
|
OperationDefinition.name | |
|
|
reference | Profile on the type |
OperationDefinition.parameter.profile
( StructureDefinition ) |
|
| publisher | string |
Name
of
the
publisher
|
OperationDefinition.publisher | |
| status | token |
|
OperationDefinition.status | |
| system | token | Invoke at the system level? | OperationDefinition.system | |
| type | token |
|
OperationDefinition.type | |
| url | uri |
|
OperationDefinition.url | |
| version | token |
|
OperationDefinition.version |