DSTU2 FHIR Release 3 (STU)

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

6.18 5.4 Resource OperationDefinition - Content

FHIR Infrastructure Work Group Maturity Level : 1 4   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:

  • To allow for automatic determination of system compatibility
  • To allow for dynamic generation of forms to drive the operations

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:

  • From a Conformance Capability Statement , to declare what operations a system does or should implement
  • From another OperationDefinition resource. This allows for a server to describe a limited implementation of a standard operation, or to allow traceability if the server has to rename the operation due to a name clash

This resource is referenced by conformance CapabilityStatement and ServiceDefinition

Structure

Logical id for this Informal name If for Σ Name Contact details for individual or publisher dateTime Date Natural language description of the operation code Invoke
Name Flags Card. Type Description & Constraints doco
. . OperationDefinition DomainResource Definition of an operation or a named query
Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension
. . . url Σ 0..1 uri Logical URL URI to reference this operation definition (globally unique)
. . . version Σ 0..1 string Business version of the operation definition
. . . name Σ 1..1 string Name for this operation definition (computer friendly)
. . . status ?! Σ 1..1 code draft | active | retired | unknown
ConformanceResourceStatus PublicationStatus ( Required )
. . . kind 1..1 code operation | query
OperationKind ( Required )
. . . experimental ?! Σ 0..1 boolean For testing purposes, not real usage
. . . date Σ 0..1 dateTime Date this was last changed
... publisher Σ 0..1 string Name of the publisher (Organization (organization or individual)
. . . contact Σ 0..* BackboneElement ContactDetail Contact details of for the publisher
. . name . description 0..1 string markdown Natural language description of a individual to contact the operation definition
. . telecom . useContext Σ 0..* ContactPoint UsageContext Context the content is intended to support
. . date . jurisdiction Σ 0..1 0..* CodeableConcept Intended jurisdiction for this version of the operation definition description (if applicable)
Jurisdiction ValueSet 0..1 string ( Extensible )
. . requirements . purpose 0..1 string markdown Why is this needed? operation definition is defined
. . . idempotent Σ 0..1 boolean Whether content is unchanged by the operation
. . . code Σ 1..1 code Name used to invoke the operation
. . notes . comment 0..1 string Additional information about use
. . . base Σ 0..1 Reference ( OperationDefinition ) Marks this as a profile of the base
. . . resource Σ 0..* code Types this operation applies to
ResourceType ( Required )
... system Σ 1..1 boolean Invoke at the system level?
. . . type Σ 0..* 1..1 boolean Invole at resource level for these the type ResourceType ( Required ) level?
. . . instance Σ 1..1 boolean Invoke on an instance?
. . . parameter 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
. . . . name 1..1 code Name in Parameters.parameter.name or in URL
. . . . use 1..1 code in | out
OperationParameterUse ( Required )
. . . . min 1..1 integer Minimum Cardinality
. . . . max 1..1 string Maximum Cardinality (a number or *)
. . . . documentation 0..1 string Description of meaning/use
. . . . type I 0..1 code What type this parameter has
Parameter Types used in Operation Definitions FHIRAllTypes ( Required )
. . . . searchType I 0..1 code number | date | string | token | reference | composite | quantity | uri
SearchParamType ( Required )
.... profile 0..1 Reference ( StructureDefinition ) Profile on the type
. . . . binding 0..1 BackboneElement ValueSet details if this is coded
. . . . . strength 1..1 code required | extensible | preferred | example
BindingStrength ( Required )
. . . . . valueSet[x] 1..1 Source of value set
. . . . . . valueSetUri uri
. . . . . . valueSetReference Reference ( ValueSet )
. . . . part I 0..* see parameter Parts of a Tuple nested Parameter
. . . overload 0..* BackboneElement Define overloaded variants for when generating code
.... parameterName 0..* string Name of parameter to include in overload
.... comment 0..1 string Comments to go on overload

doco Documentation for this format

UML Diagram ( Legend )

OperationDefinition ( DomainResource ) An absolute URL URI that is used to identify this operation definition when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this operation definition is (or will be) published published. The URL SHOULD include the major version of the operation definition. For more information see [Technical and Business Versions](resource.html#versions) url : uri [0..1] The identifier that is used to identify this version of the profile operation definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile operation definition author manually and the value should is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence version : string [0..1] A free text natural language name identifying the operation definition. This name should be usable as an identifier for the module by machine processing applications such as code generation name : string [1..1] The status of this operation definition. Enables tracking the profile life-cycle of the content (this element modifies the meaning of other elements) status : code [1..1] « The lifecycle status of a Value Set or Concept Map. (Strength=Required) ConformanceResourceStatus PublicationStatus ! » Whether this is an operation or a named query kind : code [1..1] « Whether an operation is a normal operation or a query. (Strength=Required) OperationKind ! » This profile was A boolean value to indicate that this operation definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage (this element modifies the meaning of other elements) experimental : boolean [0..1] The name of the individual or organization that published the operation definition publisher : string [0..1] The date this version of (and optionally time) when the operation definition was published. The date must change if and when the business version changes, if it does, changes and it must change if the status code changes. In addition, it should change when the substantive content of the Operation Definition operation definition changes date : dateTime [0..1] The name of the individual or organization that published the operation definition publisher : string [0..1] Contact details to assist a user in finding and communicating with the publisher contact : ContactDetail [0..*] A free text natural language description of the profile and its use operation definition from a consumer's perspective description : string markdown [0..1] Explains The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate operation definition instances useContext : UsageContext [0..*] A legal or geographic region in which the operation definition is intended to be used jurisdiction : CodeableConcept [0..*] Countries and regions within which this artifact is targeted for use (Strength=Extensible) Jurisdiction ValueSet + Explaination of why this operation definition is needed and why it's it has been constrained designed as it has requirements purpose : string markdown [0..1] Operations that are idempotent (see [HTTP specification definition of idempotent](http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html)) may be invoked by performing an HTTP GET operation instead of a POST idempotent : boolean [0..1] The name used to invoke the operation code : code [1..1] Additional information about how to use this operation or named query notes comment : string [0..1] Indicates that this operation definition is a constraining profile on the base base : Reference [0..1] « OperationDefinition » The types on which this operation can be executed resource : code [0..*] One of the resource types defined as part of FHIR. (Strength=Required) ResourceType ! Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context) system : boolean [1..1] Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a specific resource type id for the context) type : code boolean [0..*] « One of the resource types defined as part of FHIR. (Strength=Required) ResourceType ! » [1..1] Indicates whether this operation can be invoked on a particular instance of one of the given types instance : boolean [1..1] Contact The name of an individual to contact regarding the operation definition name : string [0..1] Contact details for individual (if a name was provided) or the publisher telecom : ContactPoint [0..*] Parameter The name of used to identify the parameter name : code [1..1] Whether this is an input or an output parameter use : code [1..1] « Whether an operation parameter is an input or an output parameter. (Strength=Required) OperationParameterUse ! » The minimum number of times this parameter SHALL appear in the request or response min : integer [1..1] The maximum number of times this element is permitted to appear in the request or response max : string [1..1] Describes the meaning or use of this parameter documentation : string [0..1] The type for this parameter type : code [0..1] « The type of Either an abstract type, a parameter. resource or a data type. (Strength=Required) Parameter Types FHIRAllTypes ! How the parameter is understood as a search parameter. This is only used in Opera... if the parameter type is 'string' searchType : code [0..1] Data types allowed to be used for search parameters. (Strength=Required) SearchParamType ! » A profile the specifies the rules that this parameter must conform to profile : Reference [0..1] « StructureDefinition » Binding Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances strength : code [1..1] « Indication of the degree of conformance expectations associated with a binding. (Strength=Required) BindingStrength ! » Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used valueSet[x] : Type [1..1] « uri | Reference ( ValueSet ) » Overload Contacts Name of parameter to assist a user include in finding and communicating with the publisher overload contact parameterName : string [0..*] [0..*] Comments to go on overload comment : string [0..1] Binds to a value set if this parameter is coded (code, Coding, CodeableConcept) binding [0..1] The parts of a Tuple nested Parameter part [0..*] The parameters for the operation/query parameter [0..*] Defines an appropriate combination of parameters to use when invoking this operation, to help code generators when generating overloaded parameter sets for this operation overload [0..*]

XML Template

<

<OperationDefinition xmlns="http://hl7.org/fhir"> doco

 <!-- 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" : "",

{doco
  "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/> .doco


[ 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
  • Change value set from http://hl7.org/fhir/ValueSet/conformance-resource-status to http://hl7.org/fhir/ValueSet/publication-status
OperationDefinition.experimental
  • Now marked as Modifier
OperationDefinition.contact
  • Type changed from BackboneElement to ContactDetail
OperationDefinition.description
  • Type changed from string to markdown
OperationDefinition.useContext
  • Added Element
OperationDefinition.jurisdiction
  • Added Element
OperationDefinition.purpose
  • Renamed from requirements to purpose
  • Type changed from string to markdown
OperationDefinition.comment
  • Renamed from notes to comment
OperationDefinition.resource
  • Renamed from type to resource
OperationDefinition.type
  • Min Cardinality changed from 0 to 1
  • Max Cardinality changed from * to 1
  • Type changed from code to boolean
  • Remove Binding http://hl7.org/fhir/ValueSet/resource-types (required)
OperationDefinition.parameter.type
  • Change value set from http://hl7.org/fhir/ValueSet/operation-parameter-type to http://hl7.org/fhir/ValueSet/all-types
OperationDefinition.parameter.searchType
  • Added Element
OperationDefinition.overload
  • Added Element
OperationDefinition.overload.parameterName
  • Added Element
OperationDefinition.overload.comment
  • Added Element
OperationDefinition.contact.name
  • deleted
OperationDefinition.contact.telecom
  • deleted

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

Logical id for this Informal name If for Σ Name Contact details for individual or publisher dateTime Date Natural language description of the operation code Invoke
Name Flags Card. Type Description & Constraints doco
. . OperationDefinition DomainResource Definition of an operation or a named query
Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension
. . . url Σ 0..1 uri Logical URL URI to reference this operation definition (globally unique)
. . . version Σ 0..1 string Business version of the operation definition
. . . name Σ 1..1 string Name for this operation definition (computer friendly)
. . . status ?! Σ 1..1 code draft | active | retired | unknown
ConformanceResourceStatus PublicationStatus ( Required )
. . . kind 1..1 code operation | query
OperationKind ( Required )
. . . experimental ?! Σ 0..1 boolean For testing purposes, not real usage
. . . date Σ 0..1 dateTime Date this was last changed
... publisher Σ 0..1 string Name of the publisher (Organization (organization or individual)
. . . contact Σ 0..* BackboneElement ContactDetail Contact details of for the publisher
. . name . description 0..1 string markdown Natural language description of a individual to contact the operation definition
. . telecom . useContext Σ 0..* ContactPoint UsageContext Context the content is intended to support
. . date . jurisdiction Σ 0..1 0..* CodeableConcept Intended jurisdiction for this version of the operation definition description (if applicable)
Jurisdiction ValueSet 0..1 string ( Extensible )
. . requirements . purpose 0..1 string markdown Why is this needed? operation definition is defined
. . . idempotent Σ 0..1 boolean Whether content is unchanged by the operation
. . . code Σ 1..1 code Name used to invoke the operation
. . notes . comment 0..1 string Additional information about use
. . . base Σ 0..1 Reference ( OperationDefinition ) Marks this as a profile of the base
. . . resource Σ 0..* code Types this operation applies to
ResourceType ( Required )
... system Σ 1..1 boolean Invoke at the system level?
. . . type Σ 0..* 1..1 boolean Invole at resource level for these the type ResourceType ( Required ) level?
. . . instance Σ 1..1 boolean Invoke on an instance?
. . . parameter 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
. . . . name 1..1 code Name in Parameters.parameter.name or in URL
. . . . use 1..1 code in | out
OperationParameterUse ( Required )
. . . . min 1..1 integer Minimum Cardinality
. . . . max 1..1 string Maximum Cardinality (a number or *)
. . . . documentation 0..1 string Description of meaning/use
. . . . type I 0..1 code What type this parameter has
Parameter Types used in Operation Definitions FHIRAllTypes ( Required )
. . . . searchType I 0..1 code number | date | string | token | reference | composite | quantity | uri
SearchParamType ( Required )
.... profile 0..1 Reference ( StructureDefinition ) Profile on the type
. . . . binding 0..1 BackboneElement ValueSet details if this is coded
. . . . . strength 1..1 code required | extensible | preferred | example
BindingStrength ( Required )
. . . . . valueSet[x] 1..1 Source of value set
. . . . . . valueSetUri uri
. . . . . . valueSetReference Reference ( ValueSet )
. . . . part I 0..* see parameter Parts of a Tuple nested Parameter
. . . overload 0..* BackboneElement Define overloaded variants for when generating code
.... parameterName 0..* string Name of parameter to include in overload
.... comment 0..1 string Comments to go on overload

doco Documentation for this format

UML Diagram ( Legend )

OperationDefinition ( DomainResource ) An absolute URL URI that is used to identify this operation definition when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this operation definition is (or will be) published published. The URL SHOULD include the major version of the operation definition. For more information see [Technical and Business Versions](resource.html#versions) url : uri [0..1] The identifier that is used to identify this version of the profile operation definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile operation definition author manually and the value should is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence version : string [0..1] A free text natural language name identifying the operation definition. This name should be usable as an identifier for the module by machine processing applications such as code generation name : string [1..1] The status of this operation definition. Enables tracking the profile life-cycle of the content (this element modifies the meaning of other elements) status : code [1..1] « The lifecycle status of a Value Set or Concept Map. (Strength=Required) ConformanceResourceStatus PublicationStatus ! » Whether this is an operation or a named query kind : code [1..1] « Whether an operation is a normal operation or a query. (Strength=Required) OperationKind ! » This profile was A boolean value to indicate that this operation definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage (this element modifies the meaning of other elements) experimental : boolean [0..1] The name of the individual or organization that published the operation definition publisher : string [0..1] The date this version of (and optionally time) when the operation definition was published. The date must change if and when the business version changes, if it does, changes and it must change if the status code changes. In addition, it should change when the substantive content of the Operation Definition operation definition changes date : dateTime [0..1] The name of the individual or organization that published the operation definition publisher : string [0..1] Contact details to assist a user in finding and communicating with the publisher contact : ContactDetail [0..*] A free text natural language description of the profile and its use operation definition from a consumer's perspective description : string markdown [0..1] Explains The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate operation definition instances useContext : UsageContext [0..*] A legal or geographic region in which the operation definition is intended to be used jurisdiction : CodeableConcept [0..*] Countries and regions within which this artifact is targeted for use (Strength=Extensible) Jurisdiction ValueSet + Explaination of why this operation definition is needed and why it's it has been constrained designed as it has requirements purpose : string markdown [0..1] Operations that are idempotent (see [HTTP specification definition of idempotent](http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html)) may be invoked by performing an HTTP GET operation instead of a POST idempotent : boolean [0..1] The name used to invoke the operation code : code [1..1] Additional information about how to use this operation or named query notes comment : string [0..1] Indicates that this operation definition is a constraining profile on the base base : Reference [0..1] « OperationDefinition » The types on which this operation can be executed resource : code [0..*] One of the resource types defined as part of FHIR. (Strength=Required) ResourceType ! Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context) system : boolean [1..1] Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a specific resource type id for the context) type : code boolean [0..*] « One of the resource types defined as part of FHIR. (Strength=Required) ResourceType ! » [1..1] Indicates whether this operation can be invoked on a particular instance of one of the given types instance : boolean [1..1] Contact The name of an individual to contact regarding the operation definition name : string [0..1] Contact details for individual (if a name was provided) or the publisher telecom : ContactPoint [0..*] Parameter The name of used to identify the parameter name : code [1..1] Whether this is an input or an output parameter use : code [1..1] « Whether an operation parameter is an input or an output parameter. (Strength=Required) OperationParameterUse ! » The minimum number of times this parameter SHALL appear in the request or response min : integer [1..1] The maximum number of times this element is permitted to appear in the request or response max : string [1..1] Describes the meaning or use of this parameter documentation : string [0..1] The type for this parameter type : code [0..1] « The type of Either an abstract type, a parameter. resource or a data type. (Strength=Required) Parameter Types FHIRAllTypes ! How the parameter is understood as a search parameter. This is only used in Opera... if the parameter type is 'string' searchType : code [0..1] Data types allowed to be used for search parameters. (Strength=Required) SearchParamType ! » A profile the specifies the rules that this parameter must conform to profile : Reference [0..1] « StructureDefinition » Binding Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances strength : code [1..1] « Indication of the degree of conformance expectations associated with a binding. (Strength=Required) BindingStrength ! » Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used valueSet[x] : Type [1..1] « uri | Reference ( ValueSet ) » Overload Contacts Name of parameter to assist a user include in finding and communicating with the publisher overload contact parameterName : string [0..*] [0..*] Comments to go on overload comment : string [0..1] Binds to a value set if this parameter is coded (code, Coding, CodeableConcept) binding [0..1] The parts of a Tuple nested Parameter part [0..*] The parameters for the operation/query parameter [0..*] Defines an appropriate combination of parameters to use when invoking this operation, to help code generators when generating overloaded parameter sets for this operation overload [0..*]

XML Template

<

<OperationDefinition xmlns="http://hl7.org/fhir"> doco

 <!-- 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" : "",

{doco
  "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/> .doco


[ 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
  • Change value set from http://hl7.org/fhir/ValueSet/conformance-resource-status to http://hl7.org/fhir/ValueSet/publication-status
OperationDefinition.experimental
  • Now marked as Modifier
OperationDefinition.contact
  • Type changed from BackboneElement to ContactDetail
OperationDefinition.description
  • Type changed from string to markdown
OperationDefinition.useContext
  • Added Element
OperationDefinition.jurisdiction
  • Added Element
OperationDefinition.purpose
  • Renamed from requirements to purpose
  • Type changed from string to markdown
OperationDefinition.comment
  • Renamed from notes to comment
OperationDefinition.resource
  • Renamed from type to resource
OperationDefinition.type
  • Min Cardinality changed from 0 to 1
  • Max Cardinality changed from * to 1
  • Type changed from code to boolean
  • Remove Binding http://hl7.org/fhir/ValueSet/resource-types (required)
OperationDefinition.parameter.type
  • Change value set from http://hl7.org/fhir/ValueSet/operation-parameter-type to http://hl7.org/fhir/ValueSet/all-types
OperationDefinition.parameter.searchType
  • Added Element
OperationDefinition.overload
  • Added Element
OperationDefinition.overload.parameterName
  • Added Element
OperationDefinition.overload.comment
  • Added Element
OperationDefinition.contact.name
  • deleted
OperationDefinition.contact.telecom
  • deleted

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 )

OperationDefinition.type
Path Definition Type Reference
OperationDefinition.status The lifecycle status of a Value Set or Concept Map. Required ConformanceResourceStatus PublicationStatus
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 http://hl7.org/fhir/valueset/resource-types Resource Types ResourceType
OperationDefinition.parameter.use Whether an operation parameter is an input or an output parameter. Required OperationParameterUse
OperationDefinition.parameter.type The type of Either an abstract type, a parameter. resource or a data type. Required Parameter All Types
OperationDefinition.parameter.searchType Data types allowed to be used in Operation Definitions for search parameters. Required SearchParamType
OperationDefinition.parameter.binding.strength Indication of the degree of conformance expectations associated with a binding. Required BindingStrength

  • opd-1 : On OperationDefinition.parameter: Either a type must be provided, or parts (xpath ( expression on f:OperationDefinition/f:parameter: OperationDefinition.parameter: exists(f:type) type.exists() or exists(f:part) part.exists() )
  • opd-2 : On OperationDefinition.parameter: A search type can only be specified for parameters of type string ( expression on OperationDefinition.parameter: searchType implies type = 'string' )
Operations Defined by Implementation Guides
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 Expansion Model Instance Transformation [base]/ValueSet/$expand [base]/StructureMap/$transform | [base]/ValueSet/[id]/$expand [base]/StructureMap/[id]/$transform
Concept Look Up Value Set Expansion [base]/ValueSet/$lookup [base]/ValueSet/$expand | [base]/ValueSet/[id]/$expand
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 Paths Expression 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 Date for this version The operation definition publication date OperationDefinition.date
description string The description of the operation definition OperationDefinition.date OperationDefinition.description
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 Informal Computationally friendly name for this of the operation definition OperationDefinition.name
profile param-profile reference Profile on the type OperationDefinition.parameter.profile
( StructureDefinition )
publisher string Name of the publisher (Organization or individual) of the operation definition OperationDefinition.publisher
status token draft | active | retired The current status of the operation definition OperationDefinition.status
system token Invoke at the system level? OperationDefinition.system
type token Invoke Invole at resource level for these the type level? OperationDefinition.type
url uri Logical URL to reference this The uri that identifies the operation definition OperationDefinition.url
version token Logical id for this The business version of the operation definition OperationDefinition.version