stupidedi 1.4.1 → 1.4.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -4
  3. data/Rakefile +4 -4
  4. data/lib/stupidedi/config.rb +1 -0
  5. data/lib/stupidedi/transaction_sets/004010/implementations/IN810.rb +162 -0
  6. data/lib/stupidedi/transaction_sets/004010/implementations.rb +1 -0
  7. data/lib/stupidedi/transaction_sets/004010/standards/IN810.rb +38 -0
  8. data/lib/stupidedi/transaction_sets/004010/standards/PR855.rb +2 -1
  9. data/lib/stupidedi/transaction_sets/004010/standards.rb +1 -0
  10. data/lib/stupidedi/transaction_sets/005010/implementations/X220A1-BE834.rb +1 -1
  11. data/lib/stupidedi/transaction_sets/005010/implementations/X222A1-HC837.rb +26 -26
  12. data/lib/stupidedi/transaction_sets/005010/implementations/X223A2-HC837.rb +5 -5
  13. data/lib/stupidedi/transaction_sets/005010/implementations/X223A3-HC837.rb +5 -5
  14. data/lib/stupidedi/transaction_sets/005010/implementations/X279-HB271.rb +1 -1
  15. data/lib/stupidedi/transaction_sets/005010/implementations/X279-HS270.rb +1 -1
  16. data/lib/stupidedi/transaction_sets/005010/implementations/X279A1-HB271.rb +1 -1
  17. data/lib/stupidedi/transaction_sets/005010/implementations/X279A1-HS270.rb +2 -2
  18. data/lib/stupidedi/version.rb +1 -1
  19. data/lib/stupidedi/versions/003010/element_defs.rb +5 -2
  20. data/lib/stupidedi/versions/004010/element_defs.rb +72 -2
  21. data/lib/stupidedi/versions/004010/segment_defs/ACK.rb +43 -0
  22. data/lib/stupidedi/versions/004010/segment_defs/BIG.rb +25 -0
  23. data/lib/stupidedi/versions/004010/segment_defs/IT1.rb +39 -0
  24. data/lib/stupidedi/versions/004010/segment_defs/ITD.rb +29 -0
  25. data/lib/stupidedi/versions/004010/segment_defs/SAC.rb +31 -0
  26. data/lib/stupidedi/versions/004010/segment_defs/TDS.rb +18 -0
  27. data/lib/stupidedi/versions/004010/segment_defs/TXI.rb +24 -0
  28. data/lib/stupidedi/versions/004010/segment_defs.rb +7 -0
  29. data/lib/stupidedi/versions/005010/element_defs.rb +6 -8
  30. data/lib/stupidedi/versions/common/element_types/r.rb +3 -1
  31. metadata +11 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ebce60d52d11cc5d750be833dedaa9c143becc4bebfe15a4d4a91c7934ad08b
4
- data.tar.gz: aea17d716ff7be4f11ddb26e1142edfb5a42d7be8ff33bf9faa0ad8a55cf6411
3
+ metadata.gz: a49d20d6851378800d5a78f638551c49f4e9da29f7a3f78c0ef3dff875605244
4
+ data.tar.gz: '048fcbb6d82acd51b1a7aeb14f3044b67e14091b82b301623993ee252f172020'
5
5
  SHA512:
6
- metadata.gz: 0fb54dce8ae28fd125456dbd0d82aea49c8623b99d364b689853bd4567ff8284815241b5d223f695f9fe79e20fd72d6db4850f7be6b560c820c81dccd1588c8a
7
- data.tar.gz: c9da5e9c52cbbd801b02a5d8aebf466c83fccfe8902ab6e91c538fc48ecb0f0868899d21b0f67216274227e9b1b16a9e3dae03bd11a53b4b63f31f4664dfed3c
6
+ metadata.gz: 44b53eb23a55b74d5f9252ad2a2147a4230f5bd2a8587f7f5c3195f0d46a747b9b7c800cb6668f25e38059efc843d65c5a5d4ed20db5cd45c1ab57edbc447e4a
7
+ data.tar.gz: 1ac6ac060b562cea55b62d05711a849952defe2aa5939a1624df5aa7ae8b0645f509fd30ff870624b0e3ab0b8f5f30588ea8d2a30db0c860fc1fd58feac8e8c8
data/README.md CHANGED
@@ -76,10 +76,16 @@ to understand, assuming a reasonable familiarity with EDI.
76
76
  ### Efficient parsing and traversing
77
77
 
78
78
  The parser is designed using immutable data structures, making it thread-safe
79
- for runtimes that can utilize multiple cores. While in certain cases,
80
- immutability places higher demand on garbage collection, this has been
81
- mitigated with careful optimization. Input can be streamed incrementally, so
82
- very large files aren't read into memory all at once.
79
+ for runtimes that can utilize multiple cores. In some cases, immutability places
80
+ higher demand on garbage collection, this has been somewhat mitigated with careful
81
+ optimization.
82
+
83
+ **Note:** Further optimizations are planned for late 2021. Until then, modestly large
84
+ files can consume excessive memory to the point all CPU time is spent in garbage
85
+ collection. In more than ten years since this library was put into production, this
86
+ seems to rarely happen in practice (as X12 files are most often very small), but until
87
+ these improvements are merged, it can be difficult to work around. See [#65](https://github.com/irobayna/stupidedi/issues/65) for
88
+ more discussion. The current work in progress is in the [`gh-65.3`](https://github.com/irobayna/stupidedi/tree/gh-65.3) branch.
83
89
 
84
90
  ![Benchmark](https://raw.github.com/irobayna/stupidedi/master/notes/benchmark/throughput.png)
85
91
 
data/Rakefile CHANGED
@@ -7,12 +7,12 @@ task :default => :spec
7
7
  require "rspec/core/rake_task"
8
8
  RSpec::Core::RakeTask.new do |t|
9
9
  t.verbose = false
10
- t.rspec_opts = %w(-w -rspec_helper)
10
+ t.rspec_opts = "-w -rspec_helper"
11
11
 
12
- if ENV.include?("CI") or ENV.include?("TRAVIS")
13
- t.rspec_opts += %w(--format progress)
12
+ if ENV.include?("CI")
13
+ t.rspec_opts += " --format progress"
14
14
  else
15
- t.rspec_opts += %w(--format documentation)
15
+ t.rspec_opts += " --format documentation"
16
16
  end
17
17
  end
18
18
 
@@ -154,6 +154,7 @@ module Stupidedi
154
154
  x.register("003050", "PO", "850") { Stupidedi::TransactionSets::ThirtyFifty::Standards::PO850 }
155
155
  x.register("004010", "PO", "850") { Stupidedi::TransactionSets::FortyTen::Standards::PO850 }
156
156
  x.register("004010", "PR", "855") { Stupidedi::TransactionSets::FortyTen::Standards::PR855 }
157
+ x.register("004010", "IN", "810") { Stupidedi::TransactionSets::FortyTen::Standards::IN810 }
157
158
  x.register("004010", "OW", "940") { Stupidedi::TransactionSets::FortyTen::Standards::OW940 }
158
159
  x.register("004010", "AR", "943") { Stupidedi::TransactionSets::FortyTen::Standards::AR943 }
159
160
  x.register("004010", "RE", "944") { Stupidedi::TransactionSets::FortyTen::Standards::RE944 }
@@ -0,0 +1,162 @@
1
+ module Stupidedi
2
+ module TransactionSets
3
+ module FortyTen
4
+ module Implementations
5
+ b = Builder
6
+ d = Schema
7
+ r = SegmentReqs
8
+ e = ElementReqs
9
+ s = SegmentDefs
10
+ IN810 = b.build("IN", "810", "Invoice",
11
+ d::TableDef.header("Heading",
12
+ b::Segment(10, s:: ST, "Transaction Set Header", r::Required, d::RepeatCount.bounded(1),
13
+ b::Element(e::Required, "Transaction Set Identifier Code", b::Values("810")),
14
+ b::Element(e::Required, "Transaction Set Control Number")),
15
+ b::Segment(20, s::BIG, "Beginning Segment for Invoice", r::Required, d::RepeatCount.bounded(1),
16
+ b::Element(e::Required, "Date"),
17
+ b::Element(e::Required, "Invoice Number"),
18
+ b::Element(e::Situational, "Date"),
19
+ b::Element(e::Situational, "Purchase Order Number"),
20
+ b::Element(e::Situational, "Release Number"),
21
+ b::Element(e::Situational, "Change Order Sequence Number"),
22
+ b::Element(e::Situational, "Transaction Type Code"),
23
+ b::Element(e::Situational, "Transaction Set Purpose Code"),
24
+ b::Element(e::Situational, "Action Code"),
25
+ b::Element(e::Situational, "Invoice Number")),
26
+ d::LoopDef.build("N1", d::RepeatCount.bounded(200),
27
+ b::Segment(110, s:: N1, "Name", r::Situational, d::RepeatCount.bounded(1),
28
+ b::Element(e::Required, "Entity Identifier Code"),
29
+ b::Element(e::Situational, "Name"),
30
+ b::Element(e::Situational, "Identification Code Qualifier"),
31
+ b::Element(e::Situational, "Identification Code"),
32
+ b::Element(e::Situational, "Code describing entity relationship"),
33
+ b::Element(e::Situational, "Code identifying an organizational entity, a physical location, property or an individual")),
34
+ b::Segment(120, s:: N2, "Address Information", r::Situational, d::RepeatCount.bounded(2),
35
+ b::Element(e::Situational, "Name"),
36
+ b::Element(e::Situational, "Name")),
37
+ b::Segment(130, s:: N3, "Address Information", r::Situational, d::RepeatCount.bounded(2),
38
+ b::Element(e::Situational, "Address Information"),
39
+ b::Element(e::Situational, "Address Information")),
40
+ b::Segment(140, s:: N4, "Geographic Location", r::Situational, d::RepeatCount.unbounded,
41
+ b::Element(e::Situational, "City Name"),
42
+ b::Element(e::Situational, "State or Province Code"),
43
+ b::Element(e::Situational, "Postal Code"),
44
+ b::Element(e::Situational, "Country Code"),
45
+ b::Element(e::Situational, "Location Qualifier"),
46
+ b::Element(e::Situational, "Location Identifier"))), #end LoopDef N1, Segment 140
47
+ b::Segment(200, s:: ITD, "Terms of Sale or Deferred Terms of Sale", r::Situational, d::RepeatCount.unbounded,
48
+ b::Element(e::Situational, "Terms Type Code"),
49
+ b::Element(e::Situational, "Terms Basis Date Code"),
50
+ b::Element(e::Situational, "Terms Discount Percent"),
51
+ b::Element(e::Situational, "Terms Discount Due Date"),
52
+ b::Element(e::Situational, "Terms Discount Days Due"),
53
+ b::Element(e::Situational, "Terms Net Due Date"),
54
+ b::Element(e::Situational, "Terms Net Days"),
55
+ b::Element(e::Situational, "Terms Discount Amount"),
56
+ b::Element(e::Situational, "Terms Deferred Due Date"),
57
+ b::Element(e::Situational, "Deferred Amount Due"),
58
+ b::Element(e::Situational, "Percent of Invoice Payable"),
59
+ b::Element(e::Situational, "Description"),
60
+ b::Element(e::Situational, "Day of Month"),
61
+ b::Element(e::Situational, "Payment Method Code"),
62
+ b::Element(e::Situational, "Percent"))), #end TableDef HEADING, Segment 200
63
+ d::TableDef.header("Detail",
64
+ d::LoopDef.build("IT1", d::RepeatCount.bounded(100000),
65
+ b::Segment(10, s::IT1, "Baseline Item Data (Invoice)", r::Required, d::RepeatCount.bounded(1),
66
+ b::Element(e::Situational, "Assigned Identification"),
67
+ b::Element(e::Situational, "Quantity"),
68
+ b::Element(e::Situational, "UOM"),
69
+ b::Element(e::Situational, "Unit Price"),
70
+ b::Element(e::Situational, "Basis of Unit Price Code"),
71
+ b::Element(e::Situational, "Product/Service ID Qualifier"),
72
+ b::Element(e::Situational, "Product/Service ID"),
73
+ b::Element(e::Situational, "Product/Service ID Qualifier"),
74
+ b::Element(e::Situational, "Product/Service ID"),
75
+ b::Element(e::Situational, "Product/Service ID Qualifier"),
76
+ b::Element(e::Situational, "Product/Service ID"),
77
+ b::Element(e::Situational, "Product/Service ID Qualifier"),
78
+ b::Element(e::Situational, "Product/Service ID"),
79
+ b::Element(e::Situational, "Product/Service ID Qualifier"),
80
+ b::Element(e::Situational, "Product/Service ID"),
81
+ b::Element(e::Situational, "Product/Service ID Qualifier"),
82
+ b::Element(e::Situational, "Product/Service ID"),
83
+ b::Element(e::Situational, "Product/Service ID Qualifier"),
84
+ b::Element(e::Situational, "Product/Service ID"),
85
+ b::Element(e::Situational, "Product/Service ID Qualifier"),
86
+ b::Element(e::Situational, "Product/Service ID"),
87
+ b::Element(e::Situational, "Product/Service ID Qualifier"),
88
+ b::Element(e::Situational, "Product/Service ID"),
89
+ b::Element(e::Situational, "Product/Service ID Qualifier"),
90
+ b::Element(e::Situational, "Product/Service ID")), #end Segment 10
91
+ b::Segment(20, s::TXI, "Tax Information", r::Situational, d::RepeatCount.bounded(10),
92
+ b::Element(e::Situational, "Tax Type Code"),
93
+ b::Element(e::Situational, "Monetary Amount"),
94
+ b::Element(e::Situational, "Percent"),
95
+ b::Element(e::Situational, "Tax Jurisdiction Code Qualifier"),
96
+ b::Element(e::Situational, "Tax Jurisdiction Code"),
97
+ b::Element(e::Situational, "Tax Exempt Code"),
98
+ b::Element(e::Situational, "Relationship Code"),
99
+ b::Element(e::Situational, "Dollar Basis For Percent"),
100
+ b::Element(e::Situational, "Tax Identification Number"),
101
+ b::Element(e::Situational, "Assigned Identification")), #end Segment 20
102
+ d::LoopDef.build("PID", d::RepeatCount.bounded(1000),
103
+ b::Segment(30, s::PID, "Product/Item Description", r::Situational, d::RepeatCount.bounded(1),
104
+ b::Element(e::Situational, "Item Description Type"),
105
+ b::Element(e::Situational, "Process Characteristic Code"),
106
+ b::Element(e::Situational, "Agency Qualifier Code"),
107
+ b::Element(e::Situational, "Product Description Code"),
108
+ b::Element(e::Situational, "Description"),
109
+ b::Element(e::Situational, "Surface/Layer/Position Code"),
110
+ b::Element(e::Situational, "Source Subqualifier"),
111
+ b::Element(e::Situational, "Yes/No Condition or Response Code"),
112
+ b::Element(e::Situational, "Language Code"))))), #end TableDef Detail, LoopDef IT1, LoopDef PID, Segment 30
113
+ d::TableDef.header("Summary",
114
+ b::Segment(10, s::TDS, "Total Monetary Value Summary", r::Required, d::RepeatCount.bounded(1),
115
+ b::Element(e::Situational, "Amount"),
116
+ b::Element(e::Situational, "Amount"),
117
+ b::Element(e::Situational, "Amount"),
118
+ b::Element(e::Situational, "Amount")), #end Segment 10
119
+ b::Segment(20, s::TXI, "Tax Information", r::Situational, d::RepeatCount.bounded(10),
120
+ b::Element(e::Situational, "Tax Type Code"),
121
+ b::Element(e::Situational, "Monetary Amount"),
122
+ b::Element(e::Situational, "Percent"),
123
+ b::Element(e::Situational, "Tax Jurisdiction Code Qualifier"),
124
+ b::Element(e::Situational, "Tax Jurisdiction Code"),
125
+ b::Element(e::Situational, "Tax Exempt Code"),
126
+ b::Element(e::Situational, "Relationship Code"),
127
+ b::Element(e::Situational, "Dollar Basis For Percent"),
128
+ b::Element(e::Situational, "Tax Identification Number"),
129
+ b::Element(e::Situational, "Assigned Identification")), #end Segment 20
130
+ d::LoopDef.build("SAC", d::RepeatCount.bounded(25),
131
+ b::Segment(30, s::SAC, "Service, Promotion, Allowance, or Charge Information", r::Situational, d::RepeatCount.bounded(1),
132
+ b::Element(e::Situational, "Allowance or Charge Indicator"),
133
+ b::Element(e::Situational, "Service, Promotion, Allowance, or Charge Code"),
134
+ b::Element(e::Situational, "Agency Qualifier Code"),
135
+ b::Element(e::Situational, "Agency Service, Promotion, Allowance, or Charge Code"),
136
+ b::Element(e::Situational, "Amount"),
137
+ b::Element(e::Situational, "Allowance/Charge Percent Qualifier"),
138
+ b::Element(e::Situational, "Percent"),
139
+ b::Element(e::Situational, "Rate"),
140
+ b::Element(e::Situational, "Unit or Basis for Measurement Code"),
141
+ b::Element(e::Situational, "Quantity"),
142
+ b::Element(e::Situational, "Quantity"),
143
+ b::Element(e::Situational, "Allowance or Charge Method of Handling Code"),
144
+ b::Element(e::Situational, "Reference Identification"),
145
+ b::Element(e::Situational, "Option Number"),
146
+ b::Element(e::Situational, "Description"),
147
+ b::Element(e::Situational, "Language Code"))), #end LoopDef SAC, Segment 30
148
+ b::Segment(40, s::CTT, "Transaction Totals", r::Situational, d::RepeatCount.bounded(10),
149
+ b::Element(e::Situational, "Number of Line Items"),
150
+ b::Element(e::Situational, "Hash Total"),
151
+ b::Element(e::Situational, "Weight"),
152
+ b::Element(e::Situational, "Unit or Basis for Measurement Code"),
153
+ b::Element(e::Situational, "Volume"),
154
+ b::Element(e::Situational, "Unit or Basis for Measurement Code"),
155
+ b::Element(e::Situational, "Description")), #end Segment 40
156
+ b::Segment(50, s:: SE, "Transaction Set Trailer", r::Required, d::RepeatCount.bounded(1),
157
+ b::Element(e::Required, "Number of Included Segments"),
158
+ b::Element(e::Required, "Transaction Set Control Number")))) #end build IN, TableDef Summary, Segment 50
159
+ end
160
+ end
161
+ end
162
+ end
@@ -28,6 +28,7 @@ module Stupidedi
28
28
  #utoload :SQ866, "stupidedi/transaction_sets/004010/implementations/SQ866"
29
29
  autoload :SS862, "stupidedi/transaction_sets/004010/implementations/SS862"
30
30
  #utoload :SW945, "stupidedi/transaction_sets/004010/implementations/SW945"
31
+ autoload :IN810, "stupidedi/transaction_sets/004010/implementations/IN810"
31
32
 
32
33
  module X091A1
33
34
  autoload :HP835, "stupidedi/transaction_sets/004010/implementations/X091A1-HP835"
@@ -0,0 +1,38 @@
1
+ module Stupidedi
2
+ module TransactionSets
3
+ module FortyTen
4
+ module Standards
5
+ b = Builder
6
+ d = Schema
7
+ r = SegmentReqs
8
+ s = SegmentDefs
9
+
10
+ IN810 = b.build("IN", "810", "Invoice",
11
+ d::TableDef.header("1 - Header",
12
+ s::ST.use( 10, r::Mandatory, d::RepeatCount.bounded(1)),
13
+ s::BIG.use( 20, r::Mandatory, d::RepeatCount.bounded(1)),
14
+ s::REF.use( 30, r::Optional, d::RepeatCount.bounded(1)),
15
+ d::LoopDef.build("N1", d::RepeatCount.bounded(200),
16
+ s:: N1.use( 110, r::Optional, d::RepeatCount.bounded(1)),
17
+ s:: N2.use( 120, r::Optional, d::RepeatCount.bounded(2)),
18
+ s:: N3.use( 130, r::Optional, d::RepeatCount.bounded(2)),
19
+ s:: N4.use( 140, r::Optional, d::RepeatCount.unbounded)), #end LoopDef build N1
20
+ s::ITD.use( 200, r::Optional, d::RepeatCount.unbounded)), #end TableDef Header
21
+ d::TableDef.detail("2 - Detail",
22
+ d::LoopDef.build("IT1", d::RepeatCount.bounded(100000),
23
+ s::IT1.use( 10, r::Mandatory, d::RepeatCount.bounded(1)),
24
+ s::TXI.use( 20, r::Optional, d::RepeatCount.bounded(10)),
25
+ d::LoopDef.build("PID", d::RepeatCount.bounded(1000),
26
+ s::PID.use( 30, r::Optional, d::RepeatCount.bounded(1))), #end LoopDef build PID
27
+ s::REF.use( 40, r::Optional, d::RepeatCount.unbounded))), #end TableDef Detail, LoopDef build IT1
28
+ d::TableDef.summary("3 - Summary",
29
+ s::TDS.use( 10, r::Mandatory, d::RepeatCount.bounded(1)),
30
+ s::TXI.use( 20, r::Optional, d::RepeatCount.bounded(10)),
31
+ d::LoopDef.build("SAC", d::RepeatCount.bounded(25),
32
+ s:: SAC.use( 30, r::Optional, d::RepeatCount.bounded(1))), #end LoopDef build SAC
33
+ s:: CTT.use( 40, r::Optional, d::RepeatCount.bounded(10)),
34
+ s:: SE.use( 50, r::Mandatory, d::RepeatCount.bounded(1)))) #end build IN, TableDef Summary
35
+ end
36
+ end
37
+ end
38
+ end
@@ -21,7 +21,8 @@ module Stupidedi
21
21
 
22
22
  d::TableDef.detail("2 - Detail",
23
23
  d::LoopDef.build("PO1", d::RepeatCount.bounded(10000),
24
- s::PO1.use( 10, r::Mandatory, d::RepeatCount.bounded(1)))),
24
+ s::PO1.use( 10, r::Mandatory, d::RepeatCount.bounded(1)),
25
+ s::ACK.use( 10, r::Optional, d::RepeatCount.bounded(1)))),
25
26
 
26
27
  d::TableDef.summary("3 - Summary",
27
28
  d::LoopDef.build("CTT", d::RepeatCount.bounded(1),
@@ -13,6 +13,7 @@ module Stupidedi
13
13
  autoload :OW940, "stupidedi/transaction_sets/004010/standards/OW940"
14
14
  autoload :PO850, "stupidedi/transaction_sets/004010/standards/PO850"
15
15
  autoload :PR855, "stupidedi/transaction_sets/004010/standards/PR855"
16
+ autoload :IN810, "stupidedi/transaction_sets/004010/standards/IN810"
16
17
  autoload :PS830, "stupidedi/transaction_sets/004010/standards/PS830"
17
18
  autoload :QM214, "stupidedi/transaction_sets/004010/standards/QM214"
18
19
  autoload :RE944, "stupidedi/transaction_sets/004010/standards/RE944"
@@ -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"),
@@ -281,7 +281,7 @@ module Stupidedi
281
281
  b::Element(e::NotUsed, "Condition Indicator")),
282
282
  b::Segment(2310, s::HI, "Health Care Diagnosis Code", r::Required, d::RepeatCount.bounded(1),
283
283
  b::Element(e::Required, "HEALTH CARE CODE INFORMATION",
284
- b::Element(e::Required, "Code List Qualifier", b::Values("ABK", "BK")),
284
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ABK", "BK")),
285
285
  b::Element(e::Required, "Diagnosis Code"),
286
286
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
287
287
  b::Element(e::NotUsed, "Date Time Period"),
@@ -291,7 +291,7 @@ module Stupidedi
291
291
  b::Element(e::NotUsed, "Industry Code"),
292
292
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
293
293
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
294
- b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
294
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ABF", "BF")),
295
295
  b::Element(e::Required, "Diagnosis Code"),
296
296
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
297
297
  b::Element(e::NotUsed, "Date Time Period"),
@@ -301,7 +301,7 @@ module Stupidedi
301
301
  b::Element(e::NotUsed, "Industry Code"),
302
302
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
303
303
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
304
- b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
304
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ABF", "BF")),
305
305
  b::Element(e::Required, "Diagnosis Code"),
306
306
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
307
307
  b::Element(e::NotUsed, "Date Time Period"),
@@ -311,7 +311,7 @@ module Stupidedi
311
311
  b::Element(e::NotUsed, "Industry Code"),
312
312
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
313
313
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
314
- b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
314
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ABF", "BF")),
315
315
  b::Element(e::Required, "Diagnosis Code"),
316
316
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
317
317
  b::Element(e::NotUsed, "Date Time Period"),
@@ -321,7 +321,7 @@ module Stupidedi
321
321
  b::Element(e::NotUsed, "Industry Code"),
322
322
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
323
323
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
324
- b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
324
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ABF", "BF")),
325
325
  b::Element(e::Required, "Diagnosis Code"),
326
326
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
327
327
  b::Element(e::NotUsed, "Date Time Period"),
@@ -331,7 +331,7 @@ module Stupidedi
331
331
  b::Element(e::NotUsed, "Industry Code"),
332
332
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
333
333
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
334
- b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
334
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ABF", "BF")),
335
335
  b::Element(e::Required, "Diagnosis Code"),
336
336
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
337
337
  b::Element(e::NotUsed, "Date Time Period"),
@@ -341,7 +341,7 @@ module Stupidedi
341
341
  b::Element(e::NotUsed, "Industry Code"),
342
342
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
343
343
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
344
- b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
344
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ABF", "BF")),
345
345
  b::Element(e::Required, "Diagnosis Code"),
346
346
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
347
347
  b::Element(e::NotUsed, "Date Time Period"),
@@ -351,7 +351,7 @@ module Stupidedi
351
351
  b::Element(e::NotUsed, "Industry Code"),
352
352
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
353
353
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
354
- b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
354
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ABF", "BF")),
355
355
  b::Element(e::Required, "Diagnosis Code"),
356
356
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
357
357
  b::Element(e::NotUsed, "Date Time Period"),
@@ -361,7 +361,7 @@ module Stupidedi
361
361
  b::Element(e::NotUsed, "Industry Code"),
362
362
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
363
363
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
364
- b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
364
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ABF", "BF")),
365
365
  b::Element(e::Required, "Diagnosis Code"),
366
366
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
367
367
  b::Element(e::NotUsed, "Date Time Period"),
@@ -371,7 +371,7 @@ module Stupidedi
371
371
  b::Element(e::NotUsed, "Industry Code"),
372
372
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
373
373
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
374
- b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
374
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ABF", "BF")),
375
375
  b::Element(e::Required, "Diagnosis Code"),
376
376
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
377
377
  b::Element(e::NotUsed, "Date Time Period"),
@@ -381,7 +381,7 @@ module Stupidedi
381
381
  b::Element(e::NotUsed, "Industry Code"),
382
382
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
383
383
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
384
- b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
384
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ABF", "BF")),
385
385
  b::Element(e::Required, "Diagnosis Code"),
386
386
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
387
387
  b::Element(e::NotUsed, "Date Time Period"),
@@ -391,7 +391,7 @@ module Stupidedi
391
391
  b::Element(e::NotUsed, "Industry Code"),
392
392
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
393
393
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
394
- b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
394
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ABF", "BF")),
395
395
  b::Element(e::Required, "Diagnosis Code"),
396
396
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
397
397
  b::Element(e::NotUsed, "Date Time Period"),
@@ -402,7 +402,7 @@ module Stupidedi
402
402
  b::Element(e::NotUsed, "Yes/No Condition or Response Code"))),
403
403
  b::Segment(2310, s::HI, "Anesthesia Related Procedure", r::Situational, d::RepeatCount.bounded(1),
404
404
  b::Element(e::Required, "HEALTH CARE CODE INFORMATION",
405
- b::Element(e::Required, "Code List Qualifier", b::Values("BP")),
405
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("BP")),
406
406
  b::Element(e::Required, "Diagnosis Code"),
407
407
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
408
408
  b::Element(e::NotUsed, "Date Time Period"),
@@ -412,7 +412,7 @@ module Stupidedi
412
412
  b::Element(e::NotUsed, "Industry Code"),
413
413
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
414
414
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
415
- b::Element(e::Required, "Code List Qualifier", b::Values("BO")),
415
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("BO")),
416
416
  b::Element(e::Required, "Diagnosis Code"),
417
417
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
418
418
  b::Element(e::NotUsed, "Date Time Period"),
@@ -433,7 +433,7 @@ module Stupidedi
433
433
  b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION")),
434
434
  b::Segment(2310, s::HI, "Condition Information", r::Situational, d::RepeatCount.bounded(1),
435
435
  b::Element(e::Required, "HEALTH CARE CODE INFORMATION",
436
- b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
436
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("BG")),
437
437
  b::Element(e::Required, "Diagnosis Code"),
438
438
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
439
439
  b::Element(e::NotUsed, "Date Time Period"),
@@ -443,7 +443,7 @@ module Stupidedi
443
443
  b::Element(e::NotUsed, "Industry Code"),
444
444
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
445
445
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
446
- b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
446
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("BG")),
447
447
  b::Element(e::Required, "Diagnosis Code"),
448
448
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
449
449
  b::Element(e::NotUsed, "Date Time Period"),
@@ -453,7 +453,7 @@ module Stupidedi
453
453
  b::Element(e::NotUsed, "Industry Code"),
454
454
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
455
455
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
456
- b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
456
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("BG")),
457
457
  b::Element(e::Required, "Diagnosis Code"),
458
458
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
459
459
  b::Element(e::NotUsed, "Date Time Period"),
@@ -463,7 +463,7 @@ module Stupidedi
463
463
  b::Element(e::NotUsed, "Industry Code"),
464
464
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
465
465
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
466
- b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
466
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("BG")),
467
467
  b::Element(e::Required, "Diagnosis Code"),
468
468
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
469
469
  b::Element(e::NotUsed, "Date Time Period"),
@@ -473,7 +473,7 @@ module Stupidedi
473
473
  b::Element(e::NotUsed, "Industry Code"),
474
474
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
475
475
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
476
- b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
476
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("BG")),
477
477
  b::Element(e::Required, "Diagnosis Code"),
478
478
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
479
479
  b::Element(e::NotUsed, "Date Time Period"),
@@ -483,7 +483,7 @@ module Stupidedi
483
483
  b::Element(e::NotUsed, "Industry Code"),
484
484
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
485
485
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
486
- b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
486
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("BG")),
487
487
  b::Element(e::Required, "Diagnosis Code"),
488
488
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
489
489
  b::Element(e::NotUsed, "Date Time Period"),
@@ -493,7 +493,7 @@ module Stupidedi
493
493
  b::Element(e::NotUsed, "Industry Code"),
494
494
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
495
495
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
496
- b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
496
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("BG")),
497
497
  b::Element(e::Required, "Diagnosis Code"),
498
498
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
499
499
  b::Element(e::NotUsed, "Date Time Period"),
@@ -503,7 +503,7 @@ module Stupidedi
503
503
  b::Element(e::NotUsed, "Industry Code"),
504
504
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
505
505
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
506
- b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
506
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("BG")),
507
507
  b::Element(e::Required, "Diagnosis Code"),
508
508
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
509
509
  b::Element(e::NotUsed, "Date Time Period"),
@@ -513,7 +513,7 @@ module Stupidedi
513
513
  b::Element(e::NotUsed, "Industry Code"),
514
514
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
515
515
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
516
- b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
516
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("BG")),
517
517
  b::Element(e::Required, "Diagnosis Code"),
518
518
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
519
519
  b::Element(e::NotUsed, "Date Time Period"),
@@ -523,7 +523,7 @@ module Stupidedi
523
523
  b::Element(e::NotUsed, "Industry Code"),
524
524
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
525
525
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
526
- b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
526
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("BG")),
527
527
  b::Element(e::Required, "Diagnosis Code"),
528
528
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
529
529
  b::Element(e::NotUsed, "Date Time Period"),
@@ -533,7 +533,7 @@ module Stupidedi
533
533
  b::Element(e::NotUsed, "Industry Code"),
534
534
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
535
535
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
536
- b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
536
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("BG")),
537
537
  b::Element(e::Required, "Diagnosis Code"),
538
538
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
539
539
  b::Element(e::NotUsed, "Date Time Period"),
@@ -543,7 +543,7 @@ module Stupidedi
543
543
  b::Element(e::NotUsed, "Industry Code"),
544
544
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
545
545
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
546
- b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
546
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("BG")),
547
547
  b::Element(e::Required, "Diagnosis Code"),
548
548
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
549
549
  b::Element(e::NotUsed, "Date Time Period"),
@@ -158,7 +158,7 @@ module Stupidedi
158
158
  b::Element(e::NotUsed, "Condition Indicator")),
159
159
  b::Segment(2310, s::HI, "Principal Diagnosis", r::Required, d::RepeatCount.bounded(1),
160
160
  b::Element(e::Required, "HEALTH CARE CODE INFORMATION",
161
- b::Element(e::Required, "Code List Qualifier", b::Values("ABK", "BK")),
161
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ABK", "BK")),
162
162
  b::Element(e::Required, "Principal Diagnosis Code"),
163
163
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
164
164
  b::Element(e::NotUsed, "Date Time Period"),
@@ -180,7 +180,7 @@ module Stupidedi
180
180
  b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION")),
181
181
  b::Segment(2310, s::HI, "Admitting Diagnosis", r::Situational, d::RepeatCount.bounded(1),
182
182
  b::Element(e::Required, "HEALTH CARE CODE INFORMATION",
183
- b::Element(e::Required, "Code List Qualifier", b::Values("ABJ", "BJ")),
183
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("ABJ", "BJ")),
184
184
  b::Element(e::Required, "Admitting Diagnosis Code"),
185
185
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
186
186
  b::Element(e::NotUsed, "Date Time Period"),
@@ -202,7 +202,7 @@ module Stupidedi
202
202
  b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION")),
203
203
  b::Segment(2310, s::HI, "Patient's Reason For Visit", r::Situational, d::RepeatCount.bounded(1),
204
204
  b::Element(e::Required, "HEALTH CARE CODE INFORMATION",
205
- b::Element(e::Required, "Code List Qualifier", b::Values("APR", "PR")),
205
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("APR", "PR")),
206
206
  b::Element(e::Required, "Patient Reason For Visit"),
207
207
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
208
208
  b::Element(e::NotUsed, "Date Time Period"),
@@ -212,7 +212,7 @@ module Stupidedi
212
212
  b::Element(e::NotUsed, "Industry Code"),
213
213
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
214
214
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
215
- b::Element(e::Required, "Code List Qualifier", b::Values("APR", "PR")),
215
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("APR", "PR")),
216
216
  b::Element(e::Required, "Patient Reason For Visit"),
217
217
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
218
218
  b::Element(e::NotUsed, "Date Time Period"),
@@ -222,7 +222,7 @@ module Stupidedi
222
222
  b::Element(e::NotUsed, "Industry Code"),
223
223
  b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
224
224
  b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
225
- b::Element(e::Required, "Code List Qualifier", b::Values("APR", "PR")),
225
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("APR", "PR")),
226
226
  b::Element(e::Required, "Patient Reason For Visit"),
227
227
  b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
228
228
  b::Element(e::NotUsed, "Date Time Period"),