stupidedi 1.2.12 → 1.2.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -4
  3. data/bin/edi-pp +1 -1
  4. data/doc/Generating.md +1 -1
  5. data/lib/ruby/to_d.rb +23 -20
  6. data/lib/stupidedi/config.rb +4 -0
  7. data/lib/stupidedi/guides/005010.rb +11 -3
  8. data/lib/stupidedi/guides/005010/X220-BE834.rb +709 -0
  9. data/lib/stupidedi/guides/005010/X220A1-BE834.rb +709 -0
  10. data/lib/stupidedi/guides/005010/X223-HC837I.rb +2582 -0
  11. data/lib/stupidedi/schema/table_def.rb +2 -2
  12. data/lib/stupidedi/version.rb +1 -1
  13. data/lib/stupidedi/versions/functional_groups/005010/element_defs.rb +471 -14
  14. data/lib/stupidedi/versions/functional_groups/005010/segment_defs.rb +41 -2
  15. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/ACT.rb +33 -0
  16. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/BGN.rb +31 -0
  17. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/COB.rb +24 -0
  18. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DSB.rb +30 -0
  19. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/EC.rb +26 -0
  20. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/HD.rb +31 -0
  21. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/HLH.rb +27 -0
  22. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/ICM.rb +26 -0
  23. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/IDC.rb +24 -0
  24. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/INS.rb +39 -0
  25. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/LE.rb +20 -0
  26. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/LS.rb +20 -0
  27. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/LUI.rb +28 -0
  28. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PLA.rb +25 -0
  29. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs.rb +3 -3
  30. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/BE834.rb +163 -0
  31. data/lib/stupidedi/zipper/abstract_cursor.rb +2 -2
  32. data/spec/examples/ruby/symbol.example +22 -18
  33. data/spec/spec_helper.rb +1 -0
  34. metadata +25 -7
@@ -0,0 +1,709 @@
1
+ # frozen_string_literal: true
2
+ module Stupidedi
3
+ using Refinements
4
+
5
+ module Guides
6
+ module FiftyTen
7
+ module X220A1
8
+
9
+ b = GuideBuilder
10
+ d = Schema
11
+ r = SegmentReqs
12
+ e = ElementReqs
13
+ s = Versions::FunctionalGroups::FiftyTen::SegmentDefs
14
+ t = Versions::FunctionalGroups::FiftyTen::TransactionSetDefs
15
+
16
+ BE834 = b.build(t::BE834,
17
+ d::TableDef.header("Table 1 - Header",
18
+ b::Segment(100, s::ST, "Transaction Set Header", r::Required, d::RepeatCount.bounded(1),
19
+ b::Element(e::Required, "Transaction Set Identifier Code", b::Values("834")),
20
+ b::Element(e::Required, "Transaction Set Control Number"),
21
+ b::Element(e::Required, "Implementation Convention Reference", b::Values("005010X220A1"))
22
+ ),
23
+ b::Segment(200, s::BGN, "Beginning Segment", r::Required, d::RepeatCount.bounded(1),
24
+ b::Element(e::Required, "Transaction Set Purpose Code", b::Values("00", "15", "22")),
25
+ b::Element(e::Required, "Transaction Set Reference Number", b::MaxLength(50)),
26
+ b::Element(e::Required, "Transaction Set Creation Date"),
27
+ b::Element(e::Required, "Transaction Set Creation Time"),
28
+ b::Element(e::NotUsed, "Time Zone Code"),
29
+ b::Element(e::Situational, "Original Transaction Set Reference Number"),
30
+ b::Element(e::NotUsed, "Transaction Type Code"),
31
+ b::Element(e::Required, "Action Code", b::Values("2", "4", "RX")),
32
+ b::Element(e::NotUsed, "Security Level Code")
33
+ ),
34
+ b::Segment(300, s::REF, "Transaction Set Policy Number", r::Situational, d::RepeatCount.bounded(1),
35
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("38")),
36
+ b::Element(e::Required, "Master Policy Number", b::MaxLength(50)),
37
+ b::Element(e::NotUsed, "Description"),
38
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")
39
+ ),
40
+ b::Segment(400, s::DTP, "File Effective Date", r::Situational, d::RepeatCount.bounded(2),
41
+ b::Element(e::Required, "Date Time Qualifier", b::Values("007", "090", "091", "303", "382", "388")),
42
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
43
+ b::Element(e::Required, "Date Time Period", b::MaxLength(8))
44
+ ),
45
+ b::Segment(600, s::QTY, "Transaction Set Control Totals", r::Situational, d::RepeatCount.bounded(3),
46
+ b::Element(e::Required, "Quantity Qualifier", b::Values("DT", "ET", "TO")),
47
+ b::Element(e::Required, "Record Totals", b::MaxLength(15)),
48
+ b::Element(e::NotUsed, "Composite Unit of Measure"),
49
+ b::Element(e::NotUsed, "Free-form Information")
50
+ ),
51
+ d::LoopDef.build("1000A - SPONSOR NAME", d::RepeatCount.bounded(1),
52
+ b::Segment(700, s::N1, "Sponsor Name", r::Required, d::RepeatCount.bounded(1),
53
+ b::Element(e::Required, "Entity Identifier Code", b::Values("P5")),
54
+ b::Element(e::Situational, "Plan Sponsor Name", b::MaxLength(60)),
55
+ b::Element(e::Required, "Identification Code Qualifier", b::Values("24", "94", "FI")),
56
+ b::Element(e::Required, "Sponsor Identifier", b::MaxLength(80)),
57
+ b::Element(e::NotUsed, "Entity Relationship Code"),
58
+ b::Element(e::NotUsed, "Entity Identifier Code")
59
+ )
60
+ ),
61
+ d::LoopDef.build("1000B - PAYER", d::RepeatCount.bounded(1),
62
+ b::Segment(700, s::N1, "Payer", r::Required, d::RepeatCount.bounded(1),
63
+ b::Element(e::Required, "Entity Identifier Code", b::Values("IN")),
64
+ b::Element(e::Situational, "Insurer Name", b::MaxLength(60)),
65
+ b::Element(e::Required, "Identification Code Qualifier", b::Values("94", "FI", "XV")),
66
+ b::Element(e::Required, "Insurer Identification Code", b::MaxLength(80)),
67
+ b::Element(e::NotUsed, "Entity Relationship Code"),
68
+ b::Element(e::NotUsed, "Entity Identifier Code")
69
+ )
70
+ ),
71
+ d::LoopDef.build("1000C - TPA/BROKER NAME", d::RepeatCount.bounded(2),
72
+ b::Segment(700, s::N1, "TPA/Broker Name", r::Situational, d::RepeatCount.bounded(1),
73
+ b::Element(e::Required, "Entity Identifier Code", b::Values("BO", "TV")),
74
+ b::Element(e::Situational, "TPA or Broker Name", b::MaxLength(60)),
75
+ b::Element(e::Required, "Identification Code Qualifier", b::Values("94", "FI", "XV")),
76
+ b::Element(e::Required, "TPA or Broker Identification Code", b::MaxLength(80)),
77
+ b::Element(e::NotUsed, "Entity Relationship Code"),
78
+ b::Element(e::NotUsed, "Entity Identifier Code")
79
+ )
80
+ ),
81
+ d::LoopDef.build("1100C - TPA/BROKER ACCOUNT INFORMATION", d::RepeatCount.bounded(1),
82
+ b::Segment(1200, s::ACT, "TPA/Broker Account Information", r::Situational, d::RepeatCount.bounded(1),
83
+ b::Element(e::Required, "TPA or Broker Account Number", b::MaxLength(35)),
84
+ b::Element(e::NotUsed, "Name"),
85
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
86
+ b::Element(e::NotUsed, "Identification Code"),
87
+ b::Element(e::NotUsed, "Account Number Qualifier"),
88
+ b::Element(e::Situational, "TPA or Broker Account Number", b::MaxLength(35)),
89
+ b::Element(e::NotUsed, "Description"),
90
+ b::Element(e::NotUsed, "Payment Method Type Code"),
91
+ b::Element(e::NotUsed, "Benefit Status Code")
92
+ )
93
+ )
94
+ ),
95
+
96
+ d::TableDef.detail("Table 2 - Detail",
97
+ d::LoopDef.build("2000 - MEMBER LEVEL DETAIL", d::RepeatCount.unbounded,
98
+ b::Segment(100, s::INS, "Member Level Detail", r::Required, d::RepeatCount.bounded(1),
99
+ b::Element(e::Required, "Member Indicator", b::Values("N", "Y")),
100
+ b::Element(e::Required, "Individual Relationship Code", b::Values("01", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "23", "24", "25", "26", "31", "38", "53", "60", "D2", "G8", "G9")),
101
+ b::Element(e::Required, "Maintenance Type Code", b::Values("001", "021", "024", "025", "030")),
102
+ b::Element(e::Situational, "Maintenance Reason Code", b::Values("01", "03", "04", "05", "06", "07", "08", "09", "10", "11", "14", "15", "16", "17", "18", "20", "21", "22", "25", "26", "27", "28", "29", "31", "32", "33", "37", "38", "39", "40", "41", "43", "59", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AL", "EC", "XN", "XT")),
103
+ b::Element(e::Required, "Benefit Status Code", b::Values("A", "C", "S", "T")),
104
+ b::Element(e::Situational, "MEDICARE STATUS CODE",
105
+ b::Element(e::Required, "Medicare Plan Code", b::Values("A", "B", "C", "D", "E")),
106
+ b::Element(e::Situational, "Medicare Eligibility Reason Code", b::Values("0", "1", "2")),
107
+ b::Element(e::NotUsed, "Eligibility Reason Code"),
108
+ b::Element(e::NotUsed, "Eligibility Reason Code")
109
+ ),
110
+ b::Element(e::Situational, "Consolidated Omnibus Budget Reconciliation Act (COBRA) Qualifying Event Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "ZZ")),
111
+ b::Element(e::Situational, "Employment Status Code", b::Values("AC", "AO", "AU", "FT", "L1", "PT", "RT", "TE")),
112
+ b::Element(e::Situational, "Student Status Code", b::Values("F", "N", "P")),
113
+ b::Element(e::Situational, "Handicap Indicator", b::Values("N", "Y")),
114
+ b::Element(e::Situational, "Date Time Period Format Qualifier", b::Values("D8")),
115
+ b::Element(e::Situational, "Member Individual Death Date"),
116
+ b::Element(e::Situational, "Confidentiality Code", b::Values("R", "U")),
117
+ b::Element(e::NotUsed, "City Name"),
118
+ b::Element(e::NotUsed, "State or Province Code"),
119
+ b::Element(e::NotUsed, "Country Code"),
120
+ b::Element(e::Situational, "Birth Sequence Number")
121
+ ),
122
+ b::Segment(200, s::REF, "Subscriber Identifier", r::Required, d::RepeatCount.bounded(1),
123
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0F")),
124
+ b::Element(e::Required, "Subscriber Identifier", b::MaxLength(50)),
125
+ b::Element(e::NotUsed, "Description"),
126
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")
127
+ ),
128
+ b::Segment(200, s::REF, "Member Policy Number", r::Situational, d::RepeatCount.bounded(1),
129
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("1L")),
130
+ b::Element(e::Required, "Member Group or Policy Number", b::MaxLength(50)),
131
+ b::Element(e::NotUsed, "Description"),
132
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")
133
+ ),
134
+ b::Segment(200, s::REF, "Member Supplemental Identifier", r::Situational, d::RepeatCount.bounded(13),
135
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("17", "23", "3H", "4A", "6O", "ABB", "D3", "DX", "F6", "P5", "Q4", "QQ", "ZZ")),
136
+ b::Element(e::Required, "Member Supplemental Identifier", b::MaxLength(50)),
137
+ b::Element(e::NotUsed, "Description"),
138
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")
139
+ ),
140
+ b::Segment(250, s::DTP, "Member Level Dates", r::Situational, d::RepeatCount.bounded(24),
141
+ b::Element(e::Required, "Date Time Qualifier", b::Values("050", "286", "296", "297", "300", "301", "303", "336", "337", "338", "339", "340", "341", "350", "351", "356", "357", "383", "385", "386", "393", "394", "473", "474")),
142
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
143
+ b::Element(e::Required, "Status Information Effective Date")
144
+ ),
145
+ d::LoopDef.build("2100A - MEMBER", d::RepeatCount.bounded(1),
146
+ b::Segment(300, s::NM1, "Member Name", r::Required, d::RepeatCount.bounded(1),
147
+ b::Element(e::Required, "Entity Identifier Code", b::Values("74", "IL")),
148
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
149
+ b::Element(e::Required, "Member Last Name", b::MaxLength(60)),
150
+ b::Element(e::Situational, "Member First Name", b::MaxLength(35)),
151
+ b::Element(e::Situational, "Member Middle Name", b::MaxLength(25)),
152
+ b::Element(e::Situational, "Member Name Prefix", b::MaxLength(10)),
153
+ b::Element(e::Situational, "Member Name Suffix", b::MaxLength(10)),
154
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("34", "ZZ")),
155
+ b::Element(e::Situational, "Member Identifier", b::MaxLength(80)),
156
+ b::Element(e::NotUsed, "Entity Relationship Code"),
157
+ b::Element(e::NotUsed, "Entity Identifier Code"),
158
+ b::Element(e::NotUsed, "Name Last or Organization Name")
159
+ ),
160
+ b::Segment(400, s::PER, "Member Communications Numbers", r::Situational, d::RepeatCount.bounded(1),
161
+ b::Element(e::Required, "Contact Function Code", b::Values("IP")),
162
+ b::Element(e::NotUsed, "Name"),
163
+ b::Element(e::Required, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "HP", "TE", "WP")),
164
+ b::Element(e::Required, "Communication Number", b::MaxLength(256)),
165
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "HP", "TE", "WP")),
166
+ b::Element(e::Situational, "Communication Number", b::MaxLength(256)),
167
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "HP", "TE", "WP")),
168
+ b::Element(e::Situational, "Communication Number", b::MaxLength(256)),
169
+ b::Element(e::NotUsed, "Contact Inquiry Reference")
170
+ ),
171
+ b::Segment(500, s::N3, "Member Residence Street Address", r::Situational, d::RepeatCount.bounded(1),
172
+ b::Element(e::Required, "Member Address Line", b::MaxLength(55)),
173
+ b::Element(e::Situational, "Member Address Line", b::MaxLength(55))
174
+ ),
175
+ b::Segment(600, s::N4, "Member City, State, Zip Code", r::Situational, d::RepeatCount.bounded(1),
176
+ b::Element(e::Required, "Member City Name"),
177
+ b::Element(e::Situational, "Member State Code"),
178
+ b::Element(e::Situational, "Member Postal Zone or Zip Code"),
179
+ b::Element(e::Situational, "Country Code"),
180
+ b::Element(e::Situational, "Location Qualifier", b::Values("60", "CY")),
181
+ b::Element(e::Situational, "Location Identifier"),
182
+ b::Element(e::Situational, "Country Subdivision Code")
183
+ ),
184
+ b::Segment(800, s::DMG, "Member Demographics", r::Situational, d::RepeatCount.bounded(1),
185
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
186
+ b::Element(e::Required, "Member Birth Date"),
187
+ b::Element(e::Required, "Gender Code", b::Values("F", "M", "U")),
188
+ b::Element(e::Situational, "Marital Status Code", b::Values("B", "D", "I", "M", "R", "S", "U", "W", "X")),
189
+ b::Element(e::Situational, "COMPOSITE RACE OR ETHNICITY INFORMATION",
190
+ b::Element(e::Situational, "Race or Ethnicity Code", b::Values("7", "8", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "N", "O", "P", "Z")),
191
+ b::Element(e::Situational, "Code List Qualifier Code", b::Values("RET")),
192
+ b::Element(e::Situational, "Race or Ethnicity Code")
193
+ ),
194
+ b::Element(e::Situational, "Citizenship Status Code", b::Values("1", "2", "3", "4", "5", "6", "7")),
195
+ b::Element(e::NotUsed, "Country Code"),
196
+ b::Element(e::NotUsed, "Basis of Verification Code"),
197
+ b::Element(e::NotUsed, "Quantity"),
198
+ b::Element(e::Situational, "Code List Qualifier Code", b::Values("REC")),
199
+ b::Element(e::Situational, "Race or Ethnicity Collection Code")
200
+ ),
201
+ b::Segment(1000, s::EC, "Employment Class", r::Situational, d::RepeatCount.unbounded,
202
+ b::Element(e::Required, "Employment Class Code", b::Values("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "17", "18", "19", "20", "21", "22", "23")),
203
+ b::Element(e::Situational, "Employment Class Code", b::Values("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "17", "18", "19", "20", "21", "22", "23")),
204
+ b::Element(e::Situational, "Employment Class Code", b::Values("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "17", "18", "19", "20", "21", "22", "23")),
205
+ b::Element(e::NotUsed, "Percentage as Decimal"),
206
+ b::Element(e::NotUsed, "Information Status Code"),
207
+ b::Element(e::NotUsed, "Occupation Code")
208
+ ),
209
+ b::Segment(1100, s::ICM, "Member Income", r::Situational, d::RepeatCount.bounded(1),
210
+ b::Element(e::Required, "Frequency Code", b::Values("1", "2", "3", "4", "6", "7", "8", "9", "B", "C", "H", "Q", "S", "U")),
211
+ b::Element(e::Required, "Wage Amount"),
212
+ b::Element(e::Situational, "Work Hours Count"),
213
+ b::Element(e::Situational, "Location Identification Code"),
214
+ b::Element(e::Situational, "Salary Grade Code"),
215
+ b::Element(e::NotUsed, "Currency Code")
216
+ ),
217
+ b::Segment(1200, s::AMT, "Member Policy Amounts", r::Situational, d::RepeatCount.bounded(7),
218
+ b::Element(e::Required, "Amount Qualifier Code", b::Values("B9", "C1", "D2", "EBA", "FK", "P3", "R")),
219
+ b::Element(e::Required, "Contract Amount"),
220
+ b::Element(e::NotUsed, "Credit/Debit Flag Code")
221
+ ),
222
+ b::Segment(1300, s::HLH, "Member Health Information", r::Situational, d::RepeatCount.bounded(1),
223
+ b::Element(e::Required, "Health Related Code", b::Values("N", "S", "T", "U", "X")),
224
+ b::Element(e::Situational, "Member Height"),
225
+ b::Element(e::Situational, "Member Weight"),
226
+ b::Element(e::NotUsed, "Weight"),
227
+ b::Element(e::NotUsed, "Description"),
228
+ b::Element(e::NotUsed, "Current Health Condition Code"),
229
+ b::Element(e::NotUsed, "Description")
230
+ ),
231
+ b::Segment(1500, s::LUI, "Member Language", r::Situational, d::RepeatCount.unbounded,
232
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("LD", "LE")),
233
+ b::Element(e::Situational, "Language Code"),
234
+ b::Element(e::Situational, "Language Description"),
235
+ b::Element(e::Situational, "Language Use Indicator", b::Values("5", "6", "7", "8")),
236
+ b::Element(e::NotUsed, "Language Proficiency Indicator")
237
+ )
238
+ ),
239
+ d::LoopDef.build("2100B - INCORRECT MEMBER NAME", d::RepeatCount.bounded(1),
240
+ b::Segment(300, s::NM1, "Incorrect Member Name", r::Situational, d::RepeatCount.bounded(1),
241
+ b::Element(e::Required, "Entity Identifier Code", b::Values("70")),
242
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
243
+ b::Element(e::Required, "Prior Incorrect Member Last Name"),
244
+ b::Element(e::Situational, "Prior Incorrect Member First Name"),
245
+ b::Element(e::Situational, "Prior Incorrect Member Middle Name"),
246
+ b::Element(e::Situational, "Prior Incorrect Member Name Prefix"),
247
+ b::Element(e::Situational, "Prior Incorrect Member Name Suffix"),
248
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("34", "ZZ")),
249
+ b::Element(e::Situational, "Prior Incorrect Insured Identifier"),
250
+ b::Element(e::NotUsed, "Entity Relationship Code"),
251
+ b::Element(e::NotUsed, "Entity Identifier Code"),
252
+ b::Element(e::NotUsed, "Name Last or Organization Name")
253
+ ),
254
+ b::Segment(800, s::DMG, "Incorrect Member Demographics", r::Situational, d::RepeatCount.bounded(1),
255
+ b::Element(e::Situational, "Date Time Period Format Qualifier", b::Values("D8")),
256
+ b::Element(e::Situational, "Prior Incorrect Insured Birth Date"),
257
+ b::Element(e::Situational, "Prior Incorrect Insured Gender Code", b::Values("F", "M", "U")),
258
+ b::Element(e::Situational, "Marital Status Code", b::Values("B", "D", "I", "M", "R", "S", "U", "W", "X")),
259
+ b::Element(e::Situational, "COMPOSITE RACE OR ETHNICITY INFORMATION",
260
+ b::Element(e::Situational, "Race or Ethnicity Code"),
261
+ b::Element(e::Situational, "Code List Qualifier Code"),
262
+ b::Element(e::Situational, "Race or Ethnicity Code")
263
+ ),
264
+ b::Element(e::Situational, "Citizenship Status Code"),
265
+ b::Element(e::NotUsed, "Country Code"),
266
+ b::Element(e::NotUsed, "Basis of Verification Code"),
267
+ b::Element(e::NotUsed, "Quantity"),
268
+ b::Element(e::Situational, "Code List Qualifier Code"),
269
+ b::Element(e::Situational, "Race or Ethnicity Collection Code")
270
+ )
271
+ ),
272
+ d::LoopDef.build("2100C - MEMBER MAILING ADDRESS", d::RepeatCount.bounded(1),
273
+ b::Segment(300, s::NM1, "Member Mailing Address", r::Situational, d::RepeatCount.bounded(1),
274
+ b::Element(e::Required, "Entity Identifier Code", b::Values("31")),
275
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
276
+ b::Element(e::NotUsed, "Name Last or Organization Name"),
277
+ b::Element(e::NotUsed, "Name First"),
278
+ b::Element(e::NotUsed, "Name Middle"),
279
+ b::Element(e::NotUsed, "Name Prefix"),
280
+ b::Element(e::NotUsed, "Name Suffix"),
281
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
282
+ b::Element(e::NotUsed, "Identification Code"),
283
+ b::Element(e::NotUsed, "Entity Relationship Code"),
284
+ b::Element(e::NotUsed, "Entity Identifier Code"),
285
+ b::Element(e::NotUsed, "Name Last or Organization Name")
286
+ ),
287
+ b::Segment(500, s::N3, "Member Mail Street Address", r::Required, d::RepeatCount.bounded(1),
288
+ b::Element(e::Required, "Member Address Line", b::MaxLength(55)),
289
+ b::Element(e::Situational, "Member Address Line", b::MaxLength(55))
290
+ ),
291
+ b::Segment(600, s::N4, "Member Mail City, State, Zip Code", r::Situational, d::RepeatCount.bounded(1),
292
+ b::Element(e::Required, "Member Mail City Name"),
293
+ b::Element(e::Situational, "Member Mail State Code"),
294
+ b::Element(e::Situational, "Member Mail Postal Zone or Zip Code"),
295
+ b::Element(e::Situational, "Country Code"),
296
+ b::Element(e::NotUsed, "Location Qualifier"),
297
+ b::Element(e::NotUsed, "Location Identifier"),
298
+ b::Element(e::Situational, "Country Subdivision Code")
299
+ )
300
+ ),
301
+ d::LoopDef.build("2100D - MEMBER EMPLOYER", d::RepeatCount.bounded(3),
302
+ b::Segment(300, s::NM1, "Member Employer", r::Situational, d::RepeatCount.bounded(1),
303
+ b::Element(e::Required, "Entity Identifier Code", b::Values("36")),
304
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1", "2")),
305
+ b::Element(e::Situational, "Member Employer Name"),
306
+ b::Element(e::Situational, "Member Employer First Name"),
307
+ b::Element(e::Situational, "Member Employer Middle Name"),
308
+ b::Element(e::Situational, "Member Employer Name Prefix"),
309
+ b::Element(e::Situational, "Member Employer Name Suffix"),
310
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("24", "34")),
311
+ b::Element(e::Situational, "Member Employer Identifier"),
312
+ b::Element(e::NotUsed, "Entity Relationship Code"),
313
+ b::Element(e::NotUsed, "Entity Identifier Code"),
314
+ b::Element(e::NotUsed, "Name Last or Organization Name")
315
+ ),
316
+ b::Segment(400, s::PER, "Member Employer Communications Numbers", r::Situational, d::RepeatCount.bounded(1),
317
+ b::Element(e::Required, "Contact Function Code", b::Values("EP")),
318
+ b::Element(e::Situational, "Member Employer Communications Contact Name"),
319
+ b::Element(e::Required, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "TE")),
320
+ b::Element(e::Required, "Communication Number", b::MaxLength(256)),
321
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "TE")),
322
+ b::Element(e::Situational, "Communication Number", b::MaxLength(256)),
323
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "TE")),
324
+ b::Element(e::Situational, "Communication Number", b::MaxLength(256)),
325
+ b::Element(e::NotUsed, "Contact Inquiry Reference")
326
+ ),
327
+ b::Segment(500, s::N3, "Member Employer Street Address", r::Situational, d::RepeatCount.bounded(1),
328
+ b::Element(e::Required, "Member Employer Address Line", b::MaxLength(55)),
329
+ b::Element(e::Situational, "Member Employer Address Line", b::MaxLength(55))
330
+ ),
331
+ b::Segment(600, s::N4, "Member Employer City, State, Zip Code", r::Situational, d::RepeatCount.bounded(1),
332
+ b::Element(e::Required, "Member Employer City Name"),
333
+ b::Element(e::Situational, "Member Employer State Code"),
334
+ b::Element(e::Situational, "Member Employer Postal Zone or Zip Code"),
335
+ b::Element(e::Situational, "Country Code"),
336
+ b::Element(e::NotUsed, "Location Qualifier"),
337
+ b::Element(e::NotUsed, "Location Identifier"),
338
+ b::Element(e::Situational, "Country Subdivision Code")
339
+ )
340
+ ),
341
+ d::LoopDef.build("2100E - MEMBER SCHOOL", d::RepeatCount.bounded(3),
342
+ b::Segment(300, s::NM1, "Member School", r::Situational, d::RepeatCount.bounded(1),
343
+ b::Element(e::Required, "Entity Identifier Code", b::Values("M8")),
344
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("2")),
345
+ b::Element(e::Required, "School Name"),
346
+ b::Element(e::NotUsed, "Name First"),
347
+ b::Element(e::NotUsed, "Name Middle"),
348
+ b::Element(e::NotUsed, "Name Prefix"),
349
+ b::Element(e::NotUsed, "Name Suffix"),
350
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
351
+ b::Element(e::NotUsed, "Identification Code"),
352
+ b::Element(e::NotUsed, "Entity Relationship Code"),
353
+ b::Element(e::NotUsed, "Entity Identifier Code"),
354
+ b::Element(e::NotUsed, "Name Last or Organization Name")
355
+ ),
356
+ b::Segment(400, s::PER, "Member School Communications Numbers", r::Situational, d::RepeatCount.bounded(1),
357
+ b::Element(e::Required, "Contact Function Code", b::Values("SK")),
358
+ b::Element(e::Situational, "Member School Communications Contact Name"),
359
+ b::Element(e::Required, "Communication Number Qualifier", b::Values("EM", "EX", "FX", "TE")),
360
+ b::Element(e::Required, "Communication Number", b::MaxLength(256)),
361
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("EM", "EX", "FX", "TE")),
362
+ b::Element(e::Situational, "Communication Number", b::MaxLength(256)),
363
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("EM", "EX", "FX", "TE")),
364
+ b::Element(e::Situational, "Communication Number", b::MaxLength(256)),
365
+ b::Element(e::NotUsed, "Contact Inquiry Reference")
366
+ ),
367
+ b::Segment(500, s::N3, "Member School Street Address", r::Situational, d::RepeatCount.bounded(1),
368
+ b::Element(e::Required, "School Address Line", b::MaxLength(55)),
369
+ b::Element(e::Situational, "School Address Line", b::MaxLength(55))
370
+ ),
371
+ b::Segment(600, s::N4, "Member School City, State, Zip Code", r::Situational, d::RepeatCount.bounded(1),
372
+ b::Element(e::Required, "Member School City Name"),
373
+ b::Element(e::Situational, "Member School State Code"),
374
+ b::Element(e::Situational, "Member School Postal Zone or Zip Code"),
375
+ b::Element(e::Situational, "Country Code"),
376
+ b::Element(e::NotUsed, "Location Qualifier"),
377
+ b::Element(e::NotUsed, "Location Identifier"),
378
+ b::Element(e::Situational, "Country Subdivision Code")
379
+ )
380
+ ),
381
+ d::LoopDef.build("2100F - CUSTODIAL PARENT", d::RepeatCount.bounded(1),
382
+ b::Segment(300, s::NM1, "Custodial Parent", r::Situational, d::RepeatCount.bounded(1),
383
+ b::Element(e::Required, "Entity Identifier Code", b::Values("S3")),
384
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
385
+ b::Element(e::Required, "Custodial Parent Last Name"),
386
+ b::Element(e::Required, "Custodial Parent First Name"),
387
+ b::Element(e::Situational, "Custodial Parent Middle Name"),
388
+ b::Element(e::Situational, "Custodial Parent Name Prefix"),
389
+ b::Element(e::Situational, "Custodial Parent Name Suffix"),
390
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("34", "ZZ")),
391
+ b::Element(e::Situational, "Custodial Parent Identifier"),
392
+ b::Element(e::NotUsed, "Entity Relationship Code"),
393
+ b::Element(e::NotUsed, "Entity Identifier Code"),
394
+ b::Element(e::NotUsed, "Name Last or Organization Name")
395
+ ),
396
+ b::Segment(400, s::PER, "Custodial Parent Communications Numbers", r::Situational, d::RepeatCount.bounded(1),
397
+ b::Element(e::Required, "Contact Function Code", b::Values("PQ")),
398
+ b::Element(e::NotUsed, "Name"),
399
+ b::Element(e::Required, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "HP", "TE", "WP")),
400
+ b::Element(e::Required, "Communication Number", b::MaxLength(256)),
401
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "HP", "TE", "WP")),
402
+ b::Element(e::Situational, "Communication Number", b::MaxLength(256)),
403
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "HP", "TE", "WP")),
404
+ b::Element(e::Situational, "Communication Number", b::MaxLength(256)),
405
+ b::Element(e::NotUsed, "Contact Inquiry Reference")
406
+ ),
407
+ b::Segment(500, s::N3, "Custodial Parent Street Address", r::Situational, d::RepeatCount.bounded(1),
408
+ b::Element(e::Required, "Custodial Parent Address Line", b::MaxLength(55)),
409
+ b::Element(e::Situational, "Custodial Parent Address Line", b::MaxLength(55))
410
+ ),
411
+ b::Segment(600, s::N4, "Custodial Parent City, State, Zip Code", r::Situational, d::RepeatCount.bounded(1),
412
+ b::Element(e::Required, "Custodial Parent City Name"),
413
+ b::Element(e::Situational, "Custodial Parent State Code"),
414
+ b::Element(e::Situational, "Custodial Parent Postal Zone or Zip Code"),
415
+ b::Element(e::Situational, "Country Code"),
416
+ b::Element(e::NotUsed, "Location Qualifier"),
417
+ b::Element(e::NotUsed, "Location Identifier"),
418
+ b::Element(e::Situational, "Country Subdivision Code")
419
+ )
420
+ ),
421
+ d::LoopDef.build("2100G - RESPONSIBLE PERSON", d::RepeatCount.bounded(13),
422
+ b::Segment(300, s::NM1, "Responsible Person", r::Situational, d::RepeatCount.bounded(1),
423
+ b::Element(e::Required, "Entity Identifier Code", b::Values("6Y", "9K", "E1", "EI", "EXS", "GB", "GD", "J6", "LR", "QD", "S1", "TZ", "X4")),
424
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
425
+ b::Element(e::Required, "Responsible Party Last or Organization Name"),
426
+ b::Element(e::Situational, "Responsible Party First Name"),
427
+ b::Element(e::Situational, "Responsible Party Middle Name"),
428
+ b::Element(e::Situational, "Responsible Party Name Prefix"),
429
+ b::Element(e::Situational, "Responsible Party Name Suffix"),
430
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("34", "ZZ")),
431
+ b::Element(e::Situational, "Responsible Party Identifier"),
432
+ b::Element(e::NotUsed, "Entity Relationship Code"),
433
+ b::Element(e::NotUsed, "Entity Identifier Code"),
434
+ b::Element(e::NotUsed, "Name Last or Organization Name")
435
+ ),
436
+ b::Segment(400, s::PER, "Responsible Person Communications Numbers", r::Situational, d::RepeatCount.bounded(1),
437
+ b::Element(e::Required, "Contact Function Code", b::Values("RP")),
438
+ b::Element(e::NotUsed, "Name"),
439
+ b::Element(e::Required, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "HP", "TE", "WP")),
440
+ b::Element(e::Required, "Communication Number", b::MaxLength(256)),
441
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "HP", "TE", "WP")),
442
+ b::Element(e::Situational, "Communication Number", b::MaxLength(256)),
443
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "HP", "TE", "WP")),
444
+ b::Element(e::Situational, "Communication Number", b::MaxLength(256)),
445
+ b::Element(e::NotUsed, "Contact Inquiry Reference")
446
+ ),
447
+ b::Segment(500, s::N3, "Responsible Person Street Address", r::Situational, d::RepeatCount.bounded(1),
448
+ b::Element(e::Required, "Responsible Party Address Line", b::MaxLength(55)),
449
+ b::Element(e::Situational, "Responsible Party Address Line", b::MaxLength(55))
450
+ ),
451
+ b::Segment(600, s::N4, "Responsible Person City, State, Zip Code", r::Situational, d::RepeatCount.bounded(1),
452
+ b::Element(e::Required, "Responsible Person City Name"),
453
+ b::Element(e::Situational, "Responsible Person State Code"),
454
+ b::Element(e::Situational, "Responsible Person Postal Zone or Zip Code"),
455
+ b::Element(e::Situational, "Country Code"),
456
+ b::Element(e::NotUsed, "Location Qualifier"),
457
+ b::Element(e::NotUsed, "Location Identifier"),
458
+ b::Element(e::Situational, "Country Subdivision Code")
459
+ )
460
+ ),
461
+ d::LoopDef.build("2100H - DROP OFF LOCATION", d::RepeatCount.bounded(1),
462
+ b::Segment(300, s::NM1, "Drop Off Location", r::Situational, d::RepeatCount.bounded(1),
463
+ b::Element(e::Required, "Entity Identifier Code", b::Values("45")),
464
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
465
+ b::Element(e::Situational, "Name Last or Organization Name"),
466
+ b::Element(e::Situational, "Name First"),
467
+ b::Element(e::Situational, "Name Middle"),
468
+ b::Element(e::Situational, "Name Prefix"),
469
+ b::Element(e::Situational, "Name Suffix"),
470
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
471
+ b::Element(e::NotUsed, "Identification Code"),
472
+ b::Element(e::NotUsed, "Entity Relationship Code"),
473
+ b::Element(e::NotUsed, "Entity Identifier Code"),
474
+ b::Element(e::NotUsed, "Name Last or Organization Name")
475
+ ),
476
+ b::Segment(500, s::N3, "Drop Off Location Street Address", r::Situational, d::RepeatCount.bounded(1),
477
+ b::Element(e::Required, "Drop Off Location Address Line", b::MaxLength(55)),
478
+ b::Element(e::Situational, "Drop Off Location Address Line", b::MaxLength(55))
479
+ ),
480
+ b::Segment(600, s::N4, "Drop Off Location City, State, Zip Code", r::Situational, d::RepeatCount.bounded(1),
481
+ b::Element(e::Required, "Drop Off Location City Name"),
482
+ b::Element(e::Situational, "Drop Off Location State Code"),
483
+ b::Element(e::Situational, "Drop Off Location Postal Zone or Zip Code"),
484
+ b::Element(e::Situational, "Country Code"),
485
+ b::Element(e::NotUsed, "Location Qualifier"),
486
+ b::Element(e::NotUsed, "Location Identifier"),
487
+ b::Element(e::Situational, "Country Subdivision Code")
488
+ )
489
+ ),
490
+ d::LoopDef.build("2200 - DISABILITY INFORMATION", d::RepeatCount.unbounded,
491
+ b::Segment(2000, s::DSB, "Disability Information", r::Situational, d::RepeatCount.bounded(1),
492
+ b::Element(e::Required, "Disability Type Code", b::Values("1", "2", "3", "4")),
493
+ b::Element(e::NotUsed, "Quantity"),
494
+ b::Element(e::NotUsed, "Occupation Code"),
495
+ b::Element(e::NotUsed, "Work Intensity Code"),
496
+ b::Element(e::NotUsed, "Product Option Code"),
497
+ b::Element(e::NotUsed, "Monetary Amount"),
498
+ b::Element(e::Situational, "Product or Service ID Qualifier", b::Values("DX", "ZZ")),
499
+ b::Element(e::Situational, "Diagnosis Code")
500
+ ),
501
+ b::Segment(2100, s::DTP, "Disability Eligibility Dates", r::Situational, d::RepeatCount.bounded(2),
502
+ b::Element(e::Required, "Date Time Qualifier", b::Values("360", "361")),
503
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
504
+ b::Element(e::Required, "Disability Eligibility Date")
505
+ )
506
+ ),
507
+ d::LoopDef.build("2300 - HEALTH COVERAGE", d::RepeatCount.bounded(99),
508
+ b::Segment(2600, s::HD, "Health Coverage", r::Situational, d::RepeatCount.bounded(1),
509
+ b::Element(e::Required, "Maintenance Type Code", b::Values("001", "002", "021", "024", "025", "026", "030", "032")),
510
+ b::Element(e::NotUsed, "Maintenance Reason Code"),
511
+ b::Element(e::Required, "Insurance Line Code", b::Values("AG", "AH", "AJ", "AK", "DCP", "DEN", "EPO", "FAC", "HE", "HLT", "HMO", "LTC", "LTD", "MM", "MOD", "PDG", "POS", "PPO", "PRA", "STD", "UR", "VIS")),
512
+ b::Element(e::Situational, "Plan Coverage Description"),
513
+ b::Element(e::Situational, "Coverage Level Code", b::Values("CHD", "DEP", "E1D", "E2D", "E3D", "E5D", "E6D", "E7D", "E8D", "E9D", "ECH", "EMP", "ESP", "FAM", "IND", "SPC", "SPO", "TWO")),
514
+ b::Element(e::NotUsed, "Count"),
515
+ b::Element(e::NotUsed, "Count"),
516
+ b::Element(e::NotUsed, "Underwriting Decision Code"),
517
+ b::Element(e::Situational, "Late Enrollment Indicator"),
518
+ b::Element(e::NotUsed, "Drug House Code"),
519
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")
520
+ ),
521
+ b::Segment(2700, s::DTP, "Health Coverage Dates", r::Required, d::RepeatCount.bounded(6),
522
+ b::Element(e::Required, "Date Time Qualifier", b::Values("300", "303", "343", "348", "349", "543", "695")),
523
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8", "RD8")),
524
+ b::Element(e::Required, "Coverage Period")
525
+ ),
526
+ b::Segment(2800, s::AMT, "Health Coverage Policy", r::Situational, d::RepeatCount.bounded(9),
527
+ b::Element(e::Required, "Amount Qualifier Code", b::Values("B9", "C1", "D2", "EBA", "FK", "P3", "R")),
528
+ b::Element(e::Required, "Contract Amount"),
529
+ b::Element(e::NotUsed, "Credit/Debit Flag Code")
530
+ ),
531
+ b::Segment(2900, s::REF, "Health Coverage Policy Number", r::Situational, d::RepeatCount.bounded(14),
532
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("17", "1L", "9V", "CE", "E8", "M7", "PID", "RB", "X9", "XM", "XX1", "XX2", "ZX", "ZZ")),
533
+ b::Element(e::Required, "Member Group or Policy Number", b::MaxLength(50)),
534
+ b::Element(e::NotUsed, "Description"),
535
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")
536
+ ),
537
+ b::Segment(2900, s::REF, "Prior Coverage Months", r::Situational, d::RepeatCount.bounded(1),
538
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("QQ")),
539
+ b::Element(e::Required, "Prior Coverage Month Count", b::MaxLength(50)),
540
+ b::Element(e::NotUsed, "Description"),
541
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")
542
+ ),
543
+ b::Segment(3000, s::IDC, "Identification Card", r::Situational, d::RepeatCount.bounded(3),
544
+ b::Element(e::Required, "Plan Coverage Description"),
545
+ b::Element(e::Required, "Identification Card Type Code", b::Values("D", "H", "P")),
546
+ b::Element(e::Situational, "Identification Card Count"),
547
+ b::Element(e::Situational, "Action Code", b::Values("1", "2", "RX"))
548
+ ),
549
+ d::LoopDef.build("2310 - PROVIDER INFORMATION", d::RepeatCount.bounded(30),
550
+ b::Segment(3100, s::LX, "Provider Information", r::Situational, d::RepeatCount.bounded(1),
551
+ b::Element(e::Required, "Assigned Number")
552
+ ),
553
+ b::Segment(3200, s::NM1, "Provider Name", r::Required, d::RepeatCount.bounded(1),
554
+ b::Element(e::Required, "Entity Identifier Code", b::Values("1X", "3D", "80", "FA", "OD", "P3", "QA", "QN", "Y2")),
555
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1", "2")),
556
+ b::Element(e::Situational, "Provider Last or Organization Name"),
557
+ b::Element(e::Situational, "Provider First Name"),
558
+ b::Element(e::Situational, "Provider Middle Name"),
559
+ b::Element(e::Situational, "Provider Name Prefix"),
560
+ b::Element(e::Situational, "Provider Name Suffix"),
561
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("34", "FI", "SV", "XX")),
562
+ b::Element(e::Situational, "Provider Identifier"),
563
+ b::Element(e::Required, "Entity Relationship Code", b::Values("25", "26", "72")),
564
+ b::Element(e::NotUsed, "Entity Identifier Code"),
565
+ b::Element(e::NotUsed, "Name Last or Organization Name")
566
+ ),
567
+ b::Segment(3500, s::N3, "Provider Address", r::Situational, d::RepeatCount.bounded(2),
568
+ b::Element(e::Required, "Provider Address Line", b::MaxLength(55)),
569
+ b::Element(e::Situational, "Provider Address Line", b::MaxLength(55))
570
+ ),
571
+ b::Segment(3600, s::N4, "Provider City, State, Zip Code", r::Situational, d::RepeatCount.bounded(1),
572
+ b::Element(e::Required, "Provider City Name"),
573
+ b::Element(e::Situational, "Provider State Code"),
574
+ b::Element(e::Situational, "Provider Postal Zone or Zip Code"),
575
+ b::Element(e::Situational, "Country Code"),
576
+ b::Element(e::NotUsed, "Location Qualifier"),
577
+ b::Element(e::NotUsed, "Location Identifier"),
578
+ b::Element(e::Situational, "Country Subdivision Code")
579
+ ),
580
+ b::Segment(3700, s::PER, "Provider Communications Numbers", r::Situational, d::RepeatCount.bounded(2),
581
+ b::Element(e::Required, "Contact Function Code", b::Values("IC")),
582
+ b::Element(e::NotUsed, "Name"),
583
+ b::Element(e::Required, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "HP", "TE", "WP")),
584
+ b::Element(e::Required, "Communication Number", b::MaxLength(256)),
585
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "HP", "TE", "WP")),
586
+ b::Element(e::Situational, "Communication Number", b::MaxLength(256)),
587
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("AP", "BN", "CP", "EM", "EX", "FX", "HP", "TE", "WP")),
588
+ b::Element(e::Situational, "Communication Number", b::MaxLength(256)),
589
+ b::Element(e::NotUsed, "Contact Inquiry Reference")
590
+ ),
591
+ b::Segment(3950, s::PLA, "Provider Change Reason", r::Situational, d::RepeatCount.bounded(1),
592
+ b::Element(e::Required, "Action Code", b::Values("2")),
593
+ b::Element(e::Required, "Entity Identifier Code", b::Values("1P")),
594
+ b::Element(e::Required, "Provider Effective Date"),
595
+ b::Element(e::NotUsed, "Time"),
596
+ b::Element(e::Required, "Maintenance Reason Code", b::Values("14", "22", "46", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ"))
597
+ )
598
+ ),
599
+ d::LoopDef.build("2320 - COORDINATION OF BENEFITS", d::RepeatCount.bounded(5),
600
+ b::Segment(4000, s::COB, "Coordination of Benefits", r::Situational, d::RepeatCount.bounded(1),
601
+ b::Element(e::Required, "Payer Responsibility Sequence Number Code", b::Values("P", "S", "T", "U")),
602
+ b::Element(e::Situational, "Member Group or Policy Number", b::MaxLength(50)),
603
+ b::Element(e::Required, "Coordination of Benefits Code", b::Values("1", "5", "6")),
604
+ b::Element(e::Situational, "Service Code", b::Values("1", "35", "48", "50", "54", "89", "90", "A4", "AG", "AL", "BB"))
605
+ ),
606
+ b::Segment(4050, s::REF, "Additional Coordination of Benefits Identifiers", r::Situational, d::RepeatCount.bounded(4),
607
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("60", "6P", "SY", "ZZ")),
608
+ b::Element(e::Required, "Member Group or Policy Number", b::MaxLength(50)),
609
+ b::Element(e::NotUsed, "Description"),
610
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")
611
+ ),
612
+ b::Segment(4070, s::DTP, "Coordination of Benefits Eligibility Dates", r::Situational, d::RepeatCount.bounded(2),
613
+ b::Element(e::Required, "Date Time Qualifier", b::Values("344", "345")),
614
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
615
+ b::Element(e::Required, "Coordination of Benefits Date")
616
+ ),
617
+ d::LoopDef.build("2330 - COORDINATION OF BENEFITS RELATED ENTITY", d::RepeatCount.bounded(3),
618
+ b::Segment(4100, s::NM1, "Coordination of Benefits Related Entity", r::Situational, d::RepeatCount.bounded(1),
619
+ b::Element(e::Required, "Entity Identifier Code", b::Values("36", "GW", "IN")),
620
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("2")),
621
+ b::Element(e::Situational, "Coordination of Benefits Insurer Name"),
622
+ b::Element(e::NotUsed, "Name First"),
623
+ b::Element(e::NotUsed, "Name Middle"),
624
+ b::Element(e::NotUsed, "Name Prefix"),
625
+ b::Element(e::NotUsed, "Name Suffix"),
626
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("FI", "NI", "XV")),
627
+ b::Element(e::Situational, "Coordination of Benefits Insurer Identification Code"),
628
+ b::Element(e::NotUsed, "Entity Relationship Code"),
629
+ b::Element(e::NotUsed, "Entity Identifier Code"),
630
+ b::Element(e::NotUsed, "Name Last or Organization Name")
631
+ ),
632
+ b::Segment(4300, s::N3, "Coordination of Benefits Related Entity Address", r::Situational, d::RepeatCount.bounded(1),
633
+ b::Element(e::Required, "Address Information", b::MaxLength(55)),
634
+ b::Element(e::Situational, "Address Information", b::MaxLength(55))
635
+ ),
636
+ b::Segment(4400, s::N4, "Coordination of Benefits Other Insurance Company City, State, Zip Code", r::Situational, d::RepeatCount.bounded(1),
637
+ b::Element(e::Required, "Coordination of Benefits Other Insurance Company City Name"),
638
+ b::Element(e::Situational, "Coordination of Benefits Other Insurance Company State Code"),
639
+ b::Element(e::Situational, "Coordination of Benefits Other Insurance Company Postal Zone or Zip Code"),
640
+ b::Element(e::Situational, "Country Code"),
641
+ b::Element(e::NotUsed, "Location Qualifier"),
642
+ b::Element(e::NotUsed, "Location Identifier"),
643
+ b::Element(e::Situational, "Country Subdivision Code")
644
+ ),
645
+ b::Segment(4500, s::PER, "Administrative Communications Contact", r::Situational, d::RepeatCount.bounded(1),
646
+ b::Element(e::Required, "Contact Function Code", b::Values("CN")),
647
+ b::Element(e::NotUsed, "Name"),
648
+ b::Element(e::Required, "Communication Number Qualifier", b::Values("TE")),
649
+ b::Element(e::Required, "Communication Number", b::MaxLength(256)),
650
+ b::Element(e::NotUsed, "Communication Number Qualifier"),
651
+ b::Element(e::NotUsed, "Communication Number"),
652
+ b::Element(e::NotUsed, "Communication Number Qualifier"),
653
+ b::Element(e::NotUsed, "Communication Number"),
654
+ b::Element(e::NotUsed, "Contact Inquiry Reference")
655
+ )
656
+ )
657
+ )
658
+ ),
659
+ d::LoopDef.build("2700 - ADDITIONAL REPORTING CATEGORIES", d::RepeatCount.bounded(1),
660
+ b::Segment(6880, s::LS, "Additional Reporting Categories", r::Situational, d::RepeatCount.bounded(1),
661
+ b::Element(e::Required, "Loop Identifier Code", b::Values("2700"))
662
+ ),
663
+ d::LoopDef.build("2710 - MEMBER REPORTING CATEGORIES", d::RepeatCount.unbounded,
664
+ b::Segment(6881, s::LX, "Member Reporting Categories", r::Situational, d::RepeatCount.bounded(1),
665
+ b::Element(e::Required, "Assigned Number")
666
+ ),
667
+ d::LoopDef.build("2750 - REPORTING CATEGORY", d::RepeatCount.bounded(1),
668
+ b::Segment(6882, s::N1, "Reporting Category", r::Situational, d::RepeatCount.bounded(1),
669
+ b::Element(e::Required, "Entity Identifier Code", b::Values("75")),
670
+ b::Element(e::Required, "Member Reporting Category Name", b::MaxLength(60)),
671
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
672
+ b::Element(e::NotUsed, "Identification Code"),
673
+ b::Element(e::NotUsed, "Entity Relationship Code"),
674
+ b::Element(e::NotUsed, "Entity Identifier Code")
675
+ ),
676
+ b::Segment(6883, s::REF, "Reporting Category Reference", r::Situational, d::RepeatCount.bounded(16),
677
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("00", "17", "18", "19", "26", "3L", "6M", "9V", "9X", "GE", "LU", "PID", "XX1", "XX2", "YY", "ZZ")),
678
+ b::Element(e::Required, "Member Reporting Category Reference ID", b::MaxLength(50)),
679
+ b::Element(e::NotUsed, "Description"),
680
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")
681
+ ),
682
+ b::Segment(6884, s::DTP, "Reporting Category Date", r::Situational, d::RepeatCount.bounded(1),
683
+ b::Element(e::Required, "Date Time Qualifier", b::Values("007")),
684
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8", "RD8")),
685
+ b::Element(e::Required, "Member Reporting Category Effective Date(s)", b::MaxLength(35))
686
+ )
687
+ )
688
+ ),
689
+ b::Segment(6885, s::LE, "Additional Reporting Categories Loop Termination", r::Situational, d::RepeatCount.bounded(1),
690
+ b::Element(e::Required, "Loop Identifier Code", b::Values("2700"))
691
+ )
692
+ )
693
+ ),
694
+ repeatable: false
695
+ ),
696
+
697
+ # This structure doesn't match the specification, but it does ensure
698
+ # that the first occurrence of SE terminates the transaction set.
699
+ d::TableDef.summary("Table 3 - Summary",
700
+ b::Segment(6900, s::SE, "Transaction Set Trailer", r::Required, d::RepeatCount.bounded(1),
701
+ b::Element(e::Required, "Transaction Segment Count"),
702
+ b::Element(e::Required, "Transaction Set Control Number")
703
+ )
704
+ )
705
+ )
706
+ end
707
+ end
708
+ end
709
+ end