You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
279 lines
8.1 KiB
Dart
279 lines
8.1 KiB
Dart
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<VitalSignResModel> patientVitalSignList = [];
|
|
List<LabOrdersResModel> patientLabResultOrdersList = [];
|
|
List<PrescriptionResModel> patientPrescriptionsList = [];
|
|
List<RadiologyResModel> patientRadiologyList = [];
|
|
|
|
Client client =
|
|
HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]);
|
|
|
|
PatiantInformtion _selectedPatient;
|
|
|
|
Future<Map> 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);
|
|
}
|
|
}
|
|
}
|