stupidedi 1.2.16 → 1.2.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (26) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -12
  3. data/bin/edi-pp +2 -12
  4. data/lib/stupidedi/builder/generation.rb +2 -6
  5. data/lib/stupidedi/builder/states/failure_state.rb +5 -13
  6. data/lib/stupidedi/config.rb +5 -0
  7. data/lib/stupidedi/editor.rb +1 -0
  8. data/lib/stupidedi/guides/005010/X279-HB271.rb +832 -0
  9. data/lib/stupidedi/guides/005010/X279-HS270.rb +594 -0
  10. data/lib/stupidedi/guides/005010/X279A1-HB271.rb +845 -0
  11. data/lib/stupidedi/guides/005010/X279A1-HS270.rb +594 -0
  12. data/lib/stupidedi/guides/005010.rb +9 -0
  13. data/lib/stupidedi/version.rb +1 -1
  14. data/lib/stupidedi/versions/functional_groups/005010/element_defs.rb +619 -9
  15. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/AAA.rb +22 -0
  16. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/EB.rb +34 -0
  17. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/EQ.rb +25 -0
  18. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/HSD.rb +29 -0
  19. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/III.rb +31 -0
  20. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/MPI.rb +27 -0
  21. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/MSG.rb +23 -0
  22. data/lib/stupidedi/versions/functional_groups/005010/segment_defs.rb +22 -4
  23. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HB271.rb +14 -13
  24. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HS270.rb +13 -12
  25. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs.rb +4 -4
  26. metadata +12 -1
@@ -0,0 +1,594 @@
1
+ module Stupidedi
2
+ module Guides
3
+ module FiftyTen
4
+ module X279
5
+
6
+ b = GuideBuilder
7
+ d = Schema
8
+ r = SegmentReqs
9
+ e = ElementReqs
10
+ s = Versions::FunctionalGroups::FiftyTen::SegmentDefs
11
+ t = Versions::FunctionalGroups::FiftyTen::TransactionSetDefs
12
+
13
+ HS270 = b.build(t::HS270,
14
+ d::TableDef.header("Table 1 - Header",
15
+ b::Segment(100, s::ST, "Transaction Set Header",
16
+ r::Required, d::RepeatCount.bounded(1),
17
+ b::Element(e::Required, "Transaction Set Identifier Code", b::Values("270")),
18
+ b::Element(e::Required, "Transaction Set Control Number"),
19
+ b::Element(e::Required, "Implementation Convention Reference", b::Values("005010X279"))),
20
+ b::Segment(200, s::BHT, "Beginning of Hierarchical Transaction",
21
+ r::Required, d::RepeatCount.bounded(1),
22
+ b::Element(e::Required, "Hierarchical Structure Code", b::Values("0022")),
23
+ b::Element(e::Required, "Transaction Set Purpose Code", b::Values("01", "13")),
24
+ b::Element(e::Situational, "Submitter Transaction Identifier"),
25
+ b::Element(e::Required, "Transaction Set Creation Date"),
26
+ b::Element(e::Required, "Transaction Set Creation Time"),
27
+ b::Element(e::Situational, "Transaction Type Code", b::Values("RT")))),
28
+
29
+ d::TableDef.detail("Table 2 - Information Source Detail",
30
+ d::LoopDef.build("2000A INFORMATION SOURCE LEVEL",
31
+ d::RepeatCount.bounded(1),
32
+ b::Segment(100, s::HL, "Information Source Level",
33
+ r::Required, d::RepeatCount.bounded(1),
34
+ b::Element(e::Required, "Hierarchical ID Number"),
35
+ b::Element(e::NotUsed, "Hierarchical Parent ID Number"),
36
+ b::Element(e::Required, "Hierarchical Level Code", b::Values("20")),
37
+ b::Element(e::Required, "Hierarchical Child Code", b::Values("1"))),
38
+
39
+ d::LoopDef.build("2100A INFORMATION SOURCE NAME",
40
+ d::RepeatCount.bounded(1),
41
+ b::Segment(300, s::NM1, "Information Source Name",
42
+ r::Required, d::RepeatCount.bounded(1),
43
+ b::Element(e::Required, "Entity Identifier Code", b::Values("2B", "36", "GP", "P5", "PR")),
44
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1", "2")),
45
+ b::Element(e::Required, "Information Source Last or Organization Name"),
46
+ b::Element(e::Situational, "Information Source First Name"),
47
+ b::Element(e::Situational, "Information Source Middle Name"),
48
+ b::Element(e::NotUsed, "Name Prefix"),
49
+ b::Element(e::Situational, "Information Source Name Suffix"),
50
+ b::Element(e::Required, "Identification Code Qualifier", b::Values("24", "46", "FI", "NI", "PI", "XV", "XX")),
51
+ b::Element(e::Required, "Information Source Primary Identifier"),
52
+ b::Element(e::NotUsed, "Entity Relationship Code"),
53
+ b::Element(e::NotUsed, "Entity Identifier Code"),
54
+ b::Element(e::NotUsed, "Name Last or Organization Name"))))),
55
+
56
+ d::TableDef.detail("Table 2 - Information Receiver Detail",
57
+ d::LoopDef.build("2000B INFORMATION RECEIVER LEVEL",
58
+ d::RepeatCount.bounded(1),
59
+ b::Segment(100, s::HL, "Information Receiver Level",
60
+ r::Required, d::RepeatCount.bounded(1),
61
+ b::Element(e::Required, "Hierarchical ID Number"),
62
+ b::Element(e::Required, "Hierarchical Parent ID Number"),
63
+ b::Element(e::Required, "Hierarchical Level Code", b::Values("21")),
64
+ b::Element(e::Required, "Hierarchical Child Code", b::Values("1"))),
65
+
66
+ d::LoopDef.build("2100B INFORMATION RECEIVER NAME",
67
+ d::RepeatCount.bounded(1),
68
+ b::Segment(300, s::NM1, "Information Receiver Name",
69
+ r::Required, d::RepeatCount.bounded(1),
70
+ b::Element(e::Required, "Entity Identifier Code", b::Values("1P", "2B", "36", "80", "FA", "GP", "P5", "PR")),
71
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1", "2")),
72
+ b::Element(e::Required, "Information Receiver Last or Organization Name"),
73
+ b::Element(e::Situational, "Information Receiver First Name"),
74
+ b::Element(e::Situational, "Information Receiver Middle Name"),
75
+ b::Element(e::NotUsed, "Name Prefix"),
76
+ b::Element(e::Situational, "Information Receiver Name Suffix"),
77
+ b::Element(e::Required, "Identification Code Qualifier", b::Values("24", "34", "FI", "PI", "PP", "SV", "XV", "XX")),
78
+ b::Element(e::Required, "Information Receiver Primary Identifier"),
79
+ b::Element(e::NotUsed, "Entity Relationship Code"),
80
+ b::Element(e::NotUsed, "Entity Identifier Code"),
81
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
82
+ b::Segment(400, s::REF, "Information Receiver Additional Identification",
83
+ r::Situational, d::RepeatCount.bounded(9),
84
+ b::Element(e::Required, "Reference Identification Qualfier", b::Values("0B", "1C", "1D", "1J", "4A", "CT", "EL", "EO", "HPI", "JD", "N5", "N7", "Q4", "SY", "TJ")),
85
+ b::Element(e::Required, "Information Receiver Additional Identifier"),
86
+ b::Element(e::Situational, "Information Receiver Additional Identifier State"),
87
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
88
+ b::Segment(600, s::N3, "Information Receiver Address",
89
+ r::Situational, d::RepeatCount.bounded(1),
90
+ b::Element(e::Required, "Information Receiver Address Line"),
91
+ b::Element(e::Situational, "Information Receiver Additional Address Line")),
92
+ b::Segment(700, s::N4, "Information Receiver City, State, ZIP Code",
93
+ r::Situational, d::RepeatCount.bounded(1),
94
+ b::Element(e::Required, "Information Receiver City Name"),
95
+ b::Element(e::Situational, "Information Receiver State Code"),
96
+ b::Element(e::Situational, "Information Receiver Postal Zode or ZIP Code"),
97
+ b::Element(e::Situational, "Country Code"),
98
+ b::Element(e::NotUsed, "Location Qualifier"),
99
+ b::Element(e::NotUsed, "Location Identifier"),
100
+ b::Element(e::Situational, "Country Subdivision Code")),
101
+ b::Segment(900, s::PRV, "Information Receiver Provider Information",
102
+ r::Situational, d::RepeatCount.bounded(1),
103
+ b::Element(e::Required, "Provider Code", b::Values("AD", "AT", "BI", "CO", "CV", "H", "HH", "LA", "OT", "P1", "P2", "PC", "PE", "R", "RF", "SB", "SK", "SU")),
104
+ b::Element(e::Situational, "Reference Identification Qualifier", b::Values("PXC")),
105
+ b::Element(e::Situational, "Receiver Provider Taxonomy Code"),
106
+ b::Element(e::NotUsed, "State or Province Code"),
107
+ b::Element(e::NotUsed, "PROVIDER SPECIALTY INFORMATION"),
108
+ b::Element(e::NotUsed, "Provider Organization Code"))))),
109
+
110
+ d::TableDef.detail("Table 2 - Subscriber Detail",
111
+ d::LoopDef.build("2000C SUBSCRIBER LEVEL",
112
+ d::RepeatCount.bounded(1),
113
+ b::Segment(100, s::HL, "Subscriber Level",
114
+ r::Required, d::RepeatCount.bounded(1),
115
+ b::Element(e::Required, "Hierarchical ID Number"),
116
+ b::Element(e::Required, "Hierarchical Parent ID Number"),
117
+ b::Element(e::Required, "Hierarchical Level Code", b::Values("22")),
118
+ b::Element(e::Required, "Hierarchical Child Code", b::Values("0", "1"))),
119
+ b::Segment(200, s::TRN, "Subscriber Trace Number",
120
+ r::Situational, d::RepeatCount.bounded(2),
121
+ b::Element(e::Required, "Trace Type Code", b::Values("1")),
122
+ b::Element(e::Required, "Trace Number"),
123
+ b::Element(e::Required, "Trace Assigning Entity Identifier"),
124
+ b::Element(e::Situational, "Trace Assigning Entity Additional Identifier")),
125
+
126
+ d::LoopDef.build("2100C SUBSCRIBER NAME",
127
+ d::RepeatCount.bounded(1),
128
+ b::Segment(300, s::NM1, "Subscriber Name",
129
+ r::Required, d::RepeatCount.bounded(1),
130
+ b::Element(e::Required, "Entity Identifier Code", b::Values("IL")),
131
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
132
+ b::Element(e::Situational, "Subscriber Last Name"),
133
+ b::Element(e::Situational, "Subscriber First Name"),
134
+ b::Element(e::Situational, "Subscriber Middle Name or Initial"),
135
+ b::Element(e::NotUsed, "Name Prefix"),
136
+ b::Element(e::Situational, "Subscriber Name Suffix"),
137
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("II", "MI")),
138
+ b::Element(e::Situational, "Subscriber Primary Identifier"),
139
+ b::Element(e::NotUsed, "Entity Relationship Code"),
140
+ b::Element(e::NotUsed, "Entity Identifier Code"),
141
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
142
+ b::Segment(400, s::REF, "Subscriber Additional Identification",
143
+ r::Situational, d::RepeatCount.bounded(9),
144
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("18", "1L", "1W", "3H", "6P", "CT", "EA", "EJ", "F6", "GH", "HJ", "IG", "N6", "NQ", "SY", "Y4")),
145
+ b::Element(e::Required, "Subscriber Supplemental Identifier"),
146
+ b::Element(e::NotUsed, "Description"),
147
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
148
+ b::Segment(600, s::N3, "Subscriber Address",
149
+ r::Situational, d::RepeatCount.bounded(1),
150
+ b::Element(e::Required, "Subscriber Address Line"),
151
+ b::Element(e::Situational, "Subscriber Address Line")),
152
+ b::Segment(700, s::N4, "Subscriber City, State, ZIP Code",
153
+ r::Situational, d::RepeatCount.bounded(1),
154
+ b::Element(e::Required, "Subscriber City Name"),
155
+ b::Element(e::Situational, "Subscriber State Code"),
156
+ b::Element(e::Situational, "Subscriber Postal Zone or ZIP Code"),
157
+ b::Element(e::Situational, "Country Code"),
158
+ b::Element(e::NotUsed, "Location Qualifier"),
159
+ b::Element(e::NotUsed, "Location Identifier"),
160
+ b::Element(e::Situational, "Country Subdivision Code")),
161
+ b::Segment(900, s::PRV, "Provider Information",
162
+ r::Situational, d::RepeatCount.bounded(1),
163
+ b::Element(e::Required, "Provider Code", b::Values("AD", "AT", "BI", "CO", "CV", "H", "HH", "LA", "OT", "P1", "P2", "PC", "PE", "R", "RF", "SK", "SU")),
164
+ b::Element(e::Situational, "Reference Identification Qualifier", b::Values("9K", "D3", "EI", "HPI", "PXC", "SY", "TJ")),
165
+ b::Element(e::Situational, "Provider Identifier"),
166
+ b::Element(e::NotUsed, "State or Province Code"),
167
+ b::Element(e::NotUsed, "PROVIDER SPECIALTY INFORMATION"),
168
+ b::Element(e::NotUsed, "Provider Organization Code")),
169
+ b::Segment(1000, s::DMG, "Subscriber Demographic Information",
170
+ r::Situational, d::RepeatCount.bounded(1),
171
+ b::Element(e::Situational, "Date Time Period Format Qualifier"),
172
+ b::Element(e::Situational, "Subscriber Birth Date"),
173
+ b::Element(e::Situational, "Subscriber Gender Code", b::Values("F", "M")),
174
+ b::Element(e::NotUsed, "Marital Status Code"),
175
+ b::Element(e::NotUsed, "COMPOSITE RACE OR ETHNICITY INFORMATION"),
176
+ b::Element(e::NotUsed, "Citizenship Status Code"),
177
+ b::Element(e::NotUsed, "Country Code"),
178
+ b::Element(e::NotUsed, "Basis of Verification Code"),
179
+ b::Element(e::NotUsed, "Quantity"),
180
+ b::Element(e::NotUsed, "Code List Qualifier Code"),
181
+ b::Element(e::NotUsed, "Industry Code")),
182
+ b::Segment(1100, s::INS, "Multiple Birth Sequence Number",
183
+ r::Situational, d::RepeatCount.bounded(1),
184
+ b::Element(e::Required, "Insured Indicator", b::Values("Y")),
185
+ b::Element(e::Required, "Individual Relationship Code", b::Values("18")),
186
+ b::Element(e::NotUsed, "Maintenance Type Code"),
187
+ b::Element(e::NotUsed, "Maintenance Reason Code"),
188
+ b::Element(e::NotUsed, "Benefit Status Code"),
189
+ b::Element(e::NotUsed, "MEDICARE STATUS CODE"),
190
+ b::Element(e::NotUsed, "Consolidated Omnibus Budget Reconciliation Act (CORBA) Qualifying"),
191
+ b::Element(e::NotUsed, "Employement Status Code"),
192
+ b::Element(e::NotUsed, "Student Status Code"),
193
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code"),
194
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
195
+ b::Element(e::NotUsed, "Date Time Period"),
196
+ b::Element(e::NotUsed, "Confidentiality Code"),
197
+ b::Element(e::NotUsed, "City Name"),
198
+ b::Element(e::NotUsed, "State or Province Code"),
199
+ b::Element(e::NotUsed, "Country Code"),
200
+ b::Element(e::Required, "Birth Sequence Number")),
201
+ b::Segment(1150, s::HI, "Subscriber Health Care Diagnosis Code",
202
+ r::Situational, d::RepeatCount.bounded(1),
203
+ b::Element(e::Required, "HEALTH CARE CODE INFORMATION",
204
+ b::Element(e::Required, "Diagnosis Code Type", b::Values("ABK", "BK")),
205
+ b::Element(e::Required, "Diagnosis Code"),
206
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
207
+ b::Element(e::NotUsed, "Date Time Period"),
208
+ b::Element(e::NotUsed, "Monetary Amount"),
209
+ b::Element(e::NotUsed, "Quantity"),
210
+ b::Element(e::NotUsed, "Version Identifier"),
211
+ b::Element(e::NotUsed, "Industry Code"),
212
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
213
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
214
+ b::Element(e::Required, "Diagnosis Code Type", b::Values("ABF", "BF")),
215
+ b::Element(e::Required, "Diagnosis Code"),
216
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
217
+ b::Element(e::NotUsed, "Date Time Period"),
218
+ b::Element(e::NotUsed, "Monetary Amount"),
219
+ b::Element(e::NotUsed, "Quantity"),
220
+ b::Element(e::NotUsed, "Version Identifier"),
221
+ b::Element(e::NotUsed, "Industry Code"),
222
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
223
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
224
+ b::Element(e::Required, "Diagnosis Code Type", b::Values("ABF", "BF")),
225
+ b::Element(e::Required, "Diagnosis Code"),
226
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
227
+ b::Element(e::NotUsed, "Date Time Period"),
228
+ b::Element(e::NotUsed, "Monetary Amount"),
229
+ b::Element(e::NotUsed, "Quantity"),
230
+ b::Element(e::NotUsed, "Version Identifier"),
231
+ b::Element(e::NotUsed, "Industry Code"),
232
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
233
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
234
+ b::Element(e::Required, "Diagnosis Code Type", b::Values("ABF", "BF")),
235
+ b::Element(e::Required, "Diagnosis Code"),
236
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
237
+ b::Element(e::NotUsed, "Date Time Period"),
238
+ b::Element(e::NotUsed, "Monetary Amount"),
239
+ b::Element(e::NotUsed, "Quantity"),
240
+ b::Element(e::NotUsed, "Version Identifier"),
241
+ b::Element(e::NotUsed, "Industry Code"),
242
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
243
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
244
+ b::Element(e::Required, "Diagnosis Code Type", b::Values("ABF", "BF")),
245
+ b::Element(e::Required, "Diagnosis Code"),
246
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
247
+ b::Element(e::NotUsed, "Date Time Period"),
248
+ b::Element(e::NotUsed, "Monetary Amount"),
249
+ b::Element(e::NotUsed, "Quantity"),
250
+ b::Element(e::NotUsed, "Version Identifier"),
251
+ b::Element(e::NotUsed, "Industry Code"),
252
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
253
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
254
+ b::Element(e::Required, "Diagnosis Code Type", b::Values("ABF", "BF")),
255
+ b::Element(e::Required, "Diagnosis Code"),
256
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
257
+ b::Element(e::NotUsed, "Date Time Period"),
258
+ b::Element(e::NotUsed, "Monetary Amount"),
259
+ b::Element(e::NotUsed, "Quantity"),
260
+ b::Element(e::NotUsed, "Version Identifier"),
261
+ b::Element(e::NotUsed, "Industry Code"),
262
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
263
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
264
+ b::Element(e::Required, "Diagnosis Code Type", b::Values("ABF", "BF")),
265
+ b::Element(e::Required, "Diagnosis Code"),
266
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
267
+ b::Element(e::NotUsed, "Date Time Period"),
268
+ b::Element(e::NotUsed, "Monetary Amount"),
269
+ b::Element(e::NotUsed, "Quantity"),
270
+ b::Element(e::NotUsed, "Version Identifier"),
271
+ b::Element(e::NotUsed, "Industry Code"),
272
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
273
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
274
+ b::Element(e::Required, "Diagnosis Code Type", b::Values("ABF", "BF")),
275
+ b::Element(e::Required, "Diagnosis Code"),
276
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
277
+ b::Element(e::NotUsed, "Date Time Period"),
278
+ b::Element(e::NotUsed, "Monetary Amount"),
279
+ b::Element(e::NotUsed, "Quantity"),
280
+ b::Element(e::NotUsed, "Version Identifier"),
281
+ b::Element(e::NotUsed, "Industry Code"),
282
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
283
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
284
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
285
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
286
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION")),
287
+ b::Segment(1200, s::DTP, "Subscriber Date",
288
+ r::Situational, d::RepeatCount.bounded(2),
289
+ b::Element(e::Required, "Date Time Qualifier", b::Values("102", "291")),
290
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8", "RD8")),
291
+ b::Element(e::Required, "Date Time Period")),
292
+
293
+ d::LoopDef.build("2110C SUBSCRIBER ELIGIBILITY OR BENEFIT INQUIRY",
294
+ d::RepeatCount.bounded(99),
295
+ b::Segment(1300, s::EQ, "Subscriber Eligibility or Benefit Inquiry",
296
+ r::Situational, d::RepeatCount.bounded(1),
297
+ b::Element(e::Situational, "Service Type Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "30", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AQ", "AR", "B1", "B2", "B3", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "C1", "CA", "CB", "CD", "CE", "CF", "CG", "CH", "CI", "CJ", "CK", "CL", "CM", "CN", "CO", "CP", "CQ", "DG", "DM", "DS", "GF", "GN", "GY", "IC", "MH", "NI", "ON", "PT", "PU", "RN", "RT", "TC", "TN", "UC")),
298
+ b::Element(e::Situational, "COMPOSITE MEDICAL PROCEDURE IDENTIFIER",
299
+ b::Element(e::Required, "Product/Service ID Qualifier", b::Values("AD", "CJ", "HC", "ID", "IV", "N4", "ZZ")),
300
+ b::Element(e::Required, "Procedure Code"),
301
+ b::Element(e::Situational, "Procedure Modifier"),
302
+ b::Element(e::Situational, "Procedure Modifier"),
303
+ b::Element(e::Situational, "Procedure Modifier"),
304
+ b::Element(e::Situational, "Procedure Modifier"),
305
+ b::Element(e::NotUsed, "Description"),
306
+ b::Element(e::NotUsed, "Product/Service ID")),
307
+ b::Element(e::Situational, "Coverage Level Code", b::Values("FAM")),
308
+ b::Element(e::NotUsed, "Insurance Type Code"),
309
+ b::Element(e::Situational, "COMPOSITE DIAGNOSIS CODE POINTER",
310
+ b::Element(e::Required, "Diagnosis Code Pointer"),
311
+ b::Element(e::Situational, "Diagnosis Code Pointer"),
312
+ b::Element(e::Situational, "Diagnosis Code Pointer"),
313
+ b::Element(e::Situational, "Diagnosis Code Pointer"))),
314
+ b::Segment(1350, s::AMT, "Subscriber Spend Down Amount",
315
+ r::Situational, d::RepeatCount.bounded(1),
316
+ b::Element(e::Required, "Amount Qualifier Code", b::Values("R")),
317
+ b::Element(e::Required, "Spend Down Amount"),
318
+ b::Element(e::NotUsed, "Credit/Debit Flag Code")),
319
+ b::Segment(1350, s::AMT, "Subscriber Spend Down Total Billed Amount",
320
+ r::Situational, d::RepeatCount.bounded(1),
321
+ b::Element(e::Required, "Amount Qualifier Code", b::Values("PB")),
322
+ b::Element(e::Required, "Spend Down Total Billed Amount"),
323
+ b::Element(e::NotUsed, "Credit/Debit Flag Code")),
324
+ b::Segment(1700, s::III, "Subscriber Eligibility or Benefit Additional Inquiry Information",
325
+ r::Situational, d::RepeatCount.bounded(1),
326
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ZZ")),
327
+ b::Element(e::Required, "Industry Code"),
328
+ b::Element(e::NotUsed, "Code Category"),
329
+ b::Element(e::NotUsed, "Free-form Message Text"),
330
+ b::Element(e::NotUsed, "Quantity"),
331
+ b::Element(e::NotUsed, "COMPOSITE UNIT OF MEASURE"),
332
+ b::Element(e::NotUsed, "Surface/Layer/Position Code"),
333
+ b::Element(e::NotUsed, "Surface/Layer/Position Code"),
334
+ b::Element(e::NotUsed, "Surface/Layer/Position Code")),
335
+ b::Segment(1900, s::REF, "Subscriber Additional Information",
336
+ r::Situational, d::RepeatCount.bounded(1),
337
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("9F", "G1")),
338
+ b::Element(e::Required, "Prior Authorization or Referral Number"),
339
+ b::Element(e::NotUsed, "Description"),
340
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
341
+ b::Segment(2000, s::DTP, "Subscriber Eligibility/Benefit Date",
342
+ r::Situational, d::RepeatCount.bounded(1),
343
+ b::Element(e::Required, "Date/Time Qualifier", b::Values("291")),
344
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8", "RD8")),
345
+ b::Element(e::Required, "Date Time Period")))))),
346
+
347
+ d::TableDef.detail("Dependent Detail",
348
+ d::LoopDef.build("2000D DEPENDENT LEVEL",
349
+ d::RepeatCount.bounded(1),
350
+ b::Segment(100, s::HL, "Dependent Level",
351
+ r::Situational, d::RepeatCount.bounded(1),
352
+ b::Element(e::Required, "Hierarchical ID Number"),
353
+ b::Element(e::Required, "Hierarchical Parent ID Number"),
354
+ b::Element(e::Required, "Hierarchical Level Code", b::Values("23")),
355
+ b::Element(e::Required, "Hierarchical Child Code", b::Values("0"))),
356
+ b::Segment(200, s::TRN, "Dependent Trace Number",
357
+ r::Situational, d::RepeatCount.bounded(2),
358
+ b::Element(e::Required, "Trace Type Code", b::Values("1")),
359
+ b::Element(e::Required, "Trace Number"),
360
+ b::Element(e::Required, "Trace Assigning Entity Identiier"),
361
+ b::Element(e::Situational, "Trace Assigning Entity Additional Identifier")),
362
+
363
+ d::LoopDef.build("2100D DEPENDENT NAME",
364
+ d::RepeatCount.bounded(1),
365
+ b::Segment(300, s::NM1, "Dependent Name",
366
+ r::Required, d::RepeatCount.bounded(1),
367
+ b::Element(e::Required, "Entity Identifier Code", b::Values("03")),
368
+ b::Element(e::Required, "Entity Typ Qualifier", b::Values("1")),
369
+ b::Element(e::Situational, "Dependent Last Name"),
370
+ b::Element(e::Situational, "Dependent First Name"),
371
+ b::Element(e::Situational, "Dependent Middle Name"),
372
+ b::Element(e::NotUsed, "Name Prefix"),
373
+ b::Element(e::Situational, "Dependent Name Suffix"),
374
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
375
+ b::Element(e::NotUsed, "Identification Code"),
376
+ b::Element(e::NotUsed, "Entity Relationship Code"),
377
+ b::Element(e::NotUsed, "Entity Identifier Code"),
378
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
379
+ b::Segment(400, s::REF, "Dependent Additional Identification",
380
+ r::Situational, d::RepeatCount.bounded(9),
381
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("18", "1L", "6P", "CT", "EA", "EJ", "F6", "GH", "HJ", "IF", "IG", "MRC", "N6", "SY", "Y4")),
382
+ b::Element(e::Required, "Dependent Supplemental Identifier"),
383
+ b::Element(e::NotUsed, "Description"),
384
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
385
+ b::Segment(600, s::N3, "Dependent Address",
386
+ r::Situational, d::RepeatCount.bounded(1),
387
+ b::Element(e::Required, "Dependent Address Line"),
388
+ b::Element(e::Situational, "Dependent Address Line")),
389
+ b::Segment(700, s::N4, "Dependent City, State, ZIP Code",
390
+ r::Situational, d::RepeatCount.bounded(1),
391
+ b::Element(e::Required, "Dependent City Name"),
392
+ b::Element(e::Situational, "Dependent State Code"),
393
+ b::Element(e::Situational, "Dependent Postal Zone or ZIP Code"),
394
+ b::Element(e::Situational, "Country Code"),
395
+ b::Element(e::NotUsed, "Location Qualifier"),
396
+ b::Element(e::NotUsed, "Location Identifier"),
397
+ b::Element(e::Situational, "Country Subdivision Code")),
398
+ b::Segment(900, s::PRV, "Provider Information",
399
+ r::Situational, d::RepeatCount.bounded(1),
400
+ b::Element(e::Required, "Provider Code", b::Values("AD", "AT", "BI", "CO", "CV", "H", "HH", "LA", "OT", "P1", "P2", "PC", "PE", "R", "RF", "SK", "SU")),
401
+ b::Element(e::Situational, "Reference Identification Qualifier", b::Values("9K", "D3", "EI", "HPI", "PXC", "SY", "TJ")),
402
+ b::Element(e::Situational, "Provider Identifier"),
403
+ b::Element(e::NotUsed, "State or Province Code"),
404
+ b::Element(e::NotUsed, "PROVIDER SPECIALTY INFORMATION"),
405
+ b::Element(e::NotUsed, "Provider Organization Code")),
406
+ b::Segment(1000, s::DMG, "Dependent Demographic Information",
407
+ r::Situational, d::RepeatCount.bounded(1),
408
+ b::Element(e::Situational, "Date Time Period Format Qualifier", b::Values("D8")),
409
+ b::Element(e::Situational, "Dependent Birth Date"),
410
+ b::Element(e::Situational, "Dependent Gender Code"),
411
+ b::Element(e::NotUsed, "Marital Status Code"),
412
+ b::Element(e::NotUsed, "COMPOSITE RACE OR ETHNICITY INFORMATION"),
413
+ b::Element(e::NotUsed, "Citizenship Status Code"),
414
+ b::Element(e::NotUsed, "Country Code"),
415
+ b::Element(e::NotUsed, "Basis of Verification Code"),
416
+ b::Element(e::NotUsed, "Quantity"),
417
+ b::Element(e::NotUsed, "Code LIst Qualifier Code"),
418
+ b::Element(e::NotUsed, "Industry Code")),
419
+ b::Segment(1100, s::INS, "Dependent Relationship",
420
+ r::Situational, d::RepeatCount.bounded(1),
421
+ b::Element(e::Required, "Insured Indicator", b::Values("N")),
422
+ b::Element(e::Required, "Individual Relationship Code", b::Values("01", "19", "34")),
423
+ b::Element(e::NotUsed, "Maintenance Type Code"),
424
+ b::Element(e::NotUsed, "Maintenance Reason Code"),
425
+ b::Element(e::NotUsed, "Benefit Status Code"),
426
+ b::Element(e::NotUsed, "MEDICARE STATUS CODE"),
427
+ b::Element(e::NotUsed, "Consolidated Omnibus Budget Reconciliation Act (CORBA) Qualifying"),
428
+ b::Element(e::NotUsed, "Employment Status Code"),
429
+ b::Element(e::NotUsed, "Student Status Code"),
430
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code"),
431
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
432
+ b::Element(e::NotUsed, "Date Time Period"),
433
+ b::Element(e::NotUsed, "Confidentiality Code"),
434
+ b::Element(e::NotUsed, "City Name"),
435
+ b::Element(e::NotUsed, "State or Province Code"),
436
+ b::Element(e::NotUsed, "Country Code"),
437
+ b::Element(e::Situational, "Birth Sequence Number")),
438
+ b::Segment(1150, s::HI, "Dependent Health Care Diagnosis Code",
439
+ r::Situational, d::RepeatCount.bounded(1),
440
+ b::Element(e::Required, "HEALTH CARE CODE INFORMATION",
441
+ b::Element(e::Required, "Code List Quailfier Code", b::Values("ABK", "BK")),
442
+ b::Element(e::Required, "Industry Code"),
443
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
444
+ b::Element(e::NotUsed, "Date Time Period"),
445
+ b::Element(e::NotUsed, "Monetary Amount"),
446
+ b::Element(e::NotUsed, "Quantity"),
447
+ b::Element(e::NotUsed, "Version Identifier"),
448
+ b::Element(e::NotUsed, "Industry Code"),
449
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
450
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
451
+ b::Element(e::Required, "Code List Quailfier Code", b::Values("ABF", "BF")),
452
+ b::Element(e::Required, "Industry Code"),
453
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
454
+ b::Element(e::NotUsed, "Date Time Period"),
455
+ b::Element(e::NotUsed, "Monetary Amount"),
456
+ b::Element(e::NotUsed, "Quantity"),
457
+ b::Element(e::NotUsed, "Version Identifier"),
458
+ b::Element(e::NotUsed, "Industry Code"),
459
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
460
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
461
+ b::Element(e::Required, "Code List Quailfier Code", b::Values("ABF", "BF")),
462
+ b::Element(e::Required, "Industry Code"),
463
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
464
+ b::Element(e::NotUsed, "Date Time Period"),
465
+ b::Element(e::NotUsed, "Monetary Amount"),
466
+ b::Element(e::NotUsed, "Quantity"),
467
+ b::Element(e::NotUsed, "Version Identifier"),
468
+ b::Element(e::NotUsed, "Industry Code"),
469
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
470
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
471
+ b::Element(e::Required, "Code List Quailfier Code", b::Values("ABF", "BF")),
472
+ b::Element(e::Required, "Industry Code"),
473
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
474
+ b::Element(e::NotUsed, "Date Time Period"),
475
+ b::Element(e::NotUsed, "Monetary Amount"),
476
+ b::Element(e::NotUsed, "Quantity"),
477
+ b::Element(e::NotUsed, "Version Identifier"),
478
+ b::Element(e::NotUsed, "Industry Code"),
479
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
480
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
481
+ b::Element(e::Required, "Code List Quailfier Code", b::Values("ABF", "BF")),
482
+ b::Element(e::Required, "Industry Code"),
483
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
484
+ b::Element(e::NotUsed, "Date Time Period"),
485
+ b::Element(e::NotUsed, "Monetary Amount"),
486
+ b::Element(e::NotUsed, "Quantity"),
487
+ b::Element(e::NotUsed, "Version Identifier"),
488
+ b::Element(e::NotUsed, "Industry Code"),
489
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
490
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
491
+ b::Element(e::Required, "Code List Quailfier Code", b::Values("ABF", "BF")),
492
+ b::Element(e::Required, "Industry Code"),
493
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
494
+ b::Element(e::NotUsed, "Date Time Period"),
495
+ b::Element(e::NotUsed, "Monetary Amount"),
496
+ b::Element(e::NotUsed, "Quantity"),
497
+ b::Element(e::NotUsed, "Version Identifier"),
498
+ b::Element(e::NotUsed, "Industry Code"),
499
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
500
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
501
+ b::Element(e::Required, "Code List Quailfier Code", b::Values("ABF", "BF")),
502
+ b::Element(e::Required, "Industry Code"),
503
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
504
+ b::Element(e::NotUsed, "Date Time Period"),
505
+ b::Element(e::NotUsed, "Monetary Amount"),
506
+ b::Element(e::NotUsed, "Quantity"),
507
+ b::Element(e::NotUsed, "Version Identifier"),
508
+ b::Element(e::NotUsed, "Industry Code"),
509
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
510
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
511
+ b::Element(e::Required, "Code List Quailfier Code", b::Values("ABF", "BF")),
512
+ b::Element(e::Required, "Industry Code"),
513
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
514
+ b::Element(e::NotUsed, "Date Time Period"),
515
+ b::Element(e::NotUsed, "Monetary Amount"),
516
+ b::Element(e::NotUsed, "Quantity"),
517
+ b::Element(e::NotUsed, "Version Identifier"),
518
+ b::Element(e::NotUsed, "Industry Code"),
519
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
520
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
521
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
522
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
523
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION")),
524
+ b::Segment(1200, s::DTP, "Dependent Date",
525
+ r::Situational, d::RepeatCount.bounded(2),
526
+ b::Element(e::Required, "Date/Time Qualifier", b::Values("102", "291")),
527
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8", "RD8")),
528
+ b::Element(e::Required, "Date Time Period")),
529
+
530
+ d::LoopDef.build("2110D DEPENDENT ELIGIBILITY OR BENEFIT INQUIRY",
531
+ d::RepeatCount.bounded(99),
532
+ b::Segment(1300, s::EQ, "Dependent Eligibility or Benefit Inquiry",
533
+ r::Required, d::RepeatCount.bounded(1),
534
+ b::Element(e::Situational, "Service Type Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "30", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AQ", "AR", "B1", "B2", "B3", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "C1", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CI", "CJ", "CK", "CL", "CM", "CN", "CO", "CP", "CQ", "DG", "DM", "DS", "GF", "GN", "GY", "IC", "MH", "NI", "PT", "PU", "RN", "RT", "TN", "UC")),
535
+ b::Element(e::Situational, "COMPOSITE MEDICAL PROCEDURE IDENTIFIER",
536
+ b::Element(e::Required, "Product/Service ID Qualifier", b::Values("AD", "CJ", "HC", "ID", "IV", "N4", "ZZ")),
537
+ b::Element(e::Required, "Procedure Code"),
538
+ b::Element(e::Situational, "Procedure Modifier"),
539
+ b::Element(e::Situational, "Procedure Modifier"),
540
+ b::Element(e::Situational, "Procedure Modifier"),
541
+ b::Element(e::Situational, "Procedure Modifier"),
542
+ b::Element(e::NotUsed, "Description"),
543
+ b::Element(e::NotUsed, "Product/Service ID")),
544
+ b::Element(e::NotUsed, "Coverage Level Code"),
545
+ b::Element(e::NotUsed, "Insurance Type Code"),
546
+ b::Element(e::Situational, "COMPOSITE DIAGNOSIS CODE POINTER",
547
+ b::Element(e::Required, "Diagnosis Code Pointer"),
548
+ b::Element(e::Situational, "Diagnosis Code Pointer"),
549
+ b::Element(e::Situational, "Diagnosis Code Pointer"),
550
+ b::Element(e::Situational, "Diagnosis Code Pointer"))),
551
+ b::Segment(1700, s::III, "Dependent Eligibility or Benefit Additional Inquiry Information",
552
+ r::Situational, d::RepeatCount.bounded(1),
553
+ b::Element(e::Required, "Code List Qualifier", b::Values("ZZ")),
554
+ b::Element(e::Required, "Industry Code"),
555
+ b::Element(e::NotUsed, "Code Category"),
556
+ b::Element(e::NotUsed, "Free-form Message Text"),
557
+ b::Element(e::NotUsed, "Quantity"),
558
+ b::Element(e::NotUsed, "COMPOSITE UNIT OF MEASURE"),
559
+ b::Element(e::NotUsed, "Surface/Layer/Position Code"),
560
+ b::Element(e::NotUsed, "Surface/Layer/Position Code"),
561
+ b::Element(e::NotUsed, "Surface/Layer/Position Code")),
562
+ b::Segment(1900, s::REF, "Dependent Additional Information",
563
+ r::Situational, d::RepeatCount.bounded(1),
564
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("9F", "G1")),
565
+ b::Element(e::Required, "Prior Authorization or Referral Number"),
566
+ b::Element(e::NotUsed, "Description"),
567
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
568
+ b::Segment(2000, s::DTP, "Dependent Eligibility/Benefit Date",
569
+ r::Situational, d::RepeatCount.bounded(1),
570
+ b::Element(e::Required, "Date Time Qualifier", b::Values("291")),
571
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8", "RD8")),
572
+ b::Element(e::Required, "Date Time Period")))))),
573
+
574
+ # The X12 standard and X279 specification place the SE segment at what
575
+ # appears to be the end of Table 2 - Dependent Detail. This doesn't make
576
+ # sense because Table 2 - Dependent Detail doesn't occur if the patient
577
+ # is the subscriber.
578
+ #
579
+ # If we placed it in both Table 2 - Subscriber Detail and Table 2 -
580
+ # Dependent Detail, it would incorrectly allow the segment to occur in
581
+ # each table.
582
+ #
583
+ # This structure doesn't match the specification, but it does ensure
584
+ # that the first occurrence of SE terminates the transaction set.
585
+ d::TableDef.summary("Table 3 - Summary",
586
+ b::Segment(5550, s::SE, "Transaction Set Trailer",
587
+ r::Required, d::RepeatCount.bounded(1),
588
+ b::Element(e::Required, "Number of Included Segments"),
589
+ b::Element(e::Required, "Transaction Set Control Number"))))
590
+
591
+ end
592
+ end
593
+ end
594
+ end