V2 Lengths Fast Track
This is a page of type Category:InM Closed Action Items.
V2 Lengths Fast Track
Opened 20080515 assigned: Dave Shaver
Description
20080509 Phoenix WGM Motion: Constitute a "Fast Track" task force to work towards the best presentation and highest quality presentation for the next ballot using the paper Frank O. presented as a starting point. JD/Frank 8-0-0
20080529 Telcon: The task force will form on SKYPE as well as this wiki. The target date for a decision is June 16 InM Telcon.
Contents
General
Candidate Recommendations
See the v2 lengths Open Discussion Document for detailed discussion.
- Do not report any lengths for composite data types or fields.
- lengths may only be asserted for primitive types, or fields/components where primitive types are used
- Document the use of a truncation character
- For each primitive data type, comment on whether truncation is fatal or merely dangerous (Applications SHALL respond with an error if truncation is fatal and their length is exceeded)
- document how length is determined (accounting for escape sequences etc)
- update documentation about length (incl inter-version compatibility rules)
- Define the following kinds of length that may be asserted:
- normative min and max - these lengths may never be violated in an instance
- informative min and max - a recommendation as to the expected min and max in a field. The recommendation must make clear the context in which it applies. More than one informative limit may be specified for different contexts
- conformance length. If specified, applications SHALL be capable of storing content to this length without truncation.
- make the consequences of the lengths clear to implementers
- make all existing lengths informative
- as time permits, go through the v2.7 standard making some lengths normative.
- making lengths normative requires convincing reason as the benefits of this action, and surety as to the consequences
- change backward compatibility rules so that it is clear that
- normative lengths may be introduced in a subsequent version of no normative lengths are defined.
- conformance length may be increased or reduced
- min length is always >= 1; min length may never be infinite ("*")
- max length is always >= min length
- in derived conforming profiles min length may be increased, max length decreased, but min <= max
Primitive types
v2.7 defines the following primitive types:
types which have a normative length assigned
- DT: length = 4..8
- DTM: length = 4..24
- TM: length = 2..16
DT, DTM and TM are not subject to the truncation pattern. They may be truncated as long as the truncated form is also a valid instance of the data type. Applications are warned that truncating these fields may be dangerous in a given context of use
- SI: length = 1..4
SI may never be truncated
- NM: length = 1..16
NM may have leading zero's or trailing significant digits truncated. The decimal point and any digits to the left of the decimal point may never be truncated
- GTS length = 1..199
GTS may never be truncated.
- IS: length = 1..20
IS is being phased out, and is not worth arguing about. We let the length limit stand.
types which never have a normative length restriction =
- FT
- TX
Implementation guides may specify a limit, but HL7 never does.
types which may have normative lengths assigned at the point of use
- ID
The length assigned to ID is derived based on the possible table values that it may hold. Best to assign this automagically if possible, but some tables include codes that specify patterns rather than actual codes, so the length is not auto-calculatable. An alternative is simply to fix the length to 1..20 normatively, and not make codes that are this long (longest currently known length is 13)
- ST
Length as assigned at the point of use. Existing uses are made informative (with the note that the length is the old normative length slated for review), and committees encouraged to review use to see if they wish to nominate normative or conformance lengths. INM to review Ch 2A as much as possible starting with the more common datatypes (CX, X*, HD, EI)