ClinicalObservation

A generic clinical observation representing any measurable, observable, or assessable finding about a patient. Supports quantitative measurements, qualitative assessments, coded results, and boolean outcomes with interpretation flags.

Overview

ClinicalObservation is a flexible entity for capturing any clinical finding about a patient. It supports multiple value types: numeric measurements with units, coded values from terminologies, free-text descriptions, and boolean (yes/no) results. Each observation is coded (typically LOINC), categorized, timestamped, and can include clinical interpretation. This entity forms the foundation for vital signs, lab results, exam findings, and social history.

Key Concepts

Observation Categories

The category field classifies observations:

CategoryDescriptionExamples
vital-signsBasic physiological measurementsBP, HR, temp, SpO2
laboratoryLab test resultsCBC, chemistry, urinalysis
imagingImaging findingsX-ray results, CT findings
examPhysical examination findingsHeart murmur, rash
surveyPatient-reported assessmentsPHQ-9, pain scale
social-historySocial and behavioral factorsSmoking status, alcohol use
activityPhysical activity dataSteps, exercise minutes

Value Types

Observations support multiple value types:

FieldTypeUse Case
valueQuantity + valueUnitNumber with unitBP: 120 mmHg
valueCodeCoded valueSmoking: Former smoker
valueStringFree text"Mild tenderness on palpation"
valueBooleanYes/NoHeart murmur: true

Observation Coding

The code field defines what is being observed:

  • LOINC for measurements and tests
  • SNOMED-CT for clinical findings
  • Enables standardized data exchange
  • Supports analytics and research

Interpretation Flags

The interpretation field provides clinical context:

InterpretationMeaningAlert Level
normalWithin reference rangeNone
abnormalOutside reference rangeLow
highAbove high limitMedium
lowBelow low limitMedium
critical-highDangerously elevatedHigh
critical-lowDangerously decreasedHigh
positivePresent (qualitative)Varies
negativeAbsent (qualitative)None

Observation Status

Lifecycle from collection to verification:

StatusDescription
registeredInitial entry
preliminaryPending verification
finalVerified and complete
amendedModified after final
correctedError corrected
cancelledVoided
entered-in-errorInvalid

Temporal Context

Two time fields capture different moments:

  • effectiveDateTime - When observation was made
  • issued - When result was released
  • effectivePeriod - For observations over time

Use Cases

Recording Vital Signs

When measuring patient vitals:

  1. Create observation with category: "vital-signs"
  2. Code with appropriate LOINC (e.g., 8867-4 for heart rate)
  3. Record value in valueQuantity and valueUnit
  4. Set interpretation if abnormal
  5. Document performer and time

Laboratory Results

When reporting lab values:

  1. Create observation with category: "laboratory"
  2. Code with LOINC test code
  3. Record numeric result with units
  4. Set interpretation based on reference range
  5. Note method if clinically relevant
  6. Flag critical values

Physical Exam Finding

When documenting exam:

  1. Create observation with category: "exam"
  2. Code finding with SNOMED-CT
  3. Use valueBoolean for presence/absence
  4. Or valueString for description
  5. Document bodySite if localized
  6. Note method (auscultation, palpation)

Social History

When documenting social factors:

  1. Create observation with category: "social-history"
  2. Code the factor (smoking, alcohol)
  3. Use valueCode for standardized answer
  4. Add narrative context in note
  5. Document effective period if applicable

Critical Value Alert

When result is critical:

  1. Set interpretation: "critical-high" or "critical-low"
  2. Document notification in note
  3. Calculated isCritical flag triggers alerts
  4. Ensure rapid provider notification
  5. Document acknowledgment

Related Entities

EntityRelationshipDescription
PatientReferencesSubject of observation
EncounterReferencesVisit context
PractitionerReferences manyPerformer(s)
CodingContainsObservation code, method, valueCode
HealthReferenceBodySiteReferencesAnatomical location

Calculated Fields

FieldTypeDescription
hasNumericValuebooleanTrue when valueQuantity is present
isCriticalbooleanTrue when interpretation is critical-high or critical-low

Enums

status

ValueDescription
registeredObservation recorded but not yet verified
preliminaryInitial results available, pending final verification
finalObservation verified and complete
amendedObservation modified after being finalized
correctedObservation corrected due to error
cancelledObservation cancelled and not valid
entered-in-errorObservation created in error

category

ValueDescription
vital-signsBasic physiological measurements (BP, HR, temp, SpO2)
laboratoryLaboratory test results and analyses
imagingFindings from imaging studies
examPhysical examination findings
surveyPatient-reported outcomes and assessments
social-historySocial, behavioral, and lifestyle factors
activityPhysical activity and exercise data

interpretation

ValueDescription
normalResult within normal reference range
abnormalResult outside normal limits (unspecified direction)
highResult above upper reference limit
lowResult below lower reference limit
critical-highResult dangerously elevated, requires immediate attention
critical-lowResult dangerously decreased, requires immediate attention
positiveFinding is present (for qualitative tests)
negativeFinding is absent (for qualitative tests)
20 properties
Schema

Properties

PropertyTypeModeDescriptionRequired
patientPatient
stored

The patient who is the subject of this observation - the individual about whom the finding, measurement, or assessment was made

Example: "patient-12345"

Required
encounterEncounter
stored

The healthcare encounter or episode of care during which this observation was made, providing context for when and where the observation occurred

Example: "encounter-67890"

Optional
statusstring
stored

The lifecycle status of the observation indicating the degree of validation and finality, from initial registration through final verification or potential cancellation

Values: registered, preliminary, final, amended, corrected, cancelled, entered-in-error

Example: "final"

Required
categorystring
stored

High-level classification of the type of observation being made, enabling filtering and organization of observations by clinical domain or data source

Values: vital-signs, laboratory, imaging, exam, survey, social-history, activity

Example: "vital-signs"

Optional
codeCoding
stored

The standardized code that defines what was observed - the question being answered or the parameter being measured, typically from LOINC for observations and measurements or SNOMED-CT for clinical findings

Example: {"code":"8867-4","system":"LOINC","display":"Heart rate"}

Required
effectiveDateTimeDateTime
stored

The specific date and time when the observation was made or the specimen was collected - represents the clinically relevant time for point-in-time observations

Example: "2024-03-15T10:30:00Z"

Optional
effectivePeriodPeriod
stored

The time interval during which the observation applies when the observation represents a state or finding that persists over time rather than a single point measurement

Example: {"start":"2024-03-01T00:00:00Z","end":"2024-03-31T23:59:59Z"}

Optional
issuedDateTime
stored

The date and time when the observation result was published, verified, or made available - typically later than the effective time for laboratory or imaging results

Example: "2024-03-15T14:30:00Z"

Optional
performerPractitioner[]
stored

The healthcare professional(s) responsible for making the observation, performing the measurement, or validating the result - can include multiple performers for complex procedures

Example: ["practitioner-11111","practitioner-22222"]

Optional
valueQuantitynumber
stored

The numeric result value for quantitative observations and measurements - must be accompanied by valueUnit to provide complete semantic meaning

Example: 72

Optional
valueUnitstring
stored

The unit of measurement for valueQuantity expressed using standardized units (UCUM preferred) - examples include beats/min, mg/dL, mmHg, kg, cm

Example: "beats/min"

Optional
valueStringstring
stored

A textual result value used for free-text observations, descriptive findings, or when the result cannot be adequately expressed in structured form

Example: "Patient reports occasional chest discomfort on exertion"

Optional
valueBooleanboolean
stored

A yes/no or true/false result for binary observations such as presence/absence of a finding, positive/negative test results, or boolean assessments

Example: true

Optional
valueCodeCoding
stored

A result expressed as a standardized coded value from a controlled terminology - used when the observation result itself is a coded concept rather than a number or text

Example: {"code":"LA18632-2","system":"LOINC","display":"Former smoker"}

Optional
interpretationstring
stored

Clinical interpretation or assessment of the observation result indicating whether the finding is within normal limits, abnormal, or critically abnormal - critical for alerting and clinical decision support

Values: normal, abnormal, high, low, critical-high, critical-low, positive, negative

Example: "normal"

Optional
bodySiteHealthReferenceBodySite
stored

The anatomical location or body site where the observation was made, particularly relevant for physical examination findings, imaging studies, and localized assessments

Example: {"code":"HEART","label":"Heart","system":"cardiovascular"}

Optional
methodCoding
stored

The technique, methodology, or protocol used to obtain the observation - important for interpreting results when multiple measurement methods exist with different reference ranges

Example: {"code":"113011001","system":"SNOMED-CT","display":"Auscultation"}

Optional
notestring
stored

Additional comments, annotations, or contextual information about the observation that doesn't fit into structured fields - may include clinical context, caveats, or explanatory notes

Example: "Patient was anxious during measurement which may have elevated reading"

Optional
hasNumericValueboolean
calculated

Computed indicator showing whether this observation contains a numeric result (valueQuantity is not null) - useful for filtering quantitative observations for trending and analytics

Optional
isCriticalboolean
calculated

Computed flag indicating whether the observation interpretation is critical-high or critical-low, requiring immediate clinical attention - triggers alerts and escalation workflows

Optional

Examples

Example 1

{
  "@type": "ClinicalObservation",
  "patient": "patient-12345",
  "encounter": "encounter-67890",
  "status": "final",
  "category": "vital-signs",
  "code": {
    "code": "8867-4",
    "system": "LOINC",
    "display": "Heart rate"
  },
  "effectiveDateTime": "2024-03-15T10:30:00Z",
  "issued": "2024-03-15T10:31:00Z",
  "performer": [
    "practitioner-11111"
  ],
  "valueQuantity": 72,
  "valueUnit": "beats/min",
  "interpretation": "normal",
  "note": "Patient at rest, regular rhythm",
  "_comment": "hasNumericValue: true, isCritical: false"
}

Example 2

{
  "@type": "ClinicalObservation",
  "patient": "patient-54321",
  "encounter": "encounter-98765",
  "status": "final",
  "category": "social-history",
  "code": {
    "code": "72166-2",
    "system": "LOINC",
    "display": "Tobacco smoking status"
  },
  "effectiveDateTime": "2024-03-15T14:00:00Z",
  "performer": [
    "practitioner-22222"
  ],
  "valueCode": {
    "code": "LA18632-2",
    "system": "LOINC",
    "display": "Former smoker"
  },
  "note": "Patient quit smoking 5 years ago, previously 1 pack per day for 20 years",
  "_comment": "hasNumericValue: false, isCritical: false"
}

Example 3

{
  "@type": "ClinicalObservation",
  "patient": "patient-99999",
  "encounter": "encounter-11111",
  "status": "final",
  "category": "laboratory",
  "code": {
    "code": "2345-7",
    "system": "LOINC",
    "display": "Glucose [Mass/volume] in Serum or Plasma"
  },
  "effectiveDateTime": "2024-03-14T08:00:00Z",
  "issued": "2024-03-14T10:45:00Z",
  "performer": [
    "practitioner-33333"
  ],
  "valueQuantity": 450,
  "valueUnit": "mg/dL",
  "interpretation": "critical-high",
  "method": {
    "code": "702873001",
    "system": "SNOMED-CT",
    "display": "Enzymatic method"
  },
  "note": "Critical value notified to ordering physician",
  "_comment": "hasNumericValue: true, isCritical: true"
}

Example 4

{
  "@type": "ClinicalObservation",
  "patient": "patient-77777",
  "encounter": "encounter-22222",
  "status": "final",
  "category": "exam",
  "code": {
    "code": "301284009",
    "system": "SNOMED-CT",
    "display": "Heart murmur"
  },
  "effectiveDateTime": "2024-03-15T11:15:00Z",
  "performer": [
    "practitioner-44444"
  ],
  "valueBoolean": true,
  "interpretation": "abnormal",
  "bodySite": {
    "code": "HEART",
    "label": "Heart",
    "system": "cardiovascular",
    "laterality": "not-applicable"
  },
  "method": {
    "code": "113011001",
    "system": "SNOMED-CT",
    "display": "Auscultation"
  },
  "note": "Grade 2/6 systolic murmur heard best at left sternal border, referral to cardiology recommended",
  "_comment": "hasNumericValue: false, isCritical: false"
}