diff options
| -rw-r--r-- | src/main/kotlin/dev/dnpm/etl/processor/pseudonym/extensions.kt | 36 | ||||
| -rw-r--r-- | src/test/kotlin/dev/dnpm/etl/processor/pseudonym/ExtensionsTest.kt | 74 |
2 files changed, 86 insertions, 24 deletions
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 8460293..c302362 100644 --- a/src/test/kotlin/dev/dnpm/etl/processor/pseudonym/ExtensionsTest.kt +++ b/src/test/kotlin/dev/dnpm/etl/processor/pseudonym/ExtensionsTest.kt @@ -112,7 +112,7 @@ class ExtensionsTest { }.whenever(pseudonymizeService).prefix() val mtbFile = Mtb().apply { - this.patient = dev.pcvolkmer.mv64e.mtb.Patient().apply { + this.patient = Patient().apply { this.id = "PID" this.birthDate = Date.from(Instant.now()) this.gender = GenderCoding().apply { @@ -173,7 +173,7 @@ class ExtensionsTest { Math.random().toLong().toString() simpleVariant.fusionPartner5Prime?.transcriptId?.value = Math.random().toLong().toString() - simpleVariant.externalIds?.forEach { it -> + simpleVariant.externalIds?.forEach { it?.value = Math.random().toLong().toString() } } @@ -197,4 +197,74 @@ class ExtensionsTest { } } } + + @Test + fun shouldUseSameAnonymIdForDiagnosisAndDiagnosisReferences(@Mock pseudonymizeService: PseudonymizeService) { + + doAnswer { + it.arguments[0] + "PSEUDO-ID" + }.whenever(pseudonymizeService).patientPseudonym(anyValueClass()) + + doAnswer { + "TESTDOMAIN" + }.whenever(pseudonymizeService).prefix() + + val mtbFile = Mtb().apply { + this.patient = Patient().apply { + this.id = "PID" + this.birthDate = Date.from(Instant.now()) + this.gender = GenderCoding().apply { + this.code = GenderCodingCode.MALE + } + } + this.diagnoses = listOf( + MtbDiagnosis().apply { + 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" + this.reason = Reference().apply { + this.id = "Diagnosis-1" + } + } + ) + this.guidelineProcedures = listOf( + OncoProcedure().apply { + this.id = "Onco-Procedure-1" + this.reason = Reference().apply { + this.id = "Diagnosis-1" + } + } + ) + this.specimens = listOf( + TumorSpecimen().apply { + this.id = "Specimen-1" + this.diagnosis = Reference().apply { + this.id = "Diagnosis-1" + } + } + ) + } + + 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) + } } |
