Cascade Protocol Clinical Document Ontology
Vocabulary for clinical documents, narratives, and structured notes imported from EHR systems via Apple HealthKit
Domain-specific vocabulary for clinical documentation and structured records imported from patient portals (MyChart, Epic, etc.). Contains EHR-verified clinical data.
Clinical Document
Clinical documentation imported from EHR systems, including narratives and structured data
Clinical Section
Section within a clinical document (e.g., History of Present Illness, Assessment, Plan)
Clinical Narrative
Free-text clinical narrative extracted from FHIR text.div element
Progress Note
Provider progress note documenting a patient encounter
Discharge Summary
Hospital discharge summary document
Consultation Note
Specialist consultation note
Laboratory Report
Laboratory test results with narrative interpretation
Imaging Report
Radiology/imaging report with findings and impressions
Visit Summary
After-visit summary provided to patient
Medication
Medication record from EHR MedicationStatement or MedicationRequest resource
Allergy
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.
Deprecated in clinical v1.13; superseded by health:AllergyRecord
Lab Result
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.
Deprecated in clinical v1.13; superseded by health:LabResultRecord
Condition
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.
Deprecated in clinical v1.13; superseded by health:ConditionRecord
Immunization
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.
Deprecated in clinical v1.13; superseded by health:ImmunizationRecord
Procedure
Medical procedure record from EHR Procedure resource
Vital Sign
Vital sign observation (heart rate, blood pressure, etc.) from EHR
Medication Use Episode
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.
Supplement
Dietary supplement, OTC product, or herbal remedy with explicit regulatory status. Separate from Medication class due to different regulatory status and evidence requirements.
Lab Test Series
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.
Coverage Record
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.
Canonical Test Name
Normalized test name for the lab test series (e.g., 'Hemoglobin A1C')
Test LOINC Code
LOINC code identifying this test series (e.g., '4548-4' for HbA1c). All results in the series share this code.
Test Concept URI
Stable LOINC IRI for the test (e.g., loinc:4548-4). Enables linked-data interoperability.
Series Category
Lab category for the series (e.g., hematology, metabolic, lipid, thyroid). Maps to observation-category vocabulary.
First Result Date
Earliest clinical date from any source result in this series
Last Result Date
Most recent clinical date from any source result in this series
Result Count
Number of individual results in this series
Latest Value
Value of the most recent result in the series
Latest Unit
Unit of the most recent result (UCUM code)
Latest Interpretation
Interpretation code of the most recent result (FHIR v3-ObservationInterpretation: H, L, N, HH, LL, A, AA)
Trend Direction
Inferred trend direction: increasing, decreasing, stable, or insufficient_data
Trend Confidence
Confidence in the trend inference: high, medium, or low
Trend Reason
Explainable reason for the trend inference (e.g., '3-point upward trend over 18 months')
Has Abnormal History
Whether any result in the series was interpreted as abnormal or critical
Current Reference Range
Most recent reference range text (e.g., '4.0-5.6 %')
Current Reference Range Low
Lower bound of the most recent reference range
Current Reference Range High
Upper bound of the most recent reference range
Series Panel Membership
Reference to a panel (e.g., CMP, CBC) this test series is typically part of
Provider Name
Insurance company or plan provider name.
Member ID
Insurance member/subscriber identifier.
Group Number
Employer group number for employer-sponsored plans.
Plan Name
Name of the insurance plan.
Plan Type
Type of insurance plan: hmo, ppo, epo, pos, hdhp, medicare, medicaid, tricare, other.
Coverage Type
Classification of coverage: medical, dental, vision, prescription, mental_health.
Relationship
Beneficiary relationship to subscriber: self, spouse, child, parent, other.
Effective Period Start
Start date of coverage period.
Effective Period End
End date of coverage period.
Payor Name
Name of the organization paying for coverage.
Subscriber ID
Identifier for the policy holder from the insurer.
Imported At
ISO 8601 timestamp when document was imported from Apple Health
Source EHR
Name of the source EHR system (e.g., 'Epic MyChart', 'Cerner'). Applicable to ClinicalDocument, LabResult, and other EHR-sourced records.
Source Bundle ID
iOS app bundle identifier of the source (e.g., 'com.epic.mychart')
FHIR Resource ID
Original FHIR resource identifier from the source system
FHIR Resource Type
FHIR resource type (e.g., 'DiagnosticReport', 'Composition')
Document Date
Date the clinical document was created in the EHR
Encounter Date
Date of the clinical encounter this document relates to
Display Name
Human-readable display name from the EHR
Narrative Text
Plain text extracted from FHIR text.div element (HTML tags stripped)
Narrative XHTML
Original XHTML content from FHIR Narrative element
Raw FHIR Data
Base64-encoded original FHIR JSON/XML for lossless preservation
Has Section
Links a clinical document to its component sections
Section Code
LOINC code identifying the section type
Section Title
Human-readable section title (e.g., 'History of Present Illness')
Section Content
Plain text content of the section
Section Order
Integer indicating section order within the document
Record Date
Date the clinical record was created or observed
Status
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.
LOINC Code
LOINC code for the clinical concept
SNOMED Code
SNOMED CT code for the clinical concept
Drug Name
Name of the medication
Dosage
Dosage information for the medication
Route
Route of administration (oral, IV, etc.)
Frequency
How often medication is taken
RxNorm Code
RxNorm code for the medication
NDC Code
National Drug Code for the medication
Prescriber
Name of the prescribing physician
Indication
Clinical reason for the medication (why prescribed)
Course of Therapy Type
Prescribing workflow classification: acute (one-time/short), continuous (ongoing), or unknown
As Needed (PRN)
Whether medication is taken as needed rather than on a fixed schedule
Medication Form
Physical form of the medication (tablet, capsule, liquid, injection, etc.)
Active Ingredient
Primary active ingredient name
Ingredient Strength
Strength of the active ingredient (e.g. '5 mg per tablet')
Provenance Class
Source classification for editability: healthKitFHIR, userTracked, pharmacyClaim, or imported. Applicable to Medication, LabResult, and other clinical records.
Source FHIR Resource Type
Which FHIR resource type this record originated from
Clinical Intent
Clinical intent derived from source: reportedUse, prescribed, dispensed, or administered
Refills Allowed
Number of prescription refills authorized
Supply Duration Days
Number of days each fill is intended to supply
Dispensed Quantity
Quantity dispensed per fill (e.g. '90 tablets')
Prescription Category
Prescribing context: community, inpatient, or discharge
Administration Route
Route of administration: oral, intravenous, subcutaneous, intramuscular, topical, inhaled, etc.
Allergen
Name of the allergen or substance
Reaction
Description of the allergic reaction
Severity
Severity of the allergy (mild, moderate, severe)
Allergy Category
Category of allergy (food, medication, environment, biologic)
Criticality
Potential clinical harm (low, high, unable-to-assess)
Test Name
Name of the laboratory test
Value
Numeric or string value of the result
Unit
Unit of measurement for the value
Reference Range
Normal reference range for the test
Interpretation
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.
Interpretation Source Code
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.
Specimen Type
Type of specimen collected (blood, urine, etc.)
Condition Name
Name of the medical condition or diagnosis
Onset Date
Date when the condition began
Abatement Date
Date when the condition resolved
Clinical Status
Clinical status (active, recurrence, relapse, inactive, remission, resolved)
Verification Status
Verification status (unconfirmed, provisional, differential, confirmed, refuted)
ICD-10 Code
ICD-10-CM diagnosis code
Linked Condition IDs
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.
Vaccine Name
Name of the vaccine administered
Vaccine Code
CVX code for the vaccine (legacy — use clinical:cvxCode for new serialization; v1.6)
Lot Number
Vaccine lot number
Site
Body site where vaccine was administered
Dose Number
Dose number in a series (e.g., 1, 2, booster)
Manufacturer
Vaccine manufacturer
Expiration Date
Vaccine expiration date
Procedure Name
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; each step is its own vocabulary version. A consumer querying health:procedureName must add clinical:procedureName to its query now and can drop the health: term at that later version.
Canonical spelling restated, and the health: emission given a migration window, in clinical v1.15
Procedure Date
Date when the procedure was performed
Body Site
Body site where procedure was performed
Performer
Name or identifier of the procedure performer
CPT Code
CPT procedure code
Outcome
Outcome of the procedure
Procedure Status
FHIR event-status: preparation, in-progress, not-done, on-hold, stopped, completed, entered-in-error, unknown.
Procedure Category
Classification category of the procedure (e.g., surgical, diagnostic, counseling).
Procedure SNOMED Code
SNOMED CT concept code for the procedure.
Vital Type
Type of vital sign (heart_rate, blood_pressure, temperature, etc.)
Systolic Value
Systolic blood pressure value
Diastolic Value
Diastolic blood pressure value
Device Name
Name of the measuring device
Measurement Method
Method used for measurement
Value String
String representation of a value for non-numeric results
Effective Date
Date/time when measurement or observation was taken
Instructions
Patient instructions for taking the medication
Start Date
Start date for medication or treatment
End Date
End date for medication or treatment
Allergy Type
Type of allergy (allergy vs intolerance)
Ordering Provider
Name of the clinician who ordered the laboratory test
Performing Lab
Name of the laboratory that performed the test
Observation Status
FHIR observation-status code: final, preliminary, amended, corrected, cancelled, entered-in-error. See http://hl7.org/fhir/observation-status
Source Record ID
FHIR resource identifier from the source system for traceability
Panel Membership
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.
Reference Range Low
Lower bound of normal reference range
Reference Range High
Upper bound of normal reference range
Reference Range Text
Reference range as descriptive text
Issued Date
Date when the result was issued
Category
Category classification of the record
Notes
Additional notes or comments
Occurrence Date
Date when the immunization was administered
Dose Quantity
Dose amount administered
CVX Code
CDC CVX vaccine code
Performed Date
Performed End Date
End date for procedures that span a period
Location
Location where procedure was performed
Component 1 Name
Name of first vital sign component (e.g., Systolic)
Component 1 Value
Value of first vital sign component
Component 1 Unit
Unit for first vital sign component
Component 1 LOINC Code
LOINC code for first component
Component 2 Name
Name of second vital sign component (e.g., Diastolic)
Component 2 Value
Value of second vital sign component
Component 2 Unit
Unit for second vital sign component
Component 2 LOINC Code
LOINC code for second component
Canonical Name
Normalized drug name for the medication episode
Episode First Seen Date
Earliest CLINICAL date from source records (not import time)
Episode Last Seen Date
Most recent CLINICAL date from source records
Current Dose
Current dosage for the medication (most recent from sources)
Current Frequency
Current frequency of medication use
Current Route
Current route of administration
Inferred Status
Inferred active/inactive status (active, inactive)
Status Confidence
Confidence level for inferred status (high, medium, low)
Status Reason
Reason for status inference (explicitStatus, hasRecentEndDate, noRecentActivity, inferredFromRefills, userOverride)
Use Pattern
Pattern of medication use (chronic, shortCourse, oneTime, asNeeded, unknown)
Therapeutic Class
Therapeutic classification from ClinicalClassifier
Concept URI
Stable URI for the medication concept (RxNorm URI, NDC URI, or minted Cascade URI)
Drug Code
Drug code URI from any terminology system (RxNorm, NDC, SNOMED, ATC)
Derived From Record
Links a longitudinal record (MedicationUseEpisode or LabTestSeries) to the source record(s) it was derived from
Source External ID
External identifier from source system (FHIR resource ID, claim ID, etc.). Applicable to MedicationUseEpisode, LabTestSeries, and other longitudinal records.
Has Unresolved Conflicts
Flag indicating longitudinal record has data conflicts requiring user attention. Applicable to MedicationUseEpisode and LabTestSeries.
Duration Days
Duration of the episode in days
Supplement Name
Name of the supplement or OTC product
Regulatory Status
Regulatory classification (dietarySupplement, otcDrug, homeopathic, herbalRemedy, unknown)
Evidence Strength
Level of clinical evidence (strongEvidence, moderateEvidence, limitedEvidence, traditionalUse, noEvidence, unknown)
Brand
Brand name of the supplement
Form
Physical form (capsule, tablet, softgel, liquid, powder, gummy, spray, patch, tea, tincture, other)
DSLD ID
NIH Dietary Supplement Label Database identifier
UPC
Universal Product Code (barcode)
Reason For Use
User-provided reason for taking the supplement
Cascade URI
Stable Cascade Protocol identifier for the supplement
Dose
Dosage amount
Is Active
Whether the medication/supplement is currently active
Clinical Encounter
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.
Encounter Class
Values: ambulatory, emergency, inpatient, home-health
Encounter Status
Values: finished, in-progress, cancelled
Encounter Type
Display name from SNOMED/FHIR code
Encounter Start
Encounter End
Facility Name
Medication Administration
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.
Administered Date
Administered Dose
Administered Route
Values: oral, IV, IM, subcutaneous, topical
Administration Status
Values: completed, not-done, in-progress
Implanted Device
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.
Device Type
e.g., pacemaker, stent, cochlear-implant
Implant Date
Device Manufacturer
UDI Carrier
Unique Device Identifier
Device Status
Values: active, inactive, entered-in-error
Imaging Study
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.
Imaging Modality
Values: CT, MR, DX, US, NM
Study Description
Number of Series
Study Date
DICOM Study UID
Retrieve URL
URL to DICOM server if available
Has Lab Result
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.
Panel Name
e.g., 'Complete Blood Count'
Report Category
Values: LAB, RAD, PATH
Social History Record
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.
Category of social history observation. Values: smokingStatus | alcoholUse | substanceUse | occupation | exercise | diet | sexualHistory | other
Pack-years of tobacco use (packs/day x years smoked). EHR-specific quantitative field.
Average alcoholic drinks per week (quantitative EHR field).
Patient-reported occupation title from EHR social history section.
Has Encounter
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.
Indication Reference
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.
Linked Condition
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.
Parsed Indication Reference
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.