Phd BITs Enumeration Observation Profile

The BITs Enumeration Observation Profile is used when the PHD metric measurement contains one of the following attributes:

Attribute Value Additional Information
Enum-Observed-Value-Simple-Bit-Str 32-bit value Each bit in the 32-bit integer signifies some item
Enum-Observed-Value-Basic-Bit-Str 16-bit value Each bit in the 16-bit integer signifies some item
Enum-Observed-Value 32-bit term code when a BITs When this complex attribute is used the only option is for the 32-bit BITs field

The Enum-Observed-Value-Simple/Basic-Bit-Str attribute is used when the measurement reports one or more events or states. Each bit in the 16 or 32-bit number may represent some state or event. The most common use of this type of measurement is for reporting device status events that influence the measurement. It is also used extensively in the Independent Living specialization to report states such as 'door open', 'door closed' or 'patient in room', 'patient out of room', etc. The measurement is generally used when there is the potential for more than one event or state to be set at the same time.

The Enum-Observed-Value attribute is a complex attribute and can be any one of the three possible enumeration measurements. There is an element in the structure which indicates which type of enumeration it is. If it is a 'BITs' type it reports only the 32-bit version. The attribute also has its own metric-id value telling what it is and status value. The metric-id value replaces the term code given by the Type attribute for the type of measurement (not the measurement!) and the status value replaces the Measurement-Status attribute.

The structure definition for this profile is

idΣ0..1id
id0..1string
extensionI0..*Extension
versionIdΣ0..1id
lastUpdatedΣ0..1instant
phdProfileΣ1..1uriFixed Value
securityΣ0..*CodingBinding
tagΣ0..*Coding
implicitRulesΣ ?!0..1uri
language0..1codeBinding
textI0..1Narrative
contained0..*Resource
extensionI0..*Extension
modifierExtension?! I0..*Extension
id0..1string
extensionI0..*Extension
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemΣ0..1uri
valueΣ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(http://hl7.org/fhir/StructureDefinition/Organization)
basedOnΣ I0..*Reference(http://hl7.org/fhir/StructureDefinition/CarePlan | http://hl7.org/fhir/StructureDefinition/DeviceRequest | http://hl7.org/fhir/StructureDefinition/ImmunizationRecommendation | http://hl7.org/fhir/StructureDefinition/MedicationRequest | http://hl7.org/fhir/StructureDefinition/NutritionOrder | http://hl7.org/fhir/StructureDefinition/ProcedureRequest | http://hl7.org/fhir/StructureDefinition/ReferralRequest)
statusΣ ?!1..1codeBinding
category0..*CodeableConceptBinding
id0..1string
extensionI0..*Extension
id0..1string
extensionI0..*Extension
systemΣ1..1uriFixed Value
versionΣ0..1string
codeΣ1..1code
displayΣ0..1string
userSelectedΣ0..1boolean
id0..1string
extensionI0..*Extension
systemΣ1..1uriFixed Value
versionΣ0..1string
codeΣ1..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
id0..1string
extensionI0..*Extension
referenceΣ I1..1string
identifierΣ0..1Identifier
displayΣ0..1string
contextI0..1Reference(http://hl7.org/fhir/StructureDefinition/Encounter | http://hl7.org/fhir/StructureDefinition/EpisodeOfCare)
id0..1string
extensionI0..*Extension
startΣ I1..1dateTime
endΣ I1..1dateTime
dateTimeEffectiveΣ0..1dateTime
issuedΣ0..1instant
performerΣ I0..*Reference(http://hl7.org/fhir/StructureDefinition/Practitioner | http://hl7.org/fhir/StructureDefinition/Organization | http://hl7.org/fhir/StructureDefinition/Patient | http://hl7.org/fhir/StructureDefinition/RelatedPerson)
id0..1string
extensionI0..*Extension
id0..1string
extensionI0..*Extension
systemΣ1..1uri
versionΣ0..1string
codeΣ1..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
interpretation0..1CodeableConceptBinding
comment0..1string
bodySite0..1CodeableConcept
method0..1CodeableConcept
specimenI0..1Reference(http://hl7.org/fhir/StructureDefinition/Specimen)
id0..1string
extensionI0..*Extension
referenceΣ I1..1string
identifierΣ0..1Identifier
displayΣ0..1string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
lowI0..1http://hl7.org/fhir/StructureDefinition/SimpleQuantity
highI0..1http://hl7.org/fhir/StructureDefinition/SimpleQuantity
type0..1CodeableConceptBinding
appliesTo0..*CodeableConcept
ageI0..1Range
text0..1string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
type0..1codeBinding
targetI1..1Reference(http://hl7.org/fhir/StructureDefinition/Observation | http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse | http://hl7.org/fhir/StructureDefinition/Sequence)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
type0..1codeBinding
id0..1string
extensionI0..*Extension
referenceΣ I1..1string
identifierΣ0..1Identifier
displayΣ0..1string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
type0..1codeBinding
id0..1string
extensionI0..*Extension
referenceΣ I1..1string
identifierΣ0..1Identifier
displayΣ0..1string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
codeΣ1..1CodeableConcept
valueQuantityQuantity
valueCodeableConceptCodeableConcept
valueStringstring
valueRangeRange
valueRatioRatio
valueSampledDataSampledData
valueAttachmentAttachment
valueTimetime
valueDateTimedateTime
valuePeriodPeriod
dataAbsentReasonI0..1CodeableConceptBinding
interpretation0..1CodeableConceptBinding
referenceRange0..*see (referenceRange)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
id0..1string
extensionI0..*Extension
id0..1string
extensionI0..*Extension
systemΣ1..1uriFixed Value
versionΣ0..1string
codeΣ1..1codeFixed Value
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
id0..1string
extensionI0..*Extension
id0..1string
extensionI0..*Extension
systemΣ1..1uriFixed Value
versionΣ0..1string
codeΣ1..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
dataAbsentReasonI0..0CodeableConceptBinding
interpretation0..1CodeableConceptBinding
referenceRange0..*see (referenceRange)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
id0..1string
extensionI0..*Extension
id0..1string
extensionI0..*Extension
systemΣ1..1uriFixed Value
versionΣ0..1string
codeΣ1..1codeFixed Value
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
id0..1string
extensionI0..*Extension
valueΣ1..1decimal
comparatorΣ ?!0..1codeBinding
unitΣ1..1string
systemΣ I1..1uriFixed Value
codeΣ1..1codeFixed Value
dataAbsentReasonI0..0CodeableConceptBinding
interpretation0..1CodeableConceptBinding
referenceRange0..*see (referenceRange)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
id0..1string
extensionI0..*Extension
id0..1string
extensionI0..*Extension
systemΣ1..1uriFixed Value
versionΣ0..1string
codeΣ1..1codeFixed Value
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
id0..1string
extensionI0..*Extension
valueΣ1..1decimal
comparatorΣ ?!0..1codeBinding
unitΣ1..1string
systemΣ I1..1uriFixed Value
codeΣ1..1codeFixed Value
dataAbsentReasonI0..0CodeableConceptBinding
interpretation0..1CodeableConceptBinding
referenceRange0..*see (referenceRange)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
id0..1string
extensionI0..*Extension
id0..1string
extensionI0..*Extension
systemΣ1..1uriFixed Value
versionΣ0..1string
codeΣ1..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
id0..1string
extensionI0..*Extension
id0..1string
extensionI0..*Extension
systemΣ1..1uriFixed Value
versionΣ0..1string
codeΣ1..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
dataAbsentReasonI0..0CodeableConceptBinding
interpretation0..1CodeableConceptBinding
referenceRange0..*see (referenceRange)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
id0..1string
extensionI0..*Extension
id0..1string
extensionI0..*Extension
systemΣ1..1uriFixed Value
versionΣ0..1string
codeΣ1..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
id0..1string
extensionI0..*Extension
id0..1string
extensionI0..*Extension
systemΣ1..1uriFixed Value
versionΣ0..1string
codeΣ1..1code
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
id0..1string
extensionI0..*Extension
id0..1string
extensionI0..*Extension
systemΣ1..1uri
versionΣ0..1string
codeΣ1..1codeFixed Value
displayΣ0..1string
userSelectedΣ0..1boolean
textΣ0..1string
interpretation0..1CodeableConceptBinding
referenceRange0..*see (referenceRange)

Mapping BITs Enumerations to FHIR

FHIR has no data type that corresponds to this kind of measurement. Consequently Continua has developed a value set which maps the BITs measurement to a set of codes. The details of the mapping and how these codes are generated from data received from the PHD are given in ASN1 BITS Code System. These codes are reported in the component element; one component per reported bit setting. Thus similar to the compound numerical measurement, there is no Observation.value[x] element. There may still be an Observation.dataAbsentReason element if a measurement status indicates a measurement failure in which case no component elements representing the BITs setting are reported.

In the following table, N is the bit position being reported. M is the component element number in the Observation. Since not all bits may be reported, M is always <= N. The notation "Type" is the 32-bit code reported in Observation.code.coding.code used in the ASN1 mapping to HL7 codes. Note that the term code of this value will come from the metric-id element when an Enum-Observed-Value attribute is reported.

Recall that only set bits of type 'event' need to be reported. If of type 'state' both set and cleared states need to be reported. Undefined bits are not reported. Unsupported bits (only available in the later versions of the 20601 spec) may be indicated.

Attribute FHIR coding
Enum-Observed-Value-Basic-Bit_str.bitN
where 0 <= N <= 15
Observation.componentM.code.coding.code="Type.N"
where M is the Mth setting being reported
Observation.componentM.valueCodableConcept.coding.code="Y/N" if bit N is set/cleared
Enum-Observed-Value-Simple-Bit_str.bitN
where 0 <= N <= 31
Observation.componentM.code.coding.code
where M is the Mth setting being reported
Observation.componentM.valueCodableConcept.coding.code="Y/N" if bit N is set/cleared
Enum-Observed-Value.bitN

where 0 <= N <= 31
Enum-Observed-Value.metric-id
Enum-Observed-Value.status
Observation.componentN.code.coding.code="Type.N" where M is the Mth setting being reported
Observation.componentM.valueCodableConcept.coding.code="Y/N" if bit N is set/cleared

effects the Observation.component.code.coding.code "Type" see Obtaining the Observation.code
see Measurement Status in Phd Base Observation Profile
If reporting an unsupported bit N Observation.componentM.dataAbsentReason="unsupported"

Conditional Create Identifier Generation

For a general description of the PHD Profile Identifier see the "PHD Profile Identifier" section in Phd Base Profile. The table below lists the items that make up the identifier.

Entry value Additional information
device "Phd Device.identifier.value" This value is the PHD IEEE EUI-64 system identifier
patient "Patient.identifier.value-Patient.identifier.system" or
provided logical id
The dashes are part of the identifier.
When the service provider gives the PHG a pre-determined patient logical id the PHG creates no Patient resource and has no patient information. In that special case the provided logical id is used
type "Observation.code.coding.code" See Obtaining the Observation.code
value The raw 16-bit or 32-bit integer delivered by the PHD
reported PHD timestamp "timestamp" See Generating the PHD Reported Time Stamp
supplemental types "Supplemental-Types.N-" A sequence of 32-bit MDC codes separated by a dash

The final identifier is made by concatenating the entries above as follows:

  • "device-patient-type-value-reported PHD timestamp-supplemental types"

Additional Enumeration Measurement Information

There are no additional descriptive attributes that are unique to the Enumeration type of measurement.

Phd BITs Enumeration Observation JSON Example

The following JSON example is from a Glucose Monitor. The context measurement is in regard to the device status events recorded at the time of the measurement. The measurement itself is an ASN1 BITs value. The BITs value is 0x10D0 or 4304 decimal. That value amounts to Mder bits 3, 8, 9, and 11 being set. In the future this measurement will contain a second related element due to a Source-Handle-Reference attribute pointing to the Glucose Concentration measurement. It has been added by hand below. In a real case the logical id of the Observation would be known.

{
	"resourceType": "Observation",
	"meta": {
		"profile": ["http://pchalliance.org/phdfhir/StructureDefinition/PhdBitsEnumerationObservation"]
	},
	"identifier": [{
		"value": "sisansarahId-urn:oid:1.2.3.4.5.6.7.8.10-01040302f4000000-8417752-20171214103727-10D0"
	}],
	"status": "final",
	"code": {
		"coding": [{
			"system": "urn:iso:std:iso:11073:10101",
			"code": "8417752",
			"display": "MDC_GLU_METER_DEV_STATUS"
		}]
	},
	"subject": {
		"reference": "Patient/PatientId-sisansarahId"
	},
	"effectiveDateTime": "2017-12-14T10:37:25-05:00",
	"performer": [{
		"reference": "Patient/PatientId-sisansarahId"
	}],
	"device": {
		"reference": "DeviceComponent/SysId-01040302f4000000"
	},
	"related": [{
		"id": "coincidentTimeStampRelated",
		"type": "qualified-by",
		"target": {
			"reference": "urn:oid:3.14159.20171214103753"
		},
		{
		"id": "SourceHandleReferenceRelated",
		"type": "qualified-by",
		"target": {
			"reference": "Observation/logical-id of Glucose concentration measurement"
		}
	}],
	"component": [{
		"code": {
			"coding": [{
				"system": "http://hl7.org/fhir/IEEE.ASN1",
				"code": "8417752.3",
				"display": "sensor-strip-insertion"
			}]
		},
		"valueCodeableConcept": {
			"coding": [{
				"system": "http://hl7.org/fhir/v2/0136",
				"code": "Y",
				"display": "Strip inserted incorrectly"
			}]
		}
	},
	{
		"code": {
			"coding": [{
				"system": "http://hl7.org/fhir/IEEE.ASN1",
				"code": "8417752.8",
				"display": "sensor-temp-too-low"
			}]
		},
		"valueCodeableConcept": {
			"coding": [{
				"system": "http://hl7.org/fhir/v2/0136",
				"code": "Y",
				"display": "Temperature too low"
			}]
		}
	},
	{
		"code": {
			"coding": [{
				"system": "http://hl7.org/fhir/IEEE.ASN1",
				"code": "8417752.9",
				"display": "sensor-read-interrupt"
			}]
		},
		"valueCodeableConcept": {
			"coding": [{
				"system": "http://hl7.org/fhir/v2/0136",
				"code": "Y",
				"display": "Process interrupted"
			}]
		}
	},
	{
		"code": {
			"coding": [{
				"system": "http://hl7.org/fhir/IEEE.ASN1",
				"code": "8417752.11",
				"display": "sensor-temp-out-of-range"
			}]
		},
		"valueCodeableConcept": {
			"coding": [{
				"system": "http://hl7.org/fhir/v2/0136",
				"code": "Y",
				"display": "Temperature out of range"
			}]
		}
	}]
},