diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTask.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTask.kt
index 0bdfeb13edd4bfc6c51bd722fbc0ebd21d0cdaf5..e9ab8acd4b9393d7fadcb47c61347a08d1ea3c2d 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTask.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTask.kt
@@ -83,8 +83,8 @@ class RiskLevelTask @Inject constructor(
             Timber.d("The current time is %s", it)
         }
 
-        if (submissionSettings.isAllowedToSubmitKeys) {
-            Timber.i("Positive test result, skip risk calculation")
+        if (submissionSettings.isAllowedToSubmitKeys && submissionSettings.hasViewedTestResult.value) {
+            Timber.i("Positive test result and user has seen it, skip risk calculation")
             return RiskLevelTaskResult(
                 calculatedAt = nowUTC,
                 failureReason = FailureReason.POSITIVE_TEST_RESULT
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskTest.kt
index 28cf7f0f7f8327649644c8b907bebe7033c87694..aa31b2ba8774a2eac7d20f7a6f51e57ea1d62e42 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskTest.kt
@@ -204,7 +204,7 @@ class RiskLevelTaskTest : BaseTest() {
     }
 
     @Test
-    fun `risk calculation is skipped if positive test is registered`() = runBlockingTest {
+    fun `risk calculation is skipped if positive test is registered and viewed`() = runBlockingTest {
         val cachedKey = mockk<CachedKey>().apply {
             every { info } returns mockk<CachedKeyInfo>().apply {
                 every { toDateTime() } returns DateTime.parse("2020-12-28").minusDays(1)
@@ -216,6 +216,7 @@ class RiskLevelTaskTest : BaseTest() {
         every { backgroundModeStatus.isAutoModeEnabled } returns flowOf(false)
         every { timeStamper.nowUTC } returns now
         every { submissionSettings.isAllowedToSubmitKeys } returns true
+        every { submissionSettings.hasViewedTestResult.value } returns true
 
         createTask().run(arguments) shouldBe RiskLevelTaskResult(
             calculatedAt = now,
@@ -223,6 +224,35 @@ class RiskLevelTaskTest : BaseTest() {
         )
     }
 
+    @Test
+    fun `risk calculation is not skipped if positive test is registered and not viewed`() = runBlockingTest {
+        val cachedKey = mockk<CachedKey>().apply {
+            every { info } returns mockk<CachedKeyInfo>().apply {
+                every { toDateTime() } returns DateTime.parse("2020-12-28").minusDays(1)
+            }
+        }
+        val now = Instant.parse("2020-12-28")
+        val aggregatedRiskResult = mockk<AggregatedRiskResult>().apply {
+            every { isIncreasedRisk() } returns true
+        }
+
+        coEvery { keyCacheRepository.getAllCachedKeys() } returns listOf(cachedKey)
+        coEvery { enfClient.exposureWindows() } returns listOf()
+        every { riskLevels.calculateRisk(any(), any()) } returns null
+        every { riskLevels.aggregateResults(any(), any()) } returns aggregatedRiskResult
+        every { timeStamper.nowUTC } returns now
+        coEvery { analyticsExposureWindowCollector.reportRiskResultsPerWindow(any()) } just Runs
+        every { submissionSettings.isAllowedToSubmitKeys } returns true
+        every { submissionSettings.hasViewedTestResult.value } returns false
+
+        createTask().run(arguments) shouldBe RiskLevelTaskResult(
+            calculatedAt = now,
+            failureReason = null,
+            aggregatedRiskResult = aggregatedRiskResult,
+            listOf()
+        )
+    }
+
     @Test
     fun `risk calculation returns aggregated risk result`() = runBlockingTest {
         val cachedKey = mockk<CachedKey>().apply {