hqmf2js 1.3.0 → 1.4.0

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 (40) hide show
  1. checksums.yaml +5 -13
  2. data/.travis.yml +1 -1
  3. data/Gemfile +1 -25
  4. data/Gemfile.lock +170 -146
  5. data/app/assets/javascripts/crosswalk.js.coffee +17 -19
  6. data/app/assets/javascripts/custom_calculations.js.coffee +44 -17
  7. data/app/assets/javascripts/hqmf_util.js.coffee +559 -161
  8. data/app/assets/javascripts/logging_utils.js.coffee +6 -4
  9. data/app/assets/javascripts/patient_api_extension.js.coffee +41 -9
  10. data/app/assets/javascripts/specifics.js.coffee +163 -69
  11. data/hqmf2js.gemspec +7 -12
  12. data/lib/assets/javascripts/libraries/map_reduce_utils.js +151 -64
  13. data/lib/generator/characteristic.js.erb +23 -12
  14. data/lib/generator/codes_to_json.rb +1 -1
  15. data/lib/generator/data_criteria.js.erb +15 -3
  16. data/lib/generator/derived_data.js.erb +5 -0
  17. data/lib/generator/execution.rb +41 -11
  18. data/lib/generator/js.rb +74 -41
  19. data/lib/generator/patient_data.js.erb +1 -1
  20. data/lib/hqmf2js.rb +0 -1
  21. data/lib/hquery/engine.rb +3 -1
  22. data/lib/tasks/convert.rake +20 -12
  23. data/test/fixtures/NQF59New.json +1423 -0
  24. data/test/fixtures/fulfills.xml +917 -0
  25. data/test/fixtures/patients/larry_vanderman.json +573 -654
  26. data/test/{simplecov.rb → simplecov_init.rb} +0 -0
  27. data/test/test_helper.rb +2 -3
  28. data/test/unit/cmd_test.rb +145 -19
  29. data/test/unit/codes_to_json_test.rb +12 -12
  30. data/test/unit/custom_calculations_test.rb +2 -6
  31. data/test/unit/effective_date_test.rb +3 -4
  32. data/test/unit/erb_context_test.rb +12 -12
  33. data/test/unit/filter_by_reference_test.rb +39 -0
  34. data/test/unit/hqmf_from_json_javascript_test.rb +2 -1
  35. data/test/unit/hqmf_javascript_test.rb +12 -13
  36. data/test/unit/js_object_test.rb +2 -2
  37. data/test/unit/library_function_test.rb +210 -42
  38. data/test/unit/specifics_test.rb +402 -321
  39. metadata +57 -15
  40. data/config/warble.rb +0 -144
File without changes
@@ -1,6 +1,5 @@
1
- require_relative "./simplecov"
2
- require 'test/unit'
3
- require 'turn'
1
+ require_relative "./simplecov_init"
2
+ require 'minitest/autorun'
4
3
 
5
4
  if RUBY_PLATFORM=='java'
6
5
  require 'rhino'
@@ -1,7 +1,7 @@
1
1
  require_relative '../test_helper'
2
2
  require 'hquery-patient-api'
3
3
 
4
- class CmdTest < Test::Unit::TestCase
4
+ class CmdTest < Minitest::Test
5
5
 
6
6
  def setup
7
7
  @context = get_js_context(HQMF2JS::Generator::JS.library_functions)
@@ -27,44 +27,46 @@ class CmdTest < Test::Unit::TestCase
27
27
  ebs = @context.eval(%{ var ebs = new hQuery.Fulfillment({"dispenseDate": #{Time.utc(2009,02,02).to_i} , "quantityDispensed" : {"value" :"30"}}) })
28
28
  ece = @context.eval(%{ var ece = new hQuery.Fulfillment({"dispenseDate": #{Time.utc(2010,12,21).to_i} , "quantityDispensed" : {"value" :"30"}}) })
29
29
 
30
- assert_equal 10 , @context.eval("during.daysInRange(range, perDay)"), "Should be 10 days during"
31
- assert_equal 10 , @context.eval("scs.daysInRange(range, perDay)"), "Should be 10 days starting concurrent with the start range"
32
- assert_equal 3, @context.eval("sbs.daysInRange(range, perDay)"), "Should be 4 days overlap for starting before the start of the range"
33
- assert_equal 0, @context.eval("sae.daysInRange(range, perDay)"), "Should be 0 days starting after end"
34
- assert_equal 6, @context.eval("eae.daysInRange(range, perDay)"), "Should be 6 days overlap ending after the end of date range"
35
- assert_equal 0, @context.eval("ebs.daysInRange(range, perDay)"), "Should be 0 days overlap ending before the start of the date range"
36
- assert_equal 10, @context.eval("ece.daysInRange(range, perDay)"), "Should be 10 days when ending concurrent with the end"
30
+ assert_equal 10 , @context.eval("during.daysInRange(range, 1, perDay)"), "Should be 10 days during"
31
+ assert_equal 10 , @context.eval("scs.daysInRange(range, 1, perDay)"), "Should be 10 days starting concurrent with the start range"
32
+ assert_equal 3, @context.eval("sbs.daysInRange(range, 1, perDay)"), "Should be 4 days overlap for starting before the start of the range"
33
+ assert_equal 0, @context.eval("sae.daysInRange(range, 1, perDay)"), "Should be 0 days starting after end"
34
+ assert_equal 6, @context.eval("eae.daysInRange(range, 1, perDay)"), "Should be 6 days overlap ending after the end of date range"
35
+ assert_equal 0, @context.eval("ebs.daysInRange(range, 1, perDay)"), "Should be 0 days overlap ending before the start of the date range"
36
+ assert_equal 10, @context.eval("ece.daysInRange(range, 1, perDay)"), "Should be 10 days when ending concurrent with the end"
37
37
 
38
38
  @context.eval("var perDay = 1/3;") #every 3 days
39
39
 
40
- assert_equal 90 , @context.eval("during.daysInRange(range, perDay)"), "Should be 10 days during"
41
- assert_equal 90 , @context.eval("scs.daysInRange(range, perDay)"), "Should be 10 days starting concurrent with the start range"
42
- assert_equal 90-7, @context.eval("sbs.daysInRange(range, perDay)"), "Should be 4 days overlap for starting before the start of the range"
43
- assert_equal 0, @context.eval("sae.daysInRange(range, perDay)"), "Should be 0 days starting after end"
44
- assert_equal 6, @context.eval("eae.daysInRange(range, perDay)"), "Should be 6 days overlap starting after the end of date range"
45
- assert_equal 0, @context.eval("ebs.daysInRange(range, perDay)"), "Should be 0 days overlap ending before the start of the date range"
46
- assert_equal 10, @context.eval("ece.daysInRange(range, perDay)"), "Should be 10 days when ending concurrent with the end"
40
+ assert_equal 90 , @context.eval("during.daysInRange(range, 1, perDay)"), "Should be 10 days during"
41
+ assert_equal 90 , @context.eval("scs.daysInRange(range, 1, perDay)"), "Should be 10 days starting concurrent with the start range"
42
+ assert_equal 90-7, @context.eval("sbs.daysInRange(range, 1, perDay)"), "Should be 4 days overlap for starting before the start of the range"
43
+ assert_equal 0, @context.eval("sae.daysInRange(range, 1, perDay)"), "Should be 0 days starting after end"
44
+ assert_equal 6, @context.eval("eae.daysInRange(range, 1, perDay)"), "Should be 6 days overlap starting after the end of date range"
45
+ assert_equal 0, @context.eval("ebs.daysInRange(range, 1, perDay)"), "Should be 0 days overlap ending before the start of the date range"
46
+ assert_equal 10, @context.eval("ece.daysInRange(range, 1, perDay)"), "Should be 10 days when ending concurrent with the end"
47
47
 
48
48
  @context.eval("range = new IVL_TS(null, new TS('20101231'))")
49
- assert_equal 90, @context.eval("during.daysInRange(range, perDay)"), "Should be 90 when not supplied a start date"
49
+ assert_equal 90, @context.eval("during.daysInRange(range, 1, perDay)"), "Should be 90 when not supplied a start date"
50
50
 
51
51
  @context.eval("range = new IVL_TS(new TS('20100301'), null)")
52
- assert_equal 63, @context.eval("during.daysInRange(range, perDay)"), "Should be 90 when not supplied an end date date"
52
+ assert_equal 63, @context.eval("during.daysInRange(range, 1, perDay)"), "Should be 90 when not supplied an end date date"
53
53
 
54
54
  end
55
55
 
56
56
  def test_cumulativeMedicationDuration
57
57
  medication1 = %{
58
58
  {
59
+ "dose" : {"unit" : "mg", "value" : "5"},
59
60
  "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }},
60
61
  "fulfillmentHistory": [
61
- {"dispenseDate": #{Time.utc(2010,01,01).to_i} , "quantityDispensed" : {"value" :"30"}}
62
+ {"dispenseDate": #{Time.utc(2010,01,01).to_i} , "quantityDispensed" : {"value" :"150", "unit" : "mg"}}
62
63
  ]
63
64
  }
64
65
  }
65
66
 
66
67
  medication2 = %{
67
68
  {
69
+ "dose" : {"unit" : "mg", "value" : "1"},
68
70
  "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }},
69
71
  "fulfillmentHistory": [
70
72
  {"dispenseDate": #{Time.utc(2010,01,01).to_i} , "quantityDispensed" : {"value" :"30"}},
@@ -75,6 +77,7 @@ class CmdTest < Test::Unit::TestCase
75
77
 
76
78
  no_history = %{
77
79
  {
80
+ "dose" : {"unit" : "mg", "value" : "5"},
78
81
  "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }},
79
82
  "fulfillmentHistory": []
80
83
  }
@@ -89,4 +92,127 @@ class CmdTest < Test::Unit::TestCase
89
92
  end
90
93
 
91
94
 
92
- end
95
+ def test_fullfillment_based_cmd
96
+ medication1 = %{
97
+ {
98
+ "dose" : {"unit" : "mg", "value" : "5"},
99
+ "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }},
100
+ "fulfillmentHistory": [
101
+ {"dispenseDate": #{Time.utc(2010,01,01).to_i} , "quantityDispensed" : {"value" :"150", "unit" : "mg"}}
102
+ ]
103
+ }
104
+ }
105
+
106
+ medication2 = %{
107
+ {
108
+ "dose" : {"unit" : "mg", "value" : "1"},
109
+ "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }},
110
+ "fulfillmentHistory": [
111
+ {"dispenseDate": #{Time.utc(2010,01,01).to_i} , "quantityDispensed" : {"value" :"30"}},
112
+ {"dispenseDate": #{Time.utc(2010,10,01).to_i} , "quantityDispensed" : {"value" :"90"}}
113
+ ]
114
+ }
115
+ }
116
+
117
+ no_history = %{
118
+ {
119
+ "dose" : {"unit" : "mg", "value" : "5"},
120
+ "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }},
121
+ "fulfillmentHistory": []
122
+ }
123
+ }
124
+ @context.eval("var med = new hQuery.Medication(#{medication1})")
125
+ @context.eval("var med2 = new hQuery.Medication(#{medication2})")
126
+ @context.eval("var no_meds = new hQuery.Medication(#{no_history})")
127
+ @context.eval("var range = new IVL_TS(new TS('20100101'), new TS('20101231'))")
128
+ @context.eval("var cmd1 = new CMD([med],'fullfillment')")
129
+ @context.eval("var cmd2 = new CMD([med2],'fullfillment')")
130
+ @context.eval("var cmd3 = new CMD([no_meds],'fullfillment')")
131
+ assert_equal 10, @context.eval("cmd1.days_active(range.low,range.high).length"), "CMD should be 10"
132
+ assert_equal 40, @context.eval("cmd2.days_active(range.low,range.high).length"), "CMD should be 40"
133
+ assert_equal 0, @context.eval("cmd3.days_active(range.low,range.high).length"), "CMD should be 0"
134
+ end
135
+
136
+
137
+ def test_order_based_cmd
138
+ medication1 = %{
139
+ {
140
+ "dose" : {"unit" : "mg", "value" : "5"},
141
+ "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }},
142
+ "orderInformation": [
143
+ {"orderDateTime": #{Time.utc(2010,01,01).to_i} , "quantityOrdered" : {"value" :"150", "unit" : "mg"}, "fills": 2}
144
+ ]
145
+ }
146
+ }
147
+
148
+ medication2 = %{
149
+ {
150
+ "dose" : {"unit" : "mg", "value" : "1"},
151
+ "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }},
152
+ "orderInformation": [
153
+ {"orderDateTime": #{Time.utc(2010,01,01).to_i} , "quantityOrdered" : {"value" :"30"}},
154
+ {"orderDateTime": #{Time.utc(2010,10,01).to_i} , "quantityOrdered" : {"value" :"90"}}
155
+ ]
156
+ }
157
+ }
158
+
159
+ no_history = %{
160
+ {
161
+ "dose" : {"unit" : "mg", "value" : "5"},
162
+ "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }},
163
+ "orderInformation": []
164
+ }
165
+ }
166
+ @context.eval("var med = new hQuery.Medication(#{medication1})")
167
+ @context.eval("var med2 = new hQuery.Medication(#{medication2})")
168
+ @context.eval("var no_meds = new hQuery.Medication(#{no_history})")
169
+ @context.eval("var range = new IVL_TS(new TS('20100101'), new TS('20101231'))")
170
+ @context.eval("var cmd1 = new CMD([med],'order')")
171
+ @context.eval("var cmd2 = new CMD([med2],'order')")
172
+ @context.eval("var cmd3 = new CMD([no_meds],'order')")
173
+ assert_equal 20, @context.eval("cmd1.days_active(range.low,range.high).length"), "CMD should be 10"
174
+ assert_equal 40, @context.eval("cmd2.days_active(range.low,range.high).length"), "CMD should be 40"
175
+ assert_equal 0, @context.eval("cmd3.days_active(range.low,range.high).length"), "CMD should be 0"
176
+ end
177
+
178
+ def test_active_days
179
+
180
+ @context.eval("var active = new ActiveDays()")
181
+ @context.eval("var ivl = new IVL_TS(new TS('20101001'), new TS('20101031'))")
182
+ @context.eval("active.add_ivlts(ivl)")
183
+ assert_equal 31, @context.eval("active.days_active(ivl.low,ivl.high).length")
184
+
185
+ @context.eval(" ivl = new IVL_TS(new TS('20101001'), new TS('20101010'))")
186
+ assert_equal 10, @context.eval("active.days_active(ivl.low,ivl.high).length")
187
+
188
+ @context.eval(" ivl = new IVL_TS(new TS('20101001'), new TS('20101110'))")
189
+ assert_equal 31, @context.eval("active.days_active(ivl.low,ivl.high).length")
190
+
191
+ @context.eval(" ivl = new IVL_TS(new TS('20101031'), new TS('20101110'))")
192
+ assert_equal 1, @context.eval("active.days_active(ivl.low,ivl.high).length")
193
+
194
+ @context.eval(" ivl = new IVL_TS(new TS('20101110'), new TS('20110110'))")
195
+ @context.eval("active.add_ivlts(ivl)")
196
+
197
+ @context.eval(" ivl = new IVL_TS(new TS('20101031'), new TS('20101113'))")
198
+ assert_equal 5, @context.eval("active.days_active(ivl.low,ivl.high).length")
199
+
200
+
201
+ @context.eval(" ivl = new IVL_TS(new TS('20101102'), new TS('20101113'))")
202
+ assert_equal 4, @context.eval("active.days_active(ivl.low,ivl.high).length")
203
+
204
+
205
+ @context.eval(" ivl = new IVL_TS(new TS('20100101'), new TS('20110113'))")
206
+ assert_equal 93, @context.eval("active.days_active(ivl.low,ivl.high).length")
207
+
208
+ @context.eval("ivl = new IVL_TS(new TS('20101110'), new TS('20110110'))")
209
+ @context.eval("active.add_ivlts(ivl)")
210
+
211
+ @context.eval(" ivl = new IVL_TS(new TS('20100101'), new TS('20110113'))")
212
+ assert_equal 93, @context.eval("active.days_active(ivl.low,ivl.high).length")
213
+
214
+
215
+
216
+ end
217
+
218
+ end
@@ -1,6 +1,6 @@
1
1
  require_relative '../test_helper'
2
2
 
3
- class CodesToJsonTest < Test::Unit::TestCase
3
+ class CodesToJsonTest < Minitest::Test
4
4
 
5
5
  def setup
6
6
  end
@@ -14,9 +14,9 @@ class CodesToJsonTest < Test::Unit::TestCase
14
14
 
15
15
  @context = get_js_context("var dictionary = #{codes_json}")
16
16
 
17
- @context.eval("dictionary").entries.length.must_equal 19
18
- @context.eval("dictionary['2.16.840.1.113883.3.464.1.42']").entries.first[0].must_equal "CPT"
19
- @context.eval("dictionary['2.16.840.1.113883.3.464.1.42']").entries.first[1].length.must_equal 19
17
+ assert_equal 19, @context.eval("dictionary").entries.length
18
+ assert_equal "CPT", @context.eval("dictionary['2.16.840.1.113883.3.464.1.42']").entries.first[0]
19
+ assert_equal 19, @context.eval("dictionary['2.16.840.1.113883.3.464.1.42']").entries.first[1].length
20
20
 
21
21
  end
22
22
 
@@ -24,13 +24,13 @@ class CodesToJsonTest < Test::Unit::TestCase
24
24
  value_sets = JSON.parse(File.read(File.join('test','fixtures','codes','codes.json'))).map {|vs| HealthDataStandards::SVS::ValueSet.new(vs)}
25
25
  oid_map = HQMF2JS::Generator::CodesToJson.from_value_sets(value_sets)
26
26
 
27
- oid_map.keys.sort.must_equal ["1.2.3.4.5","1.2.3.4.6"]
28
- oid_map["1.2.3.4.5"].keys.sort.must_equal ["ICD-9-CM","SNOMED-CT"]
29
- oid_map["1.2.3.4.5"]["ICD-9-CM"].sort.must_equal ["126", "127"]
30
- oid_map["1.2.3.4.5"]["SNOMED-CT"].sort.must_equal ["123", "124", "125"]
31
- oid_map["1.2.3.4.6"].keys.sort.must_equal ["CPT","SNOMED-CT"]
32
- oid_map["1.2.3.4.6"]["CPT"].sort.must_equal ["125C", "126D", "127E"]
33
- oid_map["1.2.3.4.6"]["SNOMED-CT"].sort.must_equal ["123A", "124B"]
27
+ assert_equal ["1.2.3.4.5","1.2.3.4.6"], oid_map.keys.sort
28
+ assert_equal ["ICD-9-CM","SNOMED-CT"], oid_map["1.2.3.4.5"].keys.sort
29
+ assert_equal ["126", "127"], oid_map["1.2.3.4.5"]["ICD-9-CM"].sort
30
+ assert_equal ["123", "124", "125"], oid_map["1.2.3.4.5"]["SNOMED-CT"].sort
31
+ assert_equal ["CPT","SNOMED-CT"], oid_map["1.2.3.4.6"].keys.sort
32
+ assert_equal ["125C", "126D", "127E"], oid_map["1.2.3.4.6"]["CPT"].sort
33
+ assert_equal ["123A", "124B"], oid_map["1.2.3.4.6"]["SNOMED-CT"].sort
34
34
 
35
35
  # def self.from_value_sets(value_sets)
36
36
  # # make sure we have a string keyed hash
@@ -53,4 +53,4 @@ class CodesToJsonTest < Test::Unit::TestCase
53
53
  end
54
54
 
55
55
 
56
- end
56
+ end
@@ -1,7 +1,7 @@
1
1
  require_relative '../test_helper'
2
2
  require 'hquery-patient-api'
3
3
 
4
- class CustomCalculationsTest < Test::Unit::TestCase
4
+ class CustomCalculationsTest < Minitest::Test
5
5
 
6
6
  def setup
7
7
  @context = get_js_context(HQMF2JS::Generator::JS.library_functions)
@@ -78,7 +78,7 @@ class CustomCalculationsTest < Test::Unit::TestCase
78
78
 
79
79
 
80
80
  def test_inr_results
81
- @context.eval("typeof(hqmf.CustomCalc.PercentTTREntries) === 'function'").must_equal true
81
+ assert_equal true, @context.eval("typeof(hqmf.CustomCalc.PercentTTREntries) === 'function'")
82
82
  assert @context.eval("Math.abs(list.calculateDaysInRange(inr1,inr2) - 3.714285714285717) < .001")
83
83
  assert @context.eval("Math.abs(list.calculateDaysInRange(inr2,inr3)) == 0 ")
84
84
  assert @context.eval("Math.abs(list.calculateDaysInRange(inr3,inr4)) == 0")
@@ -93,10 +93,6 @@ class CustomCalculationsTest < Test::Unit::TestCase
93
93
  assert @context.eval("Math.abs(list.calculateDaysInRange(inr12,inr13) - 14) < .001")
94
94
 
95
95
  end
96
-
97
- def test_total_number_of_days
98
- @context.eval("list.totalNumberOfDays()").must_equal 198
99
- end
100
96
 
101
97
  def test_calculate_ttr
102
98
  assert @context.eval("Math.abs(list.calculateTTR() - 87.11113886) < .001")
@@ -1,11 +1,10 @@
1
1
  require_relative '../test_helper'
2
2
 
3
- class EffectiveDateTest < Test::Unit::TestCase
3
+ class EffectiveDateTest < Minitest::Test
4
4
  def setup
5
5
  # Open a path to all of our fixtures
6
- hqmf_contents = File.open("test/fixtures/NQF59New.xml").read
7
-
8
- doc = HQMF::Parser.parse(hqmf_contents, HQMF::Parser::HQMF_VERSION_2)
6
+ model = JSON.parse(File.open("test/fixtures/NQF59New.json").read)
7
+ doc = HQMF::Document.from_json(model)
9
8
 
10
9
  # First compile the CoffeeScript that enables our converted HQMF JavaScript
11
10
  ctx = Sprockets::Environment.new(File.expand_path("../../..", __FILE__))
@@ -1,6 +1,6 @@
1
1
  require_relative '../test_helper'
2
2
 
3
- class ErbContextTest < Test::Unit::TestCase
3
+ class ErbContextTest < Minitest::Test
4
4
 
5
5
  def setup
6
6
  end
@@ -12,51 +12,51 @@ class ErbContextTest < Test::Unit::TestCase
12
12
  criteria = HQMF::DataCriteria.from_json(nil, JSON.parse(File.read(File.join('test','fixtures','json','data_criteria','temporals_with_anynonnull.json'))))
13
13
 
14
14
  get_codes = context.js_for_code_list(criteria)
15
- get_codes.must_equal "getCodes(\"2.16.840.1.113883.3.117.1.7.1.23\")"
15
+ assert_equal "getCodes(\"2.16.840.1.113883.3.117.1.7.1.23\")", get_codes
16
16
  criteria.instance_variable_set(:@code_list_id, nil)
17
17
  get_codes = context.js_for_code_list(criteria)
18
- get_codes.must_equal "null"
18
+ assert_equal "null", get_codes
19
19
 
20
20
  date_bound = context.js_for_date_bound(criteria)
21
- date_bound.must_equal "MeasurePeriod.high.asDate()"
21
+ assert_equal "MeasurePeriod.high.asDate()", date_bound
22
22
 
23
23
  criteria.temporal_references[0].instance_variable_set(:@type,"FOO")
24
- exception = assert_raise RuntimeError do
24
+ exception = assert_raises RuntimeError do
25
25
  context.js_for_date_bound(criteria)
26
26
  end
27
- exception.message.must_equal "do not know how to get a date for this type"
27
+ assert_equal "do not know how to get a date for this type", exception.message
28
28
  end
29
29
 
30
30
  def test_value_js
31
31
  context = HQMF2JS::Generator::ErbContext.new({})
32
32
  value = HQMF::Value.from_json({"type" => "ANYNonNull"})
33
33
  result = context.js_for_value(value)
34
- result.must_equal "new ANYNonNull()"
34
+ assert_equal "new ANYNonNull()", result
35
35
 
36
36
 
37
37
  value = HQMF::Value.from_json({"type"=>"SCALAR", "unit"=>"mm[Hg]", "value"=>"90", "inclusive?"=>false, "derived?"=>false } )
38
38
  result = context.js_for_value(value)
39
- result.must_equal "new SCALAR(90, \"mm[Hg]\", false)"
39
+ assert_equal "new SCALAR(90, \"mm[Hg]\", false)", result
40
40
 
41
41
  value = HQMF::Value.from_json({"type"=>"SCALAR", "unit"=>nil, "value"=>"90", "inclusive?"=>true, "derived?"=>false } )
42
42
  result = context.js_for_value(value)
43
- result.must_equal "new SCALAR(\"90\", null, true)"
43
+ assert_equal "new SCALAR(\"90\", null, true)", result
44
44
 
45
45
  value = HQMF::Value.from_json({"type"=>"SCALAR", "unit"=>nil, "value"=>"90", "inclusive?"=>nil, "derived?"=>false } )
46
46
  value.instance_variable_set(:@inclusive, nil)
47
47
  result = context.js_for_value(value)
48
- result.must_equal "new SCALAR(\"90\")"
48
+ assert_equal "new SCALAR(\"90\")", result
49
49
 
50
50
  end
51
51
 
52
52
  def test_field_library_method
53
53
  context = HQMF2JS::Generator::ErbContext.new({})
54
54
  result = context.field_library_method('ADMISSION_DATETIME')
55
- result.must_equal "adjustBoundsForField"
55
+ assert_equal "adjustBoundsForField", result
56
56
 
57
57
  context = HQMF2JS::Generator::ErbContext.new({})
58
58
  result = context.field_library_method('FACILITY_LOCATION_ARRIVAL_DATETIME')
59
- result.must_equal "denormalizeEventsByLocation"
59
+ assert_equal "denormalizeEventsByLocation", result
60
60
  end
61
61
 
62
62
 
@@ -0,0 +1,39 @@
1
+ require_relative '../test_helper'
2
+ require 'hquery-patient-api'
3
+
4
+ class FilterByReferenceTest < Minitest::Test
5
+
6
+ def setup
7
+ @context = get_js_context(HQMF2JS::Generator::JS.library_functions)
8
+ @context.eval("hqmf.SpecificsManager.initialize()")
9
+ end
10
+
11
+ def test_filter
12
+ @context.eval "var evts = [new hQuery.CodedEntry({'_id' : 'id1', 'references' : [{'referenced_id' : 'id4', 'type' : 'fulfills'}]}),
13
+ new hQuery.CodedEntry({'_id' : 'id2','references' : [{'referenced_id' : 'id5', 'type' : 'some_reference'}]}),
14
+ new hQuery.CodedEntry({'_id' : 'id3'})]
15
+
16
+ var pos = [new hQuery.CodedEntry({'_id' : 'id4'}),
17
+ new hQuery.CodedEntry({'_id' : 'id5'}),
18
+ new hQuery.CodedEntry({'_id' : 'id6'})]
19
+
20
+ "
21
+
22
+ assert_equal 1, @context.eval("filterEventsByReference(evts,'fulfills',pos).length")
23
+ assert_equal 'id1' , @context.eval("filterEventsByReference(evts,'fulfills',pos)[0].id")
24
+ assert_equal 1, @context.eval("filterEventsByReference(evts,'some_reference',pos).length")
25
+ assert_equal 'id2' , @context.eval("filterEventsByReference(evts,'some_reference',pos)[0].id")
26
+ assert_equal 0, @context.eval("filterEventsByReference(evts,'nonexistent_ref',pos).length")
27
+
28
+ end
29
+
30
+ def test_communicationFilter
31
+
32
+ @context.eval "var communication_evts = [new hQuery.Communication({ 'direction' : 'communication_from_patient_to_provider' })]
33
+
34
+ "
35
+
36
+ assert_equal 1, @context.eval("filterEventsByCommunicationDirection(communication_evts,'communication_from_patient_to_provider').length")
37
+ assert_equal 0, @context.eval("filterEventsByCommunicationDirection(communication_evts,'communication_from_provider_to_patient').length")
38
+ end
39
+ end
@@ -1,6 +1,6 @@
1
1
  require_relative '../test_helper'
2
2
 
3
- class HqmfFromJsonJavascriptTest < Test::Unit::TestCase
3
+ class HqmfFromJsonJavascriptTest < Minitest::Test
4
4
  def setup
5
5
  json_measure = File.open("test/fixtures/json/59New.json").read
6
6
  measure_hash = JSON.parse(json_measure)
@@ -60,6 +60,7 @@ class HqmfFromJsonJavascriptTest < Test::Unit::TestCase
60
60
  assert !@context.eval("hqmfjs.dead3MonthsAfterMeasurePeriod(numeratorPatient).isTrue()")
61
61
  assert !@context.eval("hqmfjs.deadBetween5and6MonthsDuringMeasurePeriod(numeratorPatient).isTrue()")
62
62
 
63
+ @context.eval("numeratorPatient.json['expired']=true")
63
64
  @context.eval("numeratorPatient.json['deathdate']=#{Time.utc(2010,11).to_i}")
64
65
  assert !@context.eval("hqmfjs.dead3MonthsBeforeMeasurePeriod(numeratorPatient).isTrue()")
65
66
  assert !@context.eval("hqmfjs.dead3MonthsAfterMeasurePeriod(numeratorPatient).isTrue()")
@@ -1,13 +1,12 @@
1
1
  require_relative '../test_helper'
2
2
  require 'hquery-patient-api'
3
3
 
4
- class HqmfJavascriptTest < Test::Unit::TestCase
4
+ class HqmfJavascriptTest < Minitest::Test
5
5
  def setup
6
6
  # Open a path to all of our fixtures
7
- hqmf_contents = File.open("test/fixtures/NQF59New.xml").read
8
-
9
- doc = HQMF::Parser.parse(hqmf_contents, HQMF::Parser::HQMF_VERSION_2)
10
-
7
+ model = JSON.parse(File.open("test/fixtures/NQF59New.json").read)
8
+ doc = HQMF::Document.from_json(model)
9
+
11
10
  codes_file_path = File.expand_path("../../fixtures/codes/codes.xml", __FILE__)
12
11
 
13
12
  # First compile the CoffeeScript that enables our converted HQMF JavaScript
@@ -49,11 +48,11 @@ class HqmfJavascriptTest < Test::Unit::TestCase
49
48
  local_context.eval("#{hqmf_utils}
50
49
  #{value}")
51
50
 
52
- local_context.eval('typeof hqmfjs != undefined').must_equal true
53
- local_context.eval('typeof OidDictionary != undefined').must_equal true
54
- local_context.eval('typeof hqmfjs.IPP != undefined').must_equal true
55
- local_context.eval('typeof hqmfjs.NUMER != undefined').must_equal true
56
- local_context.eval('typeof hqmfjs.DENOM != undefined').must_equal true
51
+ assert_equal true, local_context.eval('typeof hqmfjs != undefined')
52
+ assert_equal true, local_context.eval('typeof OidDictionary != undefined')
53
+ assert_equal true, local_context.eval('typeof hqmfjs.IPP != undefined')
54
+ assert_equal true, local_context.eval('typeof hqmfjs.NUMER != undefined')
55
+ assert_equal true, local_context.eval('typeof hqmfjs.DENOM != undefined')
57
56
  end
58
57
 
59
58
  def test_to_js_method_without_codes
@@ -185,8 +184,8 @@ class HqmfJavascriptTest < Test::Unit::TestCase
185
184
  end
186
185
 
187
186
  def test_map_reduce_generation
188
- hqmf_contents = File.open("test/fixtures/NQF59New.xml").read
189
- doc = HQMF::Parser.parse(hqmf_contents, HQMF::Parser::HQMF_VERSION_2)
187
+ model = JSON.parse(File.open("test/fixtures/NQF59New.json").read)
188
+ doc = HQMF::Document.from_json(model)
190
189
 
191
190
  map_reduce = HQMF2JS::Converter.generate_map_reduce(doc)
192
191
 
@@ -206,7 +205,7 @@ class HqmfJavascriptTest < Test::Unit::TestCase
206
205
  context = HQMF2JS::Generator::ErbContext.new({})
207
206
  criteria = HQMF::DataCriteria.new(nil,nil,nil,nil,nil,nil,nil,'patient_characteristic',nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil)
208
207
 
209
- exception = assert_raise RuntimeError do
208
+ exception = assert_raises RuntimeError do
210
209
  n = context.js_name(criteria)
211
210
  end
212
211
  assert exception.message.match(/^No identifier for .*/)