FHIR Extensions Pack v5.1.0-cibuild (2024-04-21)

FHIR Extensions Pack, published by HL7 International / FHIR Infrastructure. This guide is not an authorized publication; it is the continuous build for version 5.1.0-cibuild built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/fhir-extensions/ and changes regularly. See the Directory of published versions

Biomedical Research and Regulation Work GroupMaturity Level: N/AStandards Status: InformativeSecurity Category: N/A Compartments: N/A

Following are maps for converting between the equivalent R4B resource and this R5 resource.

Maps to SubstancePolymer

FML Conversion for SubstancePolymer: R5 to R4 (Ready for Use/Trial Use)

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

uses "http://hl7.org/fhir/StructureDefinition/SubstancePolymer" alias SubstancePolymerR5 as source
uses "http://hl7.org/fhir/4.0/StructureDefinition/SubstancePolymer" alias SubstancePolymerR4 as target

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

group SubstancePolymer(source src : SubstancePolymerR5, target tgt : SubstancePolymerR4) extends DomainResource <<type+>> {
  src.class -> tgt.class; // src.identifier -> tgt.identifier;
  src.geometry -> tgt.geometry;
  src.copolymerConnectivity -> tgt.copolymerConnectivity;
  src.modification -> tgt.modification;
  src.monomerSet as s -> tgt.monomerSet as t then SubstancePolymerMonomerSet(s, t);
  src.repeat as s -> tgt.repeat as t then SubstancePolymerRepeat(s, t);
}

group SubstancePolymerMonomerSet(source src, target tgt) extends BackboneElement {
  src.ratioType -> tgt.ratioType;
  src.startingMaterial as s -> tgt.startingMaterial as t then SubstancePolymerMonomerSetStartingMaterial(s, t);
}

group SubstancePolymerMonomerSetStartingMaterial(source src, target tgt) extends BackboneElement {
  src.code -> tgt.material;
  src.category -> tgt.type;
  src.isDefining -> tgt.isDefining;
  src.amount as s -> tgt.amount = s.amount;
}

group SubstancePolymerRepeat(source src, target tgt) extends BackboneElement {
  src.averageMolecularFormula -> tgt.averageMolecularFormula;
  src.repeatUnitAmountType -> tgt.repeatUnitAmountType;
  src.repeatUnit as s -> tgt.repeatUnit as t then SubstancePolymerRepeatRepeatUnit(s, t);
}

group SubstancePolymerRepeatRepeatUnit(source src, target tgt) extends BackboneElement {
  src.unit -> tgt.repeatUnit;
  src.orientation -> tgt.orientationOfPolymerisation;
  src.degreeOfPolymerisation as s -> tgt.degreeOfPolymerisation as t then SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisation(s, t); // src.amount -> tgt.amount;
  src.structuralRepresentation as s -> tgt.structuralRepresentation as t then SubstancePolymerRepeatRepeatUnitStructuralRepresentation(s, t);
}

group SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisation(source src, target tgt) extends BackboneElement {
  src.type -> tgt.degree;
  src.average as s ->  tgt.amount as t,  t.amount = create('Quantity') as ta,  ta.value = s;
  src.low as s ->  tgt.amount as t,  t.referenceRange as tr,  tr.lowLimit = create('Quantity') as ts,  ts.value = s;
  src.high as s ->  tgt.amount as t,  t.referenceRange as tr,  tr.highLimit = create('Quantity') as ts,  ts.value = s;
}

group SubstancePolymerRepeatRepeatUnitStructuralRepresentation(source src, target tgt) extends BackboneElement {
  src.type -> tgt.type;
  src.representation -> tgt.representation;
  src.attachment -> tgt.attachment; // src.format -> tgt.format;
}

Maps from SubstancePolymer

FML Conversion for SubstancePolymer: R4 to R5 (Ready for Use/Trial Use)

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

uses "http://hl7.org/fhir/4.0/StructureDefinition/SubstancePolymer" alias SubstancePolymerR4 as source
uses "http://hl7.org/fhir/StructureDefinition/SubstancePolymer" alias SubstancePolymerR5 as target

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

group SubstancePolymer(source src : SubstancePolymerR4, target tgt : SubstancePolymerR5) extends DomainResource <<type+>> {
  src.class -> tgt.class; // src.identifier -> tgt.identifier;
  src.geometry -> tgt.geometry;
  src.copolymerConnectivity -> tgt.copolymerConnectivity;
  src.modification -> tgt.modification;
  src.monomerSet as s -> tgt.monomerSet as t then SubstancePolymerMonomerSet(s, t);
  src.repeat as s -> tgt.repeat as t then SubstancePolymerRepeat(s, t);
}

group SubstancePolymerMonomerSet(source src, target tgt) extends BackboneElement {
  src.ratioType -> tgt.ratioType;
  src.startingMaterial as s -> tgt.startingMaterial as t then SubstancePolymerMonomerSetStartingMaterial(s, t);
}

group SubstancePolymerMonomerSetStartingMaterial(source src, target tgt) extends BackboneElement {
  src.material -> tgt.code;
  src.type -> tgt.category;
  src.isDefining -> tgt.isDefining;
  src.amount as s ->  tgt.amount as t,  t = s.amount;
}

group SubstancePolymerRepeat(source src, target tgt) extends BackboneElement {
  src.averageMolecularFormula -> tgt.averageMolecularFormula;
  src.repeatUnitAmountType -> tgt.repeatUnitAmountType;
  src.repeatUnit as s -> tgt.repeatUnit as t then SubstancePolymerRepeatRepeatUnit(s, t);
}

group SubstancePolymerRepeatRepeatUnit(source src, target tgt) extends BackboneElement {
  src.repeatUnit -> tgt.unit;
  src.orientationOfPolymerisation -> tgt.orientation;
  src.degreeOfPolymerisation as s -> tgt.degreeOfPolymerisation as t then SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisation(s, t); // src.amount -> tgt.amount;
  src.structuralRepresentation as s -> tgt.structuralRepresentation as t then SubstancePolymerRepeatRepeatUnitStructuralRepresentation(s, t);
}

group SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisation(source src, target tgt) extends BackboneElement {
  src.degree -> tgt.type;
  src.amount as s -> tgt then {
    s.amount : Quantity as v -> tgt.average = v.value;
    s.referenceRange as sr -> tgt then {
      sr.lowLimit as vl -> tgt.low = vl.value;
      sr.highLimit as vh -> tgt.high = vh.value;
    };
  };
}

group SubstancePolymerRepeatRepeatUnitStructuralRepresentation(source src, target tgt) extends BackboneElement {
  src.type -> tgt.type;
  src.representation -> tgt.representation;
  src.attachment -> tgt.attachment; // src.format -> tgt.format;
}