diff --git a/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/conditions/ConditionInMemoryRepository.kt b/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/conditions/ConditionInMemoryRepository.kt index 07349f4..97a3a45 100644 --- a/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/conditions/ConditionInMemoryRepository.kt +++ b/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/conditions/ConditionInMemoryRepository.kt @@ -3,9 +3,7 @@ package dev.pcvolkmer.oncoanalytics.monitor.conditions import org.apache.commons.codec.digest.DigestUtils @JvmInline -value class ConditionId(val value: String) - -data class Condition(val id: ConditionId, val version: Int, val icd10: String) { +value class ConditionId(val value: String) { companion object { fun generateConditionId(patientId: String, tumorId: String): ConditionId { return ConditionId(DigestUtils.sha256Hex("$patientId-$tumorId")) @@ -13,6 +11,8 @@ data class Condition(val id: ConditionId, val version: Int, val icd10: String) { } } +data class Condition(val id: ConditionId, val icd10: String, val version: Int = 0) + class ConditionInMemoryRepository { private val conditions = mutableMapOf() @@ -25,12 +25,9 @@ class ConditionInMemoryRepository { return false } - fun saveIfNotOlderNewerVersion(condition: Condition): Boolean { - if ((this.conditions[condition.id]?.version ?: 0) <= condition.version) { - this.conditions[condition.id] = condition - return true - } - return false + fun save(condition: Condition): Boolean { + this.conditions[condition.id] = condition + return true } fun findAll(): List { diff --git a/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/topiclisteners/ObdsFhirTopicMonitor.kt b/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/topiclisteners/ObdsFhirTopicMonitor.kt index 4b921fc..4c22dfd 100644 --- a/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/topiclisteners/ObdsFhirTopicMonitor.kt +++ b/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/topiclisteners/ObdsFhirTopicMonitor.kt @@ -37,10 +37,9 @@ class ObdsFhirTopicMonitor( if (firstEntry.resource.fhirType() == "Condition") { val condition = firstEntry.resource as org.hl7.fhir.r4.model.Condition - val updated = conditionRepository.saveIfNotOlderNewerVersion( + val updated = conditionRepository.save( Condition( ConditionId(condition.id), - 0, condition.code.coding.first { "http://fhir.de/CodeSystem/bfarm/icd-10-gm" == it.system }.code ) ) diff --git a/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/topiclisteners/ObdsXmlTopicMonitor.kt b/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/topiclisteners/ObdsXmlTopicMonitor.kt index c986809..159a829 100644 --- a/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/topiclisteners/ObdsXmlTopicMonitor.kt +++ b/src/main/kotlin/dev/pcvolkmer/oncoanalytics/monitor/topiclisteners/ObdsXmlTopicMonitor.kt @@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.databind.ObjectMapper import dev.pcvolkmer.oncoanalytics.monitor.StatisticsSink import dev.pcvolkmer.oncoanalytics.monitor.conditions.Condition +import dev.pcvolkmer.oncoanalytics.monitor.conditions.ConditionId import dev.pcvolkmer.oncoanalytics.monitor.conditions.ConditionInMemoryRepository import dev.pcvolkmer.oncoanalytics.monitor.fetchStatistics import org.springframework.beans.factory.annotation.Qualifier @@ -53,9 +54,9 @@ class ObdsXmlTopicMonitor( val updated = conditionRepository.saveIfNewerVersion( Condition( - Condition.generateConditionId(patientId, tumorId), - p.payload.version, - icd10 + ConditionId.fromPatientIdAndTumorId(patientId, tumorId), + icd10, + p.payload.version ) )