Skip to content

Commit 06494b8

Browse files
fix: change type of event key in events schema
1 parent 3d2179f commit 06494b8

File tree

11 files changed

+57
-49
lines changed

11 files changed

+57
-49
lines changed

Diff for: src/main/kotlin/entities/events/EmptyEvent.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88

99
package entities.events
1010

11+
import infrastructure.kafka.EventProperties.EventKey
12+
1113
/**
1214
* The event sent when the input has not to be propagated to the microservices.
1315
*/
1416
data class EmptyEvent(
15-
override val key: String = "EMPTY_EVENT",
17+
override val key: EventKey = EventKey.EMPTY_EVENT,
1618
override val data: Any = "EMPTY_DATA",
1719
override val dateTime: String = "EMPTY_DATA"
1820
) : Event<Any>

Diff for: src/main/kotlin/entities/events/Event.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
package entities.events
1010

11+
import infrastructure.kafka.EventProperties.EventKey
12+
1113
/**
1214
* The interface of a generic event.
1315
*/
@@ -16,7 +18,7 @@ interface Event<out E> {
1618
/**
1719
* The key of the event. Every type of event has its unique key.
1820
*/
19-
val key: String
21+
val key: EventKey
2022

2123
/**
2224
* The data of the event.

Diff for: src/main/kotlin/entities/events/ProcessEvent.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88

99
package entities.events
1010

11+
import infrastructure.kafka.EventProperties.EventKey
12+
1113
/**
1214
* The event of change of state in the surgical process.
1315
*/
1416
data class ProcessEvent<E : Any>(
1517

16-
override val key: String = "PROCESS_EVENT",
18+
override val key: EventKey,
1719

1820
override val data: E,
1921

Diff for: src/main/kotlin/entities/events/RoomEvent.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88

99
package entities.events
1010

11+
import infrastructure.kafka.EventProperties.EventKey
12+
1113
/**
1214
* The event of change of humidity in a room of the operating block.
1315
*/
1416
data class RoomEvent<E : Any> (
1517

16-
override val key: String = "ROOM_EVENT",
18+
override val key: EventKey,
1719
/**
1820
* The room ID.
1921
*/

Diff for: src/main/kotlin/entities/events/SurgeryBookingEvent.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88

99
package entities.events
1010

11+
import infrastructure.kafka.EventProperties.EventKey
12+
1113
/**
1214
* The event of a surgery booking.
1315
*/
1416
data class SurgeryBookingEvent<E : Any> (
1517

16-
override val key: String = "SURGERY_BOOKING_EVENT",
18+
override val key: EventKey = EventKey.SURGERY_BOOKINGS_EVENT,
1719

1820
override val data: E,
1921

Diff for: src/main/kotlin/entities/events/TrackingEvent.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88

99
package entities.events
1010

11+
import infrastructure.kafka.EventProperties.EventKey
12+
1113
/**
1214
* The event of health professionals tracking inside the operating block rooms.
1315
*/
1416
data class TrackingEvent<E : Any> (
1517

16-
override val key: String = "TRACKING_EVENT",
18+
override val key: EventKey = EventKey.TRACKING_EVENT,
1719

1820
/**
1921
* The health professional ID.

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +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
19+
import infrastructure.kafka.EventProperties.EventKey
2020

2121
/**
2222
* The parser of Azure Digital Twins Relationship Events.
@@ -45,7 +45,7 @@ class RelationshipEventParser {
4545
PROCESS_MODEL_ID.id -> {
4646
when (createdRelationship.data.relationshipName) {
4747
"rel_use" -> ProcessEvent(
48-
key = EventKeys.MEDICAL_DEVICE_USAGE_EVENT.name,
48+
key = EventKey.MEDICAL_DEVICE_USAGE_EVENT,
4949
data = ProcessData.MedicalDeviceUsage(
5050
createdRelationship.data.targetId,
5151
createdRelationship.data.sourceId

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

+13-13
Original file line numberDiff line numberDiff line change
@@ -45,7 +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
48+
import infrastructure.kafka.EventProperties.EventKey
4949

5050
/**
5151
* The parser of Azure Digital Twins Update Events.
@@ -71,26 +71,26 @@ class UpdateEventParser {
7171
private fun manageRoomEvents(updateTwinEvent: UpdateEvents.UpdateTwinEvent): Event<Any> =
7272
when (updateTwinEvent.data.patch[0].path) {
7373
TEMPERATURE.path -> RoomEvent(
74-
key = EventKeys.TEMPERATURE_EVENT.name,
74+
key = EventKey.TEMPERATURE_EVENT,
7575
roomId = updateTwinEvent.id,
7676
data = Temperature((updateTwinEvent.data.patch[0].value as Number).toDouble(), TemperatureUnit.CELSIUS),
7777
dateTime = updateTwinEvent.eventDateTime
7878
)
7979
HUMIDITY.path -> RoomEvent(
80-
key = EventKeys.HUMIDITY_EVENT.name,
80+
key = EventKey.HUMIDITY_EVENT,
8181
roomId = updateTwinEvent.id,
8282
data = Humidity(updateTwinEvent.data.patch[0].value as Int),
8383
dateTime = updateTwinEvent.eventDateTime
8484
)
8585
LUMINOSITY.path -> RoomEvent(
86-
key = EventKeys.LUMINOSITY_EVENT.name,
86+
key = EventKey.LUMINOSITY_EVENT,
8787
roomId = updateTwinEvent.id,
8888
data = Luminosity((updateTwinEvent.data.patch[0].value as Number).toDouble(), LuminosityUnit.LUX),
8989
dateTime = updateTwinEvent.eventDateTime
9090
)
9191
PRESENCE.path -> {
9292
RoomEvent(
93-
key = EventKeys.PRESENCE_EVENT.name,
93+
key = EventKey.PRESENCE_EVENT,
9494
roomId = updateTwinEvent.id,
9595
data = Presence(updateTwinEvent.data.patch[0].value as Boolean),
9696
dateTime = updateTwinEvent.eventDateTime
@@ -103,14 +103,14 @@ class UpdateEventParser {
103103
when (updateTwinEvent.data.patch[0].path) {
104104
IS_ON_OPERATING_TABLE.path -> {
105105
ProcessEvent(
106-
key = EventKeys.PATIENT_ON_OB_EVENT.name,
106+
key = EventKey.PATIENT_ON_OB_EVENT,
107107
data = ProcessInfo("Patient on Operating Bed", updateTwinEvent.id),
108108
dateTime = updateTwinEvent.eventDateTime
109109
)
110110
}
111111
BODY_TEMPERATURE.path -> {
112112
ProcessEvent(
113-
key = EventKeys.PATIENT_BODY_TEMPERATURE_UPDATE_EVENT.name,
113+
key = EventKey.PATIENT_BODY_TEMPERATURE_UPDATE_EVENT,
114114
data = PatientData(
115115
updateTwinEvent.id,
116116
BodyTemperature((updateTwinEvent.data.patch[0].value as Number).toDouble())
@@ -120,7 +120,7 @@ class UpdateEventParser {
120120
}
121121
DIASTOLIC_PRESSURE.path -> {
122122
ProcessEvent(
123-
key = EventKeys.PATIENT_DIASTOLIC_PRESSURE_UPDATE_EVENT.name,
123+
key = EventKey.PATIENT_DIASTOLIC_PRESSURE_UPDATE_EVENT,
124124
data = PatientData(
125125
updateTwinEvent.id,
126126
DiastolicPressure(updateTwinEvent.data.patch[0].value as Int)
@@ -130,7 +130,7 @@ class UpdateEventParser {
130130
}
131131
SYSTOLIC_PRESSURE.path -> {
132132
ProcessEvent(
133-
key = EventKeys.PATIENT_SYSTOLIC_PRESSURE_UPDATE_EVENT.name,
133+
key = EventKey.PATIENT_SYSTOLIC_PRESSURE_UPDATE_EVENT,
134134
data = PatientData(
135135
updateTwinEvent.id,
136136
SystolicPressure(updateTwinEvent.data.patch[0].value as Int)
@@ -140,7 +140,7 @@ class UpdateEventParser {
140140
}
141141
RESPIRATORY_RATE.path -> {
142142
ProcessEvent(
143-
key = EventKeys.PATIENT_RESPIRATORY_RATE_UPDATE_EVENT.name,
143+
key = EventKey.PATIENT_RESPIRATORY_RATE_UPDATE_EVENT,
144144
data = PatientData(
145145
updateTwinEvent.id,
146146
RespiratoryRate(updateTwinEvent.data.patch[0].value as Int)
@@ -150,7 +150,7 @@ class UpdateEventParser {
150150
}
151151
SATURATION_PERCENTAGE.path -> {
152152
ProcessEvent(
153-
key = EventKeys.PATIENT_SATURATION_UPDATE_EVENT.name,
153+
key = EventKey.PATIENT_SATURATION_UPDATE_EVENT,
154154
data = PatientData(
155155
updateTwinEvent.id,
156156
Saturation(updateTwinEvent.data.patch[0].value as Int)
@@ -160,7 +160,7 @@ class UpdateEventParser {
160160
}
161161
HEARTBEAT.path -> {
162162
ProcessEvent(
163-
key = EventKeys.PATIENT_HEARTBEAT_UPDATE_EVENT.name,
163+
key = EventKey.PATIENT_HEARTBEAT_UPDATE_EVENT,
164164
data = PatientData(
165165
updateTwinEvent.id,
166166
Heartbeat(updateTwinEvent.data.patch[0].value as Int)
@@ -170,7 +170,7 @@ class UpdateEventParser {
170170
}
171171
MEDICAL_TECHNOLOGY.path -> {
172172
ProcessEvent(
173-
key = EventKeys.MEDICAL_TECHNOLOGY_USAGE_EVENT.name,
173+
key = EventKey.MEDICAL_TECHNOLOGY_USAGE_EVENT,
174174
data = MedicalTechnologyUsage(
175175
updateTwinEvent.id,
176176
updateTwinEvent.data.patch[0].value as Boolean

Diff for: src/main/kotlin/infrastructure/kafka/EventProperties.kt

+18-15
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,23 @@ package infrastructure.kafka
1111
/** Module with some event properties. */
1212
object EventProperties {
1313

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
14+
/** The keys of the events and the [topicName] on which publish the event . */
15+
enum class EventKey(val topicName: String) {
16+
MEDICAL_DEVICE_USAGE_EVENT("process-events"),
17+
MEDICAL_TECHNOLOGY_USAGE_EVENT("process-events"),
18+
TEMPERATURE_EVENT("room-events"),
19+
HUMIDITY_EVENT("room-events"),
20+
LUMINOSITY_EVENT("room-events"),
21+
PRESENCE_EVENT("room-events"),
22+
PATIENT_ON_OB_EVENT("process-events"),
23+
PATIENT_BODY_TEMPERATURE_UPDATE_EVENT("process-events"),
24+
PATIENT_DIASTOLIC_PRESSURE_UPDATE_EVENT("process-events"),
25+
PATIENT_SYSTOLIC_PRESSURE_UPDATE_EVENT("process-events"),
26+
PATIENT_RESPIRATORY_RATE_UPDATE_EVENT("process-events"),
27+
PATIENT_SATURATION_UPDATE_EVENT("process-events"),
28+
PATIENT_HEARTBEAT_UPDATE_EVENT("process-events"),
29+
EMPTY_EVENT(""),
30+
TRACKING_EVENT("tracking-events"),
31+
SURGERY_BOOKINGS_EVENT("surgery-bookings-events")
2932
}
3033
}

Diff for: src/main/kotlin/infrastructure/kafka/KafkaPublisher.kt

+1-8
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,10 @@ class KafkaPublisher : EventPublisher<Event<*>> {
4040
"value.serializer" to KafkaJsonSerializer::class.java
4141
)
4242

43-
private val eventToTopic: Map<String, String> = mapOf(
44-
"ROOM_EVENT" to "room-events",
45-
"PROCESS_EVENT" to "process-events",
46-
"TRACKING_EVENT" to "tracking-events",
47-
"SURGERY_BOOKING_EVENT" to "surgery-bookings-events"
48-
)
49-
5043
private val producer: KafkaProducer<String, Event<*>> = KafkaProducer(producerProps)
5144

5245
override fun publishEvent(event: Event<*>) {
53-
val record = ProducerRecord(eventToTopic[event.key], event.key, event)
46+
val record = ProducerRecord(event.key.topicName, event.key.toString(), event)
5447
producer.send(record)
5548
}
5649
}

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

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

1111
import infrastructure.digitaltwins.parser.DTEventParser
12-
import infrastructure.kafka.EventProperties.EventKeys
12+
import infrastructure.kafka.EventProperties.EventKey
1313
import io.kotest.core.spec.style.StringSpec
1414
import io.kotest.matchers.shouldBe
1515
import io.kotest.matchers.shouldNotBe
@@ -29,25 +29,25 @@ class TestEventParser : StringSpec({
2929
"DT parser should parse room event of temperature update" {
3030
val event = parser.parseEvent(temperatureUpdateEvent)
3131
event shouldNotBe null
32-
event.key shouldBe EventKeys.TEMPERATURE_EVENT.name
32+
event.key shouldBe EventKey.TEMPERATURE_EVENT
3333
}
3434

3535
"DT parser should parse room event of humidity update" {
3636
val event = parser.parseEvent(humidityUpdateEvent)
3737
event shouldNotBe null
38-
event.key shouldBe EventKeys.HUMIDITY_EVENT.name
38+
event.key shouldBe EventKey.HUMIDITY_EVENT
3939
}
4040

4141
"DT parser should parse room event of luminosity update" {
4242
val event = parser.parseEvent(luminosityUpdateEvent)
4343
event shouldNotBe null
44-
event.key shouldBe EventKeys.LUMINOSITY_EVENT.name
44+
event.key shouldBe EventKey.LUMINOSITY_EVENT
4545
}
4646

4747
"DT parser should parse tracking event" {
4848
val event = parser.parseEvent(trackingEvent)
4949
event shouldNotBe null
50-
event.key shouldBe "TRACKING_EVENT"
50+
event.key shouldBe EventKey.TRACKING_EVENT
5151
}
5252
})
5353

0 commit comments

Comments
 (0)