Skip to main content
A visit note is Elation’s record of a clinical encounter. In the hosted database each note is modeled as two tables: a record for the note itself and a set of rows for its content.
  • visit_note: one row per visit note, holding the note’s metadata (patient, practice, author, sign-off, and timing).
  • visit_note_bullet: one row per line of content within a note, joined to its note by visit_note_bullet.visit_note_id = visit_note.id.
For the full column list of every table mentioned here, see the hosted database schema reference.

Note content

A note’s content is stored as bullets in visit_note_bullet. Each bullet has:
  • a category naming the section it belongs to (Reason, HPI, Assessment, Plan, Orders, and so on),
  • a sequence giving its order within that section, and
  • an optional parent_bullet_id, since bullets can be nested under a parent.
A bullet carries its content in one of two ways. Most bullets hold typed prose directly in text: the narrative a clinician writes in sections like Reason, HPI, Assessment, and Plan. Other bullets instead reference a separate record (a placed order, an attached or referenced document, or a problem-list item); their text is empty because the content lives in that linked record rather than on the bullet.

How visit notes relate to other data

Visit notes connect to the wider data model through these relationships:

Orders placed from a note

Each order table carries two columns naming the note the order was placed from:
  • visit_note_id joins to visit_note.id.
  • non_visit_note_id joins to non_visit_note.id, for orders placed from a non-visit note such as a phone note.
Both columns are empty for an order created outside a note. The order tables are lab_order, med_order, discontinue_med_order, referral_order, and misc_orders (imaging, cardiac, sleep, and pulmonary orders). This returns the lab orders placed from each visit note:
This counts prescriptions placed outside any note:
  • Filter med_order.origin = 'rx' to count prescriptions. Rows with origin = 'surescripts' are imported medication history and never carry a note.
  • Count orders in misc_orders with count(distinct id). The table has one row per order for each test and diagnosis code on it.

Confidential notes

visit_note.confidential and non_visit_note.confidential are true when the note is marked confidential in the chart, and confidential_marked_by_user_id names the user who marked it. This lists confidential visit notes signed in a month:

Reading a note’s content

This returns every content line for a single note, in display order:
Bullets that reference a separate record (such as placed orders) return empty text; retrieve that content from the related tables described in How visit notes relate to other data. If you have any questions about this topic please reach out to Elation Support Portal with the subject line HDB - <your_question>