summaryrefslogtreecommitdiff
path: root/src/main/kotlin/dev/dnpm
diff options
context:
space:
mode:
authorPaul-Christian Volkmer2026-03-06 13:08:40 +0100
committerGitHub2026-03-06 12:08:40 +0000
commitbf6bfa904e127f51b79cfafb96e1280b50e9615a (patch)
tree67e4c3404a03e0b081515dd5993a11d2848f195d /src/main/kotlin/dev/dnpm
parent6fee6f3cf9248ea8fb1ddc738d0f6261ae58bb4b (diff)
feat: save TAN for MTB requests (#253)
Diffstat (limited to 'src/main/kotlin/dev/dnpm')
-rw-r--r--src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt5
-rw-r--r--src/main/kotlin/dev/dnpm/etl/processor/services/RequestProcessor.kt4
-rw-r--r--src/main/kotlin/dev/dnpm/etl/processor/types.kt8
3 files changed, 17 insertions, 0 deletions
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
*