ez7gen 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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,143 @@
1
+ require 'test/unit'
2
+ require 'ox'
3
+
4
+ class Sample
5
+ attr_accessor :a, :b, :c
6
+
7
+ def initialize(a, b, c)
8
+ @a = a
9
+ @b = b
10
+ @c = c
11
+ end
12
+ end
13
+
14
+ class AddedShemaTest < Test::Unit::TestCase
15
+
16
+ # Called after every test method runs. Can be used to tear
17
+ # down fixture information.
18
+
19
+ def teardown
20
+ # Do nothing
21
+ end
22
+
23
+ def test_xml
24
+
25
+ # Create Object
26
+ obj = Sample.new(1, "bee", ['x', :y, 7.0])
27
+ # Now dump the Object to an XML String.
28
+ xml = Ox.dump(obj,nil)
29
+ puts xml
30
+
31
+ # Convert the object back into a Sample Object.
32
+ obj2 = Ox.parse_obj(xml)
33
+ # Called before every test method runs. Can be used
34
+ # to set up fixture information.
35
+ end
36
+
37
+ def test_build_added_tables_xml
38
+ # file = File.expand_path('codes.txt', __FILE__).to_s
39
+ arr = []
40
+
41
+ File.readlines('Additional Tables with values_v1.1.txt').map do |line|
42
+ # File.readlines('codes1.txt').map do |line|
43
+ arr<<line.chomp
44
+ # puts line
45
+ end
46
+ z = []
47
+ arr.each_with_index{|val, idx| if(idx % 2 == 0)then z<< [arr[idx], arr[idx+1] ] end}
48
+ p z
49
+ x =[]
50
+ row = []
51
+ idx = 0
52
+ z.each{|pair|
53
+ # if(pair[0].strip.empty?)
54
+ if(pair[0].gsub(/[[:space:]]/,'').empty?)
55
+ x << row
56
+ idx= idx + 1
57
+ row = []
58
+ else
59
+ row << pair
60
+ end
61
+ }
62
+ p x
63
+
64
+ root = Ox::Element.new('Export')
65
+ doc = Ox::Element.new('Document')
66
+ doc[:name]='Codes for coded tables with missing entries'
67
+ root << doc
68
+ cat = Ox::Element.new('Category')
69
+ cat[:name] = '2.4'
70
+ doc << cat
71
+
72
+ x.each{|it|
73
+
74
+ codeTbl = Ox::Element.new('CodeTable')
75
+
76
+ codeTbl[:name] = it.first[0].delete('Table ')
77
+ # drop 2 first elements: table name and fields [Code, Description]
78
+ it.drop(2).each_with_index { |pair,i |
79
+ enum = Ox::Element.new('Enumerate')
80
+ enum[:position] = i + 1
81
+ enum[:value] = pair.first
82
+ enum[:description] = pair.last
83
+ codeTbl << enum
84
+ }
85
+ cat << codeTbl
86
+ }
87
+
88
+
89
+ xml = Ox.dump(root, nil)
90
+ puts xml
91
+
92
+
93
+ # doc << top
94
+ #
95
+ # ce = [['E','Employer'], ['G','Guarantor']]
96
+ # ce.each_with_index{|value, index|
97
+ # mid = Ox::Element.new('Enumarate')
98
+ # mid[:position] = index
99
+ # mid[:value] = value[0]
100
+ # mid[:description] = value[1]
101
+ # top << mid
102
+ # }
103
+
104
+
105
+ # doc = Ox::Document.new(:version => '1.0')
106
+ #
107
+ # arr = [00,'Surgical']
108
+ # arr<<[10, 'Medical']
109
+ # arr<<[60, 'Home Nursing Service']
110
+ # arr<<[85,'Psychiatric Contract']
111
+ # arr<<[86, 'Psychiatric']
112
+ # arr<<[95, 'Neurological Contract']
113
+ # arr<<[96, 'Neurological']
114
+ #
115
+ #
116
+ #
117
+ # top = Ox::Element.new('CodeTable')
118
+ # top[:name] = '137'
119
+ # doc << top
120
+ #
121
+ # ce = [['E','Employer'], ['G','Guarantor']]
122
+ # ce.each_with_index{|value, index|
123
+ # mid = Ox::Element.new('Enumarate')
124
+ # mid[:position] = index
125
+ # mid[:value] = value[0]
126
+ # mid[:description] = value[1]
127
+ # top << mid
128
+ # }
129
+ #
130
+ # # bot = Ox::Element.new('bottom')
131
+ # # bot[:name] = 'third'
132
+ # # mid << bot
133
+ #
134
+ # xml = Ox.dump(doc, nil)
135
+ # puts xml
136
+
137
+ end
138
+
139
+ def setup
140
+ # Do nothing
141
+ end
142
+
143
+ end
data/test/app-tmp.rb ADDED
@@ -0,0 +1,225 @@
1
+
2
+ # require 'sinatra'
3
+ require 'sinatra/base'
4
+
5
+ require 'json'
6
+ require 'rest_client'
7
+ #require 'diskcached'
8
+ require 'ez7gen'
9
+ # require_relative '../lib/ez7gen/message_factory' # local testing
10
+ # require_relative '../lib/ez7gen/profile_parser' # local testing
11
+ # require_relative '../lib/ez7gen/msg_error_handler' # local testing
12
+
13
+ class MyApp < Sinatra::Application
14
+
15
+ # configure do
16
+ # set :show_exceptions, :after_handler
17
+ # disable :raise_errors
18
+ # end
19
+ @@URLS={'2.4'=>'localhost:9980/','VAZ2.4'=>'localhost:9981/'}
20
+ # admisson messages match pattern
21
+ @@FILTERS = [ProfileParser::FILTER_ADM, ProfileParser::FILTER_FM, ProfileParser::FILTER_GEN, ProfileParser::FILTER_LAB, ProfileParser::FILTER_MSR, ProfileParser::FILTER_OBS, ProfileParser::FILTER_PH]
22
+
23
+ #configure do
24
+ # $diskcache = Diskcached.new(File.join(settings.root, 'cache'))
25
+ # $diskcache.flush # ensure caches are empty on startup
26
+ # cahe version store
27
+ # MyApp.class.cache_lookup('version_store')
28
+ # puts 'in configure'
29
+ #end
30
+
31
+ #
32
+ # before do
33
+ # @cache_key = cache_sha(request.path_info)
34
+ # end
35
+
36
+ get '/' do
37
+ # content_type :json
38
+ # redirect 'js/app.js'
39
+ redirect 'views/index.html'
40
+ end
41
+
42
+ get '/version/' do
43
+ content_type :json
44
+ { version: Ez7gen::VERSION}.to_json
45
+ end
46
+
47
+
48
+
49
+ get '/pulse' do
50
+ # vs = cache_lookup('version_store')
51
+ end
52
+
53
+ post '/generate/' do
54
+ begin
55
+ # no additional configuration needed for angularjs,
56
+ params = JSON.parse(request.env["rack.input"].read)
57
+ puts params
58
+
59
+ std = params['std']
60
+ event = params['event']['name']
61
+ version = params['version']['name']
62
+ puts "std: #{std}, event: #{event}, version: #{version}"
63
+ useExVal = params['useExVal']
64
+ useTemplate = params['useTemplate']
65
+
66
+ vs = ProfileParser.lookup_versions()
67
+ @resp = MessageFactory.new({std: std, version: version, event:event, version_store: vs, use_template: useTemplate}).generate(useExVal) #msg.replace('\r','\n' )
68
+
69
+ rescue => e
70
+ # puts 'inside rescue'
71
+ puts 'Error: processing generate/' << e.inspect
72
+ @resp ='Oops, somenthing went wrong...'
73
+ # raise e
74
+ # ensure
75
+ end
76
+ #send response
77
+ {message: @resp}.to_json
78
+
79
+ end
80
+
81
+ post '/validate/' do
82
+ begin
83
+ params = JSON.parse(request.env["rack.input"].read)
84
+ puts params
85
+ version = params['version']['code']
86
+ puts version
87
+ payload = params['hl7']['message']
88
+ puts payload
89
+ puts "------------ validate ---------------"
90
+ @url = @@URLS[version]
91
+ @resp = RestClient.post @url, payload.gsub!("\n","\r")
92
+ #@resp = @resp.gsub("\r\n", "\n").gsub("\r", "\n")
93
+ #puts @resp.gsub!("\X0D\\X0A", "\n")
94
+ puts @resp.gsub!("\\X0D\\\\X0A\\", "\r")
95
+ puts @resp.gsub!("\r+\r", "\r")
96
+ #@resp.gsub!("\r","\n")
97
+ puts ' len: ' + @resp.size().to_s
98
+ puts "------------ response ---------------"
99
+ r = @resp.chomp()
100
+ #r = @resp
101
+ puts r
102
+ puts 'len:' + r.size().to_s
103
+ puts "------------ response 1 ---------------"
104
+ #@errors = MsgErrorHandler.new().handle(r)
105
+ # segs = message
106
+
107
+ segs = r.split("\n")
108
+ puts "--------------------segments----------------"
109
+ segs.each {|it| puts it; puts "~~~~~~~~~~~~~"}
110
+ puts "--------------------segments----------------"
111
+
112
+ msg = HL7::Message.new(r)
113
+ # msg = HL7::Message.parse(message)
114
+ seg = msg[:ERR]
115
+ if(! msg[:ERR])
116
+ return nil
117
+ end
118
+
119
+ # puts msg[:ERR].error_location
120
+ # puts msg[:ERR].hl7_error_code
121
+ puts msg[:ERR].severity
122
+ puts msg[:ERR].application_error_code
123
+ # puts msg[:ERR].application_error_parameter
124
+ # puts msg[:ERR].diagnostic_information
125
+ errors = msg[:ERR].user_message
126
+ puts errors
127
+ puts "------------ user message ---------------"
128
+
129
+ # puts msg[:ERR].help_desk_contact_point
130
+ lines = r.split("ERROR <Ens>ErrGeneral:")
131
+ puts lines
132
+ puts "------------ lines ---------------"
133
+
134
+ @errors = r.split("ERROR <Ens>ErrGeneral:").reject {|e| e.empty?}
135
+ @errors.delete_at(0)
136
+
137
+
138
+
139
+ puts @errors
140
+ puts "------------ errors ---------------"
141
+
142
+ rescue => e
143
+ @resp = 'Error connecting to ' + @url
144
+ puts e
145
+ # raise e
146
+ end
147
+
148
+ # send response
149
+ {message: @resp.gsub("\r","\n"), errors: @errors}.to_json
150
+ end
151
+
152
+ # https://code.google.com/p/x2js/ as an alternative
153
+ get '/lookup/' do
154
+ versions_to_client = {}
155
+
156
+ begin
157
+ versions = ProfileParser.lookup_versions()
158
+ #puts cache_lookup('hW')
159
+
160
+ std_arr =[]
161
+ versions.each{ |version|
162
+ std_attrs={}
163
+ # standard
164
+ std_attrs[:std] = version[:std]
165
+ #versions
166
+ std_attrs[:versions] = version[:profiles].inject([]){|col,p| col << {name: p[:doc], code: p[:name], desc: (p[:std])? 'Base': p[:description]}}
167
+ #events
168
+ evn_attrs = version[:profiles].inject({}){|h,p|
169
+ h.merge({p[:name] => ProfileParser.new({std: version[:std], version: p[:doc], version_store: versions}).lookup_message_groups(@@FILTERS)})
170
+ }
171
+ std_attrs[:events] = evn_attrs
172
+ # add map with versions and events for each standard to the array
173
+ std_arr << std_attrs
174
+ }
175
+
176
+ versions_to_client = {standards: std_arr}
177
+ # pth = File.join(File.dirname(__FILE__), "v_items_mock.json")
178
+ # txt = File.read(pth)
179
+ # versions_to_client = JSON.parse(txt)
180
+ # versions_to_client.to_json
181
+
182
+ # p event_list
183
+ p 'in lookup'
184
+ rescue => e
185
+ puts e
186
+ end
187
+ versions_to_client.to_json
188
+ # items = {standards:[
189
+ # {std:'2.4',
190
+ # versions:[{'name'=> '2.4', 'code'=> '2.4', 'desc'=>'Base'},{'name' =>'VAZ 2.4', 'code'=> 'vaz2.4', 'desc'=>'2.4 schema with VA defined tables and Z segments'}],
191
+ # events: {'2.4' => event_list['2.4'], 'vaz2.4' => event_list['vaz2.4']}
192
+ # },
193
+ # {std:'2.5', versions:[], events:[]}
194
+ # ]}
195
+ # items.to_json
196
+
197
+ end
198
+
199
+ # error do
200
+ # puts 'inside error'
201
+ # # 'Sorry there was a nasty error - ' + env['sinatra.error'].message
202
+ # end
203
+
204
+ #def cache_lookup(key)
205
+ # begin
206
+ # value = $diskcache.get(key)
207
+ # rescue Diskcached::NotFound => e # prevents easy replacement, but is safer.
208
+ # case key
209
+ # when 'version_store'
210
+ # value = ProfileParser.lookup_versions()
211
+ # else
212
+ # value = 'Hello World'
213
+ # end
214
+ # if(value) then $diskcache.set(key, value) end
215
+ # end
216
+ # return value
217
+ #end
218
+
219
+
220
+ # $0 is the executed file
221
+ # __FILE__ is the current file
222
+ run! if __FILE__ == $0
223
+ end
224
+ # HELPER METHODS
225
+ # cache lookup method
data/test/at.txt ADDED
@@ -0,0 +1 @@
1
+ Table 10 Physician ID
Binary file
data/test/codes.txt ADDED
@@ -0,0 +1,262 @@
1
+ Table 18
2
+ Patient Type
3
+ Code
4
+ Description
5
+ 00
6
+ Surgical
7
+ 10
8
+ Medical
9
+ 60
10
+ Home Nursing Service
11
+ 85
12
+ Psychiatric Contract
13
+ 86
14
+ Psychiatric
15
+ 95
16
+ Neurological Contract
17
+ 96
18
+ Neurological
19
+
20
+
21
+ Table 51
22
+ Diagnosis Code
23
+ Code
24
+ Description
25
+ E23.0
26
+ Panhypopituitarism
27
+ E23.6
28
+ Other disorders of pituitary gland
29
+ E23.2
30
+ Diabetes insipidus
31
+ E23.3
32
+ Hypothalamic dysfunction, not elsewhere classified
33
+ E23.1
34
+ Drug-induced hypopituitarism
35
+ E32.8
36
+ Other diseases of thymus
37
+ E23.7
38
+ Disorder of pituitary gland, unspecified
39
+ E32.1
40
+ Abscess of thymus
41
+ E32.9
42
+ Disease of thymus, unspecified
43
+
44
+
45
+ Table 87
46
+ Pre-admit test indicator
47
+ Code
48
+ Description
49
+ Y
50
+ Yes
51
+ N
52
+ No
53
+
54
+
55
+ Table 88
56
+ Procedure Code
57
+ Code
58
+ Description
59
+ 00W000Z
60
+ Revision of Drainage Device in Brain, Open Approach
61
+ 02110Z3
62
+ Bypass Coronary Artery, Two Sites from Coronary Artery, Open Approach
63
+ 05500ZZ
64
+ Destruction of Azygos Vein, Open Approach
65
+ 4A0004Z
66
+ Measurement of Central Nervous Electrical Activity, Open Approach
67
+ 4A0204Z
68
+ Measurement of Cardiac Electrical Activity, Open Approach
69
+ 4A060BZ
70
+ Measurement of Lymphatic Pressure, Open Approach
71
+ 5A02110
72
+ Assistance with Cardiac Output using Balloon Pump, Intermittent
73
+ 6A150ZZ
74
+ Decompression, Circulatory, Single
75
+ 6A750Z4
76
+ Ultrasound Therapy of Head and Neck Vessels, Single
77
+ 6A800ZZ
78
+ Ultraviolet Light Therapy of Skin, Single
79
+
80
+
81
+ Table 99
82
+ VIP indicator
83
+ Code
84
+ Description
85
+ Y
86
+ VIP
87
+ N
88
+ Non VIP
89
+
90
+
91
+ Table 113
92
+ Discharged to Location
93
+ Code
94
+ Description
95
+ 1
96
+ Location 1
97
+ 2
98
+ Location 2
99
+ 3
100
+ Location 3
101
+ 4
102
+ Location 4
103
+ 5
104
+ Location 5
105
+
106
+
107
+ Table 115
108
+ Servicing facility
109
+ Code
110
+ Description
111
+ 327
112
+ LOUISVILLE-RO
113
+ 358
114
+ MANILA-RO
115
+ 402
116
+ TOGUS VAMROC
117
+ 405
118
+ WHITE RIVER JCT VAMROC
119
+ 436
120
+ MONTANA HCS
121
+ 437
122
+ FARGO VAMROC
123
+ 438
124
+ SIOUX FALLS VAMROC
125
+ 452
126
+ WICHITA-RO
127
+
128
+
129
+ Table 129
130
+ Accommodation code
131
+ Code
132
+ Description
133
+ 1
134
+ ALLERGY
135
+ 10
136
+ NEUROLOGY
137
+ 2
138
+ CARDIOLOGY
139
+ 20
140
+ REHABILITATION MEDICINE
141
+ 24
142
+ MEDICAL OBSERVATION
143
+ 25
144
+ PSYCH RESID REHAB TRMT PROG
145
+ 40
146
+ INTERMEDIATE MEDICINE
147
+ 50
148
+ GENERAL SURGERY
149
+
150
+
151
+ Table 152
152
+ Second opinion documentation received
153
+ Code
154
+ Description
155
+ Y
156
+ Documentation received
157
+ N
158
+ Documentation not received
159
+
160
+
161
+ Table 172
162
+ Veteran military status
163
+ Code
164
+ Description
165
+ Y
166
+ Veteran
167
+ N
168
+ Non Veteran
169
+
170
+
171
+ Table 212
172
+ Nationality
173
+ Code
174
+ Description
175
+ DEU
176
+ Germany
177
+ ESP
178
+ Spain
179
+ FRA
180
+ France
181
+ GBR
182
+ United Kingdom
183
+ ITA
184
+ Italy
185
+ USA
186
+ United States
187
+
188
+
189
+ Table 295
190
+ Handicap
191
+ Code
192
+ Description
193
+ Y
194
+ Yes
195
+ N
196
+ No
197
+
198
+
199
+ Table 296
200
+ Primary Language
201
+ Code
202
+ Description
203
+ EN
204
+ English
205
+ FR
206
+ French
207
+ ES
208
+ Spanish
209
+ DE
210
+ German
211
+ IT
212
+ Italian
213
+
214
+
215
+ Table 327
216
+ Job code/class
217
+ Code
218
+ Description
219
+ 13-2011
220
+ Accountant
221
+ 15-1132
222
+ Application Developer
223
+ 23-1011
224
+ Attorney
225
+ 29-1020
226
+ Dentist
227
+ 29-1170
228
+ Nurse Practitioner
229
+ 29-2041
230
+ Paramedic
231
+ 29-1050
232
+ Pharmacist
233
+ 29-1060
234
+ Physician
235
+
236
+
237
+ Table 340
238
+ Procedure Code modifier
239
+ Code
240
+ Description
241
+ 57
242
+ Decision for surgery
243
+ 23
244
+ Unusual Anesthesia
245
+ 50
246
+ Bilateral Procedure
247
+ 33
248
+ Preventive Service
249
+ 51
250
+ Multiple Procedures
251
+ 52
252
+ Reduced Services
253
+
254
+
255
+ Table 342
256
+ Military recipient
257
+ Code
258
+ Description
259
+ Y
260
+ Dependent
261
+ N
262
+ Non Dependent