1
0
mirror of https://github.com/pcvolkmer/etl-processor.git synced 2025-04-19 17:26:51 +00:00

Handle delete requests by using REST request to bwHC

Kafka implementation is not implemented yet.
This commit is contained in:
Paul-Christian Volkmer 2023-07-31 19:24:10 +02:00
parent e1d05ef574
commit a1e56f1596
3 changed files with 32 additions and 9 deletions

View File

@ -30,7 +30,7 @@ class KafkaMtbFileSender(
private val logger = LoggerFactory.getLogger(KafkaMtbFileSender::class.java)
override fun send(request: MtbFileSender.Request): MtbFileSender.Response {
override fun send(request: MtbFileSender.MtbFileRequest): MtbFileSender.Response {
return try {
val result = kafkaTemplate.sendDefault(
header(request),
@ -49,7 +49,12 @@ class KafkaMtbFileSender(
}
}
private fun header(request: MtbFileSender.Request): String {
// TODO not yet implemented
override fun send(request: MtbFileSender.DeleteRequest): MtbFileSender.Response {
return MtbFileSender.Response(MtbFileSender.ResponseStatus.UNKNOWN)
}
private fun header(request: MtbFileSender.MtbFileRequest): String {
return "{\"pid\": \"${request.mtbFile.patient.id}\", " +
"\"eid\": \"${request.mtbFile.episode.id}\", " +
"\"requestId\": \"${request.requestId}\"}"

View File

@ -33,7 +33,7 @@ class RestMtbFileSender(private val restTargetProperties: RestTargetProperties)
private val restTemplate = RestTemplate()
override fun send(request: MtbFileSender.Request): MtbFileSender.Response {
override fun send(request: MtbFileSender.MtbFileRequest): MtbFileSender.Response {
try {
val headers = HttpHeaders()
headers.contentType = MediaType.APPLICATION_JSON
@ -62,4 +62,25 @@ class RestMtbFileSender(private val restTargetProperties: RestTargetProperties)
return MtbFileSender.Response(MtbFileSender.ResponseStatus.ERROR, "Sonstiger Fehler bei der Übertragung")
}
override fun send(request: MtbFileSender.DeleteRequest): MtbFileSender.Response {
try {
val headers = HttpHeaders()
headers.contentType = MediaType.APPLICATION_JSON
val entityReq = HttpEntity(null, headers)
restTemplate.delete(
restTargetProperties.uri!!,
entityReq,
String::class.java
)
logger.debug("Sent file via RestMtbFileSender")
MtbFileSender.Response(MtbFileSender.ResponseStatus.SUCCESS)
} catch (e: IllegalArgumentException) {
logger.error("Not a valid URI to export to: '{}'", restTargetProperties.uri!!)
} catch (e: RestClientException) {
logger.info(restTargetProperties.uri!!.toString())
logger.error("Cannot send data to remote system", e)
}
return MtbFileSender.Response(MtbFileSender.ResponseStatus.ERROR, "Sonstiger Fehler bei der Übertragung")
}
}

View File

@ -31,12 +31,9 @@ import org.apache.commons.codec.binary.Base32
import org.apache.commons.codec.digest.DigestUtils
import org.slf4j.LoggerFactory
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.bind.annotation.*
import reactor.core.publisher.Sinks
import java.util.UUID
import java.util.*
@RestController
class MtbFileController(
@ -129,7 +126,7 @@ class MtbFileController(
}
}
@PostMapping(path = ["/mtbfile/{patientId}"])
@DeleteMapping(path = ["/mtbfile/{patientId}"])
fun deleteData(@PathVariable patientId: String): ResponseEntity<Void> {
val requestId = UUID.randomUUID().toString()