FHIR Extensions Pack
1.0.0 - Working Copy International flag

This page is part of the FHIR Core Extensions Registry (v1.0.0: Releases) based on FHIR v5.0.0. This is the current published version in its permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of published versions

StructureMap: FML Conversion for SpecimenDefinition: R4 to R5

Official URL: http://hl7.org/fhir/StructureMap/SpecimenDefinition4to5 Version: 1.0.0
Standards status: Trial-use Maturity Level: 1 Computable Name: SpecimenDefinition4to5

FMLConversionforSpecimenDefinitionR4toR5

/// url = 'http://hl7.org/fhir/StructureMap/SpecimenDefinition4to5'
/// name = 'SpecimenDefinition4to5'
/// title = 'FML Conversion for SpecimenDefinition: R4 to R5'
/// status = 'active'

conceptmap "PublicationStatus" {
  prefix s = "http://hl7.org/fhir/4.0/publication-status"
  prefix t = "http://hl7.org/fhir/publication-status"

  s:draft - t:draft
  s:active - t:active
  s:retired - t:retired
  s:unknown - t:unknown
}

conceptmap "SpecimenContainedPreference" {
  prefix s = "http://hl7.org/fhir/4.0/specimen-contained-preference"
  prefix t = "http://hl7.org/fhir/specimen-contained-preference"

  s:preferred - t:preferred
  s:alternate - t:alternate
}

uses "http://hl7.org/fhir/4.0/StructureDefinition/SpecimenDefinition" alias SpecimenDefinitionR4 as source
uses "http://hl7.org/fhir/StructureDefinition/SpecimenDefinition" alias SpecimenDefinitionR5 as target

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

group SpecimenDefinition(source src : SpecimenDefinitionR4, target tgt : SpecimenDefinitionR5) extends DomainResource <<type+>> {
  src.identifier -> tgt.identifier; // src.url -> tgt.url;
  src.typeCollected -> tgt.typeCollected; // src.version -> tgt.version;
  src.patientPreparation -> tgt.patientPreparation;
  src.timeAspect -> tgt.timeAspect;
  src.collection -> tgt.collection;
  src.typeTested as s -> tgt.typeTested as t then SpecimenDefinitionTypeTested(s, t);
}

group SpecimenDefinitionTypeTested(source src, target tgt) extends BackboneElement {
  src.isDerived -> tgt.isDerived;
  src.type -> tgt.type;
  src.preference as v -> tgt.preference = translate(v, '#SpecimenContainedPreference', 'code');
  src.container as s -> tgt.container as t then SpecimenDefinitionTypeTestedContainer(s, t);
  src.requirement -> tgt.requirement;
  src.retentionTime -> tgt.retentionTime;
  src.rejectionCriterion -> tgt.rejectionCriterion; // src.singleUse -> tgt.singleUse;
  src.handling as s -> tgt.handling as t then SpecimenDefinitionTypeTestedHandling(s, t);
}

group SpecimenDefinitionTypeTestedContainer(source src, target tgt) extends BackboneElement {
  src.material -> tgt.material;
  src.type -> tgt.type;
  src.cap -> tgt.cap;
  src.description -> tgt.description;
  src.capacity -> tgt.capacity;
  src.minimumVolume : Quantity -> tgt.minimumVolume;
  src.minimumVolume : string -> tgt.minimumVolume;
  src.additive as s -> tgt.additive as t then SpecimenDefinitionTypeTestedContainerAdditive(s, t);
  src.preparation -> tgt.preparation;
}

group SpecimenDefinitionTypeTestedContainerAdditive(source src, target tgt) extends BackboneElement {
  src.additive : CodeableConcept -> tgt.additive;
  src.additive : Reference -> tgt.additive;
}

group SpecimenDefinitionTypeTestedHandling(source src, target tgt) extends BackboneElement {
  src.temperatureQualifier -> tgt.temperatureQualifier;
  src.temperatureRange -> tgt.temperatureRange;
  src.maxDuration -> tgt.maxDuration;
  src.instruction -> tgt.instruction;
}