Example
StructureDefinition/codesystem-alternate
(XML)
R3
:
R4
Conversion
maps
for
StructureMap.
Functional
status
for
this
map:
2
tests
that
all
execute
ok.
All
tests
pass
round-trip
testing
and
1
r3
resources
are
invalid
(0
errors).
(
see
documentation)
-
7.8.11.1
Narrative
R3
to
R4
-
XML
map "http://hl7.org/fhir/StructureMap/StructureMap3to4" = "R3 to R4 Conversions for StructureMap"
uses "http://hl7.org/fhir/3.0/StructureDefinition/StructureMap" alias StructureMapR3 as source
uses "http://hl7.org/fhir/StructureDefinition/StructureMap" alias StructureMap as target
imports "http://hl7.org/fhir/StructureMap/*3to4"
group StructureMap(source src : StructureMapR3, target tgt : StructureMap) extends DomainResource <<type+>> {
src.url -> tgt.url;
src.identifier -> tgt.identifier;
src.version -> tgt.version;
src.name -> tgt.name;
src.title -> tgt.title;
src.status -> tgt.status;
src.experimental -> tgt.experimental;
src.date -> tgt.date;
src.publisher -> tgt.publisher;
src.contact -> tgt.contact;
src.description -> tgt.description;
src.useContext -> tgt.useContext;
src.jurisdiction -> tgt.jurisdiction;
src.purpose -> tgt.purpose;
src.copyright -> tgt.copyright;
src.structure as vs0 -> tgt.structure as vt0 then structure(vs0, vt0);
src.import -> tgt.import;
src.group as vs0 -> tgt.group as vt0 then group(vs0, vt0);
}
group structure(source src, target tgt) extends BackboneElement {
src.url -> tgt.url;
src.mode -> tgt.mode;
src.alias -> tgt.alias;
src.documentation -> tgt.documentation;
}
group group(source src, target tgt) extends BackboneElement {
src.name -> tgt.name;
src.extends -> tgt.extends;
src.typeMode -> tgt.typeMode;
src.documentation -> tgt.documentation;
src.input as vs0 -> tgt.input as vt0 then input(vs0, vt0);
src.rule as vs0 -> tgt.rule as vt0 then rule(vs0, vt0);
}
group input(source src, target tgt) extends BackboneElement {
src.name -> tgt.name;
src.type -> tgt.type;
src.mode -> tgt.mode;
src.documentation -> tgt.documentation;
}
group rule(source src, target tgt) extends BackboneElement {
src.name -> tgt.name;
src.source as vs0 -> tgt.source as vt0 then source(vs0, vt0);
src.target as vs0 -> tgt.target as vt0 then target(vs0, vt0);
}
group source(source src, target tgt) extends BackboneElement {
src.context -> tgt.context;
src.min -> tgt.min;
src.max -> tgt.max;
src.type -> tgt.type;
src.defaultValue : base64Binary as vs -> tgt.defaultValue = create('base64Binary') as vt then base64Binary(vs, vt) "valuebase64Binary";
src.defaultValue : boolean as vs -> tgt.defaultValue = create('boolean') as vt then boolean(vs, vt) "valueboolean";
src.defaultValue : code as vs -> tgt.defaultValue = create('code') as vt then code(vs, vt) "valuecode";
src.defaultValue : date as vs -> tgt.defaultValue = create('date') as vt then date(vs, vt) "valuedate";
src.defaultValue : dateTime as vs -> tgt.defaultValue = create('dateTime') as vt then dateTime(vs, vt) "valuedateTime";
src.defaultValue : decimal as vs -> tgt.defaultValue = create('decimal') as vt then decimal(vs, vt) "valuedecimal";
src.defaultValue : id as vs -> tgt.defaultValue = create('id') as vt then id(vs, vt) "valueid";
src.defaultValue : instant as vs -> tgt.defaultValue = create('instant') as vt then instant(vs, vt) "valueinstant";
src.defaultValue : integer as vs -> tgt.defaultValue = create('integer') as vt then integer(vs, vt) "valueinteger";
src.defaultValue : markdown as vs -> tgt.defaultValue = create('markdown') as vt then markdown(vs, vt) "valuemarkdown";
src.defaultValue : oid as vs -> tgt.defaultValue = create('oid') as vt then oid(vs, vt) "valueoid";
src.defaultValue : positiveInt as vs -> tgt.defaultValue = create('positiveInt') as vt then positiveInt(vs, vt) "valuepositiveInt";
src.defaultValue : string as vs -> tgt.defaultValue = create('string') as vt then string(vs, vt) "valuestring";
src.defaultValue : time as vs -> tgt.defaultValue = create('time') as vt then time(vs, vt) "valuetime";
src.defaultValue : unsignedInt as vs -> tgt.defaultValue = create('unsignedInt') as vt then unsignedInt(vs, vt) "valueunsignedInt";
src.defaultValue : uri as vs -> tgt.defaultValue = create('uri') as vt then uri(vs, vt) "valueuri";
src.defaultValue : Address as vs -> tgt.defaultValue = create('Address') as vt then Address(vs, vt) "valueAddress";
src.defaultValue : Age as vs -> tgt.defaultValue = create('Age') as vt then Age(vs, vt) "valueAge";
src.defaultValue : Annotation as vs -> tgt.defaultValue = create('Annotation') as vt then Annotation(vs, vt) "valueAnnotation";
src.defaultValue : Attachment as vs -> tgt.defaultValue = create('Attachment') as vt then Attachment(vs, vt) "valueAttachment";
src.defaultValue : CodeableConcept as vs -> tgt.defaultValue = create('CodeableConcept') as vt then CodeableConcept(vs, vt) "valueCodeableConcept";
src.defaultValue : Coding as vs -> tgt.defaultValue = create('Coding') as vt then Coding(vs, vt) "valueCoding";
src.defaultValue : ContactPoint as vs -> tgt.defaultValue = create('ContactPoint') as vt then ContactPoint(vs, vt) "valueContactPoint";
src.defaultValue : Count as vs -> tgt.defaultValue = create('Count') as vt then Count(vs, vt) "valueCount";
src.defaultValue : Distance as vs -> tgt.defaultValue = create('Distance') as vt then Distance(vs, vt) "valueDistance";
src.defaultValue : Duration as vs -> tgt.defaultValue = create('Duration') as vt then Duration(vs, vt) "valueDuration";
src.defaultValue : HumanName as vs -> tgt.defaultValue = create('HumanName') as vt then HumanName(vs, vt) "valueHumanName";
src.defaultValue : Identifier as vs -> tgt.defaultValue = create('Identifier') as vt then Identifier(vs, vt) "valueIdentifier";
src.defaultValue : Money as vs -> tgt.defaultValue = create('Money') as vt then Money(vs, vt) "valueMoney";
src.defaultValue : Period as vs -> tgt.defaultValue = create('Period') as vt then Period(vs, vt) "valuePeriod";
src.defaultValue : Quantity as vs -> tgt.defaultValue = create('Quantity') as vt then Quantity(vs, vt) "valueQuantity";
src.defaultValue : Range as vs -> tgt.defaultValue = create('Range') as vt then Range(vs, vt) "valueRange";
src.defaultValue : Ratio as vs -> tgt.defaultValue = create('Ratio') as vt then Ratio(vs, vt) "valueRatio";
src.defaultValue : Reference as vs -> tgt.defaultValue = create('Reference') as vt then Reference(vs, vt) "valueReference";
src.defaultValue : SampledData as vs -> tgt.defaultValue = create('SampledData') as vt then SampledData(vs, vt) "valueSampledData";
src.defaultValue : Signature as vs -> tgt.defaultValue = create('Signature') as vt then Signature(vs, vt) "valueSignature";
src.defaultValue : Timing as vs -> tgt.defaultValue = create('Timing') as vt then Timing(vs, vt) "valueTiming";
src.element -> tgt.element;
src.listMode -> tgt.listMode;
src.variable -> tgt.variable;
src.condition -> tgt.condition;
src.check -> tgt.check;
}
group target(source src, target tgt) extends BackboneElement {
src.context -> tgt.context;
src.contextType -> tgt.contextType;
src.element -> tgt.element;
src.variable -> tgt.variable;
src.listMode -> tgt.listMode;
src.listRuleId -> tgt.listRuleId;
src.transform -> tgt.transform;
src.parameter as vs0 -> tgt.parameter as vt0 then parameter(vs0, vt0);
}
group parameter(source src, target tgt) extends BackboneElement {
src.value : id as vs -> tgt.value = create('id') as vt then id(vs, vt) "valueid";
src.value : string as vs -> tgt.value = create('string') as vt then string(vs, vt) "valuestring";
src.value : boolean as vs -> tgt.value = create('boolean') as vt then boolean(vs, vt) "valueboolean";
src.value : integer as vs -> tgt.value = create('integer') as vt then integer(vs, vt) "valueinteger";
src.value : decimal as vs -> tgt.value = create('decimal') as vt then decimal(vs, vt) "valuedecimal";
}
7.8.11.2
-
R4
to
R3
JSON
-
TTL
Raw
XML
map "http://hl7.org/fhir/StructureMap/StructureMap4to3" = "R4 to R3 Conversion for StructureMap"
uses "http://hl7.org/fhir/StructureDefinition/StructureMap" alias StructureMap as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/StructureMap" alias StructureMapR3 as target
imports "http://hl7.org/fhir/StructureMap/*4to3"
group StructureMap(source src : StructureMap, target tgt : StructureMapR3) extends DomainResource <<type+>> {
src.url -> tgt.url;
src.identifier -> tgt.identifier;
src.version -> tgt.version;
src.name -> tgt.name;
src.title -> tgt.title;
src.status -> tgt.status;
src.experimental -> tgt.experimental;
src.date -> tgt.date;
src.publisher -> tgt.publisher;
src.contact -> tgt.contact;
src.description -> tgt.description;
src.useContext -> tgt.useContext;
src.jurisdiction -> tgt.jurisdiction;
src.purpose -> tgt.purpose;
src.copyright -> tgt.copyright;
src.structure as vs0 -> tgt.structure as vt0 then structure(vs0, vt0);
src.import -> tgt.import;
src.group as vs0 -> tgt.group as vt0 then group(vs0, vt0);
}
group structure(source src, target tgt) extends BackboneElement {
src.url -> tgt.url;
src.mode -> tgt.mode;
src.alias -> tgt.alias;
src.documentation -> tgt.documentation;
}
group group(source src, target tgt) extends BackboneElement {
src.name -> tgt.name;
src.extends -> tgt.extends;
src.typeMode -> tgt.typeMode;
src.documentation -> tgt.documentation;
src.input as vs0 -> tgt.input as vt0 then input(vs0, vt0);
src.rule as vs0 -> tgt.rule as vt0 then rule(vs0, vt0);
}
group input(source src, target tgt) extends BackboneElement {
src.name -> tgt.name;
src.type -> tgt.type;
src.mode -> tgt.mode;
src.documentation -> tgt.documentation;
}
group rule(source src, target tgt) extends BackboneElement {
src.name -> tgt.name;
src.source as vs0 -> tgt.source as vt0 then sourceSM(vs0, vt0);
src.target as vs0 -> tgt.target as vt0 then targetSM(vs0, vt0);
}
group sourceSM(source src, target tgt) extends BackboneElement {
src.context -> tgt.context;
src.min -> tgt.min;
src.max -> tgt.max;
src.type -> tgt.type;
src.defaultValue : base64Binary as vs -> tgt.defaultValue = create('base64Binary') as vt then base64Binary(vs, vt) "valuebase64Binary";
src.defaultValue : boolean as vs -> tgt.defaultValue = create('boolean') as vt then boolean(vs, vt) "valueboolean";
src.defaultValue : code as vs -> tgt.defaultValue = create('code') as vt then code(vs, vt) "valuecode";
src.defaultValue : date as vs -> tgt.defaultValue = create('date') as vt then date(vs, vt) "valuedate";
src.defaultValue : dateTime as vs -> tgt.defaultValue = create('dateTime') as vt then dateTime(vs, vt) "valuedateTime";
src.defaultValue : decimal as vs -> tgt.defaultValue = create('decimal') as vt then decimal(vs, vt) "valuedecimal";
src.defaultValue : id as vs -> tgt.defaultValue = create('id') as vt then id(vs, vt) "valueid";
src.defaultValue : instant as vs -> tgt.defaultValue = create('instant') as vt then instant(vs, vt) "valueinstant";
src.defaultValue : integer as vs -> tgt.defaultValue = create('integer') as vt then integer(vs, vt) "valueinteger";
src.defaultValue : markdown as vs -> tgt.defaultValue = create('markdown') as vt then markdown(vs, vt) "valuemarkdown";
src.defaultValue : oid as vs -> tgt.defaultValue = create('oid') as vt then oid(vs, vt) "valueoid";
src.defaultValue : positiveInt as vs -> tgt.defaultValue = create('positiveInt') as vt then positiveInt(vs, vt) "valuepositiveInt";
src.defaultValue : string as vs -> tgt.defaultValue = create('string') as vt then string(vs, vt) "valuestring";
src.defaultValue : time as vs -> tgt.defaultValue = create('time') as vt then time(vs, vt) "valuetime";
src.defaultValue : unsignedInt as vs -> tgt.defaultValue = create('unsignedInt') as vt then unsignedInt(vs, vt) "valueunsignedInt";
src.defaultValue : uri as vs -> tgt.defaultValue = create('uri') as vt then uri(vs, vt) "valueuri";
src.defaultValue : Address as vs -> tgt.defaultValue = create('Address') as vt then Address(vs, vt) "valueAddress";
src.defaultValue : Age as vs -> tgt.defaultValue = create('Age') as vt then Age(vs, vt) "valueAge";
src.defaultValue : Annotation as vs -> tgt.defaultValue = create('Annotation') as vt then Annotation(vs, vt) "valueAnnotation";
src.defaultValue : Attachment as vs -> tgt.defaultValue = create('Attachment') as vt then Attachment(vs, vt) "valueAttachment";
src.defaultValue : CodeableConcept as vs -> tgt.defaultValue = create('CodeableConcept') as vt then CodeableConcept(vs, vt) "valueCodeableConcept";
src.defaultValue : Coding as vs -> tgt.defaultValue = create('Coding') as vt then Coding(vs, vt) "valueCoding";
src.defaultValue : ContactPoint as vs -> tgt.defaultValue = create('ContactPoint') as vt then ContactPoint(vs, vt) "valueContactPoint";
src.defaultValue : Count as vs -> tgt.defaultValue = create('Count') as vt then Count(vs, vt) "valueCount";
src.defaultValue : Distance as vs -> tgt.defaultValue = create('Distance') as vt then Distance(vs, vt) "valueDistance";
src.defaultValue : Duration as vs -> tgt.defaultValue = create('Duration') as vt then Duration(vs, vt) "valueDuration";
src.defaultValue : HumanName as vs -> tgt.defaultValue = create('HumanName') as vt then HumanName(vs, vt) "valueHumanName";
src.defaultValue : Identifier as vs -> tgt.defaultValue = create('Identifier') as vt then Identifier(vs, vt) "valueIdentifier";
src.defaultValue : Money as vs -> tgt.defaultValue = create('Money') as vt then Money(vs, vt) "valueMoney";
src.defaultValue : Period as vs -> tgt.defaultValue = create('Period') as vt then Period(vs, vt) "valuePeriod";
src.defaultValue : Quantity as vs -> tgt.defaultValue = create('Quantity') as vt then Quantity(vs, vt) "valueQuantity";
src.defaultValue : Range as vs -> tgt.defaultValue = create('Range') as vt then Range(vs, vt) "valueRange";
src.defaultValue : Ratio as vs -> tgt.defaultValue = create('Ratio') as vt then Ratio(vs, vt) "valueRatio";
src.defaultValue : Reference as vs -> tgt.defaultValue = create('Reference') as vt then Reference(vs, vt) "valueReference";
src.defaultValue : SampledData as vs -> tgt.defaultValue = create('SampledData') as vt then SampledData(vs, vt) "valueSampledData";
src.defaultValue : Signature as vs -> tgt.defaultValue = create('Signature') as vt then Signature(vs, vt) "valueSignature";
src.defaultValue : Timing as vs -> tgt.defaultValue = create('Timing') as vt then Timing(vs, vt) "valueTiming";
src.element -> tgt.element;
src.listMode -> tgt.listMode;
src.variable -> tgt.variable;
src.condition -> tgt.condition;
src.check -> tgt.check;
}
group targetSM(source src, target tgt) extends BackboneElement {
src.context -> tgt.context;
src.contextType -> tgt.contextType;
src.element -> tgt.element;
src.variable -> tgt.variable;
src.listMode -> tgt.listMode;
src.listRuleId -> tgt.listRuleId;
src.transform -> tgt.transform;
src.parameter as vs0 -> tgt.parameter as vt0 then parameter(vs0, vt0);
}
group parameter(source src, target tgt) extends BackboneElement {
src.value : id as vs -> tgt.value = create('id') as vt then id(vs, vt) "valueid";
src.value : string as vs -> tgt.value = create('string') as vt then string(vs, vt) "valuestring";
src.value : boolean as vs -> tgt.value = create('boolean') as vt then boolean(vs, vt) "valueboolean";
src.value : integer as vs -> tgt.value = create('integer') as vt then integer(vs, vt) "valueinteger";
src.value : decimal as vs -> tgt.value = create('decimal') as vt then decimal(vs, vt) "valuedecimal";
}
(
canonical
form
+
also
see
XML
Format
Specification
)
alternate
<?xml version="1.0" encoding="UTF-8"?>
<StructureDefinition xmlns="http://hl7.org/fhir">
<id value="codesystem-alternate"/>
<extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg">
<valueCode value="vocab"/>
</extension>
<extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm">
<valueInteger value="1"/>
</extension>
<url value="http://hl7.org/fhir/StructureDefinition/codesystem-alternate"/>
<identifier>
<system value="urn:ietf:rfc:3986"/>
<value value="urn:oid:2.16.840.1.113883.4.642.5.1130"/>
</identifier>
<version value="5.0.0-ballot"/>
<name value="alternate"/>
<status value="draft"/>
<experimental value="false"/>
<date value="2021-01-02T08:58:31+11:00"/>
<publisher value="HL7"/>
<description value="An additional code that may be used to represent the concept."/>
<fhirVersion value="5.0.0"/>
<mapping>
<identity value="rim"/>
<uri value="http://hl7.org/v3"/>
<name value="RIM Mapping"/>
</mapping>
<kind value="complex-type"/>
<abstract value="false"/>
<context>
<type value="element"/>
<expression value="CodeSystem.concept"/>
</context>
<type value="Extension"/>
<baseDefinition value="http://hl7.org/fhir/StructureDefinition/Extension"/>
<derivation value="constraint"/>
<snapshot>
<element id="Extension">
<path value="Extension"/>
<short value="Additional code for the concept"/>
<definition value="An additional code that may be used to represent the concept."/>
<comment value="Few coding systems define synonyms. A few more define alternate codes for special
case use."/>
<min value="0"/>
<max value="*"/>
<base>
<path value="Extension"/>
<min value="0"/>
<max value="*"/>
</base>
<constraint>
<key value="ele-1"/>
<severity value="error"/>
<human value="All FHIR elements must have a @value or children"/>
<expression value="hasValue() or (children().count() > id.count())"/>
<xpath value="@value|f:*|h:div"/>
<source value="http://hl7.org/fhir/StructureDefinition/Element"/>
</constraint>
<constraint>
<key value="ext-1"/>
<severity value="error"/>
<human value="Must have either extensions or value[x], not both"/>
<expression value="extension.exists() != value.exists()"/>
<xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), 'value')])"/>
<source value="http://hl7.org/fhir/StructureDefinition/Extension"/>
</constraint>
<isModifier value="false"/>
</element>
<element id="Extension.id">
<path value="Extension.id"/>
<representation value="xmlAttr"/>
<short value="Unique id for inter-element referencing"/>
<definition value="Unique id for the element within a resource (for internal references). This may
be any string value that does not contain spaces."/>
<min value="0"/>
<max value="1"/>
<base>
<path value="Element.id"/>
<min value="0"/>
<max value="1"/>
</base>
<type>
<extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type">
<valueUrl value="id"/>
</extension>
<code value="http://hl7.org/fhirpath/System.String"/>
</type>
<isModifier value="false"/>
<isSummary value="false"/>
<mapping>
<identity value="rim"/>
<map value="n/a"/>
</mapping>
</element>
<element id="Extension.extension">
<path value="Extension.extension"/>
<slicing>
<discriminator>
<type value="value"/>
<path value="url"/>
</discriminator>
<description value="Extensions are always sliced by (at least) url"/>
<rules value="open"/>
</slicing>
<short value="Additional content defined by implementations"/>
<definition value="May be used to represent additional information that is not part of the basic definition
of the element. To make the use of extensions safe and manageable, there is a strict
set of governance applied to the definition and use of extensions. Though any
implementer can define an extension, there is a set of requirements that SHALL
be met as part of the definition of the extension."/>
<comment value="There can be no stigma associated with the use of extensions by any application,
project, or standard - regardless of the institution or jurisdiction that uses
or defines the extensions. The use of extensions is what allows the FHIR specification
to retain a core level of simplicity for everyone."/>
<alias value="extensions"/>
<alias value="user content"/>
<min value="0"/>
<max value="*"/>
<base>
<path value="Element.extension"/>
<min value="0"/>
<max value="*"/>
</base>
<type>
<code value="Extension"/>
</type>
<constraint>
<key value="ele-1"/>
<severity value="error"/>
<human value="All FHIR elements must have a @value or children"/>
<expression value="hasValue() or (children().count() > id.count())"/>
<xpath value="@value|f:*|h:div"/>
<source value="http://hl7.org/fhir/StructureDefinition/Element"/>
</constraint>
<constraint>
<key value="ext-1"/>
<severity value="error"/>
<human value="Must have either extensions or value[x], not both"/>
<expression value="extension.exists() != value.exists()"/>
<xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), "value")])"/>
<source value="http://hl7.org/fhir/StructureDefinition/Extension"/>
</constraint>
<isModifier value="false"/>
<isSummary value="false"/>
<mapping>
<identity value="rim"/>
<map value="n/a"/>
</mapping>
</element>
<element id="Extension.extension:code">
<path value="Extension.extension"/>
<sliceName value="code"/>
<short value="Code that represents the concept"/>
<definition value="The code that may be used to represent the concept."/>
<min value="1"/>
<max value="1"/>
<base>
<path value="Element.extension"/>
<min value="0"/>
<max value="*"/>
</base>
<type>
<code value="Extension"/>
</type>
<constraint>
<key value="ele-1"/>
<severity value="error"/>
<human value="All FHIR elements must have a @value or children"/>
<expression value="hasValue() or (children().count() > id.count())"/>
<xpath value="@value|f:*|h:div"/>
<source value="http://hl7.org/fhir/StructureDefinition/Element"/>
</constraint>
<constraint>
<key value="ext-1"/>
<severity value="error"/>
<human value="Must have either extensions or value[x], not both"/>
<expression value="extension.exists() != value.exists()"/>
<xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), "value")])"/>
<source value="http://hl7.org/fhir/StructureDefinition/Extension"/>
</constraint>
<isModifier value="false"/>
<isSummary value="false"/>
</element>
<element id="Extension.extension:code.id">
<path value="Extension.extension.id"/>
<representation value="xmlAttr"/>
<short value="Unique id for inter-element referencing"/>
<definition value="Unique id for the element within a resource (for internal references). This may
be any string value that does not contain spaces."/>
<min value="0"/>
<max value="1"/>
<base>
<path value="Element.id"/>
<min value="0"/>
<max value="1"/>
</base>
<type>
<extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type">
<valueUrl value="id"/>
</extension>
<code value="http://hl7.org/fhirpath/System.String"/>
</type>
<isModifier value="false"/>
<isSummary value="false"/>
<mapping>
<identity value="rim"/>
<map value="n/a"/>
</mapping>
</element>
<element id="Extension.extension:code.extension">
<path value="Extension.extension.extension"/>
<slicing>
<discriminator>
<type value="value"/>
<path value="url"/>
</discriminator>
<description value="Extensions are always sliced by (at least) url"/>
<rules value="open"/>
</slicing>
<short value="Extension"/>
<definition value="An Extension"/>
<min value="0"/>
<max value="0"/>
<base>
<path value="Element.extension"/>
<min value="0"/>
<max value="*"/>
</base>
<type>
<code value="Extension"/>
</type>
<constraint>
<key value="ele-1"/>
<severity value="error"/>
<human value="All FHIR elements must have a @value or children"/>
<expression value="hasValue() or (children().count() > id.count())"/>
<xpath value="@value|f:*|h:div"/>
<source value="http://hl7.org/fhir/StructureDefinition/Element"/>
</constraint>
<constraint>
<key value="ext-1"/>
<severity value="error"/>
<human value="Must have either extensions or value[x], not both"/>
<expression value="extension.exists() != value.exists()"/>
<xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), "value")])"/>
<source value="http://hl7.org/fhir/StructureDefinition/Extension"/>
</constraint>
<isModifier value="false"/>
<isSummary value="false"/>
</element>
<element id="Extension.extension:code.url">
<path value="Extension.extension.url"/>
<representation value="xmlAttr"/>
<short value="identifies the meaning of the extension"/>
<definition value="Source of the definition for the extension code - a logical name or a URL."/>
<comment value="The definition may point directly to a computable or human-readable definition
of the extensibility codes, or it may be a logical URI as declared in some other
specification. The definition SHALL be a URI for the Structure Definition defining
the extension."/>
<min value="1"/>
<max value="1"/>
<base>
<path value="Extension.url"/>
<min value="1"/>
<max value="1"/>
</base>
<type>
<code value="uri"/>
</type>
<fixedUri value="code"/>
<isModifier value="false"/>
<isSummary value="false"/>
<mapping>
<identity value="rim"/>
<map value="N/A"/>
</mapping>
</element>
<element id="Extension.extension:code.value[x]">
<path value="Extension.extension.value[x]"/>
<short value="Value of extension"/>
<definition value="Value of extension - must be one of a constrained set of the data types (see [Extensibility](
extensibility.html) for a list)."/>
<min value="1"/>
<max value="1"/>
<base>
<path value="Extension.value[x]"/>
<min value="0"/>
<max value="1"/>
</base>
<type>
<code value="code"/>
</type>
<constraint>
<key value="ele-1"/>
<severity value="error"/>
<human value="All FHIR elements must have a @value or children"/>
<expression value="hasValue() or (children().count() > id.count())"/>
<xpath value="@value|f:*|h:div"/>
<source value="http://hl7.org/fhir/StructureDefinition/Element"/>
</constraint>
<isModifier value="false"/>
<isSummary value="false"/>
<mapping>
<identity value="rim"/>
<map value="N/A"/>
</mapping>
</element>
<element id="Extension.extension:use">
<path value="Extension.extension"/>
<sliceName value="use"/>
<short value="Expected use of the code"/>
<definition value="Defines why this additional code is defined."/>
<comment value="Further work is needed on the value set."/>
<min value="1"/>
<max value="1"/>
<base>
<path value="Element.extension"/>
<min value="0"/>
<max value="*"/>
</base>
<type>
<code value="Extension"/>
</type>
<constraint>
<key value="ele-1"/>
<severity value="error"/>
<human value="All FHIR elements must have a @value or children"/>
<expression value="hasValue() or (children().count() > id.count())"/>
<xpath value="@value|f:*|h:div"/>
<source value="http://hl7.org/fhir/StructureDefinition/Element"/>
</constraint>
<constraint>
<key value="ext-1"/>
<severity value="error"/>
<human value="Must have either extensions or value[x], not both"/>
<expression value="extension.exists() != value.exists()"/>
<xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), "value")])"/>
<source value="http://hl7.org/fhir/StructureDefinition/Extension"/>
</constraint>
<isModifier value="false"/>
<isSummary value="false"/>
</element>
<element id="Extension.extension:use.id">
<path value="Extension.extension.id"/>
<representation value="xmlAttr"/>
<short value="Unique id for inter-element referencing"/>
<definition value="Unique id for the element within a resource (for internal references). This may
be any string value that does not contain spaces."/>
<min value="0"/>
<max value="1"/>
<base>
<path value="Element.id"/>
<min value="0"/>
<max value="1"/>
</base>
<type>
<extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type">
<valueUrl value="id"/>
</extension>
<code value="http://hl7.org/fhirpath/System.String"/>
</type>
<isModifier value="false"/>
<isSummary value="false"/>
<mapping>
<identity value="rim"/>
<map value="n/a"/>
</mapping>
</element>
<element id="Extension.extension:use.extension">
<path value="Extension.extension.extension"/>
<slicing>
<discriminator>
<type value="value"/>
<path value="url"/>
</discriminator>
<description value="Extensions are always sliced by (at least) url"/>
<rules value="open"/>
</slicing>
<short value="Extension"/>
<definition value="An Extension"/>
<min value="0"/>
<max value="0"/>
<base>
<path value="Element.extension"/>
<min value="0"/>
<max value="*"/>
</base>
<type>
<code value="Extension"/>
</type>
<constraint>
<key value="ele-1"/>
<severity value="error"/>
<human value="All FHIR elements must have a @value or children"/>
<expression value="hasValue() or (children().count() > id.count())"/>
<xpath value="@value|f:*|h:div"/>
<source value="http://hl7.org/fhir/StructureDefinition/Element"/>
</constraint>
<constraint>
<key value="ext-1"/>
<severity value="error"/>
<human value="Must have either extensions or value[x], not both"/>
<expression value="extension.exists() != value.exists()"/>
<xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), "value")])"/>
<source value="http://hl7.org/fhir/StructureDefinition/Extension"/>
</constraint>
<isModifier value="false"/>
<isSummary value="false"/>
</element>
<element id="Extension.extension:use.url">
<path value="Extension.extension.url"/>
<representation value="xmlAttr"/>
<short value="identifies the meaning of the extension"/>
<definition value="Source of the definition for the extension code - a logical name or a URL."/>
<comment value="The definition may point directly to a computable or human-readable definition
of the extensibility codes, or it may be a logical URI as declared in some other
specification. The definition SHALL be a URI for the Structure Definition defining
the extension."/>
<min value="1"/>
<max value="1"/>
<base>
<path value="Extension.url"/>
<min value="1"/>
<max value="1"/>
</base>
<type>
<code value="uri"/>
</type>
<fixedUri value="use"/>
<isModifier value="false"/>
<isSummary value="false"/>
<mapping>
<identity value="rim"/>
<map value="N/A"/>
</mapping>
</element>
<element id="Extension.extension:use.value[x]">
<path value="Extension.extension.value[x]"/>
<short value="Value of extension"/>
<definition value="Value of extension - must be one of a constrained set of the data types (see [Extensibility](
extensibility.html) for a list)."/>
<min value="1"/>
<max value="1"/>
<base>
<path value="Extension.value[x]"/>
<min value="0"/>
<max value="1"/>
</base>
<type>
<code value="Coding"/>
</type>
<constraint>
<key value="ele-1"/>
<severity value="error"/>
<human value="All FHIR elements must have a @value or children"/>
<expression value="hasValue() or (children().count() > id.count())"/>
<xpath value="@value|f:*|h:div"/>
<source value="http://hl7.org/fhir/StructureDefinition/Element"/>
</constraint>
<isModifier value="false"/>
<isSummary value="false"/>
<binding>
<extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName">
<valueString value="AlternativeCodeKind"/>
</extension>
<strength value="extensible"/>
<description value="Indicates the type of use for which the code is defined."/>
<valueSet value="http://hl7.org/fhir/ValueSet/codesystem-altcode-kind"/>
</binding>
<mapping>
<identity value="rim"/>
<map value="N/A"/>
</mapping>
</element>
<element id="Extension.url">
<path value="Extension.url"/>
<representation value="xmlAttr"/>
<short value="identifies the meaning of the extension"/>
<definition value="Source of the definition for the extension code - a logical name or a URL."/>
<comment value="The definition may point directly to a computable or human-readable definition
of the extensibility codes, or it may be a logical URI as declared in some other
specification. The definition SHALL be a URI for the Structure Definition defining
the extension."/>
<min value="1"/>
<max value="1"/>
<base>
<path value="Extension.url"/>
<min value="1"/>
<max value="1"/>
</base>
<type>
<extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type">
<valueUrl value="uri"/>
</extension>
<code value="http://hl7.org/fhirpath/System.String"/>
</type>
<fixedUri value="http://hl7.org/fhir/StructureDefinition/codesystem-alternate"/>
<isModifier value="false"/>
<isSummary value="false"/>
<mapping>
<identity value="rim"/>
<map value="N/A"/>
</mapping>
</element>
<element id="Extension.value[x]">
<path value="Extension.value[x]"/>
<short value="Value of extension"/>
<definition value="Value of extension - must be one of a constrained set of the data types (see [Extensibility](
extensibility.html) for a list)."/>
<min value="0"/>
<max value="0"/>
<base>
<path value="Extension.value[x]"/>
<min value="0"/>
<max value="1"/>
</base>
<type>
<code value="base64Binary"/>
</type>
<type>
<code value="boolean"/>
</type>
<type>
<code value="canonical"/>
</type>
<type>
<code value="code"/>
</type>
<type>
<code value="date"/>
</type>
<type>
<code value="dateTime"/>
</type>
<type>
<code value="decimal"/>
</type>
<type>
<code value="id"/>
</type>
<type>
<code value="instant"/>
</type>
<type>
<code value="integer"/>
</type>
<type>
<code value="integer64"/>
</type>
<type>
<code value="markdown"/>
</type>
<type>
<code value="oid"/>
</type>
<type>
<code value="positiveInt"/>
</type>
<type>
<code value="string"/>
</type>
<type>
<code value="time"/>
</type>
<type>
<code value="unsignedInt"/>
</type>
<type>
<code value="uri"/>
</type>
<type>
<code value="url"/>
</type>
<type>
<code value="uuid"/>
</type>
<type>
<code value="Address"/>
</type>
<type>
<code value="Age"/>
</type>
<type>
<code value="Annotation"/>
</type>
<type>
<code value="Attachment"/>
</type>
<type>
<code value="CodeableConcept"/>
</type>
<type>
<code value="CodeableReference"/>
</type>
<type>
<code value="Coding"/>
</type>
<type>
<code value="ContactPoint"/>
</type>
<type>
<code value="Count"/>
</type>
<type>
<code value="Distance"/>
</type>
<type>
<code value="Duration"/>
</type>
<type>
<code value="HumanName"/>
</type>
<type>
<code value="Identifier"/>
</type>
<type>
<code value="Money"/>
</type>
<type>
<code value="Period"/>
</type>
<type>
<code value="Quantity"/>
</type>
<type>
<code value="Range"/>
</type>
<type>
<code value="Ratio"/>
</type>
<type>
<code value="RatioRange"/>
</type>
<type>
<code value="Reference"/>
</type>
<type>
<code value="SampledData"/>
</type>
<type>
<code value="Signature"/>
</type>
<type>
<code value="Timing"/>
</type>
<type>
<code value="ContactDetail"/>
</type>
<type>
<code value="DataRequirement"/>
</type>
<type>
<code value="Expression"/>
</type>
<type>
<code value="ParameterDefinition"/>
</type>
<type>
<code value="RelatedArtifact"/>
</type>
<type>
<code value="TriggerDefinition"/>
</type>
<type>
<code value="UsageContext"/>
</type>
<type>
<code value="Availability"/>
</type>
<type>
<code value="ExtendedContactDetail"/>
</type>
<type>
<code value="Dosage"/>
</type>
<type>
<code value="Meta"/>
</type>
<constraint>
<key value="ele-1"/>
<severity value="error"/>
<human value="All FHIR elements must have a @value or children"/>
<expression value="hasValue() or (children().count() > id.count())"/>
<xpath value="@value|f:*|h:div"/>
<source value="http://hl7.org/fhir/StructureDefinition/Element"/>
</constraint>
<isModifier value="false"/>
<isSummary value="false"/>
<mapping>
<identity value="rim"/>
<map value="N/A"/>
</mapping>
</element>
</snapshot>
<differential>
<element id="Extension">
<path value="Extension"/>
<short value="Additional code for the concept"/>
<definition value="An additional code that may be used to represent the concept."/>
<comment value="Few coding systems define synonyms. A few more define alternate codes for special
case use."/>
<min value="0"/>
<max value="*"/>
<isModifier value="false"/>
</element>
<element id="Extension.extension:code">
<path value="Extension.extension"/>
<sliceName value="code"/>
<short value="Code that represents the concept"/>
<definition value="The code that may be used to represent the concept."/>
<min value="1"/>
<max value="1"/>
<type>
<code value="Extension"/>
</type>
</element>
<element id="Extension.extension:code.extension">
<path value="Extension.extension.extension"/>
<max value="0"/>
</element>
<element id="Extension.extension:code.url">
<path value="Extension.extension.url"/>
<type>
<code value="uri"/>
</type>
<fixedUri value="code"/>
</element>
<element id="Extension.extension:code.value[x]">
<path value="Extension.extension.value[x]"/>
<min value="1"/>
<type>
<code value="code"/>
</type>
</element>
<element id="Extension.extension:use">
<path value="Extension.extension"/>
<sliceName value="use"/>
<short value="Expected use of the code"/>
<definition value="Defines why this additional code is defined."/>
<comment value="Further work is needed on the value set."/>
<min value="1"/>
<max value="1"/>
<type>
<code value="Extension"/>
</type>
</element>
<element id="Extension.extension:use.extension">
<path value="Extension.extension.extension"/>
<max value="0"/>
</element>
<element id="Extension.extension:use.url">
<path value="Extension.extension.url"/>
<type>
<code value="uri"/>
</type>
<fixedUri value="use"/>
</element>
<element id="Extension.extension:use.value[x]">
<path value="Extension.extension.value[x]"/>
<min value="1"/>
<type>
<code value="Coding"/>
</type>
<binding>
<extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName">
<valueString value="AlternativeCodeKind"/>
</extension>
<strength value="extensible"/>
<description value="Indicates the type of use for which the code is defined."/>
<valueSet value="http://hl7.org/fhir/ValueSet/codesystem-altcode-kind"/>
</binding>
</element>
<element id="Extension.url">
<path value="Extension.url"/>
<fixedUri value="http://hl7.org/fhir/StructureDefinition/codesystem-alternate"/>
</element>
<element id="Extension.value[x]">
<path value="Extension.value[x]"/>
<min value="0"/>
<max value="0"/>
</element>
</differential>
7.8.11.3
</
StructureDefinition
>
R4
Validation
Errors
<p>No
validation
errors
-
all
conversions
Usage
note:
every
effort
has
been
made
to
ensure
that
the
examples
are
clean</p>
correct
and
useful,
but
they
are
not
a
normative
part
of
the
specification.