Skip to content

Commit 85bbcc9

Browse files
committed
Merge remote-tracking branch 'origin/develop_2' into
issue/315_Reorganize_dsf-tools_Modules
2 parents 17b7834 + 59aad2b commit 85bbcc9

File tree

138 files changed

+2935
-1100
lines changed

Some content is hidden

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

138 files changed

+2935
-1100
lines changed

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,10 @@ dsf-docker-test-setup-3dic-ttp/secrets/dic2.key
8080
dsf-docker-test-setup-3dic-ttp/secrets/dic3.crt
8181
dsf-docker-test-setup-3dic-ttp/secrets/dic3.key
8282
dsf-docker-test-setup-3dic-ttp/secrets/issuing_ca.crt
83-
dsf-docker-test-setup-3dic-ttp/secrets/keycloak.crt
83+
dsf-docker-test-setup-3dic-ttp/secrets/keycloak.chain.crt
8484
dsf-docker-test-setup-3dic-ttp/secrets/keycloak.key.plain
8585
dsf-docker-test-setup-3dic-ttp/secrets/keycloak_trust_store.jks
86-
dsf-docker-test-setup-3dic-ttp/secrets/localhost.crt
86+
dsf-docker-test-setup-3dic-ttp/secrets/localhost.chain.crt
8787
dsf-docker-test-setup-3dic-ttp/secrets/localhost.key.plain
8888
dsf-docker-test-setup-3dic-ttp/secrets/root_ca.crt
8989
dsf-docker-test-setup-3dic-ttp/secrets/ttp.crt

CITATION.cff

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ preferred-citation:
2525
type: proceedings
2626
title: "Data Sharing Framework (DSF)"
2727
version: 2.0.0
28-
date-released: 2025-01-22
28+
date-released: 2025-05-31
2929
url: https://dsf.dev
3030
repository-code: https://github.com/datasharingframework/dsf
3131
repository-artifact: https://github.com/datasharingframework/dsf/releases

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
![Data Sharing Framework (DSF) logo.](dsf-fhir/dsf-fhir-server/src/main/resources/static/logo.svg)
1+
![Data Sharing Framework (DSF) logo.](dsf-fhir/dsf-fhir-server/src/main/resources/fhir/static/logo.svg)
22

33
The Data Sharing Framework (DSF) implements a distributed process engine based on the BPMN 2.0 and FHIR R4 standards. The DSF is used to support biomedical research with real-world data. Every participating site runs a FHIR endpoint (dsf-fhir) accessible by other sites and a business process engine (dsf-bpe) in the local secured network. Authentication between sites is handled using X.509 client/server certificates. The process engines execute BPMN processes in order to coordinate local and remote steps necessary to enable cross-site data sharing and feasibility analyses. This includes access to local data repositories, use-and-access-committee decision support, consent filtering, and privacy preserving record-linkage and pseudonymization.
44

dsf-bpe/dsf-bpe-process-api-v1-impl/pom.xml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
<version>2.0.0-SNAPSHOT</version>
1010
</parent>
1111

12+
<name>DSF BPE Process API v1 Implementation</name>
13+
1214
<dependencies>
1315
<dependency>
1416
<groupId>dev.dsf</groupId>
@@ -59,7 +61,7 @@
5961
<scope>test</scope>
6062
</dependency>
6163
</dependencies>
62-
64+
6365
<build>
6466
<plugins>
6567
<plugin>
@@ -138,10 +140,10 @@
138140
<artifactId>xpp3_xpath</artifactId>
139141
<version>1.1.4c</version>
140142
</artifactItem>-->
141-
<artifactItem>
143+
<!--<artifactItem>
142144
<groupId>org.apache.commons</groupId>
143145
<artifactId>commons-compress</artifactId>
144-
</artifactItem>
146+
</artifactItem>-->
145147
<artifactItem>
146148
<groupId>org.fhir</groupId>
147149
<artifactId>ucum</artifactId>

dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/plugin/ProcessPluginImpl.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,13 +163,19 @@ else if (filename.endsWith(XML_SUFFIX))
163163
&& BpmnMessage.Codes.MESSAGE_NAME.equals(c.getCode())))
164164
.count() == 1;
165165

166+
Function<StructureDefinition, Optional<String>> getStructureDefinitionBaseDefinition = s -> s
167+
.hasBaseDefinitionElement() && s.getBaseDefinitionElement().hasValue()
168+
? Optional.of(s.getBaseDefinitionElement().getValue())
169+
: Optional.empty();
170+
166171
return new ProcessPluginFhirConfig<>(ActivityDefinition.class, CodeSystem.class, Library.class, Measure.class,
167172
NamingSystem.class, Questionnaire.class, StructureDefinition.class, Task.class, ValueSet.class,
168173
OrganizationIdentifier.SID, TaskIdentifier.SID, TaskStatus.DRAFT.toCode(), BpmnMessage.URL,
169174
BpmnMessage.Codes.MESSAGE_NAME, parseResource, encodeResource, getResourceName, hasMetadataResourceUrl,
170175
hasMetadataResourceVersion, getMetadataResourceVersion, getActivityDefinitionUrl, NamingSystem::hasName,
171176
getTaskInstantiatesCanonical, getTaskIdentifierValue, isTaskStatusDraft, getRequester, getRecipient,
172-
Task::hasInput, hasTaskInputMessageName, Task::hasOutput);
177+
Task::hasInput, hasTaskInputMessageName, Task::hasOutput, getStructureDefinitionBaseDefinition,
178+
StructureDefinition::setBaseDefinition);
173179
}
174180

175181
private IParser newXmlParser()

dsf-bpe/dsf-bpe-process-api-v1-impl/src/test/java/dev/dsf/bpe/v1/plugin/ProcessPluginImplTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ public void testInitializeAndValidateResources() throws Exception
316316
List<BpmnFileAndModel> models = plugin.getProcessModels();
317317
assertEquals(1, models.size());
318318
BpmnFileAndModel bpmnFileAndModel = models.get(0);
319-
BpmnModelInstance model = bpmnFileAndModel.getModel();
319+
BpmnModelInstance model = bpmnFileAndModel.model();
320320
assertNotNull(model);
321321

322322
Collection<Process> processes = model.getModelElementsByType(Process.class);

dsf-bpe/dsf-bpe-process-api-v1/pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
<version>2.0.0-SNAPSHOT</version>
1010
</parent>
1111

12+
<name>DSF BPE Process API v1</name>
13+
1214
<dependencies>
1315
<dependency>
1416
<groupId>ca.uhn.hapi.fhir</groupId>

dsf-bpe/dsf-bpe-process-api-v2-impl/pom.xml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
<version>2.0.0-SNAPSHOT</version>
1010
</parent>
1111

12+
<name>DSF BPE Process API v2 Implementation</name>
13+
1214
<dependencies>
1315
<dependency>
1416
<groupId>dev.dsf</groupId>
@@ -182,7 +184,7 @@
182184
<artifactItem>
183185
<groupId>net.sf.saxon</groupId>
184186
<artifactId>Saxon-HE</artifactId>
185-
<version>9.8.0-15</version>
187+
<version>11.6</version>
186188
</artifactItem>
187189
<!--<artifactItem>
188190
<groupId>org.ogce</groupId>
@@ -194,23 +196,23 @@
194196
<artifactId>jakarta-regexp</artifactId>
195197
<version>1.4</version>
196198
</artifactItem>
197-
<artifactItem>
199+
<!--<artifactItem>
198200
<groupId>org.apache.commons</groupId>
199201
<artifactId>commons-compress</artifactId>
200-
</artifactItem>
202+
</artifactItem>-->
201203
<artifactItem>
202204
<groupId>org.fhir</groupId>
203205
<artifactId>ucum</artifactId>
204-
<version>1.0.8</version>
206+
<version>1.0.9</version>
205207
</artifactItem>
206-
<artifactItem>
208+
<!--<artifactItem>
207209
<groupId>com.google.code.gson</groupId>
208210
<artifactId>gson</artifactId>
209-
</artifactItem>
211+
</artifactItem>-->
210212
<artifactItem>
211213
<groupId>com.google.errorprone</groupId>
212214
<artifactId>error_prone_annotations</artifactId>
213-
<version>2.27.0</version>
215+
<version>2.38.0</version>
214216
</artifactItem>
215217
<artifactItem>
216218
<groupId>ca.uhn.hapi.fhir</groupId>
@@ -234,7 +236,7 @@
234236
<artifactItem>
235237
<groupId>org.checkerframework</groupId>
236238
<artifactId>checker-qual</artifactId>
237-
<version>3.43.0</version>
239+
<version>3.49.3</version>
238240
</artifactItem>
239241
<artifactItem>
240242
<groupId>com.google.j2objc</groupId>
@@ -244,17 +246,17 @@
244246
<artifactItem>
245247
<groupId>io.opentelemetry</groupId>
246248
<artifactId>opentelemetry-api</artifactId>
247-
<version>1.38.0</version>
249+
<version>1.44.1</version>
248250
</artifactItem>
249251
<artifactItem>
250252
<groupId>io.opentelemetry</groupId>
251253
<artifactId>opentelemetry-context</artifactId>
252-
<version>1.38.0</version>
254+
<version>1.44.1</version>
253255
</artifactItem>
254256
<artifactItem>
255257
<groupId>io.opentelemetry.instrumentation</groupId>
256258
<artifactId>opentelemetry-instrumentation-annotations</artifactId>
257-
<version>2.4.0</version>
259+
<version>2.10.0</version>
258260
</artifactItem>
259261
<artifactItem>
260262
<groupId>org.apache.tika</groupId>

dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/ProcessPluginApiImpl.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import dev.dsf.bpe.v2.service.OrganizationProvider;
1919
import dev.dsf.bpe.v2.service.QuestionnaireResponseHelper;
2020
import dev.dsf.bpe.v2.service.ReadAccessHelper;
21+
import dev.dsf.bpe.v2.service.TargetProvider;
2122
import dev.dsf.bpe.v2.service.TaskHelper;
2223
import dev.dsf.bpe.v2.service.process.ProcessAuthorizationHelper;
2324

@@ -39,14 +40,15 @@ public class ProcessPluginApiImpl implements ProcessPluginApi, InitializingBean
3940
private final ReadAccessHelper readAccessHelper;
4041
private final TaskHelper taskHelper;
4142
private final CryptoService cryptoService;
43+
private final TargetProvider targetProvider;
4244

4345
public ProcessPluginApiImpl(ProxyConfig proxyConfig, EndpointProvider endpointProvider, FhirContext fhirContext,
4446
DsfClientProvider dsfClientProvider, FhirClientProvider fhirClientProvider,
4547
OidcClientProvider oidcClientProvider, MailService mailService, MimetypeService mimetypeService,
4648
ObjectMapper objectMapper, OrganizationProvider organizationProvider,
4749
ProcessAuthorizationHelper processAuthorizationHelper,
4850
QuestionnaireResponseHelper questionnaireResponseHelper, ReadAccessHelper readAccessHelper,
49-
TaskHelper taskHelper, CryptoService cryptoService)
51+
TaskHelper taskHelper, CryptoService cryptoService, TargetProvider targetProvider)
5052
{
5153
this.proxyConfig = proxyConfig;
5254
this.endpointProvider = endpointProvider;
@@ -63,6 +65,7 @@ public ProcessPluginApiImpl(ProxyConfig proxyConfig, EndpointProvider endpointPr
6365
this.readAccessHelper = readAccessHelper;
6466
this.taskHelper = taskHelper;
6567
this.cryptoService = cryptoService;
68+
this.targetProvider = targetProvider;
6669
}
6770

6871
@Override
@@ -82,6 +85,7 @@ public void afterPropertiesSet() throws Exception
8285
Objects.requireNonNull(readAccessHelper, "readAccessHelper");
8386
Objects.requireNonNull(taskHelper, "taskHelper");
8487
Objects.requireNonNull(cryptoService, "cryptoService");
88+
Objects.requireNonNull(targetProvider, "targetProvider");
8589
}
8690

8791
@Override
@@ -173,4 +177,10 @@ public CryptoService getCryptoService()
173177
{
174178
return cryptoService;
175179
}
180+
181+
@Override
182+
public TargetProvider getTargetProvider()
183+
{
184+
return targetProvider;
185+
}
176186
}

dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/plugin/ProcessPluginImpl.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,13 +185,19 @@ else if (filename.endsWith(XML_SUFFIX))
185185
Predicate<Task> hasTaskInputMessageName = t -> t.getInput().stream()
186186
.filter(i -> i.getType().getCoding().stream().anyMatch(BpmnMessage::isMessageName)).count() == 1;
187187

188+
Function<StructureDefinition, Optional<String>> getStructureDefinitionBaseDefinition = s -> s
189+
.hasBaseDefinitionElement() && s.getBaseDefinitionElement().hasValue()
190+
? Optional.of(s.getBaseDefinitionElement().getValue())
191+
: Optional.empty();
192+
188193
return new ProcessPluginFhirConfig<>(ActivityDefinition.class, CodeSystem.class, Library.class, Measure.class,
189194
NamingSystem.class, Questionnaire.class, StructureDefinition.class, Task.class, ValueSet.class,
190195
OrganizationIdentifier.SID, TaskIdentifier.SID, TaskStatus.DRAFT.toCode(), BpmnMessage.SYSTEM,
191196
BpmnMessage.Codes.MESSAGE_NAME, parseResource, encodeResource, getResourceName, hasMetadataResourceUrl,
192197
hasMetadataResourceVersion, getMetadataResourceVersion, getActivityDefinitionUrl, NamingSystem::hasName,
193198
getTaskInstantiatesCanonical, getTaskIdentifierValue, isTaskStatusDraft, getRequester, getRecipient,
194-
Task::hasInput, hasTaskInputMessageName, Task::hasOutput);
199+
Task::hasInput, hasTaskInputMessageName, Task::hasOutput, getStructureDefinitionBaseDefinition,
200+
StructureDefinition::setBaseDefinition);
195201
}
196202

197203
private IParser newXmlParser()

0 commit comments

Comments
 (0)