@cosyte/x12 0.0.12 → 0.0.13

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.d.ts CHANGED
@@ -86,6 +86,10 @@ declare const WARNING_CODES: {
86
86
  readonly X12_837_SERVICE_LINE_DROPPED: "X12_837_SERVICE_LINE_DROPPED";
87
87
  readonly X12_837_SERVICE_SEGMENT_WITHOUT_LX: "X12_837_SERVICE_SEGMENT_WITHOUT_LX";
88
88
  readonly X12_837_ENTITY_SEGMENT_DISCARDED_AFTER_LX: "X12_837_ENTITY_SEGMENT_DISCARDED_AFTER_LX";
89
+ readonly X12_837_PAY_TO_ADDRESS_REPEATED: "X12_837_PAY_TO_ADDRESS_REPEATED";
90
+ readonly X12_835_BALANCE_NOT_EVALUABLE: "X12_835_BALANCE_NOT_EVALUABLE";
91
+ readonly X12_AMOUNT_ROW_DROPPED: "X12_AMOUNT_ROW_DROPPED";
92
+ readonly X12_STATED_AMOUNT_DISCARDED: "X12_STATED_AMOUNT_DISCARDED";
89
93
  };
90
94
  /**
91
95
  * Discriminant type for `X12ParseWarning.code`. Narrowing a warning by this
@@ -468,6 +472,29 @@ declare function unexpectedSegment(position: X12Position, context: X12Unexpected
468
472
  * ```
469
473
  */
470
474
  declare function remitBalanceMismatch(position: X12Position, invariant: X12BalanceInvariant): X12ParseWarning;
475
+ /**
476
+ * Build an `X12_835_BALANCE_NOT_EVALUABLE` warning. Emitted where a term of
477
+ * a TR3 X221A1 §1.10.2 invariant is `undefined` on the model, so the
478
+ * equation has nothing to compare on one side. `invariant` names which
479
+ * equation could not be run.
480
+ *
481
+ * This is deliberately a DIFFERENT code from
482
+ * {@link remitBalanceMismatch}: that one asserts a computed inequality
483
+ * between amounts the sender supplied, and this one asserts only that the
484
+ * comparison could not be made. Reading an absent term as `0` is what made
485
+ * the two indistinguishable before `X12Decimal | undefined`, and it is the
486
+ * thing this code exists to stop.
487
+ *
488
+ * @example
489
+ * ```ts
490
+ * import { balanceNotEvaluable, BALANCE_INVARIANTS } from "@cosyte/x12";
491
+ * const w = balanceNotEvaluable(
492
+ * { segmentIndex: 12, groupIndex: 0, transactionIndex: 0 },
493
+ * BALANCE_INVARIANTS.CLAIM,
494
+ * );
495
+ * ```
496
+ */
497
+ declare function balanceNotEvaluable(position: X12Position, invariant: X12BalanceInvariant): X12ParseWarning;
471
498
  /**
472
499
  * Build an `X12_UNKNOWN_CARC` warning. Emitted when a CAS adjustment
473
500
  * carries a CARC code outside the bundled snapshot (see
@@ -582,9 +609,11 @@ declare function unknown837Variant(position: X12Position): X12ParseWarning;
582
609
  * carries no SVx at all, or it carries one belonging to a different 837
583
610
  * variant than ST-03 (or the caller's `type` option) named. The line is
584
611
  * still retained, and every segment stays verbatim on the transaction set,
585
- * but the line's `charge` and `units` are the accumulator's seeded
586
- * `X12Decimal.ZERO` rather than anything read off the wire. `position`
587
- * names the LX segment that opened the line.
612
+ * but the line's `charge` and `units` are `undefined` rather than anything
613
+ * read off the wire. Through `0.0.12` they were the accumulator's seeded
614
+ * `X12Decimal.ZERO`, which a consumer could not tell from a charge of zero
615
+ * the sender did state. `position` names the LX segment that opened the
616
+ * line.
588
617
  *
589
618
  * @example
590
619
  * ```ts
@@ -674,6 +703,38 @@ declare function serviceSegmentWithoutLx(position: X12Position): X12ParseWarning
674
703
  * ```
675
704
  */
676
705
  declare function entitySegmentDiscardedAfterLx(position: X12Position): X12ParseWarning;
706
+ /**
707
+ * Build an `X12_837_PAY_TO_ADDRESS_REPEATED` warning. Emitted by the 837
708
+ * helper at the second and each subsequent `NM1*87` within one Loop 2000A,
709
+ * where the TR3s allow Loop 2010AB at most once. `position` names the
710
+ * repeated `NM1*87` itself, which is the segment a consumer resolves back
711
+ * through `tx.segments`; there is no `elementIndex`, because what is being
712
+ * reported is a second occurrence of the segment rather than a defect in
713
+ * any element of it.
714
+ *
715
+ * Once per repeat, so two repeats in one Loop 2000A are two warnings. The
716
+ * counter resets at the Loop 2000A `HL`, beside the pay-to slot it guards -
717
+ * a first `NM1*87` under a later billing provider is a first, not a repeat.
718
+ *
719
+ * It reports that the DOCUMENT named the pay-to address more than once. It
720
+ * does NOT report that anything was mis-read, and it is not a service-line
721
+ * or entity-segment code: nothing else on the channel says this, and this
722
+ * says nothing about the other 837 codes' subjects.
723
+ *
724
+ * **The rule the reader applies, because a consumer cannot infer it from a
725
+ * one-slot model:** occurrences are never merged, the last occurrence that
726
+ * states an address of its own wins, and an occurrence that states none does
727
+ * not blank one that did. "States an address" means exactly what the emit
728
+ * side would write a segment for - see `./address-segments.ts`, which both
729
+ * sides share so they cannot drift.
730
+ *
731
+ * @example
732
+ * ```ts
733
+ * import { payToAddressRepeated } from "@cosyte/x12";
734
+ * const w = payToAddressRepeated({ segmentIndex: 12, transactionIndex: 0 });
735
+ * ```
736
+ */
737
+ declare function payToAddressRepeated(position: X12Position): X12ParseWarning;
677
738
  /**
678
739
  * Build an `X12_UNKNOWN_CLAIM_STATUS_CATEGORY` warning. Emitted by the 277
679
740
  * / 277CA helpers when an STC composite's Claim Status Category Code
@@ -734,11 +795,13 @@ declare function unknownMaintenanceType(position: X12Position): X12ParseWarning;
734
795
  *
735
796
  * `position.elementIndex` is the 1-indexed element that failed, so a
736
797
  * consumer can go read the verbatim bytes off the segment. The message
737
- * takes NO discriminant and deliberately does not name which stand-in
738
- * landed: a reader may put `X12Decimal.ZERO` on a slot typed `X12Decimal`,
739
- * leave an optional slot `undefined`, or drop the row entirely, and the one
740
- * thing true of all three is that the number now in that slot is not the
741
- * sender's. Read the model field itself to see which happened.
798
+ * takes NO discriminant and deliberately does not name what landed in the
799
+ * slot instead: this library's own readers now either leave the slot
800
+ * `undefined` or drop the row entirely, and a reader built on
801
+ * {@link "./segment.js".elementDecimalOrZero} still substitutes
802
+ * `X12Decimal.ZERO`. The one thing true of all of them is that whatever
803
+ * occupies that slot is not the sender's. Read the model field itself to
804
+ * see which happened.
742
805
  *
743
806
  * @example
744
807
  * ```ts
@@ -747,6 +810,91 @@ declare function unknownMaintenanceType(position: X12Position): X12ParseWarning;
747
810
  * ```
748
811
  */
749
812
  declare function unparseableDecimal(position: X12Position): X12ParseWarning;
813
+ /**
814
+ * Build an `X12_AMOUNT_ROW_DROPPED` warning. Emitted where an `AMT` or `ADX`
815
+ * decoded no value from its amount element (AMT-02, ADX-01) and the reader
816
+ * therefore built no row at all, so the qualifier or adjustment reason code
817
+ * the sender did state is off the model with it.
818
+ *
819
+ * `position` names the `AMT` / `ADX` segment itself and carries NO
820
+ * `elementIndex`: one of the two routes here is an absent element, and an
821
+ * absent element has no index to name. The element the reader was reading is
822
+ * fixed by the segment anyway - AMT-02 or ADX-01 - so the segment locates the
823
+ * loss exactly.
824
+ *
825
+ * It is raised for BOTH routes to an undecoded amount, and
826
+ * {@link unparseableDecimal} is unchanged by it: a present-but-undecodable
827
+ * element still raises `X12_UNPARSEABLE_DECIMAL` at its own `elementIndex`,
828
+ * now ALONGSIDE this code rather than instead of it, so a consumer predicate
829
+ * written against that code alone still fires exactly where it did. The
830
+ * absent route raises this code and nothing else, which is what tells the two
831
+ * apart.
832
+ *
833
+ * Read the bound literally. This reports a row whose AMOUNT was read and
834
+ * decoded no value. A segment a reader discards before reading its amount is
835
+ * not on this channel, and neither is one whose amount decoded and then found
836
+ * nothing open to attach the row to. An 820 `RMR` is not on it either, for its
837
+ * own reason: `decodeRmr` drops on open-item IDENTITY, RMR-01 and RMR-02 both
838
+ * empty, before the amount is read - so an `RMR` that states an open item and
839
+ * no amount keeps its row with `amountPaid` `undefined`, while one that states
840
+ * an amount and no open item is dropped whole. That second case is a separate
841
+ * loss, as is an 837 `AMT` that decoded while a Loop 2430 adjudication was
842
+ * open; {@link statedAmountDiscarded} reports both and this code reports
843
+ * neither. Nothing is fabricated to stand in and the segments stay verbatim on
844
+ * the transaction set.
845
+ *
846
+ * @example
847
+ * ```ts
848
+ * import { amountRowDropped } from "@cosyte/x12";
849
+ * const w = amountRowDropped({ segmentIndex: 7, transactionIndex: 0 });
850
+ * ```
851
+ */
852
+ declare function amountRowDropped(position: X12Position): X12ParseWarning;
853
+ /**
854
+ * Build an `X12_STATED_AMOUNT_DISCARDED` warning. Emitted where a segment
855
+ * POPULATED its amount element, the loop that would carry its row was open,
856
+ * and the reader built no row anyway - for a reason that is not a failure to
857
+ * decode that amount. The money the sender wrote is on no part of the typed
858
+ * model. **This code asserts nothing about whether that amount is decodable**:
859
+ * route 2 below decoded it, route 1 never attempted the decode.
860
+ *
861
+ * Two routes, enumerated because a count without its list cannot correct
862
+ * itself:
863
+ *
864
+ * 1. An 820 `RMR` under an open remittance loop whose RMR-01 and RMR-02 are
865
+ * BOTH empty while RMR-04 or RMR-05 is populated. `decodeRmr` refuses the
866
+ * open item on identity before either amount element is read, so a stated
867
+ * payment, a stated amount due and the payment action code beside them are
868
+ * lost together.
869
+ * 2. An 837 `AMT` arriving while a Loop 2430 line adjudication (`SVD`) is
870
+ * open, whose AMT-02 decoded. The v1 adjudication model carries no amount
871
+ * row, so the row is skipped rather than attached to the service line,
872
+ * which is this reader's own line and not the other payer's.
873
+ *
874
+ * `position` names the `RMR` / `AMT` segment itself and carries NO
875
+ * `elementIndex`: on the first route the loss spans RMR-04 and RMR-05 and no
876
+ * single element names it, and on the second the element is fixed by the
877
+ * segment.
878
+ *
879
+ * Read the bound as a property of the READ. This does NOT report an `AMT` or
880
+ * `ADX` that reaches a reader with no loop open to carry its row at all: the
881
+ * 834's `AMT` with no `HD` open, the 820's `ADX` with no remittance open, and
882
+ * the 835's and the 837's `AMT` that decodes before any claim or service line
883
+ * is open are all still silent, and recorded in `KNOWN-LIMITATIONS.md`. It is
884
+ * additive: {@link unparseableDecimal} and {@link amountRowDropped} fire on
885
+ * exactly the documents they fired on before. On route 1 no
886
+ * `X12_UNPARSEABLE_DECIMAL` accompanies this code even where the amount bytes
887
+ * are unreadable, because that route never attempts the decode - so never read
888
+ * an unaccompanied instance as evidence the bytes are postable. Read them off
889
+ * the segment and decode them yourself.
890
+ *
891
+ * @example
892
+ * ```ts
893
+ * import { statedAmountDiscarded } from "@cosyte/x12";
894
+ * const w = statedAmountDiscarded({ segmentIndex: 9, transactionIndex: 0 });
895
+ * ```
896
+ */
897
+ declare function statedAmountDiscarded(position: X12Position): X12ParseWarning;
750
898
 
751
899
  /**
752
900
  * Type definitions for the `@cosyte/x12` profile subsystem (Phase 9).
@@ -3267,14 +3415,22 @@ interface X12Remittance {
3267
3415
  * ```ts
3268
3416
  * import type { X12RemitPaymentHeader } from "@cosyte/x12";
3269
3417
  * declare const p: X12RemitPaymentHeader;
3270
- * p.totalActualPayment.toString(); // "945.00"
3418
+ * p.totalActualPayment?.toString(); // "945.00", or undefined if none decoded
3271
3419
  * p.method; // "ACH"
3272
3420
  * p.paymentDate; // "20260601" (CCYYMMDD, verbatim)
3273
3421
  * ```
3274
3422
  */
3275
3423
  interface X12RemitPaymentHeader {
3276
3424
  readonly transactionHandlingCode: string;
3277
- readonly totalActualPayment: X12Decimal;
3425
+ /**
3426
+ * BPR-02, the amount the bank actually moved. `undefined` where this library decoded no value
3427
+ * from that element - it was absent or empty, or it held bytes that do
3428
+ * not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
3429
+ * its `elementIndex`). Through `0.0.12` both cases read
3430
+ * `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
3431
+ * did state, and the balance invariants summed that fabricated zero.
3432
+ */
3433
+ readonly totalActualPayment: X12Decimal | undefined;
3278
3434
  /**
3279
3435
  * BPR-03 credit/debit flag. Spec-defined values: `"C"` (credit - money
3280
3436
  * to provider, the normal case) or `"D"` (debit - refund / chargeback,
@@ -3418,8 +3574,8 @@ interface X12RemitContact {
3418
3574
  * import type { X12RemitClaim } from "@cosyte/x12";
3419
3575
  * declare const c: X12RemitClaim;
3420
3576
  * c.patientControlNumber; // "PT-ACCT-001"
3421
- * c.totalChargeAmount.toString(); // "500.00"
3422
- * c.totalPaymentAmount.toString(); // "450.00"
3577
+ * c.totalChargeAmount?.toString(); // "500.00", or undefined if none decoded
3578
+ * c.totalPaymentAmount?.toString(); // "450.00", or undefined if none decoded
3423
3579
  * c.claimStatusCode; // "1" - Processed as Primary
3424
3580
  * c.serviceLines.length; // count of SVC loops
3425
3581
  * ```
@@ -3428,9 +3584,33 @@ interface X12RemitClaim {
3428
3584
  readonly patientControlNumber: string;
3429
3585
  readonly claimStatusCode: string;
3430
3586
  readonly claimStatusDescription: string | undefined;
3431
- readonly totalChargeAmount: X12Decimal;
3432
- readonly totalPaymentAmount: X12Decimal;
3433
- readonly patientResponsibilityAmount: X12Decimal;
3587
+ /**
3588
+ * CLP-03, the total submitted charge. `undefined` where this library decoded no value
3589
+ * from that element - it was absent or empty, or it held bytes that do
3590
+ * not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
3591
+ * its `elementIndex`). Through `0.0.12` both cases read
3592
+ * `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
3593
+ * did state, and the balance invariants summed that fabricated zero.
3594
+ */
3595
+ readonly totalChargeAmount: X12Decimal | undefined;
3596
+ /**
3597
+ * CLP-04, the total amount paid on the claim. `undefined` where this library decoded no value
3598
+ * from that element - it was absent or empty, or it held bytes that do
3599
+ * not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
3600
+ * its `elementIndex`). Through `0.0.12` both cases read
3601
+ * `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
3602
+ * did state, and the balance invariants summed that fabricated zero.
3603
+ */
3604
+ readonly totalPaymentAmount: X12Decimal | undefined;
3605
+ /**
3606
+ * CLP-05, the patient responsibility amount. `undefined` where this library decoded no value
3607
+ * from that element - it was absent or empty, or it held bytes that do
3608
+ * not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
3609
+ * its `elementIndex`). Through `0.0.12` both cases read
3610
+ * `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
3611
+ * did state, and the balance invariants summed that fabricated zero.
3612
+ */
3613
+ readonly patientResponsibilityAmount: X12Decimal | undefined;
3434
3614
  readonly claimFilingIndicatorCode: string | undefined;
3435
3615
  readonly payerClaimControlNumber: string | undefined;
3436
3616
  readonly facilityTypeCode: string | undefined;
@@ -3467,14 +3647,22 @@ interface X12RemitClaim {
3467
3647
  * a.groupCode; // "PR" (patient responsibility)
3468
3648
  * a.reasonCode; // "1" (deductible)
3469
3649
  * a.reasonDescription; // "Deductible Amount"
3470
- * a.amount.toString(); // "50.00"
3650
+ * a.amount?.toString(); // "50.00", or undefined if none decoded
3471
3651
  * ```
3472
3652
  */
3473
3653
  interface X12RemitAdjustment {
3474
3654
  readonly groupCode: string;
3475
3655
  readonly reasonCode: string;
3476
3656
  readonly reasonDescription: string | undefined;
3477
- readonly amount: X12Decimal;
3657
+ /**
3658
+ * The CAS adjustment amount for this triple. `undefined` where this library decoded no value
3659
+ * from that element - it was absent or empty, or it held bytes that do
3660
+ * not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
3661
+ * its `elementIndex`). Through `0.0.12` both cases read
3662
+ * `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
3663
+ * did state, and the balance invariants summed that fabricated zero.
3664
+ */
3665
+ readonly amount: X12Decimal | undefined;
3478
3666
  readonly quantity: X12Decimal | undefined;
3479
3667
  }
3480
3668
  /**
@@ -3593,16 +3781,32 @@ interface X12RemitRemark {
3593
3781
  * declare const s: X12RemitServiceLine;
3594
3782
  * s.productServiceIdQualifier; // "HC"
3595
3783
  * s.productServiceId; // "99213"
3596
- * s.chargeAmount.toString(); // "150.00"
3597
- * s.paymentAmount.toString(); // "135.00"
3784
+ * s.chargeAmount?.toString(); // "150.00", or undefined if none decoded
3785
+ * s.paymentAmount?.toString(); // "135.00", or undefined if none decoded
3598
3786
  * ```
3599
3787
  */
3600
3788
  interface X12RemitServiceLine {
3601
3789
  readonly productServiceIdQualifier: string;
3602
3790
  readonly productServiceId: string;
3603
3791
  readonly modifiers: readonly string[];
3604
- readonly chargeAmount: X12Decimal;
3605
- readonly paymentAmount: X12Decimal;
3792
+ /**
3793
+ * SVC-02, the line's submitted charge. `undefined` where this library decoded no value
3794
+ * from that element - it was absent or empty, or it held bytes that do
3795
+ * not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
3796
+ * its `elementIndex`). Through `0.0.12` both cases read
3797
+ * `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
3798
+ * did state, and the balance invariants summed that fabricated zero.
3799
+ */
3800
+ readonly chargeAmount: X12Decimal | undefined;
3801
+ /**
3802
+ * SVC-03, the amount paid on the line. `undefined` where this library decoded no value
3803
+ * from that element - it was absent or empty, or it held bytes that do
3804
+ * not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
3805
+ * its `elementIndex`). Through `0.0.12` both cases read
3806
+ * `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
3807
+ * did state, and the balance invariants summed that fabricated zero.
3808
+ */
3809
+ readonly paymentAmount: X12Decimal | undefined;
3606
3810
  /** SVC-04 - NUBC revenue code. Absent on a professional line. */
3607
3811
  readonly revenueCode: string | undefined;
3608
3812
  /** SVC-05 - Units of Service Paid Count: what the payer adjudicated. */
@@ -3647,7 +3851,7 @@ interface X12RemitServiceLine {
3647
3851
  * p.fiscalPeriodDate; // "20261231"
3648
3852
  * p.reasonCode; // "WO" (withholding)
3649
3853
  * p.subCode; // "123456" (related-claim reference)
3650
- * p.amount.toString();// "50.00"
3854
+ * p.amount?.toString();// "50.00", or undefined if none decoded
3651
3855
  * ```
3652
3856
  */
3653
3857
  interface X12RemitProviderAdjustment {
@@ -3655,7 +3859,15 @@ interface X12RemitProviderAdjustment {
3655
3859
  readonly fiscalPeriodDate: string;
3656
3860
  readonly reasonCode: string;
3657
3861
  readonly subCode: string | undefined;
3658
- readonly amount: X12Decimal;
3862
+ /**
3863
+ * The PLB adjustment amount, with its raw EDI sign. `undefined` where this library decoded no value
3864
+ * from that element - it was absent or empty, or it held bytes that do
3865
+ * not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
3866
+ * its `elementIndex`). Through `0.0.12` both cases read
3867
+ * `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
3868
+ * did state, and the balance invariants summed that fabricated zero.
3869
+ */
3870
+ readonly amount: X12Decimal | undefined;
3659
3871
  }
3660
3872
 
3661
3873
  /**
@@ -3686,9 +3898,9 @@ interface X12RemitProviderAdjustment {
3686
3898
  * for (const tx of group.transactions) {
3687
3899
  * if (tx.st.elements[1] !== "835") continue;
3688
3900
  * const remit = get835(ix.delimiters, tx);
3689
- * remit?.payment.totalActualPayment.toString();
3901
+ * remit?.payment.totalActualPayment?.toString();
3690
3902
  * for (const claim of remit?.claims ?? []) {
3691
- * claim.totalPaymentAmount.toString();
3903
+ * claim.totalPaymentAmount?.toString();
3692
3904
  * }
3693
3905
  * }
3694
3906
  * }
@@ -4541,6 +4753,20 @@ declare const REMIT_835_LOOP_1000B: LoopSpec;
4541
4753
  * > slice with a forward-pointer to this module so the contract stays
4542
4754
  * > consistent.
4543
4755
  *
4756
+ * **A term that did not decode makes the equation UNEVALUABLE, and that is a
4757
+ * third outcome, not a failure.** Every amount these three checks read is
4758
+ * `X12Decimal | undefined` on the model, and `undefined` means this library
4759
+ * decoded no value from that element. Where any term of an invariant is
4760
+ * `undefined` the check emits
4761
+ * {@link "../../parser/warnings.js".WARNING_CODES.X12_835_BALANCE_NOT_EVALUABLE}
4762
+ * and never `X12_835_REMIT_BALANCE_MISMATCH`: the mismatch code asserts a
4763
+ * computed inequality between amounts the sender supplied, and there is no
4764
+ * such computation to report. Substituting `0` for the absent term is what
4765
+ * this library did through `0.0.12`, and it made "the payer paid nothing"
4766
+ * and "the payer said nothing" the same reading. An EMPTY list of
4767
+ * adjustments is NOT that case: it sums to `X12Decimal.ZERO`, because a
4768
+ * claim carrying no CAS really did state no adjustments.
4769
+ *
4544
4770
  * **PHI discipline: the message names the equation and carries no value at
4545
4771
  * all**, not even an amount. An EDI amount is a consumer-controlled element
4546
4772
  * like any other: `CLP-03` is whatever the payer sent, so the spec'd /
@@ -4634,7 +4860,7 @@ declare function checkServiceLineBalance(claim: X12RemitClaim, position: X12Posi
4634
4860
  * );
4635
4861
  * ```
4636
4862
  */
4637
- declare function checkRemitTotalBalance(bpr02: X12Decimal, claims: readonly X12RemitClaim[], providerAdjustments: readonly X12RemitProviderAdjustment[], position: X12Position): X12ParseWarning | undefined;
4863
+ declare function checkRemitTotalBalance(bpr02: X12Decimal | undefined, claims: readonly X12RemitClaim[], providerAdjustments: readonly X12RemitProviderAdjustment[], position: X12Position): X12ParseWarning | undefined;
4638
4864
 
4639
4865
  /**
4640
4866
  * Typed model for an X12 005010 837 Healthcare Claim - the three sibling
@@ -5019,7 +5245,7 @@ interface X12OtherSubscriber {
5019
5245
  * declare const c: X12Claim;
5020
5246
  * c.variant; // "P" / "I" / "D" / "unknown"
5021
5247
  * c.claimId; // CLM-01 (patient account number)
5022
- * c.totalCharge.toString(); // CLM-02 as X12Decimal
5248
+ * c.totalCharge?.toString(); // CLM-02 as X12Decimal, or undefined if none decoded
5023
5249
  * c.diagnoses[0]?.codeSystem; // "ICD-10-CM"
5024
5250
  * c.serviceLines.length; // count of LX/SVx loops
5025
5251
  * ```
@@ -5034,7 +5260,15 @@ interface X12Claim {
5034
5260
  readonly payer: X12ClaimEntity | undefined;
5035
5261
  readonly patient: X12ClaimMember | undefined;
5036
5262
  readonly claimId: string;
5037
- readonly totalCharge: X12Decimal;
5263
+ /**
5264
+ * CLM-02, the total claim charge. `undefined` where this library decoded
5265
+ * no value from that element - it was absent or empty, or it held bytes
5266
+ * that do not decode as a decimal (which also emits
5267
+ * `X12_UNPARSEABLE_DECIMAL` at its `elementIndex`). Through `0.0.12` both
5268
+ * cases read `X12Decimal.ZERO`, indistinguishable from a claim whose
5269
+ * charge really is zero.
5270
+ */
5271
+ readonly totalCharge: X12Decimal | undefined;
5038
5272
  readonly placeOfServiceCode: string | undefined;
5039
5273
  readonly facilityCodeQualifier: string | undefined;
5040
5274
  readonly claimFrequencyCode: string | undefined;
@@ -5076,8 +5310,25 @@ type X12_837ServiceLine = X12_837ServiceLineProfessional | X12_837ServiceLineIns
5076
5310
  /** Fields shared across every service-line variant. @internal */
5077
5311
  interface X12_837ServiceLineBase {
5078
5312
  readonly lineNumber: string;
5079
- readonly charge: X12Decimal;
5080
- readonly units: X12Decimal;
5313
+ /**
5314
+ * The service line's charge - SV1-02 (professional), SV2-03
5315
+ * (institutional) or SV3-02 (dental). `undefined` where this library
5316
+ * decoded no value from that element: it was absent or empty, it held
5317
+ * bytes that do not decode as a decimal (which also emits
5318
+ * `X12_UNPARSEABLE_DECIMAL`), or no SVx for the resolved variant was
5319
+ * decoded onto the line at all (which emits
5320
+ * `X12_837_SERVICE_LINE_NOT_DECODED` at the LX). Through `0.0.12` all
5321
+ * three read `X12Decimal.ZERO`, and a consumer could not tell any of them
5322
+ * from a line the sender charged nothing for.
5323
+ */
5324
+ readonly charge: X12Decimal | undefined;
5325
+ /**
5326
+ * The service line's unit count - SV1-04 (professional), SV2-05
5327
+ * (institutional) or SV3-06 (dental). `undefined` on the same three
5328
+ * conditions as {@link X12_837ServiceLineBase.charge}, and for the same
5329
+ * reason: a fabricated count is a count the sender never sent.
5330
+ */
5331
+ readonly units: X12Decimal | undefined;
5081
5332
  readonly unitOfMeasure: string | undefined;
5082
5333
  readonly placeOfServiceCode: string | undefined;
5083
5334
  readonly dates: readonly X12ClaimDate[];
@@ -5231,7 +5482,7 @@ interface X12LineDrug {
5231
5482
  * import type { X12LineAdjudication } from "@cosyte/x12";
5232
5483
  * declare const a: X12LineAdjudication;
5233
5484
  * a.otherPayerId; // "84320" (the other payer's id)
5234
- * a.amountPaid.toString(); // "50.00"
5485
+ * a.amountPaid?.toString(); // "50.00", or undefined if none decoded
5235
5486
  * a.procedureCode; // "99213"
5236
5487
  * a.adjustments[0]?.groupCode;// "CO"
5237
5488
  * a.dateAdjudicated; // "20260520" CCYYMMDD verbatim
@@ -5239,7 +5490,14 @@ interface X12LineDrug {
5239
5490
  */
5240
5491
  interface X12LineAdjudication {
5241
5492
  readonly otherPayerId: string;
5242
- readonly amountPaid: X12Decimal;
5493
+ /**
5494
+ * SVD-02, the amount the other payer paid on this line. `undefined` where
5495
+ * this library decoded no value from that element - absent, empty, or
5496
+ * bytes that do not decode (which also emits `X12_UNPARSEABLE_DECIMAL`).
5497
+ * Through `0.0.12` both cases read `X12Decimal.ZERO`, indistinguishable
5498
+ * from a payer that adjudicated the line to nothing.
5499
+ */
5500
+ readonly amountPaid: X12Decimal | undefined;
5243
5501
  readonly procedureQualifier: string | undefined;
5244
5502
  readonly procedureCode: string | undefined;
5245
5503
  readonly paidUnits: X12Decimal | undefined;
@@ -5340,7 +5598,7 @@ declare const NM1_QUALIFIERS: Readonly<{
5340
5598
  * const sub = get837Claims(ix.delimiters, tx);
5341
5599
  * sub?.variant; // "P" / "I" / "D" / "unknown"
5342
5600
  * for (const claim of sub?.claims ?? []) {
5343
- * claim.totalCharge.toString();
5601
+ * claim.totalCharge?.toString();
5344
5602
  * claim.diagnoses[0]?.codeSystem; // "ICD-10-CM"
5345
5603
  * }
5346
5604
  * }
@@ -5729,10 +5987,19 @@ interface Build837ToothSpec {
5729
5987
  interface Build837ServiceLineBaseSpec {
5730
5988
  /** LX-01 - line number. Default: the 1-based index within the claim. */
5731
5989
  readonly lineNumber?: string;
5732
- /** SVx charge amount. */
5990
+ /** SVx charge amount - SV1-02 (P), SV2-03 (I) or SV3-02 (D). */
5733
5991
  readonly charge: X12Decimal;
5734
- /** SVx units of service. */
5735
- readonly units?: X12Decimal;
5992
+ /**
5993
+ * SVx units of service - SV1-04 (P), SV2-05 (I) or SV3-06 (D).
5994
+ *
5995
+ * **Required as of `0.0.13`.** Through `0.0.12` this was optional and an
5996
+ * omitted value was emitted as the literal `"0"`, so the builder stated a
5997
+ * service unit count the caller never supplied. It now refuses with
5998
+ * `X12_837_BUILD_INVALID_SPEC` instead, the same stance `build277` takes
5999
+ * for SVC-07: this builder will not invent a count, and will not leave the
6000
+ * element empty for the receiver to guess at either.
6001
+ */
6002
+ readonly units: X12Decimal;
5736
6003
  /** SVx unit/basis-of-measurement code (`UN`, `MJ`, …). */
5737
6004
  readonly unitOfMeasure?: string;
5738
6005
  /** DTP service-line dates. */
@@ -8718,14 +8985,22 @@ interface X12PremiumPayments {
8718
8985
  * ```ts
8719
8986
  * import type { X12PremiumPaymentHeader } from "@cosyte/x12";
8720
8987
  * declare const p: X12PremiumPaymentHeader;
8721
- * p.totalPremiumAmount.toString(); // "12500.00"
8988
+ * p.totalPremiumAmount?.toString(); // "12500.00", or undefined if none decoded
8722
8989
  * p.method; // "ACH"
8723
8990
  * p.paymentDate; // "20260601" (CCYYMMDD, verbatim)
8724
8991
  * ```
8725
8992
  */
8726
8993
  interface X12PremiumPaymentHeader {
8727
8994
  readonly transactionHandlingCode: string;
8728
- readonly totalPremiumAmount: X12Decimal;
8995
+ /**
8996
+ * BPR-02, the aggregate premium moved. `undefined` where this library decoded no value
8997
+ * from that element - it was absent or empty, or it held bytes that do
8998
+ * not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
8999
+ * its `elementIndex`). Through `0.0.12` both cases read
9000
+ * `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
9001
+ * did state.
9002
+ */
9003
+ readonly totalPremiumAmount: X12Decimal | undefined;
8729
9004
  /**
8730
9005
  * BPR-03 credit/debit flag. Spec-defined `"C"` (credit) or `"D"` (debit);
8731
9006
  * typed `string` to preserve any verbatim non-spec value from a quirky
@@ -8915,14 +9190,22 @@ interface X12PremiumPerson {
8915
9190
  * declare const o: X12PremiumOpenItem;
8916
9191
  * o.qualifier; // "AZ"
8917
9192
  * o.referenceId; // "POL-0001"
8918
- * o.amountPaid.toString(); // "250.00"
9193
+ * o.amountPaid?.toString(); // "250.00", or undefined if none decoded
8919
9194
  * ```
8920
9195
  */
8921
9196
  interface X12PremiumOpenItem {
8922
9197
  readonly qualifier: string;
8923
9198
  readonly referenceId: string;
8924
9199
  readonly paymentActionCode: string | undefined;
8925
- readonly amountPaid: X12Decimal;
9200
+ /**
9201
+ * RMR-04, the amount paid against this open item. `undefined` where this library decoded no value
9202
+ * from that element - it was absent or empty, or it held bytes that do
9203
+ * not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
9204
+ * its `elementIndex`). Through `0.0.12` both cases read
9205
+ * `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
9206
+ * did state.
9207
+ */
9208
+ readonly amountPaid: X12Decimal | undefined;
8926
9209
  readonly amountDue: X12Decimal | undefined;
8927
9210
  }
8928
9211
  /**
@@ -8974,9 +9257,9 @@ interface X12PremiumAdjustment {
8974
9257
  * const tx = ix.groups[0]?.transactions.find((t) => t.st.elements[1] === "820");
8975
9258
  * if (tx !== undefined) {
8976
9259
  * const prem = get820Payments(ix.delimiters, tx);
8977
- * prem?.payment.totalPremiumAmount.toString();
9260
+ * prem?.payment.totalPremiumAmount?.toString();
8978
9261
  * for (const r of prem?.remittances ?? []) {
8979
- * r.openItems[0]?.amountPaid.toString();
9262
+ * r.openItems[0]?.amountPaid?.toString();
8980
9263
  * }
8981
9264
  * }
8982
9265
  * ```
@@ -13346,4 +13629,4 @@ declare const profiles: {
13346
13629
  */
13347
13630
  declare const VERSION: string;
13348
13631
 
13349
- 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, type AckBuildErrorCode, BALANCE_INVARIANTS, BUILD_REFUSAL_VALUE_MAX_LENGTH, BUILD_REFUSAL_VALUE_MAX_RENDERED, type Build271AddressSpec, type Build271BenefitSpec, type Build271DateSpec, type Build271DependentSpec, type Build271EntitySpec, type Build271EnvelopeSpec, type Build271InformationReceiverSpec, type Build271InformationSourceSpec, type Build271MemberSpec, type Build271ReferenceSpec, type Build271ServiceTypeSpec, type Build271Spec, type Build271SubscriberSpec, type Build271TraceSpec, type Build277ClaimSpec, type Build277DateSpec, type Build277DependentSpec, type Build277EntitySpec, type Build277EnvelopeSpec, type Build277InformationReceiverSpec, type Build277InformationSourceSpec, type Build277MemberSpec, type Build277ProviderSpec, type Build277ReferenceSpec, type Build277ServiceLineSpec, type Build277Spec, type Build277StatusCodeSpec, type Build277StatusSpec, type Build277SubscriberSpec, type Build277TraceSpec, type Build278DateSpec, type Build278DecisionSpec, type Build278DependentSpec, type Build278DiagnosisSpec, type Build278EntitySpec, type Build278EnvelopeSpec, type Build278HeaderSpec, type Build278MemberSpec, type Build278ReferenceSpec, type Build278ReviewSpec, type Build278Spec, type Build278SubscriberSpec, type Build278TraceSpec, type Build820AddressSpec, type Build820AdjustmentSpec, type Build820DateSpec, type Build820EntitySpec, type Build820EnvelopeSpec, type Build820OpenItemSpec, type Build820PartySpec, type Build820PaymentSpec, type Build820PersonSpec, type Build820ReferenceSpec, type Build820RemittanceSpec, type Build820Spec, type Build820TraceSpec, type Build834AddressSpec, type Build834AmountSpec, type Build834CoordinationOfBenefitsSpec, type Build834CoverageSpec, type Build834DateSpec, type Build834EnvelopeSpec, type Build834HeaderSpec, type Build834MemberNameSpec, type Build834MemberSpec, type Build834PartySpec, type Build834ReferenceSpec, type Build834Spec, type Build835AddressSpec, type Build835AdjustmentSpec, type Build835AmountSpec, type Build835ClaimSpec, type Build835ContactSpec, type Build835EnvelopeSpec, type Build835PartySpec, type Build835PaymentSpec, type Build835PersonSpec, type Build835ProviderAdjustmentSpec, type Build835ProviderSpec, type Build835ReferenceSpec, type Build835RemarkSpec, type Build835ServiceLineSpec, type Build835Spec, type Build835TraceSpec, type Build837AddressSpec, type Build837AdjudicationSpec, type Build837AdjustmentSpec, type Build837AmountSpec, type Build837BillingProviderSpec, type Build837ClaimSpec, type Build837ContactSpec, type Build837DateSpec, type Build837DrugSpec, type Build837EntitySpec, type Build837EnvelopeSpec, type Build837HiCodeSpec, type Build837NoteSpec, type Build837OtherSubscriberSpec, type Build837PatientSpec, type Build837ReferenceSpec, type Build837ServiceLineBaseSpec, type Build837ServiceLineDentalSpec, type Build837ServiceLineInstitutionalSpec, type Build837ServiceLineProfessionalSpec, type Build837ServiceLineSpec, type Build837Spec, type Build837SubscriberInfoSpec, type Build837SubscriberSpec, type Build837ToothSpec, type Build999ElementErrorSpec, type Build999EnvelopeSpec, type Build999FunctionalGroupSpec, type Build999SegmentErrorSpec, type Build999Spec, type Build999TransactionResponseSpec, type BuildTA1Options, type BuildTA1Spec, 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, type Claim837BuildErrorCode, type ClaimAdjustmentGroupCode, ClaimStatus277BuildError, type ClaimStatus277BuildErrorCode, type CodeListEntry, type CodeListMeta, type CodeListSnapshot, DELIMITER_POSITIONS, type DefineLoopSpecInput, type Delimiters, 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, type Eligibility271BuildErrorCode, Enrollment834BuildError, type Enrollment834BuildErrorCode, FATAL_CODES, type FunctionalGroupSpec, type GeSegment, type GsSegment, HI_QUALIFIERS, HL_LEVEL_CODES, IK3_SYNTAX_ERROR_CODES, IK4_SYNTAX_ERROR_CODES, ISA_MIN_LENGTH, type IeaSegment, type Ik304Code, type Ik403Code, type InterchangeSpec, type IsaSegment, type LoopMax, type LoopSegmentSpec, type LoopSpec, LoopSpecDefinitionError, type LoopUsage, MAINTENANCE_TYPE_CODES, NM1_QUALIFIERS, NON_SPEC_SEGMENT_ID, type OnWarningCallback, 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, type Premium820BuildErrorCode, 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, type Remit835BuildErrorCode, 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, type SegmentSpec, type SerializeOptions, ServicesReview278BuildError, type ServicesReview278BuildErrorCode, TA1_ACK_CODES, TA1_NOTE_CODES, type Ta1AckCode, type Ta1NoteCode, type Ta1Segment, type TransactionSetSpec, UNEXPECTED_SEGMENT_CONTEXTS, VERSION, WARNING_CODES, type X12Ack999, type X12Ack999Ak1, type X12Ack999Ak2, type X12Ack999Ak9, type X12Ack999ElementNote, type X12Ack999Ik3, type X12Ack999Ik4, type X12Ack999Ik4Position, type X12Ack999Ik5, type X12Ack999SegmentNote, type X12Ack999TransactionResponse, type X12AckDispositionCode, type X12AckTA1, type X12AuthDate, type X12AuthDiagnosis, type X12AuthEntity, type X12AuthHeader, type X12AuthMember, type X12AuthReference, type X12AuthTrace, type X12BalanceInvariant, X12BuildError, type X12BuildErrorCode, type X12Claim, type X12Claim837Variant, type X12ClaimAddress, type X12ClaimAmount, type X12ClaimContact, type X12ClaimDate, type X12ClaimEntity, type X12ClaimHiCode, type X12ClaimMember, type X12ClaimNote, type X12ClaimReference, type X12ClaimStatus, type X12ClaimStatusResponse, type X12ControlNumberPair, type X12CoordinationOfBenefits, X12Decimal, type X12DecimalRead, type X12DecimalStatus, type X12DecimalWarningSink, type X12Eligibility, type X12EligibilityAddress, type X12EligibilityBenefit, type X12EligibilityDate, type X12EligibilityDependent, type X12EligibilityEntity, type X12EligibilityMember, type X12EligibilityReference, type X12EligibilityServiceType, type X12EligibilitySubscriber, type X12EligibilityTrace, type X12Enrollment, type X12EnrollmentAddress, type X12EnrollmentAmount, type X12EnrollmentDate, type X12EnrollmentHeader, type X12EnrollmentMember, type X12EnrollmentParty, type X12EnrollmentReference, type X12FatalCode, type X12FunctionalGroup, type X12HealthCoverage, type X12HiCategory, type X12HiCodeSystem, type X12HiQualifier, type X12HierarchicalLevel, type X12Hl, type X12Interchange, type X12LineAdjudication, type X12LineDrug, type X12OrphanAnchor, type X12OrphanAnchorKind, type X12OrphanSegment, type X12OtherSubscriber, X12ParseError, type X12ParseOptions, type X12ParseWarning, type X12Position, type X12PremiumAddress, type X12PremiumAdjustment, type X12PremiumDate, type X12PremiumEntity, type X12PremiumOpenItem, type X12PremiumParty, type X12PremiumPaymentHeader, type X12PremiumPayments, type X12PremiumPerson, type X12PremiumReference, type X12PremiumRemittance, type X12PremiumTrace, type X12Profile, type X12ProfileDescription, type X12ProfileEffect, X12ProfileError, type X12ProfileQuirk, type X12ProfileSpec, type X12RemitAddress, type X12RemitAdjustment, type X12RemitAmount, type X12RemitClaim, type X12RemitContact, type X12RemitParty, type X12RemitPaymentHeader, type X12RemitPerson, type X12RemitProvider, type X12RemitProviderAdjustment, type X12RemitReference, type X12RemitRemark, type X12RemitServiceLine, type X12RemitTrace, type X12Remittance, type X12RequiredLoop, type X12ReviewDecision, type X12Segment, type X12ServiceLineStatus, type X12ServiceReview, type X12ServicesReview, type X12StatusCode, type X12StatusDate, type X12StatusEntity, type X12StatusInfo, type X12StatusMember, type X12StatusReference, type X12StatusTrace, type X12SubscriberInfo, type X12ToothInformation, type X12TransactionSet, type X12UnexpectedSegmentContext, type X12WarningCode, type X12WarningPartition, type X12_837ServiceLine, type X12_837ServiceLineDental, type X12_837ServiceLineInstitutional, type X12_837ServiceLineProfessional, type X12_837Submission, 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 };
13632
+ 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, type AckBuildErrorCode, BALANCE_INVARIANTS, BUILD_REFUSAL_VALUE_MAX_LENGTH, BUILD_REFUSAL_VALUE_MAX_RENDERED, type Build271AddressSpec, type Build271BenefitSpec, type Build271DateSpec, type Build271DependentSpec, type Build271EntitySpec, type Build271EnvelopeSpec, type Build271InformationReceiverSpec, type Build271InformationSourceSpec, type Build271MemberSpec, type Build271ReferenceSpec, type Build271ServiceTypeSpec, type Build271Spec, type Build271SubscriberSpec, type Build271TraceSpec, type Build277ClaimSpec, type Build277DateSpec, type Build277DependentSpec, type Build277EntitySpec, type Build277EnvelopeSpec, type Build277InformationReceiverSpec, type Build277InformationSourceSpec, type Build277MemberSpec, type Build277ProviderSpec, type Build277ReferenceSpec, type Build277ServiceLineSpec, type Build277Spec, type Build277StatusCodeSpec, type Build277StatusSpec, type Build277SubscriberSpec, type Build277TraceSpec, type Build278DateSpec, type Build278DecisionSpec, type Build278DependentSpec, type Build278DiagnosisSpec, type Build278EntitySpec, type Build278EnvelopeSpec, type Build278HeaderSpec, type Build278MemberSpec, type Build278ReferenceSpec, type Build278ReviewSpec, type Build278Spec, type Build278SubscriberSpec, type Build278TraceSpec, type Build820AddressSpec, type Build820AdjustmentSpec, type Build820DateSpec, type Build820EntitySpec, type Build820EnvelopeSpec, type Build820OpenItemSpec, type Build820PartySpec, type Build820PaymentSpec, type Build820PersonSpec, type Build820ReferenceSpec, type Build820RemittanceSpec, type Build820Spec, type Build820TraceSpec, type Build834AddressSpec, type Build834AmountSpec, type Build834CoordinationOfBenefitsSpec, type Build834CoverageSpec, type Build834DateSpec, type Build834EnvelopeSpec, type Build834HeaderSpec, type Build834MemberNameSpec, type Build834MemberSpec, type Build834PartySpec, type Build834ReferenceSpec, type Build834Spec, type Build835AddressSpec, type Build835AdjustmentSpec, type Build835AmountSpec, type Build835ClaimSpec, type Build835ContactSpec, type Build835EnvelopeSpec, type Build835PartySpec, type Build835PaymentSpec, type Build835PersonSpec, type Build835ProviderAdjustmentSpec, type Build835ProviderSpec, type Build835ReferenceSpec, type Build835RemarkSpec, type Build835ServiceLineSpec, type Build835Spec, type Build835TraceSpec, type Build837AddressSpec, type Build837AdjudicationSpec, type Build837AdjustmentSpec, type Build837AmountSpec, type Build837BillingProviderSpec, type Build837ClaimSpec, type Build837ContactSpec, type Build837DateSpec, type Build837DrugSpec, type Build837EntitySpec, type Build837EnvelopeSpec, type Build837HiCodeSpec, type Build837NoteSpec, type Build837OtherSubscriberSpec, type Build837PatientSpec, type Build837ReferenceSpec, type Build837ServiceLineBaseSpec, type Build837ServiceLineDentalSpec, type Build837ServiceLineInstitutionalSpec, type Build837ServiceLineProfessionalSpec, type Build837ServiceLineSpec, type Build837Spec, type Build837SubscriberInfoSpec, type Build837SubscriberSpec, type Build837ToothSpec, type Build999ElementErrorSpec, type Build999EnvelopeSpec, type Build999FunctionalGroupSpec, type Build999SegmentErrorSpec, type Build999Spec, type Build999TransactionResponseSpec, type BuildTA1Options, type BuildTA1Spec, 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, type Claim837BuildErrorCode, type ClaimAdjustmentGroupCode, ClaimStatus277BuildError, type ClaimStatus277BuildErrorCode, type CodeListEntry, type CodeListMeta, type CodeListSnapshot, DELIMITER_POSITIONS, type DefineLoopSpecInput, type Delimiters, 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, type Eligibility271BuildErrorCode, Enrollment834BuildError, type Enrollment834BuildErrorCode, FATAL_CODES, type FunctionalGroupSpec, type GeSegment, type GsSegment, HI_QUALIFIERS, HL_LEVEL_CODES, IK3_SYNTAX_ERROR_CODES, IK4_SYNTAX_ERROR_CODES, ISA_MIN_LENGTH, type IeaSegment, type Ik304Code, type Ik403Code, type InterchangeSpec, type IsaSegment, type LoopMax, type LoopSegmentSpec, type LoopSpec, LoopSpecDefinitionError, type LoopUsage, MAINTENANCE_TYPE_CODES, NM1_QUALIFIERS, NON_SPEC_SEGMENT_ID, type OnWarningCallback, 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, type Premium820BuildErrorCode, 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, type Remit835BuildErrorCode, 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, type SegmentSpec, type SerializeOptions, ServicesReview278BuildError, type ServicesReview278BuildErrorCode, TA1_ACK_CODES, TA1_NOTE_CODES, type Ta1AckCode, type Ta1NoteCode, type Ta1Segment, type TransactionSetSpec, UNEXPECTED_SEGMENT_CONTEXTS, VERSION, WARNING_CODES, type X12Ack999, type X12Ack999Ak1, type X12Ack999Ak2, type X12Ack999Ak9, type X12Ack999ElementNote, type X12Ack999Ik3, type X12Ack999Ik4, type X12Ack999Ik4Position, type X12Ack999Ik5, type X12Ack999SegmentNote, type X12Ack999TransactionResponse, type X12AckDispositionCode, type X12AckTA1, type X12AuthDate, type X12AuthDiagnosis, type X12AuthEntity, type X12AuthHeader, type X12AuthMember, type X12AuthReference, type X12AuthTrace, type X12BalanceInvariant, X12BuildError, type X12BuildErrorCode, type X12Claim, type X12Claim837Variant, type X12ClaimAddress, type X12ClaimAmount, type X12ClaimContact, type X12ClaimDate, type X12ClaimEntity, type X12ClaimHiCode, type X12ClaimMember, type X12ClaimNote, type X12ClaimReference, type X12ClaimStatus, type X12ClaimStatusResponse, type X12ControlNumberPair, type X12CoordinationOfBenefits, X12Decimal, type X12DecimalRead, type X12DecimalStatus, type X12DecimalWarningSink, type X12Eligibility, type X12EligibilityAddress, type X12EligibilityBenefit, type X12EligibilityDate, type X12EligibilityDependent, type X12EligibilityEntity, type X12EligibilityMember, type X12EligibilityReference, type X12EligibilityServiceType, type X12EligibilitySubscriber, type X12EligibilityTrace, type X12Enrollment, type X12EnrollmentAddress, type X12EnrollmentAmount, type X12EnrollmentDate, type X12EnrollmentHeader, type X12EnrollmentMember, type X12EnrollmentParty, type X12EnrollmentReference, type X12FatalCode, type X12FunctionalGroup, type X12HealthCoverage, type X12HiCategory, type X12HiCodeSystem, type X12HiQualifier, type X12HierarchicalLevel, type X12Hl, type X12Interchange, type X12LineAdjudication, type X12LineDrug, type X12OrphanAnchor, type X12OrphanAnchorKind, type X12OrphanSegment, type X12OtherSubscriber, X12ParseError, type X12ParseOptions, type X12ParseWarning, type X12Position, type X12PremiumAddress, type X12PremiumAdjustment, type X12PremiumDate, type X12PremiumEntity, type X12PremiumOpenItem, type X12PremiumParty, type X12PremiumPaymentHeader, type X12PremiumPayments, type X12PremiumPerson, type X12PremiumReference, type X12PremiumRemittance, type X12PremiumTrace, type X12Profile, type X12ProfileDescription, type X12ProfileEffect, X12ProfileError, type X12ProfileQuirk, type X12ProfileSpec, type X12RemitAddress, type X12RemitAdjustment, type X12RemitAmount, type X12RemitClaim, type X12RemitContact, type X12RemitParty, type X12RemitPaymentHeader, type X12RemitPerson, type X12RemitProvider, type X12RemitProviderAdjustment, type X12RemitReference, type X12RemitRemark, type X12RemitServiceLine, type X12RemitTrace, type X12Remittance, type X12RequiredLoop, type X12ReviewDecision, type X12Segment, type X12ServiceLineStatus, type X12ServiceReview, type X12ServicesReview, type X12StatusCode, type X12StatusDate, type X12StatusEntity, type X12StatusInfo, type X12StatusMember, type X12StatusReference, type X12StatusTrace, type X12SubscriberInfo, type X12ToothInformation, type X12TransactionSet, type X12UnexpectedSegmentContext, type X12WarningCode, type X12WarningPartition, type X12_837ServiceLine, type X12_837ServiceLineDental, type X12_837ServiceLineInstitutional, type X12_837ServiceLineProfessional, type X12_837Submission, X12_ACK_DISPOSITION_CODES, X12_BUILD_ERROR_CODES, amountRowDropped, balanceNotEvaluable, 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, payToAddressRepeated, pre005010, profiles, readElementDecimal, remitBalanceMismatch, renderCallerValue, resolveHiQualifier, segmentCountMismatch, serializeX12, serviceLineDropped, serviceLineNotDecoded, serviceSegmentWithoutLx, setDefaultProfile, statedAmountDiscarded, trailingGarbage, transactionCountMismatch, unescapeRelease, unexpectedSegment, unknown837Variant, unknownCarc, unknownClaimStatus, unknownClaimStatusCategory, unknownHiQualifier, unknownMaintenanceType, unknownRarc, unparseableDecimal };