Skip to content

Commit d82987b

Browse files
feat(events): use different event keys for kafka events
1 parent 82b193b commit d82987b

File tree

4 files changed

+49
-3
lines changed

4 files changed

+49
-3
lines changed

Diff for: src/main/kotlin/infrastructure/digitaltwins/parser/RelationshipEventParser.kt

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import entities.process.ProcessData
1616
import infrastructure.digitaltwins.events.RelationshipEvents
1717
import infrastructure.digitaltwins.events.TwinProperties.DTModelID.HEALTH_PROFESSIONAL_MODEL_ID
1818
import infrastructure.digitaltwins.events.TwinProperties.DTModelID.PROCESS_MODEL_ID
19+
import infrastructure.kafka.EventProperties.EventKeys
1920

2021
/**
2122
* The parser of Azure Digital Twins Relationship Events.
@@ -44,6 +45,7 @@ class RelationshipEventParser {
4445
PROCESS_MODEL_ID.id -> {
4546
when (createdRelationship.data.relationshipName) {
4647
"rel_use" -> ProcessEvent(
48+
key = EventKeys.MEDICAL_DEVICE_USAGE_EVENT.name,
4749
data = ProcessData.MedicalDeviceUsage(
4850
createdRelationship.data.targetId,
4951
createdRelationship.data.sourceId

Diff for: src/main/kotlin/infrastructure/digitaltwins/parser/UpdateEventParser.kt

+13
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import infrastructure.digitaltwins.events.TwinProperties.RoomProperties.LUMINOSI
4545
import infrastructure.digitaltwins.events.TwinProperties.RoomProperties.PRESENCE
4646
import infrastructure.digitaltwins.events.TwinProperties.RoomProperties.TEMPERATURE
4747
import infrastructure.digitaltwins.events.UpdateEvents
48+
import infrastructure.kafka.EventProperties.EventKeys
4849

4950
/**
5051
* The parser of Azure Digital Twins Update Events.
@@ -70,22 +71,26 @@ class UpdateEventParser {
7071
private fun manageRoomEvents(updateTwinEvent: UpdateEvents.UpdateTwinEvent): Event<Any> =
7172
when (updateTwinEvent.data.patch[0].path) {
7273
TEMPERATURE.path -> RoomEvent(
74+
key = EventKeys.TEMPERATURE_EVENT.name,
7375
roomId = updateTwinEvent.id,
7476
data = Temperature((updateTwinEvent.data.patch[0].value as Number).toDouble(), TemperatureUnit.CELSIUS),
7577
dateTime = updateTwinEvent.eventDateTime
7678
)
7779
HUMIDITY.path -> RoomEvent(
80+
key = EventKeys.HUMIDITY_EVENT.name,
7881
roomId = updateTwinEvent.id,
7982
data = Humidity(updateTwinEvent.data.patch[0].value as Int),
8083
dateTime = updateTwinEvent.eventDateTime
8184
)
8285
LUMINOSITY.path -> RoomEvent(
86+
key = EventKeys.LUMINOSITY_EVENT.name,
8387
roomId = updateTwinEvent.id,
8488
data = Luminosity((updateTwinEvent.data.patch[0].value as Number).toDouble(), LuminosityUnit.LUX),
8589
dateTime = updateTwinEvent.eventDateTime
8690
)
8791
PRESENCE.path -> {
8892
RoomEvent(
93+
key = EventKeys.PRESENCE_EVENT.name,
8994
roomId = updateTwinEvent.id,
9095
data = Presence(updateTwinEvent.data.patch[0].value as Boolean),
9196
dateTime = updateTwinEvent.eventDateTime
@@ -98,12 +103,14 @@ class UpdateEventParser {
98103
when (updateTwinEvent.data.patch[0].path) {
99104
IS_ON_OPERATING_TABLE.path -> {
100105
ProcessEvent(
106+
key = EventKeys.PATIENT_ON_OB_EVENT.name,
101107
data = ProcessInfo("Patient on Operating Bed", updateTwinEvent.id),
102108
dateTime = updateTwinEvent.eventDateTime
103109
)
104110
}
105111
BODY_TEMPERATURE.path -> {
106112
ProcessEvent(
113+
key = EventKeys.PATIENT_BODY_TEMPERATURE_UPDATE_EVENT.name,
107114
data = PatientData(
108115
updateTwinEvent.id,
109116
BodyTemperature((updateTwinEvent.data.patch[0].value as Number).toDouble())
@@ -113,6 +120,7 @@ class UpdateEventParser {
113120
}
114121
DIASTOLIC_PRESSURE.path -> {
115122
ProcessEvent(
123+
key = EventKeys.PATIENT_DIASTOLIC_PRESSURE_UPDATE_EVENT.name,
116124
data = PatientData(
117125
updateTwinEvent.id,
118126
DiastolicPressure(updateTwinEvent.data.patch[0].value as Int)
@@ -122,6 +130,7 @@ class UpdateEventParser {
122130
}
123131
SYSTOLIC_PRESSURE.path -> {
124132
ProcessEvent(
133+
key = EventKeys.PATIENT_SYSTOLIC_PRESSURE_UPDATE_EVENT.name,
125134
data = PatientData(
126135
updateTwinEvent.id,
127136
SystolicPressure(updateTwinEvent.data.patch[0].value as Int)
@@ -131,6 +140,7 @@ class UpdateEventParser {
131140
}
132141
RESPIRATORY_RATE.path -> {
133142
ProcessEvent(
143+
key = EventKeys.PATIENT_RESPIRATORY_RATE_UPDATE_EVENT.name,
134144
data = PatientData(
135145
updateTwinEvent.id,
136146
RespiratoryRate(updateTwinEvent.data.patch[0].value as Int)
@@ -140,6 +150,7 @@ class UpdateEventParser {
140150
}
141151
SATURATION_PERCENTAGE.path -> {
142152
ProcessEvent(
153+
key = EventKeys.PATIENT_SATURATION_UPDATE_EVENT.name,
143154
data = PatientData(
144155
updateTwinEvent.id,
145156
Saturation(updateTwinEvent.data.patch[0].value as Int)
@@ -149,6 +160,7 @@ class UpdateEventParser {
149160
}
150161
HEARTBEAT.path -> {
151162
ProcessEvent(
163+
key = EventKeys.PATIENT_HEARTBEAT_UPDATE_EVENT.name,
152164
data = PatientData(
153165
updateTwinEvent.id,
154166
Heartbeat(updateTwinEvent.data.patch[0].value as Int)
@@ -158,6 +170,7 @@ class UpdateEventParser {
158170
}
159171
MEDICAL_TECHNOLOGY.path -> {
160172
ProcessEvent(
173+
key = EventKeys.MEDICAL_TECHNOLOGY_USAGE_EVENT.name,
161174
data = MedicalTechnologyUsage(
162175
updateTwinEvent.id,
163176
updateTwinEvent.data.patch[0].value as Boolean
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* Copyright (c) 2023. Smart Operating Block
3+
*
4+
* Use of this source code is governed by an MIT-style
5+
* license that can be found in the LICENSE file or at
6+
* https://opensource.org/licenses/MIT.
7+
*/
8+
9+
package infrastructure.kafka
10+
11+
/** Module with some event properties. */
12+
object EventProperties {
13+
14+
/** The keys of the events. */
15+
enum class EventKeys {
16+
MEDICAL_DEVICE_USAGE_EVENT,
17+
MEDICAL_TECHNOLOGY_USAGE_EVENT,
18+
TEMPERATURE_EVENT,
19+
HUMIDITY_EVENT,
20+
LUMINOSITY_EVENT,
21+
PRESENCE_EVENT,
22+
PATIENT_ON_OB_EVENT,
23+
PATIENT_BODY_TEMPERATURE_UPDATE_EVENT,
24+
PATIENT_DIASTOLIC_PRESSURE_UPDATE_EVENT,
25+
PATIENT_SYSTOLIC_PRESSURE_UPDATE_EVENT,
26+
PATIENT_RESPIRATORY_RATE_UPDATE_EVENT,
27+
PATIENT_SATURATION_UPDATE_EVENT,
28+
PATIENT_HEARTBEAT_UPDATE_EVENT
29+
}
30+
}

Diff for: src/test/kotlin/instracture/parser/TestEventParser.kt

+4-3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
package instracture.parser
1010

1111
import infrastructure.digitaltwins.parser.DTEventParser
12+
import infrastructure.kafka.EventProperties.EventKeys
1213
import io.kotest.core.spec.style.StringSpec
1314
import io.kotest.matchers.shouldBe
1415
import io.kotest.matchers.shouldNotBe
@@ -28,19 +29,19 @@ class TestEventParser : StringSpec({
2829
"DT parser should parse room event of temperature update" {
2930
val event = parser.parseEvent(temperatureUpdateEvent)
3031
event shouldNotBe null
31-
event.key shouldBe "ROOM_EVENT"
32+
event.key shouldBe EventKeys.TEMPERATURE_EVENT.name
3233
}
3334

3435
"DT parser should parse room event of humidity update" {
3536
val event = parser.parseEvent(humidityUpdateEvent)
3637
event shouldNotBe null
37-
event.key shouldBe "ROOM_EVENT"
38+
event.key shouldBe EventKeys.HUMIDITY_EVENT.name
3839
}
3940

4041
"DT parser should parse room event of luminosity update" {
4142
val event = parser.parseEvent(luminosityUpdateEvent)
4243
event shouldNotBe null
43-
event.key shouldBe "ROOM_EVENT"
44+
event.key shouldBe EventKeys.LUMINOSITY_EVENT.name
4445
}
4546

4647
"DT parser should parse tracking event" {

0 commit comments

Comments
 (0)