FHIR Release 3 (STU)

This page is part of the FHIR Specification (v3.0.2: STU 3). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions

Orders and Observations Work GroupMaturity Level: N/ABallot Status: InformativeCompartments: Not linked to any defined compartments

R2 : R3 Converson maps for DataElement.

Functional status for this map: 4 tests that all execute ok. 1 fail round-trip testing and 2 r3 resources are invalid (4 errors). (see documentation)

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

uses "http://hl7.org/fhir/DSTU2/StructureDefinition/DataElement" alias DataElementR2 as source
uses "http://hl7.org/fhir/StructureDefinition/DataElement" alias DataElement as target

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

group for type+types  DataElement extends DomainResource
  input src : DataElementR2 as source
  input tgt : DataElement as target

  "DataElement-url" : for src.url make tgt.url
  "DataElement-identifier" : for src.identifier make tgt.identifier
  "DataElement-version" : for src.version make tgt.version
  "DataElement-status" : for src.status make tgt.status
  "DataElement-experimental" : for src.experimental make tgt.experimental
  "DataElement-publisher" : for src.publisher make tgt.publisher
  "DataElement-date" : for src.date make tgt.date
  "DataElement-name" : for src.name make tgt.name
  "DataElement-contact" : for src.contact as vs0 make tgt.contact as vt0 then decontact(vs0, vt0)
  "DataElement-jurisdiction" : for src.useContext where coding.system = 'urn:iso:std:iso:3166' make tgt.jurisdiction
  "DataElement-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)

  "DataElement-stringency" : for src.stringency make tgt.stringency
  "DataElement-mapping" : for src.mapping as vs0 make tgt.mapping as vt0 then deMapping(vs0, vt0)

  "DataElement-element" : for src.element as vs make tgt.element as vt, create("boolean") as first, first.value = "false" then ElementDefinition(vs, vt, first)
endgroup

group decontact extends Element
  input src as source
  input tgt as target
  
  "ContactDetail-name" : for src.name make tgt.name
  "ContactDetail-telecom" : for src.telecom make tgt.telecom
endgroup

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

  "DataElement.mapping-identity" : for src.identity make tgt.identity
  "DataElement.mapping-uri" : for src.uri make tgt.uri
  "DataElement.mapping-name" : for src.name make tgt.name
  "DataElement.mapping-comments" : for src.comments make tgt.comment
endgroup

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

uses "http://hl7.org/fhir/StructureDefinition/DataElement" alias DataElement as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/DataElement" alias DataElementR2 as target

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

group for type+types  DataElement extends DomainResource
  input src : DataElement as source
  input tgt : DataElementR2 as target

  "DataElement-url" : for src.url make tgt.url
  "DataElement-identifier" : for src.identifier make tgt.identifier
  "DataElement-version" : for src.version make tgt.version
  "DataElement-experimental" : for src.experimental make tgt.experimental
  "DataElement-name" : for src.name make tgt.name
  "DataElement-status" : for src.status make tgt.status
  "DataElement-publisher" : for src.publisher make tgt.publisher
  "DataElement-contact" : for src.contact as vs0 make tgt.contact as vt0 then decontact(vs0, vt0)
  "DataElement-date" : for src.date make tgt.date
  "DataElement-useContext" : for src.jurisdiction make tgt.useContext
  "DataElement-useContext" : for src.useContext as vs then {
    "DataElement-useContext-value" : for vs.value make tgt.useContext
  }
  
  "DataElement-stringency" : for src.stringency make tgt.stringency
  "DataElement-mapping" : for src.mapping as vs0 make tgt.mapping as vt0 then deMapping(vs0, vt0)

  "DataElement-element" : for src.element as vs make tgt.element as vt then ElementDefinition(src, vs, vt)

endgroup

group decontact extends Element
  input src as source
  input tgt as target
  
  "ContactDetail-name" : for src.name make tgt.name
  "ContactDetail-telecom" : for src.telecom make tgt.telecom
endgroup

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

  "DataElement.mapping-identity" : for src.identity make tgt.identity
  "DataElement.mapping-uri" : for src.uri make tgt.uri
  "DataElement.mapping-name" : for src.name make tgt.name
  "DataElement.mapping-comments" : for src.comment make tgt.comments
endgroup

gender
  • WARNING @ DataElement.useContext.valueCodeableConcept.coding[5].display: value should not start or finish with whitespace (src = InstanceValidator)
dataelement-sdc-profile-example-de
  • ERROR @ DataElement.extension[1].valueReference: Unable to resolve resource '#doc' (src = InstanceValidator)
  • ERROR @ DataElement.extension[1].valueReference: SHALL have a contained resource if a local reference is provided ( (url: doc; ids: vm-valueset,pv-valueset,pv-conceptmap,sub-org)) [reference.startsWith('#').not() or (reference.substring(1).trace('url') in %resource.contained.id.trace('ids'))] (src = InstanceValidator)
  • ERROR @ DataElement.element.binding.valueSetReference.extension[2].valueReference: Invalid Resource target type. Found ConceptMap, but expected one of (ValueSet) (src = InstanceValidator)