Package org.techbd.orchestrate.fhir
Class OrchestrationEngine
java.lang.Object
org.techbd.orchestrate.fhir.OrchestrationEngine
The
OrchestrationEngine
class is responsible for managing and
orchestrating FHIR validation sessions.
It contains inner classes and interfaces that define the structure and
behavior of the validation engines
and the orchestration sessions.
This class also includes a cache for OrchestrationEngine.ValidationEngine
instances to
ensure that only one instance of
each type is used for a given FHIR profile URL.
Usage example:
OrchestrationEngine engine = new OrchestrationEngine();
OrchestrationEngine.OrchestrationSession session1 = engine.session()
.withPayloads(List.of("payload1", "payload2"))
.withFhirProfileUrl("http://example.com/fhirProfile")
.addHapiValidationEngine()
.addHl7ValidationApiEngine()
.addInfernoValidationEngine()
.build();
OrchestrationEngine.OrchestrationSession session2 = engine.session()
.withPayloads(List.of("payload3", "payload4"))
.withFhirProfileUrl("http://example.com/fhirProfile")
.addHapiValidationEngine()
.build();
engine.orchestrate(session1, session2);
for (OrchestrationEngine.OrchestrationSession session : engine.getSessions()) {
for (OrchestrationEngine.ValidationResult result : session.getValidationResults()) {
System.out.println("Is valid: " + result.isValid());
for (OrchestrationEngine.ValidationIssue issue : result.getIssues()) {
System.out.println("Issue: " + issue.getMessage());
}
}
}
Key components:
ValidationEngineIdentifier
: Enumeration to identify different validation engine types.ValidationEngineKey
: A composite key class used to uniquely identify eachOrchestrationEngine.ValidationEngine
instance by its type and FHIR profile URL.session()
: This method returns a newOrchestrationEngine.OrchestrationSession.Builder
instance that is aware of theOrchestrationEngine
instance.ValidationResult
Interface: Defines the methodsisValid
andgetIssues
for the validation result.ValidationIssue
Interface: Defines thegetMessage
method for validation issues.ValidationEngine
Interface: Defines thevalidate
method which each validation engine must implement.HapiValidationEngine
,Hl7ValidationEngine
,InfernoValidationEngine
: Implement theValidationEngine
interface, each providing its own validation logic and holding thefhirProfileUrl
as a member field. These classes return anonymous classes forValidationResult
andValidationIssue
.OrchestrationSession
: Holds a list ofOrchestrationEngine.ValidationEngine
instances, payloads, and validation results. Thevalidate
method performs validation and stores the results. TheBuilder
class withinOrchestrationSession
allows setting thefhirProfileUrl
and adding specific validation engine implementations that use this URL.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final record
static class
static class
static class
static class
static final record
static interface
static enum
static interface
static interface
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptiongetValidationEngine
(@NotNull OrchestrationEngine.ValidationEngineIdentifier type, @NotNull String fhirProfileUrl, Map<String, String> structureDefinitionUrls, Map<String, String> codeSystemUrls, Map<String, String> valueSetUrls) void
orchestrate
(@NotNull OrchestrationEngine.OrchestrationSession... sessions) session()
-
Constructor Details
-
OrchestrationEngine
public OrchestrationEngine()
-
-
Method Details
-
getSessions
-
orchestrate
-
getValidationEngine
-
session
-