From 30ad7c299cb5c6e70a934df885efe82501fe5172 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Mon, 3 Nov 2025 11:43:19 +0100 Subject: fix: do not re-anonymize diagnosis ID (#179) --- .../dev/dnpm/etl/processor/pseudonym/extensions.kt | 36 +++++++++------------- .../dnpm/etl/processor/pseudonym/ExtensionsTest.kt | 11 +++++++ 2 files changed, 25 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/main/kotlin/dev/dnpm/etl/processor/pseudonym/extensions.kt b/src/main/kotlin/dev/dnpm/etl/processor/pseudonym/extensions.kt index 21d49c2..8721cbe 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/pseudonym/extensions.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/pseudonym/extensions.kt @@ -125,35 +125,32 @@ infix fun Mtb.anonymizeContentWith(pseudonymizeService: PseudonymizeService) { this.carePlans?.onEach { carePlan -> carePlan?.apply { - id = id?.let { anonymize(it) } + this.id = id?.let { anonymize(it) } - diagnoses?.forEach { it -> it?.id = it.id?.let(::anonymize) } - geneticCounselingRecommendation?.apply { - id = geneticCounselingRecommendation.id?.let(::anonymize) + this.geneticCounselingRecommendation?.apply { + this.id = this.id?.let(::anonymize) } - rebiopsyRequests?.forEach { it -> + this.rebiopsyRequests?.forEach { it -> it.id = it.id?.let(::anonymize) it.tumorEntity?.id = it.tumorEntity?.id?.let(::anonymize) } - histologyReevaluationRequests?.forEach { it -> + this.histologyReevaluationRequests?.forEach { it -> it.id = it?.id?.let(::anonymize) it.specimen?.id = it.specimen?.id?.let(::anonymize) } - medicationRecommendations?.forEach { it -> + this.medicationRecommendations?.forEach { it -> it.id = it?.id?.let(::anonymize) it.supportingVariants?.forEach { it -> it.variant?.id = it.variant?.id?.let(::anonymize) } it.reason?.id = it.reason?.id?.let(::anonymize) } - reason?.id = reason?.id?.let(::anonymize) - studyEnrollmentRecommendations?.forEach { it -> + this.reason?.id = this.reason?.id?.let(::anonymize) + this.studyEnrollmentRecommendations?.forEach { it -> it?.reason?.id = it.reason?.id?.let(::anonymize) } - - procedureRecommendations?.forEach { it -> - + this.procedureRecommendations?.forEach { it -> it.id = it?.id?.let(::anonymize) it.supportingVariants?.forEach { it -> it.variant?.id = it.variant?.id?.let(::anonymize) @@ -161,16 +158,11 @@ infix fun Mtb.anonymizeContentWith(pseudonymizeService: PseudonymizeService) { it.reason?.id = it.reason?.id?.let(::anonymize) - studyEnrollmentRecommendations?.forEach { it -> - - it.id = it?.id?.let(::anonymize) - it.supportingVariants.forEach { it -> - it.variant?.id = it?.variant?.id?.let(::anonymize) - } - responses?.forEach { it -> - it.id = it?.id?.let(::anonymize) - it.id = it?.id?.let(::anonymize) - } + } + this.studyEnrollmentRecommendations?.forEach { it -> + it.id = it?.id?.let(::anonymize) + it.supportingVariants.forEach { it -> + it.variant?.id = it?.variant?.id?.let(::anonymize) } } } diff --git a/src/test/kotlin/dev/dnpm/etl/processor/pseudonym/ExtensionsTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/pseudonym/ExtensionsTest.kt index 8e4cde7..c302362 100644 --- a/src/test/kotlin/dev/dnpm/etl/processor/pseudonym/ExtensionsTest.kt +++ b/src/test/kotlin/dev/dnpm/etl/processor/pseudonym/ExtensionsTest.kt @@ -223,6 +223,16 @@ class ExtensionsTest { this.id = "Diagnosis-1" } ) + this.episodesOfCare = listOf( + MtbEpisodeOfCare().apply { + this.id = "Episode-1" + this.diagnoses = listOf( + Reference().apply { + this.id = "Diagnosis-1" + } + ) + } + ) this.guidelineTherapies = listOf( MtbSystemicTherapy().apply { this.id = "Systemic-Therapy-1" @@ -252,6 +262,7 @@ class ExtensionsTest { mtbFile.pseudonymizeWith(pseudonymizeService) mtbFile.anonymizeContentWith(pseudonymizeService) + assertThat(mtbFile.diagnoses.first().id).isEqualTo(mtbFile.episodesOfCare.first().diagnoses.first().id) assertThat(mtbFile.diagnoses.first().id).isEqualTo(mtbFile.guidelineTherapies.first().reason.id) assertThat(mtbFile.diagnoses.first().id).isEqualTo(mtbFile.guidelineProcedures.first().reason.id) assertThat(mtbFile.diagnoses.first().id).isEqualTo(mtbFile.specimens.first().diagnosis.id) -- cgit v1.2.3