diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt index 410fac8..d6a0dc2 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt @@ -22,10 +22,9 @@ package dev.dnpm.etl.processor.input import com.fasterxml.jackson.databind.ObjectMapper import de.ukw.ccc.bwhc.dto.* import dev.dnpm.etl.processor.anyValueClass -import dev.dnpm.etl.processor.config.AppFhirConfig import dev.dnpm.etl.processor.config.AppSecurityConfiguration import dev.dnpm.etl.processor.consent.ConsentCheckedIgnored -import dev.dnpm.etl.processor.consent.ConsentStatus +import dev.dnpm.etl.processor.consent.TtpConsentStatus import dev.dnpm.etl.processor.consent.ICheckConsent import dev.dnpm.etl.processor.security.TokenRepository import dev.dnpm.etl.processor.security.UserRoleRepository @@ -34,7 +33,6 @@ 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.Mockito import org.mockito.junit.jupiter.MockitoExtension import org.mockito.kotlin.* import org.springframework.beans.factory.annotation.Autowired @@ -145,7 +143,7 @@ class MtbFileRestControllerTest { status { isAccepted() } } - verify(requestProcessor, times(1)).processDeletion(anyValueClass(), eq(ConsentStatus.IGNORED)) + verify(requestProcessor, times(1)).processDeletion(anyValueClass(), eq(TtpConsentStatus.IGNORED)) } @Test diff --git a/src/main/java/dev/dnpm/etl/processor/consent/ConsentCheckedIgnored.java b/src/main/java/dev/dnpm/etl/processor/consent/ConsentCheckedIgnored.java index 03309cc..d76eece 100644 --- a/src/main/java/dev/dnpm/etl/processor/consent/ConsentCheckedIgnored.java +++ b/src/main/java/dev/dnpm/etl/processor/consent/ConsentCheckedIgnored.java @@ -3,7 +3,7 @@ package dev.dnpm.etl.processor.consent; public class ConsentCheckedIgnored implements ICheckConsent{ @Override - public ConsentStatus isConsented(String personIdentifierValue) { - return ConsentStatus.IGNORED; + public TtpConsentStatus isConsented(String personIdentifierValue) { + return TtpConsentStatus.IGNORED; } } diff --git a/src/main/java/dev/dnpm/etl/processor/consent/ConsentStatus.java b/src/main/java/dev/dnpm/etl/processor/consent/ConsentStatus.java deleted file mode 100644 index 50048a7..0000000 --- a/src/main/java/dev/dnpm/etl/processor/consent/ConsentStatus.java +++ /dev/null @@ -1,8 +0,0 @@ -package dev.dnpm.etl.processor.consent; - -public enum ConsentStatus { - CONSENTED, - CONSENT_MISSING, - FAILED_TO_ASK, - IGNORED, CONSENT_REJECTED -} diff --git a/src/main/java/dev/dnpm/etl/processor/consent/GicsConsentService.java b/src/main/java/dev/dnpm/etl/processor/consent/GicsConsentService.java index 36fc6f5..9780be8 100644 --- a/src/main/java/dev/dnpm/etl/processor/consent/GicsConsentService.java +++ b/src/main/java/dev/dnpm/etl/processor/consent/GicsConsentService.java @@ -4,6 +4,7 @@ import ca.uhn.fhir.context.FhirContext; import dev.dnpm.etl.processor.config.AppFhirConfig; import dev.dnpm.etl.processor.config.GIcsConfigProperties; import org.apache.commons.lang3.StringUtils; +import org.hl7.fhir.r4.model.BooleanType; import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.Identifier; import org.hl7.fhir.r4.model.Parameters; @@ -88,6 +89,18 @@ public class GicsConsentService implements ICheckConsent { .setSystem(configProperties.getPolicySystem()))); result.addParameter(new ParametersParameterComponent().setName("version") .setValue(new StringType().setValue(configProperties.getParameterVersion()))); + + /* add config parameter with: + * ignoreVersionNumber -> true + * unknownStateIsConsideredAsDecline -> true + */ + var config = new ParametersParameterComponent().setName("config").addPart( + new ParametersParameterComponent().setName("ignoreVersionNumber") + .setValue(new BooleanType().setValue(true))).addPart( + new ParametersParameterComponent().setName("unknownStateIsConsideredAsDecline") + .setValue(new BooleanType().setValue(true))); + result.addParameter(config); + return result; } @@ -127,7 +140,7 @@ public class GicsConsentService implements ICheckConsent { } @Override - public ConsentStatus isConsented(String personIdentifierValue) { + public TtpConsentStatus isConsented(String personIdentifierValue) { var parameter = GicsConsentService.getIsConsentedParam(gIcsConfigProperties, personIdentifierValue); @@ -136,9 +149,9 @@ public class GicsConsentService implements ICheckConsent { } - private ConsentStatus evaluateConsentResponse(String consentStatusResponse) { + private TtpConsentStatus evaluateConsentResponse(String consentStatusResponse) { if (consentStatusResponse == null) { - return ConsentStatus.FAILED_TO_ASK; + return TtpConsentStatus.FAILED_TO_ASK; } var responseParameters = fhirContext.newJsonParser() .parseResource(Parameters.class, consentStatusResponse); @@ -146,12 +159,12 @@ public class GicsConsentService implements ICheckConsent { var responseValue = responseParameters.getParameter("consented").getValue(); var isConsented = responseValue.castToBoolean(responseValue); if (!isConsented.hasValue()) { - return ConsentStatus.FAILED_TO_ASK; + return TtpConsentStatus.FAILED_TO_ASK; } if (isConsented.booleanValue()) { - return ConsentStatus.CONSENTED; + return TtpConsentStatus.CONSENTED; } else { - return ConsentStatus.CONSENT_MISSING; + return TtpConsentStatus.CONSENT_MISSING_OR_REJECTED; } } } diff --git a/src/main/java/dev/dnpm/etl/processor/consent/ICheckConsent.java b/src/main/java/dev/dnpm/etl/processor/consent/ICheckConsent.java index af7955a..da50e62 100644 --- a/src/main/java/dev/dnpm/etl/processor/consent/ICheckConsent.java +++ b/src/main/java/dev/dnpm/etl/processor/consent/ICheckConsent.java @@ -3,6 +3,6 @@ package dev.dnpm.etl.processor.consent; public interface ICheckConsent { - ConsentStatus isConsented(String personIdentifierValue); + TtpConsentStatus isConsented(String personIdentifierValue); } diff --git a/src/main/java/dev/dnpm/etl/processor/consent/TtpConsentStatus.java b/src/main/java/dev/dnpm/etl/processor/consent/TtpConsentStatus.java new file mode 100644 index 0000000..375cdd1 --- /dev/null +++ b/src/main/java/dev/dnpm/etl/processor/consent/TtpConsentStatus.java @@ -0,0 +1,18 @@ +package dev.dnpm.etl.processor.consent; + +public enum TtpConsentStatus { + /** + * Valid consent found + */ + CONSENTED, + + CONSENT_MISSING_OR_REJECTED, + /** + * Due technical problems consent status is unknown + */ + FAILED_TO_ASK, + /** + * We assume received files are consented + */ + IGNORED +} diff --git a/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfiguration.kt b/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfiguration.kt index 485b644..b276bfd 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfiguration.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfiguration.kt @@ -84,8 +84,8 @@ class AppConfiguration { @ConditionalOnProperty(value = ["app.pseudonymize.generator"], havingValue = "GPAS") @Bean - fun gpasPseudonymGenerator(configProperties: GPasConfigProperties, retryTemplate: RetryTemplate, restTemplate: RestTemplate): Generator { - return GpasPseudonymGenerator(configProperties, retryTemplate, restTemplate) + fun gpasPseudonymGenerator(configProperties: GPasConfigProperties, retryTemplate: RetryTemplate, restTemplate: RestTemplate, appFhirConfig: AppFhirConfig): Generator { + return GpasPseudonymGenerator(configProperties, retryTemplate, restTemplate, appFhirConfig) } @ConditionalOnProperty(value = ["app.pseudonymize.generator"], havingValue = "BUILDIN", matchIfMissing = true) diff --git a/src/main/kotlin/dev/dnpm/etl/processor/input/KafkaInputListener.kt b/src/main/kotlin/dev/dnpm/etl/processor/input/KafkaInputListener.kt index 61a70a2..544230a 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/input/KafkaInputListener.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/input/KafkaInputListener.kt @@ -25,7 +25,7 @@ import de.ukw.ccc.bwhc.dto.MtbFile import dev.dnpm.etl.processor.CustomMediaType import dev.dnpm.etl.processor.PatientId import dev.dnpm.etl.processor.RequestId -import dev.dnpm.etl.processor.consent.ConsentStatus +import dev.dnpm.etl.processor.consent.TtpConsentStatus import dev.dnpm.etl.processor.services.RequestProcessor import org.apache.kafka.clients.consumer.ConsumerRecord import org.slf4j.LoggerFactory @@ -66,7 +66,7 @@ class KafkaInputListener( } else { RequestId("") } -// fixme: add consent check + if (mtbFile.consent.status == Consent.Status.ACTIVE) { logger.debug("Accepted MTB File for processing") if (requestId.isBlank()) { @@ -77,12 +77,12 @@ class KafkaInputListener( } else { logger.debug("Accepted MTB File and process deletion") if (requestId.isBlank()) { - requestProcessor.processDeletion(patientId, ConsentStatus.IGNORED) + requestProcessor.processDeletion(patientId, TtpConsentStatus.IGNORED) } else { requestProcessor.processDeletion( patientId, requestId, - ConsentStatus.IGNORED + TtpConsentStatus.IGNORED ) } } diff --git a/src/main/kotlin/dev/dnpm/etl/processor/input/MtbFileRestController.kt b/src/main/kotlin/dev/dnpm/etl/processor/input/MtbFileRestController.kt index 9146637..4f45e83 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/input/MtbFileRestController.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/input/MtbFileRestController.kt @@ -24,7 +24,7 @@ import de.ukw.ccc.bwhc.dto.MtbFile import dev.dnpm.etl.processor.CustomMediaType import dev.dnpm.etl.processor.PatientId import dev.dnpm.etl.processor.consent.ICheckConsent -import dev.dnpm.etl.processor.consent.ConsentStatus +import dev.dnpm.etl.processor.consent.TtpConsentStatus import dev.dnpm.etl.processor.services.RequestProcessor import dev.pcvolkmer.mv64e.mtb.Mtb import org.slf4j.LoggerFactory @@ -47,20 +47,26 @@ class MtbFileRestController( @PostMapping( consumes = [ MediaType.APPLICATION_JSON_VALUE ] ) fun mtbFile(@RequestBody mtbFile: MtbFile): ResponseEntity { - var consentStatus = constService.isConsented(mtbFile.patient.id) + var ttpConsentStatus = constService.isConsented(mtbFile.patient.id) - if (mtbFile.consent.status == Consent.Status.ACTIVE && (consentStatus.equals(ConsentStatus.CONSENTED) || consentStatus.equals( - ConsentStatus.IGNORED - )) - ) { + // received status REJECTED overrides TTP value. Also in case of disabled consent service, + // we need to override IGNORED status + if (mtbFile.consent.status == Consent.Status.REJECTED) ttpConsentStatus = + TtpConsentStatus.CONSENT_MISSING_OR_REJECTED + + val isConsentOK = mtbFile.consent.status == Consent.Status.ACTIVE && (ttpConsentStatus.equals( + TtpConsentStatus.CONSENTED + ) || ttpConsentStatus.equals( + TtpConsentStatus.IGNORED + )) + if (isConsentOK) { logger.debug("Accepted MTB File (bwHC V1) for processing") requestProcessor.processMtbFile(mtbFile) } else { + logger.debug("Accepted MTB File (bwHC V1) and process deletion") - if (mtbFile.consent.status == Consent.Status.REJECTED) consentStatus = - ConsentStatus.CONSENT_REJECTED val patientId = PatientId(mtbFile.patient.id) - requestProcessor.processDeletion(patientId, consentStatus) + requestProcessor.processDeletion(patientId, ttpConsentStatus) } return ResponseEntity.accepted().build() } @@ -75,7 +81,7 @@ class MtbFileRestController( @DeleteMapping(path = ["{patientId}"]) fun deleteData(@PathVariable patientId: String): ResponseEntity { logger.debug("Accepted patient ID to process deletion") - requestProcessor.processDeletion(PatientId(patientId), ConsentStatus.IGNORED) + requestProcessor.processDeletion(PatientId(patientId), TtpConsentStatus.IGNORED) return ResponseEntity.accepted().build() } diff --git a/src/main/kotlin/dev/dnpm/etl/processor/monitoring/RequestStatus.kt b/src/main/kotlin/dev/dnpm/etl/processor/monitoring/RequestStatus.kt index 85f2278..0c8adb1 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/monitoring/RequestStatus.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/monitoring/RequestStatus.kt @@ -25,5 +25,5 @@ enum class RequestStatus(val value: String) { ERROR("error"), UNKNOWN("unknown"), DUPLICATION("duplication"), - CONSENTMISSING("no-consent") + NO_CONSENT("no-consent") } \ No newline at end of file diff --git a/src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt b/src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt index 825f4e5..e17e38e 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt @@ -23,7 +23,7 @@ import com.fasterxml.jackson.databind.ObjectMapper import de.ukw.ccc.bwhc.dto.MtbFile import dev.dnpm.etl.processor.* import dev.dnpm.etl.processor.config.AppConfigProperties -import dev.dnpm.etl.processor.consent.ConsentStatus +import dev.dnpm.etl.processor.consent.TtpConsentStatus import dev.dnpm.etl.processor.monitoring.Report import dev.dnpm.etl.processor.monitoring.Request import dev.dnpm.etl.processor.monitoring.RequestStatus @@ -129,19 +129,18 @@ class RequestProcessor( && lastMtbFileRequestForPatient.fingerprint == fingerprint(pseudonymizedMtbFileRequest) } - fun processDeletion(patientId: PatientId, isConsented: ConsentStatus) { + fun processDeletion(patientId: PatientId, isConsented: TtpConsentStatus) { processDeletion(patientId, randomRequestId(), isConsented) } - fun processDeletion(patientId: PatientId, requestId: RequestId, isConsented: ConsentStatus) { + fun processDeletion(patientId: PatientId, requestId: RequestId, isConsented: TtpConsentStatus) { try { val patientPseudonym = pseudonymizeService.patientPseudonym(patientId) val requestStatus: RequestStatus = when (isConsented) { - ConsentStatus.CONSENT_MISSING -> RequestStatus.CONSENTMISSING - ConsentStatus.FAILED_TO_ASK -> RequestStatus.ERROR - ConsentStatus.CONSENTED, ConsentStatus.IGNORED, - ConsentStatus.CONSENT_REJECTED -> RequestStatus.UNKNOWN + TtpConsentStatus.CONSENT_MISSING_OR_REJECTED -> RequestStatus.NO_CONSENT + TtpConsentStatus.FAILED_TO_ASK -> RequestStatus.ERROR + TtpConsentStatus.CONSENTED, TtpConsentStatus.IGNORED -> RequestStatus.UNKNOWN } requestService.save( diff --git a/src/main/kotlin/dev/dnpm/etl/processor/services/ResponseProcessor.kt b/src/main/kotlin/dev/dnpm/etl/processor/services/ResponseProcessor.kt index ecb2ec7..fb82647 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/services/ResponseProcessor.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/services/ResponseProcessor.kt @@ -70,6 +70,12 @@ class ResponseProcessor( ) } + RequestStatus.NO_CONSENT -> { + it.report = Report( + "Einwilligung Status fehlt, widerrufen oder ungeklärt." + ) + } + else -> { logger.error("Cannot process response: Unknown response!") return@ifPresentOrElse diff --git a/src/test/kotlin/dev/dnpm/etl/processor/input/KafkaInputListenerTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/input/KafkaInputListenerTest.kt index 55ab373..9b8b634 100644 --- a/src/test/kotlin/dev/dnpm/etl/processor/input/KafkaInputListenerTest.kt +++ b/src/test/kotlin/dev/dnpm/etl/processor/input/KafkaInputListenerTest.kt @@ -23,8 +23,7 @@ import com.fasterxml.jackson.databind.ObjectMapper import de.ukw.ccc.bwhc.dto.Consent import de.ukw.ccc.bwhc.dto.MtbFile import de.ukw.ccc.bwhc.dto.Patient -import dev.dnpm.etl.processor.anyValueClass -import dev.dnpm.etl.processor.consent.ConsentStatus +import dev.dnpm.etl.processor.consent.TtpConsentStatus import dev.dnpm.etl.processor.CustomMediaType import dev.dnpm.etl.processor.services.RequestProcessor import org.apache.kafka.clients.consumer.ConsumerRecord @@ -36,10 +35,7 @@ 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.mockito.kotlin.any -import org.mockito.kotlin.eq -import org.mockito.kotlin.times -import org.mockito.kotlin.verify +import org.mockito.kotlin.* import java.util.* @ExtendWith(MockitoExtension::class) @@ -98,7 +94,7 @@ class KafkaInputListenerTest { verify(requestProcessor, times(1)).processDeletion( anyValueClass(), - eq(ConsentStatus.IGNORED) + eq(TtpConsentStatus.IGNORED) ) } @@ -152,7 +148,8 @@ class KafkaInputListenerTest { Optional.empty() ) ) - verify(requestProcessor, times(1)).processDeletion(anyValueClass(), anyValueClass(), eq(ConsentStatus.IGNORED) + verify(requestProcessor, times(1)).processDeletion(anyValueClass(), anyValueClass(), eq( + TtpConsentStatus.IGNORED)) } @Test @@ -183,7 +180,8 @@ class KafkaInputListenerTest { Optional.empty() ) ) - verify(requestProcessor, times(0)).processDeletion(anyValueClass(), anyValueClass(), eq(ConsentStatus.IGNORED) + verify(requestProcessor, times(0)).processDeletion(anyValueClass(), anyValueClass(), eq( + TtpConsentStatus.IGNORED)) } } diff --git a/src/test/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt index 81fba4a..af23a16 100644 --- a/src/test/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt +++ b/src/test/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt @@ -21,9 +21,8 @@ package dev.dnpm.etl.processor.input import com.fasterxml.jackson.databind.ObjectMapper import de.ukw.ccc.bwhc.dto.* -import dev.dnpm.etl.processor.anyValueClass import dev.dnpm.etl.processor.consent.ConsentCheckedIgnored -import dev.dnpm.etl.processor.consent.ConsentStatus +import dev.dnpm.etl.processor.consent.TtpConsentStatus import dev.dnpm.etl.processor.CustomMediaType import dev.dnpm.etl.processor.services.RequestProcessor import dev.pcvolkmer.mv64e.mtb.Mtb @@ -81,7 +80,8 @@ class MtbFileRestControllerTest { @Test fun shouldProcessPostRequestWithRejectedConsent() { mockMvc.post("/mtbfile") { - content = objectMapper.writeValueAsString(bwhcMtbFileContent(Consent.Status.REJECTED)) + content = + objectMapper.writeValueAsString(bwhcMtbFileContent(Consent.Status.REJECTED)) contentType = MediaType.APPLICATION_JSON }.andExpect { status { @@ -89,7 +89,10 @@ class MtbFileRestControllerTest { } } - verify(requestProcessor, times(1)).processDeletion(anyValueClass()) + verify(requestProcessor, times(1)).processDeletion( + anyValueClass(), + org.mockito.kotlin.eq(TtpConsentStatus.CONSENT_MISSING_OR_REJECTED) + ) } @Test @@ -100,7 +103,10 @@ class MtbFileRestControllerTest { } } - verify(requestProcessor, times(1)).processDeletion(anyValueClass()) + verify(requestProcessor, times(1)).processDeletion( + anyValueClass(), + org.mockito.kotlin.eq(TtpConsentStatus.IGNORED) + ) } } @@ -116,7 +122,7 @@ class MtbFileRestControllerTest { @Mock requestProcessor: RequestProcessor ) { this.requestProcessor = requestProcessor - val controller = MtbFileRestController(requestProcessor) + val controller = MtbFileRestController(requestProcessor, ConsentCheckedIgnored()) this.mockMvc = MockMvcBuilders.standaloneSetup(controller).build() } @@ -137,7 +143,8 @@ class MtbFileRestControllerTest { @Test fun shouldProcessPostRequestWithRejectedConsent() { mockMvc.post("/mtb") { - content = objectMapper.writeValueAsString(bwhcMtbFileContent(Consent.Status.REJECTED)) + content = + objectMapper.writeValueAsString(bwhcMtbFileContent(Consent.Status.REJECTED)) contentType = MediaType.APPLICATION_JSON }.andExpect { status { @@ -145,7 +152,11 @@ class MtbFileRestControllerTest { } } - verify(requestProcessor, times(1)).processDeletion(anyValueClass()) + verify(requestProcessor, times(1)).processDeletion( + anyValueClass(), org.mockito.kotlin.eq( + TtpConsentStatus.CONSENT_MISSING_OR_REJECTED + ) + ) } @Test @@ -156,7 +167,11 @@ class MtbFileRestControllerTest { } } - verify(requestProcessor, times(1)).processDeletion(anyValueClass()) + verify(requestProcessor, times(1)).processDeletion( + anyValueClass(), org.mockito.kotlin.eq( + TtpConsentStatus.IGNORED + ) + ) } } @@ -172,13 +187,15 @@ class MtbFileRestControllerTest { @Mock requestProcessor: RequestProcessor ) { this.requestProcessor = requestProcessor - val controller = MtbFileRestController(requestProcessor) + val controller = MtbFileRestController(requestProcessor, ConsentCheckedIgnored()) this.mockMvc = MockMvcBuilders.standaloneSetup(controller).build() } @Test fun shouldRespondPostRequest() { - val mtbFileContent = ClassPathResource("mv64e-mtb-fake-patient.json").inputStream.readAllBytes().toString(Charsets.UTF_8) + val mtbFileContent = + ClassPathResource("mv64e-mtb-fake-patient.json").inputStream.readAllBytes() + .toString(Charsets.UTF_8) mockMvc.post("/mtb") { content = mtbFileContent diff --git a/src/test/kotlin/dev/dnpm/etl/processor/services/RequestProcessorTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/services/RequestProcessorTest.kt index a6168af..61b5dbb 100644 --- a/src/test/kotlin/dev/dnpm/etl/processor/services/RequestProcessorTest.kt +++ b/src/test/kotlin/dev/dnpm/etl/processor/services/RequestProcessorTest.kt @@ -25,7 +25,7 @@ import dev.dnpm.etl.processor.Fingerprint import dev.dnpm.etl.processor.PatientId import dev.dnpm.etl.processor.PatientPseudonym import dev.dnpm.etl.processor.config.AppConfigProperties -import dev.dnpm.etl.processor.consent.ConsentStatus +import dev.dnpm.etl.processor.consent.TtpConsentStatus import dev.dnpm.etl.processor.monitoring.Request import dev.dnpm.etl.processor.monitoring.RequestStatus import dev.dnpm.etl.processor.monitoring.RequestType @@ -344,7 +344,7 @@ class RequestProcessorTest { MtbFileSender.Response(status = RequestStatus.UNKNOWN) }.whenever(sender).send(any()) - this.requestProcessor.processDeletion(TEST_PATIENT_ID, isConsented = ConsentStatus.IGNORED) + this.requestProcessor.processDeletion(TEST_PATIENT_ID, isConsented = TtpConsentStatus.IGNORED) val requestCaptor = argumentCaptor() verify(requestService, times(1)).save(requestCaptor.capture()) @@ -362,7 +362,7 @@ class RequestProcessorTest { MtbFileSender.Response(status = RequestStatus.SUCCESS) }.whenever(sender).send(any()) - this.requestProcessor.processDeletion(TEST_PATIENT_ID, isConsented = ConsentStatus.IGNORED) + this.requestProcessor.processDeletion(TEST_PATIENT_ID, isConsented = TtpConsentStatus.IGNORED) val eventCaptor = argumentCaptor() verify(applicationEventPublisher, times(1)).publishEvent(eventCaptor.capture()) @@ -380,7 +380,7 @@ class RequestProcessorTest { MtbFileSender.Response(status = RequestStatus.ERROR) }.whenever(sender).send(any()) - this.requestProcessor.processDeletion(TEST_PATIENT_ID, isConsented = ConsentStatus.IGNORED) + this.requestProcessor.processDeletion(TEST_PATIENT_ID, isConsented = TtpConsentStatus.IGNORED) val eventCaptor = argumentCaptor() verify(applicationEventPublisher, times(1)).publishEvent(eventCaptor.capture()) @@ -392,7 +392,7 @@ class RequestProcessorTest { fun testShouldSendDeleteRequestWithPseudonymErrorAndSaveErrorRequestStatus() { doThrow(RuntimeException()).whenever(pseudonymizeService).patientPseudonym(anyValueClass()) - this.requestProcessor.processDeletion(TEST_PATIENT_ID, isConsented = ConsentStatus.IGNORED) + this.requestProcessor.processDeletion(TEST_PATIENT_ID, isConsented = TtpConsentStatus.IGNORED) val requestCaptor = argumentCaptor() verify(requestService, times(1)).save(requestCaptor.capture())