Observation data model

View field support, webhooks, and list parameters for each integration on the Supported Integrations page.

FieldTypeRequiredDescription
idstringNoUnique identifier for the observation
created_atstring (date-time)NoWhen the observation record was created (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
updated_atstring (date-time)NoWhen the observation record was last updated (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
patient_idstringNoThe patient the observation is about
encounter_idstringNoThe encounter in which the observation was made
practitioner_idstringNoThe practitioner who performed the observation
namestringNoHuman-readable name of what was observed
codesHealthcareCode[]NoCodings for what was observed (e.g. LOINC)
codes[].systemstringNoThe code system URI (e.g. http://loinc.org, http://snomed.info/sct)
codes[].codestringNoThe code within the system
codes[].displaystringNoHuman-readable display text for the code
statusenumNoStatus of the observation result Values: REGISTERED, PRELIMINARY, FINAL, AMENDED, CORRECTED, CANCELLED, ENTERED_IN_ERROR, UNKNOWN, OTHER
typeenumNoCategory of the observation Values: LABORATORY, VITAL_SIGNS, SOCIAL_HISTORY, IMAGING, SURVEY, EXAM, PROCEDURE, THERAPY, ACTIVITY, OTHER
value_numbernumberNoNumeric result value
value_unitstringNoUnit of the numeric result (e.g. mg/dL)
value_textstringNoText or coded result value
interpretationenumNoInterpretation of the result (e.g. high, low) Values: NORMAL, ABNORMAL, LOW, HIGH, CRITICAL_LOW, CRITICAL_HIGH, OTHER
reference_rangeobjectNoNormal range for the result
reference_range.low_valuenumberNoLower bound of the range
reference_range.high_valuenumberNoUpper bound of the range
reference_range.unitstringNoUnit of the range bounds
reference_range.textstringNoText description of the range
componentsHealthcareObservationComponent[]NoComponent results (e.g. systolic and diastolic blood pressure)
components[].namestringNoHuman-readable name of the component
components[].codesHealthcareCode[]NoCodings for the component (e.g. LOINC)
components[].codes[].systemstringNoThe code system URI (e.g. http://loinc.org, http://snomed.info/sct)
components[].codes[].codestringNoThe code within the system
components[].codes[].displaystringNoHuman-readable display text for the code
components[].value_numbernumberNoNumeric component value
components[].value_unitstringNoUnit of the numeric component value
components[].value_textstringNoText or coded component value
components[].interpretationenumNoInterpretation of the component value Values: NORMAL, ABNORMAL, LOW, HIGH, CRITICAL_LOW, CRITICAL_HIGH, OTHER
observed_atstring (date-time)NoWhen the observation was made (effective time) (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
issued_atstring (date-time)NoWhen the result was released (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
notesstringNoFree-text notes about the observation
metadataHealthcareMetadata[]No
metadata[].idstringNo
metadata[].valueobjectNo
metadata[].namespacestringNo
metadata[].formatenumNoValues: TEXT, NUMBER, DATE, BOOLEAN, ARRAY, OBJECT
metadata[].extra_dataobjectNo
metadata[].slugstringNo

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

Zod
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]
Are we missing anything? Let us know
Was this page helpful?