Extra fields
Lint rule that warns when a segment contains fields beyond the maximum sequence defined in its profile.
Lint rule that warns when a segment has more fields than its profile defines.
What it does
Flags a segment with more fields than the HL7v2 standard defines for it in the message's version. The rule reads profile context attached by @glion/annotate-profile-context. Segments without a known profile (for example Z-segments) are skipped.
Install
npm install @glion/lint-profile-extra-fieldsUse
import { hl7v2AnnotateProfileContext } from "@glion/annotate-profile-context";
import { hl7v2Parser } from "@glion/parser";
import hl7v2LintExtraFields from "@glion/lint-profile-extra-fields";
import { unified } from "unified";
import { reporter } from "vfile-reporter";
const message = [
"MSH|^~\\&|SENDER|FAC|RECV|RFAC|20250601120000||ADT^A01^ADT_A01|MSG00001|P|2.5",
"PID|1||PATID1234^^^HOSP^MR||DOE^JANE||19800101|F",
].join("\r");
const file = await unified()
.use(hl7v2Parser)
.use(hl7v2AnnotateProfileContext)
.use(hl7v2LintExtraFields)
.process(message);
console.error(reporter([file]));API
unified().use(hl7v2LintExtraFields)
A unified lint rule plugin. Takes no options.
Reports one message for each segment with too many fields, with the number of fields in actual.
import type { Plugin } from "unified";
import type { Root } from "@glion/ast";
declare const hl7v2LintExtraFields: Plugin<[], Root>;
export default hl7v2LintExtraFields;What it checks
A segment has at most as many fields as its profile defines. MSH in v2.5 ends at MSH-21, so it allows 21 fields.
Valid
MSH stops at MSH-12 (Version ID) and all fields are within the v2.5 definition:
MSH|^~\&|SENDER|FAC|RECV|RFAC|20250601120000||ADT^A01^ADT_A01|MSG00001|P|2.5
PID|1||PATID1234^^^HOSP^MR||DOE^JANE||19800101|FInvalid
MSH has 22 fields, one more than v2.5 defines:
MSH|^~\&|SENDER|FAC|RECV|RFAC|20250601120000||ADT^A01^ADT_A01|MSG00001|P|2.5||||||||||EXTRA
PID|1||PATID1234^^^HOSP^MR||DOE^JANE||19800101|FReported message:
The segment has 22 fields; it allows at most 21 fields.The version is taken from the annotated profile context. A segment is reported once, however many fields it has past its last.