diff --git a/assets/fonts/DoctorApp.ttf b/assets/fonts/DoctorApp.ttf
index 21ce4a5d..22539da0 100644
Binary files a/assets/fonts/DoctorApp.ttf and b/assets/fonts/DoctorApp.ttf differ
diff --git a/assets/images/create-episod.png b/assets/images/create-episod.png
new file mode 100644
index 00000000..02386fd1
Binary files /dev/null and b/assets/images/create-episod.png differ
diff --git a/assets/images/leaves.svg b/assets/images/leaves.svg
new file mode 100644
index 00000000..474585fd
--- /dev/null
+++ b/assets/images/leaves.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/images/modilfy-episode.png b/assets/images/modilfy-episode.png
new file mode 100644
index 00000000..6fdd224f
Binary files /dev/null and b/assets/images/modilfy-episode.png differ
diff --git a/lib/client/base_app_client.dart b/lib/client/base_app_client.dart
index ff9d957d..83923ea7 100644
--- a/lib/client/base_app_client.dart
+++ b/lib/client/base_app_client.dart
@@ -82,12 +82,10 @@ class BaseAppClient {
onFailure('Error While Fetching data', statusCode);
} else {
var parsed = json.decode(response.body.toString());
- // if (!parsed['IsAuthenticated']) {
- // // TODO: return it back when IsAuthenticated work fine in all service
- // // await helpers.logout();
- //
- // helpers.showErrorToast('Your session expired Please login agian');
- // } else
+ if (!parsed['IsAuthenticated']) {
+ await helpers.logout();
+ helpers.showErrorToast('Your session expired Please login agian');
+ } else
if (parsed['MessageStatus'] == 1) {
if (!parsed['IsAuthenticated'])
onFailure(getError(parsed), statusCode);
diff --git a/lib/config/config.dart b/lib/config/config.dart
index 8d7ce357..e3163bb2 100644
--- a/lib/config/config.dart
+++ b/lib/config/config.dart
@@ -107,6 +107,15 @@ const ARRIVED_PATIENT_URL =
const ADD_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/PostSickLeave';
const GET_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/GetAllSickLeaves';
const EXTEND_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/ExtendSickLeave';
+
+const GET_OFFTIME = 'Services/DoctorApplication.svc/REST/GetMasterLookUpList';
+const GET_COVERING_DOCTORS =
+ 'Services/DoctorApplication.svc/REST/GetCoveringDoctor';
+const ADD_RESCHDEULE = 'Services/DoctorApplication.svc/REST/PostRequisition';
+const UPDATE_RESCHDEULE =
+ 'Services/DoctorApplication.svc/REST/PatchRequisition';
+const GET_RESCHEDULE_LEAVE =
+ 'Services/DoctorApplication.svc/REST/GetRequisition';
const GET_PRESCRIPTION_LIST =
'Services/DoctorApplication.svc/REST/GetPrescription';
@@ -130,13 +139,14 @@ const POST_CHIEF_COMPLAINT =
const POST_PHYSICAL_EXAM =
'Services/DoctorApplication.svc/REST/PostPhysicalExam';
const POST_PROGRESS_NOTE =
- 'Services/DoctorApplication.svc/REST/PostProgressNote';
+ '/Services/DoctorApplication.svc/REST/PostProgressNote';
const POST_ASSESSMENT = 'Services/DoctorApplication.svc/REST/PostAssessment';
const PATCH_ALLERGY = 'Services/DoctorApplication.svc/REST/PatchAllergies';
const PATCH_HISTORY = 'Services/DoctorApplication.svc/REST/PatchHistory';
const PATCH_CHIEF_COMPLAINT =
'Services/DoctorApplication.svc/REST/PatchChiefcomplaint';
+
const PATCH_PHYSICAL_EXAM =
'Services/DoctorApplication.svc/REST/PatchPhysicalExam';
const PATCH_PROGRESS_NOTE =
diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart
index c27e8b70..1dc0216e 100644
--- a/lib/config/localized_values.dart
+++ b/lib/config/localized_values.dart
@@ -354,6 +354,14 @@ const Map> localizedValues = {
'instruction': {'en': 'Instructions', 'ar': 'إرشادات'},
'addMedication': {'en': 'ADD MEDICATION', 'ar': 'اضف الدواء'},
'route': {'en': 'Route', 'ar': 'المسار'},
+ 'reschedule-leave': {
+ 'en': 'Reschedule and leaves',
+ 'ar': 'إعادة الجدولة والأوراق'
+ },
+ 'no-reschedule-leave': {
+ 'en': 'No Reschedule and leaves',
+ 'ar': 'لا إعادة جدولة ويغادر'
+ },
'weight': {'en': "Weight", 'ar': 'الوزن'},
'kg': {'en': "kg", 'ar': 'كغ'},
'height': {'en': "Height", 'ar': 'الطول'},
@@ -369,50 +377,134 @@ const Map> localizedValues = {
'rhythm': {'en': "Rhythm", 'ar': 'الإيقاع'},
'respBeats': {'en': 'RESP (beats/minute)', 'ar': ' (دقة/دقيقة)التنفس'},
'patternOfRespiration': {'en': "Pattern Of Respiration", 'ar': 'نمط التنفس'},
- 'bloodPressureDiastoleAndSystole': {'en': 'Blood Pressure (Sys, Dias)', 'ar': 'ضغط الدم (العظمى, الصغرى)'},
+ 'bloodPressureDiastoleAndSystole': {
+ 'en': 'Blood Pressure (Sys, Dias)',
+ 'ar': 'ضغط الدم (العظمى, الصغرى)'
+ },
'cuffLocation': {'en': "Cuff Location", 'ar': 'موقع الكف'},
'cuffSize': {'en': "Cuff Size", 'ar': 'حجم الكف'},
'patientPosition': {'en': "Patient Position", 'ar': 'موقع المريض'},
'fio2': {'en': "FIO2(%)", 'ar': 'FIO2(%)'},
'sao2': {'en': "SAO2(%)", 'ar': 'SAO2(%)'},
'painManagement': {'en': "Pain Management", 'ar': 'إدارة الألم'},
+ 'holiday': {'en': "Holiday", 'ar': 'يوم الاجازة'},
+ 'to': {'en': "To", 'ar': 'إلى'},
+ 'coveringDoctor': {'en': "Covering Doctor", 'ar': 'تغطية دكتور'},
+ 'requestLeave': {'en': 'Request Leave', 'ar': 'طلب إجازة'},
+ 'pleaseEnterDate': {
+ 'en': 'Please enter leave start date',
+ 'ar': 'الرجاء إدخال تاريخ بدء الإجازة'
+ },
+ 'pleaseEnterNoOfDays': {
+ 'en': 'Please enter sick leave days',
+ 'ar': 'الرجاء إدخال أيام الإجازة المرضية'
+ },
+ 'pleaseEnterRemarks': {
+ 'en': 'Please enter remarks',
+ 'ar': 'الرجاء إدخال الملاحظات'
+ },
+ 'update': {'en': 'Update', 'ar': 'تحديث'},
'admission': {'en': "Admission", 'ar': 'قبول'},
'request': {'en': "Request", 'ar': 'طلب'},
'admissionRequest': {'en': "Admission Request", 'ar': 'طلب قبول'},
'patientDetails': {'en': "Patient Details", 'ar': 'تفاصيل المريض'},
- 'specialityAndDoctorDetail': {'en': "SPECIALITY AND DOCTOR DETAILS", 'ar': 'تفاصيل التخصص والطبيب'},
+ 'specialityAndDoctorDetail': {
+ 'en': "SPECIALITY AND DOCTOR DETAILS",
+ 'ar': 'تفاصيل التخصص والطبيب'
+ },
'referringDate': {'en': "Referring Date", 'ar': 'تاريخ الإحالة'},
'referringDoctor': {'en': "Referring Doctor", 'ar': 'دكتور الإحالة'},
'otherInformation': {'en': "Other Information", 'ar': 'معلومات أخرى'},
'expectedDays': {'en': "Expected Days", 'ar': 'الأيام المتوقعة'},
- 'expectedAdmissionDate': {'en': "Expected Admission Date", 'ar': 'تاريخ القبول المتوقع'},
+ 'expectedAdmissionDate': {
+ 'en': "Expected Admission Date",
+ 'ar': 'تاريخ القبول المتوقع'
+ },
'emergencyAdmission': {'en': "EMERGENCY ADMISSION", 'ar': 'دخول الطوارئ'},
'patientPregnant': {'en': "Patient Pregnant", 'ar': 'حمل المريض'},
- 'treatmentLine': {'en': "Main line of treatment", 'ar': 'الخط الرئيسي للعلاج'},
+ 'treatmentLine': {
+ 'en': "Main line of treatment",
+ 'ar': 'الخط الرئيسي للعلاج'
+ },
'ward': {'en': "Ward", 'ar': 'رعاية'},
- 'preAnesthesiaReferred': {'en': "PRE ANESTHESIA REFERRED", 'ar': 'الاحالة قبل التخدير'},
+ 'preAnesthesiaReferred': {
+ 'en': "PRE ANESTHESIA REFERRED",
+ 'ar': 'الاحالة قبل التخدير'
+ },
'admissionType': {'en': "Admission Type", 'ar': 'نوع القبول'},
'diagnosis': {'en': "Diagnosis", 'ar': 'التشخيص'},
'allergies': {'en': "Allergies", 'ar': 'الحساسية'},
- 'preOperativeOrders': {'en': "Pre Operative Orders", 'ar': 'أوامر ما قبل العملية'},
- 'elementForImprovement': {'en': "Element For Improvement", 'ar': 'عنصر للتحسين'},
+ 'preOperativeOrders': {
+ 'en': "Pre Operative Orders",
+ 'ar': 'أوامر ما قبل العملية'
+ },
+ 'elementForImprovement': {
+ 'en': "Element For Improvement",
+ 'ar': 'عنصر للتحسين'
+ },
'dischargeDate': {'en': "Discharge Date", 'ar': 'تاريخ التفريغ'},
'dietType': {'en': "Diet Type", 'ar': 'نوع النظام الغذائي'},
- 'dietTypeRemarks': {'en': "Remarks on diet type", 'ar': 'ملاحظات على نوع النظام الغذائي'},
+ 'dietTypeRemarks': {
+ 'en': "Remarks on diet type",
+ 'ar': 'ملاحظات على نوع النظام الغذائي'
+ },
'save': {'en': "SAVE", 'ar': 'حفظ'},
- 'postPlansEstimatedCost': {'en': "POST PLANS & ESTIMATED COST", 'ar': 'خطط البريد والتكلفة المقدرة'},
+ 'postPlansEstimatedCost': {
+ 'en': "POST PLANS & ESTIMATED COST",
+ 'ar': 'خطط البريد والتكلفة المقدرة'
+ },
'ucaf': {'en': "UCAF", 'ar': 'UCAF'},
'emergencyCase': {'en': "Emergency Case", 'ar': 'حالة طارئة'},
'durationOfIllness': {'en': "duration Of Illness", 'ar': 'مدة المرض'},
- 'chiefComplaintsAndSymptoms': {'en': "CHIEF COMPLAINTS & OTHER SYMPTOMS", 'ar': 'شكاوى الرئيس وأعراض أخرى'},
- 'patientFeelsPainInHisBackAndCough': {'en': "Patient Feels pain in his back and cough", 'ar': 'يشعر المريض بألم في ظهره ويسعل'},
- 'additionalTextComplaints': {'en': "Additional text to add about Complaints", 'ar': 'نص إضافي لإضافته حول الشكاوى'},
+ 'chiefComplaintsAndSymptoms': {
+ 'en': "CHIEF COMPLAINTS & OTHER SYMPTOMS",
+ 'ar': 'شكاوى الرئيس وأعراض أخرى'
+ },
+ 'patientFeelsPainInHisBackAndCough': {
+ 'en': "Patient Feels pain in his back and cough",
+ 'ar': 'يشعر المريض بألم في ظهره ويسعل'
+ },
+ 'additionalTextComplaints': {
+ 'en': "Additional text to add about Complaints",
+ 'ar': 'نص إضافي لإضافته حول الشكاوى'
+ },
'otherConditions': {'en': "OTHER CONDITIONS", 'ar': 'شروط أخرى'},
'other': {'en': "Other", 'ar': 'أخرى'},
'how': {'en': "How", 'ar': 'كيف'},
'when': {'en': "When", 'ar': 'متى'},
'where': {'en': "Where", 'ar': 'أين'},
- 'specifyPossibleLineManagement': {'en': "Specify possible line of management", 'ar': 'حدد خط الإدارة المحتمل'},
+ 'specifyPossibleLineManagement': {
+ 'en': "Specify possible line of management",
+ 'ar': 'حدد خط الإدارة المحتمل'
+ },
'significantSigns': {'en': "SIGNIFICANT SIGNS", 'ar': 'علامات مهمة'},
'backAbdomen': {'en': "Back : Abdomen", 'ar': 'الظهر: البطن'},
+ 'reasons': {'en': "Reasons", 'ar': 'الأسباب'},
+ 'createNew': {'en': "Create New", 'ar': 'انشاء '},
+ 'episode': {'en': "Episode", 'ar': 'Episode'},
+ 'chiefComplaints': {'en': "Chief Complaints", 'ar': 'الشكاوى'},
+ 'addChiefComplaints': {'en': "Add Chief Complaints", 'ar': ' اضافه الشكاوى'},
+ 'histories': {'en': "Histories", 'ar': 'التاريخ المرضي'},
+ 'allergiesSoap': {'en': "Allergies", 'ar': 'الحساسية'},
+ 'historyOfPresentIllness': {
+ 'en': "History of Present Illness",
+ 'ar': 'تاريخ المرض الحالي'
+ },
+ 'requiredMsg': {
+ 'en': "Please add required field correctly",
+ 'ar': "الرجاء إضافة الحقل المطلوب بشكل صحيح"
+ },
+ 'addHistory': {'en': "Add History", 'ar': "اضافه تاريخ مرضي"},
+ 'searchHistory': {'en': "Search History", 'ar': " البحث"},
+ 'addSelectedHistories': {
+ 'en': "add selected histories",
+ 'ar': " اضافه تاريخ مرضي"
+ },
+ 'addAllergies': {'en': "Add Allergies", 'ar': "أضف الحساسية"},
+ 'itemExist': {'en': "This item already exist", 'ar': "هذا العنصر موجود"},
+ 'selectAllergy': {'en': "Select Allergy", 'ar': "أختر الحساسية"},
+ 'selectSeverity': {'en': "Select Severity", 'ar': "أختر الدرجه"},
+ 'medications': {'en': "Medications", 'ar':"الأدوية" },
+ 'procedures': {'en': "Procedures", 'ar':"الإجراءات" },
+ 'vitalSignEmptyMsg': {'en': "There is no vital signs for this patient", 'ar':"لا توجد علامات حيوية لهذا المريض" },
};
diff --git a/lib/core/service/SOAP_service.dart b/lib/core/service/SOAP_service.dart
index 426e0811..d1fff03b 100644
--- a/lib/core/service/SOAP_service.dart
+++ b/lib/core/service/SOAP_service.dart
@@ -212,17 +212,18 @@ class SOAPService extends LookupService {
}
Future getPatientHistories(
- GetHistoryReqModel getHistoryReqModel) async {
+ GetHistoryReqModel getHistoryReqModel, {bool isFirst = false}) async {
hasError = false;
- await baseAppClient.post (GET_HISTORY,
+ await baseAppClient.post(GET_HISTORY,
onSuccess: (dynamic response, int statusCode) {
- print("Success");
- patientHistoryList.clear();
- response['List_History']['entityList'].forEach((v) {
- patientHistoryList.add(GetHistoryResModel.fromJson(v));
- });
- }, onFailure: (String error, int statusCode) {
- hasError = true;
+ print("Success");
+ if (isFirst)
+ patientHistoryList.clear();
+ response['List_History']['entityList'].forEach((v) {
+ patientHistoryList.add(GetHistoryResModel.fromJson(v));
+ });
+ }, onFailure: (String error, int statusCode) {
+ hasError = true;
super.error = error;
}, body: getHistoryReqModel.toJson());
}
diff --git a/lib/core/service/patient-doctor-referral-service.dart b/lib/core/service/patient-doctor-referral-service.dart
index a15ed05a..7eb8001b 100644
--- a/lib/core/service/patient-doctor-referral-service.dart
+++ b/lib/core/service/patient-doctor-referral-service.dart
@@ -7,6 +7,7 @@ import 'package:doctor_app_flutter/models/patient/get_clinic_by_project_id_reque
import 'package:doctor_app_flutter/models/patient/get_doctor_by_clinic_id_request.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/PendingReferral.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/my_referred_patient_model.dart';
+import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/patient/request_my_referral_patient_model.dart';
import 'base/lookup-service.dart';
@@ -188,7 +189,7 @@ class PatientReferralService extends LookupService {
}
Future makeReferral(
- PatientArrivalEntity patientArrivalEntity,
+ PatiantInformtion patient,
String isoStringDate,
int projectID,
int clinicID,
@@ -203,8 +204,8 @@ class PatientReferralService extends LookupService {
.add({"goalId": element.id, "remarks": element.remarks});
});
- body['PatientMRN'] = patientArrivalEntity.patientMRN;
- body['AppointmentNo'] = patientArrivalEntity.appointmentNo;
+ body['PatientMRN'] = patient.patientMRN;
+ body['AppointmentNo'] = patient.appointmentNo;
body['SetupID'] = setupID;
body['appointmentDate'] = isoStringDate;
body['SlotStart'] = isoStringDate;
diff --git a/lib/core/service/patient-vital-signs-service.dart b/lib/core/service/patient-vital-signs-service.dart
index d508fec6..31c8721d 100644
--- a/lib/core/service/patient-vital-signs-service.dart
+++ b/lib/core/service/patient-vital-signs-service.dart
@@ -1,6 +1,7 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart';
import 'package:doctor_app_flutter/models/patient/PatientArrivalEntity.dart';
+import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/vital_sign_res_model.dart';
@@ -46,18 +47,18 @@ class VitalSignsService extends BaseService{
);
} // Vit*/
- Future getPatientVitalSign(PatientArrivalEntity patientArrivalEntity) async {
+ Future getPatientVitalSign(PatiantInformtion patient) async {
hasError = false;
Map body = Map();
- body['PatientMRN'] = patientArrivalEntity.patientMRN;
- body['AppointmentNo'] = patientArrivalEntity.appointmentNo;
- body['EpisodeID'] = patientArrivalEntity.episodeNo;
+ body['PatientMRN'] = patient.patientMRN;
+ body['AppointmentNo'] = patient.appointmentNo;
+ body['EpisodeID'] = patient.episodeNo;
await baseAppClient.post(
GET_PATIENT_VITAL_SIGN_DATA,
onSuccess: (dynamic response, int statusCode) {
if(response['VitalSignsList'] != null){
- if(response['VitalSignsList']['entityList'] = null && (response['VitalSignsList']['entityList'] as List).length > 0){
+ if(response['VitalSignsList']['entityList'] != null && (response['VitalSignsList']['entityList'] as List).length > 0){
patientVitalSigns = VitalSignData.fromJson(response['VitalSignsList']['entityList']['0']);
}
}
diff --git a/lib/core/service/sickleave_service.dart b/lib/core/service/sickleave_service.dart
index 70d9a3e4..c4aa8abf 100644
--- a/lib/core/service/sickleave_service.dart
+++ b/lib/core/service/sickleave_service.dart
@@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart';
+import 'package:doctor_app_flutter/core/viewModel/leave_rechdule_response.dart';
import 'package:doctor_app_flutter/models/sickleave/add_sickleave_request.dart';
import 'package:doctor_app_flutter/models/sickleave/extend_sick_leave_request.dart';
import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart';
@@ -8,9 +9,18 @@ import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.d
class SickLeaveService extends BaseService {
Map get sickLeavestatisitics => _statistics;
Map _statistics = {};
-
+ List get getOffTimeList => offTime;
+ List offTime = [];
+ List get getReasons => reasonse;
+ List reasonse = [];
List get getAllSickLeave => _getAllsickLeave;
List _getAllsickLeave = [];
+ List get coveringDoctorsList => _coveringDoctors;
+ List _coveringDoctors = [];
+
+ List get getAllRescheduleLeave =>
+ _getReScheduleLeave;
+ List _getReScheduleLeave = [];
Future getStatistics(appoNo, patientMRN) async {
hasError = false;
await baseAppClient.post(
@@ -29,14 +39,14 @@ class SickLeaveService extends BaseService {
}
Future addSickLeave(AddSickLeaveRequest addSickLeaveRequest) async {
- addSickLeaveRequest.appointmentNo = '2016054661';
- addSickLeaveRequest.patientMRN = '3120746';
+ // addSickLeaveRequest.appointmentNo = '2016054661';
+ // addSickLeaveRequest.patientMRN = '3120746';
hasError = false;
await baseAppClient.post(
ADD_SICK_LEAVE,
onSuccess: (dynamic response, int statusCode) {
Future.value(response);
- print(response);
+ //print(response);
// _statistics = {};
// _statistics = response['SickLeaveStatistics'];
},
@@ -72,7 +82,7 @@ class SickLeaveService extends BaseService {
);
}
- Future getSickLeave() async {
+ Future getSickLeave(patientMRN) async {
hasError = false;
await baseAppClient.post(
GET_SICK_LEAVE,
@@ -87,7 +97,109 @@ class SickLeaveService extends BaseService {
hasError = true;
super.error = error;
},
- body: {'PatientMRN': 3120772},
+ body: {'PatientMRN': patientMRN},
+ );
+ }
+
+ Future getRescheduleLeave() async {
+ hasError = false;
+ await baseAppClient.post(
+ GET_RESCHEDULE_LEAVE,
+ onSuccess: (dynamic response, int statusCode) {
+ Future.value(response);
+ _getReScheduleLeave.clear();
+ response['requisitionList']['entityList'].forEach((v) {
+ _getReScheduleLeave.add(GetRescheduleLeavesResponse.fromJson(v));
+ });
+ },
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ },
+ body: {'ClinicID': 1},
+ );
+ }
+
+ Future getOffTime() async {
+ hasError = false;
+
+ await baseAppClient.post(
+ GET_OFFTIME,
+ onSuccess: (dynamic response, int statusCode) {
+ offTime = [];
+ offTime = response['MasterLookUpList']['entityList'];
+ },
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ },
+ body: {"MasterInput": 2013},
+ );
+ }
+
+ Future getReasonsByID({id}) async {
+ hasError = false;
+
+ await baseAppClient.post(
+ GET_OFFTIME,
+ onSuccess: (dynamic response, int statusCode) {
+ reasonse = [];
+ reasonse = response['MasterLookUpList']['entityList'];
+ },
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ },
+ body: {"MasterInput": id ?? 18},
+ );
+ }
+
+ Future getCoveringDoctors() async {
+ hasError = false;
+
+ await baseAppClient.post(
+ GET_COVERING_DOCTORS,
+ onSuccess: (dynamic response, int statusCode) {
+ _coveringDoctors = [];
+ _coveringDoctors = response['coveringDoctorList']['entityList'];
+ },
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ },
+ body: {"ClinicID": 1},
+ );
+ }
+
+ addReschedule(request) async {
+ hasError = false;
+
+ await baseAppClient.post(
+ ADD_RESCHDEULE,
+ onSuccess: (dynamic response, int statusCode) {
+ Future.value(response);
+ },
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ },
+ body: request,
+ );
+ }
+
+ updateReschedule(request) async {
+ hasError = false;
+
+ await baseAppClient.post(
+ UPDATE_RESCHDEULE,
+ onSuccess: (dynamic response, int statusCode) {
+ Future.value(response);
+ },
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ },
+ body: request,
);
}
}
diff --git a/lib/core/viewModel/SOAP_view_model.dart b/lib/core/viewModel/SOAP_view_model.dart
index 697e9934..fff7a239 100644
--- a/lib/core/viewModel/SOAP_view_model.dart
+++ b/lib/core/viewModel/SOAP_view_model.dart
@@ -226,17 +226,17 @@ class SOAPViewModel extends BaseViewModel {
await _SOAPService.getPatientAllergy(generalGetReqForSOAP);
if (_SOAPService.hasError) {
error = _SOAPService.error;
- setState(ViewState.Busy);
+ setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
- Future getPatientHistories(GetHistoryReqModel getHistoryReqModel) async {
+ Future getPatientHistories(GetHistoryReqModel getHistoryReqModel, {bool isFirst = false}) async {
setState(ViewState.Busy);
- await _SOAPService.getPatientHistories(getHistoryReqModel);
+ await _SOAPService.getPatientHistories(getHistoryReqModel, isFirst: isFirst);
if (_SOAPService.hasError) {
error = _SOAPService.error;
- setState(ViewState.Busy);
+ setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
@@ -247,7 +247,7 @@ class SOAPViewModel extends BaseViewModel {
await _SOAPService.getPatientChiefComplaint(getChiefComplaintReqModel);
if (_SOAPService.hasError) {
error = _SOAPService.error;
- setState(ViewState.Busy);
+ setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
@@ -278,7 +278,7 @@ class SOAPViewModel extends BaseViewModel {
await _SOAPService.getPatientAssessment(getAssessmentReqModel);
if (_SOAPService.hasError) {
error = _SOAPService.error;
- setState(ViewState.Busy);
+ setState(ViewState.Error);
} else
setState(ViewState.Idle);
}
diff --git a/lib/core/viewModel/leave_rechdule_response.dart b/lib/core/viewModel/leave_rechdule_response.dart
new file mode 100644
index 00000000..d7cab8bf
--- /dev/null
+++ b/lib/core/viewModel/leave_rechdule_response.dart
@@ -0,0 +1,52 @@
+class GetRescheduleLeavesResponse {
+ int clinicId;
+ var coveringDoctorId;
+ String date;
+ String dateTimeFrom;
+ String dateTimeTo;
+ int doctorId;
+ int reasonId;
+ int requisitionNo;
+ int requisitionType;
+ int status;
+
+ GetRescheduleLeavesResponse(
+ {this.clinicId,
+ this.coveringDoctorId,
+ this.date,
+ this.dateTimeFrom,
+ this.dateTimeTo,
+ this.doctorId,
+ this.reasonId,
+ this.requisitionNo,
+ this.requisitionType,
+ this.status});
+
+ GetRescheduleLeavesResponse.fromJson(Map json) {
+ clinicId = json['clinicId'];
+ coveringDoctorId = json['coveringDoctorId'];
+ date = json['date'];
+ dateTimeFrom = json['dateTimeFrom'];
+ dateTimeTo = json['dateTimeTo'];
+ doctorId = json['doctorId'];
+ reasonId = json['reasonId'];
+ requisitionNo = json['requisitionNo'];
+ requisitionType = json['requisitionType'];
+ status = json['status'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['clinicId'] = this.clinicId;
+ data['coveringDoctorId'] = this.coveringDoctorId;
+ data['date'] = this.date;
+ data['dateTimeFrom'] = this.dateTimeFrom;
+ data['dateTimeTo'] = this.dateTimeTo;
+ data['doctorId'] = this.doctorId;
+ data['reasonId'] = this.reasonId;
+ data['requisitionNo'] = this.requisitionNo;
+ data['requisitionType'] = this.requisitionType;
+ data['status'] = this.status;
+ return data;
+ }
+}
diff --git a/lib/core/viewModel/patient-referral-viewmodel.dart b/lib/core/viewModel/patient-referral-viewmodel.dart
index 9662a910..e5657883 100644
--- a/lib/core/viewModel/patient-referral-viewmodel.dart
+++ b/lib/core/viewModel/patient-referral-viewmodel.dart
@@ -7,6 +7,7 @@ import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/patient/PatientArrivalEntity.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/PendingReferral.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/my_referred_patient_model.dart';
+import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import '../../locator.dart';
@@ -117,35 +118,14 @@ class PatientReferralViewModel extends BaseViewModel {
setState(ViewState.Idle);
}
- Future getPatientArrivalList(String date) async {
- setState(ViewState.Busy);
- await _referralPatientService.getPatientArrivalList(date);
- if (_referralPatientService.hasError) {
- error = _referralPatientService.error;
- setState(ViewState.ErrorLocal);
- } else {
- setState(ViewState.Idle);
- }
- }
-
- List getAppointmentsByPatientName(String patientName) {
- List appointments = [];
- patientArrivalList.forEach((element) {
- if (element.patientName == patientName) {
- appointments.add(element.toJson());
- }
- });
- return appointments;
- }
-
- Future makeReferral(PatientArrivalEntity patientArrivalEntity,
+ Future makeReferral(PatiantInformtion patient,
String isoStringDate,
int projectID,
int clinicID,
int doctorID,
String remarks) async {
setState(ViewState.Busy);
- await _referralPatientService.makeReferral(patientArrivalEntity, isoStringDate, projectID, clinicID, doctorID, remarks);
+ await _referralPatientService.makeReferral(patient, isoStringDate, projectID, clinicID, doctorID, remarks);
if (_referralPatientService.hasError) {
error = _referralPatientService.error;
setState(ViewState.Error);
diff --git a/lib/core/viewModel/patient-vital-sign-viewmodel.dart b/lib/core/viewModel/patient-vital-sign-viewmodel.dart
index e58ad089..f53def7b 100644
--- a/lib/core/viewModel/patient-vital-sign-viewmodel.dart
+++ b/lib/core/viewModel/patient-vital-sign-viewmodel.dart
@@ -16,17 +16,17 @@ class VitalSignsViewModel extends BaseViewModel {
VitalSignData get patientVitalSigns => _vitalSignService.patientVitalSigns;
- Future getPatientArrivalList(String date, PatiantInformtion patient,
+ /*Future getPatientArrivalList(String date, PatiantInformtion patient,
{String fromDate}) async {
// TODO when arrival list work un comment below lines
- /* setState(ViewState.Busy);
+ *//* setState(ViewState.Busy);
await _vitalSignService.getPatientArrivalList(date, fromDate: fromDate);
if (_vitalSignService.hasError) {
error = _vitalSignService.error;
setState(ViewState.Error);
} else {
await getPatientVitalSign(patient);
- }*/
+ }*//*
makeVitalSignDemoData();
}
@@ -43,27 +43,18 @@ class VitalSignsViewModel extends BaseViewModel {
// print("patient index: $index");
}
return null;
- }
+ }*/
Future getPatientVitalSign(PatiantInformtion patient) async {
setState(ViewState.Busy);
- PatientArrivalEntity patientArrivalEntity =
- getPatientAppointmentEntity(patient);
- if (patientArrivalEntity == null) {
- _vitalSignService.hasError = true;
- error = "There is no appointments for this patient";
- setState(ViewState.Error);
- return;
- }
- await _vitalSignService.getPatientVitalSign(patientArrivalEntity);
- // TODO remove (not) from below condition
- if (!_vitalSignService.hasError) {
+ await _vitalSignService.getPatientVitalSign(patient);
+ if (_vitalSignService.hasError) {
error = _vitalSignService.error;
setState(ViewState.Error);
} else {
- if (patientVitalSigns == null) {
- makeVitalSignDemoData();
- }
+ // if (patientVitalSigns == null) {
+ // makeVitalSignDemoData();
+ // }
setState(ViewState.Idle);
}
}
diff --git a/lib/core/viewModel/patient_view_model.dart b/lib/core/viewModel/patient_view_model.dart
index 9672da83..2fcdc779 100644
--- a/lib/core/viewModel/patient_view_model.dart
+++ b/lib/core/viewModel/patient_view_model.dart
@@ -49,7 +49,7 @@ class PatientViewModel extends BaseViewModel {
List get referralFrequencyList =>
_patientService.referalFrequancyList;
- Future getPatientList( patient, patientType,
+ Future getPatientList(patient, patientType,
{bool isBusyLocal = false}) async {
if (isBusyLocal) {
setState(ViewState.BusyLocal);
diff --git a/lib/core/viewModel/sick_leave_view_model.dart b/lib/core/viewModel/sick_leave_view_model.dart
index a11d43ec..d5aba154 100644
--- a/lib/core/viewModel/sick_leave_view_model.dart
+++ b/lib/core/viewModel/sick_leave_view_model.dart
@@ -12,6 +12,10 @@ class SickLeaveViewModel extends BaseViewModel {
SickLeaveService _sickLeaveService = locator();
get sickLeaveStatistics => _sickLeaveService.sickLeavestatisitics;
get getAllSIckLeave => _sickLeaveService.getAllSickLeave;
+ List get allOffTime => _sickLeaveService.getOffTimeList;
+ List get allReasons => _sickLeaveService.getReasons;
+ List get coveringDoctors => _sickLeaveService.coveringDoctorsList;
+ get getReschduleLeave => _sickLeaveService.getAllRescheduleLeave;
Future addSickLeave(AddSickLeaveRequest addSickLeaveRequest) async {
setState(ViewState.Busy);
await _sickLeaveService.addSickLeave(addSickLeaveRequest);
@@ -42,9 +46,69 @@ class SickLeaveViewModel extends BaseViewModel {
setState(ViewState.Idle);
}
- Future getSickLeave() async {
+ Future getSickLeave(patientMRN) async {
setState(ViewState.Busy);
- await _sickLeaveService.getSickLeave();
+ await _sickLeaveService.getSickLeave(patientMRN);
+ if (_sickLeaveService.hasError) {
+ error = _sickLeaveService.error;
+ setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ Future getRescheduleLeave() async {
+ setState(ViewState.Busy);
+ await _sickLeaveService.getRescheduleLeave();
+ if (_sickLeaveService.hasError) {
+ error = _sickLeaveService.error;
+ setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ Future getOffTime() async {
+ setState(ViewState.Busy);
+ await _sickLeaveService.getOffTime();
+ if (_sickLeaveService.hasError) {
+ error = _sickLeaveService.error;
+ setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ Future getReasons(id) async {
+ setState(ViewState.Busy);
+ await _sickLeaveService.getReasonsByID(id: id);
+ if (_sickLeaveService.hasError) {
+ error = _sickLeaveService.error;
+ setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ Future getCoveringDoctors() async {
+ setState(ViewState.Busy);
+ await _sickLeaveService.getCoveringDoctors();
+ if (_sickLeaveService.hasError) {
+ error = _sickLeaveService.error;
+ setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ Future addReschedule(request) async {
+ setState(ViewState.Busy);
+ await _sickLeaveService.addReschedule(request);
+ if (_sickLeaveService.hasError) {
+ error = _sickLeaveService.error;
+ setState(ViewState.Error);
+ } else
+ setState(ViewState.Idle);
+ }
+
+ Future updateReschedule(request) async {
+ setState(ViewState.Busy);
+ await _sickLeaveService.updateReschedule(request);
if (_sickLeaveService.hasError) {
error = _sickLeaveService.error;
setState(ViewState.Error);
diff --git a/lib/icons_app/config.json b/lib/icons_app/config.json
index fef927b0..ede09595 100644
--- a/lib/icons_app/config.json
+++ b/lib/icons_app/config.json
@@ -384,6 +384,34 @@
"sync"
]
},
+ {
+ "uid": "a0f7dbb184f90f285a9cba8cf09a9b6a",
+ "css": "drawer_icon",
+ "code": 59429,
+ "src": "custom_icons",
+ "selected": true,
+ "svg": {
+ "path": "M1564.7 1000H68C30.6 1000 0 958.7 0 908.2H0C0 857.6 30.6 816.3 68 816.3H1564.7C1602 816.3 1632.7 857.6 1632.7 908.2H1632.7C1632.7 958.7 1602 1000 1564.7 1000ZM911.6 591.8H68C30.6 591.8 0 550.5 0 500H0C0 449.5 30.6 408.2 68 408.2H911.6C949 408.2 979.6 449.5 979.6 500H979.6C979.6 550.5 949 591.8 911.6 591.8ZM1238.1 183.7H68C30.6 183.7 0 142.4 0 91.8H0C0 41.3 30.6 0 68 0H1238.1C1275.5 0 1306.1 41.3 1306.1 91.8H1306.1C1306.1 142.4 1275.5 183.7 1238.1 183.7Z",
+ "width": 1633
+ },
+ "search": [
+ "drawer_icon"
+ ]
+ },
+ {
+ "uid": "764baf138776221a3e1e845391b188a4",
+ "css": "leaves",
+ "code": 59446,
+ "src": "custom_icons",
+ "selected": true,
+ "svg": {
+ "path": "M968.7 468.7H572.9A31.3 31.3 0 1 1 572.9 406.2H968.7A31.3 31.3 0 1 1 968.7 468.7ZM968.7 468.7M812.5 625A31.3 31.3 0 0 1 790.4 571.6L924.5 437.5 790.4 303.3A31.3 31.3 0 0 1 834.6 259.1L990.9 415.4A31.3 31.3 0 0 1 990.9 459.6L834.6 615.8A31.2 31.2 0 0 1 812.5 625ZM812.5 625M333.3 1000A83.3 83.3 0 0 0 416.7 916.7V166.7A83.9 83.9 0 0 0 360.3 87.5L109.9 4.1A84.2 84.2 0 0 0 0 83.4V833.4A83.9 83.9 0 0 0 56.4 912.4L306.8 995.8A87.2 87.2 0 0 0 333.3 1000ZM83.3 62.5A24.5 24.5 0 0 1 90.8 63.6L340.1 146.7A21.4 21.4 0 0 1 354.2 166.6V916.6A22 22 0 0 1 325.9 936.4L76.6 853.3A21.5 21.5 0 0 1 62.5 833.3V83.3A20.9 20.9 0 0 1 83.3 62.5ZM83.3 62.5M635.4 208.3A31.3 31.3 0 0 0 666.7 177.1V114.6A114.7 114.7 0 0 0 552.1 0H83.3A31.3 31.3 0 0 0 83.3 62.5H552.1A52.1 52.1 0 0 1 604.2 114.6V177.1A31.3 31.3 0 0 0 635.4 208.3ZM635.4 208.3M385.4 875H552.1A114.7 114.7 0 0 0 666.6 760.4V697.9A31.3 31.3 0 0 0 604.1 697.9V760.4A52.1 52.1 0 0 1 552.1 812.5H385.4A31.3 31.3 0 0 0 385.4 875ZM385.4 875",
+ "width": 1000
+ },
+ "search": [
+ "leaves"
+ ]
+ },
{
"uid": "740f78c2b53c8cc100a8b0d283bbd34f",
"css": "home_icon-1",
@@ -481,19 +509,6 @@
"search": [
"scdedule_icon_active"
]
- }, {
- "uid": "a0f7dbb184f90f285a9cba8cf09a9b6a",
- "css": "drawer_icon",
- "code": 59429,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M1564.7 1000H68C30.6 1000 0 958.7 0 908.2H0C0 857.6 30.6 816.3 68 816.3H1564.7C1602 816.3 1632.7 857.6 1632.7 908.2H1632.7C1632.7 958.7 1602 1000 1564.7 1000ZM911.6 591.8H68C30.6 591.8 0 550.5 0 500H0C0 449.5 30.6 408.2 68 408.2H911.6C949 408.2 979.6 449.5 979.6 500H979.6C979.6 550.5 949 591.8 911.6 591.8ZM1238.1 183.7H68C30.6 183.7 0 142.4 0 91.8H0C0 41.3 30.6 0 68 0H1238.1C1275.5 0 1306.1 41.3 1306.1 91.8H1306.1C1306.1 142.4 1275.5 183.7 1238.1 183.7Z",
- "width": 1633
- },
- "search": [
- "drawer_icon"
- ]
}
]
}
\ No newline at end of file
diff --git a/lib/icons_app/doctor_app_icons.dart b/lib/icons_app/doctor_app_icons.dart
index 80db55c1..ef01c934 100644
--- a/lib/icons_app/doctor_app_icons.dart
+++ b/lib/icons_app/doctor_app_icons.dart
@@ -11,7 +11,7 @@
/// fonts:
/// - asset: fonts/DoctorApp.ttf
///
-///
+///
///
import 'package:flutter/widgets.dart';
@@ -19,35 +19,64 @@ class DoctorApp {
DoctorApp._();
static const _kFontFam = 'DoctorApp';
- static const _kFontPkg = null;
-
- static const IconData female_icon = IconData(0xe800, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData male = IconData(0xe801, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData reject_icon = IconData(0xe802, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData home_icon_active = IconData(0xe803, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData menu_icon = IconData(0xe804, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData menu_icon_active = IconData(0xe805, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData message_icon = IconData(0xe806, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData message_icon_active = IconData(0xe807, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData scdedule_icon_active = IconData(0xe808, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData schedule_icon = IconData(0xe809, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData discharge_patient = IconData(0xe80a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData approved_icon = IconData(0xe80b, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData pending_icon = IconData(0xe80c, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData in_patient_white = IconData(0xe80d, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData lab_results = IconData(0xe80e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData home_icon = IconData(0xe80f, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData operations = IconData(0xe813, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData out_patient = IconData(0xe814, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData patient = IconData(0xe815, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData radiology = IconData(0xe817, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData mail = IconData(0xe81e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData medicine_search = IconData(0xe81f, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData qr_code = IconData(0xe820, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData referral = IconData(0xe821, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData referred = IconData(0xe822, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData search_patient = IconData(0xe823, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData sync_icon = IconData(0xe824, fontFamily: _kFontFam, fontPackage: _kFontPkg);
- static const IconData drawer_icon = IconData(0xe825, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const String _kFontPkg = null;
+ static const IconData female_icon =
+ IconData(0xe800, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData male =
+ IconData(0xe801, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData reject_icon =
+ IconData(0xe802, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData home_icon_active =
+ IconData(0xe803, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData menu_icon =
+ IconData(0xe804, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData menu_icon_active =
+ IconData(0xe805, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData message_icon =
+ IconData(0xe806, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData message_icon_active =
+ IconData(0xe807, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData scdedule_icon_active =
+ IconData(0xe808, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData schedule_icon =
+ IconData(0xe809, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData discharge_patient =
+ IconData(0xe80a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData approved_icon =
+ IconData(0xe80b, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData pending_icon =
+ IconData(0xe80c, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData in_patient_white =
+ IconData(0xe80d, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData lab_results =
+ IconData(0xe80e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData home_icon =
+ IconData(0xe80f, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData operations =
+ IconData(0xe813, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData out_patient =
+ IconData(0xe814, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData patient =
+ IconData(0xe815, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData qr_code =
+ IconData(0xe816, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData radiology =
+ IconData(0xe817, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData referral =
+ IconData(0xe818, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData search_patient =
+ IconData(0xe81a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData mail =
+ IconData(0xe81e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData medicine_search =
+ IconData(0xe81f, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData referred =
+ IconData(0xe822, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData sync_icon =
+ IconData(0xe824, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData drawer_icon =
+ IconData(0xe825, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+ static const IconData leaves =
+ IconData(0xe836, fontFamily: _kFontFam, fontPackage: _kFontPkg);
}
diff --git a/lib/routes.dart b/lib/routes.dart
index 728b5f06..e57b56a7 100644
--- a/lib/routes.dart
+++ b/lib/routes.dart
@@ -1,6 +1,7 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/root_page.dart';
import 'package:doctor_app_flutter/screens/medical-file/medical_file_page.dart';
+import 'package:doctor_app_flutter/screens/patients/profile/UCAF/UCAF-detail-screen.dart';
import 'package:doctor_app_flutter/screens/patients/profile/UCAF/UCAF-input-screen.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';
@@ -11,7 +12,6 @@ import 'package:doctor_app_flutter/screens/patients/profile/prescriptions/in_pat
import 'package:doctor_app_flutter/screens/live_care/video_call.dart';
import 'package:doctor_app_flutter/screens/sick-leave/add-sickleave.dart';
import 'package:doctor_app_flutter/screens/sick-leave/sick_leave.dart';
-import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/add_SOAP_index.dart';
import 'package:doctor_app_flutter/screens/procedures/procedure_screen.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/update_soap_index.dart';
@@ -92,6 +92,7 @@ const String PATIENT_ADMISSION_REQUEST = 'patients/admission-request';
const String PATIENT_ADMISSION_REQUEST_2 = 'patients/admission-request-second';
const String PATIENT_ADMISSION_REQUEST_3 = 'patients/admission-request-third';
const String PATIENT_UCAF_REQUEST = 'patients/ucaf';
+const String PATIENT_UCAF_DETAIL = 'patients/ucaf/detail';
const String BODY_MEASUREMENTS = 'patients/body-measurements';
const String IN_PATIENT_PRESCRIPTIONS_DETAILS = 'patients/prescription-details';
@@ -156,4 +157,5 @@ var routes = {
// LIVECARE_END_DIALOG: (_) => EndCallDialogBox()
MY_REFERRAL_DETAIL: (_) => MyReferralDetailScreen(),
PATIENT_UCAF_REQUEST: (_) => UCAFInputScreen(),
+ PATIENT_UCAF_DETAIL: (_) => UcafDetailScreen(),
};
diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart
index b6bbc6cf..20f22382 100644
--- a/lib/screens/dashboard_screen.dart
+++ b/lib/screens/dashboard_screen.dart
@@ -11,6 +11,7 @@ import 'package:doctor_app_flutter/core/viewModel/hospital_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/profile/referral/my-referral-patient-screen.dart';
+import 'package:doctor_app_flutter/screens/reschedule-leaves/add-rescheduleleave.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
@@ -184,7 +185,9 @@ class _DashboardScreenState extends State {
),
Container(
color: Colors.white,
- height: this.isExpanded ? 150 : 110,
+ height: this.isExpanded
+ ? MediaQuery.of(context).size.height * 0.19
+ : MediaQuery.of(context).size.height * 0.12,
),
],
),
@@ -953,6 +956,40 @@ class _DashboardScreenState extends State {
SizedBox(
height: 20,
),
+ Row(
+ children: [
+ DashboardItem(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ children: [
+ Icon(
+ DoctorApp.leaves,
+ size: 50,
+ ),
+ AppText(
+ TranslationBase.of(context).rescheduleLeaves,
+ color: Colors.black,
+ textAlign: TextAlign.center,
+ )
+ ],
+ ),
+ hasBorder: true,
+ onTap: () {
+ Navigator.push(
+ context,
+ MaterialPageRoute(
+ builder: (context) =>
+ AddRescheduleLeavScreen(),
+ // MyReferredPatient(),
+ ),
+ );
+ },
+ )
+ ],
+ ),
+ SizedBox(
+ height: 20,
+ ),
],
),
),
diff --git a/lib/screens/patients/patients_screen.dart b/lib/screens/patients/patients_screen.dart
index 74c9234c..33b2606c 100644
--- a/lib/screens/patients/patients_screen.dart
+++ b/lib/screens/patients/patients_screen.dart
@@ -274,34 +274,35 @@ class _PatientsScreenState extends State {
.then((res) {
setState(() {
_isLoading = false;
- // if (res['MessageStatus'] == 1) {
- if (val2 == 7) {
- print("Assad");
- if (res[SERVICES_PATIANT2[val2]] == null) {
- _isError = true;
- _isLoading = false;
- this.error = error.toString();
+ if (res['MessageStatus'] == 1) {
+ if (val2 == 7) {
+ if (res[SERVICES_PATIANT2[val2]] == null) {
+ _isError = true;
+ _isLoading = false;
+ this.error = error.toString();
+ } else {
+ var localList = [];
+ res["patientArrivalList"]["entityList"].forEach((v) {
+ Map mergedPatient = {
+ ...v,
+ ...v["patientDetails"]
+ };
+ localList.add(mergedPatient);
+ });
+ print(localList.toString());
+ lItems = localList;
+ }
} else {
-
- var localList=[];
- res["patientArrivalList"]["entityList"].forEach((v) {
- Map mergedPatient= {...v,...v["patientDetails"]};
- localList.add(mergedPatient);
- });
- print(localList.toString());
- lItems = localList;//res[SERVICES_PATIANT2[val2]]["entityList"];
+ lItems = res[SERVICES_PATIANT2[val2]];
}
+ parsed = lItems;
+ responseModelList = new ModelResponse.fromJson(parsed).list;
+ responseModelList2 = responseModelList;
+ _isError = false;
} else {
- lItems = res[SERVICES_PATIANT2[val2]];
+ _isError = true;
+ error = res['ErrorEndUserMessage'] ?? res['ErrorMessage'];
}
- parsed = lItems;
- responseModelList = new ModelResponse.fromJson(parsed).list;
- responseModelList2 = responseModelList;
- _isError = false;
- // } else {
- // _isError = true;
- // error = res['ErrorEndUserMessage'] ?? res['ErrorMessage'];
- // }
});
}).catchError((error) {
setState(() {
@@ -679,7 +680,8 @@ class _PatientsScreenState extends State {
.pushNamed(
PATIENTS_PROFILE,
arguments: {
- "patient": item
+ "patient": item,
+ "patientType":patientType
});
},
),
diff --git a/lib/screens/patients/profile/UCAF/UCAF-detail-screen.dart b/lib/screens/patients/profile/UCAF/UCAF-detail-screen.dart
new file mode 100644
index 00000000..7fc16bfb
--- /dev/null
+++ b/lib/screens/patients/profile/UCAF/UCAF-detail-screen.dart
@@ -0,0 +1,107 @@
+import 'package:doctor_app_flutter/core/viewModel/patient-ucaf-viewmodel.dart';
+import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
+import 'package:doctor_app_flutter/screens/base/base_view.dart';
+import 'package:doctor_app_flutter/util/helpers.dart';
+import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
+import 'package:doctor_app_flutter/widgets/patients/profile/PatientHeaderWidgetNoAvatar.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
+import 'package:flutter/material.dart';
+import 'package:hexcolor/hexcolor.dart';
+
+class UcafDetailScreen extends StatefulWidget {
+ @override
+ _UcafDetailScreenState createState() => _UcafDetailScreenState();
+}
+
+class _UcafDetailScreenState extends State {
+
+ int _activeTap = 1;
+
+ @override
+ Widget build(BuildContext context) {
+ final routeArgs = ModalRoute.of(context).settings.arguments as Map;
+ PatiantInformtion patient = routeArgs['patient'];
+ final screenSize = MediaQuery.of(context).size;
+
+ return BaseView(
+ builder: (_, model, w) => AppScaffold(
+ baseViewModel: model,
+ appBarTitle: TranslationBase.of(context).ucaf,
+ body: Container(
+ child: SingleChildScrollView(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ PatientHeaderWidgetNoAvatar(patient),
+ SizedBox(
+ height: 10,
+ ),
+ Container(
+ margin:
+ EdgeInsets.symmetric(vertical: 16, horizontal: 16),
+ child: Column(
+ children: [
+ treatmentStepsBar(context, screenSize),
+ SizedBox(
+ height: 16,
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ));
+ }
+
+ Widget treatmentStepsBar(BuildContext _context, Size screenSize) {
+ List __treatmentSteps = [
+ TranslationBase.of(context).diagnosis.toUpperCase(),
+ TranslationBase.of(context).medications.toUpperCase(),
+ TranslationBase.of(context).procedures.toUpperCase(),
+ ];
+ return Container(
+ height: screenSize.height * 0.070,
+ decoration:
+ Helpers.containerBorderDecoration(Color(0Xffffffff), Color(0xFFCCCCCC)),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: __treatmentSteps.map((item) {
+ bool _isActive = __treatmentSteps[_activeTap] == item ? true : false;
+ return Expanded(
+ child: InkWell(
+ child: Center(
+ child: Container(
+ height: screenSize.height * 0.070,
+ decoration: Helpers.containerBorderDecoration(
+ _isActive ? HexColor("#B8382B") : Colors.white,
+ _isActive ? HexColor("#B8382B") : Colors.white),
+ child: Center(
+ child: Text(
+ item,
+ style: TextStyle(
+ fontSize: 12,
+ color: _isActive
+ ? Colors.white
+ : Colors.black, //Colors.black,
+ fontWeight: FontWeight.bold,
+ ),
+ ),
+ )),
+ ),
+ onTap: () {
+ print(__treatmentSteps.indexOf(item));
+ setState(() {
+ _activeTap = __treatmentSteps.indexOf(item);
+ });
+ },
+ ),
+ );
+ }).toList(),
+ ),
+ );
+ }
+
+}
diff --git a/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart b/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart
index 82b01144..e0c2f9a7 100644
--- a/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart
+++ b/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart
@@ -5,6 +5,7 @@ import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
+import 'package:doctor_app_flutter/widgets/patients/profile/PatientHeaderWidgetNoAvatar.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
@@ -12,6 +13,8 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:hexcolor/hexcolor.dart';
+import '../../../../routes.dart';
+
class UCAFInputScreen extends StatefulWidget {
@override
_UCAFInputScreenState createState() => _UCAFInputScreenState();
@@ -58,7 +61,7 @@ class _UCAFInputScreenState extends State {
body: SingleChildScrollView(
child: Column(
children: [
- PatientHeaderWidget(patient),
+ PatientHeaderWidgetNoAvatar(patient),
Container(
margin: EdgeInsets.symmetric(vertical: 16, horizontal: 16),
child: Column(
@@ -349,7 +352,7 @@ class _UCAFInputScreenState extends State {
title: TranslationBase.of(context).next,
color: HexColor("#B8382B"),
onPressed: (){
- // Navigator.of(context).pushNamed(PATIENT_ADMISSION_REQUEST_3, arguments: {'patient': patient});
+ Navigator.of(context).pushNamed(PATIENT_UCAF_DETAIL, arguments: {'patient': patient});
},
),
],
@@ -362,72 +365,3 @@ class _UCAFInputScreenState extends State {
);
}
}
-
-class PatientHeaderWidget extends StatelessWidget {
- final PatiantInformtion patient;
-
- PatientHeaderWidget(this.patient);
-
- @override
- Widget build(BuildContext context) {
- return Column(
- children: [
- Container(
- margin: EdgeInsets.all(16),
- child: Row(
- children: [
- Expanded(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- AppText(
- patient.firstName + ' ' + patient.lastName,
- fontWeight: FontWeight.bold,
- fontSize: SizeConfig.textMultiplier * 2.2,
- ),
- Row(
- children: [
- AppText(
- "VIP",
- fontWeight: FontWeight.bold,
- fontSize: SizeConfig.textMultiplier * 2.2,
- ),
- SizedBox(
- width: 8,
- ),
- AppText(
- " ${patient.age}",
- fontWeight: FontWeight.normal,
- fontSize: SizeConfig.textMultiplier * 2.0,
- ),
- ],
- ),
- AppText(
- "NEW VISIT",
- fontWeight: FontWeight.bold,
- fontSize: SizeConfig.textMultiplier * 2.0,
- ),
- AppText(
- "${patient.companyName}",
- fontWeight: FontWeight.bold,
- fontSize: SizeConfig.textMultiplier * 2.0,
- ),
- ],
- ),
- ),
- Icon(
- Icons.info_outline,
- color: Colors.black,
- ),
- ],
- ),
- ),
- Container(
- width: double.infinity,
- height: 1,
- color: Color(0xffCCCCCC),
- ),
- ],
- );
- }
-}
diff --git a/lib/screens/patients/profile/referral/refer-patient-screen.dart b/lib/screens/patients/profile/referral/refer-patient-screen.dart
index 7a210b98..1ffd7150 100644
--- a/lib/screens/patients/profile/referral/refer-patient-screen.dart
+++ b/lib/screens/patients/profile/referral/refer-patient-screen.dart
@@ -1,4 +1,5 @@
import 'package:doctor_app_flutter/config/config.dart';
+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/viewModel/patient-referral-viewmodel.dart';
import 'package:doctor_app_flutter/models/patient/PatientArrivalEntity.dart';
@@ -19,7 +20,7 @@ import 'package:hexcolor/hexcolor.dart';
import '../../../QR_reader_screen.dart';
class PatientMakeReferralScreen extends StatefulWidget {
- // previous design page is: MyReferralPatient
+ // previous design page is: ReferPatientScreen
@override
_PatientMakeReferralScreenState createState() =>
_PatientMakeReferralScreenState();
@@ -34,7 +35,6 @@ class _PatientMakeReferralScreenState extends State {
dynamic _selectedDoctor;
DateTime appointmentDate;
final _remarksController = TextEditingController();
- PatientArrivalEntity _selectedPatientArrivalEntity;
@override
void initState() {
@@ -55,7 +55,7 @@ class _PatientMakeReferralScreenState extends State {
final screenSize = MediaQuery.of(context).size;
return BaseView(
- onModelReady: (model) => model.getBranches(),
+ onModelReady: (model) => model.getMasterLookup(MasterKeysService.physiotherapyGoals),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).referPatient,
@@ -284,8 +284,8 @@ class _PatientMakeReferralScreenState extends State {
decoration: textFieldSelectorDecoration(
TranslationBase.of(context)
.chooseAppointment,
- _selectedPatientArrivalEntity != null
- ? "${TranslationBase.of(context).appointmentNo} ${_selectedPatientArrivalEntity.appointmentNo}"
+ appointmentDate != null
+ ? "${DateUtils.convertDateToFormat(appointmentDate, "yyyy-MM-dd")}"
: null,
true,
suffixIcon: Icon(
@@ -326,14 +326,14 @@ class _PatientMakeReferralScreenState extends State {
title: TranslationBase.of(context).refer,
color: HexColor("#B8382B"),
onPressed: () {
- if (_selectedPatientArrivalEntity == null ||
+ if (appointmentDate == null ||
_selectedBranch == null ||
_selectedClinic == null ||
_selectedDoctor == null ||
_remarksController.text == null) return;
model
.makeReferral(
- _selectedPatientArrivalEntity,
+ patient,
appointmentDate.toIso8601String(),
_selectedBranch['ID'],
_selectedClinic['ClinicID'],
@@ -362,8 +362,10 @@ class _PatientMakeReferralScreenState extends State {
initialEntryMode: DatePickerEntryMode.calendar,
);
if (picked != null && picked != appointmentDate) {
- appointmentDate = picked;
- model
+ setState(() {
+ appointmentDate = picked;
+ });
+ /* model
.getPatientArrivalList(DateUtils.convertStringToDateFormat(
appointmentDate.toString(), "yyyy-MM-dd"))
.then((_) {
@@ -409,7 +411,7 @@ class _PatientMakeReferralScreenState extends State {
DrAppToastMsg.showErrorToast(
TranslationBase.of(context).noAppointmentsErrorMsg);
}
- });
+ });*/
}
}
diff --git a/lib/screens/patients/profile/vital_sign/vital-signs-screen.dart b/lib/screens/patients/profile/vital_sign/vital-signs-screen.dart
index 107e2e6b..c66555c1 100644
--- a/lib/screens/patients/profile/vital_sign/vital-signs-screen.dart
+++ b/lib/screens/patients/profile/vital_sign/vital-signs-screen.dart
@@ -11,6 +11,7 @@ import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart';
import 'package:flutter/material.dart';
+import 'package:hexcolor/hexcolor.dart';
class PatientVitalSignScreen extends StatelessWidget {
@override
@@ -19,10 +20,7 @@ class PatientVitalSignScreen extends StatelessWidget {
PatiantInformtion patient = routeArgs['patient'];
return BaseView(
- onModelReady: (model) => model.getPatientArrivalList(
- DateUtils.convertDateToFormat(DateTime.now(), "yyyy-MM-dd"), patient,
- fromDate: DateUtils.convertDateToFormat(
- DateTime.now().subtract(Duration(days: 500)), "yyyy-MM-dd")),
+ onModelReady: (model) => model.getPatientVitalSign(patient),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
appBarTitle: TranslationBase.of(context).vitalSign,
@@ -213,10 +211,12 @@ class PatientVitalSignScreen extends StatelessWidget {
Container(
color: Colors.green,
child: Padding(
- padding: EdgeInsets.symmetric(vertical: 2, horizontal: 8),
+ padding: EdgeInsets.symmetric(
+ vertical: 2, horizontal: 8),
child: AppText(
"${model.getBMI(model.patientVitalSigns.bodyMassIndex)}",
- fontSize: SizeConfig.textMultiplier * 2,
+ fontSize:
+ SizeConfig.textMultiplier * 2,
color: Colors.white,
fontWeight: FontWeight.bold,
),
@@ -357,7 +357,14 @@ class PatientVitalSignScreen extends StatelessWidget {
),
),
)
- : Container(),
+ : Center(
+ child: AppText(
+ "${TranslationBase.of(context).vitalSignEmptyMsg}",
+ fontSize: SizeConfig.textMultiplier * 2.5,
+ color: HexColor("#B8382B"),
+ fontWeight: FontWeight.normal,
+ ),
+ ),
),
);
}
@@ -485,7 +492,6 @@ class _TemperatureWidgetState extends State {
}
class PulseWidget extends StatefulWidget {
-
final VitalSignData vitalSign;
PulseWidget(this.vitalSign);
@@ -496,6 +502,7 @@ class PulseWidget extends StatefulWidget {
class _PulseWidgetState extends State {
bool isExpand = false;
+
@override
Widget build(BuildContext context) {
return Container(
@@ -578,7 +585,6 @@ class _PulseWidgetState extends State {
}
class RespirationWidget extends StatefulWidget {
-
final VitalSignData vitalSign;
RespirationWidget(this.vitalSign);
@@ -672,7 +678,6 @@ class _RespirationWidgetState extends State {
}
class BloodPressureWidget extends StatefulWidget {
-
final VitalSignData vitalSign;
BloodPressureWidget(this.vitalSign);
@@ -812,7 +817,6 @@ class _BloodPressureWidgetState extends State {
}
class OxygenationWidget extends StatefulWidget {
-
final VitalSignData vitalSign;
OxygenationWidget(this.vitalSign);
@@ -906,7 +910,6 @@ class _OxygenationWidgetState extends State {
}
class PainScaleWidget extends StatefulWidget {
-
final VitalSignData vitalSign;
PainScaleWidget(this.vitalSign);
@@ -998,8 +1001,3 @@ class _PainScaleWidgetState extends State {
);
}
}
-
-
-
-
-
diff --git a/lib/screens/reschedule-leaves/add-rescheduleleave.dart b/lib/screens/reschedule-leaves/add-rescheduleleave.dart
new file mode 100644
index 00000000..a4739247
--- /dev/null
+++ b/lib/screens/reschedule-leaves/add-rescheduleleave.dart
@@ -0,0 +1,292 @@
+import 'package:doctor_app_flutter/config/config.dart';
+import 'package:doctor_app_flutter/config/size_config.dart';
+import 'package:doctor_app_flutter/core/viewModel/leave_rechdule_response.dart';
+import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
+import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
+import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart';
+import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
+import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart';
+import 'package:doctor_app_flutter/screens/base/base_view.dart';
+import 'package:doctor_app_flutter/screens/reschedule-leaves/reschedule_leave.dart';
+import 'package:doctor_app_flutter/screens/sick-leave/sick_leave.dart';
+import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
+import 'package:flutter/material.dart';
+import 'package:hexcolor/hexcolor.dart';
+import 'package:provider/provider.dart';
+
+class AddRescheduleLeavScreen extends StatelessWidget {
+ ProjectViewModel projectsProvider;
+ @override
+ Widget build(BuildContext context) {
+ projectsProvider = Provider.of(context);
+ return BaseView(
+ onModelReady: (model) =>
+ {model.getRescheduleLeave(), model.getCoveringDoctors()},
+ builder: (_, model, w) => AppScaffold(
+ baseViewModel: model,
+ appBarTitle: TranslationBase.of(context).rescheduleLeaves,
+ body: model.getReschduleLeave.length > 0
+ ? SingleChildScrollView(
+ child: Column(
+ children: [
+ Container(
+ margin:
+ EdgeInsets.only(left: 15, right: 15, top: 20),
+ decoration: BoxDecoration(
+ borderRadius:
+ BorderRadius.all(Radius.circular(6.0)),
+ border: Border.all(
+ width: 1.0, color: HexColor("#CCCCCC"))),
+ padding: EdgeInsets.all(5),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ AppTextFormField(
+ hintText:
+ TranslationBase.of(context).requestLeave,
+ borderColor: Colors.white,
+ prefix: IconButton(
+ icon: Icon(
+ Icons.add_circle,
+ color: Colors.red,
+ )),
+ textInputType: TextInputType.text,
+ onTap: () {
+ openLeave(
+ context,
+ false,
+ );
+ },
+ inputFormatter: ONLY_LETTERS,
+ )
+ ],
+ ),
+ ),
+ Column(
+ children: model.getReschduleLeave.map(
+ (GetRescheduleLeavesResponse item) {
+ return CardWithBgWidgetNew(
+ widget: Column(
+ children: [
+ Container(
+ padding:
+ EdgeInsets.only(left: 10, right: 10),
+ child: Row(
+ mainAxisAlignment:
+ MainAxisAlignment.start,
+ children: [
+ Expanded(
+ flex: 4,
+ child: Wrap(
+ children: [
+ Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Container(
+ padding:
+ EdgeInsets.all(3),
+ child: AppText(
+ item.status == 1
+ ? TranslationBase
+ .of(context)
+ .approved
+ : item.status == 2
+ ? TranslationBase.of(
+ context)
+ .pending
+ : TranslationBase.of(
+ context)
+ .rejected,
+ fontWeight:
+ FontWeight.bold,
+ color: Colors.white,
+ ),
+ color: item.status == 1
+ ? Colors.green
+ : item.status == 2
+ ? Colors
+ .yellow[800]
+ : Colors.red[800],
+ ),
+ SizedBox(
+ height: 5,
+ ),
+ Container(
+ child: AppText(
+ TranslationBase.of(
+ context)
+ .holiday +
+ ' ',
+ fontWeight:
+ FontWeight.bold,
+ )),
+ Row(
+ children: [
+ Flexible(
+ child: Text(
+ item.dateTimeFrom +
+ ' ' +
+ TranslationBase.of(
+ context)
+ .to +
+ ' ' +
+ item.dateTimeTo,
+ // overflow:
+ // TextOverflow.ellipsis,
+ ))
+ ],
+ ),
+ SizedBox(
+ height: 5,
+ ),
+ AppText(
+ TranslationBase.of(
+ context)
+ .coveringDoctor,
+ fontWeight:
+ FontWeight.bold,
+ ),
+ model.coveringDoctors
+ .length >
+ 0
+ ? Row(children: [
+ AppText(getDoctor(
+ model
+ .coveringDoctors,
+ item.doctorId))
+ ])
+ : SizedBox(),
+ AppText(
+ TranslationBase.of(
+ context)
+ .reasons,
+ fontWeight:
+ FontWeight.bold,
+ ),
+ model.allReasons.length > 0
+ ? Row(children: [
+ AppText(getReasons(
+ model
+ .allReasons,
+ item.reasonId))
+ ])
+ : SizedBox(),
+ ],
+ ),
+ SizedBox(
+ width: 10,
+ ),
+ ],
+ ),
+ ),
+ (item.status == 1)
+ ? Expanded(
+ flex: 1,
+ child: IconButton(
+ icon: Icon(
+ Icons.edit_outlined,
+ size: 30,
+ ),
+ // color: Colors.green, //Colors.black,
+ onPressed: () => {
+ openLeave(context, true,
+ extendedData: item)
+ },
+ ))
+ : SizedBox(),
+ ],
+ )),
+ SizedBox(
+ height: 10,
+ ),
+ Divider(
+ height: 1,
+ ),
+ ],
+ ));
+ }).toList(),
+ )
+ ],
+ ),
+ )
+ : new Builder(builder: (context) {
+ return Center(
+ child: SingleChildScrollView(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Container(
+ padding: EdgeInsets.all(40),
+ decoration: BoxDecoration(
+ border: Border.all(
+ color: HexColor('#B8382C'), width: 4),
+ borderRadius:
+ BorderRadius.all(Radius.circular(100))),
+ child: IconButton(
+ icon: Icon(
+ Icons.add,
+ size: 35,
+ ),
+ onPressed: () {
+ openLeave(
+ context,
+ false,
+ );
+ }),
+ ),
+ Padding(
+ child: AppText(
+ TranslationBase.of(context).noReScheduleLeave,
+ fontWeight: FontWeight.bold,
+ ),
+ padding: EdgeInsets.all(10),
+ ),
+ AppText(
+ TranslationBase.of(context).applyNow,
+ fontWeight: FontWeight.bold,
+ color: HexColor('#B8382C'),
+ )
+ ],
+ ),
+ ));
+ }),
+ ));
+ }
+
+ openLeave(BuildContext context, isExtend, {extendedData}) {
+ showModalBottomSheet(
+ context: context,
+ builder: (context) {
+ return new Container(
+ child: RescheduleLeaveScreen(
+ isExtend,
+ extendedData,
+ ));
+ });
+ }
+
+ getDoctor(model, doctorId) {
+ var obj;
+ obj = model.where((i) => i['doctorID'] == doctorId).toList();
+ print(obj);
+
+ return obj.length > 0 ? obj[0]['doctorName'] : "";
+ }
+
+ getReasons(model, reasonID) {
+ var obj;
+ obj = model.where((i) => i['id'] == reasonID).toList();
+ print(obj);
+
+ return obj.length > 0
+ ? projectsProvider.isArabic == true
+ ? obj[0]['nameAr']
+ : obj[0]['nameEn']
+ : "";
+ }
+}
diff --git a/lib/screens/reschedule-leaves/reschedule_leave.dart b/lib/screens/reschedule-leaves/reschedule_leave.dart
new file mode 100644
index 00000000..c74395a3
--- /dev/null
+++ b/lib/screens/reschedule-leaves/reschedule_leave.dart
@@ -0,0 +1,819 @@
+import 'package:date_time_picker/date_time_picker.dart';
+import 'package:doctor_app_flutter/config/config.dart';
+import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
+import 'package:doctor_app_flutter/config/size_config.dart';
+import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
+import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
+import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart';
+import 'package:doctor_app_flutter/models/sickleave/add_sickleave_request.dart';
+import 'package:doctor_app_flutter/screens/base/base_view.dart';
+import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
+import 'package:doctor_app_flutter/util/helpers.dart';
+import 'package:doctor_app_flutter/util/text_validator.dart';
+import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
+import 'package:doctor_app_flutter/widgets/shared/Text.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
+import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:hexcolor/hexcolor.dart';
+import 'package:intl/intl.dart';
+import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart';
+import 'package:provider/provider.dart';
+
+Helpers helpers = Helpers();
+
+class RescheduleLeaveScreen extends StatefulWidget {
+ final isUpdate;
+ final updateData;
+ RescheduleLeaveScreen(this.isUpdate, this.updateData);
+ @override
+ _RescheduleLeaveScreen createState() => _RescheduleLeaveScreen();
+}
+
+class _RescheduleLeaveScreen extends State {
+ DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
+ TextEditingController _toDateController = new TextEditingController();
+ TextEditingController _toDateController2 = new TextEditingController();
+ ProjectViewModel projectsProvider;
+ String _selectedClinic;
+ Map profile = {};
+ var offTime = '2';
+ var date;
+ var doctorID;
+ var reason;
+ var fromDate;
+ var toDate;
+ var clinicID;
+ TextEditingController _controller4;
+ void _presentDatePicker(id) {
+ showDatePicker(
+ context: context,
+ initialDate: DateTime.now(),
+ firstDate: DateTime.now(),
+ lastDate: DateTime(2050),
+ ).then((pickedDate) {
+ if (pickedDate == null) {
+ return;
+ }
+ setState(() {
+ final df = new DateFormat('yyyy-MM-dd');
+ if (id == 'fromDate') {
+ fromDate = pickedDate; //df.format();
+ _toDateController.text = df.format(pickedDate);
+ } else {
+ toDate = pickedDate; //
+ _toDateController2.text = df.format(pickedDate);
+ }
+ });
+ });
+ }
+
+ @override
+ void initState() {
+ getProfile();
+
+ super.initState();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ projectsProvider = Provider.of(context);
+ return BaseView(
+ onModelReady: (model) => model.getClinicsList(),
+ builder: (_, model, w) => BaseView(
+ onModelReady: (model2) => {
+ model2.getOffTime(),
+ model2.getReasons(18),
+ model2.getCoveringDoctors()
+ },
+ builder: (_, model2, w) => AppScaffold(
+ baseViewModel: model2,
+ isShowAppBar: false,
+ body: Center(
+ child: Container(
+ margin: EdgeInsets.only(top: 10),
+ child: FractionallySizedBox(
+ widthFactor: 0.9,
+ child: ListView(
+ children: [
+ Container(
+ margin: EdgeInsets.all(8),
+ decoration: BoxDecoration(
+ borderRadius:
+ BorderRadius.all(Radius.circular(6.0)),
+ border: Border.all(
+ width: 1.0,
+ color: HexColor("#CCCCCC"))),
+ 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: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Row(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ Expanded(
+ // add Expanded to have your dropdown button fill remaining space
+ child: DropdownButtonHideUnderline(
+ child: new IgnorePointer(
+ ignoring: true,
+ child: DropdownButton(
+ focusColor: Colors.grey,
+ isExpanded: true,
+ value: getClinicName(
+ model) ??
+ "",
+ iconSize: 40,
+ elevation: 16,
+ selectedItemBuilder:
+ (BuildContext
+ context) {
+ return model
+ .getClinicNameList()
+ .map((item) {
+ return Row(
+ mainAxisSize:
+ MainAxisSize
+ .max,
+ children: [
+ AppText(
+ item,
+ fontSize: SizeConfig
+ .textMultiplier *
+ 2.1,
+ color:
+ Colors.grey,
+ ),
+ ],
+ );
+ }).toList();
+ },
+ onChanged: (newValue) =>
+ {},
+ items: model
+ .getClinicNameList()
+ .map((item) {
+ return DropdownMenuItem(
+ value:
+ item.toString(),
+ child: Text(
+ item,
+ textAlign:
+ TextAlign.end,
+ ),
+ );
+ }).toList(),
+ ))),
+ ),
+ ],
+ )
+ ],
+ ),
+ )),
+
+ Container(
+ margin: EdgeInsets.all(8),
+ decoration: BoxDecoration(
+ borderRadius:
+ BorderRadius.all(Radius.circular(6.0)),
+ border: Border.all(
+ width: 1.0, color: HexColor("#CCCCCC"))),
+ padding: EdgeInsets.all(5),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ new IgnorePointer(
+ ignoring: true,
+ child: AppTextFormField(
+ readOnly: true,
+ hintText: profile != null
+ ? profile['DoctorName']
+ : "",
+ borderColor: Colors.white,
+ onSaved: (value) {},
+ inputFormatter: ONLY_NUMBERS))
+ ],
+ ),
+ ),
+
+ Container(
+ margin: EdgeInsets.all(8),
+ decoration: BoxDecoration(
+ borderRadius:
+ BorderRadius.all(Radius.circular(6.0)),
+ border: Border.all(
+ width: 1.0,
+ color: HexColor("#CCCCCC"))),
+ 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: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Row(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ model2.allOffTime.length > 0
+ ? Expanded(
+ // add Expanded to have your dropdown button fill remaining space
+ child:
+ DropdownButtonHideUnderline(
+ child: DropdownButton(
+ focusColor: Colors.grey,
+ isExpanded: true,
+ value: offTime == null
+ ? model2.allOffTime[0]
+ ['code']
+ : offTime,
+ iconSize: 40,
+ elevation: 16,
+ selectedItemBuilder:
+ (BuildContext context) {
+ return model2.allOffTime
+ .map((item) {
+ return Row(
+ mainAxisSize:
+ MainAxisSize.max,
+ children: [
+ AppText(
+ item[
+ 'description'],
+ fontSize: SizeConfig
+ .textMultiplier *
+ 2.1,
+ color:
+ Colors.grey,
+ ),
+ ],
+ );
+ }).toList();
+ },
+ onChanged: (newValue) => {
+ setState(() {
+ offTime = newValue;
+ }),
+ if (offTime == '1')
+ {model2.getReasons(18)}
+ else if (offTime == '2')
+ {model2.getReasons(19)}
+ else if (offTime == '3' ||
+ offTime == '5')
+ {model2.getReasons(102)}
+ },
+ items: model2.allOffTime
+ .map((item) {
+ return DropdownMenuItem<
+ String>(
+ value: item['code']
+ .toString(),
+ child: Text(
+ item['description'],
+ textAlign:
+ TextAlign.end,
+ ),
+ );
+ }).toList(),
+ )),
+ )
+ : SizedBox(),
+ ],
+ )
+ ],
+ ),
+ )),
+ offTime == '1'
+ ? Column(
+ children: [
+ Container(
+ margin: EdgeInsets.all(8),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.all(
+ Radius.circular(6.0)),
+ border: Border.all(
+ width: 1.0,
+ color: HexColor("#CCCCCC"))),
+ padding: EdgeInsets.all(5),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ AppTextFormField(
+ hintText: TranslationBase.of(
+ context)
+ .fromDate,
+ borderColor: Colors.white,
+ prefix: IconButton(
+ icon: Icon(Icons
+ .calendar_today)),
+ textInputType:
+ TextInputType.number,
+ controller: _toDateController,
+ onTap: () {
+ _presentDatePicker(
+ 'fromDate');
+ },
+ inputFormatter: ONLY_DATE,
+ onChanged: (value) {
+ fromDate = value;
+ }),
+ ],
+ )),
+ Row(
+ children: [
+ Expanded(
+ child: Container(
+ margin: EdgeInsets.all(8),
+ decoration: BoxDecoration(
+ borderRadius:
+ BorderRadius.all(
+ Radius.circular(6.0)),
+ border: Border.all(
+ width: 1.0,
+ color:
+ HexColor("#CCCCCC"))),
+ padding: EdgeInsets.all(5),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ // new AppTextFormField(
+ // readOnly: true,
+ // hintText: "",
+ // borderColor: Colors.white,
+ // onSaved: (value) {},
+ // inputFormatter: ONLY_NUMBERS),
+
+ DateTimePicker(
+ type:
+ DateTimePickerType.time,
+ controller: _controller4,
+ //initialValue: _initialValue,
+ // icon: Icon(Icons.access_time),
+
+ //use24HourFormat: false,
+ //locale: Locale('en', 'US'),
+ onChanged: (val) => () {
+ print(val);
+ },
+ validator: (val) {
+ print(val);
+ // setState(
+ // () => _valueToValidate4 = val);
+ return null;
+ },
+ onSaved: (val) => {},
+ )
+ ],
+ ),
+ ),
+ ),
+ Expanded(
+ child: Container(
+ margin: EdgeInsets.all(8),
+ decoration: BoxDecoration(
+ borderRadius:
+ BorderRadius.all(
+ Radius.circular(6.0)),
+ border: Border.all(
+ width: 1.0,
+ color:
+ HexColor("#CCCCCC"))),
+ padding: EdgeInsets.all(5),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ DateTimePicker(
+ type:
+ DateTimePickerType.time,
+ controller: _controller4,
+ //initialValue: _initialValue,
+ // icon: Icon(Icons.access_time),
+
+ //use24HourFormat: false,
+ //locale: Locale('en', 'US'),
+ onChanged: (val) => () {
+ print(val);
+ },
+ validator: (val) {
+ print(val);
+ // setState(
+ // () => _valueToValidate4 = val);
+ return null;
+ },
+ onSaved: (val) =>
+ {print(val)},
+ )
+ ],
+ ),
+ ),
+ )
+ ],
+ )
+ ],
+ )
+ : Column(
+ children: [
+ Container(
+ margin: EdgeInsets.all(8),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.all(
+ Radius.circular(6.0)),
+ border: Border.all(
+ width: 1.0,
+ color: HexColor("#CCCCCC"))),
+ padding: EdgeInsets.all(5),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ AppTextFormField(
+ hintText: TranslationBase.of(
+ context)
+ .fromDate,
+ borderColor: Colors.white,
+ prefix: IconButton(
+ icon: Icon(Icons
+ .calendar_today)),
+ textInputType:
+ TextInputType.number,
+ controller: _toDateController,
+ onTap: () {
+ _presentDatePicker(
+ 'fromDate');
+ },
+ inputFormatter: ONLY_DATE,
+ onChanged: (value) {
+ setState(() {
+ toDate = value;
+ });
+ }),
+ ],
+ )),
+ Container(
+ margin: EdgeInsets.all(8),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.all(
+ Radius.circular(6.0)),
+ border: Border.all(
+ width: 1.0,
+ color: HexColor("#CCCCCC"))),
+ padding: EdgeInsets.all(5),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ AppTextFormField(
+ hintText: TranslationBase
+ .of(context)
+ .fromDate,
+ borderColor: Colors.white,
+ prefix: IconButton(
+ icon: Icon(
+ Icons
+ .calendar_today)),
+ textInputType:
+ TextInputType.number,
+ controller:
+ _toDateController2,
+ onTap: () {
+ _presentDatePicker(
+ 'toDate');
+ },
+ inputFormatter: ONLY_DATE,
+ onChanged: (value) {
+ setState(() {
+ toDate = value;
+ });
+ }),
+ ],
+ ))
+ ],
+ ),
+ Container(
+ margin: EdgeInsets.all(8),
+ decoration: BoxDecoration(
+ borderRadius:
+ BorderRadius.all(Radius.circular(6.0)),
+ border: Border.all(
+ width: 1.0,
+ color: HexColor("#CCCCCC"))),
+ 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: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Row(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ model2.allReasons.length > 0
+ ? Expanded(
+ // add Expanded to have your dropdown button fill remaining space
+ child:
+ DropdownButtonHideUnderline(
+ child: DropdownButton(
+ focusColor: Colors.grey,
+ isExpanded: true,
+ value: reason == null
+ ? model2.allReasons[0]
+ ['id']
+ .toString()
+ : reason,
+ iconSize: 40,
+ elevation: 16,
+ selectedItemBuilder:
+ (BuildContext context) {
+ return model2.allReasons
+ .map((item) {
+ return Row(
+ mainAxisSize:
+ MainAxisSize.max,
+ children: [
+ AppText(
+ projectsProvider
+ .isArabic
+ ? item[
+ 'nameAr']
+ : item[
+ 'nameEn'],
+ fontSize: SizeConfig
+ .textMultiplier *
+ 2.1,
+ color:
+ Colors.grey,
+ ),
+ ],
+ );
+ }).toList();
+ },
+ onChanged: (newValue) => {
+ setState(() {
+ reason = newValue;
+ })
+ },
+ items: model2.allReasons
+ .map((item) {
+ return DropdownMenuItem<
+ String>(
+ value: item['id']
+ .toString(),
+ child: Text(
+ projectsProvider
+ .isArabic
+ ? item['nameAr']
+ : item['nameEn'],
+ textAlign:
+ TextAlign.end,
+ ),
+ );
+ }).toList(),
+ )),
+ )
+ : SizedBox(),
+ ],
+ )
+ ],
+ ),
+ )),
+
+ Container(
+ margin: EdgeInsets.all(8),
+ decoration: BoxDecoration(
+ borderRadius:
+ BorderRadius.all(Radius.circular(6.0)),
+ border: Border.all(
+ width: 1.0,
+ color: HexColor("#CCCCCC"))),
+ 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: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Row(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ model2.coveringDoctors.length > 0
+ ? Expanded(
+ // add Expanded to have your dropdown button fill remaining space
+ child:
+ DropdownButtonHideUnderline(
+ child: DropdownButton(
+ focusColor: Colors.grey,
+ isExpanded: true,
+ value: doctorID == null
+ ? model2
+ .coveringDoctors[0]
+ ['doctorID']
+ .toString()
+ : doctorID,
+ iconSize: 40,
+ elevation: 16,
+ selectedItemBuilder:
+ (BuildContext context) {
+ return model2
+ .coveringDoctors
+ .map((item) {
+ return Row(
+ mainAxisSize:
+ MainAxisSize.max,
+ children: [
+ AppText(
+ projectsProvider
+ .isArabic
+ ? item[
+ 'doctorNameN']
+ : item[
+ 'doctorName'],
+ fontSize: SizeConfig
+ .textMultiplier *
+ 2.1,
+ color:
+ Colors.grey,
+ ),
+ ],
+ );
+ }).toList();
+ },
+ onChanged: (newValue) => {
+ setState(() {
+ doctorID = newValue;
+ })
+ },
+ items: model2
+ .coveringDoctors
+ .map((item) {
+ return DropdownMenuItem<
+ String>(
+ value: item['doctorID']
+ .toString(),
+ child: Text(
+ projectsProvider
+ .isArabic
+ ? item[
+ 'doctorNameN']
+ : item[
+ 'doctorName'],
+ textAlign:
+ TextAlign.start,
+ ),
+ );
+ }).toList(),
+ )),
+ )
+ : SizedBox(),
+ ],
+ )
+ ],
+ ),
+ )),
+ Container(
+ margin: EdgeInsets.all(
+ SizeConfig.widthMultiplier * 5),
+ child: Wrap(
+ alignment: WrapAlignment.center,
+ children: [
+ AppButton(
+ title: widget.isUpdate == true
+ ? TranslationBase.of(context).update
+ : TranslationBase.of(context).add,
+ onPressed: () {
+ if (widget.isUpdate == true) {
+ updateRecheduleLeave(model2);
+ } else {
+ addRecheduleLeave(model2);
+ }
+ },
+ ),
+ ],
+ ),
+ ),
+ // Column(
+ // children: [
+ // Texts(TranslationBase.of(context)
+ // .previousSickLeaveIssue +
+ // ' ')
+ // ],
+ // )
+ ],
+ ),
+ ),
+ ),
+ ),
+ )));
+ }
+
+ getProfile() async {
+ Map p = await sharedPref.getObj(DOCTOR_PROFILE);
+ setState(() {
+ if (widget.updateData != null) {
+ this.profile = p;
+ this.clinicID = widget.updateData.clinicId;
+
+ _toDateController.text = widget.updateData.dateTimeFrom;
+ _toDateController2.text = widget.updateData.dateTimeTo;
+ }
+ });
+ }
+
+ getClinicName(model) {
+ var clinicID = this.profile['ClinicID'] ?? 1;
+ var clinicInfo =
+ model.clinicsList.where((i) => i['ClinicID'] == clinicID).toList();
+ return clinicInfo.length > 0 ? clinicInfo[0]['ClinicDescription'] : "";
+ }
+
+ addRecheduleLeave(model) {
+ final df = new DateFormat('yyyy-MM-ddThh:mm:ss');
+ Map request = {
+ "Requisition": {
+ "requisitionNo": 0,
+ "requisitionType": offTime,
+ "clinicId": this.profile['ClinicID'],
+ "doctorId": this.profile['ClinicID'],
+ "dateTimeFrom": df.format(fromDate),
+ "dateTimeTo": df.format(toDate),
+ "date": df.format(DateTime.now()),
+ "reasonId": reason == null ? model.allOffTime[0]['code'] : reason,
+ "coveringDoctorId":
+ doctorID == null ? model.coveringDoctors[0]['doctorID'] : doctorID,
+ "status": 2,
+ "schedule": [
+ {
+ "weekDayId": 1,
+ "shiftId": 1,
+ "isOpen": true,
+ "timeFrom": null,
+ "timeTo": null,
+ "timeFromstr": "",
+ "timeTostr": ""
+ }
+ ]
+ }
+ };
+
+ model.addReschedule(request).then((response) {
+ print(response);
+ });
+ }
+
+ updateRecheduleLeave(model) {
+ final df = new DateFormat('yyyy-MM-ddThh:mm:ss');
+ Map request = {
+ "Requisition": {
+ "requisitionNo": 0,
+ "requisitionType": offTime,
+ "clinicId": this.profile['ClinicID'],
+ "doctorId": this.profile['ClinicID'],
+ "dateTimeFrom": df.format(fromDate),
+ "dateTimeTo": df.format(toDate),
+ "date": df.format(DateTime.now()),
+ "reasonId": reason == null ? model.allOffTime[0]['code'] : reason,
+ "coveringDoctorId":
+ doctorID == null ? model.coveringDoctors[0]['doctorID'] : doctorID,
+ "status": 2,
+ "schedule": [
+ {
+ "weekDayId": 1,
+ "shiftId": 1,
+ "isOpen": true,
+ "timeFrom": null,
+ "timeTo": null,
+ "timeFromstr": "",
+ "timeTostr": ""
+ }
+ ]
+ }
+ };
+
+ model.updateReschedule(request).then((response) {
+ print(response);
+ });
+ }
+}
diff --git a/lib/screens/sick-leave/add-sickleave.dart b/lib/screens/sick-leave/add-sickleave.dart
index 37bf9454..d456f2a6 100644
--- a/lib/screens/sick-leave/add-sickleave.dart
+++ b/lib/screens/sick-leave/add-sickleave.dart
@@ -2,10 +2,12 @@ import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
+import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/sickleave/get_all_sickleave_response.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/sick-leave/sick_leave.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
+import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart';
@@ -13,166 +15,167 @@ import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
class AddSickLeavScreen extends StatelessWidget {
+ PatiantInformtion patient;
@override
Widget build(BuildContext context) {
+ final routeArgs = ModalRoute.of(context).settings.arguments as Map;
+ patient = routeArgs['patient'];
return BaseView(
- onModelReady: (model) => model.getSickLeave(),
+ onModelReady: (model) => model.getSickLeave(patient.patientMRN),
builder: (_, model, w) => AppScaffold(
- baseViewModel: model,
- appBarTitle: TranslationBase.of(context).sickleave,
- body: model.getAllSIckLeave.length > 0
- ? SingleChildScrollView(
- child: Column(
- children: model.getAllSIckLeave
- .map((GetAllSickLeaveResponse item) {
- return CardWithBgWidgetNew(
- widget: Column(
- children: [
- Container(
- padding: EdgeInsets.only(left: 10, right: 10),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- Expanded(
- flex: 4,
- child: Wrap(
- // mainAxisAlignment:
- // MainAxisAlignment.start,
- children: [
- Column(
- crossAxisAlignment:
- CrossAxisAlignment.start,
- children: [
- Container(
- padding: EdgeInsets.all(3),
- child: AppText(
- item.status == 1
- ? TranslationBase.of(
- context)
- .approved
- : item.status == 2
- ? TranslationBase
- .of(context)
- .extended
- : TranslationBase
- .of(context)
- .pending,
- fontWeight: FontWeight.bold,
- color: Colors.white,
- ),
- color: item.status == 1
- ? Colors.green
- : Colors.yellow[800],
- ),
- Row(
- children: [
- AppText(
- TranslationBase.of(
- context)
- .leaveStartDate +
- ' ',
- fontWeight:
- FontWeight.bold,
- ),
- Flexible(
- child: Text(
- item.startDate,
- overflow:
- TextOverflow.ellipsis,
- ))
- ],
- ),
- AppText(
- item.noOfDays.toString() +
- ' ' +
- TranslationBase.of(
+ baseViewModel: model,
+ appBarTitle: TranslationBase.of(context).sickleave,
+ body: SingleChildScrollView(
+ child: Column(children: [
+ PatientPageHeaderWidget(patient),
+ model.getAllSIckLeave.length > 0
+ ? Column(
+ children: model.getAllSIckLeave
+ .map((GetAllSickLeaveResponse item) {
+ return CardWithBgWidgetNew(
+ widget: Column(
+ children: [
+ Container(
+ padding: EdgeInsets.only(left: 10, right: 10),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ Expanded(
+ flex: 4,
+ child: Wrap(
+ // mainAxisAlignment:
+ // MainAxisAlignment.start,
+ children: [
+ Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Container(
+ padding: EdgeInsets.all(3),
+ child: AppText(
+ item.status == 1
+ ? TranslationBase.of(
context)
- .daysSickleave,
+ .approved
+ : item.status == 2
+ ? TranslationBase.of(
+ context)
+ .extended
+ : TranslationBase.of(
+ context)
+ .pending,
fontWeight: FontWeight.bold,
+ color: Colors.white,
),
- Row(children: [
+ color: item.status == 1
+ ? Colors.green
+ : Colors.yellow[800],
+ ),
+ Row(
+ children: [
AppText(
- item.remarks,
- )
- ]),
- ],
- ),
- SizedBox(
- width: 20,
- ),
- ],
- ),
+ TranslationBase.of(context)
+ .leaveStartDate +
+ ' ',
+ fontWeight: FontWeight.bold,
+ ),
+ Flexible(
+ child: Text(
+ item.startDate,
+ overflow:
+ TextOverflow.ellipsis,
+ ))
+ ],
+ ),
+ AppText(
+ item.noOfDays.toString() +
+ ' ' +
+ TranslationBase.of(context)
+ .daysSickleave,
+ fontWeight: FontWeight.bold,
+ ),
+ Row(children: [
+ AppText(
+ item.remarks,
+ )
+ ]),
+ ],
+ ),
+ SizedBox(
+ width: 20,
+ ),
+ ],
),
- (item.status == 1 || item.status == 2)
- ? Expanded(
- flex: 1,
- child: IconButton(
- icon: Icon(
- Icons.open_in_full,
- size: 40,
- ),
- // color: Colors.green, //Colors.black,
- onPressed: () => {
- openSickLeave(context, true,
- extendedData: item)
- },
- ))
- : SizedBox(),
- ],
- )),
- SizedBox(
- height: 20,
+ ),
+ (item.status == 1 || item.status == 2)
+ ? Expanded(
+ flex: 1,
+ child: IconButton(
+ icon: Icon(
+ Icons.open_in_full,
+ size: 25,
+ ),
+ // color: Colors.green, //Colors.black,
+ onPressed: () => {
+ openSickLeave(context, true,
+ extendedData: item)
+ },
+ ))
+ : SizedBox(),
+ ],
+ )),
+ SizedBox(
+ height: 20,
+ ),
+ Divider(
+ height: 1,
+ ),
+ ],
+ ));
+ }).toList(),
+ )
+ : new Builder(builder: (context) {
+ return Container(
+ height: MediaQuery.of(context).size.height * .7,
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Container(
+ padding: EdgeInsets.all(40),
+ decoration: BoxDecoration(
+ border: Border.all(
+ color: HexColor('#B8382C'), width: 4),
+ borderRadius:
+ BorderRadius.all(Radius.circular(100))),
+ child: IconButton(
+ icon: Icon(
+ Icons.add,
+ size: 35,
+ ),
+ onPressed: () {
+ openSickLeave(
+ context,
+ false,
+ );
+ }),
),
- Divider(
- height: 1,
+ Padding(
+ child: AppText(
+ TranslationBase.of(context)
+ .noSickLeaveApplied,
+ fontWeight: FontWeight.bold,
+ ),
+ padding: EdgeInsets.all(10),
),
+ AppText(
+ TranslationBase.of(context).applyNow,
+ fontWeight: FontWeight.bold,
+ color: HexColor('#B8382C'),
+ )
],
));
- }).toList(),
- ),
- )
- : new Builder(builder: (context) {
- return Center(
- child: SingleChildScrollView(
- child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Container(
- padding: EdgeInsets.all(40),
- decoration: BoxDecoration(
- border: Border.all(
- color: HexColor('#B8382C'), width: 4),
- borderRadius:
- BorderRadius.all(Radius.circular(100))),
- child: IconButton(
- icon: Icon(
- Icons.add,
- size: 35,
- ),
- onPressed: () {
- openSickLeave(
- context,
- false,
- );
- }),
- ),
- Padding(
- child: AppText(
- TranslationBase.of(context).noSickLeaveApplied,
- fontWeight: FontWeight.bold,
- ),
- padding: EdgeInsets.all(10),
- ),
- AppText(
- TranslationBase.of(context).applyNow,
- fontWeight: FontWeight.bold,
- color: HexColor('#B8382C'),
- )
- ],
- ),
- ));
}),
- ));
+ ]))));
}
openSickLeave(BuildContext context, isExtend,
@@ -182,11 +185,15 @@ class AddSickLeavScreen extends StatelessWidget {
builder: (context) {
return new Container(
child: SickLeaveScreen(
- appointmentNo: extendedData.appointmentNo,
- patientMRN: extendedData.patientMRN,
- isExtended: isExtend,
- extendedData: extendedData,
- ));
+ appointmentNo: isExtend == true
+ ? extendedData.appointmentNo
+ : patient.appointmentNo, //extendedData.appointmentNo,
+ patientMRN: isExtend == true
+ ? extendedData.patientMRN
+ : patient.patientMRN,
+ isExtended: isExtend,
+ extendedData: extendedData,
+ patient: patient));
});
}
}
diff --git a/lib/screens/sick-leave/sick_leave.dart b/lib/screens/sick-leave/sick_leave.dart
index 026b7c19..2aea6f43 100644
--- a/lib/screens/sick-leave/sick_leave.dart
+++ b/lib/screens/sick-leave/sick_leave.dart
@@ -6,9 +6,11 @@ import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart';
import 'package:doctor_app_flutter/models/sickleave/add_sickleave_request.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart';
+import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/text_validator.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
+import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
@@ -28,11 +30,13 @@ class SickLeaveScreen extends StatefulWidget {
final GetAllSickLeaveResponse extendedData;
final appointmentNo;
final patientMRN;
+ final patient;
SickLeaveScreen(
{this.appointmentNo,
this.patientMRN,
this.isExtended = false,
- this.extendedData});
+ this.extendedData,
+ this.patient});
@override
_SickLeaveScreenState createState() => _SickLeaveScreenState();
}
@@ -48,7 +52,7 @@ class _SickLeaveScreenState extends State {
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(2019),
- lastDate: DateTime.now(),
+ lastDate: DateTime(2050),
).then((pickedDate) {
if (pickedDate == null) {
return;
@@ -252,6 +256,7 @@ class _SickLeaveScreenState extends State {
model2.sickLeaveStatistics[
'recommendedSickLeaveDays'],
fontWeight: FontWeight.bold,
+ textAlign: TextAlign.start,
),
padding: EdgeInsets.all(10),
)
@@ -339,9 +344,7 @@ class _SickLeaveScreenState extends State {
print(value);
});
} else {
- model2
- .addSickLeave(addSickLeave)
- .then((value) => print(value));
+ _validateInputs(model2);
}
},
),
@@ -363,6 +366,27 @@ class _SickLeaveScreenState extends State {
)));
}
+ void _validateInputs(model2) async {
+ try {
+ if (addSickLeave.noOfDays == null) {
+ DrAppToastMsg.showErrorToast(
+ TranslationBase.of(context).pleaseEnterNoOfDays);
+ } else if (addSickLeave.remarks == null) {
+ DrAppToastMsg.showErrorToast(
+ TranslationBase.of(context).pleaseEnterRemarks);
+ } else if (addSickLeave.startDate == null) {
+ DrAppToastMsg.showErrorToast(
+ TranslationBase.of(context).pleaseEnterDate);
+ } else {
+ addSickLeave.patientMRN = widget.patient.patientMRN.toString();
+ addSickLeave.appointmentNo = widget.patient.appointmentNo.toString();
+ model2.addSickLeave(addSickLeave).then((value) => print(value));
+ }
+ } catch (err) {
+ print(err);
+ }
+ }
+
getProfile() async {
Map p = await sharedPref.getObj(DOCTOR_PROFILE);
setState(() {
diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart
index 213ad371..7070d252 100644
--- a/lib/util/translations_delegate_base.dart
+++ b/lib/util/translations_delegate_base.dart
@@ -388,70 +388,151 @@ class TranslationBase {
String get indication => localizedValues['indication'][locale.languageCode];
String get duration => localizedValues['duration'][locale.languageCode];
String get instruction => localizedValues['instruction'][locale.languageCode];
+ String get rescheduleLeaves =>
+ localizedValues['reschedule-leave'][locale.languageCode];
String get addMedication =>
localizedValues['addMedication'][locale.languageCode];
String get route => localizedValues['route'][locale.languageCode];
+ String get noReScheduleLeave =>
+ localizedValues['no-reschedule-leave'][locale.languageCode];
String get weight => localizedValues['weight'][locale.languageCode];
String get kg => localizedValues['kg'][locale.languageCode];
String get height => localizedValues['height'][locale.languageCode];
String get cm => localizedValues['cm'][locale.languageCode];
- String get idealBodyWeight => localizedValues['idealBodyWeight'][locale.languageCode];
+ String get idealBodyWeight =>
+ localizedValues['idealBodyWeight'][locale.languageCode];
String get waistSize => localizedValues['waistSize'][locale.languageCode];
String get inch => localizedValues['inch'][locale.languageCode];
String get headCircum => localizedValues['headCircum'][locale.languageCode];
- String get leanBodyWeight => localizedValues['leanBodyWeight'][locale.languageCode];
- String get bodyMassIndex => localizedValues['bodyMassIndex'][locale.languageCode];
+ String get leanBodyWeight =>
+ localizedValues['leanBodyWeight'][locale.languageCode];
+ String get bodyMassIndex =>
+ localizedValues['bodyMassIndex'][locale.languageCode];
String get method => localizedValues['method'][locale.languageCode];
String get pulseBeats => localizedValues['pulseBeats'][locale.languageCode];
String get rhythm => localizedValues['rhythm'][locale.languageCode];
String get respBeats => localizedValues['respBeats'][locale.languageCode];
- String get patternOfRespiration => localizedValues['patternOfRespiration'][locale.languageCode];
- String get bloodPressureDiastoleAndSystole => localizedValues['bloodPressureDiastoleAndSystole'][locale.languageCode];
- String get cuffLocation => localizedValues['cuffLocation'][locale.languageCode];
+ String get patternOfRespiration =>
+ localizedValues['patternOfRespiration'][locale.languageCode];
+ String get bloodPressureDiastoleAndSystole =>
+ localizedValues['bloodPressureDiastoleAndSystole'][locale.languageCode];
+ String get cuffLocation =>
+ localizedValues['cuffLocation'][locale.languageCode];
String get cuffSize => localizedValues['cuffSize'][locale.languageCode];
- String get patientPosition => localizedValues['patientPosition'][locale.languageCode];
+ String get patientPosition =>
+ localizedValues['patientPosition'][locale.languageCode];
String get fio2 => localizedValues['fio2'][locale.languageCode];
String get sao2 => localizedValues['sao2'][locale.languageCode];
- String get painManagement => localizedValues['painManagement'][locale.languageCode];
+ String get painManagement =>
+ localizedValues['painManagement'][locale.languageCode];
+ String get holiday => localizedValues['holiday'][locale.languageCode];
+ String get to => localizedValues['to'][locale.languageCode];
+ String get coveringDoctor =>
+ localizedValues['coveringDoctor'][locale.languageCode];
+ String get requestLeave =>
+ localizedValues['requestLeave'][locale.languageCode];
+ String get pleaseEnterDate =>
+ localizedValues['pleaseEnterDate'][locale.languageCode];
+ String get pleaseEnterNoOfDays =>
+ localizedValues['pleaseEnterNoOfDays'][locale.languageCode];
+ String get pleaseEnterRemarks =>
+ localizedValues['pleaseEnterRemarks'][locale.languageCode];
+ String get update => localizedValues['update'][locale.languageCode];
String get admission => localizedValues['admission'][locale.languageCode];
String get request => localizedValues['request'][locale.languageCode];
- String get admissionRequest => localizedValues['admissionRequest'][locale.languageCode];
- String get patientDetails => localizedValues['patientDetails'][locale.languageCode];
- String get specialityAndDoctorDetail => localizedValues['specialityAndDoctorDetail'][locale.languageCode];
- String get referringDate => localizedValues['referringDate'][locale.languageCode];
- String get referringDoctor => localizedValues['referringDoctor'][locale.languageCode];
- String get otherInformation => localizedValues['otherInformation'][locale.languageCode];
- String get expectedDays => localizedValues['expectedDays'][locale.languageCode];
- String get expectedAdmissionDate => localizedValues['expectedAdmissionDate'][locale.languageCode];
- String get emergencyAdmission => localizedValues['emergencyAdmission'][locale.languageCode];
- String get patientPregnant => localizedValues['patientPregnant'][locale.languageCode];
- String get treatmentLine => localizedValues['treatmentLine'][locale.languageCode];
+ String get admissionRequest =>
+ localizedValues['admissionRequest'][locale.languageCode];
+ String get patientDetails =>
+ localizedValues['patientDetails'][locale.languageCode];
+ String get specialityAndDoctorDetail =>
+ localizedValues['specialityAndDoctorDetail'][locale.languageCode];
+ String get referringDate =>
+ localizedValues['referringDate'][locale.languageCode];
+ String get referringDoctor =>
+ localizedValues['referringDoctor'][locale.languageCode];
+ String get otherInformation =>
+ localizedValues['otherInformation'][locale.languageCode];
+ String get expectedDays =>
+ localizedValues['expectedDays'][locale.languageCode];
+ String get expectedAdmissionDate =>
+ localizedValues['expectedAdmissionDate'][locale.languageCode];
+ String get emergencyAdmission =>
+ localizedValues['emergencyAdmission'][locale.languageCode];
+ String get patientPregnant =>
+ localizedValues['patientPregnant'][locale.languageCode];
+ String get treatmentLine =>
+ localizedValues['treatmentLine'][locale.languageCode];
String get ward => localizedValues['ward'][locale.languageCode];
- String get preAnesthesiaReferred => localizedValues['preAnesthesiaReferred'][locale.languageCode];
- String get admissionType => localizedValues['admissionType'][locale.languageCode];
+ String get preAnesthesiaReferred =>
+ localizedValues['preAnesthesiaReferred'][locale.languageCode];
+ String get admissionType =>
+ localizedValues['admissionType'][locale.languageCode];
String get diagnosis => localizedValues['diagnosis'][locale.languageCode];
String get allergies => localizedValues['allergies'][locale.languageCode];
- String get preOperativeOrders => localizedValues['preOperativeOrders'][locale.languageCode];
- String get elementForImprovement => localizedValues['elementForImprovement'][locale.languageCode];
- String get dischargeDate => localizedValues['dischargeDate'][locale.languageCode];
+ String get preOperativeOrders =>
+ localizedValues['preOperativeOrders'][locale.languageCode];
+ String get elementForImprovement =>
+ localizedValues['elementForImprovement'][locale.languageCode];
+ String get dischargeDate =>
+ localizedValues['dischargeDate'][locale.languageCode];
String get dietType => localizedValues['dietType'][locale.languageCode];
- String get dietTypeRemarks => localizedValues['dietTypeRemarks'][locale.languageCode];
+ String get dietTypeRemarks =>
+ localizedValues['dietTypeRemarks'][locale.languageCode];
String get save => localizedValues['save'][locale.languageCode];
- String get postPlansEstimatedCost => localizedValues['postPlansEstimatedCost'][locale.languageCode];
+ String get postPlansEstimatedCost =>
+ localizedValues['postPlansEstimatedCost'][locale.languageCode];
String get ucaf => localizedValues['ucaf'][locale.languageCode];
- String get emergencyCase => localizedValues['emergencyCase'][locale.languageCode];
- String get durationOfIllness => localizedValues['durationOfIllness'][locale.languageCode];
- String get chiefComplaintsAndSymptoms => localizedValues['chiefComplaintsAndSymptoms'][locale.languageCode];
- String get patientFeelsPainInHisBackAndCough => localizedValues['patientFeelsPainInHisBackAndCough'][locale.languageCode];
- String get additionalTextComplaints => localizedValues['additionalTextComplaints'][locale.languageCode];
- String get otherConditions => localizedValues['otherConditions'][locale.languageCode];
+ String get emergencyCase =>
+ localizedValues['emergencyCase'][locale.languageCode];
+ String get durationOfIllness =>
+ localizedValues['durationOfIllness'][locale.languageCode];
+ String get chiefComplaintsAndSymptoms =>
+ localizedValues['chiefComplaintsAndSymptoms'][locale.languageCode];
+ String get patientFeelsPainInHisBackAndCough =>
+ localizedValues['patientFeelsPainInHisBackAndCough'][locale.languageCode];
+ String get additionalTextComplaints =>
+ localizedValues['additionalTextComplaints'][locale.languageCode];
+ String get otherConditions =>
+ localizedValues['otherConditions'][locale.languageCode];
String get other => localizedValues['other'][locale.languageCode];
String get how => localizedValues['how'][locale.languageCode];
String get when => localizedValues['when'][locale.languageCode];
String get where => localizedValues['where'][locale.languageCode];
- String get specifyPossibleLineManagement => localizedValues['specifyPossibleLineManagement'][locale.languageCode];
- String get significantSigns => localizedValues['significantSigns'][locale.languageCode];
+ String get specifyPossibleLineManagement =>
+ localizedValues['specifyPossibleLineManagement'][locale.languageCode];
+ String get significantSigns =>
+ localizedValues['significantSigns'][locale.languageCode];
String get backAbdomen => localizedValues['backAbdomen'][locale.languageCode];
+ String get reasons => localizedValues['reasons'][locale.languageCode];
+ String get createNew => localizedValues['createNew'][locale.languageCode];
+
+ String get episode => localizedValues['episode'][locale.languageCode];
+ String get medications => localizedValues['medications'][locale.languageCode];
+ String get procedures => localizedValues['procedures'][locale.languageCode];
+
+ String get chiefComplaints =>
+ localizedValues['chiefComplaints'][locale.languageCode];
+ String get histories => localizedValues['histories'][locale.languageCode];
+ String get allergiesSoap =>
+ localizedValues['allergiesSoap'][locale.languageCode];
+ String get addChiefComplaints =>
+ localizedValues['addChiefComplaints'][locale.languageCode];
+ String get historyOfPresentIllness =>
+ localizedValues['historyOfPresentIllness'][locale.languageCode];
+ String get requiredMsg => localizedValues['requiredMsg'][locale.languageCode];
+ String get addHistory => localizedValues['addHistory'][locale.languageCode];
+ String get searchHistory =>
+ localizedValues['searchHistory'][locale.languageCode];
+ String get addSelectedHistories =>
+ localizedValues['addSelectedHistories'][locale.languageCode];
+ String get addAllergies =>
+ localizedValues['addAllergies'][locale.languageCode];
+ String get itemExist => localizedValues['itemExist'][locale.languageCode];
+ String get selectAllergy =>
+ localizedValues['selectAllergy'][locale.languageCode];
+ String get selectSeverity =>
+ localizedValues['selectSeverity'][locale.languageCode];
+ String get vitalSignEmptyMsg => localizedValues['vitalSignEmptyMsg'][locale.languageCode];
}
class TranslationBaseDelegate extends LocalizationsDelegate {
diff --git a/lib/widgets/patients/profile/PatientHeaderWidgetNoAvatar.dart b/lib/widgets/patients/profile/PatientHeaderWidgetNoAvatar.dart
new file mode 100644
index 00000000..25bc80e4
--- /dev/null
+++ b/lib/widgets/patients/profile/PatientHeaderWidgetNoAvatar.dart
@@ -0,0 +1,73 @@
+import 'package:doctor_app_flutter/config/size_config.dart';
+import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
+import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
+import 'package:flutter/material.dart';
+
+class PatientHeaderWidgetNoAvatar extends StatelessWidget {
+ final PatiantInformtion patient;
+
+ PatientHeaderWidgetNoAvatar(this.patient);
+
+ @override
+ Widget build(BuildContext context) {
+ return Column(
+ children: [
+ Container(
+ margin: EdgeInsets.all(16),
+ child: Row(
+ children: [
+ Expanded(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ AppText(
+ patient.firstName + ' ' + patient.lastName,
+ fontWeight: FontWeight.bold,
+ fontSize: SizeConfig.textMultiplier * 2.2,
+ ),
+ Row(
+ children: [
+ AppText(
+ "VIP",
+ fontWeight: FontWeight.bold,
+ fontSize: SizeConfig.textMultiplier * 2.2,
+ ),
+ SizedBox(
+ width: 8,
+ ),
+ AppText(
+ " ${patient.age}",
+ fontWeight: FontWeight.normal,
+ fontSize: SizeConfig.textMultiplier * 2.0,
+ ),
+ ],
+ ),
+ AppText(
+ "NEW VISIT",
+ fontWeight: FontWeight.bold,
+ fontSize: SizeConfig.textMultiplier * 2.0,
+ ),
+ AppText(
+ "${patient.companyName}",
+ fontWeight: FontWeight.bold,
+ fontSize: SizeConfig.textMultiplier * 2.0,
+ ),
+ ],
+ ),
+ ),
+ Icon(
+ Icons.info_outline,
+ color: Colors.black,
+ ),
+ ],
+ ),
+ ),
+ Container(
+ width: double.infinity,
+ height: 1,
+ color: Color(0xffCCCCCC),
+ ),
+ ],
+ );
+ }
+}
diff --git a/lib/widgets/patients/profile/SOAP/add_SOAP_index.dart b/lib/widgets/patients/profile/SOAP/add_SOAP_index.dart
deleted file mode 100644
index 9b4d092d..00000000
--- a/lib/widgets/patients/profile/SOAP/add_SOAP_index.dart
+++ /dev/null
@@ -1,133 +0,0 @@
-import 'package:doctor_app_flutter/core/viewModel/doctor_replay_view_model.dart';
-import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
-import 'package:doctor_app_flutter/models/SOAP/my_selected_allergy.dart';
-import 'package:doctor_app_flutter/models/SOAP/my_selected_assement.dart';
-import 'package:doctor_app_flutter/models/SOAP/my_selected_examination.dart';
-import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
-import 'package:doctor_app_flutter/screens/base/base_view.dart';
-import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
-import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/assessment_page.dart';
-import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/objective_page.dart';
-import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/plan_page.dart';
-import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/subjective/subjective_page.dart';
-import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
-import 'package:flutter/cupertino.dart';
-import 'package:flutter/material.dart';
-
-import '../soap_update/steps_widget.dart';
-
-class AddSOAPIndex extends StatefulWidget {
- final bool isUpdate;
-
- const AddSOAPIndex({Key key, this.isUpdate}) : super(key: key);
- @override
- _AddSOAPIndexState createState() => _AddSOAPIndexState();
-}
-
-class _AddSOAPIndexState extends State
- with TickerProviderStateMixin {
- PageController _controller;
- int _currentIndex = 0;
- List myAllergiesList= List();
- List myHistoryList = List();
- List mySelectedExamination = List();
- MySelectedAssessment mySelectedAssessment = new MySelectedAssessment();
- changePageViewIndex(pageIndex) {
- _controller.jumpToPage(pageIndex);
- }
-
- @override
- void initState() {
- // TODO: implement initState
- _controller = new PageController();
-
- super.initState();
- }
- @override
- Widget build(BuildContext context) {
- final routeArgs = ModalRoute.of(context).settings.arguments as Map;
- PatiantInformtion patient = routeArgs['patient'];
- return BaseView(
- builder: (_, model, w) => AppScaffold(
- baseViewModel: model,
- appBarTitle: TranslationBase.of(context).healthRecordInformation,
- body: SingleChildScrollView(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Container(
- decoration:
- BoxDecoration(boxShadow: [], color: Colors.white),
- child: Column(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- PatientPageHeaderWidget(patient),
- FractionallySizedBox(
- child: SingleChildScrollView(
- child: Container(
- height: MediaQuery.of(context).size.height * 0.75,
- child: Column(
- children: [
- Container(
- margin: EdgeInsets.only(
- left:
- MediaQuery.of(context).size.width * 0.05,
- right:
- MediaQuery.of(context).size.width * 0.05),
- child: StepsWidget(
- index: _currentIndex,
- changeCurrentTab: changePageViewIndex,
- ),
- ),
- Expanded(
- child: PageView(
- physics: NeverScrollableScrollPhysics(),
- controller: _controller,
- onPageChanged: (index) {
- setState(() {
- _currentIndex = index;
- });
- },
- scrollDirection: Axis.horizontal,
- children: [
- SubjectivePage(
- changePageViewIndex: changePageViewIndex,
- myAllergiesList: myAllergiesList,
- myHistoryList: myHistoryList,
- patientInfo: patient,
- ),
- ObjectivePage(
- changePageViewIndex: changePageViewIndex,
- mySelectedExamination:
- mySelectedExamination,
- patientInfo: patient,
- ),
- AssessmentPage(
- changePageViewIndex: changePageViewIndex,
- mySelectedAssessment:
- mySelectedAssessment,
- patientInfo: patient,
- ),
- PlanPage(
- changePageViewIndex: changePageViewIndex,
- patientInfo: patient,
- )
- ],
- ),
- ),
- ],
- ),
- ),
- ),
- )
- ],
- ),
- ),
- ],
- ),
- ),
- ),
- );
- }
-}
diff --git a/lib/widgets/patients/profile/SOAP/assessment_page.dart b/lib/widgets/patients/profile/SOAP/assessment_page.dart
deleted file mode 100644
index 0f7a8e31..00000000
--- a/lib/widgets/patients/profile/SOAP/assessment_page.dart
+++ /dev/null
@@ -1,647 +0,0 @@
-import 'package:autocomplete_textfield/autocomplete_textfield.dart';
-import 'package:doctor_app_flutter/client/base_app_client.dart';
-import 'package:doctor_app_flutter/config/config.dart';
-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/viewModel/SOAP_view_model.dart';
-import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
-import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
-import 'package:doctor_app_flutter/models/SOAP/my_selected_assement.dart';
-import 'package:doctor_app_flutter/models/SOAP/post_assessment_request_model.dart';
-import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
-import 'package:doctor_app_flutter/screens/base/base_view.dart';
-import 'package:doctor_app_flutter/util/helpers.dart';
-import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
-import 'package:doctor_app_flutter/widgets/shared/Text.dart';
-import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/dialogs/master_key_dailog.dart';
-import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart';
-import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart';
-import 'package:eva_icons_flutter/eva_icons_flutter.dart';
-import 'package:flutter/material.dart';
-import 'package:font_awesome_flutter/font_awesome_flutter.dart';
-import 'package:provider/provider.dart';
-
-class AssessmentPage extends StatefulWidget {
- final Function changePageViewIndex;
- final MySelectedAssessment mySelectedAssessment;
- final PatiantInformtion patientInfo;
-
- AssessmentPage(
- {Key key, this.changePageViewIndex, this.mySelectedAssessment, this.patientInfo});
-
- @override
- _AssessmentPageState createState() => _AssessmentPageState();
-}
-
-class _AssessmentPageState extends State {
- bool isAssessmentExpand = false;
-
- List assessmentList;
- dynamic _referTo;
-
- TextEditingController remarksController = TextEditingController();
- Helpers helpers = Helpers();
- @override
- Widget build(BuildContext context) {
- final screenSize = MediaQuery.of(context).size;
-
- return BaseView(
- builder: (_, model, w) => AppScaffold(
- isShowAppBar: false,
- body: SingleChildScrollView(
- physics: ScrollPhysics(),
- child: Center(
- child: FractionallySizedBox(
- widthFactor: 0.9,
- child: Column(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- SizedBox(
- height: 30,
- ),
- HeaderBodyExpandableNotifier(
- headerWidget: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Row(
- children: [
- Texts('ASSESSMENT',
- variant:
- isAssessmentExpand ? "bodyText" : '',
- bold: isAssessmentExpand ? true : false,
- color: Colors.black),
- Icon(
- FontAwesomeIcons.asterisk,
- color: AppGlobal.appPrimaryColor,
- size: 12,
- )
- ],
- ),
- InkWell(
- onTap: () {
- setState(() {
- isAssessmentExpand = !isAssessmentExpand;
- });
- },
- child: Icon(isAssessmentExpand
- ? EvaIcons.minus
- : EvaIcons.plus))
- ],
- ),
- bodyWidget: Column(children: [
- SizedBox(
- height: 20,
- ),
- Column(
- children: [
- Container(
- margin:
- EdgeInsets.only(left: 5, right: 5, top: 15),
- child: TextFields(
- hintText: "Add ASSESSMENT",
- fontSize: 13.5,
- onTapTextFields: () {
- openAssessmentDialog(context);
- },
- readOnly: true,
- // hintColor: Colors.black,
- suffixIcon: EvaIcons.plusCircleOutline,
- suffixIconColor: AppGlobal.appPrimaryColor,
- fontWeight: FontWeight.w600,
- // controller: messageController,
- validator: (value) {
- if (value == null)
- return TranslationBase
- .of(context)
- .emptyMessage;
- else
- return null;
- }),
- ),
- SizedBox(
- height: 20,
- ),
- if(widget.mySelectedAssessment != null &&
- widget.mySelectedAssessment
- .appointmentId !=
- null && widget.mySelectedAssessment
- .selectedDiagnosisType != null &&
- widget.mySelectedAssessment
- .selectedDiagnosisCondition != null)
- Container(
- margin: EdgeInsets.only(
- left: 5, right: 5, top: 15),
- child: Row(
- mainAxisAlignment: MainAxisAlignment
- .spaceBetween,
- crossAxisAlignment: CrossAxisAlignment
- .start,
- children: [
- Column(
- mainAxisAlignment: MainAxisAlignment
- .start,
- children: [
- Column(
- mainAxisAlignment:
- MainAxisAlignment.start,
- crossAxisAlignment:
- CrossAxisAlignment.start,
- children: [
- AppText(
- "12".toUpperCase(),
- fontWeight: FontWeight.bold,
- fontSize: 16,
- ),
- AppText(
- "DEC".toUpperCase(),
- fontSize: 10,
- color: Colors.grey,
- ),
- ],
- )
- ],
- ),
- Column(
- crossAxisAlignment: CrossAxisAlignment
- .start,
- children: [
- Row(
- mainAxisAlignment:
- MainAxisAlignment.start,
- children: [
- AppText(
- "Appointment #: ",
- fontWeight: FontWeight.bold,
- fontSize: 16,
- ),
- AppText(
- widget.mySelectedAssessment
- .appointmentId
- .toString(),
- fontSize: 10,
- color: Colors.grey,
- ),
- ],
- ),
- Row(
- mainAxisAlignment:
- MainAxisAlignment.start,
- children: [
- AppText(
- widget.mySelectedAssessment
- .selectedDiagnosisCondition
- .nameEn,
- fontWeight: FontWeight.bold,
- fontSize: 16,
- ),
- ],
- ),
- Row(
- mainAxisAlignment:
- MainAxisAlignment.start,
- children: [
- AppText(
- "Type : ",
- fontWeight: FontWeight.bold,
- fontSize: 16,
- ),
- AppText(
- widget.mySelectedAssessment
- .selectedDiagnosisType
- .nameEn,
- fontSize: 10,
- color: Colors.grey,
- ),
- ],
- ),
- Row(
- mainAxisAlignment:
- MainAxisAlignment.start,
- children: [
- AppText(
- "Doc : ",
- fontWeight: FontWeight.bold,
- fontSize: 16,
- ),
- AppText(
- "Anas Abdullah",
- fontSize: 10,
- color: Colors.grey,
- ),
- ],
- ),
- SizedBox(
- height: 6,
- ),
- Row(
- mainAxisAlignment:
- MainAxisAlignment.start,
- children: [
- SizedBox(
- height: 6,
- ),
- AppText(
- widget.mySelectedAssessment.remark,
- fontSize: 10,
- color: Colors.grey,
- ),
- ],
- ),
- ],
- ),
- Column(
- crossAxisAlignment: CrossAxisAlignment
- .start,
- children: [
- Row(
-
- children: [
- AppText(
- "ICD: ".toUpperCase(),
- fontWeight: FontWeight.bold,
- fontSize: 16,
- ),
- AppText(
- "R07.1".toUpperCase(),
- fontSize: 10,
- color: Colors.grey,
- ),
- ],
- )
- ],
- ),
- Column(
- children: [
- InkWell(
- onTap: () {
- openAssessmentDialog(context);
- },
- child: Icon(EvaIcons
- .edit2Outline),
- )
- ],
- ),
- ],
- ),
- )
- ],
- )
- ]),
- isExpand: isAssessmentExpand,
- ),
- DividerWithSpacesAround(
- height: 30,
- ),
- AppButton(
- title: TranslationBase.of(context).next,
- loading: model.state == ViewState.BusyLocal,
- onPressed: () async {
- await submitAssessment(model);
- },
- ),
- SizedBox(
- height: 30,
- ),
- ],
- ),
- ),
- ),
- )));
- }
-
- submitAssessment(SOAPViewModel model) async {
- if (widget.mySelectedAssessment.selectedDiagnosisCondition != null &&
- widget.mySelectedAssessment.selectedDiagnosisType != null) {
- PostAssessmentRequestModel postAssessmentRequestModel =
- new PostAssessmentRequestModel(
- patientMRN: widget.patientInfo.patientMRN,
- episodeId: widget.patientInfo.episodeNo,
- appointmentNo: widget.patientInfo.appointmentNo,
- icdCodeDetails: [
- new IcdCodeDetails(
- remarks: widget.mySelectedAssessment.remark,
- complexDiagnosis: true,
- conditionId:
- widget.mySelectedAssessment.selectedDiagnosisCondition.id,
- diagnosisTypeId:
- widget.mySelectedAssessment.selectedDiagnosisType.id,
- icdcode10Id: "1")
- ]);
-
- await model.postAssessment(postAssessmentRequestModel);
-
- if (model.state == ViewState.ErrorLocal) {
- helpers.showErrorToast(model.error);
- } else {
- widget.changePageViewIndex(3);
- }
- } else {
- helpers.showErrorToast('Please add required field correctly');
- }
-
- widget.changePageViewIndex(3);
- }
-
- openAssessmentDialog(BuildContext context) {
- showModalBottomSheet(
- backgroundColor: Colors.white,
- isScrollControlled: true,
- context: context,
- builder: (context) {
- return AddAssessmentDetails(
- mySelectedAssessment: widget.mySelectedAssessment,
- addSelectedAssessment: () {
- setState(() {
- Navigator.of(context).pop();
- });
- });
- });
- }
-
-}
-
-class AddAssessmentDetails extends StatefulWidget {
- final MySelectedAssessment mySelectedAssessment;
- final Function() addSelectedAssessment;
-
- const AddAssessmentDetails(
- {Key key, this.mySelectedAssessment, this.addSelectedAssessment})
- : super(key: key);
-
- @override
- _AddAssessmentDetailsState createState() => _AddAssessmentDetailsState();
-}
-
-class _AddAssessmentDetailsState extends State {
- // MasterKeyModel _selectedDiagnosisCondition;
- // MasterKeyModel _selectedDiagnosisType;
- TextEditingController remarkController = TextEditingController();
- TextEditingController appointmentIdController = TextEditingController(
- text: "234567");
- GlobalKey key = new GlobalKey>();
-
- @override
- Widget build(BuildContext context) {
- ProjectViewModel projectViewModel = Provider.of(context);
- remarkController.text = widget.mySelectedAssessment.remark??"";
- final screenSize = MediaQuery
- .of(context)
- .size;
- InputDecoration textFieldSelectorDecoration(String hintText,
- String selectedText, bool isDropDown,{IconData icon}) {
- //TODO: make one Input InputDecoration for all
- return InputDecoration(
- focusedBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- enabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- disabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- hintText: selectedText != null ? selectedText : hintText,
- suffixIcon: isDropDown ? Icon(icon??Icons.arrow_drop_down) : null,
- hintStyle: TextStyle(
- fontSize: 14,
- color: Colors.grey.shade600,
- ),
- );
- }
- return FractionallySizedBox(
- heightFactor: 0.75,
- child: BaseView(
- onModelReady: (model) async {
- if (model.listOfDiagnosisCondition.length == 0) {
- await model.getMasterLookup(MasterKeysService.DiagnosisCondition);
- }
- if (model.listOfDiagnosisType.length == 0) {
- await model.getMasterLookup(MasterKeysService.DiagnosisType);
- }
- // if (model.listOfICD10.length == 0) {
- // await model.getMasterLookup(MasterKeysService.ICD10);
- // }
- },
- builder: (_, model, w) =>
- AppScaffold(
- baseViewModel: model,
- isShowAppBar: false,
- body: SingleChildScrollView(
- child: Center(
- child: FractionallySizedBox(
- widthFactor: 0.9,
- child: Container(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- SizedBox(
- height: 16,
- ),
- AppText(
- "Add Assessment Details".toUpperCase(),
- fontWeight: FontWeight.bold,
- fontSize: 16,
- ),
- SizedBox(
- height: 16,
- ),
- Container(
- margin: EdgeInsets.only(
- left: 0, right: 0, top: 15),
- child: TextFields(
- hintText: "Appointment Number",
- fontSize: 13.5,
- // hintColor: Colors.black,
- fontWeight: FontWeight.w600,
- readOnly: true,
- controller: appointmentIdController,
- validator: (value) {
- if (value == null)
- return TranslationBase
- .of(context)
- .emptyMessage;
- else
- return null;
- }),
- ),
- SizedBox(
- height: 10,
- ),
- Container(
- height: screenSize.height * 0.070,
- child: InkWell(
- onTap: model.listOfICD10 != null
- ? () {
- setState(() {
- widget.mySelectedAssessment.selectedICD = null;
- });
- }
- : null,
- child:widget.mySelectedAssessment.selectedICD == null ? AutoCompleteTextField(
- decoration: textFieldSelectorDecoration("Name or ICD", widget.mySelectedAssessment.selectedICD != null ? widget.mySelectedAssessment.selectedICD.nameEn : null, true,icon: EvaIcons.search),
- itemSubmitted: (item) => setState(() => widget.mySelectedAssessment.selectedICD = item),
- key: key,
- suggestions: model.listOfICD10,
- itemBuilder: (context, suggestion) => new Padding(
- child:Texts( suggestion.description +" / "+ suggestion.code.toString()),
- padding: EdgeInsets.all(8.0)),
- itemSorter: (a, b) => 1,
- itemFilter: (suggestion, input) =>
- suggestion.description.toLowerCase().startsWith(input.toLowerCase()) ||suggestion.description.toLowerCase().startsWith(input.toLowerCase())
- ||suggestion.code.toLowerCase().startsWith(input.toLowerCase())
- ,
- ): TextField(
- decoration: textFieldSelectorDecoration(
- widget.mySelectedAssessment.selectedICD != null ? widget.mySelectedAssessment.selectedICD.code :"Name or ICD",
- widget.mySelectedAssessment.selectedICD != null ? widget.mySelectedAssessment.selectedICD.nameEn : null, true,icon: EvaIcons.search),
- enabled: false,
- ),
- ),
- ),
- SizedBox(
- height: 10,
- ),
- Container(
- height: screenSize.height * 0.070,
- child: InkWell(
- onTap: model.listOfDiagnosisCondition !=
- null
- ? () {
- MasterKeyDailog dialog = MasterKeyDailog(
- list: model.listOfDiagnosisCondition,
- okText: TranslationBase
- .of(context)
- .ok,
- okFunction: (
- MasterKeyModel selectedValue) {
- setState(() {
- widget.mySelectedAssessment
- .selectedDiagnosisCondition =
- selectedValue;
- });
- },
- );
- showDialog(
- barrierDismissible: false,
- context: context,
- builder: (BuildContext context) {
- return dialog;
- },
- );
- }
- : null,
- child: TextField(
- decoration: textFieldSelectorDecoration(
- "Condition",
- widget.mySelectedAssessment
- .selectedDiagnosisCondition != null
- ? widget.mySelectedAssessment
- .selectedDiagnosisCondition
- .nameEn
- : null,
- true),
- enabled: false,
- ),
- ),
- ),
- SizedBox(
- height: 10,
- ),
- Container(
- height: screenSize.height * 0.070,
- child: InkWell(
- onTap: model.listOfDiagnosisType != null
- ? () {
- MasterKeyDailog dialog = MasterKeyDailog(
- list: model.listOfDiagnosisType,
- okText: TranslationBase
- .of(context)
- .ok,
- okFunction: (
- MasterKeyModel selectedValue) {
- setState(() {
- // _selectedDiagnosisType =
- // selectedValue;
- widget.mySelectedAssessment
- .selectedDiagnosisType =
- selectedValue;
- });
- },
- );
- showDialog(
- barrierDismissible: false,
- context: context,
- builder: (BuildContext context) {
- return dialog;
- },
- );
- }
- : null,
- child: TextField(
- decoration: textFieldSelectorDecoration(
- "Type",
- widget.mySelectedAssessment
- .selectedDiagnosisType != null
- ? widget.mySelectedAssessment
- .selectedDiagnosisType.nameEn
- : null,
- true),
- enabled: false,
- ),
- ),
- ),
- SizedBox(
- height: 10,
- ),
- Container(
- margin: EdgeInsets.only(
- left: 0, right: 0, top: 15),
- child: TextFields(
- hintText: "Remarks",
- fontSize: 13.5,
- // hintColor: Colors.black,
- fontWeight: FontWeight.w600,
- maxLines: 18,
- minLines: 5,
- controller: remarkController,
- validator: (value) {
- if (value == null)
- return TranslationBase
- .of(context)
- .emptyMessage;
- else
- return null;
- }),
- ),
- SizedBox(
- height: 10,
- ),
- AppButton(
- title: "Add".toUpperCase(),
- onPressed: () {
- setState(() {
- widget.mySelectedAssessment.remark =
- remarkController.text;
- widget.mySelectedAssessment
- .appointmentId = int.parse(
- appointmentIdController.text);
-
- widget.addSelectedAssessment();
- });
- },
- ),
- ])),
- ),
- ),
- ))),
- );
- }
-}
-
diff --git a/lib/widgets/patients/profile/SOAP/objective_page.dart b/lib/widgets/patients/profile/SOAP/objective_page.dart
deleted file mode 100644
index e5ce583b..00000000
--- a/lib/widgets/patients/profile/SOAP/objective_page.dart
+++ /dev/null
@@ -1,518 +0,0 @@
-import 'package:doctor_app_flutter/client/base_app_client.dart';
-import 'package:doctor_app_flutter/config/config.dart';
-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/viewModel/SOAP_view_model.dart';
-import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
-import 'package:doctor_app_flutter/models/SOAP/my_selected_examination.dart';
-import 'package:doctor_app_flutter/models/SOAP/post_physical_exam_request_model.dart';
-import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
-import 'package:doctor_app_flutter/screens/base/base_view.dart';
-import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
-import 'package:doctor_app_flutter/widgets/shared/master_key_checkbox_search_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/Text.dart';
-import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart';
-import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart';
-import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
-import 'package:eva_icons_flutter/eva_icons_flutter.dart';
-import 'package:flutter/material.dart';
-import 'package:font_awesome_flutter/font_awesome_flutter.dart';
-
-class ObjectivePage extends StatefulWidget {
- final Function changePageViewIndex;
- final List mySelectedExamination;
- final PatiantInformtion patientInfo;
- ObjectivePage(
- {Key key, this.changePageViewIndex, this.mySelectedExamination, this.patientInfo});
-
- @override
- _ObjectivePageState createState() => _ObjectivePageState();
-}
-
-class _ObjectivePageState extends State {
- bool isSysExaminationExpand = false;
- TextEditingController remarksController = TextEditingController();
-
- BoxDecoration containerBorderDecoration(
- Color containerColor, Color borderColor) {
- return BoxDecoration(
- color: containerColor,
- shape: BoxShape.rectangle,
- borderRadius: BorderRadius.all(Radius.circular(6)),
- border: Border.fromBorderSide(BorderSide(
- color: borderColor,
- width: 0.5,
- )),
- );
- }
- @override
- Widget build(BuildContext context) {
- final screenSize = MediaQuery.of(context).size;
-
- return BaseView(
- // onModelReady: (model) => model.getMasterLookup(MasterKeysService.Allergies),
- builder: (_, model, w) => AppScaffold(
- isShowAppBar: false,
- body: SingleChildScrollView(
- physics: ScrollPhysics(),
- child: Center(
- child: FractionallySizedBox(
- widthFactor: 0.9,
- child: Column(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- SizedBox(
- height: 30,
- ),
- HeaderBodyExpandableNotifier(
- headerWidget: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Row(
- children: [
- Texts('Physical/System Examination',
- variant:
- isSysExaminationExpand ? "bodyText" : '',
- bold: isSysExaminationExpand ? true : false,
- color: Colors.black),
- Icon(
- FontAwesomeIcons.asterisk,
- color: AppGlobal.appPrimaryColor,
- size: 12,
- )
- ],
- ),
- InkWell(
- onTap: () {
- setState(() {
- isSysExaminationExpand =
- !isSysExaminationExpand;
- });
- },
- child: Icon(isSysExaminationExpand
- ? EvaIcons.minus
- : EvaIcons.plus))
- ],
- ),
- bodyWidget: Column(children: [
- SizedBox(
- height: 20,
- ),
- Column(
- children: [
- Container(
- margin:
- EdgeInsets.only(left: 10, right: 10, top: 15),
- child: TextFields(
- hintText: "Add Examination",
- fontSize: 13.5,
- onTapTextFields: () {
- openExaminationList(context);
- },
- readOnly: true,
- // hintColor: Colors.black,
- suffixIcon: EvaIcons.plusCircleOutline,
- suffixIconColor: AppGlobal.appPrimaryColor,
- fontWeight: FontWeight.w600,
- // controller: messageController,
- validator: (value) {
- if (value == null)
- return TranslationBase.of(context)
- .emptyMessage;
- else
- return null;
- }),
- ),
- SizedBox(
- height: 20,
- ),
- Column(
- children:
- widget.mySelectedExamination.map((examination) {
- return Container(
- margin: EdgeInsets.only(
- left: 15, right: 15, top: 15),
- child: Column(children: [
- Row(
- mainAxisAlignment:
- MainAxisAlignment.spaceBetween,
- children: [
- Texts(
- examination
- .selectedExamination.nameEn
- .toUpperCase(),
- variant: "bodyText",
- bold: true,
- color: Colors.black)
- ],
- ),
- SizedBox(
- height: 8,
- ),
- Row(
- mainAxisAlignment:
- MainAxisAlignment.spaceBetween,
- children: [
- Row(
- children: [
- InkWell(
- child: Center(
- child: Container(
- height:
- screenSize.height *
- 0.070,
- decoration:
- containerBorderDecoration(
- examination
- .isNormal
- ? Color(
- 0xFF515A5D)
- : Colors
- .white,
- Colors.grey),
- child: Center(
- child: Padding(
- padding:
- const EdgeInsets
- .all(8.0),
- child: Text(
- "Normal",
- style: TextStyle(
- fontSize: 12,
- color:
- examination
- .isNormal
- ? Colors.white
- : Colors
- .black,
- //Colors.black,
- fontWeight:
- FontWeight
- .bold,
- ),
- ),
- ),
- )),
- ),
- onTap: () {
- setState(() {
- examination.isAbnormal =
- !examination.isAbnormal;
- examination.isNormal =
- !examination.isNormal;
- });
- }),
- SizedBox(
- width: 12,
- ),
- InkWell(
- child: Center(
- child: Container(
- height:
- screenSize.height *
- 0.070,
- decoration:
- containerBorderDecoration(
- examination
- .isAbnormal
- ? Color(
- 0xFF515A5D)
- : Colors
- .white,
- Colors.black),
- child: Center(
- child: Padding(
- padding:
- const EdgeInsets
- .all(8.0),
- child: Text(
- "Abnormal",
- style: TextStyle(
- fontSize: 12,
- color:
- examination
- .isAbnormal
- ? Colors.white
- : Colors
- .black,
- //Colors.black,
- fontWeight:
- FontWeight
- .bold,
- ),
- ),
- ),
- )),
- ),
- onTap: () {
- setState(() {
- examination.isAbnormal =
- !examination.isAbnormal;
- examination.isNormal =
- !examination.isNormal;
- });
- }),
- ],
- ),
- InkWell(
-
- child: Icon(
- FontAwesomeIcons.trash,
- color: Colors.grey,
- size: 20,
- ),
- onTap: () => removeExamination(
- examination.selectedExamination),
- )
- ],
- ),
- SizedBox(
- height: 20,
- ),
- Container(
- margin: EdgeInsets.only(
- left: 10, right: 10, top: 15),
- child: TextFields(
- hintText: "Remarks",
- fontSize: 13.5,
- // hintColor: Colors.black,
- fontWeight: FontWeight.w600,
- maxLines: 25,
- minLines: 13,
- controller: remarksController,
- validator: (value) {
- if (value == null)
- return TranslationBase.of(context)
- .emptyMessage;
- else
- return null;
- }),
- ),
- SizedBox(
- height: 20,
- ),
- ]));
- }).toList(),
- )
- ],
- )
- ]),
- isExpand: isSysExaminationExpand,
- ),
- DividerWithSpacesAround(height: 30,),
- AppButton(
- title: TranslationBase.of(context).next,
- loading: model.state == ViewState.BusyLocal,
- onPressed: () async {
- await submitObjectivePage(model);
- },
- ),
- SizedBox(
- height: 30,
- ),
- ],
- ),
- ),
- ),
- )));
- }
-
- submitObjectivePage(SOAPViewModel model) async {
- // if(widget.mySelectedExamination.isNotEmpty){
- // PostPhysicalExamRequestModel postPhysicalExamRequestModel = new PostPhysicalExamRequestModel();
- // widget.mySelectedExamination.forEach((exam) {
- // if (postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM ==
- // null)
- // postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM = [];
- // // TODO : change createdBy editedBy
- // postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM.add(
- // ListHisProgNotePhysicalExaminationVM(
- // patientMRN: widget.patientInfo.patientMRN,
- // episodeId: widget.patientInfo.episodeNo,
- // appointmentNo: widget.patientInfo.appointmentNo,
- // remarks: exam.remark ?? '',
- // createdBy: 4709,
- // createdOn: DateTime.now().toIso8601String(),
- // editedBy: 4709,
- // editedOn: DateTime.now().toIso8601String(),
- // examId: exam.selectedExamination.id,
- // examType: exam.selectedExamination.typeId,
- // isAbnormal: exam.isAbnormal,
- // isNormal: exam.isNormal,
- // masterDescription: exam.selectedExamination,
- // notExamined: false
- //
- // ));
- // });
- //
- // await model.postPhysicalExam(postPhysicalExamRequestModel);
- //
- // if (model.state == ViewState.ErrorLocal) {
- // helpers.showErrorToast(model.error);
- // } else {
- // widget.changePageViewIndex(2);
- // }
- // } else {
- // helpers.showErrorToast('Please add required field correctly');
- // }
-
- widget.changePageViewIndex(2);
- }
-
- removeExamination(MasterKeyModel masterKey) {
- Iterable history = widget.mySelectedExamination
- .where(
- (element) =>
- masterKey.id == element.selectedExamination.id &&
- masterKey.typeId == element.selectedExamination.typeId);
-
- if (history.length > 0)
- setState(() {
- widget.mySelectedExamination.remove(history.first);
- });
- }
-
- openExaminationList(BuildContext context) {
- final screenSize = MediaQuery
- .of(context)
- .size;
- InputDecoration textFieldSelectorDecoration(String hintText,
- String selectedText, bool isDropDown) {
- return InputDecoration(
- focusedBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- enabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- disabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- hintText: selectedText != null ? selectedText : hintText,
- suffixIcon: isDropDown ? Icon(Icons.arrow_drop_down) : null,
- hintStyle: TextStyle(
- fontSize: 14,
- color: Colors.grey.shade600,
- ),
- );
- }
-
- showModalBottomSheet(
- backgroundColor: Colors.white,
- isScrollControlled: true,
- context: context,
- builder: (context) {
- return AddExaminationDailog(
- mySelectedExamination: widget.mySelectedExamination,
- addSelectedExamination: () {
- setState(() {
- Navigator.of(context).pop();
- });
- },
- removeExamination: (masterKey) => removeExamination(masterKey),);
- });
- }
-}
-
-class AddExaminationDailog extends StatefulWidget {
- final List mySelectedExamination;
- final Function addSelectedExamination;
- final Function (MasterKeyModel) removeExamination;
-
- const AddExaminationDailog(
- {Key key, this.mySelectedExamination, this.addSelectedExamination, this.removeExamination})
- : super(key: key);
-
- @override
- _AddExaminationDailogState createState() => _AddExaminationDailogState();
-}
-
-class _AddExaminationDailogState extends State {
- @override
- Widget build(BuildContext context) {
- return FractionallySizedBox(
- heightFactor: 0.7,
- child: BaseView(
- onModelReady: (model) async {
- if (model.physicalExaminationList.length == 0) {
- await model.getMasterLookup(
- MasterKeysService.PhysicalExamination);
- }
- },
- builder: (_, model, w) =>
- AppScaffold(
- // baseViewModel: model,
- isShowAppBar: false,
- body: Center(
- child: Container(
- child: FractionallySizedBox(
- widthFactor: 0.9,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- SizedBox(
- height: 16,
- ),
- AppText(
- "Examinations",
- fontWeight: FontWeight.bold,
- fontSize: 16,
- ),
- SizedBox(
- height: 16,
- ),
-
- NetworkBaseView(
- baseViewModel: model,
- child: MasterKeyCheckboxSearchWidget(
- model: model,
- masterList: model.physicalExaminationList,
- removeHistory: (history){
- setState(() {
- widget.removeExamination(history);
- });
- },
- addHistory: (history){
- setState(() {
- MySelectedExamination mySelectedExamination = new MySelectedExamination(
- selectedExamination: history
- );
- widget
- .mySelectedExamination
- .add(
- mySelectedExamination);
- });
- },
- addSelectedHistories: (){
- widget.addSelectedExamination();
- },
- isServiceSelected: (master) =>isServiceSelected(master),
- ),
- ),
-
- ]),
- ))),
- )),
- );
- }
-
- isServiceSelected(MasterKeyModel masterKey) {
- Iterable exam =
- widget
- .mySelectedExamination
- .where((element) =>
- masterKey.id == element.selectedExamination.id &&
- masterKey.typeId == element.selectedExamination.typeId);
- if (exam.length > 0) {
- return true;
- }
- return false;
- }
-}
diff --git a/lib/widgets/patients/profile/SOAP/plan_page.dart b/lib/widgets/patients/profile/SOAP/plan_page.dart
deleted file mode 100644
index 1bde4b6c..00000000
--- a/lib/widgets/patients/profile/SOAP/plan_page.dart
+++ /dev/null
@@ -1,349 +0,0 @@
-import 'package:doctor_app_flutter/client/base_app_client.dart';
-import 'package:doctor_app_flutter/config/config.dart';
-import 'package:doctor_app_flutter/core/enum/viewstate.dart';
-import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
-import 'package:doctor_app_flutter/models/SOAP/post_progress_note_request_model.dart';
-import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
-import 'package:doctor_app_flutter/screens/base/base_view.dart';
-import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
-import 'package:doctor_app_flutter/widgets/shared/Text.dart';
-import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart';
-import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart';
-import 'package:eva_icons_flutter/eva_icons_flutter.dart';
-import 'package:flutter/material.dart';
-import 'package:font_awesome_flutter/font_awesome_flutter.dart';
-
-class PlanPage extends StatefulWidget {
- final Function changePageViewIndex;
- final PatiantInformtion patientInfo;
-
- PlanPage({Key key, this.changePageViewIndex, this.patientInfo});
-
- @override
- _PlanPageState createState() => _PlanPageState();
-}
-
-class _PlanPageState extends State {
- bool isProgressNoteExpand = false;
-
- List progressNoteList;
-
- TextEditingController progressNoteController =
- TextEditingController(text: null);
-
- BoxDecoration containerBorderDecoration(
- Color containerColor, Color borderColor) {
- return BoxDecoration(
- color: containerColor,
- shape: BoxShape.rectangle,
- borderRadius: BorderRadius.all(Radius.circular(6)),
- border: Border.fromBorderSide(BorderSide(
- color: borderColor,
- width: 0.5,
- )),
- );
- }
-
- @override
- Widget build(BuildContext context) {
- final screenSize = MediaQuery.of(context).size;
-
- return BaseView(
- // onModelReady: (model) => model.getMasterLookup(MasterKeysService.Allergies),
- builder: (_, model, w) => AppScaffold(
- isShowAppBar: false,
- body: SingleChildScrollView(
- physics: ScrollPhysics(),
- child: Center(
- child: FractionallySizedBox(
- widthFactor: 0.9,
- child: Column(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- SizedBox(
- height: 30,
- ),
- HeaderBodyExpandableNotifier(
- headerWidget: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Row(
- children: [
- Texts('Progress Note',
- variant:
- isProgressNoteExpand ? "bodyText" : '',
- bold: isProgressNoteExpand ? true : false,
- color: Colors.black),
- Icon(
- FontAwesomeIcons.asterisk,
- color: AppGlobal.appPrimaryColor,
- size: 12,
- )
- ],
- ),
- InkWell(
- onTap: () {
- setState(() {
- isProgressNoteExpand =
- !isProgressNoteExpand;
- });
- },
- child: Icon(isProgressNoteExpand
- ? EvaIcons.minus
- : EvaIcons.plus))
- ],
- ),
- bodyWidget: Column(children: [
- SizedBox(
- height: 20,
- ),
- Column(
- children: [
- Container(
- margin:
- EdgeInsets.only(left: 10, right: 10, top: 15),
- child: TextFields(
- hintText: "Add Progress Note",
- fontSize: 13.5,
- onTapTextFields: () {
- openProgressNote(context);
- },
- readOnly: true,
- // hintColor: Colors.black,
- suffixIcon: EvaIcons.plusCircleOutline,
- suffixIconColor: AppGlobal.appPrimaryColor,
- fontWeight: FontWeight.w600,
- // controller: messageController,
- validator: (value) {
- if (value == null)
- return TranslationBase
- .of(context)
- .emptyMessage;
- else
- return null;
- }),
- ),
- SizedBox(
- height: 20,
- ),
- if (progressNoteController.text.isNotEmpty)
- Container(
- margin:
- EdgeInsets.only(left: 5, right: 5, top: 15),
- child: Row(
- mainAxisAlignment:
- MainAxisAlignment.spaceBetween,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Column(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- Column(
- mainAxisAlignment:
- MainAxisAlignment.start,
- crossAxisAlignment:
- CrossAxisAlignment.start,
- children: [
- AppText(
- "12".toUpperCase(),
- fontWeight: FontWeight.bold,
- fontSize: 16,
- ),
- AppText(
- "DEC".toUpperCase(),
- fontSize: 10,
- color: Colors.grey,
- ),
- ],
- )
- ],
- ),
- Column(
- crossAxisAlignment: CrossAxisAlignment
- .start,
- children: [
-
- Row(
- mainAxisAlignment:
- MainAxisAlignment.start,
- children: [
- SizedBox(
- height: 6,
- ),
- Padding(
- padding: const EdgeInsets.all(0.0),
- child: Container(
- width: MediaQuery
- .of(context)
- .size
- .width * 0.6,
- child: AppText(
- progressNoteController.text,
- fontSize: 10,
-
- color: Colors.grey,
- ),
- ),
- ),
- ],
- ), SizedBox(
- height: 8,
- ),
- Row(
- mainAxisAlignment:
- MainAxisAlignment.start,
- children: [
- AppText(
- "Created By : ",
- fontWeight: FontWeight.bold,
- fontSize: 16,
- ),
- AppText(
- "Anas Abdullah on 12 De",
- fontSize: 10,
- color: Colors.grey,
- ),
- ],
- ),
- Row(
- mainAxisAlignment:
- MainAxisAlignment.start,
- children: [
- AppText(
- "Edited By : ",
- fontWeight: FontWeight.bold,
- fontSize: 16,
- ),
- AppText(
- "Rahim on 13 Dec",
- fontSize: 10,
- color: Colors.grey,
- ),
- ],
- ),
-
- ],
- ),
- Column(
- children: [
- InkWell(
- onTap: () {
- openProgressNote(context);
- },
- child: Icon(EvaIcons.edit2Outline),
- )
- ],
- ),
- ],
- ),
- )
- ],
- )
- ]),
- isExpand: isProgressNoteExpand,
- ),
- DividerWithSpacesAround(height: 30,),
- AppButton(
- title: TranslationBase
- .of(context)
- .next,
- loading: model.state == ViewState.BusyLocal,
- onPressed: () {
-
- submitPlan(model);
- // widget.changePageViewIndex(2);
- },
- ),
- SizedBox(
- height: 30,
- ),
- ],
- ),
- ),
- ),
- ),),);
- }
-
- submitPlan(SOAPViewModel model) async {
- if (progressNoteController.text.isNotEmpty) {
- PostProgressNoteRequestModel postProgressNoteRequestModel = new PostProgressNoteRequestModel(
- patientMRN: widget.patientInfo.patientMRN,
- episodeId: widget.patientInfo.episodeNo,
- appointmentNo: widget.patientInfo.appointmentNo,
- planNote: progressNoteController.text);
-
-
- await model.postProgressNote(postProgressNoteRequestModel);
-
- if (model.state == ViewState.ErrorLocal) {
- helpers.showErrorToast(model.error);
- } else {
- Navigator.of(context).pop();
- }
- }
-
- // Navigator.of(context).pop();
- }
-
- openProgressNote(BuildContext context) {
- showModalBottomSheet(
- backgroundColor: Colors.white,
- isScrollControlled: true,
- context: context,
- builder: (context) {
- return FractionallySizedBox(
- heightFactor: 0.5,
- child: Container(
- child: FractionallySizedBox(
- widthFactor: 0.9,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- SizedBox(
- height: 16,
- ),
- AppText(
- "Add Progress Note",
- fontWeight: FontWeight.bold,
- fontSize: 16,
- ),
- SizedBox(
- height: 10,
- ),
- Container(
- margin: EdgeInsets.only(left: 0, right: 0, top: 15),
- child: TextFields(
- hintText: "Add progress note here",
- fontSize: 13.5,
- // hintColor: Colors.black,
- fontWeight: FontWeight.w600,
- maxLines: 16,
- minLines: 8,
- controller: progressNoteController,
- validator: (value) {
- if (value == null)
- return TranslationBase
- .of(context)
- .emptyMessage;
- else
- return null;
- }),
- ),SizedBox(
- height: 10,
- ),
- AppButton(
- title: "Add".toUpperCase(),
- onPressed: () {
- Navigator.of(context).pop();
- },
- ),
- ]),
- )),
- );
- });
- }
-}
diff --git a/lib/widgets/patients/profile/SOAP/subjective/add_allergies_widget.dart b/lib/widgets/patients/profile/SOAP/subjective/add_allergies_widget.dart
deleted file mode 100644
index 43748f3d..00000000
--- a/lib/widgets/patients/profile/SOAP/subjective/add_allergies_widget.dart
+++ /dev/null
@@ -1,339 +0,0 @@
-import 'package:autocomplete_textfield/autocomplete_textfield.dart';
-import 'package:doctor_app_flutter/config/config.dart';
-import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
-import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
-import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
-import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
-import 'package:doctor_app_flutter/models/SOAP/my_selected_allergy.dart';
-import 'package:doctor_app_flutter/screens/base/base_view.dart';
-import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
-import 'package:doctor_app_flutter/widgets/shared/Text.dart';
-import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/dialogs/master_key_dailog.dart';
-import 'package:eva_icons_flutter/eva_icons_flutter.dart';
-import 'package:flutter/material.dart';
-import 'package:font_awesome_flutter/font_awesome_flutter.dart';
-import 'package:provider/provider.dart';
-
-class AddAllergiesWidget extends StatefulWidget {
- final List myAllergiesList;
-
- AddAllergiesWidget({Key key, this.myAllergiesList});
-
- @override
- _AddAllergiesWidgetState createState() => _AddAllergiesWidgetState();
-}
-
-class _AddAllergiesWidgetState extends State {
-
- TextEditingController remarkController = TextEditingController();
-
- @override
- Widget build(BuildContext context) {
- final screenSize = MediaQuery.of(context).size;
-
- return Column(
- children: [
- Container(
- margin: EdgeInsets.only(left: 10, right: 10, top: 15),
- child: TextFields(
- hintText: "Add Allergies",
- fontSize: 13.5,
- onTapTextFields: () {
- openAllergiesList(context);
- },
- readOnly: true,
- suffixIcon: EvaIcons.plusCircleOutline,
- suffixIconColor: AppGlobal.appPrimaryColor,
- fontWeight: FontWeight.w600,
- validator: (value) {
- if (value == null)
- return TranslationBase
- .of(context)
- .emptyMessage;
- else
- return null;
- }),
- ),
- SizedBox(
- height: 20,
- ),
- Container(
- margin:
- EdgeInsets.only(left: 15, right: 15, top: 15),
- child: Column(
- children: widget.myAllergiesList.map((selectedAllergy) {
- return Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Row(
- mainAxisAlignment:
- MainAxisAlignment.spaceBetween,
- children: [
- Texts(selectedAllergy.selectedAllergy.nameEn.toUpperCase(),
- variant: "bodyText", bold: true, color: Colors.black),
- Texts(
- selectedAllergy.selectedAllergySeverity.nameEn
- .toUpperCase(),
- variant: "bodyText",
- bold: true,
- color: AppGlobal.appPrimaryColor),
- InkWell(
- child: Icon(
- FontAwesomeIcons.trash,
- color: Colors.grey,
- size: 20,
- ),
- onTap: () => removeAllergy(selectedAllergy),
- )
- ],
- ),
- SizedBox(
- height: 10,
- ),
- ],
- );
- }).toList()),
- )
- ],
- );
- }
-
- removeAllergy(MySelectedAllergy mySelectedAllergy) {
- Iterable allergy =
- widget.myAllergiesList.where((element) => mySelectedAllergy == element);
-
- if (allergy.length > 0)
- setState(() {
- widget.myAllergiesList.remove(allergy.first);
- });
- }
-
- openAllergiesList(BuildContext context) {
- showModalBottomSheet(
- backgroundColor: Colors.white,
- isScrollControlled: true,
- context: context,
- builder: (context) {
- return AddAllergies(
- addAllergiesFun: (MySelectedAllergy mySelectedAllergy) {
- setState(() {
- widget.myAllergiesList.add(mySelectedAllergy);
- Navigator.of(context).pop();
- });
- },);
- });
- }
-
-}
-
-class AddAllergies extends StatefulWidget {
- final Function addAllergiesFun;
-
- const AddAllergies({Key key, this.addAllergiesFun}) : super(key: key);
-
- @override
- _AddAllergiesState createState() => _AddAllergiesState();
-}
-
-class _AddAllergiesState extends State {
- List allergiesList;
- List allergySeverityList;
- MasterKeyModel _selectedAllergySeverity;
- MasterKeyModel _selectedAllergy;
- TextEditingController remarkController = TextEditingController();
-
-
- InputDecoration textFieldSelectorDecoration(String hintText,
- String selectedText, bool isDropDown,{IconData icon}) {
- return InputDecoration(
- focusedBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- enabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- disabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
- borderRadius: BorderRadius.circular(8),
- ),
- hintText: selectedText != null ? selectedText : hintText,
- suffixIcon: isDropDown ? Icon(icon?? Icons.arrow_drop_down) : null,
- hintStyle: TextStyle(
- fontSize: 14,
- color: Colors.grey.shade600,
- ),
- );
- }
- bool _isShowSearch = false;
- GlobalKey key = new GlobalKey>();
-
- @override
- Widget build(BuildContext context) {
- ProjectViewModel projectViewModel = Provider.of(context);
- final screenSize = MediaQuery
- .of(context)
- .size;
- return FractionallySizedBox(
- heightFactor: 0.7,
- child: BaseView(
- onModelReady: (model) async {
- if (model.allergiesList.length == 0) {
- await model.getMasterLookup(MasterKeysService.Allergies);
- }
- if (model.allergySeverityList.length == 0) {
- await model.getMasterLookup(MasterKeysService.AllergySeverity);
- }
- },
- builder: (_, model, w) =>
- AppScaffold(
- baseViewModel: model,
- isShowAppBar: false,
- body: SingleChildScrollView(
- child: Center(
- child: FractionallySizedBox(
- widthFactor: 0.9,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
-
- SizedBox(
- height: 16,
- ),
- AppText(
- "Add Allergy",
- fontWeight: FontWeight.bold,
- fontSize: 16,
- ),
- SizedBox(
- height: 16,
- ),
- Container(
- height: screenSize.height * 0.070,
- child: InkWell(
- onTap: model.allergiesList != null
- ? () {
- setState(() {
- _selectedAllergy = null;
- });
- }
- : null,
- child: _selectedAllergy==null? AutoCompleteTextField(
- decoration: textFieldSelectorDecoration("Select Allergy", _selectedAllergy != null ? _selectedAllergy.nameEn : null, true,icon: EvaIcons.search),
- itemSubmitted: (item) => setState(() => _selectedAllergy = item),
- key: key,
- suggestions: model.allergiesList,
- itemBuilder: (context, suggestion) => new Padding(
- child:Texts( projectViewModel.isArabic? suggestion.nameAr: suggestion.nameEn),
- padding: EdgeInsets.all(8.0)),
- itemSorter: (a, b) => 1,
- itemFilter: (suggestion, input) =>
- suggestion.nameAr.toLowerCase().startsWith(input.toLowerCase()) ||suggestion.nameEn.toLowerCase().startsWith(input.toLowerCase()),
- ):TextField(
- decoration: textFieldSelectorDecoration("Select Allergy", _selectedAllergy != null ? _selectedAllergy.nameEn : null, true,icon: EvaIcons.search),
- enabled: false,
- ),
- ),
- ),
- SizedBox(
- height: 10,
- ),
- Container(
- height: screenSize.height * 0.070,
- child: InkWell(
- onTap: model.allergySeverityList != null
- ? () {
- MasterKeyDailog dialog = MasterKeyDailog(
- list: model.allergySeverityList,
- okText: TranslationBase
- .of(context)
- .ok,
- okFunction: (selectedValue) {
- setState(() {
- _selectedAllergySeverity =
- selectedValue;
- // model.getDoctorBranch().then((value) {
- // _selectedBranch = value;
- // if (_referTo['id'] == 1) {
- // model.getClinics(
- // _selectedBranch['ID']);
- // }
- // });
- });
- },
- );
- showDialog(
- barrierDismissible: false,
- context: context,
- builder: (BuildContext context) {
- return dialog;
- },
- );
- }
- : null,
- child: TextField(
- decoration: textFieldSelectorDecoration(
- "Select Severity",
- _selectedAllergySeverity != null
- ? _selectedAllergySeverity.nameEn
- : null,
- true),
- enabled: false,
- ),
- ),
- ),
- SizedBox(
- height: 10,
- ),
- Container(
- margin: EdgeInsets.only(
- left: 0, right: 0, top: 15),
- child: TextFields(
- hintText: "Remarks",
- fontSize: 13.5,
- // hintColor: Colors.black,
- fontWeight: FontWeight.w600,
- maxLines: 25,
- minLines: 13,
- controller: remarkController,
- validator: (value) {
- if (value == null)
- return TranslationBase
- .of(context)
- .emptyMessage;
- else
- return null;
- }),
- ), SizedBox(
- height: 10,
- ),
- AppButton(
- title: "Add".toUpperCase(),
- onPressed: () {
- MySelectedAllergy mySelectedAllergy = new MySelectedAllergy(
- remark: remarkController.text,
- selectedAllergy: _selectedAllergy,
- selectedAllergySeverity: _selectedAllergySeverity);
- widget.addAllergiesFun(mySelectedAllergy);
- },
- ),
- ]
-
- ),
- ),
- ),
- )),
- ),
- );
- }
-}
-
-
-
-
-
diff --git a/lib/widgets/patients/profile/SOAP/subjective/add_history_widget.dart b/lib/widgets/patients/profile/SOAP/subjective/add_history_widget.dart
deleted file mode 100644
index 6e7bbe00..00000000
--- a/lib/widgets/patients/profile/SOAP/subjective/add_history_widget.dart
+++ /dev/null
@@ -1,360 +0,0 @@
-import 'package:doctor_app_flutter/config/config.dart';
-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/viewModel/SOAP_view_model.dart';
-import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
-import 'package:doctor_app_flutter/screens/base/base_view.dart';
-import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
-import 'package:doctor_app_flutter/widgets/shared/Text.dart';
-import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart';
-import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
-import 'package:eva_icons_flutter/eva_icons_flutter.dart';
-import 'package:flutter/material.dart';
-import 'package:font_awesome_flutter/font_awesome_flutter.dart';
-import 'package:hexcolor/hexcolor.dart';
-
-import '../../../../shared/master_key_checkbox_search_widget.dart';
-
-class AddHistoryWidget extends StatefulWidget {
- final List myHistoryList;
-
- const AddHistoryWidget({Key key, this.myHistoryList}) : super(key: key);
-
- @override
- _AddHistoryWidgetState createState() => _AddHistoryWidgetState();
-}
-
-class _AddHistoryWidgetState extends State
- with TickerProviderStateMixin {
- PageController _controller;
- int _currentIndex = 0;
-
- changePageViewIndex(pageIndex) {
- _controller.jumpToPage(pageIndex);
- }
-
- @override
- void initState() {
- _controller = new PageController();
-
- super.initState();
- }
-
- @override
- Widget build(BuildContext context) {
- return Column(
- children: [
- Container(
- margin: EdgeInsets.only(left: 10, right: 10, top: 15),
- child: TextFields(
- hintText: "Add History",
- fontSize: 13.5,
- onTapTextFields: () {
- openHistoryList(context);
- },
- readOnly: true,
- // hintColor: Colors.black,
- suffixIcon: EvaIcons.plusCircleOutline,
- suffixIconColor: AppGlobal.appPrimaryColor,
- fontWeight: FontWeight.w600,
- // controller: messageController,
- validator: (value) {
- if (value == null)
- return TranslationBase.of(context)
- .emptyMessage;
- else
- return null;
- }),
- ),
- SizedBox(
- height: 20,
- ),
- Container(
- margin:
- EdgeInsets.only(left: 15, right: 15, top: 15),
- child: Column(
- children: widget.myHistoryList.map((myHistory) {
- return Column(
- children: [
- Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Texts(myHistory.nameEn,
- variant: "bodyText", bold: true, color: Colors.black),
- InkWell(
- child: Icon(
- FontAwesomeIcons.trash,
- color: Colors.grey,
- size: 20,
- ),
- onTap: () => removeHistory(myHistory),
- )
- ],
- ),
- SizedBox(
- height: 20,
- ),
- ],
- );
- }).toList(),
- ),
- )
- ],
- );
- }
-
- removeHistory(MasterKeyModel masterKey) {
- Iterable history = widget.myHistoryList.where((element) =>
- masterKey.id == element.id && masterKey.typeId == element.typeId);
-
- if (history.length > 0)
- setState(() {
- widget.myHistoryList.remove(history.first);
- });
- }
-
- openHistoryList(BuildContext context) {
- showModalBottomSheet(
- backgroundColor: Colors.white,
- isScrollControlled: true,
- context: context,
- builder: (context) {
- return AddHistoryDialog(
- changePageViewIndex: changePageViewIndex,
- controller: _controller,
- myHistoryList: widget.myHistoryList,
- addSelectedHistories: () {
- setState(() {
- Navigator.of(context).pop();
- });
- },
- removeHistory: (masterKey) => removeHistory(masterKey),
- );
- });
- }
-}
-
-class PriorityBar extends StatefulWidget {
- final Function onTap;
-
- const PriorityBar({Key key, this.onTap}) : super(key: key);
-
- @override
- _PriorityBarState createState() => _PriorityBarState();
-}
-
-class _PriorityBarState extends State {
- int _activePriority = 0;
-
- List _priorities = [
- "Family",
- "Surgical/Sports",
- "Medical",
- ];
-
- BoxDecoration containerBorderDecoration(
- Color containerColor, Color borderColor) {
- return BoxDecoration(
- color: containerColor,
- shape: BoxShape.rectangle,
- borderRadius: BorderRadius.all(Radius.circular(6)),
- border: Border.fromBorderSide(BorderSide(
- color: borderColor,
- width: 2.0,
- )),
- );
- }
-
- @override
- Widget build(BuildContext context) {
- final screenSize = MediaQuery.of(context).size;
-
- return Container(
- height: screenSize.height * 0.070,
- decoration:
- containerBorderDecoration(Color(0Xffffffff), Color(0xFFCCCCCC)),
- child: Row(
- mainAxisSize: MainAxisSize.max,
- crossAxisAlignment: CrossAxisAlignment.center,
- children: _priorities.map((item) {
- bool _isActive = _priorities[_activePriority] == item ? true : false;
- return Expanded(
- child: InkWell(
- child: Center(
- child: Container(
- height: screenSize.height * 0.070,
- decoration: containerBorderDecoration(
- _isActive ? HexColor("#B8382B") : Colors.white,
- _isActive ? HexColor("#B8382B") : Colors.white),
- child: Center(
- child: Text(
- item,
- style: TextStyle(
- fontSize: 12,
- color: _isActive
- ? Colors.white
- : Colors.black, //Colors.black,
- fontWeight: FontWeight.bold,
- ),
- ),
- )),
- ),
- onTap: () {
- widget.onTap(_priorities.indexOf(item));
-
- setState(() {
- _activePriority = _priorities.indexOf(item);
- });
- }),
- );
- }).toList(),
- ),
- );
- }
-}
-
-class AddHistoryDialog extends StatefulWidget {
- final Function changePageViewIndex;
- final PageController controller;
- final List myHistoryList;
- final Function addSelectedHistories;
- final Function (MasterKeyModel) removeHistory;
-
- const AddHistoryDialog(
- {Key key, this.changePageViewIndex, this.controller, this.myHistoryList, this.addSelectedHistories, this.removeHistory})
- : super(key: key);
-
- @override
- _AddHistoryDialogState createState() => _AddHistoryDialogState();
-}
-
-class _AddHistoryDialogState extends State {
- @override
- Widget build(BuildContext context) {
- return FractionallySizedBox(
- heightFactor: 0.7,
- child: BaseView(
- onModelReady: (model) async {
- if (model.historyFamilyList.length == 0) {
- await model.getMasterLookup(MasterKeysService.HistoryFamily);
- }
- },
- builder: (_, model, w) => AppScaffold(
- // baseViewModel: model,
- isShowAppBar: false,
- body: Center(
- child: Container(
- child: FractionallySizedBox(
- widthFactor: 0.9,
- child: Column(
- children: [
- SizedBox(
- height: 10,
- ),
- PriorityBar(onTap: (activePriority) async {
- widget.changePageViewIndex(activePriority);
- if(activePriority ==1) {
- if (model.historySurgicalList.length == 0) {
- await model.getMasterLookup(MasterKeysService.HistorySurgical);
- await model.getMasterLookup(MasterKeysService.HistorySports);
- }
- }
- if(activePriority ==2) {
- if (model.historyMedicalList.length == 0) {
- await model.getMasterLookup(MasterKeysService.HistoryMedical);
- }
- }
- }),
- SizedBox(
- height: 20,
- ),
- Expanded(
- child: PageView(
- physics: NeverScrollableScrollPhysics(),
- controller: widget.controller,
- onPageChanged: (index) {
- setState(() {
- // currentIndex = index;
- });
- },
- scrollDirection: Axis.horizontal,
- children: [
- MasterKeyCheckboxSearchWidget(
- model: model,
- masterList: model.historyFamilyList,
- removeHistory: (history){
- setState(() {
- widget.removeHistory(history);
- });
- },
- addHistory: (history){
- setState(() {
- widget.myHistoryList.add(history);
- });
- },
- addSelectedHistories: (){
- widget.addSelectedHistories();
- },
- isServiceSelected: (master) =>isServiceSelected(master),
- ),
- MasterKeyCheckboxSearchWidget(
- model: model,
- masterList: model.mergeHistorySurgicalWithHistorySportList,
- removeHistory: (history){
- setState(() {
- widget.removeHistory(history);
- });
- },
- addHistory: (history){
- setState(() {
- widget.myHistoryList.add(history);
- });
- },
- addSelectedHistories: (){
- widget.addSelectedHistories();
- },
- isServiceSelected: (master) =>isServiceSelected(master),
- ),
- MasterKeyCheckboxSearchWidget(
- model: model,
- masterList: model.historyMedicalList,
- removeHistory: (history){
- setState(() {
- widget.removeHistory(history);
- });
- },
- addHistory: (history){
- setState(() {
- widget.myHistoryList.add(history);
- });
- },
- addSelectedHistories: (){
- widget.addSelectedHistories();
- },
- isServiceSelected: (master) =>isServiceSelected(master),
- ),
- ],
- ),
- ),
- ],
- ),
- )),
- ),
- ),
- ));
- }
-
- bool isServiceSelected(MasterKeyModel masterKey) {
- Iterable history =
- widget.myHistoryList.where((element) => masterKey.id == element.id && masterKey.typeId == element.typeId);
-
- if (history.length > 0) {
- return true;
- }
- return false;
- }
-
-}
diff --git a/lib/widgets/patients/profile/SOAP/subjective/add_medication_widget.dart b/lib/widgets/patients/profile/SOAP/subjective/add_medication_widget.dart
deleted file mode 100644
index 1db7c2e0..00000000
--- a/lib/widgets/patients/profile/SOAP/subjective/add_medication_widget.dart
+++ /dev/null
@@ -1,107 +0,0 @@
-
-import 'package:doctor_app_flutter/config/config.dart';
-import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
-import 'package:doctor_app_flutter/widgets/shared/Text.dart';
-import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
-import 'package:eva_icons_flutter/eva_icons_flutter.dart';
-import 'package:flutter/material.dart';
-import 'package:font_awesome_flutter/font_awesome_flutter.dart';
-
-class AddMedication extends StatefulWidget {
- @override
- _AddMedicationState createState() => _AddMedicationState();
-}
-
-class _AddMedicationState extends State {
- @override
- Widget build(BuildContext context) {
- return Column(
- children: [
- Container(
- margin:
- EdgeInsets.only(left: 10, right: 10, top: 15),
- child: TextFields(
- hintText: "Current Medications",
- fontSize: 13.5,
- onTapTextFields: () {
- openMedicationsList(context);
- },
- readOnly: true,
- // hintColor: Colors.black,
- suffixIcon: EvaIcons.plusCircleOutline,
- suffixIconColor: AppGlobal.appPrimaryColor,
- fontWeight: FontWeight.w600,
- // controller: messageController,
- validator: (value) {
- if (value == null)
- return TranslationBase.of(context)
- .emptyMessage;
- else
- return null;
- }),
- ),
- SizedBox(
- height: 20,
- ),
- Container(
- margin:
- EdgeInsets.only(left: 15, right: 15, top: 15),
- child: Column(
- children: [
- Row(
- mainAxisAlignment:
- MainAxisAlignment.spaceBetween,
- children: [
- Texts('Abdomen Pain',
- variant: "bodyText",
- bold: true,
- color: Colors.black),
- Icon(
- FontAwesomeIcons.trash,
- color: Colors.grey,
- size: 20,
- )
- ],
- ),
- SizedBox(
- height: 20,
- ),
- Row(
- mainAxisAlignment:
- MainAxisAlignment.spaceBetween,
- children: [
- Texts('Back Pain',
- variant: "bodyText",
- bold: true,
- color: Colors.black),
- Icon(
- FontAwesomeIcons.trash,
- color: Colors.grey,
- size: 20,
- )
- ],
- ),
- ],
- ),
- )
- ],
- );
- }
- openMedicationsList(BuildContext context) {
- showModalBottomSheet(
- backgroundColor: Colors.white,
- isScrollControlled: true,
- context: context,
- builder: (context) {
- return FractionallySizedBox(
- heightFactor: 0.7,
- child: Container(
- child: Center(
- child: Texts("dfdfd"),
- )),
- );
- });
- }
-
-}
-
diff --git a/lib/widgets/patients/profile/SOAP/subjective/subjective_page.dart b/lib/widgets/patients/profile/SOAP/subjective/subjective_page.dart
deleted file mode 100644
index 2514c463..00000000
--- a/lib/widgets/patients/profile/SOAP/subjective/subjective_page.dart
+++ /dev/null
@@ -1,402 +0,0 @@
-import 'package:doctor_app_flutter/client/base_app_client.dart';
-import 'package:doctor_app_flutter/config/config.dart';
-import 'package:doctor_app_flutter/core/enum/viewstate.dart';
-import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
-import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
-import 'package:doctor_app_flutter/models/SOAP/my_selected_allergy.dart';
-import 'package:doctor_app_flutter/models/SOAP/post_allergy_request_model.dart';
-import 'package:doctor_app_flutter/models/SOAP/post_chief_complaint_request_model.dart';
-import 'package:doctor_app_flutter/models/SOAP/post_histories_request_model.dart';
-import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
-import 'package:doctor_app_flutter/screens/base/base_view.dart';
-import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
-import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/subjective/add_allergies_widget.dart';
-import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/subjective/add_history_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/Text.dart';
-import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
-import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart';
-import 'package:eva_icons_flutter/eva_icons_flutter.dart';
-import 'package:flutter/material.dart';
-import 'package:font_awesome_flutter/font_awesome_flutter.dart';
-
-class SubjectivePage extends StatefulWidget {
- final Function changePageViewIndex;
- final List myAllergiesList;
- final List myHistoryList;
- final PatiantInformtion patientInfo;
-
- SubjectivePage(
- {Key key,
- this.changePageViewIndex,
- this.myAllergiesList,
- this.myHistoryList,
- this.patientInfo});
-
- @override
- _SubjectivePageState createState() => _SubjectivePageState();
-}
-
-class _SubjectivePageState extends State {
- bool isChiefExpand = false;
- bool isHistoryExpand = false;
- bool isAllergiesExpand = false;
- TextEditingController illnessController = TextEditingController();
- TextEditingController complaintsController = TextEditingController();
- final formKey = GlobalKey();
-
- @override
- Widget build(BuildContext context) {
- return BaseView(
- // onModelReady: (model) => model.getMasterLookup(MasterKeysService.Allergies),
- builder: (_, model, w) => AppScaffold(
- isShowAppBar: false,
- baseViewModel: model,
- body: SingleChildScrollView(
- physics: ScrollPhysics(),
- child: Center(
- child: FractionallySizedBox(
- widthFactor: 0.9,
- child: Column(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- SizedBox(
- height: 30,
- ),
- HeaderBodyExpandableNotifier(
- headerWidget: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Row(
- children: [
- Texts('CHIEF COMPLAINTS',
- variant: isChiefExpand ? "bodyText" : '',
- bold: isChiefExpand ? true : false,
- color: Colors.black),
- Icon(
- FontAwesomeIcons.asterisk,
- color: AppGlobal.appPrimaryColor,
- size: 12,
- )
- ],
- ),
- InkWell(
- onTap: () {
- setState(() {
- isChiefExpand = !isChiefExpand;
- });
- },
- child: Icon(
- isChiefExpand ? EvaIcons.minus : EvaIcons.plus))
- ],
- ),
- bodyWidget: Form(
- key: formKey,
- child: Column(children: [
- SizedBox(
- height: 20,
- ),
- Container(
- margin: EdgeInsets.only(left: 10, right: 10, top: 15),
- child: TextFields(
- hintText: "Add Chief Complaints",
- fontSize: 13.5,
- // hintColor: Colors.black,
- fontWeight: FontWeight.w600,
- maxLines: 25,
- minLines: 13,
- controller: complaintsController,
- validator: (value) {
- if (value == null || value == "")
- return TranslationBase.of(context)
- .emptyMessage;
- else if (value.length < 25)
- return TranslationBase.of(context)
- .chiefComplaintLength;
- //"";
- else
- return null;
- }),
- ),
- SizedBox(
- height: 20,
- ),
- Container(
- margin: EdgeInsets.only(left: 10, right: 10, top: 15),
- child: TextFields(
- hintText: "History of Present Illness",
- fontSize: 13.5,
- // hintColor: Colors.black,
- fontWeight: FontWeight.w600,
- maxLines: 25,
- minLines: 13,
- controller: illnessController,
- validator: (value) {
- if (value == null || value =="")
- return TranslationBase
- .of(context)
- .emptyMessage;
- else
- return null;
- }),
- ),
- SizedBox(
- height: 20,
- ),
- // TODO return it back when we need it.
- // AddMedication(),
- ]),
- ),
- isExpand: isChiefExpand,
- ),
-
- SizedBox(
- height: 30,
- ),
- Container(
- width: double.infinity,
- height: 1,
- color: Color(0xffCCCCCC),
- ),
- SizedBox(
- height: 30,
- ),
- HeaderBodyExpandableNotifier(
- headerWidget: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Row(
- children: [
- Texts('History'.toUpperCase(),
- variant: isHistoryExpand ? "bodyText" : '',
- bold: isHistoryExpand ? true : false,
- color: Colors.black),
- ],
- ),
- InkWell(
- onTap: () {
- setState(() {
- isHistoryExpand = !isHistoryExpand;
- });
- },
- child: Icon(isHistoryExpand
- ? EvaIcons.minus
- : EvaIcons.plus))
- ],
- ),
- bodyWidget: Column(
- children: [
- AddHistoryWidget(myHistoryList: widget.myHistoryList)
- ],
- ),
- isExpand: isHistoryExpand,
- ),
- SizedBox(
- height: 30,
- ),
- Container(
- width: double.infinity,
- height: 1,
- color: Color(0xffCCCCCC),
- ),
- SizedBox(
- height: 30,
- ),
- HeaderBodyExpandableNotifier(
- headerWidget: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Row(
- children: [
- Texts('Allergies'.toUpperCase(),
- variant: isAllergiesExpand ? "bodyText" : '',
- bold: isAllergiesExpand ? true : false,
- color: Colors.black),
- ],
- ),
- InkWell(
- onTap: () {
- setState(() {
- isAllergiesExpand = !isAllergiesExpand;
- });
- },
- child: Icon(isAllergiesExpand
- ? EvaIcons.minus
- : EvaIcons.plus))
- ],
- ),
- bodyWidget: Column(
- children: [
- AddAllergiesWidget(
- myAllergiesList: widget.myAllergiesList,
- ),
- SizedBox(
- height: 30,
- ),
- ],
- ),
- isExpand: isAllergiesExpand,
- ),
- SizedBox(
- height: 30,
- ),
- Container(
- width: double.infinity,
- height: 1,
- color: Color(0xffCCCCCC),
- ),
- SizedBox(
- height: 30,
- ),
- AppButton(
- title: TranslationBase.of(context).next,
- loading: model.state == ViewState.BusyLocal,
- onPressed: () async {
- addSubjectiveInfo(
- model: model,
- myAllergiesList: widget.myAllergiesList,
- myHistoryList: widget.myHistoryList);
- },
- ),
- ],
- ),
- ),
- ),
- ),
- ),
- );
- }
-
- addSubjectiveInfo(
- {SOAPViewModel model,
- List myAllergiesList,
- List myHistoryList}) async {
- formKey.currentState.save();
- formKey.currentState.validate();
-
-
- // if(complaintsController.text.isNotEmpty && illnessController.text.isNotEmpty && complaintsController.text.length>25) {
- // await postChiefComplaint(model: model);
- // if (model.state == ViewState.ErrorLocal) {
- // helpers.showErrorToast(model.error);
- // } else {
- // if (myHistoryList.length != 0) {
- // await postHistories(model: model, myHistoryList: myHistoryList);
- // if (model.state == ViewState.ErrorLocal) {
- // helpers.showErrorToast(model.error);
- // } else {
- // if (myAllergiesList.length != 0) {
- // await postAllergy(myAllergiesList: myAllergiesList, model: model);
- // if (model.state == ViewState.ErrorLocal) {
- // helpers.showErrorToast(model.error);
- // } else {
- // widget.changePageViewIndex(1);
- // }
- // } else {
- // widget.changePageViewIndex(1);
- //
- // }
- //
- // }
- // } else {
- // if (myAllergiesList.length != 0) {
- // await postAllergy(myAllergiesList: myAllergiesList, model: model);
- // if (model.state == ViewState.ErrorLocal) {
- // helpers.showErrorToast(model.error);
- // } else {
- // widget.changePageViewIndex(1);
- // }
- // } else {
- // widget.changePageViewIndex(1);
- // }
- // }
- // }
- // } else {
- // helpers.showErrorToast('Please add required field correctly');
- // }
-
- widget.changePageViewIndex(1);
-
- }
-
- postAllergy(
- {List myAllergiesList, SOAPViewModel model}) async {
- PostAllergyRequestModel postAllergyRequestModel =
- new PostAllergyRequestModel();
- widget.myAllergiesList.forEach((allergy) {
- if (postAllergyRequestModel.listHisProgNotePatientAllergyDiseaseVM ==
- null)
- postAllergyRequestModel.listHisProgNotePatientAllergyDiseaseVM = [];
- //TODO: make static value dynamic
- postAllergyRequestModel.listHisProgNotePatientAllergyDiseaseVM
- .add(ListHisProgNotePatientAllergyDiseaseVM(
- allergyDiseaseId: allergy.selectedAllergy.id,
- allergyDiseaseType: allergy.selectedAllergy.typeId,
- patientMRN: widget.patientInfo.patientMRN,
- episodeId: widget.patientInfo.episodeNo,
- appointmentNo: widget.patientInfo.appointmentNo,
- severity: allergy.selectedAllergySeverity.id,
- remarks: allergy.remark,
- createdBy: 4709,
- //
- createdOn: DateTime.now()
- .toIso8601String(), //"2020-08-14T20:37:22.780Z",
- editedBy: 4709,
- editedOn: DateTime.now()
- .toIso8601String(), //"2020-08-14T20:37:22.780Z",
- isChecked: false,
- isUpdatedByNurse: false));
- });
- await model.postAllergy(postAllergyRequestModel);
-
- if (model.state == ViewState.ErrorLocal) {
- helpers.showErrorToast(model.error);
- }
- }
-
- postHistories(
- {List myHistoryList, SOAPViewModel model}) async {
- PostHistoriesRequestModel postHistoriesRequestModel =
- new PostHistoriesRequestModel();
- widget.myHistoryList.forEach((history) {
- if (postHistoriesRequestModel.listMedicalHistoryVM == null)
- postHistoriesRequestModel.listMedicalHistoryVM = [];
- //TODO: make static value dynamic
- postHistoriesRequestModel.listMedicalHistoryVM.add(ListMedicalHistoryVM(
- patientMRN: widget.patientInfo.patientMRN,
- episodeId: widget.patientInfo.episodeNo,
- appointmentNo: widget.patientInfo.appointmentNo,
- remarks: "",
- historyId: history.id,
- historyType: history.typeId,
- isChecked: false,
- ));
- });
- await model.postHistories(postHistoriesRequestModel);
-
- if (model.state == ViewState.ErrorLocal) {
- helpers.showErrorToast(model.error);
- }
- }
-
- postChiefComplaint({SOAPViewModel model}) async {
- formKey.currentState.save();
- if (formKey.currentState.validate()) {
- PostChiefComplaintRequestModel postChiefComplaintRequestModel =
- //TODO: make static value dynamic
- new PostChiefComplaintRequestModel(
- patientMRN: widget.patientInfo.patientMRN,
- episodeID: widget.patientInfo.episodeNo,
- appointmentNo: widget.patientInfo.appointmentNo,
- chiefComplaint: complaintsController.text,
- currentMedication: " currentMedication ",
- hopi: illnessController.text,
- isLactation: false,
- ispregnant: false,
- numberOfWeeks: 22);
-
- await model.postChiefComplaint(postChiefComplaintRequestModel);
- }
- }
-}
diff --git a/lib/widgets/patients/profile/patient_profile_widget.dart b/lib/widgets/patients/profile/patient_profile_widget.dart
index 792eb49e..f50c7669 100644
--- a/lib/widgets/patients/profile/patient_profile_widget.dart
+++ b/lib/widgets/patients/profile/patient_profile_widget.dart
@@ -22,6 +22,7 @@ class PatientProfileWidget extends StatelessWidget {
Widget build(BuildContext context) {
final routeArgs = ModalRoute.of(context).settings.arguments as Map;
patient = routeArgs['patient'];
+ String patientType = routeArgs['patientType'];
return Container(
color: Color(0XFFF2F2F2),
@@ -437,7 +438,7 @@ class PatientProfileWidget extends StatelessWidget {
SliverPadding(
padding: const EdgeInsets.all(16.0),
sliver: ProfileMedicalInfoWidget(
- patient: patient,
+ patient: patient, patientType:patientType
))
]),
);
diff --git a/lib/widgets/patients/profile/profile_medical_info_widget.dart b/lib/widgets/patients/profile/profile_medical_info_widget.dart
index a634a9f1..016b5972 100644
--- a/lib/widgets/patients/profile/profile_medical_info_widget.dart
+++ b/lib/widgets/patients/profile/profile_medical_info_widget.dart
@@ -18,8 +18,9 @@ import 'PatientProfileButton.dart';
*@desc: Profile Medical Info Widget
*/
class ProfileMedicalInfoWidget extends StatelessWidget {
- ProfileMedicalInfoWidget({Key key, this.patient}) : super(key: key);
+ ProfileMedicalInfoWidget({Key key, this.patient, this.patientType});
PatiantInformtion patient;
+ String patientType;
@override
Widget build(BuildContext context) {
return SliverGrid.count(
@@ -28,20 +29,22 @@ class ProfileMedicalInfoWidget extends StatelessWidget {
crossAxisCount: 2,
childAspectRatio: 1.5,
children: [
+ if(int.parse(patientType) ==7)
PatientProfileButton(
key: key,
patient: patient,
- nameLine1: "Create New",
- nameLine2: "Episode",
+ nameLine1: TranslationBase.of(context).createNew,
+ nameLine2: TranslationBase.of(context).episode,
route: CREATE_EPISODE,
- icon: 'heartbeat.png'),
+ icon: 'create-episod.png'),
+ if(int.parse(patientType) ==7)
PatientProfileButton(
key: key,
patient: patient,
- nameLine1: "Update",
- nameLine2: "Episode",
+ nameLine1: TranslationBase.of(context).update,
+ nameLine2: TranslationBase.of(context).episode,
route: UPDATE_EPISODE,
- icon: 'heartbeat.png'),
+ icon: 'modilfy-episode.png'),
Visibility(
visible: selectedPatientType == 6 || selectedPatientType == 7,
child: PatientProfileButton(
diff --git a/lib/widgets/patients/profile/soap_update/steps_widget.dart b/lib/widgets/patients/profile/soap_update/steps_widget.dart
index d67d94e3..56f3435e 100644
--- a/lib/widgets/patients/profile/soap_update/steps_widget.dart
+++ b/lib/widgets/patients/profile/soap_update/steps_widget.dart
@@ -295,7 +295,7 @@ class StepsWidget extends StatelessWidget {
height: index == 0 ? 5 : 10,
),
AppText(
- "SUBJECTIVE",
+ "شخصي",
fontWeight: FontWeight.bold,
fontSize: 16,
),
@@ -345,7 +345,7 @@ class StepsWidget extends StatelessWidget {
height: index == 1 ? 5 : 10,
),
AppText(
- "OBJECTIVE",
+ "هدف",
fontWeight: FontWeight.bold,
fontSize: 14,
),
@@ -398,7 +398,7 @@ class StepsWidget extends StatelessWidget {
padding: const EdgeInsets.only(right: 2),
child: AppText(
- "ASSESSMENT",
+ "تقدير",
fontWeight: FontWeight.bold,
fontSize: 14,
),
@@ -451,7 +451,7 @@ class StepsWidget extends StatelessWidget {
Container(
margin: EdgeInsets.only(right:index == 3? 15:0),
child: AppText(
- "PLAN",
+ "خطة",
fontWeight: FontWeight.bold,
fontSize: 14,
),
diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart b/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart
index 77173034..43f7bcdd 100644
--- a/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart
+++ b/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart
@@ -32,14 +32,14 @@ class _UpdateAllergiesWidgetState extends State {
@override
Widget build(BuildContext context) {
- final screenSize = MediaQuery.of(context).size;
+ ProjectViewModel projectViewModel = Provider.of(context);
return Column(
children: [
Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
- hintText: "Add Allergies",
+ hintText: TranslationBase.of(context).addAllergies,
fontSize: 13.5,
onTapTextFields: () {
openAllergiesList(context);
@@ -66,14 +66,26 @@ class _UpdateAllergiesWidgetState extends State {
children: widget.myAllergiesList.map((selectedAllergy) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
- children: [
+ mainAxisAlignment: MainAxisAlignment.start,children: [
Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Texts(selectedAllergy.selectedAllergy.nameEn.toUpperCase(),
- variant: "bodyText", bold: true, color: Colors.black),
+ Container(
+
+ child: Expanded(
+ child: Texts(projectViewModel.isArabic ? selectedAllergy
+ .selectedAllergy.nameAr : selectedAllergy
+ .selectedAllergy.nameEn.toUpperCase(),
+ variant: "bodyText",
+ bold: true,
+ color: Colors.black),
+ ),
+ width: MediaQuery.of(context).size.width * 0.5,
+ ),
Texts(
- selectedAllergy.selectedAllergySeverity.nameEn
+ projectViewModel.isArabic ? selectedAllergy
+ .selectedAllergySeverity.nameAr : selectedAllergy
+ .selectedAllergySeverity.nameEn
.toUpperCase(),
variant: "bodyText",
bold: true,
@@ -118,13 +130,19 @@ class _UpdateAllergiesWidgetState extends State {
return AddAllergies(
addAllergiesFun: (MySelectedAllergy mySelectedAllergy) {
setState(() {
- widget.myAllergiesList.add(mySelectedAllergy);
- Navigator.of(context).pop();
+ if (!widget.myAllergiesList.contains(mySelectedAllergy)) {
+ widget.myAllergiesList.add(mySelectedAllergy);
+ Navigator.of(context).pop();
+ } else {
+ helpers.showErrorToast(TranslationBase
+ .of(context)
+ .itemExist);
+ }
});
- },
- );
+ },);
});
}
+
}
class AddAllergies extends StatefulWidget {
@@ -172,7 +190,9 @@ class _AddAllergiesState extends State {
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
- final screenSize = MediaQuery.of(context).size;
+ final screenSize = MediaQuery
+ .of(context)
+ .size;
return FractionallySizedBox(
heightFactor: 0.7,
child: BaseView(
@@ -198,7 +218,9 @@ class _AddAllergiesState extends State {
height: 16,
),
AppText(
- "Add Allergy",
+ TranslationBase
+ .of(context)
+ .addAllergies,
fontWeight: FontWeight.bold,
fontSize: 16,
),
@@ -218,7 +240,9 @@ class _AddAllergiesState extends State {
child: _selectedAllergy == null
? AutoCompleteTextField(
decoration: textFieldSelectorDecoration(
- "Select Allergy",
+ TranslationBase
+ .of(context)
+ .selectAllergy,
_selectedAllergy != null
? _selectedAllergy.nameEn
: null,
@@ -246,9 +270,11 @@ class _AddAllergiesState extends State {
)
: TextField(
decoration: textFieldSelectorDecoration(
- "Select Allergy",
+ TranslationBase
+ .of(context)
+ .selectAllergy,
_selectedAllergy != null
- ? _selectedAllergy.nameEn
+ ? projectViewModel.isArabic?_selectedAllergy.nameAr: _selectedAllergy.nameEn
: null,
true,
icon: EvaIcons.search),
@@ -271,13 +297,7 @@ class _AddAllergiesState extends State {
setState(() {
_selectedAllergySeverity =
selectedValue;
- // model.getDoctorBranch().then((value) {
- // _selectedBranch = value;
- // if (_referTo['id'] == 1) {
- // model.getClinics(
- // _selectedBranch['ID']);
- // }
- // });
+
});
},
);
@@ -292,9 +312,11 @@ class _AddAllergiesState extends State {
: null,
child: TextField(
decoration: textFieldSelectorDecoration(
- "Select Severity",
+ TranslationBase
+ .of(context)
+ .selectSeverity,
_selectedAllergySeverity != null
- ? _selectedAllergySeverity.nameEn
+ ? projectViewModel.isArabic?_selectedAllergySeverity.nameAr:_selectedAllergySeverity.nameEn
: null,
true),
enabled: false,
@@ -307,12 +329,12 @@ class _AddAllergiesState extends State {
Container(
margin: EdgeInsets.only(left: 0, right: 0, top: 15),
child: TextFields(
- hintText: "Remarks",
+ hintText: TranslationBase.of(context).remarks,
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 25,
- minLines: 13,
+ minLines: 10,
controller: remarkController,
validator: (value) {
if (value == null)
diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_history_widget.dart b/lib/widgets/patients/profile/soap_update/subjective/update_history_widget.dart
index 5e033127..ebed11ca 100644
--- a/lib/widgets/patients/profile/soap_update/subjective/update_history_widget.dart
+++ b/lib/widgets/patients/profile/soap_update/subjective/update_history_widget.dart
@@ -2,6 +2,7 @@ import 'package:doctor_app_flutter/config/config.dart';
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/viewModel/SOAP_view_model.dart';
+import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
@@ -16,6 +17,7 @@ import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:hexcolor/hexcolor.dart';
+import 'package:provider/provider.dart';
class UpdateHistoryWidget extends StatefulWidget {
final List myHistoryList;
@@ -44,12 +46,13 @@ class _UpdateHistoryWidgetState extends State
@override
Widget build(BuildContext context) {
+ ProjectViewModel projectViewModel = Provider.of(context);
return Column(
children: [
Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
- hintText: "Add History",
+ hintText: TranslationBase.of(context).addHistory,
fontSize: 13.5,
onTapTextFields: () {
openHistoryList(context);
@@ -81,8 +84,13 @@ class _UpdateHistoryWidgetState extends State
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
- Texts(myHistory.nameEn,
- variant: "bodyText", bold: true, color: Colors.black),
+ Container(
+ child: Expanded(
+ child: Texts(projectViewModel.isArabic?myHistory.nameAr:myHistory.nameEn,
+ variant: "bodyText", bold: true, color: Colors.black),
+ ),
+ width: MediaQuery.of(context).size.width * 0.7,
+ ),
InkWell(
child: Icon(
FontAwesomeIcons.trash,
@@ -147,12 +155,17 @@ class PriorityBar extends StatefulWidget {
class _PriorityBarState extends State {
int _activePriority = 0;
-
+ int index =-1;
List _priorities = [
"Family",
"Surgical/Sports",
"Medical",
];
+ List _prioritiesAr = [
+ "أسرة",
+ "جراحي / رياضي" ,
+ "طبي",
+ ];
BoxDecoration containerBorderDecoration(
Color containerColor, Color borderColor) {
@@ -170,6 +183,7 @@ class _PriorityBarState extends State {
@override
Widget build(BuildContext context) {
final screenSize = MediaQuery.of(context).size;
+ ProjectViewModel projectViewModel = Provider.of(context);
return Container(
height: screenSize.height * 0.070,
@@ -178,8 +192,9 @@ class _PriorityBarState extends State {
child: Row(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
- children: _priorities.map((item) {
+ children: _priorities.map((item,) {
bool _isActive = _priorities[_activePriority] == item ? true : false;
+ index++;
return Expanded(
child: InkWell(
child: Center(
@@ -190,7 +205,7 @@ class _PriorityBarState extends State {
_isActive ? HexColor("#B8382B") : Colors.white),
child: Center(
child: Text(
- item,
+ (projectViewModel.isArabic)?_prioritiesAr[index]: item,
style: TextStyle(
fontSize: 12,
color: _isActive
diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart
index d9828795..98d1b7d0 100644
--- a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart
+++ b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart
@@ -24,7 +24,6 @@ import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
-import 'package:html/parser.dart';
class UpdateSubjectivePage extends StatefulWidget {
final Function changePageViewIndex;
@@ -52,10 +51,21 @@ class _UpdateSubjectivePageState extends State {
final formKey = GlobalKey();
getHistory(SOAPViewModel model) async{
GetHistoryReqModel getHistoryReqModel = GetHistoryReqModel(
- patientMRN: widget.patientInfo.patientMRN,
- episodeID: widget.patientInfo.episodeNo.toString(),
- appointmentNo: widget.patientInfo.appointmentNo
- );
+ patientMRN: widget.patientInfo.patientMRN,
+ episodeID: widget.patientInfo.episodeNo.toString(),
+ appointmentNo: widget.patientInfo.appointmentNo);
+
+ getHistoryReqModel.historyType =
+ MasterKeysService.HistoryFamily.getMasterKeyService();
+ await model.getPatientHistories(getHistoryReqModel, isFirst: true);
+ getHistoryReqModel.historyType =
+ MasterKeysService.HistoryMedical.getMasterKeyService();
+ await model.getPatientHistories(getHistoryReqModel);
+ getHistoryReqModel.historyType =
+ MasterKeysService.HistorySurgical.getMasterKeyService();
+ await model.getPatientHistories(getHistoryReqModel);
+ getHistoryReqModel.historyType =
+ MasterKeysService.HistorySports.getMasterKeyService();
await model.getPatientHistories(getHistoryReqModel);
if (model.patientHistoryList.isNotEmpty) {
@@ -67,32 +77,51 @@ class _UpdateSubjectivePageState extends State {
}
if (model.historySurgicalList.length == 0) {
await model.getMasterLookup(MasterKeysService.HistorySurgical);
+ }
+ if (model.historySportList.length == 0) {
await model.getMasterLookup(MasterKeysService.HistorySports);
}
model.patientHistoryList.forEach((element) {
- if (element.historyType == MasterKeysService.HistoryFamily.getMasterKeyService()) {
- widget.myHistoryList.add( model.getOneMasterKey(
+ if (element.historyType ==
+ MasterKeysService.HistoryFamily.getMasterKeyService()) {
+ MasterKeyModel history = model.getOneMasterKey(
masterKeys: MasterKeysService.HistoryFamily,
id: element.historyId,
- ));
- }if (element.historyType == MasterKeysService.HistoryMedical.getMasterKeyService()) {
- widget.myHistoryList.add( model.getOneMasterKey(
+ );
+ if (history != null) {
+ widget.myHistoryList.add(history);
+ }
+ }
+ if (element.historyType ==
+ MasterKeysService.HistoryMedical.getMasterKeyService()) {
+ MasterKeyModel history = model.getOneMasterKey(
masterKeys: MasterKeysService.HistoryMedical,
id: element.historyId,
- ));
- }if (element.historyType == MasterKeysService.HistorySports.getMasterKeyService()) {
- widget.myHistoryList.add( model.getOneMasterKey(
+ );
+ if (history != null) {
+ widget.myHistoryList.add(history);
+ }
+ }
+ if (element.historyType ==
+ MasterKeysService.HistorySports.getMasterKeyService()) {
+ MasterKeyModel history = model.getOneMasterKey(
masterKeys: MasterKeysService.HistorySports,
id: element.historyId,
- ));
+ );
+ if (history != null) {
+ widget.myHistoryList.add(history);
+ }
}
if (element.historyType ==
MasterKeysService.HistorySurgical.getMasterKeyService()) {
- widget.myHistoryList.add(model.getOneMasterKey(
+ MasterKeyModel history = model.getOneMasterKey(
masterKeys: MasterKeysService.HistorySurgical,
id: element.historyId,
- ));
+ );
+ if (history != null) {
+ widget.myHistoryList.add(history);
+ }
}
});
}
@@ -137,8 +166,8 @@ class _UpdateSubjectivePageState extends State {
MySelectedAllergy mySelectedAllergy = MySelectedAllergy(
selectedAllergy: selectedAllergy,
selectedAllergySeverity: selectedAllergySeverity);
-
- widget.myAllergiesList.add(mySelectedAllergy);
+ if (selectedAllergy != null && selectedAllergySeverity != null)
+ widget.myAllergiesList.add(mySelectedAllergy);
});
}
@@ -165,7 +194,7 @@ class _UpdateSubjectivePageState extends State {
children: [
Row(
children: [
- Texts('CHIEF COMPLAINTS',
+ Texts(TranslationBase.of(context).chiefComplaints.toUpperCase(),
variant: isChiefExpand ? "bodyText" : '',
bold: isChiefExpand ? true : false,
color: Colors.black),
@@ -195,7 +224,9 @@ class _UpdateSubjectivePageState extends State {
Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
- hintText: "Add Chief Complaints",
+ hintText: TranslationBase
+ .of(context)
+ .addChiefComplaints,
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
@@ -203,7 +234,7 @@ class _UpdateSubjectivePageState extends State {
minLines: 13,
controller: complaintsController,
validator: (value) {
- if (value == null || value =="")
+ if (value == null || value == "")
return TranslationBase
.of(context)
.emptyMessage;
@@ -211,7 +242,7 @@ class _UpdateSubjectivePageState extends State {
return TranslationBase
.of(context)
.chiefComplaintLength;
- //"";
+ //"";
else
return null;
}),
@@ -222,7 +253,9 @@ class _UpdateSubjectivePageState extends State {
Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
- hintText: "History of Present Illness",
+ hintText: TranslationBase
+ .of(context)
+ .historyOfPresentIllness,
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
@@ -230,7 +263,7 @@ class _UpdateSubjectivePageState extends State {
minLines: 13,
controller: illnessController,
validator: (value) {
- if (value == null || value =="")
+ if (value == null || value == "")
return TranslationBase
.of(context)
.emptyMessage;
@@ -265,7 +298,10 @@ class _UpdateSubjectivePageState extends State {
children: [
Row(
children: [
- Texts('History'.toUpperCase(),
+ Texts(TranslationBase
+ .of(context)
+ .histories
+ .toUpperCase(),
variant: isHistoryExpand ? "bodyText" : '',
bold: isHistoryExpand ? true : false,
color: Colors.black),
@@ -306,7 +342,10 @@ class _UpdateSubjectivePageState extends State {
children: [
Row(
children: [
- Texts('Allergies'.toUpperCase(),
+ Texts(TranslationBase
+ .of(context)
+ .allergiesSoap
+ .toUpperCase(),
variant: isAllergiesExpand ? "bodyText" : '',
bold: isAllergiesExpand ? true : false,
color: Colors.black),
@@ -396,7 +435,9 @@ class _UpdateSubjectivePageState extends State {
widget.changePageViewIndex(1);
} else {
- helpers.showErrorToast('Please add required field correctly');
+ helpers.showErrorToast(TranslationBase
+ .of(context)
+ .requiredMsg);
}
@@ -414,7 +455,7 @@ class _UpdateSubjectivePageState extends State {
postAllergyRequestModel.listHisProgNotePatientAllergyDiseaseVM
.add(ListHisProgNotePatientAllergyDiseaseVM(
allergyDiseaseId: allergy.selectedAllergy.id,
- allergyDiseaseType: allergy.selectedAllergy.id,
+ allergyDiseaseType: allergy.selectedAllergy.typeId,
patientMRN: widget.patientInfo.patientMRN,
episodeId: widget.patientInfo.episodeNo,
appointmentNo: widget.patientInfo.appointmentNo,
diff --git a/lib/widgets/patients/profile/soap_update/update_assessment_page.dart b/lib/widgets/patients/profile/soap_update/update_assessment_page.dart
index c25b0d5b..3eec290c 100644
--- a/lib/widgets/patients/profile/soap_update/update_assessment_page.dart
+++ b/lib/widgets/patients/profile/soap_update/update_assessment_page.dart
@@ -130,6 +130,7 @@ class _UpdateAssessmentPageState extends State {
),
Column(
children: [
+ if(model.patientAssessmentList.isEmpty)
Container(
margin:
EdgeInsets.only(left: 5, right: 5, top: 15),
@@ -277,10 +278,13 @@ class _UpdateAssessmentPageState extends State {
SizedBox(
height: 6,
),
- AppText(
- widget.mySelectedAssessment.remark??"",
- fontSize: 10,
- color: Colors.grey,
+ Container(
+ width: MediaQuery.of(context).size.width * 0.5,
+ child: AppText(
+ widget.mySelectedAssessment.remark??"",
+ fontSize: 10,
+ color: Colors.grey,
+ ),
),
],
),
@@ -298,10 +302,12 @@ class _UpdateAssessmentPageState extends State {
fontWeight: FontWeight.bold,
fontSize: 16,
),
- AppText(
- widget.mySelectedAssessment.selectedICD.code.toUpperCase()??"",
- fontSize: 10,
- color: Colors.grey,
+ Container(
+ child: AppText(
+ widget.mySelectedAssessment.selectedICD.code.trim().toUpperCase()??"",
+ fontSize: 10,
+ color: Colors.grey,
+ ),
),
],
)
@@ -396,7 +402,7 @@ class _UpdateAssessmentPageState extends State {
widget.changePageViewIndex(3);
}
} else {
- helpers.showErrorToast('Please add required field correctly');
+ helpers.showErrorToast(TranslationBase.of(context).requiredMsg);
}
widget.changePageViewIndex(3);
@@ -659,7 +665,7 @@ class _AddAssessmentDetailsState extends State {
margin: EdgeInsets.only(
left: 0, right: 0, top: 15),
child: TextFields(
- hintText: "Remarks",
+ hintText: TranslationBase.of(context).remarks,
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
diff --git a/lib/widgets/patients/profile/soap_update/update_objective_page.dart b/lib/widgets/patients/profile/soap_update/update_objective_page.dart
index 2a342542..e3aef3f4 100644
--- a/lib/widgets/patients/profile/soap_update/update_objective_page.dart
+++ b/lib/widgets/patients/profile/soap_update/update_objective_page.dart
@@ -304,14 +304,14 @@ class _UpdateObjectivePageState extends State {
),
Container(
margin: EdgeInsets.only(
- left: 10, right: 10, top: 15),
+ left: 0, right: 0, top: 15),
child: TextFields(
- hintText: "Remarks",
+ hintText: TranslationBase.of(context).remarks,
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 25,
- minLines: 13,
+ minLines: 4,
controller: remarksController,
validator: (value) {
if (value == null)
@@ -390,7 +390,7 @@ class _UpdateObjectivePageState extends State {
widget.changePageViewIndex(2);
}
} else {
- helpers.showErrorToast('Please add required field correctly');
+ helpers.showErrorToast(TranslationBase.of(context).requiredMsg);
}
widget.changePageViewIndex(2);
diff --git a/lib/widgets/patients/profile/soap_update/update_plan_page.dart b/lib/widgets/patients/profile/soap_update/update_plan_page.dart
index d5ad12e9..9c851cd5 100644
--- a/lib/widgets/patients/profile/soap_update/update_plan_page.dart
+++ b/lib/widgets/patients/profile/soap_update/update_plan_page.dart
@@ -115,6 +115,7 @@ class _UpdatePlanPageState extends State {
),
Column(
children: [
+ if(model.patientProgressNoteList.isEmpty)
Container(
margin:
EdgeInsets.only(left: 10, right: 10, top: 15),
diff --git a/lib/widgets/patients/profile/soap_update/update_soap_index.dart b/lib/widgets/patients/profile/soap_update/update_soap_index.dart
index 9e5dd82b..fee067f4 100644
--- a/lib/widgets/patients/profile/soap_update/update_soap_index.dart
+++ b/lib/widgets/patients/profile/soap_update/update_soap_index.dart
@@ -6,11 +6,7 @@ import 'package:doctor_app_flutter/models/SOAP/my_selected_examination.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
-import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/assessment_page.dart';
-import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/objective_page.dart';
-import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/plan_page.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/steps_widget.dart';
-import 'package:doctor_app_flutter/widgets/patients/profile/SOAP/subjective/subjective_page.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/update_assessment_page.dart';
diff --git a/lib/widgets/shared/app_drawer_widget.dart b/lib/widgets/shared/app_drawer_widget.dart
index 4ff72904..808e09dc 100644
--- a/lib/widgets/shared/app_drawer_widget.dart
+++ b/lib/widgets/shared/app_drawer_widget.dart
@@ -35,9 +35,6 @@ class _AppDrawerState extends State {
// _isInit = false;
// }
-
-
-
@override
Widget build(BuildContext context) {
AuthViewModel authProvider = Provider.of(context);
@@ -68,20 +65,24 @@ class _AppDrawerState extends State {
),
),
SizedBox(height: 15),
- CircleAvatar(
- radius: SizeConfig.imageSizeMultiplier * 12,
- backgroundImage:
- NetworkImage(authProvider.doctorProfile.doctorImageURL),
- backgroundColor: Colors.white,
- ),
- Padding(
- padding: EdgeInsets.only(top: 10),
- child: AppText(
- authProvider.doctorProfile?.doctorName,
- fontWeight: FontWeight.bold,
- color: Colors.black,
- fontSize: SizeConfig.textMultiplier * 2,
- )),
+ authProvider.doctorProfile != null
+ ? CircleAvatar(
+ radius: SizeConfig.imageSizeMultiplier * 12,
+ backgroundImage: NetworkImage(
+ authProvider.doctorProfile.doctorImageURL),
+ backgroundColor: Colors.white,
+ )
+ : SizedBox(),
+ authProvider.doctorProfile != null
+ ? Padding(
+ padding: EdgeInsets.only(top: 10),
+ child: AppText(
+ authProvider.doctorProfile?.doctorName,
+ fontWeight: FontWeight.bold,
+ color: Colors.black,
+ fontSize: SizeConfig.textMultiplier * 2,
+ ))
+ : SizedBox(),
AppText(
"Director of medical records", //TODO: Make The Dr Title Dynamic and check overflow issue.
fontWeight: FontWeight.normal,
@@ -121,7 +122,9 @@ class _AppDrawerState extends State {
),
InkWell(
child: DrawerItem(
- TranslationBase.of(context).qr+ TranslationBase.of(context).reader, DoctorApp.qr_code),
+ TranslationBase.of(context).qr +
+ TranslationBase.of(context).reader,
+ DoctorApp.qr_code),
onTap: () {
Navigator.pop(context);
Navigator.of(context).pushNamed(QR_READER);
diff --git a/lib/widgets/shared/dialogs/master_key_dailog.dart b/lib/widgets/shared/dialogs/master_key_dailog.dart
index a3be364b..55046c3c 100644
--- a/lib/widgets/shared/dialogs/master_key_dailog.dart
+++ b/lib/widgets/shared/dialogs/master_key_dailog.dart
@@ -1,6 +1,8 @@
+import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:flutter/material.dart';
+import 'package:provider/provider.dart';
// ignore: must_be_immutable
class MasterKeyDailog extends StatefulWidget {
@@ -30,10 +32,11 @@ class _MasterKeyDailogState extends State {
@override
Widget build(BuildContext context) {
- return showAlertDialog(context);
+ ProjectViewModel projectViewModel = Provider.of(context);
+ return showAlertDialog(context, projectViewModel);
}
- showAlertDialog(BuildContext context) {
+ showAlertDialog(BuildContext context, ProjectViewModel projectViewModel) {
// set up the buttons
Widget cancelButton = FlatButton(
child: Text(TranslationBase.of(context).cancel),
@@ -49,7 +52,7 @@ class _MasterKeyDailogState extends State {
// set up the AlertDialog
AlertDialog alert = AlertDialog(
// title: Text(widget.title),
- content: createDialogList(),
+ content: createDialogList(projectViewModel),
actions: [
cancelButton,
continueButton,
@@ -58,7 +61,7 @@ class _MasterKeyDailogState extends State {
return alert;
}
- Widget createDialogList() {
+ Widget createDialogList(ProjectViewModel projectViewModel) {
return Container(
height: MediaQuery.of(context).size.height * 0.5,
child: SingleChildScrollView(
@@ -67,7 +70,7 @@ class _MasterKeyDailogState extends State {
...widget.list
.map((item) => RadioListTile(
title: Text(
- '${item.nameEn}' + (widget.isICD ? '/${item.code}' : '')),
+ '${projectViewModel.isArabic?item.nameAr:item.nameEn}' + (widget.isICD ? '/${item.code}' : '')),
groupValue: widget.isICD
? widget.selectedValue.code.toString()
: widget.selectedValue.id.toString(),
diff --git a/lib/widgets/shared/master_key_checkbox_search_widget.dart b/lib/widgets/shared/master_key_checkbox_search_widget.dart
index f164be4b..aafb8adc 100644
--- a/lib/widgets/shared/master_key_checkbox_search_widget.dart
+++ b/lib/widgets/shared/master_key_checkbox_search_widget.dart
@@ -1,6 +1,8 @@
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
+import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
+import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
@@ -9,6 +11,7 @@ import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
+import 'package:provider/provider.dart';
class MasterKeyCheckboxSearchWidget extends StatefulWidget {
final SOAPViewModel model;
@@ -45,6 +48,8 @@ class _MasterKeyCheckboxSearchWidgetState extends State=2.10.0 <=2.11.0-213.1.beta"
+ dart: ">=2.10.0 <2.11.0"
flutter: ">=1.22.0 <2.0.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 91283a89..57ed4cbb 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -62,6 +62,7 @@ dependencies:
#Autocomplete TextField
autocomplete_textfield: ^1.7.3
+ date_time_picker: ^1.1.1
# Html
html: ^0.14.0+4