diff --git a/pom.xml b/pom.xml
index 2c85e912..68866c66 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,8 @@
3.0.8.20180531
3.0.0.201805310501
1.0.0.20170920
- 3.0.0.20170920
+
+ 3.0.0.20200422
diff --git a/src/main/java/org/sitenv/referenceccda/dto/ValidationResultsMetaData.java b/src/main/java/org/sitenv/referenceccda/dto/ValidationResultsMetaData.java
index 420f0e3a..3963a2ef 100644
--- a/src/main/java/org/sitenv/referenceccda/dto/ValidationResultsMetaData.java
+++ b/src/main/java/org/sitenv/referenceccda/dto/ValidationResultsMetaData.java
@@ -22,6 +22,7 @@ public class ValidationResultsMetaData {
private int vocabularyValidationConfigurationsCount;
private int vocabularyValidationConfigurationsErrorCount;
private String severityLevel;
+ private long totalConformanceErrorChecks;
public ValidationResultsMetaData() {
for (ValidationResultType resultType : ValidationResultType.values()) {
@@ -48,12 +49,10 @@ public String getCcdaVersion() {
public String getObjectiveProvided() {
return objectiveProvided;
}
-
public void setObjectiveProvided(String objectiveProvided) {
this.objectiveProvided = objectiveProvided;
}
-
public boolean isServiceError() {
return serviceError;
@@ -126,4 +125,12 @@ public String getSeverityLevel() {
public void setSeverityLevel(String severityLevel) {
this.severityLevel = severityLevel;
}
+
+ public long getTotalConformanceErrorChecks() {
+ return totalConformanceErrorChecks;
+ }
+
+ public void setTotalConformanceErrorChecks(long totalConformanceErrorChecks) {
+ this.totalConformanceErrorChecks = totalConformanceErrorChecks;
+ }
}
diff --git a/src/main/java/org/sitenv/referenceccda/services/ReferenceCCDAValidationService.java b/src/main/java/org/sitenv/referenceccda/services/ReferenceCCDAValidationService.java
index de24592d..398f69ce 100644
--- a/src/main/java/org/sitenv/referenceccda/services/ReferenceCCDAValidationService.java
+++ b/src/main/java/org/sitenv/referenceccda/services/ReferenceCCDAValidationService.java
@@ -220,18 +220,21 @@ private List doContentValidation(String validationObjec
private ValidationResultsMetaData buildValidationMedata(List validatorResults,
String validationObjective, SeverityLevel severityLevel) {
ValidationResultsMetaData resultsMetaData = new ValidationResultsMetaData();
+
for (RefCCDAValidationResult result : validatorResults) {
resultsMetaData.addCount(result.getType());
}
resultsMetaData.setObjectiveProvided(validationObjective);
resultsMetaData.setCcdaDocumentType(referenceCCDAValidator.getCcdaDocumentType());
resultsMetaData.setCcdaVersion(referenceCCDAValidator.getCcdaVersion().getVersion());
+ resultsMetaData.setTotalConformanceErrorChecks(referenceCCDAValidator.getTotalConformanceErrorChecks());
resultsMetaData.setSeverityLevel(severityLevel.name());
GlobalCodeValidatorResults globalCodeValidatorResults = vocabularyCCDAValidator.getGlobalCodeValidatorResults();
resultsMetaData.setVocabularyValidationConfigurationsCount(
globalCodeValidatorResults.getVocabularyValidationConfigurationsCount());
resultsMetaData.setVocabularyValidationConfigurationsErrorCount(
- globalCodeValidatorResults.getVocabularyValidationConfigurationsErrorCount());
+ globalCodeValidatorResults.getVocabularyValidationConfigurationsErrorCount());
+
return resultsMetaData;
}
diff --git a/src/main/java/org/sitenv/referenceccda/validators/schema/ReferenceCCDAValidator.java b/src/main/java/org/sitenv/referenceccda/validators/schema/ReferenceCCDAValidator.java
index 9572579d..b6daec7f 100644
--- a/src/main/java/org/sitenv/referenceccda/validators/schema/ReferenceCCDAValidator.java
+++ b/src/main/java/org/sitenv/referenceccda/validators/schema/ReferenceCCDAValidator.java
@@ -62,10 +62,12 @@ public class ReferenceCCDAValidator extends BaseCCDAValidator implements CCDAVal
private static Logger logger = Logger.getLogger(ReferenceCCDAValidator.class);
private static final String IG_ISSUE_ID = "a.consol", MU_ISSUE_ID = "a.mu2con", DS4P_ISSUE_ID = "ds4p";
+ private static final boolean CAPTURE_VALIDATION_STATISTICS = true;
private boolean isValidationObjectiveMu2Type = false;
private boolean isValidationObjectiveDS4PType = false;
private String ccdaDocumentType = CCDATypes.UNKNOWN_DOC_TYPE;
private CCDAVersion ccdaVersion = CCDAVersion.NOT_CCDA;
+ private long totalConformanceErrorChecks = -1L;
public boolean isValidationObjectiveMu2Type() {
return isValidationObjectiveMu2Type;
@@ -82,6 +84,10 @@ public String getCcdaDocumentType() {
public CCDAVersion getCcdaVersion() {
return ccdaVersion;
}
+
+ public long getTotalConformanceErrorChecks() {
+ return totalConformanceErrorChecks;
+ }
public ArrayList validateFile(String validationObjective, String referenceFileName,
String ccdaFile) throws SAXException, Exception {
@@ -91,7 +97,7 @@ public ArrayList validateFile(String validationObjectiv
public ArrayList validateFile(String validationObjective, String referenceFileName,
String ccdaFile, SeverityLevel severityLevel) throws SAXException, Exception {
final XPathIndexer xpathIndexer = new XPathIndexer();
- ValidationResult result = new ValidationResult();
+ ValidationResult result = new ValidationResult(CAPTURE_VALIDATION_STATISTICS);
InputStream in = null, in2 = null;
trackXPathsInXML(xpathIndexer, ccdaFile);
try {
@@ -124,7 +130,7 @@ private static void closeInputStreams(List inputStreams) {
}
}
}
- }
+ }
private void validateDocumentByTypeUsingMDHTApi(InputStream in, InputStream in2, String validationObjective,
ValidationResult result) throws Exception {
@@ -196,7 +202,7 @@ private void validateDocumentByTypeUsingMDHTApi(InputStream in, InputStream in2,
+ ValidationObjectives.getObjectives() + " " + CCDATypes.getTypes());
}
ccdaDocumentType = determineCcdaDocumentType(clinicalDocument);
- ccdaVersion = determineCcdaDocumentVersion(clinicalDocument);
+ ccdaVersion = determineCcdaDocumentVersion(clinicalDocument);
logger.info("ccdaVersion identified as: " + ccdaVersion.getVersion());
}
@@ -231,7 +237,7 @@ private CCDAVersion determineCcdaDocumentVersion(ClinicalDocument clinicalDocume
}
logger.info("returning version by determineCcdaDocumentVersion method end");
return version;
- }
+ }
private String determineCcdaDocumentType(ClinicalDocument clinicalDocument) {
UsrhSubType usrhSubType = null;
@@ -330,6 +336,8 @@ private static boolean isValidationObjectiveCCDAType(String validationObjective)
private ArrayList processValidationResults(final XPathIndexer xpathIndexer,
ValidationResult result, SeverityLevel severityLevel) {
+ totalConformanceErrorChecks = result.getValidationStatistics().shallCount;
+
ArrayList results = new ArrayList();
switch (severityLevel) {
case ERROR:
@@ -351,7 +359,7 @@ private ArrayList processValidationResults(final XPathI
break;
}
return results;
- }
+ }
private void addValidationResults(ArrayList results, ValidationResultType currentValidationResultType,
List diagnosticsOfCurrentSeverity, final XPathIndexer xpathIndexer) {
diff --git a/src/test/java/org/sitenv/referenceccda/test/tests/RefCCDATest.java b/src/test/java/org/sitenv/referenceccda/test/tests/RefCCDATest.java
index 115a76ad..57887b34 100644
--- a/src/test/java/org/sitenv/referenceccda/test/tests/RefCCDATest.java
+++ b/src/test/java/org/sitenv/referenceccda/test/tests/RefCCDATest.java
@@ -49,7 +49,7 @@ public class RefCCDATest extends ReferenceValidationTester implements Validation
private static final boolean LOG_RESULTS_TO_CONSOLE = true;
- private static final boolean SHOW_ERRORS_ONLY = false;
+ private static final boolean SHOW_ERRORS_ONLY = true;
private static final boolean LOG_LOG4J = true;
static {
if (LOG_LOG4J) {
@@ -471,7 +471,7 @@ public void tempResults_UTF8_BOM_EttGg_runReferenceCCDAValidation_Test() {
}
@Test
- public void mDHTSeverityLevelTest() {
+ public void mdhtSeverityLevelTest() {
setupInitParameters(true);
injectDependencies();
@@ -622,6 +622,22 @@ public void vocabAndMdhtSeverityLevelWarningMultipleValidatorsPerExpressionTest(
public void vocabAndMdhtSeverityLevelInfoMultipleValidatorsPerExpressionTest() {
vocabAndMdhtSeverityLevelConfigTestImpl(SeverityLevel.INFO, false, "severityLevelLimitTestConfig");
}
+
+ @Test
+ public void mdhtValidationStatisticsShallChecksTest() {
+ setupInitParameters(true);
+ injectDependencies();
+
+ ValidationResultsDto results = runReferenceCCDAValidationServiceAndReturnResults(CCDATypes.NON_SPECIFIC_CCDAR2,
+ CCD_R21, new VocabularyCCDAValidator(getVocabularyValidationService()),
+ "ccdaReferenceValidatorConfigTest");
+
+ printResultsBasedOnFlags(results.getCcdaValidationResults());
+
+ long checks = results.getResultsMetaData().getTotalConformanceErrorChecks();
+ println("IG Checks: " + checks);
+ assertTrue("There should be a positive number of IG checks but there is " + checks + " instead.", checks > 0);
+ }
private static List getGenericConfiguredExpressionsForTesting() {
final String validationMessage = "Will always fail";
@@ -897,7 +913,7 @@ private static ValidationResultsDto runReferenceCCDAValidationServiceAndReturnRe
severityLevel);
}
return referenceCcdaValidationService.validateCCDA(validationObjective, "", mockSample, vocabularyConfig);
- }
+ }
private static void printResultsBasedOnFlags(List results) {
if (SHOW_ERRORS_ONLY) {