R4 Ballot #1 #2 (Mixed Normative/Trial use)

This page is part of the FHIR Specification (v3.3.0: (v3.5.0: R4 Ballot 2). #2). The current version which supercedes this version is 5.0.0 . For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3

FHIR Infrastructure Work Group Maturity Level : N/A Ballot Status : Informative Compartments : Not linked to any defined compartments

R2 : R3 : R4 Conversion maps for OperationDefinition.

Functional status for this map: 18 37 tests that all of which 30 fail to execute ok. . 1 7 fail round-trip testing and all 7 r3 resources are valid. invalid (0 errors). ( see documentation)

map "http://hl7.org/fhir/StructureMap/OperationDefinition2to3" = "R2 to R3 Conversions for OperationDefinition"

uses "http://hl7.org/fhir/DSTU2/StructureDefinition/OperationDefinition" alias OperationDefinitionR2 as source
uses "http://hl7.org/fhir/StructureDefinition/OperationDefinition" alias OperationDefinition as target

map "http://hl7.org/fhir/StructureMap/OperationDefinition3to4" = "R3 to R4 Conversions for OperationDefinition"


imports "http://hl7.org/fhir/StructureMap/*2to3"


group for type+types  OperationDefinition extends DomainResource
  input src : OperationDefinitionR2 as source
  input tgt : OperationDefinition as target

uses "http://hl7.org/fhir/3.0/StructureDefinition/OperationDefinition" alias OperationDefinitionR3 as source
uses "http://hl7.org/fhir/StructureDefinition/OperationDefinition" alias OperationDefinition as target


  "OperationDefinition-url" : for src.url make tgt.url
  "OperationDefinition-version" : for src.version make tgt.version
  "OperationDefinition-name" : for src.name make tgt.name
  "OperationDefinition-status" : for src.status make tgt.status
  "OperationDefinition-kind" : for src.kind make tgt.kind
  "OperationDefinition-experimental" : for src.experimental make tgt.experimental
  "OperationDefinition-date" : for src.date make tgt.date
  "OperationDefinition-publisher" : for src.publisher make tgt.publisher
  "OperationDefinition-contact" : for src.contact as vs0 make tgt.contact as vt0 then opdContact(vs0, vt0)
  "OperationDefinition-idempotent" : for src.idempotent make tgt.idempotent
  "OperationDefinition-code" : for src.code make tgt.code
  "OperationDefinition-comment" : for src.notes make tgt.comment
  "OperationDefinition-requirements" : for src.requirements make tgt.purpose
  "OperationDefinition-description" : for src.description make tgt.description
  "OperationDefinition-base" : for src.base make tgt.base
  "OperationDefinition-system" : for src.system make tgt.system
  "OperationDefinition-type1" : for src.type make tgt.resource
  "OperationDefinition-type2" : for src where type.exists() make tgt.type = true
  "OperationDefinition-type2" : for src where type.empty() make tgt.type = false
  "OperationDefinition-instance" : for src.instance make tgt.instance
  "OperationDefinition-parameter" : for src.parameter as vs0 make tgt.parameter as vt0 then opParam(vs0, vt0)
endgroup

imports "http://hl7.org/fhir/StructureMap/*3to4"


group opdContact extends Element
  input src as source
  input tgt as target


  "OperationDefinition.contact-name" : for src.name make tgt.name
  "OperationDefinition.contact-telecom" : for src.telecom make tgt.telecom
endgroup


group opParam extends BackboneElement
  input src as source
  input tgt as target

group OperationDefinition extends DomainResource
  input src : OperationDefinitionR3 as source
  input tgt : OperationDefinition as target


  "OperationDefinition.parameter-name" : for src.name make tgt.name
  "OperationDefinition.parameter-use" : for src.use make tgt.use
  "OperationDefinition.parameter-min" : for src.min make tgt.min
  "OperationDefinition.parameter-max" : for src.max make tgt.max
  "OperationDefinition.parameter-documentation" : for src.documentation make tgt.documentation
  "OperationDefinition.parameter-type1" : for src.type as v where ($this in ('number' | 'date' | 'string' | 'token' | 'reference' | 'composite' | 'quantity' | 'uri')).not() make tgt.type = v
  "OperationDefinition.parameter-type2" : for src.type as v where ($this in ('number' | 'date' | 'string' | 'token' | 'reference' | 'composite' | 'quantity' | 'uri')) make tgt.searchType = v, tgt.type = 'string'
  "OperationDefinition.parameter-profile" : for src.profile make tgt.profile
  "OperationDefinition.parameter-part" : for src.part as ps0 make tgt.part as pt0 then opPart(ps0, pt0)

  "OperationDefinition.url" : for src.url as vs make tgt.url as vt
  "OperationDefinition.version" : for src.version as vs make tgt.version as vt
  "OperationDefinition.name" : for src.name as vs make tgt.name as vt
  "OperationDefinition.status" : for src.status as vs make tgt.status as vt
  "OperationDefinition.kind" : for src.kind as vs make tgt.kind as vt
  "OperationDefinition.experimental" : for src.experimental as vs make tgt.experimental as vt
  "OperationDefinition.date" : for src.date as vs make tgt.date as vt
  "OperationDefinition.publisher" : for src.publisher as vs make tgt.publisher as vt
  "OperationDefinition.contact" : for src.contact as vs make tgt.contact as vt
  "OperationDefinition.description" : for src.description as vs make tgt.description as vt
  "OperationDefinition.useContext" : for src.useContext as vs make tgt.useContext as vt
  "OperationDefinition.jurisdiction" : for src.jurisdiction as vs make tgt.jurisdiction as vt
  "OperationDefinition.purpose" : for src.purpose as vs make tgt.purpose as vt
  "OperationDefinition.code" : for src.code as vs make tgt.code as vt
  "OperationDefinition.comment" : for src.comment as vs make tgt.comment as vt then stringToMarkdown(vs, vt)
  "OperationDefinition.resource" : for src.resource as vs make tgt.resource as vt
  "OperationDefinition.system" : for src.system as vs make tgt.system as vt
  "OperationDefinition.type" : for src.type as vs make tgt.type as vt
  "OperationDefinition.instance" : for src.instance as vs make tgt.instance as vt
  "OperationDefinition.parameter" : for src.parameter as vs0 make tgt.parameter as vt0 then {
    "OperationDefinition.parameter.name" : for vs0.name as vs make vt0.name as vt
    "OperationDefinition.parameter.use" : for vs0.use as vs make vt0.use as vt
    "OperationDefinition.parameter.min" : for vs0.min as vs make vt0.min as vt
    "OperationDefinition.parameter.max" : for vs0.max as vs make vt0.max as vt
    "OperationDefinition.parameter.documentation" : for vs0.documentation as vs make vt0.documentation as vt
    "OperationDefinition.parameter.type" : for vs0.type as vs make vt0.type as vt
    "OperationDefinition.parameter.searchType" : for vs0.searchType as vs make vt0.searchType as vt
  }
  "OperationDefinition.overload" : for src.overload as vs0 make tgt.overload as vt0 then {
    "OperationDefinition.overload.parameterName" : for vs0.parameterName as vs make vt0.parameterName as vt
    "OperationDefinition.overload.comment" : for vs0.comment as vs make vt0.comment as vt
  }

endgroup

group opPart extends BackboneElement
  input src as source
  input tgt as target


  "OperationDefinition.parameter-part-name" : for src.name make tgt.name
  "OperationDefinition.parameter-part-use" : for src.use make tgt.use
  "OperationDefinition.parameter-part-min" : for src.min make tgt.min
  "OperationDefinition.parameter-part-max" : for src.max make tgt.max
  "OperationDefinition.parameter-part-documentation" : for src.documentation make tgt.documentation
  "OperationDefinition.parameter-part-type" : for src.type make tgt.type
  "OperationDefinition.parameter-part-profile" : for src.profile make tgt.profile
  "OperationDefinition.parameter-part-part" : for src.part as psrc make tgt.part as ptgt then opPart(psrc, ptgt)
endgroup

map "http://hl7.org/fhir/StructureMap/OperationDefinition3to2" = "R3 to R2 Conversion for OperationDefinition"

uses "http://hl7.org/fhir/StructureDefinition/OperationDefinition" alias OperationDefinition as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/OperationDefinition" alias OperationDefinitionR2 as target

map "http://hl7.org/fhir/StructureMap/OperationDefinition4to3" = "R4 to R3 Conversion for OperationDefinition"


imports "http://hl7.org/fhir/StructureMap/*3to2"


group for type+types  OperationDefinition extends DomainResource
  input src : OperationDefinition as source
  input tgt : OperationDefinitionR2 as target

  "OperationDefinition-url" : for src.url make tgt.url
  "OperationDefinition-version" : for src.version make tgt.version
  "OperationDefinition-name" : for src.name make tgt.name
  "OperationDefinition-status" : for src.status make tgt.status
  "OperationDefinition-kind" : for src.kind make tgt.kind
  "OperationDefinition-experimental" : for src.experimental make tgt.experimental
  "OperationDefinition-publisher" : for src.publisher make tgt.publisher
  "OperationDefinition-contact" : for src.contact as vs0 make tgt.contact as vt0 then opdContact(vs0, vt0)
  "OperationDefinition-date" : for src.date make tgt.date
  "OperationDefinition-requirements" : for src.purpose make tgt.requirements
  "OperationDefinition-description" : for src.description make tgt.description
  "OperationDefinition-idempotent" : for src.idempotent make tgt.idempotent
  "OperationDefinition-code" : for src.code make tgt.code
  "OperationDefinition-notes" : for src.comment make tgt.notes
  "OperationDefinition-base" : for src.base make tgt.base
  "OperationDefinition-system" : for src.system make tgt.system
  "OperationDefinition-type" : for src.resource make tgt.type
  "OperationDefinition-instance" : for src.instance make tgt.instance
  "OperationDefinition-parameter" : for src.parameter as vs0 make tgt.parameter as vt0 then opdParameter(vs0, vt0) 
endgroup

uses "http://hl7.org/fhir/StructureDefinition/OperationDefinition" alias OperationDefinition as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/OperationDefinition" alias OperationDefinitionR3 as target


group opdContact extends Element
  input src as source
  input tgt as target

imports "http://hl7.org/fhir/StructureMap/*4to3"


  "OperationDefinition.contact-name" : for src.name make tgt.name
  "OperationDefinition.contact-telecom" : for src.telecom make tgt.telecom
endgroup


group opdParameter extends BackboneElement
  input src as source
  input tgt as target


  "OperationDefinition.parameter-name" : for src.name make tgt.name
  "OperationDefinition.parameter-use" : for src.use make tgt.use
  "OperationDefinition.parameter-min" : for src.min make tgt.min
  "OperationDefinition.parameter-max" : for src.max make tgt.max
  "OperationDefinition.parameter-documentation" : for src.documentation make tgt.documentation
  "OperationDefinition.parameter-type" : for src.type where src.searchType.empty() make tgt.type
  "OperationDefinition.parameter-type" : for src.searchType make tgt.type
  "OperationDefinition.parameter-profile" : for src.profile make tgt.profile
  "OperationDefinition.parameter-part" : for src.part as ps0 make tgt.part as pt0 then opdPart(ps0, pt0)
endgroup  
  
group opdPart extends BackboneElement
  input src as source
  input tgt as target

group OperationDefinition extends DomainResource
  input src : OperationDefinition as source
  input tgt : OperationDefinitionR3 as target


  "OperationDefinition.parameter-part-name" : for src.name make tgt.name
  "OperationDefinition.parameter-part-use" : for src.use make tgt.use
  "OperationDefinition.parameter-part-min" : for src.min make tgt.min
  "OperationDefinition.parameter-part-max" : for src.max make tgt.max
  "OperationDefinition.parameter-part-documentation" : for src.documentation make tgt.documentation
  "OperationDefinition.parameter-part-type" : for src.type make tgt.type
  "OperationDefinition.parameter-part-profile" : for src.profile make tgt.profile
  "OperationDefinition.parameter-part-part" : for src.part as psrc make tgt.part as ptgt then opdPart(psrc, ptgt)

  "OperationDefinition.url" : for src.url as vs make tgt.url as vt
  "OperationDefinition.version" : for src.version as vs make tgt.version as vt
  "OperationDefinition.name" : for src.name as vs make tgt.name as vt
  "OperationDefinition.status" : for src.status as vs make tgt.status as vt
  "OperationDefinition.kind" : for src.kind as vs make tgt.kind as vt
  "OperationDefinition.experimental" : for src.experimental as vs make tgt.experimental as vt
  "OperationDefinition.date" : for src.date as vs make tgt.date as vt
  "OperationDefinition.publisher" : for src.publisher as vs make tgt.publisher as vt
  "OperationDefinition.contact" : for src.contact as vs make tgt.contact as vt
  "OperationDefinition.description" : for src.description as vs make tgt.description as vt
  "OperationDefinition.useContext" : for src.useContext as vs make tgt.useContext as vt
  "OperationDefinition.jurisdiction" : for src.jurisdiction as vs make tgt.jurisdiction as vt
  "OperationDefinition.purpose" : for src.purpose as vs make tgt.purpose as vt
  "OperationDefinition.code" : for src.code as vs make tgt.code as vt
  "OperationDefinition.comment" : for src.comment as vs make tgt.comment as vt then markdownToString(vs, vt)
  "OperationDefinition.resource" : for src.resource as vs make tgt.resource as vt
  "OperationDefinition.system" : for src.system as vs make tgt.system as vt
  "OperationDefinition.type" : for src.type as vs make tgt.type as vt
  "OperationDefinition.instance" : for src.instance as vs make tgt.instance as vt
  "OperationDefinition.parameter" : for src.parameter as vs0 make tgt.parameter as vt0 then {
    "OperationDefinition.parameter.name" : for vs0.name as vs make vt0.name as vt
    "OperationDefinition.parameter.use" : for vs0.use as vs make vt0.use as vt
    "OperationDefinition.parameter.min" : for vs0.min as vs make vt0.min as vt
    "OperationDefinition.parameter.max" : for vs0.max as vs make vt0.max as vt
    "OperationDefinition.parameter.documentation" : for vs0.documentation as vs make vt0.documentation as vt
    "OperationDefinition.parameter.type" : for vs0.type as vs make vt0.type as vt
    "OperationDefinition.parameter.searchType" : for vs0.searchType as vs make vt0.searchType as vt
  }
  "OperationDefinition.overload" : for src.overload as vs0 make tgt.overload as vt0 then {
    "OperationDefinition.overload.parameterName" : for vs0.parameterName as vs make vt0.parameterName as vt
    "OperationDefinition.overload.comment" : for vs0.comment as vs make vt0.comment as vt
  }

endgroup