diff --git a/.github/workflows/benchmark_suite.yml b/.github/workflows/benchmark_suite.yml
index c7828fa9e99..c4b503729af 100644
--- a/.github/workflows/benchmark_suite.yml
+++ b/.github/workflows/benchmark_suite.yml
@@ -41,6 +41,6 @@ jobs:
script: |
adb root
./gradlew --no-configuration-cache -PmanifestEndpoint=https://api-sandbox.simple.org/api/ installQaDebug installQaDebugAndroidTest lockClocks
- adb shell am instrument -w -e filter org.simple.clinic.benchmark.SelectBenchmarkTests -e benchmark_app_performance true -e dd_client_token ${{ secrets.DD_PERF_CLIENT_TOKEN }} -e dd_application_id ${{ secrets.DD_PERF_APPLICATION_ID }} org.simple.clinic.qa.debug.test/org.simple.clinic.AndroidTestJUnitRunner
+ adb shell am instrument -w -e filter org.simple.clinic.benchmark.SelectBenchmarkTests -e benchmark_app_performance true -e sentry_dsn ${{ secrets.SENTRY_DSN }} org.simple.clinic.qa.debug.test/org.simple.clinic.AndroidTestJUnitRunner
adb uninstall org.simple.clinic.qa.debug
adb uninstall org.simple.clinic.qa.debug.test
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6ea61015c61..d20be76807e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -67,6 +67,7 @@
- Bump AGP to v8.8.2
- Calculate lab-based CVD risk score
- Update copy of statin nudge to support lab-based nudge
+- Report SQL performance metrics to Sentry
### Fixes
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index d602037db47..aecedac2199 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -1,17 +1,18 @@
@file:Suppress("UnstableApiUsage")
import com.android.build.gradle.internal.tasks.databinding.DataBindingGenBaseClassesTask
+import io.sentry.android.gradle.extensions.InstrumentationFeature
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.gradle.api.tasks.testing.logging.TestLogEvent
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompileTool
import org.simple.rmg.RoomMetadataGenerator
+import java.util.EnumSet
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.parcelize)
alias(libs.plugins.sentry)
- alias(libs.plugins.datadog)
alias(libs.plugins.ksp)
alias(libs.plugins.kotlin.compose.compiler)
alias(libs.plugins.google.services)
@@ -33,7 +34,8 @@ sentry {
// We are using our own instrumentation tooling for Room queries
// Look at [ADR 013: SQL Performance Profiling (v2)]
tracingInstrumentation {
- enabled.set(false)
+ enabled = true
+ features.set(EnumSet.allOf(InstrumentationFeature::class.java) - InstrumentationFeature.DATABASE)
}
}
@@ -87,22 +89,12 @@ android {
val manifestEndpoint: String by project
val disableScreenshot: String by project
val allowRootedDevice: String by project
- val datadogServiceName: String by project
- val datadogApplicationId: String by project
- val datadogClientToken: String by project
- val datadogEnvironment: String by project
-
- addManifestPlaceholders(mapOf(
- "sentryDsn" to sentryDsn,
- "sentryEnvironment" to sentryEnvironment
- ))
+
+ buildConfigField("String", "SENTRY_DSN", "\"$sentryDsn\"")
+ buildConfigField("String", "SENTRY_ENVIRONMENT", "\"$sentryEnvironment\"")
buildConfigField("String", "MANIFEST_ENDPOINT", "\"$manifestEndpoint\"")
buildConfigField("boolean", "DISABLE_SCREENSHOT", disableScreenshot)
buildConfigField("boolean", "ALLOW_ROOTED_DEVICE", allowRootedDevice)
- buildConfigField("String", "DATADOG_SERVICE_NAME", "\"$datadogServiceName\"")
- buildConfigField("String", "DATADOG_APPLICATION_ID", "\"$datadogApplicationId\"")
- buildConfigField("String", "DATADOG_CLIENT_TOKEN", "\"$datadogClientToken\"")
- buildConfigField("String", "DATADOG_ENVIRONMENT", "\"$datadogEnvironment\"")
ksp {
arg("room.schemaLocation", "$projectDir/schemas")
@@ -482,8 +474,6 @@ dependencies {
runtimeOnly(libs.jackson.core)
- implementation(libs.datadog.sdk)
-
androidTestImplementation(libs.apache.commons.math)
}
diff --git a/app/src/androidTest/AndroidManifest.xml b/app/src/androidTest/AndroidManifest.xml
index a96b7099289..253a4e418a6 100644
--- a/app/src/androidTest/AndroidManifest.xml
+++ b/app/src/androidTest/AndroidManifest.xml
@@ -6,7 +6,7 @@
+ android:value="org.simple.clinic.benchmark.WaitForSentryToUpload" />
diff --git a/app/src/androidTest/java/org/simple/clinic/TestClinicApp.kt b/app/src/androidTest/java/org/simple/clinic/TestClinicApp.kt
index 30677ac954d..2972abb65c1 100644
--- a/app/src/androidTest/java/org/simple/clinic/TestClinicApp.kt
+++ b/app/src/androidTest/java/org/simple/clinic/TestClinicApp.kt
@@ -1,19 +1,11 @@
package org.simple.clinic
import android.app.Application
-import android.content.Context
import androidx.test.platform.app.InstrumentationRegistry
-import com.datadog.android.Datadog
-import com.datadog.android.core.configuration.Configuration
-import com.datadog.android.core.configuration.Credentials
-import com.datadog.android.core.configuration.UploadFrequency
-import com.datadog.android.privacy.TrackingConsent
-import com.datadog.android.rum.GlobalRum
-import com.datadog.android.rum.RumMonitor
-import com.datadog.android.rum.tracking.ViewTrackingStrategy
-import com.datadog.android.tracing.AndroidTracer
import com.tspoon.traceur.Traceur
-import io.opentracing.util.GlobalTracer
+import io.sentry.SentryLevel
+import io.sentry.SentryOptions
+import io.sentry.android.core.SentryAndroid
import org.simple.clinic.TestClinicApp.Companion.appComponent
import org.simple.clinic.benchmark.BackupBenchmarkDatabase
import org.simple.clinic.di.DaggerTestAppComponent
@@ -100,9 +92,8 @@ class TestClinicApp : Application() {
dataSync.syncTheWorld()
backupBenchmarkDatabase.backup()
- setupDatadog(
- clientToken = instrumentationArgs.getString("dd_client_token")!!,
- applicationId = instrumentationArgs.getString("dd_application_id")!!
+ setupSentry(
+ dsn = instrumentationArgs.getString("sentry_dsn")!!,
)
}
}
@@ -155,39 +146,20 @@ class TestClinicApp : Application() {
.build()
}
- private fun setupDatadog(
- clientToken: String,
- applicationId: String
- ) {
- val datadogConfig = Configuration
- .Builder(
- logsEnabled = true,
- tracesEnabled = true,
- crashReportsEnabled = false,
- rumEnabled = false
- )
- .useViewTrackingStrategy(NoopViewTrackingStrategy())
- .setUploadFrequency(UploadFrequency.FREQUENT)
- .build()
- val credentials = Credentials(
- clientToken = clientToken,
- envName = "test",
- variant = BuildConfig.FLAVOR,
- rumApplicationId = applicationId,
- serviceName = "simple-android-perf-regression"
- )
- Datadog.initialize(this, credentials, datadogConfig, TrackingConsent.GRANTED)
- GlobalRum.registerIfAbsent(RumMonitor.Builder().build())
- GlobalTracer.registerIfAbsent(AndroidTracer.Builder().setPartialFlushThreshold(5).build())
- }
-
- private class NoopViewTrackingStrategy : ViewTrackingStrategy {
- override fun register(context: Context) {
- // No need to track views in tests
- }
-
- override fun unregister(context: Context?) {
- // No need to track views in tests
+ private fun setupSentry(dsn: String) {
+ SentryAndroid.init(this) { options ->
+ options.dsn = dsn
+ options.environment = "test"
+ options.sampleRate = 0.0
+ options.tracesSampleRate = 1.0
+
+ options.beforeSend = SentryOptions.BeforeSendCallback { event, _ ->
+ if (event.level != SentryLevel.DEBUG) {
+ event
+ } else {
+ null
+ }
+ }
}
}
}
diff --git a/app/src/androidTest/java/org/simple/clinic/benchmark/BenchmarkTestRule.kt b/app/src/androidTest/java/org/simple/clinic/benchmark/BenchmarkTestRule.kt
index 78e402f3228..f0a29c9bb43 100644
--- a/app/src/androidTest/java/org/simple/clinic/benchmark/BenchmarkTestRule.kt
+++ b/app/src/androidTest/java/org/simple/clinic/benchmark/BenchmarkTestRule.kt
@@ -1,13 +1,16 @@
package org.simple.clinic.benchmark
import android.util.Log
-import io.opentracing.util.GlobalTracer
+import io.sentry.Sentry
+import io.sentry.SentryLongDate
+import io.sentry.SpanStatus
+import io.sentry.TransactionOptions
import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics
import org.junit.rules.TestRule
import org.junit.runner.Description
import org.junit.runners.model.Statement
import org.simple.clinic.TestClinicApp
-import java.util.concurrent.TimeUnit.MICROSECONDS
+import java.util.concurrent.TimeUnit
import java.util.concurrent.TimeUnit.MILLISECONDS
import javax.inject.Inject
@@ -65,19 +68,22 @@ class BenchmarkTestRule(
Log.i("PerfRegression", "Median benchmark for $testClass#$testMethod: ${medianTimeTaken}ms")
- val tracer = GlobalTracer.get()
- val adjustedStartTime = millisToMicros(System.currentTimeMillis() - medianTimeTaken)
- val span = tracer
- .buildSpan("test.method")
- .withTag("class", testClass)
- .withTag("method", testMethod)
- .withStartTimestamp(adjustedStartTime)
- .start()
+ val adjustedStartTime = millisToNanos(System.currentTimeMillis() - medianTimeTaken)
- span.finish(adjustedStartTime + millisToMicros(medianTimeTaken))
+ val span = Sentry.startTransaction(
+ /* name = */ "test.method",
+ /* operation = */ "$testClass/$testMethod",
+ /* transactionOptions = */ TransactionOptions().apply {
+ startTimestamp = SentryLongDate(adjustedStartTime)
+ }
+ )
+
+ span.finish(
+ SpanStatus.OK,
+ SentryLongDate(adjustedStartTime + millisToNanos(medianTimeTaken)))
}
- private fun millisToMicros(millis: Long) = MICROSECONDS.convert(millis, MILLISECONDS)
+ private fun millisToNanos(millis: Long) = TimeUnit.NANOSECONDS.convert(millis, MILLISECONDS)
}
}
}
diff --git a/app/src/androidTest/java/org/simple/clinic/benchmark/WaitForDatadogToUpload.kt b/app/src/androidTest/java/org/simple/clinic/benchmark/WaitForSentryToUpload.kt
similarity index 59%
rename from app/src/androidTest/java/org/simple/clinic/benchmark/WaitForDatadogToUpload.kt
rename to app/src/androidTest/java/org/simple/clinic/benchmark/WaitForSentryToUpload.kt
index 4873676d1ca..63f77a0a234 100644
--- a/app/src/androidTest/java/org/simple/clinic/benchmark/WaitForDatadogToUpload.kt
+++ b/app/src/androidTest/java/org/simple/clinic/benchmark/WaitForSentryToUpload.kt
@@ -3,21 +3,19 @@ package org.simple.clinic.benchmark
import android.os.Bundle
import android.util.Log
import androidx.test.internal.runner.listener.InstrumentationRunListener
-import io.opentracing.util.GlobalTracer
import org.junit.runner.Result
import org.simple.clinic.TestClinicApp
import java.io.PrintStream
import java.time.Duration
-class WaitForDatadogToUpload : InstrumentationRunListener() {
+class WaitForSentryToUpload : InstrumentationRunListener() {
override fun instrumentationRunFinished(streamResult: PrintStream?, resultBundle: Bundle?, junitResults: Result?) {
- // We don't have a way to force Datadog to upload all its traces, so we'll wait for a few seconds
- // for DD to upload, and then we'll finish it.
+ // We don't have a way to force Sentry to upload all its traces, so we'll wait for a few seconds
+ // for Sentry to upload, and then we'll finish it.
if (TestClinicApp.isInBenchmarkMode) {
- Log.i("PerfRegression", "Wait for Datadog upload")
+ Log.i("PerfRegression", "Wait for Sentry upload")
Thread.sleep(Duration.ofMinutes(1).toMillis())
- GlobalTracer.get().close()
}
}
}
diff --git a/app/src/debug/AndroidManifest.xml b/app/src/debug/AndroidManifest.xml
index c78f17c58dd..46d68f828ec 100644
--- a/app/src/debug/AndroidManifest.xml
+++ b/app/src/debug/AndroidManifest.xml
@@ -8,10 +8,6 @@
tools:ignore="GoogleAppIndexingWarning"
tools:replace="android:name,android:icon">
-
-
-
-
-
-
+ android:name="io.sentry.auto-init"
+ android:value="false" />
if (!error.canBeIgnoredSafely()) {
@@ -107,42 +100,39 @@ abstract class ClinicApp : Application(), CameraXConfig.Provider {
analyticsReporters.forEach { reporter ->
Analytics.addReporter(reporter)
}
- SqlPerformanceReporter.addSink(DatadogSqlPerformanceReportingSink())
+ SqlPerformanceReporter.addSink(SentrySqlPerformanceReportingSink())
registerActivityLifecycleCallbacks(closeActivitiesWhenUserIsUnauthorized)
}
- private fun setupApplicationPerformanceMonitoring() {
- val samplingRate = remoteConfig
- .double("datadog_sample_rate", 0.0)
- .toFloat()
- .clamp(0F, 100F)
-
- val datadogConfig = Configuration
- .Builder(
- logsEnabled = false,
- tracesEnabled = true,
- crashReportsEnabled = false,
- rumEnabled = true
- )
- .trackBackgroundRumEvents(true)
- .trackLongTasks(5000)
- .useViewTrackingStrategy(FragmentViewTrackingStrategy(
- trackArguments = false,
- supportFragmentComponentPredicate = ResolveScreenNamesForDatadog()
- ))
- .sampleRumSessions(samplingRate = samplingRate)
- .build()
- val credentials = Credentials(
- clientToken = BuildConfig.DATADOG_CLIENT_TOKEN,
- envName = BuildConfig.DATADOG_ENVIRONMENT,
- variant = BuildConfig.FLAVOR,
- rumApplicationId = BuildConfig.DATADOG_APPLICATION_ID,
- serviceName = BuildConfig.DATADOG_SERVICE_NAME
- )
- Datadog.initialize(this, credentials, datadogConfig, TrackingConsent.GRANTED)
- GlobalRum.registerIfAbsent(RumMonitor.Builder().build())
- GlobalTracer.registerIfAbsent(AndroidTracer.Builder().build())
+ private fun setupSentry() {
+ SentryAndroid.init(this) { options ->
+ options.dsn = BuildConfig.SENTRY_DSN
+ options.environment = BuildConfig.SENTRY_ENVIRONMENT
+
+ options.sampleRate = remoteConfig
+ .double("sentry_errors_sample_rate", 0.0)
+ .coerceIn(0.0, 1.0)
+ options.tracesSampleRate = remoteConfig
+ .double("sentry_traces_sample_rate", 0.0)
+ .coerceIn(0.0, 1.0)
+
+ options.beforeSend = BeforeSendCallback { event, hint ->
+ if (event.level != SentryLevel.DEBUG) {
+ event
+ } else {
+ null
+ }
+ }
+
+ options.addIntegration(
+ FragmentLifecycleIntegration(
+ application = this,
+ enableFragmentLifecycleBreadcrumbs = true,
+ enableAutoFragmentLifecycleTracing = true,
+ )
+ )
+ }
}
override fun getCameraXConfig(): CameraXConfig {
diff --git a/app/src/main/java/org/simple/clinic/analytics/ResolveScreenNamesForDatadog.kt b/app/src/main/java/org/simple/clinic/analytics/ResolveScreenNamesForDatadog.kt
deleted file mode 100644
index c2acaa24000..00000000000
--- a/app/src/main/java/org/simple/clinic/analytics/ResolveScreenNamesForDatadog.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.simple.clinic.analytics
-
-import androidx.fragment.app.Fragment
-import com.datadog.android.rum.tracking.AcceptAllSupportFragments
-import org.simple.clinic.navigation.v2.compat.ScreenFragmentCompat
-import org.simple.clinic.navigation.v2.fragments.BaseBottomSheet
-import org.simple.clinic.navigation.v2.fragments.BaseDialog
-import org.simple.clinic.navigation.v2.fragments.BaseScreen
-
-class ResolveScreenNamesForDatadog: AcceptAllSupportFragments() {
-
- override fun getViewName(component: Fragment): String? {
- return when(component) {
- is ScreenFragmentCompat -> component.screenName
- is BaseScreen<*, *, *, *, *, *> -> component.screenName
- is BaseBottomSheet<*, *, *, *, *, *> -> component.screenName
- is BaseDialog<*, *, *, *, *, *> -> component.screenName
- else -> super.getViewName(component)
- }
- }
-}
diff --git a/app/src/main/java/org/simple/clinic/plumbing/infrastructure/DatadogInfrastructure.kt b/app/src/main/java/org/simple/clinic/plumbing/infrastructure/DatadogInfrastructure.kt
deleted file mode 100644
index 200e8846177..00000000000
--- a/app/src/main/java/org/simple/clinic/plumbing/infrastructure/DatadogInfrastructure.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.simple.clinic.plumbing.infrastructure
-
-import com.datadog.android.Datadog
-import org.simple.clinic.appconfig.Country
-import org.simple.clinic.appconfig.Deployment
-import org.simple.clinic.user.User
-import javax.inject.Inject
-
-class DatadogInfrastructure @Inject constructor() : Infrastructure {
-
- override fun addDetails(user: User, country: Country, deployment: Deployment) {
- Datadog.setUserInfo(
- id = user.uuid.toString(),
- extraInfo = mapOf(
- "facilityId" to user.currentFacilityUuid.toString(),
- "countryCode" to country.isoCountryCode,
- "deployment" to deployment.endPoint.toString()
- )
- )
- }
-
- override fun clear() {
- Datadog.setUserInfo(id = null, extraInfo = emptyMap())
- }
-}
diff --git a/app/src/main/java/org/simple/clinic/plumbing/infrastructure/InfrastructureModule.kt b/app/src/main/java/org/simple/clinic/plumbing/infrastructure/InfrastructureModule.kt
index 3ac3be667d3..10b706c73ea 100644
--- a/app/src/main/java/org/simple/clinic/plumbing/infrastructure/InfrastructureModule.kt
+++ b/app/src/main/java/org/simple/clinic/plumbing/infrastructure/InfrastructureModule.kt
@@ -9,7 +9,6 @@ class InfrastructureModule {
@Provides
fun provideInfrastructure(
sentryInfrastructure: SentryInfrastructure,
- datadogInfrastructure: DatadogInfrastructure,
firebaseAnalyticsInfrastructure: FirebaseAnalyticsInfrastructure
- ) = listOf(sentryInfrastructure, datadogInfrastructure, firebaseAnalyticsInfrastructure)
+ ) = listOf(sentryInfrastructure, firebaseAnalyticsInfrastructure)
}
diff --git a/app/src/main/java/org/simple/clinic/storage/monitoring/DatadogSqlPerformanceReportingSink.kt b/app/src/main/java/org/simple/clinic/storage/monitoring/SentrySqlPerformanceReportingSink.kt
similarity index 76%
rename from app/src/main/java/org/simple/clinic/storage/monitoring/DatadogSqlPerformanceReportingSink.kt
rename to app/src/main/java/org/simple/clinic/storage/monitoring/SentrySqlPerformanceReportingSink.kt
index c1c91c97c48..af66012df04 100644
--- a/app/src/main/java/org/simple/clinic/storage/monitoring/DatadogSqlPerformanceReportingSink.kt
+++ b/app/src/main/java/org/simple/clinic/storage/monitoring/SentrySqlPerformanceReportingSink.kt
@@ -1,11 +1,12 @@
package org.simple.clinic.storage.monitoring
-import io.opentracing.Span
-import io.opentracing.util.GlobalTracer
+import io.sentry.ISpan
+import io.sentry.Sentry
+import io.sentry.TransactionOptions
import org.simple.clinic.storage.monitoring.SqlPerformanceReporter.ReportSink
import org.simple.clinic.storage.monitoring.SqlPerformanceReporter.SqlOperation
-class DatadogSqlPerformanceReportingSink : ReportSink {
+class SentrySqlPerformanceReportingSink : ReportSink {
/**
* Maintains the list of running spans for every DB call.
@@ -16,15 +17,14 @@ class DatadogSqlPerformanceReportingSink : ReportSink {
*
* Something to investigate at a later date.
**/
- private var runningSpans = emptyMap()
+ private var runningSpans = emptyMap()
override fun begin(operation: SqlOperation) {
- val tracer = GlobalTracer.get()
- val span = tracer
- .buildSpan("room.query")
- .withTag("dao", operation.daoName)
- .withTag("method", operation.methodName)
- .start()
+ val span = Sentry.startTransaction(
+ /* name = */ "room.query",
+ /* operation = */ "${operation.daoName}/${operation.methodName}"
+ )
+ span.setTag("op_thread", operation.threadName)
runningSpans = runningSpans + (operation to span)
}
diff --git a/app/src/main/java/org/simple/clinic/storage/monitoring/SqlPerformanceReporter.kt b/app/src/main/java/org/simple/clinic/storage/monitoring/SqlPerformanceReporter.kt
index 9b9aa4532b7..20547844e77 100644
--- a/app/src/main/java/org/simple/clinic/storage/monitoring/SqlPerformanceReporter.kt
+++ b/app/src/main/java/org/simple/clinic/storage/monitoring/SqlPerformanceReporter.kt
@@ -18,9 +18,10 @@ class SqlPerformanceReporter {
fun begin(
daoName: String,
startTimeMillis: Long,
- methodName: String
+ methodName: String,
+ threadName: String,
) {
- val operation = SqlOperation(daoName, startTimeMillis, methodName)
+ val operation = SqlOperation(daoName, startTimeMillis, methodName, threadName)
INSTANCE.onEachSink { it.begin(operation) }
}
@@ -29,9 +30,10 @@ class SqlPerformanceReporter {
fun end(
daoName: String,
startTimeMillis: Long,
- methodName: String
+ methodName: String,
+ threadName: String,
) {
- val operation = SqlOperation(daoName, startTimeMillis, methodName)
+ val operation = SqlOperation(daoName, startTimeMillis, methodName, threadName)
INSTANCE.onEachSink { it.end(operation) }
}
@@ -60,6 +62,7 @@ class SqlPerformanceReporter {
data class SqlOperation(
val daoName: String,
val startTimeMillis: Long,
- val methodName: String
+ val methodName: String,
+ val threadName: String,
)
}
diff --git a/app/src/main/res/values-am-rET/strings.xml b/app/src/main/res/values-am-rET/strings.xml
index 01af6897164..6b72f00b270 100644
--- a/app/src/main/res/values-am-rET/strings.xml
+++ b/app/src/main/res/values-am-rET/strings.xml
@@ -338,7 +338,6 @@
ታሪክ
ባለፈው ወር ውስጥ ህመምተኞው በማንኛውም ጊዜ የBP መድሃኒት ወስዷል? (አስፈላጊ)
በሽተኛው ባለፈው ወር ውስጥ የስኳር በሽታ መድኃኒቶችን ወስዶ ነበር? (ያስፈልጋል)
-
ምንም
ያስወግዱ
@@ -899,13 +898,27 @@
ወርሃዊ የመድሃኒት ክምችት ሪፖርት
ወርሃዊ የመድሃኒት ክምችት ሪፖርቶች
- %1$s የመድሃኒት ክምችት ሪፖርት
+ %1$s የመድሃኒት ክምችት ሪፖርት
ወርሃዊ የአቅርቦቶች ሪፖርት
ወርሃዊ የአቅርቦቶች ሪፖርቶች
%1$s የአቅርቦቶች ሪፖርት
- \"የአጠቃቀም መመሪያ \"
- የሲምፕል መተግበሪያን ከመጠቀምዎ በፊት የሚከተሉትን ውሎች በማንበብ እና በመስማማት ከስር “ይስማሙ እና ይቀጥሉ\" የሚለውን ሳጥን ይጫኑ። የሲምፕል መተግበሪያ የታካሚዎች የግል የጤና መረጃ (“ውሂብ ወይም ዳታ\") ይዟል. በምትሠሩበት የጤና ተቋም ውስጥ ከታካሚ እንክብካቤ ጋር የተያያዙ የሥራ ተግባሮችን ለማከናወን እንደ አስፈላጊነቱ የታካሚን መረጃ ማግኘት ይችላሉ፤ ነገር ግን ለሌላ ለማንኛውም ዓላማ የታካሚን ውሂብ/ዳታ መክፈት ወይም ማየት የተከለከለ ነው። መረጃን በሚስጥር መያዝ አለብዎት። መረጃን ለሌላ ሶስተኛ አካል ያለ ታካሚው እና ተቋሙ እውቅና እና ፈቃድ ማጋራት ፈጽሞ የተከለከለ ነው። የሲምፕል መተግበሪያን ለመክፈት የሚጠቀሙበትን የደህንነት ኮድ ለግልዎ ብቻ መጠቀም አለብዎት። በማይጠቀሙበት ጊዜ ወዲያውኑ ከሲምፕል መተግበሪያ መውጣት አለብዎት። ሌሎች አካላት የእርስዎን የመግቢያ ሚስጢር ኮድ ተጠቅመው ወደ ሲምፕል መተግበሪያ ወይም ዳታ እንዲገቡ መፍቀድ የተከለከለ ነው። እንደ አስፈላጊነቱ በየጊዜው የዳታ መላክን/ሲንክኖሪዛቲኦን፣ የግዴታ መዝገቦችን መያዝ እና ሌሎች ዝማኔዎችን እና ጥገናዎችን ማከናወን አለብዎት። የሲምፕል መተግበሪያ የውሂብ መዳረሻዎን መዝገብ በራስ-ሰር እንደሚፈጥር ይገባዎታል። ያልተፈቀደ መዳረሻ ወይም ሌሎች የአጠቃቀም ደንቦችን መጣስ የሲምፕል መተግበሪያ መዳረሻዎ እንዲሰረዝ ወይም ሌሎች አስተዳደራዊ እርምጃዎችን ሊያስከትል ይችላል።
- \"ይስማሙ እና ይቀጥሉ \"
-
+
+
+ \\"የአጠቃቀም መመሪያ \\"
+ የሲምፕል መተግበሪያን ከመጠቀምዎ በፊት የሚከተሉትን ውሎች በማንበብ እና በመስማማት ከስር “ይስማሙ እና ይቀጥሉ\\" የሚለውን ሳጥን ይጫኑ። የሲምፕል መተግበሪያ የታካሚዎች የግል የጤና መረጃ (“ውሂብ ወይም ዳታ\\") ይዟል. በምትሠሩበት የጤና ተቋም ውስጥ ከታካሚ እንክብካቤ ጋር የተያያዙ የሥራ ተግባሮችን ለማከናወን እንደ አስፈላጊነቱ የታካሚን መረጃ ማግኘት ይችላሉ፤ ነገር ግን ለሌላ ለማንኛውም ዓላማ የታካሚን ውሂብ/ዳታ መክፈት ወይም ማየት የተከለከለ ነው። መረጃን በሚስጥር መያዝ አለብዎት። መረጃን ለሌላ ሶስተኛ አካል ያለ ታካሚው እና ተቋሙ እውቅና እና ፈቃድ ማጋራት ፈጽሞ የተከለከለ ነው። የሲምፕል መተግበሪያን ለመክፈት የሚጠቀሙበትን የደህንነት ኮድ ለግልዎ ብቻ መጠቀም አለብዎት። በማይጠቀሙበት ጊዜ ወዲያውኑ ከሲምፕል መተግበሪያ መውጣት አለብዎት። ሌሎች አካላት የእርስዎን የመግቢያ ሚስጢር ኮድ ተጠቅመው ወደ ሲምፕል መተግበሪያ ወይም ዳታ እንዲገቡ መፍቀድ የተከለከለ ነው። እንደ አስፈላጊነቱ በየጊዜው የዳታ መላክን/ሲንክኖሪዛቲኦን፣ የግዴታ መዝገቦችን መያዝ እና ሌሎች ዝማኔዎችን እና ጥገናዎችን ማከናወን አለብዎት። የሲምፕል መተግበሪያ የውሂብ መዳረሻዎን መዝገብ በራስ-ሰር እንደሚፈጥር ይገባዎታል። ያልተፈቀደ መዳረሻ ወይም ሌሎች የአጠቃቀም ደንቦችን መጣስ የሲምፕል መተግበሪያ መዳረሻዎ እንዲሰረዝ ወይም ሌሎች አስተዳደራዊ እርምጃዎችን ሊያስከትል ይችላል።
+ \\"ይስማሙ እና ይቀጥሉ \\"
+
+ ለውጥ
+
+ አሁን አይሆንም
+
+ አሁን አይሆንም
+
+ ዳታ ቤዝ ጥገና በሂደት ላይ ነው፤ ይህ አንድ ደቂቃ ብቻ ይወስዳል።
+
+ ተጠናቅቋል
+ ይቅር
+
+
diff --git a/app/src/main/res/values-bn-rBD/strings.xml b/app/src/main/res/values-bn-rBD/strings.xml
index 623938d75c6..c87717de1d3 100644
--- a/app/src/main/res/values-bn-rBD/strings.xml
+++ b/app/src/main/res/values-bn-rBD/strings.xml
@@ -338,7 +338,6 @@
ইতিহাস
গত মাসে রোগী কি কোনও সময় বিপি-র ওষুধ খেয়েছিলেন? (আবশ্যিক)
গত মাসে রোগী কি কোনও সময় ডায়াবেটিসের ওষুধ খেয়েছিলেন? (আবশ্যিক)
-
কোনটিই নয়
অপসারণ করুন
@@ -928,6 +927,7 @@
আরও নির্ভুল ঝুঁকি স্কোরের জন্য ধূমপানের অবস্থা যোগ করুন।
আরও নির্ভুল ঝুঁকি স্কোরের জন্য বিএমআই যোগ করুন।
আরও নির্ভুল ঝুঁকি স্কোরের জন্য ধূমপানের অবস্থা এবং বিএমআই যোগ করুন।
+ ডাটাবেস রক্ষণাবেক্ষণ প্রগতিতে রয়েছে। এটি সম্পন্ন হতে এক মিনিট সময় নেবে।
বিএমআই
@@ -941,4 +941,5 @@
না, ধূমপায়ী নন
সম্পন্ন
বাতিল করুন
+
diff --git a/app/src/main/res/values-bn-rIN/strings.xml b/app/src/main/res/values-bn-rIN/strings.xml
index 9271b5920f6..8835089dfbe 100644
--- a/app/src/main/res/values-bn-rIN/strings.xml
+++ b/app/src/main/res/values-bn-rIN/strings.xml
@@ -338,7 +338,6 @@
ইতিহাস
গত মাসে রোগী কি কোনও সময় বিপি-র ওষুধ খেয়েছিলেন? (আবশ্যিক)
গত মাসে রোগী কি কোনও সময় ডায়াবেটিসের ওষুধ খেয়েছিলেন? (আবশ্যিক)
-
কিছুই না
অপসারণ করুন
@@ -897,10 +896,23 @@
মাসিক ওষুধের স্টক রিপোর্ট
মাসিক ওষুধের স্টক রিপোর্ট
- %1$s ওষুধের স্টক রিপোর্ট
+ %1$s ওষুধের স্টক রিপোর্ট
মাসিক সাপ্লাইয়ের রিপোর্ট
মাসিক সাপ্লাইয়ের রিপোর্ট
%1$s সাপ্লাইয়ের রিপোর্ট
-
+
+ बदला
+
+ आता नाही
+
+ आता नाही
+
+ রোগী ঝুঁকিতে আছেন
+ डेटाबेस व्यवस्थापन प्रगतीत आहे. यास फक्त मिनिट लागेल.
+
+ पूर्ण झाले
+ रद्द करा
+
+
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index e670a0fb9bf..2432e006558 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -65,7 +65,7 @@
Estado
Región
Número de casa, Nombre de calle
- Provincia y area
+ Provincia y área
Siguiente
Ingrese el nombre completo del paciente
Elija el género del paciente
@@ -85,7 +85,7 @@
Recordatorios por SMS
La edad no puede ser más de 120
La edad no puede ser 0
- Pueblo / Area
+ Pueblo / Área
Provincia
Guardar
diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml
index 8189b2d5951..9b175cb95bb 100644
--- a/app/src/main/res/values-hi-rIN/strings.xml
+++ b/app/src/main/res/values-hi-rIN/strings.xml
@@ -338,7 +338,6 @@
इतिहास
क्या रोगी ने पिछले महीने में कभी भी बीपी की दवाएं ली हैं? (आवश्यक है)
क्या रोगी ने पिछले महीने में कभी भी मधुमेह की दवाएं ली हैं? (आवश्यक है)
-
कोई नहीं
हटाएं
@@ -898,13 +897,27 @@
मासिक ड्रग स्टॉक रिपोर्ट
मासिक ड्रग स्टॉक रिपोर्ट
- %1$s ड्रग स्टॉक रिपोर्ट
+ %1$s ड्रग स्टॉक रिपोर्ट
मासिक आपूर्ति रिपोर्ट
मासिक आपूर्ति रिपोर्ट
%1$s आपूर्ति रिपोर्ट
+
+
उपयोग की शर्तें
सिंपल ऐप का उपयोग करने से पहले आपको \"स्वीकार करें और आगे बढ़े\" पर क्लिक करके निम्नलिखित शर्तों को पढ़ना और उनसे सहमत होना होगा। सिंपल ऐप में मरीजों की निजी स्वास्थ्य जानकारी (\"डेटा\") शामिल है। जिस स्वास्थ्य सुविधा में आप काम करते हैं, आप केवल उस के भीतर मरीजों की देखभाल से संबंधित अपने कार्य को पूरा करने के लिए आवश्यक डेटा को देख और उसका उपयोग कर सकते हैं, किसी अन्य उद्देश्य के लिए डेटा देखना और उपयोग करना प्रतिबंधित है। आपको डेटा गोपनीय रखना होगा. दूसरों के साथ डेटा साझा करना प्रतिबंधित है। आपको सिंपल ऐप को चलाने के लिए उपयोग किए जाने वाले अपने सुरक्षा कोड को निजी रखना होगा। उपयोग में न होने पर आपको सिंपल ऐप से तुरंत लॉग आउट करना होगा। सिंपल ऐप या डेटा तक पहुंचने के लिए दूसरों को अपने सुरक्षा कोड का उपयोग करने की अनुमति देना प्रतिबंधित है। आपको समय-समय पर सिंपल ऐप में डेटा को समन्वयन \"सिंक\", अनिवार्य जानकारी दर्ज करना, और आवश्यकतानुसार अन्य रखरखाव करना होगा। सिंपल ऐप में आपके द्वारा किये जाने वाले काम का सिंपल ऐप अपने आप से एक रिकॉर्ड भी बनाता है । अनुमति के बिना या उपयोग की शर्तों के उल्लंघनों के परिणामस्वरूप आपका सिंपल ऐप को उपयोग करना रद्द किया जा सकता है या अन्य अनुशासनात्मक कार्रवाई भी की जा सकती है
\"स्वीकार करें और आगे बढ़े \"
-
+
+ बदलें
+
+ अभी नहीं
+
+ अभी नहीं
+
+ डेटाबेस रखरखाव प्रगति में है। इसमें सिर्फ़ एक मिनट लगेगा।
+
+ पूरा हुआ
+ रद्द करें
+
+
diff --git a/app/src/main/res/values-kn-rIN/strings.xml b/app/src/main/res/values-kn-rIN/strings.xml
index 36052030e93..77cb7f06e53 100644
--- a/app/src/main/res/values-kn-rIN/strings.xml
+++ b/app/src/main/res/values-kn-rIN/strings.xml
@@ -338,7 +338,6 @@
ಇತಿಹಾಸ
ಕಳೆದ ತಿಂಗಳು ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ರೋಗಿಯು ಬಿಪಿ ಔಷಧಿಗಳನ್ನು ತೆಗೆದುಕೊಂಡಿದ್ದಾರೆಯೇ? (ಅಗತ್ಯವಿದೆ)
ಕಳೆದ ತಿಂಗಳು ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ರೋಗಿಯು ಡಯಾಬಿಟಿಸ್ ಔಷಧಿಗಳನ್ನು ತೆಗೆದುಕೊಂಡಿದ್ದಾರೆಯೇ? (ಅಗತ್ಯವಿದೆ)
-
ಯಾವುದೂ ಅಲ್ಲ
ತೆಗೆದುಹಾಕಿ
@@ -897,10 +896,22 @@
ಮಾಸಿಕ ಔಷಧ ದಾಸ್ತಾನು ವರದಿ
ಮಾಸಿಕ ಔಷಧ ದಾಸ್ತಾನು ವರದಿಗಳು
- %1$s ಔಷಧ ದಾಸ್ತಾನು ವರದಿ
+ %1$s ಔಷಧ ದಾಸ್ತಾನು ವರದಿ
ಮಾಸಿಕ ಪೂರೈಕೆಗಳ ವರದಿ
ಮಾಸಿಕ ಪೂರೈಕೆಗಳ ವರದಿಗಳು
%1$s ಪೂರೈಕೆಗಳ ವರದಿ
-
+
+ ಬದಲಾಯಿಸಿ
+
+ ಈಗ ಬೇಡ
+
+ ಈಗ ಬೇಡ
+
+ ಡೇಟಾಬೇಸ್ ನಿರ್ವಹಣೆಯು ಪ್ರಗತಿಯಲ್ಲಿದೆ. ಇದಕ್ಕೆ ಕೇವಲ ಒಂದು ನಿಮಿಷ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ.
+
+ ಪೂರ್ಣಗೊಳಿಸಲಾಗಿದೆ
+ ರದ್ದುಮಾಡಿ
+
+
diff --git a/app/src/main/res/values-om-rET/strings.xml b/app/src/main/res/values-om-rET/strings.xml
index 1993233ac66..f8db0bd2fc6 100644
--- a/app/src/main/res/values-om-rET/strings.xml
+++ b/app/src/main/res/values-om-rET/strings.xml
@@ -339,7 +339,6 @@
Seenaa
Dhukubsataan ji\'a darbe yeroo ta\'e keessa dawaa BP fudhateeraa? (Barbaadamaa)
Ji\'a darbe keessa dhukkubsatichi dawaawwan sukkaaraa fudhatee jiraa? (Barbaadama)
-
Hin jiru
Balleessi
@@ -900,13 +899,27 @@ Appilikeeshinii Simple keessan Google PlayStore irraa haaromsadhaa.
Gabaasa kuusaa qorichaa kan ji’aa
Gabaasa kuusaa qorichaa kan ji’aa
- %1$s gabaasa kuusaa qorichaa kan ji’aa
+ %1$s gabaasa kuusaa qorichaa kan ji’aa
Gabaasa dhiheessiiwwan ji’aa
Gabaasa dhiheessiiwwan ji’aa
%1$s Gabaasa dhiheessiiwwan ji’aa
+
+
Dambii Itti Fayyadamaa
- Simple app tti fayyadamuun dura dambiiwwan armaan gadii dubbisuu fi irratti walii galuuf \"AGREE AND CONTINUE\" cuqaasuu qabdu. Simple app odeeffannoowwan dhukkubsattootaa (data) of keessaa qaba. Ragawwaan kunuunsa dhukkubsattoota dhaabbata fayyaa isin kessatti hojjataniif barbaachisan qofa argachuu maltu. Ragaa dhukkubsattootaa dhimma biraatiif ilaaluun dhorkaadha. Ragaa argitan iccitiin eeguu qabdu. Ragaa kana qaamolee biroof qooduun dhorkaadha. Koodii (security code) siple app seenuuf fayyadamtan iccitiin kaa\'uu qabdu. Yeroo simple app hin fayyadamnetti keessaa bahuu (log out) qabdu. Namni biraa koodii keessaniin simple app seenee akka fayyadamu gochuun dhorkaadha. Yeroo yerootti ragaa \'sync\' gochuu, ragaawwan barbaachisoo guutuu fi haaromsawwan biroo raawwachuun barbaachisaadha. Simple app yeroo seentan ofuma isaatiin seenuu keessan kan galmeessu ta\'uu baruu qabdu. Dambiiwwan kana hojiirra oolchuu dhabuun simple app irraa dhorkamuu yookiin tarkaafiiwwan biroo geessisuu danda\'a.
+ Simple app tti fayyadamuun dura dambiiwwan armaan gadii dubbisuu fi irratti walii galuuf \"AGREE AND CONTINUE\" cuqaasuu qabdu. Simple app odeeffannoowwan dhukkubsattootaa (data) of keessaa qaba. Ragawwaan kunuunsa dhukkubsattoota dhaabbata fayyaa isin kessatti hojjataniif barbaachisan qofa argachuu maltu. Ragaa dhukkubsattootaa dhimma biraatiif ilaaluun dhorkaadha. Ragaa argitan iccitiin eeguu qabdu. Ragaa kana qaamolee biroof qooduun dhorkaadha. Koodii (security code) siple app seenuuf fayyadamtan iccitiin kaa\'uu qabdu. Yeroo simple app hin fayyadamnetti keessaa bahuu (log out) qabdu. Namni biraa koodii keessaniin simple app seenee akka fayyadamu gochuun dhorkaadha. Yeroo yerootti ragaa \'sync\' gochuu, ragaawwan barbaachisoo guutuu fi haaromsawwan biroo raawwachuun barbaachisaadha. Simple app yeroo seentan ofuma isaatiin seenuu keessan kan galmeessu ta\'uu baruu qabdu. Dambiiwwan kana hojiirra oolchuu dhabuun simple app irraa dhorkamuu yookiin tarkaafiiwwan biroo geessisuu danda\'a.
\"Waliigalii itti fufi \"
-
+
+ Jijjiiri
+
+ Amma miti
+
+ Amma miti
+
+ Suphaan daataa guddachaa jira. Kini daqiiqaa qofa fuadhata
+
+ Taasifameera
+ Adda kuti
+
+
diff --git a/app/src/main/res/values-si-rLK/strings.xml b/app/src/main/res/values-si-rLK/strings.xml
index 143d5c0ff18..33d6c93f799 100644
--- a/app/src/main/res/values-si-rLK/strings.xml
+++ b/app/src/main/res/values-si-rLK/strings.xml
@@ -876,14 +876,14 @@
දැන් නොවේ
- %1$s වාර්තාව
+ %1$s වාර්තාව
භාර දෙන්න
සම්පූර්ණයි!
අවසන්
- භාර දෙනු ලැබිණි %1$s
+ භාර දෙනු ලැබිණි %1$s
වාර්තාව භාර දෙන්න
භාර දෙනු ලැබිණි
- %1$s වාර්තාව භාර දෙනු ලැබිණි
+ %1$s වාර්තාව භාර දෙනු ලැබිණි
සුරැකුම් නොකළ වෙනස්කම්
සුරැකුම් නොකළ වෙනස්කම් අහිමි වෙනු ඇත.\nඔබට පිට වීමට අවශ්ය බව විශ්වාසද?
මෙම පිටුවේ රැඳී සිටින්න
@@ -892,7 +892,7 @@
මාසික පරීක්ෂණ වාර්තා
මාසික පරීක්ෂණ වාර්තා
- %1$s පරීක්ෂණ වාර්තාව
+ %1$s පරීක්ෂණ වාර්තාව
මාසික ඖෂධ තොග වාර්තාව
@@ -904,14 +904,16 @@
මාසික සැපයුම් වාර්තා
%1$s සැපයුම් වාර්තාවක්
+
+ \"භාවිතය පිළිබද උපදෙස් \"
+ මෙම \'\'Simple’’මෘදුකාංගය භාවිතයට පෙර ඔබ පහත තොරතුරු කියවා,අවබෝධ කරගෙන,\'\'කැමැත්ත ලබාදෙමි\'\'යන්න තෝරා ගැනීමෙන් එකග විය යුතුය. - Simple මෘදුකාංගයේ රෝගීන්ගේ පුද්ගලික තොරතුරු (\'\'දත්ත\'\') අඩංගු වේ. - ඔබට ප්රවේශ විය හැක්කේ ඔබ සේවය කරන සෞඛ්ය සේවා ආයතනය තුල රෝගී සත්කාර සේවා සදහා අත්යවශ්යය, ඔබේ රාජකාරි කටයුතු ඉටුකිරීමට අවශ්යය වන දත්ත සදහා පමණි.වෙනත් අරමුණු සදහා දත්ත වෙත ප්රවේශවීම සපුරා තහනම් වේ. - ඔබ දත්ත වල රහස්යයභාවය ආරක්ෂා කල යුතුය. අන් අය සමග දත්ත හුවමාරු කිරීම කිසිවිටකත් සිදුකිරීම තහනම් වේ. - Simple මෘදුකාංගය වෙත ප්රවේශ වීමට භාවිතා කරන මුරපද, ආරක්ෂක කේත පෞද්ගලිකව තබාගත යුතු අතර අන් අයට මෙම මෘදුකාංගය වෙත ප්රවේශය සදහා ලබාදීම තහනම් ක්රියාවක් වේ. මෙම මෘදුකාංගය භාවිතා නොකරන විට මෘදුකාංගයෙන් ඉවත්විය යුතුය. - ඔබ වරින්වර, දත්ත සමමුර්ත කිරීම හා අවශ්යය පරිදි යාවත්කාලීන කිරීම, නඩත්තු කිරීම සිදුකල යුතුය. - Simple මෘදුකාංගය ඔබ දත්ත වෙත ප්රවේශවීම හා ඔබ කරනා කටයුතු පිළිබද වාර්තාවක් ස්වයoක්රීයව නිර්මාණය කරයි. අනවසර ප්රවේශවීම්,මෙම උපදෙස් උල්ලංගණය කිරීම් හමුවේ මෙම මෘදුකාංගය වෙත ප්රවේශවීම අවලංගු කිරීමට හෝ වෙනත් විනයානුකූල පියවර සදහා හේතුවිය හැක.
+ එකඟ වී ඉදිරියට යන්න
+
වෙනස් කරන්න
දැන් නොවේ
දැන් නොවේ
- \"භාවිතය පිළිබද උපදෙස් \"
- මෙම \'\'Simple’’මෘදුකාංගය භාවිතයට පෙර ඔබ පහත තොරතුරු කියවා,අවබෝධ කරගෙන,\'\'කැමැත්ත ලබාදෙමි\'\'යන්න තෝරා ගැනීමෙන් එකග විය යුතුය. - Simple මෘදුකාංගයේ රෝගීන්ගේ පුද්ගලික තොරතුරු (\'\'දත්ත\'\') අඩංගු වේ. - ඔබට ප්රවේශ විය හැක්කේ ඔබ සේවය කරන සෞඛ්ය සේවා ආයතනය තුල රෝගී සත්කාර සේවා සදහා අත්යවශ්යය, ඔබේ රාජකාරි කටයුතු ඉටුකිරීමට අවශ්යය වන දත්ත සදහා පමණි.වෙනත් අරමුණු සදහා දත්ත වෙත ප්රවේශවීම සපුරා තහනම් වේ. - ඔබ දත්ත වල රහස්යයභාවය ආරක්ෂා කල යුතුය. අන් අය සමග දත්ත හුවමාරු කිරීම කිසිවිටකත් සිදුකිරීම තහනම් වේ. - Simple මෘදුකාංගය වෙත ප්රවේශ වීමට භාවිතා කරන මුරපද, ආරක්ෂක කේත පෞද්ගලිකව තබාගත යුතු අතර අන් අයට මෙම මෘදුකාංගය වෙත ප්රවේශය සදහා ලබාදීම තහනම් ක්රියාවක් වේ. මෙම මෘදුකාංගය භාවිතා නොකරන විට මෘදුකාංගයෙන් ඉවත්විය යුතුය. - ඔබ වරින්වර, දත්ත සමමුර්ත කිරීම හා අවශ්යය පරිදි යාවත්කාලීන කිරීම, නඩත්තු කිරීම සිදුකල යුතුය. - Simple මෘදුකාංගය ඔබ දත්ත වෙත ප්රවේශවීම හා ඔබ කරනා කටයුතු පිළිබද වාර්තාවක් ස්වයoක්රීයව නිර්මාණය කරයි. අනවසර ප්රවේශවීම්,මෙම උපදෙස් උල්ලංගණය කිරීම් හමුවේ මෙම මෘදුකාංගය වෙත ප්රවේශවීම අවලංගු කිරීමට හෝ වෙනත් විනයානුකූල පියවර සදහා හේතුවිය හැක.
- එකඟ වී ඉදිරියට යන්න
අවධානමක් සහිත රෝගීන් %s
@@ -931,15 +933,14 @@
වඩාත් නිවැරදි අවදානම් මට්ටමක් සඳහා කොලෙස්ටරෝල් අගය එකතු කරන්න
වඩාත් නිවැරදි අවදානම් මට්ටම්ක් සඳහා දුම්පානය තත්ත්වය සහ කොලෙස්ටරෝල් අගය එකතු කරන්න
+ දත්ත සංචිතය නඩත්තුවකට ලක්වෙමින් පවතී. මේ සඳහා විනාඩි කිහිපයක් ගත වේ.
+
බීඑම්අයි (BMI)
උස (සෙ.මී.)
බර (කි.ග්රෑ.)
බීඑම්අයි: %s
-
- දත්ත සංචිතය නඩත්තුවකට ලක්වෙමින් පවතී. මේ සඳහා විනාඩි කිහිපයක් ගත වේ.
-
රෝගියා දුම්පානය කරන්නෙක්ද?
ඔව්, දුම්පානය කරන්නෙක්
@@ -947,4 +948,8 @@
අවසන්
අවලංගු කරන්න
+
+ කොලෙස්ටරෝල් මට්ටම (mg/dL)
+ කොලෙස්ටරෝල් මට්ටම 1000ට වඩා වැඩි විය නොහැක
+ කොලෙස්ටරෝල් මට්ටම 25ට වඩා අඩු විය නොහැක
diff --git a/app/src/main/res/values-sid-rET/strings.xml b/app/src/main/res/values-sid-rET/strings.xml
index e1fbf3473fb..05b934025e9 100644
--- a/app/src/main/res/values-sid-rET/strings.xml
+++ b/app/src/main/res/values-sid-rET/strings.xml
@@ -338,7 +338,6 @@
Xagge
Xissantinoti sai agani giddo BP xagicho adhinoni? (Hasiisannoho)
Sa\'i aganira xisamanchu sukarete xagicho adhino? (Hasisiro)
-
Foqa
Kayisi
@@ -897,10 +896,22 @@
Aganu xagichu kuuso ripoorte
Aganu xagichu kuuso ripoortubba
- 1%1$s Xagichu duuno
+ 1%1$s Xagichu duuno
Aganu irkote ripoorte
Aganu irkubbate ripoorte
1%1$s Irkubbate ripoorte
-
+
+ Soori
+
+ Di’xaa
+
+ Di’xaa
+
+ Database maintenance in progress. Tini shima bixilisa adhitano
+
+ Gofino
+ Hoola
+
+
diff --git a/app/src/main/res/values-so-rET/strings.xml b/app/src/main/res/values-so-rET/strings.xml
index c8aaa603904..f7ac70260c3 100644
--- a/app/src/main/res/values-so-rET/strings.xml
+++ b/app/src/main/res/values-so-rET/strings.xml
@@ -338,7 +338,6 @@
Taariikh
Miyuu bukaanku qaatay dawooyinka BP wakhti kasta gudaha bishii la soo dhaafay? (Loo baahday)
Miyuu qofku qaatay dawooyinka cudurka sonkorta wakhti kasta bishii la soo dhaafay? (Loo baahan yahay)
-
Midna
Saar
@@ -899,13 +898,27 @@
Warbixinta alaabta dawada la hayo ee bilaha ah
Warbixinaha alaabta dawada la hayo ee bilaha ah
- %1$swarbixinta alaabta dawada la hayo
+ %1$swarbixinta alaabta dawada la hayo
Warbixinta saadka bilaha ah
Warbixinaha saadka bilaha ah
%1$s warbixinta saadka
- Shuruudaha isticmaalka
- Kahor intaadan isticmaalin app-ka Simple, waa inaad akhridaa oo ogolaataa shuruudaha soo socda adiga oo gujinaya \"Oggol oo sii wad\" ee xagga hoose. SimpleApp-ku waxa uu ka kooban yahay macluumaadka caafimaadka gaarka ah ee bukaanka (\"xogta\"). Waxa kaliya oo aad heli kartaa xogta kolba sida loogu baahdo si aad u gudato waajibaadkaaga shaqo ee la xidhiidha daryeelka bukaanka gudaha xarunta caafimaadka ee aad ka shaqayso. Galitaanka ama daalacashada xogta ee ujeeddo kale waa mamnuuc. Waa in aad xogta ilaaliso. La wadaaga xogta dadka kale waa mamnuuc. Waa inaad ilaaliso nambar-sireedka aad isticmaasho si aad u gasho SimpleApp-ka. Waa inaad isla markiiba ka baxdaa SimpleApp-ka marka aanad isticmaalayn. Oggolaanshaha shaqsi kale inay isticmaalaan aqoonsiga gelitaankaaga si ay u galaan Simple-app ka ama xogta waa mamnuuc. Waa inaad samaysaa cusboonaysiin wakhtiyeed xogta ah, qorista diiwaannada khasabka ah, iyo dayactirada kale ee loo baahan yahay. Waa inaad ogaataa in SimpleApp-ku uu si toos ah u abuurayo diiwaanka gelitaankaaga Xogta. Gelitaanka aan la ogolayn ama xadgudubyada kale ee Shuruudaha Isticmaalku waxay keeni kartaa in gelitaankaagii SimpleAppka la buriyo ama tallaabooyin kale oo anshax marin ah.
+
+
+ Shuruudaha isticmaalka
+ Kahor intaadan isticmaalin app-ka Simple, waa inaad akhridaa oo ogolaataa shuruudaha soo socda adiga oo gujinaya \\"Oggol oo sii wad\\" ee xagga hoose. SimpleApp-ku waxa uu ka kooban yahay macluumaadka caafimaadka gaarka ah ee bukaanka (\\"xogta\\"). Waxa kaliya oo aad heli kartaa xogta kolba sida loogu baahdo si aad u gudato waajibaadkaaga shaqo ee la xidhiidha daryeelka bukaanka gudaha xarunta caafimaadka ee aad ka shaqayso. Galitaanka ama daalacashada xogta ee ujeeddo kale waa mamnuuc. Waa in aad xogta ilaaliso. La wadaaga xogta dadka kale waa mamnuuc. Waa inaad ilaaliso nambar-sireedka aad isticmaasho si aad u gasho SimpleApp-ka. Waa inaad isla markiiba ka baxdaa SimpleApp-ka marka aanad isticmaalayn. Oggolaanshaha shaqsi kale inay isticmaalaan aqoonsiga gelitaankaaga si ay u galaan Simple-app ka ama xogta waa mamnuuc. Waa inaad samaysaa cusboonaysiin wakhtiyeed xogta ah, qorista diiwaannada khasabka ah, iyo dayactirada kale ee loo baahan yahay. Waa inaad ogaataa in SimpleApp-ku uu si toos ah u abuurayo diiwaanka gelitaankaaga Xogta. Gelitaanka aan la ogolayn ama xadgudubyada kale ee Shuruudaha Isticmaalku waxay keeni kartaa in gelitaankaagii SimpleAppka la buriyo ama tallaabooyin kale oo anshax marin ah.
HESHIIS OO SII SOCO
-
+
+ Baddel
+
+ Hadda ma aha
+
+ Hadda ma aha
+
+ Dayactirka keydka macluumaadka ayaa socda. Tani waxay qaadan doontaa oo kaliya daqiiqad.
+
+ La dhameeyay
+ Baaji
+
+
diff --git a/app/src/main/res/values-ta-rIN/strings.xml b/app/src/main/res/values-ta-rIN/strings.xml
index 619ef721a72..000811dfb06 100644
--- a/app/src/main/res/values-ta-rIN/strings.xml
+++ b/app/src/main/res/values-ta-rIN/strings.xml
@@ -891,7 +891,7 @@
மாதாந்திரத் தகுதிச்சோதனை அறிக்கை
மாதாந்தரத் தகுதிச்சோதனை அறிக்கைகள்
- %1$s தகுதிச்சோதனை அறிக்கை
+ %1$s தகுதிச்சோதனை அறிக்கை
மாதாந்திர மருந்து இருப்பு அறிக்கை
@@ -920,4 +920,8 @@
முடிந்தது
ரத்து செய்யவும்
+
+ கொலஸ்ட்ரால்(mg/dl)
+ கொலஸ்ட்ரால் 1000 க்கு மேல் இருக்கக்கூடாது.
+ கொலஸ்ட்ரால் 25 க்கு குறைவாக இருக்கக்கூடாது
diff --git a/app/src/main/res/values-te-rIN/strings.xml b/app/src/main/res/values-te-rIN/strings.xml
index 6b1e2b6d281..26c3f7b6fef 100644
--- a/app/src/main/res/values-te-rIN/strings.xml
+++ b/app/src/main/res/values-te-rIN/strings.xml
@@ -338,7 +338,6 @@
చరిత్ర
గత నెలలో రోగి ఎప్పుడైనా బిపి మందులు తీసుకున్నారా? (అవసరం)
గత నెలలో రోగి ఎప్పుడైనా మధుమేహం మందులు తీసుకున్నారా? (అవసరం)
-
ఏదీ కాదు
తీసివేయి
@@ -897,10 +896,22 @@
నెలవారీ ఔషధాల స్టాక్ రిపోర్టు
నెలవారీ ఔషధాల స్టాక్ రిపోర్టులు
- %1$s ఔషధాల స్టాక్ రిపోర్టు
+ %1$s ఔషధాల స్టాక్ రిపోర్టు
నెలవారీ సరఫరాల రిపోర్టు
నెలవారీ సరఫరాల రిపోర్టులు
%1$s సరఫరాల రిపోర్టు
-
+
+ మార్చు
+
+ ఇప్పుడు కాదు
+
+ ఇప్పుడు కాదు
+
+ డేటా నిర్వహణ జరుగుతోంది. నిమిషంలో అయిపోతుంది.
+
+ పూర్తయింది
+ రద్దు చేయి
+
+
diff --git a/app/src/main/res/values-ti-rET/strings.xml b/app/src/main/res/values-ti-rET/strings.xml
index 8dc1b5fe7db..66eb05d4f14 100644
--- a/app/src/main/res/values-ti-rET/strings.xml
+++ b/app/src/main/res/values-ti-rET/strings.xml
@@ -338,7 +338,6 @@
ታሪኽ
እቲ ሕሙም ኣብ ዝሓለፈ ወርሒ መድሃኒት ቢፒ ወሲዱ ዶ?(ዝድለ)
እቲ ሕሙም ኣብ ዝሓለፈ ወርሒ ኣብ ዝኾነ ይኹን እዋን ናይ ሽኮርያ መድሓኒት ወሲዱ ኔሩ ድዩ? (ኣገዳሲ)
-
ዋላ ሓደ የለን
ምልጋስ
@@ -898,10 +897,22 @@
ወርሓዊ ጸብጻብ መኽዘን መድሓኒት
ወርሓዊ ጸብጻባት መኽዘን መድሓኒት
- %1$sታት ጸብጻብ መኽዘን መድሓኒት
+ %1$sታት ጸብጻብ መኽዘን መድሓኒት
ወርሓዊ ጸብጻብ ቀረባት
ወርሓዊ ጸብጻባት ቀረባት
%1$sታት ጸብጻብ ቀረባት
-
+
+ ለውጢ
+
+ ሕዚ ኣይኮነን
+
+ ሕዚ ኣይኮነን
+
+ ምትዕርራይ ናይ ዳታ ቤዝ ኣብ መስርሕ ኣሎ እዚ ሓደ ደቐቕ ጥራይ’ዩ ዝወስድ
+
+ ተሰሪሑ
+ ሰርዝ
+
+
diff --git a/app/src/release/java/org/simple/clinic/di/network/HttpInterceptorsModule.kt b/app/src/release/java/org/simple/clinic/di/network/HttpInterceptorsModule.kt
index 37efb6286d7..1d4fa2408cc 100644
--- a/app/src/release/java/org/simple/clinic/di/network/HttpInterceptorsModule.kt
+++ b/app/src/release/java/org/simple/clinic/di/network/HttpInterceptorsModule.kt
@@ -1,8 +1,8 @@
package org.simple.clinic.di.network
-import com.datadog.android.DatadogInterceptor
import dagger.Module
import dagger.Provides
+import io.sentry.okhttp.SentryOkHttpInterceptor
import okhttp3.Interceptor
import org.simple.clinic.analytics.NetworkAnalyticsInterceptor
import org.simple.clinic.user.LoggedInUserHttpInterceptor
@@ -18,7 +18,7 @@ class HttpInterceptorsModule {
compressRequestInterceptor: CompressRequestInterceptor
): List {
return listOf(
- DatadogInterceptor(),
+ SentryOkHttpInterceptor(),
loggedInInterceptor,
appInfoHttpInterceptor,
compressRequestInterceptor,
diff --git a/build.gradle.kts b/build.gradle.kts
index e5aee9ca6bd..b13ef7c9ad4 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -10,7 +10,6 @@ plugins {
alias(libs.plugins.ksp) apply false
alias(libs.plugins.google.services) apply false
alias(libs.plugins.sentry) apply false
- alias(libs.plugins.datadog) apply false
}
buildscript {
diff --git a/buildTooling/room-metadata-generator-2.0.1.jar b/buildTooling/room-metadata-generator-2.1.0.jar
similarity index 95%
rename from buildTooling/room-metadata-generator-2.0.1.jar
rename to buildTooling/room-metadata-generator-2.1.0.jar
index 6bfcdb9f704..9c3e33ff8f3 100644
Binary files a/buildTooling/room-metadata-generator-2.0.1.jar and b/buildTooling/room-metadata-generator-2.1.0.jar differ
diff --git a/gradle.properties b/gradle.properties
index 4e5188547e6..7e234bdf671 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -45,10 +45,5 @@ sentryUploadProguard=true
# App behaviour
disableScreenshot=false
allowRootedDevice=true
-# Datadog config
-datadogApplicationId=do_not_change_here
-datadogClientToken=do_not_change_here
-datadogEnvironment=qa
-datadogServiceName=simple-android
maestroTests=false
org.gradle.unsafe.configuration-cache=true
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 01fe5e5fda2..060ec8bf452 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -30,7 +30,7 @@ okhttp = "4.12.0"
retrofit = "2.11.0"
-room-metadataGenerator = "2.0.1"
+room-metadataGenerator = "2.1.0"
rx-binding = "3.1.0"
@@ -201,8 +201,6 @@ uuid-generator = "com.fasterxml.uuid:java-uuid-generator:5.1.0"
#noinspection GradleDependency
viewpump = "io.github.inflationx:viewpump:2.0.3"
-datadog-sdk = "com.datadoghq:dd-sdk-android:1.19.3"
-
#noinspection GradleDependency
zxing = "com.google.zxing:core:3.3.3"
@@ -236,7 +234,6 @@ kotlin-compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
google-services = { id = "com.google.gms.google-services", version = "4.4.2" }
sentry = { id = "io.sentry.android.gradle", version = "5.1.0" }
-datadog = { id = "com.datadoghq.dd-sdk-android-gradle-plugin", version = "1.15.0" }
[bundles]
androidx-camera = ["androidx-camera-core", "androidx-camera-camera2", "androidx-camera-view", "androidx-camera-lifecycle"]