-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
IS-2329: Add getting aktivitetskrav for persons with active vurdering
- Loading branch information
1 parent
35981d9
commit bc7485e
Showing
17 changed files
with
232 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
45 changes: 45 additions & 0 deletions
45
src/main/kotlin/no/nav/syfo/personstatus/application/AktivitetskravDTO.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
package no.nav.syfo.personstatus.application | ||
|
||
import java.time.LocalDate | ||
import java.time.LocalDateTime | ||
|
||
data class AktivitetskravRequestDTO( | ||
val personidenter: List<String>, | ||
) | ||
|
||
data class GetAktivitetskravForPersonsResponseDTO( | ||
val aktivitetskravvurderinger: Map<String, AktivitetskravDTO>, | ||
) | ||
|
||
data class AktivitetskravDTO( | ||
val uuid: String, | ||
val createdAt: LocalDateTime, | ||
val status: AktivitetskravStatus, | ||
val vurderinger: List<AktivitetskravvurderingDTO>, | ||
) | ||
|
||
data class AktivitetskravvurderingDTO( | ||
val createdAt: LocalDateTime, | ||
val status: AktivitetskravStatus, | ||
val frist: LocalDate?, | ||
val varsel: AktivitetskravVarselDTO?, | ||
) | ||
|
||
data class AktivitetskravVarselDTO( | ||
val createdAt: LocalDateTime, | ||
val svarfrist: LocalDate, | ||
) | ||
|
||
enum class AktivitetskravStatus { | ||
NY, | ||
NY_VURDERING, | ||
AVVENT, | ||
UNNTAK, | ||
OPPFYLT, | ||
AUTOMATISK_OPPFYLT, | ||
FORHANDSVARSEL, | ||
STANS, | ||
IKKE_OPPFYLT, | ||
IKKE_AKTUELL, | ||
LUKKET, | ||
} |
11 changes: 11 additions & 0 deletions
11
src/main/kotlin/no/nav/syfo/personstatus/application/IAktivitetskravClient.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package no.nav.syfo.personstatus.application | ||
|
||
import no.nav.syfo.domain.PersonIdent | ||
|
||
interface IAktivitetskravClient { | ||
suspend fun getAktivitetskravForPersons( | ||
callId: String, | ||
token: String, | ||
personidenter: List<PersonIdent>, | ||
): GetAktivitetskravForPersonsResponseDTO? | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
85 changes: 85 additions & 0 deletions
85
src/main/kotlin/no/nav/syfo/personstatus/infrastructure/clients/AktivitetskravClient.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
package no.nav.syfo.personstatus.infrastructure.clients | ||
|
||
import io.ktor.client.call.body | ||
import io.ktor.client.plugins.ClientRequestException | ||
import io.ktor.client.plugins.ServerResponseException | ||
import io.ktor.client.request.accept | ||
import io.ktor.client.request.header | ||
import io.ktor.client.request.post | ||
import io.ktor.client.request.setBody | ||
import io.ktor.client.statement.HttpResponse | ||
import io.ktor.http.* | ||
import net.logstash.logback.argument.StructuredArguments | ||
import no.nav.syfo.domain.PersonIdent | ||
import no.nav.syfo.personstatus.application.AktivitetskravRequestDTO | ||
import no.nav.syfo.personstatus.application.GetAktivitetskravForPersonsResponseDTO | ||
import no.nav.syfo.personstatus.application.IAktivitetskravClient | ||
import no.nav.syfo.personstatus.infrastructure.clients.azuread.AzureAdClient | ||
import no.nav.syfo.util.NAV_CALL_ID_HEADER | ||
import no.nav.syfo.util.bearerHeader | ||
import no.nav.syfo.util.callIdArgument | ||
import org.slf4j.LoggerFactory | ||
|
||
class AktivitetskravClient( | ||
private val azureAdClient: AzureAdClient, | ||
private val clientEnvironment: ClientEnvironment, | ||
) : IAktivitetskravClient { | ||
|
||
private val httpClient = httpClientDefault() | ||
|
||
override suspend fun getAktivitetskravForPersons( | ||
callId: String, | ||
token: String, | ||
personidenter: List<PersonIdent>, | ||
): GetAktivitetskravForPersonsResponseDTO? { | ||
val oboToken = azureAdClient.getOnBehalfOfToken( | ||
scopeClientId = clientEnvironment.clientId, | ||
token, | ||
)?.accessToken ?: throw RuntimeException("Failed to get OBO-token for aktivitetskrav vurdering") | ||
val requestDTO = AktivitetskravRequestDTO(personidenter.map { it.value }) | ||
return try { | ||
val response = httpClient.post("$ISAKTIVITETSKRAV_BASE_PATH/get-vurderinger") { | ||
header(HttpHeaders.Authorization, bearerHeader(oboToken)) | ||
header(NAV_CALL_ID_HEADER, callId) | ||
accept(ContentType.Application.Json) | ||
contentType(ContentType.Application.Json) | ||
setBody(requestDTO) | ||
} | ||
when (response.status) { | ||
HttpStatusCode.OK -> { | ||
response.body<GetAktivitetskravForPersonsResponseDTO>() | ||
} | ||
HttpStatusCode.NotFound -> { | ||
log.error("Resource not found") | ||
null | ||
} | ||
else -> { | ||
log.error("Unhandled status code: ${response.status}") | ||
null | ||
} | ||
} | ||
} catch (e: ClientRequestException) { | ||
handleUnexpectedResponseException(e.response, callId) | ||
throw e | ||
} catch (e: ServerResponseException) { | ||
handleUnexpectedResponseException(e.response, callId) | ||
throw e | ||
} | ||
} | ||
|
||
private fun handleUnexpectedResponseException( | ||
response: HttpResponse, | ||
callId: String, | ||
) { | ||
log.error( | ||
"Error while requesting from isaktivitetskrav with {}, {}", | ||
StructuredArguments.keyValue("statusCode", response.status.value.toString()), | ||
callIdArgument(callId) | ||
) | ||
} | ||
|
||
companion object { | ||
private const val ISAKTIVITETSKRAV_BASE_PATH = "/api/internad/v1/aktivitetskrav" | ||
private val log = LoggerFactory.getLogger(AktivitetskravClient::class.java) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.