summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/dev/dnpm/etl/processor/consent/GicsConsentServiceTest.java322
-rw-r--r--src/test/kotlin/dev/dnpm/etl/processor/consent/ConsentProcessorTest.kt58
-rw-r--r--src/test/kotlin/dev/dnpm/etl/processor/monitoring/ConnectionCheckServiceTest.kt162
-rw-r--r--src/test/kotlin/dev/dnpm/etl/processor/services/ConsentProcessorTest.kt2
-rw-r--r--src/test/resources/deniedConsentBundle.json692
-rw-r--r--src/test/resources/fake_broadConsent_mii_response_permit.json513
-rw-r--r--src/test/resources/permittedConsentBundle.json692
7 files changed, 2289 insertions, 152 deletions
diff --git a/src/test/java/dev/dnpm/etl/processor/consent/GicsConsentServiceTest.java b/src/test/java/dev/dnpm/etl/processor/consent/GicsConsentServiceTest.java
index c5b269d..e450e4d 100644
--- a/src/test/java/dev/dnpm/etl/processor/consent/GicsConsentServiceTest.java
+++ b/src/test/java/dev/dnpm/etl/processor/consent/GicsConsentServiceTest.java
@@ -1,9 +1,22 @@
package dev.dnpm.etl.processor.consent;
+import static dev.dnpm.etl.processor.consent.GicsConsentService.IS_CONSENTED_ENDPOINT;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
+import static org.springframework.test.web.client.response.MockRestResponseCreators.withServerError;
+import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
+
+import ca.uhn.fhir.context.FhirContext;
import com.fasterxml.jackson.databind.ObjectMapper;
import dev.dnpm.etl.processor.config.AppConfiguration;
import dev.dnpm.etl.processor.config.AppFhirConfig;
import dev.dnpm.etl.processor.config.GIcsConfigProperties;
+import java.net.URI;
+import java.nio.charset.StandardCharsets;
+import java.time.Instant;
+import java.util.Date;
+import java.util.Objects;
+import org.apache.commons.io.IOUtils;
import org.apache.hc.core5.net.URIBuilder;
import org.hl7.fhir.r4.model.*;
import org.hl7.fhir.r4.model.OperationOutcome.IssueSeverity;
@@ -21,168 +34,207 @@ import org.springframework.test.context.TestPropertySource;
import org.springframework.test.web.client.MockRestServiceServer;
import org.springframework.web.client.RestTemplate;
-import java.net.URI;
-import java.time.Instant;
-import java.util.Date;
-
-import static dev.dnpm.etl.processor.consent.GicsConsentService.IS_CONSENTED_ENDPOINT;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withServerError;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
-
@ContextConfiguration(classes = {AppConfiguration.class, ObjectMapper.class})
-@TestPropertySource(properties = {
- "app.consent.service=gics",
- "app.consent.gics.uri=http://localhost:8090/ttp-fhir/fhir/gics"
-})
+@TestPropertySource(
+ properties = {
+ "app.consent.service=gics",
+ "app.consent.gics.uri=http://localhost:8090/ttp-fhir/fhir/gics"
+ })
@RestClientTest
class GicsConsentServiceTest {
- static final String GICS_BASE_URI = "http://localhost:8090/ttp-fhir/fhir/gics";
+ static final String GICS_BASE_URI = "http://localhost:8090/ttp-fhir/fhir/gics";
- MockRestServiceServer mockRestServiceServer;
- AppFhirConfig appFhirConfig;
- GIcsConfigProperties gIcsConfigProperties;
+ MockRestServiceServer mockRestServiceServer;
+ AppFhirConfig appFhirConfig;
+ GIcsConfigProperties gIcsConfigProperties;
- GicsConsentService gicsConsentService;
+ GicsConsentService gicsConsentService;
- static URI expectedGicsConsentedEndpoint() throws Exception {
+ static URI expectedGicsConsentedEndpoint() throws Exception {
return new URIBuilder(URI.create(GICS_BASE_URI)).appendPath(IS_CONSENTED_ENDPOINT).build();
}
@BeforeEach
- void setUp(
- @Autowired AppFhirConfig appFhirConfig,
- @Autowired GIcsConfigProperties gIcsConfigProperties
- ) {
- this.appFhirConfig = appFhirConfig;
- this.gIcsConfigProperties = gIcsConfigProperties;
+ void setUp(
+ @Autowired AppFhirConfig appFhirConfig,
+ @Autowired GIcsConfigProperties gIcsConfigProperties) {
+ this.appFhirConfig = appFhirConfig;
+ this.gIcsConfigProperties = gIcsConfigProperties;
- var restTemplate = new RestTemplate();
+ var restTemplate = new RestTemplate();
- this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate);
- this.gicsConsentService = new GicsConsentService(
+ this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate);
+ this.gicsConsentService =
+ new GicsConsentService(
this.gIcsConfigProperties,
RetryTemplate.builder().maxAttempts(1).build(),
restTemplate,
- this.appFhirConfig
- );
- }
+ this.appFhirConfig);
+ }
- @Test
- void shouldReturnTtpBroadConsentStatus() throws Exception {
- final Parameters consentedResponse = new Parameters()
+ @Test
+ void shouldReturnTtpBroadConsentStatus() throws Exception {
+ final Parameters consentedResponse =
+ new Parameters()
.addParameter(
new ParametersParameterComponent()
.setName("consented")
- .setValue(new BooleanType().setValue(true))
- );
-
- mockRestServiceServer
- .expect(
- requestTo(
- expectedGicsConsentedEndpoint())
- )
- .andRespond(
- withSuccess(
- appFhirConfig.fhirContext().newJsonParser().encodeResourceToString(consentedResponse),
- MediaType.APPLICATION_JSON
- )
- );
-
- var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
- assertThat(consentStatus).isEqualTo(TtpConsentStatus.BROAD_CONSENT_GIVEN);
- }
-
- @Test
- void shouldReturnRevokedConsent() throws Exception {
- final Parameters revokedResponse = new Parameters()
+ .setValue(new BooleanType().setValue(true)));
+
+ mockRestServiceServer
+ .expect(requestTo(expectedGicsConsentedEndpoint()))
+ .andRespond(
+ withSuccess(
+ appFhirConfig
+ .fhirContext()
+ .newJsonParser()
+ .encodeResourceToString(consentedResponse),
+ MediaType.APPLICATION_JSON));
+
+ var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
+ assertThat(consentStatus).isEqualTo(TtpConsentStatus.BROAD_CONSENT_GIVEN);
+ }
+
+ @Test
+ void shouldReturnRevokedConsent() throws Exception {
+ final Parameters revokedResponse =
+ new Parameters()
.addParameter(
new ParametersParameterComponent()
.setName("consented")
- .setValue(new BooleanType().setValue(false))
- );
-
- mockRestServiceServer
- .expect(
- requestTo(
- expectedGicsConsentedEndpoint())
- )
- .andRespond(
- withSuccess(
- appFhirConfig.fhirContext().newJsonParser().encodeResourceToString(revokedResponse),
- MediaType.APPLICATION_JSON)
- );
-
- var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
- assertThat(consentStatus).isEqualTo(TtpConsentStatus.BROAD_CONSENT_MISSING_OR_REJECTED);
- }
-
-
- @Test
- void shouldReturnInvalidParameterResponse() throws Exception {
- final OperationOutcome responseWithErrorOutcome = new OperationOutcome()
+ .setValue(new BooleanType().setValue(false)));
+
+ mockRestServiceServer
+ .expect(requestTo(expectedGicsConsentedEndpoint()))
+ .andRespond(
+ withSuccess(
+ appFhirConfig.fhirContext().newJsonParser().encodeResourceToString(revokedResponse),
+ MediaType.APPLICATION_JSON));
+
+ var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
+ assertThat(consentStatus).isEqualTo(TtpConsentStatus.BROAD_CONSENT_MISSING_OR_REJECTED);
+ }
+
+ @Test
+ void shouldReturnInvalidParameterResponse() throws Exception {
+ final OperationOutcome responseWithErrorOutcome =
+ new OperationOutcome()
.addIssue(
new OperationOutcomeIssueComponent()
.setSeverity(IssueSeverity.ERROR)
.setCode(IssueType.PROCESSING)
- .setDiagnostics("Invalid policy parameter...")
- );
-
- mockRestServiceServer
- .expect(
- requestTo(expectedGicsConsentedEndpoint())
- )
- .andRespond(
- withSuccess(
- appFhirConfig.fhirContext().newJsonParser().encodeResourceToString(responseWithErrorOutcome),
- MediaType.APPLICATION_JSON
- )
- );
-
- var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
- assertThat(consentStatus).isEqualTo(TtpConsentStatus.FAILED_TO_ASK);
- }
-
- @Test
- void shouldReturnRequestError() throws Exception {
- mockRestServiceServer
- .expect(
- requestTo(expectedGicsConsentedEndpoint())
- )
- .andRespond(
- withServerError()
- );
-
- var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
- assertThat(consentStatus).isEqualTo(TtpConsentStatus.FAILED_TO_ASK);
- }
-
- @Test
- void buildRequestParameterCurrentPolicyStatesForPersonTest() {
- String pid = "12345678";
- var result = gicsConsentService
- .buildRequestParameterCurrentPolicyStatesForPerson(
- pid,
- Date.from(Instant.now()),
- ConsentDomain.MODELLVORHABEN_64E
- );
-
- assertThat(result.getParameter())
- .as("should contain 3 parameter resources")
- .hasSize(3);
-
- assertThat(((StringType) result.getParameter("domain").getValue()).getValue())
- .isEqualTo(
- gIcsConfigProperties.getGenomDeConsentDomainName()
- );
-
- assertThat(((Identifier) result.getParameter("personIdentifier").getValue()).getValue())
- .isEqualTo(
- pid
- );
- }
+ .setDiagnostics("Invalid policy parameter..."));
+
+ mockRestServiceServer
+ .expect(requestTo(expectedGicsConsentedEndpoint()))
+ .andRespond(
+ withSuccess(
+ appFhirConfig
+ .fhirContext()
+ .newJsonParser()
+ .encodeResourceToString(responseWithErrorOutcome),
+ MediaType.APPLICATION_JSON));
+
+ var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
+ assertThat(consentStatus).isEqualTo(TtpConsentStatus.FAILED_TO_ASK);
+ }
+
+ @Test
+ void shouldReturnRequestError() throws Exception {
+ mockRestServiceServer
+ .expect(requestTo(expectedGicsConsentedEndpoint()))
+ .andRespond(withServerError());
+
+ var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
+ assertThat(consentStatus).isEqualTo(TtpConsentStatus.FAILED_TO_ASK);
+ }
+
+ @Test
+ void buildRequestParameterCurrentPolicyStatesForPersonTest() {
+ String pid = "12345678";
+ var result =
+ gicsConsentService.buildRequestParameterCurrentPolicyStatesForPerson(
+ pid, Date.from(Instant.now()), ConsentDomain.MODELLVORHABEN_64E);
+
+ assertThat(result.getParameter()).as("should contain 3 parameter resources").hasSize(3);
+ assertThat(((StringType) result.getParameter("domain").getValue()).getValue())
+ .isEqualTo(gIcsConfigProperties.getGenomDeConsentDomainName());
+ assertThat(((Identifier) result.getParameter("personIdentifier").getValue()).getValue())
+ .isEqualTo(pid);
+ }
+
+ @Test
+ void convertGicsResultToMiiBroadConsent() throws Exception {
+ var fhirJsonParser = FhirContext.forR4().newJsonParser();
+ fhirJsonParser.setPrettyPrint(true);
+
+ var gicsInputStream =
+ Objects.requireNonNull(
+ this.getClass()
+ .getClassLoader()
+ .getResourceAsStream("fake_broadConsent_gics_response_permit.json"));
+ var gicsConsentBundle =
+ (Bundle)
+ fhirJsonParser.parseResource(IOUtils.toString(gicsInputStream, StandardCharsets.UTF_8));
+
+ var miiInputStream =
+ Objects.requireNonNull(
+ this.getClass()
+ .getClassLoader()
+ .getResourceAsStream("fake_broadConsent_mii_response_permit.json"));
+ var miiConsent = IOUtils.toString(miiInputStream, StandardCharsets.UTF_8);
+
+ var actual = gicsConsentService.convertGicsResultToMiiBroadConsent(gicsConsentBundle);
+
+ assertThat(fhirJsonParser.encodeToString(actual)).isEqualTo(miiConsent);
+ }
+
+ @Test
+ void convertedMiiBroadConsentShouldNotContainPatientId() throws Exception {
+ var fhirJsonParser = FhirContext.forR4().newJsonParser();
+ fhirJsonParser.setPrettyPrint(true);
+
+ var miiInputStream =
+ Objects.requireNonNull(
+ this.getClass()
+ .getClassLoader()
+ .getResourceAsStream("fake_broadConsent_mii_response_permit.json"));
+ var miiConsentBundle =
+ (Bundle)
+ fhirJsonParser.parseResource(IOUtils.toString(miiInputStream, StandardCharsets.UTF_8));
+
+ var currentPatientId = miiConsentBundle.getEntry().getFirst().getResource().getIdPart();
+
+ var actual = gicsConsentService.anonymizeBroadConsent(miiConsentBundle);
+ assertThat(fhirJsonParser.encodeToString(actual)).doesNotContain(currentPatientId);
+ }
+
+ @Test
+ void miiBroadConsentShouldNotBeConvertedAgain() throws Exception {
+ var fhirJsonParser = FhirContext.forR4().newJsonParser();
+ fhirJsonParser.setPrettyPrint(true);
+
+ var gicsInputStream =
+ Objects.requireNonNull(
+ this.getClass()
+ .getClassLoader()
+ .getResourceAsStream("fake_broadConsent_mii_response_permit.json"));
+ var gicsConsentBundle =
+ (Bundle)
+ fhirJsonParser.parseResource(IOUtils.toString(gicsInputStream, StandardCharsets.UTF_8));
+
+ var miiInputStream =
+ Objects.requireNonNull(
+ this.getClass()
+ .getClassLoader()
+ .getResourceAsStream("fake_broadConsent_mii_response_permit.json"));
+ var miiConsent = IOUtils.toString(miiInputStream, StandardCharsets.UTF_8);
+
+ var actual = gicsConsentService.convertGicsResultToMiiBroadConsent(gicsConsentBundle);
+
+ assertThat(fhirJsonParser.encodeToString(actual)).isEqualTo(miiConsent);
+ }
}
diff --git a/src/test/kotlin/dev/dnpm/etl/processor/consent/ConsentProcessorTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/consent/ConsentProcessorTest.kt
new file mode 100644
index 0000000..5a86a29
--- /dev/null
+++ b/src/test/kotlin/dev/dnpm/etl/processor/consent/ConsentProcessorTest.kt
@@ -0,0 +1,58 @@
+package dev.dnpm.etl.processor.consent
+
+import ca.uhn.fhir.context.FhirContext
+import com.fasterxml.jackson.databind.ObjectMapper
+import dev.dnpm.etl.processor.config.AppConfigProperties
+import dev.dnpm.etl.processor.config.GIcsConfigProperties
+import dev.dnpm.etl.processor.services.ConsentProcessor
+import org.assertj.core.api.Assertions.assertThat
+import org.hl7.fhir.r4.model.Bundle
+import org.hl7.fhir.r4.model.Consent
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.extension.ExtendWith
+import org.junit.jupiter.params.ParameterizedTest
+import org.junit.jupiter.params.provider.CsvSource
+import org.mockito.Mock
+import org.mockito.junit.jupiter.MockitoExtension
+import java.util.*
+
+@ExtendWith(MockitoExtension::class)
+class ConsentProcessorTest {
+
+ lateinit var consentProcessor: ConsentProcessor
+
+ val objectMapper = ObjectMapper()
+ val fhirContext = FhirContext.forR4()
+
+ @BeforeEach
+ fun setup(
+ @Mock consentService: IConsentService
+ ) {
+ val appConfigProperties = AppConfigProperties()
+ val gIcsConfigProperties = GIcsConfigProperties("http://localhost")
+
+ this.consentProcessor = ConsentProcessor(
+ appConfigProperties,
+ gIcsConfigProperties,
+ objectMapper,
+ fhirContext,
+ consentService
+ )
+ }
+
+ @ParameterizedTest
+ @CsvSource(value = [
+ "permittedConsentBundle.json,permit",
+ "deniedConsentBundle.json,deny"
+ ])
+ fun checkGetProvisionTypeByPolicyCode(filename: String, expected: String) {
+ val bundle = fhirContext.newJsonParser().parseResource(
+ this.javaClass.classLoader.getResourceAsStream(filename)
+ )
+ assertThat(bundle).isInstanceOf(Bundle::class.java)
+
+ val actual = consentProcessor.getProvisionTypeByPolicyCode(bundle as Bundle, Date(), ConsentDomain.BROAD_CONSENT)
+
+ assertThat(actual).isEqualTo(Consent.ConsentProvisionType.valueOf(expected.uppercase()))
+ }
+} \ No newline at end of file
diff --git a/src/test/kotlin/dev/dnpm/etl/processor/monitoring/ConnectionCheckServiceTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/monitoring/ConnectionCheckServiceTest.kt
index 7205714..a6d855c 100644
--- a/src/test/kotlin/dev/dnpm/etl/processor/monitoring/ConnectionCheckServiceTest.kt
+++ b/src/test/kotlin/dev/dnpm/etl/processor/monitoring/ConnectionCheckServiceTest.kt
@@ -3,20 +3,22 @@ package dev.dnpm.etl.processor.monitoring
import dev.dnpm.etl.processor.config.GIcsConfigProperties
import dev.dnpm.etl.processor.config.GPasConfigProperties
import dev.dnpm.etl.processor.config.RestTargetProperties
+import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
-import org.mockito.Mock
import org.mockito.junit.jupiter.MockitoExtension
import org.springframework.http.HttpMethod
import org.springframework.http.MediaType
import org.springframework.test.web.client.MockRestServiceServer
import org.springframework.test.web.client.match.MockRestRequestMatchers.method
import org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo
+import org.springframework.test.web.client.response.MockRestResponseCreators.withServerError
import org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess
import org.springframework.web.client.RestTemplate
import reactor.core.publisher.Sinks
+import reactor.test.StepVerifier
@ExtendWith(MockitoExtension::class)
class ConnectionCheckServiceTest {
@@ -26,19 +28,18 @@ class ConnectionCheckServiceTest {
lateinit var mockRestServiceServer: MockRestServiceServer
lateinit var service: RestConnectionCheckService
+ lateinit var sink: Sinks.Many<ConnectionCheckResult>
@BeforeEach
- fun setUp(
- @Mock sink: Sinks.Many<ConnectionCheckResult>
- ) {
+ fun setUp() {
val restTemplate = RestTemplate()
- this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
-
val restTargetProperties = RestTargetProperties(
"http://localhost/api",
"user",
"password",
)
+ this.sink = Sinks.many().multicast().onBackpressureBuffer()
+ this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
this.service = RestConnectionCheckService(restTemplate, restTargetProperties, sink)
}
@@ -53,9 +54,51 @@ class ConnectionCheckServiceTest {
)
this.service.check()
-
this.mockRestServiceServer.verify()
+ }
+
+ @Test
+ fun shouldEmitAvailable() {
+ this.mockRestServiceServer
+ .expect(method(HttpMethod.GET))
+ .andRespond(
+ withSuccess("OK", MediaType.APPLICATION_JSON),
+ )
+
+ val verifier = StepVerifier.create(sink.asFlux())
+ .assertNext {
+ assertThat(it.available).isTrue()
+ }
+ .expectComplete()
+ .verifyLater()
+
+ this.service.check()
+
+ this.sink.emitComplete(Sinks.EmitFailureHandler.FAIL_FAST)
+
+ verifier.verify()
+ }
+
+ @Test
+ fun shouldEmitUnavailable() {
+ this.mockRestServiceServer
+ .expect(method(HttpMethod.GET))
+ .andRespond(
+ withServerError()
+ )
+
+ val verifier = StepVerifier.create(sink.asFlux())
+ .assertNext {
+ assertThat(it.available).isFalse()
+ }
+ .expectComplete()
+ .verifyLater()
+
+ this.service.check()
+ this.sink.emitComplete(Sinks.EmitFailureHandler.FAIL_FAST)
+
+ verifier.verify()
}
}
@@ -64,22 +107,22 @@ class ConnectionCheckServiceTest {
lateinit var mockRestServiceServer: MockRestServiceServer
lateinit var service: GPasConnectionCheckService
+ lateinit var sink: Sinks.Many<ConnectionCheckResult>
@BeforeEach
- fun setUp(
- @Mock sink: Sinks.Many<ConnectionCheckResult>
- ) {
+ fun setUp() {
val restTemplate = RestTemplate()
- this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
-
val gpasTargetProperties = GPasConfigProperties(
"http://localhost/gpas",
null,
+ null,
"patientDomain",
"genomDeTanDomain",
"username",
"password",
)
+ this.sink = Sinks.many().multicast().onBackpressureBuffer()
+ this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
this.service = GPasConnectionCheckService(restTemplate, gpasTargetProperties, sink)
}
@@ -96,7 +139,50 @@ class ConnectionCheckServiceTest {
this.service.check()
this.mockRestServiceServer.verify()
+ }
+
+ @Test
+ fun shouldEmitAvailable() {
+ this.mockRestServiceServer
+ .expect(method(HttpMethod.GET))
+ .andRespond(
+ withSuccess("OK", MediaType.APPLICATION_JSON),
+ )
+ val verifier = StepVerifier.create(sink.asFlux())
+ .assertNext {
+ assertThat(it.available).isTrue()
+ }
+ .expectComplete()
+ .verifyLater()
+
+ this.service.check()
+
+ this.sink.emitComplete(Sinks.EmitFailureHandler.FAIL_FAST)
+
+ verifier.verify()
+ }
+
+ @Test
+ fun shouldEmitUnavailable() {
+ this.mockRestServiceServer
+ .expect(method(HttpMethod.GET))
+ .andRespond(
+ withServerError()
+ )
+
+ val verifier = StepVerifier.create(sink.asFlux())
+ .assertNext {
+ assertThat(it.available).isFalse()
+ }
+ .expectComplete()
+ .verifyLater()
+
+ this.service.check()
+
+ this.sink.emitComplete(Sinks.EmitFailureHandler.FAIL_FAST)
+
+ verifier.verify()
}
}
@@ -105,19 +191,19 @@ class ConnectionCheckServiceTest {
lateinit var mockRestServiceServer: MockRestServiceServer
lateinit var service: GIcsConnectionCheckService
+ lateinit var sink: Sinks.Many<ConnectionCheckResult>
@BeforeEach
- fun setUp(
- @Mock sink: Sinks.Many<ConnectionCheckResult>
- ) {
+ fun setUp() {
val restTemplate = RestTemplate()
- this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
val gicsTargetProperties = GIcsConfigProperties(
"http://localhost/gics",
"username",
"password",
)
+ this.sink = Sinks.many().multicast().onBackpressureBuffer()
+ this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
this.service = GIcsConnectionCheckService(restTemplate, gicsTargetProperties, sink)
}
@@ -136,6 +222,50 @@ class ConnectionCheckServiceTest {
this.mockRestServiceServer.verify()
}
+
+ @Test
+ fun shouldEmitAvailable() {
+ this.mockRestServiceServer
+ .expect(method(HttpMethod.GET))
+ .andRespond(
+ withSuccess("OK", MediaType.APPLICATION_JSON),
+ )
+
+ val verifier = StepVerifier.create(sink.asFlux())
+ .assertNext {
+ assertThat(it.available).isTrue()
+ }
+ .expectComplete()
+ .verifyLater()
+
+ this.service.check()
+
+ this.sink.emitComplete(Sinks.EmitFailureHandler.FAIL_FAST)
+
+ verifier.verify()
+ }
+
+ @Test
+ fun shouldEmitUnavailable() {
+ this.mockRestServiceServer
+ .expect(method(HttpMethod.GET))
+ .andRespond(
+ withServerError()
+ )
+
+ val verifier = StepVerifier.create(sink.asFlux())
+ .assertNext {
+ assertThat(it.available).isFalse()
+ }
+ .expectComplete()
+ .verifyLater()
+
+ this.service.check()
+
+ this.sink.emitComplete(Sinks.EmitFailureHandler.FAIL_FAST)
+
+ verifier.verify()
+ }
}
} \ No newline at end of file
diff --git a/src/test/kotlin/dev/dnpm/etl/processor/services/ConsentProcessorTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/services/ConsentProcessorTest.kt
index 4d414c5..bbc8b1a 100644
--- a/src/test/kotlin/dev/dnpm/etl/processor/services/ConsentProcessorTest.kt
+++ b/src/test/kotlin/dev/dnpm/etl/processor/services/ConsentProcessorTest.kt
@@ -80,7 +80,7 @@ class ConsentProcessorTest {
val checkResult = consentProcessor.consentGatedCheckAndTryEmbedding(inputMtb)
assertThat(checkResult).isTrue
- assertThat(inputMtb.metadata.researchConsents).hasSize(26)
+ assertThat(inputMtb.metadata.researchConsents).isNotEmpty
}
companion object {
diff --git a/src/test/resources/deniedConsentBundle.json b/src/test/resources/deniedConsentBundle.json
new file mode 100644
index 0000000..3487c57
--- /dev/null
+++ b/src/test/resources/deniedConsentBundle.json
@@ -0,0 +1,692 @@
+{
+ "resourceType": "Bundle",
+ "type": "collection",
+ "entry": [
+ {
+ "fullUrl": "http://gics:8080/ttp-fhir/fhir/gics/Consent/XXXX",
+ "resource": {
+ "resourceType": "Consent",
+ "id": "XXXX",
+ "meta": {
+ "lastUpdated": "2025-10-31T14:21:04.630+01:00",
+ "profile": [
+ "http://fhir.de/ConsentManagement/StructureDefinition/Consent",
+ "https://www.medizininformatik-initiative.de/fhir/modul-consent/StructureDefinition/mii-pr-consent-einwilligung"
+ ]
+ },
+ "extension": [
+ {
+ "url": "http://fhir.de/ConsentManagement/StructureDefinition/DomainReference",
+ "extension": [
+ {
+ "url": "domain",
+ "valueReference": {
+ "reference": "ResearchStudy/VVVVV"
+ }
+ },
+ {
+ "url": "status",
+ "valueCoding": {
+ "system": "http://hl7.org/fhir/publication-status",
+ "code": "active"
+ }
+ }
+ ]
+ }
+ ],
+ "status": "active",
+ "scope": {
+ "coding": [
+ {
+ "system": "http://terminology.hl7.org/CodeSystem/consentscope",
+ "code": "research"
+ }
+ ]
+ },
+ "category": [
+ {
+ "coding": [
+ {
+ "system": "http://loinc.org",
+ "code": "57016-8"
+ }
+ ]
+ },
+ {
+ "coding": [
+ {
+ "system": "https://www.medizininformatik-initiative.de/fhir/modul-consent/CodeSystem/mii-cs-consent-consent_category",
+ "code": "2.16.840.1.113883.3.1937.777.24.2.184"
+ }
+ ]
+ }
+ ],
+ "patient": {
+ "reference": "Patient/psn-pat-here",
+ "display": "Patienten-ID PID-HERE"
+ },
+ "dateTime": "2025-10-13T00:00:00+01:00",
+ "organization": [
+ {
+ "display": "MII"
+ }
+ ],
+ "sourceReference": {
+ "reference": "QuestionnaireResponse/XXXX"
+ },
+ "policy": [
+ {
+ "uri": "urn:oid:2.16.840.1.113883.3.1937.777.24.2.1791"
+ }
+ ],
+ "provision": {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "provision": [
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "IDAT_erheben",
+ "display": "Erfassung neuer identifizierender Daten (IDAT)"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.2",
+ "display": "IDAT erheben"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_retro_speichern_verarbeiten",
+ "display": "Retrospektive Krankenkassendaten (KKDAT) aus fünf Jahren vor Einwilligung speichern und codiert verarbeiten zu Zwecken med. Forschung in der verantwortlichen Stelle"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.12",
+ "display": "KKDAT 5J retrospektiv speichern verarbeiten"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "BIOMAT_wissenschaftlich_nutzen_EU_DSGVO_konform",
+ "display": "Bereitstellung umcodierter Biomaterialien (BIOMAT) für wissenschaftliche Nutzung und Analysen zu Zwecken med. Forschung an ext. Forscher"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.22",
+ "display": "BIOMAT wissenschaftlich nutzen EU DSGVO NIVEAU"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_retro_wissenschaftlich_nutzen",
+ "display": "Bereitstellung umcodierter retrospektiver Krankenkassendaten (KKDAT) für wissenschaftliche Nutzung zu Zwecken med. Forschung an externe Forscher"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.13",
+ "display": "KKDAT 5J retrospektiv wissenschaftlich nutzen"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "BIOMAT_Analysedaten_zusammenfuehren_Dritte",
+ "display": "Zusammenführen von auf Biomaterialien (BIOMAT) basierenden Analysedaten mit Analysedaten Dritter, sofern dort ebenfalls eine Einwilligung vorliegt"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.23",
+ "display": "BIOMAT Analysedaten zusammenfuehren Dritte"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "Rekontaktierung_Zusatzbefund",
+ "display": "Rekontaktierung bezüglich Zusatzbefund im Rahmen der am Standort dafür entwickelten Prozesse und der im Nutzungsantrag angegebenen Bedingungen"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.31",
+ "display": "Rekontaktierung Zusatzbefund"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_pro_wissenschaftlich_nutzen",
+ "display": "Bereitstellung umcodierter prospektiver Krankenkassendaten (KKDAT) aus fünf Jahren ab Einwilligung zu Zwecken med. Forschung an ext. Forscher"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.17",
+ "display": "KKDAT 5J prospektiv wissenschaftlich nutzen"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "BIOMAT_lagern_verarbeiten",
+ "display": "Lagerung und Verarbeitung von Biomaterialien innerhalb der verantwortlichen Stelle (BIOMAT)"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.20",
+ "display": "BIOMAT lagern verarbeiten"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_retro_uebertragen",
+ "display": "Krankenkassendaten (KKDAT) der letzten fünf Kalenderjahre vor Datum Unterschrift übertragen"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.11",
+ "display": "KKDAT 5J retrospektiv uebertragen"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_KVNR_5J_retro_uebertragen",
+ "display": "Erlaubnis zur retrospektiven Übermittlung der KVNr., MII-Pseudonym und Zeitraum Datenübermittlung (von:5 Jahre vor Datum Unterschrift; bis: Datum Unterschrift) an zuständige Stelle"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.38",
+ "display": "KKDAT 5J retrospektiv uebertragen KVNR"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2030-03-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "MDAT_erheben",
+ "display": "Erfassung medizinischer Daten (MDAT)"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.6",
+ "display": "MDAT erheben"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_pro_speichern_verarbeiten",
+ "display": "Prospektive Krankenkassendaten (KKDAT) aus fünf Jahren ab Einwilligung speichern und codiert verarbeiten zu Zwecken der med. Forschung in der verantwortlichen Stelle"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.16",
+ "display": "KKDAT 5J prospektiv speichern verarbeiten"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "MDAT_wissenschaftlich_nutzen_EU_DSGVO_konform",
+ "display": "Bereitstellung umcodierter medizinischer Daten (MDAT) für wissenschaftliche Nutzung zu Zwecken med. Forschung an externe Forscher"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.8",
+ "display": "MDAT wissenschaftlich nutzen EU DSGVO NIVEAU"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "Rekontaktierung_Verknuepfung_Datenbanken",
+ "display": "Rekontaktierung zur Verknüpfung von Patientendaten mit Daten anderer Datenbanken"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.27",
+ "display": "Rekontaktierung Verknüpfung Datenbanken"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "Rekontaktierung_weitere_Studien",
+ "display": "Rekontaktierung bezüglich Information zu neuen Forschungsvorhaben oder Studien"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.29",
+ "display": "Rekontaktierung weitere Studien"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "IDAT_bereitstellen_EU_DSGVO_konform",
+ "display": "Herausgabe identifizierender Daten (IDAT) an unabhängige Treuhandstelle zur weiteren Verarbeitung"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.5",
+ "display": "IDAT bereitstellen EU DSGVO NIVEAU"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "IDAT_speichern_verarbeiten",
+ "display": "Speicherung und Verarbeitung identifizierender Daten (IDAT) zu Zwecken med. Forschung in der verantwortlichen Stelle"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.3",
+ "display": "IDAT speichern, verarbeiten"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "MDAT_speichern_verarbeiten",
+ "display": "Speicherung und Verarbeitung von medizinischen codierten Daten zu Zwecken med. Forschung innerhalb der verantwortlichen Stelle (MDAT)"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.7",
+ "display": "MDAT speichern, verarbeiten"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2030-03-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "BIOMAT_erheben",
+ "display": "Gewinnung von Biomaterialien (BIOMAT)"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.19",
+ "display": "BIOMAT erheben"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "Rekontaktierung_Ergebnisse_erheblicher_Bedeutung",
+ "display": "Rekontaktierung des Betroffenen bei Ergebnissen von erheblicher Bedeutung"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.37",
+ "display": "Rekontaktierung Ergebnisse erheblicher Bedeutung"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2030-03-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_KVNR_5J_pro_uebertragen",
+ "display": "Erlaubnis zur prospektiven Übermittlung der KVNr., MII-Pseudonym und Zeitraum Datenübermittlung (von: Datum Unterschrift; bis: max. 5 Kalenderjahre nach Unterschrift) an zuständige Stelle"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.39",
+ "display": "KKDAT 5J prospektiv uebertragen KVNR"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2030-03-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "BIOMAT_Zusatzmengen_entnehmen",
+ "display": "Entnahme zusätzlicher Mengen von Biomaterialien (BIOMAT) in den in der Einwilligung beschriebenen Grenzen"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.25",
+ "display": "BIOMAT Zusatzmengen entnehmen"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "Rekontaktierung_weitere_Erhebung",
+ "display": "Rekontaktierung bezüglich Erhebung zusätzlicher Daten"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.28",
+ "display": "Rekontaktierung weitere Erhebung"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "IDAT_zusammenfuehren_Dritte",
+ "display": "Zusammenführung identifizierender Daten (IDAT) über die unabhängige Treuhandstelle mit Dritten Forschungspartnern, sofern dort eine Einwilligung vorliegt"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.4",
+ "display": "IDAT zusammenfuehren Dritte"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "MDAT_zusammenfuehren_Dritte",
+ "display": "Zusammenführung medizinischer Daten (MDAT) mit Dritten Forschungspartnern, sofern dort eine Einwilligung vorliegt"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.9",
+ "display": "MDAT zusammenfuehren Dritte"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2030-03-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_pro_uebertragen",
+ "display": "Prospektive Krankenkassendaten (KKDAT) für fünf Kalenderjahre nach Datum Unterschrift übertragen"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.15",
+ "display": "KKDAT 5J prospektiv uebertragen"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/src/test/resources/fake_broadConsent_mii_response_permit.json b/src/test/resources/fake_broadConsent_mii_response_permit.json
new file mode 100644
index 0000000..53f13b5
--- /dev/null
+++ b/src/test/resources/fake_broadConsent_mii_response_permit.json
@@ -0,0 +1,513 @@
+{
+ "resourceType": "Bundle",
+ "type": "collection",
+ "total": 26,
+ "entry": [ {
+ "fullUrl": "http://localhost:8080/ttp-fhir/fhir/gics/Consent/7d3456c2-79b1-11f0-ab27-6ed0ed82d0fd",
+ "resource": {
+ "resourceType": "Consent",
+ "id": "7d3456c2-79b1-11f0-ab27-6ed0ed82d0fd",
+ "meta": {
+ "lastUpdated": "2025-08-15T11:13:59.143+02:00",
+ "profile": [ "http://fhir.de/ConsentManagement/StructureDefinition/Consent", "https://www.medizininformatik-initiative.de/fhir/modul-consent/StructureDefinition/mii-pr-consent-einwilligung" ]
+ },
+ "extension": [ {
+ "url": "http://fhir.de/ConsentManagement/StructureDefinition/DomainReference",
+ "extension": [ {
+ "url": "domain",
+ "valueReference": {
+ "reference": "ResearchStudy/3c3ffec5-79b1-11f0-ab27-6ed0ed82d0fd"
+ }
+ }, {
+ "url": "status",
+ "valueCoding": {
+ "system": "http://hl7.org/fhir/publication-status",
+ "code": "active"
+ }
+ } ]
+ } ],
+ "status": "active",
+ "scope": {
+ "coding": [ {
+ "system": "http://terminology.hl7.org/CodeSystem/consentscope",
+ "code": "research"
+ } ]
+ },
+ "category": [ {
+ "coding": [ {
+ "system": "http://loinc.org",
+ "code": "57016-8"
+ } ]
+ }, {
+ "coding": [ {
+ "system": "https://www.medizininformatik-initiative.de/fhir/modul-consent/CodeSystem/mii-cs-consent-consent_category",
+ "code": "2.16.840.1.113883.3.1937.777.24.2.184"
+ } ]
+ } ],
+ "patient": {
+ "reference": "Patient/7d2da57f-79b1-11f0-ab27-6ed0ed82d0fd",
+ "display": "Patienten-ID 644bae7a-56f6-4ee8-b02f-c532e65af5b1"
+ },
+ "dateTime": "2025-08-15T00:00:00+02:00",
+ "organization": [ {
+ "display": "MII"
+ } ],
+ "sourceReference": {
+ "reference": "QuestionnaireResponse/7d314bc5-79b1-11f0-ab27-6ed0ed82d0fd"
+ },
+ "policy": [ {
+ "uri": "urn:oid:2.16.840.1.113883.3.1937.777.24.2.1791"
+ } ],
+ "provision": {
+ "type": "deny",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "provision": [ {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "IDAT_erheben",
+ "display": "Erfassung neuer identifizierender Daten (IDAT)"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.2",
+ "display": "IDAT erheben"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_retro_speichern_verarbeiten",
+ "display": "Retrospektive Krankenkassendaten (KKDAT) aus fünf Jahren vor Einwilligung speichern und codiert verarbeiten zu Zwecken med. Forschung in der verantwortlichen Stelle"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.12",
+ "display": "KKDAT 5J retrospektiv speichern verarbeiten"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "BIOMAT_wissenschaftlich_nutzen_EU_DSGVO_konform",
+ "display": "Bereitstellung umcodierter Biomaterialien (BIOMAT) für wissenschaftliche Nutzung und Analysen zu Zwecken med. Forschung an ext. Forscher"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.22",
+ "display": "BIOMAT wissenschaftlich nutzen EU DSGVO NIVEAU"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_retro_wissenschaftlich_nutzen",
+ "display": "Bereitstellung umcodierter retrospektiver Krankenkassendaten (KKDAT) für wissenschaftliche Nutzung zu Zwecken med. Forschung an externe Forscher"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.13",
+ "display": "KKDAT 5J retrospektiv wissenschaftlich nutzen"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "BIOMAT_Analysedaten_zusammenfuehren_Dritte",
+ "display": "Zusammenführen von auf Biomaterialien (BIOMAT) basierenden Analysedaten mit Analysedaten Dritter, sofern dort ebenfalls eine Einwilligung vorliegt"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.23",
+ "display": "BIOMAT Analysedaten zusammenfuehren Dritte"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "Rekontaktierung_Zusatzbefund",
+ "display": "Rekontaktierung bezüglich Zusatzbefund im Rahmen der am Standort dafür entwickelten Prozesse und der im Nutzungsantrag angegebenen Bedingungen"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.31",
+ "display": "Rekontaktierung Zusatzbefund"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_pro_wissenschaftlich_nutzen",
+ "display": "Bereitstellung umcodierter prospektiver Krankenkassendaten (KKDAT) aus fünf Jahren ab Einwilligung zu Zwecken med. Forschung an ext. Forscher"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.17",
+ "display": "KKDAT 5J prospektiv wissenschaftlich nutzen"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "BIOMAT_lagern_verarbeiten",
+ "display": "Lagerung und Verarbeitung von Biomaterialien innerhalb der verantwortlichen Stelle (BIOMAT)"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.20",
+ "display": "BIOMAT lagern verarbeiten"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_retro_uebertragen",
+ "display": "Krankenkassendaten (KKDAT) der letzten fünf Kalenderjahre vor Datum Unterschrift übertragen"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.11",
+ "display": "KKDAT 5J retrospektiv uebertragen"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_KVNR_5J_retro_uebertragen",
+ "display": "Erlaubnis zur retrospektiven Übermittlung der KVNr., MII-Pseudonym und Zeitraum Datenübermittlung (von:5 Jahre vor Datum Unterschrift; bis: Datum Unterschrift) an zuständige Stelle"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.38",
+ "display": "KKDAT 5J retrospektiv uebertragen KVNR"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2030-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "MDAT_erheben",
+ "display": "Erfassung medizinischer Daten (MDAT)"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.6",
+ "display": "MDAT erheben"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_pro_speichern_verarbeiten",
+ "display": "Prospektive Krankenkassendaten (KKDAT) aus fünf Jahren ab Einwilligung speichern und codiert verarbeiten zu Zwecken der med. Forschung in der verantwortlichen Stelle"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.16",
+ "display": "KKDAT 5J prospektiv speichern verarbeiten"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "MDAT_wissenschaftlich_nutzen_EU_DSGVO_konform",
+ "display": "Bereitstellung umcodierter medizinischer Daten (MDAT) für wissenschaftliche Nutzung zu Zwecken med. Forschung an externe Forscher"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.8",
+ "display": "MDAT wissenschaftlich nutzen EU DSGVO NIVEAU"
+ } ]
+ } ]
+ }, {
+ "type": "deny",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "Rekontaktierung_Verknuepfung_Datenbanken",
+ "display": "Rekontaktierung zur Verknüpfung von Patientendaten mit Daten anderer Datenbanken"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.27",
+ "display": "Rekontaktierung Verknüpfung Datenbanken"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "Rekontaktierung_weitere_Studien",
+ "display": "Rekontaktierung bezüglich Information zu neuen Forschungsvorhaben oder Studien"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.29",
+ "display": "Rekontaktierung weitere Studien"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "IDAT_bereitstellen_EU_DSGVO_konform",
+ "display": "Herausgabe identifizierender Daten (IDAT) an unabhängige Treuhandstelle zur weiteren Verarbeitung"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.5",
+ "display": "IDAT bereitstellen EU DSGVO NIVEAU"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "IDAT_speichern_verarbeiten",
+ "display": "Speicherung und Verarbeitung identifizierender Daten (IDAT) zu Zwecken med. Forschung in der verantwortlichen Stelle"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.3",
+ "display": "IDAT speichern, verarbeiten"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "MDAT_speichern_verarbeiten",
+ "display": "Speicherung und Verarbeitung von medizinischen codierten Daten zu Zwecken med. Forschung innerhalb der verantwortlichen Stelle (MDAT)"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.7",
+ "display": "MDAT speichern, verarbeiten"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2030-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "BIOMAT_erheben",
+ "display": "Gewinnung von Biomaterialien (BIOMAT)"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.19",
+ "display": "BIOMAT erheben"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "Rekontaktierung_Ergebnisse_erheblicher_Bedeutung",
+ "display": "Rekontaktierung des Betroffenen bei Ergebnissen von erheblicher Bedeutung"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.37",
+ "display": "Rekontaktierung Ergebnisse erheblicher Bedeutung"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2030-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_KVNR_5J_pro_uebertragen",
+ "display": "Erlaubnis zur prospektiven Übermittlung der KVNr., MII-Pseudonym und Zeitraum Datenübermittlung (von: Datum Unterschrift; bis: max. 5 Kalenderjahre nach Unterschrift) an zuständige Stelle"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.39",
+ "display": "KKDAT 5J prospektiv uebertragen KVNR"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2030-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "BIOMAT_Zusatzmengen_entnehmen",
+ "display": "Entnahme zusätzlicher Mengen von Biomaterialien (BIOMAT) in den in der Einwilligung beschriebenen Grenzen"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.25",
+ "display": "BIOMAT Zusatzmengen entnehmen"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "Rekontaktierung_weitere_Erhebung",
+ "display": "Rekontaktierung bezüglich Erhebung zusätzlicher Daten"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.28",
+ "display": "Rekontaktierung weitere Erhebung"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "IDAT_zusammenfuehren_Dritte",
+ "display": "Zusammenführung identifizierender Daten (IDAT) über die unabhängige Treuhandstelle mit Dritten Forschungspartnern, sofern dort eine Einwilligung vorliegt"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.4",
+ "display": "IDAT zusammenfuehren Dritte"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2055-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "MDAT_zusammenfuehren_Dritte",
+ "display": "Zusammenführung medizinischer Daten (MDAT) mit Dritten Forschungspartnern, sofern dort eine Einwilligung vorliegt"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.9",
+ "display": "MDAT zusammenfuehren Dritte"
+ } ]
+ } ]
+ }, {
+ "type": "permit",
+ "period": {
+ "start": "2025-08-15T00:00:00+02:00",
+ "end": "2030-08-15T00:00:00+02:00"
+ },
+ "code": [ {
+ "coding": [ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_pro_uebertragen",
+ "display": "Prospektive Krankenkassendaten (KKDAT) für fünf Kalenderjahre nach Datum Unterschrift übertragen"
+ }, {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.15",
+ "display": "KKDAT 5J prospektiv uebertragen"
+ } ]
+ } ]
+ } ]
+ }
+ }
+ } ]
+} \ No newline at end of file
diff --git a/src/test/resources/permittedConsentBundle.json b/src/test/resources/permittedConsentBundle.json
new file mode 100644
index 0000000..20ca3de
--- /dev/null
+++ b/src/test/resources/permittedConsentBundle.json
@@ -0,0 +1,692 @@
+{
+ "resourceType": "Bundle",
+ "type": "collection",
+ "entry": [
+ {
+ "fullUrl": "http://gics:8080/ttp-fhir/fhir/gics/Consent/XXXX",
+ "resource": {
+ "resourceType": "Consent",
+ "id": "XXXX",
+ "meta": {
+ "lastUpdated": "2025-10-31T14:21:04.630+01:00",
+ "profile": [
+ "http://fhir.de/ConsentManagement/StructureDefinition/Consent",
+ "https://www.medizininformatik-initiative.de/fhir/modul-consent/StructureDefinition/mii-pr-consent-einwilligung"
+ ]
+ },
+ "extension": [
+ {
+ "url": "http://fhir.de/ConsentManagement/StructureDefinition/DomainReference",
+ "extension": [
+ {
+ "url": "domain",
+ "valueReference": {
+ "reference": "ResearchStudy/VVVVV"
+ }
+ },
+ {
+ "url": "status",
+ "valueCoding": {
+ "system": "http://hl7.org/fhir/publication-status",
+ "code": "active"
+ }
+ }
+ ]
+ }
+ ],
+ "status": "active",
+ "scope": {
+ "coding": [
+ {
+ "system": "http://terminology.hl7.org/CodeSystem/consentscope",
+ "code": "research"
+ }
+ ]
+ },
+ "category": [
+ {
+ "coding": [
+ {
+ "system": "http://loinc.org",
+ "code": "57016-8"
+ }
+ ]
+ },
+ {
+ "coding": [
+ {
+ "system": "https://www.medizininformatik-initiative.de/fhir/modul-consent/CodeSystem/mii-cs-consent-consent_category",
+ "code": "2.16.840.1.113883.3.1937.777.24.2.184"
+ }
+ ]
+ }
+ ],
+ "patient": {
+ "reference": "Patient/psn-pat-here",
+ "display": "Patienten-ID PID-HERE"
+ },
+ "dateTime": "2025-10-13T00:00:00+01:00",
+ "organization": [
+ {
+ "display": "MII"
+ }
+ ],
+ "sourceReference": {
+ "reference": "QuestionnaireResponse/XXXX"
+ },
+ "policy": [
+ {
+ "uri": "urn:oid:2.16.840.1.113883.3.1937.777.24.2.1791"
+ }
+ ],
+ "provision": {
+ "type": "deny",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "provision": [
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "IDAT_erheben",
+ "display": "Erfassung neuer identifizierender Daten (IDAT)"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.2",
+ "display": "IDAT erheben"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_retro_speichern_verarbeiten",
+ "display": "Retrospektive Krankenkassendaten (KKDAT) aus fünf Jahren vor Einwilligung speichern und codiert verarbeiten zu Zwecken med. Forschung in der verantwortlichen Stelle"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.12",
+ "display": "KKDAT 5J retrospektiv speichern verarbeiten"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "BIOMAT_wissenschaftlich_nutzen_EU_DSGVO_konform",
+ "display": "Bereitstellung umcodierter Biomaterialien (BIOMAT) für wissenschaftliche Nutzung und Analysen zu Zwecken med. Forschung an ext. Forscher"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.22",
+ "display": "BIOMAT wissenschaftlich nutzen EU DSGVO NIVEAU"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_retro_wissenschaftlich_nutzen",
+ "display": "Bereitstellung umcodierter retrospektiver Krankenkassendaten (KKDAT) für wissenschaftliche Nutzung zu Zwecken med. Forschung an externe Forscher"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.13",
+ "display": "KKDAT 5J retrospektiv wissenschaftlich nutzen"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "BIOMAT_Analysedaten_zusammenfuehren_Dritte",
+ "display": "Zusammenführen von auf Biomaterialien (BIOMAT) basierenden Analysedaten mit Analysedaten Dritter, sofern dort ebenfalls eine Einwilligung vorliegt"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.23",
+ "display": "BIOMAT Analysedaten zusammenfuehren Dritte"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "Rekontaktierung_Zusatzbefund",
+ "display": "Rekontaktierung bezüglich Zusatzbefund im Rahmen der am Standort dafür entwickelten Prozesse und der im Nutzungsantrag angegebenen Bedingungen"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.31",
+ "display": "Rekontaktierung Zusatzbefund"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_pro_wissenschaftlich_nutzen",
+ "display": "Bereitstellung umcodierter prospektiver Krankenkassendaten (KKDAT) aus fünf Jahren ab Einwilligung zu Zwecken med. Forschung an ext. Forscher"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.17",
+ "display": "KKDAT 5J prospektiv wissenschaftlich nutzen"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "BIOMAT_lagern_verarbeiten",
+ "display": "Lagerung und Verarbeitung von Biomaterialien innerhalb der verantwortlichen Stelle (BIOMAT)"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.20",
+ "display": "BIOMAT lagern verarbeiten"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_retro_uebertragen",
+ "display": "Krankenkassendaten (KKDAT) der letzten fünf Kalenderjahre vor Datum Unterschrift übertragen"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.11",
+ "display": "KKDAT 5J retrospektiv uebertragen"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_KVNR_5J_retro_uebertragen",
+ "display": "Erlaubnis zur retrospektiven Übermittlung der KVNr., MII-Pseudonym und Zeitraum Datenübermittlung (von:5 Jahre vor Datum Unterschrift; bis: Datum Unterschrift) an zuständige Stelle"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.38",
+ "display": "KKDAT 5J retrospektiv uebertragen KVNR"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2030-03-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "MDAT_erheben",
+ "display": "Erfassung medizinischer Daten (MDAT)"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.6",
+ "display": "MDAT erheben"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_pro_speichern_verarbeiten",
+ "display": "Prospektive Krankenkassendaten (KKDAT) aus fünf Jahren ab Einwilligung speichern und codiert verarbeiten zu Zwecken der med. Forschung in der verantwortlichen Stelle"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.16",
+ "display": "KKDAT 5J prospektiv speichern verarbeiten"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "MDAT_wissenschaftlich_nutzen_EU_DSGVO_konform",
+ "display": "Bereitstellung umcodierter medizinischer Daten (MDAT) für wissenschaftliche Nutzung zu Zwecken med. Forschung an externe Forscher"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.8",
+ "display": "MDAT wissenschaftlich nutzen EU DSGVO NIVEAU"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "Rekontaktierung_Verknuepfung_Datenbanken",
+ "display": "Rekontaktierung zur Verknüpfung von Patientendaten mit Daten anderer Datenbanken"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.27",
+ "display": "Rekontaktierung Verknüpfung Datenbanken"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "Rekontaktierung_weitere_Studien",
+ "display": "Rekontaktierung bezüglich Information zu neuen Forschungsvorhaben oder Studien"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.29",
+ "display": "Rekontaktierung weitere Studien"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "IDAT_bereitstellen_EU_DSGVO_konform",
+ "display": "Herausgabe identifizierender Daten (IDAT) an unabhängige Treuhandstelle zur weiteren Verarbeitung"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.5",
+ "display": "IDAT bereitstellen EU DSGVO NIVEAU"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "IDAT_speichern_verarbeiten",
+ "display": "Speicherung und Verarbeitung identifizierender Daten (IDAT) zu Zwecken med. Forschung in der verantwortlichen Stelle"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.3",
+ "display": "IDAT speichern, verarbeiten"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "MDAT_speichern_verarbeiten",
+ "display": "Speicherung und Verarbeitung von medizinischen codierten Daten zu Zwecken med. Forschung innerhalb der verantwortlichen Stelle (MDAT)"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.7",
+ "display": "MDAT speichern, verarbeiten"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2030-03-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "BIOMAT_erheben",
+ "display": "Gewinnung von Biomaterialien (BIOMAT)"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.19",
+ "display": "BIOMAT erheben"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "Rekontaktierung_Ergebnisse_erheblicher_Bedeutung",
+ "display": "Rekontaktierung des Betroffenen bei Ergebnissen von erheblicher Bedeutung"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.37",
+ "display": "Rekontaktierung Ergebnisse erheblicher Bedeutung"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2030-03-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_KVNR_5J_pro_uebertragen",
+ "display": "Erlaubnis zur prospektiven Übermittlung der KVNr., MII-Pseudonym und Zeitraum Datenübermittlung (von: Datum Unterschrift; bis: max. 5 Kalenderjahre nach Unterschrift) an zuständige Stelle"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.39",
+ "display": "KKDAT 5J prospektiv uebertragen KVNR"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2030-03-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "BIOMAT_Zusatzmengen_entnehmen",
+ "display": "Entnahme zusätzlicher Mengen von Biomaterialien (BIOMAT) in den in der Einwilligung beschriebenen Grenzen"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.25",
+ "display": "BIOMAT Zusatzmengen entnehmen"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "Rekontaktierung_weitere_Erhebung",
+ "display": "Rekontaktierung bezüglich Erhebung zusätzlicher Daten"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.28",
+ "display": "Rekontaktierung weitere Erhebung"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "IDAT_zusammenfuehren_Dritte",
+ "display": "Zusammenführung identifizierender Daten (IDAT) über die unabhängige Treuhandstelle mit Dritten Forschungspartnern, sofern dort eine Einwilligung vorliegt"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.4",
+ "display": "IDAT zusammenfuehren Dritte"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2055-10-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy",
+ "code": "MDAT_zusammenfuehren_Dritte",
+ "display": "Zusammenführung medizinischer Daten (MDAT) mit Dritten Forschungspartnern, sofern dort eine Einwilligung vorliegt"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.9",
+ "display": "MDAT zusammenfuehren Dritte"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "permit",
+ "period": {
+ "start": "2025-10-13T00:00:00+01:00",
+ "end": "2030-03-13T00:00:00+01:00"
+ },
+ "code": [
+ {
+ "coding": [
+ {
+ "system": "https://ths-greifswald.de/fhir/CodeSystem/gics/Policy/MII",
+ "code": "KKDAT_5J_pro_uebertragen",
+ "display": "Prospektive Krankenkassendaten (KKDAT) für fünf Kalenderjahre nach Datum Unterschrift übertragen"
+ },
+ {
+ "system": "urn:oid:2.16.840.1.113883.3.1937.777.24.5.3",
+ "code": "2.16.840.1.113883.3.1937.777.24.5.3.15",
+ "display": "KKDAT 5J prospektiv uebertragen"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+}