mirror of
https://github.com/pcvolkmer/etl-processor.git
synced 2025-04-19 17:26:51 +00:00
fix: handle null values in MtbFile
This should not occur but if, it should not result in NPE except for * Patient * Consent * Episode
This commit is contained in:
parent
4d5c0ce1fb
commit
c922e27758
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of ETL-Processor
|
* This file is part of ETL-Processor
|
||||||
*
|
*
|
||||||
* Copyright (c) 2023 Comprehensive Cancer Center Mainfranken, Datenintegrationszentrum Philipps-Universität Marburg and Contributors
|
* Copyright (c) 2024 Comprehensive Cancer Center Mainfranken, Datenintegrationszentrum Philipps-Universität Marburg and Contributors
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU Affero General Public License as published
|
* it under the terms of the GNU Affero General Public License as published
|
||||||
@ -31,31 +31,31 @@ import org.apache.commons.codec.digest.DigestUtils
|
|||||||
infix fun MtbFile.pseudonymizeWith(pseudonymizeService: PseudonymizeService) {
|
infix fun MtbFile.pseudonymizeWith(pseudonymizeService: PseudonymizeService) {
|
||||||
val patientPseudonym = pseudonymizeService.patientPseudonym(this.patient.id)
|
val patientPseudonym = pseudonymizeService.patientPseudonym(this.patient.id)
|
||||||
|
|
||||||
this.episode.patient = patientPseudonym
|
this.episode?.patient = patientPseudonym
|
||||||
this.carePlans.forEach { it.patient = patientPseudonym }
|
this.carePlans?.forEach { it.patient = patientPseudonym }
|
||||||
this.patient.id = patientPseudonym
|
this.patient.id = patientPseudonym
|
||||||
this.claims.forEach { it.patient = patientPseudonym }
|
this.claims?.forEach { it.patient = patientPseudonym }
|
||||||
this.consent.patient = patientPseudonym
|
this.consent?.patient = patientPseudonym
|
||||||
this.claimResponses.forEach { it.patient = patientPseudonym }
|
this.claimResponses?.forEach { it.patient = patientPseudonym }
|
||||||
this.diagnoses.forEach { it.patient = patientPseudonym }
|
this.diagnoses?.forEach { it.patient = patientPseudonym }
|
||||||
this.ecogStatus.forEach { it.patient = patientPseudonym }
|
this.ecogStatus?.forEach { it.patient = patientPseudonym }
|
||||||
this.familyMemberDiagnoses.forEach { it.patient = patientPseudonym }
|
this.familyMemberDiagnoses?.forEach { it.patient = patientPseudonym }
|
||||||
this.geneticCounsellingRequests.forEach { it.patient = patientPseudonym }
|
this.geneticCounsellingRequests?.forEach { it.patient = patientPseudonym }
|
||||||
this.histologyReevaluationRequests.forEach { it.patient = patientPseudonym }
|
this.histologyReevaluationRequests?.forEach { it.patient = patientPseudonym }
|
||||||
this.histologyReports.forEach {
|
this.histologyReports?.forEach {
|
||||||
it.patient = patientPseudonym
|
it.patient = patientPseudonym
|
||||||
it.tumorMorphology.patient = patientPseudonym
|
it.tumorMorphology?.patient = patientPseudonym
|
||||||
}
|
}
|
||||||
this.lastGuidelineTherapies.forEach { it.patient = patientPseudonym }
|
this.lastGuidelineTherapies?.forEach { it.patient = patientPseudonym }
|
||||||
this.molecularPathologyFindings.forEach { it.patient = patientPseudonym }
|
this.molecularPathologyFindings?.forEach { it.patient = patientPseudonym }
|
||||||
this.molecularTherapies.forEach { molecularTherapy -> molecularTherapy.history.forEach { it.patient = patientPseudonym } }
|
this.molecularTherapies?.forEach { molecularTherapy -> molecularTherapy.history.forEach { it.patient = patientPseudonym } }
|
||||||
this.ngsReports.forEach { it.patient = patientPseudonym }
|
this.ngsReports?.forEach { it.patient = patientPseudonym }
|
||||||
this.previousGuidelineTherapies.forEach { it.patient = patientPseudonym }
|
this.previousGuidelineTherapies?.forEach { it.patient = patientPseudonym }
|
||||||
this.rebiopsyRequests.forEach { it.patient = patientPseudonym }
|
this.rebiopsyRequests?.forEach { it.patient = patientPseudonym }
|
||||||
this.recommendations.forEach { it.patient = patientPseudonym }
|
this.recommendations?.forEach { it.patient = patientPseudonym }
|
||||||
this.responses.forEach { it.patient = patientPseudonym }
|
this.responses?.forEach { it.patient = patientPseudonym }
|
||||||
this.studyInclusionRequests.forEach { it.patient = patientPseudonym }
|
this.studyInclusionRequests?.forEach { it.patient = patientPseudonym }
|
||||||
this.specimens.forEach { it.patient = patientPseudonym }
|
this.specimens?.forEach { it.patient = patientPseudonym }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -134,4 +134,65 @@ class ExtensionsTest {
|
|||||||
.isEqualTo("TESTDOMAIN44e20a53bbbf9f3ae39626d05df7014dcd77d6098")
|
.isEqualTo("TESTDOMAIN44e20a53bbbf9f3ae39626d05df7014dcd77d6098")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun shouldNotThrowExceptionOnNullValues(@Mock pseudonymizeService: PseudonymizeService) {
|
||||||
|
doAnswer {
|
||||||
|
it.arguments[0]
|
||||||
|
"PSEUDO-ID"
|
||||||
|
}.whenever(pseudonymizeService).patientPseudonym(ArgumentMatchers.anyString())
|
||||||
|
|
||||||
|
doAnswer {
|
||||||
|
"TESTDOMAIN"
|
||||||
|
}.whenever(pseudonymizeService).prefix()
|
||||||
|
|
||||||
|
val mtbFile = MtbFile.builder()
|
||||||
|
.withPatient(
|
||||||
|
Patient.builder()
|
||||||
|
.withId("1")
|
||||||
|
.withBirthDate("2000-08-08")
|
||||||
|
.withGender(Patient.Gender.MALE)
|
||||||
|
.build()
|
||||||
|
)
|
||||||
|
.withConsent(
|
||||||
|
Consent.builder()
|
||||||
|
.withId("1")
|
||||||
|
.withStatus(Consent.Status.ACTIVE)
|
||||||
|
.withPatient("123")
|
||||||
|
.build()
|
||||||
|
)
|
||||||
|
.withEpisode(
|
||||||
|
Episode.builder()
|
||||||
|
.withId("1")
|
||||||
|
.withPatient("1")
|
||||||
|
.withPeriod(PeriodStart("2023-08-08"))
|
||||||
|
.build()
|
||||||
|
)
|
||||||
|
.withClaims(null)
|
||||||
|
.withDiagnoses(null)
|
||||||
|
.withCarePlans(null)
|
||||||
|
.withClaimResponses(null)
|
||||||
|
.withEcogStatus(null)
|
||||||
|
.withFamilyMemberDiagnoses(null)
|
||||||
|
.withGeneticCounsellingRequests(null)
|
||||||
|
.withHistologyReevaluationRequests(null)
|
||||||
|
.withHistologyReports(null)
|
||||||
|
.withLastGuidelineTherapies(null)
|
||||||
|
.withMolecularPathologyFindings(null)
|
||||||
|
.withMolecularTherapies(null)
|
||||||
|
.withNgsReports(null)
|
||||||
|
.withPreviousGuidelineTherapies(null)
|
||||||
|
.withRebiopsyRequests(null)
|
||||||
|
.withRecommendations(null)
|
||||||
|
.withResponses(null)
|
||||||
|
.withStudyInclusionRequests(null)
|
||||||
|
.withSpecimens(null)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
mtbFile.pseudonymizeWith(pseudonymizeService)
|
||||||
|
mtbFile.anonymizeContentWith(pseudonymizeService)
|
||||||
|
|
||||||
|
|
||||||
|
assertThat(mtbFile.episode.id).isNotNull()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user