diff --git a/.gitignore b/.gitignore index a0300533..1e256ff3 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,6 @@ codex-processes-ap1-test-data-generator/rsa/*.pem ### codex-processes-ap1-docker-test-setup/**/bpe/log/*.log codex-processes-ap1-docker-test-setup/**/bpe/log/*.log.gz -codex-processes-ap1-docker-test-setup/**/bpe/last_event/time.file codex-processes-ap1-docker-test-setup/**/bpe/plugin/*.jar codex-processes-ap1-docker-test-setup/**/bpe/process/*.jar diff --git a/codex-process-data-transfer/pom.xml b/codex-process-data-transfer/pom.xml index d27efad7..42fb51ef 100644 --- a/codex-process-data-transfer/pom.xml +++ b/codex-process-data-transfer/pom.xml @@ -6,7 +6,7 @@ de.netzwerk-universitaetsmedizin.codex codex-processes-ap1 - 0.6.0 + 0.6.0.1 diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/DataTransferProcessPluginDefinition.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/DataTransferProcessPluginDefinition.java index 74a6a966..4435585b 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/DataTransferProcessPluginDefinition.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/DataTransferProcessPluginDefinition.java @@ -37,7 +37,7 @@ public class DataTransferProcessPluginDefinition implements ProcessPluginDefinit private static final Logger logger = LoggerFactory.getLogger(DataTransferProcessPluginDefinition.class); public static final String VERSION = "0.6.0"; - public static final LocalDate DATE = LocalDate.of(2022, 7, 12); + public static final LocalDate DATE = LocalDate.of(2022, 10, 18); @Override public String getName() diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/client/fhir/GeccoFhirClientStub.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/client/fhir/GeccoFhirClientStub.java index 78a77a7c..261cf61e 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/client/fhir/GeccoFhirClientStub.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/client/fhir/GeccoFhirClientStub.java @@ -33,7 +33,7 @@ public final class GeccoFhirClientStub implements GeccoFhirClient private static final Logger logger = LoggerFactory.getLogger(GeccoFhirClientStub.class); private static final String condition = "{\"resourceType\":\"Condition\",\"meta\":{\"profile\":[\"https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/chronic-lung-diseases\"]},\"clinicalStatus\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/condition-clinical\",\"code\":\"active\",\"display\":\"Active\"}]},\"verificationStatus\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/condition-ver-status\",\"code\":\"confirmed\",\"display\":\"Confirmed\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"410605003\",\"display\":\"Confirmed present (qualifier value)\"}]},\"category\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"418112009\",\"display\":\"Pulmonary medicine\"}]}],\"code\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"413839001\",\"display\":\"Chronic lung disease\"}]},\"recordedDate\":\"2020-11-10T15:50:41.000+01:00\"}"; - private static final String patient = "{\"resourceType\":\"Patient\",\"meta\":{\"profile\":[\"https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/Patient\"]},\"extension\":[{\"url\":\"https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/ethnic-group\",\"valueCoding\":{\"system\":\"http://snomed.info/sct\",\"code\":\"186019001\",\"display\":\"Other ethnic, mixed origin\"}},{\"url\":\"https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/age\",\"extension\":[{\"url\":\"dateTimeOfDocumentation\",\"valueDateTime\":\"2020-10-01\"},{\"url\":\"age\",\"valueAge\":{\"value\":67,\"unit\":\"years\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"a\"}}]}],\"birthDate\":\"1953-09-30\"}"; + private static final String patient = "{\"resourceType\":\"Patient\",\"meta\":{\"profile\":[\"https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/Patient\"]},\"extension\":[{\"url\":\"https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/ethnic-group\",\"valueCoding\":{\"system\":\"http://snomed.info/sct\",\"code\":\"26242008\",\"display\":\"Mixed (qualifier value)\"}},{\"url\":\"https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/age\",\"extension\":[{\"url\":\"dateTimeOfDocumentation\",\"valueDateTime\":\"2020-10-01\"},{\"url\":\"age\",\"valueAge\":{\"value\":67,\"unit\":\"years\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"a\"}}]}],\"birthDate\":\"1953-09-30\"}"; private static final String observation = "{\"resourceType\":\"Observation\",\"meta\":{\"profile\":[\"https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/sars-cov-2-rt-pcr\"]},\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"OBI\"}]}}],\"status\":\"final\",\"category\":[{\"coding\":[{\"system\":\"http://loinc.org\",\"code\":\"26436-6\"},{\"system\":\"http://terminology.hl7.org/CodeSystem/observation-category\",\"code\":\"laboratory\"}]}],\"code\":{\"coding\":[{\"system\":\"http://loinc.org\",\"code\":\"94500-6\",\"display\":\"SARS-CoV-2 (COVID-19) RNA [Presence] in Respiratory specimen by NAA with probe detection\"}],\"text\":\"SARS-CoV-2-RNA (PCR)\"},\"effectiveDateTime\":\"2020-11-10T15:50:41.000+01:00\",\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"260373001\",\"display\":\"Detected (qualifier value)\"}],\"text\":\"SARS-CoV-2-RNA positiv\"}}"; private final GeccoClient geccoClient; @@ -82,15 +82,18 @@ public Stream getNewData(String pseudonym, DateWithPrecision exp logger.warn("Returning demo resources for {}", pseudonym); Patient p = geccoClient.getFhirContext().newJsonParser().parseResource(Patient.class, patient); + p.setIdElement(new IdType(UUID.randomUUID().toString())); p.addIdentifier().setSystem(NAMING_SYSTEM_NUM_CODEX_DIC_PSEUDONYM).setValue(pseudonym).getType() .getCodingFirstRep().setSystem(IDENTIFIER_NUM_CODEX_DIC_PSEUDONYM_TYPE_SYSTEM) .setCode(IDENTIFIER_NUM_CODEX_DIC_PSEUDONYM_TYPE_CODE); p.setIdElement(new IdType("Patient", UUID.randomUUID().toString())); Condition c = geccoClient.getFhirContext().newJsonParser().parseResource(Condition.class, condition); + c.setIdElement(new IdType(UUID.randomUUID().toString())); c.setSubject(new Reference(p.getIdElement())); Observation o = geccoClient.getFhirContext().newJsonParser().parseResource(Observation.class, observation); + o.setIdElement(new IdType(UUID.randomUUID().toString())); o.setSubject(new Reference(p.getIdElement())); return Stream.of(p, c, o); diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/crypto/CrrKeyProviderImpl.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/crypto/CrrKeyProviderImpl.java index da4751d8..1309e5b2 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/crypto/CrrKeyProviderImpl.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/crypto/CrrKeyProviderImpl.java @@ -26,7 +26,7 @@ public class CrrKeyProviderImpl implements CrrKeyProvider /** * One or both parameters should be null - * + * * @param crrPrivateKeyFile * @param crrPublicKeyFile * @return diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/logging/ErrorLogger.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/logging/ErrorLogger.java index d9eee869..9dfa1138 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/logging/ErrorLogger.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/logging/ErrorLogger.java @@ -1,41 +1,90 @@ package de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.logging; +import java.util.Objects; + +import org.highmed.dsf.bpe.service.MailService; import org.hl7.fhir.r4.model.IdType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; -public class ErrorLogger +public class ErrorLogger implements InitializingBean { private static final Logger validationLogger = LoggerFactory.getLogger("validation-error-logger"); private static final Logger errorLogger = LoggerFactory.getLogger("error-logger"); + private final MailService mailService; + + private final boolean sendValidationFailedMail; + private final boolean sendProcessFailedMail; + + public ErrorLogger(MailService mailService, boolean sendValidationFailedMail, boolean sendProcessFailedMail) + { + this.mailService = mailService; + + this.sendValidationFailedMail = sendValidationFailedMail; + this.sendProcessFailedMail = sendProcessFailedMail; + } + + @Override + public void afterPropertiesSet() throws Exception + { + Objects.requireNonNull(mailService, "mailService"); + } + public void logValidationFailed(IdType taskId) { - validationLogger.debug("Validation of FHIR resources failed, started by Task {}", taskId.getValue()); + validationLogger.debug("Validation of FHIR resources failed in process started by {}", + taskId.toVersionless().getValue()); + + if (sendValidationFailedMail) + mailService.send("Validation Error", + "Validation of FHIR resources failed in process started by " + taskId.toVersionless().getValue()); } public void logValidationFailedLocal(IdType taskId) { - validationLogger.debug("Local validation of FHIR resources failed, started by Task {}", taskId.getValue()); + validationLogger.debug("Local validation of FHIR resources failed in process started by {}", + taskId.toVersionless().getValue()); + + if (sendValidationFailedMail) + mailService.send("Validation Error", "Local validation of FHIR resources failed in process started by " + + taskId.toVersionless().getValue()); } public void logValidationFailedRemote(IdType taskId) { - validationLogger.debug("Remote validation of FHIR resources failed, started by Task {}", taskId.getValue()); + validationLogger.debug("Remote validation of FHIR resources failed in process started by {}", + taskId.toVersionless().getValue()); + + if (sendValidationFailedMail) + mailService.send("Validation Error", "Remote validation of FHIR resources failed in process started by " + + taskId.toVersionless().getValue()); } public void logDataSendFailed(IdType taskId) { - errorLogger.debug("Send process failed, started by Task {}", taskId.getValue()); + errorLogger.debug("Send process failed started by {}", taskId.toVersionless().getValue()); + + if (sendProcessFailedMail) + mailService.send("Proccess Failed", "Send process failed started by " + taskId.toVersionless().getValue()); } public void logDataTranslateFailed(IdType taskId) { - errorLogger.debug("Translate process failed, started by Task {}", taskId.getValue()); + errorLogger.debug("Translate process failed started by {}", taskId.toVersionless().getValue()); + + if (sendProcessFailedMail) + mailService.send("Proccess Failed", + "Translate process failed started by " + taskId.toVersionless().getValue()); } public void logDataReceiveFailed(IdType taskId) { - errorLogger.debug("Receive process failed, started by Task {}", taskId.getValue()); + errorLogger.debug("Receive process failed started by {}", taskId.toVersionless().getValue()); + + if (sendProcessFailedMail) + mailService.send("Proccess Failed", + "Receive process failed started by " + taskId.toVersionless().getValue()); } } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueSendProcess.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueSendProcess.java index ca48fb0e..840a9f40 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueSendProcess.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueSendProcess.java @@ -2,24 +2,18 @@ import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.BPMN_EXECUTION_VARIABLE_RETURN_TARGET; -import java.util.stream.Stream; - +import org.camunda.bpm.engine.delegate.DelegateExecution; import org.highmed.dsf.fhir.authorization.read.ReadAccessHelper; import org.highmed.dsf.fhir.client.FhirWebserviceClientProvider; import org.highmed.dsf.fhir.organization.OrganizationProvider; import org.highmed.dsf.fhir.task.AbstractTaskMessageSend; import org.highmed.dsf.fhir.task.TaskHelper; import org.highmed.dsf.fhir.variables.Target; -import org.hl7.fhir.r4.model.Task.ParameterComponent; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import ca.uhn.fhir.context.FhirContext; public class ContinueSendProcess extends AbstractTaskMessageSend { - private static final Logger logger = LoggerFactory.getLogger(ContinueSendProcess.class); - public ContinueSendProcess(FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper, ReadAccessHelper readAccessHelper, OrganizationProvider organizationProvider, FhirContext fhirContext) { @@ -27,18 +21,8 @@ public ContinueSendProcess(FhirWebserviceClientProvider clientProvider, TaskHelp } @Override - protected Target getTarget() + protected Target getTarget(DelegateExecution execution) { return (Target) execution.getVariable(BPMN_EXECUTION_VARIABLE_RETURN_TARGET); } - - @Override - protected void sendTask(Target target, String instantiatesUri, String messageName, String businessKey, - String profile, Stream additionalInputParameters) - { - // TODO implement continue send - logger.debug("implement continue send"); - - super.sendTask(target, instantiatesUri, messageName, businessKey, profile, additionalInputParameters); - } } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueSendProcessWithError.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueSendProcessWithError.java index d3691201..1c2de759 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueSendProcessWithError.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueSendProcessWithError.java @@ -43,7 +43,7 @@ public void afterPropertiesSet() throws Exception } @Override - protected Target getTarget() + protected Target getTarget(DelegateExecution execution) { return (Target) execution.getVariable(BPMN_EXECUTION_VARIABLE_RETURN_TARGET); } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueSendProcessWithValidationError.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueSendProcessWithValidationError.java index eababd11..fd121da3 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueSendProcessWithValidationError.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueSendProcessWithValidationError.java @@ -29,7 +29,7 @@ public ContinueSendProcessWithValidationError(FhirWebserviceClientProvider clien } @Override - protected Target getTarget() + protected Target getTarget(DelegateExecution execution) { return (Target) execution.getVariable(BPMN_EXECUTION_VARIABLE_RETURN_TARGET); } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueTranslateProcess.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueTranslateProcess.java index 6957fda9..e9896c18 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueTranslateProcess.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueTranslateProcess.java @@ -2,24 +2,18 @@ import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.BPMN_EXECUTION_VARIABLE_RETURN_TARGET; -import java.util.stream.Stream; - +import org.camunda.bpm.engine.delegate.DelegateExecution; import org.highmed.dsf.fhir.authorization.read.ReadAccessHelper; import org.highmed.dsf.fhir.client.FhirWebserviceClientProvider; import org.highmed.dsf.fhir.organization.OrganizationProvider; import org.highmed.dsf.fhir.task.AbstractTaskMessageSend; import org.highmed.dsf.fhir.task.TaskHelper; import org.highmed.dsf.fhir.variables.Target; -import org.hl7.fhir.r4.model.Task.ParameterComponent; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import ca.uhn.fhir.context.FhirContext; public class ContinueTranslateProcess extends AbstractTaskMessageSend { - private static final Logger logger = LoggerFactory.getLogger(ContinueTranslateProcess.class); - public ContinueTranslateProcess(FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper, ReadAccessHelper readAccessHelper, OrganizationProvider organizationProvider, FhirContext fhirContext) { @@ -27,19 +21,8 @@ public ContinueTranslateProcess(FhirWebserviceClientProvider clientProvider, Tas } @Override - protected Target getTarget() + protected Target getTarget(DelegateExecution execution) { return (Target) execution.getVariable(BPMN_EXECUTION_VARIABLE_RETURN_TARGET); } - - @Override - protected void sendTask(Target target, String instantiatesUri, String messageName, String businessKey, - String profile, Stream additionalInputParameters) - { - - // TODO implement continue translate - logger.debug("implement continue translate"); - - super.sendTask(target, instantiatesUri, messageName, businessKey, profile, additionalInputParameters); - } } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueTranslateProcessWithError.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueTranslateProcessWithError.java index 9e7b46ad..8d10f3ba 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueTranslateProcessWithError.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueTranslateProcessWithError.java @@ -43,7 +43,7 @@ public void afterPropertiesSet() throws Exception } @Override - protected Target getTarget() + protected Target getTarget(DelegateExecution execution) { return (Target) execution.getVariable(BPMN_EXECUTION_VARIABLE_RETURN_TARGET); } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueTranslateProcessWithValidationError.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueTranslateProcessWithValidationError.java index 58d5e0a6..c0e45e58 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueTranslateProcessWithValidationError.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/ContinueTranslateProcessWithValidationError.java @@ -30,7 +30,7 @@ public ContinueTranslateProcessWithValidationError(FhirWebserviceClientProvider } @Override - protected Target getTarget() + protected Target getTarget(DelegateExecution execution) { return (Target) execution.getVariable(BPMN_EXECUTION_VARIABLE_RETURN_TARGET); } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/StartReceiveProcess.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/StartReceiveProcess.java index ad6bdd00..c5b467b3 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/StartReceiveProcess.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/StartReceiveProcess.java @@ -44,14 +44,15 @@ protected Stream getAdditionalInputParameters(DelegateExecut } @Override - protected void sendTask(Target target, String instantiatesUri, String messageName, String businessKey, - String profile, Stream additionalInputParameters) + protected void sendTask(DelegateExecution execution, Target target, String instantiatesUri, String messageName, + String businessKey, String profile, Stream additionalInputParameters) { - String crrBusinessKey = createAndSaveAlternativeBusinessKey(); + String crrBusinessKey = createAndSaveAlternativeBusinessKey(execution); logger.debug("DIC businessKey {}, CRR businessKey {}", businessKey, crrBusinessKey); - super.sendTask(target, instantiatesUri, messageName, crrBusinessKey, profile, additionalInputParameters); + super.sendTask(execution, target, instantiatesUri, messageName, crrBusinessKey, profile, + additionalInputParameters); } private ParameterComponent pseudonymParameter(DelegateExecution execution) @@ -82,7 +83,7 @@ private ParameterComponent dataReferenceParameter(DelegateExecution execution) } @Override - protected void handleSendTaskError(Exception exception, String errorMessage) + protected void handleSendTaskError(DelegateExecution execution, Exception exception, String errorMessage) { throw new BpmnError(CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_CRR_NOT_REACHABLE, "Error while sending Task to CRR: " + exception.getMessage()); diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/StartSendProcess.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/StartSendProcess.java index 07ea816c..61366cd5 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/StartSendProcess.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/StartSendProcess.java @@ -46,11 +46,11 @@ public StartSendProcess(FhirWebserviceClientProvider clientProvider, TaskHelper } @Override - protected void sendTask(Target target, String instantiatesUri, String messageName, String businessKey, - String profile, Stream additionalInputParameters) + protected void sendTask(DelegateExecution execution, Target target, String instantiatesUri, String messageName, + String businessKey, String profile, Stream additionalInputParameters) { // can't use same business key as trigger process - super.sendTask(target, instantiatesUri, messageName, UUID.randomUUID().toString(), profile, + super.sendTask(execution, target, instantiatesUri, messageName, UUID.randomUUID().toString(), profile, additionalInputParameters); } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/StartTranslateProcess.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/StartTranslateProcess.java index 96bdb0cb..5001d009 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/StartTranslateProcess.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/message/StartTranslateProcess.java @@ -68,7 +68,7 @@ private ParameterComponent dataReferenceParameter(DelegateExecution execution) } @Override - protected void handleSendTaskError(Exception exception, String errorMessage) + protected void handleSendTaskError(DelegateExecution execution, Exception exception, String errorMessage) { throw new BpmnError(CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_GTH_NOT_REACHABLE, "Error while sending Task to GTH: " + exception.getMessage()); diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/DecryptData.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/DecryptData.java index 15423e4c..1af12b25 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/DecryptData.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/DecryptData.java @@ -85,7 +85,7 @@ private void decryptGeccoData(DelegateExecution execution) throws InvalidKeyException, BadPaddingException, IllegalBlockSizeException, NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, IOException { - Task task = getCurrentTaskFromExecutionVariables(); + Task task = getCurrentTaskFromExecutionVariables(execution); Optional pseudonym = getPseudonym(task); byte[] encrypted = (byte[]) execution.getVariable(BPMN_EXECUTION_VARIABLE_BUNDLE); @@ -108,7 +108,7 @@ private Optional getPseudonym(Task task) { return getInputParameterValues(task, CODESYSTEM_NUM_CODEX_DATA_TRANSFER, CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_PSEUDONYM, Identifier.class).findFirst() - .map(Identifier::getValue); + .map(Identifier::getValue); } private Stream getInputParameterValues(Task task, String system, String code, Class type) diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/DownloadDataFromGth.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/DownloadDataFromGth.java index 3bb2ef72..0bf20561 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/DownloadDataFromGth.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/DownloadDataFromGth.java @@ -70,7 +70,7 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio TargetValues.create(Target.createUniDirectionalTarget(gthIdentifierValue, getEndpointIdentifier(targetEndpoint), targetEndpoint.getAddress()))); - Task task = getCurrentTaskFromExecutionVariables(); + Task task = getCurrentTaskFromExecutionVariables(execution); IdType id = getDataReference(task).map(ref -> new IdType(ref)).get(); @@ -93,7 +93,7 @@ private Optional getDataReference(Task task) { return getInputParameterValues(task, CODESYSTEM_NUM_CODEX_DATA_TRANSFER, CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_DATA_REFERENCE, Reference.class).findFirst() - .map(Reference::getReference); + .map(Reference::getReference); } private Stream getInputParameterValues(Task task, String system, String code, Class type) diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/LogError.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/LogError.java index a54fc219..61a10b80 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/LogError.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/LogError.java @@ -55,7 +55,7 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio { logger.debug("Setting Task.status failed, adding error"); - Task task = getLeadingTaskFromExecutionVariables(); + Task task = getLeadingTaskFromExecutionVariables(execution); task.setStatus(TaskStatus.FAILED); String errorCode = (String) execution.getVariable(BPMN_EXECUTION_VARIABLE_ERROR_CODE); @@ -76,10 +76,10 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio logger.error("Error while executing process at {}; code: '{}', message: {}", errorSource, errorCode, errorMessage); - errorLogger.logDataReceiveFailed(getLeadingTaskFromExecutionVariables().getIdElement() + errorLogger.logDataReceiveFailed(getLeadingTaskFromExecutionVariables(execution).getIdElement() .withServerBase(getFhirWebserviceClientProvider().getLocalBaseUrl(), ResourceType.Task.name())); } - updateLeadingTaskInExecutionVariables(task); + updateLeadingTaskInExecutionVariables(execution, task); } } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/LogValidationError.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/LogValidationError.java index 08459f25..9378ed3c 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/LogValidationError.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/receive/LogValidationError.java @@ -52,12 +52,12 @@ public void afterPropertiesSet() throws Exception protected void doExecute(DelegateExecution execution) throws BpmnError, Exception { logger.info("Validation error while adding resources to CRR FHIR repository"); - errorLogger.logValidationFailed(getLeadingTaskFromExecutionVariables().getIdElement() + errorLogger.logValidationFailed(getLeadingTaskFromExecutionVariables(execution).getIdElement() .withServerBase(getFhirWebserviceClientProvider().getLocalBaseUrl(), ResourceType.Task.name())); logger.debug("Setting Task.status failed, adding validation errors"); - Task task = getLeadingTaskFromExecutionVariables(); + Task task = getLeadingTaskFromExecutionVariables(execution); task.setStatus(TaskStatus.FAILED); Bundle bundle = (Bundle) execution.getVariable(BPMN_EXECUTION_VARIABLE_BUNDLE); @@ -74,6 +74,6 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio errorOutputParameterGenerator.createCrrValidationError(outcome).forEach(task::addOutput); }); - updateLeadingTaskInExecutionVariables(task); + updateLeadingTaskInExecutionVariables(execution, task); } } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/CheckDryRun.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/CheckDryRun.java index 27baeb84..032267e8 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/CheckDryRun.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/CheckDryRun.java @@ -26,7 +26,7 @@ public CheckDryRun(FhirWebserviceClientProvider clientProvider, TaskHelper taskH @Override protected void doExecute(DelegateExecution execution) throws BpmnError, Exception { - Task task = getLeadingTaskFromExecutionVariables(); + Task task = getLeadingTaskFromExecutionVariables(execution); Optional dryRun = getTaskHelper().getFirstInputParameterBooleanValue(task, CODESYSTEM_NUM_CODEX_DATA_TRANSFER, CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_DRY_RUN); diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/CheckForError.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/CheckForError.java index 4714af2b..87ff2efd 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/CheckForError.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/CheckForError.java @@ -50,23 +50,24 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio ContinueStatus continueStatus; // continue OK - if (currentTaskHasProfile(PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_SEND + "|" + VERSION)) + if (currentTaskHasProfile(execution, PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_SEND + "|" + VERSION)) { continueStatus = ContinueStatus.SUCCESS; - updateContinueTask(); + updateContinueTask(execution); } // continue Validation ERROR - else if (currentTaskHasProfile(PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_SEND_WITH_VALIDATION_ERROR + "|" + VERSION)) + else if (currentTaskHasProfile(execution, + PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_SEND_WITH_VALIDATION_ERROR + "|" + VERSION)) { continueStatus = ContinueStatus.VALIDATION_ERROR; - updateContinueTask(); + updateContinueTask(execution); } // continue ERROR - else if (currentTaskHasProfile(PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_SEND_WITH_ERROR + "|" + VERSION)) + else if (currentTaskHasProfile(execution, PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_SEND_WITH_ERROR + "|" + VERSION)) { - Task continueWithErrorTask = getCurrentTaskFromExecutionVariables(); + Task continueWithErrorTask = getCurrentTaskFromExecutionVariables(execution); String errorCode = getErrorCode(continueWithErrorTask) .orElse(CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_UNKNOWN); @@ -79,7 +80,7 @@ else if (currentTaskHasProfile(PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_SEND_WITH_ER execution.setVariable(BPMN_EXECUTION_VARIABLE_ERROR_SOURCE, errorSource); continueStatus = ContinueStatus.ERROR; - updateContinueTask(); + updateContinueTask(execution); } // Timeout @@ -89,11 +90,11 @@ else if (currentTaskHasProfile(PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_SEND_WITH_ER execution.setVariable(BPMN_EXECUTION_VARIABLE_CONTINUE_STATUS, continueStatus); } - private void updateContinueTask() + private void updateContinueTask(DelegateExecution execution) { try { - Task continueTask = getCurrentTaskFromExecutionVariables(); + Task continueTask = getCurrentTaskFromExecutionVariables(execution); continueTask.setStatus(TaskStatus.COMPLETED); getFhirWebserviceClientProvider().getLocalWebserviceClient().update(continueTask); } @@ -103,9 +104,9 @@ private void updateContinueTask() } } - private boolean currentTaskHasProfile(String profile) + private boolean currentTaskHasProfile(DelegateExecution execution, String profile) { - Task currentTask = getCurrentTaskFromExecutionVariables(); + Task currentTask = getCurrentTaskFromExecutionVariables(execution); return currentTask.getMeta().getProfile().stream().anyMatch(p -> profile.equals(p.getValue())); } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/DownloadValidationErrorFromGth.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/DownloadValidationErrorFromGth.java index 140bb815..fab92d25 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/DownloadValidationErrorFromGth.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/DownloadValidationErrorFromGth.java @@ -70,7 +70,7 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio TargetValues.create(Target.createUniDirectionalTarget(gthIdentifierValue, getEndpointIdentifier(targetEndpoint), targetEndpoint.getAddress()))); - Task task = getCurrentTaskFromExecutionVariables(); + Task task = getCurrentTaskFromExecutionVariables(execution); IdType id = getDataReference(task).map(ref -> new IdType(ref)).get(); FhirWebserviceClient client = getFhirWebserviceClientProvider().getWebserviceClient(id.getBaseUrl()); @@ -92,7 +92,7 @@ private Optional getDataReference(Task task) { return getInputParameterValues(task, CODESYSTEM_NUM_CODEX_DATA_TRANSFER, CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_DATA_REFERENCE, Reference.class).findFirst() - .map(Reference::getReference); + .map(Reference::getReference); } private Stream getInputParameterValues(Task task, String system, String code, Class type) diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ExtractPatientReference.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ExtractPatientReference.java index 97698e0a..e7e123f8 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ExtractPatientReference.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ExtractPatientReference.java @@ -34,7 +34,7 @@ public ExtractPatientReference(FhirWebserviceClientProvider clientProvider, Task @Override protected void doExecute(DelegateExecution execution) throws Exception { - Task task = getCurrentTaskFromExecutionVariables(); + Task task = getCurrentTaskFromExecutionVariables(execution); Reference patient = getPatientReference(task); if (patient.hasIdentifier() && NAMING_SYSTEM_NUM_CODEX_DIC_PSEUDONYM.equals(patient.getIdentifier().getSystem()) @@ -48,7 +48,7 @@ else if (patient.hasReference()) { execution.setVariable(BPMN_EXECUTION_VARIABLE_PATIENT_REFERENCE, PatientReferenceValues.create(PatientReference.from(patient.getReference()))); - logger.info("Task contains absolut patient reference {}", patient.getReference()); + logger.info("Task contains absolute patient reference {}", patient.getReference()); } else { @@ -63,7 +63,7 @@ private Reference getPatientReference(Task task) { return getInputParameterValues(task, CODESYSTEM_NUM_CODEX_DATA_TRANSFER, CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_PATIENT, Reference.class).findFirst() - .orElseThrow(() -> new RuntimeException("No patient reference input parameter found")); + .orElseThrow(() -> new RuntimeException("No patient reference input parameter found")); } private Stream getInputParameterValues(Task task, String system, String code, Class type) diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/LogError.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/LogError.java index 6c0759ac..2cf782b6 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/LogError.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/LogError.java @@ -55,7 +55,7 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio { logger.debug("Setting Task.status failed, adding error"); - Task task = getLeadingTaskFromExecutionVariables(); + Task task = getLeadingTaskFromExecutionVariables(execution); task.setStatus(TaskStatus.FAILED); String errorCode = (String) execution.getVariable(BPMN_EXECUTION_VARIABLE_ERROR_CODE); @@ -77,10 +77,10 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio logger.error("Error while executing process at {}; code: '{}', message: {}", errorSource, errorCode, errorMessage); - errorLogger.logDataReceiveFailed(getLeadingTaskFromExecutionVariables().getIdElement() + errorLogger.logDataSendFailed(getLeadingTaskFromExecutionVariables(execution).getIdElement() .withServerBase(getFhirWebserviceClientProvider().getLocalBaseUrl(), ResourceType.Task.name())); } - updateLeadingTaskInExecutionVariables(task); + updateLeadingTaskInExecutionVariables(execution, task); } } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/LogValidationError.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/LogValidationError.java index 344ce38b..45d95f26 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/LogValidationError.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/LogValidationError.java @@ -65,17 +65,17 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio Map sourceIdsByBundleUuid = (Map) execution .getVariable(BPMN_EXECUTION_VARIABLE_SOURCE_IDS_BY_BUNDLE_UUID); - errorLogger.logValidationFailedRemote(getLeadingTaskFromExecutionVariables().getIdElement() + errorLogger.logValidationFailedRemote(getLeadingTaskFromExecutionVariables(execution).getIdElement() .withServerBase(getFhirWebserviceClientProvider().getLocalBaseUrl(), ResourceType.Task.name())); logValidationDetails(bundle, sourceIdsByBundleUuid); - addErrorsToTask(bundle, sourceIdsByBundleUuid); + addErrorsToTask(execution, bundle, sourceIdsByBundleUuid); } - private void addErrorsToTask(Bundle bundle, Map sourceIdsByBundleUuid) + private void addErrorsToTask(DelegateExecution execution, Bundle bundle, Map sourceIdsByBundleUuid) { logger.debug("Setting Task.status failed, adding validation errors"); - Task task = getLeadingTaskFromExecutionVariables(); + Task task = getLeadingTaskFromExecutionVariables(execution); task.setStatus(TaskStatus.FAILED); bundle.getEntry().stream() @@ -93,7 +93,7 @@ private void addErrorsToTask(Bundle bundle, Map sourceIdsByBundl errorOutputParameterGenerator.createCrrValidationError(sourceId, outcome).forEach(task::addOutput); }); - updateLeadingTaskInExecutionVariables(task); + updateLeadingTaskInExecutionVariables(execution, task); } private void logValidationDetails(Bundle bundle, Map sourceIdsByBundleUuid) diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ReadData.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ReadData.java index f1ce45a6..5b8caa64 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ReadData.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ReadData.java @@ -114,7 +114,7 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio String pseudonym = getPseudonym(execution) .orElseThrow(() -> new IllegalStateException("Patient reference does not contain identifier")); - Task task = getCurrentTaskFromExecutionVariables(); + Task task = getCurrentTaskFromExecutionVariables(execution); DateTimeType exportFrom = getExportFrom(task).orElse(null); InstantType exportTo = getExportTo(task).orElseThrow(() -> new IllegalStateException("No export-to in Task")); diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ValidateData.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ValidateData.java index 205323cb..5dc90e7f 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ValidateData.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ValidateData.java @@ -71,7 +71,8 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio Bundle bundle = (Bundle) execution.getVariable(BPMN_EXECUTION_VARIABLE_BUNDLE); - Map sourceIdsByBundleUuid = removeValidationResultsCollectSourceIdsIntoMap(bundle); + Map sourceIdsByBundleUuid = removeValidationResultsCollectSourceIdsIntoMap(execution, + bundle); execution.setVariable(BPMN_EXECUTION_VARIABLE_SOURCE_IDS_BY_BUNDLE_UUID, sourceIdsByBundleUuid); return; @@ -112,9 +113,9 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio logger.error("Validation of transfer bundle failed, {} resource{} with error", resourcesWithErrorCount, resourcesWithErrorCount != 1 ? "s" : ""); - addErrorsToTask(bundle); + addErrorsToTask(execution, bundle); errorLogger.logValidationFailedLocal( - getLeadingTaskFromExecutionVariables().getIdElement().withServerBase( + getLeadingTaskFromExecutionVariables(execution).getIdElement().withServerBase( getFhirWebserviceClientProvider().getLocalBaseUrl(), ResourceType.Task.name())); throw new BpmnError(CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_VALIDATION_FAILED, @@ -124,7 +125,7 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio else { Map sourceIdsByBundleUuid = removeValidationResultsCollectSourceIdsIntoMap( - bundle); + execution, bundle); execution.setVariable(BPMN_EXECUTION_VARIABLE_SOURCE_IDS_BY_BUNDLE_UUID, sourceIdsByBundleUuid); } } @@ -136,7 +137,7 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio }, () -> { logger.warn( - "{} not initialized, skipping validation. This is likley due to an error during startup of the process plugin", + "{} not initialized, skipping validation. This is likely due to an error during startup of the process plugin", BundleValidatorFactory.class.getSimpleName()); }); } @@ -191,9 +192,9 @@ private void logValidationDetails(IdType sourceId, OperationOutcomeIssueComponen } } - private void addErrorsToTask(Bundle bundle) + private void addErrorsToTask(DelegateExecution execution, Bundle bundle) { - Task task = getLeadingTaskFromExecutionVariables(); + Task task = getLeadingTaskFromExecutionVariables(execution); bundle.getEntry().stream() .filter(e -> e.hasResponse() && e.getResponse().hasOutcome() @@ -211,7 +212,8 @@ private void addErrorsToTask(Bundle bundle) }); } - private Map removeValidationResultsCollectSourceIdsIntoMap(Bundle bundle) + private Map removeValidationResultsCollectSourceIdsIntoMap(DelegateExecution execution, + Bundle bundle) { Map sourceIdByBundleUuid = new HashMap<>(); bundle.getEntry().stream().forEach(e -> diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/CheckForError.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/CheckForError.java index 81f3e3a2..e327034d 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/CheckForError.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/CheckForError.java @@ -50,24 +50,25 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio ContinueStatus continueStatus; // continue OK - if (currentTaskHasProfile(PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_TRANSLATE + "|" + VERSION)) + if (currentTaskHasProfile(execution, PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_TRANSLATE + "|" + VERSION)) { continueStatus = ContinueStatus.SUCCESS; - updateContinueTask(); + updateContinueTask(execution); } // continue Validation ERROR - else if (currentTaskHasProfile( + else if (currentTaskHasProfile(execution, PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_TRANSLATE_WITH_VALIDATION_ERROR + "|" + VERSION)) { continueStatus = ContinueStatus.VALIDATION_ERROR; - updateContinueTask(); + updateContinueTask(execution); } // continue ERROR - else if (currentTaskHasProfile(PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_TRANSLATE_WITH_ERROR + "|" + VERSION)) + else if (currentTaskHasProfile(execution, + PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_TRANSLATE_WITH_ERROR + "|" + VERSION)) { - Task continueWithErrorTask = getCurrentTaskFromExecutionVariables(); + Task continueWithErrorTask = getCurrentTaskFromExecutionVariables(execution); String errorCode = getErrorCode(continueWithErrorTask) .orElse(CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_UNKNOWN); @@ -80,7 +81,7 @@ else if (currentTaskHasProfile(PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_TRANSLATE_WI execution.setVariable(BPMN_EXECUTION_VARIABLE_ERROR_SOURCE, errorSource); continueStatus = ContinueStatus.ERROR; - updateContinueTask(); + updateContinueTask(execution); } // Timeout @@ -90,11 +91,11 @@ else if (currentTaskHasProfile(PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_TRANSLATE_WI execution.setVariable(BPMN_EXECUTION_VARIABLE_CONTINUE_STATUS, continueStatus); } - private void updateContinueTask() + private void updateContinueTask(DelegateExecution execution) { try { - Task continueTask = getCurrentTaskFromExecutionVariables(); + Task continueTask = getCurrentTaskFromExecutionVariables(execution); continueTask.setStatus(TaskStatus.COMPLETED); getFhirWebserviceClientProvider().getLocalWebserviceClient().update(continueTask); } @@ -104,9 +105,9 @@ private void updateContinueTask() } } - private boolean currentTaskHasProfile(String profile) + private boolean currentTaskHasProfile(DelegateExecution execution, String profile) { - Task currentTask = getCurrentTaskFromExecutionVariables(); + Task currentTask = getCurrentTaskFromExecutionVariables(execution); return currentTask.getMeta().getProfile().stream().anyMatch(p -> profile.equals(p.getValue())); } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/DownloadDataFromDic.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/DownloadDataFromDic.java index 2687d9f8..e25036c1 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/DownloadDataFromDic.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/DownloadDataFromDic.java @@ -68,7 +68,7 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio * need to use leading task not current task, since changes to current task variable will not survive * intermediate message catch events later in the process flow */ - Task task = getLeadingTaskFromExecutionVariables(); + Task task = getLeadingTaskFromExecutionVariables(execution); String dicIdentifierValue = task.getRequester().getIdentifier().getValue(); Endpoint targetEndpoint = getEndpoint(CODESYSTEM_HIGHMED_ORGANIZATION_ROLE_VALUE_MEDIC, dicIdentifierValue); @@ -97,14 +97,14 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio } // see comment above on leading vs current task - updateLeadingTaskInExecutionVariables(task); + updateLeadingTaskInExecutionVariables(execution, task); } private Optional getDataReference(Task task) { return getInputParameterValues(task, CODESYSTEM_NUM_CODEX_DATA_TRANSFER, CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_DATA_REFERENCE, Reference.class).findFirst() - .map(Reference::getReference); + .map(Reference::getReference); } private Stream getInputParameterValues(Task task, String system, String code, Class type) diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/DownloadValidationErrorFromCrr.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/DownloadValidationErrorFromCrr.java index 063886fd..93d359c2 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/DownloadValidationErrorFromCrr.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/DownloadValidationErrorFromCrr.java @@ -39,7 +39,7 @@ public DownloadValidationErrorFromCrr(FhirWebserviceClientProvider clientProvide @Override protected void doExecute(DelegateExecution execution) throws BpmnError, Exception { - Task task = getCurrentTaskFromExecutionVariables(); + Task task = getCurrentTaskFromExecutionVariables(execution); IdType id = getDataReference(task).map(ref -> new IdType(ref)).get(); FhirWebserviceClient client = getFhirWebserviceClientProvider().getWebserviceClient(id.getBaseUrl()); @@ -61,7 +61,7 @@ private Optional getDataReference(Task task) { return getInputParameterValues(task, CODESYSTEM_NUM_CODEX_DATA_TRANSFER, CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_DATA_REFERENCE, Reference.class).findFirst() - .map(Reference::getReference); + .map(Reference::getReference); } private Stream getInputParameterValues(Task task, String system, String code, Class type) diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/LogError.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/LogError.java index 5794392d..7a2e38dc 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/LogError.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/LogError.java @@ -55,7 +55,7 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio { logger.debug("Setting Task.status failed, adding error"); - Task task = getLeadingTaskFromExecutionVariables(); + Task task = getLeadingTaskFromExecutionVariables(execution); String errorCode = (String) execution.getVariable(BPMN_EXECUTION_VARIABLE_ERROR_CODE); String errorMessage = (String) execution.getVariable(BPMN_EXECUTION_VARIABLE_ERROR_MESSAGE); @@ -79,10 +79,10 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio logger.warn("Error while executing process at {}; code: '{}', message: {}", errorSource, errorCode, errorMessage); - errorLogger.logDataReceiveFailed(getLeadingTaskFromExecutionVariables().getIdElement() + errorLogger.logDataTranslateFailed(getLeadingTaskFromExecutionVariables(execution).getIdElement() .withServerBase(getFhirWebserviceClientProvider().getLocalBaseUrl(), ResourceType.Task.name())); } - updateLeadingTaskInExecutionVariables(task); + updateLeadingTaskInExecutionVariables(execution, task); } } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/LogValidationError.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/LogValidationError.java index a9ecd689..de04cc04 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/LogValidationError.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/LogValidationError.java @@ -50,15 +50,15 @@ public void afterPropertiesSet() throws Exception protected void doExecute(DelegateExecution execution) throws BpmnError, Exception { logger.warn("Validation error while adding resources to CRR FHIR repository"); - errorLogger.logValidationFailedRemote(getLeadingTaskFromExecutionVariables().getIdElement() + errorLogger.logValidationFailedRemote(getLeadingTaskFromExecutionVariables(execution).getIdElement() .withServerBase(getFhirWebserviceClientProvider().getLocalBaseUrl(), ResourceType.Task.name())); - Task task = getLeadingTaskFromExecutionVariables(); + Task task = getLeadingTaskFromExecutionVariables(execution); TaskOutputComponent output = errorOutputParameterGenerator.createError( CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_SOURCE_VALUE_CRR, CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_VALIDATION_FAILED, "Validation failed while inserting into CRR"); task.addOutput(output); - updateLeadingTaskInExecutionVariables(task); + updateLeadingTaskInExecutionVariables(execution, task); } } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/ReplacePseudonym.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/ReplacePseudonym.java index dbd18ea1..d6187aac 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/ReplacePseudonym.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/ReplacePseudonym.java @@ -45,7 +45,7 @@ public void afterPropertiesSet() throws Exception @Override protected void doExecute(DelegateExecution execution) throws BpmnError, Exception { - Task task = getCurrentTaskFromExecutionVariables(); + Task task = getCurrentTaskFromExecutionVariables(execution); String dicPseudonym = getPseudonym(task).get(); @@ -61,7 +61,7 @@ private Optional getPseudonym(Task task) { return getInputParameterValues(task, CODESYSTEM_NUM_CODEX_DATA_TRANSFER, CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_PSEUDONYM, Identifier.class).findFirst() - .map(Identifier::getValue); + .map(Identifier::getValue); } private Stream getInputParameterValues(Task task, String system, String code, Class type) diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/StoreValidationErrorForDic.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/StoreValidationErrorForDic.java index ca2e73cc..223a58ad 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/StoreValidationErrorForDic.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/translate/StoreValidationErrorForDic.java @@ -63,7 +63,7 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio { byte[] encrypted = (byte[]) execution.getVariable(BPMN_EXECUTION_VARIABLE_BUNDLE); - Task leadingTask = getLeadingTaskFromExecutionVariables(); + Task leadingTask = getLeadingTaskFromExecutionVariables(execution); String medicIdentifierValue = leadingTask.getRequester().getIdentifier().getValue(); String downloadUrl = saveBinary(encrypted, medicIdentifierValue); diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/trigger/FindNewData.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/trigger/FindNewData.java index 5e4256e4..afed3d88 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/trigger/FindNewData.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/trigger/FindNewData.java @@ -108,7 +108,7 @@ protected Optional getExportFrom(DelegateExecution execution) if (lastExportTo != null) return Optional.of(new DateWithPrecision(lastExportTo, TemporalPrecisionEnum.MILLI)); - Optional exportFromInput = getExportFromInput(getCurrentTaskFromExecutionVariables()); + Optional exportFromInput = getExportFromInput(getCurrentTaskFromExecutionVariables(execution)); return exportFromInput.map(d -> new DateWithPrecision(d.getValue(), d.getPrecision())); } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/trigger/SaveLastExportTo.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/trigger/SaveLastExportTo.java index 1375e7ef..0b4c0cac 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/trigger/SaveLastExportTo.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/trigger/SaveLastExportTo.java @@ -3,7 +3,6 @@ import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.BPMN_EXECUTION_VARIABLE_LAST_EXPORT_TO; import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.CODESYSTEM_NUM_CODEX_DATA_TRANSFER; import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_EXPORT_TO; -import static org.highmed.dsf.bpe.ConstantsBase.BPMN_EXECUTION_VARIABLE_TASK; import java.util.Date; @@ -30,10 +29,9 @@ protected void doExecute(DelegateExecution execution) throws BpmnError, Exceptio { Date lastExportTo = (Date) execution.getVariable(BPMN_EXECUTION_VARIABLE_LAST_EXPORT_TO); - Task task = getLeadingTaskFromExecutionVariables(); + Task task = getLeadingTaskFromExecutionVariables(execution); task.addOutput(exportToParameter(lastExportTo)); - - execution.setVariable(BPMN_EXECUTION_VARIABLE_TASK, task); + updateLeadingTaskInExecutionVariables(execution, task); } private TaskOutputComponent exportToParameter(Date exportTo) diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/spring/config/TransferDataConfig.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/spring/config/TransferDataConfig.java index 36222ef6..9e6ae833 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/spring/config/TransferDataConfig.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/spring/config/TransferDataConfig.java @@ -5,6 +5,7 @@ import java.nio.file.Paths; import java.util.List; +import org.highmed.dsf.bpe.service.MailService; import org.highmed.dsf.fhir.authorization.read.ReadAccessHelper; import org.highmed.dsf.fhir.client.FhirWebserviceClientProvider; import org.highmed.dsf.fhir.organization.EndpointProvider; @@ -53,6 +54,9 @@ public class TransferDataConfig @Autowired private BundleValidatorFactory bundleValidatorFactory; + @Autowired + private MailService mailService; + @ProcessDocumentation(description = "PEM encoded file with trusted certificates to validate the server-certificate of the GECCO FHIR server", processNames = { "wwwnetzwerk-universitaetsmedizinde_dataSend", "wwwnetzwerk-universitaetsmedizinde_dataReceive" }, recommendation = "Use docker secret file to configure", example = "/run/secrets/gecco_fhir_server_ca.pem") @@ -278,6 +282,18 @@ public class TransferDataConfig @Value("${de.netzwerk.universitaetsmedizin.codex.fttp.proxy.password:#{null}}") private String fttpProxyPassword; + @ProcessDocumentation(description = "To enable mails being send on validation errors, set to 'true'. This requires the SMPT mail service client to be configured in the DSF", processNames = { + "wwwnetzwerk-universitaetsmedizinde_dataSend", "wwwnetzwerk-universitaetsmedizinde_dataTranslate", + "wwwnetzwerk-universitaetsmedizinde_dataReceive" }) + @Value("${de.netzwerk.universitaetsmedizin.codex.mail.sendValidationFailedMails:false}") + private boolean sendValidationFailedMail; + + @ProcessDocumentation(description = "To enable a mail being send if a 'send', 'translate' or 'receive' process instance fails, set to 'true'. This requires the SMPT mail service client to be configured in the DSF", processNames = { + "wwwnetzwerk-universitaetsmedizinde_dataSend", "wwwnetzwerk-universitaetsmedizinde_dataTranslate", + "wwwnetzwerk-universitaetsmedizinde_dataReceive" }) + @Value("${de.netzwerk.universitaetsmedizin.codex.mail.sendProcessFailedMails:false}") + private boolean sendProcessFailedMail; + @Value("${org.highmed.dsf.bpe.fhir.server.organization.identifier.value}") private String localIdentifierValue; @@ -422,6 +438,6 @@ public ErrorOutputParameterGenerator errorOutputParameterGenerator() @Bean public ErrorLogger errorLogger() { - return new ErrorLogger(); + return new ErrorLogger(mailService, sendValidationFailedMail, sendProcessFailedMail); } } diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/AbstractFhirResourceFileSystemCache.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/AbstractFhirResourceFileSystemCache.java index 0ae7fcfc..3971c5ac 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/AbstractFhirResourceFileSystemCache.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/AbstractFhirResourceFileSystemCache.java @@ -22,7 +22,7 @@ public abstract class AbstractFhirResourceFileSystemCache /** * For JSON content with gzip compression using the .json.gz file name suffix. - * + * * @param cacheFolder * not null * @param resourceType diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/AbstractFileSystemCache.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/AbstractFileSystemCache.java index 9a234665..ce538c22 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/AbstractFileSystemCache.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/AbstractFileSystemCache.java @@ -49,7 +49,7 @@ public interface BiConsumerWithIoException /** * For JSON content with gzip compression using the .json.gz file name suffix. - * + * * @param cacheFolder * not null * @see #FILENAME_SUFFIX diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/BundleValidator.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/BundleValidator.java index b2d88d02..0f7baa0f 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/BundleValidator.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/BundleValidator.java @@ -9,7 +9,7 @@ public interface BundleValidator extends ResourceValidator /** * Validated all bundle entries with a entry.resource. The validation result will be added as a * {@link OperationOutcome} resource to the corresponding entry.response.outcome property. - * + * * @param bundle * not null * @return given bundle with added entry.response.outcome properties diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/PluginSnapshotGeneratorWithFileSystemCache.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/PluginSnapshotGeneratorWithFileSystemCache.java index bebd67a1..6c930847 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/PluginSnapshotGeneratorWithFileSystemCache.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/PluginSnapshotGeneratorWithFileSystemCache.java @@ -27,7 +27,7 @@ public class PluginSnapshotGeneratorWithFileSystemCache /** * For JSON content with gzip compression using the .json.xz file name suffix. - * + * * @param cacheFolder * not null * @param fhirContext diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValidationPackageClientWithFileSystemCache.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValidationPackageClientWithFileSystemCache.java index 85f0615b..b8f57398 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValidationPackageClientWithFileSystemCache.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValidationPackageClientWithFileSystemCache.java @@ -20,7 +20,7 @@ public class ValidationPackageClientWithFileSystemCache extends AbstractFileSyst /** * For JSON content with gzip compression using the .json.xz file name suffix. - * + * * @param cacheFolder * not null * @param mapper diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValidationPackageEntry.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValidationPackageEntry.java index 3ec33d73..b35e6630 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValidationPackageEntry.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValidationPackageEntry.java @@ -16,7 +16,7 @@ public class ValidationPackageEntry { /** * Does not close the input stream. - * + * * @param entry * not null * @param in diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValidationPackageManager.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValidationPackageManager.java index d402e5fe..cd976441 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValidationPackageManager.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValidationPackageManager.java @@ -10,7 +10,7 @@ public interface ValidationPackageManager { /** * Downloads the given FHIR package and all its dependencies. - * + * * @param name * not null * @param version @@ -24,7 +24,7 @@ default ValidationPackageWithDepedencies downloadPackageWithDependencies(String /** * Downloads the given FHIR package and all its dependencies. - * + * * @param name * not null * @param version @@ -38,7 +38,7 @@ default ValidationPackageWithDepedencies downloadPackageWithDependencies(String * will try to expand all {@link ValueSet}s with binding strength {@link BindingStrength#EXTENSIBLE}, * {@link BindingStrength#PREFERRED} or {@link BindingStrength#REQUIRED} used by the {@link StructureDefinition} of * the root package or their dependencies, before returning a {@link IValidationSupport}. - * + * * @param packageWithDependencies * not null * @return validation support for the validator @@ -63,7 +63,7 @@ BundleValidator createBundleValidator(IValidationSupport validationSupport, * {@link ValueSet}s with binding strength {@link BindingStrength#EXTENSIBLE}, {@link BindingStrength#PREFERRED} or * {@link BindingStrength#REQUIRED} used by the {@link StructureDefinition} of the specified (root) package or their * dependencies, before returning a {@link IValidationSupport}. - * + * * @param name * not null * @param version @@ -81,7 +81,7 @@ default BundleValidator createBundleValidator(String name, String version) * {@link ValueSet}s with binding strength {@link BindingStrength#EXTENSIBLE}, {@link BindingStrength#PREFERRED} or * {@link BindingStrength#REQUIRED} used by the {@link StructureDefinition} of the specified (root) package or their * dependencies, before returning a {@link IValidationSupport}. - * + * * @param identifier * not null * @return {@link BundleValidator} for the specified FHIR package diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValueSetExpanderWithFileSystemCache.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValueSetExpanderWithFileSystemCache.java index b33c1077..a220034c 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValueSetExpanderWithFileSystemCache.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValueSetExpanderWithFileSystemCache.java @@ -26,7 +26,7 @@ public class ValueSetExpanderWithFileSystemCache /** * For JSON content with gzip compression using the .json.xz file name suffix. - * + * * @param cacheFolder * not null * @param resourceType diff --git a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValueSetExpansionClientWithFileSystemCache.java b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValueSetExpansionClientWithFileSystemCache.java index 9f74d38b..8f43e671 100644 --- a/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValueSetExpansionClientWithFileSystemCache.java +++ b/codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/validation/ValueSetExpansionClientWithFileSystemCache.java @@ -27,7 +27,7 @@ public class ValueSetExpansionClientWithFileSystemCache extends AbstractFhirReso /** * For JSON content with gzip compression using the .json.xz file name suffix. - * + * * @param cacheFolder * not null * @param fhirContext diff --git a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-extension-error-metadata.xml b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-extension-error-metadata.xml index d85ec35a..d1c93d5a 100644 --- a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-extension-error-metadata.xml +++ b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-extension-error-metadata.xml @@ -51,7 +51,7 @@ - + @@ -81,7 +81,7 @@ - + diff --git a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-send-with-error.xml b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-send-with-error.xml index 1c667e11..619ee583 100644 --- a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-send-with-error.xml +++ b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-send-with-error.xml @@ -73,7 +73,7 @@ - + diff --git a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-send-with-validation-error.xml b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-send-with-validation-error.xml index b63daf74..46e99010 100644 --- a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-send-with-validation-error.xml +++ b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-send-with-validation-error.xml @@ -58,7 +58,7 @@ - + diff --git a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-translate-with-error.xml b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-translate-with-error.xml index 58ed0dee..e367a2bb 100644 --- a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-translate-with-error.xml +++ b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-translate-with-error.xml @@ -73,7 +73,7 @@ - + diff --git a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-translate-with-validation-error.xml b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-translate-with-validation-error.xml index 15a7f1c2..04b4dcd1 100644 --- a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-translate-with-validation-error.xml +++ b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-continue-data-translate-with-validation-error.xml @@ -58,7 +58,7 @@ - + diff --git a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-receive.xml b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-receive.xml index d69cbd1f..38b6fb91 100644 --- a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-receive.xml +++ b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-receive.xml @@ -58,7 +58,7 @@ - + @@ -101,7 +101,7 @@ - + @@ -155,7 +155,7 @@ - + diff --git a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-send.xml b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-send.xml index 52328f3f..3bf33ac6 100644 --- a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-send.xml +++ b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-send.xml @@ -51,7 +51,7 @@ - + @@ -86,7 +86,7 @@ - + @@ -120,7 +120,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -199,7 +199,7 @@ - + diff --git a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-translate.xml b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-translate.xml index ffd9dfc1..51cdb3c5 100644 --- a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-translate.xml +++ b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-translate.xml @@ -58,7 +58,7 @@ - + @@ -101,7 +101,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -169,7 +169,7 @@ - + diff --git a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-trigger.xml b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-trigger.xml index dae32234..ca1cd234 100644 --- a/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-trigger.xml +++ b/codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-trigger.xml @@ -58,7 +58,7 @@ - + @@ -91,7 +91,7 @@ - + diff --git a/codex-process-data-transfer/src/test/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ReadDataTest.java b/codex-process-data-transfer/src/test/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ReadDataTest.java index 541a6512..fc50848f 100644 --- a/codex-process-data-transfer/src/test/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ReadDataTest.java +++ b/codex-process-data-transfer/src/test/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/send/ReadDataTest.java @@ -5,10 +5,10 @@ import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.CODESYSTEM_NUM_CODEX_DATA_TRANSFER; import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_EXPORT_TO; import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.NAMING_SYSTEM_NUM_CODEX_DIC_PSEUDONYM; -import static org.highmed.dsf.bpe.ConstantsBase.BPMN_EXECUTION_VARIABLE_TASK; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.verify; import java.io.FileNotFoundException; @@ -70,7 +70,7 @@ public void testExecuteWithBgaData() throws Exception Mockito.when(execution.getVariable(BPMN_EXECUTION_VARIABLE_PATIENT_REFERENCE)).thenReturn(PatientReference .from(new Identifier().setSystem(NAMING_SYSTEM_NUM_CODEX_DIC_PSEUDONYM).setValue("source/original"))); Task task = createTask(); - Mockito.when(execution.getVariable(BPMN_EXECUTION_VARIABLE_TASK)).thenReturn(task); + Mockito.when(taskHelper.getCurrentTaskFromExecutionVariables(any())).thenReturn(task); readData.execute(execution); diff --git a/codex-processes-ap1-docker-test-setup/crr/bpe/last_event/README.md b/codex-processes-ap1-docker-test-setup/crr/bpe/last_event/README.md deleted file mode 100644 index 12fefbfa..00000000 --- a/codex-processes-ap1-docker-test-setup/crr/bpe/last_event/README.md +++ /dev/null @@ -1 +0,0 @@ -empty directory for last-event time.file \ No newline at end of file diff --git a/codex-processes-ap1-docker-test-setup/dic/bpe/last_event/README.md b/codex-processes-ap1-docker-test-setup/dic/bpe/last_event/README.md deleted file mode 100644 index 12fefbfa..00000000 --- a/codex-processes-ap1-docker-test-setup/dic/bpe/last_event/README.md +++ /dev/null @@ -1 +0,0 @@ -empty directory for last-event time.file \ No newline at end of file diff --git a/codex-processes-ap1-docker-test-setup/docker-compose.yml b/codex-processes-ap1-docker-test-setup/docker-compose.yml index e51ac4fa..295c159f 100644 --- a/codex-processes-ap1-docker-test-setup/docker-compose.yml +++ b/codex-processes-ap1-docker-test-setup/docker-compose.yml @@ -66,7 +66,7 @@ services: dic-fhir: - image: ghcr.io/highmed/fhir:0.7.0 + image: ghcr.io/highmed/fhir:0.9.0 restart: "no" ports: - 127.0.0.1:5000:5000 @@ -113,7 +113,7 @@ services: - db - proxy dic-bpe: - image: ghcr.io/highmed/bpe:0.7.0 + image: ghcr.io/highmed/bpe:0.9.0 restart: "no" ports: - 127.0.0.1:5003:5003 @@ -138,9 +138,6 @@ services: - type: bind source: ./dic/bpe/log target: /opt/bpe/log - - type: bind - source: ./dic/bpe/last_event - target: /opt/bpe/last_event - type: bind source: ./dic/bpe/cache target: /opt/bpe/cache @@ -203,7 +200,7 @@ services: gth-fhir: - image: ghcr.io/highmed/fhir:0.7.0 + image: ghcr.io/highmed/fhir:0.9.0 restart: "no" ports: - 127.0.0.1:5001:5001 @@ -250,7 +247,7 @@ services: - db - proxy gth-bpe: - image: ghcr.io/highmed/bpe:0.7.0 + image: ghcr.io/highmed/bpe:0.9.0 restart: "no" ports: - 127.0.0.1:5004:5004 @@ -274,9 +271,6 @@ services: - type: bind source: ./gth/bpe/log target: /opt/bpe/log - - type: bind - source: ./gth/bpe/last_event - target: /opt/bpe/last_event environment: TZ: Europe/Berlin EXTRA_JVM_ARGS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5004 @@ -310,7 +304,7 @@ services: crr-fhir: - image: ghcr.io/highmed/fhir:0.7.0 + image: ghcr.io/highmed/fhir:0.9.0 restart: "no" ports: - 127.0.0.1:5002:5002 @@ -357,7 +351,7 @@ services: - db - proxy crr-bpe: - image: ghcr.io/highmed/bpe:0.7.0 + image: ghcr.io/highmed/bpe:0.9.0 restart: "no" ports: - 127.0.0.1:5005:5005 @@ -382,9 +376,6 @@ services: - type: bind source: ./crr/bpe/log target: /opt/bpe/log - - type: bind - source: ./crr/bpe/last_event - target: /opt/bpe/last_event environment: TZ: Europe/Berlin EXTRA_JVM_ARGS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 diff --git a/codex-processes-ap1-docker-test-setup/gth/bpe/last_event/README.md b/codex-processes-ap1-docker-test-setup/gth/bpe/last_event/README.md deleted file mode 100644 index 12fefbfa..00000000 --- a/codex-processes-ap1-docker-test-setup/gth/bpe/last_event/README.md +++ /dev/null @@ -1 +0,0 @@ -empty directory for last-event time.file \ No newline at end of file diff --git a/codex-processes-ap1-test-data-generator/pom.xml b/codex-processes-ap1-test-data-generator/pom.xml index 5040491c..700823ed 100644 --- a/codex-processes-ap1-test-data-generator/pom.xml +++ b/codex-processes-ap1-test-data-generator/pom.xml @@ -6,7 +6,7 @@ de.netzwerk-universitaetsmedizin.codex codex-processes-ap1 - 0.6.0 + 0.6.0.1 diff --git a/pom.xml b/pom.xml index 05bea0bf..134b8886 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.netzwerk-universitaetsmedizin.codex codex-processes-ap1 - 0.6.0 + 0.6.0.1 pom @@ -19,7 +19,7 @@ ${project.basedir} 5.1.0 - 0.7.0 + 0.9.0 Business processes for the NUM CODEX project (AP1) as plugins for the HiGHmed Data Sharing Framework. @@ -104,12 +104,12 @@ de.hs-heilbronn.mi log4j2-utils - 0.13.0 + 0.14.0 de.hs-heilbronn.mi crypto-utils - 3.3.0 + 3.4.0 @@ -134,7 +134,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.0 @@ -145,7 +145,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.8.1 + 3.10.1 ${compileSource} ${compileTarget} @@ -154,12 +154,12 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M5 + 3.0.0-M7 org.apache.maven.plugins maven-jar-plugin - 3.2.0 + 3.3.0 @@ -178,22 +178,22 @@ org.apache.maven.plugins maven-dependency-plugin - 3.2.0 + 3.3.0 org.apache.maven.plugins maven-clean-plugin - 3.1.0 + 3.2.0 net.revelc.code.formatter formatter-maven-plugin - 2.17.1 + 2.20.0 net.revelc.code impsort-maven-plugin - 1.6.2 + 1.7.0 org.codehaus.mojo