Skip to content
This repository was archived by the owner on Oct 6, 2025. It is now read-only.

Commit d80f467

Browse files
committed
Merge remote-tracking branch
'origin/issues/36_feedback_messages_binary_delete' into develop
2 parents eb0027a + 103b2c0 commit d80f467

File tree

88 files changed

+5402
-511
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+5402
-511
lines changed

codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/ConstantsDataTransfer.java

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.DataTransferProcessPluginDefinition.VERSION;
44

5+
import java.nio.charset.StandardCharsets;
6+
57
public interface ConstantsDataTransfer
68
{
79
String BPMN_EXECUTION_VARIABLE_PATIENT_REFERENCE_LIST = "patientReferenceList";
@@ -13,9 +15,16 @@ public interface ConstantsDataTransfer
1315
String BPMN_EXECUTION_VARIABLE_EXPORT_FROM_PRECISION = "exportFromPrecision";
1416
String BPMN_EXECUTION_VARIABLE_EXPORT_TO = "exportTo";
1517
String BPMN_EXECUTION_VARIABLE_BUNDLE = "bundle";
18+
String BPMN_EXECUTION_VARIABLE_AES_RETURN_KEY = "aes-return-key";
1619
String BPMN_EXECUTION_VARIABLE_IDAT_MERGE_GRANTED = "idatMergeGranted";
1720
String BPMN_EXECUTION_VARIABLE_USAGE_AND_TRANSFER_GRANTED = "usageAndTransferGranted";
1821
String BPMN_EXECUTION_VARIABLE_BINARY_URL = "binaryUrl";
22+
String BPMN_EXECUTION_VARIABLE_ERROR_CODE = "errorCode";
23+
String BPMN_EXECUTION_VARIABLE_ERROR_MESSAGE = "errorMessage";
24+
String BPMN_EXECUTION_VARIABLE_ERROR_SOURCE = "errorSource";
25+
String BPMN_EXECUTION_VARIABLE_CONTINUE_STATUS = "continueStatus";
26+
String BPMN_EXECUTION_VARIABLE_RETURN_TARGET = "returnTarget";
27+
String BPMN_EXECUTION_VARIABLE_SOURCE_IDS_BY_BUNDLE_UUID = "sourceIdsByBundleUuid";
1928

2029
String NAMING_SYSTEM_NUM_CODEX_DIC_PSEUDONYM = "http://www.netzwerk-universitaetsmedizin.de/sid/dic-pseudonym";
2130
String NAMING_SYSTEM_NUM_CODEX_CRR_PSEUDONYM = "http://www.netzwerk-universitaetsmedizin.de/sid/crr-pseudonym";
@@ -33,30 +42,42 @@ public interface ConstantsDataTransfer
3342
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_EXPORT_TO = "export-to";
3443
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_DATA_REFERENCE = "data-reference";
3544

36-
String PROFILE_NUM_CODEX_TASK_START_DATA_TRIGGER = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-start-data-trigger";
37-
String PROFILE_NUM_CODEX_TASK_STOP_DATA_TRIGGER = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-stop-data-trigger";
3845
String PROFILE_NUM_CODEX_TASK_DATA_TRIGGER_PROCESS_URI = "http://www.netzwerk-universitaetsmedizin.de/bpe/Process/dataTrigger/";
3946
String PROFILE_NUM_CODEX_TASK_DATA_TRIGGER_PROCESS_URI_AND_LATEST_VERSION = PROFILE_NUM_CODEX_TASK_DATA_TRIGGER_PROCESS_URI
4047
+ VERSION;
48+
String PROFILE_NUM_CODEX_TASK_START_DATA_TRIGGER = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-start-data-trigger";
4149
String PROFILE_NUM_CODEX_TASK_START_DATA_TRIGGER_MESSAGE_NAME = "startDataTrigger";
50+
String PROFILE_NUM_CODEX_TASK_STOP_DATA_TRIGGER = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-stop-data-trigger";
4251
String PROFILE_NUM_CODEX_TASK_STOP_DATA_TRIGGER_MESSAGE_NAME = "stopDataTrigger";
4352

44-
String PROFILE_NUM_CODEX_TASK_START_DATA_SEND = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-start-data-send";
4553
String PROFILE_NUM_CODEX_TASK_DATA_SEND_PROCESS_URI = "http://www.netzwerk-universitaetsmedizin.de/bpe/Process/dataSend/";
4654
String PROFILE_NUM_CODEX_TASK_DATA_SEND_PROCESS_URI_AND_LATEST_VERSION = PROFILE_NUM_CODEX_TASK_DATA_SEND_PROCESS_URI
4755
+ VERSION;
56+
String PROFILE_NUM_CODEX_TASK_START_DATA_SEND = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-start-data-send";
4857
String PROFILE_NUM_CODEX_TASK_START_DATA_SEND_MESSAGE_NAME = "startDataSend";
58+
String PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_SEND = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-continue-data-send";
59+
String PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_SEND_MESSAGE_NAME = "continueDataSend";
60+
String PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_SEND_WITH_VALIDATION_ERROR = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-continue-data-send-with-validation-error";
61+
String PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_SEND_WITH_VALIDATION_ERROR_MESSAGE_NAME = "continueDataSendWithValidationError";
62+
String PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_SEND_WITH_ERROR = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-continue-data-send-with-error";
63+
String PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_SEND_WITH_ERROR_MESSAGE_NAME = "continueDataSendWithError";
4964

50-
String PROFILE_NUM_CODEX_TASK_START_DATA_TRANSLATE = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-start-data-translate";
5165
String PROFILE_NUM_CODEX_TASK_DATA_TRANSLATE_PROCESS_URI = "http://www.netzwerk-universitaetsmedizin.de/bpe/Process/dataTranslate/";
5266
String PROFILE_NUM_CODEX_TASK_DATA_TRANSLATE_PROCESS_URI_AND_LATEST_VERSION = PROFILE_NUM_CODEX_TASK_DATA_TRANSLATE_PROCESS_URI
5367
+ VERSION;
68+
String PROFILE_NUM_CODEX_TASK_START_DATA_TRANSLATE = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-start-data-translate";
5469
String PROFILE_NUM_CODEX_TASK_START_DATA_TRANSLATE_MESSAGE_NAME = "startDataTranslate";
70+
String PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_TRANSLATE = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-continue-data-translate";
71+
String PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_TRANSLATE_MESSAGE_NAME = "continueDataTranslate";
72+
String PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_TRANSLATE_WITH_VALIDATION_ERROR = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-continue-data-translate-with-validation-error";
73+
String PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_TRANSLATE_WITH_VALIDATION_ERROR_MESSAGE_NAME = "continueDataTranslateWithValidationError";
74+
String PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_TRANSLATE_WITH_ERROR = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-continue-data-translate-with-error";
75+
String PROFILE_NUM_CODEX_TASK_CONTINUE_DATA_TRANSLATE_WITH_ERROR_MESSAGE_NAME = "continueDataTranslateWithError";
5576

56-
String PROFILE_NUM_CODEX_TASK_START_DATA_RECEIVE = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-start-data-receive";
5777
String PROFILE_NUM_CODEX_TASK_DATA_RECEIVE_PROCESS_URI = "http://www.netzwerk-universitaetsmedizin.de/bpe/Process/dataReceive/";
5878
String PROFILE_NUM_CODEX_TASK_DATA_RECEIVE_PROCESS_URI_AND_LATEST_VERSION = PROFILE_NUM_CODEX_TASK_DATA_RECEIVE_PROCESS_URI
5979
+ VERSION;
80+
String PROFILE_NUM_CODEX_TASK_START_DATA_RECEIVE = "http://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/task-start-data-receive";
6081
String PROFILE_NUM_CODEX_TASK_START_DATA_RECEIVE_MESSAGE_NAME = "startDataReceive";
6182

6283
String PSEUDONYM_PLACEHOLDER = "${pseudonym}";
@@ -68,16 +89,27 @@ public interface ConstantsDataTransfer
6889
String HAPI_USER_DATA_SOURCE_ID_ELEMENT = "source-id";
6990

7091
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR = "http://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/data-transfer-error";
92+
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_PATIENT_NOT_FOUND = "patient-not-found";
93+
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_BAD_PATIENT_REFERENCE = "bad-patient-reference";
94+
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_FTTP_NOT_REACHABLE = "fttp-not-reachable";
95+
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_NO_DIC_PSEUDONYM_FOR_BLOOMFILTER = "no-dic-pseudonym-for-bloomfilter";
7196
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_VALIDATION_FAILED = "validation-failed";
97+
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_TIMEOUT_WAITING_FOR_RESPONSE_FROM_CRR = "timeout-waiting-for-response-from-crr";
98+
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_DOWNLOAD_DATA_FROM_DIC_FAILED = "download-data-from-dic-failed";
99+
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_NO_CRR_PSEUDONYM_FOR_DIC_PSEUDONYM = "no-crr-pseudonym-for-dic-pseudonym";
100+
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_TIMEOUT_WAITING_FOR_RESPONSE_FROM_GTH = "timeout-waiting-for-response-from-gth";
101+
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_DOWNLOAD_DATA_FROM_GTH_FAILED = "download-data-from-gth-failed";
102+
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_INSERT_INTO_CRR_FHIR_REPOSITORY_FAILED = "insert-into-crr-fhir-respository-failed";
72103

73104
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_SOURCE = "http://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/data-transfer-error-source";
74105
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_SOURCE_VALUE_MEDIC = "MeDIC";
75106
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_SOURCE_VALUE_GTH = "GTH";
76-
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_SOURCE_VALUE_FTTP = "fTTP";
77107
String CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_SOURCE_VALUE_CRR = "CRR";
78108

79109
String EXTENSION_ERROR_METADATA = "https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/error-metadata";
80110
String EXTENSION_ERROR_METADATA_TYPE = "type";
81111
String EXTENSION_ERROR_METADATA_SOURCE = "source";
82112
String EXTENSION_ERROR_METADATA_REFERENCE = "reference";
113+
114+
byte[] RETURN_AAD = "aLCdSbI55VAv2BaKs4ypnDw3AaRfSBWXa8Bxl78BJw".getBytes(StandardCharsets.UTF_8);
83115
}

codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/DataTransferProcessPluginDefinition.java

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,14 @@
2222
import ca.uhn.fhir.context.FhirContext;
2323
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.client.FttpClientFactory;
2424
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.client.GeccoClientFactory;
25+
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.spring.config.ReceiveConfig;
26+
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.spring.config.SendConfig;
2527
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.spring.config.TransferDataConfig;
2628
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.spring.config.TransferDataSerializerConfig;
29+
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.spring.config.TranslateConfig;
30+
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.spring.config.TriggerConfig;
2731
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.spring.config.ValidationConfig;
32+
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.spring.config.ValidationConfig.TerminologyServerConnectionTestStatus;
2833
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.validation.BundleValidatorFactory;
2934

3035
public class DataTransferProcessPluginDefinition implements ProcessPluginDefinition
@@ -61,7 +66,8 @@ public Stream<String> getBpmnFiles()
6166
@Override
6267
public Stream<Class<?>> getSpringConfigClasses()
6368
{
64-
return Stream.of(TransferDataConfig.class, TransferDataSerializerConfig.class, ValidationConfig.class);
69+
return Stream.of(TransferDataConfig.class, TransferDataSerializerConfig.class, ValidationConfig.class,
70+
TriggerConfig.class, SendConfig.class, TranslateConfig.class, ReceiveConfig.class);
6571
}
6672

6773
@Override
@@ -83,29 +89,42 @@ public ResourceProvider getResourceProvider(FhirContext fhirContext, ClassLoader
8389

8490
var sTexErMe = StructureDefinitionResource
8591
.file("fhir/StructureDefinition/num-codex-extension-error-metadata.xml");
86-
var sTstaDrec = StructureDefinitionResource
87-
.file("fhir/StructureDefinition/num-codex-task-start-data-receive.xml");
88-
var sTstaDsen = StructureDefinitionResource.file("fhir/StructureDefinition/num-codex-task-start-data-send.xml");
89-
var sTstaDtra = StructureDefinitionResource
90-
.file("fhir/StructureDefinition/num-codex-task-start-data-translate.xml");
9192
var sTstaDtri = StructureDefinitionResource
9293
.file("fhir/StructureDefinition/num-codex-task-start-data-trigger.xml");
9394
var sTstoDtri = StructureDefinitionResource
9495
.file("fhir/StructureDefinition/num-codex-task-stop-data-trigger.xml");
96+
var sTstaDsen = StructureDefinitionResource.file("fhir/StructureDefinition/num-codex-task-start-data-send.xml");
97+
var sTconDsen = StructureDefinitionResource
98+
.file("fhir/StructureDefinition/num-codex-task-continue-data-send.xml");
99+
var sTconDsenWvE = StructureDefinitionResource
100+
.file("fhir/StructureDefinition/num-codex-task-continue-data-send-with-validation-error.xml");
101+
var sTconDsenWe = StructureDefinitionResource
102+
.file("fhir/StructureDefinition/num-codex-task-continue-data-send-with-error.xml");
103+
var sTstaDtra = StructureDefinitionResource
104+
.file("fhir/StructureDefinition/num-codex-task-start-data-translate.xml");
105+
var sTconDtra = StructureDefinitionResource
106+
.file("fhir/StructureDefinition/num-codex-task-continue-data-translate.xml");
107+
var sTconDtraWvE = StructureDefinitionResource
108+
.file("fhir/StructureDefinition/num-codex-task-continue-data-translate-with-validation-error.xml");
109+
var sTconDtraWe = StructureDefinitionResource
110+
.file("fhir/StructureDefinition/num-codex-task-continue-data-translate-with-error.xml");
111+
var sTstaDrec = StructureDefinitionResource
112+
.file("fhir/StructureDefinition/num-codex-task-start-data-receive.xml");
95113

96114
var vD = ValueSetResource.file("fhir/ValueSet/num-codex-data-transfer.xml");
97115
var vDeS = ValueSetResource.file("fhir/ValueSet/num-codex-data-transfer-error-source.xml");
98116
var vDe = ValueSetResource.file("fhir/ValueSet/num-codex-data-transfer-error.xml");
99117

100-
Map<String, List<AbstractResource>> resourcesByProcessKeyAndVersion = Map.of( //
118+
Map<String, List<AbstractResource>> resourcesByProcessKeyAndVersion = Map.of(
101119
"wwwnetzwerk-universitaetsmedizinde_dataTrigger/" + VERSION,
102-
Arrays.asList(aTri, cD, nD, sTstaDtri, sTstoDtri, vD), //
103-
"wwwnetzwerk-universitaetsmedizinde_dataSend/" + VERSION,
104-
Arrays.asList(aSen, cD, cDeS, cDe, nD, nB, sTexErMe, sTstaDsen, vD, vDeS, vDe), //
120+
Arrays.asList(aTri, cD, nD, sTstaDtri, sTstoDtri, vD),
121+
"wwwnetzwerk-universitaetsmedizinde_dataSend/" + VERSION, Arrays.asList(aSen, cD, cDeS, cDe, nB, nD,
122+
sTexErMe, sTstaDsen, sTconDsen, sTconDsenWvE, sTconDsenWe, vD, vDeS, vDe),
105123
"wwwnetzwerk-universitaetsmedizinde_dataTranslate/" + VERSION,
106-
Arrays.asList(aTra, cD, nD, nC, sTstaDtra, vD), //
124+
Arrays.asList(aTra, cD, cDeS, cDe, nD, nC, sTexErMe, sTstaDtra, sTconDtra, sTconDtraWvE, sTconDtraWe,
125+
vD),
107126
"wwwnetzwerk-universitaetsmedizinde_dataReceive/" + VERSION,
108-
Arrays.asList(aRec, cD, nC, sTstaDrec, vD));
127+
Arrays.asList(aRec, cD, cDeS, cDe, nC, sTexErMe, sTstaDrec, vD));
109128

110129
return ResourceProvider.read(VERSION, DATE,
111130
() -> fhirContext.newXmlParser().setStripVersionsFromReferences(false), classLoader, propertyResolver,
@@ -129,12 +148,12 @@ public void onProcessesDeployed(ApplicationContext pluginApplicationContext, Lis
129148

130149
if (activeProcesses.contains("wwwnetzwerk-universitaetsmedizinde_dataSend"))
131150
{
132-
boolean testOk = pluginApplicationContext.getBean(ValidationConfig.class)
151+
TerminologyServerConnectionTestStatus status = pluginApplicationContext.getBean(ValidationConfig.class)
133152
.testConnectionToTerminologyServer();
134153

135-
if (testOk)
154+
if (TerminologyServerConnectionTestStatus.OK.equals(status))
136155
pluginApplicationContext.getBean(BundleValidatorFactory.class).init();
137-
else
156+
else if (TerminologyServerConnectionTestStatus.NOT_OK.equals(status))
138157
logger.warn(
139158
"Due to an error while testing the connection to the terminology server {} was not initialized, validation of bundles will be skipped.",
140159
BundleValidatorFactory.class.getSimpleName());

codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/client/FttpClientImpl.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.client;
22

3+
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_FTTP_NOT_REACHABLE;
34
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.PSEUDONYM_PATTERN_STRING;
45

56
import java.net.MalformedURLException;
@@ -10,6 +11,7 @@
1011
import java.util.regex.Matcher;
1112
import java.util.regex.Pattern;
1213

14+
import org.camunda.bpm.engine.delegate.BpmnError;
1315
import org.hl7.fhir.r4.model.Base64BinaryType;
1416
import org.hl7.fhir.r4.model.CapabilityStatement;
1517
import org.hl7.fhir.r4.model.Identifier;
@@ -128,8 +130,8 @@ public Optional<String> getCrrPseudonym(String dicSourceAndPseudonym)
128130
}
129131
catch (Exception e)
130132
{
131-
logger.error("Error while retrieving CRR pseudonym", e);
132-
return Optional.empty();
133+
logger.error("Error while retrieving CRR pseudonym: {} - {}", e.getClass().getName(), e.getMessage());
134+
throw new BpmnError(CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_FTTP_NOT_REACHABLE, e.getMessage());
133135
}
134136
}
135137

@@ -171,8 +173,8 @@ public Optional<String> getDicPseudonym(String bloomFilter)
171173
}
172174
catch (Exception e)
173175
{
174-
logger.error("Error while retrieving DIC pseudonym", e);
175-
return Optional.empty();
176+
logger.error("Error while retrieving DIC pseudonym: {} - {}", e.getClass().getName(), e.getMessage());
177+
throw new BpmnError(CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_FTTP_NOT_REACHABLE, e.getMessage());
176178
}
177179
}
178180

codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/client/fhir/AbstractFhirClient.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.client.fhir;
22

3+
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_BAD_PATIENT_REFERENCE;
34
import static de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.ConstantsDataTransfer.NAMING_SYSTEM_NUM_CODEX_DIC_PSEUDONYM;
45

56
import java.io.IOException;
@@ -23,6 +24,7 @@
2324
import java.util.stream.IntStream;
2425
import java.util.stream.Stream;
2526

27+
import org.camunda.bpm.engine.delegate.BpmnError;
2628
import org.hl7.fhir.instance.model.api.IBaseOperationOutcome;
2729
import org.hl7.fhir.r4.model.Bundle;
2830
import org.hl7.fhir.r4.model.Bundle.BundleEntryComponent;
@@ -578,8 +580,9 @@ public Optional<Patient> getPatient(String reference)
578580
}
579581
}
580582
else
581-
throw new RuntimeException(
582-
"Reference should be an absolute local fhir store url to " + client.getServerBase());
583+
throw new BpmnError(CODESYSTEM_NUM_CODEX_DATA_TRANSFER_ERROR_VALUE_BAD_PATIENT_REFERENCE,
584+
"Patient reference not an absolute reference to a resouce at the local GECCO FHIR server: "
585+
+ client.getServerBase());
583586
}
584587

585588
@Override

0 commit comments

Comments
 (0)