mirror of
https://github.com/pcvolkmer/etl-processor.git
synced 2025-04-19 17:26:51 +00:00
feat: Support POSTing data to dnpm:dip
This commit is contained in:
parent
ff27b7157d
commit
b25e580113
@ -199,6 +199,7 @@ Folgende Umgebungsvariablen müssen gesetzt sein, damit ein bwHC-MTB-File an das
|
|||||||
* `APP_REST_URI`: URI der zu benutzenden API der bwHC-Backend-Instanz. z.B.: `http://localhost:9000/bwhc/etl/api`
|
* `APP_REST_URI`: URI der zu benutzenden API der bwHC-Backend-Instanz. z.B.: `http://localhost:9000/bwhc/etl/api`
|
||||||
* `APP_REST_USERNAME`: Basic-Auth-Benutzername für bwHC-Backend
|
* `APP_REST_USERNAME`: Basic-Auth-Benutzername für bwHC-Backend
|
||||||
* `APP_REST_PASSWORD`: Basic-Auth-Passwort für bwHC-Backend
|
* `APP_REST_PASSWORD`: Basic-Auth-Passwort für bwHC-Backend
|
||||||
|
* `APP_REST_IS_BWHC`: `true` für bwHC, weglassen oder `false` für dnpm:dip
|
||||||
|
|
||||||
#### Kafka-Topics
|
#### Kafka-Topics
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ services:
|
|||||||
APP_REST_URI: ${DNPM_BWHC_REST_URI}
|
APP_REST_URI: ${DNPM_BWHC_REST_URI}
|
||||||
APP_REST_USERNAME: ${DNPM_BWHC_REST_USERNAME}
|
APP_REST_USERNAME: ${DNPM_BWHC_REST_USERNAME}
|
||||||
APP_REST_PASSWORD: ${DNPM_BWHC_REST_PASSWORD}
|
APP_REST_PASSWORD: ${DNPM_BWHC_REST_PASSWORD}
|
||||||
|
APP_REST_IS_BWHC: ${DNPM_BWHC_REST_IS_BWHC}
|
||||||
APP_SECURITY_ADMIN_USER: ${DNPM_ADMIN_USER}
|
APP_SECURITY_ADMIN_USER: ${DNPM_ADMIN_USER}
|
||||||
APP_SECURITY_ADMIN_PASSWORD: ${DNPM_ADMIN_PASSWORD}
|
APP_SECURITY_ADMIN_PASSWORD: ${DNPM_ADMIN_PASSWORD}
|
||||||
SPRING_DATASOURCE_URL: ${DNPM_DATASOURCE_URL}
|
SPRING_DATASOURCE_URL: ${DNPM_DATASOURCE_URL}
|
||||||
|
@ -30,6 +30,7 @@ DNPM_DATASOURCE_URL=jdbc:mariadb://dnpm-monitor-db:3306/$DNPM_MARIADB_DB
|
|||||||
DNPM_BWHC_REST_URI=
|
DNPM_BWHC_REST_URI=
|
||||||
DNPM_BWHC_REST_USERNAME=
|
DNPM_BWHC_REST_USERNAME=
|
||||||
DNPM_BWHC_REST_PASSWORD=
|
DNPM_BWHC_REST_PASSWORD=
|
||||||
|
DNPM_BWHC_REST_IS_BWHC=false
|
||||||
|
|
||||||
# produce mtb files to this topic - values 'false' disabling kafka processing
|
# produce mtb files to this topic - values 'false' disabling kafka processing
|
||||||
DNPM_KAFKA_TOPIC=false
|
DNPM_KAFKA_TOPIC=false
|
||||||
|
@ -71,6 +71,7 @@ data class RestTargetProperties(
|
|||||||
val uri: String?,
|
val uri: String?,
|
||||||
val username: String?,
|
val username: String?,
|
||||||
val password: String?,
|
val password: String?,
|
||||||
|
val isBwhc: Boolean = false,
|
||||||
) {
|
) {
|
||||||
companion object {
|
companion object {
|
||||||
const val NAME = "app.rest"
|
const val NAME = "app.rest"
|
||||||
|
@ -21,6 +21,7 @@ package dev.dnpm.etl.processor.output
|
|||||||
|
|
||||||
import dev.dnpm.etl.processor.config.RestTargetProperties
|
import dev.dnpm.etl.processor.config.RestTargetProperties
|
||||||
import dev.dnpm.etl.processor.monitoring.RequestStatus
|
import dev.dnpm.etl.processor.monitoring.RequestStatus
|
||||||
|
import dev.dnpm.etl.processor.PatientPseudonym
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import org.springframework.http.HttpEntity
|
import org.springframework.http.HttpEntity
|
||||||
import org.springframework.http.HttpHeaders
|
import org.springframework.http.HttpHeaders
|
||||||
@ -37,13 +38,29 @@ class RestMtbFileSender(
|
|||||||
|
|
||||||
private val logger = LoggerFactory.getLogger(RestMtbFileSender::class.java)
|
private val logger = LoggerFactory.getLogger(RestMtbFileSender::class.java)
|
||||||
|
|
||||||
|
fun sendUrl(): String {
|
||||||
|
return if(restTargetProperties.isBwhc) {
|
||||||
|
"${restTargetProperties.uri}/MTBFile"
|
||||||
|
} else {
|
||||||
|
"${restTargetProperties.uri}/patient-record"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun deleteUrl(patientId: PatientPseudonym): String {
|
||||||
|
return if(restTargetProperties.isBwhc) {
|
||||||
|
"${restTargetProperties.uri}/Patient/${patientId.value}"
|
||||||
|
} else {
|
||||||
|
"${restTargetProperties.uri}/patient/${patientId.value}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun send(request: MtbFileSender.MtbFileRequest): MtbFileSender.Response {
|
override fun send(request: MtbFileSender.MtbFileRequest): MtbFileSender.Response {
|
||||||
try {
|
try {
|
||||||
return retryTemplate.execute<MtbFileSender.Response, Exception> {
|
return retryTemplate.execute<MtbFileSender.Response, Exception> {
|
||||||
val headers = getHttpHeaders()
|
val headers = getHttpHeaders()
|
||||||
val entityReq = HttpEntity(request.mtbFile, headers)
|
val entityReq = HttpEntity(request.mtbFile, headers)
|
||||||
val response = restTemplate.postForEntity(
|
val response = restTemplate.postForEntity(
|
||||||
"${restTargetProperties.uri}/MTBFile",
|
sendUrl(),
|
||||||
entityReq,
|
entityReq,
|
||||||
String::class.java
|
String::class.java
|
||||||
)
|
)
|
||||||
@ -72,7 +89,7 @@ class RestMtbFileSender(
|
|||||||
val headers = getHttpHeaders()
|
val headers = getHttpHeaders()
|
||||||
val entityReq = HttpEntity(null, headers)
|
val entityReq = HttpEntity(null, headers)
|
||||||
restTemplate.delete(
|
restTemplate.delete(
|
||||||
"${restTargetProperties.uri}/Patient/${request.patientId}",
|
deleteUrl(request.patientId),
|
||||||
entityReq,
|
entityReq,
|
||||||
String::class.java
|
String::class.java
|
||||||
)
|
)
|
||||||
|
@ -48,7 +48,7 @@ class RestMtbFileSenderTest {
|
|||||||
@BeforeEach
|
@BeforeEach
|
||||||
fun setup() {
|
fun setup() {
|
||||||
val restTemplate = RestTemplate()
|
val restTemplate = RestTemplate()
|
||||||
val restTargetProperties = RestTargetProperties("http://localhost:9000/mtbfile", null, null)
|
val restTargetProperties = RestTargetProperties("http://localhost:9000/", null, null, false)
|
||||||
val retryTemplate = RetryTemplateBuilder().customPolicy(SimpleRetryPolicy(1)).build()
|
val retryTemplate = RetryTemplateBuilder().customPolicy(SimpleRetryPolicy(1)).build()
|
||||||
|
|
||||||
this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
|
this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
|
||||||
@ -61,7 +61,7 @@ class RestMtbFileSenderTest {
|
|||||||
fun shouldReturnExpectedResponseForDelete(requestWithResponse: RequestWithResponse) {
|
fun shouldReturnExpectedResponseForDelete(requestWithResponse: RequestWithResponse) {
|
||||||
this.mockRestServiceServer
|
this.mockRestServiceServer
|
||||||
.expect(method(HttpMethod.DELETE))
|
.expect(method(HttpMethod.DELETE))
|
||||||
.andExpect(requestTo("http://localhost:9000/mtbfile/Patient/$TEST_PATIENT_PSEUDONYM"))
|
.andExpect(requestTo("http://localhost:9000/patient/$TEST_PATIENT_PSEUDONYM"))
|
||||||
.andRespond {
|
.andRespond {
|
||||||
withStatus(requestWithResponse.httpStatus).body(requestWithResponse.body).createResponse(it)
|
withStatus(requestWithResponse.httpStatus).body(requestWithResponse.body).createResponse(it)
|
||||||
}
|
}
|
||||||
@ -76,7 +76,7 @@ class RestMtbFileSenderTest {
|
|||||||
fun shouldReturnExpectedResponseForMtbFilePost(requestWithResponse: RequestWithResponse) {
|
fun shouldReturnExpectedResponseForMtbFilePost(requestWithResponse: RequestWithResponse) {
|
||||||
this.mockRestServiceServer
|
this.mockRestServiceServer
|
||||||
.expect(method(HttpMethod.POST))
|
.expect(method(HttpMethod.POST))
|
||||||
.andExpect(requestTo("http://localhost:9000/mtbfile/MTBFile"))
|
.andExpect(requestTo("http://localhost:9000/patient-record"))
|
||||||
.andRespond {
|
.andRespond {
|
||||||
withStatus(requestWithResponse.httpStatus).body(requestWithResponse.body).createResponse(it)
|
withStatus(requestWithResponse.httpStatus).body(requestWithResponse.body).createResponse(it)
|
||||||
}
|
}
|
||||||
@ -90,7 +90,7 @@ class RestMtbFileSenderTest {
|
|||||||
@MethodSource("mtbFileRequestWithResponseSource")
|
@MethodSource("mtbFileRequestWithResponseSource")
|
||||||
fun shouldRetryOnMtbFileHttpRequestError(requestWithResponse: RequestWithResponse) {
|
fun shouldRetryOnMtbFileHttpRequestError(requestWithResponse: RequestWithResponse) {
|
||||||
val restTemplate = RestTemplate()
|
val restTemplate = RestTemplate()
|
||||||
val restTargetProperties = RestTargetProperties("http://localhost:9000/mtbfile", null, null)
|
val restTargetProperties = RestTargetProperties("http://localhost:9000/", null, null, false)
|
||||||
val retryTemplate = RetryTemplateBuilder().customPolicy(SimpleRetryPolicy(3)).build()
|
val retryTemplate = RetryTemplateBuilder().customPolicy(SimpleRetryPolicy(3)).build()
|
||||||
|
|
||||||
this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
|
this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
|
||||||
@ -105,7 +105,7 @@ class RestMtbFileSenderTest {
|
|||||||
|
|
||||||
this.mockRestServiceServer
|
this.mockRestServiceServer
|
||||||
.expect(expectedCount, method(HttpMethod.POST))
|
.expect(expectedCount, method(HttpMethod.POST))
|
||||||
.andExpect(requestTo("http://localhost:9000/mtbfile/MTBFile"))
|
.andExpect(requestTo("http://localhost:9000/patient-record"))
|
||||||
.andRespond {
|
.andRespond {
|
||||||
withStatus(requestWithResponse.httpStatus).body(requestWithResponse.body).createResponse(it)
|
withStatus(requestWithResponse.httpStatus).body(requestWithResponse.body).createResponse(it)
|
||||||
}
|
}
|
||||||
@ -119,7 +119,7 @@ class RestMtbFileSenderTest {
|
|||||||
@MethodSource("deleteRequestWithResponseSource")
|
@MethodSource("deleteRequestWithResponseSource")
|
||||||
fun shouldRetryOnDeleteHttpRequestError(requestWithResponse: RequestWithResponse) {
|
fun shouldRetryOnDeleteHttpRequestError(requestWithResponse: RequestWithResponse) {
|
||||||
val restTemplate = RestTemplate()
|
val restTemplate = RestTemplate()
|
||||||
val restTargetProperties = RestTargetProperties("http://localhost:9000/mtbfile", null, null)
|
val restTargetProperties = RestTargetProperties("http://localhost:9000/", null, null, false)
|
||||||
val retryTemplate = RetryTemplateBuilder().customPolicy(SimpleRetryPolicy(3)).build()
|
val retryTemplate = RetryTemplateBuilder().customPolicy(SimpleRetryPolicy(3)).build()
|
||||||
|
|
||||||
this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
|
this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
|
||||||
@ -134,7 +134,7 @@ class RestMtbFileSenderTest {
|
|||||||
|
|
||||||
this.mockRestServiceServer
|
this.mockRestServiceServer
|
||||||
.expect(expectedCount, method(HttpMethod.DELETE))
|
.expect(expectedCount, method(HttpMethod.DELETE))
|
||||||
.andExpect(requestTo("http://localhost:9000/mtbfile/Patient/$TEST_PATIENT_PSEUDONYM"))
|
.andExpect(requestTo("http://localhost:9000/patient/$TEST_PATIENT_PSEUDONYM"))
|
||||||
.andRespond {
|
.andRespond {
|
||||||
withStatus(requestWithResponse.httpStatus).body(requestWithResponse.body).createResponse(it)
|
withStatus(requestWithResponse.httpStatus).body(requestWithResponse.body).createResponse(it)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user