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

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

R2 : R3 Converson : R4 Conversion maps for Medication.

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

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

uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Medication" alias MedicationR2 as source
uses "http://hl7.org/fhir/StructureDefinition/Medication" alias Medication as target

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

group for type+types  Medication extends DomainResource
  input src : MedicationR2 as source
  input tgt : Medication as target

  "Medication-code" : for src.code make tgt.code
  "Medication-isBrand" : for src.isBrand make tgt.isBrand
  "Medication-manufacturer" : for src.manufacturer make tgt.manufacturer
  
  "Medication-product" : for src.product as vs0 then medProduct(vs0, tgt)
  "Medication-package" : for src.package as vs0 make tgt.package as vt0 then medPackage(vs0, vt0)
endgroup

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

  "Medication.product-form" : for src.form make tgt.form
  "Medication.product-ingredient" : for src.ingredient as vs0 make tgt.ingredient as vt0 then medIngredient(vs0, vt0)
  "Medication.product-batch" : for src.batch as vs0 make tgt.package as pkg, pkg.batch as vt0 then medBatch(vs0, vt0)
endgroup

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

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


  "Medication.product.batch-item" : for src.item make tgt.item
  "Medication.product.batch-amount" : for src.amount make tgt.amount
endgroup

uses "http://hl7.org/fhir/3.0/StructureDefinition/Medication" alias MedicationR3 as source
uses "http://hl7.org/fhir/StructureDefinition/Medication" alias Medication as target


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

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


  "Medication.product.batch-lotNumber" : for src.lotNumber make tgt.lotNumber
  "Medication.product.batch-expirationDate" : for src.expirationDate make tgt.expirationDate
endgroup

group Medication(source src : MedicationR3, target tgt : Medication) extends DomainResource <<type+>> {
  src.code -> tgt.code;
  src.status as v ->  tgt.extension as vt,  vt.url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-Medication.status',  vt.value = v;
  src.isBrand as v ->  tgt.extension as vt,  vt.url = 'hhttp://hl7.org/fhir/3.0/StructureDefinition/extension-Medication.isBrand',  vt.value = v;
  src.isOverTheCounter as v ->  tgt.extension as vt,  vt.url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-MedicationOTC',  vt.value = v;
  src.manufacturer -> tgt.manufacturer;
  src.form -> tgt.form;
  src.ingredient as vs0 -> tgt.ingredient as vt0 then ingredient(vs0, vt0);
  src.package as vs0 then package(vs0, tgt);
  src.image as v ->  tgt.extension as vt,  vt.url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-MedicationImage',  vt.value = v;
}


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

group ingredient(source src, target tgt) extends BackboneElement {
  src.item : CodeableConcept as vs -> tgt.item = create('CodeableConcept') as vt then CodeableConcept(vs, vt);
  src.item : Reference as vs -> tgt.item = create('Reference') as vt then Reference(vs, vt);
  src.isActive -> tgt.isActive;
  src.amount -> tgt.strength;
}


  "Medication.package-container" : for src.container make tgt.container
  "Medication.package-content" : for src.content as vs0 make tgt.content as vt0 then medContent(vs0, vt0)
endgroup

group package(source src, target tgt) {
  src.container as v ->  tgt.extension as vt,  vt.url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-Medication.package.container',  vt.value = v;
  src.content as vs0 ->  tgt.extension as vt,  vt.url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-Medication.package.content' then content(vs0, vt);
  src.batch as vs0 -> tgt.batch as vt0 then batch(vs0, vt0);
}


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

group content(source src, target tgt) extends Element {
  src.item as v ->  tgt.extension as vt,  vt.url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-Medication.package.content',  vt.value = v;
  src.amount as v ->  tgt.extension as vt,  vt.url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-Medication.package.content.amount',  vt.value = v;
}


  "Medication.package.content-item" : for src.item make tgt.item
  "Medication.package.content-amount" : for src.amount make tgt.amount
endgroup

group batch(source src, target tgt) extends BackboneElement {
  src.lotNumber -> tgt.lotNumber;
  src.expirationDate -> tgt.expirationDate;
}



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

uses "http://hl7.org/fhir/StructureDefinition/Medication" alias Medication as source
uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Medication" alias MedicationR2 as target

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

group for type+types  Medication extends DomainResource
  input src : Medication as source
  input tgt : MedicationR2 as target

  "Medication-code" : for src.code make tgt.code
  "Medication-isBrand" : for src.isBrand make tgt.isBrand
  "Medication-manufacturer" : for src.manufacturer make tgt.manufacturer
  
  "Medication.product-form" : for src.form as v make tgt.product as vt0, vt0.form as v
  "Medication.product-ingredient" : for src.ingredient as vs0 make tgt.product as vt0, vt0.ingredient as vt1 then medIngredient(vs0, vt1)
  "Medication-package" : for src.package as vs0 make tgt.package as vt0 then medPackage(vs0, vt0, tgt)
endgroup

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

  "Medication.product-form" : for src.form make tgt.form
  "Medication.product-ingredient" : for src.ingredient as vs0 make tgt.ingredient as vt0 then medIngredient(vs0, vt0)
endgroup

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

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


  "Medication.product.batch-item" : for src.item where $this is Reference make tgt.item
  "Medication.product.batch-amount" : for src.amount make tgt.amount
endgroup

uses "http://hl7.org/fhir/StructureDefinition/Medication" alias Medication as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/Medication" alias MedicationR3 as target


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

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


  "Medication.product.batch-lotNumber" : for src.lotNumber make tgt.lotNumber
  "Medication.product.batch-expirationDate" : for src.expirationDate make tgt.expirationDate
endgroup

group Medication(source src : Medication, target tgt : MedicationR3) extends DomainResource <<type+>> {
  src.code -> tgt.code;
  src.extension as e where url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-Medication.status' then {
    e.value -> tgt.status;
  };
  src.extension as e where url = 'hhttp://hl7.org/fhir/3.0/StructureDefinition/extension-Medication.isBrand' then {
    e.value -> tgt.isBrand;
  };
  src.extension as e where url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-MedicationOTC' then {
    e.value -> tgt.isOverTheCounter;
  };
  src.manufacturer -> tgt.manufacturer;
  src.form -> tgt.form;
  src.ingredient as vs0 -> tgt.ingredient as vt0 then ingredient(vs0, vt0);
  src where batch.exists() or extension.where(url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-Medication.package.container').exists() or extension.where(url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-Medication.package.content').exists() -> tgt.package as vt0 then package(src, vt0) "batch";
  src.extension as e where url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-MedicationImage' then {
    e.value -> tgt.image;
  };
}


group medPackage extends BackboneElement
  input src as source
  input tgt as target
  input res as target

group ingredient(source src, target tgt) extends BackboneElement {
  src.item : CodeableConcept as vs -> tgt.item = create('CodeableConcept') as vt then CodeableConcept(vs, vt);
  src.item : Reference as vs -> tgt.item = create('Reference') as vt then Reference(vs, vt);
  src.isActive -> tgt.isActive;
  src.strength -> tgt.amount;
}


  "Medication.package-container" : for src.container make tgt.container
  "Medication.package-content" : for src.content as vs0 make tgt.content as vt0 then medContent(vs0, vt0)
  "Medication.product-batch" : for src.batch as vs0 make res.product as vt1, vt1.batch as vt0 then medBatch(vs0, vt0)
endgroup

group package(source src, target tgt) {
  src.extension as e where url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-Medication.package.container' then {
    e.value -> tgt.container;
  };
  src.extension as e where url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-Medication.package.content' -> tgt.content as vt0 then content(e, vt0);
  src.batch as vs0 -> tgt.batch as vt0 then batch(vs0, vt0);
}


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

group content(source src, target tgt) extends Element {
  src.extension as e where url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-Medication.package.content' then {
    e.value : CodeableConcept as vs -> tgt.item = create('CodeableConcept') as vt then CodeableConcept(vs, vt);
    e.value : Reference as vs -> tgt.item = create('Reference') as vt then Reference(vs, vt);
  };
  src.extension as e where url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-Medication.package.content.amount' then {
    e.value -> tgt.amount;
  };
}


  "Medication.package.content-item" : for src.item where $this is Reference make tgt.item
  "Medication.package.content-amount" : for src.amount make tgt.amount
endgroup

group batch(source src, target tgt) extends BackboneElement {
  src.lotNumber -> tgt.lotNumber;
  src.expirationDate -> tgt.expirationDate;
}



medexample012 WARNING @ Medication.code.coding.display: value should not start or finish with whitespace (src = InstanceValidator) <p>No validation errors - all conversions are clean</p>