import 'dart:convert'; import 'package:flutter/cupertino.dart'; import 'package:http/http.dart'; import 'package:http_interceptor/http_client_with_interceptor.dart'; import '../client/app_client.dart'; import '../config/config.dart'; import '../interceptor/http_interceptor.dart'; import '../models/patient/lab_orders_res_model.dart'; import '../models/patient/patiant_info_model.dart'; import '../models/patient/patient_model.dart'; import '../models/patient/prescription_res_model.dart'; import '../models/patient/radiology_res_model.dart'; import '../models/patient/vital_sign_res_model.dart'; import '../util/helpers.dart'; Helpers helpers = Helpers(); class PatientsProvider with ChangeNotifier { bool isLoading = false; bool isError = false; String error = ''; List patientVitalSignList = []; List patientLabResultOrdersList = []; List patientPrescriptionsList = []; List patientRadiologyList = []; Client client = HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]); PatiantInformtion _selectedPatient; Future getPatientList(PatientModel patient, patientType) async { /* const url = BASE_URL+'DoctorApplication.svc/REST/GetMyInPatient';*/ int val = int.parse(patientType); //**********Modify url by amjad amireh for patiant type********* final url = BASE_URL + "DoctorApplication.svc/REST/" + SERVICES_PATIANT[val]; // print("a===========$url=======a"); try { final response = await client.post(url, body: json.encode({ "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(json.decode(response.body)); } catch (err) { throw err; } } setBasicData() { isLoading = true; isError = false; error = ''; notifyListeners(); } /* *@author: Elham Rababah *@Date:27/4/2020 *@param: patient *@return: *@desc: getPatientVitalSign */ getPatientVitalSign(patient) async { setBasicData(); try { if (await Helpers.checkConnection()) { final response = await AppClient.post(GET_PATIENT_VITAL_SIGN, body: json.encode(patient)); final int statusCode = response.statusCode; isLoading = false; if (statusCode < 200 || statusCode >= 400 || json == null) { isError = true; error = 'Error While Fetching data'; } else { var res = json.decode(response.body); print('$res'); if (res['MessageStatus'] == 1) { patientVitalSignList = []; res['List_DoctorPatientVitalSign'].forEach((v) { patientVitalSignList.add(new VitalSignResModel.fromJson(v)); }); // patientVitalSignList = res['List_DoctorPatientVitalSign']; } else { isError = true; error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; } } } else { isLoading = false; isError = true; error = 'Please Check The Internet Connection'; } 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 { if (await Helpers.checkConnection()) { final response = await AppClient.post(GET_PATIENT_LAB_OREDERS, body: json.encode(patient)); final int statusCode = response.statusCode; isLoading = false; if (statusCode < 200 || statusCode >= 400 || json == null) { isError = true; error = 'Error While Fetching data'; } else { var res = json.decode(response.body); print('$res'); if (res['MessageStatus'] == 1) { patientLabResultOrdersList = []; res['List_GetLabOreders'].forEach((v) { patientLabResultOrdersList.add(new LabOrdersResModel.fromJson(v)); }); } else { isError = true; error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; } } } else { isLoading = false; isError = true; error = 'Please Check The Internet Connection'; } notifyListeners(); } catch (err) { handelCatchErrorCase(err); } } /*@author: Elham Rababah *@Date:3/5/2020 *@param: patient *@return: *@desc: getPatientPrescriptions */ getPatientPrescriptions(patient) async { // isLoading = true; // notifyListeners(); setBasicData(); try { if (await Helpers.checkConnection()) { final response = await AppClient.post(GET_PRESCRIPTION, body: json.encode(patient)); final int statusCode = response.statusCode; isLoading = false; if (statusCode < 200 || statusCode >= 400 || json == null) { isError = true; error = 'Error While Fetching data'; } else { var res = json.decode(response.body); print('$res'); if (res['MessageStatus'] == 1) { patientPrescriptionsList = []; res['PatientPrescriptionList'].forEach((v) { patientPrescriptionsList .add(new PrescriptionResModel.fromJson(v)); }); } else { isError = true; error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; } } } else { isLoading = false; isError = true; error = 'Please Check The Internet Connection'; } notifyListeners(); } catch (err) { handelCatchErrorCase(err); } } /*@author: Elham Rababah *@Date:12/5/2020 *@param: patient *@return: *@desc: getPatientRadiology */ handelCatchErrorCase(err) { isLoading = false; isError = true; error = helpers.generateContactAdminMsg(err); notifyListeners(); throw err; } /*@author: Elham Rababah *@Date:3/5/2020 *@param: patient *@return: *@desc: getPatientRadiology */ getPatientRadiology(patient) async { // isLoading = true; // notifyListeners(); setBasicData(); try { if (await Helpers.checkConnection()) { final response = await AppClient.post(GET_RADIOLOGY, body: json.encode(patient)); final int statusCode = response.statusCode; isLoading = false; if (statusCode < 200 || statusCode >= 400 || json == null) { isError = true; error = 'Error While Fetching data'; } else { var res = json.decode(response.body); print('$res'); if (res['MessageStatus'] == 1) { patientRadiologyList = []; res['List_GetRadOreders'].forEach((v) { patientRadiologyList.add(new RadiologyResModel.fromJson(v)); }); } else { isError = true; error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; } } } else { isLoading = false; isError = true; error = 'Please Check The Internet Connection'; } notifyListeners(); } catch (err) { handelCatchErrorCase(err); } } }