summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt20
1 files changed, 11 insertions, 9 deletions
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 e04e568..fcb0863 100644
--- a/src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt
+++ b/src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt
@@ -49,15 +49,7 @@ class RequestProcessor(
val pid = mtbFile.patient.id
val pseudonymized = pseudonymizeService.pseudonymize(mtbFile)
- val allRequests = requestService.allRequestsByPatientPseudonym(pseudonymized.patient.id)
-
- val lastMtbFileRequestForPatient = allRequests
- .filter { it.type == RequestType.MTB_FILE }
- .firstOrNull { it.status == RequestStatus.SUCCESS || it.status == RequestStatus.WARNING }
-
- val isLastRequestDeletion = allRequests.firstOrNull()?.type == RequestType.DELETE
-
- if (null != lastMtbFileRequestForPatient && lastMtbFileRequestForPatient.fingerprint == fingerprint(mtbFile) && !isLastRequestDeletion) {
+ if (isDuplication(pseudonymized)) {
requestService.save(
Request(
patientId = pseudonymized.patient.id,
@@ -124,6 +116,16 @@ class RequestProcessor(
statisticsUpdateProducer.emitNext("", Sinks.EmitFailureHandler.FAIL_FAST)
}
+ private fun isDuplication(pseudonymizedMtbFile: MtbFile): Boolean {
+ val lastMtbFileRequestForPatient =
+ requestService.lastMtbFileRequestForPatientPseudonym(pseudonymizedMtbFile.patient.id)
+ val isLastRequestDeletion = requestService.isLastRequestDeletion(pseudonymizedMtbFile.patient.id)
+
+ return null != lastMtbFileRequestForPatient
+ && !isLastRequestDeletion
+ && lastMtbFileRequestForPatient.fingerprint == fingerprint(pseudonymizedMtbFile)
+ }
+
fun processDeletion(patientId: String) {
val requestId = UUID.randomUUID().toString()