@@ -36,7 +36,6 @@ export async function fetchData(formData: FormData) {
36
36
const temp : Record < string , string > = { } ;
37
37
38
38
if ( filter . template == "_tag_location" ) {
39
- console . log ( filter ) ;
40
39
const template = `http://smartregister.org/fhir/location-tag|${
41
40
filter . params [ 0 ] . value ?? ""
42
41
} `;
@@ -91,12 +90,14 @@ export async function fetchData(formData: FormData) {
91
90
createQuestionnaireResponseFilters (
92
91
"exposed-infant-milestone-hiv-test" ,
93
92
rawDate ,
94
- baseFilter
93
+ baseFilter ,
94
+ false
95
95
) ,
96
96
createQuestionnaireResponseFilters (
97
97
"art-client-viral-load-collection" ,
98
98
rawDate ,
99
- baseFilter
99
+ baseFilter ,
100
+ false
100
101
) ,
101
102
] ) ;
102
103
const summary : string [ ] = [
@@ -107,9 +108,32 @@ export async function fetchData(formData: FormData) {
107
108
"Milestone answered" ,
108
109
"VL collected answered" ,
109
110
] ;
110
- console . log ( JSON . stringify ( bundle ) ) ;
111
111
112
- return { summaries : getResults ( bundle , summary ) , date : rawDate } ;
112
+ return {
113
+ summaries : getResults ( bundle , summary , [
114
+ {
115
+ index : 4 ,
116
+ filter : ( resource ) => {
117
+ return (
118
+ resource ?. item ?. [ 0 ] ?. item ?. find (
119
+ ( e ) => e . linkId == "able-to-conduct-test"
120
+ ) ?. answer ?. [ 0 ] ?. valueBoolean ?? false
121
+ ) ;
122
+ } ,
123
+ } ,
124
+ {
125
+ index : 5 ,
126
+ filter : ( resource ) => {
127
+ return (
128
+ ( resource ?. item ?? [ ] ) ?. find (
129
+ ( e ) => e . linkId == "viral-load-collection-confirmation"
130
+ ) ?. answer ?. [ 0 ] ?. valueBoolean ?? false
131
+ ) ;
132
+ } ,
133
+ } ,
134
+ ] ) ,
135
+ date : rawDate ,
136
+ } ;
113
137
}
114
138
115
139
const getLocationData = ( bundle : fhirR4 . Bundle | undefined ) : LocationData [ ] => {
@@ -128,13 +152,33 @@ const getLocationData = (bundle: fhirR4.Bundle | undefined): LocationData[] => {
128
152
129
153
const getResults = (
130
154
bundle : fhirR4 . Bundle | undefined ,
131
- summary : string [ ]
155
+ summary : string [ ] ,
156
+ filters : {
157
+ index : number ;
158
+ filter : ( resource ?: fhirR4 . QuestionnaireResponse ) => boolean ;
159
+ } [ ]
132
160
) : SummaryItem [ ] => {
133
161
if ( bundle == undefined ) {
134
162
return [ ] ;
135
163
}
136
164
return (
137
165
bundle . entry ?. map ( ( entry , idx ) => {
166
+ const filter = filters . find ( ( e ) => e . index == idx ) ?. filter ;
167
+ if ( filter ) {
168
+ const items = ( entry . resource as fhirR4 . Bundle ) ?. entry ?? [ ] ;
169
+ const unique = [
170
+ ...new Map (
171
+ items . map ( ( v ) => [
172
+ ( v . resource as fhirR4 . QuestionnaireResponse ) . subject ?. reference ,
173
+ v . resource as fhirR4 . QuestionnaireResponse ,
174
+ ] )
175
+ ) . values ( ) ,
176
+ ] ;
177
+ return {
178
+ name : summary [ idx ] ,
179
+ value : unique ?. filter ( filter ) . length ?? 0 ,
180
+ } ;
181
+ }
138
182
return {
139
183
name : summary [ idx ] ,
140
184
value : ( entry . resource as fhirR4 . Bundle ) ?. total ?? 0 ,
0 commit comments