@cosyte/x12 0.0.10 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -141,7 +141,9 @@ var WARNING_CODES = {
141
141
  X12_834_UNKNOWN_MAINTENANCE_TYPE: "X12_834_UNKNOWN_MAINTENANCE_TYPE",
142
142
  X12_UNPARSEABLE_DECIMAL: "X12_UNPARSEABLE_DECIMAL",
143
143
  X12_837_SERVICE_LINE_NOT_DECODED: "X12_837_SERVICE_LINE_NOT_DECODED",
144
- X12_837_SERVICE_LINE_DROPPED: "X12_837_SERVICE_LINE_DROPPED"
144
+ X12_837_SERVICE_LINE_DROPPED: "X12_837_SERVICE_LINE_DROPPED",
145
+ X12_837_SERVICE_SEGMENT_WITHOUT_LX: "X12_837_SERVICE_SEGMENT_WITHOUT_LX",
146
+ X12_837_ENTITY_SEGMENT_DISCARDED_AFTER_LX: "X12_837_ENTITY_SEGMENT_DISCARDED_AFTER_LX"
145
147
  };
146
148
  var CONTROL_NUMBER_PAIRS = {
147
149
  /** ISA-13 against IEA-02. */
@@ -217,7 +219,9 @@ var WARNING_MESSAGES = {
217
219
  X12_834_UNKNOWN_MAINTENANCE_TYPE: "Unknown 834 maintenance type: the INS-03/HD-01 code is outside the bundled snapshot. The verbatim code is preserved on the enrollment and the action is NEVER inferred.",
218
220
  X12_UNPARSEABLE_DECIMAL: "Unparseable decimal: the element at `position.elementIndex` held bytes this library could not decode as a decimal, so NO value was decoded from it. Whatever occupies that slot on the model, including 0 and undefined, is a stand-in and is NOT a value the sender supplied. The verbatim bytes are preserved on the segment; read them there before acting on the amount, quantity or percent.",
219
221
  X12_837_SERVICE_LINE_NOT_DECODED: "837 service line with no decoded service segment: the Loop 2400 line opened at `position.segmentIndex` is followed by no SV1 / SV2 / SV3 matching the variant this submission resolved to, so NOTHING carried by the service segment was read. The line's `charge` and `units` hold 0 as a stand-in and are NOT values the sender supplied; its procedure code, modifiers, unit of measure and place of service are equally undecoded. Two common causes: the line carries no SVx at all, or it carries one for a different 837 variant than ST-03 (or the caller's `type` option) named. Which side is wrong is NOT decided here, because a caller-supplied `type` can disagree with a perfectly conformant document. The verbatim segments are preserved on the transaction set; read them there before acting on the charge or the quantity.",
220
- X12_837_SERVICE_LINE_DROPPED: "837 service line dropped from the typed model: the LX at `position.segmentIndex` opened no Loop 2400, so no line appears on any claim's `serviceLines` for it and the SV1 / SV2 / SV3 that followed - its charge, units, procedure code and modifiers - was read into nothing. Compare `X12_837_SERVICE_LINE_NOT_DECODED`, where the line IS on the model and only its service segment went unread. Two causes: no Loop 2300 (CLM) is open at this LX, so there is no claim to attach a line to; or the submission's variant is not one of P / I / D, so no variant-specific line shape could be built. Read `submission.variant` and `submission.claims` to tell them apart; do NOT expect `X12_837_UNKNOWN_VARIANT` alongside this code, because a caller-supplied `type` outside P / I / D reaches the second cause without it. Nothing is fabricated to stand in for the missing line and no claim is synthesized. What becomes of a DTP / AMT / NTE / REF that follows the dropped LX depends on the route and this message does not say; see KNOWN-LIMITATIONS.md. The verbatim segments are preserved on the transaction set; read them there before concluding the claim had no service lines."
222
+ X12_837_SERVICE_LINE_DROPPED: "837 service line dropped from the typed model: the LX at `position.segmentIndex` opened no Loop 2400, so no line appears on any claim's `serviceLines` for it and the SV1 / SV2 / SV3 that followed - its charge, units, procedure code and modifiers - was read into nothing. Compare `X12_837_SERVICE_LINE_NOT_DECODED`, where the line IS on the model and only its service segment went unread. Two causes: no Loop 2300 (CLM) is open at this LX, so there is no claim to attach a line to; or the submission's variant is not one of P / I / D, so no variant-specific line shape could be built. Read `submission.variant` and `submission.claims` to tell them apart; do NOT expect `X12_837_UNKNOWN_VARIANT` alongside this code, because a caller-supplied `type` outside P / I / D reaches the second cause without it. Nothing is fabricated to stand in for the missing line and no claim is synthesized. What becomes of a DTP / AMT / NTE / REF that follows the dropped LX depends on the route and this message does not say; see KNOWN-LIMITATIONS.md. The verbatim segments are preserved on the transaction set; read them there before concluding the claim had no service lines.",
223
+ X12_837_SERVICE_SEGMENT_WITHOUT_LX: "837 service segment with no Loop 2400 to read it into: no service line was open at the SV1 / SV2 / SV3 at `position.segmentIndex`, so NOTHING it carries - its charge, units, procedure code, modifiers, unit of measure and place of service - was read. Read that literally: an LX may well appear earlier in the transaction, and what this reports is that none of them had opened a Loop 2400 still current at this segment. No line appears on any claim's `serviceLines` for it and nothing is fabricated to stand in. Compare the two codes anchored at an LX: `X12_837_SERVICE_LINE_DROPPED`, where an LX IS present and opened no line, and `X12_837_SERVICE_LINE_NOT_DECODED`, where the line is on the model and only its service segment went unread. Neither of those can report the SAME service segment as this code, because both are raised at an LX and this one only where no Loop 2400 is open; a document with several claims can still carry all three. This says NOTHING about how the submission's variant resolved: absent a caller-supplied `type` option, and where ST-03 names no known implementation convention, the reader falls back to the first SV1 / SV2 / SV3 in the transaction, and a segment reported here is eligible for that fallback like any other, so a stray one can decide the variant every line is read against. Read `submission.variant`. The verbatim segments are preserved on the transaction set; read them there before concluding the claim had no service lines.",
224
+ X12_837_ENTITY_SEGMENT_DISCARDED_AFTER_LX: "837 entity segment read into nothing after a dropped LX: the N3 / N4 / PER / REF at `position.segmentIndex` arrived while no entity loop was open, because an earlier LX in this transaction opened no Loop 2400 (no CLM was open at it) and closed the entity loop that was current there. NOTHING this segment carries reached the model: no party's `address`, `contacts` or `references` was written from it, and no party, claim or line was synthesized to hold it. This is the code that names THAT loss; `X12_837_SERVICE_LINE_DROPPED` is raised at the LX itself and names the SERVICE LINE's loss, never an entity segment, so the two report different things about the same stretch of the document. Read the bound literally, because this code does NOT report every unattached entity segment: it reports one discarded after such an LX and only while nothing since has opened a new loop, so an N3 / N4 / PER / REF that reaches no party by any other route is still silent, and one arriving after a later NM1 is outside this code's scope, whether or not this reader surfaces that segment kind on that party. It reports that the segment reached NO party; it does not claim it would have reached one had the LX been absent, because this reader does not surface every one of these segment kinds on every party (a PER on a patient or a pay-to address, for one). Which party a segment following a stray LX belongs to is not derivable from the TR3s in either direction, so it is discarded rather than attributed: see KNOWN-LIMITATIONS.md. The verbatim segments are preserved on the transaction set; read them there before concluding a party had no address, no secondary identifier or no contact."
221
225
  };
222
226
  var ALL_WARNING_MESSAGES = new Set(
223
227
  Object.values(WARNING_MESSAGES)
@@ -392,6 +396,20 @@ function serviceLineDropped(position) {
392
396
  position
393
397
  };
394
398
  }
399
+ function serviceSegmentWithoutLx(position) {
400
+ return {
401
+ code: WARNING_CODES.X12_837_SERVICE_SEGMENT_WITHOUT_LX,
402
+ message: WARNING_MESSAGES.X12_837_SERVICE_SEGMENT_WITHOUT_LX,
403
+ position
404
+ };
405
+ }
406
+ function entitySegmentDiscardedAfterLx(position) {
407
+ return {
408
+ code: WARNING_CODES.X12_837_ENTITY_SEGMENT_DISCARDED_AFTER_LX,
409
+ message: WARNING_MESSAGES.X12_837_ENTITY_SEGMENT_DISCARDED_AFTER_LX,
410
+ position
411
+ };
412
+ }
395
413
  function unknownClaimStatusCategory(position) {
396
414
  return {
397
415
  code: WARNING_CODES.X12_UNKNOWN_CLAIM_STATUS_CATEGORY,
@@ -2526,7 +2544,7 @@ function renderCallerJson(value) {
2526
2544
  var NONE = Object.freeze([]);
2527
2545
  function describeShape(value) {
2528
2546
  if (typeof value !== "object") {
2529
- return `a ${typeof value} (${renderCallerValue(value)})`;
2547
+ return `a ${typeof value}`;
2530
2548
  }
2531
2549
  let length;
2532
2550
  try {
@@ -2563,7 +2581,7 @@ function describeCallerDecimal(value) {
2563
2581
  const type = typeof value;
2564
2582
  if (type === "object") return Array.isArray(value) ? "an array" : "an object";
2565
2583
  if (type === "function") return "a function";
2566
- return `a ${type} (${renderCallerValue(value)})`;
2584
+ return `a ${type}`;
2567
2585
  }
2568
2586
  function requireCallerDecimal(value, at, refuse) {
2569
2587
  if (value instanceof X12Decimal) return value;
@@ -2573,19 +2591,20 @@ function requireCallerDecimal(value, at, refuse) {
2573
2591
  }
2574
2592
 
2575
2593
  // src/builder/caller-segment.ts
2594
+ var SEGMENT_ID_RE2 = /^[A-Z][A-Z0-9]{1,2}$/u;
2576
2595
  function describeSegmentValue(value) {
2577
2596
  if (value === null) return "null";
2578
2597
  if (value === void 0) return "undefined";
2579
2598
  const type = typeof value;
2580
2599
  if (type === "object") return Array.isArray(value) ? "an array" : "an object";
2581
2600
  if (type === "function") return "a function";
2582
- return `a ${type} (${renderCallerValue(value)})`;
2601
+ return `a ${type}`;
2583
2602
  }
2584
2603
  function locateSlot(parts, index) {
2585
2604
  const id = parts[0];
2586
2605
  const position = String(index).padStart(2, "0");
2587
- if (typeof id !== "string" || id.length === 0) return `element ${String(index)}`;
2588
- return `${renderCallerValue(id)}-${position}`;
2606
+ if (typeof id !== "string" || !SEGMENT_ID_RE2.test(id)) return `element ${String(index)}`;
2607
+ return `"${id}"-${position}`;
2589
2608
  }
2590
2609
  function requireCallerSegment(parts, at, refuse) {
2591
2610
  let index = 0;
@@ -2606,7 +2625,7 @@ function describeCallerValue(value) {
2606
2625
  const type = typeof value;
2607
2626
  if (type === "object") return Array.isArray(value) ? "an array" : "an object";
2608
2627
  if (type === "function") return "a function";
2609
- return `a ${type} (${renderCallerValue(value)})`;
2628
+ return `a ${type}`;
2610
2629
  }
2611
2630
  function requireCallerString(value, at, refuse) {
2612
2631
  if (typeof value === "string") return value;
@@ -3267,7 +3286,7 @@ function get837Claims(delimiters, tx, opts) {
3267
3286
  }
3268
3287
  const variant = explicitType ?? variantFromIcr ?? variantFromSegment ?? "unknown";
3269
3288
  if (variant === "unknown") {
3270
- warnings.push(unknown837Variant({ segmentIndex: 1, transactionIndex: 0 }));
3289
+ warnings.push(unknown837Variant({ segmentIndex: 0, transactionIndex: 0 }));
3271
3290
  }
3272
3291
  const hierarchies = [];
3273
3292
  const hlIndex = /* @__PURE__ */ new Map();
@@ -3290,7 +3309,9 @@ function get837Claims(delimiters, tx, opts) {
3290
3309
  let currentOtherSubscriber;
3291
3310
  let currentAdjudication;
3292
3311
  let context = { kind: "header" };
3312
+ let droppedLineReported = false;
3293
3313
  let activeEntity;
3314
+ let entityLoopClosedByStrayLx = false;
3294
3315
  const flushAdjudication = () => {
3295
3316
  if (currentAdjudication !== void 0 && currentServiceLine !== void 0) {
3296
3317
  currentServiceLine.adjudications.push(freezeAdjudication(currentAdjudication));
@@ -3306,6 +3327,15 @@ function get837Claims(delimiters, tx, opts) {
3306
3327
  currentClaim.serviceLines.push(freezeServiceLine2(currentServiceLine));
3307
3328
  }
3308
3329
  currentServiceLine = void 0;
3330
+ droppedLineReported = false;
3331
+ };
3332
+ const reportOrphanServiceSegment = (position) => {
3333
+ if (droppedLineReported) return;
3334
+ warnings.push(serviceSegmentWithoutLx(position));
3335
+ };
3336
+ const reportDiscardedEntitySegment = (position) => {
3337
+ if (!entityLoopClosedByStrayLx) return;
3338
+ warnings.push(entitySegmentDiscardedAfterLx(position));
3309
3339
  };
3310
3340
  const flushOtherSubscriber = () => {
3311
3341
  if (currentOtherSubscriber !== void 0 && currentClaim !== void 0) {
@@ -3409,6 +3439,7 @@ function get837Claims(delimiters, tx, opts) {
3409
3439
  context = { kind: "header" };
3410
3440
  }
3411
3441
  activeEntity = void 0;
3442
+ entityLoopClosedByStrayLx = false;
3412
3443
  break;
3413
3444
  }
3414
3445
  case "SBR": {
@@ -3425,6 +3456,7 @@ function get837Claims(delimiters, tx, opts) {
3425
3456
  otherPayer: void 0
3426
3457
  };
3427
3458
  activeEntity = { kind: "otherSubscriber" };
3459
+ entityLoopClosedByStrayLx = false;
3428
3460
  }
3429
3461
  break;
3430
3462
  }
@@ -3440,6 +3472,7 @@ function get837Claims(delimiters, tx, opts) {
3440
3472
  case "NM1": {
3441
3473
  const qualifier = elementValue(seg, 1, delimiters);
3442
3474
  const entity = decodeNm12(seg, delimiters);
3475
+ entityLoopClosedByStrayLx = false;
3443
3476
  if (qualifier === NM1_QUALIFIERS.SUBMITTER) {
3444
3477
  submitter = entity;
3445
3478
  activeEntity = { kind: "submitter" };
@@ -3484,16 +3517,19 @@ function get837Claims(delimiters, tx, opts) {
3484
3517
  case "N3": {
3485
3518
  const lines = collectElementValues(seg, 1, 2, delimiters);
3486
3519
  attachAddressLines(lines, activeEntity, entityMutators);
3520
+ reportDiscardedEntitySegment(position);
3487
3521
  break;
3488
3522
  }
3489
3523
  case "N4": {
3490
3524
  const partial = decodeN42(seg, delimiters);
3491
3525
  attachAddressFields(partial, activeEntity, entityMutators);
3526
+ reportDiscardedEntitySegment(position);
3492
3527
  break;
3493
3528
  }
3494
3529
  case "PER": {
3495
3530
  const contact = decodePer2(seg, delimiters);
3496
3531
  attachContact(contact, activeEntity, entityMutators);
3532
+ reportDiscardedEntitySegment(position);
3497
3533
  break;
3498
3534
  }
3499
3535
  case "REF": {
@@ -3505,6 +3541,7 @@ function get837Claims(delimiters, tx, opts) {
3505
3541
  currentClaim.references.push(ref);
3506
3542
  } else {
3507
3543
  attachReference(ref, activeEntity, entityMutators);
3544
+ reportDiscardedEntitySegment(position);
3508
3545
  }
3509
3546
  break;
3510
3547
  }
@@ -3540,6 +3577,7 @@ function get837Claims(delimiters, tx, opts) {
3540
3577
  sink
3541
3578
  );
3542
3579
  activeEntity = void 0;
3580
+ entityLoopClosedByStrayLx = false;
3543
3581
  context = { kind: "loop2300" };
3544
3582
  break;
3545
3583
  }
@@ -3588,24 +3626,53 @@ function get837Claims(delimiters, tx, opts) {
3588
3626
  flushServiceLine();
3589
3627
  if (currentClaim === void 0) {
3590
3628
  warnings.push(serviceLineDropped(position));
3629
+ droppedLineReported = true;
3630
+ entityLoopClosedByStrayLx ||= activeEntity !== void 0;
3631
+ activeEntity = void 0;
3591
3632
  break;
3592
3633
  }
3593
3634
  currentServiceLine = openServiceLine2(seg, delimiters, currentClaim.variant, position);
3594
- if (currentServiceLine === void 0) warnings.push(serviceLineDropped(position));
3635
+ if (currentServiceLine === void 0) {
3636
+ warnings.push(serviceLineDropped(position));
3637
+ droppedLineReported = true;
3638
+ }
3595
3639
  activeEntity = void 0;
3640
+ entityLoopClosedByStrayLx = false;
3596
3641
  context = { kind: "loop2400" };
3597
3642
  break;
3598
3643
  }
3644
+ // A service segment with no line open to decode into is a loss the
3645
+ // walker used to take in silence. Two ways to reach it, and only one
3646
+ // was ever reported: an LX that opened nothing already warned at the
3647
+ // LX (`droppedLineReported`), while a segment with no Loop 2400 open
3648
+ // at all had no anchor to warn at and so reported on no channel - a
3649
+ // charge, a quantity, a procedure code and its modifiers off the wire
3650
+ // and onto nothing. `reportOrphanServiceSegment` closes only the
3651
+ // second: it anchors at the service segment itself, because that is
3652
+ // the only segment the case has. Note the condition is "no line open",
3653
+ // NOT "no LX in the file": an LX in an earlier claim is still an LX.
3654
+ //
3655
+ // It does NOT decode the segment. The charge is SV1-02 / SV2-03 and
3656
+ // the units SV1-04 / SV2-05 / SV3-06, so reading a service segment
3657
+ // into a line the walker never opened is how a mis-read charge gets
3658
+ // minted. Refusing to read is the safe half; doing it silently was the
3659
+ // defect. This says nothing about VARIANT resolution, which happens
3660
+ // before the walk and scans every SVx in the body: an orphan segment
3661
+ // is eligible for that fallback like any other, which is pre-existing
3662
+ // and disclosed in KNOWN-LIMITATIONS.md rather than changed here.
3599
3663
  case "SV1": {
3600
3664
  if (currentServiceLine !== void 0) decodeSv1(currentServiceLine, seg, delimiters, sink);
3665
+ else reportOrphanServiceSegment(position);
3601
3666
  break;
3602
3667
  }
3603
3668
  case "SV2": {
3604
3669
  if (currentServiceLine !== void 0) decodeSv2(currentServiceLine, seg, delimiters, sink);
3670
+ else reportOrphanServiceSegment(position);
3605
3671
  break;
3606
3672
  }
3607
3673
  case "SV3": {
3608
3674
  if (currentServiceLine !== void 0) decodeSv3(currentServiceLine, seg, delimiters, sink);
3675
+ else reportOrphanServiceSegment(position);
3609
3676
  break;
3610
3677
  }
3611
3678
  case "TOO": {
@@ -8399,6 +8466,7 @@ var HL_LEVEL4 = {
8399
8466
  DEPENDENT: "23"
8400
8467
  };
8401
8468
  var DEFAULT_REVIEW_LEVEL = "EV";
8469
+ var REVIEW_LEVEL_CODES = Object.freeze(["EV", "SS"]);
8402
8470
  function build278Request(spec) {
8403
8471
  return buildServicesReview("005010X217", "request", spec);
8404
8472
  }
@@ -8537,6 +8605,13 @@ function enforceStructuralSpec7(spec, direction) {
8537
8605
  }
8538
8606
  }
8539
8607
  function enforceReview(review, locator, direction) {
8608
+ const resolvedLevel = review.levelCode ?? DEFAULT_REVIEW_LEVEL;
8609
+ if (!REVIEW_LEVEL_CODES.includes(resolvedLevel)) {
8610
+ throw new ServicesReview278BuildError(
8611
+ AUTH_278_BUILD_ERROR_CODES.X12_278_BUILD_INVALID_SPEC,
8612
+ `build278: review at ${locator} has HL-03 level code ${renderCallerValue(resolvedLevel)}; a review level must be "EV" (patient event) or "SS" (service). A level outside those two emits a well-formed document whose review loop no reader opens, so the review and its HCR-01 certification decision would not decode.`
8613
+ );
8614
+ }
8540
8615
  if (review.requestCategoryCode === "") {
8541
8616
  throw new ServicesReview278BuildError(
8542
8617
  AUTH_278_BUILD_ERROR_CODES.X12_278_BUILD_INVALID_SPEC,
@@ -10115,8 +10190,8 @@ var profiles = Object.freeze({
10115
10190
  });
10116
10191
 
10117
10192
  // src/index.ts
10118
- var VERSION = "0.0.10";
10193
+ var VERSION = "0.0.11";
10119
10194
 
10120
- export { ACK_BUILD_ERROR_CODES, ALL_WARNING_MESSAGES, AUTH_278_BUILD_ERROR_CODES, AUTH_278_LOOP_2000A, AUTH_278_LOOP_2000B, AUTH_278_LOOP_2000C, AUTH_278_LOOP_2000D, AUTH_278_LOOP_2000E, AUTH_278_LOOP_2000F, AckBuildError, BALANCE_INVARIANTS, BUILD_REFUSAL_VALUE_MAX_LENGTH, BUILD_REFUSAL_VALUE_MAX_RENDERED, CARC, CLAIM_837D_LOOP_2000A, CLAIM_837D_LOOP_2300, CLAIM_837D_LOOP_2400, CLAIM_837I_LOOP_2000A, CLAIM_837I_LOOP_2300, CLAIM_837I_LOOP_2400, CLAIM_837P_LOOP_2000A, CLAIM_837P_LOOP_2300, CLAIM_837P_LOOP_2400, CLAIM_837P_LOOP_2410, CLAIM_837_BUILD_ERROR_CODES, CLAIM_837_LOOP_1000A, CLAIM_837_LOOP_1000B, CLAIM_837_LOOP_2010AA, CLAIM_837_LOOP_2010BA, CLAIM_837_LOOP_2010BB, CLAIM_837_LOOP_2010CA, CLAIM_837_LOOP_2430, CLAIM_ADJUSTMENT_GROUP_CODES, CLAIM_STATUS_277_BUILD_ERROR_CODES, CLAIM_STATUS_CATEGORY_CODES, CLAIM_STATUS_CODES, CLP_STATUS, CONTROL_NUMBER_PAIRS, Claim837BuildError, ClaimStatus277BuildError, DELIMITER_POSITIONS, ELIGIBILITY_271_BUILD_ERROR_CODES, ELIGIBILITY_271_LOOP_2000A, ELIGIBILITY_271_LOOP_2000B, ELIGIBILITY_271_LOOP_2000C, ELIGIBILITY_271_LOOP_2000D, ELIGIBILITY_271_LOOP_2100C, ELIGIBILITY_271_LOOP_2100D, ELIGIBILITY_271_LOOP_2110, ENROLLMENT_834_BUILD_ERROR_CODES, ENROLLMENT_834_LOOP_1000A, ENROLLMENT_834_LOOP_1000B, ENROLLMENT_834_LOOP_2000, ENROLLMENT_834_LOOP_2100A, ENROLLMENT_834_LOOP_2300, ENROLLMENT_834_LOOP_2320, Eligibility271BuildError, Enrollment834BuildError, FATAL_CODES, HI_QUALIFIERS, HL_LEVEL_CODES, IK3_SYNTAX_ERROR_CODES, IK4_SYNTAX_ERROR_CODES, ISA_MIN_LENGTH, LoopSpecDefinitionError, MAINTENANCE_TYPE_CODES, NM1_QUALIFIERS, NON_SPEC_SEGMENT_ID, PREMIUM_820_BUILD_ERROR_CODES, PREMIUM_820_LOOP_1000A, PREMIUM_820_LOOP_1000B, PREMIUM_820_LOOP_2000A, PREMIUM_820_LOOP_2100A, PREMIUM_820_LOOP_2300A, PREMIUM_820_LOOP_2310A, Premium820BuildError, RARC, RELEASE_CHAR, REMIT_835_BUILD_ERROR_CODES, REMIT_835_LOOP_1000A, REMIT_835_LOOP_1000B, REMIT_835_LOOP_2000, REMIT_835_LOOP_2100, REMIT_835_LOOP_2110, REQUIRED_LOOPS, Remit835BuildError, SERVICE_TYPE_CODES, STATUS_277_LOOP_2000A, STATUS_277_LOOP_2000B, STATUS_277_LOOP_2000C, STATUS_277_LOOP_2000D, STATUS_277_LOOP_2000E, STATUS_277_LOOP_2200, STATUS_277_LOOP_2220, ServicesReview278BuildError, TA1_ACK_CODES, TA1_NOTE_CODES, UNEXPECTED_SEGMENT_CONTEXTS, VERSION, WARNING_CODES, X12BuildError, X12Decimal, X12ParseError, X12ProfileError, X12_ACK_DISPOSITION_CODES, X12_BUILD_ERROR_CODES, build271, build277, build277CA, build278Request, build278Response, build820, build834, build835, build837D, build837I, build837P, build999, buildInterchange, buildTA1, checkClaimBalance, checkRemitTotalBalance, checkServiceLineBalance, collectElementValues, componentOptional, controlNumberMismatch, danglingReleaseChar, decodeSegment, defineLoopSpec, defineProfile, detectDelimiters, elementDecimal, elementDecimalOrZero, elementOptional, elementValue, escapeRelease, get271Eligibility, get277CADisposition, get277Status, get278Request, get278Response, get820Payments, get834Enrollments, get834Header, get835, get837Claims, getAllSegmentValues, getDefaultProfile, getSegmentValue, groupCountMismatch, hlParentLevelInvalid, hlParentMismatch, isAcceptDisposition, isClaimAdjustmentGroupCode, isDiagnosisQualifier, isProcedureQualifier, lookupCarc, lookupClaimStatus, lookupClaimStatusCategory, lookupClpStatus, lookupMaintenanceType, lookupRarc, lookupServiceType, missingGe, missingIea, missingRequiredLoop, missingSe, parse999, parseTA1, parseX12, partitionWarnings, pre005010, profiles, readElementDecimal, remitBalanceMismatch, renderCallerValue, resolveHiQualifier, segmentCountMismatch, serializeX12, serviceLineDropped, serviceLineNotDecoded, setDefaultProfile, trailingGarbage, transactionCountMismatch, unescapeRelease, unexpectedSegment, unknown837Variant, unknownCarc, unknownClaimStatus, unknownClaimStatusCategory, unknownHiQualifier, unknownMaintenanceType, unknownRarc, unparseableDecimal };
10195
+ export { ACK_BUILD_ERROR_CODES, ALL_WARNING_MESSAGES, AUTH_278_BUILD_ERROR_CODES, AUTH_278_LOOP_2000A, AUTH_278_LOOP_2000B, AUTH_278_LOOP_2000C, AUTH_278_LOOP_2000D, AUTH_278_LOOP_2000E, AUTH_278_LOOP_2000F, AckBuildError, BALANCE_INVARIANTS, BUILD_REFUSAL_VALUE_MAX_LENGTH, BUILD_REFUSAL_VALUE_MAX_RENDERED, CARC, CLAIM_837D_LOOP_2000A, CLAIM_837D_LOOP_2300, CLAIM_837D_LOOP_2400, CLAIM_837I_LOOP_2000A, CLAIM_837I_LOOP_2300, CLAIM_837I_LOOP_2400, CLAIM_837P_LOOP_2000A, CLAIM_837P_LOOP_2300, CLAIM_837P_LOOP_2400, CLAIM_837P_LOOP_2410, CLAIM_837_BUILD_ERROR_CODES, CLAIM_837_LOOP_1000A, CLAIM_837_LOOP_1000B, CLAIM_837_LOOP_2010AA, CLAIM_837_LOOP_2010BA, CLAIM_837_LOOP_2010BB, CLAIM_837_LOOP_2010CA, CLAIM_837_LOOP_2430, CLAIM_ADJUSTMENT_GROUP_CODES, CLAIM_STATUS_277_BUILD_ERROR_CODES, CLAIM_STATUS_CATEGORY_CODES, CLAIM_STATUS_CODES, CLP_STATUS, CONTROL_NUMBER_PAIRS, Claim837BuildError, ClaimStatus277BuildError, DELIMITER_POSITIONS, ELIGIBILITY_271_BUILD_ERROR_CODES, ELIGIBILITY_271_LOOP_2000A, ELIGIBILITY_271_LOOP_2000B, ELIGIBILITY_271_LOOP_2000C, ELIGIBILITY_271_LOOP_2000D, ELIGIBILITY_271_LOOP_2100C, ELIGIBILITY_271_LOOP_2100D, ELIGIBILITY_271_LOOP_2110, ENROLLMENT_834_BUILD_ERROR_CODES, ENROLLMENT_834_LOOP_1000A, ENROLLMENT_834_LOOP_1000B, ENROLLMENT_834_LOOP_2000, ENROLLMENT_834_LOOP_2100A, ENROLLMENT_834_LOOP_2300, ENROLLMENT_834_LOOP_2320, Eligibility271BuildError, Enrollment834BuildError, FATAL_CODES, HI_QUALIFIERS, HL_LEVEL_CODES, IK3_SYNTAX_ERROR_CODES, IK4_SYNTAX_ERROR_CODES, ISA_MIN_LENGTH, LoopSpecDefinitionError, MAINTENANCE_TYPE_CODES, NM1_QUALIFIERS, NON_SPEC_SEGMENT_ID, PREMIUM_820_BUILD_ERROR_CODES, PREMIUM_820_LOOP_1000A, PREMIUM_820_LOOP_1000B, PREMIUM_820_LOOP_2000A, PREMIUM_820_LOOP_2100A, PREMIUM_820_LOOP_2300A, PREMIUM_820_LOOP_2310A, Premium820BuildError, RARC, RELEASE_CHAR, REMIT_835_BUILD_ERROR_CODES, REMIT_835_LOOP_1000A, REMIT_835_LOOP_1000B, REMIT_835_LOOP_2000, REMIT_835_LOOP_2100, REMIT_835_LOOP_2110, REQUIRED_LOOPS, Remit835BuildError, SERVICE_TYPE_CODES, STATUS_277_LOOP_2000A, STATUS_277_LOOP_2000B, STATUS_277_LOOP_2000C, STATUS_277_LOOP_2000D, STATUS_277_LOOP_2000E, STATUS_277_LOOP_2200, STATUS_277_LOOP_2220, ServicesReview278BuildError, TA1_ACK_CODES, TA1_NOTE_CODES, UNEXPECTED_SEGMENT_CONTEXTS, VERSION, WARNING_CODES, X12BuildError, X12Decimal, X12ParseError, X12ProfileError, X12_ACK_DISPOSITION_CODES, X12_BUILD_ERROR_CODES, build271, build277, build277CA, build278Request, build278Response, build820, build834, build835, build837D, build837I, build837P, build999, buildInterchange, buildTA1, checkClaimBalance, checkRemitTotalBalance, checkServiceLineBalance, collectElementValues, componentOptional, controlNumberMismatch, danglingReleaseChar, decodeSegment, defineLoopSpec, defineProfile, detectDelimiters, elementDecimal, elementDecimalOrZero, elementOptional, elementValue, entitySegmentDiscardedAfterLx, escapeRelease, get271Eligibility, get277CADisposition, get277Status, get278Request, get278Response, get820Payments, get834Enrollments, get834Header, get835, get837Claims, getAllSegmentValues, getDefaultProfile, getSegmentValue, groupCountMismatch, hlParentLevelInvalid, hlParentMismatch, isAcceptDisposition, isClaimAdjustmentGroupCode, isDiagnosisQualifier, isProcedureQualifier, lookupCarc, lookupClaimStatus, lookupClaimStatusCategory, lookupClpStatus, lookupMaintenanceType, lookupRarc, lookupServiceType, missingGe, missingIea, missingRequiredLoop, missingSe, parse999, parseTA1, parseX12, partitionWarnings, pre005010, profiles, readElementDecimal, remitBalanceMismatch, renderCallerValue, resolveHiQualifier, segmentCountMismatch, serializeX12, serviceLineDropped, serviceLineNotDecoded, serviceSegmentWithoutLx, setDefaultProfile, trailingGarbage, transactionCountMismatch, unescapeRelease, unexpectedSegment, unknown837Variant, unknownCarc, unknownClaimStatus, unknownClaimStatusCategory, unknownHiQualifier, unknownMaintenanceType, unknownRarc, unparseableDecimal };
10121
10196
  //# sourceMappingURL=index.mjs.map
10122
10197
  //# sourceMappingURL=index.mjs.map