@@ -20,25 +20,35 @@ import androidx.lifecycle.ViewModel
20
20
import dagger.hilt.android.lifecycle.HiltViewModel
21
21
import java.util.Date
22
22
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
24
25
import org.hl7.fhir.r4.model.Coding
25
- import org.hl7.fhir.r4.model.Flag
26
- import org.hl7.fhir.r4.model.Identifier
27
26
import org.hl7.fhir.r4.model.Period
28
27
import org.hl7.fhir.r4.model.QuestionnaireResponse
29
28
import org.hl7.fhir.r4.model.QuestionnaireResponse.QuestionnaireResponseStatus
29
+ import org.hl7.fhir.r4.model.Reference
30
+ import org.hl7.fhir.r4.model.ResourceType
30
31
import org.smartregister.fhircore.engine.configuration.QuestionnaireConfig
31
32
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
33
35
import org.smartregister.fhircore.engine.util.extension.asReference
36
+ import org.smartregister.fhircore.engine.util.extension.extractLogicalIdUuid
34
37
35
38
@HiltViewModel
36
39
class AlertDialogViewModel
37
40
@Inject
38
41
constructor (
39
42
val defaultRepository: DefaultRepository ,
40
- val dispatcherProvider : DispatcherProvider ,
43
+ val sharedPreferencesHelper : SharedPreferencesHelper ,
41
44
) : ViewModel () {
45
+
46
+ private val practitionerId: String? by lazy {
47
+ sharedPreferencesHelper
48
+ .read(SharedPreferenceKey .PRACTITIONER_ID .name, null )
49
+ ?.extractLogicalIdUuid()
50
+ }
51
+
42
52
suspend fun deleteDraft (questionnaireConfig : QuestionnaireConfig ? ) {
43
53
if (
44
54
questionnaireConfig == null ||
@@ -61,38 +71,42 @@ constructor(
61
71
questionnaireResponse.status = QuestionnaireResponseStatus .STOPPED
62
72
defaultRepository.update(questionnaireResponse)
63
73
defaultRepository.addOrUpdate(
64
- resource = createDeleteDraftFlag (questionnaireConfig, questionnaireResponse),
74
+ resource = createDeleteDraftAuditEvent (questionnaireConfig, questionnaireResponse),
65
75
)
66
76
}
67
77
}
68
78
69
- fun createDeleteDraftFlag (
79
+ fun createDeleteDraftAuditEvent (
70
80
questionnaireConfig : QuestionnaireConfig ,
71
81
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
+ }
79
98
}
80
- identifier =
99
+ agent =
81
100
listOf (
82
- Identifier ().apply { value = questionnaireResponse.id },
101
+ AuditEvent .AuditEventAgentComponent ().apply {
102
+ who = practitionerId?.asReference(ResourceType .Practitioner )
103
+ },
83
104
)
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
96
110
}
97
111
period =
98
112
Period ().apply {
@@ -103,9 +117,8 @@ constructor(
103
117
}
104
118
105
119
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"
110
123
}
111
124
}
0 commit comments