Requisition Identity Snapshot Extension¶
| Canonical | ../StructureDefinition/nexus-requisition-identity |
|---|---|
| Status | draft · 1.26.0 |
| Base | Extension (constraint) |
| Context | ServiceRequest (element) |
| Source | FSH · JSON |
The patient and clinician identity a laboratory requisition was completed with -- the header of the printed sheet, as it stood when the form was filled in.
FSH
The authored source of truth: extensions/RequisitionIdentityExtension.fsh (edit on GitHub). One FSH file may define several related artifacts.
// RequisitionIdentityExtension.fsh
// The patient and clinician identity a laboratory requisition was COMPLETED with -- the header of
// the printed sheet, frozen at the moment it was filled in.
//
// WHY A SNAPSHOT AND NOT A LOOKUP. The requisition is an issued document. The form reads the
// record when it opens and owns those values from then on, so a sheet printed in June does not
// change because an address was corrected in August. Every other route to this information --
// `subject`, `requester`, the referenced Patient and Practitioner -- resolves to what the record
// says NOW. That is the right answer to a different question. This element answers "what did the
// paper say", which is the only question a reprint can be checked against.
//
// AND IT RECORDS CORRECTIONS. A clinician may correct a value on the form without writing the
// correction back to the chart. Storing the whole header, not only the corrected fields, is what
// lets a later reader tell a correction from an agreement: compare this against the record, and
// the fields that differ are the ones the clinician overrode.
//
// EVERY PART IS A STRING, INCLUDING THE ONES THAT LOOK TYPED. `birthDate` is a string, not a
// `date`. `sex` is a string, not a code. `province` is a string, not a jurisdiction code. These
// are transcriptions of boxes on a paper form, and a value that failed to parse would be dropped
// rather than reproduced -- which is precisely the loss this element exists to prevent. Parse them
// downstream if you must; do not expect them to have been parsed here.
//
// ONLY FIELDS THAT CARRY A VALUE ARE WRITTEN. A sparsely-known patient stores a short list rather
// than fifteen empty strings, so an absent child means "the form held nothing here", never "the
// form held a deliberate blank".
//
// NOT AN IDENTITY SOURCE. Nothing here was validated, and `healthNumber` in particular was not
// checked against a payer. It is what was typed onto a requisition. A consumer must not use it to
// identify, match or merge a patient; `ServiceRequest.subject` is the identity of record.
Extension: NexusRequisitionIdentity
Id: nexus-requisition-identity
Title: "Requisition Identity Snapshot Extension"
Description: """
The patient and clinician identity a laboratory requisition was completed with -- the header of the
printed sheet, as it stood when the form was filled in.
**A snapshot, not a lookup.** The form reads the record when it opens and owns those values from
then on. `subject`, `requester` and the resources they reference resolve to what the record says
now; this says what the paper said. A reprint is checked against this and nothing else.
**It also records corrections.** A clinician may correct a value on the form without writing the
correction back to the chart. The whole header is stored, not only the changed fields, so a later
reader can compare this against the record: the fields that differ are the ones that were
overridden.
**Every child is a string, including the ones that look typed.** `birthDate` is a string and not a
`date`; `sex` is a string and not a code; `province` is a string and not a jurisdiction code. They
are transcriptions of boxes on a paper form and are preserved exactly as typed, because a value
that failed to parse would be dropped rather than reproduced. Parse them downstream if you need to;
do not assume they have been parsed, validated or normalized here.
**Only the fields that carry a value are written.** An absent child means the form held nothing
there. It does not mean the form held a deliberate blank.
**Not an identity source.** Nothing here was validated, and `healthNumber` was not checked against
a payer. A consumer must not use this extension to identify, match or merge a patient --
`ServiceRequest.subject` is the identity of record.
**At most one, on the order only.** A requisition has one printed header, and the snapshot is not
echoed onto the `DiagnosticReport` the requisition eventually produces.
"""
* ^url = "../StructureDefinition/nexus-requisition-identity"
* ^status = #draft
* ^context[0].type = #element
* ^context[0].expression = "ServiceRequest"
* . ^short = "The printed header as the form held it -- patient and clinician identity, frozen at completion"
* value[x] 0..0
* extension contains
clinicianName 0..1 MS and
clinicAddress 0..1 and
billingNo 0..1 and
cpso 0..1 and
urgentPhone 0..1 and
lastName 0..1 MS and
firstName 0..1 MS and
middleName 0..1 and
healthNumber 0..1 MS and
healthNumberVersion 0..1 and
birthDate 0..1 MS and
sex 0..1 and
province 0..1 and
phone 0..1 and
address 0..1
* extension[clinicianName].value[x] only string
* extension[clinicianName] ^short = "Ordering clinician's name, as it printed on the signature line"
* extension[clinicAddress].value[x] only string
* extension[clinicAddress] ^short = "The clinic's address, as one unparsed free-text line"
* extension[clinicAddress] ^definition = "The clinic address as it printed on the requisition, held as a single unparsed string. It is not an `Address` datatype and was not matched against a location or organization record."
* extension[billingNo].value[x] only string
* extension[billingNo] ^short = "Clinician's billing (practitioner) number, as typed"
* extension[cpso].value[x] only string
* extension[cpso] ^short = "Clinician's college registration number, as typed"
* extension[cpso] ^definition = "The ordering clinician's college registration number exactly as typed onto the form. Free text: it carries no issuing-body system and was not validated against a college register."
* extension[urgentPhone].value[x] only string
* extension[urgentPhone] ^short = "Number a laboratory calls with a critical result, as typed"
* extension[lastName].value[x] only string
* extension[lastName] ^short = "Patient surname, as the form held it"
* extension[firstName].value[x] only string
* extension[firstName] ^short = "Patient given name, as the form held it"
* extension[middleName].value[x] only string
* extension[middleName] ^short = "Patient middle names, as the form held it"
* extension[healthNumber].value[x] only string
* extension[healthNumber] ^short = "Health number, as typed -- unvalidated, not an identity source"
* extension[healthNumber] ^definition = "The health number exactly as typed onto the requisition. It was not checked against a payer and carries no assigning-authority system. A consumer must not use it to identify, match or merge a patient."
* extension[healthNumberVersion].value[x] only string
* extension[healthNumberVersion] ^short = "Health card version code, as typed"
* extension[birthDate].value[x] only string
* extension[birthDate] ^short = "Date of birth as typed -- a string, NOT a FHIR `date`"
* extension[birthDate] ^definition = "The date of birth exactly as the form held it, preserved as a string rather than a FHIR `date`. It has not been parsed or normalized and is not guaranteed to be a valid date literal. Read `Patient.birthDate` through `ServiceRequest.subject` for the date of record."
* extension[sex].value[x] only string
* extension[sex] ^short = "Sex as the form marks it -- a string, NOT a coded value"
* extension[sex] ^definition = "Sex exactly as the requisition form marks it, preserved as free text. It is not bound to a value set and does not correspond to `Patient.gender` or to any administrative-gender code. Do not map it to one without inspecting the value."
* extension[province].value[x] only string
* extension[province] ^short = "Province that issued the health card, as typed -- not a jurisdiction code"
* extension[phone].value[x] only string
* extension[phone] ^short = "A number the clinic can reach the patient on, as typed"
* extension[address].value[x] only string
* extension[address] ^short = "Patient's address, as one unparsed free-text line"
* extension[address] ^definition = "The patient address as it printed on the requisition, held as a single unparsed string. It is not an `Address` datatype, was not parsed into parts, and was not validated."