Module: Stupidedi::TransactionSets::FiftyTen::Standards

Defined in:
lib/stupidedi/transaction_sets/005010/standards.rb,
lib/stupidedi/transaction_sets/005010/standards/BE834.rb,
lib/stupidedi/transaction_sets/005010/standards/FA997.rb,
lib/stupidedi/transaction_sets/005010/standards/FA999.rb,
lib/stupidedi/transaction_sets/005010/standards/HB271.rb,
lib/stupidedi/transaction_sets/005010/standards/HC837.rb,
lib/stupidedi/transaction_sets/005010/standards/HI278.rb,
lib/stupidedi/transaction_sets/005010/standards/HN277.rb,
lib/stupidedi/transaction_sets/005010/standards/HP835.rb,
lib/stupidedi/transaction_sets/005010/standards/HR276.rb,
lib/stupidedi/transaction_sets/005010/standards/HS270.rb,
lib/stupidedi/transaction_sets/005010/standards/RA820.rb

Constant Summary collapse

SegmentReqs =
Versions::FiftyTen::SegmentReqs
BE834 =
b.build("BE", "834", "Benefit Enrollment and Maintenance",
          d::TableDef.header("1 - Header",
s:: ST.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
s::BGN.use(200, r::Mandatory, d::RepeatCount.bounded(1)),
s::REF.use(300, r::Optional,  d::RepeatCount.bounded(1)),
s::DTP.use(400, r::Optional,  d::RepeatCount.unbounded),
s::QTY.use(600, r::Optional,  d::RepeatCount.bounded(3)),

d::LoopDef.build("1000 PARTY IDENTIFICATION", d::RepeatCount.unbounded,
  s:: N1.use( 700, r::Mandatory, d::RepeatCount.bounded(1)),
  s:: N2.use( 800, r::Optional,  d::RepeatCount.bounded(2)),
  s:: N3.use( 900, r::Optional,  d::RepeatCount.bounded(2)),
  s:: N4.use(1000, r::Optional,  d::RepeatCount.bounded(1)),
  s::PER.use(1100, r::Optional,  d::RepeatCount.bounded(3)),

  d::LoopDef.build("1100 ACCOUNT IDENTIFICATION", d::RepeatCount.bounded(10),
    s::ACT.use(1200, r::Optional,  d::RepeatCount.bounded(1)),
    s::REF.use(1300, r::Optional,  d::RepeatCount.bounded(5)),
    s:: N3.use(1400, r::Optional,  d::RepeatCount.bounded(1)),
    s:: N4.use(1500, r::Optional,  d::RepeatCount.bounded(1)),
    s::PER.use(1600, r::Optional,  d::RepeatCount.bounded(5)),
    s::DTP.use(1700, r::Optional,  d::RepeatCount.bounded(1)),
    s::AMT.use(1800, r::Optional,  d::RepeatCount.bounded(1))))),

          d::TableDef.detail("2 - Detail",
d::LoopDef.build("2000 INSURED BENEFIT", d::RepeatCount.unbounded,
  s::INS.use(100, r::Optional,  d::RepeatCount.bounded(1)),
  s::REF.use(200, r::Mandatory, d::RepeatCount.unbounded),
  s::DTP.use(250, r::Optional,  d::RepeatCount.unbounded),

  d::LoopDef.build("2100 INDIVIDUAL OR ORGANIZATION NAME", d::RepeatCount.unbounded,
    s::NM1.use( 300, r::Optional,  d::RepeatCount.bounded(1)),
    s::PER.use( 400, r::Optional,  d::RepeatCount.bounded(1)),
    s:: N3.use( 500, r::Optional,  d::RepeatCount.bounded(1)),
    s:: N4.use( 600, r::Optional,  d::RepeatCount.bounded(1)),
    s::DMG.use( 800, r::Optional,  d::RepeatCount.bounded(1)),
    s:: PM.use(1000, r::Optional,  d::RepeatCount.bounded(1)),
    s:: EC.use(1000, r::Optional,  d::RepeatCount.unbounded),
    s::ICM.use(1100, r::Optional,  d::RepeatCount.bounded(1)),
    s::AMT.use(1200, r::Optional,  d::RepeatCount.bounded(10)),
    s::HLH.use(1300, r::Optional,  d::RepeatCount.bounded(1)),
    s:: HI.use(1400, r::Optional,  d::RepeatCount.bounded(10)),
    s::LUI.use(1500, r::Optional,  d::RepeatCount.unbounded)),

  d::LoopDef.build("2200 DISABILITY INFORMATION", d::RepeatCount.bounded(4),
    s::DSB.use(2000, r::Optional, d::RepeatCount.bounded(1)),
    s::DTP.use(2100, r::Optional, d::RepeatCount.bounded(10)),
    s::AD1.use(2200, r::Optional, d::RepeatCount.bounded(10))),

  d::LoopDef.build("2300 HEALTH COVERAGE", d::RepeatCount.bounded(99),
    s:: HD.use(2600, r::Optional,  d::RepeatCount.bounded(1)),
    s::DTP.use(2700, r::Optional,  d::RepeatCount.bounded(10)),
    s::AMT.use(2800, r::Optional,  d::RepeatCount.bounded(3)),
    s::REF.use(2900, r::Optional,  d::RepeatCount.bounded(5)),
    s::IDC.use(3000, r::Optional,  d::RepeatCount.unbounded),

    d::LoopDef.build("2310 TRANSACTION SET LINE NUMBER", d::RepeatCount.bounded(30),
      s:: LX.use(3100, r::Optional,  d::RepeatCount.bounded(1)),
      s::NM1.use(3200, r::Optional,  d::RepeatCount.bounded(1)),
      s:: N1.use(3300, r::Optional,  d::RepeatCount.bounded(3)),
      s:: N2.use(3400, r::Optional,  d::RepeatCount.bounded(1)),
      s:: N3.use(3500, r::Optional,  d::RepeatCount.bounded(2)),
      s:: N4.use(3600, r::Optional,  d::RepeatCount.bounded(2)),
      s::PER.use(3700, r::Optional,  d::RepeatCount.bounded(2)),
      s::PRV.use(3800, r::Optional,  d::RepeatCount.bounded(1)),
      s::DTP.use(3900, r::Optional,  d::RepeatCount.bounded(6)),
      s::PLA.use(3950, r::Optional,  d::RepeatCount.bounded(1))),

    d::LoopDef.build("2320 COORDINATION OF BENEFITS", d::RepeatCount.bounded(5),
      s::COB.use(4000, r::Optional, d::RepeatCount.bounded(1)),
      s::REF.use(4050, r::Optional, d::RepeatCount.unbounded),
      s::DTP.use(4070, r::Optional, d::RepeatCount.bounded(2)),

      d::LoopDef.build("2330 INDIVIDUAL OR ORGANIZATION NAME", d::RepeatCount.bounded(3),
        s::NM1.use(4100, r::Optional,  d::RepeatCount.bounded(1)),
        s:: N2.use(4200, r::Optional,  d::RepeatCount.bounded(1)),
        s:: N3.use(4300, r::Optional,  d::RepeatCount.bounded(2)),
        s:: N4.use(4400, r::Optional,  d::RepeatCount.bounded(1)),
        s::PER.use(4500, r::Optional,  d::RepeatCount.bounded(1))))),

  d::LoopDef.build("2400 LIFE COVERAGE", d::RepeatCount.bounded(10),
    s:: LC.use(4600, r::Optional,  d::RepeatCount.bounded(1)),
    s::AMT.use(4700, r::Optional,  d::RepeatCount.bounded(1)),
    s::DTP.use(4800, r::Optional,  d::RepeatCount.bounded(1)),
    s::REF.use(4850, r::Optional,  d::RepeatCount.bounded(1)),

    d::LoopDef.build("2410 BENEFICIARY OR OWNER INFORMATION", d::RepeatCount.bounded(20),
      s::BEN.use(4900, r::Optional,  d::RepeatCount.bounded(1)),
      s::NM1.use(5000, r::Optional,  d::RepeatCount.bounded(1)),
      s:: N1.use(5100, r::Optional,  d::RepeatCount.bounded(1)),
      s:: N2.use(5200, r::Optional,  d::RepeatCount.bounded(1)),
      s:: N3.use(5300, r::Optional,  d::RepeatCount.bounded(1)),
      s:: N4.use(5400, r::Optional,  d::RepeatCount.bounded(1)),
      s::DMG.use(5420, r::Optional,  d::RepeatCount.bounded(1)))),

  d::LoopDef.build("2500 TAX ADVANTAGE ACCOUNT", d::RepeatCount.bounded(5),
      s::FSA.use(5500, r::Optional,  d::RepeatCount.bounded(1)),
      s::AMT.use(5600, r::Optional,  d::RepeatCount.bounded(10)),
      s::DTP.use(5700, r::Optional,  d::RepeatCount.bounded(10)),
      s::REF.use(5750, r::Optional,  d::RepeatCount.unbounded)),

  d::LoopDef.build("2600 RETIREMENT PRODUCT", d::RepeatCount.unbounded,
      s:: RP.use(5800, r::Optional,  d::RepeatCount.bounded(1)),
      s::DTP.use(5900, r::Optional,  d::RepeatCount.unbounded),
      s::REF.use(5920, r::Optional,  d::RepeatCount.unbounded),
      s::INV.use(5940, r::Optional,  d::RepeatCount.unbounded),
      s::AMT.use(5960, r::Optional,  d::RepeatCount.bounded(20)),
      s::QTY.use(5970, r::Optional,  d::RepeatCount.bounded(20)),
      s:: K3.use(5980, r::Optional,  d::RepeatCount.bounded(3)),
      s::REL.use(6000, r::Optional,  d::RepeatCount.bounded(1)),

      d::LoopDef.build("2610 INDIVIDUAL OR ORGANIZATIONAL NAME", d::RepeatCount.unbounded,
        s::NM1.use(6100, r::Optional,  d::RepeatCount.bounded(1)),
        s:: N2.use(6300, r::Optional,  d::RepeatCount.bounded(1)),
        s::DMG.use(6510, r::Optional,  d::RepeatCount.bounded(1)),
        s::BEN.use(6520, r::Optional,  d::RepeatCount.bounded(1)),
        s::REF.use(6530, r::Optional,  d::RepeatCount.unbounded),

        d::LoopDef.build("2620 PROPERTY OR ENTITIY IDENTIFICATION", d::RepeatCount.unbounded,
          s::NX1.use(6540, r::Optional, d::RepeatCount.bounded(1)),
          s:: N3.use(6550, r::Optional, d::RepeatCount.bounded(1)),
          s:: N4.use(6560, r::Optional, d::RepeatCount.bounded(1)),
          s::DTP.use(6570, r::Optional, d::RepeatCount.unbounded))),

      d::LoopDef.build("2630 FINANCIAL CONTRIBUTION", d::RepeatCount.unbounded,
        s:: FC.use(6600, r::Optional,  d::RepeatCount.bounded(1)),
        s::DTP.use(6700, r::Optional,  d::RepeatCount.unbounded),

        d::LoopDef.build("2640 INVESTMENT VEHICLE SELECTION", d::RepeatCount.unbounded,
          s::INV.use(6000, r::Optional,  d::RepeatCount.bounded(1)),
          s::DTP.use(6000, r::Optional,  d::RepeatCount.unbounded),
          s::QTY.use(6000, r::Optional,  d::RepeatCount.unbounded),
          s::ENT.use(6000, r::Optional,  d::RepeatCount.unbounded),
          s::REF.use(6000, r::Optional,  d::RepeatCount.unbounded),
          s::AMT.use(6000, r::Optional,  d::RepeatCount.bounded(20)),
          s:: K3.use(6000, r::Optional,  d::RepeatCount.bounded(3)))),

      d::LoopDef.build("2650 INCOME", d::RepeatCount.unbounded,
        s::AIN.use(6850, r::Optional,  d::RepeatCount.bounded(1)),
        s::QTY.use(6860, r::Optional,  d::RepeatCount.unbounded),
        s::DTP.use(6870, r::Optional,  d::RepeatCount.unbounded))),

  d::LoopDef.build("2700 LS LOOP HEADER", d::RepeatCount.bounded(1),
    s:: LS.use(6880, r::Optional, d::RepeatCount.bounded(1)),

    d::LoopDef.build("2700 TRANSACTION SET LINE NUMBER", d::RepeatCount.unbounded,
      s:: LX.use(6881, r::Optional, d::RepeatCount.bounded(1)),

      d::LoopDef.build("2750 PARTY IDENTIFICATION", d::RepeatCount.bounded(1),
        s:: N1.use(6882, r::Optional, d::RepeatCount.bounded(1)),
        s::REF.use(6883, r::Optional, d::RepeatCount.bounded(16)),
        s::DTP.use(6884, r::Optional, d::RepeatCount.bounded(1)))),

    s:: LE.use(6885, r::Mandatory, d::RepeatCount.bounded(1)))),

s::SE.use(6900, r::Mandatory, d::RepeatCount.bounded(1))))
FA997 =
b.build("FA", "997", "Functional Acknowledgment",
          d::TableDef.header("1 - Header",
s:: ST.use(10, r::Mandatory, d::RepeatCount.bounded(1)),
s::AK1.use(20, r::Mandatory, d::RepeatCount.bounded(1)),

d::LoopDef.build("AK2", d::RepeatCount.bounded(999999),
  s:: AK2.use( 30, r::Optional, d::RepeatCount.bounded(1)),

  d::LoopDef.build("AK3", d::RepeatCount.bounded(999999),
    s::AK3.use(40, r::Optional, d::RepeatCount.bounded(1)),
    s::AK4.use(50, r::Optional, d::RepeatCount.bounded(99))),

  s::AK5.use(60, r::Mandatory, d::RepeatCount.bounded(1))),

s::AK9.use(70, r::Mandatory, d::RepeatCount.bounded(1)),
s:: SE.use(80, r::Mandatory, d::RepeatCount.bounded(1))))
FA999 =
b.build("FA", "999", "Implementation Acknowledgment",
          d::TableDef.header("1 - Header",
s:: ST.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
s::AK1.use(200, r::Mandatory, d::RepeatCount.bounded(1)),

d::LoopDef.build("2000", d::RepeatCount.unbounded,
  s::AK2.use(300, r::Optional,  d::RepeatCount.bounded(1)),

  d::LoopDef.build("2100", d::RepeatCount.unbounded,
    s::IK3.use(400, r::Optional,  d::RepeatCount.bounded(1)),
    s::CTX.use(500, r::Optional,  d::RepeatCount.bounded(10)),

    d::LoopDef.build("2110", d::RepeatCount.unbounded,
      s::IK4.use(600, r::Optional,  d::RepeatCount.bounded(1)),
      s::CTX.use(700, r::Optional,  d::RepeatCount.bounded(10)))),

  s::IK5.use(800, r::Mandatory, d::RepeatCount.bounded(1))),

s::AK9.use( 900, r::Mandatory, d::RepeatCount.bounded(1)),
s:: SE.use(1000, r::Mandatory, d::RepeatCount.bounded(1))))
HB271 =
b.build("HB", "271", "Eligibility, Coverage, or Benefit Information",
          d::TableDef.header("1 - Header",
s:: ST.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
s::BHT.use(200, r::Mandatory, d::RepeatCount.bounded(1))),

          d::TableDef.detail("2 - Detail",
d::LoopDef.build("2000", d::RepeatCount.unbounded,
  s:: HL.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
  s::TRN.use(200, r::Optional,  d::RepeatCount.bounded(9)),
  s::AAA.use(250, r::Optional,  d::RepeatCount.bounded(9)),

  d::LoopDef.build("2100", d::RepeatCount.unbounded,
    s::NM1.use( 300, r::Mandatory, d::RepeatCount.bounded(1)),
    s::REF.use( 400, r::Optional,  d::RepeatCount.bounded(9)),
    s:: N2.use( 500, r::Optional,  d::RepeatCount.bounded(1)),
    s:: N3.use( 600, r::Optional,  d::RepeatCount.bounded(1)),
    s:: N4.use( 700, r::Optional,  d::RepeatCount.bounded(1)),
    s::PER.use( 800, r::Optional,  d::RepeatCount.bounded(3)),
    s::AAA.use( 850, r::Optional,  d::RepeatCount.bounded(9)),
    s::PRV.use( 900, r::Optional,  d::RepeatCount.bounded(1)),
    s::DMG.use(1000, r::Optional,  d::RepeatCount.bounded(1)),
    s::INS.use(1100, r::Optional,  d::RepeatCount.bounded(1)),
    s:: HI.use(1150, r::Optional,  d::RepeatCount.bounded(1)),
    s::DTP.use(1200, r::Optional,  d::RepeatCount.bounded(9)),
    s::LUI.use(1250, r::Optional,  d::RepeatCount.bounded(9)),
    s::MPI.use(1275, r::Optional,  d::RepeatCount.bounded(9)),

    d::LoopDef.build("2110", d::RepeatCount.unbounded,
      s:: EB.use(1300, r::Optional,  d::RepeatCount.bounded(1)),
      s::HSD.use(1350, r::Optional,  d::RepeatCount.bounded(9)),
      s::REF.use(1400, r::Optional,  d::RepeatCount.bounded(9)),
      s::DTP.use(1500, r::Optional,  d::RepeatCount.bounded(20)),
      s::AAA.use(1600, r::Optional,  d::RepeatCount.bounded(9)),
      s::VEH.use(1700, r::Optional,  d::RepeatCount.bounded(1)),
      s::PID.use(1800, r::Optional,  d::RepeatCount.bounded(1)),
      s::PDR.use(1900, r::Optional,  d::RepeatCount.bounded(1)),
      s::PDP.use(2000, r::Optional,  d::RepeatCount.bounded(1)),
      s::LIN.use(2100, r::Optional,  d::RepeatCount.bounded(1)),
      s:: EM.use(2200, r::Optional,  d::RepeatCount.bounded(1)),
      s::SD1.use(2300, r::Optional,  d::RepeatCount.bounded(1)),
      s::PKD.use(2400, r::Optional,  d::RepeatCount.bounded(1)),
      s::MSG.use(2500, r::Optional,  d::RepeatCount.bounded(10)),

      d::LoopDef.build("2115", d::RepeatCount.unbounded,
        s::III.use(2600, r::Optional,  d::RepeatCount.bounded(1)),
        s::DTP.use(2700, r::Optional,  d::RepeatCount.bounded(5)),
        s::AMT.use(2800, r::Optional,  d::RepeatCount.bounded(5)),
        s::PCT.use(2900, r::Optional,  d::RepeatCount.bounded(5)),

        d::LoopDef.build("2117", d::RepeatCount.unbounded,
          s:: LQ.use(3000, r::Optional,  d::RepeatCount.bounded(1)),
          s::AMT.use(3100, r::Optional,  d::RepeatCount.bounded(5)),
          s::PCT.use(3200, r::Optional,  d::RepeatCount.bounded(5)))),

      d::LoopDef.build("2120 LS", d::RepeatCount.bounded(1),
        # @todo: NM1 3400 conflicts with NM1 at position 300, but
        # X279 states on page 328, regarding the LS segment:
        #
        #  1. Use this segment to identify the beginning of the
        #    Subscriber Benefit Related Entity Name loop. Because both
        #    the subscriber’s name loop and this loop begin with NM1
        #    segments, the LS and LE segments are used to
        #    differentiate these two loops.
        #
        # ParserError: too much non-determinism: SegmentUse(3400, NM1, O, 1), SegmentUse(300, NM1, M, 1)
        #
        s:: LS.use(3300, r::Optional,  d::RepeatCount.bounded(1)),

        d::LoopDef.build("2120", d::RepeatCount.unbounded,
          s::NM1.use(3400, r::Optional,  d::RepeatCount.bounded(1)),
          s:: N2.use(3500, r::Optional,  d::RepeatCount.bounded(1)),
          s:: N3.use(3600, r::Optional,  d::RepeatCount.bounded(1)),
          s:: N4.use(3700, r::Optional,  d::RepeatCount.bounded(1)),
          s::PER.use(3800, r::Optional,  d::RepeatCount.bounded(3)),
          s::PRV.use(3900, r::Optional,  d::RepeatCount.bounded(1))),

        s:: LE.use(4000, r::Mandatory, d::RepeatCount.bounded(1))))))),

          d::TableDef.summary("3 - Summary",
s:: SE.use(4100, r::Mandatory, d::RepeatCount.bounded(1))))
HC837 =
b.build("HC", "837", "Health Care Claim",
          d::TableDef.header("1 - Header",
s:: ST.use( 50, r::Mandatory, d::RepeatCount.bounded(1)),
s::BHT.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
s::REF.use(150, r::Optional,  d::RepeatCount.bounded(3)),

d::LoopDef.build("1000", d::RepeatCount.bounded(10),
  s::NM1.use(200, r::Optional,  d::RepeatCount.bounded(1)),
  s:: N2.use(250, r::Optional,  d::RepeatCount.bounded(2)),
  s:: N3.use(300, r::Optional,  d::RepeatCount.bounded(2)),
  s:: N4.use(350, r::Optional,  d::RepeatCount.bounded(1)),
  s::REF.use(400, r::Optional,  d::RepeatCount.bounded(2)),
  s::PER.use(450, r::Optional,  d::RepeatCount.bounded(2)))),

          d::TableDef.detail("2 - Detail",
d::LoopDef.build("2000", d::RepeatCount.unbounded,
  s:: HL.use( 10, r::Mandatory, d::RepeatCount.bounded(1)),
  s::PRV.use( 30, r::Optional,  d::RepeatCount.bounded(1)),
  s::SBR.use( 50, r::Optional,  d::RepeatCount.bounded(1)),
  s::PAT.use( 70, r::Optional,  d::RepeatCount.bounded(1)),
  s::DTP.use( 90, r::Optional,  d::RepeatCount.bounded(5)),
  s::CUR.use(100, r::Optional,  d::RepeatCount.bounded(1)),

  d::LoopDef.build("2010", d::RepeatCount.bounded(10),
    s::NM1.use(150, r::Optional,  d::RepeatCount.bounded(1)),
    s:: N2.use(200, r::Optional,  d::RepeatCount.bounded(2)),
    s:: N3.use(250, r::Optional,  d::RepeatCount.bounded(2)),
    s:: N4.use(300, r::Optional,  d::RepeatCount.bounded(1)),
    s::DMG.use(320, r::Optional,  d::RepeatCount.bounded(1)),
    s::REF.use(350, r::Optional,  d::RepeatCount.bounded(20)),
    s::PER.use(400, r::Optional,  d::RepeatCount.bounded(2))),

  d::LoopDef.build("2300", d::RepeatCount.bounded(100),
    s::CLM.use(1300, r::Optional,  d::RepeatCount.bounded(1)),
    s::DTP.use(1350, r::Optional,  d::RepeatCount.bounded(150)),
    s::CL1.use(1400, r::Optional,  d::RepeatCount.bounded(1)),
    s::DN1.use(1450, r::Optional,  d::RepeatCount.bounded(1)),
    s::DN2.use(1500, r::Optional,  d::RepeatCount.bounded(35)),
    s::PWK.use(1550, r::Optional,  d::RepeatCount.bounded(10)),
    s::CN1.use(1600, r::Optional,  d::RepeatCount.bounded(1)),
    s::DSB.use(1650, r::Optional,  d::RepeatCount.bounded(1)),
    s:: UR.use(1700, r::Optional,  d::RepeatCount.bounded(1)),
    s::AMT.use(1750, r::Optional,  d::RepeatCount.bounded(40)),
    s::REF.use(1800, r::Optional,  d::RepeatCount.bounded(30)),
    s:: K3.use(1850, r::Optional,  d::RepeatCount.bounded(10)),
    s::NTE.use(1900, r::Optional,  d::RepeatCount.bounded(20)),
    s::CR1.use(1950, r::Optional,  d::RepeatCount.bounded(1)),
    s::CR2.use(2000, r::Optional,  d::RepeatCount.bounded(1)),
    s::CR3.use(2050, r::Optional,  d::RepeatCount.bounded(1)),
    s::CR4.use(2100, r::Optional,  d::RepeatCount.bounded(3)),
    s::CR5.use(2150, r::Optional,  d::RepeatCount.bounded(1)),
    s::CR6.use(2160, r::Optional,  d::RepeatCount.bounded(1)),
    s::CR8.use(2190, r::Optional,  d::RepeatCount.bounded(9)),
    s::CRC.use(2200, r::Optional,  d::RepeatCount.bounded(100)),
    s:: HI.use(2310, r::Optional,  d::RepeatCount.bounded(25)),
    s::QTY.use(2400, r::Optional,  d::RepeatCount.bounded(10)),
    s::HCP.use(2410, r::Optional,  d::RepeatCount.bounded(1)),

    d::LoopDef.build("2305", d::RepeatCount.bounded(6),
      s::CR7.use(2420, r::Optional,  d::RepeatCount.bounded(1)),
      s::HSD.use(2430, r::Optional,  d::RepeatCount.bounded(12))),

    d::LoopDef.build("2310", d::RepeatCount.bounded(9),
      s::NM1.use(2500, r::Optional,  d::RepeatCount.bounded(1)),
      s::PRV.use(2550, r::Optional,  d::RepeatCount.bounded(1)),
      s:: N2.use(2600, r::Optional,  d::RepeatCount.bounded(2)),
      s:: N3.use(2650, r::Optional,  d::RepeatCount.bounded(2)),
      s:: N4.use(2700, r::Optional,  d::RepeatCount.bounded(1)),
      s::REF.use(2710, r::Optional,  d::RepeatCount.bounded(20)),
      s::PER.use(2750, r::Optional,  d::RepeatCount.bounded(2))),

    d::LoopDef.build("2320", d::RepeatCount.bounded(10),
      s::SBR.use(2900, r::Optional,  d::RepeatCount.bounded(1)),
      s::CAS.use(2950, r::Optional,  d::RepeatCount.bounded(99)),
      s::AMT.use(3000, r::Optional,  d::RepeatCount.bounded(15)),
      s::DMG.use(3050, r::Optional,  d::RepeatCount.bounded(1)),
      s:: OI.use(3100, r::Optional,  d::RepeatCount.bounded(1)),
      s::MIA.use(3150, r::Optional,  d::RepeatCount.bounded(1)),
      s::MOA.use(3200, r::Optional,  d::RepeatCount.bounded(1)),

      d::LoopDef.build("2330", d::RepeatCount.bounded(10),
        s::NM1.use(3250, r::Optional,  d::RepeatCount.bounded(1)),
        s:: N2.use(3300, r::Optional,  d::RepeatCount.bounded(2)),
        s:: N3.use(3320, r::Optional,  d::RepeatCount.bounded(2)),
        s:: N4.use(3400, r::Optional,  d::RepeatCount.bounded(1)),
        s::PER.use(3450, r::Optional,  d::RepeatCount.bounded(2)),
        s::DTP.use(3500, r::Optional,  d::RepeatCount.bounded(9)),
        s::REF.use(3550, r::Optional,  d::RepeatCount.unbounded))),

    d::LoopDef.build("2400", d::RepeatCount.unbounded,
      s:: LX.use(3650, r::Optional,  d::RepeatCount.bounded(1)),
      s::SV1.use(3700, r::Optional,  d::RepeatCount.bounded(1)),
      s::SV2.use(3750, r::Optional,  d::RepeatCount.bounded(1)),
      s::SV3.use(3800, r::Optional,  d::RepeatCount.bounded(1)),
      s::TOO.use(3820, r::Optional,  d::RepeatCount.bounded(32)),
      s::SV4.use(3850, r::Optional,  d::RepeatCount.bounded(1)),
      s::SV5.use(4000, r::Optional,  d::RepeatCount.bounded(1)),
      s::SV6.use(4050, r::Optional,  d::RepeatCount.bounded(1)),
      s::SV7.use(4100, r::Optional,  d::RepeatCount.bounded(1)),
      s:: HI.use(4150, r::Optional,  d::RepeatCount.bounded(25)),
      s::PWK.use(4200, r::Optional,  d::RepeatCount.bounded(10)),
      s::CR1.use(4250, r::Optional,  d::RepeatCount.bounded(1)),
      s::CR2.use(4300, r::Optional,  d::RepeatCount.bounded(5)),
      s::CR3.use(4350, r::Optional,  d::RepeatCount.bounded(1)),
      s::CR4.use(4400, r::Optional,  d::RepeatCount.bounded(3)),
      s::CR5.use(4450, r::Optional,  d::RepeatCount.bounded(1)),
      s::CRC.use(4500, r::Optional,  d::RepeatCount.bounded(3)),
      s::DTP.use(4550, r::Optional,  d::RepeatCount.bounded(15)),
      s::QTY.use(4600, r::Optional,  d::RepeatCount.bounded(5)),
      s::MEA.use(4620, r::Optional,  d::RepeatCount.bounded(20)),
      s::CN1.use(4650, r::Optional,  d::RepeatCount.bounded(1)),
      s::REF.use(4700, r::Optional,  d::RepeatCount.bounded(30)),
      s::AMT.use(4750, r::Optional,  d::RepeatCount.bounded(15)),
      s:: K3.use(4800, r::Optional,  d::RepeatCount.bounded(10)),
      s::NTE.use(4850, r::Optional,  d::RepeatCount.bounded(10)),
      s::PS1.use(4880, r::Optional,  d::RepeatCount.bounded(1)),
      s::IMM.use(4900, r::Optional,  d::RepeatCount.unbounded),
      s::HSD.use(4910, r::Optional,  d::RepeatCount.bounded(1)),
      s::HCP.use(4920, r::Optional,  d::RepeatCount.bounded(1)),

      d::LoopDef.build("2410", d::RepeatCount.unbounded,
        s::LIN.use(4930, r::Optional,  d::RepeatCount.bounded(1)),
        s::CTP.use(4940, r::Optional,  d::RepeatCount.bounded(1)),
        s::REF.use(4950, r::Optional,  d::RepeatCount.bounded(1))),

      d::LoopDef.build("2420", d::RepeatCount.bounded(10),
        s::NM1.use(5000, r::Optional,  d::RepeatCount.bounded(1)),
        s::PRV.use(5050, r::Optional,  d::RepeatCount.bounded(1)),
        s:: N2.use(5100, r::Optional,  d::RepeatCount.bounded(2)),
        s:: N3.use(5140, r::Optional,  d::RepeatCount.bounded(2)),
        s:: N4.use(5200, r::Optional,  d::RepeatCount.bounded(1)),
        s::REF.use(5250, r::Optional,  d::RepeatCount.bounded(20)),
        s::PER.use(5300, r::Optional,  d::RepeatCount.bounded(2))),

      d::LoopDef.build("2430", d::RepeatCount.unbounded,
        s::SVD.use(5400, r::Optional,  d::RepeatCount.bounded(1)),
        s::CAS.use(5450, r::Optional,  d::RepeatCount.bounded(99)),
        s::DTP.use(5500, r::Optional,  d::RepeatCount.bounded(9)),
        s::AMT.use(5505, r::Optional,  d::RepeatCount.bounded(20))),

      d::LoopDef.build("2440", d::RepeatCount.unbounded,
        s:: LQ.use(5510, r::Optional,  d::RepeatCount.bounded(1)),
        s::FRM.use(5520, r::Mandatory, d::RepeatCount.bounded(99))))))),

          d::TableDef.summary("3 - Summary",
s:: SE.use(5550, r::Mandatory, d::RepeatCount.bounded(1))))
HI278 =
b.build("HI", "278", "Health Care Services Review Information",
          d::TableDef.header("1 - Header",
s:: ST.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
s::BHT.use(200, r::Mandatory, d::RepeatCount.bounded(1))),

          d::TableDef.detail("2 - Detail",
d::LoopDef.build("2000", d::RepeatCount.unbounded,
  s:: HL.use( 100, r::Mandatory, d::RepeatCount.bounded(1)),
  s::TRN.use( 200, r::Optional,  d::RepeatCount.bounded(9)),
  s::AAA.use( 300, r::Optional,  d::RepeatCount.bounded(9)),
  s:: UM.use( 400, r::Optional,  d::RepeatCount.bounded(1)),
  s::HCR.use( 500, r::Optional,  d::RepeatCount.bounded(1)),
  s::REF.use( 600, r::Optional,  d::RepeatCount.bounded(9)),
  s::DTP.use( 700, r::Optional,  d::RepeatCount.bounded(9)),
  s:: HI.use( 800, r::Optional,  d::RepeatCount.bounded(1)),
  s::SV1.use( 810, r::Optional,  d::RepeatCount.bounded(1)),
  s::SV2.use( 820, r::Optional,  d::RepeatCount.bounded(1)),
  s::SV3.use( 830, r::Optional,  d::RepeatCount.bounded(1)),
  s::TOO.use( 840, r::Optional,  d::RepeatCount.bounded(32)),
  s::HSD.use( 900, r::Optional,  d::RepeatCount.bounded(1)),
  s::CRC.use(1000, r::Optional,  d::RepeatCount.bounded(9)),
  s::CL1.use(1100, r::Optional,  d::RepeatCount.bounded(1)),
  s::CR1.use(1200, r::Optional,  d::RepeatCount.bounded(1)),
  s::CR2.use(1300, r::Optional,  d::RepeatCount.bounded(1)),
  s::CR4.use(1350, r::Optional,  d::RepeatCount.bounded(1)),
  s::CR5.use(1400, r::Optional,  d::RepeatCount.bounded(1)),
  s::CR6.use(1500, r::Optional,  d::RepeatCount.bounded(1)),
  s::CR7.use(1520, r::Optional,  d::RepeatCount.bounded(1)),
  s::CR8.use(1530, r::Optional,  d::RepeatCount.bounded(1)),
  s::PWK.use(1550, r::Optional,  d::RepeatCount.unbounded),
  s::MSG.use(1600, r::Optional,  d::RepeatCount.bounded(1)),

  d::LoopDef.build("2010", d::RepeatCount.unbounded,
    s::NM1.use(1700, r::Optional,  d::RepeatCount.bounded(1)),
    s::REF.use(1700, r::Optional,  d::RepeatCount.bounded(9)),
    s:: N2.use(1700, r::Optional,  d::RepeatCount.bounded(1)),
    s:: N3.use(1700, r::Optional,  d::RepeatCount.bounded(1)),
    s:: N4.use(1700, r::Optional,  d::RepeatCount.bounded(1)),
    s::PER.use(1700, r::Optional,  d::RepeatCount.bounded(3)),
    s::AAA.use(1700, r::Optional,  d::RepeatCount.bounded(9)),
    s::PRV.use(1700, r::Optional,  d::RepeatCount.bounded(1)),
    s::DMG.use(1700, r::Optional,  d::RepeatCount.bounded(1)),
    s::INS.use(1700, r::Optional,  d::RepeatCount.bounded(1)),
    s::DTP.use(1700, r::Optional,  d::RepeatCount.bounded(9))))),

          d::TableDef.summary("3 - Summary",
s:: SE.use(2700, r::Mandatory, d::RepeatCount.bounded(1))))
HN277 =
b.build("HN", "277", "Heath Care Information Status Notification",
          d::TableDef.header("1 - Header",
s:: ST.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
s::BHT.use(200, r::Mandatory, d::RepeatCount.bounded(1)),
s::REF.use(300, r::Optional,  d::RepeatCount.bounded(10)),

d::LoopDef.build("1000", d::RepeatCount.unbounded,
  s::NM1.use(400, r::Optional,  d::RepeatCount.bounded(1)),
  s:: N2.use(500, r::Optional,  d::RepeatCount.bounded(2)),
  s:: N3.use(600, r::Optional,  d::RepeatCount.bounded(2)),
  s:: N4.use(700, r::Optional,  d::RepeatCount.bounded(1)),
  s::REF.use(800, r::Optional,  d::RepeatCount.bounded(2)),
  s::PER.use(900, r::Optional,  d::RepeatCount.bounded(1)))),

          d::TableDef.detail("2 - Detail",
d::LoopDef.build("2000", d::RepeatCount.unbounded,
  s:: HL.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
  s::SBR.use(200, r::Optional,  d::RepeatCount.bounded(1)),
  s::PAT.use(300, r::Optional,  d::RepeatCount.bounded(1)),
  s::DMG.use(400, r::Optional,  d::RepeatCount.bounded(1)),

  d::LoopDef.build("2100", d::RepeatCount.unbounded,
    s::NM1.use(500, r::Optional,  d::RepeatCount.bounded(1)),
    s:: N3.use(600, r::Optional,  d::RepeatCount.bounded(2)),
    s:: N4.use(700, r::Optional,  d::RepeatCount.bounded(1)),
    s::PER.use(800, r::Optional,  d::RepeatCount.bounded(1))),

  d::LoopDef.build("2200", d::RepeatCount.unbounded,
    s::TRN.use( 900, r::Optional,  d::RepeatCount.bounded(1)),
    s::STC.use(1000, r::Optional,  d::RepeatCount.bounded(1)),
    s::REF.use(1100, r::Optional,  d::RepeatCount.unbounded),
    s::DTP.use(1200, r::Optional,  d::RepeatCount.bounded(2)),
    s::QTY.use(1210, r::Optional,  d::RepeatCount.bounded(5)),
    s::AMT.use(1220, r::Optional,  d::RepeatCount.bounded(5)),

    d::LoopDef.build("2210", d::RepeatCount.unbounded,
      s::PWK.use(1300, r::Optional,  d::RepeatCount.bounded(1)),
      s::PER.use(1400, r::Optional,  d::RepeatCount.bounded(1)),
      s:: N1.use(1500, r::Optional,  d::RepeatCount.bounded(1)),
      s:: N3.use(1600, r::Optional,  d::RepeatCount.bounded(1)),
      s:: N4.use(1700, r::Optional,  d::RepeatCount.bounded(1))),

    d::LoopDef.build("2220", d::RepeatCount.unbounded,
      s::SVC.use(1800, r::Optional,  d::RepeatCount.bounded(1)),
      s::STC.use(1900, r::Optional,  d::RepeatCount.unbounded),
      s::REF.use(2000, r::Optional,  d::RepeatCount.bounded(1)),
      s::DTP.use(2100, r::Optional,  d::RepeatCount.bounded(1)),

      d::LoopDef.build("2225", d::RepeatCount.unbounded,
        s::PWK.use(2200, r::Optional,  d::RepeatCount.bounded(1)),
        s::PER.use(2300, r::Optional,  d::RepeatCount.bounded(1)),
        s:: N1.use(2400, r::Optional,  d::RepeatCount.bounded(1)),
        s:: N2.use(2500, r::Optional,  d::RepeatCount.bounded(1)),
        s:: N3.use(2600, r::Optional,  d::RepeatCount.bounded(1)))))),

s:: SE.use(2700, r::Mandatory, d::RepeatCount.bounded(1))))
HP835 =
b.build("HP", "835", "Health Care Claim Payment/Advice",
          d::TableDef.header("1 - Header",
s:: ST.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
s::BPR.use(200, r::Mandatory, d::RepeatCount.bounded(1)),
s::NTE.use(300, r::Optional,  d::RepeatCount.unbounded),
s::TRN.use(400, r::Optional,  d::RepeatCount.bounded(1)),
s::CUR.use(500, r::Optional,  d::RepeatCount.bounded(1)),
s::REF.use(600, r::Optional,  d::RepeatCount.unbounded),
s::DTM.use(700, r::Optional,  d::RepeatCount.unbounded),

d::LoopDef.build("1000", d::RepeatCount.bounded(200),
  s:: N1.use( 800, r::Optional,  d::RepeatCount.bounded(1)),
  s:: N2.use( 900, r::Optional,  d::RepeatCount.unbounded),
  s:: N3.use(1000, r::Optional,  d::RepeatCount.unbounded),
  s:: N4.use(1100, r::Optional,  d::RepeatCount.bounded(1)),
  s::REF.use(1200, r::Optional,  d::RepeatCount.unbounded),
  s::PER.use(1300, r::Optional,  d::RepeatCount.unbounded),
  s::RDM.use(1400, r::Optional,  d::RepeatCount.bounded(1)),
  s::DTM.use(1500, r::Optional,  d::RepeatCount.bounded(1)))),

          d::TableDef.detail("2 - Detail",
d::LoopDef.build("2000", d::RepeatCount.unbounded,
  s:: LX.use(30, r::Optional,  d::RepeatCount.bounded(1)),
  s::TS3.use(50, r::Optional,  d::RepeatCount.bounded(1)),
  s::TS2.use(70, r::Optional,  d::RepeatCount.bounded(1)),

  d::LoopDef.build("2100", d::RepeatCount.unbounded,
    s::CLP.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
    s::CAS.use(200, r::Optional,  d::RepeatCount.bounded(99)),
    s::NM1.use(300, r::Mandatory, d::RepeatCount.bounded(9)),
    s::MIA.use(330, r::Optional,  d::RepeatCount.bounded(1)),
    s::MOA.use(350, r::Optional,  d::RepeatCount.bounded(1)),
    s::REF.use(400, r::Optional,  d::RepeatCount.bounded(99)),
    s::DTM.use(500, r::Optional,  d::RepeatCount.bounded(9)),
    s::PER.use(600, r::Optional,  d::RepeatCount.bounded(3)),
    s::AMT.use(620, r::Optional,  d::RepeatCount.bounded(20)),
    s::QTY.use(640, r::Optional,  d::RepeatCount.bounded(20)),

    d::LoopDef.build("2110", d::RepeatCount.bounded(999),
      s::SVC.use( 700, r::Optional,  d::RepeatCount.bounded(1)),
      s::DTM.use( 800, r::Optional,  d::RepeatCount.bounded(9)),
      s::CAS.use( 900, r::Optional,  d::RepeatCount.bounded(99)),
      s::REF.use(1000, r::Optional,  d::RepeatCount.bounded(99)),
      s::AMT.use(1100, r::Optional,  d::RepeatCount.bounded(20)),
      s::QTY.use(1200, r::Optional,  d::RepeatCount.bounded(20)),
      s:: LQ.use(1300, r::Optional,  d::RepeatCount.bounded(99)))))),

          d::TableDef.summary("3 - Summary",
s::PLB.use(100, r::Optional,  d::RepeatCount.unbounded),
s:: SE.use(200, r::Mandatory, d::RepeatCount.bounded(1))))
HR276 =
b.build("HR", "276", "Health Care Claim Status Request",
          d::TableDef.header("1 - Header",
s:: ST.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
s::BHT.use(200, r::Mandatory, d::RepeatCount.bounded(1)),
s::REF.use(300, r::Optional,  d::RepeatCount.bounded(10)),

d::LoopDef.build("1000", d::RepeatCount.unbounded,
  s::NM1.use(400, r::Optional,  d::RepeatCount.bounded(1)),
  s:: N2.use(500, r::Optional,  d::RepeatCount.bounded(2)),
  s:: N3.use(600, r::Optional,  d::RepeatCount.bounded(2)),
  s:: N4.use(700, r::Optional,  d::RepeatCount.bounded(1)),
  s::REF.use(800, r::Optional,  d::RepeatCount.bounded(2)),
  s::PER.use(900, r::Optional,  d::RepeatCount.bounded(1)))),

          d::TableDef.detail("2 - Detail",
d::LoopDef.build("2000", d::RepeatCount.unbounded,
  s:: HL.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
  s::SBR.use(200, r::Optional,  d::RepeatCount.bounded(1)),
  s::PAT.use(300, r::Optional,  d::RepeatCount.bounded(1)),
  s::DMG.use(400, r::Optional,  d::RepeatCount.bounded(1)),

  d::LoopDef.build("2100", d::RepeatCount.unbounded,
    s::NM1.use(500, r::Optional,  d::RepeatCount.bounded(1)),
    s:: N3.use(600, r::Optional,  d::RepeatCount.bounded(2)),
    s:: N4.use(700, r::Optional,  d::RepeatCount.bounded(1)),
    s::PER.use(800, r::Optional,  d::RepeatCount.bounded(1))),

  d::LoopDef.build("2200", d::RepeatCount.unbounded,
    s::TRN.use( 900, r::Optional,  d::RepeatCount.bounded(1)),
    s::REF.use(1000, r::Optional,  d::RepeatCount.bounded(9)),
    s::AMT.use(1100, r::Optional,  d::RepeatCount.bounded(1)),
    s::DTP.use(1200, r::Optional,  d::RepeatCount.bounded(2)),

    d::LoopDef.build("2210", d::RepeatCount.unbounded,
      s::SVC.use(1300, r::Optional,  d::RepeatCount.bounded(1)),
      s::REF.use(1400, r::Optional,  d::RepeatCount.bounded(1)),
      s::DTP.use(1500, r::Optional,  d::RepeatCount.bounded(1))))),

s:: SE.use(1600, r::Mandatory, d::RepeatCount.bounded(1))))
HS270 =
b.build("HS", "270", "Eligibility, Coverage, or Benefit Inquiry",
          d::TableDef.header("1 - Header",
s:: ST.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
s::BHT.use(200, r::Mandatory, d::RepeatCount.bounded(1))),

          d::TableDef.detail("2 - Detail",
d::LoopDef.build("2000", d::RepeatCount.unbounded,
  s:: HL.use( 100, r::Mandatory, d::RepeatCount.bounded(1)),
  s::TRN.use( 200, r::Optional,  d::RepeatCount.bounded(9)),

  d::LoopDef.build("2100", d::RepeatCount.unbounded,
    s::NM1.use( 300, r::Mandatory, d::RepeatCount.bounded(1)),
    s::REF.use( 400, r::Optional,  d::RepeatCount.bounded(9)),
    s:: N2.use( 500, r::Optional,  d::RepeatCount.bounded(1)),
    s:: N3.use( 600, r::Optional,  d::RepeatCount.bounded(1)),
    s:: N4.use( 700, r::Optional,  d::RepeatCount.bounded(1)),
    s::PER.use( 800, r::Optional,  d::RepeatCount.bounded(3)),
    s::PRV.use( 900, r::Optional,  d::RepeatCount.bounded(1)),
    s::DMG.use(1000, r::Optional,  d::RepeatCount.bounded(1)),
    s::INS.use(1100, r::Optional,  d::RepeatCount.bounded(1)),
    s:: HI.use(1150, r::Optional,  d::RepeatCount.bounded(1)),
    s::DTP.use(1200, r::Optional,  d::RepeatCount.bounded(9)),
    s::MPI.use(1250, r::Optional,  d::RepeatCount.bounded(9)),

    d::LoopDef.build("2110", d::RepeatCount.bounded(99),
      s:: EQ.use(1300, r::Optional,  d::RepeatCount.bounded(1)),
      s::AMT.use(1350, r::Optional,  d::RepeatCount.bounded(2)),
      s::VEH.use(1400, r::Optional,  d::RepeatCount.bounded(1)),
      s::PDR.use(1500, r::Optional,  d::RepeatCount.bounded(1)),
      s::PDP.use(1600, r::Optional,  d::RepeatCount.bounded(1)),
      s::III.use(1700, r::Optional,  d::RepeatCount.bounded(10)),
      s::REF.use(1900, r::Optional,  d::RepeatCount.bounded(1)),
      s::DTP.use(2000, r::Optional,  d::RepeatCount.bounded(9))))),

s:: SE.use(2100, r::Mandatory, d::RepeatCount.bounded(1))))
RA820 =
b.build("RA", "820", "Payment Order/Remittance Advice",
          d::TableDef.header("1 - Header",
s:: ST.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
#::BHT.use(200, r::Mandatory, d::RepeatCount.bounded(1)),
s::BPR.use(200, r::Mandatory, d::RepeatCount.bounded(1)),
s::NTE.use(300, r::Optional,  d::RepeatCount.unbounded),
s::TRN.use(350, r::Optional,  d::RepeatCount.bounded(1)),
s::CUR.use(400, r::Optional,  d::RepeatCount.bounded(1)),
s::REF.use(500, r::Optional,  d::RepeatCount.unbounded),
s::DTM.use(600, r::Optional,  d::RepeatCount.unbounded),

d::LoopDef.build("N1", d::RepeatCount.unbounded,
  s:: N1.use( 700, r::Optional,  d::RepeatCount.bounded(1)),
  s:: N2.use( 800, r::Optional,  d::RepeatCount.unbounded),
  s:: N3.use( 900, r::Optional,  d::RepeatCount.unbounded),
  s:: N4.use(1000, r::Optional,  d::RepeatCount.bounded(1)),
  s::REF.use(1100, r::Optional,  d::RepeatCount.unbounded),
  s::PER.use(1200, r::Optional,  d::RepeatCount.unbounded),
  s::RDM.use(1300, r::Optional,  d::RepeatCount.bounded(1)),
  s::DTM.use(1400, r::Optional,  d::RepeatCount.bounded(1)))),

          d::TableDef.detail("2 - Detail",
d::LoopDef.build("ENT", d::RepeatCount.unbounded,
  s::ENT.use( 100, r::Optional,  d::RepeatCount.bounded(1)),

  d::LoopDef.build("ENT/FA1", d::RepeatCount.unbounded,
    s::FA1.use( 150, r::Optional,  d::RepeatCount.bounded(1)),
    s::FA2.use( 160, r::Mandatory, d::RepeatCount.unbounded)),

  d::LoopDef.build("ENT/NM1", d::RepeatCount.unbounded,
    s::NM1.use( 200, r::Optional,  d::RepeatCount.bounded(1)),
    s:: N2.use( 300, r::Optional,  d::RepeatCount.unbounded),
    s:: N3.use( 400, r::Optional,  d::RepeatCount.unbounded),
    s:: N4.use( 500, r::Optional,  d::RepeatCount.bounded(1)),
    s::REF.use( 600, r::Optional,  d::RepeatCount.unbounded),
    s::PER.use( 700, r::Optional,  d::RepeatCount.unbounded)),

  d::LoopDef.build("ENT/ADX", d::RepeatCount.unbounded,
    s::ADX.use( 800, r::Optional,  d::RepeatCount.bounded(1)),
    s::NTE.use( 900, r::Optional,  d::RepeatCount.unbounded),
    s::PER.use(1000, r::Optional,  d::RepeatCount.unbounded),
    s::DTM.use(1050, r::Optional,  d::RepeatCount.bounded(1)),

    d::LoopDef.build("ENT/ADX/REF", d::RepeatCount.unbounded,
      s::REF.use(1100, r::Optional,  d::RepeatCount.bounded(1)),
      s::DTM.use(1200, r::Optional,  d::RepeatCount.unbounded)),

    d::LoopDef.build("ENT/ADX/IT1", d::RepeatCount.unbounded,
      s::IT1.use(1300, r::Optional,  d::RepeatCount.bounded(1)),
      s::RPA.use(1310, r::Optional,  d::RepeatCount.bounded(1)),
      s::QTY.use(1320, r::Optional,  d::RepeatCount.bounded(1)),

      d::LoopDef.build("ENT/ADX/IT1/REF", d::RepeatCount.unbounded,
        s::REF.use(1400, r::Optional,  d::RepeatCount.bounded(1)),
        s::DTM.use(1410, r::Optional,  d::RepeatCount.bounded(1))),

      d::LoopDef.build("ENT/ADX/IT1/SAC", d::RepeatCount.unbounded,
        s::SAC.use(1420, r::Optional,  d::RepeatCount.bounded(1)),
        s::TXI.use(1430, r::Optional,  d::RepeatCount.unbounded),
        s::DTM.use(1440, r::Optional,  d::RepeatCount.bounded(10))),

      d::LoopDef.build("ENT/ADX/IT1/SLN", d::RepeatCount.unbounded,
        s::SLN.use(1450, r::Optional,  d::RepeatCount.bounded(1)),

        d::LoopDef.build("ENT/ADX/IT1/SLN/REF", d::RepeatCount.unbounded,
          s::REF.use(1460, r::Optional,  d::RepeatCount.bounded(1)),
          s::DTM.use(1470, r::Optional,  d::RepeatCount.unbounded)),

        d::LoopDef.build("ENT/ADX/IT1/SLN/SAC", d::RepeatCount.unbounded,
          s::SAC.use(1480, r::Optional,  d::RepeatCount.bounded(1)),
          s::TXI.use(1490, r::Optional,  d::RepeatCount.unbounded)))),

    d::LoopDef.build("ENT/ADX/FA1", d::RepeatCount.unbounded,
      s::FA1.use(1495, r::Optional,  d::RepeatCount.bounded(1)),
      s::FA2.use(1496, r::Mandatory, d::RepeatCount.bounded(1)))),

  d::LoopDef.build("ENT/RMR", d::RepeatCount.unbounded,
    s::RMR.use(1500, r::Optional,  d::RepeatCount.bounded(1)),
    s::NTE.use(1600, r::Optional,  d::RepeatCount.unbounded),
    s::REF.use(1700, r::Optional,  d::RepeatCount.unbounded),
    s::DTM.use(1800, r::Optional,  d::RepeatCount.unbounded),
    s::VEH.use(1850, r::Optional,  d::RepeatCount.bounded(1)),

    d::LoopDef.build("ENT/RMR/IT1", d::RepeatCount.unbounded,
      s::IT1.use(1900, r::Optional,  d::RepeatCount.bounded(1)),
      s::RPA.use(1920, r::Optional,  d::RepeatCount.bounded(1)),
      s::QTY.use(1940, r::Optional,  d::RepeatCount.bounded(1)),

      d::LoopDef.build("ENT/RMR/IT1/REF", d::RepeatCount.unbounded,
        s::REF.use(2000, r::Optional,  d::RepeatCount.bounded(1)),
        s::DTM.use(2010, r::Optional,  d::RepeatCount.bounded(1))),

      d::LoopDef.build("ENT/RMR/IT1/SAC", d::RepeatCount.unbounded,
        s::SAC.use(2020, r::Optional,  d::RepeatCount.bounded(1)),
        s::TXI.use(2030, r::Optional,  d::RepeatCount.unbounded)),

      d::LoopDef.build("ENT/RMR/IT1/SLN", d::RepeatCount.unbounded,
        s::SLN.use(2040, r::Optional,  d::RepeatCount.bounded(1)),

        d::LoopDef.build("ENT/RMR/IT1/SLN/REF", d::RepeatCount.unbounded,
          s::REF.use(2050, r::Optional,  d::RepeatCount.bounded(1)),
          s::DTM.use(2060, r::Optional,  d::RepeatCount.unbounded)),

        d::LoopDef.build("ENT/RMR/IT1/SLN/SAC", d::RepeatCount.unbounded,
          s::SAC.use(2070, r::Optional,  d::RepeatCount.bounded(1)),
          s::TXI.use(2080, r::Optional,  d::RepeatCount.unbounded)))),

    d::LoopDef.build("ENT/RMR/ADX", d::RepeatCount.unbounded,
      s::ADX.use(2100, r::Optional,  d::RepeatCount.bounded(1)),
      s::NTE.use(2200, r::Optional,  d::RepeatCount.unbounded),
      s::PER.use(2300, r::Optional,  d::RepeatCount.unbounded),

      d::LoopDef.build("ENT/RMR/ADX/REF", d::RepeatCount.unbounded,
        s::REF.use(2400, r::Optional,  d::RepeatCount.bounded(1)),
        s::DTM.use(2500, r::Optional,  d::RepeatCount.unbounded)),

      d::LoopDef.build("ENT/RMR/ADX/IT1", d::RepeatCount.unbounded,
        s::IT1.use(2600, r::Optional,  d::RepeatCount.bounded(1)),
        s::RPA.use(2610, r::Optional,  d::RepeatCount.bounded(1)),
        s::QTY.use(2620, r::Optional,  d::RepeatCount.bounded(1)),

        d::LoopDef.build("ENT/RMR/ADX/IT1/REF", d::RepeatCount.unbounded,
          s::REF.use(2700, r::Optional,  d::RepeatCount.bounded(1)),
          s::DTM.use(2710, r::Optional,  d::RepeatCount.bounded(1))),

        d::LoopDef.build("ENT/RMR/ADX/IT1/SAC", d::RepeatCount.unbounded,
          s::SAC.use(2720, r::Optional,  d::RepeatCount.bounded(1)),
          s::TXI.use(2730, r::Optional,  d::RepeatCount.unbounded),
          s::DTM.use(2740, r::Optional,  d::RepeatCount.bounded(10)))),

        d::LoopDef.build("ENT/RMR/ADX/IT1/SLN", d::RepeatCount.unbounded,
          s::SLN.use(2750, r::Optional,  d::RepeatCount.bounded(1)),

          d::LoopDef.build("ENT/RMR/ADX/IT1/SLN/REF", d::RepeatCount.unbounded,
            s::REF.use(2760, r::Optional,  d::RepeatCount.bounded(1)),
            s::DTM.use(2770, r::Optional,  d::RepeatCount.unbounded)),

          d::LoopDef.build("ENT/RMR/ADX/IT1/SLN/SAC", d::RepeatCount.unbounded,
            s::SAC.use(2780, r::Optional,  d::RepeatCount.bounded(1)),
            s::TXI.use(2790, r::Optional,  d::RepeatCount.unbounded)))),

    d::LoopDef.build("ENT/RMR/FA1", d::RepeatCount.unbounded,
      s::FA1.use(2795, r::Optional,  d::RepeatCount.bounded(1)),
      s::FA2.use(2796, r::Optional,  d::RepeatCount.unbounded))),

d::LoopDef.build("TXP", d::RepeatCount.unbounded,
  s::TXP.use(2800, r::Optional,  d::RepeatCount.bounded(1)),
  s::TXI.use(2850, r::Optional,  d::RepeatCount.unbounded),
  s::REF.use(2855, r::Optional,  d::RepeatCount.unbounded),
  s::DTM.use(2860, r::Optional,  d::RepeatCount.unbounded)),

d::LoopDef.build("DED", d::RepeatCount.unbounded,
  s::DED.use(2870, r::Optional,  d::RepeatCount.bounded(1))),

d::LoopDef.build("LX", d::RepeatCount.unbounded,
  s:: LX.use(2900, r::Optional,  d::RepeatCount.bounded(1)),
  s::REF.use(2950, r::Optional,  d::RepeatCount.unbounded),
  s::TRN.use(3000, r::Optional,  d::RepeatCount.unbounded),

  d::LoopDef.build("LX/NM1", d::RepeatCount.unbounded,
    s::NM1.use(3050, r::Optional,  d::RepeatCount.bounded(1)),
    s::REF.use(3100, r::Optional,  d::RepeatCount.unbounded),
    s::G53.use(3150, r::Optional,  d::RepeatCount.bounded(1)),

    d::LoopDef.build("LX/NM1/AIN", d::RepeatCount.unbounded,
      s::AIN.use(3200, r::Optional,  d::RepeatCount.bounded(1)),
      s::QTY.use(3250, r::Optional,  d::RepeatCount.unbounded),
      s::DTP.use( 330, r::Optional,  d::RepeatCount.unbounded)),

    d::LoopDef.build("LX/NM1/PEN", d::RepeatCount.unbounded,
      s::PEN.use(3350, r::Optional,  d::RepeatCount.bounded(1)),
      s::AMT.use(3400, r::Optional,  d::RepeatCount.unbounded),
      s::DTP.use(3450, r::Optional,  d::RepeatCount.unbounded),

      d::LoopDef.build("LX/NM1/PEN/INV", d::RepeatCount.unbounded,
        s::INV.use(3500, r::Optional,  d::RepeatCount.bounded(1)),
        s::DTP.use(3550, r::Optional,  d::RepeatCount.unbounded))))),

d::LoopDef.build("N9", d::RepeatCount.unbounded,
  s:: N9.use(3600, r::Optional,  d::RepeatCount.bounded(1)),
  s::REF.use(3650, r::Optional,  d::RepeatCount.unbounded),

  d::LoopDef.build("N9/AMT", d::RepeatCount.unbounded,
    s::AMT.use(3700, r::Optional,  d::RepeatCount.bounded(1)),
    s::REF.use(3800, r::Optional,  d::RepeatCount.unbounded)),

  d::LoopDef.build("N9/N1", d::RepeatCount.unbounded,
    s:: N1.use(3900, r::Optional,  d::RepeatCount.bounded(1)),
    s::REF.use(4000, r::Optional,  d::RepeatCount.unbounded),

    d::LoopDef.build("N9/N1/EMS", d::RepeatCount.unbounded,
      s::EMS.use(4100, r::Optional,  d::RepeatCount.bounded(1)),
      s::ATN.use(4200, r::Optional,  d::RepeatCount.unbounded),
      s::AIN.use(4300, r::Optional,  d::RepeatCount.unbounded),
      s::PYD.use(4400, r::Optional,  d::RepeatCount.unbounded)))),

d::LoopDef.build("RYL", d::RepeatCount.unbounded,
  s::RYL.use(4500, r::Optional,  d::RepeatCount.bounded(1)),

  d::LoopDef.build("RYL/NM1", d::RepeatCount.unbounded,
    s::NM1.use(4600, r::Optional,  d::RepeatCount.bounded(1)),

    d::LoopDef.build("RYL/NM1/LOC", d::RepeatCount.unbounded,
      s::LOC.use(4700, r::Optional,  d::RepeatCount.bounded(1)),

      d::LoopDef.build("RYL/NM1/LOC/PID", d::RepeatCount.unbounded,
        s::PID.use(4800, r::Optional,  d::RepeatCount.bounded(1)),
        s::DTM.use(4900, r::Optional,  d::RepeatCount.bounded(1)),

        d::LoopDef.build("RYL/NM1/LOC/PID/PCT", d::RepeatCount.unbounded,
          s::PCT.use(5000, r::Optional,  d::RepeatCount.bounded(1)),
          s::QTY.use(5100, r::Optional,  d::RepeatCount.bounded(1)),

          d::LoopDef.build("RYL/NM1/LOC/PID/PCT/AMT", d::RepeatCount.unbounded,
            s::AMT.use(5200, r::Optional,  d::RepeatCount.bounded(1)),
            s::ADX.use(5300, r::Optional,  d::RepeatCount.unbounded))))),

    d::LoopDef.build("RYL/NM1/ASM", d::RepeatCount.unbounded,
      s::ASM.use(5400, r::Optional,  d::RepeatCount.bounded(1)),
      s::ADX.use(5500, r::Optional,  d::RepeatCount.bounded(1))))))),

          d::TableDef.summary("3 - Summary",
s:: SE.use( 100, r::Mandatory, d::RepeatCount.bounded(1))))