From b25e58011371d5271f4db240545208dd6c792ff0 Mon Sep 17 00:00:00 2001 From: Niklas Sombert Date: Thu, 6 Feb 2025 16:15:44 +0100 Subject: feat: Support POSTing data to dnpm:dip --- .../etl/processor/config/AppConfigProperties.kt | 1 + .../dnpm/etl/processor/output/RestMtbFileSender.kt | 21 +++++++++++++++++++-- .../etl/processor/output/RestMtbFileSenderTest.kt | 14 +++++++------- 3 files changed, 27 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfigProperties.kt b/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfigProperties.kt index dd7e461..7c192c8 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfigProperties.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfigProperties.kt @@ -71,6 +71,7 @@ data class RestTargetProperties( val uri: String?, val username: String?, val password: String?, + val isBwhc: Boolean = false, ) { companion object { const val NAME = "app.rest" diff --git a/src/main/kotlin/dev/dnpm/etl/processor/output/RestMtbFileSender.kt b/src/main/kotlin/dev/dnpm/etl/processor/output/RestMtbFileSender.kt index 58459b9..6dfe0eb 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/output/RestMtbFileSender.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/output/RestMtbFileSender.kt @@ -21,6 +21,7 @@ package dev.dnpm.etl.processor.output import dev.dnpm.etl.processor.config.RestTargetProperties import dev.dnpm.etl.processor.monitoring.RequestStatus +import dev.dnpm.etl.processor.PatientPseudonym import org.slf4j.LoggerFactory import org.springframework.http.HttpEntity import org.springframework.http.HttpHeaders @@ -37,13 +38,29 @@ class RestMtbFileSender( 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 { try { return retryTemplate.execute { val headers = getHttpHeaders() val entityReq = HttpEntity(request.mtbFile, headers) val response = restTemplate.postForEntity( - "${restTargetProperties.uri}/MTBFile", + sendUrl(), entityReq, String::class.java ) @@ -72,7 +89,7 @@ class RestMtbFileSender( val headers = getHttpHeaders() val entityReq = HttpEntity(null, headers) restTemplate.delete( - "${restTargetProperties.uri}/Patient/${request.patientId}", + deleteUrl(request.patientId), entityReq, String::class.java ) diff --git a/src/test/kotlin/dev/dnpm/etl/processor/output/RestMtbFileSenderTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/output/RestMtbFileSenderTest.kt index 8a12186..b3a87b0 100644 --- a/src/test/kotlin/dev/dnpm/etl/processor/output/RestMtbFileSenderTest.kt +++ b/src/test/kotlin/dev/dnpm/etl/processor/output/RestMtbFileSenderTest.kt @@ -48,7 +48,7 @@ class RestMtbFileSenderTest { @BeforeEach fun setup() { 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() this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate) @@ -61,7 +61,7 @@ class RestMtbFileSenderTest { fun shouldReturnExpectedResponseForDelete(requestWithResponse: RequestWithResponse) { this.mockRestServiceServer .expect(method(HttpMethod.DELETE)) - .andExpect(requestTo("http://localhost:9000/mtbfile/Patient/$TEST_PATIENT_PSEUDONYM")) + .andExpect(requestTo("http://localhost:9000/patient/$TEST_PATIENT_PSEUDONYM")) .andRespond { withStatus(requestWithResponse.httpStatus).body(requestWithResponse.body).createResponse(it) } @@ -76,7 +76,7 @@ class RestMtbFileSenderTest { fun shouldReturnExpectedResponseForMtbFilePost(requestWithResponse: RequestWithResponse) { this.mockRestServiceServer .expect(method(HttpMethod.POST)) - .andExpect(requestTo("http://localhost:9000/mtbfile/MTBFile")) + .andExpect(requestTo("http://localhost:9000/patient-record")) .andRespond { withStatus(requestWithResponse.httpStatus).body(requestWithResponse.body).createResponse(it) } @@ -90,7 +90,7 @@ class RestMtbFileSenderTest { @MethodSource("mtbFileRequestWithResponseSource") fun shouldRetryOnMtbFileHttpRequestError(requestWithResponse: RequestWithResponse) { 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() this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate) @@ -105,7 +105,7 @@ class RestMtbFileSenderTest { this.mockRestServiceServer .expect(expectedCount, method(HttpMethod.POST)) - .andExpect(requestTo("http://localhost:9000/mtbfile/MTBFile")) + .andExpect(requestTo("http://localhost:9000/patient-record")) .andRespond { withStatus(requestWithResponse.httpStatus).body(requestWithResponse.body).createResponse(it) } @@ -119,7 +119,7 @@ class RestMtbFileSenderTest { @MethodSource("deleteRequestWithResponseSource") fun shouldRetryOnDeleteHttpRequestError(requestWithResponse: RequestWithResponse) { 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() this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate) @@ -134,7 +134,7 @@ class RestMtbFileSenderTest { this.mockRestServiceServer .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 { withStatus(requestWithResponse.httpStatus).body(requestWithResponse.body).createResponse(it) } -- cgit v1.2.3