diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml index 119b493..e677bcc 100644 --- a/.github/workflows/maven-build.yml +++ b/.github/workflows/maven-build.yml @@ -1,9 +1,6 @@ -# This workflow will build a Java project with Maven -# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven - name: Java CI Build with Maven -on: [push, pull_request] +on: [pull_request] jobs: build: @@ -11,17 +8,18 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up JDK 17 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: - distribution: 'temurin' + distribution: 'zulu' java-version: 17 - - uses: s4u/maven-settings-action@v2.8.0 + cache: 'maven' + - uses: s4u/maven-settings-action@7802f6aec16c9098b4798ad1f1d8ac75198194bd #3.0.0 with: servers: | [ {"id": "github-mii", "username": "${{ github.actor }}", "password": "${{ secrets.GITHUB_TOKEN }}"}] - name: Build with Maven env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: mvn -B verify -fae --file pom.xml + run: mvn --batch-mode --fail-at-end clean verify diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 7acd425..a699954 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -1,6 +1,3 @@ -# This workflow will publish a Java project with Maven -# For more information see: https://docs.github.com/en/free-pro-team@latest/actions/guides/publishing-java-packages-with-maven - name: Java CI Publish with Maven on: @@ -13,24 +10,24 @@ on: jobs: publish: - # Only run if releases are published or pull requests are merged, - # omit running if pull requests are closed without merging - if: github.event.pull_request.merged || github.event.action == 'published' + # Only run if pull requests are merged, omit running if pull requests are closed without merging + if: github.event.pull_request.merged runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up JDK 17 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: - distribution: 'temurin' + distribution: 'zulu' java-version: 17 - - uses: s4u/maven-settings-action@v2.8.0 + cache: 'maven' + - uses: s4u/maven-settings-action@7802f6aec16c9098b4798ad1f1d8ac75198194bd #3.0.0 with: servers: | [ {"id": "github-mii", "username": "${{ github.actor }}", "password": "${{ secrets.GITHUB_TOKEN }}"}] - name: Publish with Maven env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: mvn -B deploy --file pom.xml \ No newline at end of file + run: mvn --batch-mode --fail-at-end clean deploy \ No newline at end of file diff --git a/pom.xml b/pom.xml index caffb08..072790d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,14 +6,14 @@ de.medizininformatik-initiative mii-process-report - 1.0.0.0 + 1.1.0.0 UTF-8 17 17 - 1.3.1 + 1.5.1 ../mii-processes-test-setup @@ -45,19 +45,19 @@ de.medizininformatik-initiative mii-processes-common - 1.0.0.0 + 1.0.1.0 org.springframework spring-web - 6.0.13 + 6.1.6 provided org.slf4j slf4j-api - 2.0.9 + 2.0.13 provided @@ -78,7 +78,7 @@ org.mockito mockito-core - 3.12.4 + 5.12.0 test @@ -94,7 +94,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.11.0 + 3.13.0 ${compileSource} ${compileTarget} @@ -103,12 +103,12 @@ org.apache.maven.plugins maven-surefire-plugin - 3.2.1 + 3.2.5 org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 @@ -125,7 +125,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.1 + 3.5.3 package @@ -213,6 +213,26 @@ + + org.apache.maven.plugins + maven-site-plugin + 3.12.1 + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 3.5.0 + + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.5.0 + + + org.apache.maven.plugins + maven-pmd-plugin + 3.22.0 + @@ -225,6 +245,9 @@ GitHub Packages https://maven.pkg.github.com/medizininformatik-initiative/mii-process-report + + ${project.artifactId}-site + @@ -375,21 +398,21 @@ ${testSetup.location}/docker/dic1/bpe/process - ${project.artifactId}-${project.version}.jar + ${project.artifactId}-*.jar false ${testSetup.location}/docker/dic2/bpe/process - ${project.artifactId}-${project.version}.jar + ${project.artifactId}-*.jar false ${testSetup.location}/docker/hrp/bpe/process - ${project.artifactId}-${project.version}.jar + ${project.artifactId}-*.jar false @@ -400,4 +423,26 @@ + + + + + org.apache.maven.plugins + maven-pmd-plugin + + + com.github.spotbugs + spotbugs-maven-plugin + + + + jp.skypencil.findbugs.slf4j + bug-pattern + 1.5.0 + + + + + + \ No newline at end of file diff --git a/src/main/java/de/medizininformatik_initiative/process/report/ConstantsReport.java b/src/main/java/de/medizininformatik_initiative/process/report/ConstantsReport.java index 86e4995..857e272 100644 --- a/src/main/java/de/medizininformatik_initiative/process/report/ConstantsReport.java +++ b/src/main/java/de/medizininformatik_initiative/process/report/ConstantsReport.java @@ -43,7 +43,8 @@ public interface ConstantsReport String BPMN_EXECUTION_VARIABLE_REPORT_RECEIVE_ERROR_MESSAGE = "reportReceiveErrorMessage"; String CODESYSTEM_REPORT = "http://medizininformatik-initiative.de/fhir/CodeSystem/report"; - String CODESYSTEM_REPORT_VALUE_SEARCH_BUNDLE = "search-bundle"; + + String CODESYSTEM_REPORT_VALUE_SEARCH_BUNDLE = "search-bundle-v"; String CODESYSTEM_REPORT_VALUE_SEARCH_BUNDLE_RESPONSE_REFERENCE = "search-bundle-response-reference"; String CODESYSTEM_REPORT_VALUE_REPORT_STATUS = "report-status"; String CODESYSTEM_REPORT_VALUE_TIMER_INTERVAL = "timer-interval"; diff --git a/src/main/java/de/medizininformatik_initiative/process/report/ReportProcessPluginDefinition.java b/src/main/java/de/medizininformatik_initiative/process/report/ReportProcessPluginDefinition.java index 56ea038..5d94e18 100644 --- a/src/main/java/de/medizininformatik_initiative/process/report/ReportProcessPluginDefinition.java +++ b/src/main/java/de/medizininformatik_initiative/process/report/ReportProcessPluginDefinition.java @@ -1,7 +1,6 @@ package de.medizininformatik_initiative.process.report; import java.time.LocalDate; -import java.util.Arrays; import java.util.List; import java.util.Map; @@ -11,8 +10,8 @@ public class ReportProcessPluginDefinition implements ProcessPluginDefinition { - public static final String VERSION = "1.0.0.0"; - public static final LocalDate RELEASE_DATE = LocalDate.of(2023, 10, 31); + public static final String VERSION = "1.1.0.0"; + public static final LocalDate RELEASE_DATE = LocalDate.of(2024, 06, 11); @Override public String getName() @@ -74,13 +73,12 @@ public Map> getFhirResourcesByProcessId() var vReportStatusSend = "fhir/ValueSet/report-status-send.xml"; return Map.of(ConstantsReport.PROCESS_NAME_FULL_REPORT_AUTOSTART, - Arrays.asList( - aAutostart, cReport, sAutostartStart, sAutostartStop, tAutostartStart, tAutostartStop, vReport), + List.of(aAutostart, cReport, sAutostartStart, sAutostartStop, tAutostartStart, tAutostartStop, vReport), ConstantsReport.PROCESS_NAME_FULL_REPORT_RECEIVE, - Arrays.asList(aReceive, cReport, cReportStatus, eReportStatusError, nReportIdent, sSearchBundle, + List.of(aReceive, cReport, cReportStatus, eReportStatusError, nReportIdent, sSearchBundle, sSearchBundleResponse, sSend, vReport, vReportStatusReceive), ConstantsReport.PROCESS_NAME_FULL_REPORT_SEND, - Arrays.asList(aSend, cReport, cReportStatus, eReportStatusError, nReportIdent, sReceive, sSearchBundle, + List.of(aSend, cReport, cReportStatus, eReportStatusError, nReportIdent, sReceive, sSearchBundle, sSearchBundleResponse, sSendStart, tSendStart, vReport, vReportStatusSend)); } } diff --git a/src/main/java/de/medizininformatik_initiative/process/report/message/SendReceipt.java b/src/main/java/de/medizininformatik_initiative/process/report/message/SendReceipt.java index c1ea06b..230b1d5 100644 --- a/src/main/java/de/medizininformatik_initiative/process/report/message/SendReceipt.java +++ b/src/main/java/de/medizininformatik_initiative/process/report/message/SendReceipt.java @@ -51,12 +51,10 @@ private Stream createReceiptError(Variables variables) private Task.ParameterComponent receiveToReceiptStatus(Task.ParameterComponent parameterComponent) { Type value = parameterComponent.getValue(); - if (value instanceof Coding coding) + if (value instanceof Coding coding + && ConstantsReport.CODESYSTEM_REPORT_STATUS_VALUE_RECEIVE_ERROR.equals(coding.getCode())) { - if (ConstantsReport.CODESYSTEM_REPORT_STATUS_VALUE_RECEIVE_ERROR.equals(coding.getCode())) - { - coding.setCode(ConstantsReport.CODESYSTEM_REPORT_STATUS_VALUE_RECEIPT_ERROR); - } + coding.setCode(ConstantsReport.CODESYSTEM_REPORT_STATUS_VALUE_RECEIPT_ERROR); } return parameterComponent; diff --git a/src/main/java/de/medizininformatik_initiative/process/report/message/SendReport.java b/src/main/java/de/medizininformatik_initiative/process/report/message/SendReport.java index 29bb167..37977de 100644 --- a/src/main/java/de/medizininformatik_initiative/process/report/message/SendReport.java +++ b/src/main/java/de/medizininformatik_initiative/process/report/message/SendReport.java @@ -69,13 +69,11 @@ protected void handleIntermediateThrowEventError(DelegateExecution execution, Va if (task != null) { String statusCode = ConstantsReport.CODESYSTEM_REPORT_STATUS_VALUE_NOT_REACHABLE; - if (exception instanceof WebApplicationException webApplicationException) + if (exception instanceof WebApplicationException webApplicationException + && webApplicationException.getResponse() != null + && webApplicationException.getResponse().getStatus() == Response.Status.FORBIDDEN.getStatusCode()) { - if (webApplicationException.getResponse() != null && webApplicationException.getResponse() - .getStatus() == Response.Status.FORBIDDEN.getStatusCode()) - { - statusCode = ConstantsReport.CODESYSTEM_REPORT_STATUS_VALUE_NOT_ALLOWED; - } + statusCode = ConstantsReport.CODESYSTEM_REPORT_STATUS_VALUE_NOT_ALLOWED; } task.addOutput(statusGenerator.createReportStatusOutput(statusCode, "Send report failed")); diff --git a/src/main/java/de/medizininformatik_initiative/process/report/service/CheckSearchBundle.java b/src/main/java/de/medizininformatik_initiative/process/report/service/CheckSearchBundle.java index c7deae4..fd81a1f 100644 --- a/src/main/java/de/medizininformatik_initiative/process/report/service/CheckSearchBundle.java +++ b/src/main/java/de/medizininformatik_initiative/process/report/service/CheckSearchBundle.java @@ -35,10 +35,12 @@ public class CheckSearchBundle extends AbstractServiceDelegate private static final List DATE_SEARCH_PARAMS = List.of("date", "recorded-date", "onset-date", "effective", "effective-time", "authored", "collected", "issued", "period", "location-period", "occurrence"); + private static final List CODE_SEARCH_PARAMS = List.of("code", "ingredient-code"); private static final List OTHER_SEARCH_PARAMS = List.of("_profile", "type", SUMMARY_SEARCH_PARAM); private static final List VALID_SEARCH_PARAMS = Stream - .concat(DATE_SEARCH_PARAMS.stream(), OTHER_SEARCH_PARAMS.stream()).toList(); + .of(DATE_SEARCH_PARAMS.stream(), CODE_SEARCH_PARAMS.stream(), OTHER_SEARCH_PARAMS.stream()).flatMap(s -> s) + .toList(); public CheckSearchBundle(ProcessPluginApi api) { @@ -114,6 +116,7 @@ private void testRequestUrls(List searches) testContainsSummaryCount(uriComponents); testContainsValidSearchParams(uriComponents); testContainsValidDateSearchParams(uriComponents); + testContainsValidCodeSearchParams(uriComponents); } private void testContainsSummaryCount(List uriComponents) @@ -169,4 +172,24 @@ private void testSearchParamDateValues(Map queryParams) "Search Bundle contains date search params not limited to a year - [" + erroneousDateValues.stream() .map(e -> e.getKey() + ":" + e.getValue()).collect(Collectors.joining(",")) + "]"); } + + private void testContainsValidCodeSearchParams(List uriComponents) + { + uriComponents.stream().filter(u -> !CAPABILITY_STATEMENT_PATH.equals(u.getPath())) + .map(u -> u.getQueryParams().toSingleValueMap()).forEach(this::testSearchParamCodeValues); + } + + private void testSearchParamCodeValues(Map queryParams) + { + List> codeParams = queryParams.entrySet().stream() + .filter(e -> CODE_SEARCH_PARAMS.contains(MODIFIERS.matcher(e.getKey()).replaceAll(""))).toList(); + + List> erroneousCodeValues = codeParams.stream() + .filter(e -> !e.getValue().endsWith("|")).toList(); + + if (erroneousCodeValues.size() > 0) + throw new RuntimeException( + "Search Bundle contains code search params not limited to system - [" + erroneousCodeValues.stream() + .map(e -> e.getKey() + ":" + e.getValue()).collect(Collectors.joining(",")) + "]"); + } } diff --git a/src/main/java/de/medizininformatik_initiative/process/report/service/DownloadSearchBundle.java b/src/main/java/de/medizininformatik_initiative/process/report/service/DownloadSearchBundle.java index 0726dc9..28ac968 100644 --- a/src/main/java/de/medizininformatik_initiative/process/report/service/DownloadSearchBundle.java +++ b/src/main/java/de/medizininformatik_initiative/process/report/service/DownloadSearchBundle.java @@ -30,12 +30,16 @@ public class DownloadSearchBundle extends AbstractServiceDelegate implements Ini private final ReportStatusGenerator statusGenerator; private final DataLogger dataLogger; - public DownloadSearchBundle(ProcessPluginApi api, ReportStatusGenerator statusGenerator, DataLogger dataLogger) + private final String processVersion; + + public DownloadSearchBundle(ProcessPluginApi api, ReportStatusGenerator statusGenerator, DataLogger dataLogger, + String processVersion) { super(api); this.statusGenerator = statusGenerator; this.dataLogger = dataLogger; + this.processVersion = processVersion; } @Override @@ -45,6 +49,7 @@ public void afterPropertiesSet() throws Exception Objects.requireNonNull(statusGenerator, "statusGenerator"); Objects.requireNonNull(dataLogger, "dataLogger"); + Objects.requireNonNull(processVersion, "processVersion"); } @Override @@ -53,7 +58,7 @@ protected void doExecute(DelegateExecution execution, Variables variables) Task task = variables.getStartTask(); Target target = variables.getTarget(); String searchBundleIdentifier = ConstantsReport.CODESYSTEM_REPORT + "|" - + ConstantsReport.CODESYSTEM_REPORT_VALUE_SEARCH_BUNDLE; + + ConstantsReport.CODESYSTEM_REPORT_VALUE_SEARCH_BUNDLE + processVersion; logger.info("Downloading search Bundle '{}' from HRP '{}' for Task with id '{}'", searchBundleIdentifier, target.getOrganizationIdentifierValue(), task.getId()); diff --git a/src/main/java/de/medizininformatik_initiative/process/report/spring/config/ReportConfig.java b/src/main/java/de/medizininformatik_initiative/process/report/spring/config/ReportConfig.java index 2886a29..6af8a90 100644 --- a/src/main/java/de/medizininformatik_initiative/process/report/spring/config/ReportConfig.java +++ b/src/main/java/de/medizininformatik_initiative/process/report/spring/config/ReportConfig.java @@ -86,7 +86,8 @@ public SelectTargetHrp selectTargetHrp() @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public DownloadSearchBundle downloadSearchBundle() { - return new DownloadSearchBundle(api, reportStatusGenerator(), fhirClientConfig.dataLogger()); + String processVersion = new ReportProcessPluginDefinition().getResourceVersion(); + return new DownloadSearchBundle(api, reportStatusGenerator(), fhirClientConfig.dataLogger(), processVersion); } @Bean diff --git a/src/main/resources/fhir/CodeSystem/report.xml b/src/main/resources/fhir/CodeSystem/report.xml index 0aa67de..c4942ff 100644 --- a/src/main/resources/fhir/CodeSystem/report.xml +++ b/src/main/resources/fhir/CodeSystem/report.xml @@ -27,9 +27,9 @@ - - - + + + diff --git a/src/main/resources/fhir/StructureDefinition/search-bundle-report.xml b/src/main/resources/fhir/StructureDefinition/search-bundle-report.xml index 3d42e56..f9bf423 100644 --- a/src/main/resources/fhir/StructureDefinition/search-bundle-report.xml +++ b/src/main/resources/fhir/StructureDefinition/search-bundle-report.xml @@ -33,7 +33,7 @@ - + diff --git a/src/test/java/de/medizininformatik_initiative/process/report/bpe/CheckSearchBundleServiceTest.java b/src/test/java/de/medizininformatik_initiative/process/report/bpe/CheckSearchBundleServiceTest.java index e8382ab..2ffbf73 100644 --- a/src/test/java/de/medizininformatik_initiative/process/report/bpe/CheckSearchBundleServiceTest.java +++ b/src/test/java/de/medizininformatik_initiative/process/report/bpe/CheckSearchBundleServiceTest.java @@ -120,6 +120,24 @@ public void testInvalidDateValue() testInvalid("/fhir/Bundle/search-bundle-invalid-date-value.xml", "not limited to a year"); } + @Test + public void testValidV2() + { + testValid("/fhir/Bundle/search-bundle-v1.1.xml"); + } + + @Test + public void testInvalidV2Code() + { + testInvalid("/fhir/Bundle/search-bundle-v1.1-invalid-code.xml", "not limited to system"); + } + + @Test + public void testInvalidV2CodeIngredient() + { + testInvalid("/fhir/Bundle/search-bundle-v1.1-invalid-code-ingredient.xml", "not limited to system"); + } + private void testValid(String pathToBundle) { try (InputStream in = getClass().getResourceAsStream(pathToBundle)) diff --git a/src/test/java/de/medizininformatik_initiative/process/report/fhir/profile/ActivityDefinitionProfileTest.java b/src/test/java/de/medizininformatik_initiative/process/report/fhir/profile/ActivityDefinitionProfileTest.java index caf7af1..93a7453 100644 --- a/src/test/java/de/medizininformatik_initiative/process/report/fhir/profile/ActivityDefinitionProfileTest.java +++ b/src/test/java/de/medizininformatik_initiative/process/report/fhir/profile/ActivityDefinitionProfileTest.java @@ -4,7 +4,7 @@ import static org.junit.Assert.assertTrue; import java.nio.file.Paths; -import java.util.Arrays; +import java.util.List; import org.hl7.fhir.r4.model.ActivityDefinition; import org.junit.ClassRule; @@ -28,7 +28,7 @@ public class ActivityDefinitionProfileTest @ClassRule public static final ValidationSupportRule validationRule = new ValidationSupportRule( ReportProcessPluginDefinition.VERSION, ReportProcessPluginDefinition.RELEASE_DATE, - Arrays.asList("dsf-activity-definition-1.0.0.xml", "dsf-extension-process-authorization-1.0.0.xml", + List.of("dsf-activity-definition-1.0.0.xml", "dsf-extension-process-authorization-1.0.0.xml", "dsf-extension-process-authorization-organization-1.0.0.xml", "dsf-extension-process-authorization-organization-practitioner-1.0.0.xml", "dsf-extension-process-authorization-parent-organization-role-1.0.0.xml", @@ -43,9 +43,9 @@ public class ActivityDefinitionProfileTest "dsf-coding-process-authorization-remote-all-1.0.0.xml", "dsf-coding-process-authorization-remote-parent-organization-role-1.0.0.xml", "dsf-coding-process-authorization-remote-organization-1.0.0.xml"), - Arrays.asList("dsf-organization-role-1.0.0.xml", "dsf-practitioner-role-1.0.0.xml", + List.of("dsf-organization-role-1.0.0.xml", "dsf-practitioner-role-1.0.0.xml", "dsf-process-authorization-1.0.0.xml", "dsf-read-access-tag-1.0.0.xml"), - Arrays.asList("dsf-organization-role-1.0.0.xml", "dsf-practitioner-role-1.0.0.xml", + List.of("dsf-organization-role-1.0.0.xml", "dsf-practitioner-role-1.0.0.xml", "dsf-process-authorization-recipient-1.0.0.xml", "dsf-process-authorization-requester-1.0.0.xml", "dsf-read-access-tag-1.0.0.xml")); diff --git a/src/test/java/de/medizininformatik_initiative/process/report/fhir/profile/TaskProfileTest.java b/src/test/java/de/medizininformatik_initiative/process/report/fhir/profile/TaskProfileTest.java index 86aad64..6777269 100644 --- a/src/test/java/de/medizininformatik_initiative/process/report/fhir/profile/TaskProfileTest.java +++ b/src/test/java/de/medizininformatik_initiative/process/report/fhir/profile/TaskProfileTest.java @@ -2,8 +2,8 @@ import static org.junit.Assert.assertEquals; -import java.util.Arrays; import java.util.Date; +import java.util.List; import java.util.UUID; import org.hl7.fhir.r4.model.Reference; @@ -36,13 +36,12 @@ public class TaskProfileTest @ClassRule public static final ValidationSupportRule validationRule = new ValidationSupportRule(def.getResourceVersion(), def.getResourceReleaseDate(), - Arrays.asList("dsf-task-base-1.0.0.xml", "extension-report-status-error.xml", "search-bundle-report.xml", + List.of("dsf-task-base-1.0.0.xml", "extension-report-status-error.xml", "search-bundle-report.xml", "search-bundle-response-report.xml", "task-report-autostart-start.xml", "task-report-autostart-stop.xml", "task-report-receive.xml", "task-report-send.xml", "task-report-send-start.xml"), - Arrays.asList("dsf-read-access-tag-1.0.0.xml", "dsf-bpmn-message-1.0.0.xml", "report.xml", - "report-status.xml"), - Arrays.asList("dsf-read-access-tag-1.0.0.xml", "dsf-bpmn-message-1.0.0.xml", "report.xml", + List.of("dsf-read-access-tag-1.0.0.xml", "dsf-bpmn-message-1.0.0.xml", "report.xml", "report-status.xml"), + List.of("dsf-read-access-tag-1.0.0.xml", "dsf-bpmn-message-1.0.0.xml", "report.xml", "report-status-receive.xml", "report-status-send.xml")); private final ResourceValidator resourceValidator = new ResourceValidatorImpl(validationRule.getFhirContext(), diff --git a/src/test/resources/fhir/Bundle/search-bundle-response.xml b/src/test/resources/fhir/Bundle/search-bundle-response.xml index d44e224..6c0413b 100644 --- a/src/test/resources/fhir/Bundle/search-bundle-response.xml +++ b/src/test/resources/fhir/Bundle/search-bundle-response.xml @@ -20,7 +20,7 @@ - + diff --git a/src/test/resources/fhir/Bundle/search-bundle-v1.1-invalid-code-ingredient.xml b/src/test/resources/fhir/Bundle/search-bundle-v1.1-invalid-code-ingredient.xml new file mode 100644 index 0000000..dc922f0 --- /dev/null +++ b/src/test/resources/fhir/Bundle/search-bundle-v1.1-invalid-code-ingredient.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/fhir/Bundle/search-bundle-v1.1-invalid-code.xml b/src/test/resources/fhir/Bundle/search-bundle-v1.1-invalid-code.xml new file mode 100644 index 0000000..844776f --- /dev/null +++ b/src/test/resources/fhir/Bundle/search-bundle-v1.1-invalid-code.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/fhir/Bundle/search-bundle-v1.1.xml b/src/test/resources/fhir/Bundle/search-bundle-v1.1.xml new file mode 100644 index 0000000..68e27b2 --- /dev/null +++ b/src/test/resources/fhir/Bundle/search-bundle-v1.1.xml @@ -0,0 +1,634 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file