test/unit/cmd_test.rb in hqmf2js-1.3.0 vs test/unit/cmd_test.rb in hqmf2js-1.4.0

- old
+ new

@@ -1,9 +1,9 @@ require_relative '../test_helper' require 'hquery-patient-api' -class CmdTest < Test::Unit::TestCase +class CmdTest < Minitest::Test def setup @context = get_js_context(HQMF2JS::Generator::JS.library_functions) end @@ -25,58 +25,61 @@ sae = @context.eval(%{ var sae = new hQuery.Fulfillment({"dispenseDate": #{Time.utc(2011,01,01).to_i} , "quantityDispensed" :{"value" :"30"}}) }) eae = @context.eval(%{ var eae = new hQuery.Fulfillment({"dispenseDate": #{Time.utc(2010,12,25).to_i} , "quantityDispensed" : {"value" :"30"}}) }) ebs = @context.eval(%{ var ebs = new hQuery.Fulfillment({"dispenseDate": #{Time.utc(2009,02,02).to_i} , "quantityDispensed" : {"value" :"30"}}) }) ece = @context.eval(%{ var ece = new hQuery.Fulfillment({"dispenseDate": #{Time.utc(2010,12,21).to_i} , "quantityDispensed" : {"value" :"30"}}) }) - assert_equal 10 , @context.eval("during.daysInRange(range, perDay)"), "Should be 10 days during" - assert_equal 10 , @context.eval("scs.daysInRange(range, perDay)"), "Should be 10 days starting concurrent with the start range" - assert_equal 3, @context.eval("sbs.daysInRange(range, perDay)"), "Should be 4 days overlap for starting before the start of the range" - assert_equal 0, @context.eval("sae.daysInRange(range, perDay)"), "Should be 0 days starting after end" - assert_equal 6, @context.eval("eae.daysInRange(range, perDay)"), "Should be 6 days overlap ending after the end of date range" - assert_equal 0, @context.eval("ebs.daysInRange(range, perDay)"), "Should be 0 days overlap ending before the start of the date range" - assert_equal 10, @context.eval("ece.daysInRange(range, perDay)"), "Should be 10 days when ending concurrent with the end" + assert_equal 10 , @context.eval("during.daysInRange(range, 1, perDay)"), "Should be 10 days during" + assert_equal 10 , @context.eval("scs.daysInRange(range, 1, perDay)"), "Should be 10 days starting concurrent with the start range" + assert_equal 3, @context.eval("sbs.daysInRange(range, 1, perDay)"), "Should be 4 days overlap for starting before the start of the range" + assert_equal 0, @context.eval("sae.daysInRange(range, 1, perDay)"), "Should be 0 days starting after end" + assert_equal 6, @context.eval("eae.daysInRange(range, 1, perDay)"), "Should be 6 days overlap ending after the end of date range" + assert_equal 0, @context.eval("ebs.daysInRange(range, 1, perDay)"), "Should be 0 days overlap ending before the start of the date range" + assert_equal 10, @context.eval("ece.daysInRange(range, 1, perDay)"), "Should be 10 days when ending concurrent with the end" @context.eval("var perDay = 1/3;") #every 3 days - assert_equal 90 , @context.eval("during.daysInRange(range, perDay)"), "Should be 10 days during" - assert_equal 90 , @context.eval("scs.daysInRange(range, perDay)"), "Should be 10 days starting concurrent with the start range" - assert_equal 90-7, @context.eval("sbs.daysInRange(range, perDay)"), "Should be 4 days overlap for starting before the start of the range" - assert_equal 0, @context.eval("sae.daysInRange(range, perDay)"), "Should be 0 days starting after end" - assert_equal 6, @context.eval("eae.daysInRange(range, perDay)"), "Should be 6 days overlap starting after the end of date range" - assert_equal 0, @context.eval("ebs.daysInRange(range, perDay)"), "Should be 0 days overlap ending before the start of the date range" - assert_equal 10, @context.eval("ece.daysInRange(range, perDay)"), "Should be 10 days when ending concurrent with the end" + assert_equal 90 , @context.eval("during.daysInRange(range, 1, perDay)"), "Should be 10 days during" + assert_equal 90 , @context.eval("scs.daysInRange(range, 1, perDay)"), "Should be 10 days starting concurrent with the start range" + assert_equal 90-7, @context.eval("sbs.daysInRange(range, 1, perDay)"), "Should be 4 days overlap for starting before the start of the range" + assert_equal 0, @context.eval("sae.daysInRange(range, 1, perDay)"), "Should be 0 days starting after end" + assert_equal 6, @context.eval("eae.daysInRange(range, 1, perDay)"), "Should be 6 days overlap starting after the end of date range" + assert_equal 0, @context.eval("ebs.daysInRange(range, 1, perDay)"), "Should be 0 days overlap ending before the start of the date range" + assert_equal 10, @context.eval("ece.daysInRange(range, 1, perDay)"), "Should be 10 days when ending concurrent with the end" @context.eval("range = new IVL_TS(null, new TS('20101231'))") - assert_equal 90, @context.eval("during.daysInRange(range, perDay)"), "Should be 90 when not supplied a start date" + assert_equal 90, @context.eval("during.daysInRange(range, 1, perDay)"), "Should be 90 when not supplied a start date" @context.eval("range = new IVL_TS(new TS('20100301'), null)") - assert_equal 63, @context.eval("during.daysInRange(range, perDay)"), "Should be 90 when not supplied an end date date" + assert_equal 63, @context.eval("during.daysInRange(range, 1, perDay)"), "Should be 90 when not supplied an end date date" end def test_cumulativeMedicationDuration medication1 = %{ { + "dose" : {"unit" : "mg", "value" : "5"}, "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }}, "fulfillmentHistory": [ - {"dispenseDate": #{Time.utc(2010,01,01).to_i} , "quantityDispensed" : {"value" :"30"}} + {"dispenseDate": #{Time.utc(2010,01,01).to_i} , "quantityDispensed" : {"value" :"150", "unit" : "mg"}} ] } } medication2 = %{ { + "dose" : {"unit" : "mg", "value" : "1"}, "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }}, "fulfillmentHistory": [ {"dispenseDate": #{Time.utc(2010,01,01).to_i} , "quantityDispensed" : {"value" :"30"}}, {"dispenseDate": #{Time.utc(2010,10,01).to_i} , "quantityDispensed" : {"value" :"90"}} ] } } no_history = %{ { + "dose" : {"unit" : "mg", "value" : "5"}, "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }}, "fulfillmentHistory": [] } } @context.eval("var med = new hQuery.Medication(#{medication1})") @@ -87,6 +90,129 @@ assert_equal 40, @context.eval("med2.cumulativeMedicationDuration(range)"), "CMD should be 10" assert_equal 0, @context.eval("no_meds.cumulativeMedicationDuration(range)"), "CMD should be 10" end -end \ No newline at end of file +def test_fullfillment_based_cmd + medication1 = %{ + { + "dose" : {"unit" : "mg", "value" : "5"}, + "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }}, + "fulfillmentHistory": [ + {"dispenseDate": #{Time.utc(2010,01,01).to_i} , "quantityDispensed" : {"value" :"150", "unit" : "mg"}} + ] + } + } + + medication2 = %{ + { + "dose" : {"unit" : "mg", "value" : "1"}, + "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }}, + "fulfillmentHistory": [ + {"dispenseDate": #{Time.utc(2010,01,01).to_i} , "quantityDispensed" : {"value" :"30"}}, + {"dispenseDate": #{Time.utc(2010,10,01).to_i} , "quantityDispensed" : {"value" :"90"}} + ] + } + } + + no_history = %{ + { + "dose" : {"unit" : "mg", "value" : "5"}, + "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }}, + "fulfillmentHistory": [] + } + } + @context.eval("var med = new hQuery.Medication(#{medication1})") + @context.eval("var med2 = new hQuery.Medication(#{medication2})") + @context.eval("var no_meds = new hQuery.Medication(#{no_history})") + @context.eval("var range = new IVL_TS(new TS('20100101'), new TS('20101231'))") + @context.eval("var cmd1 = new CMD([med],'fullfillment')") + @context.eval("var cmd2 = new CMD([med2],'fullfillment')") + @context.eval("var cmd3 = new CMD([no_meds],'fullfillment')") + assert_equal 10, @context.eval("cmd1.days_active(range.low,range.high).length"), "CMD should be 10" + assert_equal 40, @context.eval("cmd2.days_active(range.low,range.high).length"), "CMD should be 40" + assert_equal 0, @context.eval("cmd3.days_active(range.low,range.high).length"), "CMD should be 0" + end + + +def test_order_based_cmd + medication1 = %{ + { + "dose" : {"unit" : "mg", "value" : "5"}, + "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }}, + "orderInformation": [ + {"orderDateTime": #{Time.utc(2010,01,01).to_i} , "quantityOrdered" : {"value" :"150", "unit" : "mg"}, "fills": 2} + ] + } + } + + medication2 = %{ + { + "dose" : {"unit" : "mg", "value" : "1"}, + "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }}, + "orderInformation": [ + {"orderDateTime": #{Time.utc(2010,01,01).to_i} , "quantityOrdered" : {"value" :"30"}}, + {"orderDateTime": #{Time.utc(2010,10,01).to_i} , "quantityOrdered" : {"value" :"90"}} + ] + } + } + + no_history = %{ + { + "dose" : {"unit" : "mg", "value" : "5"}, + "administrationTiming" :{'period' : {'unit': 'h' , 'value': 8 }}, + "orderInformation": [] + } + } + @context.eval("var med = new hQuery.Medication(#{medication1})") + @context.eval("var med2 = new hQuery.Medication(#{medication2})") + @context.eval("var no_meds = new hQuery.Medication(#{no_history})") + @context.eval("var range = new IVL_TS(new TS('20100101'), new TS('20101231'))") + @context.eval("var cmd1 = new CMD([med],'order')") + @context.eval("var cmd2 = new CMD([med2],'order')") + @context.eval("var cmd3 = new CMD([no_meds],'order')") + assert_equal 20, @context.eval("cmd1.days_active(range.low,range.high).length"), "CMD should be 10" + assert_equal 40, @context.eval("cmd2.days_active(range.low,range.high).length"), "CMD should be 40" + assert_equal 0, @context.eval("cmd3.days_active(range.low,range.high).length"), "CMD should be 0" + end + + def test_active_days + + @context.eval("var active = new ActiveDays()") + @context.eval("var ivl = new IVL_TS(new TS('20101001'), new TS('20101031'))") + @context.eval("active.add_ivlts(ivl)") + assert_equal 31, @context.eval("active.days_active(ivl.low,ivl.high).length") + + @context.eval(" ivl = new IVL_TS(new TS('20101001'), new TS('20101010'))") + assert_equal 10, @context.eval("active.days_active(ivl.low,ivl.high).length") + + @context.eval(" ivl = new IVL_TS(new TS('20101001'), new TS('20101110'))") + assert_equal 31, @context.eval("active.days_active(ivl.low,ivl.high).length") + + @context.eval(" ivl = new IVL_TS(new TS('20101031'), new TS('20101110'))") + assert_equal 1, @context.eval("active.days_active(ivl.low,ivl.high).length") + + @context.eval(" ivl = new IVL_TS(new TS('20101110'), new TS('20110110'))") + @context.eval("active.add_ivlts(ivl)") + + @context.eval(" ivl = new IVL_TS(new TS('20101031'), new TS('20101113'))") + assert_equal 5, @context.eval("active.days_active(ivl.low,ivl.high).length") + + + @context.eval(" ivl = new IVL_TS(new TS('20101102'), new TS('20101113'))") + assert_equal 4, @context.eval("active.days_active(ivl.low,ivl.high).length") + + + @context.eval(" ivl = new IVL_TS(new TS('20100101'), new TS('20110113'))") + assert_equal 93, @context.eval("active.days_active(ivl.low,ivl.high).length") + + @context.eval("ivl = new IVL_TS(new TS('20101110'), new TS('20110110'))") + @context.eval("active.add_ivlts(ivl)") + + @context.eval(" ivl = new IVL_TS(new TS('20100101'), new TS('20110113'))") + assert_equal 93, @context.eval("active.days_active(ivl.low,ivl.high).length") + + + + end + +end