Skip to content

Commit b55fae1

Browse files
committed
Merge branch 'develop' into release/v20.2.0
2 parents d48a00a + 1dfdb5e commit b55fae1

File tree

8 files changed

+22
-17
lines changed

8 files changed

+22
-17
lines changed

ERROR_MESSAGES.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ Any text in the following format `(Example)` are considered variables to be fill
88
* 3 : CT - Unexpected exception occurred during conversion. Please contact the Service Center for assistance via phone at 1-866-288-8292 or TTY: 1-877-715-6222, or by emailing [email protected]
99
* 4 : CT - Unexpected exception occurred during encoding. Please contact the Service Center for assistance via phone at 1-866-288-8292 or TTY: 1-877-715-6222, or by emailing [email protected]
1010
* 5 : CT - The file is not a QRDA-III XML document. Please ensure that the submission complies with the `(Submission year's)` implementation guide. `(Implementation guide link)`
11-
* 6 : CT - The measure GUID `(Provided measure id)` is invalid. Please see the Table 14 of `(Submission year's)` Implementation Guide for valid measure GUIDs: https://ecqi.healthit.gov/sites/default/files/2022-CMS-QRDA-III-Eligible-Clinicians-and-EP-IG-V1.1-508.pdf#page=43
11+
* 6 : CT - The measure GUID `(Provided measure id)` is invalid. Please see the Table 14 of the `(Submission year's)` Implementation Guide for valid measure GUIDs: https://ecqi.healthit.gov/sites/default/files/2022-CMS-QRDA-III-Eligible-Clinicians-and-EP-IG-V1.1-508.pdf#page=43
1212
* 7 : CT - The measure reference results must have at least one measure. Please review the measures section of your file as it cannot be empty.
1313
* 8 : CT - The `(Parent element)` has `(number of aggregate counts)` aggregate count values. A single aggregate count value is required.
1414
* 9 : CT - Aggregate count value must be an integer
1515
* 11 : CT - This PI Reference and Results is missing a required Measure Performed child
1616
* 12 : CT - This PI Measure Performed Reference and Results requires a single Measure ID
17-
* 13 : CT - Denominator count must be less than or equal to Initial Population count for the measure population `(measure population id)`. Please see the Table 14 of the Implementation guide for valid measure GUIDs: https://ecqi.healthit.gov/sites/default/files/2022-CMS-QRDA-III-Eligible-Clinicians-and-EP-IG-V1.1-508.pdf#page=43
17+
* 13 : CT - Denominator count must be less than or equal to Initial Population count for the measure population `(measure population id)`. Please see the Table 14 of the `(Submission Year)` Implementation guide for valid measure GUIDs: https://ecqi.healthit.gov/sites/default/files/2022-CMS-QRDA-III-Eligible-Clinicians-and-EP-IG-V1.1-508.pdf#page=43
1818
* 14 : CT - The electronic measure id: `(Current eMeasure ID)` requires `(Number of Subpopulations required)` `(Type of Subpopulation required)`(s) but there are `(Number of Subpopulations existing)`
1919
* 15 : CT - PI Numerator Denominator element should have a PI Section element as a parent
2020
* 16 : CT - PI Numerator Denominator element does not contain a measure name ID
@@ -84,7 +84,7 @@ Any text in the following format `(Example)` are considered variables to be fill
8484
* 97 : CT - `(Program name)` QRDA-III Submissions require a valid CMS EHR Certification ID (Valid Format: XX15EXXXXXXXXXX)
8585
* 98 : CT - The performance rate cannot have a value of 0 and must be of value Null Attribute (NA).
8686
* 100 : CT - More than one CMS EHR Certification ID was found. Please submit with only one CMS EHR Certification id.
87-
* 101 : CT - Denominator count must be equal to Initial Population count for `(Program name)` measure population `(measure population id)`.
87+
* 101 : CT - Denominator count must be equal to Initial Population count for `(Program name)` measure population `(measure population id)`.Please see the Table 14 of `(Submission year's)` Implementation Guide for valid measure GUIDs: https://ecqi.healthit.gov/sites/default/files/2022-CMS-QRDA-III-Eligible-Clinicians-and-EP-IG-V1.1-508.pdf#page=43
8888
* 102 : CT - A PI section cannot contain PI_HIE_5 with PI_HIE_1, PI_LVOTC_1, PI_HIE_4, or PI_LVITC_2
8989
* 103 : CT - PCF Submissions must have the `(PCF Measure minimum)` following measures: `(Listing of valid measure ids)`
9090
* 105 : CT - If multiple TINs/NPIs are submitted, each must be reported within a separate performer

commons/src/main/java/gov/cms/qpp/conversion/model/error/ProblemCode.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public enum ProblemCode implements LocalizedProblem {
2929
+ "Please ensure that the submission complies with the `(Submission year's)` implementation guide. "
3030
+ "`(Implementation guide link)`", true),
3131
MEASURE_GUID_MISSING(6, "The measure GUID `(Provided measure id)` is invalid. "
32-
+ "Please see the Table 14 of `(Submission year's)` Implementation Guide for valid measure GUIDs: "
32+
+ "Please see the Table 14 of the `(Submission year's)` Implementation Guide for valid measure GUIDs: "
3333
+ DocumentationReference.MEASURE_IDS, true),
3434
CHILD_MEASURE_MISSING(7, "The measure reference results must have at least one measure. "
3535
+ "Please review the measures section of your file as it cannot be empty."),
@@ -41,7 +41,7 @@ public enum ProblemCode implements LocalizedProblem {
4141
PI_MEASURE_PERFORMED_RNR_MEASURE_ID_NOT_SINGULAR(12, "This PI Measure Performed Reference and Results requires "
4242
+ "a single Measure ID"),
4343
DENOMINATOR_COUNT_INVALID(13, "Denominator count must be less than or equal to Initial Population count "
44-
+ "for the measure population `(measure population id)`. Please see the Table 14 of the Implementation guide for valid measure GUIDs: "
44+
+ "for the measure population `(measure population id)`. Please see the Table 14 of the `(Submission Year)` Implementation guide for valid measure GUIDs: "
4545
+ DocumentationReference.MEASURE_IDS, true),
4646
POPULATION_CRITERIA_COUNT_INCORRECT(14,
4747
"The electronic measure id: `(Current eMeasure ID)` requires `(Number of Subpopulations required)` "
@@ -190,7 +190,9 @@ public enum ProblemCode implements LocalizedProblem {
190190
PCF_MISSING_CEHRT_ID(97, "`(Program name)` QRDA-III Submissions require a valid CMS EHR Certification ID (Valid Format: XX15EXXXXXXXXXX)", true),
191191
PCF_ZERO_PERFORMANCE_RATE(98, "The performance rate cannot have a value of 0 and must be of value Null Attribute (NA)."),
192192
PCF_DUPLICATE_CEHRT(100, "More than one CMS EHR Certification ID was found. Please submit with only one CMS EHR Certification id."),
193-
PCF_DENOMINATOR_COUNT_INVALID(101, "Denominator count must be equal to Initial Population count for `(Program name)` measure population `(measure population id)`.", true),
193+
PCF_DENOMINATOR_COUNT_INVALID(101, "Denominator count must be equal to Initial Population count for `(Program name)` measure population `(measure population id)`."
194+
+ "Please see the Table 14 of `(Submission year's)` Implementation Guide for valid measure GUIDs: "
195+
+ DocumentationReference.MEASURE_IDS, true),
194196
PI_RESTRICTED_MEASURES(102, "A PI section cannot contain PI_HIE_5 with PI_HIE_1, PI_LVOTC_1, PI_HIE_4, or PI_LVITC_2", false),
195197
PCF_TOO_FEW_QUALITY_MEASURE_CATEGORY(103, "PCF Submissions must have the `(PCF Measure minimum)` "
196198
+ "following measures: `(Listing of valid measure ids)`", true),

converter/src/main/java/gov/cms/qpp/conversion/validate/MeasureDataValidator.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package gov.cms.qpp.conversion.validate;
22

3+
import gov.cms.qpp.conversion.Context;
34
import gov.cms.qpp.conversion.decode.AggregateCountDecoder;
45
import gov.cms.qpp.conversion.decode.MeasureDataDecoder;
56
import gov.cms.qpp.conversion.model.Node;
@@ -35,8 +36,8 @@ protected void performValidation(Node node) {
3536
}
3637

3738
Checker checker = checkErrors(node)
38-
.hasChildren(ProblemCode.MEASURE_PERFORMED_MISSING_AGGREGATE_COUNT.format(populationId))
39-
.childExact(ProblemCode.MEASURE_PERFORMED_MISSING_AGGREGATE_COUNT.format(populationId),
39+
.hasChildren(ProblemCode.MEASURE_PERFORMED_MISSING_AGGREGATE_COUNT.format(populationId, Context.REPORTING_YEAR))
40+
.childExact(ProblemCode.MEASURE_PERFORMED_MISSING_AGGREGATE_COUNT.format(populationId, Context.REPORTING_YEAR),
4041
1, TemplateId.PI_AGGREGATE_COUNT);
4142

4243
if (!checker.shouldShortcut()) {
@@ -46,7 +47,7 @@ protected void performValidation(Node node) {
4647
DuplicationCheckHelper.calculateDuplications(child, AggregateCountDecoder.AGGREGATE_COUNT)),
4748
AggregateCountDecoder.AGGREGATE_COUNT)
4849
.intValue(ProblemCode.AGGREGATE_COUNT_VALUE_NOT_INTEGER, AggregateCountDecoder.AGGREGATE_COUNT)
49-
.greaterThan(ProblemCode.MEASURE_DATA_VALUE_NOT_INTEGER.format(populationId), -1);
50+
.greaterThan(ProblemCode.MEASURE_DATA_VALUE_NOT_INTEGER.format(populationId, Context.REPORTING_YEAR), -1);
5051
}
5152
}
5253
}

converter/src/main/java/gov/cms/qpp/conversion/validate/QualityMeasureIdValidator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ private void validateDenominatorCount(Node denomCount, Node ipopCount, String de
232232
.incompleteValidation()
233233
.intValue(ProblemCode.AGGREGATE_COUNT_VALUE_NOT_INTEGER,
234234
AggregateCountDecoder.AGGREGATE_COUNT)
235-
.lessThanOrEqualTo(ProblemCode.DENOMINATOR_COUNT_INVALID.format(denominatorUuid),
235+
.lessThanOrEqualTo(ProblemCode.DENOMINATOR_COUNT_INVALID.format(denominatorUuid, Context.REPORTING_YEAR),
236236
Integer.parseInt(ipopCount.getValue(AggregateCountDecoder.AGGREGATE_COUNT)));
237237
}
238238

@@ -247,7 +247,7 @@ private void validateCpcDenominatorCount(Node denomCount, Node ipopCount, String
247247
.incompleteValidation()
248248
.intValue(ProblemCode.AGGREGATE_COUNT_VALUE_NOT_INTEGER,
249249
AggregateCountDecoder.AGGREGATE_COUNT)
250-
.valueIn(ProblemCode.PCF_DENOMINATOR_COUNT_INVALID.format(program, denominatorUuid), AggregateCountDecoder.AGGREGATE_COUNT,
250+
.valueIn(ProblemCode.PCF_DENOMINATOR_COUNT_INVALID.format(program, denominatorUuid, Context.REPORTING_YEAR), AggregateCountDecoder.AGGREGATE_COUNT,
251251
ipopCount.getValue(AggregateCountDecoder.AGGREGATE_COUNT));
252252
}
253253

converter/src/test/java/gov/cms/qpp/acceptance/QualityMeasureIdMultiRoundTripTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package gov.cms.qpp.acceptance;
22

33
import gov.cms.qpp.acceptance.helper.MarkupManipulator;
4+
import gov.cms.qpp.conversion.Context;
45
import gov.cms.qpp.conversion.Converter;
56
import gov.cms.qpp.conversion.InputStreamSupplierSource;
67
import gov.cms.qpp.conversion.PathSource;
@@ -164,7 +165,7 @@ void testRoundTripQualityMeasureIdWithDenomGreaterThanIpop() {
164165
}
165166

166167
assertThat(details).comparingElementsUsing(DetailsErrorEquals.INSTANCE)
167-
.contains(ProblemCode.DENOMINATOR_COUNT_INVALID.format("D4D2DEE7-385A-4C28-A09C-884A062A97AA"));
168+
.contains(ProblemCode.DENOMINATOR_COUNT_INVALID.format("D4D2DEE7-385A-4C28-A09C-884A062A97AA", Context.REPORTING_YEAR));
168169
}
169170

170171
@Test

converter/src/test/java/gov/cms/qpp/acceptance/QualityMeasureIdRoundTripTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ void testMissingPerfDenomAggregateCount() {
205205

206206
String populationId = "F50E5334-415D-482F-A30D-0623C082B602";
207207

208-
LocalizedProblem error = ProblemCode.MEASURE_PERFORMED_MISSING_AGGREGATE_COUNT.format(populationId);
208+
LocalizedProblem error = ProblemCode.MEASURE_PERFORMED_MISSING_AGGREGATE_COUNT.format(populationId, Context.REPORTING_YEAR);
209209
assertThat(details).comparingElementsUsing(DetailsErrorEquals.INSTANCE)
210210
.contains(error);
211211
}

converter/src/test/java/gov/cms/qpp/conversion/validate/MeasureDataValidatorTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ void missingAggregateCount() {
4646
List<Detail> errors = validator.validateSingleNode(testNode).getErrors();
4747
assertWithMessage("missing error")
4848
.that(errors).comparingElementsUsing(DetailsErrorEquals.INSTANCE)
49-
.containsExactly(ProblemCode.MEASURE_PERFORMED_MISSING_AGGREGATE_COUNT.format(EMPTY_POPULATION_ID));
49+
.containsExactly(ProblemCode.MEASURE_PERFORMED_MISSING_AGGREGATE_COUNT.format(EMPTY_POPULATION_ID, Context.REPORTING_YEAR));
5050
}
5151

5252
@Test
@@ -86,7 +86,7 @@ void negativeAggregateCountsFails() throws Exception {
8686
List<Detail> errors = validator.validateSingleNode(testNode).getErrors();
8787
assertWithMessage("missing error")
8888
.that(errors).comparingElementsUsing(DetailsErrorEquals.INSTANCE)
89-
.containsExactly(ProblemCode.MEASURE_DATA_VALUE_NOT_INTEGER.format(EMPTY_POPULATION_ID));
89+
.containsExactly(ProblemCode.MEASURE_DATA_VALUE_NOT_INTEGER.format(EMPTY_POPULATION_ID, Context.REPORTING_YEAR));
9090
}
9191

9292
@Test
@@ -109,7 +109,7 @@ void multipleNegativeMeasureDataTest() {
109109
.that(errors).comparingElementsUsing(DetailsErrorEquals.INSTANCE)
110110
.containsAtLeast(ProblemCode.AGGREGATE_COUNT_VALUE_NOT_INTEGER,
111111
ProblemCode.AGGREGATE_COUNT_VALUE_NOT_SINGULAR.format(TemplateId.MEASURE_DATA_CMS_V4.name(), 2),
112-
ProblemCode.MEASURE_DATA_VALUE_NOT_INTEGER.format("58347456-D1F3-4BBB-9B35-5D42825A0AB3"));
112+
ProblemCode.MEASURE_DATA_VALUE_NOT_INTEGER.format("58347456-D1F3-4BBB-9B35-5D42825A0AB3", Context.REPORTING_YEAR));
113113
}
114114

115115
private List<Detail> getErrors(AllErrors content) {

converter/src/test/java/gov/cms/qpp/conversion/validate/QualityMeasureIdValidatorTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import com.google.common.collect.Lists;
1515

16+
import gov.cms.qpp.conversion.Context;
1617
import gov.cms.qpp.conversion.decode.AggregateCountDecoder;
1718
import gov.cms.qpp.conversion.decode.ClinicalDocumentDecoder;
1819
import gov.cms.qpp.conversion.model.Node;
@@ -332,7 +333,7 @@ void testInternalDenomCountGreaterThanIpopCount() {
332333
List<Detail> details = objectUnderTest.validateSingleNode(measureReferenceResultsNode).getErrors();
333334
assertWithMessage("Must contain the correct error message.")
334335
.that(details).comparingElementsUsing(DetailsErrorEquals.INSTANCE)
335-
.containsExactly(ProblemCode.DENOMINATOR_COUNT_INVALID.format("375D0559-C749-4BB9-9267-81EDF447650B"));
336+
.containsExactly(ProblemCode.DENOMINATOR_COUNT_INVALID.format("375D0559-C749-4BB9-9267-81EDF447650B", Context.REPORTING_YEAR));
336337
}
337338

338339
@Test

0 commit comments

Comments
 (0)