Cascade Protocol Clinical Document Ontology
type: Ontology
imports: v1#
description: Vocabulary for clinical documents, narratives, and structured notes imported from EHR systems via Apple HealthKit
creator: Cascade Agentic Labs
created: 2025-12-26
modified: 2026-08-14
version info: 1.15
comment: Domain-specific vocabulary for clinical documentation and structured records imported from patient portals (MyChart, Epic, etc.). Contains EHR-verified clinical data.

Clinical Document
type: Class
comment: Clinical documentation imported from EHR systems, including narratives and structured data
subclass of: DocumentReference
subclass of: Entity
subclass of: Restriction
  on property: Imported At
  cardinality: 1
subclass of: Restriction
  on property: Source EHR
  cardinality: 1

Clinical Section
type: Class
comment: Section within a clinical document (e.g., History of Present Illness, Assessment, Plan)

Clinical Narrative
type: Class
comment: Free-text clinical narrative extracted from FHIR text.div element

Progress Note
type: Class
comment: Provider progress note documenting a patient encounter
subclass of: Clinical Document

Discharge Summary
type: Class
comment: Hospital discharge summary document
subclass of: Clinical Document

Consultation Note
type: Class
comment: Specialist consultation note
subclass of: Clinical Document

Laboratory Report
type: Class
comment: Laboratory test results with narrative interpretation
subclass of: Clinical Document
subclass of: DiagnosticReport

Imaging Report
type: Class
comment: Radiology/imaging report with findings and impressions
subclass of: Clinical Document

Visit Summary
type: Class
comment: After-visit summary provided to patient
subclass of: Clinical Document

Medication
type: Class
comment: Medication record from EHR MedicationStatement or MedicationRequest resource
subclass of: MedicationStatement
subclass of: Entity

Allergy
type: Class
comment: Allergy or intolerance record from EHR AllergyIntolerance resource. DEPRECATED in clinical v1.13: use health:AllergyRecord, which is the type every import path already emits. Retained, not removed: the pod export path is still the sole emitter of this class and existing pods contain it. Readers must continue to accept both.
subclass of: AllergyIntolerance
subclass of: Entity
deprecated: true
version info: Deprecated in clinical v1.13; superseded by health:AllergyRecord

Lab Result
type: Class
comment: Laboratory test result from EHR Observation resource. DEPRECATED in clinical v1.13: use health:LabResultRecord, which is the type every import path already emits. Retained, not removed: the pod export path is still the sole emitter of this class and existing pods contain it. Readers must continue to accept both.
subclass of: Observation
subclass of: Entity
deprecated: true
version info: Deprecated in clinical v1.13; superseded by health:LabResultRecord

Condition
type: Class
comment: Medical condition or diagnosis from EHR Condition resource. DEPRECATED in clinical v1.13: use health:ConditionRecord, which is the type every import path already emits. Retained, not removed: the pod export path is still the sole emitter of this class and existing pods contain it. Readers must continue to accept both.
subclass of: Condition
subclass of: Entity
deprecated: true
version info: Deprecated in clinical v1.13; superseded by health:ConditionRecord

Immunization
type: Class
comment: Vaccination record from EHR Immunization resource. DEPRECATED in clinical v1.13: use health:ImmunizationRecord, which is the type every import path already emits. Retained, not removed: the pod export path is still the sole emitter of this class and existing pods contain it. Readers must continue to accept both.
subclass of: Immunization
subclass of: Entity
deprecated: true
version info: Deprecated in clinical v1.13; superseded by health:ImmunizationRecord

Procedure
type: Class
comment: Medical procedure record from EHR Procedure resource
subclass of: Procedure
subclass of: Entity

Vital Sign
type: Class
comment: Vital sign observation (heart rate, blood pressure, etc.) from EHR
subclass of: Observation
subclass of: Entity

Medication Use Episode
type: Class
comment: Canonical longitudinal record of patient's relationship with a medication over time. Derived from one or more source records via reconciliation. Episodes represent continuous periods of use - a gap beyond threshold creates a new episode.
subclass of: Entity

Supplement
type: Class
comment: Dietary supplement, OTC product, or herbal remedy with explicit regulatory status. Separate from Medication class due to different regulatory status and evidence requirements.
subclass of: Entity

Lab Test Series
type: Class
comment: Longitudinal record of repeated measurements of the same laboratory test (identified by LOINC code) over time. Derived from one or more clinical:LabResult source records via reconciliation. Carries trending analysis, inferred status, and source linkage. The lab equivalent of MedicationUseEpisode. Unlike medication episodes where a 90-day gap creates a new episode, lab tests have no gap concept — one series per LOINC code per patient.
subclass of: Entity

Coverage Record
type: Class
comment: DEPRECATED (v1.5+): Use coverage:InsurancePlan from coverage.ttl for new insurance data. This class remains for backward compatibility with existing EHR import pipeline data. Insurance coverage record imported from EHR. Layer 2 representation of patient insurance data with FHIR Coverage alignment.
subclass of: Entity
deprecated: true
sub concern: deprecated

Canonical Test Name
type: DatatypeProperty
comment: Normalized test name for the lab test series (e.g., 'Hemoglobin A1C')
domain: Lab Test Series
range: string

Test LOINC Code
type: DatatypeProperty
comment: LOINC code identifying this test series (e.g., '4548-4' for HbA1c). All results in the series share this code.
domain: Lab Test Series
range: string

Test Concept URI
type: ObjectProperty
comment: Stable LOINC IRI for the test (e.g., loinc:4548-4). Enables linked-data interoperability.
domain: Lab Test Series
range: Resource

Series Category
type: DatatypeProperty
comment: Lab category for the series (e.g., hematology, metabolic, lipid, thyroid). Maps to observation-category vocabulary.
domain: Lab Test Series
range: string

First Result Date
type: DatatypeProperty
comment: Earliest clinical date from any source result in this series
domain: Lab Test Series
range: dateTime

Last Result Date
type: DatatypeProperty
comment: Most recent clinical date from any source result in this series
domain: Lab Test Series
range: dateTime

Result Count
type: DatatypeProperty
comment: Number of individual results in this series
domain: Lab Test Series
range: integer

Latest Value
type: DatatypeProperty
comment: Value of the most recent result in the series
domain: Lab Test Series
range: string

Latest Unit
type: DatatypeProperty
comment: Unit of the most recent result (UCUM code)
domain: Lab Test Series
range: string

Latest Interpretation
type: DatatypeProperty
comment: Interpretation code of the most recent result (FHIR v3-ObservationInterpretation: H, L, N, HH, LL, A, AA)
domain: Lab Test Series
range: string

Trend Direction
type: DatatypeProperty
comment: Inferred trend direction: increasing, decreasing, stable, or insufficient_data
domain: Lab Test Series
range: string

Trend Confidence
type: DatatypeProperty
comment: Confidence in the trend inference: high, medium, or low
domain: Lab Test Series
range: string

Trend Reason
type: DatatypeProperty
comment: Explainable reason for the trend inference (e.g., '3-point upward trend over 18 months')
domain: Lab Test Series
range: string

Has Abnormal History
type: DatatypeProperty
comment: Whether any result in the series was interpreted as abnormal or critical
domain: Lab Test Series
range: boolean

Current Reference Range
type: DatatypeProperty
comment: Most recent reference range text (e.g., '4.0-5.6 %')
domain: Lab Test Series
range: string

Current Reference Range Low
type: DatatypeProperty
comment: Lower bound of the most recent reference range
domain: Lab Test Series
range: decimal

Current Reference Range High
type: DatatypeProperty
comment: Upper bound of the most recent reference range
domain: Lab Test Series
range: decimal

Series Panel Membership
type: ObjectProperty
comment: Reference to a panel (e.g., CMP, CBC) this test series is typically part of
domain: Lab Test Series
range: Resource

Provider Name
type: DatatypeProperty
comment: Insurance company or plan provider name.
domain: Coverage Record
range: string

Member ID
type: DatatypeProperty
comment: Insurance member/subscriber identifier.
domain: Coverage Record
range: string

Group Number
type: DatatypeProperty
comment: Employer group number for employer-sponsored plans.
domain: Coverage Record
range: string

Plan Name
type: DatatypeProperty
comment: Name of the insurance plan.
domain: Coverage Record
range: string

Plan Type
type: DatatypeProperty
comment: Type of insurance plan: hmo, ppo, epo, pos, hdhp, medicare, medicaid, tricare, other.
domain: Coverage Record
range: string

Coverage Type
type: DatatypeProperty
comment: Classification of coverage: medical, dental, vision, prescription, mental_health.
domain: Coverage Record
range: string

Relationship
type: DatatypeProperty
comment: Beneficiary relationship to subscriber: self, spouse, child, parent, other.
domain: Coverage Record
range: string

Effective Period Start
type: DatatypeProperty
comment: Start date of coverage period.
domain: Coverage Record
range: date

Effective Period End
type: DatatypeProperty
comment: End date of coverage period.
domain: Coverage Record
range: date

Payor Name
type: DatatypeProperty
comment: Name of the organization paying for coverage.
domain: Coverage Record
range: string

Subscriber ID
type: DatatypeProperty
comment: Identifier for the policy holder from the insurer.
domain: Coverage Record
range: string

Imported At
type: DatatypeProperty
comment: ISO 8601 timestamp when document was imported from Apple Health
domain: Clinical Document
range: dateTime

Source EHR
type: DatatypeProperty
comment: Name of the source EHR system (e.g., 'Epic MyChart', 'Cerner'). Applicable to ClinicalDocument, LabResult, and other EHR-sourced records.
range: string

Source Bundle ID
type: DatatypeProperty
comment: iOS app bundle identifier of the source (e.g., 'com.epic.mychart')
domain: Clinical Document
range: string

FHIR Resource ID
type: DatatypeProperty
comment: Original FHIR resource identifier from the source system
domain: Clinical Document
range: string

FHIR Resource Type
type: DatatypeProperty
comment: FHIR resource type (e.g., 'DiagnosticReport', 'Composition')
domain: Clinical Document
range: string

Document Date
type: DatatypeProperty
comment: Date the clinical document was created in the EHR
domain: Clinical Document
range: dateTime

Encounter Date
type: DatatypeProperty
comment: Date of the clinical encounter this document relates to
domain: Clinical Document
range: dateTime

Display Name
type: DatatypeProperty
comment: Human-readable display name from the EHR
domain: Clinical Document
range: string

Narrative Text
type: DatatypeProperty
comment: Plain text extracted from FHIR text.div element (HTML tags stripped)
domain: Clinical Document
range: string

Narrative XHTML
type: DatatypeProperty
comment: Original XHTML content from FHIR Narrative element
domain: Clinical Document
range: string

Raw FHIR Data
type: DatatypeProperty
comment: Base64-encoded original FHIR JSON/XML for lossless preservation
domain: Clinical Document
range: base64Binary

Has Section
type: ObjectProperty
comment: Links a clinical document to its component sections
domain: Clinical Document
range: Clinical Section

Section Code
type: DatatypeProperty
comment: LOINC code identifying the section type
domain: Clinical Section
range: string

Section Title
type: DatatypeProperty
comment: Human-readable section title (e.g., 'History of Present Illness')
domain: Clinical Section
range: string

Section Content
type: DatatypeProperty
comment: Plain text content of the section
domain: Clinical Section
range: string

Section Order
type: DatatypeProperty
comment: Integer indicating section order within the document
domain: Clinical Section
range: integer

Record Date
type: DatatypeProperty
comment: Date the clinical record was created or observed
range: dateTime

Status
type: DatatypeProperty
comment: Lifecycle status of the record. Permitted values depend on the record class and are constrained per-shape, not on this property. INTENDED VALUE SETS (FHIR R4). Recorded here in v1.13 because they are only partly enforced, and the gap should be visible in the vocabulary rather than only in the shapes: clinical:Immunization ImmunizationStatusCodes completed | entered-in-error | not-done -- ENFORCED by clinical:ImmunizationShape clinical:Procedure EventStatus -- ENFORCED by clinical:ProcedureShape clinical:Medication MedicationRequest.status active | on-hold | cancelled | completed | entered-in-error | stopped | draft | unknown -- NOT ENFORCED by clinical:MedicationShape The omission on medications is deliberate as of v1.13, not an oversight. Emitted data uses at least one value outside the FHIR set ("discontinued"; the FHIR equivalents are "stopped" and "ended"), so adding sh:in would be a BREAKING change for existing pods, not a clarification: records that validate today would start failing without any emitter having been corrected first. The ordered fix is to map emitters onto the FHIR value set, then add the constraint in a release explicitly flagged as tightening.
range: string

LOINC Code
type: DatatypeProperty
comment: LOINC code for the clinical concept
range: string

SNOMED Code
type: DatatypeProperty
comment: SNOMED CT code for the clinical concept
range: string

Drug Name
type: DatatypeProperty
comment: Name of the medication
domain: Medication
range: string

Dosage
type: DatatypeProperty
comment: Dosage information for the medication
domain: Medication
range: string

Route
type: DatatypeProperty
comment: Route of administration (oral, IV, etc.)
domain: Medication
range: string

Frequency
type: DatatypeProperty
comment: How often medication is taken
domain: Medication
range: string

RxNorm Code
type: DatatypeProperty
comment: RxNorm code for the medication
domain: Medication
range: string

NDC Code
type: DatatypeProperty
comment: National Drug Code for the medication
domain: Medication
range: string

Prescriber
type: DatatypeProperty
comment: Name of the prescribing physician
domain: Medication
range: string

Indication
type: DatatypeProperty
comment: Clinical reason for the medication (why prescribed)
domain: Medication
range: string

Course of Therapy Type
type: DatatypeProperty
comment: Prescribing workflow classification: acute (one-time/short), continuous (ongoing), or unknown
domain: Medication
range: string

As Needed (PRN)
type: DatatypeProperty
comment: Whether medication is taken as needed rather than on a fixed schedule
domain: Medication
range: boolean

Medication Form
type: DatatypeProperty
comment: Physical form of the medication (tablet, capsule, liquid, injection, etc.)
domain: Medication
range: string

Active Ingredient
type: DatatypeProperty
comment: Primary active ingredient name
domain: Medication
range: string

Ingredient Strength
type: DatatypeProperty
comment: Strength of the active ingredient (e.g. '5 mg per tablet')
domain: Medication
range: string

Provenance Class
type: DatatypeProperty
comment: Source classification for editability: healthKitFHIR, userTracked, pharmacyClaim, or imported. Applicable to Medication, LabResult, and other clinical records.
range: string

Source FHIR Resource Type
type: DatatypeProperty
comment: Which FHIR resource type this record originated from
domain: Medication
range: string

Clinical Intent
type: DatatypeProperty
comment: Clinical intent derived from source: reportedUse, prescribed, dispensed, or administered
domain: Medication
range: string

Refills Allowed
type: DatatypeProperty
comment: Number of prescription refills authorized
domain: Medication
range: integer

Supply Duration Days
type: DatatypeProperty
comment: Number of days each fill is intended to supply
domain: Medication
range: integer

Dispensed Quantity
type: DatatypeProperty
comment: Quantity dispensed per fill (e.g. '90 tablets')
domain: Medication
range: string

Prescription Category
type: DatatypeProperty
comment: Prescribing context: community, inpatient, or discharge
domain: Medication
range: string

Administration Route
type: DatatypeProperty
comment: Route of administration: oral, intravenous, subcutaneous, intramuscular, topical, inhaled, etc.
domain: Medication
range: string

Allergen
type: DatatypeProperty
comment: Name of the allergen or substance
domain: Allergy
range: string

Reaction
type: DatatypeProperty
comment: Description of the allergic reaction
domain: Allergy
range: string

Severity
type: DatatypeProperty
comment: Severity of the allergy (mild, moderate, severe)
domain: Allergy
range: string

Allergy Category
type: DatatypeProperty
comment: Category of allergy (food, medication, environment, biologic)
domain: Allergy
range: string

Criticality
type: DatatypeProperty
comment: Potential clinical harm (low, high, unable-to-assess)
domain: Allergy
range: string

Test Name
type: DatatypeProperty
comment: Name of the laboratory test
domain: Lab Result
range: string

Value
type: DatatypeProperty
comment: Numeric or string value of the result
domain: Lab Result
range: string

Unit
type: DatatypeProperty
comment: Unit of measurement for the value
domain: Lab Result
range: string

Reference Range
type: DatatypeProperty
comment: Normal reference range for the test
domain: Lab Result
range: string

Interpretation
type: DatatypeProperty
comment: Categorical reading of an observation against its reference range, as a code from the HL7 v3 ObservationInterpretation code system, the code system FHIR R4 binds Observation.interpretation to. Any of the 15 data-absent-reason codes is also accepted, for a source whose interpretation element was absent or null-flavoured. The ten English words of the pre-v1.14 enum are retained so older data keeps validating and are not recommended for new writes. ONE VALUE SET ACROSS BOTH OBSERVATION SHAPES, as of v1.15. Through v1.14, clinical:LabResultShape bound this property with sh:in and clinical:VitalSignShape did not, so the same predicate on the same kind of value was checked on labs and unchecked on vitals. That gap was recorded as intentional because emitted vital data used "elevated", which is in neither ratified set, and constraining vitals would have failed those records. v1.15 closes it the way core v3.5 wrote down for exactly this situation: the value set is applied to clinical:VitalSignShape at sh:Warning, not sh:Violation, so the records that carry a non-ratified word are reported rather than rejected, and it is raised to sh:Violation in a later clinical version only after a release in which the warning is observably absent from conforming output. "elevated" migrates to the ratified code plus a verbatim clinical:interpretationSourceCode. A source code in NEITHER value set is carried verbatim on clinical:interpretationSourceCode rather than being forced into this property or dropped.
range: string

Interpretation Source Code
type: DatatypeProperty
comment: The interpretation code the SOURCE wrote, copied verbatim, for the case where that code is a member of neither value set clinical:interpretation is bound to (HL7 v3 ObservationInterpretation, and data-absent-reason). Kept semantically identical to health:interpretationSourceCode, for the reason recorded on the interpretation shapes: these are two spellings of one record, and letting them drift is how one spelling silently becomes the lenient one. WRITE IT ONLY THEN. A code that IS in one of the bound value sets belongs on clinical:interpretation and must not be duplicated here. It is deliberately unconstrained: no value set, no pattern, no case folding. A producer that recognises the source code's intent should ALSO write its nearest ratified equivalent on clinical:interpretation, so a consumer reading only the bound property still gets a usable reading.
range: string
version info: Added in clinical v1.15

Specimen Type
type: DatatypeProperty
comment: Type of specimen collected (blood, urine, etc.)
domain: Lab Result
range: string

Condition Name
type: DatatypeProperty
comment: Name of the medical condition or diagnosis
domain: Condition
range: string

Onset Date
type: DatatypeProperty
comment: Date when the condition began
domain: Condition
range: dateTime

Abatement Date
type: DatatypeProperty
comment: Date when the condition resolved
domain: Condition
range: dateTime

Clinical Status
type: DatatypeProperty
comment: Clinical status (active, recurrence, relapse, inactive, remission, resolved)
domain: Condition
range: string

Verification Status
type: DatatypeProperty
comment: Verification status (unconfirmed, provisional, differential, confirmed, refuted)
domain: Condition
range: string

ICD-10 Code
type: DatatypeProperty
comment: ICD-10-CM diagnosis code
domain: Condition
range: string

Linked Condition IDs
type: DatatypeProperty
comment: DEPRECATED (v1.10): use the clinical:linkedCondition ObjectProperty instead, which links to related conditions by IRI and is traversable RDF. This property encoded links as space-separated UUIDs in a single literal, which no graph query can follow. Retained for backward compatibility with existing Checkup data that may carry it; not emitted for new data.
domain: Condition
range: string
deprecated: true

Vaccine Name
type: DatatypeProperty
comment: Name of the vaccine administered
domain: Immunization
range: string

Vaccine Code
type: DatatypeProperty
comment: CVX code for the vaccine (legacy — use clinical:cvxCode for new serialization; v1.6)
domain: Immunization
range: string

Lot Number
type: DatatypeProperty
comment: Vaccine lot number
domain: Immunization
range: string

Site
type: DatatypeProperty
comment: Body site where vaccine was administered
domain: Immunization
range: string

Dose Number
type: DatatypeProperty
comment: Dose number in a series (e.g., 1, 2, booster)
domain: Immunization
range: string

Manufacturer
type: DatatypeProperty
comment: Vaccine manufacturer
domain: Immunization
range: string

Expiration Date
type: DatatypeProperty
comment: Vaccine expiration date
domain: Immunization
range: date

Procedure Name
type: DatatypeProperty
comment: Name of the procedure performed. This is the CANONICAL and only defined spelling: it is the property whose rdfs:domain is clinical:Procedure, the one clinical:ProcedureShape names, and the one the JSON-LD context maps. THE health: SPELLING IS NOT A SECOND SPELLING (v1.15). A C-CDA import path has been writing the procedure name to a `health:procedureName` predicate that the health vocabulary does not define, on records it types clinical:Procedure. The result was a record that CARRIES a name, fails clinical:ProcedureShape's name requirement as though it had none, and carries that name on a predicate no shape targets, so the name itself is validated by nothing. This is resolved in favour of clinical:procedureName rather than by blessing the health: spelling, for three reasons. There is no health-namespace procedure vocabulary at all: no health:ProcedureRecord, no health:procedureName, so ratifying the emission would mint an undefined-term family of exactly the kind health v2.5 spent a release eliminating. The record is typed clinical:Procedure, so a health: name predicate on it is a namespace mismatch inside a single record rather than a coherent alternative serialization. And the repository's one dual-spelling precedent, health:DailyVitalReadingShape's sh:or over cascade:date and health:date, exists because BOTH serializations are live and defined; here only one spelling is defined, so that precedent does not reach this case. MIGRATION, and what a reader must re-query. clinical:ProcedureShape satisfies its name requirement through sh:or over both spellings from v1.15, so a Pod already holding health:procedureName triples stops failing immediately and no data has to be rewritten to become valid. A separate warning-severity shape fires wherever the health: spelling is present. Producers write clinical:procedureName only. Both the sh:or alternative and the warning shape are removed in a later clinical version, once the warning is observably absent from conforming output…
domain: Procedure
range: string
version info: Canonical spelling restated, and the health: emission given a migration window, in clinical v1.15

Procedure Date
type: DatatypeProperty
comment: Date when the procedure was performed
domain: Procedure
range: dateTime

Body Site
type: DatatypeProperty
comment: Body site where procedure was performed
domain: Procedure
range: string

Performer
type: DatatypeProperty
comment: Name or identifier of the procedure performer
domain: Procedure
range: string

CPT Code
type: DatatypeProperty
comment: CPT procedure code
domain: Procedure
range: string

Outcome
type: DatatypeProperty
comment: Outcome of the procedure
domain: Procedure
range: string

Procedure Status
type: DatatypeProperty
comment: FHIR event-status: preparation, in-progress, not-done, on-hold, stopped, completed, entered-in-error, unknown.
domain: Procedure
range: string

Procedure Category
type: DatatypeProperty
comment: Classification category of the procedure (e.g., surgical, diagnostic, counseling).
domain: Procedure
range: string

Procedure SNOMED Code
type: DatatypeProperty
comment: SNOMED CT concept code for the procedure.
domain: Procedure
range: string

Vital Type
type: DatatypeProperty
comment: Type of vital sign (heart_rate, blood_pressure, temperature, etc.)
domain: Vital Sign
range: string

Systolic Value
type: DatatypeProperty
comment: Systolic blood pressure value
domain: Vital Sign
range: decimal

Diastolic Value
type: DatatypeProperty
comment: Diastolic blood pressure value
domain: Vital Sign
range: decimal

Device Name
type: DatatypeProperty
comment: Name of the measuring device
domain: Vital Sign
range: string

Measurement Method
type: DatatypeProperty
comment: Method used for measurement
domain: Vital Sign
range: string

Value String
type: DatatypeProperty
comment: String representation of a value for non-numeric results
range: string

Effective Date
type: DatatypeProperty
comment: Date/time when measurement or observation was taken
range: dateTime

Instructions
type: DatatypeProperty
comment: Patient instructions for taking the medication
domain: Medication
range: string

Start Date
type: DatatypeProperty
comment: Start date for medication or treatment
range: dateTime

End Date
type: DatatypeProperty
comment: End date for medication or treatment
range: dateTime

Allergy Type
type: DatatypeProperty
comment: Type of allergy (allergy vs intolerance)
domain: Allergy
range: string

Ordering Provider
type: DatatypeProperty
comment: Name of the clinician who ordered the laboratory test
domain: Lab Result
range: string

Performing Lab
type: DatatypeProperty
comment: Name of the laboratory that performed the test
domain: Lab Result
range: string

Observation Status
type: DatatypeProperty
comment: FHIR observation-status code: final, preliminary, amended, corrected, cancelled, entered-in-error. See http://hl7.org/fhir/observation-status
domain: Lab Result
range: string

Source Record ID
type: DatatypeProperty
comment: FHIR resource identifier from the source system for traceability
range: string

Panel Membership
type: ObjectProperty
comment: Back-reference from an individual lab result to the panel container (e.g., CMP, CBC) it belongs to. Uses fhir:hasMember on the panel side; this is the inverse link on the member side.
domain: Lab Result
range: Resource

Reference Range Low
type: DatatypeProperty
comment: Lower bound of normal reference range
domain: Lab Result
range: decimal

Reference Range High
type: DatatypeProperty
comment: Upper bound of normal reference range
domain: Lab Result
range: decimal

Reference Range Text
type: DatatypeProperty
comment: Reference range as descriptive text
domain: Lab Result
range: string

Issued Date
type: DatatypeProperty
comment: Date when the result was issued
domain: Lab Result
range: dateTime

Category
type: DatatypeProperty
comment: Category classification of the record
range: string

Notes
type: DatatypeProperty
comment: Additional notes or comments
range: string

Occurrence Date
type: DatatypeProperty
comment: Date when the immunization was administered
domain: Immunization
range: dateTime

Dose Quantity
type: DatatypeProperty
comment: Dose amount administered
domain: Immunization
range: string

CVX Code
type: DatatypeProperty
comment: CDC CVX vaccine code
domain: Immunization
range: string

Performed Date
type: DatatypeProperty
comment: Date when the procedure was performed
domain: Procedure
range: dateTime

Performed End Date
type: DatatypeProperty
comment: End date for procedures that span a period
domain: Procedure
range: dateTime

Location
type: DatatypeProperty
comment: Location where procedure was performed
domain: Procedure
range: string

Component 1 Name
type: DatatypeProperty
comment: Name of first vital sign component (e.g., Systolic)
domain: Vital Sign
range: string

Component 1 Value
type: DatatypeProperty
comment: Value of first vital sign component
domain: Vital Sign
range: decimal

Component 1 Unit
type: DatatypeProperty
comment: Unit for first vital sign component
domain: Vital Sign
range: string

Component 1 LOINC Code
type: DatatypeProperty
comment: LOINC code for first component
domain: Vital Sign
range: string

Component 2 Name
type: DatatypeProperty
comment: Name of second vital sign component (e.g., Diastolic)
domain: Vital Sign
range: string

Component 2 Value
type: DatatypeProperty
comment: Value of second vital sign component
domain: Vital Sign
range: decimal

Component 2 Unit
type: DatatypeProperty
comment: Unit for second vital sign component
domain: Vital Sign
range: string

Component 2 LOINC Code
type: DatatypeProperty
comment: LOINC code for second component
domain: Vital Sign
range: string

Canonical Name
type: DatatypeProperty
comment: Normalized drug name for the medication episode
domain: Medication Use Episode
range: string

Episode First Seen Date
type: DatatypeProperty
comment: Earliest CLINICAL date from source records (not import time)
domain: Medication Use Episode
range: dateTime

Episode Last Seen Date
type: DatatypeProperty
comment: Most recent CLINICAL date from source records
domain: Medication Use Episode
range: dateTime

Current Dose
type: DatatypeProperty
comment: Current dosage for the medication (most recent from sources)
domain: Medication Use Episode
range: string

Current Frequency
type: DatatypeProperty
comment: Current frequency of medication use
domain: Medication Use Episode
range: string

Current Route
type: DatatypeProperty
comment: Current route of administration
domain: Medication Use Episode
range: string

Inferred Status
type: DatatypeProperty
comment: Inferred active/inactive status (active, inactive)
domain: Medication Use Episode
range: string

Status Confidence
type: DatatypeProperty
comment: Confidence level for inferred status (high, medium, low)
domain: Medication Use Episode
range: string

Status Reason
type: DatatypeProperty
comment: Reason for status inference (explicitStatus, hasRecentEndDate, noRecentActivity, inferredFromRefills, userOverride)
domain: Medication Use Episode
range: string

Use Pattern
type: DatatypeProperty
comment: Pattern of medication use (chronic, shortCourse, oneTime, asNeeded, unknown)
domain: Medication Use Episode
range: string

Therapeutic Class
type: DatatypeProperty
comment: Therapeutic classification from ClinicalClassifier
domain: Medication Use Episode
range: string

Concept URI
type: ObjectProperty
comment: Stable URI for the medication concept (RxNorm URI, NDC URI, or minted Cascade URI)
domain: Medication Use Episode
range: Resource

Drug Code
type: ObjectProperty
comment: Drug code URI from any terminology system (RxNorm, NDC, SNOMED, ATC)
domain: Medication Use Episode
range: Resource

Derived From Record
type: ObjectProperty
comment: Links a longitudinal record (MedicationUseEpisode or LabTestSeries) to the source record(s) it was derived from
range: Entity
sub property of: wasDerivedFrom

Source External ID
type: DatatypeProperty
comment: External identifier from source system (FHIR resource ID, claim ID, etc.). Applicable to MedicationUseEpisode, LabTestSeries, and other longitudinal records.
range: string

Has Unresolved Conflicts
type: DatatypeProperty
comment: Flag indicating longitudinal record has data conflicts requiring user attention. Applicable to MedicationUseEpisode and LabTestSeries.
range: boolean

Duration Days
type: DatatypeProperty
comment: Duration of the episode in days
domain: Medication Use Episode
range: integer

Supplement Name
type: DatatypeProperty
comment: Name of the supplement or OTC product
domain: Supplement
range: string

Regulatory Status
type: DatatypeProperty
comment: Regulatory classification (dietarySupplement, otcDrug, homeopathic, herbalRemedy, unknown)
domain: Supplement
range: string

Evidence Strength
type: DatatypeProperty
comment: Level of clinical evidence (strongEvidence, moderateEvidence, limitedEvidence, traditionalUse, noEvidence, unknown)
domain: Supplement
range: string

Brand
type: DatatypeProperty
comment: Brand name of the supplement
domain: Supplement
range: string

Form
type: DatatypeProperty
comment: Physical form (capsule, tablet, softgel, liquid, powder, gummy, spray, patch, tea, tincture, other)
domain: Supplement
range: string

DSLD ID
type: DatatypeProperty
comment: NIH Dietary Supplement Label Database identifier
domain: Supplement
range: string

UPC
type: DatatypeProperty
comment: Universal Product Code (barcode)
domain: Supplement
range: string

Reason For Use
type: DatatypeProperty
comment: User-provided reason for taking the supplement
domain: Supplement
range: string

Cascade URI
type: ObjectProperty
comment: Stable Cascade Protocol identifier for the supplement
domain: Supplement
range: Resource

Dose
type: DatatypeProperty
comment: Dosage amount
range: string

Is Active
type: DatatypeProperty
comment: Whether the medication/supplement is currently active
range: boolean

Clinical Encounter
type: Class
comment: A clinical encounter — any interaction between a patient and a healthcare provider. Enables grouping of clinical events (procedures, observations, prescriptions) that occurred in the same visit context.
subclass of: Entity

Encounter Class
type: DatatypeProperty
domain: Clinical Encounter
range: string
comment: Values: ambulatory, emergency, inpatient, home-health

Encounter Status
type: DatatypeProperty
domain: Clinical Encounter
range: string
comment: Values: finished, in-progress, cancelled

Encounter Type
type: DatatypeProperty
domain: Clinical Encounter
range: string
comment: Display name from SNOMED/FHIR code

Encounter Start
type: DatatypeProperty
domain: Clinical Encounter
range: dateTime

Encounter End
type: DatatypeProperty
domain: Clinical Encounter
range: dateTime

Facility Name
type: DatatypeProperty
domain: Clinical Encounter
range: string

Medication Administration
type: Class
comment: A single administration event of a medication given at a specific time by a provider (e.g., IV antibiotics administered pre-surgery, vaccine injection at visit). Semantically distinct from clinical:Medication (ongoing prescription regimens): represents a one-time event, not an ongoing regimen.
subclass of: Entity

Administered Date
type: DatatypeProperty
domain: Medication Administration
range: dateTime

Administered Dose
type: DatatypeProperty
domain: Medication Administration
range: string
comment: e.g., '1g', '500mg'

Administered Route
type: DatatypeProperty
domain: Medication Administration
range: string
comment: Values: oral, IV, IM, subcutaneous, topical

Administration Status
type: DatatypeProperty
domain: Medication Administration
range: string
comment: Values: completed, not-done, in-progress

Implanted Device
type: Class
comment: A medical device implanted in or attached to the patient as a permanent part of their health profile (e.g., pacemaker, cardiac stent, cochlear implant, insulin pump). Presence affects medication safety, imaging eligibility (MRI contraindications), and surgical risk.
subclass of: Entity

Device Type
type: DatatypeProperty
domain: Implanted Device
range: string
comment: e.g., pacemaker, stent, cochlear-implant

Implant Date
type: DatatypeProperty
domain: Implanted Device
range: dateTime

Device Manufacturer
type: DatatypeProperty
domain: Implanted Device
range: string

UDI Carrier
type: DatatypeProperty
domain: Implanted Device
range: string
comment: Unique Device Identifier

Device Status
type: DatatypeProperty
domain: Implanted Device
range: string
comment: Values: active, inactive, entered-in-error

Imaging Study
type: Class
comment: Metadata record for a diagnostic imaging study (CT, MRI, X-ray, ultrasound). Records that imaging exists and its key characteristics without requiring access to DICOM images. Useful for clinical timeline, pre-procedure review, and agent reasoning about the patient's imaging history.
subclass of: Entity

Imaging Modality
type: DatatypeProperty
domain: Imaging Study
range: string
comment: Values: CT, MR, DX, US, NM

Study Description
type: DatatypeProperty
domain: Imaging Study
range: string

Number of Series
type: DatatypeProperty
domain: Imaging Study
range: integer

Study Date
type: DatatypeProperty
domain: Imaging Study
range: dateTime

DICOM Study UID
type: DatatypeProperty
domain: Imaging Study
range: string

Retrieve URL
type: DatatypeProperty
domain: Imaging Study
range: anyURI
comment: URL to DICOM server if available

Has Lab Result
type: ObjectProperty
comment: Links a LaboratoryReport panel to its constituent lab-result observations. Enables grouping of lab values (e.g., CBC components) under the ordering panel. FHIR alignment: fhir:DiagnosticReport.result. Range is health:LabResultRecord (v1.10): both importer paths (FHIR and C-CDA) type panel members health:LabResultRecord, so the range is corrected to match the serialized data rather than the never-emitted clinical:LabResult class. See the v1.10 changelog for the reasoning.
domain: Laboratory Report
range: LabResultRecord

Panel Name
type: DatatypeProperty
domain: Laboratory Report
range: string
comment: e.g., 'Complete Blood Count'

Report Category
type: DatatypeProperty
domain: Laboratory Report
range: string
comment: Values: LAB, RAD, PATH

Social History Record
type: Class
subclass of: HealthRecord
comment: An EHR-extracted social or behavioral history observation from a C-CDA Social History section. Distinct from health:SocialHistoryRecord (consumer-reported). Requires separate consent scope (cascade:SocialHistoryConsent) and pod path (social-history/). Subject to 42 CFR Part 2 for substance use records.
version info: Added in clinical v1.8

socialHistoryCategory
type: DatatypeProperty
domain: Social History Record
range: string
comment: Category of social history observation. Values: smokingStatus | alcoholUse | substanceUse | occupation | exercise | diet | sexualHistory | other

packsPerYear
type: DatatypeProperty
domain: Social History Record
range: decimal
comment: Pack-years of tobacco use (packs/day x years smoked). EHR-specific quantitative field.

alcoholDrinksPerWeek
type: DatatypeProperty
domain: Social History Record
range: decimal
comment: Average alcoholic drinks per week (quantitative EHR field).

occupationTitle
type: DatatypeProperty
domain: Social History Record
range: string
comment: Patient-reported occupation title from EHR social history section.

Has Encounter
type: ObjectProperty
comment: Links a clinical record to the clinical:Encounter (visit context) it occurred within. FHIR alignment: the .encounter element (Reference(Encounter)) carried by Observation, MedicationRequest, Condition, Procedure, DiagnosticReport, and DocumentReference. The domain is intentionally broad (any encounter-scoped clinical record), so it is left unrestricted here and constrained by SHACL rather than a restrictive rdfs:domain union, matching the style of other cross-class properties in this vocabulary.
range: Clinical Encounter

Indication Reference
type: ObjectProperty
comment: Links a clinical record to the condition (or observation) that is the clinical reason for it: the traversable edge alongside the free-text clinical:indication and clinical:reasonForUse literals, which are retained. FHIR alignment: the reasonReference element (Reference(Condition|Observation|...)), which FHIR R4 carries on Procedure, MedicationRequest, MedicationAdministration, Encounter, and other event resources (see https://hl7.org/fhir/R4/procedure-definitions.html#Procedure.reasonReference), folded into a .reason CodeableReference in R5. The domain is intentionally broad (any record that carries a clinical reason), so it is left unrestricted here and constrained by SHACL rather than a restrictive rdfs:domain union, matching clinical:hasEncounter and the other cross-class properties in this vocabulary. The range is left open (rdfs:Resource) because FHIR permits either a Condition or an Observation as the reason; the common case, and what the importer materializes, is a clinical:Condition. SHACL constrains the object to an IRI without committing the class.
range: Resource

Linked Condition
type: ObjectProperty
comment: Links a condition to a related condition by IRI (e.g. a complication to its root condition). The traversable RDF replacement for the deprecated clinical:linkedConditionIds literal. FHIR R4 core has no first-class condition-to-condition reference; the closest precedents are the condition-dueTo and condition-occurredFollowing extensions (http://hl7.org/fhir/StructureDefinition/condition-dueTo). This property keeps the generic linked semantics of its predecessor; a more specific relation can be added later if a use case needs it.
domain: Condition
range: Condition

Parsed Indication Reference
type: ObjectProperty
comment: An indication edge the importer DERIVED by parsing a coded or free-text reason the record carries (FHIR reasonCode, or a clinical:indication / clinical:reasonForUse literal) and matching it to a condition record in the same pod. It is a subproperty of clinical:indicationReference, so one traversal over the superproperty returns both stated and parsed indications, while the predicate itself remains the machine-readable basis: clinical:indicationReference proper restates an explicit reference the SOURCE carried (FHIR reasonReference), whereas this property records a match the importer computed. Consumers must present the two differently (e.g. 'Indication' vs 'Indication (from record text)') because a parsed match is only as good as the code or wording it matched on. Matching is code-first (exact coding-system + code identity against the condition's own code) with a normalized-name fallback, and an edge is written only when exactly one candidate matches; ambiguous and unmatched reasons are counted in the import report, never guessed. This property carries no confidence score: it is a deterministic parse of what the record already says, NOT an inference from structure, timing, or co-occurrence, which remain out of scope for the importer and are computed at query time instead.
sub property of: Indication Reference
range: Resource