From cd8115c5978ba36259222d69a414029fc7510e1f Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Fri, 28 Nov 2025 13:22:54 +0200 Subject: [PATCH] QOL: Patient Manager Package performance improvements pt2 --- .../builder/build_appointment_list.dart | 2 - .../build_mih_patient_search_list.dart | 2 - .../build_my_patient_list_list.dart | 2 - .../package_tools/mih_patient_search.dart | 63 ++++++++--------- .../package_tools/my_patient_list.dart | 70 +++++++++---------- .../package_tools/waiting_room.dart | 40 +++++------ .../build_claim_statement_files_list.dart | 2 - .../list_builders/build_files_list.dart | 2 - .../list_builders/build_notes_list.dart | 2 - .../patient_claim_or_statement.dart | 7 +- .../package_tools/patient_consultation.dart | 6 +- .../package_tools/patient_documents.dart | 7 +- 12 files changed, 83 insertions(+), 122 deletions(-) diff --git a/Frontend/lib/mih_packages/calendar/builder/build_appointment_list.dart b/Frontend/lib/mih_packages/calendar/builder/build_appointment_list.dart index 04ede238..bfc22b6f 100644 --- a/Frontend/lib/mih_packages/calendar/builder/build_appointment_list.dart +++ b/Frontend/lib/mih_packages/calendar/builder/build_appointment_list.dart @@ -748,8 +748,6 @@ class _BuildAppointmentListState extends State { return Padding( padding: EdgeInsets.symmetric(horizontal: getPaddingSize()), child: ListView.builder( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, itemCount: mzansiProfileProvider.personalHome ? mihCalendarProvider.personalAppointments!.length : mihCalendarProvider.businessAppointments!.length, diff --git a/Frontend/lib/mih_packages/patient_manager/pat_manager/list_builders/build_mih_patient_search_list.dart b/Frontend/lib/mih_packages/patient_manager/pat_manager/list_builders/build_mih_patient_search_list.dart index fbaf353a..10c97f4d 100644 --- a/Frontend/lib/mih_packages/patient_manager/pat_manager/list_builders/build_mih_patient_search_list.dart +++ b/Frontend/lib/mih_packages/patient_manager/pat_manager/list_builders/build_mih_patient_search_list.dart @@ -558,8 +558,6 @@ class _BuildPatientsListState extends State { builder: (BuildContext context, MzansiProfileProvider profileProvider, PatientManagerProvider patientManagerProvider, Widget? child) { return ListView.separated( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), separatorBuilder: (BuildContext context, index) { return Divider( color: MihColors.getSecondaryColor( diff --git a/Frontend/lib/mih_packages/patient_manager/pat_manager/list_builders/build_my_patient_list_list.dart b/Frontend/lib/mih_packages/patient_manager/pat_manager/list_builders/build_my_patient_list_list.dart index 692f13bd..c7393d06 100644 --- a/Frontend/lib/mih_packages/patient_manager/pat_manager/list_builders/build_my_patient_list_list.dart +++ b/Frontend/lib/mih_packages/patient_manager/pat_manager/list_builders/build_my_patient_list_list.dart @@ -522,8 +522,6 @@ class _BuildPatientsListState extends State { builder: (BuildContext context, MzansiProfileProvider profileProvider, PatientManagerProvider patientManagerProvider, Widget? child) { return ListView.separated( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), separatorBuilder: (BuildContext context, index) { return Divider( color: MihColors.getSecondaryColor( diff --git a/Frontend/lib/mih_packages/patient_manager/pat_manager/package_tools/mih_patient_search.dart b/Frontend/lib/mih_packages/patient_manager/pat_manager/package_tools/mih_patient_search.dart index 0497e3b9..1a1e3a50 100644 --- a/Frontend/lib/mih_packages/patient_manager/pat_manager/package_tools/mih_patient_search.dart +++ b/Frontend/lib/mih_packages/patient_manager/pat_manager/package_tools/mih_patient_search.dart @@ -3,7 +3,6 @@ import 'package:mzansi_innovation_hub/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; @@ -34,38 +33,36 @@ class _MihPatientSearchState extends State { return Consumer( builder: (BuildContext context, PatientManagerProvider patientManagerProvider, Widget? child) { - return MihSingleChildScroll( - child: Column(mainAxisSize: MainAxisSize.max, children: [ - Padding( - padding: EdgeInsets.symmetric(horizontal: width / 20), - child: MihSearchBar( - controller: _mihPatientSearchController, - hintText: "Search Patient ID/ Aid No.", - prefixIcon: Icons.search, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - hintColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - onPrefixIconTap: () { - submitPatientSearch(patientManagerProvider); - }, - onClearIconTap: () { - setState(() { - _mihPatientSearchController.clear(); - _mihPatientSearchString = ""; - }); - patientManagerProvider - .setPatientSearchResults(patientSearchResults: []); - }, - searchFocusNode: _searchFocusNode, - ), + return Column(mainAxisSize: MainAxisSize.max, children: [ + Padding( + padding: EdgeInsets.symmetric(horizontal: width / 20), + child: MihSearchBar( + controller: _mihPatientSearchController, + hintText: "Search Patient ID/ Aid No.", + prefixIcon: Icons.search, + fillColor: MihColors.getSecondaryColor( + MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + hintColor: MihColors.getPrimaryColor( + MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + onPrefixIconTap: () { + submitPatientSearch(patientManagerProvider); + }, + onClearIconTap: () { + setState(() { + _mihPatientSearchController.clear(); + _mihPatientSearchString = ""; + }); + patientManagerProvider + .setPatientSearchResults(patientSearchResults: []); + }, + searchFocusNode: _searchFocusNode, ), - //spacer - const SizedBox(height: 10), + ), + //spacer + const SizedBox(height: 10), - displayPatientList(patientManagerProvider, _mihPatientSearchString), - ]), - ); + displayPatientList(patientManagerProvider, _mihPatientSearchString), + ]); }, ); } @@ -86,7 +83,9 @@ class _MihPatientSearchState extends State { Widget displayPatientList( PatientManagerProvider patientManagerProvider, String searchString) { if (patientManagerProvider.patientSearchResults.isNotEmpty) { - return BuildMihPatientSearchList(); + return Expanded( + child: BuildMihPatientSearchList(), + ); } else if (patientManagerProvider.patientSearchResults.isEmpty && searchString != "") { return Column( diff --git a/Frontend/lib/mih_packages/patient_manager/pat_manager/package_tools/my_patient_list.dart b/Frontend/lib/mih_packages/patient_manager/pat_manager/package_tools/my_patient_list.dart index f35c2fa7..e1cbd787 100644 --- a/Frontend/lib/mih_packages/patient_manager/pat_manager/package_tools/my_patient_list.dart +++ b/Frontend/lib/mih_packages/patient_manager/pat_manager/package_tools/my_patient_list.dart @@ -4,7 +4,6 @@ import 'package:mzansi_innovation_hub/mih_providers/mzansi_profile_provider.dart import 'package:mzansi_innovation_hub/mih_providers/patient_manager_provider.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_search_bar.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; @@ -33,46 +32,44 @@ class _MyPatientListState extends State { Widget myPatientListTool(MzansiProfileProvider profileProvider, PatientManagerProvider patientManagerProvider, double width) { - return MihSingleChildScroll( - child: Column(mainAxisSize: MainAxisSize.max, children: [ - Padding( - padding: EdgeInsets.symmetric(horizontal: width / 20), - child: MihSearchBar( - controller: _myPatientSearchController, - hintText: "Search Patient ID", - prefixIcon: Icons.search, - fillColor: MihColors.getSecondaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - hintColor: MihColors.getPrimaryColor( - MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - onPrefixIconTap: () { - setState(() async { - _myPatientIdSearchString = _myPatientSearchController.text; - await MihPatientServices().getPatientAccessListOfBusiness( - patientManagerProvider, - profileProvider.business!.business_id); - }); - }, - onClearIconTap: () { - setState(() { - _myPatientSearchController.clear(); - _myPatientIdSearchString = ""; - }); - getMyPatientList(profileProvider, patientManagerProvider); - }, - searchFocusNode: _searchFocusNode, - ), + return Column(mainAxisSize: MainAxisSize.max, children: [ + Padding( + padding: EdgeInsets.symmetric(horizontal: width / 20), + child: MihSearchBar( + controller: _myPatientSearchController, + hintText: "Search Patient ID", + prefixIcon: Icons.search, + fillColor: MihColors.getSecondaryColor( + MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + hintColor: MihColors.getPrimaryColor( + MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + onPrefixIconTap: () { + setState(() async { + _myPatientIdSearchString = _myPatientSearchController.text; + await MihPatientServices().getPatientAccessListOfBusiness( + patientManagerProvider, + profileProvider.business!.business_id); + }); + }, + onClearIconTap: () { + setState(() { + _myPatientSearchController.clear(); + _myPatientIdSearchString = ""; + }); + getMyPatientList(profileProvider, patientManagerProvider); + }, + searchFocusNode: _searchFocusNode, ), - //spacer - const SizedBox(height: 10), - displayMyPatientList(patientManagerProvider), - ]), - ); + ), + //spacer + const SizedBox(height: 10), + displayMyPatientList(patientManagerProvider), + ]); } Widget displayMyPatientList(PatientManagerProvider patientManagerProvider) { if (patientManagerProvider.myPaitentList!.isNotEmpty) { - return BuildMyPatientListList(); + return Expanded(child: BuildMyPatientListList()); } if (hasSearchedBefore && _myPatientIdSearchString.isNotEmpty) { return Column( @@ -199,7 +196,6 @@ class _MyPatientListState extends State { @override void dispose() { - // TODO: implement dispose super.dispose(); _myPatientSearchController.dispose(); _searchFocusNode.dispose(); diff --git a/Frontend/lib/mih_packages/patient_manager/pat_manager/package_tools/waiting_room.dart b/Frontend/lib/mih_packages/patient_manager/pat_manager/package_tools/waiting_room.dart index dfcae152..9d3b25dc 100644 --- a/Frontend/lib/mih_packages/patient_manager/pat_manager/package_tools/waiting_room.dart +++ b/Frontend/lib/mih_packages/patient_manager/pat_manager/package_tools/waiting_room.dart @@ -10,7 +10,6 @@ import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_calendar_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_calendar.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; @@ -71,29 +70,22 @@ class _WaitingRoomState extends State { } return Stack( children: [ - MihSingleChildScroll( - child: Column( - children: [ - MIHCalendar( - calendarWidth: 500, - rowHeight: 35, - setDate: (value) { - mihCalendarProvider.setSelectedDay(value); - setState(() { - selectedAppointmentDateController.text = value; - }); - }), - // Divider( - // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), - // ), - Row( - mainAxisSize: MainAxisSize.max, - children: [ - displayAppointmentList(mihCalendarProvider), - ], - ) - ], - ), + Column( + children: [ + MIHCalendar( + calendarWidth: 500, + rowHeight: 35, + setDate: (value) { + mihCalendarProvider.setSelectedDay(value); + setState(() { + selectedAppointmentDateController.text = value; + }); + }), + // Divider( + // color: MihColors.getSecondaryColor(MzansiInnovationHub.of(context)!.theme.mode == "Dark"), + // ), + displayAppointmentList(mihCalendarProvider) + ], ), Positioned( right: 10, diff --git a/Frontend/lib/mih_packages/patient_manager/pat_profile/list_builders/build_claim_statement_files_list.dart b/Frontend/lib/mih_packages/patient_manager/pat_profile/list_builders/build_claim_statement_files_list.dart index 026900ca..115c6963 100644 --- a/Frontend/lib/mih_packages/patient_manager/pat_profile/list_builders/build_claim_statement_files_list.dart +++ b/Frontend/lib/mih_packages/patient_manager/pat_profile/list_builders/build_claim_statement_files_list.dart @@ -266,8 +266,6 @@ class _BuildClaimStatementFileListState PatientManagerProvider patientManagerProvider, Widget? child) { if (patientManagerProvider.patientClaimsDocuments!.isNotEmpty) { return ListView.separated( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), separatorBuilder: (BuildContext context, int index) { return Divider( color: MihColors.getSecondaryColor( diff --git a/Frontend/lib/mih_packages/patient_manager/pat_profile/list_builders/build_files_list.dart b/Frontend/lib/mih_packages/patient_manager/pat_profile/list_builders/build_files_list.dart index 20abecb5..82ee8a5d 100644 --- a/Frontend/lib/mih_packages/patient_manager/pat_profile/list_builders/build_files_list.dart +++ b/Frontend/lib/mih_packages/patient_manager/pat_profile/list_builders/build_files_list.dart @@ -299,8 +299,6 @@ class _BuildFilesListState extends State { PatientManagerProvider patientManagerProvider, Widget? child) { if (patientManagerProvider.patientDocuments!.isNotEmpty) { return ListView.separated( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), separatorBuilder: (BuildContext context, int index) { return Divider( color: MihColors.getSecondaryColor( diff --git a/Frontend/lib/mih_packages/patient_manager/pat_profile/list_builders/build_notes_list.dart b/Frontend/lib/mih_packages/patient_manager/pat_profile/list_builders/build_notes_list.dart index 6bbc2b10..93cefa2d 100644 --- a/Frontend/lib/mih_packages/patient_manager/pat_profile/list_builders/build_notes_list.dart +++ b/Frontend/lib/mih_packages/patient_manager/pat_profile/list_builders/build_notes_list.dart @@ -222,8 +222,6 @@ class _BuildNotesListState extends State { PatientManagerProvider patientManagerProvider, Widget? child) { if (patientManagerProvider.consultationNotes!.isNotEmpty) { return ListView.separated( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), separatorBuilder: (BuildContext context, int index) { return Divider( color: MihColors.getSecondaryColor( diff --git a/Frontend/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_claim_or_statement.dart b/Frontend/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_claim_or_statement.dart index e28a3bae..c76e6bd7 100644 --- a/Frontend/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_claim_or_statement.dart +++ b/Frontend/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_claim_or_statement.dart @@ -48,12 +48,7 @@ class _PatientClaimOrStatementState extends State { PatientManagerProvider patientManagerProvider, Widget? child) { return Stack( children: [ - Column( - children: [ - //const Placeholder(), - BuildClaimStatementFileList(), - ], - ), + BuildClaimStatementFileList(), Visibility( visible: !patientManagerProvider.personalMode, child: Positioned( diff --git a/Frontend/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_consultation.dart b/Frontend/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_consultation.dart index 02858370..7e784ef1 100644 --- a/Frontend/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_consultation.dart +++ b/Frontend/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_consultation.dart @@ -8,7 +8,6 @@ import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_package_tool_body.dart'; @@ -290,10 +289,7 @@ class _PatientConsultationState extends State { PatientManagerProvider patientManagerProvider, Widget? child) { return Stack( children: [ - MihSingleChildScroll( - child: Column(children: [ - BuildNotesList(), - ])), + BuildNotesList(), Visibility( visible: !patientManagerProvider.personalMode, child: Positioned( diff --git a/Frontend/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_documents.dart b/Frontend/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_documents.dart index 9354feb0..6f65e00c 100644 --- a/Frontend/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_documents.dart +++ b/Frontend/lib/mih_packages/patient_manager/pat_profile/package_tools/patient_documents.dart @@ -8,7 +8,6 @@ import 'package:mzansi_innovation_hub/mih_services/mih_alert_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_file_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_validation_services.dart'; -import 'package:mzansi_innovation_hub/mih_package_components/mih_single_child_scroll.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_button.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_date_field.dart'; import 'package:mzansi_innovation_hub/mih_package_components/mih_form.dart'; @@ -565,11 +564,7 @@ class _PatientDocumentsState extends State { PatientManagerProvider patientManagerProvider, Widget? child) { return Stack( children: [ - MihSingleChildScroll( - child: Column(children: [ - BuildFilesList(), - ]), - ), + BuildFilesList(), getMenu(profileProvider, patientManagerProvider, width), ], );