From 39cc4fa4bf1dc6983ecce732a60b0c3deb5004cd Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 8 Jun 2020 18:26:16 +0300 Subject: [PATCH] refere to doctor --- .vscode/settings.json | 2 +- lib/config/config.dart | 4 + .../get_clinic_by_project_id_request.dart | 80 +++++ .../get_doctor_by_clinic_id_request.dart | 86 +++++ ...t_list_stp_referral_frequency_request.dart | 75 +++++ .../patient/refer_to_doctor_request.dart | 147 +++++++++ .../pharmacies_items_request_model.dart | 80 +++-- lib/providers/medicine_provider.dart | 2 +- lib/providers/patients_provider.dart | 301 +++++++++++++++--- lib/routes.dart | 3 + .../profile/refer_patient_screen.dart | 269 ++++++++++++++++ .../profile/profile_medical_info_widget.dart | 2 +- 12 files changed, 971 insertions(+), 80 deletions(-) create mode 100644 lib/models/patient/get_clinic_by_project_id_request.dart create mode 100644 lib/models/patient/get_doctor_by_clinic_id_request.dart create mode 100644 lib/models/patient/get_list_stp_referral_frequency_request.dart create mode 100644 lib/models/patient/refer_to_doctor_request.dart create mode 100644 lib/screens/patients/profile/refer_patient_screen.dart diff --git a/.vscode/settings.json b/.vscode/settings.json index e592e48b..045932f0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,7 @@ { "commentBox.styles": { "defaultStyle": { - "commentStartToken": "/* \n *@author: Amjad Amireh \n *@Date:27/4/2020 \n *@param: \n *@return:\n *@desc: ", + "commentStartToken": "/* \n *@author: Ibrahim Albitar \n *@Date:03/06/2020 \n *@param: \n *@return:\n *@desc: ", "commentEndToken": "\n */", "leftEdgeToken": " * ", "rightEdgeToken": "", diff --git a/lib/config/config.dart b/lib/config/config.dart index 6f094704..4f3a5770 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -9,6 +9,10 @@ const PHARMACY_LIST_URL = "Patients.svc/REST/GetPharmcyList"; const PATIENT_PROGRESS_NOTE_URL = "DoctorApplication.svc/REST/GetProgressNoteForInPatient"; const PATIENT_INSURANCE_APPROVALS_URL = "DoctorApplication.svc/REST/GetApprovalStatusForInpatient"; const PATIENT_ORDERS_URL = "DoctorApplication.svc/REST/GetProgressNoteForInPatient"; +const PATIENT_REFER_TO_DOCTOR_URL = "DoctorApplication.svc/REST/ReferToDoctor"; +const PATIENT_GET_DOCTOR_BY_CLINIC_URL = "DoctorApplication.svc/REST/GetDoctorsByClinicID"; +const PATIENT_GET_LIST_REFERAL_URL = "Lists.svc/REST/GetList_STPReferralFrequency"; +const PATIENT_GET_CLINIC_BY_PROJECT_URL = "DoctorApplication.svc/REST/GetClinicsByProjectID"; const GET_PROJECTS = 'Lists.svc/REST/GetProjectForDoctorAPP'; const GET_PATIENT_VITAL_SIGN = 'Doctors.svc/REST/Doctor_GetPatientVitalSign'; diff --git a/lib/models/patient/get_clinic_by_project_id_request.dart b/lib/models/patient/get_clinic_by_project_id_request.dart new file mode 100644 index 00000000..862fbab4 --- /dev/null +++ b/lib/models/patient/get_clinic_by_project_id_request.dart @@ -0,0 +1,80 @@ +class ClinicByProjectIdRequest { + + /* + *@author: Ibrahim Albitar + *@Date:03/06/2020 + *@param: + *@return: + *@desc: ClinicByProjectIdRequest + */ + + int projectID; + int languageID; + String stamp; + String iPAdress; + double versionID; + int channel; + String tokenID; + String sessionID; + bool isLoginForDoctorApp; + bool patientOutSA; + int patientTypeID; + /* + { + "ProjectID": 21, + "LanguageID": 2, + "stamp": "2020-06-03T11:18:19.979Z", + "IPAdress": "11.11.11.11", + "VersionID": 1.2, + "Channel": 9, + "TokenID": "gyIQFH4WWEm2Tq7xjYMjsg==", + "SessionID": "JBXRsDl37L", + "IsLoginForDoctorApp": true, + "PatientOutSA": false, + "PatientTypeID": 1 +} + */ + + ClinicByProjectIdRequest( + {this.projectID, + this.languageID = 2, + this.stamp = "2020-06-03T11:18:19.979Z", + this.iPAdress = "11.11.11.11", + this.versionID = 1.2, + this.channel = 9, + this.tokenID, + this.sessionID = "JBXRsDl37L", + this.isLoginForDoctorApp = true, + this.patientOutSA = false, + this.patientTypeID = 1}); + + ClinicByProjectIdRequest.fromJson(Map json) { + projectID = json['ProjectID']; + 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']; + patientTypeID = json['PatientTypeID']; + } + + Map toJson() { + final Map data = new Map(); + data['ProjectID'] = this.projectID; + 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; + data['PatientTypeID'] = this.patientTypeID; + return data; + } +} diff --git a/lib/models/patient/get_doctor_by_clinic_id_request.dart b/lib/models/patient/get_doctor_by_clinic_id_request.dart new file mode 100644 index 00000000..a2b33e29 --- /dev/null +++ b/lib/models/patient/get_doctor_by_clinic_id_request.dart @@ -0,0 +1,86 @@ +class DoctorsByClinicIdRequest { + +/* + *@author: Ibrahim Albitar + *@Date:03/06/2020 + *@param: + *@return: + *@desc: DoctorsByClinicIdRequest + */ + + int projectID; + String clinicID; + int languageID; + String stamp; + String iPAdress; + double versionID; + int channel; + String tokenID; + String sessionID; + bool isLoginForDoctorApp; + bool patientOutSA; + int patientTypeID; + + /* + { + "ProjectID": 21, + "ClinicID": "0", + "LanguageID": 2, + "stamp": "2020-06-03T11:22:04.702Z", + "IPAdress": "11.11.11.11", + "VersionID": 1.2, + "Channel": 9, + "TokenID": "gyIQFH4WWEm2Tq7xjYMjsg==", + "SessionID": "JBXRsDl37L", + "IsLoginForDoctorApp": true, + "PatientOutSA": false, + "PatientTypeID": 1 +} + */ + + DoctorsByClinicIdRequest( + {this.projectID, + this.clinicID, + this.languageID = 2, + this.stamp = "2020-06-03T11:22:04.702Z", + this.iPAdress = "11.11.11.11", + this.versionID = 1.2, + this.channel = 9, + this.tokenID, + this.sessionID = "JBXRsDl37L", + this.isLoginForDoctorApp = true, + this.patientOutSA = false, + this.patientTypeID = 1}); + + DoctorsByClinicIdRequest.fromJson(Map json) { + projectID = json['ProjectID']; + clinicID = json['ClinicID']; + 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']; + patientTypeID = json['PatientTypeID']; + } + + Map toJson() { + final Map data = new Map(); + data['ProjectID'] = this.projectID; + data['ClinicID'] = this.clinicID; + 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; + data['PatientTypeID'] = this.patientTypeID; + return data; + } +} diff --git a/lib/models/patient/get_list_stp_referral_frequency_request.dart b/lib/models/patient/get_list_stp_referral_frequency_request.dart new file mode 100644 index 00000000..3b3c2655 --- /dev/null +++ b/lib/models/patient/get_list_stp_referral_frequency_request.dart @@ -0,0 +1,75 @@ +class STPReferralFrequencyRequest { + +/* + *@author: Ibrahim Albitar + *@Date:03/06/2020 + *@param: + *@return: + *@desc: + */ + + int languageID; + String stamp; + String iPAdress; + double versionID; + int channel; + String tokenID; + String sessionID; + bool isLoginForDoctorApp; + bool patientOutSA; + int patientTypeID; + /* +{ + "LanguageID": 2, + "stamp": "2020-06-03T11:18:19.986Z", + "IPAdress": "11.11.11.11", + "VersionID": 1.2, + "Channel": 9, + "TokenID": "gyIQFH4WWEm2Tq7xjYMjsg==", + "SessionID": "JBXRsDl37L", + "IsLoginForDoctorApp": true, + "PatientOutSA": false, + "PatientTypeID": 1 +} + */ + + STPReferralFrequencyRequest( + {this.languageID = 2, + this.stamp = "2020-06-03T11:18:19.986Z", + this.iPAdress = "11.11.11.11", + this.versionID = 1.2, + this.channel = 9, + this.tokenID, + this.sessionID = "JBXRsDl37L", + this.isLoginForDoctorApp = true, + this.patientOutSA = false, + this.patientTypeID = 1}); + + STPReferralFrequencyRequest.fromJson(Map json) { + 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']; + patientTypeID = json['PatientTypeID']; + } + + Map toJson() { + final Map data = new Map(); + 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; + data['PatientTypeID'] = this.patientTypeID; + return data; + } +} diff --git a/lib/models/patient/refer_to_doctor_request.dart b/lib/models/patient/refer_to_doctor_request.dart new file mode 100644 index 00000000..11229596 --- /dev/null +++ b/lib/models/patient/refer_to_doctor_request.dart @@ -0,0 +1,147 @@ +class ReferToDoctorRequest { + +/* + *@author: Ibrahim Albitar + *@Date:03/06/2020 + *@param: + *@return: + *@desc: ReferToDoctor + */ + + int projectID; + int admissionNo; + String roomID; + String referralClinic; + String referralDoctor; + int createdBy; + int editedBy; + int patientID; + int patientTypeID; + int referringClinic; + int referringDoctor; + 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; + + + /* +{ + "ProjectID": 21, + "AdmissionNo": 2020005477, + "RoomID": "ISO-6", + "ReferralClinic": "36", + "ReferralDoctor": "230893", + "CreatedBy": 121814, + "EditedBy": 121814, + "PatientID": 3349491, + "PatientTypeID": 1, + "ReferringClinic": 14, + "ReferringDoctor": 121814, + "ReferringDoctorRemarks": "dfcdfdfdf", + "Priority": "1", + "Frequency": "1", + "Extension": "eeee", + "LanguageID": 2, + "stamp": "2020-06-03T11:26:42.358Z", + "IPAdress": "11.11.11.11", + "VersionID": 1.2, + "Channel": 9, + "TokenID": "gyIQFH4WWEm2Tq7xjYMjsg==", + "SessionID": "JBXRsDl37L", + "IsLoginForDoctorApp": true, + "PatientOutSA": false +} + */ + + ReferToDoctorRequest( + {this.projectID, + this.admissionNo, + this.roomID = "ISO-6", + this.referralClinic, + this.referralDoctor , + this.createdBy, + this.editedBy , + this.patientID, + this.patientTypeID = 1, + this.referringClinic, + this.referringDoctor, + this.referringDoctorRemarks, + this.priority , + this.frequency, + this.extension, + this.languageID = 2, + this.stamp = "2020-06-03T11:26:42.358Z", + this.iPAdress = "11.11.11.11", + this.versionID = 1.2, + this.channel = 9, + this.tokenID, + this.sessionID = "JBXRsDl37L", + this.isLoginForDoctorApp = true, + this.patientOutSA = false}); + + ReferToDoctorRequest.fromJson(Map json) { + projectID = json['ProjectID']; + admissionNo = json['AdmissionNo']; + 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']; + 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['ProjectID'] = this.projectID; + data['AdmissionNo'] = this.admissionNo; + 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['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/models/pharmacies_items_request_model.dart b/lib/models/pharmacies_items_request_model.dart index f9531e63..96df6da8 100644 --- a/lib/models/pharmacies_items_request_model.dart +++ b/lib/models/pharmacies_items_request_model.dart @@ -5,55 +5,65 @@ *@return: *@desc: */ + + class PharmaciesItemsRequestModel { - String phrItemName; - int languageID; - String stamp; - String ipAdress; - double versionID; - String tokenID; - String sessionID; - bool isLoginForDoctorApp; - bool patientOutSA; - int patientTypeID; + String pHRItemName; + int pageIndex = 0; + int pageSize = 20; + double versionID = 5.2; + int channel = 3; + int languageID = 2; + String iPAdress = "10.20.10.20"; + String generalid = "Cs2020@2016\$2958"; + int patientOutSA = 0; + String sessionID = "KvFJENeAUCxyVdIfEkHw"; + bool isDentalAllowedBackend = false; + int deviceTypeID = 2; PharmaciesItemsRequestModel( - {this.phrItemName = '', - this.patientTypeID = 1, - this.languageID = 2, - this.stamp = '2020-04-23T21:01:21.492Z', - this.ipAdress = '10.20.10.20', + {this.pHRItemName, + this.pageIndex = 0, + this.pageSize = 20, this.versionID = 5.2, - this.tokenID , + this.channel = 3, + this.languageID = 2, + this.iPAdress = "10.20.10.20", + this.generalid = "Cs2020@2016\$2958", + this.patientOutSA = 0, this.sessionID = "KvFJENeAUCxyVdIfEkHw", - this.isLoginForDoctorApp = true, - this.patientOutSA = false}); + this.isDentalAllowedBackend = false, + this.deviceTypeID = 2}); PharmaciesItemsRequestModel.fromJson(Map json) { - phrItemName = json['PHR_itemName']; - patientTypeID = json['PatientTypeID']; - languageID = json['LanguageID']; - stamp = json['stamp']; - ipAdress = json['IPAdress']; + pHRItemName = json['PHR_itemName']; + pageIndex = json['PageIndex']; + pageSize = json['PageSize']; versionID = json['VersionID']; - tokenID = json['TokenID']; - sessionID = json['SessionID']; - isLoginForDoctorApp = json['IsLoginForDoctorApp']; + channel = json['Channel']; + languageID = json['LanguageID']; + iPAdress = json['IPAdress']; + generalid = json['generalid']; patientOutSA = json['PatientOutSA']; + sessionID = json['SessionID']; + isDentalAllowedBackend = json['isDentalAllowedBackend']; + deviceTypeID = json['DeviceTypeID']; } Map toJson() { final Map data = new Map(); - data['PHR_itemName'] = this.phrItemName; - data['PatientTypeID'] = this.patientTypeID; - data['LanguageID'] = this.languageID; - data['stamp'] = this.stamp; - data['IPAdress'] = this.ipAdress; + data['PHR_itemName'] = this.pHRItemName; + data['PageIndex'] = this.pageIndex; + data['PageSize'] = this.pageSize; data['VersionID'] = this.versionID; - data['TokenID'] = this.tokenID; - data['SessionID'] = this.sessionID; - data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp; + data['Channel'] = this.channel; + data['LanguageID'] = this.languageID; + data['IPAdress'] = this.iPAdress; + data['generalid'] = this.generalid; data['PatientOutSA'] = this.patientOutSA; + data['SessionID'] = this.sessionID; + data['isDentalAllowedBackend'] = this.isDentalAllowedBackend; + data['DeviceTypeID'] = this.deviceTypeID; return data; } -} +} \ No newline at end of file diff --git a/lib/providers/medicine_provider.dart b/lib/providers/medicine_provider.dart index 97e030fe..a0d8f4ed 100644 --- a/lib/providers/medicine_provider.dart +++ b/lib/providers/medicine_provider.dart @@ -25,7 +25,7 @@ class MedicineProvider with ChangeNotifier { resetDefaultValues(); try { if (await Helpers.checkConnection()) { - _itemsRequestModel.phrItemName = itemName; + _itemsRequestModel.pHRItemName = itemName; final response = await AppClient.post(PHARMACY_ITEMS_URL, body: json.encode(_itemsRequestModel.toJson())); diff --git a/lib/providers/patients_provider.dart b/lib/providers/patients_provider.dart index 8b84420a..25e640ec 100644 --- a/lib/providers/patients_provider.dart +++ b/lib/providers/patients_provider.dart @@ -2,12 +2,18 @@ import 'dart:convert'; import 'package:doctor_app_flutter/client/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/models/doctor_profile_model.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_res_model.dart'; import 'package:doctor_app_flutter/models/patient/lab_result.dart'; import 'package:doctor_app_flutter/models/patient/lab_result_req_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/prescription_res_model.dart'; import 'package:doctor_app_flutter/models/patient/radiology_res_model.dart'; +import 'package:doctor_app_flutter/models/patient/refer_to_doctor_request.dart'; import 'package:flutter/cupertino.dart'; import 'package:http/http.dart'; import 'package:http_interceptor/http_client_with_interceptor.dart'; @@ -35,7 +41,6 @@ class PatientsProvider with ChangeNotifier { List patientPrescriptionsList = []; List patientRadiologyList = []; - /*@author: ibrahe albitar *@Date:2/6/2020 *@desc: getPatientPrescriptions @@ -46,8 +51,20 @@ class PatientsProvider with ChangeNotifier { var patientProgressNoteList = []; var insuranceApporvalsList = []; + var doctorsList = []; + var clinicsList = []; + var referalFrequancyList = []; + + DoctorsByClinicIdRequest _doctorsByClinicIdRequest = + DoctorsByClinicIdRequest(); + STPReferralFrequencyRequest _referralFrequencyRequest = + STPReferralFrequencyRequest(); + ClinicByProjectIdRequest _clinicByProjectIdRequest = + ClinicByProjectIdRequest(); + ReferToDoctorRequest _referToDoctorRequest = ReferToDoctorRequest(); + Client client = - HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]); + HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]); PatiantInformtion _selectedPatient; @@ -220,7 +237,7 @@ class PatientsProvider with ChangeNotifier { try { if (await Helpers.checkConnection()) { final response = - await AppClient.post(GET_PRESCRIPTION, body: json.encode(patient)); + await AppClient.post(GET_PRESCRIPTION, body: json.encode(patient)); final int statusCode = response.statusCode; isLoading = false; @@ -279,7 +296,7 @@ class PatientsProvider with ChangeNotifier { try { if (await Helpers.checkConnection()) { final response = - await AppClient.post(GET_RADIOLOGY, body: json.encode(patient)); + await AppClient.post(GET_RADIOLOGY, body: json.encode(patient)); final int statusCode = response.statusCode; isLoading = false; @@ -310,7 +327,6 @@ class PatientsProvider with ChangeNotifier { } } - getLabResult(LabOrdersResModel labOrdersResModel) async { labResultList.clear(); isLoading = true; @@ -320,15 +336,14 @@ class PatientsProvider with ChangeNotifier { requestLabResult.orderNo = labOrdersResModel.orderNo; requestLabResult.invoiceNo = labOrdersResModel.invoiceNo; requestLabResult.patientTypeID = labOrdersResModel.patientType; - await BaseAppClient.post( - 'DoctorApplication.svc/REST/GetPatientLabResults', + await BaseAppClient.post('DoctorApplication.svc/REST/GetPatientLabResults', onSuccess: (dynamic response, int statusCode) { - isError = false; - isLoading = false; - response['List_GetLabNormal'].forEach((v) { - labResultList.add(new LabResult.fromJson(v)); - }); - }, onFailure: (String error, int statusCode) { + isError = false; + isLoading = false; + response['List_GetLabNormal'].forEach((v) { + labResultList.add(new LabResult.fromJson(v)); + }); + }, onFailure: (String error, int statusCode) { isError = true; isLoading = false; this.error = error; @@ -336,13 +351,12 @@ class PatientsProvider with ChangeNotifier { notifyListeners(); } - getPatientInsuranceApprovals(patient) async { setBasicData(); try { if (await Helpers.checkConnection()) { - final response = await AppClient.post( - PATIENT_INSURANCE_APPROVALS_URL, body: json.encode(patient)); + final response = await AppClient.post(PATIENT_INSURANCE_APPROVALS_URL, + body: json.encode(patient)); final int statusCode = response.statusCode; isLoading = false; @@ -371,44 +385,247 @@ class PatientsProvider with ChangeNotifier { } } -/*@author: ibrahe albitar +/*@author: ibrahem albitar *@Date:2/6/2020 - *@desc: getPatientPrescriptions + *@desc: getPatientProgressNote */ getPatientProgressNote(patient) async { - setBasicData(); - try { - if (await Helpers.checkConnection()) { - final response = await AppClient.post(PATIENT_PROGRESS_NOTE_URL, - 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'; + setBasicData(); + try { + if (await Helpers.checkConnection()) { + final response = await AppClient.post(PATIENT_PROGRESS_NOTE_URL, + 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) { + patientProgressNoteList = res['List_GetPregressNoteForInPatient']; } else { - var res = json.decode(response.body); - print('$res'); - if (res['MessageStatus'] == 1) { - patientProgressNoteList = res['List_GetPregressNoteForInPatient']; - } else { - isError = true; - error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; - } + isError = true; + error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; } + } + } else { + isLoading = false; + isError = true; + error = 'Please Check The Internet Connection'; + } + notifyListeners(); + } catch (err) { + handelCatchErrorCase(err); + } + } + + /*@author: ibrahem albitar + *@Date:3/6/2020 + *@desc: getDoctorsList + */ + getDoctorsList(String clinicId) async { + String token = await sharedPref.getString(TOKEN); + int projectID = await sharedPref.getInt(PROJECT_ID); + setBasicData(); + try { + if (await Helpers.checkConnection()) { + _doctorsByClinicIdRequest.projectID = projectID; + _doctorsByClinicIdRequest.clinicID = clinicId; + _doctorsByClinicIdRequest.tokenID = token; + + final response = await AppClient.post(PATIENT_GET_DOCTOR_BY_CLINIC_URL, + body: json.encode(_doctorsByClinicIdRequest)); + final int statusCode = response.statusCode; + isLoading = false; + + if (statusCode < 200 || statusCode >= 400 || json == null) { + isError = true; + error = 'Error While Fetching data'; } else { - isLoading = false; + var res = json.decode(response.body); + print('$res'); + if (res['MessageStatus'] == 1) { + doctorsList = res['List_Doctors_All']; + } else { + isError = true; + error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; + } + } + } else { + isLoading = false; + isError = true; + error = 'Please Check The Internet Connection'; + } + 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 { + String token = await sharedPref.getString(TOKEN); + setBasicData(); + try { + if (await Helpers.checkConnection()) { + int projectID = await sharedPref.getInt(PROJECT_ID); + _clinicByProjectIdRequest.projectID = projectID; + _clinicByProjectIdRequest.tokenID = token; + + final response = await AppClient.post(PATIENT_GET_CLINIC_BY_PROJECT_URL, + body: json.encode(_clinicByProjectIdRequest)); + final int statusCode = response.statusCode; + isLoading = false; + + if (statusCode < 200 || statusCode >= 400 || json == null) { isError = true; - error = 'Please Check The Internet Connection'; + error = 'Error While Fetching data'; + } else { + var res = json.decode(response.body); + print('$res'); + if (res['MessageStatus'] == 1) { + clinicsList = res['List_Clinic_All']; + } else { + isError = true; + error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; + } } - notifyListeners(); - } catch (err) { - handelCatchErrorCase(err); + } else { + isLoading = false; + isError = true; + error = 'Please Check The Internet Connection'; } + 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 { + String token = await sharedPref.getString(TOKEN); + setBasicData(); + try { + if (await Helpers.checkConnection()) { + _referralFrequencyRequest.tokenID = token; + final response = await AppClient.post(PATIENT_GET_LIST_REFERAL_URL, + body: json.encode(_referralFrequencyRequest)); + 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) { + referalFrequancyList = res['list_STPReferralFrequency']; + } else { + isError = true; + error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; + } + } + } else { + isLoading = false; + isError = true; + error = 'Please Check The Internet Connection'; + } + notifyListeners(); + } catch (err) { + handelCatchErrorCase(err); + } + } + List getReferralNamesList() { + var referralNamesList = referalFrequancyList + .map((value) => value['Description'].toString()) + .toList(); + return referralNamesList; + } + /*@author: ibrahem albitar + *@Date:3/6/2020 + *@desc: referToDoctor + */ + referToDoctor( + int selectedDoctorID, + int selectedClinicID, + String selectedReferralFrequancyID, + int admissionNo, + String extension, + String doctorRemark) async { + String token = await sharedPref.getString(TOKEN); + int projectID = await sharedPref.getInt(PROJECT_ID); + Map profile = await sharedPref.getObj(DOCTOR_PROFILE); + DoctorProfileModel doctorProfile = new DoctorProfileModel.fromJson(profile); + int doctorID = doctorProfile.doctorID; + int clinicId = doctorProfile.clinicID; + setBasicData(); + try { + if (await Helpers.checkConnection()) { + // _referToDoctorRequest.tokenID = token; + // _referToDoctorRequest.admissionNo = admissionNo; + // _referToDoctorRequest.projectID = projectID; + // _referToDoctorRequest.tokenID = token; + // _referToDoctorRequest.extension = extension; + // _referToDoctorRequest.frequency = selectedReferralFrequancyID; + // _referToDoctorRequest.patientID = + // _referToDoctorRequest.priority = + // _referToDoctorRequest.referralClinic = + // _referToDoctorRequest.referralDoctor = + // _referToDoctorRequest.referringDoctorRemarks = + // _referToDoctorRequest.roomID = + // _referToDoctorRequest.referringClinic = + // _referToDoctorRequest.referringDoctor = + + final response = await AppClient.post(PATIENT_REFER_TO_DOCTOR_URL, + body: json.encode(_referralFrequencyRequest)); + 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) { + patientProgressNoteList = res['List_GetPregressNoteForInPatient']; + } else { + isError = true; + error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; + } + } + } else { + isLoading = false; + isError = true; + error = 'Please Check The Internet Connection'; + } + notifyListeners(); + } catch (err) { + handelCatchErrorCase(err); + } + } } diff --git a/lib/routes.dart b/lib/routes.dart index 9c87ff2f..9ef1237a 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -3,6 +3,7 @@ import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/screens/patients/profile/insurance_approvals_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/patient_orders_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/progress_note_screen.dart'; +import 'package:doctor_app_flutter/screens/patients/profile/refer_patient_screen.dart'; import './screens/patients/profile/vital_sign/body_measurements_screen.dart'; @@ -56,6 +57,7 @@ const String LAB_ORDERS = 'patients/lab_orders'; const String PRESCRIPTIONS = 'patients/prescription'; const String RADIOLOGY = 'patients/radiology'; const String PROGRESS_NOTE = 'patients/progress-note'; +const String REFER_PATIENT = 'patients/refer-patient'; const String PATIENT_ORDERS = 'patients/patient_orders'; const String PATIENT_INSURANCE_APPROVALS = 'patients/patient_insurance_approvals'; const String VITAL_SIGN_DETAILS = 'patients/vital-sign-details'; @@ -88,6 +90,7 @@ var routes = { PRESCRIPTIONS: (_) => PrescriptionScreen(), RADIOLOGY: (_) => RadiologyScreen(), PROGRESS_NOTE: (_) => ProgressNoteScreen(), + REFER_PATIENT: (_)=> ReferPatientScreen(), PATIENT_ORDERS: (_) => PatientsOrdersScreen(), PATIENT_INSURANCE_APPROVALS: (_) => InsuranceApprovalsScreen(), VITAL_SIGN_DETAILS: (_) => VitalSignDetailsScreen(), diff --git a/lib/screens/patients/profile/refer_patient_screen.dart b/lib/screens/patients/profile/refer_patient_screen.dart new file mode 100644 index 00000000..6f489237 --- /dev/null +++ b/lib/screens/patients/profile/refer_patient_screen.dart @@ -0,0 +1,269 @@ +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:flutter/material.dart'; +import 'package:provider/provider.dart'; +import '../../../config/size_config.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/dr_app_circular_progress_Indeicator.dart'; + +DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); + +/* + *@author: ibrahim albitar + *@Date:4/6/2020 + *@param: + *@return: + *@desc: + */ + +class ReferPatientScreen extends StatefulWidget { + @override + _ReferPatientState createState() => _ReferPatientState(); +} + +class _ReferPatientState extends State { + PatientsProvider patientsProv; + var doctorsList; + var clinicsList; + var referralFrequancyList; + final _controller = TextEditingController(); + var _isInit = true; + + String _selectedClinic; + String _selectedDoctor; + String _selectedReferralFrequancy; + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + if (_isInit) { + patientsProv = Provider.of(context); + patientsProv.getClinicsList(); + patientsProv.getReferralFrequancyList(); + setState(() { + clinicsList = patientsProv.clinicsList; + referralFrequancyList = patientsProv.referalFrequancyList; + }); + } + _isInit = false; + } + + @override + Widget build(BuildContext context) { + return AppScaffold( + appBarTitle: "Progress Note", + showAppDrawer: false, + showBottomBar: false, + body: patientsProv.isLoading + ? DrAppCircularProgressIndeicator() + : patientsProv.isError + ? DrAppEmbeddedError(error: patientsProv.error) + : clinicsList == null + ? DrAppEmbeddedError( + error: 'You don\'t have any Progress Note') + : Column( + children: [ + RoundedContainer( + margin: 0, + showBorder: true, + raduis: 30, + borderColor: Color(0xff707070), + width: double.infinity, + child: Padding( + padding: EdgeInsets.only( + top: SizeConfig.widthMultiplier * 0.9, + bottom: SizeConfig.widthMultiplier * 0.9, + right: SizeConfig.widthMultiplier * 3, + left: SizeConfig.widthMultiplier * 3), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + // add Expanded to have your dropdown button fill remaining space + child: DropdownButton( + isExpanded: true, + value: _selectedClinic, + iconSize: 40, + elevation: 16, + selectedItemBuilder: + (BuildContext context) { + return patientsProv + .getClinicNameList() + .map((item) { + return Row( + mainAxisSize: MainAxisSize.max, + children: [ + AppText( + item, + fontSize: + SizeConfig.textMultiplier * + 2.1, + ), + ], + ); + }).toList(); + }, + onChanged: (newValue) => { + setState(() { + _selectedDoctor = null; + _selectedClinic = newValue; + var clinicInfo = + clinicsList.singleWhere((i) => + i['ClinicDescription'] + .toString() + .contains(_selectedClinic)); + var clinicId = + clinicInfo['ClinicID'].toString(); + patientsProv.getDoctorsList(clinicId); + }) + }, + items: patientsProv + .getClinicNameList() + .map((item) { + return DropdownMenuItem( + value: item.toString(), + child: Text( + item, + textAlign: TextAlign.end, + ), + ); + }).toList(), + ), + ), + ], + ), + ), + ), + //--------------------------------------------------------------------// + RoundedContainer( + margin: 0, + showBorder: true, + raduis: 30, + borderColor: Color(0xff707070), + width: double.infinity, + child: Padding( + padding: EdgeInsets.only( + top: SizeConfig.widthMultiplier * 0.9, + bottom: SizeConfig.widthMultiplier * 0.9, + right: SizeConfig.widthMultiplier * 3, + left: SizeConfig.widthMultiplier * 3), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + // add Expanded to have your dropdown button fill remaining space + child: DropdownButton( + isExpanded: true, + value: _selectedDoctor, + iconSize: 40, + elevation: 16, + selectedItemBuilder: + (BuildContext context) { + return patientsProv + .getDoctorNameList() + .map((item) { + return Row( + mainAxisSize: MainAxisSize.max, + children: [ + AppText( + item, + fontSize: + SizeConfig.textMultiplier * + 2.1, + ), + ], + ); + }).toList(); + }, + onChanged: (newValue) => { + setState(() { + _selectedDoctor = newValue; + }) + }, + items: patientsProv + .getDoctorNameList() + .map((item) { + return DropdownMenuItem( + value: item.toString(), + child: Text( + item, + textAlign: TextAlign.end, + ), + ); + }).toList(), + ), + ), + ], + ), + ), + ), //-----------------------------/// + RoundedContainer( + margin: 0, + showBorder: true, + raduis: 30, + borderColor: Color(0xff707070), + width: double.infinity, + child: Padding( + padding: EdgeInsets.only( + top: SizeConfig.widthMultiplier * 0.9, + bottom: SizeConfig.widthMultiplier * 0.9, + right: SizeConfig.widthMultiplier * 3, + left: SizeConfig.widthMultiplier * 3), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + // add Expanded to have your dropdown button fill remaining space + child: DropdownButton( + isExpanded: true, + value: _selectedReferralFrequancy, + iconSize: 40, + elevation: 16, + selectedItemBuilder: + (BuildContext context) { + return patientsProv + .getReferralNamesList() + .map((item) { + return Row( + mainAxisSize: MainAxisSize.max, + children: [ + AppText( + item, + fontSize: + SizeConfig.textMultiplier * + 2.1, + ), + ], + ); + }).toList(); + }, + onChanged: (newValue) => { + setState(() { + _selectedReferralFrequancy = newValue; + }) + }, + items: patientsProv + .getReferralNamesList() + .map((item) { + return DropdownMenuItem( + value: item.toString(), + child: Text( + item, + textAlign: TextAlign.end, + ), + ); + }).toList(), + ), + ), + ], + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/widgets/patients/profile/profile_medical_info_widget.dart b/lib/widgets/patients/profile/profile_medical_info_widget.dart index 657690be..89acca60 100644 --- a/lib/widgets/patients/profile/profile_medical_info_widget.dart +++ b/lib/widgets/patients/profile/profile_medical_info_widget.dart @@ -127,7 +127,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget { visible: selectedPatientType != 0 && selectedPatientType != 5 && selectedPatientType != 2, child: InkWell( onTap: () { - navigator(context, PRESCRIPTIONS); + navigator(context, REFER_PATIENT); }, child: CircleAvatarWidget( des: 'Refer Patient ',