IMS Logo

Observation (Vital Signs)

Description

Creates an Observation resource to record vital sign measurements for a patient within the EHR. This API is used to insert vital readings into the patient chart under a specific encounter. The encounter must be an existing open encounter, and the request will be rejected if the encounter is closed or signed off.

Each request records one vital sign reading at a time. The system will only insert new values and will not update existing vital records. If a reading already exists for the same vital sign at the same timestamp, the request will be rejected. The Observation ID is always generated by the FHIR server, and any client-provided ID will be ignored.

Vital signs must be coded using LOINC codes, mapped from the EHR Vital Options configuration using the external ID. Supported vital types include measurements such as body temperature, heart rate, respiratory rate, blood pressure, oxygen saturation, body height, body weight, BMI, pain score, and other standard clinical vitals.

Each observation must reference the patient (subject) and the encounter where the vital was recorded. The effectiveDateTime represents the time when the measurement was taken. Optionally, the observation may include the performer who recorded the vital sign.

For composite vital signs such as blood pressure, the observation uses components to record multiple values (for example, systolic and diastolic pressure). Components may also be used to record measurement site information, such as the location of temperature measurement or the anatomical site used for heart rate or blood pressure readings.

All vital measurements must use standard UCUM units (for example kg, mmHg, %, /min, °C, or °F) to ensure consistency across integrations.


Interaction:

POST Request

HTTP Method: POST

POST {{Url}}/Observation
cURL
curl -X POST "{{url}}/mps/fhir/R4/V1/Observation/" \
  -H "Authorization: Bearer {{token}}" \
  -H "Content-Type: application/fhir+json" \
  --data-raw '{
    "resourceType": "Observation",
    "meta": {
      "profile": [
        "http://hl7.org/fhir/us/core/StructureDefinition/us-core-vital-signs"
      ]
    },
    "status": "final",
    "category": [
      {
        "coding": [
          {
            "system": "http://terminology.hl7.org/CodeSystem/observation-category",
            "code": "vital-signs",
            "display": "Vital Signs"
          }
        ]
      }
    ],
    "code": {
      "coding": [
        {
          "system": "http://loinc.org",
          "code": "8310-5",
          "display": "Body temperature"
        }
      ],
      "text": "Body Temperature"
    },
    "subject": {
      "reference": "Patient/Patient-265"
    },
    "encounter": {
      "reference": "Encounter/Encounter-805"
    },
    "effectiveDateTime": "2025-06-12T09:00:00Z",
    "valueQuantity": {
      "value": 37.2,
      "unit": "Cel",
      "system": "http://unitsofmeasure.org",
      "code": "Cel"
    },
    "component": [
      {
        "code": {
          "coding": [
            {
              "system": "http://loinc.org",
              "code": "80313-7",
              "display": "Site of body temperature measurement"
            }
          ],
          "text": "Measurement Site"
        },
        "valueCodeableConcept": {
          "coding": [
            {
              "system": "http://snomed.info/sct",
              "code": "263688005",
              "display": "Oral cavity structure"
            }
          ],
          "text": "Oral"
        }
      }
    ]
  }'

Observation (Vital Signs) Resource Content

ElementChild ElementDescriptionR / O / CCardinalityCondition / Notes
resourceTypeIdentifies the FHIR resource type.Required1..1Must always be Observation.
idUnique identifier for the observation resource.Optional0..1Always generated by IMS.
statusStatus of the observation.Required1..1Default value: final.
categoryCategory of the observation.Required1..*
categorycoding.systemObservation category code system.Required1..1http://terminology.hl7.org/CodeSystem/observation-category.
categorycoding.codeObservation category code.Required1..1Value: vital-signs.
categorycoding.displayObservation category display.Required1..1Display: Vital Signs.
codeLOINC code representing the vital sign.Required1..1IMS Vital option mapped with external ID → LOINC code.
codecoding.systemCoding system for the vital.Required1..1http://loinc.org.
codecoding.codeLOINC code for the vital.Required1..1Example: 8310-5 (Temperature), 8867-4 (Heart Rate), 85354-9 (BP Panel), 29463-7 (Body Weight).
codecoding.displayDescription of the vital.Required1..1
subjectPatient associated with the observation.Optional0..1Reference to patient resource.
subjectreferencePatient reference identifier.Optional1..1Example: Patient/xValue.
subjecttypeResource type of subject.Optional0..1Value: Patient.
subjectdisplayPatient display name.Optional0..1Name of the patient for whom the vital is recorded.
encounterEncounter associated with the observation.Required1..1Encounter for the visit note.
encounterreferenceEncounter reference identifier.Required1..1Example: Encounter/xValue.
encounterdisplayEncounter description.Optional0..1Example: Follow-up visit description.
effectiveDateTimeDate/time when the vital was measured.Required1..1Timestamp of the vital observation.
performerPractitioner who recorded the observation.Optional0..1Reference to practitioner performing measurement.
performerreferencePractitioner reference.Optional0..1Example: Practitioner/example.
performerdisplayPractitioner name.Optional0..1Example: Nurse name.
valueQuantityMeasured vital value.Required1..1Used for single vital observations.
valueQuantityvalueNumeric value of the vital.Required1..1Example: 72.5.
valueQuantityunitUnit of measurement.Required1..1Example: kg, bpm, mmHg, %, Cel.
valueQuantitysystemUnit code system.Required1..1http://unitsofmeasure.org.
valueQuantitycodeUCUM code for unit.Required1..1Example: kg, mm[Hg], Cel.
componentSub-observation component.Conditional0..*Used for complex vitals such as Blood Pressure or measurement site.
componentcodeCode representing the component.Conditional1..1Required when component exists.
component.codecoding.systemCoding system for component.Conditional1..1http://loinc.org.
component.codecoding.codeLOINC code for component.Conditional1..1Example: 8480-6 (Systolic BP), 8462-4 (Diastolic BP), 80313-7 (Temperature Site).
component.codecoding.displayComponent display name.Conditional1..1Example: Systolic Blood Pressure.
component.codetextHuman readable component name.Conditional0..1
componentvalueQuantityValue of component measurement.Conditional0..1Required when the component represents a numeric measurement.
component.valueQuantityvalueNumeric value.Conditional1..1Example: 120.
component.valueQuantityunitMeasurement unit.Conditional1..1Example: mmHg.
component.valueQuantitysystemUnit code system.Conditional1..1http://unitsofmeasure.org.
component.valueQuantitycodeUCUM unit code.Conditional1..1Example: mm[Hg].
componentvalueCodeableConceptUsed when component represents a coded concept (e.g., measurement site).Conditional0..1Used for temperature site, heart rate site, BP position/site.
bodySiteBody location where the vital was measured.Conditional0..1Used when the measurement location needs to be captured (temperature site, BP location, heart rate site).
bodySitecoding.systemCode system for body site.Conditional1..1http://snomed.info/sct.
bodySitecoding.codeSNOMED code representing measurement location.Conditional1..1Example: 263688005 (Oral), 368209003 (Axillary), 39727003 (Tympanic).
bodySitecoding.displayDescription of measurement location.Conditional1..1Example: Oral cavity structure.

Response Codes

Response CodeDescription
200 OKThe requested resource was found and is contained within the body of the HTTP response.
201 CreatedA new resource was created succesfully. It will return the resource with the EHR generate resource id.
400 Bad RequestThe server could not understand the request due to invalid syntax. The body of the HTTP response will contain an OperationOutcome resource that indicates the invalid request could not be processed.
404 Not FoundThe requested resource does not exist. The body of the HTTP response will contain an OperationOutcome resource that indicates the resource could not be found.
410 GoneThe requested resource has been permanently deleted from the server with no forwarding address. The body of the HTTP response will contain an OperationOutcome resource that indicates the resource could not be found.
422 Unprocessable EntityThe request was well-formed but had semantic errors.
500 Internal Server ErrorThe server has encountered a situation it doesn't know how to handle. The body of the HTTP response will contain an OperationOutcome resource that indicates the nature of the error.
5xx Server ErrorThe server may return other error codes to indicate other error conditions. The body of the HTTP response will contain an OperationOutcome resource that indicates the nature of the error.
500001 VALIDATION_FAILEDThe request failed validation.
500002 DUPLICATE_RECORDA duplicate record was detected.
500003 INSERT_FAILEDThe insert operation failed.
500004 UPDATE_FAILEDThe update operation failed.
500005 DELETE_FAILEDThe delete operation failed.
500006 RECORD_NOT_FOUND_FOR_UPDATENo matching record was found to update.
500007 DATA_MAPPING_ERRORThe request could not be processed due to a data mapping error.
500008 DEPENDENCY_FAILUREA dependent operation failed.
500009 ENCOUNTER_SIGNED_OFFThe encounter is already signed-off.
500010 ENCOUNTER_BILLEDThe encounter is fully or partially billed.
500011 INSURANCE_ACTIVE_ALREADY_EXISTSSame insurance with Active status is already exist.
500012 INSURANCE_PLAN_NOT_FOUNDInsurance Plan does not exist.
500013 CARRIER_CODE_DUPLICATEDCarrier code is duplicated.
500014 PLAN_CODE_DUPLICATEDPlan code is duplicated.
590002 VALUE_OUT_OF_RANGEA value is out of range for the destination.
590001 ROW_NOT_FOUNDRow not found in global temporary table.
590003 NUMERIC_EXPECTEDNumeric value expected but found empty value.
590004 VITAL_ALREADY_PRESENTValue for vital is already present and parameter to add multiple vital is off.
590006 HEIGHT_UNIT_UNSUPPORTEDOnly feet, inch and cm are supported for height (when unit code not in cm, in_i, ft_i).
590007 COMPONENT_INFO_MISSINGComponent information missing (LOINC code or data for component is missing).
590005 LOINC_MAPPING_NOT_FOUNDMapping not found for LOINC code in IMS.
500015 APPOINTMENT_NOT_FOUNDAppointment not found.
500016 APPOINTMENT_ALREADY_CANCELLEDAppointment is already cancelled.
500017 APPOINTMENT_COMPLETEDAppointment is already completed.
500018 INVALID_STATUSInvalid or missing status value.
500019 SERVICE_TYPE_NOT_RECOGNIZEDserviceType code not recognized.
500020 APPOINTMENT_TYPE_NOT_RECOGNIZEDappointmentType code not recognized.
500021 PROVIDER_NOT_FOUNDprovider not found.
500022 LOCATION_NOT_FOUNDlocation not found.
500023 PATIENT_NOT_FOUNDPatient not found.
500024 ENCOUNTER_NOT_FOUNDEncounter not found.
500026 TYPE_REQUIREDType is required.
500027 INVALID_PARTICIPANT_REFERENCEInvalid participant reference.
500028 ORGANIZATION_NOT_INSURANCE_CARRIERThe provided organization-id does not belong to an insurance carrier.
500029 INVALID_PERIOD_RANGEStart date time cannot be greater than end date time.
500030 CPT_DESCRIPTION_REQUIREDCPT description is required to create a new CPT entry in IMS.
500031 INVALID_DATE_RANGEStart date cannot be greater than end date.
500032 ANESTHETIC_PERIOD_REQUIREDPeriod start and end datetime is required for Anesthetic CPT.
500033 REFERENCE_NOT_FOUNDReference not found.
500034 DENTAL_CPT_NOT_ALLOWEDThe selected CPT code is classified as dental and cannot be included on this superbill. Please choose a non-dental CPT code.
500035 SUBSCRIBER_NOT_FOUNDSubscriber not found.
500036 DUPLICATE_ICDDuplicate ICDs are not allowed.
500037 REFERENCED_ICD_MISSINGReferenced ICD is missing in patient diagnosis.
500038 SEVERITY_NOT_SUPPORTEDSeverity is not supported
PATERR001 Missing chartNoMissing required chartNo field.
PATERR003 Missing nameMissing required firstname or lastname field.
PATERR004 Invalid emailEmail should be in proper format.
PATERR005 Invalid phone/fax lengthFax and Phone length must be 10 digits only.
APPT001 Missing serviceTypeMissing required serviceType field.
APPT002 ServiceType not recognizedserviceType code not recognized.
APPT003 Invalid statusInvalid or missing status value.
APPT004 Invalid time rangestart time must be before end time.
APPT006 AppointmentType not recognizedappointmentType code not recognized.
APPT007 Created date missingCreated date is missing.
APPT008 Invalid minimumDurationminimumDuration must be positive.
APPT009 Created date in futurecreated date must not be in the future.
APPT0010 Missing patient referenceReference for patient is missing.
APPT0011 Missing provider referenceReference for provider is missing.
APPT0012 Missing location referenceReference for location is missing.
APPT0014 Provider not foundprovider not found.
APPT0015 Location not foundlocation not found.
APPT0016 Missing provider or locationReference for either provider or location is needed.
APPT0017 Missing organization referenceReference for organization is missing.
APPTR001 Missing appointment referenceMissing Appointment Reference.
APPTR002 Appointment not foundAppointment Not found.
APPTR003 Appointment already cancelledAppointment is already cancelled.
APPTR004 Appointment already completedAppointment is already completed.
OrgINS001 Organization ID requiredOrganization ID is required.
OrgINS002 Invalid organization typeOrganization Type must be defined with ins.
OrgINS003 Name requiredname must present.
OrgINS004 Carrier code duplicatedCarrier code is duplicated.
INSPLAN001 InsurancePlan ID requiredInsurancePlan ID is required.
INSPLAN002 Plan code requiredPlan code must present.
INSPLAN003 Period requiredPeriod must present.
INSPLAN004 Name requiredname must present.
INSPLAN005 Organization reference requiredReference must be there for an organization.
INSPLAN006 Invalid period rangeend date can not be lesser then start date.
INSPLAN007 Status requiredStaus must present.
INSPLAN008 Status must be activeStaus must be active.
COVERR001 Invalid coverage statusStatus must be one of: active, cancelled.
COVERR002 Invalid subscriber referenceSubscriber must reference a Patient or RelatedPerson.
COVERR003 Subscriber ID requiredSubscriber ID (Policy Id) is required.
COVERR004 Invalid beneficiary referenceBeneficiary must reference a Patient.
COVERR005 Invalid relationshipRelatioship is invalid.
COVERR006 Invalid payor referencePayor must reference an organization.
COVERR007 Relationship requiredRelatioship is required.
COVERR008 Insurance order requiredInsurance order is required.
RELPERR001 RelatedPerson ID requiredRelatedPerson ID is required.
RELPERR002 Patient reference requiredPatient reference is required.
RELPERR003 Name requiredName is required.
RELPERR004 Birthdate requiredBirthdate must present.
RELPERR005 Identifier requiredIdnetifier is required.
GEN011 Missing Procedure StatusMissing Procedure Status.
PRO001 Invalid procedure codeInvalid or missing procedure code.
PRO003 Invalid subject referenceInvalid or missing subject reference.
PRO004 Invalid encounter referenceInvalid or missing encounter reference.
PRO005 Invalid performed date/timeInvalid or missing performed date/time.
PRO006 Invalid reasonReferenceInvalid reasonReference.
CON002 Invalid severity codeInvalid severity code.
CON003 Invalid diagnosis codeMissing or invalid diagnosis code. Diagnosis code not found in EHR master data; please add to user diagnosis master.
CON003 Invalid bodySite codingInvalid bodySite coding.
VIT001 Invalid categoryInvalid category: must be 'vital-signs' from the specified coding system.
VIT002 Invalid observation codeInvalid or unsupported observation code.
VIT005 Invalid effectiveDateTimeInvalid or missing effectiveDateTime; must be a valid ISO 8601 datetime string.
VIT006 Invalid valueQuantityMissing or invalid valueQuantity for observation.
VIT007 Invalid component detailsMissing or invalid component details for observation.
VIT008 Invalid component codeInvalid component code.
VIT009 Invalid component valueQuantityMissing or invalid component valueQuantity.
VIT011 Invalid component valueCodeableConceptInvalid component valueCodeableConcept for measurement site.
VIT008 Vital not supportedVital sign '{code}' is not supported by the EHR system.
VIT009 Vital value out of rangeVital sign value {value} is out of acceptable clinical range.

Product Information

IMS (14.0.SP1)