After a patient encounter, you can use this API action to save recorded values or measurements—as documented by a specific organization—to your connection’s EHR system. Typically, you can use this for:
- saving patient vitals from devices to a patient’s chart (e.g., blood pressure measurements from a blood pressure cuff or pacemaker readings);
- recording a patient’s physical characteristics (e.g., weight, height); or
- saving social history information (e.g., tobacco/alcohol/drug use).
For this API action, you’re writing data to your connection’s system, not receiving data back. Think of this like reporting back with an update you recorded about a patient.
However, you’re only reporting back the specific values, not any provider notes or interpretations about the results. If you want to store a note with the result, then you also need to save a diagnostic report to a patient's chart instead.
You can use this API action with the Redox FHIR® API.
It’s also possible to use the Redox Data Model API for this API action. Talk to a Redoxer to learn about your options if you want to use alternative integration methods.
Your connection's system can receive and process writeback messages with their own FHIR® or proprietary API or an HL7v2 feed.
If you’re saving patient vitals recorded during a patient visit, you likely need to include the related encounter ID.
Patient vitals are generally a measurement taken during a patient visit (e.g., blood pressure measurement), but it could also be an observation during a patient visit. For example, you may want to save an observation related to a patient’s social history as recorded during a patient visit.
Lab results are a one-time outcome of an order whereas patient vitals are values from device readings, which are typically continuous measurements (e.g., ventilators, pumps, Sp02 monitors). Lab results may also come from devices (e.g., imaging), but the device doesn’t measure or capture results continuously.
If you’re using the Data Model API, you would use the Device data model for patient vitals and the Results data model for lab results.
When you write data back to an EHR system, you should always include whatever data points you have. You can think of this like including a patient’s demographics for a new patient record; the demographics give useful context for the patient’s chart.
This “demographics” concept is the same for any new “thing” you’re saving to an EHR system. Whenever you send a writeback message, be sure to include any relevant identifiers, codes, or context to tell the EHR system about the data you’re saving, like the following data points:
- patient first name
- patient last name
- patient date of birth
- any patient identifiers
- encounter identifier (if applicable)
- encounter department/location (if applicable)
- any unique record identifiers for the triggering event (e.g., order, result, medication admin ID)
- relevant provider IDs and names (for orders)
- procedure code (for orders)
- 1Save vitals to a patient's chartrequired
This table has notes about how to use parameters for this API action specifically, but it's not exhaustive. Refer to the Observation resource schema for more details.
Parameter | Required | Notes |
---|---|---|
Patient | Y | A reference to the related Patient resource for the patient that received the vaccine. |
Encounter | N | A reference to the related Encounter resource, if applicable to how the vital value was collected. |
The response you receive back is the relevant HTTP status code. Your connection decides what to do with the data you’ve sent to them.
curl 'https://api.redoxengine.com/fhir/R4/redox-fhir-sandbox/Development/Observation/$write-vitals' \--request POST \--header 'Authorization: Bearer ${API_TOKEN}' \--header 'Content-Type: application/json' \--data '{"id": "KevaGreenAmbulatoryVisitVitals","meta": {"profile": ["https://fhir.redoxengine.com/StructureDefinition/redox-vitalsigns-observation-message-bundle"]},"type": "message","entry": [{"resource": {"id": "RedoxMessageHeaderExample","meta": {"profile": ["https://fhir.redoxengine.com/StructureDefinition/redox-message-header"]},"source": {"name": "Good Health Clinics","endpoint": "05107c08-fe2f-4740-8c1d-c7107d18ebe5"},"eventCoding": {"code": "Observation-New","system": "urn:redox:event-type"},"resourceType": "MessageHeader"}},{"resource": {"id": "81c2f5eb-f99f-40c4-b504-59483e6148d7","link": [{"type": "replaces","other": {"reference": "Patient/69efd2ea-1256-4ae7-b4ec-5d0160427185"}}],"meta": {"profile": ["https://fhir.redoxengine.com/StructureDefinition/redox-patient"],"lastUpdated": "2022-12-01T21:57:23.879Z"},"name": [{"use": "official","given": ["Keva"],"family": "Green"}],"active": true,"gender": "female","address": [{"use": "home","city": "Hillsboro","line": ["932 Stehr Vista"],"state": "OR","country": "US","postalCode": "97123"}],"telecom": [{"use": "home","value": "+18088675302","system": "phone"},{"value": "Keva.Green-95@test.net","system": "email"}],"birthDate": "1995-08-26","extension": [{"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race","extension": [{"url": "text","valueString": "White"},{"url": "ombCategory","valueCoding": {"code": "2106-3","system": "urn:oid:2.16.840.1.113883.6.238","display": "White"}}]}],"identifier": [{"value": "kyHGADnvX3xbkU4V9ayaqh","system": "urn:redox:redox-fhir-sandbox:MR"},{"use": "secondary","value": "483749","system": "urn:redox:redox-fhir-sandbox:MR"}],"resourceType": "Patient"}},{"resource": {"id": "004c4cd2-63b0-d216-edf2-079f74d924d6","meta": {"profile": ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter"]},"type": [{"text": "General examination of patient (procedure)","coding": [{"code": "162673000","system": "http://snomed.info/sct","display": "General examination of patient (procedure)"}]}],"class": {"code": "AMB","system": "http://terminology.hl7.org/CodeSystem/v3-ActCode"},"period": {"end": "2023-02-13T00:23:26-05:00","start": "2023-02-12T23:50:50-05:00"},"status": "finished","subject": {"display": "Keva Green","reference": "Patient/81c2f5eb-f99f-40c4-b504-59483e6148d7"},"location": [{"location": {"display": "AGELESS WELLNESS CENTER, INC","reference": "Location?identifier=https://github.com/synthetichealth/synthea|a5cc27d1-5c70-39f8-a9c4-2f3696988650"}}],"identifier": [{"use": "official","value": "004c4cd2-63b0-d216-edf2-079f74d924d6","system": "https://github.com/synthetichealth/synthea"}],"participant": [{"type": [{"text": "primary performer","coding": [{"code": "PPRF","system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType","display": "primary performer"}]}],"period": {"end": "2023-02-13T00:23:26-05:00","start": "2023-02-12T23:50:50-05:00"},"individual": {"display": "Dr. Will Bernhard","reference": "Practitioner?identifier=http://hl7.org/fhir/sid/us-npi|9999945790"}}],"resourceType": "Encounter","serviceProvider": {"display": "AGELESS WELLNESS CENTER, INC","reference": "Organization?identifier=https://github.com/synthetichealth/synthea|8b124b8e-ce6a-3b8a-bf2c-b8f539a4e3ce"}}},{"resource": {"id": "95465ba1-7bff-a298-2d72-e92a483f2f68","code": {"text": "Body Height","coding": [{"code": "8302-2","system": "http://loinc.org","display": "Body Height"}]},"meta": {"profile": ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-body-height"]},"issued": "2023-02-12T23:50:50.483-05:00","status": "final","subject": {"type": "Patient","reference": "Patient/81c2f5eb-f99f-40c4-b504-59483e6148d7"},"category": [{"coding": [{"code": "vital-signs","system": "http://terminology.hl7.org/CodeSystem/observation-category","display": "Vital signs"}]}],"encounter": {"type": "Encounter","reference": "Encounter/004c4cd2-63b0-d216-edf2-079f74d924d6"},"resourceType": "Observation","valueQuantity": {"code": "cm","unit": "cm","value": 166.4,"system": "http://unitsofmeasure.org"},"effectiveDateTime": "2023-02-12T23:50:50-05:00"}},{"resource": {"id": "9f469867-1fb7-ebcd-e6b2-3ea218f08e29","code": {"text": "Pain severity - 0-10 verbal numeric rating [Score] - Reported","coding": [{"code": "72514-3","system": "http://loinc.org","display": "Pain severity - 0-10 verbal numeric rating [Score] - Reported"}]},"issued": "2023-02-12T23:50:50.483-05:00","status": "final","subject": {"type": "Patient","reference": "Patient/81c2f5eb-f99f-40c4-b504-59483e6148d7"},"category": [{"coding": [{"code": "vital-signs","system": "http://terminology.hl7.org/CodeSystem/observation-category","display": "Vital signs"}]}],"encounter": {"type": "Encounter","reference": "Encounter/004c4cd2-63b0-d216-edf2-079f74d924d6"},"resourceType": "Observation","valueQuantity": {"code": "{score}","unit": "{score}","value": 3,"system": "http://unitsofmeasure.org"},"effectiveDateTime": "2023-02-12T23:50:50-05:00"}},{"resource": {"id": "25c9fdd0-82d4-f760-1897-587130528e84","code": {"text": "Body Weight","coding": [{"code": "29463-7","system": "http://loinc.org","display": "Body Weight"}]},"meta": {"profile": ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-body-weight"]},"issued": "2023-02-12T23:50:50.483-05:00","status": "final","subject": {"type": "Patient","reference": "Patient/81c2f5eb-f99f-40c4-b504-59483e6148d7"},"category": [{"coding": [{"code": "vital-signs","system": "http://terminology.hl7.org/CodeSystem/observation-category","display": "Vital signs"}]}],"encounter": {"type": "Encounter","reference": "Encounter/004c4cd2-63b0-d216-edf2-079f74d924d6"},"resourceType": "Observation","valueQuantity": {"code": "kg","unit": "kg","value": 80.6,"system": "http://unitsofmeasure.org"},"effectiveDateTime": "2023-02-12T23:50:50-05:00"}},{"resource": {"id": "0fd4a87c-6b07-9610-c281-01f05c61c63d","code": {"text": "Body mass index (BMI) [Ratio]","coding": [{"code": "39156-5","system": "http://loinc.org","display": "Body mass index (BMI) [Ratio]"}]},"meta": {"profile": ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-bmi"]},"issued": "2023-02-12T23:50:50.483-05:00","status": "final","subject": {"type": "Patient","reference": "Patient/81c2f5eb-f99f-40c4-b504-59483e6148d7"},"category": [{"coding": [{"code": "vital-signs","system": "http://terminology.hl7.org/CodeSystem/observation-category","display": "Vital signs"}]}],"encounter": {"type": "Encounter","reference": "Encounter/004c4cd2-63b0-d216-edf2-079f74d924d6"},"resourceType": "Observation","valueQuantity": {"code": "kg/m2","unit": "kg/m2","value": 29.11,"system": "http://unitsofmeasure.org"},"effectiveDateTime": "2023-02-12T23:50:50-05:00"}},{"resource": {"id": "42c2cb2a-5cf8-6a57-f587-88262a169d4b","code": {"text": "Blood pressure panel with all children optional","coding": [{"code": "85354-9","system": "http://loinc.org","display": "Blood pressure panel with all children optional"}]},"meta": {"profile": ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-blood-pressure"]},"issued": "2023-02-12T23:50:50.483-05:00","status": "final","subject": {"type": "Patient","reference": "Patient/81c2f5eb-f99f-40c4-b504-59483e6148d7"},"category": [{"coding": [{"code": "vital-signs","system": "http://terminology.hl7.org/CodeSystem/observation-category","display": "Vital signs"}]}],"component": [{"code": {"text": "Diastolic Blood Pressure","coding": [{"code": "8462-4","system": "http://loinc.org","display": "Diastolic Blood Pressure"}]},"valueQuantity": {"code": "mm[Hg]","unit": "mm[Hg]","value": 119,"system": "http://unitsofmeasure.org"}},{"code": {"text": "Systolic Blood Pressure","coding": [{"code": "8480-6","system": "http://loinc.org","display": "Systolic Blood Pressure"}]},"valueQuantity": {"code": "mm[Hg]","unit": "mm[Hg]","value": 148,"system": "http://unitsofmeasure.org"}}],"encounter": {"type": "Encounter","reference": "Encounter/004c4cd2-63b0-d216-edf2-079f74d924d6"},"resourceType": "Observation","effectiveDateTime": "2023-02-12T23:50:50-05:00"}},{"resource": {"id": "6e0fb3cc-baa6-dae6-fdb9-a1abcae77547","code": {"text": "Heart rate","coding": [{"code": "8867-4","system": "http://loinc.org","display": "Heart rate"}]},"meta": {"profile": ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-heart-rate"]},"issued": "2023-02-12T23:50:50.483-05:00","status": "final","subject": {"type": "Patient","reference": "Patient/81c2f5eb-f99f-40c4-b504-59483e6148d7"},"category": [{"coding": [{"code": "vital-signs","system": "http://terminology.hl7.org/CodeSystem/observation-category","display": "Vital signs"}]}],"encounter": {"type": "Encounter","reference": "Encounter/004c4cd2-63b0-d216-edf2-079f74d924d6"},"resourceType": "Observation","valueQuantity": {"code": "/min","unit": "/min","value": 88,"system": "http://unitsofmeasure.org"},"effectiveDateTime": "2023-02-12T23:50:50-05:00"}},{"resource": {"id": "2278c35a-958f-320e-0244-32cda2036e55","code": {"text": "Respiratory rate","coding": [{"code": "9279-1","system": "http://loinc.org","display": "Respiratory rate"}]},"meta": {"profile": ["http://hl7.org/fhir/us/core/StructureDefinition/us-core-respiratory-rate"]},"issued": "2023-02-12T23:50:50.483-05:00","status": "final","subject": {"type": "Patient","reference": "Patient/81c2f5eb-f99f-40c4-b504-59483e6148d7"},"category": [{"coding": [{"code": "vital-signs","system": "http://terminology.hl7.org/CodeSystem/observation-category","display": "Vital signs"}]}],"encounter": {"type": "Encounter","reference": "Encounter/004c4cd2-63b0-d216-edf2-079f74d924d6"},"resourceType": "Observation","valueQuantity": {"code": "/min","unit": "/min","value": 14,"system": "http://unitsofmeasure.org"},"effectiveDateTime": "2023-02-12T23:50:50-05:00"}}],"resourceType": "Bundle"}'
FHIR® is a registered trademark of Health Level Seven International (HL7) and is used with the permission of HL7. Use of this trademark does not constitute an endorsement of products/services by HL7®.