QOL: Patient Manager get data on package open

This commit is contained in:
2025-11-17 10:46:24 +02:00
parent a0bd74b703
commit 790bf0e4f8
2 changed files with 47 additions and 57 deletions

View File

@@ -4,11 +4,7 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_profile_provider.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_providers/patient_manager_provider.dart';
import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_colors.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart';
import 'package:provider/provider.dart';
class PatientProfileTile extends StatefulWidget { class PatientProfileTile extends StatefulWidget {
final PatientViewArguments arguments; final PatientViewArguments arguments;
@@ -30,29 +26,7 @@ class _PatientProfileTileState extends State<PatientProfileTile> {
return MihPackageTile( return MihPackageTile(
authenticateUser: true, authenticateUser: true,
onTap: () async { onTap: () async {
PatientManagerProvider patientManagerProvider = context.goNamed("patientProfile");
context.read<PatientManagerProvider>();
MzansiProfileProvider profileProvider =
context.read<MzansiProfileProvider>();
String? app_id = profileProvider.user!.app_id;
if (patientManagerProvider.selectedPatient == null) {
await MihPatientServices()
.getPatientDetails(app_id, patientManagerProvider);
}
patientManagerProvider.setSelectedPatientProfilePicUrl(
profileProvider.userProfilePicUrl!);
patientManagerProvider.setPersonalMode(true);
if (patientManagerProvider.selectedPatient != null) {
context.goNamed(
'patientProfile',
);
} else {
context.goNamed("patientProfileSetup");
}
// Navigator.of(context).pushNamed(
// '/patient-profile',
// arguments: widget.arguments,
// );
}, },
appName: "Patient Profile", appName: "Patient Profile",
appIcon: Icon( appIcon: Icon(

View File

@@ -3,6 +3,7 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tools.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mzansi_profile_provider.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_providers/patient_manager_provider.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_providers/patient_manager_provider.dart';
import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/package_tools/patient_claim_or_statement.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/package_tools/patient_claim_or_statement.dart';
import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/package_tools/patient_consultation.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/package_tools/patient_consultation.dart';
@@ -10,6 +11,7 @@ import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/p
import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/package_tools/patient_info.dart'; import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_profile/package_tools/patient_info.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_claim_statement_generation_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_claim_statement_generation_services.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_data_helper_services.dart';
import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart'; import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@@ -23,14 +25,30 @@ class PatientProfile extends StatefulWidget {
} }
class _PatientProfileState extends State<PatientProfile> { class _PatientProfileState extends State<PatientProfile> {
bool isLoading = true; bool _isLoadingInitialData = true;
Future<void> initialisePatientData() async { Future<void> _loadInitialData() async {
setState(() { setState(() {
isLoading = true; _isLoadingInitialData = true;
}); });
MzansiProfileProvider mzansiProfileProvider =
context.read<MzansiProfileProvider>();
PatientManagerProvider patientManagerProvider = PatientManagerProvider patientManagerProvider =
context.read<PatientManagerProvider>(); context.read<PatientManagerProvider>();
await MihDataHelperServices().loadUserDataOnly(
mzansiProfileProvider,
);
if (patientManagerProvider.selectedPatient == null) {
await MihPatientServices().getPatientDetails(
mzansiProfileProvider.user!.app_id, patientManagerProvider);
}
if (patientManagerProvider.selectedPatient == null) {
context.goNamed("patientProfileSetup");
return;
}
patientManagerProvider.setSelectedPatientProfilePicUrl(
mzansiProfileProvider.userProfilePicUrl!);
patientManagerProvider.setPersonalMode(mzansiProfileProvider.personalHome);
if (patientManagerProvider.selectedPatient != null) { if (patientManagerProvider.selectedPatient != null) {
await MihPatientServices() await MihPatientServices()
.getPatientConsultationNotes(patientManagerProvider); .getPatientConsultationNotes(patientManagerProvider);
@@ -39,29 +57,41 @@ class _PatientProfileState extends State<PatientProfile> {
patientManagerProvider); patientManagerProvider);
} }
setState(() { setState(() {
isLoading = false; _isLoadingInitialData = false;
}); });
} }
@override @override
void initState() { void initState() {
super.initState(); super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async { _loadInitialData();
initialisePatientData();
});
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MihPackage( return Consumer<PatientManagerProvider>(
appActionButton: getAction(), builder: (BuildContext context,
appTools: getTools(), PatientManagerProvider patientManagerProvider, Widget? child) {
appBody: getToolBody(), if (_isLoadingInitialData) {
appToolTitles: getToolTitle(), return Scaffold(
selectedbodyIndex: body: Center(
context.watch<PatientManagerProvider>().patientProfileIndex, child: Mihloadingcircle(),
onIndexChange: (newValue) { ),
context.read<PatientManagerProvider>().setPatientProfileIndex(newValue); );
}
return MihPackage(
appActionButton: getAction(),
appTools: getTools(),
appBody: getToolBody(),
appToolTitles: getToolTitle(),
selectedbodyIndex:
context.watch<PatientManagerProvider>().patientProfileIndex,
onIndexChange: (newValue) {
context
.read<PatientManagerProvider>()
.setPatientProfileIndex(newValue);
},
);
}, },
); );
} }
@@ -109,20 +139,6 @@ class _PatientProfileState extends State<PatientProfile> {
} }
List<Widget> getToolBody() { List<Widget> getToolBody() {
if (isLoading) {
return [
Center(
child: Mihloadingcircle(),
),
];
}
PatientManagerProvider patientManagerProvider =
context.read<PatientManagerProvider>();
if (patientManagerProvider.selectedPatient == null) {
return [
const SizedBox(),
];
}
List<Widget> toolBodies = [ List<Widget> toolBodies = [
PatientInfo(), PatientInfo(),
PatientConsultation(), PatientConsultation(),