Merge branch 'clinic_list' into 'development'

Clinic list

See merge request Cloud_Solution/doctor_app_flutter!354
merge-requests/355/merge
Mohammad Aljammal 5 years ago
commit 6b60605c77

@ -1,7 +1,11 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/core/viewModel/auth_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/doctor/profile_req_Model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/patient/patient_arrival/get_patient_arrival_list_request_model.dart';
import 'package:doctor_app_flutter/models/patient/patient_model.dart';
@ -11,11 +15,13 @@ import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/PatientCard.dart';
import 'package:doctor_app_flutter/widgets/patients/clinic_list_dropdwon.dart';
import 'package:doctor_app_flutter/widgets/shared/app_button.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
@ -41,6 +47,9 @@ class _PatientsScreenState extends State<PatientsScreen> {
List date;
List unFilterDate;
int clinicId;
AuthViewModel authProvider;
Color sideColor = Colors.black;
List<PatiantInformtion> responseModelList;
List<PatiantInformtion> responseModelList2;
@ -55,6 +64,7 @@ class _PatientsScreenState extends State<PatientsScreen> {
bool _isInit = true;
String patientType;
bool isSearch = false;
String patientTypeTitle;
var _isLoading = true;
var selectedFilter = 1;
@ -193,6 +203,7 @@ class _PatientsScreenState extends State<PatientsScreen> {
@override
Widget build(BuildContext context) {
authProvider = Provider.of(context);
_locations = [
TranslationBase.of(context).all,
TranslationBase.of(context).today,
@ -210,6 +221,10 @@ class _PatientsScreenState extends State<PatientsScreen> {
? widget.selectedType
: routeArgs['selectedType'];
if(routeArgs != null && routeArgs.containsKey("isSearch")){
isSearch = routeArgs['isSearch'];
}
if (!projectsProvider.isArabic)
patientTypeTitle = SERVICES_PATIANT_HEADER[int.parse(patientType)];
else
@ -290,9 +305,26 @@ class _PatientsScreenState extends State<PatientsScreen> {
: _isError
? DrAppEmbeddedError(error: error)
: lItems == null || lItems.length == 0
? DrAppEmbeddedError(
error:
TranslationBase.of(context).youDontHaveAnyPatient)
? Column(
children: [
if(int.parse(patientType)==7)
Container(
margin: EdgeInsets.only(top: 70),
child: ClinicList(clinicId: clinicId,onClinicChange: (newValue) {
clinicId = newValue;
changeClinic(newValue, context, model);
},),
),
Container(
margin: EdgeInsets.only(top: MediaQuery.of(context).size.height*0.35),
child: DrAppEmbeddedError(
error:
TranslationBase.of(context).youDontHaveAnyPatient),
),
],
)
: Container(
color: Colors.grey[200],
child: ListView(
@ -336,6 +368,11 @@ class _PatientsScreenState extends State<PatientsScreen> {
SizedBox(
height: 10.0,
),
if(int.parse(patientType)==7)
ClinicList(clinicId: clinicId,onClinicChange: (newValue) {
clinicId = newValue;
changeClinic(newValue, context, model);
},),
Padding(
padding: EdgeInsets.only(
top: MediaQuery.of(context)
@ -473,26 +510,87 @@ class _PatientsScreenState extends State<PatientsScreen> {
);
}
// filterPatients() {
// responseModelList = [];
// //if (selectedFilter > 1) {
// responseModelList2.forEach((element) {
// DateTime arrivedOn = DateTime.parse(element.arrivedOn);
// Duration dur = DateTime.now().difference(arrivedOn);
// if (selectedFilter == 2 && dur.inDays == 0) {
// responseModelList.add(element);
// } else if (selectedFilter == 3 && dur.inDays == 1) {
// responseModelList.add(element);
// } else if (selectedFilter == 4 && dur.inDays > 7) {
// responseModelList.add(element);
// } else if (selectedFilter == 1) {
// responseModelList.add(element);
// }
// });
// } else {
// responseModelList = responseModelList2;
// }
//}
changeClinic(clinicId, BuildContext context, model) async {
GifLoaderDialogUtils.showMyDialog(context);
Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
DoctorProfileModel doctorProfile = new DoctorProfileModel.fromJson(profile);
ProfileReqModel docInfo = new ProfileReqModel(
doctorID: doctorProfile.doctorID,
clinicID: clinicId,
license: true,
projectID: doctorProfile.projectID,
tokenID: '',
languageID: 2);
authProvider.getDocProfiles(docInfo.toJson(), allowChangeProfile: false)
.then((profileList) async {
print(profileList['DoctorProfileList'][0]);
int val2 = int.parse(patientType);
GetPatientArrivalListRequestModel
getPatientArrivalListRequestModel = GetPatientArrivalListRequestModel(
from: patient.From,
to: patient.To,
clinicID: profileList['DoctorProfileList'][0]['ClinicID'],
doctorID: profileList['DoctorProfileList'][0]['DoctorID'].toString(),
patientMRN: patient.getPatientID,
pageIndex: 0,
pageSize: 0);
model
.getPatientList(
getPatientArrivalListRequestModel.toJson(),
patientType)
.then((res) {
setState(() {
if (res != null && res['MessageStatus'] == 1) {
if (val2 == 7) {
if (res[SERVICES_PATIANT2[val2]] == null) {
_isError = true;
_isLoading = false;
this.error = error.toString();
} else {
var localList = [];
if (res["patientArrivalList"]["entityList"] == null) {
res["patientArrivalList"]["entityList"] = [];
}
res["patientArrivalList"]["entityList"].forEach((v) {
Map<String, dynamic> mergedPatient = {
...v,
...v["patientDetails"]
};
localList.add(mergedPatient);
});
lItems = localList;
}
}
parsed = lItems;
responseModelList = new ModelResponse.fromJson(parsed).list;
responseModelList2 = responseModelList;
_isError = false;
} else {
_isError = true;
error = model.error ?? res['ErrorEndUserMessage'] ??
res['ErrorMessage'];
}
_isLoading = false;
});
GifLoaderDialogUtils.hideDialog(context);
}).catchError((error) {
helpers.showErrorToast(error.toString());
GifLoaderDialogUtils.hideDialog(context);
});
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
helpers.showErrorToast(err);
});
}
InputDecoration buildInputDecoration(BuildContext context, hint) {
return InputDecoration(
@ -586,3 +684,6 @@ class _PatientsScreenState extends State<PatientsScreen> {
);
}
}

@ -0,0 +1,99 @@
// ignore: must_be_immutable
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class ClinicList extends StatelessWidget {
ProjectViewModel projectsProvider;
final int clinicId;
final Function (int value) onClinicChange;
ClinicList({Key key, this.clinicId, this.onClinicChange}) : super(key: key);
@override
Widget build(BuildContext context) {
// authProvider = Provider.of(context);
projectsProvider = Provider.of(context);
return Container(
child:
projectsProvider
.doctorClinicsList.length >
0
? FractionallySizedBox(
widthFactor: 0.9,
child: Column(
children: [
Container(
width: MediaQuery.of(context).size.width *0.8,
child: Center(
child: DropdownButtonHideUnderline(
child: DropdownButton(
dropdownColor:
Colors.white,
iconEnabledColor:
Colors.black,
isExpanded: true,
value: clinicId == null
? projectsProvider
.doctorClinicsList[
0]
.clinicID
: clinicId,
iconSize: 25,
elevation: 16,
selectedItemBuilder:
(BuildContext
context) {
return projectsProvider
.doctorClinicsList
.map((item) {
return Row(
mainAxisSize:
MainAxisSize
.max,
children: <Widget>[
AppText(
item.clinicName,
fontSize: SizeConfig
.textMultiplier *
2.1,
color: Colors
.black,
),
],
);
}).toList();
},
onChanged: (newValue){
onClinicChange(newValue);
},
items: projectsProvider
.doctorClinicsList
.map((item) {
return DropdownMenuItem(
child: Text(
item.clinicName,
textAlign:
TextAlign.end,
),
value: item.clinicID,
);
}).toList(),
)),
),
),
],
),
)
: AppText(
TranslationBase
.of(context)
.noClinic),
);
}
}

@ -35,7 +35,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
crossAxisCount: 2,
childAspectRatio: 1.5,
children: [
// if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
PatientProfileButton(
key: key,
patient: patient,
@ -54,7 +54,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
},
isLoading: model.state == ViewState.BusyLocal,
icon: 'create-episod.png'),
// if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
PatientProfileButton(
key: key,
patient: patient,
@ -64,7 +64,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
route: UPDATE_EPISODE,
icon: 'modilfy-episode.png'),
// if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
PatientProfileButton(
key: key,
patient: patient,
@ -72,7 +72,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
nameLine1: TranslationBase.of(context).radiology,
nameLine2: TranslationBase.of(context).service,
icon: 'radiology-1.png'),
// if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
PatientProfileButton(
key: key,
patient: patient,
@ -81,7 +81,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
nameLine2: TranslationBase.of(context).service,
icon: 'lab.png'),
// if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
PatientProfileButton(
key: key,
patient: patient,
@ -94,7 +94,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
*/
,
icon: 'heartbeat.png'),
// if (selectedPatientType != 7)
if (selectedPatientType != 7)
PatientProfileButton(
key: key,
patient: patient,
@ -109,9 +109,9 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
nameLine1: TranslationBase.of(context).previewHealth,
nameLine2: TranslationBase.of(context).summaryReport,
icon: 'radiology-1.png'),
// if (selectedPatientType != 0 &&
// selectedPatientType != 5 &&
// selectedPatientType != 7)
if (selectedPatientType != 0 &&
selectedPatientType != 5 &&
selectedPatientType != 7)
PatientProfileButton(
key: key,
patient: patient,
@ -119,7 +119,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
nameLine1: TranslationBase.of(context).progress,
nameLine2: TranslationBase.of(context).note,
icon: 'heartbeat.png'),
// if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
PatientProfileButton(
key: key,
patient: patient,
@ -150,7 +150,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
nameLine1: TranslationBase.of(context).orders,
nameLine2: TranslationBase.of(context).procedures,
icon: 'lab.png'),
// if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
PatientProfileButton(
key: key,
patient: patient,
@ -158,7 +158,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
nameLine1: TranslationBase.of(context).myReferral,
nameLine2: TranslationBase.of(context).patient,
icon: 'note.png'),
// if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
PatientProfileButton(
key: key,
patient: patient,
@ -166,7 +166,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
nameLine1: TranslationBase.of(context).patientSick,
nameLine2: TranslationBase.of(context).leave,
icon: 'sick_leaves_icons.png'),
// if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
if (int.parse(patientType) == 7 || int.parse(patientType) == 6)
PatientProfileButton(
key: key,
patient: patient,

Loading…
Cancel
Save