1
0
mirror of https://github.com/pcvolkmer/onco-analytics-monitor.git synced 2025-04-19 11:06:52 +00:00

refactor: save condition without version check if intended

This will simply save a condition instead of checking if the same
version number is smaller.
This commit is contained in:
Paul-Christian Volkmer 2024-08-06 08:29:21 +02:00
parent cbdb8bd4c9
commit dceff7a9da
3 changed files with 11 additions and 14 deletions

View File

@ -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<ConditionId, Condition>()
@ -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<Condition> {

View File

@ -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
)
)

View File

@ -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
)
)