---
title: "Observation data model"
url: "https://docs.unified.to/healthcare/observation/model"
description: "The Observation data model object in Unified's Observation API: 20 fields, including created_at, updated_at and patient_id, with types and enum values."
---
# Observation data model

 View field support, webhooks, and list parameters for each integration on the [Supported Integrations](https://docs.unified.to/healthcare/integrations.md) page. 

| Field                            | Type                                                                                                                         | Required | Description                                                                                                                                |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| id                               | string                                                                                                                       | No       | Unique identifier for the observation                                                                                                      |
| created\_at                      | string (date-time)                                                                                                           | No       | When the observation record was created (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)                                                           |
| updated\_at                      | string (date-time)                                                                                                           | No       | When the observation record was last updated (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)                                                      |
| patient\_id                      | string                                                                                                                       | No       | The patient the observation is about                                                                                                       |
| encounter\_id                    | string                                                                                                                       | No       | The encounter in which the observation was made                                                                                            |
| practitioner\_id                 | string                                                                                                                       | No       | The practitioner who performed the observation                                                                                             |
| name                             | string                                                                                                                       | No       | Human-readable name of what was observed                                                                                                   |
| codes                            | [HealthcareCode](https://docs.unified.to/healthcare/observation/model.md#HealthcareCode)\[\]                                 | No       | Codings for what was observed (e.g. LOINC)                                                                                                 |
| codes\[\].system                 | string                                                                                                                       | No       | The code system URI (e.g. http://loinc.org, http://snomed.info/sct)                                                                        |
| codes\[\].code                   | string                                                                                                                       | No       | The code within the system                                                                                                                 |
| codes\[\].display                | string                                                                                                                       | No       | Human-readable display text for the code                                                                                                   |
| status                           | enum                                                                                                                         | No       | Status of the observation result Values: REGISTERED, PRELIMINARY, FINAL, AMENDED, CORRECTED, CANCELLED, ENTERED\_IN\_ERROR, UNKNOWN, OTHER |
| type                             | enum                                                                                                                         | No       | Category of the observation Values: LABORATORY, VITAL\_SIGNS, SOCIAL\_HISTORY, IMAGING, SURVEY, EXAM, PROCEDURE, THERAPY, ACTIVITY, OTHER  |
| value\_number                    | number                                                                                                                       | No       | Numeric result value                                                                                                                       |
| value\_unit                      | string                                                                                                                       | No       | Unit of the numeric result (e.g. mg/dL)                                                                                                    |
| value\_text                      | string                                                                                                                       | No       | Text or coded result value                                                                                                                 |
| interpretation                   | enum                                                                                                                         | No       | Interpretation of the result (e.g. high, low) Values: NORMAL, ABNORMAL, LOW, HIGH, CRITICAL\_LOW, CRITICAL\_HIGH, OTHER                    |
| reference\_range                 | object                                                                                                                       | No       | Normal range for the result                                                                                                                |
| reference\_range.low\_value      | number                                                                                                                       | No       | Lower bound of the range                                                                                                                   |
| reference\_range.high\_value     | number                                                                                                                       | No       | Upper bound of the range                                                                                                                   |
| reference\_range.unit            | string                                                                                                                       | No       | Unit of the range bounds                                                                                                                   |
| reference\_range.text            | string                                                                                                                       | No       | Text description of the range                                                                                                              |
| components                       | [HealthcareObservationComponent](https://docs.unified.to/healthcare/observation/model.md#HealthcareObservationComponent)\[\] | No       | Component results (e.g. systolic and diastolic blood pressure)                                                                             |
| components\[\].name              | string                                                                                                                       | No       | Human-readable name of the component                                                                                                       |
| components\[\].codes             | [HealthcareCode](https://docs.unified.to/healthcare/observation/model.md#HealthcareCode)\[\]                                 | No       | Codings for the component (e.g. LOINC)                                                                                                     |
| components\[\].codes\[\].system  | string                                                                                                                       | No       | The code system URI (e.g. http://loinc.org, http://snomed.info/sct)                                                                        |
| components\[\].codes\[\].code    | string                                                                                                                       | No       | The code within the system                                                                                                                 |
| components\[\].codes\[\].display | string                                                                                                                       | No       | Human-readable display text for the code                                                                                                   |
| components\[\].value\_number     | number                                                                                                                       | No       | Numeric component value                                                                                                                    |
| components\[\].value\_unit       | string                                                                                                                       | No       | Unit of the numeric component value                                                                                                        |
| components\[\].value\_text       | string                                                                                                                       | No       | Text or coded component value                                                                                                              |
| components\[\].interpretation    | enum                                                                                                                         | No       | Interpretation of the component value Values: NORMAL, ABNORMAL, LOW, HIGH, CRITICAL\_LOW, CRITICAL\_HIGH, OTHER                            |
| observed\_at                     | string (date-time)                                                                                                           | No       | When the observation was made (effective time) (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)                                                    |
| issued\_at                       | string (date-time)                                                                                                           | No       | When the result was released (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)                                                                      |
| notes                            | string                                                                                                                       | No       | Free-text notes about the observation                                                                                                      |
| metadata                         | [HealthcareMetadata](https://docs.unified.to/healthcare/observation/model.md#HealthcareMetadata)\[\]                         | No       |                                                                                                                                            |
| metadata\[\].id                  | string                                                                                                                       | No       |                                                                                                                                            |
| metadata\[\].value               | object                                                                                                                       | No       |                                                                                                                                            |
| metadata\[\].namespace           | string                                                                                                                       | No       |                                                                                                                                            |
| metadata\[\].format              | enum                                                                                                                         | No       | Values: TEXT, NUMBER, DATE, BOOLEAN, ARRAY, OBJECT                                                                                         |
| metadata\[\].extra\_data         | object                                                                                                                       | No       |                                                                                                                                            |
| metadata\[\].slug                | string                                                                                                                       | No       |                                                                                                                                            |

## TypeScript

```typescript
export type HealthcareObservation = {
	id?: string; // Unique identifier for the observation
	created_at?: string-time; // When the observation record was created (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	updated_at?: string-time; // When the observation record was last updated (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	patient_id?: string; // The patient the observation is about
	encounter_id?: string; // The encounter in which the observation was made
	practitioner_id?: string; // The practitioner who performed the observation
	name?: string; // Human-readable name of what was observed
	codes?: []; // Codings for what was observed (e.g. LOINC)
	status?: 'REGISTERED' | 'PRELIMINARY' | 'FINAL' | 'AMENDED' | 'CORRECTED' | 'CANCELLED' | 'ENTERED_IN_ERROR' | 'UNKNOWN' | 'OTHER'; // Status of the observation result
	type?: 'LABORATORY' | 'VITAL_SIGNS' | 'SOCIAL_HISTORY' | 'IMAGING' | 'SURVEY' | 'EXAM' | 'PROCEDURE' | 'THERAPY' | 'ACTIVITY' | 'OTHER'; // Category of the observation
	value_number?: number; // Numeric result value
	value_unit?: string; // Unit of the numeric result (e.g. mg/dL)
	value_text?: string; // Text or coded result value
	interpretation?: 'NORMAL' | 'ABNORMAL' | 'LOW' | 'HIGH' | 'CRITICAL_LOW' | 'CRITICAL_HIGH' | 'OTHER'; // Interpretation of the result (e.g. high, low)
	reference_range?: {
		low_value?: number; // Lower bound of the range 
		high_value?: number; // Upper bound of the range 
		unit?: string; // Unit of the range bounds 
		text?: string; // Text description of the range 
	}; // Normal range for the result
	components?: []; // Component results (e.g. systolic and diastolic blood pressure)
	observed_at?: string-time; // When the observation was made (effective time) (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	issued_at?: string-time; // When the result was released (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	notes?: string; // Free-text notes about the observation
	metadata?: [];
	raw?: any; // Raw data from integration
} 
```

## Zod

```typescript
import { z } from 'zod';

export const ZodHealthcareObservation = z.object({
	id: z.string().optional().describe("Unique identifier for the observation"),
	created_at: z.string-time().optional().describe("When the observation record was created (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	updated_at: z.string-time().optional().describe("When the observation record was last updated (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	patient_id: z.string().optional().describe("The patient the observation is about"),
	encounter_id: z.string().optional().describe("The encounter in which the observation was made"),
	practitioner_id: z.string().optional().describe("The practitioner who performed the observation"),
	name: z.string().optional().describe("Human-readable name of what was observed"),
	codes: z.array().optional().describe("Codings for what was observed (e.g. LOINC)"),
	status: z.enum("REGISTERED", "PRELIMINARY", "FINAL", "AMENDED", "CORRECTED", "CANCELLED", "ENTERED_IN_ERROR", "UNKNOWN", "OTHER").optional().describe("Status of the observation result"),
	type: z.enum("LABORATORY", "VITAL_SIGNS", "SOCIAL_HISTORY", "IMAGING", "SURVEY", "EXAM", "PROCEDURE", "THERAPY", "ACTIVITY", "OTHER").optional().describe("Category of the observation"),
	value_number: z.number().optional().describe("Numeric result value"),
	value_unit: z.string().optional().describe("Unit of the numeric result (e.g. mg/dL)"),
	value_text: z.string().optional().describe("Text or coded result value"),
	interpretation: z.enum("NORMAL", "ABNORMAL", "LOW", "HIGH", "CRITICAL_LOW", "CRITICAL_HIGH", "OTHER").optional().describe("Interpretation of the result (e.g. high, low)"),
	reference_range: z.object({
			low_value: z.number().optional().describe("Lower bound of the range"),
			high_value: z.number().optional().describe("Upper bound of the range"),
			unit: z.string().optional().describe("Unit of the range bounds"),
			text: z.string().optional().describe("Text description of the range")
}).optional().describe("Normal range for the result"),
	components: z.array().optional().describe("Component results (e.g. systolic and diastolic blood pressure)"),
	observed_at: z.string-time().optional().describe("When the observation was made (effective time) (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	issued_at: z.string-time().optional().describe("When the result was released (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	notes: z.string().optional().describe("Free-text notes about the observation"),
	metadata: z.array().optional(),

});
```

## Python

```python
import dataclasses

@dataclasses.dataclass
class HealthcareObservationStatus(str, Enum):
	REGISTERED = 'REGISTERED'
	PRELIMINARY = 'PRELIMINARY'
	FINAL = 'FINAL'
	AMENDED = 'AMENDED'
	CORRECTED = 'CORRECTED'
	CANCELLED = 'CANCELLED'
	ENTERED_IN_ERROR = 'ENTERED_IN_ERROR'
	UNKNOWN = 'UNKNOWN'
	OTHER = 'OTHER'

@dataclasses.dataclass
class HealthcareObservationType(str, Enum):
	LABORATORY = 'LABORATORY'
	VITAL_SIGNS = 'VITAL_SIGNS'
	SOCIAL_HISTORY = 'SOCIAL_HISTORY'
	IMAGING = 'IMAGING'
	SURVEY = 'SURVEY'
	EXAM = 'EXAM'
	PROCEDURE = 'PROCEDURE'
	THERAPY = 'THERAPY'
	ACTIVITY = 'ACTIVITY'
	OTHER = 'OTHER'

@dataclasses.dataclass
class HealthcareObservationInterpretation(str, Enum):
	NORMAL = 'NORMAL'
	ABNORMAL = 'ABNORMAL'
	LOW = 'LOW'
	HIGH = 'HIGH'
	CRITICAL_LOW = 'CRITICAL_LOW'
	CRITICAL_HIGH = 'CRITICAL_HIGH'
	OTHER = 'OTHER'

@dataclasses.dataclass
class PropertyHealthcareObservationReference_range:
	"""Lower bound of the range"""
	low_value: Optional[int]
	"""Upper bound of the range"""
	high_value: Optional[int]
	"""Unit of the range bounds"""
	unit: Optional[str]
	"""Text description of the range"""
	text: Optional[str]

@dataclasses.dataclass
class HealthcareObservation:
	"""Unique identifier for the observation"""
	id: Optional[str]
	"""When the observation record was created (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	"""When the observation record was last updated (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	updated_at: Optional[str]
	"""The patient the observation is about"""
	patient_id: Optional[str]
	"""The encounter in which the observation was made"""
	encounter_id: Optional[str]
	"""The practitioner who performed the observation"""
	practitioner_id: Optional[str]
	"""Human-readable name of what was observed"""
	name: Optional[str]
	"""Codings for what was observed (e.g. LOINC)"""
	codes: Optional[PropertyHealthcareObservationCodes]
	"""Status of the observation result"""
	status: Optional[HealthcareObservationStatus]
	"""Category of the observation"""
	type: Optional[HealthcareObservationType]
	"""Numeric result value"""
	value_number: Optional[int]
	"""Unit of the numeric result (e.g. mg/dL)"""
	value_unit: Optional[str]
	"""Text or coded result value"""
	value_text: Optional[str]
	"""Interpretation of the result (e.g. high, low)"""
	interpretation: Optional[HealthcareObservationInterpretation]
	"""Normal range for the result"""
	reference_range: Optional[PropertyHealthcareObservationReference_range]
	"""Component results (e.g. systolic and diastolic blood pressure)"""
	components: Optional[PropertyHealthcareObservationComponents]
	"""When the observation was made (effective time) (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	observed_at: Optional[str]
	"""When the result was released (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	issued_at: Optional[str]
	"""Free-text notes about the observation"""
	notes: Optional[str]
	metadata: Optional[PropertyHealthcareObservationMetadata]

```
