FHIR Release 3 (STU) 4

This page is part of the FHIR Specification (v3.0.2: (v4.0.1: R4 - Mixed Normative and STU 3). ) in it's permanent home (it will always be available at this URL). 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 R4 R3

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

R2 : R3 Converson : R4 Conversion maps for ImplementationGuide.

Functional status for this map: 1 test that all execute ok. All tests pass round-trip testing and all 1 r3 resources are valid. invalid (0 errors). ( see documentation)

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

uses "http://hl7.org/fhir/DSTU2/StructureDefinition/ImplementationGuide" alias ImplementationGuideR2 as source
uses "http://hl7.org/fhir/StructureDefinition/ImplementationGuide" alias ImplementationGuide as target

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


imports "http://hl7.org/fhir/StructureMap/primitives2to3"
imports "http://hl7.org/fhir/StructureMap/BackboneElement2to3"
imports "http://hl7.org/fhir/StructureMap/DomainResource2to3"
imports "http://hl7.org/fhir/StructureMap/ContactPoint2to3"
imports "http://hl7.org/fhir/StructureMap/CodeableConcept2to3"
imports "http://hl7.org/fhir/StructureMap/Reference2to3"

uses "http://hl7.org/fhir/3.0/StructureDefinition/ImplementationGuide" alias ImplementationGuideR3 as source
uses "http://hl7.org/fhir/StructureDefinition/ImplementationGuide" alias ImplementationGuide as target


group for type+types  ImplementationGuide extends DomainResource
  input src : ImplementationGuideR2 as source
  input tgt : ImplementationGuide as target

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


  "ImplementationGuide-url" : for src.url make tgt.url
  "ImplementationGuide-version" : for src.version make tgt.version
  "ImplementationGuide-name" : for src.name make tgt.name
  "ImplementationGuide-status" : for src.status make tgt.status
  "ImplementationGuide-experimental" : for src.experimental make tgt.experimental
  "ImplementationGuide-publisher" : for src.publisher make tgt.publisher
  "ImplementationGuide-contact" : for src.contact as vs0 make tgt.contact as vt0 then {
    "ContactDetail-name" : for vs0.name make vt0.name
    "ContactDetail-telecom" : for vs0.telecom make vt0.telecom
  }

group ImplementationGuide(source src : ImplementationGuideR3, target tgt : ImplementationGuide) extends DomainResource <<type+>> {
  src.url -> tgt.url;
  src.version -> tgt.version;
  src.name -> tgt.name;
  src.status -> tgt.status;
  src.experimental -> tgt.experimental;
  src.date -> tgt.date;
  src.publisher -> tgt.publisher;
  src.contact -> tgt.contact;
  src.description -> tgt.description;
  src.useContext -> tgt.useContext;
  src.jurisdiction -> tgt.jurisdiction;
  src.copyright -> tgt.copyright;
  src.fhirVersion -> tgt.fhirVersion;
  src.dependency as vs0 check type = 'reference' -> tgt.dependsOn as vt0 then dependency(vs0, vt0);
  src.global as vs0 -> tgt.global as vt0 then global(vs0, vt0);
  src -> tgt.definition as dfn then definition(src, dfn) "definition";
  src where binary.exists() -> tgt.manifest as mft then manifest(src, mft) "manifest";
}


  "ImplementationGuide-description" : for src.description make tgt.description
  "ImplementationGuide-copyright" : for src.copyright make tgt.copyright
  "ImplementationGuide-jurisdiction" : for src.useContext where coding.system = 'urn:iso:std:iso:3166' make tgt.jurisdiction
  "ImplementationGuide-useContext" : for src.useContext as vs where (coding.system = 'urn:iso:std:iso:3166').not() make  tgt.useContext as uc,  uc.code as ucc,  ucc.system = "http://hl7.org/fhir/usage-context-type",  ucc.code = "task",  uc.value = create("CodeableConcept") as vt then CodeableConcept(vs, vt)
  "ImplementationGuide-date" : for src.date make tgt.date
  "ImplementationGuide-fhirVersion" : for src.fhirVersion make tgt.fhirVersion
  "ImplementationGuide-dependency" : for src.dependency as vs0 make tgt.dependency as vt0 then {
    "ImplementationGuide.dependency-type" : for vs0.type make vt0.type
    "ImplementationGuide.dependency-uri" : for vs0.uri make vt0.uri
  }

group dependency(source src, target tgt) extends BackboneElement {
  src.uri -> tgt.uri;
}


  "ImplementationGuide-package" : for src.package as vs0 make tgt.package as vt0 then {
    "ImplementationGuide.package-name" : for vs0.name make vt0.name
    "ImplementationGuide.package-description" : for vs0.description make vt0.description
    "ImplementationGuide.package-resource" : for vs0.resource as vs make vt0.resource as vt then resource(vs, vt)
  }

group global(source src, target tgt) extends BackboneElement {
  src.type -> tgt.type;
  src.profile -> tgt.profile;
}


  "ImplementationGuide-global" : for src.global as vs0 make tgt.global as vt0 then {
    "ImplementationGuide.global-type" : for vs0.type make vt0.type
    "ImplementationGuide.global-profile" : for vs0.profile make vt0.profile
  }

group definition(source src, target tgt) extends BackboneElement {
  src.package as pck -> tgt.grouping as grp then grouping(pck, tgt, grp);
  src.page as vs0 -> tgt.page as vt0 then page(vs0, vt0);
}


  "ImplementationGuide-binary" : for src.binary make tgt.binary
  "ImplementationGuide-page" : for src.page as vs0 make tgt.page as vt0 then page(vs0, vt0)
endgroup

group grouping(source src, target dfn, target grp) extends BackboneElement {
  src.name -> grp.name;
  src.description -> grp.description;
  src.resource as rs -> dfn.resource as rt then resource(rs, rt, src);
}


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

group resource(source src, target tgt, source pck) extends BackboneElement {
  pck.id -> tgt.groupingId "packageId";
  src.example where src.exampleFor.empty() as vs0 -> tgt.example = create('boolean') as vt0 then boolean(vs0, vt0);
  src.name -> tgt.name;
  src.description -> tgt.description;
  src.acronym as vs ->  tgt.extension as ext,  ext.url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-ImplementationGuide.package.resource.acronym',  ext.value = vs;
  src.source : uri as vs ->  tgt.reference as ref,  ref.reference = vs,  ref.extension as ext,  ext.url = 'http://hl7.org/fhir/3.0/StructureDefinition/BaseType',  ext.value = 'uri' "sourceUri";
  src.source : Reference as vs0 -> tgt.reference as vt0 then reference(vs0, vt0) "sourceRef";
  src.exampleFor as vs0 -> tgt.example = create('canonical') as vt0 then Reference2Canonical(vs0, vt0);
}


  "ImplementationGuide.resource-purpose" : for src where src.purpose = 'example' make tgt.example = true
  "ImplementationGuide.resource-name" : for src.name make tgt.name
  "ImplementationGuide.resource-description" : for src.description make tgt.description
  "ImplementationGuide.resource-acronym" : for src.acronym make tgt.acronym
  "ImplementationGuide.resource-source" : for src.source make tgt.source
  "ImplementationGuide.resource-exampleFor" : for src.exampleFor make tgt.exampleFor
endgroup

group page(source src, target tgt) extends BackboneElement {
  src.source as vs0 -> tgt.name = create('uri') as vt0 then uri(vs0, vt0);
  src.title -> tgt.title;
  src.kind as vs ->  tgt.extension as ext,  ext.url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-ImplementationGuide.page.kind',  ext.value = vs;
  src.type as vs ->  tgt.extension as ext,  ext.url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-ImplementationGuide.page.type',  ext.value = vs;
  src.package as vs ->  tgt.extension as ext,  ext.url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-ImplementationGuide.page.package',  ext.value = vs;
  src.format as vs ->  tgt.extension as ext,  ext.url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-ImplementationGuide.page.format',  ext.value = vs;
  src.page as vs0 -> tgt.page as vt0 then page(vs0, vt0);
}


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

group manifest(source src, target tgt) extends BackboneElement {
  src.binary -> tgt.other;
}


  "ImplementationGuide.page-source" : for src.source make tgt.source
  "ImplementationGuide.page-title" : for src.name make tgt.title
  "ImplementationGuide.page-kind" : for src.kind make tgt.kind
  "ImplementationGuide.page-type" : for src.type make tgt.type
  "ImplementationGuide.page-package" : for src.package make tgt.package
  "ImplementationGuide.page-format" : for src.format make tgt.format
  "ImplementationGuide.page-page" : for src.page as vs0 make tgt.page as vt0 then page(vs0, vt0)
endgroup


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

uses "http://hl7.org/fhir/StructureDefinition/ImplementationGuide" alias ImplementationGuide as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/ImplementationGuide" alias ImplementationGuideR2 as target

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


imports "http://hl7.org/fhir/StructureMap/primitives3to2"
imports "http://hl7.org/fhir/StructureMap/BackboneElement3to2"
imports "http://hl7.org/fhir/StructureMap/DomainResource3to2"
imports "http://hl7.org/fhir/StructureMap/ContactPoint3to2"
imports "http://hl7.org/fhir/StructureMap/Reference3to2"
imports "http://hl7.org/fhir/StructureMap/CodeableConcept3to2"

uses "http://hl7.org/fhir/StructureDefinition/ImplementationGuide" alias ImplementationGuide as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/ImplementationGuide" alias ImplementationGuideR3 as target


group for type+types  ImplementationGuide extends DomainResource
  input src : ImplementationGuide as source
  input tgt : ImplementationGuideR2 as target

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


  "ImplementationGuide-url" : for src.url make tgt.url
  "ImplementationGuide-version" : for src.version make tgt.version
  "ImplementationGuide-name" : for src.name make tgt.name
  "ImplementationGuide-status" : for src.status make tgt.status
  "ImplementationGuide-experimental" : for src.experimental make tgt.experimental
  "ImplementationGuide-publisher" : for src.publisher make tgt.publisher
  "ImplementationGuide-contact" : for src.contact as vs0 make tgt.contact as vt0 then {
    "ImplementationGuide.contact-name" : for vs0.name make vt0.name
    "ImplementationGuide.contact-telecom" : for vs0.telecom make vt0.telecom
  }

group ImplementationGuide(source src : ImplementationGuideR3, target tgt : ImplementationGuide) extends DomainResource <<type+>> {
  src.url -> tgt.url;
  src.version -> tgt.version;
  src.name -> tgt.name;
  src.status -> tgt.status;
  src.experimental -> tgt.experimental;
  src.date -> tgt.date;
  src.publisher -> tgt.publisher;
  src.contact -> tgt.contact;
  src.description -> tgt.description;
  src.useContext -> tgt.useContext;
  src.jurisdiction -> tgt.jurisdiction;
  src.copyright -> tgt.copyright;
  src.fhirVersion -> tgt.fhirVersion;
  src.dependsOn as vs0 -> tgt.dependency as vt0 then dependency(vs0, vt0) "dependency";
  src.global as vs0 -> tgt.global as vt0 then global(vs0, vt0);
  src.definition as vs0 then definition(vs0, tgt);
  src.manifest as mft then manifest(mft, tgt);
}


  "ImplementationGuide-date" : for src.date make tgt.date
  "ImplementationGuide-description" : for src.description make tgt.description
  "ImplementationGuide-useContext" : for src.jurisdiction make tgt.useContext
  "ImplementationGuide-copyright" : for src.copyright make tgt.copyright
  "ImplementationGuide-fhirVersion" : for src.fhirVersion make tgt.fhirVersion
  "ImplementationGuide-dependency" : for src.dependency as vs0 make tgt.dependency as vt0 then {
    "ImplementationGuide.dependency-type" : for vs0.type make vt0.type
    "ImplementationGuide.dependency-uri" : for vs0.uri make vt0.uri
  }

group dependency(source src, target tgt) extends BackboneElement {
  src -> tgt.type = 'reference' "type";
  src.uri -> tgt.uri;
}


  "ImplementationGuide-package" : for src.package as vs0 make tgt.package as vt0 then {
    "ImplementationGuide.package-name" : for vs0.name make vt0.name
    "ImplementationGuide.package-description" : for vs0.description make vt0.description
    "ImplementationGuide.package-resource" : for vs0.resource as vs make vt0.resource as vt then resource(vs, vt)
  }

group global(source src, target tgt) extends BackboneElement {
  src.type -> tgt.type;
  src.profile -> tgt.profile;
}


  "ImplementationGuide-global" : for src.global as vs0 make tgt.global as vt0 then {
    "ImplementationGuide.global-type" : for vs0.type make vt0.type
    "ImplementationGuide.global-profile" : for vs0.profile make vt0.profile
  }

group definition(source src, target tgt) extends BackboneElement {
  src.grouping as grp -> tgt.package as pck then grouping(grp, pck, src) "package";
  src.page as vs0 -> tgt.page as vt0 then page(vs0, vt0);
}


  "ImplementationGuide-binary" : for src.binary make tgt.binary
  "ImplementationGuide-page" : for src.page as vs0 make tgt.page as vt0 then page(vs0, vt0)
endgroup

group grouping(source src, target tgt, source dfn) extends BackboneElement {
  src.name -> tgt.name;
  src.description -> tgt.description;
  dfn.resource as rs where groupingId = src.id -> tgt.resource as rt then resource(rs, rt);
}


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

group resource(source src, target tgt) extends BackboneElement {
  src.example : boolean as vs0 -> tgt.example as vt0 then boolean(vs0, vt0);
  src.name -> tgt.name;
  src.description -> tgt.description;
  src.extension as ext where url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-ImplementationGuide.package.resource.acronym' then {
    ext.value as vs0 -> tgt.acronym = vs0 "acronym2";
  } "acronym";
  src.reference as vs0 where extension('http://hl7.org/fhir/3.0/StructureDefinition/BaseType').empty() -> tgt.source = create('Reference') as vt0 then Reference(vs0, vt0) "source1";
  src.reference as vs0 where extension('http://hl7.org/fhir/3.0/StructureDefinition/BaseType').exists() -> tgt.source = create('uri') as vt0 then {
    vs0.reference as vs1 then uri(vs1, vt0) "source2a";
  } "source2";
  src.example : canonical as vs0 ->  tgt.example = true,  tgt.exampleFor as vt0 then canonical2Reference(vs0, vt0) "exampleFor";
}


  "ImplementationGuide.resource-purpose" : for src where example = true make tgt.purpose = 'example'
  "ImplementationGuide.resource-name" : for src.name make tgt.name
  "ImplementationGuide.resource-description" : for src.description make tgt.description
  "ImplementationGuide.resource-acronym" : for src.acronym make tgt.acronym
  "ImplementationGuide.resource-source" : for src.source make tgt.source
  "ImplementationGuide.resource-exampleFor" : for src.exampleFor make tgt.exampleFor
endgroup

group page(source src, target tgt) extends BackboneElement {
  src.name : uri as vs0 -> tgt.source as vt0 then uri(vs0, vt0) "source";
  src.title -> tgt.title;
  src.extension as ext where url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-ImplementationGuide.page.kind' then {
    ext.value as vs0 -> tgt.kind = vs0 "acronym2";
  } "acronym";
  src.extension as ext where url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-ImplementationGuide.page.type' then {
    ext.value as vs0 -> tgt.type = vs0 "acronym2";
  } "acronym";
  src.extension as ext where url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-ImplementationGuide.page.package' then {
    ext.value as vs0 -> tgt.package = vs0 "acronym2";
  } "acronym";
  src.extension as ext where url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-ImplementationGuide.page.format' then {
    ext.value as vs0 -> tgt.format = vs0 "acronym2";
  } "acronym";
  src.page as vs0 -> tgt.page as vt0 then page(vs0, vt0);
}


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

group manifest(source src, target tgt) extends BackboneElement {
  src.other -> tgt.binary "binary";
}


  "ImplementationGuide.page-source" : for src.source make tgt.source
  "ImplementationGuide.page-name" : for src.title make tgt.name
  "ImplementationGuide.page-kind" : for src.kind make tgt.kind
  "ImplementationGuide.page-type" : for src.type make tgt.type
  "ImplementationGuide.page-package" : for src.package make tgt.package
  "ImplementationGuide.page-format" : for src.format make tgt.format
  "ImplementationGuide.page-page" : for src.page as vs0 make tgt.page as vt0 then page(vs0, vt0)
endgroup


<p>No validation errors - all conversions are clean</p>