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
Orders
and
Observations
Work
Group
|
Maturity Level : N/A |
| Security Category : Patient | Compartments : Device , Encounter , Patient , Practitioner , RelatedPerson |
R2
:
R3
Converson
:
R4
Conversion
maps
for
Observation.
Functional
status
for
this
map:
34
48
tests
that
all
execute
ok.
All
tests
pass
round-trip
testing
and
15
23
r3
resources
are
invalid
(58
(0
errors).
(
see
documentation)
map "http://hl7.org/fhir/StructureMap/Observation2to3" = "R2 to R3 Conversions for Observation" uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Observation" alias ObservationR2 as source uses "http://hl7.org/fhir/StructureDefinition/Observation" alias Observation as targetmap "http://hl7.org/fhir/StructureMap/Observation3to4" = "R3 to R4 Conversions for Observation"imports "http://hl7.org/fhir/StructureMap/*2to3"uses "http://hl7.org/fhir/3.0/StructureDefinition/Observation" alias ObservationR3 as source uses "http://hl7.org/fhir/StructureDefinition/Observation" alias Observation as targetgroup for type+types Observation extends DomainResource input src : ObservationR2 as source input tgt : Observation as targetimports "http://hl7.org/fhir/StructureMap/*3to4""Observation-identifier" : for src.identifier make tgt.identifier "Observation-status" : for src.status make tgt.status "Observation-category" : for src.category make tgt.category "Observation-code" : for src.code make tgt.code "Observation-subject" : for src.subject make tgt.subject "Observation-encounter" : for src.encounter make tgt.context "Observation-effective" : for src.effective make tgt.effective "Observation-issued" : for src.issued make tgt.issued "Observation-performer" : for src.performer make tgt.performer "Observation-value" : for src.value make tgt.value "Observation-dataAbsentReason" : for src.dataAbsentReason make tgt.dataAbsentReason "Observation-interpretation" : for src.interpretation make tgt.interpretation "Observation-comments" : for src.comments make tgt.comment "Observation-bodySite" : for src.bodySite make tgt.bodySite "Observation-method" : for src.method make tgt.method "Observation-specimen" : for src.specimen make tgt.specimen "Observation-device" : for src.device make tgt.device "Observation-referenceRange" : for src.referenceRange as vs0 make tgt.referenceRange as vt0 then obsReferenceRange(vs0, vt0) "Observation-related" : for src.related as vs0 make tgt.related as vt0 then obsRelated(vs0, vt0) "Observation-component" : for src.component as vs0 make tgt.component as vt0 then obsComponent(vs0, vt0) endgroupgroup Observation(source src : ObservationR3, target tgt : Observation) extends DomainResource <<type+>> { src.identifier -> tgt.identifier; src.basedOn -> tgt.basedOn; src.status -> tgt.status; src.category -> tgt.category; src.code -> tgt.code; src.subject -> tgt.subject; src.context -> tgt.encounter; src.effective : dateTime as vs -> tgt.effective = create('dateTime') as vt then dateTime(vs, vt); src.effective : Period as vs -> tgt.effective = create('Period') as vt then Period(vs, vt); src.issued -> tgt.issued; src.performer -> tgt.performer; src.value : Quantity as vs -> tgt.value = create('Quantity') as vt then Quantity(vs, vt); src.value : CodeableConcept as vs -> tgt.value = create('CodeableConcept') as vt then CodeableConcept(vs, vt); src.value : string as vs -> tgt.value = create('string') as vt then string(vs, vt); src.value : boolean as vs -> tgt.value = create('boolean') as vt then boolean(vs, vt); src.value : Range as vs -> tgt.value = create('Range') as vt then Range(vs, vt); src.value : Ratio as vs -> tgt.value = create('Ratio') as vt then Ratio(vs, vt); src.value : SampledData as vs -> tgt.value = create('SampledData') as vt then SampledData(vs, vt); src.value : time as vs -> tgt.value = create('time') as vt then time(vs, vt); src.value : dateTime as vs -> tgt.value = create('dateTime') as vt then dateTime(vs, vt); src.value : Period as vs -> tgt.value = create('Period') as vt then Period(vs, vt); src.dataAbsentReason -> tgt.dataAbsentReason; src.interpretation -> tgt.interpretation; src.comment as vs0 -> tgt.note as vt0 then string2Annotation(vs0, vt0); src.bodySite -> tgt.bodySite; src.method -> tgt.method; src.specimen -> tgt.specimen; src.device -> tgt.device; src.referenceRange as vs0 -> tgt.referenceRange as vt0 then referenceRange(vs0, vt0); src.related as vs0 where type = 'has-member' -> tgt.hasMember as vt0 then related(vs0, vt0) "related1"; src.related as vs0 where type = 'derived-from' -> tgt.derivedFrom as vt0 then related(vs0, vt0) "related2"; src.related as vs0 where type = 'sequel-to' -> tgt.extension as ext, ext.url = 'http://hl7.org/fhir/3.0/StructureDefinition/Observation.sequelTo', ext.value = create('Reference') as vt0 then related(vs0, vt0) "related3"; src.related as vs0 where type = 'replaces' -> tgt.extension as ext, ext.url = 'http://hl7.org/fhir/3.0/StructureDefinition/Observation.replaces', ext.value = create('Reference') as vt0 then related(vs0, vt0) "related4"; src.related as vs0 where type = 'qualified-by' -> tgt.extension as ext, ext.url = 'http://hl7.org/fhir/3.0/StructureDefinition/Observation.qualifiedBy', ext.value = create('Reference') as vt0 then related(vs0, vt0) "related5"; src.related as vs0 where type = 'interfered-by' -> tgt.extension as ext, ext.url = 'http://hl7.org/fhir/3.0/StructureDefinition/Observation.interferedBy', ext.value = create('Reference') as vt0 then related(vs0, vt0) "related6"; src.component as vs0 -> tgt.component as vt0 then component(vs0, vt0); }group obsReferenceRange extends BackboneElement input src as source input tgt as targetgroup referenceRange(source src, target tgt) extends BackboneElement { src.low -> tgt.low; src.high -> tgt.high; src.type -> tgt.type; src.appliesTo -> tgt.appliesTo; src.age -> tgt.age; src.text -> tgt.text; }"Observation.referenceRange-low" : for src.low make tgt.low "Observation.referenceRange-high" : for src.high make tgt.high "Observation.referenceRange-meaning" : for src.meaning make tgt.appliesTo "Observation.referenceRange-age" : for src.age make tgt.age "Observation.referenceRange-text" : for src.text make tgt.text endgroup group obsRelated extends BackboneElement input src as source input tgt as targetgroup related(source src, target tgt) extends BackboneElement { src.target as vs0 then Reference(vs0, tgt); }"Observation.related-type" : for src.type make tgt.type "Observation.related-target" : for src.target make tgt.target endgroup group obsComponent extends BackboneElement input src as source input tgt as targetgroup component(source src, target tgt) extends BackboneElement { src.code -> tgt.code; src.value : Quantity as vs -> tgt.value = create('Quantity') as vt then Quantity(vs, vt); src.value : CodeableConcept as vs -> tgt.value = create('CodeableConcept') as vt then CodeableConcept(vs, vt); src.value : string as vs -> tgt.value = create('string') as vt then string(vs, vt); src.value : Range as vs -> tgt.value = create('Range') as vt then Range(vs, vt); src.value : Ratio as vs -> tgt.value = create('Ratio') as vt then Ratio(vs, vt); src.value : SampledData as vs -> tgt.value = create('SampledData') as vt then SampledData(vs, vt); src.value : time as vs -> tgt.value = create('time') as vt then time(vs, vt); src.value : dateTime as vs -> tgt.value = create('dateTime') as vt then dateTime(vs, vt); src.value : Period as vs -> tgt.value = create('Period') as vt then Period(vs, vt); src.dataAbsentReason -> tgt.dataAbsentReason; src.interpretation -> tgt.interpretation; src.referenceRange as vs0 -> tgt.referenceRange as vt0 then referenceRange(vs0, vt0); }"Observation.component-code" : for src.code make tgt.code "Observation.component-value" : for src.value make tgt.value "Observation.component-dataAbsentReason" : for src.dataAbsentReason make tgt.dataAbsentReason "Observation.component-referenceRange" : for src.referenceRange as vs0 make tgt.referenceRange as vt0 then obsReferenceRange(vs0, vt0) endgroup
map "http://hl7.org/fhir/StructureMap/Observation3to2" = "R3 to R2 Conversion for Observation" uses "http://hl7.org/fhir/StructureDefinition/Observation" alias Observation as source uses "http://hl7.org/fhir/DSTU2/StructureDefinition/Observation" alias ObservationR2 as targetmap "http://hl7.org/fhir/StructureMap/Observation4to3" = "R4 to R3 Conversion for Observation"imports "http://hl7.org/fhir/StructureMap/*3to2"uses "http://hl7.org/fhir/StructureDefinition/Observation" alias Observation as source uses "http://hl7.org/fhir/3.0/StructureDefinition/Observation" alias ObservationR3 as targetgroup for type+types Observation extends DomainResource input src : Observation as source input tgt : ObservationR2 as targetimports "http://hl7.org/fhir/StructureMap/*4to3""Observation-identifier" : for src.identifier make tgt.identifier "Observation-status" : for src.status make tgt.status "Observation-category" : for src.category make tgt.category "Observation-code" : for src.code make tgt.code "Observation-subject" : for src.subject make tgt.subject "Observation-encounter" : for src.context make tgt.encounter "Observation-effective" : for src.effective make tgt.effective "Observation-issued" : for src.issued make tgt.issued "Observation-performer" : for src.performer make tgt.performer "Observation-value" : for src.value make tgt.value "Observation-dataAbsentReason" : for src.dataAbsentReason make tgt.dataAbsentReason "Observation-interpretation" : for src.interpretation make tgt.interpretation "Observation-comments" : for src.comment make tgt.comments "Observation-bodySite" : for src.bodySite make tgt.bodySite "Observation-method" : for src.method make tgt.method "Observation-specimen" : for src.specimen make tgt.specimen "Observation-device" : for src.device make tgt.device "Observation-referenceRange" : for src.referenceRange as vs0 make tgt.referenceRange as vt0 then obsReferenceRange(vs0, vt0) "Observation-related" : for src.related as vs0 make tgt.related as vt0 then obsRelated(vs0, vt0) "Observation-component" : for src.component as vs0 make tgt.component as vt0 then obsComponent(vs0, vt0) endgroupgroup Observation(source src : Observation, target tgt : ObservationR3) extends DomainResource <<type+>> { src.identifier -> tgt.identifier; src.basedOn -> tgt.basedOn; src.status -> tgt.status; src.category -> tgt.category; src.code -> tgt.code; src.subject -> tgt.subject; src.encounter -> tgt.context; src.effective : dateTime as vs -> tgt.effective = create('dateTime') as vt then dateTime(vs, vt); src.effective : Period as vs -> tgt.effective = create('Period') as vt then Period(vs, vt); src.issued -> tgt.issued; src.performer -> tgt.performer; src.value : Quantity as vs -> tgt.value = create('Quantity') as vt then Quantity(vs, vt); src.value : CodeableConcept as vs -> tgt.value = create('CodeableConcept') as vt then CodeableConcept(vs, vt); src.value : string as vs -> tgt.value = create('string') as vt then string(vs, vt); src.value : boolean as vs -> tgt.value = create('boolean') as vt then boolean(vs, vt); src.value : Range as vs -> tgt.value = create('Range') as vt then Range(vs, vt); src.value : Ratio as vs -> tgt.value = create('Ratio') as vt then Ratio(vs, vt); src.value : SampledData as vs -> tgt.value = create('SampledData') as vt then SampledData(vs, vt); src.value : time as vs -> tgt.value = create('time') as vt then time(vs, vt); src.value : dateTime as vs -> tgt.value = create('dateTime') as vt then dateTime(vs, vt); src.value : Period as vs -> tgt.value = create('Period') as vt then Period(vs, vt); src.dataAbsentReason -> tgt.dataAbsentReason; src.interpretation -> tgt.interpretation; src.note first as vs0 -> tgt.comment as vt0 then Annotation2string(vs0, vt0); src.bodySite -> tgt.bodySite; src.method -> tgt.method; src.specimen -> tgt.specimen; src.device -> tgt.device; src.referenceRange as vs0 -> tgt.referenceRange as vt0 then referenceRange(vs0, vt0); src.hasMember as vs0 -> tgt.related as vt0, vt0.type = 'has-member', vt0.target as vt2 then Reference(vs0, vt2); src.derivedFrom as vs0 -> tgt.related as vt0, vt0.type = 'derived-from', vt0.target as vt2 then Reference(vs0, vt2); src.extension as vs0 where url = 'http://hl7.org/fhir/3.0/StructureDefinition/Observation.sequelTo' -> tgt.related as rel, rel.type = 'sequel-to', rel.target as vt0 then relatedExt(vs0, vt0) "related3"; src.extension as vs0 where url = 'http://hl7.org/fhir/3.0/StructureDefinition/Observation.replaces' -> tgt.related as rel, rel.type = 'replaces', rel.target as vt0 then relatedExt(vs0, vt0) "related4"; src.extension as vs0 where url = 'http://hl7.org/fhir/3.0/StructureDefinition/Observation.qualifiedBy' -> tgt.related as rel, rel.type = 'qualifiedBy', rel.target as vt0 then relatedExt(vs0, vt0) "related5"; src.extension as vs0 where url = 'http://hl7.org/fhir/3.0/StructureDefinition/Observation.interferedBy' -> tgt.related as rel, rel.type = 'interfered-by', rel.target as vt0 then relatedExt(vs0, vt0) "related6"; src.component as vs0 -> tgt.component as vt0 then component(vs0, vt0); }group obsReferenceRange extends BackboneElement input src as source input tgt as targetgroup relatedExt(source src, target tgt) { src.value : Reference as vs0 then Reference(vs0, tgt); }"Observation.referenceRange-low" : for src.low make tgt.low "Observation.referenceRange-high" : for src.high make tgt.high "Observation.referenceRange-meaning" : for src.appliesTo make tgt.meaning "Observation.referenceRange-age" : for src.age make tgt.age "Observation.referenceRange-text" : for src.text make tgt.text endgroup group obsRelated extends BackboneElement input src as source input tgt as targetgroup referenceRange(source src, target tgt) extends BackboneElement { src.low -> tgt.low; src.high -> tgt.high; src.type -> tgt.type; src.appliesTo -> tgt.appliesTo; src.age -> tgt.age; src.text -> tgt.text; }"Observation.related-type" : for src.type make tgt.type "Observation.related-target" : for src.target make tgt.target endgroup group obsComponent extends BackboneElement input src as source input tgt as targetgroup component(source src, target tgt) extends BackboneElement { src.code -> tgt.code; src.value : Quantity as vs -> tgt.value = create('Quantity') as vt then Quantity(vs, vt); src.value : CodeableConcept as vs -> tgt.value = create('CodeableConcept') as vt then CodeableConcept(vs, vt); src.value : string as vs -> tgt.value = create('string') as vt then string(vs, vt); src.value : Range as vs -> tgt.value = create('Range') as vt then Range(vs, vt); src.value : Ratio as vs -> tgt.value = create('Ratio') as vt then Ratio(vs, vt); src.value : SampledData as vs -> tgt.value = create('SampledData') as vt then SampledData(vs, vt); src.value : time as vs -> tgt.value = create('time') as vt then time(vs, vt); src.value : dateTime as vs -> tgt.value = create('dateTime') as vt then dateTime(vs, vt); src.value : Period as vs -> tgt.value = create('Period') as vt then Period(vs, vt); src.dataAbsentReason -> tgt.dataAbsentReason; src.interpretation -> tgt.interpretation; src.referenceRange as vs0 -> tgt.referenceRange as vt0 then referenceRange(vs0, vt0); }"Observation.component-code" : for src.code make tgt.code "Observation.component-value" : for src.value make tgt.value "Observation.component-dataAbsentReason" : for src.dataAbsentReason make tgt.dataAbsentReason "Observation.component-referenceRange" : for src.referenceRange as vs0 make tgt.referenceRange as vt0 then obsReferenceRange(vs0, vt0) endgroup