Skip to content

Commit ca9c159

Browse files
committed
Use aduti event to keep track of deleted drafts
1 parent 01417be commit ca9c159

File tree

1 file changed

+45
-32
lines changed

1 file changed

+45
-32
lines changed

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

Lines changed: 45 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,35 @@ import androidx.lifecycle.ViewModel
2020
import dagger.hilt.android.lifecycle.HiltViewModel
2121
import java.util.Date
2222
import javax.inject.Inject
23-
import org.hl7.fhir.r4.model.CodeableConcept
23+
import org.hl7.fhir.r4.model.AuditEvent
24+
import org.hl7.fhir.r4.model.AuditEvent.AuditEventSourceComponent
2425
import org.hl7.fhir.r4.model.Coding
25-
import org.hl7.fhir.r4.model.Flag
26-
import org.hl7.fhir.r4.model.Identifier
2726
import org.hl7.fhir.r4.model.Period
2827
import org.hl7.fhir.r4.model.QuestionnaireResponse
2928
import org.hl7.fhir.r4.model.QuestionnaireResponse.QuestionnaireResponseStatus
29+
import org.hl7.fhir.r4.model.Reference
30+
import org.hl7.fhir.r4.model.ResourceType
3031
import org.smartregister.fhircore.engine.configuration.QuestionnaireConfig
3132
import org.smartregister.fhircore.engine.data.local.DefaultRepository
32-
import org.smartregister.fhircore.engine.util.DispatcherProvider
33+
import org.smartregister.fhircore.engine.util.SharedPreferenceKey
34+
import org.smartregister.fhircore.engine.util.SharedPreferencesHelper
3335
import org.smartregister.fhircore.engine.util.extension.asReference
36+
import org.smartregister.fhircore.engine.util.extension.extractLogicalIdUuid
3437

3538
@HiltViewModel
3639
class AlertDialogViewModel
3740
@Inject
3841
constructor(
3942
val defaultRepository: DefaultRepository,
40-
val dispatcherProvider: DispatcherProvider,
43+
val sharedPreferencesHelper: SharedPreferencesHelper,
4144
) : ViewModel() {
45+
46+
private val practitionerId: String? by lazy {
47+
sharedPreferencesHelper
48+
.read(SharedPreferenceKey.PRACTITIONER_ID.name, null)
49+
?.extractLogicalIdUuid()
50+
}
51+
4252
suspend fun deleteDraft(questionnaireConfig: QuestionnaireConfig?) {
4353
if (
4454
questionnaireConfig == null ||
@@ -61,38 +71,42 @@ constructor(
6171
questionnaireResponse.status = QuestionnaireResponseStatus.STOPPED
6272
defaultRepository.update(questionnaireResponse)
6373
defaultRepository.addOrUpdate(
64-
resource = createDeleteDraftFlag(questionnaireConfig, questionnaireResponse),
74+
resource = createDeleteDraftAuditEvent(questionnaireConfig, questionnaireResponse),
6575
)
6676
}
6777
}
6878

69-
fun createDeleteDraftFlag(
79+
fun createDeleteDraftAuditEvent(
7080
questionnaireConfig: QuestionnaireConfig,
7181
questionnaireResponse: QuestionnaireResponse,
72-
): Flag {
73-
return Flag().apply {
74-
subject =
75-
questionnaireConfig.resourceType?.let {
76-
questionnaireConfig.resourceIdentifier?.asReference(
77-
it,
78-
)
82+
): AuditEvent {
83+
return AuditEvent().apply {
84+
entity =
85+
listOf(
86+
AuditEvent.AuditEventEntityComponent().apply {
87+
what = Reference(questionnaireResponse.id)
88+
},
89+
)
90+
source =
91+
AuditEventSourceComponent().apply {
92+
observer =
93+
questionnaireConfig.resourceType?.let {
94+
questionnaireConfig.resourceIdentifier?.asReference(
95+
it,
96+
)
97+
}
7998
}
80-
identifier =
99+
agent =
81100
listOf(
82-
Identifier().apply { value = questionnaireResponse.id },
101+
AuditEvent.AuditEventAgentComponent().apply {
102+
who = practitionerId?.asReference(ResourceType.Practitioner)
103+
},
83104
)
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
105+
type =
106+
Coding().apply {
107+
system = AUDIT_EVENT_SYSTEM
108+
code = AUDIT_EVENT_CODE
109+
display = AUDIT_EVENT_DISPLAY
96110
}
97111
period =
98112
Period().apply {
@@ -103,9 +117,8 @@ constructor(
103117
}
104118

105119
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"
120+
const val AUDIT_EVENT_SYSTEM = "http://smartregister.org/"
121+
const val AUDIT_EVENT_CODE = "delete_draft"
122+
const val AUDIT_EVENT_DISPLAY = "Delete Draft"
110123
}
111124
}

0 commit comments

Comments
 (0)