From 39fb654947cc5929d60d39f8d4eeb5efb4a44e61 Mon Sep 17 00:00:00 2001 From: "Surya,M" <87635660+Surya-Rnsit@users.noreply.github.com> Date: Thu, 24 Aug 2023 17:28:42 +0530 Subject: [PATCH] Updated documentation for observation create and update with Blood Pressure and Pulse-ox (#949) --- .../r4/clinical/diagnostics/observation.md | 31 +- .../example_json/r4_examples_observation.rb | 535 ++++++++++++++++++ lib/resources/r4/observation.yaml | 160 +++++- 3 files changed, 724 insertions(+), 2 deletions(-) diff --git a/content/millennium/r4/clinical/diagnostics/observation.md b/content/millennium/r4/clinical/diagnostics/observation.md index 197ccc205..7f9f1c90b 100644 --- a/content/millennium/r4/clinical/diagnostics/observation.md +++ b/content/millennium/r4/clinical/diagnostics/observation.md @@ -237,7 +237,7 @@ Create a new Observation. _Implementation Notes_ * See [Understand Supported Vital Signs in the FHIR Observation Resource](https://wiki.cerner.com/pages/releaseview.action?spaceKey=reference&title=Understand%20Supported%20Vital%20Signs%20in%20the%20FHIR%20Observation%20Resource) for a list of vital signs that are supported for the create operation. -* Components are not currently supported when writing Blood Pressures. +* Components are supported only when writing Observation Blood Pressure and Pulse Oximetry Profiles. * Individual systolic and diastolic components will be paired upon subsequent search or read as long as the blood pressures are paired in Millennium. See [Configure Blood Pressure Event Set Pairing Hierarchy]. * Only the body fields mentioned below are supported. Unsupported fields will be ignored. @@ -270,6 +270,14 @@ _Note_: <%= json(:R4_OBSERVATION_CREATE) %> +#### Vitals - Blood Pressure Body Example +<%= beta_tag(action: true) %> +<%= json(:R4_OBSERVATION_BP_CREATE) %> + +#### Vitals - Pulse Oximetry Body Example +<%= beta_tag(action: true) %> +<%= json(:R4_OBSERVATION_PO_CREATE) %> + #### Labs Body Example <%= json(:R4_OBSERVATION_LABS_CREATE) %> @@ -308,6 +316,7 @@ _Implementation Notes_ * Currently only `laboratory` and `vital-signs` are supported. * Both read and write scopes are required. * Updates on patient and category are not supported. +* Components are only supported for vital-sign blood pressure and pulse oximetry profiles * See [FHIR® Update] for additional details about update operations. ### Authorization Types @@ -336,10 +345,30 @@ _Note_: <%= json(:R4_OBSERVATION_LABS_UPDATE) %> +#### Request + + PUT https://fhir-ehr.cerner.com/r4/ec2458f2-1e24-41c8-b71b-0e701af7583d/Observation/VS-197356031 + #### Vitals Body Example <%= json(:R4_OBSERVATION_VITALS_UPDATE) %> +#### Request + + PUT https://fhir-ehr.cerner.com/r4/ec2458f2-1e24-41c8-b71b-0e701af7583d/Observation/BP-59857018-59857020 + +#### Vitals - Blood Pressure Body Example +<%= beta_tag(action: true) %> +<%= json(:R4_OBSERVATION_VITALS_BP_UPDATE) %> + +#### Request + + PUT https://fhir-ehr.cerner.com/r4/ec2458f2-1e24-41c8-b71b-0e701af7583d/Observation/VS-CV-78693473-SECT-8098 + +#### Vitals - Pulse Oximetry Body Example +<%= beta_tag(action: true) %> +<%= json(:R4_OBSERVATION_VITALS_PO_UPDATE) %> + #### Response <%= headers status: 200 %> diff --git a/lib/resources/example_json/r4_examples_observation.rb b/lib/resources/example_json/r4_examples_observation.rb index 62c337b71..6c0ce663d 100644 --- a/lib/resources/example_json/r4_examples_observation.rb +++ b/lib/resources/example_json/r4_examples_observation.rb @@ -806,6 +806,254 @@ module Resources ] }.freeze + R4_OBSERVATION_BP_CREATE ||= { + "resourceType": 'Observation', + "status": 'final', + "category": [ + { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/observation-category', + "code": 'vital-signs', + "display": 'Vital Signs' + } + ], + "text": 'Vital Signs' + } + ], + "code": { + "coding": [ + { + "system": 'http://loinc.org', + "code": '85354-9' + } + ], + "text": 'Blood pressure' + }, + "subject": { + "reference": 'Patient/12457981' + }, + "encounter": { + "reference": 'Encounter/97845408' + }, + "effectiveDateTime": '2022-06-04T08:00:38.000Z', + "issued": '2022-06-04T08:00:38Z', + "component": [ + { + "code": { + "coding": [ + { + "system": 'http://loinc.org', + "code": '8480-6' + } + ], + "text": 'Systolic Blood Pressure Invasive' + }, + "valueQuantity": { + "value": 120, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "interpretation": [ + { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation', + "code": 'N' + } + ] + } + ], + "referenceRange": [ + { + "low": { + "value": 45.0, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "high": { + "value": 75.0, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "type": { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/referencerange-meaning', + "code": 'normal' + } + ], + "text": 'Normal Range' + } + } + ] + }, + { + "code": { + "coding": [ + { + "system": 'http://loinc.org', + "code": '8462-4' + } + ], + "text": 'Diastolic Blood Pressure Invasive' + }, + "valueQuantity": { + "value": 80, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "interpretation": [ + { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation', + "code": 'N' + } + ] + } + ], + "referenceRange": [ + { + "low": { + "value": 35.8, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "high": { + "value": 37.3, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "type": { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/referencerange-meaning', + "code": 'normal' + } + ], + "text": 'Normal Range' + } + } + ] + } + ] + }.freeze + + R4_OBSERVATION_PO_CREATE ||= { + "resourceType": 'Observation', + "status": 'final', + "category": [ + { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/observation-category', + "code": 'vital-signs', + "display": 'Vital Signs' + } + ], + "text": 'Vital Signs' + } + ], + "code": { + "coding": [ + { + "system": 'http://loinc.org', + "code": '59408-5' + } + ], + "text": 'SpO2' + }, + "subject": { + "reference": 'Patient/12457981' + }, + "encounter": { + "reference": 'Encounter/97845408' + }, + "effectiveDateTime": '2022-06-05T08:00:38.004Z', + "issued": '2022-06-05T08:00:34Z', + "performer": [ + { + "extension": [ + { + "valueCodeableConcept": { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/v3-ParticipationType', + "code": 'LA', + "display": 'legal authenticator' + } + ], + "text": 'legal authenticator' + }, + "url": 'http://hl7.org/fhir/StructureDefinition/event-performerFunction' + } + ], + "reference": 'Practitioner/15441459' + } + ], + "component": [ + { + "code": { + "coding": [ + { + "system": 'http://loinc.org', + "code": '3151-8', + "display": 'Inhaled oxygen flow rate' + } + ], + "text": 'Oxygen Flow Rate' + }, + "valueQuantity": { + "value": 7, + "unit": 'L/min', + "system": 'http://unitsofmeasure.org', + "code": 'L/min' + } + }, + { + "code": { + "coding": [ + { + "system": 'http://loinc.org', + "code": '3150-0' + } + ], + "text": 'FIO2' + }, + "valueQuantity": { + "value": 21, + "unit": '%', + "system": 'http://unitsofmeasure.org', + "code": '%' + } + }, + { + "code": { + "coding": [ + { + "system": 'http://loinc.org', + "code": '59408-5' + } + ], + "text": 'SpO2' + }, + "valueQuantity": { + "value": 96, + "unit": '%', + "system": 'http://unitsofmeasure.org', + "code": '%' + } + } + ] + }.freeze + R4_OBSERVATION_LABS_CREATE ||= { "resourceType": 'Observation', "status": 'final', @@ -1046,6 +1294,293 @@ module Resources } }.freeze + R4_OBSERVATION_VITALS_BP_UPDATE ||= { + "resourceType": 'Observation', + "id": 'BP-59857018-59857020', + "identifier": [ + { + "system": 'https://fhir.cerner.com/ceuuid', + "value": 'CEfda49233-ccfa-4ed4-afbc-9f5082c2bf0c-59857018-2022111805415000' + }, + { + "system": 'https://fhir.cerner.com/ceuuid', + "value": 'CEfda49233-ccfa-4ed4-afbc-9f5082c2bf0c-59857020-2022111805415000' + } + ], + "status": 'corrected', + "category": [ + { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/observation-category', + "code": 'vital-signs', + "display": 'Vital Signs' + } + ], + "text": 'Vital Signs' + } + ], + "code": { + "coding": [ + { + "system": 'http://loinc.org', + "code": '85354-9', + "display": 'Blood pressure panel with all children optional' + } + ], + "text": 'Blood pressure' + }, + "subject": { + "reference": 'Patient/15116458' + }, + "encounter": { + "reference": 'Encounter/15687784' + }, + "effectiveDateTime": '2022-06-09T08:00:58.000Z', + "issued": '2022-06-09T08:00:58.000Z', + "performer": [ + { + "extension": [ + { + "valueCodeableConcept": { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/v3-ParticipationType', + "code": 'LA', + "display": 'legal authenticator' + } + ], + "text": 'legal authenticator' + }, + "url": 'http://hl7.org/fhir/StructureDefinition/event-performerFunction' + } + ], + "reference": 'Practitioner/15441459' + } + ], + "component": [ + { + "code": { + "coding": [ + { + "system": 'http://loinc.org', + "code": '8480-6' + } + ], + "text": 'Systolic Blood Pressure Sitting' + }, + "valueQuantity": { + "value": 99, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "interpretation": [ + { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation', + "code": 'N', + "display": 'Normal' + } + ] + } + ], + "referenceRange": [ + { + "low": { + "value": 35, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "high": { + "value": 37, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "type": { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/referencerange-meaning', + "code": 'normal', + "display": 'Normal Range' + } + ], + "text": 'Normal Range' + } + } + ] + }, + { + "code": { + "coding": [ + { + "system": 'http://loinc.org', + "code": '8462-4' + } + ], + "text": 'Diastolic Blood Pressure Sitting' + }, + "valueQuantity": { + "value": 66, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "interpretation": [ + { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation', + "code": 'N', + "display": 'Normal' + } + ] + } + ], + "referenceRange": [ + { + "low": { + "value": 35, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "high": { + "value": 37, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "type": { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/referencerange-meaning', + "code": 'normal', + "display": 'Normal Range' + } + ], + "text": 'Normal Range' + } + } + ] + } + ] + }.freeze + + R4_OBSERVATION_VITALS_PO_UPDATE ||= { + "resourceType": 'Observation', + "id": 'VS-CV-83059963-SECT-8098', + "identifier": [ + { + "system": 'https://fhir.cerner.com/cvuuid', + "value": '8344a9b7-b1b7-406e-b303-1009edd66459' + } + ], + "status": 'amended', + "category": [ + { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/observation-category', + "code": 'vital-signs', + "display": 'Vital Signs' + } + ], + "text": 'Vital Signs' + } + ], + "code": { + "coding": [ + { + "system": 'http://loinc.org', + "code": '2708-6', + "display": 'Oxygen saturation in Arterial blood' + }, + { + "system": 'http://loinc.org', + "code": '59408-5', + "display": 'Oxygen saturation in Arterial blood by Pulse oximetry' + } + ], + "text": 'SpO2' + }, + "subject": { + "reference": 'Patient/12457979' + }, + "encounter": { + "reference": 'Encounter/97787491' + }, + "effectiveDateTime": '2022-06-05T08:00:38.022Z', + "issued": '2022-06-05T08:00:56Z', + "performer": [ + { + "extension": [ + { + "valueCodeableConcept": { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/v3-ParticipationType', + "code": 'LA', + "display": 'legal authenticator' + } + ], + "text": 'legal authenticator' + }, + "url": 'http://hl7.org/fhir/StructureDefinition/event-performerFunction' + } + ], + "reference": 'Practitioner/15441459' + } + ], + "valueQuantity": { + "value": 44, + "unit": '%', + "system": 'http://unitsofmeasure.org', + "code": '%' + }, + "component": [ + { + "code": { + "coding": [ + { + "system": 'http://loinc.org', + "code": '3151-8', + "display": 'Inhaled oxygen flow rate' + } + ], + "text": 'Oxygen Flow Rate' + }, + "valueQuantity": { + "value": 55, + "unit": 'L/min', + "system": 'http://unitsofmeasure.org', + "code": 'L/min' + } + }, + { + "code": { + "coding": [ + { + "system": 'http://loinc.org', + "code": '3150-0', + "display": 'Inhaled oxygen concentration' + } + ], + "text": 'FIO2' + }, + "valueQuantity": { + "value": 66, + "unit": '%', + "system": 'http://unitsofmeasure.org', + "code": '%' + } + } + ] + }.freeze + R4_OBSERVATION_REVINCLUDE_BUNDLE ||= { 'resourceType': 'Bundle', 'id': '79c71e5b-2793-4ace-bc5e-190e38784e80', diff --git a/lib/resources/r4/observation.yaml b/lib/resources/r4/observation.yaml index e26ca7577..49cbd7f73 100644 --- a/lib/resources/r4/observation.yaml +++ b/lib/resources/r4/observation.yaml @@ -625,7 +625,7 @@ fields: url: https://hl7.org/fhir/R4/observation-definitions.html#Observation.value[x] @@ -1105,3 +1105,161 @@ fields: - display: v4 data absentreason system: http://terminology.hl7.org/CodeSystem/data-absent-reason info_link: https://hl7.org/fhir/R4/valueset-data-absent-reason.html + +- name: component + required: 'No' + type: List of BackboneElement + description: + Some observations have multiple component observations. These component observations are expressed as separate code + value pairs that share the same attributes. Examples include systolic and diastolic component observations for blood + pressure measurement and multiple component observations for genetics observations. + action: + - create + - update + example: | + { + "code": { + "coding": [ + { + "system": 'http://loinc.org', + "code": '8480-6' + } + ], + "text": 'Systolic Blood Pressure Invasive' + }, + "valueQuantity": { + "value": 120, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "interpretation": [ + { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation', + "code": 'N' + } + ] + } + ], + "referenceRange": [ + { + "low": { + "value": 45.0, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "high": { + "value": 75.0, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "type": { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/referencerange-meaning', + "code": 'normal' + } + ], + "text": 'Normal Range' + } + } + ] + } + url: https://hl7.org/fhir/R4/observation-definitions.html#Observation.component + note: | + + children: + + - name: code + required: 'Yes' + type: CodeableConcept + description: Describes what was observed. Sometimes this is called the observation "name". + example: | + { + "coding": [ + { + "system": 'http://loinc.org', + "code": '8480-6' + } + ], + "text": 'Systolic Blood Pressure Invasive' + } + url: https://hl7.org/fhir/R4/observation-definitions.html#Observation.component.code + + - name: value[x] + required: 'No' + type: List of CodeableConcept + description: The information determined as a result of making the observation, if the information has a simple value. + example: | + { + "value": 120, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + } + note: | + + url: https://hl7.org/fhir/R4/observation-definitions.html#Observation.component.value[x] + + - name: interpretation + required: 'No' + type: List of CodeableConcept + description: A categorical assessment of an observation value. For example, high, low, normal. + example: | + { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation', + "code": 'N' + } + ], + "text": 'NORMAL' + } + note: | + + url: https://hl7.org/fhir/R4/observation-definitions.html#Observation.component.interpretation + + - name: referenceRange + required: 'No' + type: CodeableConcept + description: Guidance on how to interpret the value by comparison to a normal or recommended range. + example: | + { + "low": { + "value": 45.0, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "high": { + "value": 75.0, + "unit": 'mmHg', + "system": 'http://unitsofmeasure.org', + "code": 'mm[Hg]' + }, + "type": { + "coding": [ + { + "system": 'http://terminology.hl7.org/CodeSystem/referencerange-meaning', + "code": 'normal' + } + ], + "text": 'Normal Range' + } + } + note: | + + url: https://hl7.org/fhir/R4/observation-definitions.html#Observation.component.referenceRange