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.
81 lines
3.4 KiB
Dart
81 lines
3.4 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:hmg_nurses/classes/utils.dart';
|
|
import 'package:hmg_nurses/config/app_state.dart';
|
|
import 'package:hmg_nurses/config/routes.dart';
|
|
import 'package:hmg_nurses/main.dart';
|
|
import 'package:hmg_nurses/model/base/generic_response_model.dart';
|
|
import 'package:hmg_nurses/model/patient/patient_file_information_prm_list.dart';
|
|
import 'package:hmg_nurses/provider/base_vm.dart';
|
|
import 'package:hmg_nurses/services/api_repo/patient_api_repo.dart';
|
|
import 'package:injector/injector.dart';
|
|
|
|
class PatientProviderModel extends BaseViewModel {
|
|
final IPatientApiRepo _patientApiRepo = Injector.appInstance.get<IPatientApiRepo>();
|
|
late GenericResponseModel searchedPatient;
|
|
late GenericResponseModel vitalSignHistory;
|
|
List<GetPatientFileInformationPrmList> filteredPatientsList = [];
|
|
|
|
searchPatient(int patientId) async {
|
|
try {
|
|
Utils.showLoading();
|
|
searchedPatient = await _patientApiRepo.getPatientInfo(patientId);
|
|
Utils.showToast(searchedPatient.getPatientFileInformationPrmList!.length.toString());
|
|
filteredPatientsList.addAll(searchedPatient.getPatientFileInformationPrmList!);
|
|
Utils.hideLoading();
|
|
Navigator.pushNamed(navigatorKey.currentContext!, AppRoutes.searchedFor, arguments: patientId);
|
|
return true;
|
|
} catch (e) {
|
|
Utils.hideLoading();
|
|
Utils.handleException(e, navigatorKey.currentContext!, (msg) {
|
|
Utils.confirmDialog(navigatorKey.currentContext!, msg);
|
|
});
|
|
return false;
|
|
}
|
|
}
|
|
|
|
filterPatient(String str) {
|
|
var strExist = str.length > 0 ? true : false;
|
|
if (strExist) {
|
|
filteredPatientsList = [];
|
|
for (var i = 0; i < searchedPatient.getPatientFileInformationPrmList!.length; i++) {
|
|
String firstName = searchedPatient.getPatientFileInformationPrmList![i].firstName!.toUpperCase();
|
|
String lastName = searchedPatient.getPatientFileInformationPrmList![i].lastName!.toUpperCase();
|
|
String mobile = searchedPatient.getPatientFileInformationPrmList![i].mobileNumber!.toUpperCase();
|
|
String patientID = searchedPatient.getPatientFileInformationPrmList![i].patientId.toString();
|
|
|
|
if (firstName.contains(str.toUpperCase()) || lastName.contains(str.toUpperCase()) || mobile.contains(str) || patientID.contains(str)) {
|
|
filteredPatientsList.add(searchedPatient.getPatientFileInformationPrmList![i]);
|
|
}
|
|
}
|
|
notifyListeners();
|
|
} else {
|
|
filteredPatientsList = searchedPatient.getPatientFileInformationPrmList!;
|
|
notifyListeners();
|
|
}
|
|
}
|
|
|
|
fetchVitalSignsHistory(GetPatientFileInformationPrmList patient) async {
|
|
try {
|
|
Utils.showLoading();
|
|
vitalSignHistory = await _patientApiRepo.getVitalSigns(
|
|
patientID: patient.patientId,
|
|
patientTypeID: patient.patientType,
|
|
inOutPatientType: 0,
|
|
isDentalAllowedBackend: false,
|
|
doctorID: appState.employeeId,
|
|
setupID: appState.setupId,
|
|
patientType: patient.patientType);
|
|
Utils.showToast(vitalSignHistory.listDoctorPatientVitalSign!.length.toString());
|
|
Utils.hideLoading();
|
|
// Navigator.pushNamed(navigatorKey.currentContext!, AppRoutes.searchedFor, arguments: patientId);
|
|
return true;
|
|
} catch (e) {
|
|
Utils.hideLoading();
|
|
Utils.handleException(e, navigatorKey.currentContext!, (msg) {
|
|
Utils.confirmDialog(navigatorKey.currentContext!, msg);
|
|
});
|
|
return false;
|
|
}
|
|
}
|
|
}
|