From 1f9ad0b11d56a0a8174e88cd02be2e064b907880 Mon Sep 17 00:00:00 2001 From: Erik Moll Date: Tue, 29 Jul 2025 17:51:38 +0200 Subject: [PATCH] Editorials & ignored warnings update --- ...StructureDefinition.PhdBaseObservation.fsh | 4 ++-- ...finition.PhdBitsEnumerationObservation.fsh | 2 +- ...inition.PhdCodedEnumerationObservation.fsh | 7 ------- ...tion.PhdCoincidentTimeStampObservation.fsh | 4 ++-- ...finition.PhdCompoundNumericObservation.fsh | 2 +- ...ctureDefinition.PhdCompoundObservation.fsh | 2 +- input/fsh/StructureDefinition.PhdDevice.fsh | 4 ++-- ...uctureDefinition.PhdNumericObservation.fsh | 6 +++--- ...StructureDefinition.PhdRtsaObservation.fsh | 6 +++--- input/ignoreWarnings.txt | 1 - ...tureDefinition-PhdBaseObservation-notes.md | 2 +- ...PhdCoincidentTimestampObservation-notes.md | 4 ++-- ...ion-PhdCompoundNumericObservation-notes.md | 2 +- ...Definition-PhdCompoundObservation-notes.md | 4 ++-- ...tureDefinition-PhdRtsaObservation-notes.md | 2 +- input/pagecontent/ObtainObservationCode.md | 19 ------------------- input/pagecontent/ProfileConsumers.md | 6 +++--- 17 files changed, 25 insertions(+), 52 deletions(-) delete mode 100644 input/pagecontent/ObtainObservationCode.md diff --git a/input/fsh/StructureDefinition.PhdBaseObservation.fsh b/input/fsh/StructureDefinition.PhdBaseObservation.fsh index d5a73c9..677e08c 100644 --- a/input/fsh/StructureDefinition.PhdBaseObservation.fsh +++ b/input/fsh/StructureDefinition.PhdBaseObservation.fsh @@ -110,8 +110,8 @@ Description: "Common base profile with the elements that are common to the PHD I * code 1.. * dataAbsentReason ..0 * dataAbsentReason ^short = "This element is populated when the Measurement Status indicates invalid, not available or measurement-ongoing." -* dataAbsentReason ^definition = "Provides a reason why the expected value in the element Observation.value[x] is missing." -* dataAbsentReason ^comment = "The Measurement-Status/status flags indicating invalid, not available, or msmt ongoing will generate this element and cause the value[x] to be absent. The remaining settings of the status values are reported in the meta.security element or interpretation element. Also populated when a numeric value is in error." +* dataAbsentReason ^definition = "Provides a reason why the expected value in the element `Observation.value[x]` is missing." +* dataAbsentReason ^comment = "The Measurement-Status/status flags indicating invalid, not available, or msmt ongoing will generate this element and cause the `value[x]` to be absent. The remaining settings of the status values are reported in the `meta.security` element or `interpretation` element. Also populated when a numeric value is in error." * dataAbsentReason.coding from http://hl7.org/fhir/ValueSet/data-absent-reason (required) * derivedFrom ^short = "A source the measurement data is derived from." diff --git a/input/fsh/StructureDefinition.PhdBitsEnumerationObservation.fsh b/input/fsh/StructureDefinition.PhdBitsEnumerationObservation.fsh index f2d5d73..c671d8f 100644 --- a/input/fsh/StructureDefinition.PhdBitsEnumerationObservation.fsh +++ b/input/fsh/StructureDefinition.PhdBitsEnumerationObservation.fsh @@ -29,7 +29,7 @@ Description: "Observations from a PHD where the measurement is an ASN1 BITS valu * dataAbsentReason.coding contains unsupported 0..1 * dataAbsentReason.coding[unsupported] * ^short = "For the optional reporting of unsupported bits" - * ^definition = "Provides a reason why the expected value in the element Observation.component.value[x] is missing. In this profile for this component that happens if the PHD does not support this bit and the uploader wishes to report that situation." + * ^definition = "Provides a reason why the expected value in the element `Observation.component.value[x]` is missing. In this profile for this component that happens if the PHD does not support this bit and the uploader wishes to report that situation." * dataAbsentReason.coding[unsupported] = http://terminology.hl7.org/CodeSystem/data-absent-reason#unsupported * valueBoolean ^short = "The value of the bit" * ^definition = "The value of the bit. If the bit is set the value is `true` and if the bit is cleared the value is `false`." diff --git a/input/fsh/StructureDefinition.PhdCodedEnumerationObservation.fsh b/input/fsh/StructureDefinition.PhdCodedEnumerationObservation.fsh index cb8bccb..c3c7305 100644 --- a/input/fsh/StructureDefinition.PhdCodedEnumerationObservation.fsh +++ b/input/fsh/StructureDefinition.PhdCodedEnumerationObservation.fsh @@ -13,13 +13,6 @@ Description: "Observations coming from a PHD where the measurement value is a co * . ^comment = "This type of measurement is used when the Personal Health Device reports a measurement as an IEEE 11073-10101 code. An example would be the most recent meal context associated with a glucose measurement such as 'breakfast', 'fasting', 'snack', etc. The list of codes for these meal options is finite." * value[x] only CodeableConcept * valueCodeableConcept from MDCValueSet (extensible) -// * valueCodeableConcept.coding ^slicing.discriminator.type = #value -// * valueCodeableConcept.coding ^slicing.discriminator.path = "system" -// * valueCodeableConcept.coding ^slicing.rules = #open -// * valueCodeableConcept.coding contains MDCType 1..1 -// * valueCodeableConcept.coding[MDCType] ^short = "Required MDC code" -// * valueCodeableConcept.coding[MDCType].system 1.. -// * valueCodeableConcept.coding[MDCType].system = "urn:iso:std:iso:11073:10101" (exactly) Mapping: IEEE-11073-10206-PhdCodedEnumerationObservation Id: IEEE-11073-10206-PhdCodedEnumerationObservation diff --git a/input/fsh/StructureDefinition.PhdCoincidentTimeStampObservation.fsh b/input/fsh/StructureDefinition.PhdCoincidentTimeStampObservation.fsh index e0241da..d1c516b 100644 --- a/input/fsh/StructureDefinition.PhdCoincidentTimeStampObservation.fsh +++ b/input/fsh/StructureDefinition.PhdCoincidentTimeStampObservation.fsh @@ -27,10 +27,10 @@ Description: "Observations containing a coincident timestamp." * ^definition = "Reference to the PHD device for which the coincident timestamp measurement is reported. This element will point to a Device resource following the Phd Device Profile." * effective[x] ^short = "The current time of the PHG at the current time of the PHD. Absent if PHD is better synchronized" * effective[x] ^definition = "The time of the PHG at the time the current time of the PHD is ascertained." -* effective[x] ^comment = "This element is absent if the PHD has superior time synchronization relative to the PHG. Wnen this element is absent it indicates that the PHG reported the measurement timestamps of the PHD without modification." +* effective[x] ^comment = "This element is absent if the PHD has superior time synchronization relative to the PHG. When this element is absent it indicates that the PHG reported the measurement timestamps of the PHD without modification." * value[x] only dateTime or Quantity * value[x] ^short = "The current time of the PHD as a wallclock time (dateTime), relative time (Quantity), or if a time fault a dataAbsentReason" -* value[x] ^definition = "The current time of the PHD. It will be either a valueDateTime if a wallclock time or a valueQuantity if a relative time or a dataAbsentReason if there is a time fault. The relative time is expressed in microseconds" +* value[x] ^definition = "The current time of the PHD. It will be either a `valueDateTime` if a wallclock time or a `valueQuantity` if a relative time or a `dataAbsentReason` if there is a time fault. The relative time is expressed in microseconds" * dataAbsentReason.coding ^slicing.discriminator.type = #value * dataAbsentReason.coding ^slicing.discriminator.path = "$this" * dataAbsentReason.coding ^slicing.rules = #open diff --git a/input/fsh/StructureDefinition.PhdCompoundNumericObservation.fsh b/input/fsh/StructureDefinition.PhdCompoundNumericObservation.fsh index 5d75e5e..6513ccf 100644 --- a/input/fsh/StructureDefinition.PhdCompoundNumericObservation.fsh +++ b/input/fsh/StructureDefinition.PhdCompoundNumericObservation.fsh @@ -42,7 +42,7 @@ Description: "Observations coming from a PHD where the measurement is a set of n * code 1.. * ^definition = "The MDC code must be translated to the UCUM code." * dataAbsentReason ^short = "Populated when the component reports a special FLOAT value" - * ^definition = "Provides a reason why the expected value in the nth element Observation.compoundComponent.valueQuantity is missing. This happens when the value sent by the PHD is a special FLOAT value." + * ^definition = "Provides a reason why the expected value in the nth element `Observation.compoundComponent.valueQuantity` is missing. This happens when the value sent by the PHD is a special FLOAT value." * coding from http://hl7.org/fhir/ValueSet/data-absent-reason (required) * interpretation * coding ^slicing.discriminator[0].type = #value diff --git a/input/fsh/StructureDefinition.PhdCompoundObservation.fsh b/input/fsh/StructureDefinition.PhdCompoundObservation.fsh index 07f6329..8d1eebd 100644 --- a/input/fsh/StructureDefinition.PhdCompoundObservation.fsh +++ b/input/fsh/StructureDefinition.PhdCompoundObservation.fsh @@ -59,7 +59,7 @@ Description: "Observations from a PHD where the measurement is a set of numbers * valueString ^short = "The value of the string component" * ^definition = "The value of the string component" * dataAbsentReason ^short = "Populated when the component is missing or invalid" - * ^definition = "Provides a reason why the expected value in the nth element component.value[x] is missing. This happens a.o. when a component reports a special FLOAT value." + * ^definition = "Provides a reason why the expected value in the nth element `component.value[x]` is missing. This can happen when a component reports a special FLOAT value." * coding from http://hl7.org/fhir/ValueSet/data-absent-reason (required) * component diff --git a/input/fsh/StructureDefinition.PhdDevice.fsh b/input/fsh/StructureDefinition.PhdDevice.fsh index f77252a..f1b00e1 100644 --- a/input/fsh/StructureDefinition.PhdDevice.fsh +++ b/input/fsh/StructureDefinition.PhdDevice.fsh @@ -100,7 +100,7 @@ Description: "Profile for the Device Resource for a PHD" * coding from http://hl7.org/fhir/uv/phd/ValueSet/DeviceTypes11073MDC (required) * version 1.. * ^short = "The version of the specialization standard supported by the PHD from the System-Type-Spec-List[i].version" - * ^comment = "The version of the specialization comes from the System-Type-Spec-List specialization entry. If a PHD supports multiple versions of the same specialization a separate Device.specialization entry is needed where the systemType elements are repeated. If the PHD reports a generic specialization (using MDC_DEV_SPEC_PROFILE_HYDRA or MDC_DEV_SPEC_PROFILE_GENERIC), the version is the 11073-10206 version." + * ^comment = "The version of the specialization comes from the System-Type-Spec-List specialization entry. If a PHD supports multiple versions of the same specialization a separate `Device.specialization` entry is needed where the systemType elements are repeated. If the PHD reports a generic specialization (using MDC_DEV_SPEC_PROFILE_HYDRA or MDC_DEV_SPEC_PROFILE_GENERIC), the version is the 11073-10206 version." * version ^short = "A PHD may report firmware, hardware, software, internal protocol, nomenclature and ACOM versions." * ^comment = "There are several versions that are reported from a PHD. Firmware, Hardware, Protocol (internal, not IEEE 11073-10206), and Software versions come from the System Information object. The nomenclature and ACOM version comes from the ACOM base class. PHDs compliant to this IG report at least one of these versions. A separate version entry is needed for each of the versions reported by the PHD." * version ^slicing.discriminator[0].type = #value @@ -144,7 +144,7 @@ Description: "Profile for the Device Resource for a PHD" * valueCode from http://hl7.org/fhir/uv/phd/ValueSet/ContinuaPHDInterfaces (extensible) * property[clockBitProperty] ^short = "Boolean Properties reported by the Clock" - * ^definition = "For each Boolean clock capability reported by a PHD a property element is used." + * ^definition = "For each Boolean clock capability reported by a PHD a `property` element is used." * type from ASN1ClockBits (required) * ^short = "Tells what the clock capability item is" * ^definition = "One of the capabilities of the clock as reported by the PHD." diff --git a/input/fsh/StructureDefinition.PhdNumericObservation.fsh b/input/fsh/StructureDefinition.PhdNumericObservation.fsh index 2fbbf7f..da9d63f 100644 --- a/input/fsh/StructureDefinition.PhdNumericObservation.fsh +++ b/input/fsh/StructureDefinition.PhdNumericObservation.fsh @@ -15,15 +15,15 @@ Description: "Observations from a PHD where the measurement is number" * ^comment = "Used for non-compound numeric observations from Personal Health Devices." * value[x] only Quantity * value 1.. - * ^definition = "The decoded FLOAT or SFLOAT value from a PHD measurement containing either a\r\nBasic-Nu-Observed-Value\r\nSimple-Nu-Observed-Value or\r\nNu_observed-Value attribute." - * ^comment = "The implicit precision in the value shall be honored. The MDER encoding used in the above attributes provides this precision. The translating software shall honor that precision when generating this value.\r\nThis element shall be present unless there is an error reported in the Measurement-Status attribute or the MDER encoding represents one of the special FLOAT values. In that case there is a dataAbsentReason element and the valueQuantity element is not present. Note that not all measurement status values are errors resulting in no measurement being reported here; for example the preliminary or verified status." + * ^definition = "The decoded FLOAT or SFLOAT value from a PHD Observation." + * ^comment = "The implicit precision in the value shall be honored. The MDER encoding used in the above attributes provides this precision. The translating software shall honor that precision when generating this value.\r\nThis element shall be present unless there is an error reported in the Measurement-Status attribute or the MDER encoding represents one of the special FLOAT values. In that case there is a `dataAbsentReason` element and the `valueQuantity` element is not present. Note that not all measurement status values are errors resulting in no measurement being reported here; for example the preliminary or verified status." * system 1.. * system = "http://unitsofmeasure.org" (exactly) * code 1.. * ^short = "The UCUM code for the units of this measurement." * ^comment = "The UCUM code needs to be translated from the 11073-10101 code from the device. This translation means that the reporting of units is not future proof." * dataAbsentReason ^short = "This element is populated for numeric observations when a special FLOAT value is reported that is not a real number." - * ^definition = "Provides a reason why the expected value in the element Observation.valueQuantity is missing. In this case this could also be 'not-a-number', 'positive-infinity', 'negative-infinity' or 'error'." + * ^definition = "Provides a reason why the expected value in the element `Observation.valueQuantity` is missing. In this case this could also be 'not-a-number', 'positive-infinity', 'negative-infinity' or 'error'." * ^comment = "The values in the http://terminology.hl7.org/CodeSystem/data-absent-reason system do not provide a code that matches the 'not at this resolution' and 'reserved'. In those cases one uses the generic 'error' code. If both a special FLOAT value and a Measurement-Status indicating invalid, not available, or measurement ongoing are received, the Measurement-Status mapping takes precedence." * extension contains http://hl7.org/fhir/uv/phd/StructureDefinition/Accuracy named Accuracy 0..1 * extension contains http://hl7.org/fhir/uv/phd/StructureDefinition/Confidence95 named Confidence95 0..1 diff --git a/input/fsh/StructureDefinition.PhdRtsaObservation.fsh b/input/fsh/StructureDefinition.PhdRtsaObservation.fsh index bdffcb0..192bc8c 100644 --- a/input/fsh/StructureDefinition.PhdRtsaObservation.fsh +++ b/input/fsh/StructureDefinition.PhdRtsaObservation.fsh @@ -11,8 +11,8 @@ Description: "Observations from a PHD where the measurement is a sample array." * ^comment = "Used for sample array (waveform) observations from Personal Health Devices" * value[x] only SampledData * ^comment = "The PhdRtsaObservation is typically used for reporting waveform type data such as an ECG trace, spirometer exhalation rates, pulse oximetry pleth (plethysmograph) waves, etc., though it can be used to report any set of numeric measurements that are periodic. The periodicity is important as the timestamps of each individual entry is known from the start time and the period. Since the amount of data to be transmitted can be large, the data is scaled in such a way to minimize the number of bits taken up by each entry (in practice limited to 8, 16 or 32 bits). This scaling information is sent along with the start time and period in order for the receiver to recover the original data and to obtain the timestamp of each data point. In theory, this data could be sent using a large phdNumericObservation type resources at a much greater cost in bandwidth." - * origin - * ^comment = "The data sent in the ACOM sample array is also scaled. Thus with the proper setting of the valueSampledData.origin.value and valueSampledData.factor, the data from the IEEE PHD device can be placed into the data[i] array without modification." + * origin + * ^comment = "The data sent in the ACOM sample array is also scaled. Thus with the proper setting of the `valueSampledData.origin.value` and `valueSampledData.factor`, the data from the IEEE PHD device can be placed into the `data[i]` array without modification." * value 1.. * ^short = "Intercept value (with implicit precision)" * ^definition = "The intercept value with the precision of the data as determined by the device." @@ -28,7 +28,7 @@ Description: "Observations from a PHD where the measurement is a sample array." * dimensions * ^comment = "This value is filled in by the ACOM number-of-samples-per-period field." * data ^definition = "A series of data points which are decimal values separated by a single space (character u20). The special values \"E\" (error), \"L\" (below detection limit) and \"U\" (above detection limit) are not used. The device does not provide such individual values. " - * ^comment = "It is recommended to re-use the scaling from the PHD device as it is likely the scaling was chosen to optimize transmission. If A = real-range.lower-limit, B = real-range.upper-limit, I = scaled-range.lower-limit (integer), J = scaled-range.upper-limit (integer) then valueSampledData.factor is given by (A-B)/(I-J) and valueSampledData.origin.value = A – (A-B)*I/(I-J) and valueSampledData.data[i] = samples[i]" + * ^comment = "It is recommended to re-use the scaling from the PHD device as it is likely the scaling was chosen to optimize transmission. If A = real-range.lower-limit, B = real-range.upper-limit, I = scaled-range.lower-limit (integer), J = scaled-range.upper-limit (integer) then `valueSampledData.factor` is given by (A-B)/(I-J) and `valueSampledData.origin.value` = A – (A-B)*I/(I-J) and `valueSampledData.data[i]` = `samples[i]`" * lowerLimit * ^short = "The scaled lower limit of the ACOM sample array when provided by the PHD device." * ^comment = "The lower limit of the sample array. In ACOM this is the lower limit of the actual-range, but scaled as a normal sample. In GHS this value may be provided as the lower limit Valid Range descriptor." diff --git a/input/ignoreWarnings.txt b/input/ignoreWarnings.txt index 90df0c3..4cb213d 100644 --- a/input/ignoreWarnings.txt +++ b/input/ignoreWarnings.txt @@ -38,7 +38,6 @@ Constraint failed: mdc-1: 'A published MDC Code is preferred but private MDC cod # Reference to external draft code system... Reference to draft CodeSystem http://hl7.org/fhir/uv/pocd/CodeSystem/measurement-status|0.3.0 -Reference to draft CodeSystem urn:iso:std:iso:11073:10101|2024-12-05 from fhir.tx.support.r4#0.29.0 Reference to draft CodeSystem urn:iso:std:iso:11073:10101|2024-12-05 from fhir.tx.support.r4#0.30.0 # Publisher process choice - can safely be ignored diff --git a/input/intro-notes/StructureDefinition-PhdBaseObservation-notes.md b/input/intro-notes/StructureDefinition-PhdBaseObservation-notes.md index 539d79d..4a94723 100644 --- a/input/intro-notes/StructureDefinition-PhdBaseObservation-notes.md +++ b/input/intro-notes/StructureDefinition-PhdBaseObservation-notes.md @@ -9,7 +9,7 @@ The *Conditional-create Identifier* is defined to prevent data duplication. It c Ideally the PHG will implement a duplication detection mechanism and filter out any observations that have already been uploaded. One possible mechanism is to record the latest timestamp of any observation received during a connection. Then for a given device and patient and upload destination, on a subsequent connection the PHG can filter out any observations with a timestamp earlier than the recorded latest timestamp of the previous connection. The latest timestamp is then updated given the information received during the current connection. This filter not only saves the server from handling the conditional update transaction but saves bandwidth and upload costs. -Additionally a globally unique identifier can be used in combination with a conditional create operation to prevent duplication of observations on the server when multiple PHGs can upload observations from the same PHD. The identifier is a concatenated string of elements that contain sufficient information to uniquely identify the observation. The identifier is the concatenation of the device identifier, patient identifier, the *PHD* timestamp of the observation, the observation type code, the measurement duration if present, and the list of Supplemental-Types codes if any. Each entry is separated by a dash (-). It is important to use the timestamp of the PHD and not the potentially modified timestamp placed in the Observation.effective[x] element. Two PHGs may have slightly different times which would allow an undesired duplicate observation to appear. Note that for this scheme to work PHDs should NOT change the timestamp of a generated observation. +Additionally a globally unique identifier can be used in combination with a conditional create operation to prevent duplication of observations on the server when multiple PHGs can upload observations from the same PHD. The identifier is a concatenated string of elements that contain sufficient information to uniquely identify the observation. The identifier is the concatenation of the device identifier, patient identifier, the *PHD* timestamp of the observation, the observation type code, the measurement duration if present, and the list of Supplemental-Types codes if any. Each entry is separated by a dash (-). It is important to use the timestamp of the PHD and not the potentially modified timestamp placed in the `Observation.effective[x]` element. Two PHGs may have slightly different times which would allow an undesired duplicate observation to appear. Note that for this scheme to work PHDs should NOT change the timestamp of a generated observation. |Entry|value|Additional information| |---|---|---| diff --git a/input/intro-notes/StructureDefinition-PhdCoincidentTimestampObservation-notes.md b/input/intro-notes/StructureDefinition-PhdCoincidentTimestampObservation-notes.md index cc1c67f..94b8fe9 100644 --- a/input/intro-notes/StructureDefinition-PhdCoincidentTimestampObservation-notes.md +++ b/input/intro-notes/StructureDefinition-PhdCoincidentTimestampObservation-notes.md @@ -13,8 +13,8 @@ The `code` element is used to report the type of time clock used by the PHD. The ### PHG Current Time → `Observation.effectiveDateTime` The PHG is required to have the capability to report local time and offset to UTC. The PHG records its current time in the `Observation.effectiveDateTime` element regardless of the type of time clock used by the PHD unless the PHD has superior time synchronization than the PHG. In that case, the `Observation.effective[x]` element is not populated. -### PHD Current Time → Observation.value[x] -If the PHD uses a wall clock, the current time of the PHD is reported in an `Observation.valueDateTime` element. FHIR requires the presence of an offset to UTC, so if the PHD does not provide that, the PHG adds its offset to the value. It is reasonable to assume that the PHD and PHG are in the same time zone and thus have the same offset to UTC. However, PHDs can be mobile, and if the PHD is reporting an offset, the offset reported by the PHD is used even if it is NOT the offset of the PHG. +### PHD Current Time → `Observation.value[x]` + If the PHD uses a wall clock, the current time of the PHD is reported in an `Observation.valueDateTime` element. FHIR requires the presence of an offset to UTC, so if the PHD does not provide that, the PHG adds its offset to the value. It is reasonable to assume that the PHD and PHG are in the same time zone and thus have the same offset to UTC. However, PHDs can be mobile, and if the PHD is reporting an offset, the offset reported by the PHD is used even if it is NOT the offset of the PHG. If the PHD uses a time counter, the current tick time is reported in an `Observation.valueQuantity` element scaled to microseconds or milliseconds as appropriate for the resolution of the counter. diff --git a/input/intro-notes/StructureDefinition-PhdCompoundNumericObservation-notes.md b/input/intro-notes/StructureDefinition-PhdCompoundNumericObservation-notes.md index 7127630..7ee2e08 100644 --- a/input/intro-notes/StructureDefinition-PhdCompoundNumericObservation-notes.md +++ b/input/intro-notes/StructureDefinition-PhdCompoundNumericObservation-notes.md @@ -3,7 +3,7 @@ A compound numeric observation reports a measurement value that is described by In IEEE 11073-20601 the `Observation.component.code` –element is obtained from the Metric-Id-List attribute unless the measurement reported is a Compound-Nu-Observed-Value attribute. In that case the attribute itself has the metric type for each entry and that is used instead of the Metric-Id-List entries. The order of the entries in the Metric-Id-List are one-to-one with the order of the compound attribute entries. For example, if the Metric-Id-List in the Blood Pressure measurement has MDC codes for 'systolic", "diastolic" and "mean" in that order, the quantities in the compound attribute are the systolic, diastolic, and mean values, respectively. -The `Observation.code` element comes from the Type attribute and gives the general type of measurement. For example, the Type attribute might indicate "acceleration" or "non-invasive blood pressure". There is no Observation.value[x] entry. There may still be an `Observation.dataAbsentReason` element if, say, the Measurement-Status attribute indicates an invalid or otherwise overall failure value. If there is such an overall failure of the measurement, then there is no need to report the components. +The `Observation.code` element comes from the Type attribute and gives the general type of measurement. For example, the Type attribute might indicate "acceleration" or "non-invasive blood pressure". There is no `Observation.value[x]` entry. There may still be an `Observation.dataAbsentReason` element if, say, the Measurement-Status attribute indicates an invalid or otherwise overall failure value. If there is such an overall failure of the measurement, then there is no need to report the components. The structure definition is given [here](StructureDefinition-PhdCompoundNumericObservation.html) diff --git a/input/intro-notes/StructureDefinition-PhdCompoundObservation-notes.md b/input/intro-notes/StructureDefinition-PhdCompoundObservation-notes.md index 1f011df..0800fd4 100644 --- a/input/intro-notes/StructureDefinition-PhdCompoundObservation-notes.md +++ b/input/intro-notes/StructureDefinition-PhdCompoundObservation-notes.md @@ -4,7 +4,7 @@ The IEEE 11073-10206 model supports more generic compounds where the components The `Observation.code` –element comes from the Type attribute and gives the general type of measurement. For example, the Type attribute might indicate "acceleration" or "non-invasive blood pressure". For each component the `Observation.component.code` –element is obtained from the Component-type attribute. -There is no Observation.value[x] entry. There may still be an `Observation.dataAbsentReason` element if, say, the Measurement-Status attribute indicates an invalid or otherwise overall failure value. If there is such an overall failure of the measurement, then there is no need to report the components. +There is no `Observation.value[x]` entry. There may still be an `Observation.dataAbsentReason` element if, say, the Measurement-Status attribute indicates an invalid or otherwise overall failure value. If there is such an overall failure of the measurement, then there is no need to report the components. The FLOAT encoding of the numeric components indicates both precision and the number of significant digits. The `Observation.component.valueQuantity.value` element is required to honor the reported precision as indicated by the FLOAT. See the section [FLOATs and SFLOATs](FLOATS.html) for instructions on handling FLOATs and their encoding to the valueQuantity. @@ -16,4 +16,4 @@ IEEE 11073-10206 ACOM numeric measurement values may have some additional option In FHIR these attributes are reported in extensions. The same extensions that are used as for [non-compound numeric measurements](StructureDefinition-PhdNumericObservation.html) can be used for the numeric components. ### Examples: -This example shows a [blood pressure](Observation-compound-numeric-blood-pressure.html) measurement. Note that there is no value[x] element in the 'primary' measurement. The set of values describing the compound are in the value[x] elements of the `Observation.component` elements. +This example shows a [blood pressure](Observation-compound-numeric-blood-pressure.html) measurement. Note that there is no `value[x]` element in the 'primary' measurement. The set of values describing the compound are in the `value[x]` elements of the `Observation.component` elements. diff --git a/input/intro-notes/StructureDefinition-PhdRtsaObservation-notes.md b/input/intro-notes/StructureDefinition-PhdRtsaObservation-notes.md index f2fb01a..2df8ae4 100644 --- a/input/intro-notes/StructureDefinition-PhdRtsaObservation-notes.md +++ b/input/intro-notes/StructureDefinition-PhdRtsaObservation-notes.md @@ -18,7 +18,7 @@ d[i] = x[i] if and - b = `SampledData.origin.value` = A –(A-B)I/(I-J) = (B\*I-A\*J)/(I-J) -Using these scale factor and origin values allows to map the SampleArray.samples[i] values directly to the SampledData.data[i] values unchanged. It is recommended that the uploader maps the samples to the `Observation.valueSampledData` element using the above scaling as it is assumed the PHD chose this scaling for a good reason. However, that does not restrict the uploader using another scaling. As an example, the uploader could decode the scaled values and report the unscaled original sensor values in the `Observation.valueSampledData.data` element and set the `Observation.valueSampledData.scaleFactor` to 1.0 and the `Observation.valueSampledData.origin.value` to 0. This approach is used in IHE PCD-01. +Using these scale factor and origin values allows to map the SampleArray.samples[i] values directly to the `SampledData.data[i]` values unchanged. It is recommended that the uploader maps the samples to the `Observation.valueSampledData` element using the above scaling as it is assumed the PHD chose this scaling for a good reason. However, that does not restrict the uploader using another scaling. As an example, the uploader could decode the scaled values and report the unscaled original sensor values in the `Observation.valueSampledData.data` element and set the `Observation.valueSampledData.scaleFactor` to 1.0 and the `Observation.valueSampledData.origin.value` to 0. This approach is used in IHE PCD-01. Using the variables 'b' and 's' as defined above the mapping to the FHIR Observation resource is as follows: diff --git a/input/pagecontent/ObtainObservationCode.md b/input/pagecontent/ObtainObservationCode.md deleted file mode 100644 index f5cdf5c..0000000 --- a/input/pagecontent/ObtainObservationCode.md +++ /dev/null @@ -1,19 +0,0 @@ -Every IEEE 11073-10206 ACOM Observation instance is required to have a Type attribute. The Type attribute value is an MDC term code that maps directly to the `Observation.code` element. -The `Observation.code` element is populated as follows: - -* If the application wishes to transcode this MDC code into other coding systems the application is free to do so but: - * the MDC code shall be present in a coding element, - * if the code matches one of the [FHIR observation-vitalsigns codes]({{ site.data.fhir.path }}observation-vitalsigns.html), the observation-vitalsigns LOINC code shall be present in a coding element, - * any other codings may be placed in an additional coding element. -* For the MDC code the mapping is as follows: - * `Observation.code.coding.code` = *value* - * `Observation.code.coding.system` = "urn:iso:std:iso:11073:10101" - * `Observation.code.coding.display` optional, should contain the reference identifier - * `Observation.code.text` optional, could contain the reference identifier followed by a localized description of the measurement type. - -The requirement for the MDC reference identifier is not mandatory and is not used as the `Observation.code.coding.code` value because the reference identifier is not provided by the sensor device in the exchange protocol. Requiring the reference identifier would require that the PHG have an internal map. However, the main reason for not requiring the reference identifier is that doing so would defeat future interoperability. An older PHG would not know the reference identifier of a new specialization but it would be able to propagate the new code since that is provided by the device. - -The MDC code entry is required, but the concept may be expressed in additional coding systems as well. The choice of any additional codings is up to the application. PHGs operating in certain realms may be required to provide translations to a realm-specified coding system. For example, in the United States realm, LOINC is preferred. [RTMMS](https://rtmms.nist.gov/) contains a mapping for a subset of the MDC codes. - -The consumer of FHIR resources containing the PHD data does not need to concern itself with this complexity. All it needs to do is obtain the `Observation.code.coding.code` element supporting the 11073-10101 system value to get the measurement type. - diff --git a/input/pagecontent/ProfileConsumers.md b/input/pagecontent/ProfileConsumers.md index e3530c5..fdb5f71 100644 --- a/input/pagecontent/ProfileConsumers.md +++ b/input/pagecontent/ProfileConsumers.md @@ -50,7 +50,7 @@ FHIR requires that a LOINC code is present if the measurement is one of the vita In addition to the LOINC code, FHIR requires an `Observation.code` element with value "vital-signs" when the measurement is a vital sign. -#### The Timestamp: Observation.effective[x] +#### The Timestamp: `Observation.effective[x]` All measurements contain a time stamp which is either an instant in time (a `dateTime` data type), or a period of time (a `Period` data type). A period reported by a PHD has both a start and an end. Results of a workout session are a common type of measurement with a period. The `dateTime` data type is chosen as it is permissible for PHDs to report time at resolutions greater than a day in which case there is no time zone. An activity monitor reporting only daily summaries could be an example of a PHD using such a time resolution. All timestamps with resolutions finer than a day contain the offset to UTC. If the offset is -00:00, it means that the offset to local time is not known, and what is being reported is UTC time, even though the measurement is taken in Japan. If the offset is +00:00, it means the offset IS known; the measurement just happens to be in a time zone that is UTC. @@ -86,7 +86,7 @@ In addition to the elements that are always present, the following set of elemen ##### The Profile: `Observation.meta.profile` An Observation may contain a `meta.profile` element that can help to identify the type of the Observation. For example, if `Observation.profile` entry contains ["http://hl7.org/fhir/uv/phd/StructureDefinition/PhdNumericObservation"](StructureDefinition-PhdNumericObservation.html) the measurement is a scalar. -Note that there is no requirement that the `profile` element be present. If it is not present, the consumer can determine the type of measurement value by looking at the Observation.value[x] element. +Note that there is no requirement that the `profile` element be present. If it is not present, the consumer can determine the type of measurement value by looking at the `Observation.value[x]` element. ##### The Coincident Timestamp extension When present, the consumer can obtain further information about the timestamp from a referenced coincident timestamp Observation that adheres to the [PhdCoincidentTimeStampObservation profile](StructureDefinition-PhdCoincidentTimeStampObservation.html). This reference may be present in the [CoincidentTimeStampReference extension](StructureDefinition-CoincidentTimeStampReference.html). If the reference is NOT present, it means that the PHD did not provide a timestamp and the PHG used the time of reception as the timestamp or that the PHG determined that the PHD timestamp is reliable and can be used as is. PHDs that send stored data shall include timestamps in their measurements. @@ -241,7 +241,7 @@ Implementers should not make any assumption about the state assignment. For exam In future PHD versions the PHD will be able to indicate that is does not support certain state or event flags in a given measurement report. This situation is expressed by replacing the `Observation.valueCodeableConcept` element with an `Observation.dataAbentReason` element with reason "unsupported". Currently there are no market PHDs that support this feature. -Event and/or state measurements have no primary Observation.value[x] entry and there is no `Observation.dataAbsentReason` unless the *entire* measurement has an error, in which case there will be no state of event entries either. It is possible for each state or event entry to be unsupported and that will be reported with a `Observation.dataAbsentReason` element. Even if every `Observation.component` entry reports 'unsupported' that does not have the same meaning as the entire measurement being in error. +Event and/or state measurements have no primary `Observation.value[x]` entry and there is no `Observation.dataAbsentReason` unless the *entire* measurement has an error, in which case there will be no state of event entries either. It is possible for each state or event entry to be unsupported and that will be reported with a `Observation.dataAbsentReason` element. Even if every `Observation.component` entry reports 'unsupported' that does not have the same meaning as the entire measurement being in error. In structure the states and/or events measurements are similar to compound or vector measurements. It is also possible that state and/or event measurements have '*additional descriptions*' as discussed in the [Additional Descriptive Data](#additional-descriptive-data) section. To distinguish the measurement component entries from the additional description component entries one only needs to examine the Observation.component.code.coding.system. If it is ASN1ToHL7, it is part of the measurement.