stupidedi 1.4.0 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -5
  3. data/Rakefile +4 -4
  4. data/bin/edi-obfuscate +1 -1
  5. data/lib/stupidedi/config.rb +2 -0
  6. data/lib/stupidedi/editor/004010.rb +1 -1
  7. data/lib/stupidedi/editor/implementation_ack.rb +3 -3
  8. data/lib/stupidedi/interchanges/00501/element_defs.rb +3 -3
  9. data/lib/stupidedi/parser/builder_dsl.rb +4 -1
  10. data/lib/stupidedi/schema/abstract_element_use.rb +9 -0
  11. data/lib/stupidedi/schema/component_element_use.rb +2 -0
  12. data/lib/stupidedi/schema/composite_element_use.rb +6 -1
  13. data/lib/stupidedi/schema/segment_use.rb +4 -4
  14. data/lib/stupidedi/schema/simple_element_use.rb +2 -0
  15. data/lib/stupidedi/transaction_sets/004010/implementations/IN810.rb +162 -0
  16. data/lib/stupidedi/transaction_sets/004010/implementations.rb +1 -0
  17. data/lib/stupidedi/transaction_sets/004010/standards/IN810.rb +38 -0
  18. data/lib/stupidedi/transaction_sets/004010/standards/PR855.rb +2 -1
  19. data/lib/stupidedi/transaction_sets/004010/standards.rb +1 -0
  20. data/lib/stupidedi/transaction_sets/005010/implementations/X212-HN277.rb +552 -0
  21. data/lib/stupidedi/transaction_sets/005010/implementations/X220A1-BE834.rb +3 -3
  22. data/lib/stupidedi/transaction_sets/005010/implementations/X222A1-HC837.rb +26 -26
  23. data/lib/stupidedi/transaction_sets/005010/implementations/X223A2-HC837.rb +5 -5
  24. data/lib/stupidedi/transaction_sets/005010/implementations/X223A3-HC837.rb +5 -5
  25. data/lib/stupidedi/transaction_sets/005010/implementations/X279-HB271.rb +14 -14
  26. data/lib/stupidedi/transaction_sets/005010/implementations/X279-HS270.rb +1 -1
  27. data/lib/stupidedi/transaction_sets/005010/implementations/X279A1-HB271.rb +3 -3
  28. data/lib/stupidedi/transaction_sets/005010/implementations/X279A1-HS270.rb +1 -1
  29. data/lib/stupidedi/transaction_sets/005010/implementations.rb +1 -0
  30. data/lib/stupidedi/transaction_sets/builder/dsl.rb +192 -0
  31. data/lib/stupidedi/transaction_sets/builder.rb +5 -1
  32. data/lib/stupidedi/values/composite_element_val.rb +9 -2
  33. data/lib/stupidedi/values/repeated_element_val.rb +1 -1
  34. data/lib/stupidedi/version.rb +1 -1
  35. data/lib/stupidedi/versions/003010/element_defs.rb +5 -2
  36. data/lib/stupidedi/versions/004010/element_defs.rb +72 -2
  37. data/lib/stupidedi/versions/004010/segment_defs/ACK.rb +43 -0
  38. data/lib/stupidedi/versions/004010/segment_defs/BIG.rb +25 -0
  39. data/lib/stupidedi/versions/004010/segment_defs/IT1.rb +39 -0
  40. data/lib/stupidedi/versions/004010/segment_defs/ITD.rb +29 -0
  41. data/lib/stupidedi/versions/004010/segment_defs/SAC.rb +31 -0
  42. data/lib/stupidedi/versions/004010/segment_defs/TDS.rb +18 -0
  43. data/lib/stupidedi/versions/004010/segment_defs/TXI.rb +24 -0
  44. data/lib/stupidedi/versions/004010/segment_defs.rb +7 -0
  45. data/lib/stupidedi/versions/005010/element_defs.rb +170 -5
  46. data/lib/stupidedi/versions/common/element_types/id.rb +1 -1
  47. data/lib/stupidedi/versions/common/element_types/r.rb +3 -1
  48. metadata +16 -6
@@ -0,0 +1,552 @@
1
+ # frozen_string_literal: true
2
+ module Stupidedi
3
+ module TransactionSets
4
+ module FiftyTen
5
+ module Implementations
6
+ module X212
7
+ b = Builder
8
+ d = Schema
9
+ r = SegmentReqs
10
+ e = ElementReqs
11
+ s = SegmentDefs
12
+
13
+ HN277 = Builder::Dsl.build("HN", "277", "Health Care Information Status Notification") do
14
+ entity_values = %w[
15
+ 03 13 17 1e 1g 1h 1i 1o 1p 1q 1r 1s 1t 1u 1v 1w 1x 1y 1z 28 2a 2b
16
+ 2d 2e 2i 2k 2p 2q 2s 2z 30 36 3a 3c 3d 3e 3f 3g 3h 3i 3j 3k 3l 3m 3n 3o 3p 3q
17
+ 3r 3s 3t 3u 3v 3w 3x 3y 3z 40 43 44 4a 4b 4c 4d 4e 4f 4g 4h 4i 4j 4l 4m 4n 4o
18
+ 4p 4q 4r 4s 4u 4v 4w 4x 4y 4z 5a 5b 5c 5d 5e 5f 5g 5h 5i 5j 5k 5l
19
+ 5m 5n 5o 5p 5q 5r 5s 5t 5u 5v 5w 5x 5y 5z 61 6a 6b 6c 6d 6e 6f 6g 6h 6i 6j 6k
20
+ 6l 6n 6o 6p 6q 6r 6s 6u 6v 6w 6x 6y 71 72 73 74 77 7c 80 82 84 85 87 95 ck cz
21
+ d2 dd dj dk dn do dq e1 e2 e7 e9 fa fd fe g0 g3 gb gb gi gj gk gm gy hf hh i3
22
+ ij il in li lr mr msc ob od ox p0 p2 p3 p4 p5 p7 prp pt pv pw qa qb qc qd qe qh qk
23
+ ql qn qo qs qv qy rc rw s4 sep sj su t4 tl tq tt ttp tu uh x3 x4 x5 zz
24
+ ].map(&:upcase)
25
+ table_header("1 - Header") do
26
+ segment(100, s::ST, "Transaction Set Header", r::Required, d::RepeatCount.bounded(1)) do
27
+ element(e::Required, "Transaction Set Identifier Code", b::Values("277"))
28
+ element(e::Required, "Transaction Set Control Number")
29
+ element(e::Required, "Version, Release, or Industry Identifier", b::Values("005010X212"))
30
+ end
31
+ segment(200, s::BHT, "Beginning of Hierarchical Transaction", r::Required, d::RepeatCount.bounded(1)) do
32
+ element(e::Required, "Hierarchical Structure Code", b::Values("0010"))
33
+ element(e::Required, "Transaction Set Purpose Code", b::Values("08"))
34
+ element(e::Required, "Originator Application Transaction Identifier", b::MaxLength(30))
35
+ element(e::Required, "Transaction Set Creation Date")
36
+ element(e::Required, "Transaction Set Creation Time")
37
+ element(e::Required, "Transaction Type Code", b::Values("DG"))
38
+ end
39
+ end
40
+
41
+ table_detail("2 - Information Source Detail") do
42
+ loop_("2000A INFORMATION SOURCE LEVEL", d::RepeatCount.unbounded) do
43
+ segment(100, s::HL, "Information Source Level", r::Required, d::RepeatCount.bounded(1)) do
44
+ element(e::Required, "Hierarchical ID Number")
45
+ element(e::NotUsed, "Hierarchical Parent ID Number")
46
+ element(e::Required, "Hierarchical Level Code", values("20"))
47
+ element(e::Required, "Hierachical Child Code", values("1"))
48
+ end
49
+ # positions on page 100
50
+ loop_("2100A INFORMATION SOURCE NAME", d::RepeatCount.bounded(1)) do
51
+ segment(500, s::NM1, "Information Source Name", r::Required, d::RepeatCount.bounded(1)) do
52
+ element(e::Required, "Entity Identifier Code", values("PR"))
53
+ element(e::Required, "Entity Type Qualifier", values("2"))
54
+ element(e::Required, "Payer Name")
55
+ element(e::NotUsed, "Name First")
56
+ element(e::NotUsed, "Name Middle")
57
+ element(e::NotUsed, "Name Prefix")
58
+ element(e::NotUsed, "Name Suffix")
59
+ element(e::Required, "Identification Code Qualifier", values("PI", "XV"))
60
+ element(e::Required, "Payer Identifier")
61
+ element(e::NotUsed, "Entity Relationship Code")
62
+ element(e::NotUsed, "Entity Identifier Code")
63
+ element(e::NotUsed, "Name Last or Organization Name")
64
+ end
65
+ segment(800, s::PER, "Administrative Communications Contact", r::Situational, d::RepeatCount.bounded(1)) do
66
+ element(e::Required, "Concat Function Code", values("IC"))
67
+ element(e::Situational, "Payer Contact Name")
68
+ element(e::Required, "Communication Number Qualifier", values("ED", "EM", "FX", "TE"))
69
+ element(e::Required, "Payer Contact Communication Number")
70
+ element(e::Required, "Communication Number Qualifier", values("ED", "EM", "FX", "TE"))
71
+ element(e::Required, "Payer Contact Communication Number")
72
+ element(e::Required, "Communication Number Qualifier", values("ED", "EM", "FX", "TE"))
73
+ element(e::Required, "Payer Contact Communication Number")
74
+ element(e::NotUsed, "Contact Inquiry Reference")
75
+ end
76
+ end
77
+ end
78
+ end
79
+ table_detail("2 - Information Receiver Detail") do
80
+ loop_("2000B INFORMATION RECEIVER LEVEL", d::RepeatCount.unbounded) do
81
+ segment(100, s::HL, "Information Receiver Level", r::Required, d::RepeatCount.bounded(1)) do
82
+ element(e::Required, "Hierarchical ID Number")
83
+ element(e::Required, "Hierarchical Parent ID Number")
84
+ element(e::Required, "Hierarchical Level Code", b::Values("21"))
85
+ element(e::Required, "Hierachical Child Code", b::Values("0", "1"))
86
+ end # segment Information Receiver Level
87
+
88
+ loop_("2100B INFORMATION RECEIVER NAME", d::RepeatCount.bounded(2)) do
89
+ segment(500, s::NM1, "Information Receiver Name", r::Required, d::RepeatCount.bounded(1)) do
90
+ element(e::Required, "Entity Identifier Code", b::Values("41"))
91
+ element(e::Required, "Entity Type Qualifier", b::Values("1", "2"))
92
+ element(e::Situational, "Information Receiver Last or Organizational Name")
93
+ element(e::Situational, "Information Receiver First Name")
94
+ element(e::Situational, "Information Receiver Middle Name")
95
+ element(e::NotUsed, "Name Prefix")
96
+ element(e::NotUsed, "Name Suffix")
97
+ element(e::Required, "Identification Code Qualifier", b::Values("46"))
98
+ element(e::Required, "Information Receiver Identification Number")
99
+ element(e::NotUsed, "Entity Relationship Code")
100
+ element(e::NotUsed, "Entity Identifier Code")
101
+ element(e::NotUsed, "Name Last or Organization Name")
102
+ end # Segment Information Receiver Name
103
+ end # Loop information Receiver Name
104
+ loop_("2200B INFORMATION RECEIVER TRACE IDENTIFIER", d::RepeatCount.bounded(1)) do
105
+ segment(900, s::TRN, "Information Receiver Trace Identifier", r::Situational, d::RepeatCount.bounded(1)) do
106
+ element(e::Required, "Trace Type Code", b::Values("2"))
107
+ element(e::Required, "Claim Transaction Batch Number")
108
+ element(e::NotUsed, "Originating Company Identifier")
109
+ element(e::NotUsed, "Reference Identification")
110
+ end # Segment Information Receiever Application Trace Ident
111
+ segment(1000, s::STC, "Information Receiver Status Information", r::Required, d::RepeatCount.unbounded) do
112
+ composite(e::Required, "HEALTH CARE CLAIM STATUS") do
113
+ element(e::Required, "Status Code")
114
+ element(e::Required, "Health Care Claim Status Code")
115
+ element(e::Situational, "Entity Identifier Code", b::Values("41", "AY", "PR"))
116
+ element(e::NotUsed, "Code List Qualifier Code")
117
+ end # composite value
118
+ element(e::Required, "Status Information Effective Date")
119
+ element(e::NotUsed, "Action Code")
120
+ element(e::NotUsed, "Monetary Amount")
121
+ element(e::NotUsed, "Monetary Amount")
122
+ element(e::NotUsed, "Date")
123
+ element(e::NotUsed, "Payment Method Code")
124
+ element(e::NotUsed, "Date")
125
+ element(e::NotUsed, "Check Number")
126
+ composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
127
+ element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
128
+ element(e::Required, "Status Code") # @todo: CodeSource.external("508")
129
+ element(e::Situational, "Entity Identifier Qualifier", b::Values("41", "AY", "PR"))
130
+ element(e::NotUsed, "Code List Qualifier Code")
131
+ end # composite value
132
+ composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
133
+ element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
134
+ element(e::Required, "Status Code") # @todo: CodeSource.external("508")
135
+ element(e::Situational, "Entity Identifier Qualifier", b::Values("41", "AY", "PR"))
136
+ element(e::NotUsed, "Code List Qualifier Code")
137
+ end # composite value
138
+ element(e::NotUsed, "Free-form Message Text")
139
+ end # Segment information receiver status information
140
+ end # loop Information Receiver Trace Identifier
141
+ end # loop Information Receiver Level
142
+ end # Table 2 - Information Receiver Detail
143
+ table_detail("2 - Service Provider Detail") do
144
+ loop_("2000C Service Provider Level", d::RepeatCount.unbounded) do
145
+ segment(100, s::HL, "Service Provider Level", r::Situational, d::RepeatCount.bounded(1)) do
146
+ element(e::Required, "Hierarchical ID Number")
147
+ element(e::Required, "Hierarchical Parent ID Number")
148
+ element(e::Required, "Hierarchical Level Code", b::Values("19"))
149
+ element(e::Required, "Hierachical Child Code", b::Values("0", "1"))
150
+ end # Segment 100 Service Provider Level
151
+ loop_("2100C PROVIDER NAME", d::RepeatCount.bounded(2)) do
152
+ segment(500, s::NM1, "Provider Name", r::Required, d::RepeatCount.bounded(1)) do
153
+ element(e::Required, "Entity Identifier Code", b::Values("1P"))
154
+ element(e::Required, "Entity Type Qualifier", b::Values("1", "2"))
155
+ element(e::Situational, "Provider Last or Organization Name")
156
+ element(e::Situational, "Provider First Name")
157
+ element(e::Situational, "Provider Middle Name")
158
+ element(e::NotUsed, "Name Prefix")
159
+ element(e::Situational, "Provider Name Suffix")
160
+ element(
161
+ e::Required, "Identification Code Qualifier",
162
+ b::Values("FI", "SV", "XX")
163
+ )
164
+ element(e::Required, "Provider Identifier")
165
+ element(e::NotUsed, "Entity Relationship Code")
166
+ element(e::NotUsed, "Entity Identifier Code")
167
+ element(e::NotUsed, "Name Last or Organization Name")
168
+ end # Segment/NM1 - Provider Name
169
+ end # Loop/2100C - Provider Name
170
+ loop_("2200C PROVIDER OF SERVICE TRACE IDENTIFIER", d::RepeatCount.bounded(1)) do
171
+ segment(900, s::TRN, "Provider of Service Trace Identifier", r::Situational, d::RepeatCount.bounded(1)) do
172
+ element(e::Required, "Trace Type Code", values("1"))
173
+ element(e::Required, "Provider of Service INformation Trace Identifier")
174
+ element(e::NotUsed, "Originating Company Identifier")
175
+ element(e::NotUsed, "Reference Identification")
176
+ end # Segment/TRN - Provider of Service Trance Information
177
+ segment(1000, s::STC, "Provider Status Information", r::Required, d::RepeatCount.unbounded) do
178
+ composite(e::Required, "HEALTH CARE CLAIM STATUS") do
179
+ element(e::Required, "Health Care Claim Status Category Code")
180
+ element(e::Required, "Status Code")
181
+ element(e::Situational, "Entity Identifier Code", b::Values("1P"))
182
+ element(e::NotUsed, "Code List Qualifier Code")
183
+ end # composite value
184
+ element(e::Required, "Status Information Effective Date")
185
+ element(e::NotUsed, "Action Code")
186
+ element(e::NotUsed, "Monetary Amount")
187
+ element(e::NotUsed, "Monetary Amount")
188
+ element(e::NotUsed, "Date")
189
+ element(e::NotUsed, "Payment Method Code")
190
+ element(e::NotUsed, "Date")
191
+ element(e::NotUsed, "Check Number")
192
+ composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
193
+ element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
194
+ element(e::Required, "Health Care Claim Status Code") # @todo: CodeSource.external("508")
195
+ element(e::Situational, "Entity Identifier Qualifier", b::Values("1P"))
196
+ element(e::NotUsed, "Code List Qualifier Code")
197
+ end # composite value
198
+ composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
199
+ element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
200
+ element(e::Required, "Health Care Claim Status Code") # @todo: CodeSource.external("508")
201
+ element(e::Situational, "Entity Identifier Qualifier", b::Values("1P"))
202
+ element(e::NotUsed, "Code List Qualifier Code")
203
+ end # composite value
204
+ element(e::NotUsed, "Free-form Message Text")
205
+ end # Segment/STC - Provider Status Information
206
+ end # Loop/2200C - Provider of Service Trace Identifier
207
+ end # Loop/2000C Service Provider Level
208
+ end # Table/2 - Service Provider Detail
209
+ table_detail("2 - Subscriber Detail") do
210
+ loop_("2000D SUBSCRIBER LEVEL", d::RepeatCount.unbounded) do
211
+ segment(100, s::HL, "Subscriber Level", r::Situational, d::RepeatCount.bounded(1)) do
212
+ element(e::Required, "Hierarchical ID Number")
213
+ element(e::Required, "Hierarchical Parent ID Number")
214
+ element(e::Required, "Hierarchical Level Code", values("22"))
215
+ element(e::Required, "Hierachical Child Code", values("0", "1"))
216
+ end # Segment/HL - Subscriber Level
217
+
218
+ loop_("2100D SUBSCRIBER NAME", d::RepeatCount.bounded(1)) do
219
+ segment(500, s::NM1, "Subscriber Name", r::Required, d::RepeatCount.bounded(1)) do
220
+ element(e::Required, "Entity Identifier Code", values("IL"))
221
+ element(e::Required, "Entity Type Qualifier", values("1", "2"))
222
+ element(e::Required, "Subscriber Last Name")
223
+ element(e::Situational, "Subscriber First Name")
224
+ element(e::Situational, "Subscriber Middle Name or Initial")
225
+ element(e::NotUsed, "Name Prefix")
226
+ element(e::Situational, "Subscriber Name Suffix")
227
+ element(e::Required, "Identification Code Qualifier", values("24", "II", "MI"))
228
+ element(e::Required, "Subscriber Identifier")
229
+ element(e::NotUsed, "Entity Relationship Code")
230
+ element(e::NotUsed, "Entity Identifier Code")
231
+ element(e::NotUsed, "Name Last or Organization Name")
232
+ end # Segment/NM1 - Subscriber Name
233
+ end # Loop/2100D - Subscriber name
234
+ loop_("2200D CLAIM STATUS TRACKING NUMBER", d::RepeatCount.unbounded) do
235
+ segment(900, s::TRN, "Claim Status Tracking Number", r::Situational, d::RepeatCount.bounded(1)) do
236
+ element(e::Required, "Trace Type Code", values("2"))
237
+ element(e::Required, "Referenced Transaction Trace Number")
238
+ element(e::NotUsed, "Originating Company Identifier")
239
+ element(e::NotUsed, "Reference Identification")
240
+ end # Segment/TRN - Claim Status Tracking Number
241
+ segment(1000, s::STC, "Claim Level Status Information", r::Required, d::RepeatCount.unbounded) do
242
+ composite(e::Required, "HEALTH CARE CLAIM STATUS") do
243
+ element(e::Required, "Health Care Claim Status Category Code")
244
+ element(e::Required, "Health Care Claim Status Code")
245
+ element(e::Situational, "Entity Identifier Code", values(*entity_values))
246
+ element(e::Situational, "Code List Qualifier Code", values("RX"))
247
+ end # Composite/Health care claim status
248
+ element(e::Required, "Status Information Effective Date")
249
+ element(e::NotUsed, "Action Code")
250
+ element(e::Situational, "Total Claim Charge Amount")
251
+ element(e::Situational, "Claim Payment Amount")
252
+ element(e::Situational, "Adjudication Finalized Date")
253
+ element(e::NotUsed, "Payment Method Code")
254
+ element(e::Situational, "Remittance Date")
255
+ element(e::Situational, "Remittance Trace Number")
256
+ composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
257
+ element(e::Required, "Health Care Claim Status Category Code")
258
+ element(e::Required, "Health Care Claim Status Code")
259
+ element(e::Situational, "Entity Identifier Code", values(*entity_values))
260
+ element(e::Situational, "Code List Qualifier Code", values("RX"))
261
+ end # Composite/Health Care Claim Status
262
+ composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
263
+ element(e::Required, "Health Care Claim Status Category Code")
264
+ element(e::Required, "Health Care Claim Status Code")
265
+ element(e::Situational, "Entity Identifier Code", values(*entity_values))
266
+ element(e::Situational, "Code List Qualifier Code", values("RX"))
267
+ end # Composite/Health Care Claim Status
268
+ element(e::NotUsed, "Free Form Message Text")
269
+ end # Segment/STC - Claim Level Status Information
270
+ segment(1100, s::REF, "Payer Claim Control Number", r::Situational, d::RepeatCount.bounded(1)) do
271
+ element(e::Required, "Reference Identification Qualifier", values("1K"))
272
+ element(e::Required, "Payer Claim Control Number")
273
+ element(e::NotUsed, "Description")
274
+ element(e::NotUsed, "REFERENCE IDENTIFIER")
275
+ end # Segment/REF - Payer Claim Control Number
276
+ segment(1100, s::REF, "Institutional Bill Type Identification", r::Situational, d::RepeatCount.bounded(1)) do
277
+ element(e::Required, "Reference Identification Qualifier", values("BLT"))
278
+ element(e::Required, "Bill Type Identifier")
279
+ element(e::NotUsed, "Description")
280
+ element(e::NotUsed, "REFERENCE IDENTIFIER")
281
+ end # Segment/REF - Institutional Bill Type Identification
282
+ segment(1100, s::REF, "Patient Control Number", r::Situational, d::RepeatCount.bounded(1)) do
283
+ element(e::Required, "Reference Identification Qualifier", values("EJ"))
284
+ element(e::Required, "Patient Control Number")
285
+ element(e::NotUsed, "Description")
286
+ element(e::NotUsed, "REFERENCE IDENTIFIER")
287
+ end # Segment/REF - Patient Control Number
288
+ segment(1100, s::REF, "Pharmacy Prescription Number", r::Situational, d::RepeatCount.bounded(1)) do
289
+ element(e::Required, "Reference Identification Qualifier", values("XZ"))
290
+ element(e::Required, "Pharmacy Prescription Number")
291
+ element(e::NotUsed, "Description")
292
+ element(e::NotUsed, "REFERENCE IDENTIFIER")
293
+ end # Segment/REF - Pharmacy Prescription Number
294
+ segment(1100, s::REF, "Voucher Identifier", r::Situational, d::RepeatCount.bounded(1)) do
295
+ element(e::Required, "Reference Identification Qualifier", values("VV"))
296
+ element(e::Required, "Voucher Identifier")
297
+ element(e::NotUsed, "Description")
298
+ element(e::NotUsed, "REFERENCE IDENTIFIER")
299
+ end # Segment/REF - Voucher Identifier
300
+ segment(1100, s::REF, "Claim Identifier Number for Clearinghous and Other Transmission Intermediaries", r::Situational, d::RepeatCount.bounded(1)) do
301
+ element(e::Required, "Reference Identification Qualifier", values("D9"))
302
+ element(e::Required, "Clearinghouse Trace Number")
303
+ element(e::NotUsed, "Description")
304
+ element(e::NotUsed, "REFERENCE IDENTIFIER")
305
+ end # Segment/REF - Claim Identifier Number for Clearinghouses and...
306
+ segment(1200, s::DTP, "Claim Level Service Date", r::Situational, d::RepeatCount.bounded(1)) do
307
+ element(e::Required, "Date Time Qualifier", values("472"))
308
+ element(e::Required, "Date Time Period Format Qualifier", values("D8", "RD8"))
309
+ element(e::Required, "Claim Service Period")
310
+ end # Segment/DTP - Claim Level Service Date
311
+
312
+ loop_("2220D SERVICE LINE INFORMATION", d::RepeatCount.unbounded) do
313
+ segment(1800, s::SVC, "Service Line Information", r::Situational, d::RepeatCount.bounded(1)) do
314
+ composite(e::Required, "COMPOSITE MEDICAL PROCEDURE IDENTIFIER") do
315
+ element(e::Required, "Product or Service ID Qualifier", values("AD", "ER", "HC", "HP", "IV", "NU", "WK"))
316
+ element(e::Required, "Procedure Code")
317
+ element(e::Situational, "Procedure Modifier")
318
+ element(e::Situational, "Procedure Modifier")
319
+ element(e::Situational, "Procedure Modifier")
320
+ element(e::Situational, "Procedure Modifier")
321
+ element(e::NotUsed, "Description")
322
+ element(e::NotUsed, "Product/Service ID")
323
+ end # composite/medical procedure identifier
324
+ element(e::Required, "Line Item Charge Amount")
325
+ element(e::Required, "Line Item Payment Amount")
326
+ element(e::Situational, "Revenue Code")
327
+ element(e::NotUsed, "Quantity")
328
+ element(e::NotUsed, "COMPOSITE MEDICAL PROCEDURE IDENTIFIER")
329
+ element(e::Required, "Units of Service Count")
330
+ end # Segment/SVC - Service Line Information
331
+
332
+ segment(1900, s::STC, "Service Line Level Status Information", r::Required, d::RepeatCount.unbounded) do
333
+ composite(e::Required, "HEALTH CARE CLAIM STATUS") do
334
+ element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
335
+ element(e::Required, "Health Care Claim Status Code") # @todo: CodeSource.external("508")
336
+ element(e::Situational, "Entity Identifier Code", values(*entity_values))
337
+ element(e::Situational, "Code List Qualifier Code", values("RX"))
338
+ end # composite/ health care claim status
339
+ element(e::Required, "Statue Information Effective Date")
340
+ element(e::NotUsed, "Action Code")
341
+ element(e::NotUsed, "Monetary Amount")
342
+ element(e::NotUsed, "Monetary Amount")
343
+ element(e::NotUsed, "Date")
344
+ element(e::NotUsed, "Payment Method Code")
345
+ element(e::NotUsed, "Date")
346
+ element(e::NotUsed, "Check Number")
347
+ composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
348
+ element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
349
+ element(e::Required, "Health Care Claim Status Code") # @todo: CodeSource.external("508")
350
+ element(e::Situational, "Entity Identifier Code", values(*entity_values))
351
+ element(e::Situational, "Code List Qualifier Code", values("RX"))
352
+ end # composite/Health care claims
353
+ composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
354
+ element(e::Required, "Health Care Claim Status Category Code")
355
+ element(e::Required, "Health Care Claim Status Code")
356
+ element(e::Situational, "Entity Identifier Code", values(*entity_values))
357
+ element(e::Situational, "Code List Qualifier Code", values("RX"))
358
+ end # composite/Health care claim status
359
+ element(e::NotUsed, "Free Form Message Text")
360
+ end # Segment/STC - Service Line Level Information
361
+ segment(2000, s::REF, "Service Line Item Identification", r::Situational, d::RepeatCount.bounded(1)) do
362
+ element(e::Required, "Reference Identification Qualifier", values("FJ"))
363
+ element(e::Required, "Line Item Control Number")
364
+ element(e::NotUsed, "Description")
365
+ element(e::NotUsed, "REFERENCE IDENTIFIER")
366
+ end # Segment/REF - Service Line item Identification
367
+ segment(2100, s::DTP, "Service Line Date", r::Required, d::RepeatCount.bounded(1)) do
368
+ element(e::Required, "Date Time Qualifier", values("472"))
369
+ element(e::Required, "Date Time Period Format Qualifier", values("D8", "RD8"))
370
+ element(e::Required, "Service Line Date")
371
+ end # Segment/DTP - Service Line Date
372
+ end # Loop/2220D - Service Line Information
373
+ end # Loop/2200D - Claim Status Tracking Number
374
+ end # Loop/2000D - Subscriber Level
375
+ end # Table/2 - Subscriber Detail
376
+ table_detail("2 - Dependent Detail") do
377
+ loop_("2000E DEPENDENT LEVEL", d::RepeatCount.unbounded) do
378
+ segment(100, s::HL, "Dependent Level", r::Situational, d::RepeatCount.bounded(1)) do
379
+ element(e::Required, "Hierarchical ID Number")
380
+ element(e::Required, "Hierarchical Parent ID Number")
381
+ element(e::Required, "Hierarchical Level Code", values("23"))
382
+ element(e::NotUsed, "Hierachical Child Code")
383
+ end # Segment/HL - Dependent Level
384
+
385
+ loop_("2100E DEPENDENT NAME", d::RepeatCount.bounded(1)) do
386
+ segment(500, s::NM1, "Dependent Name", r::Required, d::RepeatCount.bounded(1)) do
387
+ element(e::Required, "Entity Identifier Code", values("QC"))
388
+ element(e::Required, "Entity Type Qualifier", values("1"))
389
+ element(e::Required, "Patient Last Name")
390
+ element(e::Situational, "Patient First Name")
391
+ element(e::Situational, "Patient Last Name")
392
+ element(e::NotUsed, "Name Prefix")
393
+ element(e::Situational, "Patient Name Suffix")
394
+ element(e::NotUsed, "Identification Code Qualifier")
395
+ element(e::NotUsed, "Subscriber Identification Number")
396
+ element(e::NotUsed, "Entity Relationship Code")
397
+ element(e::NotUsed, "Entity Identifier Code")
398
+ element(e::NotUsed, "Name Last or Organization Name")
399
+ end # Segment/NM1 - Dependent Name
400
+ end # Loop/2100D - Subscriber name
401
+ loop_("2200E CLAIM STATUS TRACKING NUMBER", d::RepeatCount.unbounded) do
402
+ segment(900, s::TRN, "Claim Status Tracking Number", r::Required, d::RepeatCount.bounded(1)) do
403
+ element(e::Required, "Trace Type Code", values("2"))
404
+ element(e::Required, "Reference Transaction Trace Number")
405
+ element(e::NotUsed, "Originating Company Identifier")
406
+ element(e::NotUsed, "Reference Identification")
407
+ end # Segment/TRN - Claim Status Tracking Number
408
+ segment(1000, s::STC, "Claim Level Status Information", r::Required, d::RepeatCount.unbounded) do
409
+ composite(e::Required, "HEALTH CARE CLAIM STATUS") do
410
+ element(e::Required, "Health Care Claim Status Category Code")
411
+ element(e::Required, "Status Code")
412
+ element(e::Situational, "Entity Identifier Code", values(*entity_values))
413
+ element(e::Situational, "Code List Qualifier Code", values("RX"))
414
+ end # Composite/Health care claim status
415
+ element(e::Required, "Status Information Effective Date")
416
+ element(e::NotUsed, "Action Code")
417
+ element(e::Situational, "Total Claim Charge Amount")
418
+ element(e::Situational, "Claim Payment Amount")
419
+ element(e::Situational, "Adjudication Finalized Date")
420
+ element(e::NotUsed, "Payment Method Code")
421
+ element(e::Situational, "Remittance Date")
422
+ element(e::Situational, "Remittance Trace Number")
423
+ composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
424
+ element(e::Required, "Health Care Claim Status Category Code")
425
+ element(e::Required, "Health Care Claim Status Code")
426
+ element(e::Situational, "Entity Identifier Code", values(*entity_values))
427
+ element(e::Situational, "Code List Qualifier Code", values("RX"))
428
+ end # Composite/Health Care Claim Status
429
+ composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
430
+ element(e::Required, "Health Care Claim Status Category Code")
431
+ element(e::Required, "Health Care Claim Status Code")
432
+ element(e::Situational, "Entity Identifier Code", values(*entity_values))
433
+ element(e::Situational, "Code List Qualifier Code", values("RX"))
434
+ end # Composite/Health Care Claim Status
435
+ element(e::NotUsed, "Free Form Message Text")
436
+ end # Segment/STC - Claim Level Status Information
437
+ segment(1100, s::REF, "Payer Claim Control Number", r::Situational, d::RepeatCount.bounded(1)) do
438
+ element(e::Required, "Reference Identification Qualifier", values("1K"))
439
+ element(e::Required, "Payer Claim Control Number")
440
+ element(e::NotUsed, "Description")
441
+ element(e::NotUsed, "REFERENCE IDENTIFIER")
442
+ end # Segment/REF - Payer Claim Control Number
443
+ segment(1100, s::REF, "Institutional Bill Type Identification", r::Situational, d::RepeatCount.bounded(1)) do
444
+ element(e::Required, "Reference Identification Qualifier", values("BLT"))
445
+ element(e::Required, "Institutional Bill Type Identification")
446
+ element(e::NotUsed, "Description")
447
+ element(e::NotUsed, "REFERENCE IDENTIFIER")
448
+ end # Segment/REF - Institutional Bill Type Identification
449
+ segment(1100, s::REF, "Patient Control Number", r::Situational, d::RepeatCount.bounded(1)) do
450
+ element(e::Required, "Reference Identification Qualifier", values("EJ"))
451
+ element(e::Required, "Patient Control Number")
452
+ element(e::NotUsed, "Description")
453
+ element(e::NotUsed, "REFERENCE IDENTIFIER")
454
+ end # Segment/REF - Patient Control Number
455
+ segment(1100, s::REF, "Pharmacy Prescription Number", r::Situational, d::RepeatCount.bounded(1)) do
456
+ element(e::Required, "Reference Identification Qualifier", values("XZ"))
457
+ element(e::Required, "Pharmacy Prescription Number")
458
+ element(e::NotUsed, "Description")
459
+ element(e::NotUsed, "REFERENCE IDENTIFIER")
460
+ end # Segment/REF - Pharmacy Prescription Number
461
+ segment(1100, s::REF, "Voucher Identifier", r::Situational, d::RepeatCount.bounded(1)) do
462
+ element(e::Required, "Reference Identification Qualifier", values("VV"))
463
+ element(e::Required, "Pharmacy Prescription Number")
464
+ element(e::NotUsed, "Description")
465
+ element(e::NotUsed, "REFERENCE IDENTIFIER")
466
+ end # Segment/REF - Voucher Identifier
467
+ segment(1100, s::REF, "Claim Identifier Number for Clearinghous and Other Transmission Intermediaries", r::Situational, d::RepeatCount.bounded(3)) do
468
+ element(e::Required, "Reference Identification Qualifier", values("D9"))
469
+ element(e::Required, "Clearinghouse Trace Number")
470
+ element(e::NotUsed, "Description")
471
+ element(e::NotUsed, "REFERENCE IDENTIFIER")
472
+ end # Segment/REF - Claim Identifier Number for Clearinghouses and...
473
+ segment(1200, s::DTP, "Claim Level Service Date", r::Situational, d::RepeatCount.bounded(1)) do
474
+ element(e::Required, "Date Time Qualifier", values("472"))
475
+ element(e::Required, "Date Time Period Format Qualifier", values("D8", "RD8"))
476
+ element(e::Required, "Claim Service Period")
477
+ end # Segment/DTP - Claim Level Service Date
478
+
479
+ loop_("2220E SERVICE LINE INFORMATION", d::RepeatCount.unbounded) do
480
+ segment(1800, s::SVC, "Service Line Information", r::Situational, d::RepeatCount.bounded(1)) do
481
+ composite(e::Required, "COMPOSITE MEDICAL PROCEDURE IDENTIFIER") do
482
+ element(e::Required, "Product or Service ID Qualifier", values("AD", "ER", "HC", "HP", "IV", "NU", "WK"))
483
+ element(e::Required, "Procedure Code")
484
+ element(e::Situational, "Procedure Modifier")
485
+ element(e::Situational, "Procedure Modifier")
486
+ element(e::Situational, "Procedure Modifier")
487
+ element(e::Situational, "Procedure Modifier")
488
+ element(e::NotUsed, "Description")
489
+ element(e::NotUsed, "Product/Service ID")
490
+ end # composite/medical procedure identifier
491
+ element(e::Required, "Line Item Charge Amount")
492
+ element(e::Required, "Line Item Payment Amount")
493
+ element(e::Situational, "Revenue Code")
494
+ element(e::NotUsed, "Quantity")
495
+ element(e::NotUsed, "COMPOSITE MEDICAL PROCEDURE IDENTIFIER")
496
+ element(e::Required, "Units of Service Count")
497
+ end # Segment/SVC - Service Line Information
498
+ segment(1900, s::STC, "Service Line Level Status Information", r::Required, d::RepeatCount.unbounded) do
499
+ composite(e::Required, "HEALTH CARE CLAIM STATUS") do
500
+ element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
501
+ element(e::Required, "Status Code") # @todo: CodeSource.external("508")
502
+ element(e::Situational, "Entity Identifier Code", values(*entity_values))
503
+ element(e::Situational, "Code List Qualifier Code", values("RX"))
504
+ end # composite/ health care claim status
505
+ element(e::Required, "Status Information Effective Date")
506
+ element(e::NotUsed, "Action Code")
507
+ element(e::NotUsed, "Monetary Amount")
508
+ element(e::NotUsed, "Monetary Amount")
509
+ element(e::NotUsed, "Date")
510
+ element(e::NotUsed, "Payment Method Code")
511
+ element(e::NotUsed, "Date")
512
+ element(e::NotUsed, "Check Number")
513
+ composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
514
+ element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
515
+ element(e::Required, "Status Code") # @todo: CodeSource.external("508")
516
+
517
+ element(e::Situational, "Entity Identifier Code", values(*entity_values))
518
+ element(e::Situational, "Code List Qualifier Code", values("RX"))
519
+ end # composite/Health care claims
520
+ composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
521
+ element(e::Required, "Health Care Claim Status Category Code")
522
+ element(e::Required, "Health Care Claim Status Code")
523
+ element(e::Situational, "Entity Identifier Code", values(*entity_values))
524
+ element(e::Situational, "Code List Qualifier Code", values("RX"))
525
+ end # composite/Health care claim status
526
+ element(e::NotUsed, "Free Form Message Text")
527
+ end # Segment/STC - Service Line Level Information
528
+ segment(2000, s::REF, "Service Line Item Identification", r::Situational, d::RepeatCount.bounded(1)) do
529
+ element(e::Required, "Reference Identification Qualifier", values("FJ"))
530
+ element(e::Required, "Line Item Control Number")
531
+ element(e::NotUsed, "Description")
532
+ element(e::NotUsed, "REFERENCE IDENTIFIER")
533
+ end # Segment/REF - Service Line item Identification
534
+ segment(2100, s::DTP, "Service Line Date", r::Required, d::RepeatCount.bounded(1)) do
535
+ element(e::Required, "Date Time Qualifier", values("472"))
536
+ element(e::Required, "Date Time Period Format Qualifier", values("D8", "RD8"))
537
+ element(e::Required, "Service Line Date")
538
+ end # Segment/DTP - Service Line Date
539
+ end # Loop/2220D - Service Line Information
540
+ end # Loop/2200D - Claim Status Tracking Number
541
+ end # Loop/2000E - Subscriber Level
542
+ segment(2700, s::SE, "Transaction Set Trailer", r::Required, d::RepeatCount.bounded(1)) do
543
+ element(e::Required, "Transaction Segment Count")
544
+ element(e::Required, "Transaction Set Control Number")
545
+ end
546
+ end # Table/2 - Dependent Detail
547
+ end
548
+ end
549
+ end
550
+ end
551
+ end
552
+ end
@@ -21,7 +21,7 @@ module Stupidedi
21
21
  b::Element(e::Required, "Transaction Set Reference Number", b::MaxLength(50)),
22
22
  b::Element(e::Required, "Transaction Set Creation Date"),
23
23
  b::Element(e::Required, "Transaction Set Creation Time"),
24
- b::Element(e::NotUsed, "Time Zone Code"),
24
+ b::Element(e::Situational, "Time Zone Code"),
25
25
  b::Element(e::Situational, "Original Transaction Set Reference Number"),
26
26
  b::Element(e::NotUsed, "Transaction Type Code"),
27
27
  b::Element(e::Required, "Action Code", b::Values("2", "4", "RX")),
@@ -86,7 +86,7 @@ module Stupidedi
86
86
  b::Element(e::Required, "Member Indicator", b::Values("N", "Y")),
87
87
  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")),
88
88
  b::Element(e::Required, "Maintenance Type Code", b::Values("001", "021", "024", "025", "030")),
89
- 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")),
89
+ b::Element(e::Situational, "Maintenance Reason Code", b::Values("01", "02", "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")),
90
90
  b::Element(e::Required, "Benefit Status Code", b::Values("A", "C", "S", "T")),
91
91
  b::Element(e::Situational, "MEDICARE STATUS CODE",
92
92
  b::Element(e::Required, "Medicare Plan Code", b::Values("A", "B", "C", "D", "E")),
@@ -452,7 +452,7 @@ module Stupidedi
452
452
  b::Segment(2600, s::HD, "Health Coverage", r::Situational, d::RepeatCount.bounded(1),
453
453
  b::Element(e::Required, "Maintenance Type Code", b::Values("001", "002", "021", "024", "025", "026", "030", "032")),
454
454
  b::Element(e::NotUsed, "Maintenance Reason Code"),
455
- 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")),
455
+ b::Element(e::Required, "Insurance Line Code", b::Values("AC", "ADD", "AG", "AH", "AJ", "AK", "DCP", "DEN", "EPO", "FAC", "HE", "HLT", "HMO", "LTC", "LTD", "MM", "MOD", "PDG", "POS", "PPO", "PRA", "STD", "UR", "VIS")),
456
456
  b::Element(e::Situational, "Plan Coverage Description"),
457
457
  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")),
458
458
  b::Element(e::NotUsed, "Count"),