@iapps/ng-dhis2-ui 1.1.79 → 1.1.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -3565,6 +3565,57 @@ class LineListService {
|
|
|
3565
3565
|
// );
|
|
3566
3566
|
// }
|
|
3567
3567
|
//tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&page=${page}&pageSize=${pageSize}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}&order=createdAt:desc&trackedEntities=uid1,uid2,uid3
|
|
3568
|
+
getTrackedEntityInstances(programId, orgUnit, page, pageSize, filters = [], startDate, endDate, ouMode, filterRootOrgUnit, useOuModeWithOlderDHIS2Instance, filtersFromEvents = []) {
|
|
3569
|
+
const filterParams = buildFilters(filters);
|
|
3570
|
+
const filterParamsFromEvents = buildFiltersFromEvents(filtersFromEvents);
|
|
3571
|
+
const dateFilter = [
|
|
3572
|
+
startDate ? `enrollmentEnrolledAfter=${startDate}` : '',
|
|
3573
|
+
endDate ? `enrollmentEnrolledBefore=${endDate}` : '',
|
|
3574
|
+
]
|
|
3575
|
+
.filter(Boolean)
|
|
3576
|
+
.join('&');
|
|
3577
|
+
const ouModeIdentifier = ouMode && useOuModeWithOlderDHIS2Instance
|
|
3578
|
+
? `&ouMode=${ouMode}`
|
|
3579
|
+
: `&orgUnitMode=${ouMode}`;
|
|
3580
|
+
return this.httpClient
|
|
3581
|
+
.get(`tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&page=${page}&pageSize=${pageSize}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}&order=createdAt:desc`)
|
|
3582
|
+
.pipe(switchMap((response) => {
|
|
3583
|
+
if (filterRootOrgUnit) {
|
|
3584
|
+
response.trackedEntities = response.trackedEntities.filter((tei) => tei.orgUnit !== orgUnit);
|
|
3585
|
+
}
|
|
3586
|
+
// **Step 1:** Extract unique orgUnits from enrollments
|
|
3587
|
+
const uniqueOrgUnitIds = new Set();
|
|
3588
|
+
if (response && response.trackedEntities) {
|
|
3589
|
+
response.trackedEntities.forEach((tei) => {
|
|
3590
|
+
tei.enrollments?.forEach((enrollment) => {
|
|
3591
|
+
if (enrollment.program === programId) {
|
|
3592
|
+
uniqueOrgUnitIds.add(enrollment.orgUnit);
|
|
3593
|
+
}
|
|
3594
|
+
});
|
|
3595
|
+
});
|
|
3596
|
+
}
|
|
3597
|
+
else {
|
|
3598
|
+
if (response && response.instances) {
|
|
3599
|
+
response?.instances?.forEach((tei) => {
|
|
3600
|
+
tei.enrollments?.forEach((enrollment) => {
|
|
3601
|
+
if (enrollment.program === programId) {
|
|
3602
|
+
uniqueOrgUnitIds.add(enrollment?.orgUnit);
|
|
3603
|
+
}
|
|
3604
|
+
});
|
|
3605
|
+
});
|
|
3606
|
+
}
|
|
3607
|
+
}
|
|
3608
|
+
// If no unique orgUnits found, return immediately
|
|
3609
|
+
if (uniqueOrgUnitIds.size === 0) {
|
|
3610
|
+
return of({ ...response, orgUnitsMap: new Map() });
|
|
3611
|
+
}
|
|
3612
|
+
// **Step 2:** Fetch orgUnit names in a single request
|
|
3613
|
+
return this.fetchOrgUnits(Array.from(uniqueOrgUnitIds)).pipe(map$1((orgUnitsMap) => ({
|
|
3614
|
+
...response,
|
|
3615
|
+
orgUnitsMap, // Attach orgUnitId → orgUnitName map
|
|
3616
|
+
})));
|
|
3617
|
+
}));
|
|
3618
|
+
}
|
|
3568
3619
|
// private getTrackedEntityInstances(
|
|
3569
3620
|
// programId: string,
|
|
3570
3621
|
// orgUnit: string,
|
|
@@ -3590,131 +3641,84 @@ class LineListService {
|
|
|
3590
3641
|
// ouMode && useOuModeWithOlderDHIS2Instance
|
|
3591
3642
|
// ? `&ouMode=${ouMode}`
|
|
3592
3643
|
// : `&orgUnitMode=${ouMode}`;
|
|
3593
|
-
//
|
|
3594
|
-
//
|
|
3595
|
-
//
|
|
3596
|
-
//
|
|
3597
|
-
//
|
|
3598
|
-
//
|
|
3599
|
-
//
|
|
3600
|
-
//
|
|
3601
|
-
//
|
|
3602
|
-
//
|
|
3603
|
-
//
|
|
3604
|
-
//
|
|
3605
|
-
//
|
|
3606
|
-
//
|
|
3607
|
-
//
|
|
3608
|
-
//
|
|
3609
|
-
//
|
|
3610
|
-
//
|
|
3611
|
-
//
|
|
3612
|
-
// }
|
|
3644
|
+
// let baseUrl='';
|
|
3645
|
+
// if(filtersFromEvents.length === 0) {
|
|
3646
|
+
// baseUrl = `tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&page=${page}&pageSize=${pageSize}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}&order=createdAt:desc`;
|
|
3647
|
+
// } else {
|
|
3648
|
+
// baseUrl = `tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&${filterParams}${dateFilter}&order=createdAt:desc&paging=false`;
|
|
3649
|
+
// }
|
|
3650
|
+
// return this.httpClient.get(baseUrl).pipe(
|
|
3651
|
+
// switchMap((response: any) => {
|
|
3652
|
+
// if (filterRootOrgUnit) {
|
|
3653
|
+
// response.trackedEntities = response.trackedEntities.filter(
|
|
3654
|
+
// (tei: any) => tei.orgUnit !== orgUnit
|
|
3655
|
+
// );
|
|
3656
|
+
// }
|
|
3657
|
+
// const uniqueOrgUnitIds = new Set<string>();
|
|
3658
|
+
// if (response && response.trackedEntities) {
|
|
3659
|
+
// response.trackedEntities.forEach((tei: any) => {
|
|
3660
|
+
// tei.enrollments?.forEach((enrollment: any) => {
|
|
3661
|
+
// if (enrollment.program === programId) {
|
|
3662
|
+
// uniqueOrgUnitIds.add(enrollment.orgUnit);
|
|
3663
|
+
// }
|
|
3613
3664
|
// });
|
|
3614
|
-
// }
|
|
3615
|
-
//
|
|
3616
|
-
//
|
|
3617
|
-
//
|
|
3618
|
-
//
|
|
3619
|
-
//
|
|
3620
|
-
//
|
|
3621
|
-
//
|
|
3622
|
-
//
|
|
3623
|
-
//
|
|
3624
|
-
//
|
|
3625
|
-
// // If no unique orgUnits found, return immediately
|
|
3665
|
+
// });
|
|
3666
|
+
// } else {
|
|
3667
|
+
// response?.instances?.forEach((tei: any) => {
|
|
3668
|
+
// tei.enrollments?.forEach((enrollment: any) => {
|
|
3669
|
+
// if (enrollment.program === programId) {
|
|
3670
|
+
// uniqueOrgUnitIds.add(enrollment.orgUnit);
|
|
3671
|
+
// }
|
|
3672
|
+
// });
|
|
3673
|
+
// });
|
|
3674
|
+
// }
|
|
3675
|
+
// if (filtersFromEvents.length === 0) {
|
|
3626
3676
|
// if (uniqueOrgUnitIds.size === 0) {
|
|
3627
3677
|
// return of({ ...response, orgUnitsMap: new Map<string, string>() });
|
|
3628
3678
|
// }
|
|
3629
|
-
// // **Step 2:** Fetch orgUnit names in a single request
|
|
3630
3679
|
// return this.fetchOrgUnits(Array.from(uniqueOrgUnitIds)).pipe(
|
|
3631
3680
|
// map((orgUnitsMap: Map<string, string>) => ({
|
|
3632
3681
|
// ...response,
|
|
3633
|
-
// orgUnitsMap,
|
|
3682
|
+
// orgUnitsMap,
|
|
3634
3683
|
// }))
|
|
3635
3684
|
// );
|
|
3636
|
-
// }
|
|
3637
|
-
//
|
|
3685
|
+
// }
|
|
3686
|
+
// // NEW LOGIC STARTS HERE if filtersFromEvents is present
|
|
3687
|
+
// const filteredTrackedEntities = getFilteredTrackedEntites(
|
|
3688
|
+
// response.trackedEntities,
|
|
3689
|
+
// filtersFromEvents
|
|
3690
|
+
// );
|
|
3691
|
+
// const trackedEntityIds = filteredTrackedEntities
|
|
3692
|
+
// .map((tei: any) => tei.trackedEntity)
|
|
3693
|
+
// .join(',');
|
|
3694
|
+
// if (!trackedEntityIds) {
|
|
3695
|
+
// return of({
|
|
3696
|
+
// trackedEntities: [],
|
|
3697
|
+
// orgUnitsMap: new Map<string, string>(),
|
|
3698
|
+
// });
|
|
3699
|
+
// }
|
|
3700
|
+
// const refetchUrl = `tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&page=${page}&pageSize=${pageSize}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}&order=createdAt:desc&trackedEntities=${trackedEntityIds}`;
|
|
3701
|
+
// return this.httpClient.get(refetchUrl).pipe(
|
|
3702
|
+
// switchMap((filteredResponse: any) => {
|
|
3703
|
+
// const orgUnitIds = new Set<string>();
|
|
3704
|
+
// filteredResponse.trackedEntities?.forEach((tei: any) => {
|
|
3705
|
+
// tei.enrollments?.forEach((enrollment: any) => {
|
|
3706
|
+
// if (enrollment.program === programId) {
|
|
3707
|
+
// orgUnitIds.add(enrollment.orgUnit);
|
|
3708
|
+
// }
|
|
3709
|
+
// });
|
|
3710
|
+
// });
|
|
3711
|
+
// return this.fetchOrgUnits(Array.from(orgUnitIds)).pipe(
|
|
3712
|
+
// map((orgUnitsMap: Map<string, string>) => ({
|
|
3713
|
+
// ...filteredResponse,
|
|
3714
|
+
// orgUnitsMap,
|
|
3715
|
+
// }))
|
|
3716
|
+
// );
|
|
3717
|
+
// })
|
|
3718
|
+
// );
|
|
3719
|
+
// })
|
|
3720
|
+
// );
|
|
3638
3721
|
// }
|
|
3639
|
-
getTrackedEntityInstances(programId, orgUnit, page, pageSize, filters = [], startDate, endDate, ouMode, filterRootOrgUnit, useOuModeWithOlderDHIS2Instance, filtersFromEvents = []) {
|
|
3640
|
-
const filterParams = buildFilters(filters);
|
|
3641
|
-
const filterParamsFromEvents = buildFiltersFromEvents(filtersFromEvents);
|
|
3642
|
-
const dateFilter = [
|
|
3643
|
-
startDate ? `enrollmentEnrolledAfter=${startDate}` : '',
|
|
3644
|
-
endDate ? `enrollmentEnrolledBefore=${endDate}` : '',
|
|
3645
|
-
]
|
|
3646
|
-
.filter(Boolean)
|
|
3647
|
-
.join('&');
|
|
3648
|
-
const ouModeIdentifier = ouMode && useOuModeWithOlderDHIS2Instance
|
|
3649
|
-
? `&ouMode=${ouMode}`
|
|
3650
|
-
: `&orgUnitMode=${ouMode}`;
|
|
3651
|
-
let baseUrl = '';
|
|
3652
|
-
if (filtersFromEvents.length === 0) {
|
|
3653
|
-
baseUrl = `tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&page=${page}&pageSize=${pageSize}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}&order=createdAt:desc`;
|
|
3654
|
-
}
|
|
3655
|
-
else {
|
|
3656
|
-
baseUrl = `tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&${filterParams}${dateFilter}&order=createdAt:desc&paging=false`;
|
|
3657
|
-
}
|
|
3658
|
-
return this.httpClient.get(baseUrl).pipe(switchMap((response) => {
|
|
3659
|
-
if (filterRootOrgUnit) {
|
|
3660
|
-
response.trackedEntities = response.trackedEntities.filter((tei) => tei.orgUnit !== orgUnit);
|
|
3661
|
-
}
|
|
3662
|
-
const uniqueOrgUnitIds = new Set();
|
|
3663
|
-
if (response && response.trackedEntities) {
|
|
3664
|
-
response.trackedEntities.forEach((tei) => {
|
|
3665
|
-
tei.enrollments?.forEach((enrollment) => {
|
|
3666
|
-
if (enrollment.program === programId) {
|
|
3667
|
-
uniqueOrgUnitIds.add(enrollment.orgUnit);
|
|
3668
|
-
}
|
|
3669
|
-
});
|
|
3670
|
-
});
|
|
3671
|
-
}
|
|
3672
|
-
else {
|
|
3673
|
-
response?.instances?.forEach((tei) => {
|
|
3674
|
-
tei.enrollments?.forEach((enrollment) => {
|
|
3675
|
-
if (enrollment.program === programId) {
|
|
3676
|
-
uniqueOrgUnitIds.add(enrollment.orgUnit);
|
|
3677
|
-
}
|
|
3678
|
-
});
|
|
3679
|
-
});
|
|
3680
|
-
}
|
|
3681
|
-
if (filtersFromEvents.length === 0) {
|
|
3682
|
-
if (uniqueOrgUnitIds.size === 0) {
|
|
3683
|
-
return of({ ...response, orgUnitsMap: new Map() });
|
|
3684
|
-
}
|
|
3685
|
-
return this.fetchOrgUnits(Array.from(uniqueOrgUnitIds)).pipe(map$1((orgUnitsMap) => ({
|
|
3686
|
-
...response,
|
|
3687
|
-
orgUnitsMap,
|
|
3688
|
-
})));
|
|
3689
|
-
}
|
|
3690
|
-
// NEW LOGIC STARTS HERE if filtersFromEvents is present
|
|
3691
|
-
const filteredTrackedEntities = getFilteredTrackedEntites(response.trackedEntities, filtersFromEvents);
|
|
3692
|
-
const trackedEntityIds = filteredTrackedEntities
|
|
3693
|
-
.map((tei) => tei.trackedEntity)
|
|
3694
|
-
.join(',');
|
|
3695
|
-
if (!trackedEntityIds) {
|
|
3696
|
-
return of({
|
|
3697
|
-
trackedEntities: [],
|
|
3698
|
-
orgUnitsMap: new Map(),
|
|
3699
|
-
});
|
|
3700
|
-
}
|
|
3701
|
-
const refetchUrl = `tracker/trackedEntities.json?program=${programId}&orgUnit=${orgUnit}${ouModeIdentifier}&page=${page}&pageSize=${pageSize}&fields=trackedEntity,orgUnit,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}&order=createdAt:desc&trackedEntities=${trackedEntityIds}`;
|
|
3702
|
-
return this.httpClient.get(refetchUrl).pipe(switchMap((filteredResponse) => {
|
|
3703
|
-
const orgUnitIds = new Set();
|
|
3704
|
-
filteredResponse.trackedEntities?.forEach((tei) => {
|
|
3705
|
-
tei.enrollments?.forEach((enrollment) => {
|
|
3706
|
-
if (enrollment.program === programId) {
|
|
3707
|
-
orgUnitIds.add(enrollment.orgUnit);
|
|
3708
|
-
}
|
|
3709
|
-
});
|
|
3710
|
-
});
|
|
3711
|
-
return this.fetchOrgUnits(Array.from(orgUnitIds)).pipe(map$1((orgUnitsMap) => ({
|
|
3712
|
-
...filteredResponse,
|
|
3713
|
-
orgUnitsMap,
|
|
3714
|
-
})));
|
|
3715
|
-
}));
|
|
3716
|
-
}));
|
|
3717
|
-
}
|
|
3718
3722
|
/**
|
|
3719
3723
|
* Fetch orgUnit names for given orgUnit IDs
|
|
3720
3724
|
*/
|
|
@@ -4005,9 +4009,9 @@ const getTrackedEntityData = (response, programId, pager, isOptionSetNameVisible
|
|
|
4005
4009
|
: null,
|
|
4006
4010
|
sortOrder: attr.sortOrder,
|
|
4007
4011
|
}));
|
|
4008
|
-
|
|
4009
|
-
|
|
4010
|
-
|
|
4012
|
+
if (filters) {
|
|
4013
|
+
teis = getFilteredTrackedEntites(teis, filters);
|
|
4014
|
+
}
|
|
4011
4015
|
const allAttributes = new Set();
|
|
4012
4016
|
teis.forEach((tei) => {
|
|
4013
4017
|
const matchingEnrollment = tei.enrollments.find((enrollment) => enrollment.program === programId);
|