Current Build

Переводит компания Health Samurai . Приглашаем поучаствовать в русификации стандарта FHIR: GitHub , Email.

5.4 Ресурс OperationDefinition - Назначение

FHIR Infrastructure Work GroupMaturity Level: 5 NormativeSecurity Category: Anonymous Compartments: Not linked to any defined compartments

Normative Candidate Note: This page is candidate normative content for R4 in the Conformance Package. Once normative, it will lose it's Maturity Level, and breaking changes will no longer be made.

Формальное исчисляемое определение операции (для RESTful интерфейса) или именованного запроса (для взаимодействия search).

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 and named queries are executed.

OperationDefinitions are published to define operations that servers can implement in a common fashion. The FHIR specification itself describes some (see below), and other organizations (including IHE, national programs, jurisdictions and vendors) are able to publish additional OperationDefinitions.

OperationDefinition resources are referred to from two different places:

  • From a CapabilityStatement, 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

На этот ресурс ссылаются CapabilityStatement, CarePlan, Communication, FamilyMemberHistory, itself и Procedure

Структура

ИмяФлагиКард.ТипОписание и ограниченияdoco
.. OperationDefinition INDomainResourceОпределение операции или именованного запроса
+ Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation
Элементы, определённые в прародителе: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... url Σ0..1uriCanonical identifier for this operation definition, represented as a URI (globally unique)
... version Σ0..1stringBusiness version of the operation definition
... name ΣI1..1stringName for this operation definition (computer friendly)
... title Σ0..1stringName for this operation definition (human friendly)
... status ?!Σ1..1codedraft | active | retired | unknown
PublicationStatus (Required)
... kind Σ1..1codeoperation | query
OperationKind (Required)
... experimental Σ0..1booleanFor testing purposes, not real usage
... date Σ0..1dateTimeDate last changed
... publisher Σ0..1stringName of the publisher (organization or individual)
... contact Σ0..*ContactDetailContact details for the publisher
... description 0..1markdownNatural language description of the operation definition
... useContext ΣTU0..*UsageContextThe context that the content is intended to support
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for operation definition (if applicable)
Jurisdiction (Extensible)
... purpose 0..1markdownWhy this operation definition is defined
... affectsState Σ0..1booleanОставляет ли операция содержимое неизменным
... code Σ1..1codeИмя для вызова операции
... comment 0..1markdownДополнительная информация о применении
... base Σ0..1canonical(OperationDefinition)Отметка, что это профиль базового ресурса
... resource Σ0..*codeTypes this operation applies to
ResourceType (Required)
... system Σ1..1booleanВызывается на системном уровне?
... type Σ1..1booleanInvoke at the type level?
... instance Σ1..1booleanВызывается на экземпляре?
... inputProfile 0..1canonical(StructureDefinition)Validation information for in parameters
... outputProfile 0..1canonical(StructureDefinition)Validation information for out parameters
... parameter I0..*BackboneElementПараметры операции/запроса
+ Rule: Необходимо указывать либо тип, либо составные части
+ Rule: Тип поиска можно указывать только для параметров типа string
+ Rule: A targetProfile can only be specified for parameters of type Reference or Canonical
.... name 1..1codeИмя в Parameters.parameter.name или в URL
.... use 1..1codein | out
OperationParameterUse (Required)
.... min 1..1integerМин. кард. число
.... max 1..1stringМакс. кард. число (число или *)
.... documentation 0..1stringОписание значения/применения
.... type I0..1codeКакой у этого параметра тип
FHIRAllTypes (Required)
.... targetProfile 0..*canonical(StructureDefinition)If type is Reference | canonical, allowed targets
.... searchType I0..1codenumber | date | string | token | reference | composite | quantity | uri | special
SearchParamType (Required)
.... binding 0..1BackboneElementValueSet details if this is coded
..... strength 1..1coderequired | extensible | preferred | example
BindingStrength (Required)
..... valueSet 1..1canonical(ValueSet)Source of value set
.... referencedFrom TU0..*BackboneElementReferences to this parameter
..... source 1..1stringReferencing parameter
..... sourceId 0..1stringElement id of reference
.... part I0..*see parameterParts of a nested Parameter
... overload 0..*BackboneElementDefine overloaded variants for when generating code
.... parameterName 0..*stringName of parameter to include in overload
.... comment 0..1stringComments to go on overload

doco Документация по этому формату

UML-диаграмма (Legend)

OperationDefinition (DomainResource)An absolute URI that is used to identify this operation definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this operation definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the operation definition is stored on different serversurl : uri [0..1]The identifier that is used to identify this version of the operation definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the operation definition author and 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 sequenceversion : string [0..1]A 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 generationname : string [1..1]A short, descriptive, user-friendly title for the operation definitiontitle : string [0..1]The status of this operation definition. Enables tracking the life-cycle of the content (this element modifies the meaning of other elements)status : code [1..1] « The lifecycle status of an artifact. (Strength=Required)PublicationStatus! »Это операция или именованный запрос?kind : code [1..1] « Это обычная операция или запрос? (Strength=Required)OperationKind! »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 usageexperimental : boolean [0..1]The date (and optionally time) when the operation definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the operation definition changesdate : dateTime [0..1]The name of the organization or individual that published the operation definitionpublisher : string [0..1]Contact details to assist a user in finding and communicating with the publishercontact : ContactDetail [0..*]A free text natural language description of the operation definition from a consumer's perspectivedescription : markdown [0..1]The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate operation definition instancesuseContext : UsageContext [0..*]A legal or geographic region in which the operation definition is intended to be usedjurisdiction : CodeableConcept [0..*] « Countries and regions within which this artifact is targeted for use. (Strength=Extensible)Jurisdiction ValueSet+ »Explanation of why this operation definition is needed and why it has been designed as it haspurpose : markdown [0..1]Whether the operation affects state. Side effects such as producing audit trail entries do not count as 'affecting state'affectsState : boolean [0..1]Имя, используемое для вызова этой операцииcode : code [1..1]Дополнительная информация о применении этой операции или именованного запросаcomment : markdown [0..1]Указывает, что это определение операции является ограничивающим профилем для базового ресурсаbase : canonical [0..1] « OperationDefinition »The types on which this operation can be executedresource : code [0..*] « One of the resource types defined as part of this version of FHIR. (Strength=Required)ResourceType! »Указывает, может ли эта операция или именованный запрос вызваться на системном уровне (например без необходимости выбора типа ресурса для этого контекста)system : boolean [1..1]Указывает, может ли эта операция или именованный запрос вызываться на уровне типа ресурса для любого заданного уровня типа ресурса (например без необходимости выбора типа ресурса для этого контекста)type : boolean [1..1]Указывает, может ли эта операция вызваться на конкретном экземпляре одного из заданных типовinstance : boolean [1..1]Additional validation information for the in parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource as a wholeinputProfile : canonical [0..1] « StructureDefinition »Additional validation information for the out parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resourceoutputProfile : canonical [0..1] « StructureDefinition »ParameterИмя для указания на параметрname : code [1..1]Это входной или выходной параметр?use : code [1..1] « Является ли параметр операции выходным или выходным. (Strength=Required)OperationParameterUse! »Минимальное количество раз, которое этот параметр ДОЛЖЕН появиться в запросе или ответеmin : integer [1..1]Максимальное количество раз, которое этому элементу разрешено появиться в запросе или ответеmax : string [1..1]Описывает значение или использование этого параметраdocumentation : string [0..1]Тип этого параметраtype : code [0..1] « A list of all the concrete types defined in this version of the FHIR specification - Abstract Types, Data Types and Resource Types. (Strength=Required)FHIRAllTypes! »Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that applies to the target of the reference this parameter refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guidetargetProfile : canonical [0..*] « StructureDefinition »Как этот параметр интерпретировать в качестве параметра поиска. Используется только для параметров типа 'string'searchType : code [0..1] « Data types allowed to be used for search parameters. (Strength=Required)SearchParamType! »BindingПоказывает степень ожидания совместимости, связанную с этой привязкой - то есть это степень, с которой необходимо придерживаться указанного набора значений в экземплярахstrength : code [1..1] « Indication of the degree of conformance expectations associated with a binding. (Strength=Required)BindingStrength! »Указывает на набор значений или внешнее определение (например неявный набор значений), который задаёт набор кодов для использованияvalueSet : canonical [1..1] « ValueSet »ReferencedFromThe name of the parameter or dot-separated path of parameter names pointing to the resource parameter that is expected to contain a reference to this resourcesource : string [1..1]The id of the element in the referencing resource that is expected to resolve to this resourcesourceId : string [0..1]OverloadName of parameter to include in overloadparameterName : string [0..*]Comments to go on overloadcomment : string [0..1]Привязка к набору значений, если этот параметр закодирован (code, Coding, CodeableConcept)binding[0..1]Identifies other resource parameters within the operation invocation that are expected to resolve to this resourcereferencedFrom[0..*]The parts of a nested Parameterpart[0..*]Параметры операции/запроса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 operationoverload[0..*]

XML-шаблон

<OperationDefinition xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <url value="[uri]"/><!-- 0..1 Canonical identifier for this operation definition, represented as a URI (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) -->
 <title value="[string]"/><!-- 0..1 Name for this operation definition (human 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 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 The context that 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 -->
 <affectsState value="[boolean]"/><!-- 0..1 Оставляет ли операция содержимое неизменным -->
 <code value="[code]"/><!-- 1..1 Имя для вызова операции -->
 <comment value="[markdown]"/><!-- 0..1 Дополнительная информация о применении -->
 <base><!-- 0..1 canonical(OperationDefinition) Отметка, что это профиль базового ресурса --></base>
 <resource value="[code]"/><!-- 0..* Types this operation applies to -->
 <system value="[boolean]"/><!-- 1..1 Вызывается на системном уровне? -->
 <type value="[boolean]"/><!-- 1..1 Invoke at the type level? -->
 <instance value="[boolean]"/><!-- 1..1 Вызывается на экземпляре? -->
 <inputProfile><!-- 0..1 canonical(StructureDefinition) Validation information for in parameters --></inputProfile>
 <outputProfile><!-- 0..1 canonical(StructureDefinition) Validation information for out parameters --></outputProfile>
 <parameter>  <!-- 0..* Параметры операции/запроса -->
  <name value="[code]"/><!-- 1..1 Имя в Parameters.parameter.name или в URL -->
  <use value="[code]"/><!-- 1..1 in | out -->
  <min value="[integer]"/><!-- 1..1 Мин. кард. число -->
  <max value="[string]"/><!-- 1..1 Макс. кард. число (число или *) -->
  <documentation value="[string]"/><!-- 0..1 Описание значения/применения -->
  <type value="[code]"/><!-- ?? 0..1 Какой у этого параметра тип -->
  <targetProfile><!-- 0..* canonical(StructureDefinition) If type is Reference | canonical, allowed targets --></targetProfile>
  <searchType value="[code]"/><!-- ?? 0..1 number | date | string | token | reference | composite | quantity | uri | special -->
  <binding>  <!-- 0..1 ValueSet details if this is coded -->
   <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example -->
   <valueSet><!-- 1..1 canonical(ValueSet) Source of value set --></valueSet>
  </binding>
  <referencedFrom>  <!-- 0..* References to this parameter -->
   <source value="[string]"/><!-- 1..1 Referencing parameter -->
   <sourceId value="[string]"/><!-- 0..1 Element id of reference -->
  </referencedFrom>
  <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-шаблон

{doco
  "resourceType" : "OperationDefinition",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "url" : "<uri>", // Canonical identifier for this operation definition, represented as a URI (globally unique)
  "version" : "<string>", // Business version of the operation definition
  "name" : "<string>", // C? R!  Name for this operation definition (computer friendly)
  "title" : "<string>", // Name for this operation definition (human friendly)
  "status" : "<code>", // R!  draft | active | retired | unknown
  "kind" : "<code>", // R!  operation | query
  "experimental" : <boolean>, // For testing purposes, not real usage
  "date" : "<dateTime>", // Date 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 }], // The context that the content is intended to support
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for operation definition (if applicable)
  "purpose" : "<markdown>", // Why this operation definition is defined
  "affectsState" : <boolean>, // Оставляет ли операция содержимое неизменным
  "code" : "<code>", // R!  Имя для вызова операции
  "comment" : "<markdown>", // Дополнительная информация о применении
  "base" : { canonical(OperationDefinition) }, // Отметка, что это профиль базового ресурса
  "resource" : ["<code>"], // Types this operation applies to
  "system" : <boolean>, // R!  Вызывается на системном уровне?
  "type" : <boolean>, // R!  Invoke at the type level?
  "instance" : <boolean>, // R!  Вызывается на экземпляре?
  "inputProfile" : { canonical(StructureDefinition) }, // Validation information for in parameters
  "outputProfile" : { canonical(StructureDefinition) }, // Validation information for out parameters
  "parameter" : [{ // Параметры операции/запроса
    "name" : "<code>", // R!  Имя в Parameters.parameter.name или в URL
    "use" : "<code>", // R!  in | out
    "min" : <integer>, // R!  Мин. кард. число
    "max" : "<string>", // R!  Макс. кард. число (число или *)
    "documentation" : "<string>", // Описание значения/применения
    "type" : "<code>", // C? Какой у этого параметра тип
    "targetProfile" : [{ canonical(StructureDefinition) }], // If type is Reference | canonical, allowed targets
    "searchType" : "<code>", // C? number | date | string | token | reference | composite | quantity | uri | special
    "binding" : { // ValueSet details if this is coded
      "strength" : "<code>", // R!  required | extensible | preferred | example
      "valueSet" : { canonical(ValueSet) } // R!  Source of value set
    },
    "referencedFrom" : [{ // References to this parameter
      "source" : "<string>", // R!  Referencing parameter
      "sourceId" : "<string>" // Element id of reference
    }],
    "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-шаблон

@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 Canonical identifier for this operation definition, represented as a URI (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.title [ string ]; # 0..1 Name for this operation definition (human 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 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..* The context that 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.affectsState [ boolean ]; # 0..1 Оставляет ли операция содержимое неизменным
  fhir:OperationDefinition.code [ code ]; # 1..1 Имя для вызова операции
  fhir:OperationDefinition.comment [ markdown ]; # 0..1 Дополнительная информация о применении
  fhir:OperationDefinition.base [ canonical(OperationDefinition) ]; # 0..1 Отметка, что это профиль базового ресурса
  fhir:OperationDefinition.resource [ code ], ... ; # 0..* Types this operation applies to
  fhir:OperationDefinition.system [ boolean ]; # 1..1 Вызывается на системном уровне?
  fhir:OperationDefinition.type [ boolean ]; # 1..1 Invoke at the type level?
  fhir:OperationDefinition.instance [ boolean ]; # 1..1 Вызывается на экземпляре?
  fhir:OperationDefinition.inputProfile [ canonical(StructureDefinition) ]; # 0..1 Validation information for in parameters
  fhir:OperationDefinition.outputProfile [ canonical(StructureDefinition) ]; # 0..1 Validation information for out parameters
  fhir:OperationDefinition.parameter [ # 0..* Параметры операции/запроса
    fhir:OperationDefinition.parameter.name [ code ]; # 1..1 Имя в Parameters.parameter.name или в URL
    fhir:OperationDefinition.parameter.use [ code ]; # 1..1 in | out
    fhir:OperationDefinition.parameter.min [ integer ]; # 1..1 Мин. кард. число
    fhir:OperationDefinition.parameter.max [ string ]; # 1..1 Макс. кард. число (число или *)
    fhir:OperationDefinition.parameter.documentation [ string ]; # 0..1 Описание значения/применения
    fhir:OperationDefinition.parameter.type [ code ]; # 0..1 Какой у этого параметра тип
    fhir:OperationDefinition.parameter.targetProfile [ canonical(StructureDefinition) ], ... ; # 0..* If type is Reference | canonical, allowed targets
    fhir:OperationDefinition.parameter.searchType [ code ]; # 0..1 number | date | string | token | reference | composite | quantity | uri | special
    fhir:OperationDefinition.parameter.binding [ # 0..1 ValueSet details if this is coded
      fhir:OperationDefinition.parameter.binding.strength [ code ]; # 1..1 required | extensible | preferred | example
      fhir:OperationDefinition.parameter.binding.valueSet [ canonical(ValueSet) ]; # 1..1 Source of value set
    ];
    fhir:OperationDefinition.parameter.referencedFrom [ # 0..* References to this parameter
      fhir:OperationDefinition.parameter.referencedFrom.source [ string ]; # 1..1 Referencing parameter
      fhir:OperationDefinition.parameter.referencedFrom.sourceId [ string ]; # 0..1 Element id of reference
    ], ...;
    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 R3

OperationDefinition
OperationDefinition.title
  • Added Element
OperationDefinition.experimental
  • No longer marked as Modifier
OperationDefinition.affectsState
  • Renamed from idempotent to affectsState
OperationDefinition.comment
  • Type changed from string to markdown
OperationDefinition.base
  • Type changed from Reference(OperationDefinition) to canonical(OperationDefinition)
OperationDefinition.resource
  • Remove Codes BodySite, DataElement, DeviceComponent, EligibilityRequest, EligibilityResponse, ExpansionProfile, ImagingManifest, ProcedureRequest, ProcessRequest, ProcessResponse, ReferralRequest, Sequence, ServiceDefinition
  • Add Codes BiologicallyDerivedProduct, BodyStructure, CatalogEntry, ChargeItemDefinition, CoverageEligibilityRequest, CoverageEligibilityResponse, DeviceDefinition, EffectEvidenceSynthesis, EventDefinition, Evidence, EvidenceVariable, ExampleScenario, ImmunizationEvaluation, InsurancePlan, Invoice, ItemInstance, MedicationKnowledge, MedicinalProduct, MedicinalProductAuthorization, MedicinalProductContraindication, MedicinalProductIndication, MedicinalProductIngredient, MedicinalProductInteraction, MedicinalProductManufactured, MedicinalProductPackaged, MedicinalProductPharmaceutical, MedicinalProductUndesirableEffect, MolecularSequence, ObservationDefinition, OrganizationAffiliation, ResearchDefinition, ResearchElementDefinition, RiskEvidenceSynthesis, ServiceRequest, SpecimenDefinition, SubstanceNucleicAcid, SubstancePolymer, SubstanceProtein, SubstanceReferenceInformation, SubstanceSourceMaterial, SubstanceSpecification, TerminologyCapabilities, VerificationResult
OperationDefinition.inputProfile
  • Added Element
OperationDefinition.outputProfile
  • Added Element
OperationDefinition.parameter.type
  • Remove Codes BodySite, DataElement, DeviceComponent, EligibilityRequest, EligibilityResponse, ExpansionProfile, ImagingManifest, ProcedureRequest, ProcessRequest, ProcessResponse, ReferralRequest, Sequence, ServiceDefinition
  • Add Codes Expression, MarketingStatus, MoneyQuantity, Population, ProdCharacteristic, ProductShelfLife, SubstanceAmount, canonical, url, BiologicallyDerivedProduct, BodyStructure, CatalogEntry, ChargeItemDefinition, CoverageEligibilityRequest, CoverageEligibilityResponse, DeviceDefinition, EffectEvidenceSynthesis, EventDefinition, Evidence, EvidenceVariable, ExampleScenario, ImmunizationEvaluation, InsurancePlan, Invoice, ItemInstance, MedicationKnowledge, MedicinalProduct, MedicinalProductAuthorization, MedicinalProductContraindication, MedicinalProductIndication, MedicinalProductIngredient, MedicinalProductInteraction, MedicinalProductManufactured, MedicinalProductPackaged, MedicinalProductPharmaceutical, MedicinalProductUndesirableEffect, MolecularSequence, ObservationDefinition, OrganizationAffiliation, ResearchDefinition, ResearchElementDefinition, RiskEvidenceSynthesis, ServiceRequest, SpecimenDefinition, SubstanceNucleicAcid, SubstancePolymer, SubstanceProtein, SubstanceReferenceInformation, SubstanceSourceMaterial, SubstanceSpecification, TerminologyCapabilities, VerificationResult
OperationDefinition.parameter.targetProfile
  • Renamed from profile to targetProfile
  • Max Cardinality changed from 1 to *
  • Type changed from Reference(StructureDefinition) to canonical(StructureDefinition)
OperationDefinition.parameter.searchType
  • Add Code special
OperationDefinition.parameter.binding.valueSet
  • Renamed from valueSet[x] to valueSet
  • Add Type canonical(ValueSet)
  • Remove Types uri, Reference(ValueSet)
OperationDefinition.parameter.referencedFrom
  • Added Element
OperationDefinition.parameter.referencedFrom.source
  • Added Mandatory Element
OperationDefinition.parameter.referencedFrom.sourceId
  • Added Element

See the Full Difference for further information

This analysis is available as XML or JSON.

See R3 <--> R4 Conversion Maps (status = 37 tests that all execute ok. All tests pass round-trip testing and 34 r3 resources are invalid (0 errors).)

Структура

ИмяФлагиКард.ТипОписание и ограниченияdoco
.. OperationDefinition INDomainResourceОпределение операции или именованного запроса
+ Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation
Элементы, определённые в прародителе: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... url Σ0..1uriCanonical identifier for this operation definition, represented as a URI (globally unique)
... version Σ0..1stringBusiness version of the operation definition
... name ΣI1..1stringName for this operation definition (computer friendly)
... title Σ0..1stringName for this operation definition (human friendly)
... status ?!Σ1..1codedraft | active | retired | unknown
PublicationStatus (Required)
... kind Σ1..1codeoperation | query
OperationKind (Required)
... experimental Σ0..1booleanFor testing purposes, not real usage
... date Σ0..1dateTimeDate last changed
... publisher Σ0..1stringName of the publisher (organization or individual)
... contact Σ0..*ContactDetailContact details for the publisher
... description 0..1markdownNatural language description of the operation definition
... useContext ΣTU0..*UsageContextThe context that the content is intended to support
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for operation definition (if applicable)
Jurisdiction (Extensible)
... purpose 0..1markdownWhy this operation definition is defined
... affectsState Σ0..1booleanОставляет ли операция содержимое неизменным
... code Σ1..1codeИмя для вызова операции
... comment 0..1markdownДополнительная информация о применении
... base Σ0..1canonical(OperationDefinition)Отметка, что это профиль базового ресурса
... resource Σ0..*codeTypes this operation applies to
ResourceType (Required)
... system Σ1..1booleanВызывается на системном уровне?
... type Σ1..1booleanInvoke at the type level?
... instance Σ1..1booleanВызывается на экземпляре?
... inputProfile 0..1canonical(StructureDefinition)Validation information for in parameters
... outputProfile 0..1canonical(StructureDefinition)Validation information for out parameters
... parameter I0..*BackboneElementПараметры операции/запроса
+ Rule: Необходимо указывать либо тип, либо составные части
+ Rule: Тип поиска можно указывать только для параметров типа string
+ Rule: A targetProfile can only be specified for parameters of type Reference or Canonical
.... name 1..1codeИмя в Parameters.parameter.name или в URL
.... use 1..1codein | out
OperationParameterUse (Required)
.... min 1..1integerМин. кард. число
.... max 1..1stringМакс. кард. число (число или *)
.... documentation 0..1stringОписание значения/применения
.... type I0..1codeКакой у этого параметра тип
FHIRAllTypes (Required)
.... targetProfile 0..*canonical(StructureDefinition)If type is Reference | canonical, allowed targets
.... searchType I0..1codenumber | date | string | token | reference | composite | quantity | uri | special
SearchParamType (Required)
.... binding 0..1BackboneElementValueSet details if this is coded
..... strength 1..1coderequired | extensible | preferred | example
BindingStrength (Required)
..... valueSet 1..1canonical(ValueSet)Source of value set
.... referencedFrom TU0..*BackboneElementReferences to this parameter
..... source 1..1stringReferencing parameter
..... sourceId 0..1stringElement id of reference
.... part I0..*see parameterParts of a nested Parameter
... overload 0..*BackboneElementDefine overloaded variants for when generating code
.... parameterName 0..*stringName of parameter to include in overload
.... comment 0..1stringComments to go on overload

doco Документация по этому формату

UML-диаграмма (Legend)

OperationDefinition (DomainResource)An absolute URI that is used to identify this operation definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this operation definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the operation definition is stored on different serversurl : uri [0..1]The identifier that is used to identify this version of the operation definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the operation definition author and 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 sequenceversion : string [0..1]A 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 generationname : string [1..1]A short, descriptive, user-friendly title for the operation definitiontitle : string [0..1]The status of this operation definition. Enables tracking the life-cycle of the content (this element modifies the meaning of other elements)status : code [1..1] « The lifecycle status of an artifact. (Strength=Required)PublicationStatus! »Это операция или именованный запрос?kind : code [1..1] « Это обычная операция или запрос? (Strength=Required)OperationKind! »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 usageexperimental : boolean [0..1]The date (and optionally time) when the operation definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the operation definition changesdate : dateTime [0..1]The name of the organization or individual that published the operation definitionpublisher : string [0..1]Contact details to assist a user in finding and communicating with the publishercontact : ContactDetail [0..*]A free text natural language description of the operation definition from a consumer's perspectivedescription : markdown [0..1]The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate operation definition instancesuseContext : UsageContext [0..*]A legal or geographic region in which the operation definition is intended to be usedjurisdiction : CodeableConcept [0..*] « Countries and regions within which this artifact is targeted for use. (Strength=Extensible)Jurisdiction ValueSet+ »Explanation of why this operation definition is needed and why it has been designed as it haspurpose : markdown [0..1]Whether the operation affects state. Side effects such as producing audit trail entries do not count as 'affecting state'affectsState : boolean [0..1]Имя, используемое для вызова этой операцииcode : code [1..1]Дополнительная информация о применении этой операции или именованного запросаcomment : markdown [0..1]Указывает, что это определение операции является ограничивающим профилем для базового ресурсаbase : canonical [0..1] « OperationDefinition »The types on which this operation can be executedresource : code [0..*] « One of the resource types defined as part of this version of FHIR. (Strength=Required)ResourceType! »Указывает, может ли эта операция или именованный запрос вызваться на системном уровне (например без необходимости выбора типа ресурса для этого контекста)system : boolean [1..1]Указывает, может ли эта операция или именованный запрос вызываться на уровне типа ресурса для любого заданного уровня типа ресурса (например без необходимости выбора типа ресурса для этого контекста)type : boolean [1..1]Указывает, может ли эта операция вызваться на конкретном экземпляре одного из заданных типовinstance : boolean [1..1]Additional validation information for the in parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource as a wholeinputProfile : canonical [0..1] « StructureDefinition »Additional validation information for the out parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resourceoutputProfile : canonical [0..1] « StructureDefinition »ParameterИмя для указания на параметрname : code [1..1]Это входной или выходной параметр?use : code [1..1] « Является ли параметр операции выходным или выходным. (Strength=Required)OperationParameterUse! »Минимальное количество раз, которое этот параметр ДОЛЖЕН появиться в запросе или ответеmin : integer [1..1]Максимальное количество раз, которое этому элементу разрешено появиться в запросе или ответеmax : string [1..1]Описывает значение или использование этого параметраdocumentation : string [0..1]Тип этого параметраtype : code [0..1] « A list of all the concrete types defined in this version of the FHIR specification - Abstract Types, Data Types and Resource Types. (Strength=Required)FHIRAllTypes! »Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that applies to the target of the reference this parameter refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guidetargetProfile : canonical [0..*] « StructureDefinition »Как этот параметр интерпретировать в качестве параметра поиска. Используется только для параметров типа 'string'searchType : code [0..1] « Data types allowed to be used for search parameters. (Strength=Required)SearchParamType! »BindingПоказывает степень ожидания совместимости, связанную с этой привязкой - то есть это степень, с которой необходимо придерживаться указанного набора значений в экземплярахstrength : code [1..1] « Indication of the degree of conformance expectations associated with a binding. (Strength=Required)BindingStrength! »Указывает на набор значений или внешнее определение (например неявный набор значений), который задаёт набор кодов для использованияvalueSet : canonical [1..1] « ValueSet »ReferencedFromThe name of the parameter or dot-separated path of parameter names pointing to the resource parameter that is expected to contain a reference to this resourcesource : string [1..1]The id of the element in the referencing resource that is expected to resolve to this resourcesourceId : string [0..1]OverloadName of parameter to include in overloadparameterName : string [0..*]Comments to go on overloadcomment : string [0..1]Привязка к набору значений, если этот параметр закодирован (code, Coding, CodeableConcept)binding[0..1]Identifies other resource parameters within the operation invocation that are expected to resolve to this resourcereferencedFrom[0..*]The parts of a nested Parameterpart[0..*]Параметры операции/запроса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 operationoverload[0..*]

XML-шаблон

<OperationDefinition xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <url value="[uri]"/><!-- 0..1 Canonical identifier for this operation definition, represented as a URI (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) -->
 <title value="[string]"/><!-- 0..1 Name for this operation definition (human 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 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 The context that 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 -->
 <affectsState value="[boolean]"/><!-- 0..1 Оставляет ли операция содержимое неизменным -->
 <code value="[code]"/><!-- 1..1 Имя для вызова операции -->
 <comment value="[markdown]"/><!-- 0..1 Дополнительная информация о применении -->
 <base><!-- 0..1 canonical(OperationDefinition) Отметка, что это профиль базового ресурса --></base>
 <resource value="[code]"/><!-- 0..* Types this operation applies to -->
 <system value="[boolean]"/><!-- 1..1 Вызывается на системном уровне? -->
 <type value="[boolean]"/><!-- 1..1 Invoke at the type level? -->
 <instance value="[boolean]"/><!-- 1..1 Вызывается на экземпляре? -->
 <inputProfile><!-- 0..1 canonical(StructureDefinition) Validation information for in parameters --></inputProfile>
 <outputProfile><!-- 0..1 canonical(StructureDefinition) Validation information for out parameters --></outputProfile>
 <parameter>  <!-- 0..* Параметры операции/запроса -->
  <name value="[code]"/><!-- 1..1 Имя в Parameters.parameter.name или в URL -->
  <use value="[code]"/><!-- 1..1 in | out -->
  <min value="[integer]"/><!-- 1..1 Мин. кард. число -->
  <max value="[string]"/><!-- 1..1 Макс. кард. число (число или *) -->
  <documentation value="[string]"/><!-- 0..1 Описание значения/применения -->
  <type value="[code]"/><!-- ?? 0..1 Какой у этого параметра тип -->
  <targetProfile><!-- 0..* canonical(StructureDefinition) If type is Reference | canonical, allowed targets --></targetProfile>
  <searchType value="[code]"/><!-- ?? 0..1 number | date | string | token | reference | composite | quantity | uri | special -->
  <binding>  <!-- 0..1 ValueSet details if this is coded -->
   <strength value="[code]"/><!-- 1..1 required | extensible | preferred | example -->
   <valueSet><!-- 1..1 canonical(ValueSet) Source of value set --></valueSet>
  </binding>
  <referencedFrom>  <!-- 0..* References to this parameter -->
   <source value="[string]"/><!-- 1..1 Referencing parameter -->
   <sourceId value="[string]"/><!-- 0..1 Element id of reference -->
  </referencedFrom>
  <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-шаблон

{doco
  "resourceType" : "OperationDefinition",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "url" : "<uri>", // Canonical identifier for this operation definition, represented as a URI (globally unique)
  "version" : "<string>", // Business version of the operation definition
  "name" : "<string>", // C? R!  Name for this operation definition (computer friendly)
  "title" : "<string>", // Name for this operation definition (human friendly)
  "status" : "<code>", // R!  draft | active | retired | unknown
  "kind" : "<code>", // R!  operation | query
  "experimental" : <boolean>, // For testing purposes, not real usage
  "date" : "<dateTime>", // Date 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 }], // The context that the content is intended to support
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for operation definition (if applicable)
  "purpose" : "<markdown>", // Why this operation definition is defined
  "affectsState" : <boolean>, // Оставляет ли операция содержимое неизменным
  "code" : "<code>", // R!  Имя для вызова операции
  "comment" : "<markdown>", // Дополнительная информация о применении
  "base" : { canonical(OperationDefinition) }, // Отметка, что это профиль базового ресурса
  "resource" : ["<code>"], // Types this operation applies to
  "system" : <boolean>, // R!  Вызывается на системном уровне?
  "type" : <boolean>, // R!  Invoke at the type level?
  "instance" : <boolean>, // R!  Вызывается на экземпляре?
  "inputProfile" : { canonical(StructureDefinition) }, // Validation information for in parameters
  "outputProfile" : { canonical(StructureDefinition) }, // Validation information for out parameters
  "parameter" : [{ // Параметры операции/запроса
    "name" : "<code>", // R!  Имя в Parameters.parameter.name или в URL
    "use" : "<code>", // R!  in | out
    "min" : <integer>, // R!  Мин. кард. число
    "max" : "<string>", // R!  Макс. кард. число (число или *)
    "documentation" : "<string>", // Описание значения/применения
    "type" : "<code>", // C? Какой у этого параметра тип
    "targetProfile" : [{ canonical(StructureDefinition) }], // If type is Reference | canonical, allowed targets
    "searchType" : "<code>", // C? number | date | string | token | reference | composite | quantity | uri | special
    "binding" : { // ValueSet details if this is coded
      "strength" : "<code>", // R!  required | extensible | preferred | example
      "valueSet" : { canonical(ValueSet) } // R!  Source of value set
    },
    "referencedFrom" : [{ // References to this parameter
      "source" : "<string>", // R!  Referencing parameter
      "sourceId" : "<string>" // Element id of reference
    }],
    "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-шаблон

@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 Canonical identifier for this operation definition, represented as a URI (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.title [ string ]; # 0..1 Name for this operation definition (human 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 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..* The context that 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.affectsState [ boolean ]; # 0..1 Оставляет ли операция содержимое неизменным
  fhir:OperationDefinition.code [ code ]; # 1..1 Имя для вызова операции
  fhir:OperationDefinition.comment [ markdown ]; # 0..1 Дополнительная информация о применении
  fhir:OperationDefinition.base [ canonical(OperationDefinition) ]; # 0..1 Отметка, что это профиль базового ресурса
  fhir:OperationDefinition.resource [ code ], ... ; # 0..* Types this operation applies to
  fhir:OperationDefinition.system [ boolean ]; # 1..1 Вызывается на системном уровне?
  fhir:OperationDefinition.type [ boolean ]; # 1..1 Invoke at the type level?
  fhir:OperationDefinition.instance [ boolean ]; # 1..1 Вызывается на экземпляре?
  fhir:OperationDefinition.inputProfile [ canonical(StructureDefinition) ]; # 0..1 Validation information for in parameters
  fhir:OperationDefinition.outputProfile [ canonical(StructureDefinition) ]; # 0..1 Validation information for out parameters
  fhir:OperationDefinition.parameter [ # 0..* Параметры операции/запроса
    fhir:OperationDefinition.parameter.name [ code ]; # 1..1 Имя в Parameters.parameter.name или в URL
    fhir:OperationDefinition.parameter.use [ code ]; # 1..1 in | out
    fhir:OperationDefinition.parameter.min [ integer ]; # 1..1 Мин. кард. число
    fhir:OperationDefinition.parameter.max [ string ]; # 1..1 Макс. кард. число (число или *)
    fhir:OperationDefinition.parameter.documentation [ string ]; # 0..1 Описание значения/применения
    fhir:OperationDefinition.parameter.type [ code ]; # 0..1 Какой у этого параметра тип
    fhir:OperationDefinition.parameter.targetProfile [ canonical(StructureDefinition) ], ... ; # 0..* If type is Reference | canonical, allowed targets
    fhir:OperationDefinition.parameter.searchType [ code ]; # 0..1 number | date | string | token | reference | composite | quantity | uri | special
    fhir:OperationDefinition.parameter.binding [ # 0..1 ValueSet details if this is coded
      fhir:OperationDefinition.parameter.binding.strength [ code ]; # 1..1 required | extensible | preferred | example
      fhir:OperationDefinition.parameter.binding.valueSet [ canonical(ValueSet) ]; # 1..1 Source of value set
    ];
    fhir:OperationDefinition.parameter.referencedFrom [ # 0..* References to this parameter
      fhir:OperationDefinition.parameter.referencedFrom.source [ string ]; # 1..1 Referencing parameter
      fhir:OperationDefinition.parameter.referencedFrom.sourceId [ string ]; # 0..1 Element id of reference
    ], ...;
    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 Release 3

OperationDefinition
OperationDefinition.title
  • Added Element
OperationDefinition.experimental
  • No longer marked as Modifier
OperationDefinition.affectsState
  • Renamed from idempotent to affectsState
OperationDefinition.comment
  • Type changed from string to markdown
OperationDefinition.base
  • Type changed from Reference(OperationDefinition) to canonical(OperationDefinition)
OperationDefinition.resource
  • Remove Codes BodySite, DataElement, DeviceComponent, EligibilityRequest, EligibilityResponse, ExpansionProfile, ImagingManifest, ProcedureRequest, ProcessRequest, ProcessResponse, ReferralRequest, Sequence, ServiceDefinition
  • Add Codes BiologicallyDerivedProduct, BodyStructure, CatalogEntry, ChargeItemDefinition, CoverageEligibilityRequest, CoverageEligibilityResponse, DeviceDefinition, EffectEvidenceSynthesis, EventDefinition, Evidence, EvidenceVariable, ExampleScenario, ImmunizationEvaluation, InsurancePlan, Invoice, ItemInstance, MedicationKnowledge, MedicinalProduct, MedicinalProductAuthorization, MedicinalProductContraindication, MedicinalProductIndication, MedicinalProductIngredient, MedicinalProductInteraction, MedicinalProductManufactured, MedicinalProductPackaged, MedicinalProductPharmaceutical, MedicinalProductUndesirableEffect, MolecularSequence, ObservationDefinition, OrganizationAffiliation, ResearchDefinition, ResearchElementDefinition, RiskEvidenceSynthesis, ServiceRequest, SpecimenDefinition, SubstanceNucleicAcid, SubstancePolymer, SubstanceProtein, SubstanceReferenceInformation, SubstanceSourceMaterial, SubstanceSpecification, TerminologyCapabilities, VerificationResult
OperationDefinition.inputProfile
  • Added Element
OperationDefinition.outputProfile
  • Added Element
OperationDefinition.parameter.type
  • Remove Codes BodySite, DataElement, DeviceComponent, EligibilityRequest, EligibilityResponse, ExpansionProfile, ImagingManifest, ProcedureRequest, ProcessRequest, ProcessResponse, ReferralRequest, Sequence, ServiceDefinition
  • Add Codes Expression, MarketingStatus, MoneyQuantity, Population, ProdCharacteristic, ProductShelfLife, SubstanceAmount, canonical, url, BiologicallyDerivedProduct, BodyStructure, CatalogEntry, ChargeItemDefinition, CoverageEligibilityRequest, CoverageEligibilityResponse, DeviceDefinition, EffectEvidenceSynthesis, EventDefinition, Evidence, EvidenceVariable, ExampleScenario, ImmunizationEvaluation, InsurancePlan, Invoice, ItemInstance, MedicationKnowledge, MedicinalProduct, MedicinalProductAuthorization, MedicinalProductContraindication, MedicinalProductIndication, MedicinalProductIngredient, MedicinalProductInteraction, MedicinalProductManufactured, MedicinalProductPackaged, MedicinalProductPharmaceutical, MedicinalProductUndesirableEffect, MolecularSequence, ObservationDefinition, OrganizationAffiliation, ResearchDefinition, ResearchElementDefinition, RiskEvidenceSynthesis, ServiceRequest, SpecimenDefinition, SubstanceNucleicAcid, SubstancePolymer, SubstanceProtein, SubstanceReferenceInformation, SubstanceSourceMaterial, SubstanceSpecification, TerminologyCapabilities, VerificationResult
OperationDefinition.parameter.targetProfile
  • Renamed from profile to targetProfile
  • Max Cardinality changed from 1 to *
  • Type changed from Reference(StructureDefinition) to canonical(StructureDefinition)
OperationDefinition.parameter.searchType
  • Add Code special
OperationDefinition.parameter.binding.valueSet
  • Renamed from valueSet[x] to valueSet
  • Add Type canonical(ValueSet)
  • Remove Types uri, Reference(ValueSet)
OperationDefinition.parameter.referencedFrom
  • Added Element
OperationDefinition.parameter.referencedFrom.source
  • Added Mandatory Element
OperationDefinition.parameter.referencedFrom.sourceId
  • Added Element

See the Full Difference for further information

This analysis is available as XML or JSON.

See R3 <--> R4 Conversion Maps (status = 37 tests that all execute ok. All tests pass round-trip testing and 34 r3 resources are invalid (0 errors).)

 

See the Profiles & Extensions and the Альтернативные определения: Основное определение XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) + see the extensions & the Анализ зависимостей

PathОписаниеТипСсылка
OperationDefinition.status The lifecycle status of an artifact.RequiredPublicationStatus
OperationDefinition.kind Это обычная операция или запрос?RequiredOperationKind
OperationDefinition.jurisdiction Countries and regions within which this artifact is targeted for use.ExtensibleJurisdiction ValueSet
OperationDefinition.resource One of the resource types defined as part of this version of FHIR.RequiredResource Types
OperationDefinition.parameter.use Является ли параметр операции выходным или выходным.RequiredOperationParameterUse
OperationDefinition.parameter.type A list of all the concrete types defined in this version of the FHIR specification - Abstract Types, Data Types and Resource Types.RequiredAll Types
OperationDefinition.parameter.searchType Data types allowed to be used for search parameters.RequiredSearchParamType
OperationDefinition.parameter.binding.strength Indication of the degree of conformance expectations associated with a binding.RequiredBindingStrength

idLevelLocationОпределениеExpression
opd-0Warning (base)Name should be usable as an identifier for the module by machine processing applications such as code generationname.matches('[A-Z]([A-Za-z0-9_]){0,254}')
opd-1Rule OperationDefinition.parameterНеобходимо указывать либо тип, либо составные частиtype.exists() or part.exists()
opd-2Rule OperationDefinition.parameterТип поиска можно указывать только для параметров типа stringsearchType.exists() implies type = 'string'
opd-3Rule OperationDefinition.parameterA targetProfile can only be specified for parameters of type Reference or CanonicaltargetProfile.exists() implies (type = 'Reference' or type = 'canonical')
Base Operations (All resource types)
Валидация ресурса[base]/[Resource]/$validate | [base]/[Resource]/[id]/$validate
Получение списка профилей, тегов и меток уровня безопасности[base]/$meta | [base]/[Resource]/$meta | [base]/[Resource]/[id]/$meta
Добавление ресурсу профилей, тегов и меток уровня безопасности[base]/[Resource]/[id]/$meta-add
Удаление у ресурса профилей, тегов и меток уровня безопасности[base]/[Resource]/[id]/$meta-delete
Convert from one form to another[base]/$convert
Execute a graphql statement[base]/$graphql | [base]/[Resource]/[id]/$graphql
Return a graph of resources[base]/[Resource]/[id]/$graph
Operations Defined by Resource Types
Apply[base]/ActivityDefinition/$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
Discover what versions a server supports[base]/$versions
Apply[base]/ChargeItemDefinition/[id]/$apply
Submit a Claim resource for adjudication[base]/Claim/$submit
Concept Look Up & Decomposition[base]/CodeSystem/$lookup
Code System based Validation[base]/CodeSystem/$validate-code | [base]/CodeSystem/[id]/$validate-code
Subsumption Testing[base]/CodeSystem/$subsumes | [base]/CodeSystem/[id]/$subsumes
Finding codes based on supplied properties[base]/CodeSystem/$find-matches | [base]/CodeSystem/[id]/$find-matches
Generate a Document[base]/Composition/$document | [base]/Composition/[id]/$document
Перевод концептов (Concept Translation)[base]/ConceptMap/$translate | [base]/ConceptMap/[id]/$translate
Closure Table Maintenance[base]/$closure
Submit an EligibilityRequest resource for assessment[base]/CoverageEligibilityRequest/$submit
Fetch Encounter Record[base]/Encounter/[id]/$everything
Fetch a group of Patient Records[base]/Group/[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
Submit Data[base]/Measure/$submit-data | [base]/Measure/[id]/$submit-data
Collect Data[base]/Measure/$collect-data | [base]/Measure/[id]/$collect-data
Care Gaps[base]/Measure/$care-gaps
Fetch Product Record[base]/MedicinalProduct/$everything | [base]/MedicinalProduct/[id]/$everything
Process Message[base]/$process-message
Fetch Preferred it[base]/NamingSystem/$preferred-id
Observation Statistics[base]/Observation/$stats
Last N Observations Query[base]/Observation/$lastn
Find patient matches using MPI based logic[base]/Patient/$match
Запрос записи пациента[base]/Patient/$everything | [base]/Patient/[id]/$everything
Apply[base]/PlanDefinition/$apply | [base]/PlanDefinition/[id]/$apply
Data Requirements[base]/PlanDefinition/[id]/$data-requirements
Создать вопросник (Questionnaire)[base]/StructureDefinition/$questionnaire | [base]/StructureDefinition/[id]/$questionnaire
Generate Snapshot[base]/StructureDefinition/$snapshot | [base]/StructureDefinition/[id]/$snapshot
Трансформация экземпляра модели[base]/StructureMap/$transform | [base]/StructureMap/[id]/$transform
Развёртка набора значений[base]/ValueSet/$expand | [base]/ValueSet/[id]/$expand
Валидация на основе набора значений[base]/ValueSet/$validate-code | [base]/ValueSet/[id]/$validate-code

There are 2 ways to describe the input and output parameters for an operation:

  • Using OperationDefinition.parameter to describe the parameters
  • Using OperationDefinition.inputProfile and OperationDefinition.outputProfile

The parameters is a simple list of possible parameters, along with cardinalities and types. The profiles allow a rich set of validation rules etc. to be provided. OperationDefinitions SHALL always define the parameters using OperationDefinition.parameter in the resource, and MAY also provide profiles for the parameters. If present, the profiles SHALL NOT disagree with the parameters defined for the operation.

As an example, consider an operation that defines 3 parameters, 2 in and 1 out:

In Parameters:
NameCardinalityTypeBindingProfileDocumentation
a0..1integer

An integer parameter

b0..1Patient

A patient parameter

Out Parameters:
NameCardinalityTypeBindingProfileDocumentation
c1..1decimal

A result parameter

In addition to specifying the operation parameters directly, an operation definition can also provide a profile:

 "inputProfile" : "http://example.org/StructureDefinition/op.x.in.profile"

This profile would describe a parameters resource with 2 parameters (using slicing), with the same details as the table above. The operation definition would still list the parameters directly to save applications consuming the definition (e.g. to produce an OpenAPI document ) from parsing and interpreting the profile.

OperationDefinitions with kind = operation are executed as defined in the Operations Framework.

Named queries (OperationDefinitions with kind = query) 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.

For named queries, all the standard search parameters are automatically in scope (though servers do not need to support them unless explicitly documented).

There are two ways to pass resources to an operation: directly or by reference. The definition of an operation distinguishes between these two, since they have very different behaviors and consequences.

As an example, take the ValueSet.$expand operation. This operation takes a valueset as a direct parameter. The type of the parameter is defined as 'ValueSet'. In a Parameters resource, it would be represented like this:

  <parameter>
    <name value="valueset"/>
    <resource>
      <ValueSet>
        <!-- Valueset contents -->
      </ValueSet>
    </resource>
  </parameter> 

or, in JSON:

 "parameter": [
    {
      "name": "valueset",
      "resource": {
        "resourceType": "ValueSet",
        // Valueset contents 
      }
    }
  ]

Other parameters are passed by reference. For example, the ChargeItemDefinition.$apply operation takes two parameters of type Reference - one to the chargeItem and the other to the account. The type of the parameters is Reference(Charge) and Reference(Account), respectively. The expectation is that the server performing the operation will resolve those references as part of the operation execution. In a parameters resource, the chargeItem parameter would be represented like this:

  <parameter>
    <name value="chargeItem"/>
    <valueReference>
      <reference value="ChargeItem/123"/>
    </valueReference>
  </parameter> 

or, in JSON:

 "parameter": [
    {
      "name": "chargeItem",
      "valueReference" : {
        "reference" : "ChargeItem/123"
      }
    }
  ]

Some operations can take either form; in that case, two distinct parameters must be defined: one for a resource as a direct parameter, and one for a reference.

It is possible for two different organizations to create different operation definitions with the same name or, perhaps more likely, to define equivalent operations that have the same name but incompatible approaches in their parameter lists.

It is also possible, though unlikely, that a server will be required to support both of these operations. If this is the case, the server is able to do this by giving one of them a new name and referring to it by definition in the capability statement. To illustrate this, assume that two different organizations, "orgA" and "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 capability statement will say:

<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 -->
</CapabilityStatement>

If a general purpose cross server client is looking for the implementation of the http://fhir.orgb.com/meta/OperationDefinition/dothis 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 CapabilityStatement for the underlying definition URI and then execute the name given in the capability statement.

A client can determine the compatibility of the server by processing its capability statement and ensuring that the server implements the specific operation definitions and parameters required by the client. The client can then report a useful error to the user rather than allowing mystifying operational errors to occur.

However, there are fundamental limitations to this approach because there are many aspects of these operations that are not (or cannot be) defined in a formal fashion using OperationDefinition, for example, co-occurrence constraints among parameters.

In the same sense, a 3rd party tool can examine a server's CapabilityStatement and a client's definition of an acceptable server to determine whether those two system are interoperable or not.

Finally, it is possible to generate user interface forms automatically from the OperationDefinition. The documentation in the OperationDefinition.description and OperationDefinition.parameter.documentation should be 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.comment.

It is anticipated that this would be used to 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.

Параметры поиска для этого ресурса. Также к нему применяются общие параметры. Более подробную информацию о поиске в REST, обмене сообщениями и сервисах см. в разделе Поиск.

ИмяТипОпределениеВыражениеIn Common
basereferenceОтметка, что это профиль базового ресурсаOperationDefinition.base
(OperationDefinition)
codetokenИмя для вызова операцииOperationDefinition.code
context TUtokenA use context assigned to the operation definition(OperationDefinition.useContext.value as CodeableConcept)
context-quantity TUquantityA quantity- or range-valued use context assigned to the operation definition(OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range)
context-type TUtokenA type of use context assigned to the operation definitionOperationDefinition.useContext.code
context-type-quantity TUcompositeA use context type and quantity- or range-based value assigned to the operation definitionOn OperationDefinition.useContext:
  context-type: code
  context-quantity: value.as(Quantity) | value.as(Range)
context-type-value TUcompositeA use context type and value assigned to the operation definitionOn OperationDefinition.useContext:
  context-type: code
  context: value.as(CodeableConcept)
datedateThe operation definition publication dateOperationDefinition.date
descriptionstringThe description of the operation definitionOperationDefinition.description
input-profilereferenceValidation information for in parametersOperationDefinition.inputProfile
(StructureDefinition)
instancetokenВызывается на экземпляре?OperationDefinition.instance
jurisdictiontokenIntended jurisdiction for the operation definitionOperationDefinition.jurisdiction
kindtokenoperation | queryOperationDefinition.kind
namestringComputationally friendly name of the operation definitionOperationDefinition.name
output-profilereferenceValidation information for out parametersOperationDefinition.outputProfile
(StructureDefinition)
publisherstringName of the publisher of the operation definitionOperationDefinition.publisher
statustokenThe current status of the operation definitionOperationDefinition.status
systemtokenВызывается на системном уровне?OperationDefinition.system
titlestringThe human-friendly name of the operation definitionOperationDefinition.title
typetokenInvoke at the type level?OperationDefinition.type
urluriThe uri that identifies the operation definitionOperationDefinition.url
versiontokenThe business version of the operation definitionOperationDefinition.version