hippo 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/CHANGELOG +8 -0
  2. data/lib/hippo/field.rb +10 -1
  3. data/lib/hippo/segments/AAA.rb +39 -0
  4. data/lib/hippo/segments/EB.rb +207 -0
  5. data/lib/hippo/segments/EM.rb +63 -0
  6. data/lib/hippo/segments/EQ.rb +135 -0
  7. data/lib/hippo/segments/III.rb +195 -0
  8. data/lib/hippo/segments/INS.rb +171 -0
  9. data/lib/hippo/segments/LE.rb +15 -0
  10. data/lib/hippo/segments/LS.rb +15 -0
  11. data/lib/hippo/segments/MPI.rb +63 -0
  12. data/lib/hippo/segments/MSG.rb +31 -0
  13. data/lib/hippo/segments/PCT.rb +23 -0
  14. data/lib/hippo/segments/PDP.rb +31 -0
  15. data/lib/hippo/segments/PDR.rb +39 -0
  16. data/lib/hippo/segments/PID.rb +79 -0
  17. data/lib/hippo/segments/PKD.rb +47 -0
  18. data/lib/hippo/segments/SD1.rb +71 -0
  19. data/lib/hippo/segments/VEH.rb +159 -0
  20. data/lib/hippo/segments/base.rb +8 -0
  21. data/lib/hippo/segments.rb +16 -0
  22. data/lib/hippo/transaction_sets/HIPAA_270/L2000A.rb +32 -0
  23. data/lib/hippo/transaction_sets/HIPAA_270/L2000B.rb +32 -0
  24. data/lib/hippo/transaction_sets/HIPAA_270/L2000C.rb +41 -0
  25. data/lib/hippo/transaction_sets/HIPAA_270/L2000D.rb +41 -0
  26. data/lib/hippo/transaction_sets/HIPAA_270/L2100A.rb +21 -0
  27. data/lib/hippo/transaction_sets/HIPAA_270/L2100B.rb +55 -0
  28. data/lib/hippo/transaction_sets/HIPAA_270/L2100C.rb +97 -0
  29. data/lib/hippo/transaction_sets/HIPAA_270/L2100D.rb +97 -0
  30. data/lib/hippo/transaction_sets/HIPAA_270/L2110C.rb +67 -0
  31. data/lib/hippo/transaction_sets/HIPAA_270/L2110D.rb +47 -0
  32. data/lib/hippo/transaction_sets/HIPAA_270/base.rb +80 -0
  33. data/lib/hippo/transaction_sets/HIPAA_270.rb +17 -0
  34. data/lib/hippo/transaction_sets/HIPAA_271/L2000A.rb +44 -0
  35. data/lib/hippo/transaction_sets/HIPAA_271/L2000B.rb +32 -0
  36. data/lib/hippo/transaction_sets/HIPAA_271/L2000C.rb +41 -0
  37. data/lib/hippo/transaction_sets/HIPAA_271/L2000D.rb +41 -0
  38. data/lib/hippo/transaction_sets/HIPAA_271/L2100A.rb +43 -0
  39. data/lib/hippo/transaction_sets/HIPAA_271/L2100B.rb +67 -0
  40. data/lib/hippo/transaction_sets/HIPAA_271/L2100C.rb +124 -0
  41. data/lib/hippo/transaction_sets/HIPAA_271/L2100D.rb +124 -0
  42. data/lib/hippo/transaction_sets/HIPAA_271/L2110C.rb +98 -0
  43. data/lib/hippo/transaction_sets/HIPAA_271/L2110D.rb +98 -0
  44. data/lib/hippo/transaction_sets/HIPAA_271/L2115C.rb +16 -0
  45. data/lib/hippo/transaction_sets/HIPAA_271/L2115D.rb +16 -0
  46. data/lib/hippo/transaction_sets/HIPAA_271/L2120C.rb +54 -0
  47. data/lib/hippo/transaction_sets/HIPAA_271/L2120D.rb +54 -0
  48. data/lib/hippo/transaction_sets/HIPAA_271/base.rb +80 -0
  49. data/lib/hippo/transaction_sets/HIPAA_271.rb +21 -0
  50. data/lib/hippo/transaction_sets/base.rb +75 -21
  51. data/lib/hippo/transaction_sets/component.rb +6 -1
  52. data/lib/hippo/transaction_sets.rb +2 -0
  53. data/lib/hippo/version.rb +1 -1
  54. data/samples/837_L2000A_01.edi +1 -0
  55. data/samples/837_L2000A_02.edi +1 -0
  56. data/test/test_parser.rb +5 -0
  57. metadata +55 -7
data/CHANGELOG CHANGED
@@ -1,3 +1,11 @@
1
+ 0.2.3 - TBD
2
+ * Fix issue preventing parsing when segments are not in the correct order. Now
3
+ we loop through all segments within a given section to make sure we grab them
4
+ all.
5
+ * Add shortcut methods to Segment::Base, TransactionSet::Base, and Component
6
+ to allow easier identification of segments? vs transaction_sets?.
7
+ * Fix issue causing all :decimal fields to be initialized to 0 even when not
8
+ required.
1
9
  0.2.2 - 2012/01/25
2
10
  * Fix issue with segment parsing. Make sure to set each segments parent
3
11
  properly once we identify that it belongs in the particular transaction
data/lib/hippo/field.rb CHANGED
@@ -18,7 +18,7 @@ module Hippo
18
18
  case datatype
19
19
  when :binary then value
20
20
  when :integer then value.to_i
21
- when :decimal then BigDecimal.new(value.to_s)
21
+ when :decimal then parse_decimal(value)
22
22
  when :date then parse_date(value)
23
23
  when :time then parse_time(value)
24
24
  else parse_string(value)
@@ -60,6 +60,15 @@ module Hippo
60
60
  value.to_s('F').sub(/\.0\z/,'').rjust(minimum, '0')
61
61
  end
62
62
 
63
+ def parse_decimal(value)
64
+ if value == ''
65
+ invalid! if required
66
+ return nil
67
+ end
68
+
69
+ BigDecimal.new(value.to_s)
70
+ end
71
+
63
72
  def generate_time(value)
64
73
  value ||= Time.now
65
74
 
@@ -0,0 +1,39 @@
1
+ module Hippo::Segments
2
+ class AAA < Hippo::Segments::Base
3
+
4
+ segment_identifier 'AAA'
5
+
6
+ field :name => 'YesNoConditionOrResponseCode',
7
+ :sequence => 1,
8
+ :datatype => :list,
9
+ :minimum => 1,
10
+ :maximum => 1,
11
+ :required => true,
12
+ :data_element_number => 1073
13
+
14
+ field :name => 'AgencyQualifierCode',
15
+ :sequence => 2,
16
+ :datatype => :list,
17
+ :minimum => 2,
18
+ :maximum => 2,
19
+ :required => false,
20
+ :data_element_number => 559
21
+
22
+ field :name => 'RejectReasonCode',
23
+ :sequence => 3,
24
+ :datatype => :list,
25
+ :minimum => 2,
26
+ :maximum => 2,
27
+ :required => false,
28
+ :data_element_number => 901
29
+
30
+ field :name => 'FollowUpActionCode',
31
+ :sequence => 4,
32
+ :datatype => :list,
33
+ :minimum => 1,
34
+ :maximum => 1,
35
+ :required => false,
36
+ :data_element_number => 889
37
+
38
+ end
39
+ end
@@ -0,0 +1,207 @@
1
+ module Hippo::Segments
2
+ class EB < Hippo::Segments::Base
3
+
4
+ segment_identifier 'EB'
5
+
6
+ field :name => 'EligibilityOrBenefitInformationCode',
7
+ :sequence => 1,
8
+ :datatype => :list,
9
+ :minimum => 1,
10
+ :maximum => 2,
11
+ :required => true,
12
+ :data_element_number => 1390
13
+
14
+ field :name => 'CoverageLevelCode',
15
+ :sequence => 2,
16
+ :datatype => :list,
17
+ :minimum => 3,
18
+ :maximum => 3,
19
+ :required => false,
20
+ :data_element_number => 1207
21
+
22
+ field :name => 'ServiceTypeCode',
23
+ :sequence => 3,
24
+ :datatype => :list,
25
+ :minimum => 1,
26
+ :maximum => 2,
27
+ :required => false,
28
+ :data_element_number => 1365
29
+
30
+ field :name => 'InsuranceTypeCode',
31
+ :sequence => 4,
32
+ :datatype => :list,
33
+ :minimum => 1,
34
+ :maximum => 3,
35
+ :required => false,
36
+ :data_element_number => 1336
37
+
38
+ field :name => 'PlanCoverageDescription',
39
+ :sequence => 5,
40
+ :datatype => :string,
41
+ :minimum => 1,
42
+ :maximum => 50,
43
+ :required => false,
44
+ :data_element_number => 1204
45
+
46
+ field :name => 'TimePeriodQualifier',
47
+ :sequence => 6,
48
+ :datatype => :list,
49
+ :minimum => 1,
50
+ :maximum => 2,
51
+ :required => false,
52
+ :data_element_number => 615
53
+
54
+ field :name => 'MonetaryAmount',
55
+ :sequence => 7,
56
+ :datatype => :decimal,
57
+ :minimum => 1,
58
+ :maximum => 18,
59
+ :required => false,
60
+ :data_element_number => 782
61
+
62
+ field :name => 'PercentageAsDecimal',
63
+ :sequence => 8,
64
+ :datatype => :decimal,
65
+ :minimum => 1,
66
+ :maximum => 10,
67
+ :required => false,
68
+ :data_element_number => 954
69
+
70
+ field :name => 'QuantityQualifier',
71
+ :sequence => 9,
72
+ :datatype => :list,
73
+ :minimum => 2,
74
+ :maximum => 2,
75
+ :required => false,
76
+ :data_element_number => 673
77
+
78
+ field :name => 'Quantity',
79
+ :sequence => 10,
80
+ :datatype => :decimal,
81
+ :minimum => 1,
82
+ :maximum => 15,
83
+ :required => false,
84
+ :data_element_number => 380
85
+
86
+ field :name => 'YesNoConditionOrResponseCode',
87
+ :sequence => 11,
88
+ :datatype => :list,
89
+ :minimum => 1,
90
+ :maximum => 1,
91
+ :required => false,
92
+ :data_element_number => 1073
93
+
94
+ field :name => 'YesNoConditionOrResponseCode',
95
+ :sequence => 12,
96
+ :datatype => :list,
97
+ :minimum => 1,
98
+ :maximum => 1,
99
+ :required => false,
100
+ :data_element_number => 1073
101
+
102
+ composite_field 'CompositeMedicalProcedureIdentifier' do
103
+
104
+ field :name => 'ProductServiceIdQualifier',
105
+ :sequence => 1,
106
+ :datatype => :list,
107
+ :minimum => 2,
108
+ :maximum => 2,
109
+ :required => true,
110
+ :data_element_number => 235
111
+
112
+ field :name => 'ProductServiceId',
113
+ :sequence => 2,
114
+ :datatype => :string,
115
+ :minimum => 1,
116
+ :maximum => 48,
117
+ :required => true,
118
+ :data_element_number => 234
119
+
120
+ field :name => 'ProcedureModifier',
121
+ :sequence => 3,
122
+ :datatype => :string,
123
+ :minimum => 2,
124
+ :maximum => 2,
125
+ :required => false,
126
+ :data_element_number => 1339
127
+
128
+ field :name => 'ProcedureModifier',
129
+ :sequence => 4,
130
+ :datatype => :string,
131
+ :minimum => 2,
132
+ :maximum => 2,
133
+ :required => false,
134
+ :data_element_number => 1339
135
+
136
+ field :name => 'ProcedureModifier',
137
+ :sequence => 5,
138
+ :datatype => :string,
139
+ :minimum => 2,
140
+ :maximum => 2,
141
+ :required => false,
142
+ :data_element_number => 1339
143
+
144
+ field :name => 'ProcedureModifier',
145
+ :sequence => 6,
146
+ :datatype => :string,
147
+ :minimum => 2,
148
+ :maximum => 2,
149
+ :required => false,
150
+ :data_element_number => 1339
151
+
152
+ field :name => 'Description',
153
+ :sequence => 7,
154
+ :datatype => :string,
155
+ :minimum => 1,
156
+ :maximum => 80,
157
+ :required => false,
158
+ :data_element_number => 352
159
+
160
+ field :name => 'ProductServiceId',
161
+ :sequence => 8,
162
+ :datatype => :string,
163
+ :minimum => 1,
164
+ :maximum => 48,
165
+ :required => false,
166
+ :data_element_number => 234
167
+
168
+ end
169
+
170
+ composite_field 'CompositeDiagnosisCodePointer' do
171
+
172
+ field :name => 'DiagnosisCodePointer',
173
+ :sequence => 1,
174
+ :datatype => :integer,
175
+ :minimum => 1,
176
+ :maximum => 2,
177
+ :required => true,
178
+ :data_element_number => 1328
179
+
180
+ field :name => 'DiagnosisCodePointer',
181
+ :sequence => 2,
182
+ :datatype => :integer,
183
+ :minimum => 1,
184
+ :maximum => 2,
185
+ :required => false,
186
+ :data_element_number => 1328
187
+
188
+ field :name => 'DiagnosisCodePointer',
189
+ :sequence => 3,
190
+ :datatype => :integer,
191
+ :minimum => 1,
192
+ :maximum => 2,
193
+ :required => false,
194
+ :data_element_number => 1328
195
+
196
+ field :name => 'DiagnosisCodePointer',
197
+ :sequence => 4,
198
+ :datatype => :integer,
199
+ :minimum => 1,
200
+ :maximum => 2,
201
+ :required => false,
202
+ :data_element_number => 1328
203
+
204
+ end
205
+
206
+ end
207
+ end
@@ -0,0 +1,63 @@
1
+ module Hippo::Segments
2
+ class EM < Hippo::Segments::Base
3
+
4
+ segment_identifier 'EM'
5
+
6
+ field :name => 'WeightUnitCode',
7
+ :sequence => 1,
8
+ :datatype => :list,
9
+ :minimum => 1,
10
+ :maximum => 1,
11
+ :required => false,
12
+ :data_element_number => 188
13
+
14
+ field :name => 'Weight',
15
+ :sequence => 2,
16
+ :datatype => :decimal,
17
+ :minimum => 1,
18
+ :maximum => 10,
19
+ :required => false,
20
+ :data_element_number => 81
21
+
22
+ field :name => 'VolumeUnitQualifier',
23
+ :sequence => 3,
24
+ :datatype => :list,
25
+ :minimum => 1,
26
+ :maximum => 1,
27
+ :required => false,
28
+ :data_element_number => 184
29
+
30
+ field :name => 'Volume',
31
+ :sequence => 4,
32
+ :datatype => :decimal,
33
+ :minimum => 1,
34
+ :maximum => 8,
35
+ :required => false,
36
+ :data_element_number => 183
37
+
38
+ field :name => 'CountryCode',
39
+ :sequence => 5,
40
+ :datatype => :list,
41
+ :minimum => 2,
42
+ :maximum => 3,
43
+ :required => false,
44
+ :data_element_number => 26
45
+
46
+ field :name => 'ConstructionType',
47
+ :sequence => 6,
48
+ :datatype => :list,
49
+ :minimum => 1,
50
+ :maximum => 2,
51
+ :required => false,
52
+ :data_element_number => 1429
53
+
54
+ field :name => 'Date',
55
+ :sequence => 7,
56
+ :datatype => :date,
57
+ :minimum => 8,
58
+ :maximum => 8,
59
+ :required => false,
60
+ :data_element_number => 373
61
+
62
+ end
63
+ end
@@ -0,0 +1,135 @@
1
+ module Hippo::Segments
2
+ class EQ < Hippo::Segments::Base
3
+
4
+ segment_identifier 'EQ'
5
+
6
+ field :name => 'ServiceTypeCode',
7
+ :sequence => 1,
8
+ :datatype => :list,
9
+ :minimum => 1,
10
+ :maximum => 2,
11
+ :required => false,
12
+ :data_element_number => 1365
13
+
14
+ composite_field 'CompositeMedicalProcedureIdentifier' do
15
+
16
+ field :name => 'ProductServiceIdQualifier',
17
+ :sequence => 1,
18
+ :datatype => :list,
19
+ :minimum => 2,
20
+ :maximum => 2,
21
+ :required => true,
22
+ :data_element_number => 235
23
+
24
+ field :name => 'ProductServiceId',
25
+ :sequence => 2,
26
+ :datatype => :string,
27
+ :minimum => 1,
28
+ :maximum => 48,
29
+ :required => true,
30
+ :data_element_number => 234
31
+
32
+ field :name => 'ProcedureModifier',
33
+ :sequence => 3,
34
+ :datatype => :string,
35
+ :minimum => 2,
36
+ :maximum => 2,
37
+ :required => false,
38
+ :data_element_number => 1339
39
+
40
+ field :name => 'ProcedureModifier',
41
+ :sequence => 4,
42
+ :datatype => :string,
43
+ :minimum => 2,
44
+ :maximum => 2,
45
+ :required => false,
46
+ :data_element_number => 1339
47
+
48
+ field :name => 'ProcedureModifier',
49
+ :sequence => 5,
50
+ :datatype => :string,
51
+ :minimum => 2,
52
+ :maximum => 2,
53
+ :required => false,
54
+ :data_element_number => 1339
55
+
56
+ field :name => 'ProcedureModifier',
57
+ :sequence => 6,
58
+ :datatype => :string,
59
+ :minimum => 2,
60
+ :maximum => 2,
61
+ :required => false,
62
+ :data_element_number => 1339
63
+
64
+ field :name => 'Description',
65
+ :sequence => 7,
66
+ :datatype => :string,
67
+ :minimum => 1,
68
+ :maximum => 80,
69
+ :required => false,
70
+ :data_element_number => 352
71
+
72
+ field :name => 'ProductServiceId',
73
+ :sequence => 8,
74
+ :datatype => :string,
75
+ :minimum => 1,
76
+ :maximum => 48,
77
+ :required => false,
78
+ :data_element_number => 234
79
+
80
+ end
81
+
82
+ field :name => 'CoverageLevelCode',
83
+ :sequence => 3,
84
+ :datatype => :list,
85
+ :minimum => 3,
86
+ :maximum => 3,
87
+ :required => false,
88
+ :data_element_number => 1207
89
+
90
+ field :name => 'InsuranceTypeCode',
91
+ :sequence => 4,
92
+ :datatype => :list,
93
+ :minimum => 1,
94
+ :maximum => 3,
95
+ :required => false,
96
+ :data_element_number => 1336
97
+
98
+ composite_field 'CompositeDiagnosisCodePointer' do
99
+
100
+ field :name => 'DiagnosisCodePointer',
101
+ :sequence => 1,
102
+ :datatype => :integer,
103
+ :minimum => 1,
104
+ :maximum => 2,
105
+ :required => true,
106
+ :data_element_number => 1328
107
+
108
+ field :name => 'DiagnosisCodePointer',
109
+ :sequence => 2,
110
+ :datatype => :integer,
111
+ :minimum => 1,
112
+ :maximum => 2,
113
+ :required => false,
114
+ :data_element_number => 1328
115
+
116
+ field :name => 'DiagnosisCodePointer',
117
+ :sequence => 3,
118
+ :datatype => :integer,
119
+ :minimum => 1,
120
+ :maximum => 2,
121
+ :required => false,
122
+ :data_element_number => 1328
123
+
124
+ field :name => 'DiagnosisCodePointer',
125
+ :sequence => 4,
126
+ :datatype => :integer,
127
+ :minimum => 1,
128
+ :maximum => 2,
129
+ :required => false,
130
+ :data_element_number => 1328
131
+
132
+ end
133
+
134
+ end
135
+ end
@@ -0,0 +1,195 @@
1
+ module Hippo::Segments
2
+ class III < Hippo::Segments::Base
3
+
4
+ segment_identifier 'III'
5
+
6
+ field :name => 'CodeListQualifierCode',
7
+ :sequence => 1,
8
+ :datatype => :list,
9
+ :minimum => 1,
10
+ :maximum => 3,
11
+ :required => false,
12
+ :data_element_number => 1270
13
+
14
+ field :name => 'IndustryCode',
15
+ :sequence => 2,
16
+ :datatype => :string,
17
+ :minimum => 1,
18
+ :maximum => 30,
19
+ :required => false,
20
+ :data_element_number => 1271
21
+
22
+ field :name => 'CodeCategory',
23
+ :sequence => 3,
24
+ :datatype => :list,
25
+ :minimum => 2,
26
+ :maximum => 2,
27
+ :required => false,
28
+ :data_element_number => 1136
29
+
30
+ field :name => 'FreeFormMessageText',
31
+ :sequence => 4,
32
+ :datatype => :string,
33
+ :minimum => 1,
34
+ :maximum => 264,
35
+ :required => false,
36
+ :data_element_number => 933
37
+
38
+ field :name => 'Quantity',
39
+ :sequence => 5,
40
+ :datatype => :decimal,
41
+ :minimum => 1,
42
+ :maximum => 15,
43
+ :required => false,
44
+ :data_element_number => 380
45
+
46
+ composite_field 'CompositeUnitOfMeasure' do
47
+
48
+ field :name => 'UnitOrBasisForMeasurementCode',
49
+ :sequence => 1,
50
+ :datatype => :list,
51
+ :minimum => 2,
52
+ :maximum => 2,
53
+ :required => true,
54
+ :data_element_number => 355
55
+
56
+ field :name => 'Exponent',
57
+ :sequence => 2,
58
+ :datatype => :decimal,
59
+ :minimum => 1,
60
+ :maximum => 15,
61
+ :required => false,
62
+ :data_element_number => 1018
63
+
64
+ field :name => 'Multiplier',
65
+ :sequence => 3,
66
+ :datatype => :decimal,
67
+ :minimum => 1,
68
+ :maximum => 10,
69
+ :required => false,
70
+ :data_element_number => 649
71
+
72
+ field :name => 'UnitOrBasisForMeasurementCode',
73
+ :sequence => 4,
74
+ :datatype => :list,
75
+ :minimum => 2,
76
+ :maximum => 2,
77
+ :required => false,
78
+ :data_element_number => 355
79
+
80
+ field :name => 'Exponent',
81
+ :sequence => 5,
82
+ :datatype => :decimal,
83
+ :minimum => 1,
84
+ :maximum => 15,
85
+ :required => false,
86
+ :data_element_number => 1018
87
+
88
+ field :name => 'Multiplier',
89
+ :sequence => 6,
90
+ :datatype => :decimal,
91
+ :minimum => 1,
92
+ :maximum => 10,
93
+ :required => false,
94
+ :data_element_number => 649
95
+
96
+ field :name => 'UnitOrBasisForMeasurementCode',
97
+ :sequence => 7,
98
+ :datatype => :list,
99
+ :minimum => 2,
100
+ :maximum => 2,
101
+ :required => false,
102
+ :data_element_number => 355
103
+
104
+ field :name => 'Exponent',
105
+ :sequence => 8,
106
+ :datatype => :decimal,
107
+ :minimum => 1,
108
+ :maximum => 15,
109
+ :required => false,
110
+ :data_element_number => 1018
111
+
112
+ field :name => 'Multiplier',
113
+ :sequence => 9,
114
+ :datatype => :decimal,
115
+ :minimum => 1,
116
+ :maximum => 10,
117
+ :required => false,
118
+ :data_element_number => 649
119
+
120
+ field :name => 'UnitOrBasisForMeasurementCode',
121
+ :sequence => 10,
122
+ :datatype => :list,
123
+ :minimum => 2,
124
+ :maximum => 2,
125
+ :required => false,
126
+ :data_element_number => 355
127
+
128
+ field :name => 'Exponent',
129
+ :sequence => 11,
130
+ :datatype => :decimal,
131
+ :minimum => 1,
132
+ :maximum => 15,
133
+ :required => false,
134
+ :data_element_number => 1018
135
+
136
+ field :name => 'Multiplier',
137
+ :sequence => 12,
138
+ :datatype => :decimal,
139
+ :minimum => 1,
140
+ :maximum => 10,
141
+ :required => false,
142
+ :data_element_number => 649
143
+
144
+ field :name => 'UnitOrBasisForMeasurementCode',
145
+ :sequence => 13,
146
+ :datatype => :list,
147
+ :minimum => 2,
148
+ :maximum => 2,
149
+ :required => false,
150
+ :data_element_number => 355
151
+
152
+ field :name => 'Exponent',
153
+ :sequence => 14,
154
+ :datatype => :decimal,
155
+ :minimum => 1,
156
+ :maximum => 15,
157
+ :required => false,
158
+ :data_element_number => 1018
159
+
160
+ field :name => 'Multiplier',
161
+ :sequence => 15,
162
+ :datatype => :decimal,
163
+ :minimum => 1,
164
+ :maximum => 10,
165
+ :required => false,
166
+ :data_element_number => 649
167
+
168
+ end
169
+
170
+ field :name => 'SurfaceLayerPositionCode',
171
+ :sequence => 7,
172
+ :datatype => :list,
173
+ :minimum => 2,
174
+ :maximum => 2,
175
+ :required => false,
176
+ :data_element_number => 752
177
+
178
+ field :name => 'SurfaceLayerPositionCode',
179
+ :sequence => 8,
180
+ :datatype => :list,
181
+ :minimum => 2,
182
+ :maximum => 2,
183
+ :required => false,
184
+ :data_element_number => 752
185
+
186
+ field :name => 'SurfaceLayerPositionCode',
187
+ :sequence => 9,
188
+ :datatype => :list,
189
+ :minimum => 2,
190
+ :maximum => 2,
191
+ :required => false,
192
+ :data_element_number => 752
193
+
194
+ end
195
+ end