From a8afd12cc401991fb0a2f451f23c64bb19fb98f0 Mon Sep 17 00:00:00 2001 From: Sneha Date: Tue, 4 Aug 2026 12:03:21 +0530 Subject: [PATCH 1/2] fix(pharmacist): stop silent failure when redirecting to Inventory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit InventoryService.current_language_set was declared but never assigned, so the guard's error-alert branch threw instead of showing a message whenever authKey/facility/host was missing — masking the real problem and making the redirect look like a no-op. Populate it from HttpServiceService.currentLangugae$, the same pattern AuthGuard already uses. Also guard getppID() against a missing serviceLineDetails entry (JSON.parse(null).parkingPlaceID threw before the redirect could fire), and fix the setLanguage fallback check in worklist.component (sessionStorage.getItem returns null, never undefined). --- src/app/app-modules/core/services/inventory.service.ts | 9 ++++++++- .../pharmacist/worklist/worklist.component.ts | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/app/app-modules/core/services/inventory.service.ts b/src/app/app-modules/core/services/inventory.service.ts index b79cff0e..b6225485 100644 --- a/src/app/app-modules/core/services/inventory.service.ts +++ b/src/app/app-modules/core/services/inventory.service.ts @@ -3,6 +3,7 @@ import { Injectable, Inject } from '@angular/core'; import { environment } from '../../../../environments/environment'; import { ConfirmationService } from '../../core/services/confirmation.service'; import { SessionStorageService } from 'Common-UI/src/registrar/services/session-storage.service'; +import { HttpServiceService } from './http-service.service'; @Injectable() export class InventoryService { inventoryUrl: any; @@ -12,7 +13,12 @@ export class InventoryService { @Inject(DOCUMENT) private document: any, readonly sessionstorage: SessionStorageService, private confirmationService: ConfirmationService, - ) {} + private httpServiceService: HttpServiceService, + ) { + this.httpServiceService.currentLangugae$.subscribe( + (response) => (this.current_language_set = response), + ); + } moveToInventory( benID: any, @@ -78,6 +84,7 @@ export class InventoryService { getppID() { const serviceLineDetailsData: any = this.sessionstorage.getItem('serviceLineDetails'); + if (!serviceLineDetailsData) return undefined; const serviceLineDetails = JSON.parse(serviceLineDetailsData); return serviceLineDetails.parkingPlaceID; } diff --git a/src/app/app-modules/pharmacist/worklist/worklist.component.ts b/src/app/app-modules/pharmacist/worklist/worklist.component.ts index 0ebcb579..f8f442e6 100644 --- a/src/app/app-modules/pharmacist/worklist/worklist.component.ts +++ b/src/app/app-modules/pharmacist/worklist/worklist.component.ts @@ -318,7 +318,7 @@ export class WorklistComponent implements OnInit, OnDestroy, DoCheck { beneficiary.visitCode, beneficiary.benFlowID, beneficiary.beneficiaryRegID, - sessionStorage.getItem('setLanguage') !== undefined + sessionStorage.getItem('setLanguage') !== null ? sessionStorage.getItem('setLanguage') : 'English', this.healthIDValue, From c165d6426622e792fa1747848a84c80259fae267 Mon Sep 17 00:00:00 2001 From: Sneha Date: Thu, 13 Aug 2026 12:51:22 +0530 Subject: [PATCH 2/2] fix(diagnosis): stop premature "End of results" in provisional diagnosis autocomplete The panel-fill bootstrap logic proactively fetched extra pages whenever the dropdown didn't scroll, flipping noMore to true almost immediately. Now "End of results" only shows when a real fetch (initial search or scroll-triggered page) actually returns an empty response. Co-Authored-By: Claude Sonnet 5 --- .../general-opd-diagnosis.component.html | 2 +- .../general-opd-diagnosis.component.ts | 36 ------------------ .../ncd-care-diagnosis.component.html | 2 +- .../ncd-care-diagnosis.component.ts | 36 ------------------ .../ncd-screening-diagnosis.component.html | 2 +- .../ncd-screening-diagnosis.component.ts | 36 ------------------ .../pnc-diagnosis.component.html | 2 - .../pnc-diagnosis/pnc-diagnosis.component.ts | 38 ------------------- .../quick-consult.component.html | 1 - .../quick-consult/quick-consult.component.ts | 36 ------------------ 10 files changed, 3 insertions(+), 188 deletions(-) diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.html b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.html index f684b395..a60e3adb 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.html +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.html @@ -39,7 +39,7 @@ {{ diag.term }} diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.ts b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.ts index d94fa445..7d82302e 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.ts +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.ts @@ -67,8 +67,6 @@ export class GeneralOpdDiagnosisComponent private readonly PAGE_BASE = 0; pageSize: number | undefined = undefined; - private readonly BOOTSTRAP_MAX_PAGES = 3; // when first page can't scroll, prefill up to this many extra pages - loadingMore: boolean[] = []; noMore: boolean[] = []; wantMore: boolean[] = []; @@ -316,12 +314,6 @@ export class GeneralOpdDiagnosisComponent }); } - onPanelReady(index: number, panelEl: HTMLElement) { - if (panelEl.scrollHeight <= panelEl.clientHeight && !this.noMore[index]) { - this.bootstrapUntilScrollable(index, panelEl); - } - } - onAutoNearEnd(index: number) { if (!this.loadingMore[index] && !this.noMore[index]) { this.fetchPage(index, true); @@ -330,34 +322,6 @@ export class GeneralOpdDiagnosisComponent } } - private bootstrapUntilScrollable(rowIndex: number, panelEl: HTMLElement) { - let fetched = 0; - - const tryFill = () => { - const scrollable = panelEl.scrollHeight > panelEl.clientHeight; - if ( - scrollable || - this.noMore[rowIndex] || - fetched >= this.BOOTSTRAP_MAX_PAGES - ) - return; - - if (this.loadingMore[rowIndex]) { - requestAnimationFrame(tryFill); - return; - } - - fetched++; - this.fetchPage(rowIndex, true); - - requestAnimationFrame(tryFill); - }; - - if (this.lastQueryByIndex[rowIndex]?.length >= 3) { - tryFill(); - } - } - private fetchPage(index: number, append = false) { const term = this.lastQueryByIndex[index]; if (!term) return; diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.html b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.html index c155990a..563f046e 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.html +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.html @@ -118,7 +118,7 @@

{{ current_language_set?.casesheet?.provisionalDiag }}

{{ diag.term }} diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.ts b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.ts index 50bdd96d..f3191efe 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.ts +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.ts @@ -66,8 +66,6 @@ export class NcdCareDiagnosisComponent implements OnInit, DoCheck, OnDestroy { private readonly PAGE_BASE = 0; pageSize: number | undefined = undefined; - private readonly BOOTSTRAP_MAX_PAGES = 3; // when first page can't scroll, prefill up to this many extra pages - loadingMore: boolean[] = []; noMore: boolean[] = []; wantMore: boolean[] = []; @@ -340,12 +338,6 @@ export class NcdCareDiagnosisComponent implements OnInit, DoCheck, OnDestroy { }); } - onPanelReady(index: number, panelEl: HTMLElement) { - if (panelEl.scrollHeight <= panelEl.clientHeight && !this.noMore[index]) { - this.bootstrapUntilScrollable(index, panelEl); - } - } - onAutoNearEnd(index: number) { if (!this.loadingMore[index] && !this.noMore[index]) { this.fetchPage(index, true); @@ -354,34 +346,6 @@ export class NcdCareDiagnosisComponent implements OnInit, DoCheck, OnDestroy { } } - private bootstrapUntilScrollable(rowIndex: number, panelEl: HTMLElement) { - let fetched = 0; - - const tryFill = () => { - const scrollable = panelEl.scrollHeight > panelEl.clientHeight; - if ( - scrollable || - this.noMore[rowIndex] || - fetched >= this.BOOTSTRAP_MAX_PAGES - ) - return; - - if (this.loadingMore[rowIndex]) { - requestAnimationFrame(tryFill); - return; - } - - fetched++; - this.fetchPage(rowIndex, true); - - requestAnimationFrame(tryFill); - }; - - if (this.lastQueryByIndex[rowIndex]?.length >= 3) { - tryFill(); - } - } - private fetchPage(index: number, append = false) { const term = this.lastQueryByIndex[index]; if (!term) return; diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.html b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.html index 889d8677..915694b0 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.html +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.html @@ -22,7 +22,7 @@

{{ diag.term }} diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.ts b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.ts index 4ceaf249..12886875 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.ts +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.ts @@ -101,8 +101,6 @@ export class NcdScreeningDiagnosisComponent private readonly PAGE_BASE = 0; pageSize: number | undefined = undefined; - private readonly BOOTSTRAP_MAX_PAGES = 3; // when first page can't scroll, prefill up to this many extra pages - loadingMore: boolean[] = []; noMore: boolean[] = []; wantMore: boolean[] = []; @@ -594,12 +592,6 @@ export class NcdScreeningDiagnosisComponent }); } - onPanelReady(index: number, panelEl: HTMLElement) { - if (panelEl.scrollHeight <= panelEl.clientHeight && !this.noMore[index]) { - this.bootstrapUntilScrollable(index, panelEl); - } - } - onAutoNearEnd(index: number) { if (!this.loadingMore[index] && !this.noMore[index]) { this.fetchPage(index, true); @@ -608,34 +600,6 @@ export class NcdScreeningDiagnosisComponent } } - private bootstrapUntilScrollable(rowIndex: number, panelEl: HTMLElement) { - let fetched = 0; - - const tryFill = () => { - const scrollable = panelEl.scrollHeight > panelEl.clientHeight; - if ( - scrollable || - this.noMore[rowIndex] || - fetched >= this.BOOTSTRAP_MAX_PAGES - ) - return; - - if (this.loadingMore[rowIndex]) { - requestAnimationFrame(tryFill); - return; - } - - fetched++; - this.fetchPage(rowIndex, true); - - requestAnimationFrame(tryFill); - }; - - if (this.lastQueryByIndex[rowIndex]?.length >= 3) { - tryFill(); - } - } - private fetchPage(index: number, append = false) { const term = this.lastQueryByIndex[index]; if (!term) return; diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/pnc-diagnosis/pnc-diagnosis.component.html b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/pnc-diagnosis/pnc-diagnosis.component.html index 6ef708aa..b49d4fe8 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/pnc-diagnosis/pnc-diagnosis.component.html +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/pnc-diagnosis/pnc-diagnosis.component.html @@ -40,7 +40,6 @@

{{ current_language_set?.casesheet?.provisionalDiag }}

appAutocompleteScroller [threshold]="0.6" (nearEnd)="onAutoNearEnd('provisional', i)" - (panelReady)="onPanelReady('provisional', i, $event)" [displayWith]="displayDiagnosis" (optionSelected)=" onDiagnosisSelected('provisional', $event.option.value, i) @@ -143,7 +142,6 @@

{{ current_language_set?.common?.confirmDiagnosis }}

appAutocompleteScroller [threshold]="0.6" (nearEnd)="onAutoNearEnd('confirmatory', i)" - (panelReady)="onPanelReady('confirmatory', i, $event)" [displayWith]="displayDiagnosis" (optionSelected)=" onDiagnosisSelected('confirmatory', $event.option.value, i) diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/pnc-diagnosis/pnc-diagnosis.component.ts b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/pnc-diagnosis/pnc-diagnosis.component.ts index 7e40f254..56423bdd 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/pnc-diagnosis/pnc-diagnosis.component.ts +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/pnc-diagnosis/pnc-diagnosis.component.ts @@ -436,7 +436,6 @@ export class PncDiagnosisComponent } private readonly PAGE_BASE = 0; - private readonly BOOTSTRAP_MAX_PAGES = 3; state: any = { provisional: { @@ -504,17 +503,6 @@ export class PncDiagnosisComponent }); } - onPanelReady( - type: 'provisional' | 'confirmatory', - index: number, - panelEl: HTMLElement, - ) { - const s = this.state[type]; - if (panelEl.scrollHeight <= panelEl.clientHeight && !s.noMore[index]) { - this.bootstrapUntilScrollable(type, index, panelEl); - } - } - onAutoNearEnd(type: 'provisional' | 'confirmatory', index: number) { const s = this.state[type]; if (!s.loadingMore[index] && !s.noMore[index]) { @@ -524,32 +512,6 @@ export class PncDiagnosisComponent } } - private bootstrapUntilScrollable( - type: 'provisional' | 'confirmatory', - rowIndex: number, - panelEl: HTMLElement, - ) { - const s = this.state[type]; - let fetched = 0; - const tryFill = () => { - const scrollable = panelEl.scrollHeight > panelEl.clientHeight; - if ( - scrollable || - s.noMore[rowIndex] || - fetched >= this.BOOTSTRAP_MAX_PAGES - ) - return; - if (s.loadingMore[rowIndex]) { - requestAnimationFrame(tryFill); - return; - } - fetched++; - this.fetchPage(type, rowIndex, true); - requestAnimationFrame(tryFill); - }; - if (s.lastQueryByIndex[rowIndex]?.length >= 3) tryFill(); - } - private fetchPage( type: 'provisional' | 'confirmatory', index: number, diff --git a/src/app/app-modules/nurse-doctor/quick-consult/quick-consult.component.html b/src/app/app-modules/nurse-doctor/quick-consult/quick-consult.component.html index 2e9a3f7f..ad038518 100644 --- a/src/app/app-modules/nurse-doctor/quick-consult/quick-consult.component.html +++ b/src/app/app-modules/nurse-doctor/quick-consult/quick-consult.component.html @@ -625,7 +625,6 @@

appAutocompleteScroller [threshold]="0.6" (nearEnd)="onAutoNearEnd(i)" - (panelReady)="onPanelReady(i, $event)" autoActiveFirstOption [displayWith]="displayDiagnosis" (optionSelected)=" diff --git a/src/app/app-modules/nurse-doctor/quick-consult/quick-consult.component.ts b/src/app/app-modules/nurse-doctor/quick-consult/quick-consult.component.ts index e798bc28..69ddb5e3 100644 --- a/src/app/app-modules/nurse-doctor/quick-consult/quick-consult.component.ts +++ b/src/app/app-modules/nurse-doctor/quick-consult/quick-consult.component.ts @@ -171,8 +171,6 @@ export class QuickConsultComponent suggestedDiagnosisList: any = []; private readonly PAGE_BASE = 0; - private readonly BOOTSTRAP_MAX_PAGES = 3; // when first page can't scroll, prefill up to this many extra pages - loadingMore: boolean[] = []; noMore: boolean[] = []; wantMore: boolean[] = []; @@ -1406,12 +1404,6 @@ export class QuickConsultComponent }); } - onPanelReady(index: number, panelEl: HTMLElement) { - if (panelEl.scrollHeight <= panelEl.clientHeight && !this.noMore[index]) { - this.bootstrapUntilScrollable(index, panelEl); - } - } - onAutoNearEnd(index: number) { if (!this.loadingMore[index] && !this.noMore[index]) { this.fetchPage(index, true); @@ -1420,34 +1412,6 @@ export class QuickConsultComponent } } - private bootstrapUntilScrollable(rowIndex: number, panelEl: HTMLElement) { - let fetched = 0; - - const tryFill = () => { - const scrollable = panelEl.scrollHeight > panelEl.clientHeight; - if ( - scrollable || - this.noMore[rowIndex] || - fetched >= this.BOOTSTRAP_MAX_PAGES - ) - return; - - if (this.loadingMore[rowIndex]) { - requestAnimationFrame(tryFill); - return; - } - - fetched++; - this.fetchPage(rowIndex, true); - - requestAnimationFrame(tryFill); - }; - - if (this.lastQueryByIndex[rowIndex]?.length >= 3) { - tryFill(); - } - } - private fetchPage(index: number, append = false) { const term = this.lastQueryByIndex[index]; if (!term) return;