Merge branch 'refactor' into 'development'

Refactor

See merge request Cloud_Solution/doctor_app_flutter!180
pull/182/head
Elham 5 years ago
commit 6057e6a266

@ -0,0 +1,412 @@
import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart';
import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/doctor/request_schedule.dart';
import 'package:doctor_app_flutter/models/patient/get_clinic_by_project_id_request.dart';
import 'package:doctor_app_flutter/models/patient/get_doctor_by_clinic_id_request.dart';
import 'package:doctor_app_flutter/models/patient/get_list_stp_referral_frequency_request.dart';
import 'package:doctor_app_flutter/models/patient/lab_orders/lab_orders_res_model.dart';
import 'package:doctor_app_flutter/models/patient/lab_result/lab_result.dart';
import 'package:doctor_app_flutter/models/patient/lab_result/lab_result_req_model.dart';
import 'package:doctor_app_flutter/models/patient/patient_model.dart';
import 'package:doctor_app_flutter/models/patient/prescription/prescription_report.dart';
import 'package:doctor_app_flutter/models/patient/prescription/prescription_report_for_in_patient.dart';
import 'package:doctor_app_flutter/models/patient/prescription/prescription_res_model.dart';
import 'package:doctor_app_flutter/models/patient/radiology/radiology_res_model.dart';
import 'package:doctor_app_flutter/models/patient/refer_to_doctor_request.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/vital_sign_res_model.dart';
class PatientService extends BaseService {
List<VitalSignResModel> _patientVitalSignList = [];
List<VitalSignResModel> patientVitalSignOrderdSubList = [];
List<VitalSignResModel> get patientVitalSignList => _patientVitalSignList;
List<LabOrdersResModel> _patientLabResultOrdersList = [];
List<LabOrdersResModel> get patientLabResultOrdersList =>
_patientLabResultOrdersList;
List<PrescriptionResModel> get patientPrescriptionsList =>
_patientPrescriptionsList;
List<PrescriptionResModel> _patientPrescriptionsList = [];
List<PrescriptionReportForInPatient> get prescriptionReportForInPatientList =>
_prescriptionReportForInPatientList;
List<PrescriptionReportForInPatient> _prescriptionReportForInPatientList = [];
List<RadiologyResModel> _patientRadiologyList = [];
List<RadiologyResModel> get patientRadiologyList => _patientRadiologyList;
List<PrescriptionReport> _prescriptionReport = [];
List<PrescriptionReport> get prescriptionReport => _prescriptionReport;
List<LabResult> _labResultList = [];
List<LabResult> get labResultList => _labResultList;
// TODO: replace var with model
var _patientProgressNoteList = [];
get patientProgressNoteList => _patientProgressNoteList;
// TODO: replace var with model
var _insuranceApporvalsList = [];
get insuranceApporvalsList => _insuranceApporvalsList;
// TODO: replace var with model
var _doctorsList = [];
get doctorsList => _doctorsList;
// TODO: replace var with model
var _clinicsList = [];
get clinicsList => _clinicsList;
// TODO: replace var with model
var _referalFrequancyList = [];
get referalFrequancyList => _referalFrequancyList;
DoctorsByClinicIdRequest _doctorsByClinicIdRequest =
DoctorsByClinicIdRequest();
STPReferralFrequencyRequest _referralFrequencyRequest =
STPReferralFrequencyRequest();
ClinicByProjectIdRequest _clinicByProjectIdRequest =
ClinicByProjectIdRequest();
ReferToDoctorRequest _referToDoctorRequest;
RequestSchedule _requestSchedule = RequestSchedule();
Future<dynamic> getPatientList(PatientModel patient, patientType) async {
hasError = false;
int val = int.parse(patientType);
dynamic localRes;
await baseAppClient.post(
GET_PATIENT + SERVICES_PATIANT[val],
onSuccess: (dynamic response, int statusCode) {
localRes = response;
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: {
"ProjectID": patient.ProjectID,
"ClinicID": patient.ClinicID,
"DoctorID": patient.DoctorID,
"FirstName": patient.FirstName,
"MiddleName": patient.MiddleName,
"LastName": patient.LastName,
"PatientMobileNumber": patient.PatientMobileNumber,
"PatientIdentificationID": patient.PatientIdentificationID,
"PatientID": patient.PatientID,
"From": patient.From,
"To": patient.To,
"LanguageID": patient.LanguageID,
"stamp": patient.stamp,
"IPAdress": patient.IPAdress,
"VersionID": patient.VersionID,
"Channel": patient.Channel,
"TokenID": patient.TokenID,
"SessionID": patient.SessionID,
"IsLoginForDoctorApp": patient.IsLoginForDoctorApp,
"PatientOutSA": patient.PatientOutSA
},
);
return Future.value(localRes);
}
Future getPatientVitalSign(patient) async {
hasError = false;
await baseAppClient.post(
GET_PATIENT_VITAL_SIGN,
onSuccess: (dynamic response, int statusCode) {
_patientVitalSignList = [];
response['List_DoctorPatientVitalSign'].forEach((v) {
_patientVitalSignList.add(new VitalSignResModel.fromJson(v));
});
if (_patientVitalSignList.length > 0) {
List<VitalSignResModel> patientVitalSignOrderdSubListTemp = [];
patientVitalSignOrderdSubListTemp = _patientVitalSignList;
patientVitalSignOrderdSubListTemp
.sort((VitalSignResModel a, VitalSignResModel b) {
return b.vitalSignDate.microsecondsSinceEpoch -
a.vitalSignDate.microsecondsSinceEpoch;
});
patientVitalSignOrderdSubList.clear();
int length = patientVitalSignOrderdSubListTemp.length >= 20
? 20
: patientVitalSignOrderdSubListTemp.length;
for (int x = 0; x < length; x++) {
patientVitalSignOrderdSubList
.add(patientVitalSignOrderdSubListTemp[x]);
}
}
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: patient,
);
}
Future getLabResultOrders(patient) async {
hasError = false;
await baseAppClient.post(
GET_PATIENT_LAB_OREDERS,
onSuccess: (dynamic response, int statusCode) {
_patientLabResultOrdersList = [];
response['List_GetLabOreders'].forEach((v) {
_patientLabResultOrdersList.add(new LabOrdersResModel.fromJson(v));
});
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: patient,
);
}
Future getOutPatientPrescriptions(patient) async {
hasError = false;
await baseAppClient.post(
GET_PRESCRIPTION,
onSuccess: (dynamic response, int statusCode) {
_patientPrescriptionsList = [];
response['PatientPrescriptionList'].forEach((v) {
_patientPrescriptionsList.add(new PrescriptionResModel.fromJson(v));
});
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: patient,
);
}
Future getInPatientPrescriptions(patient) async {
hasError = false;
await baseAppClient.post(
GET_PRESCRIPTION_REPORT_FOR_IN_PATIENT,
onSuccess: (dynamic response, int statusCode) {
_prescriptionReportForInPatientList = [];
response['List_PrescriptionReportForInPatient'].forEach((v) {
prescriptionReportForInPatientList
.add(PrescriptionReportForInPatient.fromJson(v));
});
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: patient,
);
}
Future getPrescriptionReport(prescriptionReqModel) async {
hasError = false;
await baseAppClient.post(
GET_PRESCRIPTION_REPORT,
onSuccess: (dynamic response, int statusCode) {
_prescriptionReport = [];
response['ListPRM'].forEach((v) {
_prescriptionReport.add(PrescriptionReport.fromJson(v));
});
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: prescriptionReqModel,
);
}
Future getPatientRadiology(patient) async {
hasError = false;
await baseAppClient.post(
GET_RADIOLOGY,
onSuccess: (dynamic response, int statusCode) {
_patientRadiologyList = [];
response['List_GetRadOreders'].forEach((v) {
_patientRadiologyList.add(new RadiologyResModel.fromJson(v));
});
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: patient,
);
}
Future getLabResult(LabOrdersResModel labOrdersResModel) async {
hasError = false;
RequestLabResult requestLabResult = RequestLabResult();
requestLabResult.sessionID = labOrdersResModel.setupID;
requestLabResult.orderNo = labOrdersResModel.orderNo;
requestLabResult.invoiceNo = labOrdersResModel.invoiceNo;
requestLabResult.patientTypeID = labOrdersResModel.patientType;
await baseAppClient.post(
GET_PATIENT_LAB_RESULTS,
onSuccess: (dynamic response, int statusCode) {
_labResultList = [];
response['List_GetLabNormal'].forEach((v) {
_labResultList.add(new LabResult.fromJson(v));
});
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: requestLabResult.toJson(),
);
}
Future getPatientInsuranceApprovals(patient) async {
hasError = false;
await baseAppClient.post(
PATIENT_INSURANCE_APPROVALS_URL,
onSuccess: (dynamic response, int statusCode) {
_insuranceApporvalsList = [];
_insuranceApporvalsList = response['List_ApprovalMain_InPatient'];
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: patient,
);
}
Future getPatientProgressNote(patient) async {
hasError = false;
await baseAppClient.post(
PATIENT_PROGRESS_NOTE_URL,
onSuccess: (dynamic response, int statusCode) {
_patientProgressNoteList = [];
_patientProgressNoteList = response['List_GetPregressNoteForInPatient'];
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: patient,
);
}
Future getClinicsList() async {
hasError = false;
await baseAppClient.post(
PATIENT_GET_CLINIC_BY_PROJECT_URL,
onSuccess: (dynamic response, int statusCode) {
_clinicsList = [];
_clinicsList = response['List_Clinic_All'];
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: _clinicByProjectIdRequest.toJson(),
);
}
Future getReferralFrequancyList() async {
hasError = false;
await baseAppClient.post(
PATIENT_GET_LIST_REFERAL_URL,
onSuccess: (dynamic response, int statusCode) {
_referalFrequancyList = [];
_referalFrequancyList = response['list_STPReferralFrequency'];
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: _referralFrequencyRequest.toJson(),
);
}
Future getDoctorsList(String clinicId) async {
hasError = false;
_doctorsByClinicIdRequest.clinicID = clinicId;
await baseAppClient.post(
PATIENT_GET_DOCTOR_BY_CLINIC_URL,
onSuccess: (dynamic response, int statusCode) {
_doctorsList = [];
_doctorsList = response['List_Doctors_All'];
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: _doctorsByClinicIdRequest.toJson(),
);
}
// TODO send the total model insted of each parameter
Future referToDoctor({String selectedDoctorID,
String selectedClinicID,
int admissionNo,
String extension,
String priority,
String frequency,
String referringDoctorRemarks,
int patientID,
int patientTypeID,
String roomID,
int projectID}) async {
hasError = false;
// TODO Change it to use it when we implement authentication user
Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
DoctorProfileModel doctorProfile = new DoctorProfileModel.fromJson(profile);
int doctorID = doctorProfile.doctorID;
int clinicId = doctorProfile.clinicID;
_referToDoctorRequest = ReferToDoctorRequest(
projectID: projectID,
admissionNo: admissionNo,
roomID: roomID,
referralClinic: selectedClinicID.toString(),
referralDoctor: selectedDoctorID.toString(),
createdBy: doctorID,
editedBy: doctorID,
patientID: patientID,
patientTypeID: patientTypeID,
referringClinic: clinicId,
referringDoctor: doctorID,
referringDoctorRemarks: referringDoctorRemarks,
priority: priority,
frequency: frequency,
extension: extension,
);
await baseAppClient.post(
PATIENT_PROGRESS_NOTE_URL,
onSuccess: (dynamic response, int statusCode) {},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
body: _referToDoctorRequest.toJson(),
);
}
}

@ -0,0 +1,244 @@
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/service/patient_service.dart';
import 'package:doctor_app_flutter/models/patient/lab_orders/lab_orders_res_model.dart';
import 'package:doctor_app_flutter/models/patient/lab_result/lab_result.dart';
import 'package:doctor_app_flutter/models/patient/patient_model.dart';
import 'package:doctor_app_flutter/models/patient/prescription/prescription_report.dart';
import 'package:doctor_app_flutter/models/patient/prescription/prescription_report_for_in_patient.dart';
import 'package:doctor_app_flutter/models/patient/prescription/prescription_res_model.dart';
import 'package:doctor_app_flutter/models/patient/radiology/radiology_res_model.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/vital_sign_res_model.dart';
import '../../locator.dart';
import 'base_view_model.dart';
class PatientViewModel extends BaseViewModel {
PatientService _patientService = locator<PatientService>();
List<VitalSignResModel> get patientVitalSignList =>
_patientService.patientVitalSignList;
List<VitalSignResModel> get patientVitalSignOrderdSubList =>
_patientService.patientVitalSignOrderdSubList;
List<LabOrdersResModel> get patientLabResultOrdersList =>
_patientService.patientLabResultOrdersList;
List<PrescriptionResModel> get patientPrescriptionsList =>
_patientService.patientPrescriptionsList;
List<PrescriptionReportForInPatient> get prescriptionReportForInPatientList =>
_patientService.prescriptionReportForInPatientList;
List<PrescriptionReport> get prescriptionReport =>
_patientService.prescriptionReport;
List<RadiologyResModel> get patientRadiologyList =>
_patientService.patientRadiologyList;
List<LabResult> get labResultList => _patientService.labResultList;
get insuranceApporvalsList => _patientService.insuranceApporvalsList;
get patientProgressNoteList => _patientService.patientProgressNoteList;
get clinicsList => _patientService.clinicsList;
get doctorsList => _patientService.doctorsList;
get referalFrequancyList => _patientService.referalFrequancyList;
Future getPatientList(PatientModel patient, patientType,
{bool isBusyLocal = false}) async {
if(isBusyLocal) {
setState(ViewState.BusyLocal);
} else {
setState(ViewState.Busy);
}
return _patientService.getPatientList(patient, patientType);
if (_patientService.hasError) {
error = _patientService.error;
if(isBusyLocal) {
setState(ViewState.ErrorLocal);
} else {
setState(ViewState.Error);
} } else
setState(ViewState.Idle);
}
Future getPatientVitalSign(patient) async {
setState(ViewState.Busy);
await _patientService.getPatientVitalSign(patient);
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
Future getLabResultOrders(patient) async {
setState(ViewState.Busy);
await _patientService.getLabResultOrders(patient);
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
Future getOutPatientPrescriptions(patient) async {
setState(ViewState.Busy);
await _patientService.getOutPatientPrescriptions(patient);
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
Future getInPatientPrescriptions(patient) async {
setState(ViewState.Busy);
await _patientService.getInPatientPrescriptions(patient);
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
Future getPrescriptionReport(patient) async {
setState(ViewState.Busy);
await _patientService.getPrescriptionReport(patient);
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
Future getPatientRadiology(patient) async {
setState(ViewState.Busy);
await _patientService.getPatientRadiology(patient);
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
Future getLabResult(LabOrdersResModel labOrdersResModel) async {
setState(ViewState.Busy);
await _patientService.getLabResult(labOrdersResModel);
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
Future getPatientInsuranceApprovals(patient) async {
setState(ViewState.Busy);
await _patientService.getPatientInsuranceApprovals(patient);
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
Future getPatientProgressNote(patient) async {
setState(ViewState.Busy);
await _patientService.getPatientProgressNote(patient);
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
Future getClinicsList() async {
setState(ViewState.Busy);
await _patientService.getClinicsList();
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.Error);
} else {
{
await getReferralFrequancyList();
setState(ViewState.Idle);
}
}
}
Future getDoctorsList(String clinicId) async {
setState(ViewState.BusyLocal);
await _patientService.getDoctorsList(clinicId);
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.ErrorLocal);
} else {
{
await getReferralFrequancyList();
setState(ViewState.Idle);
}
}
}
List getDoctorNameList() {
var doctorNamelist =
_patientService.doctorsList.map((value) => value['DoctorName'].toString()).toList();
return doctorNamelist;
}
List getClinicNameList() {
var clinicsNameslist = _patientService.clinicsList
.map((value) => value['ClinicDescription'].toString())
.toList();
return clinicsNameslist;
}
Future getReferralFrequancyList() async {
setState(ViewState.Busy);
await _patientService.getReferralFrequancyList();
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
List getReferralNamesList() {
var referralNamesList = _patientService.referalFrequancyList
.map((value) => value['Description'].toString())
.toList();
return referralNamesList;
}
Future referToDoctor(
{String selectedDoctorID,
String selectedClinicID,
int admissionNo,
String extension,
String priority,
String frequency,
String referringDoctorRemarks,
int patientID,
int patientTypeID,
String roomID,
int projectID}) async {
setState(ViewState.BusyLocal);
await _patientService.referToDoctor(
selectedClinicID: selectedClinicID,
selectedDoctorID: selectedDoctorID,
admissionNo: admissionNo,
extension: extension,
priority: priority,
frequency: frequency,
referringDoctorRemarks: referringDoctorRemarks,
patientID: patientID,
patientTypeID: patientTypeID,
roomID: roomID,
projectID: projectID);
if (_patientService.hasError) {
error = _patientService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
}
}

@ -1,3 +1,5 @@
import 'package:doctor_app_flutter/core/service/patient_service.dart';
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:get_it/get_it.dart'; import 'package:get_it/get_it.dart';
import 'core/service/doctor_reply_service.dart'; import 'core/service/doctor_reply_service.dart';
@ -24,6 +26,7 @@ void setupLocator() {
locator.registerLazySingleton(() => ReferralPatientService()); locator.registerLazySingleton(() => ReferralPatientService());
locator.registerLazySingleton(() => ReferredPatientService()); locator.registerLazySingleton(() => ReferredPatientService());
locator.registerLazySingleton(() => MedicineService()); locator.registerLazySingleton(() => MedicineService());
locator.registerLazySingleton(() => PatientService());
/// View Model /// View Model
locator.registerFactory(() => HospitalViewModel()); locator.registerFactory(() => HospitalViewModel());
@ -32,4 +35,5 @@ void setupLocator() {
locator.registerFactory(() => ReferralPatientViewModel()); locator.registerFactory(() => ReferralPatientViewModel());
locator.registerFactory(() => ReferredPatientViewModel()); locator.registerFactory(() => ReferredPatientViewModel());
locator.registerFactory(() => MedicineViewModel()); locator.registerFactory(() => MedicineViewModel());
locator.registerFactory(() => PatientViewModel());
} }

@ -1,4 +1,3 @@
import 'dart:convert';
import 'package:doctor_app_flutter/client/base_app_client.dart'; import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
@ -8,13 +7,12 @@ import 'package:doctor_app_flutter/models/patient/get_doctor_by_clinic_id_reques
import 'package:doctor_app_flutter/models/patient/get_list_stp_referral_frequency_request.dart'; import 'package:doctor_app_flutter/models/patient/get_list_stp_referral_frequency_request.dart';
import 'package:doctor_app_flutter/models/patient/lab_orders/lab_orders_res_model.dart'; import 'package:doctor_app_flutter/models/patient/lab_orders/lab_orders_res_model.dart';
import 'package:doctor_app_flutter/models/patient/lab_result/lab_result.dart'; import 'package:doctor_app_flutter/models/patient/lab_result/lab_result.dart';
import 'package:doctor_app_flutter/models/patient/lab_result/lab_result_req_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/patient/prescription/prescription_report.dart';
import 'package:doctor_app_flutter/models/patient/prescription/prescription_report_for_in_patient.dart'; import 'package:doctor_app_flutter/models/patient/prescription/prescription_report_for_in_patient.dart';
import 'package:doctor_app_flutter/models/patient/prescription/prescription_res_model.dart'; import 'package:doctor_app_flutter/models/patient/prescription/prescription_res_model.dart';
import 'package:doctor_app_flutter/models/patient/radiology/radiology_res_model.dart'; import 'package:doctor_app_flutter/models/patient/radiology/radiology_res_model.dart';
import 'package:doctor_app_flutter/models/patient/refer_to_doctor_request.dart'; import 'package:doctor_app_flutter/models/patient/refer_to_doctor_request.dart';
import 'package:doctor_app_flutter/models/patient/prescription/prescription_report.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
@ -114,166 +112,7 @@ class PatientsProvider with ChangeNotifier {
notifyListeners(); notifyListeners();
} }
/*
*@author: Elham Rababah
*@Date:27/4/2020
*@param: patient
*@return:
*@desc: getPatientVitalSign
*/
getPatientVitalSign(patient) async {
setBasicData();
try {
await baseAppClient.post(GET_PATIENT_VITAL_SIGN,
onSuccess: (dynamic response, int statusCode) {
patientVitalSignList = [];
response['List_DoctorPatientVitalSign'].forEach((v) {
patientVitalSignList.add(new VitalSignResModel.fromJson(v));
});
if (patientVitalSignList.length > 0) {
List<VitalSignResModel> patientVitalSignOrderdSubListTemp = [];
patientVitalSignOrderdSubListTemp = patientVitalSignList;
patientVitalSignOrderdSubListTemp
.sort((VitalSignResModel a, VitalSignResModel b) {
return b.vitalSignDate.microsecondsSinceEpoch -
a.vitalSignDate.microsecondsSinceEpoch;
});
patientVitalSignOrderdSubList.clear();
int length = patientVitalSignOrderdSubListTemp.length >= 20
? 20
: patientVitalSignOrderdSubListTemp.length;
for (int x = 0; x < length; x++) {
patientVitalSignOrderdSubList
.add(patientVitalSignOrderdSubListTemp[x]);
}
}
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
}
}
/*@author: Elham Rababah
*@Date:27/4/2020
*@param: patient
*@return:
*@desc: getLabResult Orders
*/
getLabResultOrders(patient) async {
// isLoading = true;
// notifyListeners();
setBasicData();
try {
await baseAppClient.post(GET_PATIENT_LAB_OREDERS,
onSuccess: (dynamic response, int statusCode) {
patientLabResultOrdersList = [];
response['List_GetLabOreders'].forEach((v) {
patientLabResultOrdersList.add(new LabOrdersResModel.fromJson(v));
});
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
}
}
/*@author: Elham Rababah
*@Date:3/5/2020
*@param: patient
*@return:
*@desc: geOutPatientPrescriptions
*/
getOutPatientPrescriptions(patient) async {
setBasicData();
try {
await baseAppClient.post(GET_PRESCRIPTION,
onSuccess: (dynamic response, int statusCode) {
patientPrescriptionsList = [];
response['PatientPrescriptionList'].forEach((v) {
patientPrescriptionsList.add(new PrescriptionResModel.fromJson(v));
});
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: patient);
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
}
}
/*@author: Mohammad Aljammal
*@Date:4/6/2020
*@param: patient
*@return:
*@desc: getInPatientPrescriptions
*/
getInPatientPrescriptions(patient) async {
setBasicData();
try {
prescriptionReportForInPatientList = [];
notifyListeners();
await baseAppClient.post(GET_PRESCRIPTION_REPORT_FOR_IN_PATIENT,
onSuccess: (dynamic response, int statusCode) {
response['List_PrescriptionReportForInPatient'].forEach((v) {
prescriptionReportForInPatientList
.add(PrescriptionReportForInPatient.fromJson(v));
});
isError = false;
isLoading = false;
}, onFailure: (String error, int statusCode) {
isError = true;
isLoading = false;
this.error = error;
}, body: patient);
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
}
}
getPrescriptionReport(prescriptionReqModel) async {
prescriptionReport = [];
isLoading = true;
isError = false;
error = "";
notifyListeners();
await baseAppClient.post(GET_PRESCRIPTION_REPORT,
onSuccess: (dynamic response, int statusCode) {
response['ListPRM'].forEach((v) {
prescriptionReport.add(PrescriptionReport.fromJson(v));
});
isError = false;
isLoading = false;
}, onFailure: (String error, int statusCode) {
isError = true;
isLoading = false;
this.error = error;
}, body: prescriptionReqModel);
notifyListeners();
}
/*@author: Elham Rababah /*@author: Elham Rababah
*@Date:12/5/2020 *@Date:12/5/2020
@ -289,254 +128,155 @@ class PatientsProvider with ChangeNotifier {
throw err; throw err;
} }
/*@author: Elham Rababah // /*@author: ibrahem albitar
*@Date:3/5/2020 // *@Date:3/6/2020
*@param: patient // *@desc: getDoctorsList
*@return: // */
*@desc: getPatientRadiology // getDoctorsList(String clinicId) async {
*/ // setBasicData();
getPatientRadiology(patient) async { // try {
// isLoading = true; // _doctorsByClinicIdRequest.clinicID = clinicId;
// notifyListeners(); // await baseAppClient.post(PATIENT_GET_DOCTOR_BY_CLINIC_URL,
setBasicData(); // onSuccess: (dynamic response, int statusCode) {
try { // doctorsList = response['List_Doctors_All'];
await baseAppClient.post(GET_RADIOLOGY, // isLoading = false;
onSuccess: (dynamic response, int statusCode) { // isError = false;
patientRadiologyList = []; // this.error = '';
response['List_GetRadOreders'].forEach((v) { // }, onFailure: (String error, int statusCode) {
patientRadiologyList.add(new RadiologyResModel.fromJson(v)); // isLoading = false;
}); // isError = true;
isLoading = false; // this.error = error;
isError = false; // }, body: _doctorsByClinicIdRequest.toJson());
this.error = ''; // notifyListeners();
}, onFailure: (String error, int statusCode) { // } catch (err) {
isLoading = false; // handelCatchErrorCase(err);
isError = true; // }
this.error = error; // }
}, body: patient); //
notifyListeners(); // List getDoctorNameList() {
} catch (err) { // var doctorNamelist =
handelCatchErrorCase(err); // doctorsList.map((value) => value['DoctorName'].toString()).toList();
} // return doctorNamelist;
} // }
//
getLabResult(LabOrdersResModel labOrdersResModel) async { // /*@author: ibrahem albitar
labResultList.clear(); // *@Date:3/6/2020
isLoading = true; // *@desc: getClinicsList
notifyListeners(); // */
RequestLabResult requestLabResult = RequestLabResult(); // getClinicsList() async {
requestLabResult.sessionID = labOrdersResModel.setupID; // setBasicData();
requestLabResult.orderNo = labOrdersResModel.orderNo; // try {
requestLabResult.invoiceNo = labOrdersResModel.invoiceNo; // await baseAppClient.post(PATIENT_GET_CLINIC_BY_PROJECT_URL,
requestLabResult.patientTypeID = labOrdersResModel.patientType; // onSuccess: (dynamic response, int statusCode) {
await baseAppClient.post(GET_PATIENT_LAB_RESULTS, // clinicsList = response['List_Clinic_All'];
onSuccess: (dynamic response, int statusCode) { // isLoading = false;
isError = false; // isError = false;
isLoading = false; // this.error = '';
response['List_GetLabNormal'].forEach((v) { // }, onFailure: (String error, int statusCode) {
labResultList.add(new LabResult.fromJson(v)); // isLoading = false;
}); // isError = true;
}, onFailure: (String error, int statusCode) { // this.error = error;
isError = true; // }, body: _clinicByProjectIdRequest.toJson());
isLoading = false; // notifyListeners();
this.error = error; // } catch (err) {
}, body: requestLabResult.toJson()); // handelCatchErrorCase(err);
notifyListeners(); // }
} // }
//
getPatientInsuranceApprovals(patient) async { // List getClinicNameList() {
setBasicData(); // var clinicsNameslist = clinicsList
try { // .map((value) => value['ClinicDescription'].toString())
await baseAppClient.post(PATIENT_INSURANCE_APPROVALS_URL, // .toList();
onSuccess: (dynamic response, int statusCode) { // return clinicsNameslist;
insuranceApporvalsList = response['List_ApprovalMain_InPatient']; // }
isLoading = false; //
isError = false; // /*@author: ibrahem albitar
this.error = ''; // *@Date:3/6/2020
}, onFailure: (String error, int statusCode) { // *@desc: getReferralFrequancyList
isLoading = false; // */
isError = true; // getReferralFrequancyList() async {
this.error = error; // setBasicData();
}, body: patient); // try {
notifyListeners(); // await baseAppClient.post(PATIENT_GET_LIST_REFERAL_URL,
} catch (err) { // onSuccess: (dynamic response, int statusCode) {
handelCatchErrorCase(err); // referalFrequancyList = response['list_STPReferralFrequency'];
} // isLoading = false;
} // isError = false;
// this.error = '';
/*@author: ibrahe albitar // }, onFailure: (String error, int statusCode) {
*@Date:2/6/2020 // isLoading = false;
*@desc: getPatientProgressNote // isError = true;
*/ // this.error = error;
getPatientProgressNote(patient) async { // }, body: _referralFrequencyRequest.toJson());
setBasicData(); // notifyListeners();
try { // } catch (err) {
await baseAppClient.post(PATIENT_PROGRESS_NOTE_URL, // handelCatchErrorCase(err);
onSuccess: (dynamic response, int statusCode) { // }
patientProgressNoteList = response['List_GetPregressNoteForInPatient']; // }
isLoading = false; //
isError = false; // List getReferralNamesList() {
this.error = ''; // var referralNamesList = referalFrequancyList
}, onFailure: (String error, int statusCode) { // .map((value) => value['Description'].toString())
isLoading = false; // .toList();
isError = true; // return referralNamesList;
this.error = error; // }
}, body: patient);
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
}
}
/*@author: ibrahem albitar
*@Date:3/6/2020
*@desc: getDoctorsList
*/
getDoctorsList(String clinicId) async {
setBasicData();
try {
_doctorsByClinicIdRequest.clinicID = clinicId;
await baseAppClient.post(PATIENT_GET_DOCTOR_BY_CLINIC_URL,
onSuccess: (dynamic response, int statusCode) {
doctorsList = response['List_Doctors_All'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: _doctorsByClinicIdRequest.toJson());
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
}
}
List getDoctorNameList() {
var doctorNamelist =
doctorsList.map((value) => value['DoctorName'].toString()).toList();
return doctorNamelist;
}
/*@author: ibrahem albitar
*@Date:3/6/2020
*@desc: getClinicsList
*/
getClinicsList() async {
setBasicData();
try {
await baseAppClient.post(PATIENT_GET_CLINIC_BY_PROJECT_URL,
onSuccess: (dynamic response, int statusCode) {
clinicsList = response['List_Clinic_All'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: _clinicByProjectIdRequest.toJson());
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
}
}
List getClinicNameList() {
var clinicsNameslist = clinicsList
.map((value) => value['ClinicDescription'].toString())
.toList();
return clinicsNameslist;
}
/*@author: ibrahem albitar
*@Date:3/6/2020
*@desc: getReferralFrequancyList
*/
getReferralFrequancyList() async {
setBasicData();
try {
await baseAppClient.post(PATIENT_GET_LIST_REFERAL_URL,
onSuccess: (dynamic response, int statusCode) {
referalFrequancyList = response['list_STPReferralFrequency'];
isLoading = false;
isError = false;
this.error = '';
}, onFailure: (String error, int statusCode) {
isLoading = false;
isError = true;
this.error = error;
}, body: _referralFrequencyRequest.toJson());
notifyListeners();
} catch (err) {
handelCatchErrorCase(err);
}
}
List getReferralNamesList() {
var referralNamesList = referalFrequancyList
.map((value) => value['Description'].toString())
.toList();
return referralNamesList;
}
/*@author: ibrahem albitar /*@author: ibrahem albitar
*@Date:3/6/2020 *@Date:3/6/2020
*@desc: referToDoctor *@desc: referToDoctor
*/ */
referToDoctor(context, // referToDoctor(context,
{String selectedDoctorID, // {String selectedDoctorID,
String selectedClinicID, // String selectedClinicID,
int admissionNo, // int admissionNo,
String extension, // String extension,
String priority, // String priority,
String frequency, // String frequency,
String referringDoctorRemarks, // String referringDoctorRemarks,
int patientID, // int patientID,
int patientTypeID, // int patientTypeID,
String roomID, // String roomID,
int projectID}) async { // int projectID}) async {
setBasicData(); // setBasicData();
try { // try {
String token = await sharedPref.getString(TOKEN); // String token = await sharedPref.getString(TOKEN);
Map profile = await sharedPref.getObj(DOCTOR_PROFILE); // Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
DoctorProfileModel doctorProfile = // DoctorProfileModel doctorProfile =
new DoctorProfileModel.fromJson(profile); // new DoctorProfileModel.fromJson(profile);
int doctorID = doctorProfile.doctorID; // int doctorID = doctorProfile.doctorID;
int clinicId = doctorProfile.clinicID; // int clinicId = doctorProfile.clinicID;
_referToDoctorRequest = ReferToDoctorRequest( // _referToDoctorRequest = ReferToDoctorRequest(
projectID: projectID, // projectID: projectID,
admissionNo: admissionNo, // admissionNo: admissionNo,
roomID: roomID, // roomID: roomID,
referralClinic: selectedClinicID.toString(), // referralClinic: selectedClinicID.toString(),
referralDoctor: selectedDoctorID.toString(), // referralDoctor: selectedDoctorID.toString(),
createdBy: doctorID, // createdBy: doctorID,
editedBy: doctorID, // editedBy: doctorID,
patientID: patientID, // patientID: patientID,
patientTypeID: patientTypeID, // patientTypeID: patientTypeID,
referringClinic: clinicId, // referringClinic: clinicId,
referringDoctor: doctorID, // referringDoctor: doctorID,
referringDoctorRemarks: referringDoctorRemarks, // referringDoctorRemarks: referringDoctorRemarks,
priority: priority, // priority: priority,
frequency: frequency, // frequency: frequency,
extension: extension, // extension: extension,
tokenID: token); // tokenID: token);
await baseAppClient.post(PATIENT_REFER_TO_DOCTOR_URL, // await baseAppClient.post(PATIENT_REFER_TO_DOCTOR_URL,
onSuccess: (dynamic response, int statusCode) { // onSuccess: (dynamic response, int statusCode) {
// print('Done : \n $res'); // // print('Done : \n $res');
Navigator.pop(context); // Navigator.pop(context);
}, // },
onFailure: (String error, int statusCode) { // onFailure: (String error, int statusCode) {
isLoading = false; // isLoading = false;
isError = true; // isError = true;
this.error = error; // this.error = error;
}, // },
body: _referToDoctorRequest.toJson()); // body: _referToDoctorRequest.toJson());
notifyListeners(); // notifyListeners();
//
} catch (err) { // } catch (err) {
handelCatchErrorCase(err); // handelCatchErrorCase(err);
} // }
} // }
} }

@ -32,7 +32,6 @@ import './screens/patients/profile/progress_note_screen.dart';
import './screens/patients/profile/radiology/radiology_screen.dart'; import './screens/patients/profile/radiology/radiology_screen.dart';
import './screens/patients/profile/vital_sign/vital_sign_details_screen.dart'; import './screens/patients/profile/vital_sign/vital_sign_details_screen.dart';
import './screens/patients/profile/vital_sign/vital_sign_item_details_screen.dart'; import './screens/patients/profile/vital_sign/vital_sign_item_details_screen.dart';
import './screens/patients/profile/vital_sign/vital_sign_screen.dart';
import './screens/profile_screen.dart'; import './screens/profile_screen.dart';
import './screens/settings/settings_screen.dart'; import './screens/settings/settings_screen.dart';
import 'landing_page.dart'; import 'landing_page.dart';
@ -96,7 +95,6 @@ var routes = {
PHARMACIES_LIST: (_) => PharmaciesListScreen( PHARMACIES_LIST: (_) => PharmaciesListScreen(
itemID: null, itemID: null,
), ),
VITAL_SIGN: (_) => VitalSignScreen(),
MESSAGES: (_) => MessagesScreen(), MESSAGES: (_) => MessagesScreen(),
SERVICES: (_) => ServicesScreen(), SERVICES: (_) => ServicesScreen(),
LAB_ORDERS: (_) => LabOrdersScreen(), LAB_ORDERS: (_) => LabOrdersScreen(),

@ -1,23 +1,23 @@
import 'package:barcode_scan/platform_wrapper.dart'; import 'package:barcode_scan/platform_wrapper.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart'; import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/patient/patient_model.dart'; import 'package:doctor_app_flutter/models/patient/patient_model.dart';
import 'package:doctor_app_flutter/models/patient/topten_users_res_model.dart'; import 'package:doctor_app_flutter/models/patient/topten_users_res_model.dart';
import 'package:doctor_app_flutter/providers/patients_provider.dart'; import 'package:doctor_app_flutter/providers/patients_provider.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_button.dart'; import 'package:doctor_app_flutter/widgets/shared/app_button.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bg_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import '../routes.dart'; import '../routes.dart';
import 'base/base_view.dart';
class QrReaderScreen extends StatefulWidget { class QrReaderScreen extends StatefulWidget {
@override @override
@ -55,18 +55,22 @@ class _QrReaderScreenState extends State<QrReaderScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return BaseView<PatientViewModel>(
appBarTitle: TranslationBase.of(context).qr+ TranslationBase.of(context).reader, onModelReady: (model) => model.getClinicsList(),
body: Center( builder: (_, model, w) => AppScaffold(
child: Container( baseViewModel: model,
margin: EdgeInsets.only(top: SizeConfig.realScreenHeight / 7), appBarTitle:
child: FractionallySizedBox( TranslationBase.of(context).qr + TranslationBase.of(context).reader,
widthFactor: 0.9, body: Center(
child: ListView( child: Container(
children: [ margin: EdgeInsets.only(top: SizeConfig.realScreenHeight / 7),
AppText( child: FractionallySizedBox(
TranslationBase.of(context).startScanning, widthFactor: 0.9,
fontSize: 18, child: ListView(
children: [
AppText(
TranslationBase.of(context).startScanning,
fontSize: 18,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
@ -89,7 +93,7 @@ class _QrReaderScreenState extends State<QrReaderScreen> {
), ),
Button( Button(
onTap: () { onTap: () {
_scanQrAndGetPatient(context); _scanQrAndGetPatient(context, model);
}, },
title: TranslationBase.of(context).scanQr, title: TranslationBase.of(context).scanQr,
loading: isLoading, loading: isLoading,
@ -111,20 +115,22 @@ class _QrReaderScreenState extends State<QrReaderScreen> {
error ?? error ??
TranslationBase.of(context) TranslationBase.of(context)
.errorMessage, .errorMessage,
color: Theme.of(context).errorColor)), color: Theme
.of(context)
.errorColor)),
], ],
), ),
) )
: Container(), : Container(),
], ],
),
),
),
), ),
), ),);
),
),
);
} }
_scanQrAndGetPatient(BuildContext context) async { _scanQrAndGetPatient(BuildContext context, PatientViewModel model) async {
/// When give qr we will change this method to get data /// When give qr we will change this method to get data
/// var result = await BarcodeScanner.scan(); /// var result = await BarcodeScanner.scan();
/// int patientID = get from qr result /// int patientID = get from qr result
@ -148,8 +154,8 @@ class _QrReaderScreenState extends State<QrReaderScreen> {
// Provider.of<PatientsProvider>(context, listen: false); // Provider.of<PatientsProvider>(context, listen: false);
patient.PatientID = 8808; patient.PatientID = 8808;
patient.TokenID = token; patient.TokenID = token;
Provider.of<PatientsProvider>(context, listen: false) model
.getPatientList(patient, "1") .getPatientList(patient, "1", isBusyLocal: true)
.then((response) { .then((response) {
if (response['MessageStatus'] == 1) { if (response['MessageStatus'] == 1) {
switch (patientType) { switch (patientType) {

@ -1,15 +1,14 @@
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/models/patient/prescription/prescription_res_model.dart'; import 'package:doctor_app_flutter/models/patient/prescription/prescription_res_model.dart';
import 'package:doctor_app_flutter/models/patient/prescription/request_prescription_report.dart'; import 'package:doctor_app_flutter/models/patient/prescription/request_prescription_report.dart';
import 'package:doctor_app_flutter/providers/patients_provider.dart'; import 'package:doctor_app_flutter/providers/patients_provider.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/profile/prescriptions/out_patient_prescription_details_item.dart'; import 'package:doctor_app_flutter/screens/patients/profile/prescriptions/out_patient_prescription_details_item.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_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:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
class OutPatientPrescriptionDetailsScreen extends StatefulWidget { class OutPatientPrescriptionDetailsScreen extends StatefulWidget {
final PrescriptionResModel prescriptionResModel; final PrescriptionResModel prescriptionResModel;
@ -26,41 +25,32 @@ class _OutPatientPrescriptionDetailsScreenState
bool _isInit = true; bool _isInit = true;
PatientsProvider patientsProvider; PatientsProvider patientsProvider;
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
patientsProvider = Provider.of<PatientsProvider>(context);
RequestPrescriptionReport prescriptionReqModel = getPrescriptionReport(BuildContext context,PatientViewModel model ){
RequestPrescriptionReport( RequestPrescriptionReport prescriptionReqModel =
appointmentNo: widget.prescriptionResModel.appointmentNo, RequestPrescriptionReport(
episodeID: widget.prescriptionResModel.episodeID, appointmentNo: widget.prescriptionResModel.appointmentNo,
setupID: widget.prescriptionResModel.setupID, episodeID: widget.prescriptionResModel.episodeID,
patientTypeID: widget.prescriptionResModel.patientID); setupID: widget.prescriptionResModel.setupID,
patientsProvider.getPrescriptionReport(prescriptionReqModel.toJson()); patientTypeID: widget.prescriptionResModel.patientID);
} model.getPrescriptionReport(prescriptionReqModel.toJson());
_isInit = false;
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return BaseView<PatientViewModel>(
appBarTitle: TranslationBase.of(context).prescriptionDetails, onModelReady: (model) => getPrescriptionReport(context, model),
body: patientsProvider.isLoading builder: (_, model, w) => AppScaffold(
? DrAppCircularProgressIndeicator() appBarTitle: TranslationBase.of(context).prescriptionDetails,
: patientsProvider.isError body: CardWithBgWidgetNew(
? DrAppEmbeddedError(error: patientsProvider.error)
: CardWithBgWidgetNew(
widget: ListView.builder( widget: ListView.builder(
itemCount: patientsProvider.prescriptionReport.length, itemCount: patientsProvider.prescriptionReport.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return OutPatientPrescriptionDetailsItem( return OutPatientPrescriptionDetailsItem(
prescriptionReport: prescriptionReport:
patientsProvider.prescriptionReport[index], model.prescriptionReport[index],
); );
}), }),
), ),
); ),);
} }
} }

@ -1,67 +0,0 @@
import 'package:doctor_app_flutter/models/patient/patient_model.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../providers/patients_provider.dart';
class PatientsListScreen extends StatefulWidget {
@override
_PatientsListScreenState createState() => _PatientsListScreenState();
}
class _PatientsListScreenState extends State<PatientsListScreen> {
var _isInit = true;
var _isLoading = true;
var _hasError;
@override
void didChangeDependencies() {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatientModel patient = routeArgs['patientSearchForm'];
print(patient.TokenID+"EEEEEE");
String patientType = routeArgs['selectedType'];
print(patientType);
if (_isInit) {
PatientsProvider patientsProv = Provider.of<PatientsProvider>(context);
patientsProv.getPatientList(patient, patientType).then((res) {
// print('MessageStatus${res['MessageStatus']}');
print('List_MyInPatient${(res['List_MyInPatient'][0])}');
setState(() {
_isLoading = false;
_hasError = res['ErrorEndUserMessage'];
});
print(res);
}).catchError((error) {
print(error);
});
}
_isInit = false;
super.didChangeDependencies();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('PatientsListScreen'),
),
body: _isLoading
? Center(
child: CircularProgressIndicator(),
)
: Container(
child: _hasError != null
? Center(
child: Text(
_hasError,
style: TextStyle(color: Theme.of(context).errorColor),
),
)
: Text('EEEEEEEEEEEEEE'),
),
);
}
}
/*
{ProjectID: 15, ClinicID: null, DoctorID: 4709, PatientID: 1288076, DoctorName: SHAZIA MAQSOOD, DoctorNameN: null, FirstName: LAMA, MiddleName: ABDULLAH, LastName: AL-SALOOM, FirstNameN: null, MiddleNameN: null, LastNameN: null, Gender: 2, DateofBirth: /Date(522363600000+0300)/, NationalityID: null, MobileNumber: 0543133371, EmailAddress: Lala_as@hotmail.com, PatientIdentificationNo: 1040451369, PatientType: 1, AdmissionNo: 2020008493, AdmissionDate: /Date(1587589200000+0300)/, RoomID: 119, BedID: 119, NursingStationID: null, Description: null, ClinicDescription: OB-GYNE, ClinicDescriptionN: null, NationalityName: Saudi, NationalityNameN: null, Age: 34 Yr, GenderDescription: Female, NursingStationName: Post Natal Ward A2}
*/

@ -1,12 +1,13 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/models/patient/insurance_aprovals_request.dart'; import 'package:doctor_app_flutter/models/patient/insurance_aprovals_request.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
import '../../../config/shared_pref_kay.dart'; import '../../../config/shared_pref_kay.dart';
import '../../../config/size_config.dart'; import '../../../config/size_config.dart';
@ -15,7 +16,6 @@ import '../../../providers/patients_provider.dart';
import '../../../util/dr_app_shared_pref.dart'; import '../../../util/dr_app_shared_pref.dart';
import '../../../widgets/shared/app_scaffold_widget.dart'; import '../../../widgets/shared/app_scaffold_widget.dart';
import '../../../widgets/shared/app_texts_widget.dart'; import '../../../widgets/shared/app_texts_widget.dart';
import '../../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
@ -46,7 +46,8 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
*@return: *@return:
*@desc: *@desc:
*/ */
getInsuranceApprovalsList(context) async { getInsuranceApprovalsList(
BuildContext context, PatientViewModel model) async {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient']; PatiantInformtion patient = routeArgs['patient'];
String token = await sharedPref.getString(TOKEN); String token = await sharedPref.getString(TOKEN);
@ -60,62 +61,58 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
tokenID: token, tokenID: token,
patientTypeID: patient.patientType, patientTypeID: patient.patientType,
languageID: 2); languageID: 2);
patientsProv model
.getPatientInsuranceApprovals(insuranceApprovalsRequest.toJson()).then((c){ .getPatientInsuranceApprovals(insuranceApprovalsRequest.toJson()).then((c){
approvalsList = patientsProv.insuranceApporvalsList; approvalsList = model.insuranceApporvalsList;
}); });
} }
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
patientsProv = Provider.of<PatientsProvider>(context);
getInsuranceApprovalsList(context);
approvalsList = patientsProv.insuranceApporvalsList;
_isInit = false;
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return BaseView<PatientViewModel>(
appBarTitle: TranslationBase.of(context).insuranceApprovals, onModelReady: (model) => getInsuranceApprovalsList(context, model),
body: patientsProv.isLoading builder: (_, model, w) =>
? DrAppCircularProgressIndeicator() AppScaffold(
: patientsProv.isError baseViewModel: model,
? DrAppEmbeddedError(error: patientsProv.error) appBarTitle: TranslationBase
: patientsProv.insuranceApporvalsList == null || patientsProv.insuranceApporvalsList.length == 0 .of(context)
? DrAppEmbeddedError( .insuranceApprovals,
error: body: model.insuranceApporvalsList == null ||
TranslationBase.of(context).errorNoInsuranceApprovals) model.insuranceApporvalsList.length == 0
: Column( ? DrAppEmbeddedError(
children: <Widget>[ error:
Container( TranslationBase
margin: EdgeInsets.all(10), .of(context)
width: SizeConfig.screenWidth * 0.80, .errorNoInsuranceApprovals)
child: TextField( : Column(
controller: _controller, children: <Widget>[
onChanged: (String str) { Container(
this.searchData(str); margin: EdgeInsets.all(10),
}, width: SizeConfig.screenWidth * 0.80,
textInputAction: TextInputAction.done, child: TextField(
decoration: buildInputDecoration( controller: _controller,
context, onChanged: (String str) {
TranslationBase.of(context) this.searchData(str, model);
.searchInsuranceApprovals), },
), textInputAction: TextInputAction.done,
), decoration: buildInputDecoration(
Expanded( context,
child: Container( TranslationBase
margin: EdgeInsets.fromLTRB( .of(context)
SizeConfig.realScreenWidth * 0.05, .searchInsuranceApprovals),
0, ),
SizeConfig.realScreenWidth * 0.05, ),
0), Expanded(
child: ListView.builder( child: Container(
itemCount: approvalsList.length, margin: EdgeInsets.fromLTRB(
itemBuilder: (BuildContext ctxt, int index) { SizeConfig.realScreenWidth * 0.05,
0,
SizeConfig.realScreenWidth * 0.05,
0),
child: ListView.builder(
itemCount: approvalsList.length,
itemBuilder: (BuildContext ctxt, int index) {
return RoundedContainer( return RoundedContainer(
child: Column( child: Column(
crossAxisAlignment: crossAxisAlignment:
@ -429,13 +426,13 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
], ],
), ),
], ],
)); ));
}), }),
), ),
), ),
], ],
), ),
); ),);
} }
InputDecoration buildInputDecoration(BuildContext context, hint) { InputDecoration buildInputDecoration(BuildContext context, hint) {
@ -455,21 +452,21 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
)); ));
} }
searchData(String str) { searchData(String str, PatientViewModel model) {
var strExist = str.length > 0 ? true : false; var strExist = str.length > 0 ? true : false;
if (strExist) { if (strExist) {
filteredApprovalsList = null; filteredApprovalsList = null;
filteredApprovalsList = approvalsList filteredApprovalsList = approvalsList
.where((note) => .where((note) =>
note["ClinicName"].toString().contains(str.toUpperCase())) note["ClinicName"].toString().contains(str.toUpperCase()))
.toList(); .toList();
setState(() { setState(() {
approvalsList = filteredApprovalsList; approvalsList = filteredApprovalsList;
}); });
} else { } else {
setState(() { setState(() {
approvalsList = patientsProv.insuranceApporvalsList; approvalsList = model.insuranceApporvalsList;
}); });
} }
} }

@ -1,10 +1,11 @@
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../../../config/shared_pref_kay.dart'; import '../../../../config/shared_pref_kay.dart';
import '../../../../config/size_config.dart'; import '../../../../config/size_config.dart';
@ -14,11 +15,7 @@ import '../../../../providers/patients_provider.dart';
import '../../../../util/dr_app_shared_pref.dart'; import '../../../../util/dr_app_shared_pref.dart';
import '../../../../widgets/shared/app_scaffold_widget.dart'; import '../../../../widgets/shared/app_scaffold_widget.dart';
import '../../../../widgets/shared/app_texts_widget.dart'; import '../../../../widgets/shared/app_texts_widget.dart';
import '../../../../widgets/shared/card_with_bg_widget.dart';
import '../../../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
import '../../../../widgets/shared/profile_image_widget.dart';
import 'lab_result_secreen.dart'; import 'lab_result_secreen.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
@ -36,17 +33,16 @@ class LabOrdersScreen extends StatefulWidget {
} }
class _LabOrdersScreenState extends State<LabOrdersScreen> { class _LabOrdersScreenState extends State<LabOrdersScreen> {
PatientsProvider patientsProv;
var _isInit = true;
/* /*
*@author: Elham Rababah *@author: Elham Rababah
*@Date:28/4/2020 *@Date:28/4/2020
*@param: context *@param: context
*@return: *@return:
*@desc: getVitalSignList Function *@desc: getLabResultOrders Function
*/ */
getLabResultOrders(context) async { getLabResultOrders(BuildContext context, PatientViewModel model) async {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient']; PatiantInformtion patient = routeArgs['patient'];
String token = await sharedPref.getString(TOKEN); String token = await sharedPref.getString(TOKEN);
@ -57,181 +53,184 @@ class _LabOrdersScreenState extends State<LabOrdersScreen> {
patientTypeID: patient.patientType, patientTypeID: patient.patientType,
languageID: 2); languageID: 2);
patientsProv.getLabResultOrders(labOrdersReqModel.toJson()); model.getLabResultOrders(labOrdersReqModel.toJson());
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
patientsProv = Provider.of<PatientsProvider>(context);
getLabResultOrders(context);
}
_isInit = false;
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return BaseView<PatientViewModel>(
appBarTitle: TranslationBase.of(context).labOrders, onModelReady: (model) => getLabResultOrders(context, model),
body: patientsProv.isLoading builder: (_, model, w) =>
? DrAppCircularProgressIndeicator() AppScaffold(
: patientsProv.isError baseViewModel: model,
? DrAppEmbeddedError(error: patientsProv.error) appBarTitle: TranslationBase
: patientsProv.patientLabResultOrdersList.length == 0 .of(context)
? DrAppEmbeddedError( .labOrders,
error: TranslationBase.of(context).errorNoLabOrders) body: model.patientLabResultOrdersList.length == 0
: Container( ? DrAppEmbeddedError(
margin: EdgeInsets.fromLTRB( error: TranslationBase
SizeConfig.realScreenWidth * 0.05, .of(context)
0, .errorNoLabOrders)
SizeConfig.realScreenWidth * 0.05, : Container(
0), margin: EdgeInsets.fromLTRB(
child: Container( SizeConfig.realScreenWidth * 0.05,
margin: EdgeInsets.symmetric(vertical: 10), 0,
decoration: BoxDecoration( SizeConfig.realScreenWidth * 0.05,
color: Colors.white, 0),
borderRadius: BorderRadius.all( child: Container(
Radius.circular(20.0), margin: EdgeInsets.symmetric(vertical: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(20.0),
),
),
child: ListView.builder(
itemCount:
model.patientLabResultOrdersList.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
LabResult(
labOrders: model
.patientLabResultOrdersList[index],
),
),
);
},
child: Container(
padding: EdgeInsets.all(10),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(10)),
border: Border(
bottom: BorderSide(
color: Colors.grey, width: 0.5),
top: BorderSide(
color: Colors.grey, width: 0.5),
left: BorderSide(
color: Colors.grey, width: 0.5),
right: BorderSide(
color: Colors.grey, width: 0.5),
),
), ),
), child: Column(
child: ListView.builder( crossAxisAlignment:
itemCount: CrossAxisAlignment.start,
patientsProv.patientLabResultOrdersList.length, children: <Widget>[
itemBuilder: (BuildContext context, int index) { Row(
return InkWell( children: <Widget>[
onTap: () { LargeAvatar(
Navigator.push( url: model
context, .patientLabResultOrdersList[
MaterialPageRoute( index]
builder: (context) => LabResult( .doctorImageURL,
labOrders: patientsProv name: model
.patientLabResultOrdersList[index], .patientLabResultOrdersList[
), index]
), .doctorName,
);
},
child: Container(
padding: EdgeInsets.all(10),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(10)),
border: Border(
bottom: BorderSide(
color: Colors.grey, width: 0.5),
top: BorderSide(
color: Colors.grey, width: 0.5),
left: BorderSide(
color: Colors.grey, width: 0.5),
right: BorderSide(
color: Colors.grey, width: 0.5),
),
), ),
child: Column( Expanded(
crossAxisAlignment: child: Padding(
padding:
const EdgeInsets.fromLTRB(
8, 0, 0, 0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[ children: <Widget>[
LargeAvatar( AppText(
url: patientsProv '${model
.patientLabResultOrdersList[ .patientLabResultOrdersList[index]
index] .doctorName}',
.doctorImageURL, fontSize: 1.7 *
name: patientsProv SizeConfig
.patientLabResultOrdersList[ .textMultiplier,
index] fontWeight: FontWeight.w600,
.doctorName,
), ),
Expanded( SizedBox(
child: Padding( height: 8,
padding:
const EdgeInsets.fromLTRB(
8, 0, 0, 0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'${patientsProv.patientLabResultOrdersList[index].doctorName}',
fontSize: 1.7 *
SizeConfig
.textMultiplier,
fontWeight: FontWeight.w600,
),
SizedBox(
height: 8,
),
AppText(
' ${patientsProv.patientLabResultOrdersList[index].projectName}',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Colors.grey[800]),
SizedBox(
height: 8,
),
Row(
mainAxisAlignment:
MainAxisAlignment.start,
children: <Widget>[
AppText(
' Invoice No :',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Colors.grey[800],
),
AppText(
' ${patientsProv.patientLabResultOrdersList[index].invoiceNo}',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Colors.grey[800],
),
],
)
],
),
),
)
],
),
SizedBox(
height: 3,
),
Divider(
color: Colors.grey,
),
SizedBox(
height: 3,
),
Row(
children: <Widget>[
Icon(
EvaIcons.calendar,
color: Colors.grey[700],
), ),
AppText(
' ${model
.patientLabResultOrdersList[index]
.projectName}',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Colors.grey[800]),
SizedBox( SizedBox(
width: 10, height: 8,
), ),
Expanded( Row(
child: AppText( mainAxisAlignment:
'${Helpers.getDate(patientsProv.patientLabResultOrdersList[index].createdOn)}', MainAxisAlignment.start,
fontSize: 2.0 * children: <Widget>[
SizeConfig.textMultiplier, AppText(
), ' Invoice No :',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Colors.grey[800],
),
AppText(
' ${model
.patientLabResultOrdersList[index]
.invoiceNo}',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Colors.grey[800],
),
],
) )
], ],
) ),
], ),
)
],
),
SizedBox(
height: 3,
),
Divider(
color: Colors.grey,
),
SizedBox(
height: 3,
),
Row(
children: <Widget>[
Icon(
EvaIcons.calendar,
color: Colors.grey[700],
),
SizedBox(
width: 10,
), ),
), Expanded(
); child: AppText(
}), '${Helpers.getDate(model
), .patientLabResultOrdersList[index]
), .createdOn)}',
); fontSize: 2.0 *
SizeConfig.textMultiplier,
),
)
],
)
],
),
),
);
}),
),
),
),);
} }
} }

@ -1,18 +1,15 @@
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/models/patient/lab_orders/lab_orders_res_model.dart'; import 'package:doctor_app_flutter/models/patient/lab_orders/lab_orders_res_model.dart';
import 'package:doctor_app_flutter/providers/patients_provider.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/doctor/lab_result_widget.dart'; import 'package:doctor_app_flutter/widgets/doctor/lab_result_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_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/errors/dr_app_embedded_error.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
class LabResult extends StatefulWidget { class LabResult extends StatefulWidget {
final LabOrdersResModel labOrders; final LabOrdersResModel labOrders;
@ -24,63 +21,46 @@ class LabResult extends StatefulWidget {
} }
class _LabResultState extends State<LabResult> { class _LabResultState extends State<LabResult> {
PatientsProvider patientsProv;
bool _isInit = true;
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
patientsProv = Provider.of<PatientsProvider>(context);
patientsProv.getLabResult(widget.labOrders);
// getLabResultOrders(context);
}
_isInit = false;
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return BaseView<PatientViewModel>(
appBarTitle: TranslationBase.of(context).labOrders, onModelReady: (model) => model.getLabResult(widget.labOrders),
body: patientsProv.isLoading builder: (_, model, w) => AppScaffold(
? DrAppCircularProgressIndeicator() baseViewModel: model,
: patientsProv.isError appBarTitle: TranslationBase.of(context).labOrders,
? DrAppEmbeddedError(error: patientsProv.error) body: model.labResultList.length == 0
: patientsProv.labResultList.length == 0 ? DrAppEmbeddedError(
? DrAppEmbeddedError( error: TranslationBase.of(context).errorNoLabOrders)
error: TranslationBase.of(context).errorNoLabOrders) : Container(
: Container( margin: EdgeInsets.fromLTRB(SizeConfig.realScreenWidth * 0.05,
margin: EdgeInsets.fromLTRB( 0, SizeConfig.realScreenWidth * 0.05, 0),
SizeConfig.realScreenWidth * 0.05, child: ListView(
0, children: <Widget>[
SizeConfig.realScreenWidth * 0.05, CardWithBgWidgetNew(
0), widget: Row(
child: ListView( mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[ children: <Widget>[
CardWithBgWidgetNew( AppText(
widget: Row( TranslationBase.of(context).invoiceNo,
mainAxisAlignment: MainAxisAlignment.start, fontSize: 2 * SizeConfig.textMultiplier,
children: <Widget>[ color: Colors.grey[800],
AppText( ),
TranslationBase.of(context).invoiceNo, AppText(
fontSize: 2 * SizeConfig.textMultiplier, ' ${widget.labOrders.invoiceNo}',
color: Colors.grey[800], fontSize: 2 * SizeConfig.textMultiplier,
), color: Colors.grey[800],
AppText(
' ${widget.labOrders.invoiceNo}',
fontSize: 2 * SizeConfig.textMultiplier,
color: Colors.grey[800],
),
],
),
), ),
CardWithBgWidgetNew(
widget: LabResultWidget(
labResult: patientsProv.labResultList,
))
], ],
), ),
), ),
CardWithBgWidgetNew(
widget: LabResultWidget(
labResult: model.labResultList,
))
],
),
),
),
); );
} }
} }

@ -1,10 +1,11 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/models/patient/progress_note_request.dart'; import 'package:doctor_app_flutter/models/patient/progress_note_request.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
import '../../../config/shared_pref_kay.dart'; import '../../../config/shared_pref_kay.dart';
import '../../../config/size_config.dart'; import '../../../config/size_config.dart';
@ -13,8 +14,6 @@ import '../../../providers/patients_provider.dart';
import '../../../util/dr_app_shared_pref.dart'; import '../../../util/dr_app_shared_pref.dart';
import '../../../widgets/shared/app_scaffold_widget.dart'; import '../../../widgets/shared/app_scaffold_widget.dart';
import '../../../widgets/shared/app_texts_widget.dart'; import '../../../widgets/shared/app_texts_widget.dart';
import '../../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
@ -45,7 +44,7 @@ class _PatientsOrdersState extends State<PatientsOrdersScreen> {
*@return: *@return:
*@desc: *@desc:
*/ */
getProgressNoteList(context) async { getProgressNoteList(BuildContext context, PatientViewModel model ) async {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient']; PatiantInformtion patient = routeArgs['patient'];
String token = await sharedPref.getString(TOKEN); String token = await sharedPref.getString(TOKEN);
@ -59,31 +58,20 @@ class _PatientsOrdersState extends State<PatientsOrdersScreen> {
tokenID: token, tokenID: token,
patientTypeID: patient.patientType, patientTypeID: patient.patientType,
languageID: 2); languageID: 2);
patientsProv.getPatientProgressNote(progressNoteRequest.toJson()).then((c){ model.getPatientProgressNote(progressNoteRequest.toJson()).then((c){
notesList = patientsProv.patientProgressNoteList; notesList = model.patientProgressNoteList;
}); });
} }
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
patientsProv = Provider.of<PatientsProvider>(context);
getProgressNoteList(context);
notesList = patientsProv.patientProgressNoteList;
}
_isInit = false;
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return BaseView<PatientViewModel>(
appBarTitle: TranslationBase.of(context).orders, onModelReady: (model) => getProgressNoteList(context, model),
body: patientsProv.isLoading builder: (_, model, w) => AppScaffold(
? DrAppCircularProgressIndeicator() baseViewModel: model,
: patientsProv.isError appBarTitle: TranslationBase.of(context).orders,
? DrAppEmbeddedError(error: patientsProv.error) body: notesList == null || notesList.length == 0
: notesList == null || notesList.length == 0
? DrAppEmbeddedError( ? DrAppEmbeddedError(
error: TranslationBase.of(context).errorNoOrders) error: TranslationBase.of(context).errorNoOrders)
: Column( : Column(
@ -94,7 +82,7 @@ class _PatientsOrdersState extends State<PatientsOrdersScreen> {
child: TextField( child: TextField(
controller: _controller, controller: _controller,
onChanged: (String str) { onChanged: (String str) {
this.searchData(str); this.searchData(str, model);
}, },
textInputAction: TextInputAction.done, textInputAction: TextInputAction.done,
decoration: buildInputDecoration(context, decoration: buildInputDecoration(context,
@ -162,7 +150,7 @@ class _PatientsOrdersState extends State<PatientsOrdersScreen> {
), ),
], ],
), ),
); ),);
} }
InputDecoration buildInputDecoration(BuildContext context, hint) { InputDecoration buildInputDecoration(BuildContext context, hint) {
@ -182,7 +170,7 @@ class _PatientsOrdersState extends State<PatientsOrdersScreen> {
)); ));
} }
searchData(String str) { searchData(String str, PatientViewModel model) {
var strExist = str.length > 0 ? true : false; var strExist = str.length > 0 ? true : false;
if (strExist) { if (strExist) {
@ -196,7 +184,7 @@ class _PatientsOrdersState extends State<PatientsOrdersScreen> {
}); });
} else { } else {
setState(() { setState(() {
notesList = patientsProv.patientProgressNoteList; notesList = model.patientProgressNoteList;
}); });
} }
} }

@ -1,23 +1,20 @@
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/models/patient/reauest_prescription_report_for_in_patient.dart'; import 'package:doctor_app_flutter/models/patient/reauest_prescription_report_for_in_patient.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/prescription_in_patinets_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/prescription_in_patinets_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/prescription_out_patinets_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/prescription_out_patinets_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../../../config/shared_pref_kay.dart'; import '../../../../config/shared_pref_kay.dart';
import '../../../../config/size_config.dart';
import '../../../../models/patient/patiant_info_model.dart'; import '../../../../models/patient/patiant_info_model.dart';
import '../../../../models/patient/prescription/prescription_req_model.dart'; import '../../../../models/patient/prescription/prescription_req_model.dart';
import '../../../../providers/patients_provider.dart'; import '../../../../providers/patients_provider.dart';
import '../../../../util/dr_app_shared_pref.dart'; import '../../../../util/dr_app_shared_pref.dart';
import '../../../../widgets/shared/app_scaffold_widget.dart'; import '../../../../widgets/shared/app_scaffold_widget.dart';
import '../../../../widgets/shared/app_texts_widget.dart';
import '../../../../widgets/shared/dr_app_circular_progress_Indeicator.dart'; import '../../../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
import '../../../../widgets/shared/errors/dr_app_embedded_error.dart'; import '../../../../widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
@ -46,7 +43,7 @@ class _PrescriptionScreenState extends State<PrescriptionScreen> {
*@return: *@return:
*@desc: getPrescriptionsList Function *@desc: getPrescriptionsList Function
*/ */
getPrescriptionsList(context) async { getPrescriptionsList(BuildContext context, PatientViewModel model) async {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient']; PatiantInformtion patient = routeArgs['patient'];
String token = await sharedPref.getString(TOKEN); String token = await sharedPref.getString(TOKEN);
@ -58,7 +55,7 @@ class _PrescriptionScreenState extends State<PrescriptionScreen> {
patientID: patient.patientId, patientID: patient.patientId,
patientTypeID: patient.patientType, patientTypeID: patient.patientType,
admissionNo: int.parse(patient.admissionNo)); admissionNo: int.parse(patient.admissionNo));
patientsProv.getInPatientPrescriptions(prescriptionReqModel.toJson()); model.getInPatientPrescriptions(prescriptionReqModel.toJson());
} else { } else {
PrescriptionReqModel prescriptionReqModel = PrescriptionReqModel( PrescriptionReqModel prescriptionReqModel = PrescriptionReqModel(
patientID: patient.patientId, patientID: patient.patientId,
@ -67,37 +64,30 @@ class _PrescriptionScreenState extends State<PrescriptionScreen> {
patientTypeID: patient.patientType, patientTypeID: patient.patientType,
languageID: 2, languageID: 2,
setupID: 0); setupID: 0);
patientsProv.getOutPatientPrescriptions(prescriptionReqModel.toJson()); model.getOutPatientPrescriptions(prescriptionReqModel.toJson());
} }
} }
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
patientsProv = Provider.of<PatientsProvider>(context);
getPrescriptionsList(context);
}
_isInit = false;
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return BaseView<PatientViewModel>(
appBarTitle: TranslationBase.of(context).prescription, onModelReady: (model) => getPrescriptionsList(context, model),
body: patientsProv.isLoading builder: (_, model, w) =>
? DrAppCircularProgressIndeicator() AppScaffold(
: patientsProv.isError baseViewModel: model,
? DrAppEmbeddedError(error: patientsProv.error) appBarTitle: TranslationBase
: type == '1' .of(context)
? PrescriptionInPatientWidget( .prescription,
prescriptionReportForInPatientList: body: type == '1'
patientsProv.prescriptionReportForInPatientList, ? PrescriptionInPatientWidget(
) prescriptionReportForInPatientList:
: PrescriptionOutPatientWidget( model.prescriptionReportForInPatientList,
patientPrescriptionsList: )
patientsProv.patientPrescriptionsList, : PrescriptionOutPatientWidget(
), patientPrescriptionsList:
); model.patientPrescriptionsList,
),
),);
} }
} }

@ -1,20 +1,18 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/models/patient/progress_note_request.dart'; import 'package:doctor_app_flutter/models/patient/progress_note_request.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
import '../../../config/shared_pref_kay.dart'; import '../../../config/shared_pref_kay.dart';
import '../../../config/size_config.dart'; import '../../../config/size_config.dart';
import '../../../models/patient/patiant_info_model.dart'; import '../../../models/patient/patiant_info_model.dart';
import '../../../providers/patients_provider.dart';
import '../../../util/dr_app_shared_pref.dart'; import '../../../util/dr_app_shared_pref.dart';
import '../../../widgets/shared/app_scaffold_widget.dart'; import '../../../widgets/shared/app_scaffold_widget.dart';
import '../../../widgets/shared/app_texts_widget.dart'; import '../../../widgets/shared/app_texts_widget.dart';
import '../../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
@ -32,7 +30,6 @@ class ProgressNoteScreen extends StatefulWidget {
} }
class _ProgressNoteState extends State<ProgressNoteScreen> { class _ProgressNoteState extends State<ProgressNoteScreen> {
PatientsProvider patientsProv;
var notesList; var notesList;
var filteredNotesList; var filteredNotesList;
final _controller = TextEditingController(); final _controller = TextEditingController();
@ -45,7 +42,7 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
*@return: *@return:
*@desc: *@desc:
*/ */
getProgressNoteList(context) async { getProgressNoteList(BuildContext context, PatientViewModel model) async {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient']; PatiantInformtion patient = routeArgs['patient'];
String token = await sharedPref.getString(TOKEN); String token = await sharedPref.getString(TOKEN);
@ -53,51 +50,46 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
print(type); print(type);
ProgressNoteRequest progressNoteRequest = ProgressNoteRequest( ProgressNoteRequest progressNoteRequest = ProgressNoteRequest(
visitType: 5, // if equal 5 then this will return progress note visitType: 5,
// if equal 5 then this will return progress note
admissionNo: int.parse(patient.admissionNo), admissionNo: int.parse(patient.admissionNo),
projectID: patient.projectId, projectID: patient.projectId,
tokenID: token, tokenID: token,
patientTypeID: patient.patientType, patientTypeID: patient.patientType,
languageID: 2); languageID: 2);
patientsProv.getPatientProgressNote(progressNoteRequest.toJson()).then((c){ model.getPatientProgressNote(progressNoteRequest.toJson()).then((c) {
notesList = patientsProv.patientProgressNoteList; notesList = model.patientProgressNoteList;
}); });
} }
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
patientsProv = Provider.of<PatientsProvider>(context);
getProgressNoteList(context);
notesList = patientsProv.patientProgressNoteList;
}
_isInit = false;
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return BaseView<PatientViewModel>(
appBarTitle: TranslationBase.of(context).progressNote, onModelReady: (model) => getProgressNoteList(context, model),
body: patientsProv.isLoading builder: (_, model, w) =>
? DrAppCircularProgressIndeicator() AppScaffold(
: patientsProv.isError baseViewModel: model,
? DrAppEmbeddedError(error: patientsProv.error) appBarTitle: TranslationBase
: notesList == null || notesList.length == 0 .of(context)
? DrAppEmbeddedError( .progressNote,
error: TranslationBase.of(context).errorNoProgressNote) body: notesList == null || notesList.length == 0
: Column( ? DrAppEmbeddedError(
children: <Widget>[ error: TranslationBase
Container( .of(context)
margin: EdgeInsets.all(10), .errorNoProgressNote)
width: SizeConfig.screenWidth * 0.80, : Column(
child: TextField( children: <Widget>[
controller: _controller, Container(
onChanged: (String str) { margin: EdgeInsets.all(10),
this.searchData(str); width: SizeConfig.screenWidth * 0.80,
}, child: TextField(
textInputAction: TextInputAction.done, controller: _controller,
decoration: buildInputDecoration(context, onChanged: (String str) {
this.searchData(str, model);
},
textInputAction: TextInputAction.done,
decoration: buildInputDecoration(context,
TranslationBase.of(context).searchNote), TranslationBase.of(context).searchNote),
), ),
), ),
@ -160,9 +152,9 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
}), }),
), ),
), ),
], ],
), ),
); ),);
} }
InputDecoration buildInputDecoration(BuildContext context, hint) { InputDecoration buildInputDecoration(BuildContext context, hint) {
@ -182,21 +174,21 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
)); ));
} }
searchData(String str) { searchData(String str, PatientViewModel model) {
var strExist = str.length > 0 ? true : false; var strExist = str.length > 0 ? true : false;
if (strExist) { if (strExist) {
filteredNotesList = null; filteredNotesList = null;
filteredNotesList = patientsProv.patientProgressNoteList filteredNotesList = model.patientProgressNoteList
.where((note) => .where((note) =>
note["DoctorName"].toString().contains(str.toUpperCase())) note["DoctorName"].toString().contains(str.toUpperCase()))
.toList(); .toList();
setState(() { setState(() {
notesList = filteredNotesList; notesList = filteredNotesList;
}); });
} else { } else {
setState(() { setState(() {
notesList = patientsProv.patientProgressNoteList; notesList = model.patientProgressNoteList;
}); });
} }
} }

@ -1,9 +1,11 @@
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/models/patient/radiology/radiology_req_model.dart'; import 'package:doctor_app_flutter/models/patient/radiology/radiology_req_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/profile/radiology/radiology_report_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/radiology/radiology_report_screen.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../../../config/shared_pref_kay.dart'; import '../../../../config/shared_pref_kay.dart';
import '../../../../config/size_config.dart'; import '../../../../config/size_config.dart';
@ -13,7 +15,6 @@ import '../../../../util/dr_app_shared_pref.dart';
import '../../../../widgets/shared/app_scaffold_widget.dart'; import '../../../../widgets/shared/app_scaffold_widget.dart';
import '../../../../widgets/shared/app_texts_widget.dart'; import '../../../../widgets/shared/app_texts_widget.dart';
import '../../../../widgets/shared/dr_app_circular_progress_Indeicator.dart'; import '../../../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
@ -41,7 +42,7 @@ class _RadiologyScreenState extends State<RadiologyScreen> {
*@return: *@return:
*@desc: getRadiologyList Function *@desc: getRadiologyList Function
*/ */
getRadiologyList(context) async { getRadiologyList(context, PatientViewModel model) async {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient']; PatiantInformtion patient = routeArgs['patient'];
String token = await sharedPref.getString(TOKEN); String token = await sharedPref.getString(TOKEN);
@ -58,140 +59,136 @@ class _RadiologyScreenState extends State<RadiologyScreen> {
patientTypeID: patient.patientType, patientTypeID: patient.patientType,
languageID: 2, languageID: 2,
); );
patientsProv.getPatientRadiology(radiologyReqModel.toJson()); model.getPatientRadiology(radiologyReqModel.toJson());
} }
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
patientsProv = Provider.of<PatientsProvider>(context);
getRadiologyList(context);
}
_isInit = false;
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return BaseView<PatientViewModel>(
appBarTitle: TranslationBase.of(context).radiology, onModelReady: (model) => getRadiologyList(context, model),
body: patientsProv.isLoading builder: (_, model, w) =>
? DrAppCircularProgressIndeicator() AppScaffold(
: patientsProv.isError baseViewModel: model,
? DrAppEmbeddedError(error: patientsProv.error) appBarTitle: TranslationBase
: patientsProv.patientRadiologyList.length == 0 .of(context)
? DrAppEmbeddedError( .radiology,
error: TranslationBase.of(context).youDoNotHaveAnyItem) body:
: Container( model.patientRadiologyList.length == 0
margin: EdgeInsets.fromLTRB( ? DrAppEmbeddedError(
SizeConfig.realScreenWidth * 0.05, error: TranslationBase
0, .of(context)
SizeConfig.realScreenWidth * 0.05, .youDoNotHaveAnyItem)
0), : Container(
child: Container( margin: EdgeInsets.fromLTRB(
margin: EdgeInsets.symmetric(vertical: 10), SizeConfig.realScreenWidth * 0.05,
decoration: BoxDecoration( 0,
color: Colors.white, SizeConfig.realScreenWidth * 0.05,
borderRadius: BorderRadius.all( 0),
Radius.circular(20.0), child: Container(
margin: EdgeInsets.symmetric(vertical: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(20.0),
),
),
child: ListView.builder(
itemCount: model.patientRadiologyList.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
RadiologyReportScreen(
reportData: patientsProv
.patientRadiologyList[index]
.reportData,
)),
);
},
child: Container(
padding: EdgeInsets.all(10),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(10)),
border: Border(
bottom: BorderSide(
color: Colors.grey, width: 0.5),
top: BorderSide(
color: Colors.grey, width: 0.5),
left: BorderSide(
color: Colors.grey, width: 0.5),
right: BorderSide(
color: Colors.grey, width: 0.5),
),
), ),
), child: Column(
child: ListView.builder( crossAxisAlignment:
itemCount: patientsProv.patientRadiologyList.length, CrossAxisAlignment.start,
itemBuilder: (BuildContext context, int index) { children: <Widget>[
return InkWell( Row(
onTap: () { children: <Widget>[
Navigator.push( LargeAvatar(
context, url: patientsProv
MaterialPageRoute( .patientRadiologyList[index]
builder: (context) => .doctorImageURL,
RadiologyReportScreen(
reportData: patientsProv
.patientRadiologyList[index]
.reportData,
)),
);
},
child: Container(
padding: EdgeInsets.all(10),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(10)),
border: Border(
bottom: BorderSide(
color: Colors.grey, width: 0.5),
top: BorderSide(
color: Colors.grey, width: 0.5),
left: BorderSide(
color: Colors.grey, width: 0.5),
right: BorderSide(
color: Colors.grey, width: 0.5),
),
), ),
child: Column( Expanded(
crossAxisAlignment: child: Padding(
padding:
const EdgeInsets.fromLTRB(
8, 0, 0, 0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[ children: <Widget>[
LargeAvatar( AppText(
url: patientsProv '${model.patientRadiologyList[index].doctorName}',
.patientRadiologyList[index] fontSize: 2.5 *
.doctorImageURL, SizeConfig
.textMultiplier,
fontWeight:
FontWeight.bold),
SizedBox(
height: 8,
),
AppText(
'Invoice No:${model.patientRadiologyList[index].invoiceNo}',
fontSize: 2 *
SizeConfig
.textMultiplier,
),
SizedBox(
height: 8,
),
AppText(
' ${model.patientRadiologyList[index].clinicName}',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Theme.of(context)
.primaryColor,
),
SizedBox(
height: 8,
), ),
Expanded(
child: Padding(
padding:
const EdgeInsets.fromLTRB(
8, 0, 0, 0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'${patientsProv.patientRadiologyList[index].doctorName}',
fontSize: 2.5 *
SizeConfig
.textMultiplier,
fontWeight:
FontWeight.bold),
SizedBox(
height: 8,
),
AppText(
'Invoice No:${patientsProv.patientRadiologyList[index].invoiceNo}',
fontSize: 2 *
SizeConfig
.textMultiplier,
),
SizedBox(
height: 8,
),
AppText(
' ${patientsProv.patientRadiologyList[index].clinicName}',
fontSize: 2 *
SizeConfig
.textMultiplier,
color: Theme.of(context)
.primaryColor,
),
SizedBox(
height: 8,
),
],
),
),
)
], ],
), ),
], ),
), )
), ],
); ),
}), ],
), ),
), ),
); );
}),
),
),
),);
} }
} }

@ -1,22 +1,23 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart'; import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import '../../../config/size_config.dart'; import '../../../config/size_config.dart';
import '../../../providers/patients_provider.dart'; import '../../../providers/patients_provider.dart';
import '../../../util/dr_app_shared_pref.dart'; import '../../../util/dr_app_shared_pref.dart';
import '../../../util/extenstions.dart';
import '../../../widgets/shared/app_scaffold_widget.dart'; import '../../../widgets/shared/app_scaffold_widget.dart';
import '../../../widgets/shared/app_texts_widget.dart'; import '../../../widgets/shared/app_texts_widget.dart';
import '../../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
import '../../../util/extenstions.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
@ -34,7 +35,6 @@ class ReferPatientScreen extends StatefulWidget {
} }
class _ReferPatientState extends State<ReferPatientScreen> { class _ReferPatientState extends State<ReferPatientScreen> {
PatientsProvider patientsProv;
var doctorsList; var doctorsList;
final _remarksController = TextEditingController(); final _remarksController = TextEditingController();
final _extController = TextEditingController(); final _extController = TextEditingController();
@ -51,46 +51,32 @@ class _ReferPatientState extends State<ReferPatientScreen> {
int _activePriority = 1; int _activePriority = 1;
FocusNode myFocusNode; FocusNode myFocusNode = FocusNode();
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
myFocusNode = FocusNode();
doctorsList = null;
patientsProv = Provider.of<PatientsProvider>(context);
patientsProv.getClinicsList();
patientsProv.getReferralFrequancyList();
}
_isInit = false;
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return BaseView<PatientViewModel>(
appBarTitle: TranslationBase.of(context).myReferralPatient, onModelReady: (model) => model.getClinicsList(),
body: patientsProv.isLoading builder: (_, model, w) => AppScaffold(
? DrAppCircularProgressIndeicator() baseViewModel: model,
: patientsProv.isError appBarTitle: TranslationBase.of(context).myReferralPatient,
? DrAppEmbeddedError(error: patientsProv.error) body: model.clinicsList == null
: patientsProv.clinicsList == null ? DrAppEmbeddedError(error: 'Something Wrong!')
? DrAppEmbeddedError(error: 'Something Wrong!') : SingleChildScrollView(
: SingleChildScrollView( child: Column(
child: Column( mainAxisAlignment: MainAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[
children: <Widget>[ AppText(
AppText( TranslationBase.of(context).clinic,
TranslationBase.of(context).clinic, fontSize: 18,
fontSize: 18, fontWeight: FontWeight.bold,
fontWeight: FontWeight.bold, marginLeft: 15,
marginLeft: 15, marginTop: 15,
marginTop: 15, ),
), RoundedContainer(
RoundedContainer( margin: 10,
margin: 10, showBorder: true,
showBorder: true,
raduis: 30, raduis: 30,
borderColor: Color(0xff707070), borderColor: Color(0xff707070),
width: double.infinity, width: double.infinity,
@ -112,7 +98,7 @@ class _ReferPatientState extends State<ReferPatientScreen> {
elevation: 16, elevation: 16,
selectedItemBuilder: selectedItemBuilder:
(BuildContext context) { (BuildContext context) {
return patientsProv return model
.getClinicNameList() .getClinicNameList()
.map((item) { .map((item) {
return Row( return Row(
@ -132,7 +118,7 @@ class _ReferPatientState extends State<ReferPatientScreen> {
setState(() { setState(() {
_selectedDoctor = null; _selectedDoctor = null;
_selectedClinic = newValue; _selectedClinic = newValue;
var clinicInfo = patientsProv var clinicInfo = model
.clinicsList .clinicsList
.where((i) => .where((i) =>
i['ClinicDescription'] i['ClinicDescription']
@ -144,10 +130,10 @@ class _ReferPatientState extends State<ReferPatientScreen> {
clinicId = clinicInfo[0]['ClinicID'] clinicId = clinicInfo[0]['ClinicID']
.toString(); .toString();
patientsProv.getDoctorsList(clinicId); model.getDoctorsList(clinicId);
}) })
}, },
items: patientsProv items: model
.getClinicNameList() .getClinicNameList()
.map((item) { .map((item) {
return DropdownMenuItem( return DropdownMenuItem(
@ -197,7 +183,7 @@ class _ReferPatientState extends State<ReferPatientScreen> {
elevation: 16, elevation: 16,
selectedItemBuilder: selectedItemBuilder:
(BuildContext context) { (BuildContext context) {
return patientsProv return model
.getDoctorNameList() .getDoctorNameList()
.map((item) { .map((item) {
return Row( return Row(
@ -217,7 +203,7 @@ class _ReferPatientState extends State<ReferPatientScreen> {
setState(() { setState(() {
_selectedDoctor = newValue; _selectedDoctor = newValue;
doctorsList = doctorsList =
patientsProv.doctorsList; model.doctorsList;
var doctorInfo = doctorsList var doctorInfo = doctorsList
.where((i) => i['DoctorName'] .where((i) => i['DoctorName']
@ -228,7 +214,7 @@ class _ReferPatientState extends State<ReferPatientScreen> {
.toString(); .toString();
}) })
}, },
items: patientsProv items: model
.getDoctorNameList() .getDoctorNameList()
.map((item) { .map((item) {
return DropdownMenuItem( return DropdownMenuItem(
@ -311,7 +297,7 @@ class _ReferPatientState extends State<ReferPatientScreen> {
elevation: 16, elevation: 16,
selectedItemBuilder: selectedItemBuilder:
(BuildContext context) { (BuildContext context) {
return patientsProv return model
.getReferralNamesList() .getReferralNamesList()
.map((item) { .map((item) {
return Row( return Row(
@ -330,7 +316,7 @@ class _ReferPatientState extends State<ReferPatientScreen> {
onChanged: (newValue) => { onChanged: (newValue) => {
setState(() { setState(() {
_selectedReferralFrequancy = newValue; _selectedReferralFrequancy = newValue;
var freqInfo = patientsProv var freqInfo = model
.referalFrequancyList .referalFrequancyList
.singleWhere((i) => i[ .singleWhere((i) => i[
'Description'] 'Description']
@ -342,7 +328,7 @@ class _ReferPatientState extends State<ReferPatientScreen> {
myFocusNode.requestFocus(); myFocusNode.requestFocus();
}) })
}, },
items: patientsProv items: model
.getReferralNamesList() .getReferralNamesList()
.map((item) { .map((item) {
return DropdownMenuItem( return DropdownMenuItem(
@ -389,17 +375,23 @@ class _ReferPatientState extends State<ReferPatientScreen> {
visibility: visibility:
isValid == null ? false : !isValid, isValid == null ? false : !isValid,
), ),
// TODO replace AppButton with secondary button and add loading
AppButton( AppButton(
title: TranslationBase.of(context).send, title: TranslationBase
.of(context)
.send,
color: Color(PRIMARY_COLOR), color: Color(PRIMARY_COLOR),
onPressed: () => {referToDoctor(context)}, onPressed: () =>
{
referToDoctor(context, model)
},
) )
], ],
)) ))
], ],
), ),
), ),
); ),);
} }
Widget priorityBar(BuildContext _context) { Widget priorityBar(BuildContext _context) {
@ -488,25 +480,37 @@ class _ReferPatientState extends State<ReferPatientScreen> {
return time; return time;
} }
void referToDoctor(context) { referToDoctor(BuildContext context, PatientViewModel model) async {
if (!validation()) { if (!validation()) {
return; return;
} }
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute
.of(context)
.settings
.arguments as Map;
PatiantInformtion patient = routeArgs['patient']; PatiantInformtion patient = routeArgs['patient'];
patientsProv.referToDoctor(context,
extension: _extController.value.text, try {
admissionNo: int.parse(patient.admissionNo), await model.referToDoctor(
referringDoctorRemarks: _remarksController.value.text, extension: _extController.value.text,
frequency: freqId, admissionNo: int.parse(patient.admissionNo),
patientID: patient.patientId, referringDoctorRemarks: _remarksController.value.text,
patientTypeID: patient.patientType, frequency: freqId,
priority: (_activePriority + 1).toString(), patientID: patient.patientId,
roomID: patient.roomId, patientTypeID: patient.patientType,
selectedClinicID: clinicId.toString(), priority: (_activePriority + 1).toString(),
selectedDoctorID: doctorId.toString(), roomID: patient.roomId,
projectID: patient.projectId); selectedClinicID: clinicId.toString(),
selectedDoctorID: doctorId.toString(),
projectID: patient.projectId);
// TODO: Add Translation
DrAppToastMsg.showSuccesToast(
'Reply Successfully');
Navigator.pop(context);
} catch (e) {
DrAppToastMsg.showErrorToast(e);
}
} }
bool validation() { bool validation() {

@ -1,8 +1,9 @@
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/vital_sign_req_model.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/vital_sign_req_model.dart';
import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../../../config/shared_pref_kay.dart'; import '../../../../config/shared_pref_kay.dart';
import '../../../../config/size_config.dart'; import '../../../../config/size_config.dart';
@ -14,7 +15,6 @@ import '../../../../routes.dart';
import '../../../../screens/patients/profile/vital_sign/vital_sign_item.dart'; import '../../../../screens/patients/profile/vital_sign/vital_sign_item.dart';
import '../../../../util/dr_app_shared_pref.dart'; import '../../../../util/dr_app_shared_pref.dart';
import '../../../../widgets/shared/app_scaffold_widget.dart'; import '../../../../widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
@ -38,7 +38,7 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
*@return: *@return:
*@desc: getVitalSignList Function *@desc: getVitalSignList Function
*/ */
getVitalSignList(context) async { getVitalSignList(BuildContext context, PatientViewModel model) async {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient']; PatiantInformtion patient = routeArgs['patient'];
String token = await sharedPref.getString(TOKEN); String token = await sharedPref.getString(TOKEN);
@ -57,18 +57,10 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
languageID: 2, languageID: 2,
transNo: transNo:
patient.admissionNo != null ? int.parse(patient.admissionNo) : 0); patient.admissionNo != null ? int.parse(patient.admissionNo) : 0);
patientsProv.getPatientVitalSign(vitalSignReqModel.toJson()); model.getPatientVitalSign(vitalSignReqModel.toJson());
} }
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
patientsProv = Provider.of<PatientsProvider>(context);
getVitalSignList(context);
}
_isInit = false;
}
final double contWidth = SizeConfig.realScreenWidth * 0.70; final double contWidth = SizeConfig.realScreenWidth * 0.70;
@ -76,13 +68,12 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map; final routeArgs = ModalRoute.of(context).settings.arguments as Map;
vitalSing = routeArgs['vitalSing']; vitalSing = routeArgs['vitalSing'];
return AppScaffold( return BaseView<PatientViewModel>(
onModelReady: (model) => getVitalSignList(context, model),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).vitalSign, appBarTitle: TranslationBase.of(context).vitalSign,
body: patientsProv.isLoading body: model.patientVitalSignOrderdSubList.length == 0
? DrAppCircularProgressIndeicator()
: patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error)
: patientsProv.patientVitalSignOrderdSubList.length == 0
? DrAppEmbeddedError( ? DrAppEmbeddedError(
error: 'You don\'t have any vital Sings') error: 'You don\'t have any vital Sings')
: Container( : Container(
@ -106,7 +97,7 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
des: TranslationBase.of(context) des: TranslationBase.of(context)
.bodyMeasurements, .bodyMeasurements,
url: url + 'heartbeat.png', url: url + 'heartbeat.png',
lastVal: patientsProv lastVal: model
.patientVitalSignOrderdSubList[0] .patientVitalSignOrderdSubList[0]
.heightCm .heightCm
.toString(), .toString(),
@ -129,7 +120,7 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
des: TranslationBase.of(context) des: TranslationBase.of(context)
.temperature, .temperature,
url: url + 'heartbeat.png', url: url + 'heartbeat.png',
lastVal: patientsProv lastVal: model
.patientVitalSignOrderdSubList[0] .patientVitalSignOrderdSubList[0]
.temperatureCelcius .temperatureCelcius
.toString(), .toString(),
@ -154,7 +145,7 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
child: VitalSignItem( child: VitalSignItem(
des: TranslationBase.of(context).pulse, des: TranslationBase.of(context).pulse,
url: url + 'heartbeat.png', url: url + 'heartbeat.png',
lastVal: patientsProv lastVal: model
.patientVitalSignOrderdSubList[0] .patientVitalSignOrderdSubList[0]
.pulseBeatPerMinute .pulseBeatPerMinute
.toString(), .toString(),
@ -175,7 +166,7 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
des: des:
TranslationBase.of(context).respiration, TranslationBase.of(context).respiration,
url: url + 'heartbeat.png', url: url + 'heartbeat.png',
lastVal: patientsProv lastVal: model
.patientVitalSignOrderdSubList[0] .patientVitalSignOrderdSubList[0]
.respirationBeatPerMinute .respirationBeatPerMinute
.toString(), .toString(),
@ -200,7 +191,7 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
des: TranslationBase.of(context) des: TranslationBase.of(context)
.bloodPressure, .bloodPressure,
url: url + 'heartbeat.png', url: url + 'heartbeat.png',
lastVal: patientsProv lastVal: model
.patientVitalSignOrderdSubList[0] .patientVitalSignOrderdSubList[0]
.bloodPressure .bloodPressure
.toString(), .toString(),
@ -221,7 +212,7 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
des: des:
TranslationBase.of(context).oxygenation, TranslationBase.of(context).oxygenation,
url: url + 'heartbeat.png', url: url + 'heartbeat.png',
lastVal: patientsProv lastVal: model
.patientVitalSignOrderdSubList[0].fIO2 .patientVitalSignOrderdSubList[0].fIO2
.toString(), .toString(),
unit: '', unit: '',
@ -243,14 +234,16 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
}); });
}, },
child: VitalSignItem( child: VitalSignItem(
des: TranslationBase.of(context).painScale, des: TranslationBase
.of(context)
.painScale,
url: url + 'heartbeat.png', url: url + 'heartbeat.png',
), ),
), ),
], ],
), ),
], ],
), ),
)); ),),);
} }
} }

@ -1,154 +0,0 @@
import 'package:doctor_app_flutter/models/patient/vital_sign/vital_sign_req_model.dart';
import 'package:doctor_app_flutter/routes.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../../../config/shared_pref_kay.dart';
import '../../../../config/size_config.dart';
import '../../../../models/patient/patiant_info_model.dart';
import '../../../../providers/patients_provider.dart';
import '../../../../util/dr_app_shared_pref.dart';
import '../../../../widgets/shared/app_scaffold_widget.dart';
import '../../../../widgets/shared/app_texts_widget.dart';
import '../../../../widgets/shared/card_with_bg_widget.dart';
import '../../../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
import '../../../../widgets/shared/profile_image_widget.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
/*
*@author: Elham Rababah
*@Date:26/4/2020
*@param:
*@return:VitalSignScreen
*@desc: VitalSignScreen class
*/
class VitalSignScreen extends StatefulWidget {
@override
_VitalSignScreenState createState() => _VitalSignScreenState();
}
class _VitalSignScreenState extends State<VitalSignScreen> {
PatientsProvider patientsProv;
var _isInit = true;
/*
*@author: Elham Rababah
*@Date:28/4/2020
*@param: context
*@return:
*@desc: getVitalSignList Function
*/
getVitalSignList(context) async {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
PatiantInformtion patient = routeArgs['patient'];
String token = await sharedPref.getString(TOKEN);
String type = await sharedPref.getString(SLECTED_PATIENT_TYPE);
int inOutpatientType = 1;
if (type == '0') {
inOutpatientType = 2;
}
print(type);
VitalSignReqModel vitalSignReqModel = VitalSignReqModel(
patientID: patient.patientId,
projectID: patient.projectId,
tokenID: token,
patientTypeID: patient.patientType,
inOutpatientType: inOutpatientType,
languageID: 2,
transNo:
patient.admissionNo != null ? int.parse(patient.admissionNo) : 0);
patientsProv.getPatientVitalSign(vitalSignReqModel.toJson());
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_isInit) {
patientsProv = Provider.of<PatientsProvider>(context);
getVitalSignList(context);
}
_isInit = false;
}
@override
Widget build(BuildContext context) {
return AppScaffold(
appBarTitle: "VITAL SIGN",
body: patientsProv.isLoading
? DrAppCircularProgressIndeicator()
: patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error)
: patientsProv.patientVitalSignList.length == 0
? DrAppEmbeddedError(error: 'You don\'t have any Vital Sign')
: Container(
margin: EdgeInsets.fromLTRB(
SizeConfig.realScreenWidth * 0.05,
0,
SizeConfig.realScreenWidth * 0.05,
0),
child: ListView.builder(
itemCount: patientsProv.patientVitalSignList.length,
itemBuilder: (BuildContext ctxt, int index) {
return InkWell(
child: CardWithBgWidget(
widget: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
ProfileImageWidget(
url: patientsProv
.patientVitalSignList[index]
.doctorImageURL),
Expanded(
child: Padding(
padding: const EdgeInsets.fromLTRB(
8, 0, 0, 0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(
'${patientsProv.patientVitalSignList[index].doctorName}',
fontSize: 2.5 *
SizeConfig.textMultiplier,
fontWeight: FontWeight.bold,
),
SizedBox(
height: 8,
),
AppText(
' ${patientsProv.patientVitalSignList[index].clinicName}',
fontSize: 2 *
SizeConfig.textMultiplier,
color: Theme.of(context)
.primaryColor,
),
SizedBox(
height: 8,
),
],
),
),
)
],
),
],
),
),
onTap: () {
Navigator.of(context)
.pushNamed(VITAL_SIGN_DETAILS, arguments: {
'vitalSing':
patientsProv.patientVitalSignList[index]
});
},
);
}),
),
);
}
}
Loading…
Cancel
Save