From b37c607813cd7b3dfc99d0bd99c4af1bb8c533e6 Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Thu, 22 Apr 2021 18:17:30 +0300 Subject: [PATCH] done the referral service --- lib/client/base_app_client.dart | 2 +- lib/core/model/ReferralRequest.dart | 108 ++++++++++++++++++ lib/core/service/ReferralService.dart | 56 +++++---- .../viewModel/patient-referral-viewmodel.dart | 24 +++- lib/locator.dart | 2 + .../refer-patient-screen-in-patient.dart | 29 +++-- 6 files changed, 175 insertions(+), 46 deletions(-) create mode 100644 lib/core/model/ReferralRequest.dart diff --git a/lib/client/base_app_client.dart b/lib/client/base_app_client.dart index afddce7f..eac29db8 100644 --- a/lib/client/base_app_client.dart +++ b/lib/client/base_app_client.dart @@ -100,7 +100,7 @@ class BaseAppClient { }); final int statusCode = response.statusCode; if (statusCode < 200 || statusCode >= 400) { - onFailure('Error While Fetching data', statusCode); + onFailure(Helpers.generateContactAdminMsg(), statusCode); } else { var parsed = json.decode(response.body.toString()); diff --git a/lib/core/model/ReferralRequest.dart b/lib/core/model/ReferralRequest.dart new file mode 100644 index 00000000..b3ad1f03 --- /dev/null +++ b/lib/core/model/ReferralRequest.dart @@ -0,0 +1,108 @@ +class ReferralRequest { + String roomID; + String referralClinic; + String referralDoctor; + int createdBy; + int editedBy; + int patientID; + int patientTypeID; + int referringClinic; + int referringDoctor; + int projectID; + int admissionNo; + String referringDoctorRemarks; + String priority; + String frequency; + String extension; + int languageID; + String stamp; + String iPAdress; + double versionID; + int channel; + String tokenID; + String sessionID; + bool isLoginForDoctorApp; + bool patientOutSA; + + ReferralRequest( + {this.roomID, + this.referralClinic, + this.referralDoctor, + this.createdBy, + this.editedBy, + this.patientID, + this.patientTypeID, + this.referringClinic, + this.referringDoctor, + this.projectID, + this.admissionNo, + this.referringDoctorRemarks, + this.priority, + this.frequency, + this.extension, + this.languageID, + this.stamp, + this.iPAdress, + this.versionID, + this.channel, + this.tokenID, + this.sessionID, + this.isLoginForDoctorApp, + this.patientOutSA}); + + ReferralRequest.fromJson(Map json) { + roomID = json['RoomID']; + referralClinic = json['ReferralClinic']; + referralDoctor = json['ReferralDoctor']; + createdBy = json['CreatedBy']; + editedBy = json['EditedBy']; + patientID = json['PatientID']; + patientTypeID = json['PatientTypeID']; + referringClinic = json['ReferringClinic']; + referringDoctor = json['ReferringDoctor']; + projectID = json['ProjectID']; + admissionNo = json['AdmissionNo']; + referringDoctorRemarks = json['ReferringDoctorRemarks']; + priority = json['Priority']; + frequency = json['Frequency']; + extension = json['Extension']; + languageID = json['LanguageID']; + stamp = json['stamp']; + iPAdress = json['IPAdress']; + versionID = json['VersionID']; + channel = json['Channel']; + tokenID = json['TokenID']; + sessionID = json['SessionID']; + isLoginForDoctorApp = json['IsLoginForDoctorApp']; + patientOutSA = json['PatientOutSA']; + } + + Map toJson() { + final Map data = new Map(); + data['RoomID'] = this.roomID; + data['ReferralClinic'] = this.referralClinic; + data['ReferralDoctor'] = this.referralDoctor; + data['CreatedBy'] = this.createdBy; + data['EditedBy'] = this.editedBy; + data['PatientID'] = this.patientID; + data['PatientTypeID'] = this.patientTypeID; + data['ReferringClinic'] = this.referringClinic; + data['ReferringDoctor'] = this.referringDoctor; + data['ProjectID'] = this.projectID; + data['AdmissionNo'] = this.admissionNo; + data['ReferringDoctorRemarks'] = this.referringDoctorRemarks; + data['Priority'] = this.priority; + data['Frequency'] = this.frequency; + data['Extension'] = this.extension; + data['LanguageID'] = this.languageID; + data['stamp'] = this.stamp; + data['IPAdress'] = this.iPAdress; + data['VersionID'] = this.versionID; + data['Channel'] = this.channel; + data['TokenID'] = this.tokenID; + data['SessionID'] = this.sessionID; + data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp; + data['PatientOutSA'] = this.patientOutSA; + return data; + } +} diff --git a/lib/core/service/ReferralService.dart b/lib/core/service/ReferralService.dart index 532041dd..2887abde 100644 --- a/lib/core/service/ReferralService.dart +++ b/lib/core/service/ReferralService.dart @@ -1,48 +1,46 @@ import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/core/model/ReferralRequest.dart'; import 'package:doctor_app_flutter/core/service/base/base_service.dart'; class ReferralService extends BaseService { -//TODO Jammal Future referralPatient( - {String admissionNo, + {int admissionNo, String roomID, - String referralClinic, - String referralDoctor, - String patientID, - String patientTypeID, - String referringClinic, + int referralClinic, + int referralDoctor, + int patientID, + int patientTypeID, + int priority, + int frequency, String referringDoctorRemarks, - String priority,String frequency,String extension}) async { + String extension}) async { await getDoctorProfile(); - hasError = false; - Map body = Map(); - body['ProjectID'] = doctorProfile.projectID; - body['AdmissionNo'] = admissionNo; - body['RoomID'] = roomID; - body['ReferralClinic'] = referralClinic; - body['ReferralDoctor'] = referralDoctor; - body['CreatedBy'] = doctorProfile.doctorID; - body['EditedBy'] = doctorProfile.doctorID; - body['PatientID'] = patientID; - body['PatientTypeID'] = patientTypeID; - body['ReferringClinic'] = referringClinic; - body['ReferringDoctor'] = doctorProfile.doctorID; - body['ReferringDoctorRemarks'] = referringDoctorRemarks; - body['Priority'] = priority; - body['Frequency'] = frequency; - body['Extension'] = extension; + ReferralRequest referralRequest = ReferralRequest(); + referralRequest.admissionNo = admissionNo; + referralRequest.roomID = roomID; + referralRequest.referralClinic = referralClinic.toString(); + referralRequest.referralDoctor = referralDoctor.toString(); + referralRequest.patientID = patientID; + referralRequest.patientTypeID = patientTypeID; + referralRequest.priority = priority.toString(); + referralRequest.frequency = frequency.toString(); + referralRequest.referringDoctorRemarks = referringDoctorRemarks; + referralRequest.referringClinic = doctorProfile.clinicID; + referralRequest.referringDoctor = doctorProfile.doctorID; + referralRequest.extension = extension; + referralRequest.editedBy = doctorProfile.doctorID; + referralRequest.createdBy = doctorProfile.doctorID; + referralRequest.patientOutSA = false; await baseAppClient.post( REFER_TO_DOCTOR, - onSuccess: (dynamic response, int statusCode) { - - }, + onSuccess: (dynamic response, int statusCode) {}, onFailure: (String error, int statusCode) { hasError = true; super.error = error; }, - body: body, + body: referralRequest.toJson(), ); } } diff --git a/lib/core/viewModel/patient-referral-viewmodel.dart b/lib/core/viewModel/patient-referral-viewmodel.dart index 679aa0de..c4666f6f 100644 --- a/lib/core/viewModel/patient-referral-viewmodel.dart +++ b/lib/core/viewModel/patient-referral-viewmodel.dart @@ -1,5 +1,6 @@ import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/service/ReferralService.dart'; import 'package:doctor_app_flutter/core/service/patient-doctor-referral-service.dart'; import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart'; @@ -16,6 +17,9 @@ class PatientReferralViewModel extends BaseViewModel { PatientReferralService _referralPatientService = locator(); + ReferralService _referralService = + locator(); + List get branchesList => _referralPatientService.projectsList; List get clinicsList => _referralPatientService.clinicsList; @@ -173,7 +177,25 @@ class PatientReferralViewModel extends BaseViewModel { String referralDate, String remarks, String ext}) async { - + setState(ViewState.Busy); + await _referralService.referralPatient( + patientID: patient.patientId, + roomID: patient.roomId, + referralClinic: clinicID, + admissionNo: patient.appointmentNo, + referralDoctor: doctorID, + patientTypeID: patient.patientType, + referringDoctorRemarks:remarks, + priority: priority, + frequency: frequencyCode, + extension: ext, + ); + if (_referralService.hasError) { + error = _referralService.error; + setState(ViewState.ErrorLocal); + } else { + setState(ViewState.Idle); + } } Future getPatientDetails( diff --git a/lib/locator.dart b/lib/locator.dart index d64a8ed3..79efbb9a 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -16,6 +16,7 @@ import 'package:get_it/get_it.dart'; import 'core/service/InsuranceCardService.dart'; import 'core/service/PatientMuseService.dart'; +import 'core/service/ReferralService.dart'; import 'core/service/SOAP_service.dart'; import 'core/service/labs_service.dart'; import 'core/service/patient-admission-request-service.dart'; @@ -72,6 +73,7 @@ void setupLocator() { locator.registerLazySingleton(() => InsuranceCardService()); locator.registerLazySingleton(() => RadiologyService()); locator.registerLazySingleton(() => PrescriptionsService()); + locator.registerLazySingleton(() => ReferralService()); /// View Model locator.registerFactory(() => DoctorReplayViewModel()); diff --git a/lib/screens/patients/profile/referral/refer-patient-screen-in-patient.dart b/lib/screens/patients/profile/referral/refer-patient-screen-in-patient.dart index 2ac6d2e0..40ea26b7 100644 --- a/lib/screens/patients/profile/referral/refer-patient-screen-in-patient.dart +++ b/lib/screens/patients/profile/referral/refer-patient-screen-in-patient.dart @@ -383,11 +383,7 @@ class _PatientMakeInPatientReferralScreenState AppTextFieldCustom( hintText: TranslationBase.of(context).ext, controller: _extController, - inputType: TextInputType.number, - inputFormatters: [ - FilteringTextInputFormatter.allow( - RegExp(ONLY_NUMBERS)) - ], + inputType: TextInputType.text, ), SizedBox( height: 10, @@ -411,7 +407,7 @@ class _PatientMakeInPatientReferralScreenState title: TranslationBase.of(context).refer, fontWeight: FontWeight.w700, color: Color(0XFF359846), - onPressed: () { + onPressed: () async{ setState(() { if (_referTo == null) { branchError = @@ -449,9 +445,9 @@ class _PatientMakeInPatientReferralScreenState _selectedClinic == null || _selectedDoctor == null || _remarksController.text == null || - _extController.text == null) return; - model - .makeInPatientReferral( + _extController.text == null) return;{ + + await model.makeInPatientReferral( patient: patient, projectID: _selectedBranch['facilityId'], clinicID: _selectedClinic['ClinicID'], @@ -461,12 +457,15 @@ class _PatientMakeInPatientReferralScreenState remarks: _remarksController.text, priority: _activePriority, referralDate: appointmentDate - ) - .then((_) { - DrAppToastMsg.showSuccesToast( - TranslationBase.of(context).referralSuccessMsg); - Navigator.pop(context); - }); + ); + if(model.state == ViewState.ErrorLocal) + DrAppToastMsg.showErrorToast(model.error); + else{ + DrAppToastMsg.showSuccesToast(TranslationBase.of(context).referralSuccessMsg); + Navigator.pop(context); + } + + } }, ), )