NEW: Patient Manager Provider Setup pt3
This commit is contained in:
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/claim_statement_file.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/files.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/notes.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/patient_access.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/patients.dart';
|
||||
|
||||
class PatientManagerProvider extends ChangeNotifier {
|
||||
@@ -9,6 +10,7 @@ class PatientManagerProvider extends ChangeNotifier {
|
||||
int patientManagerIndex;
|
||||
int fileViewerIndex;
|
||||
bool personalMode;
|
||||
List<PatientAccess>? myPaitentList;
|
||||
Patient? selectedPatient;
|
||||
List<Note>? consultationNotes;
|
||||
List<PFile>? patientDocuments;
|
||||
@@ -53,6 +55,11 @@ class PatientManagerProvider extends ChangeNotifier {
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void setMyPatientList({required List<PatientAccess>? myPaitentList}) {
|
||||
this.myPaitentList = myPaitentList ?? [];
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void setConsultationNotes({required List<Note>? consultationNotes}) {
|
||||
this.consultationNotes = consultationNotes ?? [];
|
||||
notifyListeners();
|
||||
|
||||
@@ -320,6 +320,7 @@ class MihGoRouter {
|
||||
name: "mihAccess",
|
||||
path: MihGoRouterPaths.mihAccess,
|
||||
builder: (BuildContext context, GoRouterState state) {
|
||||
KenLogger.success("MihGoRouter: mihAccess");
|
||||
if (context.watch<MzansiProfileProvider>().user == null) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
context.go(MihGoRouterPaths.mihHome);
|
||||
@@ -336,20 +337,21 @@ class MihGoRouter {
|
||||
name: "patientProfile",
|
||||
path: MihGoRouterPaths.patientProfile,
|
||||
builder: (BuildContext context, GoRouterState state) {
|
||||
final String? argPatientAppId = state.extra as String?;
|
||||
KenLogger.success("MihGoRouter: patientProfile");
|
||||
if (context.watch<MzansiProfileProvider>().user == null) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
context.go(MihGoRouterPaths.mihHome);
|
||||
});
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
return PatientProfile(patientAppId: argPatientAppId);
|
||||
return PatientProfile();
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
name: "patientProfileSetup",
|
||||
path: MihGoRouterPaths.patientProfileSetup,
|
||||
builder: (BuildContext context, GoRouterState state) {
|
||||
KenLogger.success("MihGoRouter: patientProfileSetup");
|
||||
if (context.watch<MzansiProfileProvider>().user == null) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
context.go(MihGoRouterPaths.mihHome);
|
||||
@@ -363,8 +365,8 @@ class MihGoRouter {
|
||||
name: "patientManager",
|
||||
path: MihGoRouterPaths.patientManager,
|
||||
builder: (BuildContext context, GoRouterState state) {
|
||||
final PatManagerArguments? args = state.extra as PatManagerArguments?;
|
||||
if (args == null) {
|
||||
KenLogger.success("MihGoRouter: patientManager");
|
||||
if (context.watch<MzansiProfileProvider>().business == null) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
context.go(MihGoRouterPaths.mihHome);
|
||||
});
|
||||
@@ -372,7 +374,6 @@ class MihGoRouter {
|
||||
}
|
||||
return PatManager(
|
||||
key: UniqueKey(),
|
||||
arguments: args,
|
||||
);
|
||||
},
|
||||
),
|
||||
@@ -380,14 +381,14 @@ class MihGoRouter {
|
||||
name: "patientManagerPatient",
|
||||
path: MihGoRouterPaths.patientManagerPatient,
|
||||
builder: (BuildContext context, GoRouterState state) {
|
||||
final String? argPatientAppId = state.extra as String?;
|
||||
KenLogger.success("MihGoRouter: patientManagerPatient");
|
||||
if (context.watch<MzansiProfileProvider>().user == null) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
context.go(MihGoRouterPaths.mihHome);
|
||||
});
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
return PatientProfile(patientAppId: argPatientAppId);
|
||||
return PatientProfile();
|
||||
},
|
||||
),
|
||||
// ========================== Mzansi Directory ==================================
|
||||
@@ -395,6 +396,7 @@ class MihGoRouter {
|
||||
name: "mzansiDirectory",
|
||||
path: MihGoRouterPaths.mzansiDirectory,
|
||||
builder: (BuildContext context, GoRouterState state) {
|
||||
KenLogger.success("MihGoRouter: mzansiDirectory");
|
||||
if (context.watch<MzansiProfileProvider>().user == null) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
context.go(MihGoRouterPaths.mihHome);
|
||||
@@ -409,6 +411,7 @@ class MihGoRouter {
|
||||
name: "fileViewer",
|
||||
path: MihGoRouterPaths.fileViewer,
|
||||
builder: (BuildContext context, GoRouterState state) {
|
||||
KenLogger.success("MihGoRouter: fileViewer");
|
||||
final FileViewArguments? args = state.extra as FileViewArguments?;
|
||||
return FullScreenFileViewer(arguments: args!);
|
||||
},
|
||||
@@ -417,6 +420,7 @@ class MihGoRouter {
|
||||
name: "printPreview",
|
||||
path: MihGoRouterPaths.printPreview,
|
||||
builder: (BuildContext context, GoRouterState state) {
|
||||
KenLogger.success("MihGoRouter: printPreview");
|
||||
final PrintPreviewArguments? args =
|
||||
state.extra as PrintPreviewArguments?;
|
||||
return MIHPrintPreview(arguments: args!);
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:mzansi_innovation_hub/main.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.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_services/mih_alert_services.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_services/mih_service_calls.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_services/mih_patient_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_components/mih_package_components/mih_button.dart';
|
||||
@@ -15,26 +17,12 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_error_message.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_warning_message.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_config/mih_env.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/app_user.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/business.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/business_user.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/patient_access.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/patients.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class BuildMyPatientListList extends StatefulWidget {
|
||||
final List<PatientAccess> patientAccesses;
|
||||
final AppUser signedInUser;
|
||||
final Business? business;
|
||||
final BusinessUser? businessUser;
|
||||
|
||||
const BuildMyPatientListList({
|
||||
super.key,
|
||||
required this.patientAccesses,
|
||||
required this.signedInUser,
|
||||
required this.business,
|
||||
required this.businessUser,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -51,24 +39,21 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
|
||||
|
||||
final baseAPI = AppEnviroment.baseApiUrl;
|
||||
|
||||
Future<void> submitApointment(int index) async {
|
||||
Future<void> submitApointment(MzansiProfileProvider profileProvider,
|
||||
PatientManagerProvider patientManagerProvider, int index) async {
|
||||
//To-Do: Add the appointment to the database
|
||||
// print("To-Do: Add the appointment to the database");
|
||||
String description =
|
||||
"Date: ${dateController.text}\nTime: ${timeController.text}\n";
|
||||
description += "Medical Practice: ${widget.business!.Name}\n";
|
||||
description += "Contact Number: ${widget.business!.contact_no}";
|
||||
description += "Medical Practice: ${profileProvider.business!.Name}\n";
|
||||
description += "Contact Number: ${profileProvider.business!.contact_no}";
|
||||
int statusCode;
|
||||
statusCode = await MihMzansiCalendarApis.addPatientAppointment(
|
||||
widget.signedInUser,
|
||||
profileProvider.user!,
|
||||
false,
|
||||
widget.patientAccesses[index].app_id,
|
||||
BusinessArguments(
|
||||
widget.signedInUser,
|
||||
widget.businessUser,
|
||||
widget.business,
|
||||
),
|
||||
"${widget.patientAccesses[index].fname} ${widget.patientAccesses[index].lname} - Doctors Visit",
|
||||
patientManagerProvider.myPaitentList![index].app_id,
|
||||
profileProvider.business!.business_id,
|
||||
"${patientManagerProvider.myPaitentList![index].fname} ${patientManagerProvider.myPaitentList![index].lname} - Doctors Visit",
|
||||
description,
|
||||
dateController.text,
|
||||
timeController.text,
|
||||
@@ -164,11 +149,16 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
|
||||
}
|
||||
}
|
||||
|
||||
void appointmentPopUp(int index, double width) {
|
||||
var firstLetterFName = widget.patientAccesses[index].fname;
|
||||
var firstLetterLName = widget.patientAccesses[index].lname;
|
||||
void appointmentPopUp(
|
||||
MzansiProfileProvider profileProvider,
|
||||
PatientManagerProvider patientManagerProvider,
|
||||
int index,
|
||||
double width,
|
||||
) {
|
||||
var firstLetterFName = patientManagerProvider.myPaitentList![index].fname;
|
||||
var firstLetterLName = patientManagerProvider.myPaitentList![index].lname;
|
||||
setState(() {
|
||||
idController.text = widget.patientAccesses[index].id_no;
|
||||
idController.text = patientManagerProvider.myPaitentList![index].id_no;
|
||||
fnameController.text = firstLetterFName;
|
||||
lnameController.text = firstLetterLName;
|
||||
});
|
||||
@@ -260,7 +250,8 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
|
||||
if (_formKey.currentState!.validate()) {
|
||||
bool filled = isAppointmentFieldsFilled();
|
||||
if (filled) {
|
||||
submitApointment(index);
|
||||
submitApointment(
|
||||
profileProvider, patientManagerProvider, index);
|
||||
} else {
|
||||
showDialog(
|
||||
context: context,
|
||||
@@ -299,8 +290,9 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
|
||||
);
|
||||
}
|
||||
|
||||
void noAccessWarning(int index) {
|
||||
if (widget.patientAccesses[index].status == "pending") {
|
||||
void noAccessWarning(
|
||||
PatientManagerProvider patientManagerProvider, int index) {
|
||||
if (patientManagerProvider.myPaitentList![index].status == "pending") {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
@@ -317,10 +309,11 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
|
||||
}
|
||||
}
|
||||
|
||||
bool hasAccessToProfile(int index) {
|
||||
bool hasAccessToProfile(
|
||||
PatientManagerProvider patientManagerProvider, int index) {
|
||||
var hasAccess = false;
|
||||
|
||||
if (widget.patientAccesses[index].status == "approved") {
|
||||
if (patientManagerProvider.myPaitentList![index].status == "approved") {
|
||||
hasAccess = true;
|
||||
} else {
|
||||
hasAccess = false;
|
||||
@@ -329,11 +322,15 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
|
||||
}
|
||||
|
||||
void patientProfileChoicePopUp(
|
||||
int index, Patient? patientProfile, double width) async {
|
||||
var firstLetterFName = widget.patientAccesses[index].fname;
|
||||
var firstLetterLName = widget.patientAccesses[index].lname;
|
||||
MzansiProfileProvider profileProvider,
|
||||
PatientManagerProvider patientManagerProvider,
|
||||
int index,
|
||||
double width,
|
||||
) async {
|
||||
var firstLetterFName = patientManagerProvider.myPaitentList![index].fname;
|
||||
var firstLetterLName = patientManagerProvider.myPaitentList![index].lname;
|
||||
setState(() {
|
||||
idController.text = widget.patientAccesses[index].id_no;
|
||||
idController.text = patientManagerProvider.myPaitentList![index].id_no;
|
||||
fnameController.text = firstLetterFName;
|
||||
lnameController.text = firstLetterLName;
|
||||
});
|
||||
@@ -405,7 +402,8 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
|
||||
children: [
|
||||
MihButton(
|
||||
onPressed: () {
|
||||
appointmentPopUp(index, width);
|
||||
appointmentPopUp(profileProvider,
|
||||
patientManagerProvider, index, width);
|
||||
},
|
||||
buttonColor: MihColors.getGreenColor(
|
||||
MzansiInnovationHub.of(context)!.theme.mode ==
|
||||
@@ -423,25 +421,14 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
|
||||
),
|
||||
),
|
||||
MihButton(
|
||||
onPressed: () {
|
||||
onPressed: () async {
|
||||
await MihPatientServices().getPatientDetails(
|
||||
patientManagerProvider.myPaitentList![index].app_id,
|
||||
patientManagerProvider);
|
||||
context.pop();
|
||||
context.pushNamed('patientManagerPatient',
|
||||
extra: PatientViewArguments(
|
||||
widget.signedInUser,
|
||||
patientProfile,
|
||||
widget.businessUser,
|
||||
widget.business,
|
||||
"business",
|
||||
));
|
||||
// Navigator.of(context)
|
||||
// .pushNamed('/patient-manager/patient',
|
||||
// arguments: PatientViewArguments(
|
||||
// widget.signedInUser,
|
||||
// patientProfile,
|
||||
// widget.businessUser,
|
||||
// widget.business,
|
||||
// "business",
|
||||
// ));
|
||||
context.pushNamed(
|
||||
'patientManagerPatient',
|
||||
);
|
||||
},
|
||||
buttonColor: MihColors.getSecondaryColor(
|
||||
MzansiInnovationHub.of(context)!.theme.mode ==
|
||||
@@ -468,33 +455,43 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
|
||||
);
|
||||
}
|
||||
|
||||
Widget displayMyPatientTile(int index, double width) {
|
||||
Widget displayMyPatientTile(
|
||||
MzansiProfileProvider profileProvider,
|
||||
PatientManagerProvider patientManagerProvider,
|
||||
int index,
|
||||
double width,
|
||||
) {
|
||||
var firstName = "";
|
||||
var lastName = "";
|
||||
String access = widget.patientAccesses[index].status.toUpperCase();
|
||||
String access =
|
||||
patientManagerProvider.myPaitentList![index].status.toUpperCase();
|
||||
TextSpan accessWithColour;
|
||||
var hasAccess = false;
|
||||
hasAccess = hasAccessToProfile(index);
|
||||
hasAccess = hasAccessToProfile(patientManagerProvider, index);
|
||||
//print(hasAccess);
|
||||
if (access == "APPROVED") {
|
||||
firstName = widget.patientAccesses[index].fname;
|
||||
lastName = widget.patientAccesses[index].lname;
|
||||
firstName = patientManagerProvider.myPaitentList![index].fname;
|
||||
lastName = patientManagerProvider.myPaitentList![index].lname;
|
||||
accessWithColour = TextSpan(
|
||||
text: "$access\n",
|
||||
style: TextStyle(
|
||||
color: MihColors.getGreenColor(
|
||||
MzansiInnovationHub.of(context)!.theme.mode == "Dark")));
|
||||
} else if (access == "PENDING") {
|
||||
firstName = "${widget.patientAccesses[index].fname[0]}********";
|
||||
lastName = "${widget.patientAccesses[index].lname[0]}********";
|
||||
firstName =
|
||||
"${patientManagerProvider.myPaitentList![index].fname[0]}********";
|
||||
lastName =
|
||||
"${patientManagerProvider.myPaitentList![index].lname[0]}********";
|
||||
accessWithColour = TextSpan(
|
||||
text: "$access\n",
|
||||
style: TextStyle(
|
||||
color: MihColors.getGreyColor(
|
||||
MzansiInnovationHub.of(context)!.theme.mode == "Dark")));
|
||||
} else {
|
||||
firstName = "${widget.patientAccesses[index].fname[0]}********";
|
||||
lastName = "${widget.patientAccesses[index].lname[0]}********";
|
||||
firstName =
|
||||
"${patientManagerProvider.myPaitentList![index].fname[0]}********";
|
||||
lastName =
|
||||
"${patientManagerProvider.myPaitentList![index].lname[0]}********";
|
||||
accessWithColour = TextSpan(
|
||||
text: "$access\n",
|
||||
style: TextStyle(
|
||||
@@ -512,7 +509,8 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
|
||||
),
|
||||
subtitle: RichText(
|
||||
text: TextSpan(
|
||||
text: "ID No.: ${widget.patientAccesses[index].id_no}\n",
|
||||
text:
|
||||
"ID No.: ${patientManagerProvider.myPaitentList![index].id_no}\n",
|
||||
style: DefaultTextStyle.of(context).style,
|
||||
children: <TextSpan>[
|
||||
const TextSpan(text: "Access: "),
|
||||
@@ -520,18 +518,16 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
|
||||
]),
|
||||
),
|
||||
onTap: () async {
|
||||
Patient? p;
|
||||
if (hasAccess) {
|
||||
await MIHApiCalls.fetchPatientByAppId(
|
||||
widget.patientAccesses[index].app_id)
|
||||
.then((result) {
|
||||
setState(() {
|
||||
p = result;
|
||||
});
|
||||
});
|
||||
patientProfileChoicePopUp(index, p, width);
|
||||
await MihPatientServices()
|
||||
.getPatientDetails(
|
||||
patientManagerProvider.myPaitentList![index].app_id,
|
||||
patientManagerProvider)
|
||||
.then((result) {});
|
||||
patientProfileChoicePopUp(
|
||||
profileProvider, patientManagerProvider, index, width);
|
||||
} else {
|
||||
noAccessWarning(index);
|
||||
noAccessWarning(patientManagerProvider, index);
|
||||
}
|
||||
},
|
||||
trailing: Icon(
|
||||
@@ -555,19 +551,25 @@ class _BuildPatientsListState extends State<BuildMyPatientListList> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
double screenWidth = MediaQuery.of(context).size.width;
|
||||
return ListView.separated(
|
||||
shrinkWrap: true,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
separatorBuilder: (BuildContext context, index) {
|
||||
return Divider(
|
||||
color: MihColors.getSecondaryColor(
|
||||
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
||||
return Consumer2<MzansiProfileProvider, PatientManagerProvider>(
|
||||
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(
|
||||
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
||||
);
|
||||
},
|
||||
itemCount: patientManagerProvider.myPaitentList!.length,
|
||||
itemBuilder: (context, index) {
|
||||
return displayMyPatientTile(
|
||||
profileProvider, patientManagerProvider, index, screenWidth);
|
||||
},
|
||||
);
|
||||
},
|
||||
itemCount: widget.patientAccesses.length,
|
||||
itemBuilder: (context, index) {
|
||||
return displayMyPatientTile(index, screenWidth);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,6 @@ class _PatManagerTileState extends State<PatManagerTile> {
|
||||
onTap: () {
|
||||
context.goNamed(
|
||||
'patientManager',
|
||||
extra: widget.arguments,
|
||||
);
|
||||
// Navigator.of(context).pushNamed(
|
||||
// '/patient-manager',
|
||||
|
||||
@@ -1,31 +1,21 @@
|
||||
import 'package:mzansi_innovation_hub/main.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.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_services/mih_service_calls.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_single_child_scroll.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_search_bar.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_config/mih_env.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/app_user.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/business.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/business_user.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/patient_access.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_manager/list_builders/build_my_patient_list_list.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class MyPatientList extends StatefulWidget {
|
||||
final AppUser signedInUser;
|
||||
final Business? business;
|
||||
final BusinessUser? businessUser;
|
||||
final bool personalSelected;
|
||||
|
||||
const MyPatientList({
|
||||
super.key,
|
||||
required this.signedInUser,
|
||||
this.business,
|
||||
this.businessUser,
|
||||
this.personalSelected = false,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -33,7 +23,6 @@ class MyPatientList extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _MyPatientListState extends State<MyPatientList> {
|
||||
late Future<List<PatientAccess>> _myPatientList;
|
||||
TextEditingController _myPatientSearchController = TextEditingController();
|
||||
final FocusNode _searchFocusNode = FocusNode();
|
||||
bool hasSearchedBefore = false;
|
||||
@@ -42,7 +31,8 @@ class _MyPatientListState extends State<MyPatientList> {
|
||||
|
||||
final FocusNode _focusNode = FocusNode();
|
||||
|
||||
Widget myPatientListTool(double width) {
|
||||
Widget myPatientListTool(MzansiProfileProvider profileProvider,
|
||||
PatientManagerProvider patientManagerProvider, double width) {
|
||||
return MihSingleChildScroll(
|
||||
child: Column(mainAxisSize: MainAxisSize.max, children: [
|
||||
Padding(
|
||||
@@ -56,10 +46,11 @@ class _MyPatientListState extends State<MyPatientList> {
|
||||
hintColor: MihColors.getPrimaryColor(
|
||||
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
||||
onPrefixIconTap: () {
|
||||
setState(() {
|
||||
setState(() async {
|
||||
_myPatientIdSearchString = _myPatientSearchController.text;
|
||||
_myPatientList = MIHApiCalls.getPatientAccessListOfBusiness(
|
||||
widget.business!.business_id);
|
||||
await MihPatientServices().getPatientAccessListOfBusiness(
|
||||
patientManagerProvider,
|
||||
profileProvider.business!.business_id);
|
||||
});
|
||||
},
|
||||
onClearIconTap: () {
|
||||
@@ -67,57 +58,21 @@ class _MyPatientListState extends State<MyPatientList> {
|
||||
_myPatientSearchController.clear();
|
||||
_myPatientIdSearchString = "";
|
||||
});
|
||||
getMyPatientList();
|
||||
getMyPatientList(profileProvider, patientManagerProvider);
|
||||
},
|
||||
searchFocusNode: _searchFocusNode,
|
||||
),
|
||||
),
|
||||
//spacer
|
||||
const SizedBox(height: 10),
|
||||
FutureBuilder(
|
||||
future: _myPatientList,
|
||||
builder: (context, snapshot) {
|
||||
//print("patient Liust ${snapshot.data}");
|
||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||
return const Mihloadingcircle();
|
||||
} else if (snapshot.connectionState == ConnectionState.done &&
|
||||
snapshot.hasData) {
|
||||
List<PatientAccess> patientsAccessList;
|
||||
if (_myPatientIdSearchString == "") {
|
||||
patientsAccessList = snapshot.data!;
|
||||
} else {
|
||||
patientsAccessList = filterAccessResults(
|
||||
snapshot.data!, _myPatientIdSearchString);
|
||||
//print(patientsList);
|
||||
}
|
||||
return displayMyPatientList(patientsAccessList);
|
||||
} else {
|
||||
return Center(
|
||||
child: Text(
|
||||
"Error pulling Patient Access Data\n$baseUrl/access-requests/business/patient/${widget.business!.business_id}",
|
||||
style: TextStyle(
|
||||
fontSize: 25,
|
||||
color: MihColors.getRedColor(
|
||||
MzansiInnovationHub.of(context)!.theme.mode ==
|
||||
"Dark")),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
displayMyPatientList(patientManagerProvider),
|
||||
]),
|
||||
);
|
||||
}
|
||||
|
||||
Widget displayMyPatientList(List<PatientAccess> patientsAccessList) {
|
||||
if (patientsAccessList.isNotEmpty) {
|
||||
return BuildMyPatientListList(
|
||||
patientAccesses: patientsAccessList,
|
||||
signedInUser: widget.signedInUser,
|
||||
business: widget.business,
|
||||
businessUser: widget.businessUser,
|
||||
);
|
||||
Widget displayMyPatientList(PatientManagerProvider patientManagerProvider) {
|
||||
if (patientManagerProvider.myPaitentList!.isNotEmpty) {
|
||||
return BuildMyPatientListList();
|
||||
}
|
||||
if (hasSearchedBefore && _myPatientIdSearchString.isNotEmpty) {
|
||||
return Column(
|
||||
@@ -228,10 +183,11 @@ class _MyPatientListState extends State<MyPatientList> {
|
||||
return templist;
|
||||
}
|
||||
|
||||
void getMyPatientList() {
|
||||
Future<void> getMyPatientList(MzansiProfileProvider profileProvider,
|
||||
PatientManagerProvider patientManagerProvider) async {
|
||||
await MihPatientServices().getPatientAccessListOfBusiness(
|
||||
patientManagerProvider, profileProvider.business!.business_id);
|
||||
setState(() {
|
||||
_myPatientList = MIHApiCalls.getPatientAccessListOfBusiness(
|
||||
widget.business!.business_id);
|
||||
hasSearchedBefore = true;
|
||||
});
|
||||
}
|
||||
@@ -239,8 +195,6 @@ class _MyPatientListState extends State<MyPatientList> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_myPatientList = MIHApiCalls.getPatientAccessListOfBusiness(
|
||||
widget.business!.business_id);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -256,10 +210,16 @@ class _MyPatientListState extends State<MyPatientList> {
|
||||
Widget build(BuildContext context) {
|
||||
final Size size = MediaQuery.sizeOf(context);
|
||||
final double width = size.width;
|
||||
return MihPackageToolBody(
|
||||
borderOn: false,
|
||||
innerHorizontalPadding: 10,
|
||||
bodyItem: myPatientListTool(width),
|
||||
return Consumer2<MzansiProfileProvider, PatientManagerProvider>(
|
||||
builder: (BuildContext context, MzansiProfileProvider profileProvider,
|
||||
PatientManagerProvider patientManagerProvider, Widget? child) {
|
||||
return MihPackageToolBody(
|
||||
borderOn: false,
|
||||
innerHorizontalPadding: 10,
|
||||
bodyItem:
|
||||
myPatientListTool(profileProvider, patientManagerProvider, width),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mih_calendar_provider.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_services/mih_alert_services.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_calendar_services.dart';
|
||||
@@ -22,27 +23,14 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_error_message.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_config/mih_env.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/app_user.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/appointment.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/business.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/business_user.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_packages/calendar/builder/build_appointment_list.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class WaitingRoom extends StatefulWidget {
|
||||
final AppUser signedInUser;
|
||||
final Business? business;
|
||||
final BusinessUser? businessUser;
|
||||
final bool personalSelected;
|
||||
final Function(int) onIndexChange;
|
||||
const WaitingRoom({
|
||||
super.key,
|
||||
required this.signedInUser,
|
||||
required this.business,
|
||||
required this.businessUser,
|
||||
required this.personalSelected,
|
||||
required this.onIndexChange,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -71,8 +59,12 @@ class _WaitingRoomState extends State<WaitingRoom> {
|
||||
|
||||
// Business Appointment Tool
|
||||
Widget getBusinessAppointmentsTool(double width) {
|
||||
return Consumer<MihCalendarProvider>(
|
||||
builder: (BuildContext context, MihCalendarProvider mihCalendarProvider,
|
||||
return Consumer3<MzansiProfileProvider, PatientManagerProvider,
|
||||
MihCalendarProvider>(
|
||||
builder: (BuildContext context,
|
||||
MzansiProfileProvider profileProvider,
|
||||
PatientManagerProvider patientManagerProvider,
|
||||
MihCalendarProvider mihCalendarProvider,
|
||||
Widget? child) {
|
||||
if (isLoading) {
|
||||
return const Center(
|
||||
@@ -132,7 +124,8 @@ class _WaitingRoomState extends State<WaitingRoom> {
|
||||
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
||||
onTap: () {
|
||||
// addAppointmentWindow();
|
||||
appointmentTypeSelection(mihCalendarProvider, width);
|
||||
appointmentTypeSelection(profileProvider,
|
||||
patientManagerProvider, mihCalendarProvider, width);
|
||||
},
|
||||
)
|
||||
],
|
||||
@@ -237,7 +230,10 @@ class _WaitingRoomState extends State<WaitingRoom> {
|
||||
}
|
||||
|
||||
void appointmentTypeSelection(
|
||||
MihCalendarProvider mihCalendarProvider, double width) {
|
||||
MzansiProfileProvider profileProvider,
|
||||
PatientManagerProvider patientManagerProvider,
|
||||
MihCalendarProvider mihCalendarProvider,
|
||||
double width) {
|
||||
String question = "What type of appointment would you like to add?";
|
||||
question +=
|
||||
"\n\nExisting Patient: Add an appointment for an patient your practice has access to.";
|
||||
@@ -268,7 +264,7 @@ class _WaitingRoomState extends State<WaitingRoom> {
|
||||
const SizedBox(height: 15),
|
||||
MihButton(
|
||||
onPressed: () {
|
||||
widget.onIndexChange(1);
|
||||
patientManagerProvider.setPatientManagerIndex(1);
|
||||
context.pop();
|
||||
},
|
||||
buttonColor: MihColors.getGreenColor(
|
||||
@@ -287,7 +283,7 @@ class _WaitingRoomState extends State<WaitingRoom> {
|
||||
const SizedBox(height: 10),
|
||||
MihButton(
|
||||
onPressed: () {
|
||||
widget.onIndexChange(2);
|
||||
patientManagerProvider.setPatientManagerIndex(2);
|
||||
context.pop();
|
||||
},
|
||||
buttonColor: MihColors.getGreenColor(
|
||||
@@ -307,7 +303,8 @@ class _WaitingRoomState extends State<WaitingRoom> {
|
||||
MihButton(
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
addAppointmentWindow(mihCalendarProvider, width);
|
||||
addAppointmentWindow(
|
||||
profileProvider, mihCalendarProvider, width);
|
||||
},
|
||||
buttonColor: MihColors.getGreenColor(
|
||||
MzansiInnovationHub.of(context)!.theme.mode == "Dark"),
|
||||
@@ -329,7 +326,7 @@ class _WaitingRoomState extends State<WaitingRoom> {
|
||||
);
|
||||
}
|
||||
|
||||
void addAppointmentWindow(
|
||||
void addAppointmentWindow(MzansiProfileProvider profileProvider,
|
||||
MihCalendarProvider mihCalendarProvider, double width) {
|
||||
showDialog(
|
||||
context: context,
|
||||
@@ -411,7 +408,8 @@ class _WaitingRoomState extends State<WaitingRoom> {
|
||||
child: MihButton(
|
||||
onPressed: () {
|
||||
if (_formKey.currentState!.validate()) {
|
||||
addAppointmentCall(mihCalendarProvider);
|
||||
addAppointmentCall(
|
||||
profileProvider, mihCalendarProvider);
|
||||
} else {
|
||||
MihAlertServices().formNotFilledCompletely(context);
|
||||
}
|
||||
@@ -442,34 +440,23 @@ class _WaitingRoomState extends State<WaitingRoom> {
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> addAppointmentCall(
|
||||
Future<void> addAppointmentCall(MzansiProfileProvider profileProvider,
|
||||
MihCalendarProvider mihCalendarProvider) async {
|
||||
if (isAppointmentInputValid()) {
|
||||
int statusCode;
|
||||
if (widget.personalSelected == false) {
|
||||
statusCode = await MihMzansiCalendarApis.addBusinessAppointment(
|
||||
widget.signedInUser,
|
||||
widget.business!,
|
||||
widget.businessUser!,
|
||||
true,
|
||||
_appointmentTitleController.text,
|
||||
_appointmentDescriptionIDController.text,
|
||||
_appointmentDateController.text,
|
||||
_appointmentTimeController.text,
|
||||
mihCalendarProvider,
|
||||
context,
|
||||
);
|
||||
} else {
|
||||
statusCode = await MihMzansiCalendarApis.addPersonalAppointment(
|
||||
widget.signedInUser,
|
||||
_appointmentTitleController.text,
|
||||
_appointmentDescriptionIDController.text,
|
||||
_appointmentDateController.text,
|
||||
_appointmentTimeController.text,
|
||||
mihCalendarProvider,
|
||||
context,
|
||||
);
|
||||
}
|
||||
statusCode = await MihMzansiCalendarApis.addBusinessAppointment(
|
||||
profileProvider.user!,
|
||||
profileProvider.business!,
|
||||
profileProvider.businessUser!,
|
||||
true,
|
||||
_appointmentTitleController.text,
|
||||
_appointmentDescriptionIDController.text,
|
||||
_appointmentDateController.text,
|
||||
_appointmentTimeController.text,
|
||||
mihCalendarProvider,
|
||||
context,
|
||||
);
|
||||
|
||||
if (statusCode == 201) {
|
||||
context.pop();
|
||||
successPopUp("Successfully Added Appointment",
|
||||
|
||||
@@ -2,17 +2,19 @@ import 'package:go_router/go_router.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package.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_objects/arguments.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_manager/package_tools/mih_patient_search.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_providers/mih_calendar_provider.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_packages/patient_manager/pat_manager/package_tools/my_patient_list.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_packages/patient_manager/pat_manager/package_tools/waiting_room.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_services/mih_mzansi_calendar_services.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class PatManager extends StatefulWidget {
|
||||
final PatManagerArguments arguments;
|
||||
const PatManager({
|
||||
super.key,
|
||||
required this.arguments,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -20,11 +22,39 @@ class PatManager extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _PatManagerState extends State<PatManager> {
|
||||
int _selcetedIndex = 0;
|
||||
bool isLoading = true;
|
||||
|
||||
void updateIndex(int index) {
|
||||
Future<void> initialisePatientData() async {
|
||||
setState(() {
|
||||
_selcetedIndex = index;
|
||||
isLoading = true;
|
||||
});
|
||||
MzansiProfileProvider profileProvider =
|
||||
context.read<MzansiProfileProvider>();
|
||||
PatientManagerProvider patientManagerProvider =
|
||||
context.read<PatientManagerProvider>();
|
||||
MihCalendarProvider mihCalendarProvider =
|
||||
context.read<MihCalendarProvider>();
|
||||
patientManagerProvider.setPersonalMode(false);
|
||||
if (profileProvider.business != null) {
|
||||
await MihMzansiCalendarApis.getBusinessAppointments(
|
||||
profileProvider.business!.business_id,
|
||||
false,
|
||||
mihCalendarProvider.selectedDay,
|
||||
mihCalendarProvider,
|
||||
);
|
||||
MihPatientServices().getPatientAccessListOfBusiness(
|
||||
patientManagerProvider, profileProvider.business!.business_id);
|
||||
}
|
||||
setState(() {
|
||||
isLoading = false;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||
initialisePatientData();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -35,24 +65,30 @@ class _PatManagerState extends State<PatManager> {
|
||||
appTools: getTools(),
|
||||
appBody: getToolBody(),
|
||||
appToolTitles: getToolTitle(),
|
||||
selectedbodyIndex: _selcetedIndex,
|
||||
selectedbodyIndex:
|
||||
context.watch<PatientManagerProvider>().patientManagerIndex,
|
||||
onIndexChange: (newValue) {
|
||||
setState(() {
|
||||
_selcetedIndex = newValue;
|
||||
});
|
||||
context.read<PatientManagerProvider>().setPatientManagerIndex(newValue);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
MihPackageAction getActionButton() {
|
||||
PatientManagerProvider patientManagerProvider =
|
||||
context.read<PatientManagerProvider>();
|
||||
return MihPackageAction(
|
||||
icon: const Icon(Icons.arrow_back),
|
||||
iconSize: 35,
|
||||
onTap: () {
|
||||
// Navigator.of(context).pop();
|
||||
context.goNamed(
|
||||
'mihHome',
|
||||
);
|
||||
patientManagerProvider.setPatientProfileIndex(0);
|
||||
patientManagerProvider.setPatientManagerIndex(0);
|
||||
if (!patientManagerProvider.personalMode) {
|
||||
context.pop();
|
||||
} else {
|
||||
context.goNamed(
|
||||
'mihHome',
|
||||
);
|
||||
}
|
||||
FocusScope.of(context).unfocus();
|
||||
},
|
||||
);
|
||||
@@ -61,55 +97,33 @@ class _PatManagerState extends State<PatManager> {
|
||||
MihPackageTools getTools() {
|
||||
Map<Widget, void Function()?> temp = {};
|
||||
temp[const Icon(Icons.calendar_month)] = () {
|
||||
setState(() {
|
||||
_selcetedIndex = 0;
|
||||
});
|
||||
context.read<PatientManagerProvider>().setPatientManagerIndex(0);
|
||||
};
|
||||
|
||||
temp[const Icon(Icons.check_box_outlined)] = () {
|
||||
setState(() {
|
||||
_selcetedIndex = 1;
|
||||
});
|
||||
context.read<PatientManagerProvider>().setPatientManagerIndex(1);
|
||||
};
|
||||
|
||||
temp[const Icon(Icons.search)] = () {
|
||||
setState(() {
|
||||
_selcetedIndex = 2;
|
||||
});
|
||||
context.read<PatientManagerProvider>().setPatientManagerIndex(2);
|
||||
};
|
||||
return MihPackageTools(
|
||||
tools: temp,
|
||||
selcetedIndex: _selcetedIndex,
|
||||
selcetedIndex:
|
||||
context.watch<PatientManagerProvider>().patientManagerIndex,
|
||||
);
|
||||
}
|
||||
|
||||
List<Widget> getToolBody() {
|
||||
List<Widget> toolBodies = [
|
||||
//appointment here
|
||||
// Appointments(
|
||||
WaitingRoom(),
|
||||
MyPatientList(),
|
||||
Placeholder(),
|
||||
// MihPatientSearch(
|
||||
// signedInUser: widget.arguments.signedInUser,
|
||||
// business: widget.arguments.business,
|
||||
// personalSelected: widget.arguments.personalSelected,
|
||||
// businessUser: widget.arguments.businessUser,
|
||||
// ),
|
||||
WaitingRoom(
|
||||
signedInUser: widget.arguments.signedInUser,
|
||||
business: widget.arguments.business,
|
||||
businessUser: widget.arguments.businessUser,
|
||||
personalSelected: widget.arguments.personalSelected,
|
||||
onIndexChange: updateIndex,
|
||||
),
|
||||
MyPatientList(
|
||||
signedInUser: widget.arguments.signedInUser,
|
||||
business: widget.arguments.business,
|
||||
businessUser: widget.arguments.businessUser,
|
||||
personalSelected: widget.arguments.personalSelected,
|
||||
),
|
||||
MihPatientSearch(
|
||||
signedInUser: widget.arguments.signedInUser,
|
||||
business: widget.arguments.business,
|
||||
personalSelected: widget.arguments.personalSelected,
|
||||
businessUser: widget.arguments.businessUser,
|
||||
),
|
||||
];
|
||||
return toolBodies;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,9 @@ 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_objects/arguments.dart';
|
||||
import 'package:flutter/material.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:provider/provider.dart';
|
||||
|
||||
class PatientProfileTile extends StatefulWidget {
|
||||
final PatientViewArguments arguments;
|
||||
@@ -26,6 +28,9 @@ class _PatientProfileTileState extends State<PatientProfileTile> {
|
||||
return MihPackageTile(
|
||||
authenticateUser: true,
|
||||
onTap: () {
|
||||
PatientManagerProvider patientManagerProvider =
|
||||
context.read<PatientManagerProvider>();
|
||||
patientManagerProvider.setPersonalMode(true);
|
||||
context.goNamed(
|
||||
'patientProfile',
|
||||
);
|
||||
|
||||
@@ -15,10 +15,8 @@ import 'package:mzansi_innovation_hub/mih_services/mih_patient_services.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class PatientProfile extends StatefulWidget {
|
||||
final String? patientAppId;
|
||||
const PatientProfile({
|
||||
super.key,
|
||||
required this.patientAppId,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -36,13 +34,11 @@ class _PatientProfileState extends State<PatientProfile> {
|
||||
context.read<MzansiProfileProvider>();
|
||||
PatientManagerProvider patientManagerProvider =
|
||||
context.read<PatientManagerProvider>();
|
||||
String? app_id = widget.patientAppId ?? profileProvider.user!.app_id;
|
||||
|
||||
String? app_id = profileProvider.user!.app_id;
|
||||
if (patientManagerProvider.selectedPatient == null) {
|
||||
await MihPatientServices()
|
||||
.getPatientDetails(app_id, patientManagerProvider);
|
||||
}
|
||||
|
||||
if (patientManagerProvider.selectedPatient == null) {
|
||||
// go to set up patient package
|
||||
context.goNamed("patientProfileSetup");
|
||||
@@ -61,7 +57,9 @@ class _PatientProfileState extends State<PatientProfile> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
initialisePatientData();
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||
initialisePatientData();
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -87,7 +85,6 @@ class _PatientProfileState extends State<PatientProfile> {
|
||||
iconSize: 35,
|
||||
onTap: () {
|
||||
patientManagerProvider.setPatientProfileIndex(0);
|
||||
patientManagerProvider.setPatientManagerIndex(0);
|
||||
if (!patientManagerProvider.personalMode) {
|
||||
context.pop();
|
||||
} else {
|
||||
|
||||
@@ -129,7 +129,6 @@ class MIHClaimStatementGenerationApi {
|
||||
List<ClaimStatementFile> docList = List<ClaimStatementFile>.from(
|
||||
l.map((model) => ClaimStatementFile.fromJson(model)));
|
||||
//print("Here3");
|
||||
print(docList);
|
||||
patientManagerProvider.setClaimsDocuments(
|
||||
patientClaimsDocuments: docList);
|
||||
return docList;
|
||||
|
||||
@@ -4,7 +4,6 @@ import 'package:go_router/go_router.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/app_user.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/appointment.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/arguments.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/business.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/business_user.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -291,7 +290,7 @@ class MihMzansiCalendarApis {
|
||||
AppUser signedInUser,
|
||||
bool personalSelected,
|
||||
String patientAppId,
|
||||
BusinessArguments businessArgs,
|
||||
String businessId,
|
||||
String title,
|
||||
String description,
|
||||
String date,
|
||||
@@ -306,7 +305,7 @@ class MihMzansiCalendarApis {
|
||||
},
|
||||
body: jsonEncode(<String, dynamic>{
|
||||
"app_id": patientAppId,
|
||||
"business_id": businessArgs.business?.business_id,
|
||||
"business_id": businessId,
|
||||
"title": title,
|
||||
"description": description,
|
||||
"date": date,
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:file_picker/file_picker.dart';
|
||||
import 'package:ken_logger/ken_logger.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/files.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/notes.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/patient_access.dart';
|
||||
import 'package:mzansi_innovation_hub/mih_components/mih_objects/patients.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';
|
||||
@@ -289,4 +290,21 @@ class MihPatientServices {
|
||||
}
|
||||
return response.statusCode;
|
||||
}
|
||||
|
||||
Future<List<PatientAccess>> getPatientAccessListOfBusiness(
|
||||
PatientManagerProvider patientManagerProvider,
|
||||
String business_id,
|
||||
) async {
|
||||
final response = await http.get(Uri.parse(
|
||||
"${AppEnviroment.baseApiUrl}/access-requests/business/patient/$business_id"));
|
||||
if (response.statusCode == 200) {
|
||||
Iterable l = jsonDecode(response.body);
|
||||
List<PatientAccess> patientAccesses = List<PatientAccess>.from(
|
||||
l.map((model) => PatientAccess.fromJson(model)));
|
||||
patientManagerProvider.setMyPatientList(myPaitentList: patientAccesses);
|
||||
return patientAccesses;
|
||||
} else {
|
||||
throw Exception('failed to pull patient access List for business');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,29 +126,6 @@ class MIHApiCalls {
|
||||
}
|
||||
}
|
||||
|
||||
/// This function is used to get list of access the business has.
|
||||
///
|
||||
/// Patameters: String business_id.
|
||||
///
|
||||
/// Returns List<PatientAccess> (List of access that match the above parameters).
|
||||
static Future<List<PatientAccess>> getPatientAccessListOfBusiness(
|
||||
String business_id) async {
|
||||
final response = await http.get(Uri.parse(
|
||||
"${AppEnviroment.baseApiUrl}/access-requests/business/patient/$business_id"));
|
||||
// var errorCode = response.statusCode.toString();
|
||||
// print(response.statusCode);
|
||||
// print(response.body);
|
||||
|
||||
if (response.statusCode == 200) {
|
||||
Iterable l = jsonDecode(response.body);
|
||||
List<PatientAccess> patientAccesses = List<PatientAccess>.from(
|
||||
l.map((model) => PatientAccess.fromJson(model)));
|
||||
return patientAccesses;
|
||||
} else {
|
||||
throw Exception('failed to pull patient access List for business');
|
||||
}
|
||||
}
|
||||
|
||||
/// This function is used to UPDATE access the business has.
|
||||
///
|
||||
/// Patameters:-
|
||||
|
||||
Reference in New Issue
Block a user