Packet Entry Excluded Page Extension¶
| Canonical | ../StructureDefinition/nexus-attachment-packet-excluded-page |
|---|---|
| Status | draft · 1.26.0 |
| Base | Extension (constraint) |
| Context | List.entry (element) |
| Source | FSH · JSON |
A page of this packet member that the assembler excluded from the outbound render. Repeats: one occurrence per excluded page, 1-based, counting pages of the member's rendered form as produced at assembly time. Page numbering is meaningful only relative to that render -- a different renderer may paginate the same member differently -- so these values record what the assembler chose rather than a durable re-rendering instruction. What the recipient actually received is the rendered document stored on send.
FSH
The authored source of truth: extensions/PacketEntryExcludedPageExtension.fsh (edit on GitHub). One FSH file may define several related artifacts.
// PacketEntryExcludedPageExtension.fsh
// Per-member assembly state on an attachment packet: which pages of THIS member the assembler
// left out. Rides on `List.entry`, one occurrence per excluded page.
//
// WHY THIS IS AN IG-DEFINED EXTENSION AND NOT A HOUSE ONE. A third-party consumer (Ocean) is
// named as a future reader of a packet, and a third party can only implement what is published.
// 1.22.0 moved the composition block extensions and UpdatedBy off services.well.com for exactly
// this reason -- so that a URI a partner meets resolves to a definition rather than to a hostname
// somebody once picked.
//
// WHY ONE OCCURRENCE PER PAGE RATHER THAN A RANGE STRING. A page-range expression ("2-4,7") is a
// second syntax this specification would have to define, and every reader would have to parse it
// identically to agree on what was sent. A repeating integer needs no parser, and a validator can
// check each value on its own. The cost is size: a forty-page member with thirty pages excluded
// carries thirty extensions. Accepted, because exclusions in practice are a handful of pages off
// the front or back of one member, and because the alternative trades a bounded size problem for
// an unbounded correctness one.
//
// WHAT A PAGE NUMBER MEANS, AND THE LIMIT OF IT. The number is 1-based and counts pages of the
// MEMBER'S RENDERED FORM as the assembling renderer produced it. That is well defined only
// relative to a render: a lab result is pages only once something has laid it out, and a
// different renderer -- or the same one after a template change -- can paginate it differently.
// So an exclusion recorded today is not a durable instruction for re-rendering the member
// tomorrow.
//
// THAT IS WHY THE SENT PDF IS STORED. The record of what actually went out is the rendered
// document stored on send, not a re-render of the packet: this extension says what the assembler
// chose, and the stored PDF says what the recipient received. Neither substitutes for the other,
// and a consumer that needs to know what was sent reads the PDF.
Extension: PacketEntryExcludedPageExtension
Id: nexus-attachment-packet-excluded-page
Title: "Packet Entry Excluded Page Extension"
Description: "A page of this packet member that the assembler excluded from the outbound render. Repeats: one occurrence per excluded page, 1-based, counting pages of the member's rendered form as produced at assembly time. Page numbering is meaningful only relative to that render -- a different renderer may paginate the same member differently -- so these values record what the assembler chose rather than a durable re-rendering instruction. What the recipient actually received is the rendered document stored on send."
* ^url = "../StructureDefinition/nexus-attachment-packet-excluded-page"
* ^status = #draft
* ^date = "2026-08-29"
* ^publisher = "WELLSTAR Technologies Corp."
* ^contact.name = "Nexus EMR FHIR Implementation Guide"
* ^contact.telecom.system = #url
* ^contact.telecom.value = ".."
* ^jurisdiction = urn:iso:std:iso:3166#CA "Canada"
* ^context[0].type = #element
* ^context[0].expression = "List.entry"
* . ^short = "A page of this member excluded from the outbound render (1-based; repeats)"
* extension 0..0
* url 1..1
* value[x] 1..1 MS
* value[x] only integer
* valueInteger ^short = "1-based page number, in the member's rendered form at assembly time"