diff --git a/hapi-deployable-pom/pom.xml b/hapi-deployable-pom/pom.xml index 85f29e1e091..2781a057c6f 100644 --- a/hapi-deployable-pom/pom.xml +++ b/hapi-deployable-pom/pom.xml @@ -151,6 +151,10 @@ net.bytebuddy byte-buddy + + com.sun.xml.bind + jaxb-impl + .*\.txt$ diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/validation/schematron/SchematronBaseValidator.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/validation/schematron/SchematronBaseValidator.java index 30e0144d109..9bbd1f839fb 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/validation/schematron/SchematronBaseValidator.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/validation/schematron/SchematronBaseValidator.java @@ -24,15 +24,21 @@ import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.rest.api.EncodingEnum; import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; import ca.uhn.fhir.util.BundleUtil; -import ca.uhn.fhir.validation.*; +import ca.uhn.fhir.validation.FhirValidator; +import ca.uhn.fhir.validation.IValidationContext; +import ca.uhn.fhir.validation.IValidatorModule; +import ca.uhn.fhir.validation.ResultSeverityEnum; +import ca.uhn.fhir.validation.SchemaBaseValidator; +import ca.uhn.fhir.validation.SingleValidationMessage; +import ca.uhn.fhir.validation.ValidationContext; import com.helger.commons.error.IError; import com.helger.commons.error.list.IErrorList; import com.helger.schematron.ISchematronResource; import com.helger.schematron.SchematronHelper; +import com.helger.schematron.svrl.jaxb.SchematronOutputType; import com.helger.schematron.xslt.SchematronResourceSCH; import org.hl7.fhir.instance.model.api.IBaseBundle; import org.hl7.fhir.instance.model.api.IBaseResource; -import org.oclc.purl.dsdl.svrl.SchematronOutputType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/hapi-fhir-base/src/main/resources/ca/uhn/fhir/i18n/hapi-messages.properties b/hapi-fhir-base/src/main/resources/ca/uhn/fhir/i18n/hapi-messages.properties index 564dcf6469f..411847f5263 100644 --- a/hapi-fhir-base/src/main/resources/ca/uhn/fhir/i18n/hapi-messages.properties +++ b/hapi-fhir-base/src/main/resources/ca/uhn/fhir/i18n/hapi-messages.properties @@ -2,6 +2,7 @@ ca.uhn.fhir.jpa.term.BaseTermReadSvcImpl.expansionRefersToUnknownCs=Unknown CodeSystem URI "{0}" referenced from ValueSet ca.uhn.fhir.jpa.term.BaseTermReadSvcImpl.valueSetNotYetExpanded=ValueSet "{0}" has not yet been pre-expanded. Performing in-memory expansion without parameters. Current status: {1} | {2} ca.uhn.fhir.jpa.term.BaseTermReadSvcImpl.valueSetNotYetExpanded_OffsetNotAllowed=ValueSet expansion can not combine "offset" with "ValueSet.compose.exclude" unless the ValueSet has been pre-expanded. ValueSet "{0}" must be pre-expanded for this operation to work. +ca.uhn.fhir.jpa.term.BaseTermReadSvcImpl.valueSetExpandedUsingPreExpansion=ValueSet was expanded using a pre-calculated expansion diff --git a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/5_3_0/changes.yaml b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/5_3_0/changes.yaml index fb5bccc3d74..5f5fc84a2f6 100644 --- a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/5_3_0/changes.yaml +++ b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/5_3_0/changes.yaml @@ -18,4 +18,6 @@ * Lucene(HAPI FHIR JPA Server): 5.5.5 -> 8.7.0 * Spring Boot (JPA Starter): 2.2.6.RELEASE -> 2.4.1 * JANSI (CLI): 1.18 -> 2.1.1 +* PH-Schematron (SCH Validator): 5.2.0 -> 5.6.5 +* PH-Commons (SCH Validator): 5.3.8 -> 9.5.4 " diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/BaseTermReadSvcImpl.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/BaseTermReadSvcImpl.java index fc894e424a4..f8fcedd3669 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/BaseTermReadSvcImpl.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/term/BaseTermReadSvcImpl.java @@ -521,6 +521,8 @@ public abstract class BaseTermReadSvcImpl implements ITermReadSvc { /* * ValueSet is pre-expanded in database so let's use that */ + String msg = myContext.getLocalizer().getMessage(BaseTermReadSvcImpl.class, "valueSetExpandedUsingPreExpansion"); + theAccumulator.addMessage(msg); expandConcepts(theAccumulator, termValueSet, theFilter, theAdd); } diff --git a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/r4/BaseJpaR4Test.java b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/r4/BaseJpaR4Test.java index 8f1a8eefa35..a8c6fab7341 100644 --- a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/r4/BaseJpaR4Test.java +++ b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/r4/BaseJpaR4Test.java @@ -812,7 +812,8 @@ public abstract class BaseJpaR4Test extends BaseJpaTest implements ITestDataBuil Optional first = stream.findFirst(); if (!first.isPresent()) { - String failureMessage = String.format("Expanded ValueSet %s did not contain concept [%s|%s|%s] with [%d] designations", theValueSet.getId(), theSystem, theCode, theDisplay, theDesignationCount); + String expandedValueSetString = myFhirCtx.newJsonParser().setPrettyPrint(true).encodeResourceToString(theValueSet); + String failureMessage = String.format("Expanded ValueSet %s did not contain concept [%s|%s|%s] with [%d] designations. Outcome:\n%s", theValueSet.getId(), theSystem, theCode, theDisplay, theDesignationCount, expandedValueSetString); fail(failureMessage); return null; } else { diff --git a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/ValueSetExpansionR4Test.java b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/ValueSetExpansionR4Test.java index 67d04ee1b6c..58634856eb6 100644 --- a/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/ValueSetExpansionR4Test.java +++ b/hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/term/ValueSetExpansionR4Test.java @@ -655,6 +655,11 @@ public class ValueSetExpansionR4Test extends BaseTermR4Test { CodeSystem codeSystem = myCodeSystemDao.read(myExtensionalCsId); ourLog.info("CodeSystem:\n" + myFhirCtx.newJsonParser().setPrettyPrint(true).encodeResourceToString(codeSystem)); + // If this ever fails, it just means that new codes have been added to the + // code system used by this test, so the numbers below may also need to be + // updated + assertEquals(24, codeSystem.getConcept().size()); + ValueSet valueSet = myValueSetDao.read(myExtensionalVsId); ourLog.info("ValueSet:\n" + myFhirCtx.newJsonParser().setPrettyPrint(true).encodeResourceToString(valueSet)); @@ -662,9 +667,11 @@ public class ValueSetExpansionR4Test extends BaseTermR4Test { ValueSetExpansionOptions options = new ValueSetExpansionOptions() .setOffset(0) - .setCount(23); + .setCount(24); ValueSet expandedValueSet = myTermSvc.expandValueSet(options, valueSet); - ourLog.info("Expanded ValueSet:\n" + myFhirCtx.newJsonParser().setPrettyPrint(true).encodeResourceToString(expandedValueSet)); + String expandedValueSetString = myFhirCtx.newJsonParser().setPrettyPrint(true).encodeResourceToString(expandedValueSet); + ourLog.info("Expanded ValueSet:\n" + expandedValueSetString); + assertThat(expandedValueSetString, containsString("ValueSet was expanded using a pre-calculated expansion")); assertEquals(codeSystem.getConcept().size(), expandedValueSet.getExpansion().getTotal()); assertEquals(myDaoConfig.getPreExpandValueSetsDefaultOffset(), expandedValueSet.getExpansion().getOffset()); @@ -672,9 +679,9 @@ public class ValueSetExpansionR4Test extends BaseTermR4Test { assertEquals("offset", expandedValueSet.getExpansion().getParameter().get(0).getName()); assertEquals(0, expandedValueSet.getExpansion().getParameter().get(0).getValueIntegerType().getValue().intValue()); assertEquals("count", expandedValueSet.getExpansion().getParameter().get(1).getName()); - assertEquals(23, expandedValueSet.getExpansion().getParameter().get(1).getValueIntegerType().getValue().intValue()); + assertEquals(24, expandedValueSet.getExpansion().getParameter().get(1).getValueIntegerType().getValue().intValue()); - assertEquals(23, expandedValueSet.getExpansion().getContains().size()); + assertEquals(24, expandedValueSet.getExpansion().getContains().size()); ValueSet.ValueSetExpansionContainsComponent concept = assertExpandedValueSetContainsConcept(expandedValueSet, "http://acme.org", "8450-9", "Systolic blood pressure--expiration", 2); diff --git a/pom.xml b/pom.xml index c875f34c4f7..4f13e131e73 100644 --- a/pom.xml +++ b/pom.xml @@ -767,8 +767,8 @@ 3.1.0 1.8 4.0.0.Beta3 - 5.2.0 - 9.3.8 + 5.6.5 + 9.5.4 2.8.8 9.8.0-15 1.2_5 @@ -892,6 +892,12 @@ com.helger ph-schematron ${ph_schematron_version} + + + jakarta.xml.bind + jakarta.xml.bind-api + + com.helger