@@ -10,6 +10,10 @@ import UserInfoService from "../../service/UserInfoService";
1010import DashboardCacheService from "../../service/DashboardCacheService" ;
1111import { firebaseEvents , logEvent } from "../../utility/Analytics" ;
1212
13+ function getApplicableEncounterTypes ( state ) {
14+ return _ . isEmpty ( state . selectedGeneralEncounterTypes ) ? state . selectedEncounterTypes : state . selectedGeneralEncounterTypes ;
15+ }
16+
1317class MyDashboardActions {
1418 static getInitialState ( context ) {
1519 return {
@@ -91,9 +95,9 @@ class MyDashboardActions {
9195 MyDashboardActions . commonIndividuals ( individualService . allScheduledVisitsIn ( state . date . value , encountersFilters , generalEncountersFilters , queryProgramEncounter , queryGeneralEncounter ) , state . individualUUIDs ) ,
9296 MyDashboardActions . commonIndividuals ( individualService . allOverdueVisitsIn ( state . date . value , encountersFilters , generalEncountersFilters , queryProgramEncounter , queryGeneralEncounter ) , state . individualUUIDs ) ,
9397 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 ) ,
9599 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 )
97101 ]
98102 : [ state . scheduled , state . overdue , state . recentlyCompletedVisits , state . recentlyCompletedRegistration , state . recentlyCompletedEnrolment , state . total ] ) ;
99103
@@ -175,7 +179,12 @@ class MyDashboardActions {
175179 ( listType === 'total' || listType === 'recentlyCompletedRegistration' ) ? state . individualFilters : state . encountersFilters ;
176180 const queryProgramEncounter = MyDashboardActions . shouldQueryProgramEncounter ( state ) ;
177181 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+
179188 const commonIndividuals = MyDashboardActions . commonIndividuals ( allIndividuals , state . individualUUIDs , listType === 'total' ) ;
180189 const totalToDisplay = listType === 'total' ? commonIndividuals : _ . orderBy ( commonIndividuals , ( { visitInfo} ) => visitInfo . sortingBy , 'desc' ) ;
181190 return {
@@ -236,9 +245,8 @@ class MyDashboardActions {
236245 const addressUUIDs = action . locationSearchCriteria . clone ( ) . getAllAddressLevelUUIDs ( ) ;
237246 const locationQuery = ( path ) => _ . map ( addressUUIDs , ( address ) => `${ path } = \'${ address } \'` ) ;
238247 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 } \'` ) ;
242250 const programQuery = ( path ) => shouldApplyValidEnrolmentQuery ? _ . map ( action . selectedPrograms , ( program ) => `${ path } = \'${ program . uuid } \'` ) : '' ;
243251 const validEnrolmentQuery = ( path ) => shouldApplyValidEnrolmentQuery ? `${ path } .voided = false and ${ path } .programExitDateTime = null` : '' ;
244252 const genderQuery = ( path ) => _ . map ( action . selectedGenders , ( gender ) => `${ path } = "${ gender . name } "` ) ;
@@ -256,21 +264,16 @@ class MyDashboardActions {
256264
257265 const restIndividualFilters = [
258266 MyDashboardActions . orQuery ( programQuery ( '$enrolment.program.uuid' ) ) ,
259- MyDashboardActions . orQuery ( visitQuery ( '$enrolment.encounters.encounterType.uuid' ) ) ,
260267 validEnrolmentQuery ( '$enrolment' )
261268 ] . filter ( Boolean ) . join ( " AND " ) ;
262269
263270 const buildEnrolmentSubQueryForIndividual = ( ) => _ . isEmpty ( restIndividualFilters ) ? '' :
264271 'SUBQUERY(enrolments, $enrolment, ' + restIndividualFilters + ' ).@count > 0' ;
265272
266- const encounterQuery = ( ) => _ . isEmpty ( MyDashboardActions . orQuery ( generalVisitQueryFromIndividual ) ) ? '' :
267- 'SUBQUERY(encounters, $encounter, ' + MyDashboardActions . orQuery ( generalVisitQueryFromIndividual ) + ' ).@count > 0' ;
268-
269273 const individualFilters = [
270274 subjectTypeQuery ( 'subjectType.uuid' ) ,
271275 MyDashboardActions . orQuery ( genderQuery ( 'gender.name' ) ) ,
272276 MyDashboardActions . orQuery ( locationQuery ( 'lowestAddressLevel.uuid' ) ) ,
273- encounterQuery ( ) ,
274277 buildEnrolmentSubQueryForIndividual ( )
275278 ] . filter ( Boolean ) . join ( " AND " ) ;
276279
0 commit comments