ez7gen 1.0.1

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 (90) hide show
  1. checksums.yaml +7 -0
  2. data/bin/ez7gen +6 -0
  3. data/lib/ez7gen.rb +23 -0
  4. data/lib/ez7gen/config/schema/2.4/2.4.HL7.xml +13904 -0
  5. data/lib/ez7gen/config/schema/2.4/VAZ2.4.HL7.xml +3085 -0
  6. data/lib/ez7gen/config/schema/2.4/added/coded-tables.xml +730 -0
  7. data/lib/ez7gen/config/schema/2.4/rules/2.4.HL7.yml +4 -0
  8. data/lib/ez7gen/config/schema/2.4/rules/VAZ2.4.HL7.yml +6 -0
  9. data/lib/ez7gen/config/schema/2.5/2.5.HL7.xml +10008 -0
  10. data/lib/ez7gen/config/schema/2.5/VAZ2.5.HL7.xml +7 -0
  11. data/lib/ez7gen/config/schema/2.5/added/coded-tables.xml +549 -0
  12. data/lib/ez7gen/config/schema/readme.txt +0 -0
  13. data/lib/ez7gen/config/templates/2.4/eiv table update-mfn_m01 20151201.xml +416 -0
  14. data/lib/ez7gen/config/templates/2.4/eiv table update-mfn_y01.xml +416 -0
  15. data/lib/ez7gen/config/templates/2.4/eiv-ec-MFN_X01_reg request 20160126.xml +659 -0
  16. data/lib/ez7gen/config/templates/2.4/examples/ADT_A60.txt +69 -0
  17. data/lib/ez7gen/config/templates/2.4/examples/eiv table update-mfn_m01 20151201.txt +21 -0
  18. data/lib/ez7gen/config/templates/2.4/examples/mhvsm_dss_units-query_qbp_q13-qbp_q13.txt +26 -0
  19. data/lib/ez7gen/config/templates/2.4/examples/mhvsm_ecs_procedures_query_qbp_q13-qbp_q13.txt +26 -0
  20. data/lib/ez7gen/config/templates/2.4/examples/mhvsm_patient eligibility_response-rsp_k11-080714.txt +44 -0
  21. data/lib/ez7gen/config/templates/2.4/examples/mhvsm_standardhl7lib_diagnosis_query_qbp_q11-qbp_q11.txt +21 -0
  22. data/lib/ez7gen/config/templates/2.4/examples/mhvsm_standardhl7lib_diagnosis_response_rsp_k11-rsp_k11.txt +42 -0
  23. data/lib/ez7gen/config/templates/2.4/examples/mhvsm_standardhl7lib_dss_units_response_rtb_k13-rtb_k13.txt +49 -0
  24. data/lib/ez7gen/config/templates/2.4/examples/mhvsm_standardhl7lib_ecs_filer_request_dft_p03-dft_p03-080714.txt +31 -0
  25. data/lib/ez7gen/config/templates/2.4/examples/mhvsm_standardhl7lib_ecs_filer_response_ack_p03-ack_p03.txt +21 -0
  26. data/lib/ez7gen/config/templates/2.4/examples/mhvsm_standardhl7lib_esc_procedures_response_rtb_k13-rtb_k13.txt +40 -0
  27. data/lib/ez7gen/config/templates/2.4/examples/mhvsm_standardhl7lib_patient_eclass_query_qbp_q11-qbp_q11.txt +21 -0
  28. data/lib/ez7gen/config/templates/2.4/examples/mhvsm_standardhl7lib_patient_problems_query_qbp_q11-qbp_q11.txt +21 -0
  29. data/lib/ez7gen/config/templates/2.4/examples/mhvsm_standardhl7lib_patinet_problems_response_rsp_k11-rsp_k11.txt +33 -0
  30. data/lib/ez7gen/config/templates/2.4/examples/orur01rvbecv2.txt +31 -0
  31. data/lib/ez7gen/config/templates/2.4/examples/sqwm vitals-oru_ro1.txt +52 -0
  32. data/lib/ez7gen/config/templates/2.4/examples/vista sqwm-adt_a60.txt +40 -0
  33. data/lib/ez7gen/config/templates/2.4/mhvsm_dss_units_query_qbp_q13-qbp_q13.xml +312 -0
  34. data/lib/ez7gen/config/templates/2.4/mhvsm_ecs_procedures_query_qbp_q13-qbp_q13.xml +314 -0
  35. data/lib/ez7gen/config/templates/2.4/mhvsm_patient eligibility_response-rsp_k11-080714.xml +640 -0
  36. data/lib/ez7gen/config/templates/2.4/mhvsm_standardhl7lib_diagnosis_query_qbp_q11-qbp_q11.xml +284 -0
  37. data/lib/ez7gen/config/templates/2.4/mhvsm_standardhl7lib_diagnosis_response_rsp_k11-rsp_k11-rsp_k11.xml +563 -0
  38. data/lib/ez7gen/config/templates/2.4/mhvsm_standardhl7lib_dss_units_response_rtb_k13-rtb_k13-rtb_k13.xml +365 -0
  39. data/lib/ez7gen/config/templates/2.4/mhvsm_standardhl7lib_ecs_filer_request_dft_p03-dft_p03-080714.xml +2172 -0
  40. data/lib/ez7gen/config/templates/2.4/mhvsm_standardhl7lib_ecs_filer_response_ack_p03-ack_p03.xml +269 -0
  41. data/lib/ez7gen/config/templates/2.4/mhvsm_standardhl7lib_ecs_procedures_response_rtb_k13-rtb_k13-rtb_k13.xml +354 -0
  42. data/lib/ez7gen/config/templates/2.4/mhvsm_standardhl7lib_patient_eclass_query_qbp_q11-qbp_q11.xml +284 -0
  43. data/lib/ez7gen/config/templates/2.4/mhvsm_standardhl7lib_patient_problems_query_qbp_q11-qbp_q11.xml +282 -0
  44. data/lib/ez7gen/config/templates/2.4/mhvsm_standardhl7lib_patient_problems_response_rsp_k11-rsp_k11-rsp_k11.xml +565 -0
  45. data/lib/ez7gen/config/templates/2.4/orur01rvbecv2.xml +1529 -0
  46. data/lib/ez7gen/config/templates/2.4/sqwm vitals-oru_r01.xml +2975 -0
  47. data/lib/ez7gen/config/templates/2.4/vista sqwm-adt_a60.xml +1360 -0
  48. data/lib/ez7gen/message_factory.rb +142 -0
  49. data/lib/ez7gen/msg_error_handler.rb +33 -0
  50. data/lib/ez7gen/profile_parser.rb +321 -0
  51. data/lib/ez7gen/resources/properties-with-comments.yml +51 -0
  52. data/lib/ez7gen/resources/properties.yml +325 -0
  53. data/lib/ez7gen/service/2.4/dynamic_field_generator.rb +45 -0
  54. data/lib/ez7gen/service/2.4/field_generator.rb +1586 -0
  55. data/lib/ez7gen/service/2.5/field_generator.rb +75 -0
  56. data/lib/ez7gen/service/base_field_generator.rb +451 -0
  57. data/lib/ez7gen/service/segment_generator.rb +218 -0
  58. data/lib/ez7gen/service/segment_picker.rb +147 -0
  59. data/lib/ez7gen/service/template_generator.rb +213 -0
  60. data/lib/ez7gen/service/type_aware_field_generator.rb +1583 -0
  61. data/lib/ez7gen/service/utils.rb +75 -0
  62. data/lib/ez7gen/structure_parser.rb +331 -0
  63. data/lib/ez7gen/version.rb +38 -0
  64. data/test/Additional Tables with values_v1.1.txt +1653 -0
  65. data/test/added_shema_test.rb +143 -0
  66. data/test/app-tmp.rb +225 -0
  67. data/test/at.txt +1 -0
  68. data/test/backburner.zip +0 -0
  69. data/test/codes.txt +262 -0
  70. data/test/codes1.txt +1240 -0
  71. data/test/data_types_exploration_test.rb +213 -0
  72. data/test/dynamic_field_generated_test.rb +292 -0
  73. data/test/message_factory_24_custom_test.rb +648 -0
  74. data/test/message_factory_25_test.rb +50 -0
  75. data/test/message_factory_adm_test.rb +558 -0
  76. data/test/message_factory_gen_test.rb +63 -0
  77. data/test/message_factory_lab_test.rb +107 -0
  78. data/test/message_factory_pharm_test.rb +121 -0
  79. data/test/message_factory_template_24_test.rb +730 -0
  80. data/test/message_factory_test.rb +220 -0
  81. data/test/msg_error_handler_test.rb +59 -0
  82. data/test/profile_parser_test.rb +542 -0
  83. data/test/quick_run.rb +880 -0
  84. data/test/segment_generator_test.rb +656 -0
  85. data/test/segment_picker_test.rb +279 -0
  86. data/test/structrure_parser_test.rb +355 -0
  87. data/test/template_generator_test.rb +164 -0
  88. data/test/type_aware_field_generator_test.rb +582 -0
  89. data/test/utils_test.rb +97 -0
  90. metadata +215 -0
@@ -0,0 +1,75 @@
1
+ require 'logger'
2
+ module Utils
3
+
4
+ $log = Logger.new STDOUT
5
+ $log.datetime_format = '%Y-%m-%d %H:%M:%S%z '
6
+ begin
7
+ $log.level = (YAML.load_file File.expand_path('../../resources/properties.yml', __FILE__))['logger.level']
8
+ rescue => e
9
+ $log.level = Logger::DEBUG
10
+ end
11
+
12
+ @@random = Random.new
13
+
14
+ BASE_INDICATOR = 'base:'
15
+ BASE = 'base'
16
+ PRIMARY = 'primary'
17
+ DATA_LOOKUP_MIS = {:position => '1', :value => '...', :description => 'No suggested values defined'}
18
+
19
+ #special = "?<>',?[]}{=-)(*&^%$#`~{}"
20
+ #@@special = "?<>[]}{)(&^%$#`~{}" # subset to use for now
21
+ @@special = "&" # it looks like only html encoded characters are problem, ex: Pathology (gross &amp; histopath, not surgical) tbl 74
22
+ @@html_encoded_regex = /[#{@@special.gsub(/./){|char| "\\#{char}"}}]/
23
+
24
+ def get_segment_name(segment)
25
+ return segment.gsub(/~|\[|\]|\{|\}/,"")
26
+ end
27
+
28
+ def blank?(obj)
29
+ return obj.nil? || obj.empty? #|| obj.strip.empty?
30
+ end
31
+
32
+ # safely pick an index with collection
33
+ def sample_index (len)
34
+ # ... excludes the top of the range
35
+ @@random.rand(0...len)
36
+ end
37
+
38
+ # check if string is a number
39
+ def is_number?(str)
40
+ true if Float(str) rescue false
41
+ end
42
+
43
+ # if name starts with base use base type otherwise primary
44
+ # works for generators and parsers
45
+ def get_type_by_name(name)
46
+ (blank?(name)?nil:(name.include?(BASE_INDICATOR))? BASE: PRIMARY)
47
+ end
48
+
49
+ def get_name_without_base(name)
50
+ (!blank?(name))?name.delete(BASE_INDICATOR):nil
51
+ end
52
+
53
+ # helper method to convert a string to nil if it's a number
54
+ def num_to_nil(string)
55
+ Integer(string || '')
56
+ return nil
57
+ rescue ArgumentError
58
+ return string
59
+ end
60
+
61
+ # helper method to safely handle max length when schema len adn requirements contradict.
62
+ # lesser wins
63
+ def safe_len(maxLen, reqLen)
64
+ #handle stings and garbage
65
+ maxLen = (maxLen||reqLen).to_i
66
+ [maxLen, reqLen].min
67
+ end
68
+
69
+ # check if string has special characters
70
+ def has_html_encoded_ch?(str)
71
+ (str =~ @@html_encoded_regex)?true:false
72
+ end
73
+ end
74
+
75
+
@@ -0,0 +1,331 @@
1
+ require_relative 'service/utils'
2
+ class StructureParser
3
+ include Utils
4
+
5
+ attr_accessor :encodedSegments, :idx
6
+ # attr_reader :regExOp, :regExRep
7
+
8
+ REGEX_OP =/(?=\[((?:[^\[\]]*|\[\g<1>\])*)\])/
9
+ PRNTHS_OP = '[]'
10
+ REGEX_REP =/(?=\{((?:[^{}]*|\{\g<1>\})*)\})/
11
+ PRNTHS_REP = '{}'
12
+
13
+ # @encodedSegments =[]
14
+ # idx = 0
15
+ def initialize
16
+ @encodedSegments = []
17
+ @idx = 0
18
+ end
19
+
20
+ # takes a message structure and converts it into array of processed segments, ready for building hl7
21
+ def process_segments(struct)
22
+ process_struct(struct)
23
+ handle_groups(@encodedSegments)
24
+ end
25
+
26
+ def process_struct(struct)
27
+ #process original segments and build encoded segmets
28
+ process_opt_groups(struct)
29
+ process_rep_groups(struct)
30
+
31
+ #check encoded segments to find and process segments which have subgroups
32
+ @encodedSegments.map!{|seg|
33
+ #has more subgroups
34
+ if(has_subgroups?(seg))
35
+ groupMarker = Marker.whatGroup?(seg)
36
+
37
+ #unwrap for recursive processing
38
+ process_struct(groupMarker.unwrap(seg))
39
+
40
+ # wrap group back to restore the original segment
41
+ groupMarker.mark(seg)
42
+ # (groupMarker)?groupMarker.mark(seg):seg
43
+
44
+ else
45
+ seg
46
+ end
47
+ }
48
+ end
49
+
50
+ # handle groups in the array of ecnoded segments
51
+ # groups and subgroups organized as Arrays with specific Markers
52
+ def handle_groups(segments)
53
+ #find groups and decode the group elements and put them in array
54
+ segments.map!{ |seg|
55
+ if(is_complex_group?(seg))
56
+
57
+ # Generate marker for the segment to preserve specifics of type of the group - opt. vs repeating.
58
+ if(!seg.kind_of? Array )
59
+ seg = Marker.gen(seg)
60
+ end
61
+
62
+ if(seg.kind_of? Array)# TODO: Refactor, check not needed?
63
+ seg.resolve(@encodedSegments)
64
+ else
65
+ is_number?(seg)? @encodedSegments[it.to_i] : seg
66
+ end
67
+ handle_groups(seg)
68
+ # seg = handle_groups(seg)
69
+ else
70
+ seg
71
+ end
72
+ }
73
+ return segments
74
+ end
75
+
76
+ # checks a segment for subgroups
77
+ def has_subgroups?(seg)
78
+ inner = remove_outer_parenthesis(seg)
79
+ # inner segment should have no groups identified by {} or []
80
+ inner =~ /[\[{]/
81
+ end
82
+
83
+ def remove_outer_parenthesis(seg)
84
+ regexOptOuter = /^\[~(.*?)~\]$/
85
+ regExRepOuter = /^{~(.*?)~}$/
86
+ # (seg.scan(REGEX_OP).size()>1 || seg.scan(REGEX_REP).size()>1)
87
+ # look for the outer parenthesis [] - opt
88
+ # innerSeg = seg.scan(/\[~{~(.*)~}~\]|\[~(.*)~\]|{~(.*)~}/)
89
+ # innerOpt= seg.scan(/^\[~(.*?)~\]/)
90
+ innerOpt= seg.scan(regexOptOuter)
91
+ innerOpt = (innerOpt.empty?) ? nil : innerOpt.flatten.first
92
+
93
+ # look for outer {} - rep
94
+ innerRep = (innerOpt) ? innerOpt.scan(regExRepOuter) : seg.scan(regExRepOuter)
95
+ innerRep = (innerRep.empty?) ? nil : innerRep.flatten.first
96
+
97
+
98
+ inner = innerRep || innerOpt || seg
99
+ end
100
+
101
+ # process groups with optional markers - []
102
+ def process_opt_groups(struct)
103
+ process(struct, REGEX_OP, PRNTHS_OP)
104
+ end
105
+
106
+ # process groups with repeating markers - {}
107
+ def process_rep_groups(struct)
108
+ process(struct, REGEX_REP, PRNTHS_REP)
109
+ end
110
+
111
+ #process group using regular expression and specific pharenthesis as markers
112
+ def process(structure, regEx, prnths)
113
+ groups = []
114
+
115
+ # brake up the structure into array of subgroups
116
+ # using recursive regEx
117
+ subGroups = structure.scan(regEx)
118
+
119
+ subGroups.each {|subGroup|
120
+
121
+ # m = parenthesis_wrap(a.first())
122
+ # group boundaries - parenthesis, stripped by regEx
123
+ # put the parenthesis back for processing
124
+ groupElement = Marker.mark(subGroup.first(), prnths)
125
+
126
+ # process an array of matches and substitute subgroups
127
+ if(groups.empty?)
128
+ replace(structure, groupElement)
129
+ else
130
+ if(groups.last().include?(groupElement))
131
+ replace(groups.last, groupElement)
132
+ if(!is_group?(groups.last, prnths)) #done resolving a group
133
+ groups.pop()
134
+ end
135
+ else
136
+ replace(structure, groupElement)
137
+ end
138
+ end
139
+
140
+ if (is_group?(groupElement, prnths))
141
+ groups << groupElement
142
+ end
143
+
144
+ # resolved group added to encoded segments
145
+ @encodedSegments << groupElement
146
+ @idx +=1
147
+ }
148
+ end
149
+
150
+ # check if there are inside elements of sub-groups defined by the same parenthesis
151
+ def is_group?(str, prnths)
152
+ # prnth_mtch = @prnths[0]
153
+ # prnth_mtch = prnths[0]
154
+ (str.scan(prnths[0]).size > 1)# outside paranthesis expected
155
+ end
156
+
157
+ def replace(str, m)
158
+ str.sub!(m, @idx.to_s)
159
+ end
160
+
161
+ # wrap a match in parantesis used to brake structure into sub structures
162
+ def parenthesis_wrap(m)
163
+ @prnths.clone.insert(1, m)
164
+ end
165
+
166
+ # check if encoded segment is a group
167
+ def is_complex_group?(encoded)
168
+
169
+ # most of arrays have already been resolved
170
+ # look inside if any of complex group left unresolved
171
+ # return false if(encoded.kind_of?(Array))
172
+ if(encoded.kind_of?(Array))
173
+ is_complex = false
174
+ encoded.each{|it|
175
+ is_complex = is_complex_group?(it) ||is_complex
176
+ }
177
+ return is_complex
178
+ end
179
+
180
+ # group has an index of encoded optional element
181
+ # isGroupWithEncodedElements = ((encoded =~ /\~\d+\~/) || is_number?(encoded)) ? true: false
182
+ isGroupWithEncodedElements = (encoded =~ /\~\d+\~/) ? true: false
183
+ return isGroupWithEncodedElements if(isGroupWithEncodedElements)
184
+
185
+ inner = remove_outer_parenthesis(encoded)
186
+ subGroups = inner.split('~')
187
+ (subGroups.size > 1)? true: false
188
+
189
+ # # group consists of all required elements {~MRG~PV1~}, so look ahead for that
190
+ # subGroups = encoded.split(/[~\{\[\}\]]/).delete_if{|it| blank?(it)}
191
+ # isGroupOfRequiredElements = (subGroups.size > 1)? true: false
192
+ #
193
+ # return (isGroupWithEncodedElements || isGroupOfRequiredElements), subGroups
194
+ end
195
+ end
196
+
197
+ class Group < Array
198
+ include Utils
199
+ def initialize(*several_variants)
200
+ if(several_variants!= nil && several_variants[0].instance_of?(String))
201
+ several_variants = several_variants[0].split('~').delete_if{|it| it.empty?}
202
+ end
203
+ super(several_variants)
204
+ end
205
+
206
+ def resolve(encodedSegments)
207
+ # p self
208
+ self.map!{|sub|
209
+ if(sub.kind_of?(Array))
210
+ sub.map!{|it|is_number?(it)? encodedSegments[it.to_i]: it}.flatten
211
+ else
212
+ is_number?(sub)? encodedSegments[sub.to_i]: sub
213
+ end
214
+ }.flatten
215
+ # p self
216
+ end
217
+
218
+ #unwrap outer parenthesis.
219
+ # this works vs. seg = seg[1...-1] TODO: Refactor?
220
+ def unwrap(seg)
221
+ seg[0] = ''
222
+ seg[-1] = ''
223
+ return seg
224
+ end
225
+ end
226
+
227
+ class OptionalGroup < Group
228
+
229
+ def mark(group, prnths=StructureParser::PRNTHS_OP)
230
+ if (group.kind_of?(String))
231
+ group = Marker.mark(group, prnths)
232
+ elsif(group.kind_of?(Array))
233
+ group = OptionalGroup.new(group)
234
+ end
235
+ end
236
+ end
237
+
238
+ class RepeatingGroup < Group
239
+ # include Marker
240
+ def mark(group, prnths=StructureParser::PRNTHS_REP)
241
+ if (group.kind_of?(String))
242
+ group = Marker.mark(group, prnths)
243
+ elsif(group.kind_of?(Array))
244
+ group = RepeatingGroup.new(group)
245
+ end
246
+ end
247
+ end
248
+
249
+ # class Marker
250
+ class Marker
251
+ # include Utils
252
+
253
+ @@opt = /\[~([^\[\]]*)~\]/
254
+ @@rpt= /\{~([^\[\]]*)~}/
255
+ @@match_regex = Regexp.union(@@opt, @@rpt)
256
+ OPT = 1
257
+ RPT = 2
258
+
259
+ # decided that segment has subgroups
260
+ def self.gen1(segment)
261
+ marker = nil
262
+
263
+ # 1 no match - just to cover bases
264
+ marker = whatGroup?(segment)
265
+ return nil if(!marker)# done if nothing to match
266
+
267
+ # if(mtch[Marker::OPT])# 2 optional
268
+ # marker = OptionalGroup.new(mtch[Marker::OPT])
269
+ # # # check for optional repeating
270
+ # elsif(mtch[Marker::RPT])# 3 repeating
271
+ # marker = RepeatingGroup.new(mtch[Marker::RPT])
272
+ # end
273
+
274
+ # 3 repeating
275
+
276
+ # 4 if optional check for optional-repeating
277
+
278
+ # if(mtch[Marker::OPT])
279
+ # marker = OptionalGroup.new(mtch[Marker::OPT])
280
+ # # # check for optional repeating
281
+ # if(repeatingSubMarker = Marker.gen(mtch[Marker::OPT]))
282
+ # marker= marker.clear.push(repeatingSubMarker)
283
+ # end
284
+ # elsif(mtch[Marker::RPT])
285
+ # marker = RepeatingGroup.new(mtch[Marker::RPT])
286
+ # end
287
+ return marker
288
+
289
+ end
290
+
291
+ def self.gen(segment)
292
+ marker = nil
293
+
294
+ mtch = segment.match(@@match_regex)
295
+ return nil if(!mtch)# done if nothing to match
296
+
297
+ # seg = (mtch[Marker:OPT])?mtch[Marker:OPT]:mtch[Marker:RPT]
298
+ if(mtch[Marker::OPT])
299
+ marker = OptionalGroup.new(mtch[Marker::OPT])
300
+ # # check for optional repeating
301
+ if(repeatingSubMarker = Marker.gen(mtch[Marker::OPT]))
302
+ marker= marker.clear.push(repeatingSubMarker)
303
+ end
304
+ elsif(mtch[Marker::RPT])
305
+ marker = RepeatingGroup.new(mtch[Marker::RPT])
306
+ end
307
+ return marker
308
+ end
309
+
310
+ # def self.match_for_complex_group(segment)
311
+ # mtch = segment.match(@@match_regex)
312
+ # end
313
+
314
+ def self.mark(group, prnths)
315
+ group = prnths.clone().insert(1,group)
316
+ end
317
+
318
+ def self.whatGroup?(segment)
319
+ group = nil
320
+ mtch = segment.match(@@match_regex)
321
+ return group if(!mtch)# done if nothing to match
322
+
323
+ if(mtch[Marker::OPT])
324
+ OptionalGroup.new()
325
+ elsif(mtch[Marker::RPT])
326
+ RepeatingGroup.new()
327
+ end
328
+
329
+ end
330
+
331
+ end
@@ -0,0 +1,38 @@
1
+ require 'yaml'
2
+
3
+ module Ez7gen
4
+
5
+ #VERSION = "0.5.2"
6
+ VERSION = "1.0.1" # transformation
7
+
8
+ # Move the Configurator into main module
9
+ class Configurator
10
+
11
+ # This works with some corks, will be needed for external location of schema files
12
+ def configure()
13
+
14
+ properties_file = File.expand_path('../resources/properties.yml', __FILE__)
15
+ yml = YAML.load_file properties_file
16
+ puts 'Before update schema location:' + ((yml['web.install.dir']) ? yml['web.install.dir'] : 'schema location not set')
17
+
18
+ #This will remove all comments
19
+ if(ARGV[0])
20
+ yml['web.install.dir'] = ARGV[0].gsub("\\", '/') # convert windows path to linux, ruby defaults to that
21
+ File.open(properties_file, 'w') { |f| YAML.dump(yml, f) }
22
+ end
23
+
24
+ # This will add multiple properties
25
+ # if(ARGV[0])
26
+ # file = File.open(propertiesFile, 'a')
27
+ # file.puts 'schema.dir.location: ' + ARGV[0]
28
+ # file.flush
29
+ # end
30
+
31
+
32
+ properties_file = File.expand_path('../resources/properties.yml', __FILE__)
33
+ yml = YAML.load_file properties_file
34
+ puts 'After update schema location:' + ((yml['web.install.dir']!=nil)?yml['web.install.dir']:'schema location not set')
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,1653 @@
1
+ Table 10
2
+ Physician ID
3
+ Code
4
+ Description
5
+ PH1Surg
6
+ Surgeon
7
+ PH2Med
8
+ General Medicine
9
+ PH3HNS
10
+ Home Nursing Service
11
+ PH4
12
+ Psychiatric Contract
13
+ PH5
14
+ Psychiatric
15
+
16
+
17
+ Table 18
18
+ Patient Type
19
+ Code
20
+ Description
21
+ 00
22
+ Surgical
23
+ 10
24
+ Medical
25
+ 60
26
+ Home Nursing Service
27
+ 85
28
+ Psychiatric Contract
29
+ 86
30
+ Psychiatric
31
+ 95
32
+ Neurological Contract
33
+ 96
34
+ Neurological
35
+
36
+
37
+ Table 19
38
+ Anesthesia code
39
+ Code
40
+ Description
41
+ 1
42
+ Anesthesia 1
43
+ 2
44
+ Anesthesia 2
45
+ 3
46
+ Anesthesia 3
47
+ 4
48
+ Anesthesia 4
49
+ 5
50
+ Anesthesia 5
51
+  
52
+  
53
+ Table 21
54
+ Bad debt agency code
55
+ Code
56
+ Description
57
+ 1
58
+ Bad debt agency 1
59
+ 2
60
+ Bad debt agency 2
61
+ 3
62
+ Bad debt agency 3
63
+ 4
64
+ Bad debt agency 4
65
+ 5
66
+ Bad debt agency 5
67
+  
68
+  
69
+ Table 22
70
+ Billing Status
71
+ Code
72
+ Description
73
+ 1
74
+ Billing Status 1
75
+ 2
76
+ Billing Status 2
77
+ 3
78
+ Billing Status 3
79
+ 4
80
+ Billing Status 4
81
+ 5
82
+ Billing Status 5
83
+  
84
+  
85
+ Table 24
86
+ Fee Schedule
87
+ Code
88
+ Description
89
+ 1
90
+ Charge exceeds maximum payable
91
+ 2
92
+ Math error, 3-Not entitled to treatment
93
+ 4
94
+ Other, 5-Previously Paid
95
+ 6
96
+ Exceeds monthly dollar limitation
97
+ 7
98
+ Physician’s signature missing
99
+ 8
100
+ Patient’s signature missing
101
+ 9
102
+ Medication not emergent
103
+ A
104
+ Pharmacist’s certification missing
105
+ B
106
+ Pharmacist’s signature missing
107
+ C
108
+ Required drug information missing
109
+ D
110
+ Item not on payable list
111
+ E
112
+ Veteran information missing
113
+ F
114
+ Personal items/Private Room
115
+ G
116
+ Vet refused transfer
117
+ H
118
+ For recurring or refill medication
119
+ I
120
+ Payment made for Generic drug
121
+ J
122
+ Mill Bill Authority
123
+  
124
+  
125
+ Table 32
126
+ Charge/price indicator
127
+ Code
128
+ Description
129
+ 11
130
+ Charge 1
131
+ 21
132
+ Charge 2
133
+ 31
134
+ Charge 3
135
+ 41
136
+ Charge 4
137
+ 51
138
+ Charge 5
139
+  
140
+  
141
+ Table 42
142
+ Company plan code
143
+ Code
144
+ Description
145
+ 12
146
+ Plan 1
147
+ 22
148
+ Plan 2
149
+ 32
150
+ Plan 3
151
+ 42
152
+ Plan 4
153
+ 52
154
+ Plan 5
155
+  
156
+  
157
+ Table 45
158
+ Courtesy Code
159
+ Code
160
+ Description
161
+ 14
162
+ Courtesy 1
163
+ 24
164
+ Courtesy 2
165
+ 34
166
+ Courtesy 3
167
+ 44
168
+ Courtesy 4
169
+ 54
170
+ Courtesy 5
171
+  
172
+  
173
+ Table 46
174
+ Credit rating
175
+ Code
176
+ Description
177
+ B
178
+ Bad
179
+ F
180
+ Fair
181
+ G
182
+ Good
183
+ E
184
+ Excellent
185
+  
186
+  
187
+ Table 49
188
+ Department Code
189
+ Code
190
+ Description
191
+ A
192
+ Department A
193
+ B
194
+ Department B
195
+ C
196
+ Department C
197
+ D
198
+ Department D
199
+ 0
200
+ NET 30
201
+ 1
202
+ Subject to Interest
203
+  
204
+  
205
+ Table 50
206
+ Accident Code
207
+ Code
208
+ Description
209
+ V89.2XXA
210
+ Person injured in unspecified motor-vehicle accident, traffic, initial encounter
211
+ Y92.9
212
+ Unspecified place or not applicable
213
+ W74.XXXA
214
+ Unspecified cause of accidental drowning and submersion, initial encounter
215
+ W20.8XXA
216
+ Other cause of strike by thrown, projected or falling object, initial encounter
217
+  
218
+  
219
+ Table 51
220
+ Diagnosis Code
221
+ Code
222
+ Description
223
+ E23.0
224
+ Panhypopituitarism
225
+ E23.6
226
+ Other disorders of pituitary gland
227
+ E23.2
228
+ Diabetes insipidus
229
+ E23.3
230
+ Hypothalamic dysfunction, not elsewhere classified
231
+ E23.1
232
+ Drug-induced hypopituitarism
233
+ E32.8
234
+ Other diseases of thymus
235
+ E23.7
236
+ Disorder of pituitary gland, unspecified
237
+ E32.1
238
+ Abscess of thymus
239
+ E32.9
240
+ Disease of thymus, unspecified
241
+  
242
+  
243
+ Table 53
244
+ Diagnosis Code Method
245
+ Code
246
+ Description
247
+ I10
248
+ ICD 10 Cosing System
249
+
250
+
251
+ Table 55
252
+ Diagnosis Related Group
253
+ Code
254
+ Description
255
+ 001
256
+ LIVER TRANSPLANT
257
+ 003
258
+ BONE MARROW TRANSPLANT
259
+ 113
260
+ INFECTIONS OF UPPER RESPIRATORY TRACT
261
+ 160
262
+ MAJOR CARDIOTHORACIC REPAIR OF HEART ANOMALY
263
+ 199
264
+ HYPERTENSION
265
+ 203
266
+ CHEST PAIN
267
+ 247
268
+ INTESTINAL OBSTRUCTION
269
+ 283
270
+ OTHER DISORDERS OF THE LIVER
271
+ 346
272
+ CONNECTIVE TISSUE DISORDERS
273
+ 381
274
+ MAJOR SKIN DISORDERS
275
+ 424
276
+ OTHER ENDOCRINE DISORDERS
277
+  
278
+  
279
+ Table 56
280
+ DRG grouper review code
281
+ Code
282
+ Description
283
+ 10
284
+ Review 1
285
+ 20
286
+ Review 2
287
+ 30
288
+ Review 3
289
+ 40
290
+ Review 4
291
+ 50
292
+ Review 5
293
+  
294
+  
295
+ Table 59
296
+ Consent Code
297
+ Code
298
+ Description
299
+ 01
300
+ Informed consent
301
+ 02
302
+ Waiver of the consent requirement
303
+ 03
304
+ Health care proxy
305
+  
306
+  
307
+ Table 64
308
+ Financial Class
309
+ Code
310
+ Description
311
+ FC1
312
+ Financial Class 1
313
+ FC2
314
+ Financial Class 2
315
+ FC3
316
+ Financial Class 3
317
+ FC4
318
+ Financial Class 4
319
+ FC5
320
+ Financial Class 5
321
+  
322
+  
323
+ Table 68
324
+ Guarantor Type
325
+ Code
326
+ Description
327
+ G1
328
+ Guarantor Type 1
329
+ G2
330
+ Guarantor Type 2
331
+ G3
332
+ Guarantor Type 3
333
+ G4
334
+ Guarantor Type 4
335
+ G5
336
+ Guarantor Type 5
337
+  
338
+  
339
+ Table 72
340
+ Insurance Plan ID
341
+ Code
342
+ Description
343
+ 1234 5678A
344
+ Insurance Plan A
345
+ 2345 6789B
346
+ Insurance Plan B
347
+ 3456 7890C
348
+ Insurance Plan C
349
+ 4567 8901D
350
+ Insurance Plan D
351
+  
352
+  
353
+ Table 73
354
+ Interest rate code
355
+ Code
356
+ Description
357
+ 31
358
+ Interest rate code 1
359
+ 32
360
+ Interest rate code 2
361
+ 33
362
+ Interest rate code 3
363
+ 34
364
+ Interest rate code 4
365
+ 35
366
+ Interest rate code 5
367
+  
368
+  
369
+ Table 84
370
+ Performed by
371
+ Code
372
+ Description
373
+ A
374
+ Group A
375
+ B
376
+ Group B
377
+ C
378
+ Group C
379
+ D
380
+ Group D
381
+ E
382
+ Group E
383
+  
384
+  
385
+ Table 86
386
+ Plan ID
387
+ Code
388
+ Description
389
+ 234
390
+ Plan 1
391
+ 345
392
+ Plan 2
393
+ 456
394
+ Plan 3
395
+ 567
396
+ Plan 4
397
+ 678
398
+ Plan 5
399
+  
400
+  
401
+ Table 87
402
+ Pre-admit test indicator
403
+ Code
404
+ Description
405
+ Y
406
+ Yes
407
+ N
408
+ No
409
+  
410
+  
411
+ Table 88
412
+ Procedure Code
413
+ Code
414
+ Description
415
+ 00W000Z
416
+ Revision of Drainage Device in Brain, Open Approach
417
+ 02110Z3
418
+ Bypass Coronary Artery, Two Sites from Coronary Artery, Open Approach
419
+ 05500ZZ
420
+ Destruction of Azygos Vein, Open Approach
421
+ 4A0004Z
422
+ Measurement of Central Nervous Electrical Activity, Open Approach
423
+ 4A0204Z
424
+ Measurement of Cardiac Electrical Activity, Open Approach
425
+ 4A060BZ
426
+ Measurement of Lymphatic Pressure, Open Approach
427
+ 5A02110
428
+ Assistance with Cardiac Output using Balloon Pump, Intermittent
429
+ 6A150ZZ
430
+ Decompression, Circulatory, Single
431
+ 6A750Z4
432
+ Ultrasound Therapy of Head and Neck Vessels, Single
433
+ 6A800ZZ
434
+ Ultraviolet Light Therapy of Skin, Single
435
+  
436
+  
437
+ Table 89
438
+ Procedure Coding Method
439
+ Code
440
+ Description
441
+ I10
442
+ ICD 10
443
+ Table 99
444
+ VIP indicator
445
+ Code
446
+ Description
447
+ Y
448
+ VIP
449
+ N
450
+ Non VIP
451
+  
452
+  
453
+ Table 110
454
+ Transfer to bad debt indicator
455
+ Code
456
+ Description
457
+ Y
458
+ Yes, transfer to bad debt
459
+ N
460
+ No, do not transfer to bad debt
461
+  
462
+  
463
+ Table 111
464
+ Delete account code
465
+ Code
466
+ Description
467
+ 1
468
+ Code 1
469
+ 2
470
+ Code 2
471
+ 3
472
+ Code 3
473
+ 4
474
+ Code 4
475
+ 5
476
+ Code 5
477
+
478
+
479
+ Table 113
480
+ Discharged to Location
481
+ Code
482
+ Description
483
+ 1
484
+ Location 1
485
+ 2
486
+ Location 2
487
+ 3
488
+ Location 3
489
+ 4
490
+ Location 4
491
+ 5
492
+ Location 5
493
+  
494
+  
495
+ Table 114
496
+ Diet type
497
+ Code
498
+ Description
499
+ 100
500
+ Tube feeding
501
+ 110
502
+ Clear liquid diet
503
+ 120
504
+ Full liquid diet
505
+ 200
506
+ Diabetic or calorie controlled diet
507
+ 300
508
+ No Added Salt diet
509
+ 400
510
+ High fiber diet
511
+  
512
+  
513
+ Table 115
514
+ Servicing facility
515
+ Code
516
+ Description
517
+ 327
518
+ LOUISVILLE-RO
519
+ 358
520
+ MANILA-RO
521
+ 402
522
+ TOGUS VAMROC
523
+ 405
524
+ WHITE RIVER JCT VAMROC
525
+ 436
526
+ MONTANA HCS
527
+ 437
528
+ FARGO VAMROC
529
+ 438
530
+ SIOUX FALLS VAMROC
531
+ 452
532
+ WICHITA-RO
533
+ 442
534
+ CHEYENNE VAMROC
535
+  
536
+  
537
+ Table 117
538
+ Account status
539
+ Code
540
+ Description
541
+ 12
542
+ Account status 1
543
+ 23
544
+ Account status 2
545
+ 34
546
+ Account status 3
547
+ 45
548
+ Account status 4
549
+ 56
550
+ Account status 5
551
+
552
+
553
+ Table 118
554
+ Major Diagnoctis Category
555
+ Code
556
+ Description
557
+ MDC 01
558
+ Diseases & Disorders of the Nervous System
559
+ MDC 03
560
+ Diseases & Disorders of the Ear, Nose, Mouth & Throat
561
+ MDC 05
562
+ Diseases & Disorders of the Circulatory System
563
+ MDC 10
564
+ Endocrine, Nutritional & Metabolic Diseases & Disorders
565
+ MDC 16
566
+ Diseases & Disorders of Blood, Blood Forming Organs, Immunologic Disorders
567
+  
568
+  
569
+ Table 129
570
+ Accommodation code
571
+ Code
572
+ Description
573
+ 1
574
+ ALLERGY
575
+ 10
576
+ NEUROLOGY
577
+ 2
578
+ CARDIOLOGY
579
+ 20
580
+ REHABILITATION MEDICINE
581
+ 24
582
+ MEDICAL OBSERVATION
583
+ 25
584
+ PSYCH RESID REHAB TRMT PROG
585
+ 40
586
+ INTERMEDIATE MEDICINE
587
+ 50
588
+ GENERAL SURGERY
589
+  
590
+  
591
+ Table 132
592
+ Transaction code
593
+ Code
594
+ Description
595
+ C
596
+ First and final payment
597
+ F
598
+ Full and final payment
599
+ P
600
+ Partial payment
601
+ R
602
+ Reimbursement
603
+  
604
+  
605
+ Table 139
606
+ Employer information data
607
+ Code
608
+ Description
609
+ 1
610
+ Employer 1
611
+ 3
612
+ Employer 2
613
+ 5
614
+ Employer 3
615
+ 7
616
+ Employer 4
617
+ 9
618
+ Employer 5
619
+  
620
+  
621
+ Table 143
622
+ Non-covered insurance code
623
+ Code
624
+ Description
625
+ 99201
626
+ Code 1
627
+ 99202
628
+ Code 2
629
+ 99203
630
+ Code 3
631
+ 99204
632
+ Code 4
633
+ 99205
634
+ Code 5
635
+  
636
+  
637
+ Table 151
638
+ Second opinion status
639
+ Code
640
+ Description
641
+ P
642
+ Second opinion requested by patient
643
+ M
644
+ Second opinion requested by doctor
645
+ S
646
+ Second opinion consultation scheduled
647
+  
648
+  
649
+ Table 152
650
+ Second opinion documentation received
651
+ Code
652
+ Description
653
+ Y
654
+ Documentation received
655
+ N
656
+ Documentation not received
657
+  
658
+  
659
+ Table 171
660
+ Citizenship
661
+ Code
662
+ Description
663
+ USA
664
+ United States
665
+  
666
+  
667
+ Table 172
668
+ Veteran military status
669
+ Code
670
+ Description
671
+ Y
672
+ Veteran
673
+ N
674
+ Non Veteran
675
+  
676
+  
677
+ Table 182
678
+ Staff Type
679
+ Code
680
+ Description
681
+ IT
682
+ Information Technology
683
+ NP
684
+ New Person
685
+ P
686
+ Practitioner
687
+ PE
688
+ Paid Employee
689
+
690
+
691
+ Table 184
692
+ Department
693
+ Code
694
+ Description
695
+ IT
696
+ Information Technology
697
+ MN
698
+ Management
699
+ FI
700
+ Finance
701
+ OP
702
+ Operations
703
+
704
+
705
+ Table 186
706
+ Practitioner Category
707
+ Code
708
+ Description
709
+ C
710
+ Clerk
711
+ R
712
+ Resident
713
+ S
714
+ Staff
715
+ T
716
+ Technologist
717
+
718
+
719
+ Table 188
720
+ Operator ID
721
+ Code
722
+ Description
723
+ OP1
724
+ Operator A
725
+ OP2
726
+ Operator B
727
+ OP3
728
+ Operator C
729
+ OP4
730
+ Operator D
731
+ OP5
732
+ Operator E
733
+  
734
+  
735
+ Table 212
736
+ Nationality
737
+ Code
738
+ Description
739
+ DEU
740
+ Germany
741
+ ESP
742
+ Spain
743
+ FRA
744
+ France
745
+ GBR
746
+ United Kingdom
747
+ ITA
748
+ Italy
749
+ USA
750
+ United States
751
+  
752
+  
753
+ Table 218
754
+ Patient charge adjustment
755
+ Code
756
+ Description
757
+ 1
758
+ Deductible Amount
759
+ 2
760
+ Coinsurance Amount
761
+ 3
762
+ Co-payment Amount
763
+ 9
764
+ Diagnosis inconsistent with patient's age
765
+ 10
766
+ Diagnosis inconsistent with patient's gender
767
+ 11
768
+ Diagnosis inconsistent with procedure
769
+  
770
+  
771
+ Table 219
772
+ Recurring service
773
+ Code
774
+ Description
775
+ 1
776
+ Service 1
777
+ 2
778
+ Service 2
779
+ 3
780
+ Service 3
781
+ 4
782
+ Service 4
783
+ 5
784
+ Service 5
785
+  
786
+  
787
+ Table 222
788
+ Contact reason
789
+ Code
790
+ Description
791
+ 10
792
+ Contact reason 1
793
+ 20
794
+ Contact reason 2
795
+ 30
796
+ Contact reason 3
797
+ 40
798
+ Contact reason 4
799
+ 50
800
+ Contact reason 5
801
+  
802
+  
803
+ Table 233
804
+ Non-concur code/description
805
+ Code
806
+ Description
807
+ 725
808
+ Not medically necessary
809
+ 726
810
+ Experimental
811
+ 728
812
+ Out of network
813
+ 727
814
+ Policy cancelled for lack of payment
815
+ 721
816
+ Health care setting
817
+  
818
+  
819
+ Table 244
820
+ Single Use Device
821
+ Code
822
+ Description
823
+ 1
824
+ Catheter
825
+ 2
826
+ Syringe
827
+ 3
828
+ Bone Saw
829
+ 4
830
+ Drill
831
+ 5
832
+ Needle Set
833
+
834
+
835
+ Table 245
836
+ Product Problem
837
+ Code
838
+ Description
839
+ 1
840
+ Outer package removed
841
+ 2
842
+ Package opened
843
+ 3
844
+ Package damaged
845
+ 4
846
+ Device damaged
847
+
848
+
849
+ Table 246
850
+ Product Available for Inspection
851
+ Code
852
+ Description
853
+ 1
854
+ Yes, available for inspection
855
+ 0
856
+ No, not available for inspection
857
+
858
+
859
+ Table 249
860
+ Genetic Product
861
+ Code
862
+ Description
863
+ 6
864
+ Catheter
865
+ 7
866
+ Syringe
867
+ 8
868
+ Bone Saw
869
+ 9
870
+ Drill
871
+ 0
872
+ Needle Set
873
+
874
+
875
+ Table 264
876
+ Location Department
877
+ Code
878
+ Description
879
+ LD1
880
+ Location Dep 1
881
+ LD2
882
+ Location Dep 2
883
+ LD3
884
+ Location Dep 3
885
+ LD4
886
+ Location Dep 4
887
+ LD5
888
+ Location Dep 5
889
+  
890
+  
891
+ Table 285
892
+ Insurance Company ID Codes
893
+ Code
894
+ Description
895
+ 1111
896
+ Insurance Company 1
897
+ 2222
898
+ Insurance Company 2
899
+ 3333
900
+ Insurance Company 3
901
+ 4444
902
+ Insurance Company 4
903
+ 5555
904
+ Insurance Company 5
905
+  
906
+  
907
+ Table 293
908
+ Billing Category
909
+ Code
910
+ Description
911
+ G0001
912
+ Drawing Blood for Specimen
913
+ Q0081
914
+ Infusion Other Than Chemotherapy
915
+ Q0084
916
+ Chemotherapy by Infusion
917
+ G0239
918
+ Therapeutic Procedures
919
+ Q0136
920
+ Injection
921
+
922
+
923
+ Table 295
924
+ Handicap
925
+ Code
926
+ Description
927
+ Y
928
+ Yes
929
+ N
930
+ No
931
+  
932
+  
933
+ Table 296
934
+ Primary Language
935
+ Code
936
+ Description
937
+ EN
938
+ English
939
+ FR
940
+ French
941
+ ES
942
+ Spanish
943
+ DE
944
+ German
945
+ IT
946
+ Italian
947
+  
948
+  
949
+ Table 300
950
+ Namespace ID
951
+ Code
952
+ Description
953
+ 101
954
+ Namespace ID 1
955
+ 202
956
+ Namespace ID 2
957
+ 303
958
+ Namespace ID 3
959
+ 404
960
+ Namespace ID 4
961
+ 200
962
+ HCP to IFCAP dataflow
963
+ 500
964
+ IFCAP to HCP dataflow
965
+ PRCHCPR
966
+ PRC HCP RECEIVE
967
+ PRCHCPS
968
+ PRC HCP SEND
969
+  
970
+  
971
+ Table 302
972
+ Point of Care
973
+ Code
974
+ Description
975
+ PC1
976
+ Point of Care 1
977
+ PC2
978
+ Point of Care 2
979
+ PC3
980
+ Point of Care 3
981
+ PC4
982
+ Point of Care 4
983
+ PC5
984
+ Point of Care 5
985
+  
986
+  
987
+ Table 303
988
+ Room
989
+ Code
990
+ Description
991
+ RA
992
+ Room A
993
+ RB
994
+ Room B
995
+ RC
996
+ Room C
997
+ RD
998
+ Room D
999
+ RE
1000
+ Room E
1001
+  
1002
+  
1003
+ Table 304
1004
+ Bed
1005
+ Code
1006
+ Description
1007
+ B1
1008
+ Bed 1
1009
+ B2
1010
+ Bed 2
1011
+ B3
1012
+ Bed 3
1013
+ B4
1014
+ Bed 4
1015
+ B5
1016
+ Bed 5
1017
+  
1018
+  
1019
+ Table 306
1020
+ Location Status
1021
+ Code
1022
+ Description
1023
+ O
1024
+ Open
1025
+ C
1026
+ Closed
1027
+ A
1028
+ Available
1029
+ N
1030
+ Non Available
1031
+
1032
+
1033
+ Table 307
1034
+ Building
1035
+ Code
1036
+ Description
1037
+ BLD1
1038
+ Building 1
1039
+ BLD2
1040
+ Building 2
1041
+ BLD3
1042
+ Building 3
1043
+ BLD4
1044
+ Building 4
1045
+ BLD5
1046
+ Building 5
1047
+  
1048
+  
1049
+ Table 308
1050
+ Floor
1051
+ Code
1052
+ Description
1053
+ F1
1054
+ Floor 1
1055
+ F2
1056
+ Floor 2
1057
+ F3
1058
+ Floor 3
1059
+ F4
1060
+ Floor 4
1061
+ F5
1062
+ Floor 5
1063
+
1064
+
1065
+ Table 312
1066
+ Policy Scope
1067
+ Code
1068
+ Description
1069
+ 11
1070
+ Policy Scope 1
1071
+ 12
1072
+ Policy Scope 2
1073
+ 13
1074
+ Policy Scope 3
1075
+ 14
1076
+ Policy Scope 4
1077
+ 15
1078
+ Policy Scope 5
1079
+  
1080
+  
1081
+ Table 313
1082
+ Policy Source
1083
+ Code
1084
+ Description
1085
+ 21
1086
+ Policy Source 1
1087
+ 22
1088
+ Policy Source 2
1089
+ 23
1090
+ Policy Source 3
1091
+ 24
1092
+ Policy Source 4
1093
+ 25
1094
+ Policy Source 5
1095
+  
1096
+  
1097
+ Table 319
1098
+ Department Cost Center
1099
+ Code
1100
+ Description
1101
+ 1
1102
+ Cost Center 1
1103
+ 2
1104
+ Cost Center 2
1105
+ 3
1106
+ Cost Center 3
1107
+ 4
1108
+ Cost Center 4
1109
+ 5
1110
+ Cost Center 5
1111
+  
1112
+  
1113
+ Table 320
1114
+ Item Natural Account Code
1115
+ Code
1116
+ Description
1117
+ 1010
1118
+ Account Code 1
1119
+ 2020
1120
+ Account Code 2
1121
+ 3030
1122
+ Account Code 3
1123
+ 4040
1124
+ Account Code 4
1125
+ 5050
1126
+ Account Code 5
1127
+  
1128
+  
1129
+ Table 327
1130
+ Job code/class
1131
+ Code
1132
+ Description
1133
+ 13-2011
1134
+ Accountant
1135
+ 15-1132
1136
+ Application Developer
1137
+ 23-1011
1138
+ Attorney
1139
+ 29-1020
1140
+ Dentist
1141
+ 29-1170
1142
+ Nurse Practitioner
1143
+ 29-2041
1144
+ Paramedic
1145
+ 29-1050
1146
+ Pharmacist
1147
+ 29-1060
1148
+ Physician
1149
+  
1150
+  
1151
+ Table 333
1152
+ Driver's license issuing authority
1153
+ Code
1154
+ Description
1155
+ AK
1156
+ Alaska
1157
+ CO
1158
+ Colorado
1159
+ FL
1160
+ Florida
1161
+ KS
1162
+ Kansas
1163
+ MD
1164
+ Maryland
1165
+  
1166
+  
1167
+ Table 340
1168
+ Procedure Code modifier
1169
+ Code
1170
+ Description
1171
+ 57
1172
+ Decision for surgery
1173
+ 23
1174
+ Unusual Anesthesia
1175
+ 50
1176
+ Bilateral Procedure
1177
+ 33
1178
+ Preventive Service
1179
+ 51
1180
+ Multiple Procedures
1181
+ 52
1182
+ Reduced Services
1183
+  
1184
+  
1185
+ Table 341
1186
+ Guarantor credit rating code
1187
+ Code
1188
+ Description
1189
+ B
1190
+ Bad
1191
+ F
1192
+ Fair
1193
+ G
1194
+ Good
1195
+ E
1196
+ Excellent
1197
+  
1198
+  
1199
+ Table 342
1200
+ Military recipient
1201
+ Code
1202
+ Description
1203
+ Y
1204
+ Dependent
1205
+ N
1206
+ Non Dependent
1207
+
1208
+
1209
+ Table 343
1210
+ Military handicapped program code
1211
+ Code
1212
+ Description
1213
+ 7118
1214
+ Angioneurotic edema
1215
+ 7005
1216
+ Arteriosclerotic heart disease
1217
+ 9433
1218
+ Persistent depressive disorder
1219
+ 6205
1220
+ Endolymphatic hydrops
1221
+ 5003
1222
+ Hypertrophic arthritis
1223
+
1224
+
1225
+ Table 345
1226
+ Appeal reason
1227
+ Code
1228
+ Description
1229
+ 51
1230
+ Medically necessary
1231
+ 52
1232
+ Procedure is covered
1233
+ 53
1234
+ Unreasonably long wait for in-network provider
1235
+ 54
1236
+ In-home care
1237
+ 55
1238
+ Nonpayment error
1239
+
1240
+
1241
+ Table 346
1242
+ Certification agency
1243
+ Code
1244
+ Description
1245
+ ADPH
1246
+ Alabama Department of Public Health
1247
+ AZDHS
1248
+ Arizona Department of Health Services
1249
+ CDPH
1250
+ California Department of Public Health
1251
+ AHCA
1252
+ Agency for Health Care Administration
1253
+ DADS
1254
+ TX Dept of Aging & Disability Services
1255
+
1256
+
1257
+ Table 358
1258
+ Practitioner Group
1259
+ Code
1260
+ Description
1261
+ 1
1262
+ SW Chief
1263
+ 10
1264
+ Volunteer
1265
+ 11
1266
+ WOC
1267
+ 2
1268
+ Asst. Chief
1269
+ 3
1270
+ Supervisor
1271
+ 4
1272
+ SW Coordinator
1273
+ 5
1274
+ Social Worker
1275
+ 6
1276
+ SW Associate
1277
+ 7
1278
+ Secretary
1279
+ 8
1280
+ SW Clerk
1281
+ 9
1282
+ Student
1283
+
1284
+
1285
+ Table 361
1286
+ Sending/receiving application
1287
+ Code
1288
+ Description
1289
+ 101
1290
+ Application A
1291
+ 202
1292
+ Application B
1293
+ 303
1294
+ Application C
1295
+ 404
1296
+ Application D
1297
+ PRCHCPR
1298
+ PRC HCP RECEIVE
1299
+ PRCHCPS
1300
+ PRC HCP SEND
1301
+  
1302
+  
1303
+ Table 362
1304
+ Sending/receiving facility
1305
+ Code
1306
+ Description
1307
+ 505
1308
+ Facility A
1309
+ 606
1310
+ Facility B
1311
+ 707
1312
+ Facility C
1313
+ 808
1314
+ Facility D
1315
+ 909
1316
+ Facility E
1317
+ 200
1318
+ HCP to IFCAP dataflow
1319
+ 500
1320
+ IFCAP to HCP dataflow
1321
+  
1322
+  
1323
+ Table 378
1324
+ Carrier Type
1325
+ Code
1326
+ Description
1327
+ R01
1328
+ One position carrier
1329
+ R02
1330
+ Two position carrier
1331
+ R03
1332
+ Three position carrier
1333
+ R04
1334
+ Four position carrier
1335
+ R05
1336
+ Five position carrier
1337
+  
1338
+  
1339
+ Table 379
1340
+ Tray Type
1341
+ Code
1342
+ Description
1343
+ T01
1344
+ One position tray
1345
+ T02
1346
+ Two position tray
1347
+ T03
1348
+ Three position tray
1349
+ T04
1350
+ Four position tray
1351
+ T05
1352
+ Five position tray
1353
+  
1354
+  
1355
+ Table 380
1356
+ Separator Type
1357
+ Code
1358
+ Description
1359
+ NO
1360
+ No Separator
1361
+ GEL
1362
+ Gel Separator
1363
+ M01
1364
+ Manufacturer Specific Separator
1365
+  
1366
+  
1367
+ Table 381
1368
+ Cap Type
1369
+ Code
1370
+ Description
1371
+ SCR
1372
+ Screw Cap
1373
+ PSH
1374
+ Push Cap
1375
+ FOIL
1376
+ Foil
1377
+  
1378
+  
1379
+ Table 382
1380
+ Drug Interference
1381
+ Code
1382
+ Description
1383
+ PHCL
1384
+ Pharmacological
1385
+ CHML
1386
+ Chemical
1387
+  
1388
+  
1389
+ Table 385
1390
+ Manufacturer Identifier
1391
+ Code
1392
+ Description
1393
+ 851
1394
+ Manufacturer A
1395
+ 852
1396
+ Manufacturer B
1397
+ 853
1398
+ Manufacturer C
1399
+ 854
1400
+ Manufacturer D
1401
+ 855
1402
+ Manufacturer E
1403
+
1404
+
1405
+ Table 386
1406
+ Supplier Identifier
1407
+ Code
1408
+ Description
1409
+ 951
1410
+ Supplier A
1411
+ 952
1412
+ Supplier B
1413
+ 953
1414
+ Supplier C
1415
+ 954
1416
+ Supplier D
1417
+ 955
1418
+ Supplier E
1419
+
1420
+
1421
+ Table 405
1422
+ Organization Unit
1423
+ Code
1424
+ Description
1425
+ A
1426
+ Unit A
1427
+ B
1428
+ Unit B
1429
+ C
1430
+ Unit C
1431
+ D
1432
+ Unit D
1433
+ E
1434
+ Unit E
1435
+
1436
+
1437
+ Table 412
1438
+ Category Identifier
1439
+ Code
1440
+ Description
1441
+ 10
1442
+ Category 1
1443
+ 20
1444
+ Category 2
1445
+ 30
1446
+ Category 3
1447
+ 40
1448
+ Category 4
1449
+ 50
1450
+ Category 5
1451
+
1452
+
1453
+ Table 413
1454
+ Consent Identifier
1455
+ Code
1456
+ Description
1457
+ 1
1458
+ Yes
1459
+ 0
1460
+ No
1461
+
1462
+
1463
+ Table 449
1464
+ Conformance Statements
1465
+ Code
1466
+ Description
1467
+ 10
1468
+ Conformance statement 1
1469
+ 20
1470
+ Conformance statement 2
1471
+ 30
1472
+ Conformance statement 3
1473
+ 40
1474
+ Conformance statement 4
1475
+ 50
1476
+ Conformance statement 5
1477
+
1478
+
1479
+ Table 461
1480
+ License Number
1481
+ Code
1482
+ Description
1483
+ LN1
1484
+ License 1
1485
+ LN2
1486
+ License 2
1487
+ LN3
1488
+ License 3
1489
+ LN4
1490
+ License 4
1491
+ LN5
1492
+ License 5
1493
+
1494
+
1495
+ Table 462
1496
+ Location Cost Center
1497
+ Code
1498
+ Description
1499
+ LCC1
1500
+ Cost Center 1
1501
+ LCC2
1502
+ Cost Center 2
1503
+ LCC3
1504
+ Cost Center 3
1505
+ LCC4
1506
+ Cost Center 4
1507
+ LCC5
1508
+ Cost Center 5
1509
+  
1510
+  
1511
+ Table 463
1512
+ Inventory Number
1513
+ Code
1514
+ Description
1515
+ INV1
1516
+ Item 1
1517
+ INV2
1518
+ Item 2
1519
+ INV3
1520
+ Item 3
1521
+ INV4
1522
+ Item 4
1523
+ INV5
1524
+ Item 5
1525
+
1526
+
1527
+ Table 464
1528
+ Facility ID
1529
+ Code
1530
+ Description
1531
+ FAC1
1532
+ Facility 1
1533
+ FAC2
1534
+ Facility 2
1535
+ FAC3
1536
+ Facility 3
1537
+ FAC4
1538
+ Facility 4
1539
+ FAC5
1540
+ Facility 5
1541
+
1542
+
1543
+ Table 471
1544
+ Query Name
1545
+ Code
1546
+ Description
1547
+ ZA
1548
+ Query A
1549
+ ZB
1550
+ Query B
1551
+ ZC
1552
+ Query C
1553
+ ZD
1554
+ Query D
1555
+ K11
1556
+ Allergies
1557
+
1558
+
1559
+ Table 476
1560
+ Medically Necessary Duplicate Procedure Reason
1561
+ Code
1562
+ Description
1563
+ 1
1564
+ Reason 1
1565
+ 2
1566
+ Reason 2
1567
+ 3
1568
+ Reason 3
1569
+ 4
1570
+ Reason 4
1571
+ 5
1572
+ Reason 5
1573
+
1574
+
1575
+ Table 479
1576
+ Pharmaceutical Substances
1577
+ Code
1578
+ Description
1579
+ AS
1580
+ AMIKACIN SULFATE
1581
+ BZ
1582
+ BACITRACIN ZINC
1583
+ CP
1584
+ CAPTOPRIL
1585
+ DH
1586
+ DOXORUBICIN HYDROCHLORIDE
1587
+ FD
1588
+ FLUPHENAZINE DECANOATE
1589
+
1590
+
1591
+ Table 521
1592
+ Override Code
1593
+ Code
1594
+ Description
1595
+ 1
1596
+ Code 1
1597
+ 2
1598
+ Code 2
1599
+ 3
1600
+ Code 3
1601
+ 4
1602
+ Code 4
1603
+ 5
1604
+ Code 5
1605
+
1606
+
1607
+ Table 525
1608
+ Privilege
1609
+ Code
1610
+ Description
1611
+ TF
1612
+ Treatment Facility Privileges
1613
+ SM
1614
+ Stuff Membership Privileges
1615
+ IN
1616
+ Institutional Privileges
1617
+
1618
+
1619
+ Table 526
1620
+ Privilege Class
1621
+ Code
1622
+ Description
1623
+ PHY
1624
+ Physician
1625
+ PSY
1626
+ Psychiatrist
1627
+ NP
1628
+ Nurse Practitioner
1629
+
1630
+
1631
+ Table 531
1632
+ Institution
1633
+ Code
1634
+ Description
1635
+ 1
1636
+ Hospital
1637
+ 2
1638
+ Clinic
1639
+ 3
1640
+ Medical Research
1641
+
1642
+
1643
+ Table 549
1644
+ NDC Codes
1645
+ Code
1646
+ Description
1647
+ 3541812312
1648
+ Loperamide Hydrochloride
1649
+ 0924012301
1650
+ Acetaminophen
1651
+ 2500012303
1652
+ Ibuprofen
1653
+