From bf6bfa904e127f51b79cfafb96e1280b50e9615a Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Fri, 6 Mar 2026 13:08:40 +0100 Subject: feat: save TAN for MTB requests (#253) --- src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt | 5 +++++ .../kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt | 4 ++++ src/main/kotlin/dev/dnpm/etl/processor/types.kt | 8 ++++++++ 3 files changed, 17 insertions(+) (limited to 'src/main/kotlin/dev') diff --git a/src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt b/src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt index b1cc1ed..9aede20 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt @@ -43,6 +43,7 @@ data class Request( val type: RequestType, @Column("submission_type") val submissionType: SubmissionType, var status: RequestStatus, + @Column("tan") val tan: Tan = Tan.empty(), var processedAt: Instant = Instant.now(), @Embedded.Nullable var report: Report? = null, @Column("submission_accepted") var submissionAccepted: Boolean = false, @@ -55,6 +56,7 @@ data class Request( type: RequestType, submissionType: SubmissionType, status: RequestStatus, + tan: Tan, ) : this( null, uuid, @@ -64,6 +66,7 @@ data class Request( type, submissionType, status, + tan, Instant.now(), ) @@ -75,6 +78,7 @@ data class Request( type: RequestType, submissionType: SubmissionType, status: RequestStatus, + tan: Tan, processedAt: Instant, ) : this( null, @@ -85,6 +89,7 @@ data class Request( type, submissionType, status, + tan, processedAt, ) 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 b14d6f4..fe1fd3b 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt @@ -107,6 +107,7 @@ class RequestProcessor( RequestType.MTB_FILE, submissionType, RequestStatus.BLOCKED_INITIAL, + Tan(request.content.metadata?.transferTan.orEmpty()) ) ) // Exit - no further processing @@ -135,6 +136,7 @@ class RequestProcessor( RequestType.MTB_FILE, submissionType, RequestStatus.UNKNOWN, + Tan(request.content.metadata?.transferTan.orEmpty()), ) ) @@ -228,6 +230,7 @@ class RequestProcessor( RequestType.DELETE, SubmissionType.UNKNOWN, requestStatus, + Tan.empty() ) ) @@ -256,6 +259,7 @@ class RequestProcessor( type = RequestType.DELETE, submissionType = SubmissionType.UNKNOWN, report = Report("Fehler bei der Pseudonymisierung"), + tan = Tan.empty(), ) ) } diff --git a/src/main/kotlin/dev/dnpm/etl/processor/types.kt b/src/main/kotlin/dev/dnpm/etl/processor/types.kt index 87f5fb2..9244297 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/types.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/types.kt @@ -48,6 +48,14 @@ fun emptyPatientId() = PatientId("") fun emptyPatientPseudonym() = PatientPseudonym("") +@JvmInline value class Tan(val value: String) { + fun isValid() = value.matches(Regex("^[a-fA-F0-9]{64}$")) + + companion object { + fun empty() = Tan("") + } +} + /** * Custom MediaTypes * -- cgit v1.2.3