FHIR Extensions Pack
5.1.0 - 5.1.0 (April 2024) International flag

This page is part of the FHIR Core Extensions Registry (v5.1.0: Release 5.1) based on FHIR (HL7® FHIR® Standard) v5.0.0. This is the current published version. For a full list of available versions, see the Directory of published versions

StructureMap: FML Conversion for SpecimenDefinition: R5 to R4

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

FMLConversionforSpecimenDefinitionR5toR4

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

conceptmap "PublicationStatus" {
  prefix s = "http://hl7.org/fhir/publication-status"
  prefix t = "http://hl7.org/fhir/4.0/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/specimen-contained-preference"
  prefix t = "http://hl7.org/fhir/4.0/specimen-contained-preference"

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

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

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

group SpecimenDefinition(source src : SpecimenDefinitionR5, target tgt : SpecimenDefinitionR4) 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;
}