Merge branch 'refactor' into 'development'

Refactor

See merge request Cloud_Solution/doctor_app_flutter!180
pull/182/head
Elham 4 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;
// 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(); // notifyListeners();
setBasicData(); // } catch (err) {
try { // handelCatchErrorCase(err);
await baseAppClient.post(GET_RADIOLOGY, // }
onSuccess: (dynamic response, int statusCode) { // }
patientRadiologyList = []; //
response['List_GetRadOreders'].forEach((v) { // List getDoctorNameList() {
patientRadiologyList.add(new RadiologyResModel.fromJson(v)); // var doctorNamelist =
}); // doctorsList.map((value) => value['DoctorName'].toString()).toList();
isLoading = false; // return doctorNamelist;
isError = false; // }
this.error = ''; //
}, onFailure: (String error, int statusCode) { // /*@author: ibrahem albitar
isLoading = false; // *@Date:3/6/2020
isError = true; // *@desc: getClinicsList
this.error = error; // */
}, body: patient); // getClinicsList() async {
notifyListeners(); // setBasicData();
} catch (err) { // try {
handelCatchErrorCase(err); // await baseAppClient.post(PATIENT_GET_CLINIC_BY_PROJECT_URL,
} // onSuccess: (dynamic response, int statusCode) {
} // clinicsList = response['List_Clinic_All'];
// isLoading = false;
getLabResult(LabOrdersResModel labOrdersResModel) async { // isError = false;
labResultList.clear(); // this.error = '';
isLoading = true; // }, onFailure: (String error, int statusCode) {
notifyListeners(); // isLoading = false;
RequestLabResult requestLabResult = RequestLabResult(); // isError = true;
requestLabResult.sessionID = labOrdersResModel.setupID; // this.error = error;
requestLabResult.orderNo = labOrdersResModel.orderNo; // }, body: _clinicByProjectIdRequest.toJson());
requestLabResult.invoiceNo = labOrdersResModel.invoiceNo; // notifyListeners();
requestLabResult.patientTypeID = labOrdersResModel.patientType; // } catch (err) {
await baseAppClient.post(GET_PATIENT_LAB_RESULTS, // handelCatchErrorCase(err);
onSuccess: (dynamic response, int statusCode) { // }
isError = false; // }
isLoading = false; //
response['List_GetLabNormal'].forEach((v) { // List getClinicNameList() {
labResultList.add(new LabResult.fromJson(v)); // var clinicsNameslist = clinicsList
}); // .map((value) => value['ClinicDescription'].toString())
}, onFailure: (String error, int statusCode) { // .toList();
isError = true; // return clinicsNameslist;
isLoading = false; // }
this.error = error; //
}, body: requestLabResult.toJson()); // /*@author: ibrahem albitar
notifyListeners(); // *@Date:3/6/2020
} // *@desc: getReferralFrequancyList
// */
getPatientInsuranceApprovals(patient) async { // getReferralFrequancyList() async {
setBasicData(); // setBasicData();
try { // try {
await baseAppClient.post(PATIENT_INSURANCE_APPROVALS_URL, // await baseAppClient.post(PATIENT_GET_LIST_REFERAL_URL,
onSuccess: (dynamic response, int statusCode) { // onSuccess: (dynamic response, int statusCode) {
insuranceApporvalsList = response['List_ApprovalMain_InPatient']; // referalFrequancyList = response['list_STPReferralFrequency'];
isLoading = false; // isLoading = false;
isError = false; // isError = false;
this.error = ''; // this.error = '';
}, 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: patient); // }, body: _referralFrequencyRequest.toJson());
notifyListeners(); // notifyListeners();
} catch (err) { // } catch (err) {
handelCatchErrorCase(err); // handelCatchErrorCase(err);
} // }
} // }
//
/*@author: ibrahe albitar // List getReferralNamesList() {
*@Date:2/6/2020 // var referralNamesList = referalFrequancyList
*@desc: getPatientProgressNote // .map((value) => value['Description'].toString())
*/ // .toList();
getPatientProgressNote(patient) async { // return referralNamesList;
setBasicData(); // }
try {
await baseAppClient.post(PATIENT_PROGRESS_NOTE_URL,
onSuccess: (dynamic response, int statusCode) {
patientProgressNoteList = response['List_GetPregressNoteForInPatient'];
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: 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,8 +55,12 @@ 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(),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle:
TranslationBase.of(context).qr + TranslationBase.of(context).reader,
body: Center( body: Center(
child: Container( child: Container(
margin: EdgeInsets.only(top: SizeConfig.realScreenHeight / 7), margin: EdgeInsets.only(top: SizeConfig.realScreenHeight / 7),
@ -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,7 +115,9 @@ 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)),
], ],
), ),
) )
@ -121,10 +127,10 @@ class _QrReaderScreenState extends State<QrReaderScreen> {
), ),
), ),
), ),
); ),);
} }
_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);
getPrescriptionReport(BuildContext context,PatientViewModel model ){
RequestPrescriptionReport prescriptionReqModel = RequestPrescriptionReport prescriptionReqModel =
RequestPrescriptionReport( RequestPrescriptionReport(
appointmentNo: widget.prescriptionResModel.appointmentNo, appointmentNo: widget.prescriptionResModel.appointmentNo,
episodeID: widget.prescriptionResModel.episodeID, episodeID: widget.prescriptionResModel.episodeID,
setupID: widget.prescriptionResModel.setupID, setupID: widget.prescriptionResModel.setupID,
patientTypeID: widget.prescriptionResModel.patientID); patientTypeID: widget.prescriptionResModel.patientID);
patientsProvider.getPrescriptionReport(prescriptionReqModel.toJson()); model.getPrescriptionReport(prescriptionReqModel.toJson());
} }
_isInit = false;
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return BaseView<PatientViewModel>(
onModelReady: (model) => getPrescriptionReport(context, model),
builder: (_, model, w) => AppScaffold(
appBarTitle: TranslationBase.of(context).prescriptionDetails, appBarTitle: TranslationBase.of(context).prescriptionDetails,
body: patientsProvider.isLoading body: CardWithBgWidgetNew(
? DrAppCircularProgressIndeicator()
: patientsProvider.isError
? 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,35 +61,30 @@ 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)
.insuranceApprovals,
body: model.insuranceApporvalsList == null ||
model.insuranceApporvalsList.length == 0
? DrAppEmbeddedError( ? DrAppEmbeddedError(
error: error:
TranslationBase.of(context).errorNoInsuranceApprovals) TranslationBase
.of(context)
.errorNoInsuranceApprovals)
: Column( : Column(
children: <Widget>[ children: <Widget>[
Container( Container(
@ -97,12 +93,13 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
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( decoration: buildInputDecoration(
context, context,
TranslationBase.of(context) TranslationBase
.of(context)
.searchInsuranceApprovals), .searchInsuranceApprovals),
), ),
), ),
@ -435,7 +432,7 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
), ),
], ],
), ),
); ),);
} }
InputDecoration buildInputDecoration(BuildContext context, hint) { InputDecoration buildInputDecoration(BuildContext context, hint) {
@ -455,7 +452,7 @@ 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) {
@ -469,7 +466,7 @@ class _InsuranceApprovalsState extends State<InsuranceApprovalsScreen> {
}); });
} 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,30 +53,24 @@ 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)
.labOrders,
body: model.patientLabResultOrdersList.length == 0
? DrAppEmbeddedError( ? DrAppEmbeddedError(
error: TranslationBase.of(context).errorNoLabOrders) error: TranslationBase
.of(context)
.errorNoLabOrders)
: Container( : Container(
margin: EdgeInsets.fromLTRB( margin: EdgeInsets.fromLTRB(
SizeConfig.realScreenWidth * 0.05, SizeConfig.realScreenWidth * 0.05,
@ -97,15 +87,16 @@ class _LabOrdersScreenState extends State<LabOrdersScreen> {
), ),
child: ListView.builder( child: ListView.builder(
itemCount: itemCount:
patientsProv.patientLabResultOrdersList.length, model.patientLabResultOrdersList.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return InkWell( return InkWell(
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => LabResult( builder: (context) =>
labOrders: patientsProv LabResult(
labOrders: model
.patientLabResultOrdersList[index], .patientLabResultOrdersList[index],
), ),
), ),
@ -135,11 +126,11 @@ class _LabOrdersScreenState extends State<LabOrdersScreen> {
Row( Row(
children: <Widget>[ children: <Widget>[
LargeAvatar( LargeAvatar(
url: patientsProv url: model
.patientLabResultOrdersList[ .patientLabResultOrdersList[
index] index]
.doctorImageURL, .doctorImageURL,
name: patientsProv name: model
.patientLabResultOrdersList[ .patientLabResultOrdersList[
index] index]
.doctorName, .doctorName,
@ -154,7 +145,9 @@ class _LabOrdersScreenState extends State<LabOrdersScreen> {
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
AppText( AppText(
'${patientsProv.patientLabResultOrdersList[index].doctorName}', '${model
.patientLabResultOrdersList[index]
.doctorName}',
fontSize: 1.7 * fontSize: 1.7 *
SizeConfig SizeConfig
.textMultiplier, .textMultiplier,
@ -164,7 +157,9 @@ class _LabOrdersScreenState extends State<LabOrdersScreen> {
height: 8, height: 8,
), ),
AppText( AppText(
' ${patientsProv.patientLabResultOrdersList[index].projectName}', ' ${model
.patientLabResultOrdersList[index]
.projectName}',
fontSize: 2 * fontSize: 2 *
SizeConfig SizeConfig
.textMultiplier, .textMultiplier,
@ -184,7 +179,9 @@ class _LabOrdersScreenState extends State<LabOrdersScreen> {
color: Colors.grey[800], color: Colors.grey[800],
), ),
AppText( AppText(
' ${patientsProv.patientLabResultOrdersList[index].invoiceNo}', ' ${model
.patientLabResultOrdersList[index]
.invoiceNo}',
fontSize: 2 * fontSize: 2 *
SizeConfig SizeConfig
.textMultiplier, .textMultiplier,
@ -218,7 +215,9 @@ class _LabOrdersScreenState extends State<LabOrdersScreen> {
), ),
Expanded( Expanded(
child: AppText( child: AppText(
'${Helpers.getDate(patientsProv.patientLabResultOrdersList[index].createdOn)}', '${Helpers.getDate(model
.patientLabResultOrdersList[index]
.createdOn)}',
fontSize: 2.0 * fontSize: 2.0 *
SizeConfig.textMultiplier, SizeConfig.textMultiplier,
), ),
@ -232,6 +231,6 @@ class _LabOrdersScreenState extends State<LabOrdersScreen> {
}), }),
), ),
), ),
); ),);
} }
} }

@ -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,37 +21,19 @@ 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>(
onModelReady: (model) => model.getLabResult(widget.labOrders),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).labOrders, appBarTitle: TranslationBase.of(context).labOrders,
body: patientsProv.isLoading body: model.labResultList.length == 0
? DrAppCircularProgressIndeicator()
: patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error)
: patientsProv.labResultList.length == 0
? DrAppEmbeddedError( ? DrAppEmbeddedError(
error: TranslationBase.of(context).errorNoLabOrders) error: TranslationBase.of(context).errorNoLabOrders)
: Container( : Container(
margin: EdgeInsets.fromLTRB( margin: EdgeInsets.fromLTRB(SizeConfig.realScreenWidth * 0.05,
SizeConfig.realScreenWidth * 0.05, 0, SizeConfig.realScreenWidth * 0.05, 0),
0,
SizeConfig.realScreenWidth * 0.05,
0),
child: ListView( child: ListView(
children: <Widget>[ children: <Widget>[
CardWithBgWidgetNew( CardWithBgWidgetNew(
@ -76,11 +55,12 @@ class _LabResultState extends State<LabResult> {
), ),
CardWithBgWidgetNew( CardWithBgWidgetNew(
widget: LabResultWidget( widget: LabResultWidget(
labResult: patientsProv.labResultList, 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>(
onModelReady: (model) => getProgressNoteList(context, model),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).orders, appBarTitle: TranslationBase.of(context).orders,
body: patientsProv.isLoading body: notesList == null || notesList.length == 0
? DrAppCircularProgressIndeicator()
: patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error)
: 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)
.prescription,
body: type == '1'
? PrescriptionInPatientWidget( ? PrescriptionInPatientWidget(
prescriptionReportForInPatientList: prescriptionReportForInPatientList:
patientsProv.prescriptionReportForInPatientList, model.prescriptionReportForInPatientList,
) )
: PrescriptionOutPatientWidget( : PrescriptionOutPatientWidget(
patientPrescriptionsList: patientPrescriptionsList:
patientsProv.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,39 +50,34 @@ 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)
.progressNote,
body: notesList == null || notesList.length == 0
? DrAppEmbeddedError( ? DrAppEmbeddedError(
error: TranslationBase.of(context).errorNoProgressNote) error: TranslationBase
.of(context)
.errorNoProgressNote)
: Column( : Column(
children: <Widget>[ children: <Widget>[
Container( Container(
@ -94,7 +86,7 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
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 +154,7 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
), ),
], ],
), ),
); ),);
} }
InputDecoration buildInputDecoration(BuildContext context, hint) { InputDecoration buildInputDecoration(BuildContext context, hint) {
@ -182,12 +174,12 @@ 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();
@ -196,7 +188,7 @@ class _ProgressNoteState extends State<ProgressNoteScreen> {
}); });
} 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,30 +59,26 @@ 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)
.radiology,
body:
model.patientRadiologyList.length == 0
? DrAppEmbeddedError( ? DrAppEmbeddedError(
error: TranslationBase.of(context).youDoNotHaveAnyItem) error: TranslationBase
.of(context)
.youDoNotHaveAnyItem)
: Container( : Container(
margin: EdgeInsets.fromLTRB( margin: EdgeInsets.fromLTRB(
SizeConfig.realScreenWidth * 0.05, SizeConfig.realScreenWidth * 0.05,
@ -97,7 +94,7 @@ class _RadiologyScreenState extends State<RadiologyScreen> {
), ),
), ),
child: ListView.builder( child: ListView.builder(
itemCount: patientsProv.patientRadiologyList.length, itemCount: model.patientRadiologyList.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return InkWell( return InkWell(
onTap: () { onTap: () {
@ -150,7 +147,7 @@ class _RadiologyScreenState extends State<RadiologyScreen> {
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
AppText( AppText(
'${patientsProv.patientRadiologyList[index].doctorName}', '${model.patientRadiologyList[index].doctorName}',
fontSize: 2.5 * fontSize: 2.5 *
SizeConfig SizeConfig
.textMultiplier, .textMultiplier,
@ -160,7 +157,7 @@ class _RadiologyScreenState extends State<RadiologyScreen> {
height: 8, height: 8,
), ),
AppText( AppText(
'Invoice No:${patientsProv.patientRadiologyList[index].invoiceNo}', 'Invoice No:${model.patientRadiologyList[index].invoiceNo}',
fontSize: 2 * fontSize: 2 *
SizeConfig SizeConfig
.textMultiplier, .textMultiplier,
@ -169,7 +166,7 @@ class _RadiologyScreenState extends State<RadiologyScreen> {
height: 8, height: 8,
), ),
AppText( AppText(
' ${patientsProv.patientRadiologyList[index].clinicName}', ' ${model.patientRadiologyList[index].clinicName}',
fontSize: 2 * fontSize: 2 *
SizeConfig SizeConfig
.textMultiplier, .textMultiplier,
@ -192,6 +189,6 @@ class _RadiologyScreenState extends State<RadiologyScreen> {
}), }),
), ),
), ),
); ),);
} }
} }

@ -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,30 +51,16 @@ 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>(
onModelReady: (model) => model.getClinicsList(),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).myReferralPatient, appBarTitle: TranslationBase.of(context).myReferralPatient,
body: patientsProv.isLoading body: model.clinicsList == null
? DrAppCircularProgressIndeicator()
: patientsProv.isError
? DrAppEmbeddedError(error: patientsProv.error)
: patientsProv.clinicsList == null
? DrAppEmbeddedError(error: 'Something Wrong!') ? DrAppEmbeddedError(error: 'Something Wrong!')
: SingleChildScrollView( : SingleChildScrollView(
child: Column( child: Column(
@ -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,14 +480,19 @@ 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,
try {
await model.referToDoctor(
extension: _extController.value.text, extension: _extController.value.text,
admissionNo: int.parse(patient.admissionNo), admissionNo: int.parse(patient.admissionNo),
referringDoctorRemarks: _remarksController.value.text, referringDoctorRemarks: _remarksController.value.text,
@ -507,6 +504,13 @@ class _ReferPatientState extends State<ReferPatientScreen> {
selectedClinicID: clinicId.toString(), selectedClinicID: clinicId.toString(),
selectedDoctorID: doctorId.toString(), selectedDoctorID: doctorId.toString(),
projectID: patient.projectId); 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,7 +234,9 @@ 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',
), ),
), ),
@ -251,6 +244,6 @@ class _VitalSignDetailsScreenState extends State<VitalSignDetailsScreen> {
), ),
], ],
), ),
)); ),),);
} }
} }

@ -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