The temporary, clinician-controlled bridge while official Epic integration is pending:
one living .SOMA36 protocol phrase sends bounded chart data into the
Epic 36-hour cockpit, while .SOMAPROGRESS35, .SOMAPROBLEM35,
and .DISPO5 carry the canonical progress note back to Epic.
.SOMA36 phrase,
populated Shuttle One cockpit, workstation compatibility path, and bounded
Shuttle Two helper without activating clinical capture.
Open Epic Shuttle program review →
/help/epic-smartphrase. No patient information is stored on this help page..SOMA36.
If you already have .SOMASNAPSHOT, edit that phrase and keep its existing
mnemonic. Do not keep both, and do not create .SOMAPROBE36. The protocol
markers—not the personal phrase name—identify the packet.
The marker scaffold is safe to copy. The six angle-bracket lines are instructions,
not installed SmartLinks: replace each one by inserting the named
SmartLink object through Epic's picker. Pasting raw @TOKEN@ text is never a
successful install. NOW, ID, VSRANGES,
MEDS, HPROBL, and LLCBC3 were observed in Avera,
but their rendered shape and time semantics remain uncommissioned until you confirm them.
The clipboard copy intentionally contains no raw @TOKEN@ strings. Insert
every SmartLink object manually, then remove every angle-bracket instruction before
rendering. A blank result, literal token, bare @@, or surviving instruction
fails that sensor.
SOMA36 (no leading dot), or open your existing SOMASNAPSHOT and replace its body. Paste the marker scaffold.@...@ representation.Shuttle One needs no Epic-side build and no helper: direct foreground paste is the available path. Shuttle Two is the next transport layer, not a prerequisite for completing the clinical workflow.
Preview is write-free. The server recomputes the exact 36 elapsed-hour projection and shows included, stale, quarantined, and conflicting source before anything is saved. Stale and quarantined text never reaches clinical parsing or Note Evolution.
Commit freezes the reviewed source. It first secures one immutable capture, then writes each clinical date independently, then projects only accepted evidence into Note Evolution with capture-linked provenance. A retry reconciles that ledger and runs only failed or unfinished dates/fragment projection; it does not duplicate completed work.
The cockpit recommends exactly one missing domain at a time. Public names below are candidates, not promises about Avera: broad labs (LAB24 or RESULTRCNT), I/O (IOBRIEF), imaging (RISIMP24H), and microbiology (MICRORESULTSLAST24HOURS). Keep each candidate UNVERIFIED IN YOUR BUILD until it renders in the same Epic context and you confirm its semantics. MAR and signed-note sensors remain local-build discoveries.
Once the living phrase works, send this narrower request to the Avera build team instead of asking them to implement guessed names.
if/else token.
Stage 1 is entirely in your hands today. Stages 2 and 3 need a builder ticket — this page gives you copy-ready request text for both.
Replace a visible wildcard only after the candidate SmartLink is tested in the Avera progress-note context for semantics, time window, compactness, and label behavior.
Rebuild DVT ppx and Code status as SDE-linked SmartLists so selections become auditable, reportable data — not just text in a note.
Use CER rules only to populate content inside Objective or the relevant A&P problem. Required fields remain present, including DVT ppx under therapeutic anticoagulation.
@CODESTATUS@ display has signed-note evidence; the new master itself must be
tested in the target Epic note context before sharing department-wide.
The strict structured phrase preserves every required v3.5 section and uses eleven visible F2 stops. Date of Service and Objective stay clinician-controlled until Avera validates compact, context-correct SmartLinks. The exact-note fast path pastes the complete canonical note as one normalized document without relocating sections.
DISPO5 — exactly that, no leading dot (Epic adds the dot). Build this one first: the master phrase references it by name, so it has to exist before the master phrase can nest it.*** exactly as triple-asterisk — Epic natively treats it as a fillable stop.SOMAPROBLEM35 from the repeatable problem block. Keep it standalone; invoke it as many times as the patient needs.SOMAPROGRESS35 from the structured master.HOSPPROGRESSPASTE35 from the exact-note fast path. It contains one wildcard and never relocates Date, Vitals, Chronic Stable, or Code status..somaprogress35. Confirm every canonical header appears in order and .DISPO5 unfolds at the bottom.@CODESTATUS@ resolves in this note type. If it renders literally or as bare @@, delete it and reinsert the matching SmartLink through Insert SmartLink.*** stop, Shift+F2 goes back..hospprogresspaste35. Copy full is enabled only when the canonical v3.5 structure is present.For section-level control with visible Epic sign-blocking stops:
.somaprogress35.None. Generated Disposition may contain only the supported fields, so an omitted Disposition value is not a rail placeholder; the static .DISPO5 phrase still leaves its physician-fillable *** stops for you to complete or clear before signing.@CODESTATUS@.Upgrade a wildcard only after the candidate output passes the Avera training-patient checks below. Index presence alone is not enough.
Paste the full somaNotes progress note here. Canonical v3.5 notes split into the exact eleven wildcard stops used by .SOMAPROGRESS35. Legacy headings are recognized only to help migrate old text; Copy full stays disabled until the canonical structure is present.
The deterministic copy gate checks exact headers and spacing, CC shape, one-paragraph Course Summary, three-paragraph Subjective, ordered Objective subsections, numbered A&P problem blocks with 1–4 supported actions (up to 6 for Worsening), one-line Chronic Stable, ASCII-safe text, and a final Disposition containing any supported subset of its five fields in canonical order. The bare final DISPOSITION heading may be empty; present fields may not be empty, duplicated, invented, or reordered. It is a paste-safety check, not a substitute for clinical review.
Runs entirely in this tab — nothing you paste is uploaded, stored, or logged. Reload the page and it's gone.
The Subjective stop receives all three required paragraphs. The Objective stop carries Vitals, timestamped Labs, optional Imaging/Microbiology/Pathology, and Exam in v3.5 order. The A&P stop preserves the opening synthesis plus any number of #n Problem [Status] blocks. Chronic Stable stays separate and must contain a pipe-delimited line or None. Date and Objective remain visible stops until Avera proves replacement SmartLinks in this note context.
First stop: number. Second: concise problem name. Third: exactly Worsening, Active, Improving, Stable, or Resolved. Fourth: a 2–4 sentence assessment. The static helper seeds two physician-fillable action rows for convenience, but generated problems need only one supported action; delete an unsupported extra row rather than padding it. Keep this helper standalone and invoke it repeatedly when authoring the A&P manually.
Built standalone so the canonical master can nest it. This static physician-fillable phrase intentionally keeps all five lines and every *** hard stop; generated rail output separately emits only supported Disposition fields. Under therapeutic anticoagulation, document that supported state as the DVT value rather than suppressing it.
Paste the complete canonical v3.5 note into one wildcard. This phrase intentionally adds no wrapper: moving Date, Vitals, Chronic Stable, or Code status outside the generated document would violate the immutable section order.
Copy full canonical note returns the normalized complete note. It never reconstructs the document from chunks and remains disabled for noncanonical legacy input.
The captured Avera index proves that a name exists, not that it renders the right semantics, time window, shape, or label in this progress-note context. The strict master therefore hardwires only @CODESTATUS@, which also has signed-note round-trip evidence.
This is a small fraction of what the build actually has. Treat it as a discovery list. Every candidate still needs a training-patient expansion test before it replaces a visible wildcard.
| Token | Evidence | v3.5 use |
|---|---|---|
| @CODESTATUS@ | Resolved in a signed note | Baseline display inside .DISPO5; still review before signing |
| .td / @TD@ | Exists; means today's date | Candidate only — not proven as represented Date of Service for late entries |
| .averavs / @AVERAVS@ | Exists; last vital set; multiline expansion observed | Excluded — wrong time scope and duplicated-label risk |
| .vsranges / @VSRANGES@ | Exists; indexed as 24-hour ranges | Candidate only — prove compact output and oxygen device first |
| .activediet / @ACTIVEDIET@ | Exists; full order-table expansion observed | Excluded — keep the one-line Diet wildcard |
| Pattern | Pulls |
|---|---|
| .llcbc1 / .llcbc3 | Last 1 / last 3 CBC results |
| .ll<lab>1 / .ll<lab>3 | Last 1 / last 3 results for any lab — swap in the lab name |
| .ll<lab>all (e.g. .llhgball) | Every result this admission — the trend view; right shape for Cr, Hgb, ANC across a stay |
The .LL family is an optional discovery aid, not part of the canonical baseline. Use a specific lab link only after its Avera expansion stays compact and preserves the Objective ordering; prune anything over the <5-lines rule below.
| Dot-phrase | Pulls | Note |
|---|---|---|
| .intakeoutput | Intake/output, last 3 shifts | Shift-windowed — sidesteps the Foundation IOBRIEF lookback gotcha |
| .ventsettings | Vent settings | The FLOW use case, pre-built |
| .lastwt3enc | Last weight | Dosing checks |
| .bsa | Body surface area | — |
| .meds | Current meds | This build's CMED |
| .avsmedlistplaintextcompact | Meds by frequency, compact plain text | Discharge-facing |
| .allergy · .prob · .hprobl | Allergies · problem list · hospital problem list | Match the Foundation names |
| .id · .name · .age · .dob · .sex · .los · .dol · .me · .now | Patient info / identity tokens | .id = name/age/sex one-liner |
@CODESTATUS@ doesn't appear in the SmartLink index, but it resolved correctly in a real signed note (2026-07-01) — the index isn't exhaustive, so a missing entry means "test it," not "it doesn't exist." Stage 2's SDE-linked confirmation SmartList remains the upgrade if we want the pick to file discrete data. The index also lists an Active Lines report (the LDA data) and a Sepsis Checklist — worth knowing they exist even though this template doesn't pull them.
The baseline wildcards are deliberate. Of the outbound fields, only @CODESTATUS@ has signed-note output proof. Treat every other captured name and catalog entry as a discovery lead until it expands correctly on a training patient in this exact progress-note context.
Promote a candidate into a *** stop only after checking its meaning, time window, timestamp, compactness, oxygen-device handling where relevant, and whether it prints its own label. Mnemonics, parameter order, identifiers, and context availability can vary by Epic build; use the in-note help text and insert/search tools rather than typing an identifier from this page into production.
Candidate family for the timestamped Labs subsection. A useful expansion is compact, visibly dated, and limited to decision-relevant trends. LABRCNT may produce a columns-by-date panel, but the exact rendered shape and parameters still require an Avera training-patient test.
Site-specific: the other mnemonics in this family don't have a publicly documented bracket order — type the dot-command in Epic and read the help text for your build. Which labs you're pulling is selected by base name, and base names are curated per-org; ask your informatics team whether a base-name reference already exists internally before guessing.
Virtually everything nursing charts — individual vital-sign components, neuro checks, drain/wound output, vent settings, glucose/insulin, telemetry, I/O — lives in flowsheet rows. This is the correct tool for anything more granular than the single @AVERAVS@ block.
Site-specific: row IDs above (5, 6, 301050, 12345...) are illustrative — not yours. Find your FLO IDs via the .FLOW+Tab lookup (newer Epic versions), the Report & Print Group Assistant's "Debug Print Group" (Epic button → Help → Help Desk Reports), or right-click a flowsheet cell → Properties.
Lookback gotcha: time-window links like IOBRIEF/IODETAILS default to a window ending "now" — a note written at 10 AM gives a 10 AM–10 AM window unless your build team hardcodes a start time (e.g. 0700). This is the usual cause of "why is my I/O only 3 hours" complaints, and it's a build fix, not a workflow fix.
There is no dedicated @LDA@ token. LDAs (vascular lines, drains including chest tubes/stents, airways, wounds/burns) are flowsheet groups — placement date, removal date, gauge, and location live once on the flowsheet data record for the LDA's first day; day-to-day assessments behave like normal flowsheet rows. Surface them via FLOW against the LDA group/row IDs, or via PRINTGROUP (HHS 35008).
Anti-bloat note: line-day/device-day counts for CLABSI/CAUTI compliance are normally computed in Reporting Workbench/Clarity, not a note SmartLink — printing a raw line-day count in every progress note adds volume without discrete value. Pull line + placement date only where it's actually decision-relevant, e.g. "day 6 central line, no CLABSI signs — plan to remove."
Pulls the radiology impression only, not the full report — exactly the right granularity for a progress note. Typed literally, e.g. @RISIMP72H@.
Surfaces discrete organism/susceptibility data your LLM would otherwise have to summarize from free text — high-value for ID-heavy and neutropenic-fever patients.
Current med list. Home/admission/discharge/changed-since variants are commonly built but are site-named — confirm your build's exact mnemonics rather than assuming @HMEDS@/@DCMEDS@ exist under those names.
A plain SmartList only inserts text. It becomes a discrete-data capture tool when its record has "use discrete data" enabled and its options are mapped to a SmartData Element (SDE — HLX master file; values stored in HLV). This is the mechanism that turns a VTE-ppx or code-status pick into reportable, auditable data instead of dead text in a note — and it's the clearest safety/quality payoff of anything on this page, since code-status confirmation and VTE prophylaxis are Joint Commission core-measure territory.
Mechanical constraint: an SDE cannot link directly to a SmartPhrase — the phrase must contain an SDE-linked SmartList (or a SmartForm/NoteWriter block) to actually file discrete data.
For a value already captured elsewhere in the chart that you just want to display inline (not re-capture), the retrieval tools are CUIPAT (patient-level), CUIENC (encounter-level), and CUIEPI (episode-level), with option flags N (label only if a value exists), L (always show label), M (message if no value), and B (break to a new line only if data exists — lets you stack several SDE links without blank-line gaps). DBLINK retrieves arbitrary master-file items. These are builder-level tools, illustrated (not literal for your build) below:
Copy-ready request for your informatics/Bridges team:
Epic has no inline .if/.el/.end or @if@...@else@...@endif@ token inside SmartPhrases or SmartText. Branching output is delivered only through CER-rule-driven SmartLinks:
RULESMARTLINK / RULESMARTLINKREFRESH (HHS 60402 / 60404) — displays information based on a rule record. Documented parameters, verbatim: "Parameter 1 - Enter the ID number of the rule to evaluate. Parameter 2 - Enter the mnemonic of the SmartLink to display if the rule is true. Parameter 3 - Enter the mnemonic of the SmartLink to display if the rule is false," plus formatting flags in parameters 4–7.CERMSG / CERMSGREFRESH (HHS 64343 / 14042) — evaluates one or more CER rules and returns either the rule's error message or specified SmartTexts.A CER rule is a configurable rule-logic record evaluated as TRUE/FALSE. Building rules (CER) and new SmartLinks (HHS) is typically restricted to project-team members — you'll need physician-builder access or your informatics/Bridges team, and every rule should be validated with the Rule Tester before it goes live.
Lower-effort partial conditionality that doesn't need a CER rule: SDE display flags can self-suppress optional content inside an existing section. They must never suppress one of the five required Disposition lines.
Copy-ready request for your informatics/Bridges team:
If you want to own this logic directly instead of ticketing it every time, Epic Physician Builder certification (e.g. CLN150-level coursework) is the fastest route — it's the credential that grants CER-rule and HHS SmartLink build access.
The same anti-boilerplate discipline that governs somaNotes' own generated text (nothing ungrounded, nothing the doctor didn't ask for) applies to the Epic side of this template too:
M/B flags from Stage 2) instead of printing "none" or "n/a" on every field, every note.| somaNotes section | Epic element | Type | Stage |
|---|---|---|---|
| Hospitalist title | static text | Static | 0 — exact canonical title |
| Date of Service | *** | Clinician-controlled stop | 0 — @TD@ remains a late-entry candidate, not baseline |
| CC | *** | AI paste zone | 0 — one canonical line |
| Brief Hospital Course Summary | *** | AI paste zone | 0 — stateful narrative through yesterday |
| Three-paragraph Subjective | *** | Multiline paste zone | 0 — keep all three paragraphs together |
| Objective 4A–4D | *** | Multiline paste zone | 0 — Vitals, Labs, optional 4C, Exam stay ordered |
| A&P opening + #n problems | *** / .SOMAPROBLEM35 | Multiline paste zone | 0 — arbitrary problem count |
| Chronic Stable Conditions | *** | Separate required stop | 0 — pipe-delimited line or None |
| DVT ppx | *** → SmartList → SDE-linked SmartList | SmartList | 2 — Joint Commission core measure |
| Code status (display) | @CODESTATUS@ | SmartLink | 0 — verified in a signed note (not in the index) |
| Code status (confirmation) | SDE-linked SmartList | SmartList | 2 — auditable attestation |
| Diet | *** | AI paste zone | 0 — @ACTIVEDIET@ demoted: dumps a full order table (seen in signed note) |
| Dispo, Follow-ups | *** | AI paste zone | 0 — clinical judgment, can't be discrete |
| Therapeutic anticoagulation | DVT value / SDE-linked SmartList | Required field value | 2 — never suppress the DVT line |
| ICU/onco conditional content | RULESMARTLINK + CER rule | In-section only | 3 — Objective or relevant A&P problem |
.LASTLAB, .FLOW) and read the *** HELP TEXT *** it returns — it lists your build's exact parameters.. plus a few letters to search available SmartLinks. Check the link's available contexts — a link that renders as bare @@ isn't evaluating in that context; make it available to all contexts if you need it everywhere..FLOW+Tab picker (newer Epic versions), the Report & Print Group Assistant's "Debug Print Group," or right-click a flowsheet cell → Properties.category: / sws: search syntax)..DISPO5, click into the DVT ppx wildcard, use the toolbar's Insert SmartList, search "VTE prophylaxis" or "DVT," pick our build's list. Epic resolves the real ID — you never type one.{F2/Delete: ...} instructions that must be removed before signing. Reduced notes using any lab SmartLink from 90.2% to 15.3% (admission notes) and 92.6% to 17.8% (progress notes), with an 18.7% character-count reduction in progress notes (p<0.001).DocumentReference create endpoint to backend apps registered through Epic App Orchard / Epic on FHIR, with OAuth2 credentials issued by your hospital's Epic interface (Bridges) team after a security review — a backend + hospital-IT governance project measured in weeks to months. This SmartPhrase pair, plus the Stage 1–3 roadmap above, is the legitimate bridge in the meantime.