From a5772710a45d4b88a30483cacb34127839aeb52a Mon Sep 17 00:00:00 2001 From: David Czulada Date: Fri, 9 Jan 2026 15:23:51 -0500 Subject: [PATCH 1/2] allow for the "Other" code to be used when a patient may have multiple races --- lib/validators/calculating_augmented_results.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/validators/calculating_augmented_results.rb b/lib/validators/calculating_augmented_results.rb index aa81fab2b..740063c33 100644 --- a/lib/validators/calculating_augmented_results.rb +++ b/lib/validators/calculating_augmented_results.rb @@ -18,7 +18,8 @@ def self.augmented_sup_val_expected?(task, keys_and_ids, code, expect_report) if augmented_field[0] == code expect_diff[1] += 1 - elsif augmented_field[1] == code + # Also allow for the "Other" code to be used when a patient may have multiple races + elsif (augmented_field[1] == code) || (code == '2131-1' && keys_and_ids[:sup_key] == 'RACE') expect_diff[0] -= 1 end end From c9f715624789c9e6b7ce03dfe1db9d43bca9c6dd Mon Sep 17 00:00:00 2001 From: David Czulada Date: Fri, 30 Jan 2026 10:05:49 -0500 Subject: [PATCH 2/2] include unit test --- .../ep_test_qrda_cat3_unknown_race.xml | 488 ++++++++++++++++++ .../expected_results_validator_test.rb | 17 +- 2 files changed, 502 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/qrda/cat_III/ep_test_qrda_cat3_unknown_race.xml diff --git a/test/fixtures/qrda/cat_III/ep_test_qrda_cat3_unknown_race.xml b/test/fixtures/qrda/cat_III/ep_test_qrda_cat3_unknown_race.xml new file mode 100644 index 000000000..d1689037a --- /dev/null +++ b/test/fixtures/qrda/cat_III/ep_test_qrda_cat3_unknown_race.xml @@ -0,0 +1,488 @@ + + + + + + + + + + + + QRDA Calculated Summary Report + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + Reporting Parameters + + + Reporting period: January 1st, 2012 00:00 - December 31st, 2012 23:59 + + + + + + + + + + + + + + +
+
+ + +
+ + + + + + + Measure Section + + + + + + + + + + + + + + + + Static Measure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
\ No newline at end of file diff --git a/test/unit/lib/validators/expected_results_validator_test.rb b/test/unit/lib/validators/expected_results_validator_test.rb index b900fa91a..047bf512b 100644 --- a/test/unit/lib/validators/expected_results_validator_test.rb +++ b/test/unit/lib/validators/expected_results_validator_test.rb @@ -19,17 +19,17 @@ def setup_augmented_patients @patient1 = ProductTestPatient.create(givenNames: ['Jill'], familyName: 'Mcguire', medical_record_number: '198718e0-4d42-0135-8680-12999b0ed66f') CQM::IndividualResult.create(IPP: 1, patient_id: @patient1.id, patient: @patient1, measure: @measure) @augmented_patient1 = { 'original_patient_id' => @patient1.id, 'medical_record_number' => '198718e0-4d42-0135-8680-12999b0ed66f', - 'first' => %w[Jill J], 'last' => %w[Mcguire Mcguirn], :gender => %w[F M] } + 'first' => %w[Jill J], 'last' => %w[Mcguire Mcguirn], :gender => %w[F M], :race => %w[1002-5 2028-9] } @patient2 = ProductTestPatient.create(givenNames: ['Ivan'], familyName: 'Mcguire', medical_record_number: '098718e0-4d42-0135-8680-12999b0ed66f') CQM::IndividualResult.create(IPP: 1, patient_id: @patient2.id, patient: @patient2, measure: @measure) @augmented_patient2 = { 'original_patient_id' => @patient2.id, 'medical_record_number' => '098718e0-4d42-0135-8680-12999b0ed66f', - 'first' => %w[Ivan Ivan], 'last' => %w[Mcguire Mcguirn], :gender => %w[M F] } + 'first' => %w[Ivan Ivan], 'last' => %w[Mcguire Mcguirn], :gender => %w[M F], :race => %w[1002-5 2028-9] } @patient3 = ProductTestPatient.create(givenNames: ['Joe'], familyName: 'Mcguire', medical_record_number: '298718e0-4d42-0135-8680-12999b0ed66f') CQM::IndividualResult.create(IPP: 1, patient_id: @patient3.id, patient: @patient3, measure: @measure) @augmented_patient3 = { 'original_patient_id' => @patient3.id, 'medical_record_number' => '298718e0-4d42-0135-8680-12999b0ed66f', - 'first' => %w[Joe John], 'last' => %w[Mcguire Mcguirn], :gender => %w[M M] } + 'first' => %w[Joe John], 'last' => %w[Mcguire Mcguirn], :gender => %w[M M], :race => %w[1002-5 2028-9] } end def test_validate_good_file @@ -82,6 +82,17 @@ def test_validate_augmented_results_one_augmented_patient assert_empty errors, 'should be no errors when changing the gender count in accordance with the augmented patients' end + def test_validate_augmented_results_one_unknown_race + file = File.new(Rails.root.join('test', 'fixtures', 'qrda', 'cat_III', 'ep_test_qrda_cat3_unknown_race.xml')).read + @task.product_test.augmented_patients = [@augmented_patient1] + @patient1.correlation_id = @task.product_test.id + @patient1.save! + @validator.validate(file, 'task' => @task) + errors = @validator.errors + + assert_empty errors, 'should be no errors when changing the gender count in accordance with the augmented patients' + end + def test_validate_augmented_results_two_augmented_patients file = File.new(Rails.root.join('test', 'fixtures', 'qrda', 'cat_III', 'ep_test_qrda_cat3_good.xml')).read @task.product_test.augmented_patients = [@augmented_patient1, @augmented_patient3]