Variable: WARNING_CODES
constWARNING_CODES:object
Stable string codes for every Tier-2 warning the record parser may emit.
key === value so Object.values(...) yields a stable snapshot set.
Type Declaration
ASTM_NONSTANDARD_DELIMITERS
readonlyASTM_NONSTANDARD_DELIMITERS:"ASTM_NONSTANDARD_DELIMITERS"="ASTM_NONSTANDARD_DELIMITERS"
The header declared delimiters other than the canonical H|\^&: tolerated, noted.
ASTM_RECORD_AMBIGUOUS_MESSAGE_KIND
readonlyASTM_RECORD_AMBIGUOUS_MESSAGE_KIND:"ASTM_RECORD_AMBIGUOUS_MESSAGE_KIND"="ASTM_RECORD_AMBIGUOUS_MESSAGE_KIND"
A message carried both a Q (request) and an R (result) record: a contradictory shape. The
message is classified host-query (the Q dominates, so it is never read as a result set) and
this warning flags the anomaly. Positional context only; no field value.
ASTM_RECORD_AMBIGUOUS_VALUE_SPLIT
readonlyASTM_RECORD_AMBIGUOUS_VALUE_SPLIT:"ASTM_RECORD_AMBIGUOUS_VALUE_SPLIT"="ASTM_RECORD_AMBIGUOUS_VALUE_SPLIT"
A result value field carried an unescaped component delimiter, so it split into more than one component. Both the full raw value and the split are surfaced and this warning fires: the ambiguity is never resolved silently into a truncated value.
ASTM_RECORD_DELIMITERS_REDECLARED
readonlyASTM_RECORD_DELIMITERS_REDECLARED:"ASTM_RECORD_DELIMITERS_REDECLARED"="ASTM_RECORD_DELIMITERS_REDECLARED"
A later H (header) record declared a different delimiter set from the one in force, and the
parser followed it: that header and every record after it are read with the newly-declared
delimiters, until the next H. Records already read keep the set that was in force when they were
read: a redeclaration never reinterprets bytes that have already been consumed.
A stream carrying several messages back to back is ordinary, and a header that simply repeats the delimiters already in force is a no-op that warns nothing. This code fires only when the set actually changes, because that is the point at which a reader still using the old set would begin merging fields together.
ASTM_RECORD_ORPHAN_COMMENT
readonlyASTM_RECORD_ORPHAN_COMMENT:"ASTM_RECORD_ORPHAN_COMMENT"="ASTM_RECORD_ORPHAN_COMMENT"
A C (comment) record had no valid preceding H/P/O/R parent: an orphan. The comment
is attached to the message root (attachedToRoot: true) and surfaced, never dropped.
ASTM_RECORD_PARTIAL_TIMESTAMP
readonlyASTM_RECORD_PARTIAL_TIMESTAMP:"ASTM_RECORD_PARTIAL_TIMESTAMP"="ASTM_RECORD_PARTIAL_TIMESTAMP"
A YYYYMMDDHHMMSS timestamp had an odd digit run that truncates a two-digit component in half
(e.g. a partial day/hour). The raw run is preserved and the structured value stops at the last
complete component: the dangling digit is never zero-filled into a fabricated time.
ASTM_RECORD_UNDEFINED_ABNORMAL_FLAG
readonlyASTM_RECORD_UNDEFINED_ABNORMAL_FLAG:"ASTM_RECORD_UNDEFINED_ABNORMAL_FLAG"="ASTM_RECORD_UNDEFINED_ABNORMAL_FLAG"
A result's abnormal-flag field (R field 7) carried a letter outside HL7 Table 0078. The flag is
surfaced as undefined: never dropped, and never coerced to normal (a clinical error).
ASTM_RECORD_UNDEFINED_RESULT_STATUS
readonlyASTM_RECORD_UNDEFINED_RESULT_STATUS:"ASTM_RECORD_UNDEFINED_RESULT_STATUS"="ASTM_RECORD_UNDEFINED_RESULT_STATUS"
A result's status field (R field 9) carried a letter that is not a recognized status. It is
surfaced as undefined and, like every non-F status, never reads as active-final.
ASTM_RECORD_UNINTERPRETED_QUERY_STATUS
readonlyASTM_RECORD_UNINTERPRETED_QUERY_STATUS:"ASTM_RECORD_UNINTERPRETED_QUERY_STATUS"="ASTM_RECORD_UNINTERPRETED_QUERY_STATUS"
A Q (request-information) record carried a request-information status code (field 13). The code
set is [OSS-derived / paywalled] with no publicly-groundable enumeration, so the parser
interprets none of them: the status is surfaced verbatim and this value-free warning flags that
it was passed through uninterpreted, never mapped to a guessed meaning.
ASTM_RECORD_UNITS_ABSENT
readonlyASTM_RECORD_UNITS_ABSENT:"ASTM_RECORD_UNITS_ABSENT"="ASTM_RECORD_UNITS_ABSENT"
A result carried a numeric value but no units (R field 5 empty). Units are vendor free text
(not UCUM); a missing unit is flagged here and never defaulted, guessed, or converted.
ASTM_RECORD_UNKNOWN_TYPE
readonlyASTM_RECORD_UNKNOWN_TYPE:"ASTM_RECORD_UNKNOWN_TYPE"="ASTM_RECORD_UNKNOWN_TYPE"
A record's type letter is not one of the modeled types: surfaced as an unsupported record.
ASTM_RECORD_UNPARSEABLE_REFERENCE_RANGE
readonlyASTM_RECORD_UNPARSEABLE_REFERENCE_RANGE:"ASTM_RECORD_UNPARSEABLE_REFERENCE_RANGE"="ASTM_RECORD_UNPARSEABLE_REFERENCE_RANGE"
A result's reference-range field (R field 6) did not match a recognized form (low-high,
<high, >low). The text is surfaced verbatim as unparsed: a bound is never fabricated.
ASTM_RECORD_UNREADABLE_REDECLARATION
readonlyASTM_RECORD_UNREADABLE_REDECLARATION:"ASTM_RECORD_UNREADABLE_REDECLARATION"="ASTM_RECORD_UNREADABLE_REDECLARATION"
A later H (header) record could not declare a usable delimiter set: it was too short, or the
field separator it named also appeared among the other three, leaving the four roles
indistinguishable. The delimiters already in force are kept and every record is still surfaced;
a set is never guessed and no record is dropped.
The same condition on the first header is unrecoverable and remains the
ASTM_RECORD_UNDECLARED_DELIMITERS fatal: there is no earlier set to fall back to.
ASTM_UNKNOWN_ESCAPE_SEQUENCE
readonlyASTM_UNKNOWN_ESCAPE_SEQUENCE:"ASTM_UNKNOWN_ESCAPE_SEQUENCE"="ASTM_UNKNOWN_ESCAPE_SEQUENCE"
An escape sequence body was not one of &F&/&S&/&R&/&E&: preserved verbatim.
PROFILE_QUIRK_APPLIED
readonlyPROFILE_QUIRK_APPLIED:"PROFILE_QUIRK_APPLIED"="PROFILE_QUIRK_APPLIED"
The downgraded form an active vendor AstmProfile produces from a deviation it expects
(see src/profiles/). The original warning is never dropped: its code moves to
AstmRecordWarning.toleratedCode, the warning is re-badged PROFILE_QUIRK_APPLIED with
expected: true and the tolerating profile named, so a consumer can filter known, grounded noise
while the fact of the deviation, and where it was, survives. A profile can only ever reach this
path for a non-safety-critical code (enforced at profile-definition time); a safety-critical
deviation (a result value, flag, status, patient identifier, code system, or a frame-integrity
warning) can never be tolerated, so it can never be re-badged here.
Example
import { parseAstmRecords, WARNING_CODES } from "@cosyte/astm";
const msg = parseAstmRecords("H|\\^&\rL|1\r");
msg.warnings.some((w) => w.code === WARNING_CODES.ASTM_RECORD_UNKNOWN_TYPE);