FHIR Cross-Version Mapping Pack
0.1.0 - Ballot for Release 5.1.0 International flag

FHIR Cross-Version Mapping Pack, published by HL7 International / FHIR Infrastructure. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/fhir-cross-version/ and changes regularly. See the Directory of published versions

StructureMap: OperationDefinition Transforms: R2 to R3

Official URL: http://hl7.org/fhir/StructureMap/OperationDefinition2to3 Version: 0.1.0
Standards status: Draft Maturity Level: 1 Computable Name: OperationDefinition2to3

OperationDefinitionTransformsR2toR3

/// url = 'http://hl7.org/fhir/StructureMap/OperationDefinition2to3'
/// name = 'OperationDefinition2to3'
/// title = 'OperationDefinition Transforms: R2 to R3'
/// status = 'active'

uses "http://hl7.org/fhir/1.0/OperationDefinition" alias OperationDefinitionR2 as source
uses "http://hl7.org/fhir/3.0/OperationDefinition" alias OperationDefinition as target

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

group OperationDefinition(source src : OperationDefinitionR2, target tgt : OperationDefinition) extends DomainResource <<type+>> {
  src.url -> tgt.url "OperationDefinition-url";
  src.version -> tgt.version "OperationDefinition-version";
  src.name -> tgt.name "OperationDefinition-name";
  src.status -> tgt.status "OperationDefinition-status";
  src.kind -> tgt.kind "OperationDefinition-kind";
  src.experimental -> tgt.experimental "OperationDefinition-experimental";
  src.date -> tgt.date "OperationDefinition-date";
  src.publisher -> tgt.publisher "OperationDefinition-publisher";
  src.contact as vs0 -> tgt.contact as vt0 then opdContact(vs0, vt0) "OperationDefinition-contact";
  src.idempotent -> tgt.idempotent "OperationDefinition-idempotent";
  src.code -> tgt.code "OperationDefinition-code";
  src.notes -> tgt.comment "OperationDefinition-comment";
  src.requirements -> tgt.purpose "OperationDefinition-requirements";
  src.description -> tgt.description "OperationDefinition-description";
  src.base -> tgt.base "OperationDefinition-base";
  src.system -> tgt.system "OperationDefinition-system";
  src.type -> tgt.resource "OperationDefinition-type1";
  src where type.exists() -> tgt.type = 'true' "OperationDefinition-type2";
  src where type.empty() -> tgt.type = 'false' "OperationDefinition-type2";
  src.instance -> tgt.instance "OperationDefinition-instance";
  src.parameter as vs0 -> tgt.parameter as vt0 then opParam(vs0, vt0) "OperationDefinition-parameter";
}

group opdContact(source src, target tgt) extends Element {
  src.name -> tgt.name "contact-name";
  src.telecom -> tgt.telecom "contact-telecom";
}

group opParam(source src, target tgt) extends BackboneElement {
  src.name -> tgt.name "parameter-name";
  src.use -> tgt.use "parameter-use";
  src.min -> tgt.min "parameter-min";
  src.max -> tgt.max "parameter-max";
  src.documentation -> tgt.documentation "parameter-documentation";
  src.type as v where ($this in ('number' | 'date' | 'string' | 'token' | 'reference' | 'composite' | 'quantity' | 'uri')).not() -> tgt.type = v "parameter-type1";
  src.type as v where ($this in ('number' | 'date' | 'string' | 'token' | 'reference' | 'composite' | 'quantity' | 'uri')) ->  tgt.searchType = v,  tgt.type = 'string' "parameter-type2";
  src.profile -> tgt.profile "parameter-profile";
  src.part as ps0 -> tgt.part as pt0 then opPart(ps0, pt0) "parameter-part";
}

group opPart(source src, target tgt) extends BackboneElement {
  src.name -> tgt.name "parameter-part-name";
  src.use -> tgt.use "parameter-part-use";
  src.min -> tgt.min "parameter-part-min";
  src.max -> tgt.max "parameter-part-max";
  src.documentation -> tgt.documentation "parameter-part-documentation";
  src.type -> tgt.type "parameter-part-type";
  src.profile -> tgt.profile "parameter-part-profile";
  src.part as psrc -> tgt.part as ptgt then opPart(psrc, ptgt) "parameter-part-part";
}