@@ -10,6 +10,10 @@ import UserInfoService from "../../service/UserInfoService";
10
10
import DashboardCacheService from "../../service/DashboardCacheService" ;
11
11
import { firebaseEvents , logEvent } from "../../utility/Analytics" ;
12
12
13
+ function getApplicableEncounterTypes ( state ) {
14
+ return _ . isEmpty ( state . selectedGeneralEncounterTypes ) ? state . selectedEncounterTypes : state . selectedGeneralEncounterTypes ;
15
+ }
16
+
13
17
class MyDashboardActions {
14
18
static getInitialState ( context ) {
15
19
return {
@@ -91,9 +95,9 @@ class MyDashboardActions {
91
95
MyDashboardActions . commonIndividuals ( individualService . allScheduledVisitsIn ( state . date . value , encountersFilters , generalEncountersFilters , queryProgramEncounter , queryGeneralEncounter ) , state . individualUUIDs ) ,
92
96
MyDashboardActions . commonIndividuals ( individualService . allOverdueVisitsIn ( state . date . value , encountersFilters , generalEncountersFilters , queryProgramEncounter , queryGeneralEncounter ) , state . individualUUIDs ) ,
93
97
MyDashboardActions . commonIndividuals ( individualService . recentlyCompletedVisitsIn ( state . date . value , encountersFilters , generalEncountersFilters , queryProgramEncounter , queryGeneralEncounter ) , state . individualUUIDs ) ,
94
- MyDashboardActions . commonIndividuals ( individualService . recentlyRegistered ( state . date . value , individualFilters ) , state . individualUUIDs ) ,
98
+ MyDashboardActions . commonIndividuals ( individualService . recentlyRegistered ( state . date . value , individualFilters , state . selectedPrograms , getApplicableEncounterTypes ( state ) ) , state . individualUUIDs ) ,
95
99
MyDashboardActions . commonIndividuals ( individualService . recentlyEnrolled ( state . date . value , enrolmentFilters ) , state . individualUUIDs ) ,
96
- MyDashboardActions . commonIndividuals ( individualService . allIn ( state . date . value , individualFilters ) , state . individualUUIDs , true )
100
+ MyDashboardActions . commonIndividuals ( individualService . allIn ( state . date . value , individualFilters , state . selectedPrograms , getApplicableEncounterTypes ( state ) ) , state . individualUUIDs , true )
97
101
]
98
102
: [ state . scheduled , state . overdue , state . recentlyCompletedVisits , state . recentlyCompletedRegistration , state . recentlyCompletedEnrolment , state . total ] ) ;
99
103
@@ -175,7 +179,12 @@ class MyDashboardActions {
175
179
( listType === 'total' || listType === 'recentlyCompletedRegistration' ) ? state . individualFilters : state . encountersFilters ;
176
180
const queryProgramEncounter = MyDashboardActions . shouldQueryProgramEncounter ( state ) ;
177
181
const queryGeneralEncounter = MyDashboardActions . shouldQueryGeneralEncounter ( state ) ;
178
- const allIndividuals = methodMap . get ( listType ) ( state . date . value , filters , state . generalEncountersFilters , queryProgramEncounter , queryGeneralEncounter ) ;
182
+ let allIndividuals ;
183
+ if ( listType === "recentlyCompletedRegistration" || listType === "total" )
184
+ allIndividuals = methodMap . get ( listType ) ( state . date . value , filters , state . selectedPrograms , getApplicableEncounterTypes ( state ) ) ;
185
+ else
186
+ allIndividuals = methodMap . get ( listType ) ( state . date . value , filters , state . generalEncountersFilters , queryProgramEncounter , queryGeneralEncounter ) ;
187
+
179
188
const commonIndividuals = MyDashboardActions . commonIndividuals ( allIndividuals , state . individualUUIDs , listType === 'total' ) ;
180
189
const totalToDisplay = listType === 'total' ? commonIndividuals : _ . orderBy ( commonIndividuals , ( { visitInfo} ) => visitInfo . sortingBy , 'desc' ) ;
181
190
return {
@@ -236,9 +245,8 @@ class MyDashboardActions {
236
245
const addressUUIDs = action . locationSearchCriteria . clone ( ) . getAllAddressLevelUUIDs ( ) ;
237
246
const locationQuery = ( path ) => _ . map ( addressUUIDs , ( address ) => `${ path } = \'${ address } \'` ) ;
238
247
const subjectTypeQuery = ( path ) => `${ path } = "${ action . selectedSubjectType . uuid } "` ;
239
- const visitQuery = ( path ) => shouldApplyValidEnrolmentQuery ? action . selectedEncounterTypes . map ( ( encounter ) => `${ path } = \'${ encounter . uuid } \'` ) : '' ;
240
- const generalVisitQuery = ( path ) => _ . map ( action . selectedGeneralEncounterTypes , ( encounter ) => `${ path } = \'${ encounter . uuid } \'` ) ;
241
- const generalVisitQueryFromIndividual = _ . map ( action . selectedGeneralEncounterTypes , ( encounter ) => `$encounter.encounterType.uuid = \'${ encounter . uuid } \' AND $encounter.voided = false` ) ;
248
+ const visitQuery = ( path ) => shouldApplyValidEnrolmentQuery ? action . selectedEncounterTypes . map ( ( encounterType ) => `${ path } = \'${ encounterType . uuid } \'` ) : '' ;
249
+ const generalVisitQuery = ( path ) => _ . map ( action . selectedGeneralEncounterTypes , ( encounterType ) => `${ path } = \'${ encounterType . uuid } \'` ) ;
242
250
const programQuery = ( path ) => shouldApplyValidEnrolmentQuery ? _ . map ( action . selectedPrograms , ( program ) => `${ path } = \'${ program . uuid } \'` ) : '' ;
243
251
const validEnrolmentQuery = ( path ) => shouldApplyValidEnrolmentQuery ? `${ path } .voided = false and ${ path } .programExitDateTime = null` : '' ;
244
252
const genderQuery = ( path ) => _ . map ( action . selectedGenders , ( gender ) => `${ path } = "${ gender . name } "` ) ;
@@ -256,21 +264,16 @@ class MyDashboardActions {
256
264
257
265
const restIndividualFilters = [
258
266
MyDashboardActions . orQuery ( programQuery ( '$enrolment.program.uuid' ) ) ,
259
- MyDashboardActions . orQuery ( visitQuery ( '$enrolment.encounters.encounterType.uuid' ) ) ,
260
267
validEnrolmentQuery ( '$enrolment' )
261
268
] . filter ( Boolean ) . join ( " AND " ) ;
262
269
263
270
const buildEnrolmentSubQueryForIndividual = ( ) => _ . isEmpty ( restIndividualFilters ) ? '' :
264
271
'SUBQUERY(enrolments, $enrolment, ' + restIndividualFilters + ' ).@count > 0' ;
265
272
266
- const encounterQuery = ( ) => _ . isEmpty ( MyDashboardActions . orQuery ( generalVisitQueryFromIndividual ) ) ? '' :
267
- 'SUBQUERY(encounters, $encounter, ' + MyDashboardActions . orQuery ( generalVisitQueryFromIndividual ) + ' ).@count > 0' ;
268
-
269
273
const individualFilters = [
270
274
subjectTypeQuery ( 'subjectType.uuid' ) ,
271
275
MyDashboardActions . orQuery ( genderQuery ( 'gender.name' ) ) ,
272
276
MyDashboardActions . orQuery ( locationQuery ( 'lowestAddressLevel.uuid' ) ) ,
273
- encounterQuery ( ) ,
274
277
buildEnrolmentSubQueryForIndividual ( )
275
278
] . filter ( Boolean ) . join ( " AND " ) ;
276
279
0 commit comments