FHIR Release 3 (STU) Current Build
This page is part of FHIR STU 3 (v3.0.1) in it's permanent home (it will always be available at this URL). It has been superceded by R4 . For a full list of available versions, see the Directory of published versions .
Orders and Observations Work Group Maturity Level : N/A Ballot Standards Status : Informative Security Category : Business Compartments : Device Not linked to any defined compartments

R2 : R3 Converson : R4 Conversion maps for Device.

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

map "http://hl7.org/fhir/StructureMap/Device3to4" = "R3 to R4 Conversions for Device"
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Device" alias DeviceR2 as source

uses "http://hl7.org/fhir/3.0/StructureDefinition/Device" alias DeviceR3 as source

uses "http://hl7.org/fhir/StructureDefinition/Device" alias Device as target
imports "http://hl7.org/fhir/StructureMap/*2to3"

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

group for type+types  Device extends DomainResource
  input src : DeviceR2 as source
  input tgt : Device as target

group Device(source src : DeviceR3, target tgt : Device) extends DomainResource <<type+>> {
  src.identifier -> tgt.identifier;
  src.udi as vs0 -> tgt.udiCarrier as vt0 then {
    vs0.deviceIdentifier -> vt0.deviceIdentifier;
    vs0.name as vs ->  tgt.deviceName as vt,  vt.name = vs,  vt.type = 'udi-label-name';
    vs0.jurisdiction -> vt0.jurisdiction;
    vs0.carrierHRF -> vt0.carrierHRF;
    vs0.carrierAIDC -> vt0.carrierAIDC;
    vs0.issuer -> vt0.issuer;
    vs0.entryType -> vt0.entryType;
  };
  src.status -> tgt.status;
  src.type -> tgt.type;
  src.lotNumber -> tgt.lotNumber;
  src.manufacturer -> tgt.manufacturer;
  src.manufactureDate -> tgt.manufactureDate;
  src.expirationDate -> tgt.expirationDate;
  src.model -> tgt.modelNumber;
  src.version as vs ->  tgt.version as vt,  vt.value = vs;
  src.patient -> tgt.patient;
  src.owner -> tgt.owner;
  src.contact -> tgt.contact;
  src.location -> tgt.location;
  src.url -> tgt.url;
  src.note -> tgt.note;
  src.safety -> tgt.safety;
}

  "Device-identifier" : for src.identifier make tgt.identifier
  "Device-type" : for src.type make tgt.type
  "Device-note" : for src.note make tgt.note
  "Device-status" : for src.status as v make tgt.status = translate(v, "#DeviceStatus", "code")
  "Device-manufacturer" : for src.manufacturer make tgt.manufacturer
  "Device-model" : for src.model make tgt.model
  "Device-version" : for src.version make tgt.version
  "Device-manufactureDate" : for src.manufactureDate make tgt.manufactureDate
  "Device-expirationDate" : for src.expiry make tgt.expirationDate
  "Device-udi" : for src.udi as u make tgt.udi as t, t.deviceIdentifier = u
  "Device-lotNumber" : for src.lotNumber make tgt.lotNumber
  "Device-owner" : for src.owner make tgt.owner
  "Device-location" : for src.location make tgt.location
  "Device-patient" : for src.patient make tgt.patient
  "Device-contact" : for src.contact make tgt.contact
  "Device-url" : for src.url make tgt.url
endgroup

map "http://hl7.org/fhir/StructureMap/Device3to2" = "R3 to R2 Conversion for Device" conceptmap "DeviceStatus" { prefix s = "http://hl7.org/fhir/devicestatus" prefix t = "http://hl7.org/fhir/devicestatus" s:available = t:active s:"not-available" = t:inactive s:"entered-in-error" = t:"entered-in-error" }
map "http://hl7.org/fhir/StructureMap/Device4to3" = "R4 to R3 Conversion for Device"
uses "http://hl7.org/fhir/StructureDefinition/Device" alias Device as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Device" alias DeviceR2 as target
imports "http://hl7.org/fhir/StructureMap/*3to2"

uses "http://hl7.org/fhir/3.0/StructureDefinition/Device" alias DeviceR3 as target

group for type+types  Device extends DomainResource
  input src : Device as source
  input tgt : DeviceR2 as target

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

  "Device-identifier" : for src.identifier make tgt.identifier
  "Device-type" : for src.type make tgt.type
  "Device-note" : for src.note make tgt.note
  "Device-status" : for src.status as v make tgt.status = translate(v, "#DeviceStatus", "code")
  "Device-manufacturer" : for src.manufacturer make tgt.manufacturer
  "Device-model" : for src.model make tgt.model
  "Device-version" : for src.version make tgt.version
  "Device-manufactureDate" : for src.manufactureDate make tgt.manufactureDate
  "Device-expirationDate" : for src.expirationDate make tgt.expiry
  "Device-udi" : for src.udi as u then udi(u, tgt)
  "Device-lotNumber" : for src.lotNumber make tgt.lotNumber
  "Device-owner" : for src.owner make tgt.owner
  "Device-location" : for src.location make tgt.location
  "Device-patient" : for src.patient make tgt.patient
  "Device-contact" : for src.contact make tgt.contact
  "Device-url" : for src.url make tgt.url
endgroup

group Device(source src : Device, target tgt : DeviceR3) extends DomainResource <<type+>> {
  src.identifier -> tgt.identifier;
  src.udiCarrier as vs0 -> tgt.udi as vt0 then {
    vs0.deviceIdentifier -> vt0.deviceIdentifier;
    vs0.jurisdiction -> vt0.jurisdiction;
    vs0.carrierHRF -> vt0.carrierHRF;
    vs0.carrierAIDC -> vt0.carrierAIDC;
    vs0.issuer -> vt0.issuer;
    vs0.entryType -> vt0.entryType;
  };
  src.status -> tgt.status;
  src.type -> tgt.type;
  src.lotNumber -> tgt.lotNumber;
  src.manufacturer -> tgt.manufacturer;
  src.manufactureDate -> tgt.manufactureDate;
  src.expirationDate -> tgt.expirationDate;
  src.modelNumber -> tgt.model;
  src.version as vs -> tgt as vt then {
    vs.value -> tgt.version;
  };
  src.deviceName as vs -> tgt.udi as vt then {
    vs.name -> vt.name;
  };
  src.patient -> tgt.patient;
  src.owner -> tgt.owner;
  src.contact -> tgt.contact;
  src.location -> tgt.location;
  src.url -> tgt.url;
  src.note -> tgt.note;
  src.safety -> tgt.safety;
}

group udi 
  input src as source
  input tgt as target
  
  "udi" : for src.deviceIdentifier make tgt.udi
endgroup

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