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: Reference Transforms: R5 to R4B

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

ReferenceTransformsR5toR4B

/// url = 'http://hl7.org/fhir/StructureMap/Reference5to4B'
/// name = 'Reference5to4B'
/// title = 'Reference Transforms: R5 to R4B'
/// status = 'active'

uses "http://hl7.org/fhir/5.0/Reference" alias ReferenceR5 as source
uses "http://hl7.org/fhir/5.0/CodeableReference" alias CodeableReferenceR5 as source
uses "http://hl7.org/fhir/4.0/Reference" alias ReferenceR4B as target
uses "http://hl7.org/fhir/5.0/canonical" alias canonicalR5 as source
uses "http://hl7.org/fhir/4.0/url" alias urlR4B as target
uses "http://hl7.org/fhir/5.0/url" alias urlR5 as source

imports "http://hl7.org/fhir/StructureMap/*5to4B"

group Reference(source src : ReferenceR5, target tgt : ReferenceR4B) extends Element <<type+>> {
  src.reference -> tgt.reference;
  src.type -> tgt.type;
  src.identifier -> tgt.identifier;
  src.display -> tgt.display;
}

group canonical(source src : canonicalR5, target tgt : ReferenceR4B) extends Element <<type+>> {
  src.value as v -> tgt.reference = v "canonicalValue";
}

group Reference2Url(source src : ReferenceR5, target tgt : urlR4B) extends Element <<type+>> {
  src.reference as v -> tgt.value = v "canonicalValue";
}

group url2Reference(source src : urlR5, target tgt : ReferenceR4B) extends Element <<type+>> {
  src.value as v -> tgt.reference = v "canonicalValue";
}

group CodeableReference2Reference(source src : CodeableReferenceR5, target tgt : ReferenceR4B) extends Element <<type+>> {
  src.reference as v -> tgt then {
    v.reference -> tgt.reference;
    v.type -> tgt.type;
    v.identifier -> tgt.identifier;
    v.display -> tgt.display;
  };
}