@cosyte/x12 0.0.12 → 0.0.14
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/CHANGELOG.md +398 -2
- package/KNOWN-LIMITATIONS.md +313 -30
- package/README.md +2 -2
- package/dist/index.cjs +258 -74
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +437 -51
- package/dist/index.d.ts +437 -51
- package/dist/index.mjs +253 -75
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -78,6 +78,7 @@ declare const WARNING_CODES: {
|
|
|
78
78
|
readonly X12_UNKNOWN_HI_QUALIFIER: "X12_UNKNOWN_HI_QUALIFIER";
|
|
79
79
|
readonly X12_MISSING_REQUIRED_LOOP: "X12_MISSING_REQUIRED_LOOP";
|
|
80
80
|
readonly X12_837_UNKNOWN_VARIANT: "X12_837_UNKNOWN_VARIANT";
|
|
81
|
+
readonly X12_837_AMBIGUOUS_VARIANT: "X12_837_AMBIGUOUS_VARIANT";
|
|
81
82
|
readonly X12_UNKNOWN_CLAIM_STATUS_CATEGORY: "X12_UNKNOWN_CLAIM_STATUS_CATEGORY";
|
|
82
83
|
readonly X12_UNKNOWN_CLAIM_STATUS: "X12_UNKNOWN_CLAIM_STATUS";
|
|
83
84
|
readonly X12_834_UNKNOWN_MAINTENANCE_TYPE: "X12_834_UNKNOWN_MAINTENANCE_TYPE";
|
|
@@ -85,7 +86,12 @@ declare const WARNING_CODES: {
|
|
|
85
86
|
readonly X12_837_SERVICE_LINE_NOT_DECODED: "X12_837_SERVICE_LINE_NOT_DECODED";
|
|
86
87
|
readonly X12_837_SERVICE_LINE_DROPPED: "X12_837_SERVICE_LINE_DROPPED";
|
|
87
88
|
readonly X12_837_SERVICE_SEGMENT_WITHOUT_LX: "X12_837_SERVICE_SEGMENT_WITHOUT_LX";
|
|
89
|
+
readonly X12_837_SERVICE_SEGMENT_REPEATED: "X12_837_SERVICE_SEGMENT_REPEATED";
|
|
88
90
|
readonly X12_837_ENTITY_SEGMENT_DISCARDED_AFTER_LX: "X12_837_ENTITY_SEGMENT_DISCARDED_AFTER_LX";
|
|
91
|
+
readonly X12_837_PAY_TO_ADDRESS_REPEATED: "X12_837_PAY_TO_ADDRESS_REPEATED";
|
|
92
|
+
readonly X12_835_BALANCE_NOT_EVALUABLE: "X12_835_BALANCE_NOT_EVALUABLE";
|
|
93
|
+
readonly X12_AMOUNT_ROW_DROPPED: "X12_AMOUNT_ROW_DROPPED";
|
|
94
|
+
readonly X12_STATED_AMOUNT_DISCARDED: "X12_STATED_AMOUNT_DISCARDED";
|
|
89
95
|
};
|
|
90
96
|
/**
|
|
91
97
|
* Discriminant type for `X12ParseWarning.code`. Narrowing a warning by this
|
|
@@ -468,6 +474,29 @@ declare function unexpectedSegment(position: X12Position, context: X12Unexpected
|
|
|
468
474
|
* ```
|
|
469
475
|
*/
|
|
470
476
|
declare function remitBalanceMismatch(position: X12Position, invariant: X12BalanceInvariant): X12ParseWarning;
|
|
477
|
+
/**
|
|
478
|
+
* Build an `X12_835_BALANCE_NOT_EVALUABLE` warning. Emitted where a term of
|
|
479
|
+
* a TR3 X221A1 §1.10.2 invariant is `undefined` on the model, so the
|
|
480
|
+
* equation has nothing to compare on one side. `invariant` names which
|
|
481
|
+
* equation could not be run.
|
|
482
|
+
*
|
|
483
|
+
* This is deliberately a DIFFERENT code from
|
|
484
|
+
* {@link remitBalanceMismatch}: that one asserts a computed inequality
|
|
485
|
+
* between amounts the sender supplied, and this one asserts only that the
|
|
486
|
+
* comparison could not be made. Reading an absent term as `0` is what made
|
|
487
|
+
* the two indistinguishable before `X12Decimal | undefined`, and it is the
|
|
488
|
+
* thing this code exists to stop.
|
|
489
|
+
*
|
|
490
|
+
* @example
|
|
491
|
+
* ```ts
|
|
492
|
+
* import { balanceNotEvaluable, BALANCE_INVARIANTS } from "@cosyte/x12";
|
|
493
|
+
* const w = balanceNotEvaluable(
|
|
494
|
+
* { segmentIndex: 12, groupIndex: 0, transactionIndex: 0 },
|
|
495
|
+
* BALANCE_INVARIANTS.CLAIM,
|
|
496
|
+
* );
|
|
497
|
+
* ```
|
|
498
|
+
*/
|
|
499
|
+
declare function balanceNotEvaluable(position: X12Position, invariant: X12BalanceInvariant): X12ParseWarning;
|
|
471
500
|
/**
|
|
472
501
|
* Build an `X12_UNKNOWN_CARC` warning. Emitted when a CAS adjustment
|
|
473
502
|
* carries a CARC code outside the bundled snapshot (see
|
|
@@ -575,6 +604,38 @@ declare function missingRequiredLoop(position: X12Position, loop: X12RequiredLoo
|
|
|
575
604
|
* ```
|
|
576
605
|
*/
|
|
577
606
|
declare function unknown837Variant(position: X12Position): X12ParseWarning;
|
|
607
|
+
/**
|
|
608
|
+
* Build an `X12_837_AMBIGUOUS_VARIANT` warning. Emitted by the 837 helper
|
|
609
|
+
* when the SVx fall-back is what resolved the variant AND the transaction
|
|
610
|
+
* body carries service segments naming more than one variant, so the
|
|
611
|
+
* resolution is a guess between contradictory evidence. The submission still
|
|
612
|
+
* ships with the resolved variant on `submission.variant`; nothing about how
|
|
613
|
+
* any claim or line decodes is changed by this warning.
|
|
614
|
+
*
|
|
615
|
+
* It reports the RESOLUTION, not the document. A caller-supplied `opts.type`
|
|
616
|
+
* wins ahead of the fall-back, and so does an ST-03 naming one of the three
|
|
617
|
+
* known implementation-convention references, and in either case no guess was
|
|
618
|
+
* made and this code is not raised however mixed the body is.
|
|
619
|
+
*
|
|
620
|
+
* Which service segment is the stray one is deliberately not decided: this
|
|
621
|
+
* reader cannot tell a stray service segment from a conformant one, and the
|
|
622
|
+
* fall-back takes the first in the body whether or not a Loop 2400 was open
|
|
623
|
+
* at it. Distinct from {@link unknown837Variant}, which is raised where
|
|
624
|
+
* NOTHING resolved a variant; the two can never travel together, because a
|
|
625
|
+
* body with conflicting service segments has at least one to fall back on.
|
|
626
|
+
*
|
|
627
|
+
* `get837Claims` anchors this at the **ST**, which is `tx.segments[0]` and
|
|
628
|
+
* carries the ST-03 that would have settled the question. No `elementIndex`
|
|
629
|
+
* is set: the conflict is a property of the body rather than of an element,
|
|
630
|
+
* and one route into it is an ST-03 that is absent altogether.
|
|
631
|
+
*
|
|
632
|
+
* @example
|
|
633
|
+
* ```ts
|
|
634
|
+
* import { ambiguous837Variant } from "@cosyte/x12";
|
|
635
|
+
* const w = ambiguous837Variant({ segmentIndex: 0, transactionIndex: 0 });
|
|
636
|
+
* ```
|
|
637
|
+
*/
|
|
638
|
+
declare function ambiguous837Variant(position: X12Position): X12ParseWarning;
|
|
578
639
|
/**
|
|
579
640
|
* Build an `X12_837_SERVICE_LINE_NOT_DECODED` warning. Emitted by the 837
|
|
580
641
|
* helper when a Loop 2400 service line is closed without ever having
|
|
@@ -582,9 +643,11 @@ declare function unknown837Variant(position: X12Position): X12ParseWarning;
|
|
|
582
643
|
* carries no SVx at all, or it carries one belonging to a different 837
|
|
583
644
|
* variant than ST-03 (or the caller's `type` option) named. The line is
|
|
584
645
|
* still retained, and every segment stays verbatim on the transaction set,
|
|
585
|
-
* but the line's `charge` and `units` are
|
|
586
|
-
*
|
|
587
|
-
*
|
|
646
|
+
* but the line's `charge` and `units` are `undefined` rather than anything
|
|
647
|
+
* read off the wire. Through `0.0.12` they were the accumulator's seeded
|
|
648
|
+
* `X12Decimal.ZERO`, which a consumer could not tell from a charge of zero
|
|
649
|
+
* the sender did state. `position` names the LX segment that opened the
|
|
650
|
+
* line.
|
|
588
651
|
*
|
|
589
652
|
* @example
|
|
590
653
|
* ```ts
|
|
@@ -636,7 +699,10 @@ declare function serviceLineDropped(position: X12Position): X12ParseWarning;
|
|
|
636
699
|
* implementation convention, the reader falls back to the first
|
|
637
700
|
* SV1 / SV2 / SV3 in the transaction, and a segment reported here is
|
|
638
701
|
* eligible for that fallback like any other - pre-existing behaviour,
|
|
639
|
-
* documented in `KNOWN-LIMITATIONS.md
|
|
702
|
+
* documented in `KNOWN-LIMITATIONS.md` and unchanged. Where that fallback
|
|
703
|
+
* decided the variant and the body names more than one,
|
|
704
|
+
* {@link ambiguous837Variant} reports the resolution as contested; it is
|
|
705
|
+
* additive and does not change which documents reach this code.
|
|
640
706
|
*
|
|
641
707
|
* @example
|
|
642
708
|
* ```ts
|
|
@@ -645,6 +711,52 @@ declare function serviceLineDropped(position: X12Position): X12ParseWarning;
|
|
|
645
711
|
* ```
|
|
646
712
|
*/
|
|
647
713
|
declare function serviceSegmentWithoutLx(position: X12Position): X12ParseWarning;
|
|
714
|
+
/**
|
|
715
|
+
* Build an `X12_837_SERVICE_SEGMENT_REPEATED` warning. Emitted by the 837
|
|
716
|
+
* helper at the second and each subsequent `SV1` / `SV2` / `SV3` to arrive
|
|
717
|
+
* inside one open Loop 2400. `position` names the repeated service segment
|
|
718
|
+
* itself, which is the segment a consumer resolves back through
|
|
719
|
+
* `tx.segments`; there is no `elementIndex`, because what is reported is a
|
|
720
|
+
* second occurrence of the segment rather than a defect in any element of it.
|
|
721
|
+
*
|
|
722
|
+
* Once per repeat, so three service segments in one Loop 2400 are two
|
|
723
|
+
* warnings. The count lives on the line and is cleared when the line flushes,
|
|
724
|
+
* so a first service segment under a later `LX` is a first and never a
|
|
725
|
+
* repeat - a scope, not a latch.
|
|
726
|
+
*
|
|
727
|
+
* **The rule the reader applies, because a consumer cannot infer it from a
|
|
728
|
+
* one-slot model:** occurrences are never merged and the LAST one matching
|
|
729
|
+
* the submission's resolved variant wins, writing every slot its kind writes.
|
|
730
|
+
* So an earlier matching occurrence leaves nothing on the line, not even in a
|
|
731
|
+
* slot the later one's own element is absent from - there the later one's
|
|
732
|
+
* `undefined` replaces an amount the earlier one stated. Through `0.0.13` a
|
|
733
|
+
* charge of `8500` and a CPT of `99213` were replaced by a repeat's `12` and
|
|
734
|
+
* `99999` with `warnings: []`. An occurrence whose kind does NOT match the
|
|
735
|
+
* resolved variant is read into nothing and overwrites nothing.
|
|
736
|
+
*
|
|
737
|
+
* It reports that the DOCUMENT sent more than one, and asserts nothing about
|
|
738
|
+
* what usage the TR3s give the segment. It does not decide which occurrence
|
|
739
|
+
* the sender meant: this reader cannot tell a stray service segment from a
|
|
740
|
+
* conformant one, exactly as {@link ambiguous837Variant} records for the
|
|
741
|
+
* variant fallback.
|
|
742
|
+
*
|
|
743
|
+
* Disjoint from {@link serviceSegmentWithoutLx} by construction - that one
|
|
744
|
+
* fires only where no Loop 2400 is open and this one only where one is - so
|
|
745
|
+
* the two can never name the same segment. Read that as disjointness only:
|
|
746
|
+
* a service segment following an `LX` that opened no line is named by
|
|
747
|
+
* NEITHER, because {@link serviceLineDropped} at that `LX` already reports
|
|
748
|
+
* the loss and suppresses the orphan code. {@link serviceLineNotDecoded} is
|
|
749
|
+
* raised at the `LX` and reports that no matching service segment decoded
|
|
750
|
+
* onto the line at all; a document can carry both codes on different
|
|
751
|
+
* segments.
|
|
752
|
+
*
|
|
753
|
+
* @example
|
|
754
|
+
* ```ts
|
|
755
|
+
* import { serviceSegmentRepeated } from "@cosyte/x12";
|
|
756
|
+
* const w = serviceSegmentRepeated({ segmentIndex: 9, transactionIndex: 0 });
|
|
757
|
+
* ```
|
|
758
|
+
*/
|
|
759
|
+
declare function serviceSegmentRepeated(position: X12Position): X12ParseWarning;
|
|
648
760
|
/**
|
|
649
761
|
* Build an `X12_837_ENTITY_SEGMENT_DISCARDED_AFTER_LX` warning. Emitted by
|
|
650
762
|
* the 837 helper for an `N3` / `N4` / `PER` / `REF` that reached no party
|
|
@@ -674,6 +786,38 @@ declare function serviceSegmentWithoutLx(position: X12Position): X12ParseWarning
|
|
|
674
786
|
* ```
|
|
675
787
|
*/
|
|
676
788
|
declare function entitySegmentDiscardedAfterLx(position: X12Position): X12ParseWarning;
|
|
789
|
+
/**
|
|
790
|
+
* Build an `X12_837_PAY_TO_ADDRESS_REPEATED` warning. Emitted by the 837
|
|
791
|
+
* helper at the second and each subsequent `NM1*87` within one Loop 2000A,
|
|
792
|
+
* where the TR3s allow Loop 2010AB at most once. `position` names the
|
|
793
|
+
* repeated `NM1*87` itself, which is the segment a consumer resolves back
|
|
794
|
+
* through `tx.segments`; there is no `elementIndex`, because what is being
|
|
795
|
+
* reported is a second occurrence of the segment rather than a defect in
|
|
796
|
+
* any element of it.
|
|
797
|
+
*
|
|
798
|
+
* Once per repeat, so two repeats in one Loop 2000A are two warnings. The
|
|
799
|
+
* counter resets at the Loop 2000A `HL`, beside the pay-to slot it guards -
|
|
800
|
+
* a first `NM1*87` under a later billing provider is a first, not a repeat.
|
|
801
|
+
*
|
|
802
|
+
* It reports that the DOCUMENT named the pay-to address more than once. It
|
|
803
|
+
* does NOT report that anything was mis-read, and it is not a service-line
|
|
804
|
+
* or entity-segment code: nothing else on the channel says this, and this
|
|
805
|
+
* says nothing about the other 837 codes' subjects.
|
|
806
|
+
*
|
|
807
|
+
* **The rule the reader applies, because a consumer cannot infer it from a
|
|
808
|
+
* one-slot model:** occurrences are never merged, the last occurrence that
|
|
809
|
+
* states an address of its own wins, and an occurrence that states none does
|
|
810
|
+
* not blank one that did. "States an address" means exactly what the emit
|
|
811
|
+
* side would write a segment for - see `./address-segments.ts`, which both
|
|
812
|
+
* sides share so they cannot drift.
|
|
813
|
+
*
|
|
814
|
+
* @example
|
|
815
|
+
* ```ts
|
|
816
|
+
* import { payToAddressRepeated } from "@cosyte/x12";
|
|
817
|
+
* const w = payToAddressRepeated({ segmentIndex: 12, transactionIndex: 0 });
|
|
818
|
+
* ```
|
|
819
|
+
*/
|
|
820
|
+
declare function payToAddressRepeated(position: X12Position): X12ParseWarning;
|
|
677
821
|
/**
|
|
678
822
|
* Build an `X12_UNKNOWN_CLAIM_STATUS_CATEGORY` warning. Emitted by the 277
|
|
679
823
|
* / 277CA helpers when an STC composite's Claim Status Category Code
|
|
@@ -734,11 +878,13 @@ declare function unknownMaintenanceType(position: X12Position): X12ParseWarning;
|
|
|
734
878
|
*
|
|
735
879
|
* `position.elementIndex` is the 1-indexed element that failed, so a
|
|
736
880
|
* consumer can go read the verbatim bytes off the segment. The message
|
|
737
|
-
* takes NO discriminant and deliberately does not name
|
|
738
|
-
*
|
|
739
|
-
*
|
|
740
|
-
*
|
|
741
|
-
*
|
|
881
|
+
* takes NO discriminant and deliberately does not name what landed in the
|
|
882
|
+
* slot instead: this library's own readers now either leave the slot
|
|
883
|
+
* `undefined` or drop the row entirely, and a reader built on
|
|
884
|
+
* {@link "./segment.js".elementDecimalOrZero} still substitutes
|
|
885
|
+
* `X12Decimal.ZERO`. The one thing true of all of them is that whatever
|
|
886
|
+
* occupies that slot is not the sender's. Read the model field itself to
|
|
887
|
+
* see which happened.
|
|
742
888
|
*
|
|
743
889
|
* @example
|
|
744
890
|
* ```ts
|
|
@@ -747,6 +893,91 @@ declare function unknownMaintenanceType(position: X12Position): X12ParseWarning;
|
|
|
747
893
|
* ```
|
|
748
894
|
*/
|
|
749
895
|
declare function unparseableDecimal(position: X12Position): X12ParseWarning;
|
|
896
|
+
/**
|
|
897
|
+
* Build an `X12_AMOUNT_ROW_DROPPED` warning. Emitted where an `AMT` or `ADX`
|
|
898
|
+
* decoded no value from its amount element (AMT-02, ADX-01) and the reader
|
|
899
|
+
* therefore built no row at all, so the qualifier or adjustment reason code
|
|
900
|
+
* the sender did state is off the model with it.
|
|
901
|
+
*
|
|
902
|
+
* `position` names the `AMT` / `ADX` segment itself and carries NO
|
|
903
|
+
* `elementIndex`: one of the two routes here is an absent element, and an
|
|
904
|
+
* absent element has no index to name. The element the reader was reading is
|
|
905
|
+
* fixed by the segment anyway - AMT-02 or ADX-01 - so the segment locates the
|
|
906
|
+
* loss exactly.
|
|
907
|
+
*
|
|
908
|
+
* It is raised for BOTH routes to an undecoded amount, and
|
|
909
|
+
* {@link unparseableDecimal} is unchanged by it: a present-but-undecodable
|
|
910
|
+
* element still raises `X12_UNPARSEABLE_DECIMAL` at its own `elementIndex`,
|
|
911
|
+
* now ALONGSIDE this code rather than instead of it, so a consumer predicate
|
|
912
|
+
* written against that code alone still fires exactly where it did. The
|
|
913
|
+
* absent route raises this code and nothing else, which is what tells the two
|
|
914
|
+
* apart.
|
|
915
|
+
*
|
|
916
|
+
* Read the bound literally. This reports a row whose AMOUNT was read and
|
|
917
|
+
* decoded no value. A segment a reader discards before reading its amount is
|
|
918
|
+
* not on this channel, and neither is one whose amount decoded and then found
|
|
919
|
+
* nothing open to attach the row to. An 820 `RMR` is not on it either, for its
|
|
920
|
+
* own reason: `decodeRmr` drops on open-item IDENTITY, RMR-01 and RMR-02 both
|
|
921
|
+
* empty, before the amount is read - so an `RMR` that states an open item and
|
|
922
|
+
* no amount keeps its row with `amountPaid` `undefined`, while one that states
|
|
923
|
+
* an amount and no open item is dropped whole. That second case is a separate
|
|
924
|
+
* loss, as is an 837 `AMT` that decoded while a Loop 2430 adjudication was
|
|
925
|
+
* open; {@link statedAmountDiscarded} reports both and this code reports
|
|
926
|
+
* neither. Nothing is fabricated to stand in and the segments stay verbatim on
|
|
927
|
+
* the transaction set.
|
|
928
|
+
*
|
|
929
|
+
* @example
|
|
930
|
+
* ```ts
|
|
931
|
+
* import { amountRowDropped } from "@cosyte/x12";
|
|
932
|
+
* const w = amountRowDropped({ segmentIndex: 7, transactionIndex: 0 });
|
|
933
|
+
* ```
|
|
934
|
+
*/
|
|
935
|
+
declare function amountRowDropped(position: X12Position): X12ParseWarning;
|
|
936
|
+
/**
|
|
937
|
+
* Build an `X12_STATED_AMOUNT_DISCARDED` warning. Emitted where a segment
|
|
938
|
+
* POPULATED its amount element, the loop that would carry its row was open,
|
|
939
|
+
* and the reader built no row anyway - for a reason that is not a failure to
|
|
940
|
+
* decode that amount. The money the sender wrote is on no part of the typed
|
|
941
|
+
* model. **This code asserts nothing about whether that amount is decodable**:
|
|
942
|
+
* route 2 below decoded it, route 1 never attempted the decode.
|
|
943
|
+
*
|
|
944
|
+
* Two routes, enumerated because a count without its list cannot correct
|
|
945
|
+
* itself:
|
|
946
|
+
*
|
|
947
|
+
* 1. An 820 `RMR` under an open remittance loop whose RMR-01 and RMR-02 are
|
|
948
|
+
* BOTH empty while RMR-04 or RMR-05 is populated. `decodeRmr` refuses the
|
|
949
|
+
* open item on identity before either amount element is read, so a stated
|
|
950
|
+
* payment, a stated amount due and the payment action code beside them are
|
|
951
|
+
* lost together.
|
|
952
|
+
* 2. An 837 `AMT` arriving while a Loop 2430 line adjudication (`SVD`) is
|
|
953
|
+
* open, whose AMT-02 decoded. The v1 adjudication model carries no amount
|
|
954
|
+
* row, so the row is skipped rather than attached to the service line,
|
|
955
|
+
* which is this reader's own line and not the other payer's.
|
|
956
|
+
*
|
|
957
|
+
* `position` names the `RMR` / `AMT` segment itself and carries NO
|
|
958
|
+
* `elementIndex`: on the first route the loss spans RMR-04 and RMR-05 and no
|
|
959
|
+
* single element names it, and on the second the element is fixed by the
|
|
960
|
+
* segment.
|
|
961
|
+
*
|
|
962
|
+
* Read the bound as a property of the READ. This does NOT report an `AMT` or
|
|
963
|
+
* `ADX` that reaches a reader with no loop open to carry its row at all: the
|
|
964
|
+
* 834's `AMT` with no `HD` open, the 820's `ADX` with no remittance open, and
|
|
965
|
+
* the 835's and the 837's `AMT` that decodes before any claim or service line
|
|
966
|
+
* is open are all still silent, and recorded in `KNOWN-LIMITATIONS.md`. It is
|
|
967
|
+
* additive: {@link unparseableDecimal} and {@link amountRowDropped} fire on
|
|
968
|
+
* exactly the documents they fired on before. On route 1 no
|
|
969
|
+
* `X12_UNPARSEABLE_DECIMAL` accompanies this code even where the amount bytes
|
|
970
|
+
* are unreadable, because that route never attempts the decode - so never read
|
|
971
|
+
* an unaccompanied instance as evidence the bytes are postable. Read them off
|
|
972
|
+
* the segment and decode them yourself.
|
|
973
|
+
*
|
|
974
|
+
* @example
|
|
975
|
+
* ```ts
|
|
976
|
+
* import { statedAmountDiscarded } from "@cosyte/x12";
|
|
977
|
+
* const w = statedAmountDiscarded({ segmentIndex: 9, transactionIndex: 0 });
|
|
978
|
+
* ```
|
|
979
|
+
*/
|
|
980
|
+
declare function statedAmountDiscarded(position: X12Position): X12ParseWarning;
|
|
750
981
|
|
|
751
982
|
/**
|
|
752
983
|
* Type definitions for the `@cosyte/x12` profile subsystem (Phase 9).
|
|
@@ -3267,14 +3498,22 @@ interface X12Remittance {
|
|
|
3267
3498
|
* ```ts
|
|
3268
3499
|
* import type { X12RemitPaymentHeader } from "@cosyte/x12";
|
|
3269
3500
|
* declare const p: X12RemitPaymentHeader;
|
|
3270
|
-
* p.totalActualPayment
|
|
3501
|
+
* p.totalActualPayment?.toString(); // "945.00", or undefined if none decoded
|
|
3271
3502
|
* p.method; // "ACH"
|
|
3272
3503
|
* p.paymentDate; // "20260601" (CCYYMMDD, verbatim)
|
|
3273
3504
|
* ```
|
|
3274
3505
|
*/
|
|
3275
3506
|
interface X12RemitPaymentHeader {
|
|
3276
3507
|
readonly transactionHandlingCode: string;
|
|
3277
|
-
|
|
3508
|
+
/**
|
|
3509
|
+
* BPR-02, the amount the bank actually moved. `undefined` where this library decoded no value
|
|
3510
|
+
* from that element - it was absent or empty, or it held bytes that do
|
|
3511
|
+
* not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
|
|
3512
|
+
* its `elementIndex`). Through `0.0.12` both cases read
|
|
3513
|
+
* `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
|
|
3514
|
+
* did state, and the balance invariants summed that fabricated zero.
|
|
3515
|
+
*/
|
|
3516
|
+
readonly totalActualPayment: X12Decimal | undefined;
|
|
3278
3517
|
/**
|
|
3279
3518
|
* BPR-03 credit/debit flag. Spec-defined values: `"C"` (credit - money
|
|
3280
3519
|
* to provider, the normal case) or `"D"` (debit - refund / chargeback,
|
|
@@ -3418,8 +3657,8 @@ interface X12RemitContact {
|
|
|
3418
3657
|
* import type { X12RemitClaim } from "@cosyte/x12";
|
|
3419
3658
|
* declare const c: X12RemitClaim;
|
|
3420
3659
|
* c.patientControlNumber; // "PT-ACCT-001"
|
|
3421
|
-
* c.totalChargeAmount
|
|
3422
|
-
* c.totalPaymentAmount
|
|
3660
|
+
* c.totalChargeAmount?.toString(); // "500.00", or undefined if none decoded
|
|
3661
|
+
* c.totalPaymentAmount?.toString(); // "450.00", or undefined if none decoded
|
|
3423
3662
|
* c.claimStatusCode; // "1" - Processed as Primary
|
|
3424
3663
|
* c.serviceLines.length; // count of SVC loops
|
|
3425
3664
|
* ```
|
|
@@ -3428,9 +3667,33 @@ interface X12RemitClaim {
|
|
|
3428
3667
|
readonly patientControlNumber: string;
|
|
3429
3668
|
readonly claimStatusCode: string;
|
|
3430
3669
|
readonly claimStatusDescription: string | undefined;
|
|
3431
|
-
|
|
3432
|
-
|
|
3433
|
-
|
|
3670
|
+
/**
|
|
3671
|
+
* CLP-03, the total submitted charge. `undefined` where this library decoded no value
|
|
3672
|
+
* from that element - it was absent or empty, or it held bytes that do
|
|
3673
|
+
* not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
|
|
3674
|
+
* its `elementIndex`). Through `0.0.12` both cases read
|
|
3675
|
+
* `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
|
|
3676
|
+
* did state, and the balance invariants summed that fabricated zero.
|
|
3677
|
+
*/
|
|
3678
|
+
readonly totalChargeAmount: X12Decimal | undefined;
|
|
3679
|
+
/**
|
|
3680
|
+
* CLP-04, the total amount paid on the claim. `undefined` where this library decoded no value
|
|
3681
|
+
* from that element - it was absent or empty, or it held bytes that do
|
|
3682
|
+
* not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
|
|
3683
|
+
* its `elementIndex`). Through `0.0.12` both cases read
|
|
3684
|
+
* `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
|
|
3685
|
+
* did state, and the balance invariants summed that fabricated zero.
|
|
3686
|
+
*/
|
|
3687
|
+
readonly totalPaymentAmount: X12Decimal | undefined;
|
|
3688
|
+
/**
|
|
3689
|
+
* CLP-05, the patient responsibility amount. `undefined` where this library decoded no value
|
|
3690
|
+
* from that element - it was absent or empty, or it held bytes that do
|
|
3691
|
+
* not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
|
|
3692
|
+
* its `elementIndex`). Through `0.0.12` both cases read
|
|
3693
|
+
* `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
|
|
3694
|
+
* did state, and the balance invariants summed that fabricated zero.
|
|
3695
|
+
*/
|
|
3696
|
+
readonly patientResponsibilityAmount: X12Decimal | undefined;
|
|
3434
3697
|
readonly claimFilingIndicatorCode: string | undefined;
|
|
3435
3698
|
readonly payerClaimControlNumber: string | undefined;
|
|
3436
3699
|
readonly facilityTypeCode: string | undefined;
|
|
@@ -3467,14 +3730,22 @@ interface X12RemitClaim {
|
|
|
3467
3730
|
* a.groupCode; // "PR" (patient responsibility)
|
|
3468
3731
|
* a.reasonCode; // "1" (deductible)
|
|
3469
3732
|
* a.reasonDescription; // "Deductible Amount"
|
|
3470
|
-
* a.amount
|
|
3733
|
+
* a.amount?.toString(); // "50.00", or undefined if none decoded
|
|
3471
3734
|
* ```
|
|
3472
3735
|
*/
|
|
3473
3736
|
interface X12RemitAdjustment {
|
|
3474
3737
|
readonly groupCode: string;
|
|
3475
3738
|
readonly reasonCode: string;
|
|
3476
3739
|
readonly reasonDescription: string | undefined;
|
|
3477
|
-
|
|
3740
|
+
/**
|
|
3741
|
+
* The CAS adjustment amount for this triple. `undefined` where this library decoded no value
|
|
3742
|
+
* from that element - it was absent or empty, or it held bytes that do
|
|
3743
|
+
* not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
|
|
3744
|
+
* its `elementIndex`). Through `0.0.12` both cases read
|
|
3745
|
+
* `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
|
|
3746
|
+
* did state, and the balance invariants summed that fabricated zero.
|
|
3747
|
+
*/
|
|
3748
|
+
readonly amount: X12Decimal | undefined;
|
|
3478
3749
|
readonly quantity: X12Decimal | undefined;
|
|
3479
3750
|
}
|
|
3480
3751
|
/**
|
|
@@ -3593,16 +3864,32 @@ interface X12RemitRemark {
|
|
|
3593
3864
|
* declare const s: X12RemitServiceLine;
|
|
3594
3865
|
* s.productServiceIdQualifier; // "HC"
|
|
3595
3866
|
* s.productServiceId; // "99213"
|
|
3596
|
-
* s.chargeAmount
|
|
3597
|
-
* s.paymentAmount
|
|
3867
|
+
* s.chargeAmount?.toString(); // "150.00", or undefined if none decoded
|
|
3868
|
+
* s.paymentAmount?.toString(); // "135.00", or undefined if none decoded
|
|
3598
3869
|
* ```
|
|
3599
3870
|
*/
|
|
3600
3871
|
interface X12RemitServiceLine {
|
|
3601
3872
|
readonly productServiceIdQualifier: string;
|
|
3602
3873
|
readonly productServiceId: string;
|
|
3603
3874
|
readonly modifiers: readonly string[];
|
|
3604
|
-
|
|
3605
|
-
|
|
3875
|
+
/**
|
|
3876
|
+
* SVC-02, the line's submitted charge. `undefined` where this library decoded no value
|
|
3877
|
+
* from that element - it was absent or empty, or it held bytes that do
|
|
3878
|
+
* not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
|
|
3879
|
+
* its `elementIndex`). Through `0.0.12` both cases read
|
|
3880
|
+
* `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
|
|
3881
|
+
* did state, and the balance invariants summed that fabricated zero.
|
|
3882
|
+
*/
|
|
3883
|
+
readonly chargeAmount: X12Decimal | undefined;
|
|
3884
|
+
/**
|
|
3885
|
+
* SVC-03, the amount paid on the line. `undefined` where this library decoded no value
|
|
3886
|
+
* from that element - it was absent or empty, or it held bytes that do
|
|
3887
|
+
* not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
|
|
3888
|
+
* its `elementIndex`). Through `0.0.12` both cases read
|
|
3889
|
+
* `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
|
|
3890
|
+
* did state, and the balance invariants summed that fabricated zero.
|
|
3891
|
+
*/
|
|
3892
|
+
readonly paymentAmount: X12Decimal | undefined;
|
|
3606
3893
|
/** SVC-04 - NUBC revenue code. Absent on a professional line. */
|
|
3607
3894
|
readonly revenueCode: string | undefined;
|
|
3608
3895
|
/** SVC-05 - Units of Service Paid Count: what the payer adjudicated. */
|
|
@@ -3647,7 +3934,7 @@ interface X12RemitServiceLine {
|
|
|
3647
3934
|
* p.fiscalPeriodDate; // "20261231"
|
|
3648
3935
|
* p.reasonCode; // "WO" (withholding)
|
|
3649
3936
|
* p.subCode; // "123456" (related-claim reference)
|
|
3650
|
-
* p.amount
|
|
3937
|
+
* p.amount?.toString();// "50.00", or undefined if none decoded
|
|
3651
3938
|
* ```
|
|
3652
3939
|
*/
|
|
3653
3940
|
interface X12RemitProviderAdjustment {
|
|
@@ -3655,7 +3942,15 @@ interface X12RemitProviderAdjustment {
|
|
|
3655
3942
|
readonly fiscalPeriodDate: string;
|
|
3656
3943
|
readonly reasonCode: string;
|
|
3657
3944
|
readonly subCode: string | undefined;
|
|
3658
|
-
|
|
3945
|
+
/**
|
|
3946
|
+
* The PLB adjustment amount, with its raw EDI sign. `undefined` where this library decoded no value
|
|
3947
|
+
* from that element - it was absent or empty, or it held bytes that do
|
|
3948
|
+
* not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
|
|
3949
|
+
* its `elementIndex`). Through `0.0.12` both cases read
|
|
3950
|
+
* `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
|
|
3951
|
+
* did state, and the balance invariants summed that fabricated zero.
|
|
3952
|
+
*/
|
|
3953
|
+
readonly amount: X12Decimal | undefined;
|
|
3659
3954
|
}
|
|
3660
3955
|
|
|
3661
3956
|
/**
|
|
@@ -3686,9 +3981,9 @@ interface X12RemitProviderAdjustment {
|
|
|
3686
3981
|
* for (const tx of group.transactions) {
|
|
3687
3982
|
* if (tx.st.elements[1] !== "835") continue;
|
|
3688
3983
|
* const remit = get835(ix.delimiters, tx);
|
|
3689
|
-
* remit?.payment.totalActualPayment
|
|
3984
|
+
* remit?.payment.totalActualPayment?.toString();
|
|
3690
3985
|
* for (const claim of remit?.claims ?? []) {
|
|
3691
|
-
* claim.totalPaymentAmount
|
|
3986
|
+
* claim.totalPaymentAmount?.toString();
|
|
3692
3987
|
* }
|
|
3693
3988
|
* }
|
|
3694
3989
|
* }
|
|
@@ -4541,6 +4836,20 @@ declare const REMIT_835_LOOP_1000B: LoopSpec;
|
|
|
4541
4836
|
* > slice with a forward-pointer to this module so the contract stays
|
|
4542
4837
|
* > consistent.
|
|
4543
4838
|
*
|
|
4839
|
+
* **A term that did not decode makes the equation UNEVALUABLE, and that is a
|
|
4840
|
+
* third outcome, not a failure.** Every amount these three checks read is
|
|
4841
|
+
* `X12Decimal | undefined` on the model, and `undefined` means this library
|
|
4842
|
+
* decoded no value from that element. Where any term of an invariant is
|
|
4843
|
+
* `undefined` the check emits
|
|
4844
|
+
* {@link "../../parser/warnings.js".WARNING_CODES.X12_835_BALANCE_NOT_EVALUABLE}
|
|
4845
|
+
* and never `X12_835_REMIT_BALANCE_MISMATCH`: the mismatch code asserts a
|
|
4846
|
+
* computed inequality between amounts the sender supplied, and there is no
|
|
4847
|
+
* such computation to report. Substituting `0` for the absent term is what
|
|
4848
|
+
* this library did through `0.0.12`, and it made "the payer paid nothing"
|
|
4849
|
+
* and "the payer said nothing" the same reading. An EMPTY list of
|
|
4850
|
+
* adjustments is NOT that case: it sums to `X12Decimal.ZERO`, because a
|
|
4851
|
+
* claim carrying no CAS really did state no adjustments.
|
|
4852
|
+
*
|
|
4544
4853
|
* **PHI discipline: the message names the equation and carries no value at
|
|
4545
4854
|
* all**, not even an amount. An EDI amount is a consumer-controlled element
|
|
4546
4855
|
* like any other: `CLP-03` is whatever the payer sent, so the spec'd /
|
|
@@ -4634,14 +4943,14 @@ declare function checkServiceLineBalance(claim: X12RemitClaim, position: X12Posi
|
|
|
4634
4943
|
* );
|
|
4635
4944
|
* ```
|
|
4636
4945
|
*/
|
|
4637
|
-
declare function checkRemitTotalBalance(bpr02: X12Decimal, claims: readonly X12RemitClaim[], providerAdjustments: readonly X12RemitProviderAdjustment[], position: X12Position): X12ParseWarning | undefined;
|
|
4946
|
+
declare function checkRemitTotalBalance(bpr02: X12Decimal | undefined, claims: readonly X12RemitClaim[], providerAdjustments: readonly X12RemitProviderAdjustment[], position: X12Position): X12ParseWarning | undefined;
|
|
4638
4947
|
|
|
4639
4948
|
/**
|
|
4640
4949
|
* Typed model for an X12 005010 837 Healthcare Claim - the three sibling
|
|
4641
|
-
*
|
|
4642
|
-
* `
|
|
4643
|
-
* `get837Claims()` - adding fields is
|
|
4644
|
-
* fields is breaking.
|
|
4950
|
+
* TR3 families (`005010X222` Professional / `005010X223` Institutional /
|
|
4951
|
+
* `005010X224` Dental, each together with its published errata). The shape
|
|
4952
|
+
* is the public contract of `get837Claims()` - adding fields is
|
|
4953
|
+
* backward-compatible; renaming fields is breaking.
|
|
4645
4954
|
*
|
|
4646
4955
|
* Spec source: WPC TR3s for X222A2 / X223A3 / X224A2 plus the X12 005010
|
|
4647
4956
|
* base specification (envelope + segment definitions).
|
|
@@ -4653,10 +4962,15 @@ declare function checkRemitTotalBalance(bpr02: X12Decimal, claims: readonly X12R
|
|
|
4653
4962
|
*
|
|
4654
4963
|
* Variant discrimination. {@link X12Claim837Variant} drives the
|
|
4655
4964
|
* service-line discriminated union ({@link X12_837ServiceLine}). The
|
|
4656
|
-
* walker reads ST-03's implementation convention reference
|
|
4657
|
-
*
|
|
4965
|
+
* walker reads ST-03's implementation convention reference where it
|
|
4966
|
+
* recognises one (the table lives beside `get837Claims`, and the sources
|
|
4967
|
+
* every key came from are named there); otherwise infers from service-line
|
|
4658
4968
|
* segment id (SV1 → P, SV2 → I, SV3 → D); otherwise marks the variant
|
|
4659
|
-
* `"unknown"` and emits `X12_837_UNKNOWN_VARIANT`.
|
|
4969
|
+
* `"unknown"` and emits `X12_837_UNKNOWN_VARIANT`. That inference takes the
|
|
4970
|
+
* FIRST such segment in the body, whether or not a Loop 2400 was open at it,
|
|
4971
|
+
* and where the body names more than one variant it emits
|
|
4972
|
+
* `X12_837_AMBIGUOUS_VARIANT` as well: the variant it resolved is a guess,
|
|
4973
|
+
* and a caller's `type` option is what settles it.
|
|
4660
4974
|
*/
|
|
4661
4975
|
|
|
4662
4976
|
/**
|
|
@@ -5019,7 +5333,7 @@ interface X12OtherSubscriber {
|
|
|
5019
5333
|
* declare const c: X12Claim;
|
|
5020
5334
|
* c.variant; // "P" / "I" / "D" / "unknown"
|
|
5021
5335
|
* c.claimId; // CLM-01 (patient account number)
|
|
5022
|
-
* c.totalCharge
|
|
5336
|
+
* c.totalCharge?.toString(); // CLM-02 as X12Decimal, or undefined if none decoded
|
|
5023
5337
|
* c.diagnoses[0]?.codeSystem; // "ICD-10-CM"
|
|
5024
5338
|
* c.serviceLines.length; // count of LX/SVx loops
|
|
5025
5339
|
* ```
|
|
@@ -5034,7 +5348,15 @@ interface X12Claim {
|
|
|
5034
5348
|
readonly payer: X12ClaimEntity | undefined;
|
|
5035
5349
|
readonly patient: X12ClaimMember | undefined;
|
|
5036
5350
|
readonly claimId: string;
|
|
5037
|
-
|
|
5351
|
+
/**
|
|
5352
|
+
* CLM-02, the total claim charge. `undefined` where this library decoded
|
|
5353
|
+
* no value from that element - it was absent or empty, or it held bytes
|
|
5354
|
+
* that do not decode as a decimal (which also emits
|
|
5355
|
+
* `X12_UNPARSEABLE_DECIMAL` at its `elementIndex`). Through `0.0.12` both
|
|
5356
|
+
* cases read `X12Decimal.ZERO`, indistinguishable from a claim whose
|
|
5357
|
+
* charge really is zero.
|
|
5358
|
+
*/
|
|
5359
|
+
readonly totalCharge: X12Decimal | undefined;
|
|
5038
5360
|
readonly placeOfServiceCode: string | undefined;
|
|
5039
5361
|
readonly facilityCodeQualifier: string | undefined;
|
|
5040
5362
|
readonly claimFrequencyCode: string | undefined;
|
|
@@ -5076,8 +5398,25 @@ type X12_837ServiceLine = X12_837ServiceLineProfessional | X12_837ServiceLineIns
|
|
|
5076
5398
|
/** Fields shared across every service-line variant. @internal */
|
|
5077
5399
|
interface X12_837ServiceLineBase {
|
|
5078
5400
|
readonly lineNumber: string;
|
|
5079
|
-
|
|
5080
|
-
|
|
5401
|
+
/**
|
|
5402
|
+
* The service line's charge - SV1-02 (professional), SV2-03
|
|
5403
|
+
* (institutional) or SV3-02 (dental). `undefined` where this library
|
|
5404
|
+
* decoded no value from that element: it was absent or empty, it held
|
|
5405
|
+
* bytes that do not decode as a decimal (which also emits
|
|
5406
|
+
* `X12_UNPARSEABLE_DECIMAL`), or no SVx for the resolved variant was
|
|
5407
|
+
* decoded onto the line at all (which emits
|
|
5408
|
+
* `X12_837_SERVICE_LINE_NOT_DECODED` at the LX). Through `0.0.12` all
|
|
5409
|
+
* three read `X12Decimal.ZERO`, and a consumer could not tell any of them
|
|
5410
|
+
* from a line the sender charged nothing for.
|
|
5411
|
+
*/
|
|
5412
|
+
readonly charge: X12Decimal | undefined;
|
|
5413
|
+
/**
|
|
5414
|
+
* The service line's unit count - SV1-04 (professional), SV2-05
|
|
5415
|
+
* (institutional) or SV3-06 (dental). `undefined` on the same three
|
|
5416
|
+
* conditions as {@link X12_837ServiceLineBase.charge}, and for the same
|
|
5417
|
+
* reason: a fabricated count is a count the sender never sent.
|
|
5418
|
+
*/
|
|
5419
|
+
readonly units: X12Decimal | undefined;
|
|
5081
5420
|
readonly unitOfMeasure: string | undefined;
|
|
5082
5421
|
readonly placeOfServiceCode: string | undefined;
|
|
5083
5422
|
readonly dates: readonly X12ClaimDate[];
|
|
@@ -5231,7 +5570,7 @@ interface X12LineDrug {
|
|
|
5231
5570
|
* import type { X12LineAdjudication } from "@cosyte/x12";
|
|
5232
5571
|
* declare const a: X12LineAdjudication;
|
|
5233
5572
|
* a.otherPayerId; // "84320" (the other payer's id)
|
|
5234
|
-
* a.amountPaid
|
|
5573
|
+
* a.amountPaid?.toString(); // "50.00", or undefined if none decoded
|
|
5235
5574
|
* a.procedureCode; // "99213"
|
|
5236
5575
|
* a.adjustments[0]?.groupCode;// "CO"
|
|
5237
5576
|
* a.dateAdjudicated; // "20260520" CCYYMMDD verbatim
|
|
@@ -5239,7 +5578,14 @@ interface X12LineDrug {
|
|
|
5239
5578
|
*/
|
|
5240
5579
|
interface X12LineAdjudication {
|
|
5241
5580
|
readonly otherPayerId: string;
|
|
5242
|
-
|
|
5581
|
+
/**
|
|
5582
|
+
* SVD-02, the amount the other payer paid on this line. `undefined` where
|
|
5583
|
+
* this library decoded no value from that element - absent, empty, or
|
|
5584
|
+
* bytes that do not decode (which also emits `X12_UNPARSEABLE_DECIMAL`).
|
|
5585
|
+
* Through `0.0.12` both cases read `X12Decimal.ZERO`, indistinguishable
|
|
5586
|
+
* from a payer that adjudicated the line to nothing.
|
|
5587
|
+
*/
|
|
5588
|
+
readonly amountPaid: X12Decimal | undefined;
|
|
5243
5589
|
readonly procedureQualifier: string | undefined;
|
|
5244
5590
|
readonly procedureCode: string | undefined;
|
|
5245
5591
|
readonly paidUnits: X12Decimal | undefined;
|
|
@@ -5340,7 +5686,7 @@ declare const NM1_QUALIFIERS: Readonly<{
|
|
|
5340
5686
|
* const sub = get837Claims(ix.delimiters, tx);
|
|
5341
5687
|
* sub?.variant; // "P" / "I" / "D" / "unknown"
|
|
5342
5688
|
* for (const claim of sub?.claims ?? []) {
|
|
5343
|
-
* claim.totalCharge
|
|
5689
|
+
* claim.totalCharge?.toString();
|
|
5344
5690
|
* claim.diagnoses[0]?.codeSystem; // "ICD-10-CM"
|
|
5345
5691
|
* }
|
|
5346
5692
|
* }
|
|
@@ -5377,6 +5723,21 @@ declare function get837Claims(delimiters: Delimiters, tx: X12TransactionSet, opt
|
|
|
5377
5723
|
* fixes GS-01 to `"HC"` and the ST-03 / GS-08 version to the variant's TR3
|
|
5378
5724
|
* (`005010X222A2` / `X223A3` / `X224A2`) so the caller never hand-codes them.
|
|
5379
5725
|
*
|
|
5726
|
+
* **🩺 Known limitation, disclosed rather than changed: those three are
|
|
5727
|
+
* published errata guides, but they are neither the identifiers HIPAA
|
|
5728
|
+
* adopts at 45 CFR 162.1102 nor the ones payer companion guides commonly
|
|
5729
|
+
* require in ST-03 / GS-08** (CMS and several state Medicaid guides state
|
|
5730
|
+
* `005010X222A1` for Professional, `005010X223A2` for Institutional and
|
|
5731
|
+
* `005010X224A2` for Dental). **A partner that requires one of those will
|
|
5732
|
+
* reject a Professional or Institutional 837 this builder emits, and there
|
|
5733
|
+
* is currently no way for a caller to override the value.** Nothing here
|
|
5734
|
+
* was re-stamped on that evidence: which published guide identifier a
|
|
5735
|
+
* trading partner accepts is a partner fact, not a spec fact, and silently
|
|
5736
|
+
* changing bytes this library already emitted would break the partners it
|
|
5737
|
+
* works with today. `KNOWN-LIMITATIONS.md` carries this as an open
|
|
5738
|
+
* residual. The READ side is unaffected - `get837Claims` recognises all of
|
|
5739
|
+
* these references.
|
|
5740
|
+
*
|
|
5380
5741
|
* @example
|
|
5381
5742
|
* ```ts
|
|
5382
5743
|
* import type { Build837EnvelopeSpec } from "@cosyte/x12";
|
|
@@ -5729,10 +6090,19 @@ interface Build837ToothSpec {
|
|
|
5729
6090
|
interface Build837ServiceLineBaseSpec {
|
|
5730
6091
|
/** LX-01 - line number. Default: the 1-based index within the claim. */
|
|
5731
6092
|
readonly lineNumber?: string;
|
|
5732
|
-
/** SVx charge amount. */
|
|
6093
|
+
/** SVx charge amount - SV1-02 (P), SV2-03 (I) or SV3-02 (D). */
|
|
5733
6094
|
readonly charge: X12Decimal;
|
|
5734
|
-
/**
|
|
5735
|
-
|
|
6095
|
+
/**
|
|
6096
|
+
* SVx units of service - SV1-04 (P), SV2-05 (I) or SV3-06 (D).
|
|
6097
|
+
*
|
|
6098
|
+
* **Required as of `0.0.13`.** Through `0.0.12` this was optional and an
|
|
6099
|
+
* omitted value was emitted as the literal `"0"`, so the builder stated a
|
|
6100
|
+
* service unit count the caller never supplied. It now refuses with
|
|
6101
|
+
* `X12_837_BUILD_INVALID_SPEC` instead, the same stance `build277` takes
|
|
6102
|
+
* for SVC-07: this builder will not invent a count, and will not leave the
|
|
6103
|
+
* element empty for the receiver to guess at either.
|
|
6104
|
+
*/
|
|
6105
|
+
readonly units: X12Decimal;
|
|
5736
6106
|
/** SVx unit/basis-of-measurement code (`UN`, `MJ`, …). */
|
|
5737
6107
|
readonly unitOfMeasure?: string;
|
|
5738
6108
|
/** DTP service-line dates. */
|
|
@@ -8718,14 +9088,22 @@ interface X12PremiumPayments {
|
|
|
8718
9088
|
* ```ts
|
|
8719
9089
|
* import type { X12PremiumPaymentHeader } from "@cosyte/x12";
|
|
8720
9090
|
* declare const p: X12PremiumPaymentHeader;
|
|
8721
|
-
* p.totalPremiumAmount
|
|
9091
|
+
* p.totalPremiumAmount?.toString(); // "12500.00", or undefined if none decoded
|
|
8722
9092
|
* p.method; // "ACH"
|
|
8723
9093
|
* p.paymentDate; // "20260601" (CCYYMMDD, verbatim)
|
|
8724
9094
|
* ```
|
|
8725
9095
|
*/
|
|
8726
9096
|
interface X12PremiumPaymentHeader {
|
|
8727
9097
|
readonly transactionHandlingCode: string;
|
|
8728
|
-
|
|
9098
|
+
/**
|
|
9099
|
+
* BPR-02, the aggregate premium moved. `undefined` where this library decoded no value
|
|
9100
|
+
* from that element - it was absent or empty, or it held bytes that do
|
|
9101
|
+
* not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
|
|
9102
|
+
* its `elementIndex`). Through `0.0.12` both cases read
|
|
9103
|
+
* `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
|
|
9104
|
+
* did state.
|
|
9105
|
+
*/
|
|
9106
|
+
readonly totalPremiumAmount: X12Decimal | undefined;
|
|
8729
9107
|
/**
|
|
8730
9108
|
* BPR-03 credit/debit flag. Spec-defined `"C"` (credit) or `"D"` (debit);
|
|
8731
9109
|
* typed `string` to preserve any verbatim non-spec value from a quirky
|
|
@@ -8915,14 +9293,22 @@ interface X12PremiumPerson {
|
|
|
8915
9293
|
* declare const o: X12PremiumOpenItem;
|
|
8916
9294
|
* o.qualifier; // "AZ"
|
|
8917
9295
|
* o.referenceId; // "POL-0001"
|
|
8918
|
-
* o.amountPaid
|
|
9296
|
+
* o.amountPaid?.toString(); // "250.00", or undefined if none decoded
|
|
8919
9297
|
* ```
|
|
8920
9298
|
*/
|
|
8921
9299
|
interface X12PremiumOpenItem {
|
|
8922
9300
|
readonly qualifier: string;
|
|
8923
9301
|
readonly referenceId: string;
|
|
8924
9302
|
readonly paymentActionCode: string | undefined;
|
|
8925
|
-
|
|
9303
|
+
/**
|
|
9304
|
+
* RMR-04, the amount paid against this open item. `undefined` where this library decoded no value
|
|
9305
|
+
* from that element - it was absent or empty, or it held bytes that do
|
|
9306
|
+
* not decode as a decimal (which also emits `X12_UNPARSEABLE_DECIMAL` at
|
|
9307
|
+
* its `elementIndex`). Through `0.0.12` both cases read
|
|
9308
|
+
* `X12Decimal.ZERO`, indistinguishable from an amount of zero the sender
|
|
9309
|
+
* did state.
|
|
9310
|
+
*/
|
|
9311
|
+
readonly amountPaid: X12Decimal | undefined;
|
|
8926
9312
|
readonly amountDue: X12Decimal | undefined;
|
|
8927
9313
|
}
|
|
8928
9314
|
/**
|
|
@@ -8974,9 +9360,9 @@ interface X12PremiumAdjustment {
|
|
|
8974
9360
|
* const tx = ix.groups[0]?.transactions.find((t) => t.st.elements[1] === "820");
|
|
8975
9361
|
* if (tx !== undefined) {
|
|
8976
9362
|
* const prem = get820Payments(ix.delimiters, tx);
|
|
8977
|
-
* prem?.payment.totalPremiumAmount
|
|
9363
|
+
* prem?.payment.totalPremiumAmount?.toString();
|
|
8978
9364
|
* for (const r of prem?.remittances ?? []) {
|
|
8979
|
-
* r.openItems[0]?.amountPaid
|
|
9365
|
+
* r.openItems[0]?.amountPaid?.toString();
|
|
8980
9366
|
* }
|
|
8981
9367
|
* }
|
|
8982
9368
|
* ```
|
|
@@ -13346,4 +13732,4 @@ declare const profiles: {
|
|
|
13346
13732
|
*/
|
|
13347
13733
|
declare const VERSION: string;
|
|
13348
13734
|
|
|
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 };
|
|
13735
|
+
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, ambiguous837Variant, 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, serviceSegmentRepeated, serviceSegmentWithoutLx, setDefaultProfile, statedAmountDiscarded, trailingGarbage, transactionCountMismatch, unescapeRelease, unexpectedSegment, unknown837Variant, unknownCarc, unknownClaimStatus, unknownClaimStatusCategory, unknownHiQualifier, unknownMaintenanceType, unknownRarc, unparseableDecimal };
|