diff --git a/mhd-fhir-server-simulator/src/main/java/net/ihe/gazelle/fhir/simulator/server/adapter/servlet/MDHRestfullServer.java b/mhd-fhir-server-simulator/src/main/java/net/ihe/gazelle/fhir/simulator/server/adapter/servlet/MDHRestfullServer.java index 0419906d3ad3bdf1ee1751a4338a7b11ebb63777..b4d2e176fa55a3b88794563ffa8bba41b8a4c20e 100644 --- a/mhd-fhir-server-simulator/src/main/java/net/ihe/gazelle/fhir/simulator/server/adapter/servlet/MDHRestfullServer.java +++ b/mhd-fhir-server-simulator/src/main/java/net/ihe/gazelle/fhir/simulator/server/adapter/servlet/MDHRestfullServer.java @@ -5,14 +5,14 @@ import ca.uhn.fhir.narrative.DefaultThymeleafNarrativeGenerator; import ca.uhn.fhir.narrative.INarrativeGenerator; import ca.uhn.fhir.rest.server.IResourceProvider; import ca.uhn.fhir.rest.server.RestfulServer; -import net.ihe.evsapi.client.domain.ValidationService; +import net.ihe.gazelle.fhir.simulator.server.interlay.interceptor.MHDValidatorFhirSelector; +import net.ihe.gazelle.fhir.simulator.server.interlay.interceptor.MHDValidatorHttpSelector; import net.ihe.gazelle.fhir.simulator.server.interlay.loader.DocumentReferencesProviderServiceImpl; import net.ihe.gazelle.fhir.simulator.server.interlay.loader.ListProviderServiceImpl; import net.ihe.gazelle.fhir.simulator.server.interlay.provider.DocumentReferencesResourceProvider; import net.ihe.gazelle.fhir.simulator.server.interlay.provider.ListResourceProvider; import net.ihe.gazelle.interceptors.FhirValidatorInterceptor; import net.ihe.gazelle.interceptors.HTTPValidatorInterceptor; -import net.ihe.gazelle.model.ValidationConfiguration; import org.eclipse.microprofile.config.ConfigProvider; import java.util.ArrayList; @@ -40,18 +40,13 @@ public class MDHRestfullServer extends RestfulServer { getFhirContext().setNarrativeGenerator(narrativeGen); String evsEndpoint = ConfigProvider.getConfig().getValue("evs.endpoint", String.class); - if (Boolean.TRUE.equals(ConfigProvider.getConfig().getValue("activate.http.validator", Boolean.class))) { - String httpValidationName = ConfigProvider.getConfig().getValue("http.validation.name", String.class); - String httpValidationSchematronName = ConfigProvider.getConfig().getValue("http.validation.schematron.name", String.class); - registerInterceptor(new HTTPValidatorInterceptor(new ValidationConfiguration().setEvsEndpoint(evsEndpoint).setValidationService(new ValidationService().setValidator(httpValidationName).setName(httpValidationSchematronName)))); - } - - if (Boolean.TRUE.equals(ConfigProvider.getConfig().getValue("activate.fhir.validator", Boolean.class))) { - String fhirValidationName = ConfigProvider.getConfig().getValue("fhir.validation.name", String.class); - String fhirValidationSchematronName = ConfigProvider.getConfig().getValue("fhir.validation.schematron.name", String.class); - - registerInterceptor(new FhirValidatorInterceptor(new ValidationConfiguration().setEvsEndpoint(evsEndpoint).setValidationService(new ValidationService().setValidator(fhirValidationName).setName(fhirValidationSchematronName)))); - } + + registerInterceptor(new HTTPValidatorInterceptor(evsEndpoint, new MHDValidatorHttpSelector())); + + registerInterceptor(new FhirValidatorInterceptor(evsEndpoint, new MHDValidatorFhirSelector())); + + + } diff --git a/mhd-fhir-server-simulator/src/main/java/net/ihe/gazelle/fhir/simulator/server/interlay/interceptor/MHDValidatorFhirSelector.java b/mhd-fhir-server-simulator/src/main/java/net/ihe/gazelle/fhir/simulator/server/interlay/interceptor/MHDValidatorFhirSelector.java new file mode 100644 index 0000000000000000000000000000000000000000..be126b3003d0867c5a3000a06a179e35bd8171ba --- /dev/null +++ b/mhd-fhir-server-simulator/src/main/java/net/ihe/gazelle/fhir/simulator/server/interlay/interceptor/MHDValidatorFhirSelector.java @@ -0,0 +1,24 @@ +package net.ihe.gazelle.fhir.simulator.server.interlay.interceptor; + +import ca.uhn.fhir.rest.api.RestOperationTypeEnum; +import ca.uhn.fhir.rest.api.server.RequestDetails; +import net.ihe.evsapi.client.domain.ValidationService; +import net.ihe.gazelle.model.ValidatorSelector; +import org.eclipse.microprofile.config.ConfigProvider; + +public class MHDValidatorFhirSelector implements ValidatorSelector { + + + @Override + public ValidationService getValidationService(RequestDetails requestDetails) { + String fhirValidationName = ConfigProvider.getConfig().getValue("fhir.validation.name", String.class); + if (requestDetails.getRestOperationType().equals(RestOperationTypeEnum.TRANSACTION)) { + String fhirValidationValidator = ConfigProvider.getConfig().getValue("fhir.validation.schematron.name-iti-65", String.class); + return new ValidationService().setValidator(fhirValidationValidator).setName(fhirValidationName); + } else { + + return null; + } + + } +} diff --git a/mhd-fhir-server-simulator/src/main/java/net/ihe/gazelle/fhir/simulator/server/interlay/interceptor/MHDValidatorHttpSelector.java b/mhd-fhir-server-simulator/src/main/java/net/ihe/gazelle/fhir/simulator/server/interlay/interceptor/MHDValidatorHttpSelector.java new file mode 100644 index 0000000000000000000000000000000000000000..5fc6017103b7436a507f1c9f93a6c434aca8b073 --- /dev/null +++ b/mhd-fhir-server-simulator/src/main/java/net/ihe/gazelle/fhir/simulator/server/interlay/interceptor/MHDValidatorHttpSelector.java @@ -0,0 +1,43 @@ +package net.ihe.gazelle.fhir.simulator.server.interlay.interceptor; + +import ca.uhn.fhir.rest.api.RestOperationTypeEnum; +import ca.uhn.fhir.rest.api.server.RequestDetails; +import net.ihe.evsapi.client.domain.ValidationService; +import net.ihe.gazelle.model.ValidatorSelector; +import org.eclipse.microprofile.config.ConfigProvider; + +public class MHDValidatorHttpSelector implements ValidatorSelector { + + + @Override + public ValidationService getValidationService(RequestDetails requestDetails) { + String httpValidationName = ConfigProvider.getConfig().getValue("http.validation.name", String.class); + String httpValidationValidator; + if (requestDetails.getRestOperationType().equals(RestOperationTypeEnum.TRANSACTION)) { + httpValidationValidator = ConfigProvider.getConfig().getValue("http.validation.schematron.name-iti-65", String.class); + return new ValidationService().setValidator(httpValidationValidator).setName(httpValidationName); + } + + if (requestDetails.getRestOperationType().equals(RestOperationTypeEnum.SEARCH_TYPE) && requestDetails.getResourceName().equals("List")) { + httpValidationValidator = ConfigProvider.getConfig().getValue("http.validation.schematron.name-iti-66", String.class); + return new ValidationService().setValidator(httpValidationValidator).setName(httpValidationName); + } + + if (requestDetails.getRestOperationType().equals(RestOperationTypeEnum.SEARCH_TYPE) && requestDetails.getResourceName().equals("DocumentReference")) { + httpValidationValidator = ConfigProvider.getConfig().getValue("http.validation.schematron.name-iti-67", String.class); + + return new ValidationService().setValidator(httpValidationValidator).setName(httpValidationName); + } + + if (requestDetails.getRestOperationType().equals(RestOperationTypeEnum.READ) && requestDetails.getResourceName().equals("DocumentReference")) { + httpValidationValidator = ConfigProvider.getConfig().getValue("http.validation.schematron.name-iti-68", String.class); + + return new ValidationService().setValidator(httpValidationValidator).setName(httpValidationName); + } + + + return null; + + + } +} diff --git a/mhd-fhir-server-simulator/src/main/resources/application.properties b/mhd-fhir-server-simulator/src/main/resources/application.properties index b43c4b5c84a046613549cb07564aa89f137501d0..c7374bee1063b09c46af40543c61be851323a2aa 100644 --- a/mhd-fhir-server-simulator/src/main/resources/application.properties +++ b/mhd-fhir-server-simulator/src/main/resources/application.properties @@ -1,8 +1,10 @@ -nist.fhir.toolkit.endpoint=http://localhost:7080/fhir -activate.http.validator=false -http.validation.name=Validator -http.validation.schematron.name=Schematron-Validator -activate.fhir.validator=false -fhir.validation.name=Validator -fhir.validation.schematron.name=Scheme-Validator -evs.endpoint=http://localhost:8080/evs +nist.fhir.toolkit.endpoint=https://qualification.ihe-europe.net/fhir +http.validation.name=HTTP Message Validator +http.validation.schematron.name-iti-65=CH_ITI-65-ProvideDocumentBundle_POST_MHD_Request +http.validation.schematron.name-iti-66=CH_ITI-66-FindDocumentLists-GET_MHD_Request +http.validation.schematron.name-iti-67=CH_ITI-67-FindDocumentReferences-GET_MHD_Request +http.validation.schematron.name-iti-68=CH_ITI-68-RetrieveDocument-GET_MHD_Request + +fhir.validation.name=Matchbox +fhir.validation.schematron.name-iti-65=CH:MHD [ITI-65] Provide Document Bundle Comprehensive Response +evs.endpoint=https://qualification.ihe-europe.net/evs/rest/validations