Skip to content

Commit 01417be

Browse files
committed
Add flag to indicate a drft has been deleted
1 parent 8014c23 commit 01417be

File tree

1 file changed

+64
-17
lines changed

1 file changed

+64
-17
lines changed

android/quest/src/main/java/org/smartregister/fhircore/quest/ui/dialog/AlertDialogViewModel.kt

Lines changed: 64 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,20 @@
1717
package org.smartregister.fhircore.quest.ui.dialog
1818

1919
import androidx.lifecycle.ViewModel
20-
import androidx.lifecycle.viewModelScope
2120
import dagger.hilt.android.lifecycle.HiltViewModel
21+
import java.util.Date
2222
import javax.inject.Inject
23-
import kotlinx.coroutines.launch
24-
import kotlinx.coroutines.withContext
23+
import org.hl7.fhir.r4.model.CodeableConcept
24+
import org.hl7.fhir.r4.model.Coding
25+
import org.hl7.fhir.r4.model.Flag
26+
import org.hl7.fhir.r4.model.Identifier
27+
import org.hl7.fhir.r4.model.Period
28+
import org.hl7.fhir.r4.model.QuestionnaireResponse
2529
import org.hl7.fhir.r4.model.QuestionnaireResponse.QuestionnaireResponseStatus
2630
import org.smartregister.fhircore.engine.configuration.QuestionnaireConfig
2731
import org.smartregister.fhircore.engine.data.local.DefaultRepository
2832
import org.smartregister.fhircore.engine.util.DispatcherProvider
33+
import org.smartregister.fhircore.engine.util.extension.asReference
2934

3035
@HiltViewModel
3136
class AlertDialogViewModel
@@ -43,22 +48,64 @@ constructor(
4348
return
4449
}
4550

46-
viewModelScope.launch {
47-
withContext(dispatcherProvider.io()) {
48-
val questionnaireResponse =
49-
defaultRepository.searchQuestionnaireResponse(
50-
resourceId = questionnaireConfig.resourceIdentifier!!,
51-
resourceType = questionnaireConfig.resourceType!!,
52-
questionnaireId = questionnaireConfig.id,
53-
encounterId = null,
54-
questionnaireResponseStatus = QuestionnaireResponseStatus.INPROGRESS.toCode(),
55-
)
51+
val questionnaireResponse =
52+
defaultRepository.searchQuestionnaireResponse(
53+
resourceId = questionnaireConfig.resourceIdentifier!!,
54+
resourceType = questionnaireConfig.resourceType!!,
55+
questionnaireId = questionnaireConfig.id,
56+
encounterId = null,
57+
questionnaireResponseStatus = QuestionnaireResponseStatus.INPROGRESS.toCode(),
58+
)
5659

57-
if (questionnaireResponse != null) {
58-
questionnaireResponse.status = QuestionnaireResponseStatus.STOPPED
59-
defaultRepository.update(questionnaireResponse)
60+
if (questionnaireResponse != null) {
61+
questionnaireResponse.status = QuestionnaireResponseStatus.STOPPED
62+
defaultRepository.update(questionnaireResponse)
63+
defaultRepository.addOrUpdate(
64+
resource = createDeleteDraftFlag(questionnaireConfig, questionnaireResponse),
65+
)
66+
}
67+
}
68+
69+
fun createDeleteDraftFlag(
70+
questionnaireConfig: QuestionnaireConfig,
71+
questionnaireResponse: QuestionnaireResponse,
72+
): Flag {
73+
return Flag().apply {
74+
subject =
75+
questionnaireConfig.resourceType?.let {
76+
questionnaireConfig.resourceIdentifier?.asReference(
77+
it,
78+
)
79+
}
80+
identifier =
81+
listOf(
82+
Identifier().apply { value = questionnaireResponse.id },
83+
)
84+
status = Flag.FlagStatus.ACTIVE
85+
code =
86+
CodeableConcept().apply {
87+
coding =
88+
listOf(
89+
Coding().apply {
90+
system = FLAG_SYSTEM
91+
code = FLAG_CODE
92+
display = FLAG_DISPLAY
93+
},
94+
)
95+
text = FLAG_TEXT
96+
}
97+
period =
98+
Period().apply {
99+
start = Date()
100+
end = Date()
60101
}
61-
}
62102
}
63103
}
104+
105+
companion object {
106+
const val FLAG_SYSTEM = "http://smartregister.org/"
107+
const val FLAG_CODE = "delete_draft"
108+
const val FLAG_DISPLAY = "Delete Draft"
109+
const val FLAG_TEXT = "QR Draft has been deleted"
110+
}
64111
}

0 commit comments

Comments
 (0)