From bf9ce4694f978ab44b7fda532e8a10b1f07e2087 Mon Sep 17 00:00:00 2001 From: mosazaid Date: Thu, 22 Apr 2021 23:21:43 +0300 Subject: [PATCH 1/9] fix logic --- lib/core/service/labs_service.dart | 10 ++++---- lib/core/viewModel/procedure_View_model.dart | 7 ++---- lib/screens/patients/patients_screen.dart | 2 ++ .../profile/lab_result/labs_home_page.dart | 3 ++- .../profile/patient_profile_screen.dart | 23 +++++++++++-------- .../vital_sign/vital_sign_details_screen.dart | 3 ++- .../profile/PatientProfileButton.dart | 8 +++++-- .../profile/profile_medical_info_widget.dart | 9 ++++---- ...rofile_medical_info_widget_in_patient.dart | 3 +++ 9 files changed, 40 insertions(+), 28 deletions(-) diff --git a/lib/core/service/labs_service.dart b/lib/core/service/labs_service.dart index 6ea6e6cf..24c83004 100644 --- a/lib/core/service/labs_service.dart +++ b/lib/core/service/labs_service.dart @@ -13,21 +13,21 @@ class LabsService extends BaseService { List patientLabOrdersList = List(); Future getPatientLabOrdersList( - PatiantInformtion patient, bool isArrived) async { + PatiantInformtion patient, bool isInpatient) async { hasError = false; Map body = Map(); String url = ""; - if (isArrived) { + if (isInpatient) { + url = GET_PATIENT_LAB_OREDERS; + } else { body['isDentalAllowedBackend'] = false; url = GET_Patient_LAB_ORDERS; - } else { - url = GET_PATIENT_LAB_OREDERS; } await baseAppClient.postPatient(url, patient: patient, onSuccess: (dynamic response, int statusCode) { patientLabOrdersList.clear(); - if (isArrived) { + if (!isInpatient) { response['ListPLO'].forEach((hospital) { patientLabOrdersList.add(PatientLabOrders.fromJson(hospital)); }); diff --git a/lib/core/viewModel/procedure_View_model.dart b/lib/core/viewModel/procedure_View_model.dart index d35b2c14..2b9b1748 100644 --- a/lib/core/viewModel/procedure_View_model.dart +++ b/lib/core/viewModel/procedure_View_model.dart @@ -226,14 +226,11 @@ class ProcedureViewModel extends BaseViewModel { return labResultLists; } - void getLabs(PatiantInformtion patient,{bool isArrived}) async { + void getLabs(PatiantInformtion patient, {bool isInpatient = false}) async { setState(ViewState.Busy); - await _labsService.getPatientLabOrdersList(patient, isArrived); + await _labsService.getPatientLabOrdersList(patient, isInpatient); if (_labsService.hasError) { error = _labsService.error; - if(isArrived) - setState(ViewState.ErrorLocal); - else setState(ViewState.Error); } else { _labsService.patientLabOrdersList.forEach((element) { diff --git a/lib/screens/patients/patients_screen.dart b/lib/screens/patients/patients_screen.dart index 30cc7dcf..50247b41 100644 --- a/lib/screens/patients/patients_screen.dart +++ b/lib/screens/patients/patients_screen.dart @@ -642,6 +642,8 @@ class _PatientsScreenState extends State { .getTo, "isSearch": isSearch, + "isInpatient": + isInpatient, "arrivalType": arrivalType, }); diff --git a/lib/screens/patients/profile/lab_result/labs_home_page.dart b/lib/screens/patients/profile/lab_result/labs_home_page.dart index 188744c3..46ed1ccb 100644 --- a/lib/screens/patients/profile/lab_result/labs_home_page.dart +++ b/lib/screens/patients/profile/lab_result/labs_home_page.dart @@ -29,9 +29,10 @@ class LabsHomePage extends StatelessWidget { PatiantInformtion patient = routeArgs['patient']; patientType = routeArgs['patientType']; arrivalType = routeArgs['arrivalType']; + bool isInpatient = routeArgs['isInpatient']; print(arrivalType); return BaseView( - onModelReady: (model) => model.getLabs(patient,isArrived: ( patient.patientStatusType == 43)), + onModelReady: (model) => model.getLabs(patient, isInpatient: isInpatient), builder: (context, ProcedureViewModel model, widget) => AppScaffold( baseViewModel: model, backgroundColor: Colors.grey[100], diff --git a/lib/screens/patients/profile/patient_profile_screen.dart b/lib/screens/patients/profile/patient_profile_screen.dart index 277bc472..12c35f91 100644 --- a/lib/screens/patients/profile/patient_profile_screen.dart +++ b/lib/screens/patients/profile/patient_profile_screen.dart @@ -26,6 +26,7 @@ import '../../../routes.dart'; class PatientProfileScreen extends StatelessWidget { PatiantInformtion patient; bool isFromSearch = false; + bool isInpatient = false; @override Widget build(BuildContext context) { @@ -40,6 +41,9 @@ class PatientProfileScreen extends StatelessWidget { if (routeArgs.containsKey("isSearch")) { isFromSearch = routeArgs['isSearch']; } + if (routeArgs.containsKey("isInpatient")) { + isInpatient = routeArgs['isInpatient']; + } return BaseView( onModelReady: (patientViewModel) async { @@ -66,14 +70,14 @@ class PatientProfileScreen extends StatelessWidget { PatientOutSA: false); if (patientType == "1" && - (patient.admissionNo == null || - patient.admissionNo == "0")) { + (patient.admissionNo == null || patient.admissionNo == "0")) { patientViewModel .getPatientList(patientReq, "1", isBusyLocal: false) .then((response) { if (response['MessageStatus'] == 1) { if (response['List_MyInPatient'] != null) { - List patientList = ModelResponse.fromJson(response['List_MyInPatient']).list; + List patientList = + ModelResponse.fromJson(response['List_MyInPatient']).list; patient.admissionNo = patientList[0].admissionNo; patient.admissionDate = patientList[0].admissionDate; } else { @@ -81,7 +85,7 @@ class PatientProfileScreen extends StatelessWidget { } } }).catchError((error) { - print(error); + print(error); }); } }, @@ -108,16 +112,16 @@ class PatientProfileScreen extends StatelessWidget { child: SingleChildScrollView( child: Column( children: [ - isFromSearch - ? ProfileMedicalInfoWidgetSearch( + isInpatient + ? ProfileMedicalInfoWidgetInPatient( patient: patient, patientType: patientType, arrivalType: arrivalType, from: from, to: to, ) - : patientType == "1" - ? ProfileMedicalInfoWidgetInPatient( + : isFromSearch + ? ProfileMedicalInfoWidgetSearch( patient: patient, patientType: patientType, arrivalType: arrivalType, @@ -139,7 +143,8 @@ class PatientProfileScreen extends StatelessWidget { ], ), ), - if (patient.patientStatusType !=null && patient.patientStatusType == 43 ) + if (patient.patientStatusType != null && + patient.patientStatusType == 43) BaseView( onModelReady: (model) async {}, builder: (_, model, w) => Positioned( diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart index f333a73f..0bf2fc95 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart @@ -30,12 +30,13 @@ class VitalSignDetailsScreen extends StatelessWidget { String arrivalType = routeArgs['arrivalType']; String from = routeArgs['from']; String to = routeArgs['to']; + bool isInpatient = routeArgs['isInpatient']; String imageBasePath = 'assets/images/'; String assetBasePath = "${imageBasePath}patient/vital_signs/"; return BaseView( onModelReady: (model) => - model.getPatientVitalSignHistory(patient, from, to, patientType == "1"), + model.getPatientVitalSignHistory(patient, from, to, isInpatient), builder: (_, mode, widget) => AppScaffold( baseViewModel: mode, isShowAppBar: true, diff --git a/lib/widgets/patients/profile/PatientProfileButton.dart b/lib/widgets/patients/profile/PatientProfileButton.dart index 7de9bccf..6267e522 100644 --- a/lib/widgets/patients/profile/PatientProfileButton.dart +++ b/lib/widgets/patients/profile/PatientProfileButton.dart @@ -13,6 +13,7 @@ class PatientProfileButton extends StatelessWidget { final PatiantInformtion patient; final String patientType; String arrivalType; + final bool isInPatient; String from; String to; final String url = "assets/images/"; @@ -33,7 +34,9 @@ class PatientProfileButton extends StatelessWidget { this.onTap, this.isLoading = false, this.from, - this.to}) + this.to, + this.isInPatient = false, + }) : super(key: key); @override @@ -127,7 +130,8 @@ class PatientProfileButton extends StatelessWidget { 'from': from, 'to': to, 'patientType': patientType, - 'arrivalType': arrivalType + 'arrivalType': arrivalType, + 'isInpatient': isInPatient, }); } } diff --git a/lib/widgets/patients/profile/profile_medical_info_widget.dart b/lib/widgets/patients/profile/profile_medical_info_widget.dart index 52e16416..62d04b3c 100644 --- a/lib/widgets/patients/profile/profile_medical_info_widget.dart +++ b/lib/widgets/patients/profile/profile_medical_info_widget.dart @@ -43,7 +43,6 @@ class ProfileMedicalInfoWidget extends StatelessWidget { childAspectRatio: 1 / 1.0, crossAxisCount: 3, children: [ - // if (int.parse(patientType) == 7 || int.parse(patientType) == 6) PatientProfileButton( key: key, patient: patient, @@ -132,7 +131,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget { nameLine1: TranslationBase.of(context).patientSick, nameLine2: TranslationBase.of(context).leave, icon: 'patient/patient_sick_leave.png'), - // if (int.parse(patientType) == 7 || int.parse(patientType) == 6) + if (patient.appointmentNo!=null && patient.appointmentNo!=0) PatientProfileButton( key: key, patient: patient, @@ -143,7 +142,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget { nameLine1: TranslationBase.of(context).patient, nameLine2: TranslationBase.of(context).ucaf, icon: 'patient/ucaf.png'), - // if (int.parse(patientType) == 7 || int.parse(patientType) == 6) + if (patient.appointmentNo!=null && patient.appointmentNo!=0) PatientProfileButton( key: key, patient: patient, @@ -154,7 +153,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget { nameLine1: TranslationBase.of(context).referral, nameLine2: TranslationBase.of(context).patient, icon: 'patient/refer_patient.png'), - // if (int.parse(patientType) == 7 || int.parse(patientType) == 6) + if (patient.appointmentNo!=null && patient.appointmentNo!=0) PatientProfileButton( key: key, patient: patient, @@ -165,7 +164,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget { nameLine1: TranslationBase.of(context).admission, nameLine2: TranslationBase.of(context).request, icon: 'patient/admission_req.png'), - if (patientType == "1") + if (patient.admissionNo!=null && patient.admissionNo!="0") PatientProfileButton( key: key, patient: patient, diff --git a/lib/widgets/patients/profile/profile_medical_info_widget_in_patient.dart b/lib/widgets/patients/profile/profile_medical_info_widget_in_patient.dart index d5764203..b168b289 100644 --- a/lib/widgets/patients/profile/profile_medical_info_widget_in_patient.dart +++ b/lib/widgets/patients/profile/profile_medical_info_widget_in_patient.dart @@ -53,6 +53,7 @@ class ProfileMedicalInfoWidgetInPatient extends StatelessWidget { nameLine1: TranslationBase.of(context).vital, nameLine2: TranslationBase.of(context).signs, route: VITAL_SIGN_DETAILS, + isInPatient: true, icon: 'patient/vital_signs.png'), PatientProfileButton( key: key, @@ -60,6 +61,7 @@ class ProfileMedicalInfoWidgetInPatient extends StatelessWidget { patientType: patientType, arrivalType: arrivalType, route: LAB_RESULT, + isInPatient: true, nameLine1: TranslationBase.of(context).lab, nameLine2: TranslationBase.of(context).result, icon: 'patient/lab_results.png'), @@ -137,6 +139,7 @@ class ProfileMedicalInfoWidgetInPatient extends StatelessWidget { patientType: patientType, arrivalType: arrivalType, route: REFER_IN_PATIENT_TO_DOCTOR, + isInPatient: true, nameLine1: TranslationBase.of(context).referral, nameLine2: TranslationBase.of(context).patient, icon: 'patient/refer_patient.png'), From 704a4bd0be87fec2ac1aa1ba898adeec3035a93a Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Thu, 22 Apr 2021 23:39:31 +0300 Subject: [PATCH 2/9] hot fixes --- lib/models/patient/patiant_info_model.dart | 2 +- lib/screens/patients/profile/lab_result/labs_home_page.dart | 4 ++-- lib/widgets/shared/doctor_card.dart | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/models/patient/patiant_info_model.dart b/lib/models/patient/patiant_info_model.dart index ec0b0bfb..cf266faa 100644 --- a/lib/models/patient/patiant_info_model.dart +++ b/lib/models/patient/patiant_info_model.dart @@ -176,7 +176,7 @@ class PatiantInformtion { appointmentNo: json['appointmentNo'] ?? json['AppointmentNo'], appointmentType: json['appointmentType'], appointmentTypeId: json['appointmentTypeId']?? json['appointmentTypeid'], - arrivedOn: json['arrivedOn'], + arrivedOn: json['arrivedOn'] ?? json['ArrivedOn'], clinicGroupId: json['clinicGroupId'], companyName: json['companyName'], dischargeStatus: json['dischargeStatus'], diff --git a/lib/screens/patients/profile/lab_result/labs_home_page.dart b/lib/screens/patients/profile/lab_result/labs_home_page.dart index 188744c3..5a02eb8d 100644 --- a/lib/screens/patients/profile/lab_result/labs_home_page.dart +++ b/lib/screens/patients/profile/lab_result/labs_home_page.dart @@ -68,7 +68,7 @@ class LabsHomePage extends StatelessWidget { ], ), ), - if(patient.patientStatusType == 43) + if ( patient.patientStatusType!=null && patient.patientStatusType == 43) Padding( padding: const EdgeInsets.all(8.0), child: Column( @@ -88,7 +88,7 @@ class LabsHomePage extends StatelessWidget { ], ), ), - if (patientType != null && patientType == '7' && patient.patientStatusType == 43) + if ( patient.patientStatusType!=null && patient.patientStatusType == 43) AddNewOrder( onTap: () { Navigator.push( context, diff --git a/lib/widgets/shared/doctor_card.dart b/lib/widgets/shared/doctor_card.dart index 25b3dee1..c86e0211 100644 --- a/lib/widgets/shared/doctor_card.dart +++ b/lib/widgets/shared/doctor_card.dart @@ -110,7 +110,7 @@ class DoctorCard extends StatelessWidget { children: [ AppText( TranslationBase.of(context).orderNo + - ": ", + " ", color: Colors.grey[500], fontSize: 14, ), @@ -126,7 +126,7 @@ class DoctorCard extends StatelessWidget { AppText( TranslationBase.of(context) .invoiceNo + - ": ", + " ", fontSize: 14, color: Colors.grey[500], ), From 8a63d8bb832f35ed25fec9c16aded334e8c297ab Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Fri, 23 Apr 2021 00:48:58 +0300 Subject: [PATCH 3/9] hot fixes --- lib/config/localized_values.dart | 4 ++-- lib/core/viewModel/patient-vital-sign-viewmodel.dart | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index fbd53016..e64913b6 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -30,7 +30,7 @@ const Map> localizedValues = { 'ar': 'ملاحضات وتفاصيل العيادة' }, 'outPatients': {'en': 'Out Patient', 'ar': 'المريض الخارجي'}, - 'myOutPatient': {'en': 'My Out Patients', 'ar': 'المريض الخارجي'}, + 'myOutPatient': {'en': 'My OutPatients', 'ar': 'المريض الخارجي'}, 'searchPatient': {'en': 'Search Patient', 'ar': 'البحث عن مريض'}, 'searchAbout': {'en': 'Search', 'ar': 'البحث عن'}, @@ -47,7 +47,7 @@ const Map> localizedValues = { 'radiology': {'en': 'Radiology', 'ar': 'الأشعة'}, 'service': {'en': 'Service', 'ar': 'خدمة'}, 'referral': {'en': 'Referral', 'ar': 'الإحالة'}, - 'inPatient': {'en': 'My In Patients', 'ar': 'المريض الداخلي'}, + 'inPatient': {'en': 'My InPatients', 'ar': 'المريض الداخلي'}, 'operations': {'en': 'Operations', 'ar': 'عمليات'}, 'patientServices': {'en': 'Patient Services', 'ar': 'خدمات المرضى'}, 'searchMedicine': {'en': 'Search Medicine', 'ar': 'بحث عن الدواء'}, diff --git a/lib/core/viewModel/patient-vital-sign-viewmodel.dart b/lib/core/viewModel/patient-vital-sign-viewmodel.dart index af3a441f..14aa1f06 100644 --- a/lib/core/viewModel/patient-vital-sign-viewmodel.dart +++ b/lib/core/viewModel/patient-vital-sign-viewmodel.dart @@ -47,11 +47,11 @@ class VitalSignsViewModel extends BaseViewModel { to = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd'); } - if(isInPatient){ + // if(isInPatient){ await _vitalSignService.getInPatientVitalSignHistory(patient); - }else { - await _vitalSignService.getPatientVitalSignsHistory(patient, from, to); - } + // }else { + // await _vitalSignService.getPatientVitalSignsHistory(patient, from, to); + // } if (_vitalSignService.hasError) { error = _vitalSignService.error; From 1d2ee1284e8b558270a7c547bb7f6c09f6ba2f75 Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Fri, 23 Apr 2021 03:41:36 +0300 Subject: [PATCH 4/9] fix issues on Referral --- .../patients/patient-referral-item-widget.dart | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/widgets/patients/patient-referral-item-widget.dart b/lib/widgets/patients/patient-referral-item-widget.dart index 1b04f7dd..faddc7f6 100644 --- a/lib/widgets/patients/patient-referral-item-widget.dart +++ b/lib/widgets/patients/patient-referral-item-widget.dart @@ -246,11 +246,18 @@ class PatientReferralItemWidget extends StatelessWidget { child: Container( width: 40, height: 40, - child: CircleAvatar( - radius: 25.0, - backgroundImage: NetworkImage(doctorAvatar), - backgroundColor: Colors.transparent, - ), + child: doctorAvatar !=null?ClipRRect( + borderRadius: BorderRadius.circular(20.0), + child: Image.network( + doctorAvatar, + height: 25, + width: 30, + errorBuilder: (BuildContext context, + Object exception, + StackTrace stackTrace) { + return Text('No Image'); + }, + )):Container(), ), ), Expanded( From c9150ef088ad6371fd6c8deab222434695ca93b6 Mon Sep 17 00:00:00 2001 From: Sultan Khan Date: Fri, 23 Apr 2021 12:48:56 +0300 Subject: [PATCH 5/9] bug fixes --- lib/config/config.dart | 10 ++- lib/config/localized_values.dart | 9 +-- lib/screens/patients/patients_screen.dart | 77 +++++++++++-------- ...-profile-header-new-design_in_patient.dart | 5 +- 4 files changed, 56 insertions(+), 45 deletions(-) diff --git a/lib/config/config.dart b/lib/config/config.dart index d350f66f..8b4bf1f9 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -254,8 +254,10 @@ const SEND_PRESCRIPTION_EMAIL = const GET_PRESCRIPTION_REPORT_ENH = 'Services/Patients.svc/REST/GetPrescriptionReport_enh'; const GET_PHARMACY_LIST = "Services/Patients.svc/REST/GetPharmcyList"; -const UPDATE_PROGRESS_NOTE_FOR_INPATIENT = "Services/DoctorApplication.svc/REST/UpdateProgressNoteForInPatient"; -const CREATE_PROGRESS_NOTE_FOR_INPATIENT = "Services/DoctorApplication.svc/REST/CreateProgressNoteForInPatient"; +const UPDATE_PROGRESS_NOTE_FOR_INPATIENT = + "Services/DoctorApplication.svc/REST/UpdateProgressNoteForInPatient"; +const CREATE_PROGRESS_NOTE_FOR_INPATIENT = + "Services/DoctorApplication.svc/REST/CreateProgressNoteForInPatient"; const GET_PRESCRIPTION_IN_PATIENT = 'Services/DoctorApplication.svc/REST/GetPrescriptionReportForInPatient'; @@ -287,8 +289,8 @@ var SERVICES_PATIANT2 = [ "patientArrivalList" ]; var SERVICES_PATIANT_HEADER = [ - "Search Out-Patient", - "Search In-Patient", + "My OutPatient", + "My InPatient", "Discharge", "Referred", "Referral Discharge", diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index fbd53016..b2c201e1 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -30,7 +30,7 @@ const Map> localizedValues = { 'ar': 'ملاحضات وتفاصيل العيادة' }, 'outPatients': {'en': 'Out Patient', 'ar': 'المريض الخارجي'}, - 'myOutPatient': {'en': 'My Out Patients', 'ar': 'المريض الخارجي'}, + 'myOutPatient': {'en': 'My OutPatients', 'ar': 'المريض الخارجي'}, 'searchPatient': {'en': 'Search Patient', 'ar': 'البحث عن مريض'}, 'searchAbout': {'en': 'Search', 'ar': 'البحث عن'}, @@ -47,7 +47,7 @@ const Map> localizedValues = { 'radiology': {'en': 'Radiology', 'ar': 'الأشعة'}, 'service': {'en': 'Service', 'ar': 'خدمة'}, 'referral': {'en': 'Referral', 'ar': 'الإحالة'}, - 'inPatient': {'en': 'My In Patients', 'ar': 'المريض الداخلي'}, + 'inPatient': {'en': 'My InPatients', 'ar': 'المريض الداخلي'}, 'operations': {'en': 'Operations', 'ar': 'عمليات'}, 'patientServices': {'en': 'Patient Services', 'ar': 'خدمات المرضى'}, 'searchMedicine': {'en': 'Search Medicine', 'ar': 'بحث عن الدواء'}, @@ -439,10 +439,7 @@ const Map> localizedValues = { 'en': "Expected Admission Date", 'ar': 'تاريخ القبول المتوقع' }, - 'admissionDate': { - 'en': "Admission Date", - 'ar': 'تاريخ القبول' - }, + 'admissionDate': {'en': "Admission Date", 'ar': 'تاريخ القبول'}, // 'emergencyAdmission': {'en': "EMERGENCY ADMISSION", 'ar': 'دخول الطوارئ'}, 'isSickLeaveRequired': { 'en': "Is Sick Leave Required", diff --git a/lib/screens/patients/patients_screen.dart b/lib/screens/patients/patients_screen.dart index 30cc7dcf..3e648c42 100644 --- a/lib/screens/patients/patients_screen.dart +++ b/lib/screens/patients/patients_screen.dart @@ -397,37 +397,46 @@ class _PatientsScreenState extends State { ? Column( children: [ Column(children: [ - SizedBox(height: 18.5), - - Container( - decoration: BoxDecoration( - borderRadius: - BorderRadius.all(Radius.circular(6.0)), - border: Border.all( - width: 1.0, - color: HexColor("#CCCCCC"), - ), - color: Colors.white), - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only( - left: 10, top: 10), - child: AppText( - TranslationBase.of(context) - .selectYourProject, - fontWeight: FontWeight.w600, - )), - AppTextFormField( - // focusNode: focusProject, - controller: _controller, - borderColor: Colors.white, - suffixIcon: Icons.arrow_drop_down, - onTap: () {}, - ) - ])), + // Container( + // width: SizeConfig.screenWidth * 0.9, + // height: 75, + // decoration: BoxDecoration( + // borderRadius: + // BorderRadius.all(Radius.circular(6.0)), + // border: Border.all( + // width: 1.0, + // color: HexColor("#CCCCCC"), + // ), + // color: Colors.white), + // child: Column( + // crossAxisAlignment: + // CrossAxisAlignment.start, + // children: [ + // Padding( + // padding: EdgeInsets.only( + // left: 10, top: 10), + // child: AppText( + // TranslationBase.of(context) + // .searchPatientName, + // fontSize: 13, + // )), + // AppTextFormField( + // // focusNode: focusProject, + // controller: _controller, + // borderColor: Colors.white, + // prefix: IconButton( + // icon: Icon( + // DoctorApp.filter_1, + // color: Colors.black, + // ), + // iconSize: 20, + // padding: + // EdgeInsets.only(bottom: 30), + // ), + // onChanged: (String str) { + // this.searchData(str); + // }), + // ])), // Container( // width: SizeConfig.screenWidth * 0.9, @@ -467,7 +476,7 @@ class _PatientsScreenState extends State { // child: _locationBar(context) child: SERVICES_PATIANT2[int.parse(patientType)] == - "patientArrivalList" + "List_MyOutPatient" ? _locationBar(context, model) : Container(), ) @@ -539,7 +548,9 @@ class _PatientsScreenState extends State { padding: EdgeInsets.only( left: 10, top: 10), child: AppText( - TranslationBase.of(context).searchPatientName, + TranslationBase.of( + context) + .searchPatientName, fontSize: 13, )), AppTextFormField( diff --git a/lib/widgets/patients/profile/patient-profile-header-new-design_in_patient.dart b/lib/widgets/patients/profile/patient-profile-header-new-design_in_patient.dart index 74292c56..ca6910ae 100644 --- a/lib/widgets/patients/profile/patient-profile-header-new-design_in_patient.dart +++ b/lib/widgets/patients/profile/patient-profile-header-new-design_in_patient.dart @@ -145,7 +145,7 @@ class PatientProfileHeaderNewDesignInPatient extends StatelessWidget { ), AppText( DateUtils.convertDateFromServerFormat( - patient.createdOn, "dd MMM,yyyy"), + patient.admissionDate, "dd MMM,yyyy"), fontSize: 1.4 * SizeConfig.textMultiplier, fontWeight: FontWeight.w700), ], @@ -184,7 +184,8 @@ class PatientProfileHeaderNewDesignInPatient extends StatelessWidget { "${TranslationBase.of(context).numOfDays}: ", fontSize: 1.2 * SizeConfig.textMultiplier, ), - AppText("${ DateTime.now().difference(DateUtils.getDateTimeFromServerFormat(patient.createdOn)).inDays + 1}", + AppText( + "${DateTime.now().difference(DateUtils.getDateTimeFromServerFormat(patient.createdOn)).inDays + 1}", fontSize: 1.4 * SizeConfig.textMultiplier, fontWeight: FontWeight.w700), ], From d06cf277243a8f92402b6f75c12d85bf1ac311d6 Mon Sep 17 00:00:00 2001 From: mosazaid Date: Fri, 23 Apr 2021 14:12:49 +0300 Subject: [PATCH 6/9] vital-sign- fixes --- .../profile/vital_sign/vital_sign_item.dart | 31 ++++-- .../vital_sing_chart_blood_pressure.dart | 102 ++++++++++-------- 2 files changed, 76 insertions(+), 57 deletions(-) diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_item.dart b/lib/screens/patients/profile/vital_sign/vital_sign_item.dart index a24d1a6b..0208b73c 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_item.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_item.dart @@ -1,6 +1,7 @@ import 'package:doctor_app_flutter/config/size_config.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:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; @@ -84,17 +85,27 @@ class VitalSignItem extends StatelessWidget { ), Container( width: double.infinity, - child: Align( - alignment: Alignment.topLeft, - child: Container( - margin: EdgeInsets.only(left: 5, right: 5), - child: AppText( - "$des", - fontFamily: 'Poppins', - fontSize: SizeConfig.textMultiplier * 1.3, - fontWeight: FontWeight.bold, + child: Column( + children: [ + Align( + alignment: Alignment.topRight, + child: Icon( + EvaIcons.eye, + ), ), - ), + Align( + alignment: Alignment.topLeft, + child: Container( + margin: EdgeInsets.only(left: 5, right: 5), + child: AppText( + "$des", + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 1.3, + fontWeight: FontWeight.bold, + ), + ), + ), + ], ), ), ], diff --git a/lib/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart b/lib/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart index 291bbcb5..81ff7e16 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart @@ -3,6 +3,7 @@ import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign- import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart'; import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sign_details_blood_pressurewideget.dart'; import 'package:doctor_app_flutter/util/date-utils.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/charts/app_time_series_chart.dart'; import 'package:doctor_app_flutter/widgets/shared/app_expandable_notifier.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; @@ -38,54 +39,54 @@ class VitalSingChartBloodPressure extends StatelessWidget { @override Widget build(BuildContext context) { generateData(); - return Padding( - padding: const EdgeInsets.all(10.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - margin: EdgeInsets.symmetric(horizontal: 8), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(12) - ), - child: LineChartCurvedBloodPressure( - title: name, - timeSeries1: timeSeriesData1, - timeSeries2: timeSeriesData2, - indexes: timeSeriesData1.length ~/ 5.5, - ), - ), - Container( - margin: EdgeInsets.symmetric(horizontal: 8, vertical: 16), - padding: EdgeInsets.only(top: 16, right: 18.0, left: 16.0), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(12) - ), + return timeSeriesData1.length != 0 || timeSeriesData2.length != 0 + ? Padding( + padding: const EdgeInsets.all(10.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ - AppText( - "Graph Details", - fontSize: SizeConfig.textMultiplier * 2.3, - fontWeight: FontWeight.bold, - - fontFamily: 'Poppins', + children: [ + Container( + margin: EdgeInsets.symmetric(horizontal: 8), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12)), + child: LineChartCurvedBloodPressure( + title: name, + timeSeries1: timeSeriesData1, + timeSeries2: timeSeriesData2, + indexes: timeSeriesData1.length ~/ 5.5, + ), ), - SizedBox(height: 8,), - VitalSignBloodPressureWidget( - vitalList: vitalList, - title1: title1, - title2: title2, - title3: title3, - viewKey1: viewKey1, - viewKey2: viewKey2, + Container( + margin: EdgeInsets.symmetric(horizontal: 8, vertical: 16), + padding: EdgeInsets.only(top: 16, right: 18.0, left: 16.0), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12)), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + "Graph Details", + fontSize: SizeConfig.textMultiplier * 2.3, + fontWeight: FontWeight.bold, + fontFamily: 'Poppins', + ), + SizedBox( + height: 8, + ), + VitalSignBloodPressureWidget( + vitalList: vitalList, + title1: title1, + title2: title2, + title3: title3, + viewKey1: viewKey1, + viewKey2: viewKey2, + ), + ], + ), ), - ], - ), - ), - /*AppExpandableNotifier( + /*AppExpandableNotifier( // isExpand: true, headerWid: LineChartCurvedBloodPressure( title: name, @@ -102,9 +103,16 @@ class VitalSingChartBloodPressure extends StatelessWidget { viewKey2: viewKey2, ), ),*/ - ], - ), - ); + ], + ), + ) + : Container( + width: double.infinity, + height: MediaQuery.of(context).size.height, + child: Center( + child: AppText(TranslationBase.of(context).vitalSignDetailEmpty), + ), + ); } generateData() { From 9d00440789b084ecd2e8ec61223a857b4926b6fa Mon Sep 17 00:00:00 2001 From: mosazaid Date: Fri, 23 Apr 2021 16:35:05 +0300 Subject: [PATCH 7/9] referral -re design --- .../patient-vital-sign-viewmodel.dart | 12 ++-- .../my_referred_patient_model.dart | 8 +++ .../profile/patient_profile_screen.dart | 2 +- .../referral/referred-patient-screen.dart | 24 ++++--- .../patient-referral-item-widget.dart | 71 ++++++++++++------- ...-profile-header-new-design_in_patient.dart | 2 +- 6 files changed, 74 insertions(+), 45 deletions(-) diff --git a/lib/core/viewModel/patient-vital-sign-viewmodel.dart b/lib/core/viewModel/patient-vital-sign-viewmodel.dart index 14aa1f06..2f1c1c68 100644 --- a/lib/core/viewModel/patient-vital-sign-viewmodel.dart +++ b/lib/core/viewModel/patient-vital-sign-viewmodel.dart @@ -37,8 +37,8 @@ class VitalSignsViewModel extends BaseViewModel { } } - Future getPatientVitalSignHistory( - PatiantInformtion patient, String from, String to, bool isInPatient) async { + Future getPatientVitalSignHistory(PatiantInformtion patient, String from, + String to, bool isInPatient) async { setState(ViewState.Busy); if (from == null || from == "0") { from = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd'); @@ -47,11 +47,11 @@ class VitalSignsViewModel extends BaseViewModel { to = DateUtils.convertDateToFormat(DateTime.now(), 'yyyy-MM-dd'); } - // if(isInPatient){ + if (isInPatient) { await _vitalSignService.getInPatientVitalSignHistory(patient); - // }else { - // await _vitalSignService.getPatientVitalSignsHistory(patient, from, to); - // } + } else { + await _vitalSignService.getPatientVitalSignsHistory(patient, from, to); + } if (_vitalSignService.hasError) { error = _vitalSignService.error; diff --git a/lib/models/patient/my_referral/my_referred_patient_model.dart b/lib/models/patient/my_referral/my_referred_patient_model.dart index f7d48c60..129a1bb5 100644 --- a/lib/models/patient/my_referral/my_referred_patient_model.dart +++ b/lib/models/patient/my_referral/my_referred_patient_model.dart @@ -62,6 +62,8 @@ class MyReferredPatientModel { String nursingStationName; String priorityDescription; String referringClinicDescription; + String referralDoctorName; + String referralClinicDescription; String referringDoctorName; bool isReferralDoctorSameBranch; @@ -127,6 +129,8 @@ class MyReferredPatientModel { this.referringClinicDescription, this.referringDoctorName, this.isReferralDoctorSameBranch, + this.referralDoctorName, + this.referralClinicDescription, }); MyReferredPatientModel.fromJson(Map json) { @@ -190,6 +194,8 @@ class MyReferredPatientModel { priorityDescription = json['PriorityDescription']; referringClinicDescription = json['ReferringClinicDescription']; referringDoctorName = json['ReferringDoctorName']; + referralDoctorName = json['ReferralDoctorName']; + referralClinicDescription = json['ReferralClinicDescription']; } Map toJson() { @@ -254,6 +260,8 @@ class MyReferredPatientModel { data['PriorityDescription'] = this.priorityDescription; data['ReferringClinicDescription'] = this.referringClinicDescription; data['ReferringDoctorName'] = this.referringDoctorName; + data['ReferralDoctorName'] = this.referralDoctorName; + data['ReferralClinicDescription'] = this.referralClinicDescription; return data; } } diff --git a/lib/screens/patients/profile/patient_profile_screen.dart b/lib/screens/patients/profile/patient_profile_screen.dart index a14f96e8..fd4c5719 100644 --- a/lib/screens/patients/profile/patient_profile_screen.dart +++ b/lib/screens/patients/profile/patient_profile_screen.dart @@ -58,7 +58,7 @@ class PatientProfileScreen extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - !isFromSearch && patientType == "1" + !isFromSearch && isInpatient/*patientType == "1"*/ ? PatientProfileHeaderNewDesignInPatient( patient, patientType, arrivalType) : PatientProfileHeaderNewDesign( diff --git a/lib/screens/patients/profile/referral/referred-patient-screen.dart b/lib/screens/patients/profile/referral/referred-patient-screen.dart index 0bacb1d8..b859d965 100644 --- a/lib/screens/patients/profile/referral/referred-patient-screen.dart +++ b/lib/screens/patients/profile/referral/referred-patient-screen.dart @@ -23,7 +23,7 @@ class ReferredPatientScreen extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - SizedBox( + Container( height: 100, ), Image.asset('assets/images/no-data.png'), @@ -37,22 +37,24 @@ class ReferredPatientScreen extends StatelessWidget { ], ), ) - : SingleChildScrollView( + : SingleChildScrollView(// DoctorApplication.svc/REST/GtMyReferredPatient child: Container( + margin: EdgeInsets.only(top: 70), child: Column( children: [ - const Divider( - color: Color(0xffCCCCCC), - height: 1, - thickness: 2, - indent: 0, - endIndent: 0, - ), + // const Divider( + // color: Color(0xffCCCCCC), + // height: 1, + // thickness: 2, + // indent: 0, + // endIndent: 0, + // ), ...List.generate( model.listMyReferredPatientModel.length, (index) => PatientReferralItemWidget( referralStatus: "${model.getReferralStatusNameByCode(model.getReferredPatientItem(index).referralStatus, context)}", + referralStatusCode: model.getReferredPatientItem(index).referralStatus, patientName: "${model.getReferredPatientItem(index).firstName} ${model.getReferredPatientItem(index).middleName} ${model.getReferredPatientItem(index).lastName}", patientGender: model.getReferredPatientItem(index).gender, referredDate: DateUtils.convertDateFromServerFormat(model.getReferredPatientItem(index).referralDate, "dd/MM/yyyy"), @@ -70,8 +72,8 @@ class ReferredPatientScreen extends StatelessWidget { model.getReferredPatientItem(index).nationalityFlagURL, doctorAvatar: model.getReferredPatientItem(index).doctorImageURL, - referralDoctorName: "${model.getReferredPatientItem(index).referringDoctorName}(${model.getReferredPatientItem(index).referringClinicDescription})", - clinicDescription: null, + referralDoctorName: "Dr. ${model.getReferredPatientItem(index).referralDoctorName}", + clinicDescription: model.getReferredPatientItem(index).referralClinicDescription, ), ), ], diff --git a/lib/widgets/patients/patient-referral-item-widget.dart b/lib/widgets/patients/patient-referral-item-widget.dart index faddc7f6..0bad54a2 100644 --- a/lib/widgets/patients/patient-referral-item-widget.dart +++ b/lib/widgets/patients/patient-referral-item-widget.dart @@ -12,6 +12,7 @@ import 'package:provider/provider.dart'; class PatientReferralItemWidget extends StatelessWidget { final String referralStatus; + final int referralStatusCode; final String patientName; final int patientGender; final String referredDate; @@ -29,6 +30,7 @@ class PatientReferralItemWidget extends StatelessWidget { PatientReferralItemWidget( {this.referralStatus, + this.referralStatusCode, this.patientName, this.patientGender, this.referredDate, @@ -54,11 +56,11 @@ class PatientReferralItemWidget extends StatelessWidget { children: [ Container( child: CardWithBgWidget( - bgColor: referralStatus != null - ? referralStatus == 'Pending' - ? Color(0xffc4aa54) - : Colors.red[800] - : Colors.grey[500], + bgColor: referralStatusCode == 1 + ? Color(0xffc4aa54) + : referralStatusCode == 46 + ? Colors.green[700] + : Colors.red[700], hasBorder: false, widget: Container( // padding: EdgeInsets.only(left: 20, right: 0, bottom: 0), @@ -74,13 +76,11 @@ class PatientReferralItemWidget extends StatelessWidget { fontFamily: 'Poppins', fontSize: 1.9 * SizeConfig.textMultiplier, fontWeight: FontWeight.w700, - color: referralStatus != null - ? referralStatus == 'Pending' - ? Color(0xffc4aa54) - : referralStatus == 'Accepted' - ? Colors.green[700] - : Colors.red[700] - : Colors.grey[500], + color: referralStatusCode == 1 + ? Color(0xffc4aa54) + : referralStatusCode == 46 + ? Colors.green[700] + : Colors.red[700], ), AppText( referredDate, @@ -222,6 +222,7 @@ class PatientReferralItemWidget extends StatelessWidget { fontWeight: FontWeight.w700, fontSize: 1.8 * SizeConfig.textMultiplier, color: Color(0XFF2E303A), + maxLines: 1, ), ), ], @@ -246,18 +247,27 @@ class PatientReferralItemWidget extends StatelessWidget { child: Container( width: 40, height: 40, - child: doctorAvatar !=null?ClipRRect( - borderRadius: BorderRadius.circular(20.0), - child: Image.network( - doctorAvatar, - height: 25, - width: 30, - errorBuilder: (BuildContext context, - Object exception, - StackTrace stackTrace) { - return Text('No Image'); - }, - )):Container(), + child: doctorAvatar != null + ? ClipRRect( + borderRadius: BorderRadius.circular(20.0), + child: Image.network( + doctorAvatar, + height: 25, + width: 30, + errorBuilder: (BuildContext context, + Object exception, + StackTrace stackTrace) { + return Text('No Image'); + }, + )) + : Container( + child: Image.asset( + patientGender == 1 + ? 'assets/images/male_avatar.png' + : 'assets/images/female_avatar.png', + fit: BoxFit.cover, + ), + ), ), ), Expanded( @@ -266,14 +276,23 @@ class PatientReferralItemWidget extends StatelessWidget { margin: EdgeInsets.only( left: 10, top: 25, right: 10, bottom: 0), child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( referralDoctorName, fontFamily: 'Poppins', - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, fontSize: 1.7 * SizeConfig.textMultiplier, - color: Color(0XFF2E303A), + color: Colors.black, ), + if (clinicDescription != null) + AppText( + clinicDescription, + fontFamily: 'Poppins', + fontWeight: FontWeight.w700, + fontSize: 1.4 * SizeConfig.textMultiplier, + color: Color(0XFF2E303A), + ), ], ), ), diff --git a/lib/widgets/patients/profile/patient-profile-header-new-design_in_patient.dart b/lib/widgets/patients/profile/patient-profile-header-new-design_in_patient.dart index ca6910ae..b10533f9 100644 --- a/lib/widgets/patients/profile/patient-profile-header-new-design_in_patient.dart +++ b/lib/widgets/patients/profile/patient-profile-header-new-design_in_patient.dart @@ -185,7 +185,7 @@ class PatientProfileHeaderNewDesignInPatient extends StatelessWidget { fontSize: 1.2 * SizeConfig.textMultiplier, ), AppText( - "${DateTime.now().difference(DateUtils.getDateTimeFromServerFormat(patient.createdOn)).inDays + 1}", + "${DateTime.now().difference(DateUtils.getDateTimeFromServerFormat(patient.admissionDate)).inDays}", fontSize: 1.4 * SizeConfig.textMultiplier, fontWeight: FontWeight.w700), ], From 714c569a13957746517a6fc5b4e1a7c0e11596be Mon Sep 17 00:00:00 2001 From: hussam al-habibeh Date: Fri, 23 Apr 2021 18:16:32 +0300 Subject: [PATCH 8/9] hot fix --- lib/screens/procedures/ProcedureCard.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/screens/procedures/ProcedureCard.dart b/lib/screens/procedures/ProcedureCard.dart index 0f865701..5684f527 100644 --- a/lib/screens/procedures/ProcedureCard.dart +++ b/lib/screens/procedures/ProcedureCard.dart @@ -57,7 +57,7 @@ class ProcedureCard extends StatelessWidget { bottomLeft: Radius.circular(10), ), color: - entityList.orderType == 1 ? Colors.red[500] : Colors.black, + entityList.orderType == 0 ? Colors.black : Colors.red[500], ), ), Expanded( From 6d530301b638a672e73c2ad2f6094b06f1771a55 Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Fri, 23 Apr 2021 18:44:09 +0300 Subject: [PATCH 9/9] done first page in ReferralInPatient --- lib/config/config.dart | 4 +- lib/config/localized_values.dart | 1 + lib/core/model/MyReferralPatientModel.dart | 258 ++++++++++++++++++ .../service/MyReferralPatientService.dart | 69 +++++ .../viewModel/patient-referral-viewmodel.dart | 24 +- lib/locator.dart | 2 + .../my-referral-inpatient-screen.dart | 92 +++++++ .../referral/patient_referral_screen.dart | 4 +- lib/util/date-utils.dart | 4 + lib/util/translations_delegate_base.dart | 4 +- .../patient-referral-item-widget.dart | 12 +- 11 files changed, 458 insertions(+), 16 deletions(-) create mode 100644 lib/core/model/MyReferralPatientModel.dart create mode 100644 lib/core/service/MyReferralPatientService.dart create mode 100644 lib/screens/patients/profile/referral/my-referral-inpatient-screen.dart diff --git a/lib/config/config.dart b/lib/config/config.dart index 8b4bf1f9..e48bc953 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -235,6 +235,8 @@ const GET_BOX_QUANTITY = ///GET ECG const GET_ECG = "Services/Patients.svc/REST/HIS_GetPatientMuseResults"; +const GET_MY_REFERRAL_INPATIENT = "Services/DoctorApplication.svc/REST/GtMyReferralPatient"; + const GET_PAtIENTS_INSURANCE_APPROVALS = "Services/Patients.svc/REST/GetApprovalStatus"; @@ -319,7 +321,7 @@ const TRANSACTION_NO = 0; const LANGUAGE_ID = 2; const STAMP = '2020-04-27T12:17:17.721Z'; const IP_ADDRESS = '9.9.9.9'; -const VERSION_ID = 5.5; +const VERSION_ID = 5.6; const CHANNEL = 9; const SESSION_ID = 'BlUSkYymTt'; const IS_LOGIN_FOR_DOCTOR_APP = true; diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index b2c201e1..a19008e9 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -859,4 +859,5 @@ const Map> localizedValues = { "noOfDays": {"en": "No of days", "ar": "عدد الأيام"}, "numOfDays": {"en": "Number of Days", "ar": "عدد الأيام"}, "replayBefore": {"en": "Replay Before", "ar": "رد قبل"}, + "refClinic": {"en": "Ref Clinic", "ar": "Ref Clinic"}, }; diff --git a/lib/core/model/MyReferralPatientModel.dart b/lib/core/model/MyReferralPatientModel.dart new file mode 100644 index 00000000..f2c9c425 --- /dev/null +++ b/lib/core/model/MyReferralPatientModel.dart @@ -0,0 +1,258 @@ +import 'package:doctor_app_flutter/util/date-utils.dart'; + +class MyReferralPatientModel { + dynamic rowID; + int projectID; + int lineItemNo; + int doctorID; + int patientID; + String doctorName; + dynamic doctorNameN; + String firstName; + String middleName; + String lastName; + dynamic firstNameN; + dynamic middleNameN; + dynamic lastNameN; + int gender; + String dateofBirth; + String mobileNumber; + String emailAddress; + String patientIdentificationNo; + int patientType; + String admissionNo; + String admissionDate; + String roomID; + String bedID; + dynamic nursingStationID; + dynamic description; + String nationalityName; + dynamic nationalityNameN; + String clinicDescription; + String clinicDescriptionN; + int referralDoctor; + int referringDoctor; + int referralClinic; + int referringClinic; + int referralStatus; + DateTime referralDate; + String referringDoctorRemarks; + String referredDoctorRemarks; + String referralResponseOn; + int priority; + int frequency; + String mAXResponseTime; + int episodeID; + int appointmentNo; + String appointmentDate; + int appointmentType; + int patientMRN; + String createdOn; + int clinicID; + String nationalityID; + String age; + String doctorImageURL; + String frequencyDescription; + String genderDescription; + bool isDoctorLate; + bool isDoctorResponse; + String nationalityFlagURL; + String nursingStationName; + String priorityDescription; + String referringClinicDescription; + String referringDoctorName; + + MyReferralPatientModel( + {this.rowID, + this.projectID, + this.lineItemNo, + this.doctorID, + this.patientID, + this.doctorName, + this.doctorNameN, + this.firstName, + this.middleName, + this.lastName, + this.firstNameN, + this.middleNameN, + this.lastNameN, + this.gender, + this.dateofBirth, + this.mobileNumber, + this.emailAddress, + this.patientIdentificationNo, + this.patientType, + this.admissionNo, + this.admissionDate, + this.roomID, + this.bedID, + this.nursingStationID, + this.description, + this.nationalityName, + this.nationalityNameN, + this.clinicDescription, + this.clinicDescriptionN, + this.referralDoctor, + this.referringDoctor, + this.referralClinic, + this.referringClinic, + this.referralStatus, + this.referralDate, + this.referringDoctorRemarks, + this.referredDoctorRemarks, + this.referralResponseOn, + this.priority, + this.frequency, + this.mAXResponseTime, + this.episodeID, + this.appointmentNo, + this.appointmentDate, + this.appointmentType, + this.patientMRN, + this.createdOn, + this.clinicID, + this.nationalityID, + this.age, + this.doctorImageURL, + this.frequencyDescription, + this.genderDescription, + this.isDoctorLate, + this.isDoctorResponse, + this.nationalityFlagURL, + this.nursingStationName, + this.priorityDescription, + this.referringClinicDescription, + this.referringDoctorName}); + + MyReferralPatientModel.fromJson(Map json) { + rowID = json['RowID']; + projectID = json['ProjectID']; + lineItemNo = json['LineItemNo']; + doctorID = json['DoctorID']; + patientID = json['PatientID']; + doctorName = json['DoctorName']; + doctorNameN = json['DoctorNameN']; + firstName = json['FirstName']; + middleName = json['MiddleName']; + lastName = json['LastName']; + firstNameN = json['FirstNameN']; + middleNameN = json['MiddleNameN']; + lastNameN = json['LastNameN']; + gender = json['Gender']; + dateofBirth = json['DateofBirth']; + mobileNumber = json['MobileNumber']; + emailAddress = json['EmailAddress']; + patientIdentificationNo = json['PatientIdentificationNo']; + patientType = json['PatientType']; + admissionNo = json['AdmissionNo']; + admissionDate = json['AdmissionDate']; + roomID = json['RoomID']; + bedID = json['BedID']; + nursingStationID = json['NursingStationID']; + description = json['Description']; + nationalityName = json['NationalityName']; + nationalityNameN = json['NationalityNameN']; + clinicDescription = json['ClinicDescription']; + clinicDescriptionN = json['ClinicDescriptionN']; + referralDoctor = json['ReferralDoctor']; + referringDoctor = json['ReferringDoctor']; + referralClinic = json['ReferralClinic']; + referringClinic = json['ReferringClinic']; + referralStatus = json['ReferralStatus']; + referralDate = DateUtils.convertStringToDate(json['ReferralDate']); + referringDoctorRemarks = json['ReferringDoctorRemarks']; + referredDoctorRemarks = json['ReferredDoctorRemarks']; + referralResponseOn = json['ReferralResponseOn']; + priority = json['Priority']; + frequency = json['Frequency']; + mAXResponseTime = json['MAXResponseTime']; + episodeID = json['EpisodeID']; + appointmentNo = json['AppointmentNo']; + appointmentDate = json['AppointmentDate']; + appointmentType = json['AppointmentType']; + patientMRN = json['PatientMRN']; + createdOn = json['CreatedOn']; + clinicID = json['ClinicID']; + nationalityID = json['NationalityID']; + age = json['Age']; + doctorImageURL = json['DoctorImageURL']; + frequencyDescription = json['FrequencyDescription']; + genderDescription = json['GenderDescription']; + isDoctorLate = json['IsDoctorLate']; + isDoctorResponse = json['IsDoctorResponse']; + nationalityFlagURL = json['NationalityFlagURL']; + nursingStationName = json['NursingStationName']; + priorityDescription = json['PriorityDescription']; + referringClinicDescription = json['ReferringClinicDescription']; + referringDoctorName = json['ReferringDoctorName']; + } + + Map toJson() { + final Map data = new Map(); + data['RowID'] = this.rowID; + data['ProjectID'] = this.projectID; + data['LineItemNo'] = this.lineItemNo; + data['DoctorID'] = this.doctorID; + data['PatientID'] = this.patientID; + data['DoctorName'] = this.doctorName; + data['DoctorNameN'] = this.doctorNameN; + data['FirstName'] = this.firstName; + data['MiddleName'] = this.middleName; + data['LastName'] = this.lastName; + data['FirstNameN'] = this.firstNameN; + data['MiddleNameN'] = this.middleNameN; + data['LastNameN'] = this.lastNameN; + data['Gender'] = this.gender; + data['DateofBirth'] = this.dateofBirth; + data['MobileNumber'] = this.mobileNumber; + data['EmailAddress'] = this.emailAddress; + data['PatientIdentificationNo'] = this.patientIdentificationNo; + data['PatientType'] = this.patientType; + data['AdmissionNo'] = this.admissionNo; + data['AdmissionDate'] = this.admissionDate; + data['RoomID'] = this.roomID; + data['BedID'] = this.bedID; + data['NursingStationID'] = this.nursingStationID; + data['Description'] = this.description; + data['NationalityName'] = this.nationalityName; + data['NationalityNameN'] = this.nationalityNameN; + data['ClinicDescription'] = this.clinicDescription; + data['ClinicDescriptionN'] = this.clinicDescriptionN; + data['ReferralDoctor'] = this.referralDoctor; + data['ReferringDoctor'] = this.referringDoctor; + data['ReferralClinic'] = this.referralClinic; + data['ReferringClinic'] = this.referringClinic; + data['ReferralStatus'] = this.referralStatus; + data['ReferralDate'] = this.referralDate; + data['ReferringDoctorRemarks'] = this.referringDoctorRemarks; + data['ReferredDoctorRemarks'] = this.referredDoctorRemarks; + data['ReferralResponseOn'] = this.referralResponseOn; + data['Priority'] = this.priority; + data['Frequency'] = this.frequency; + data['MAXResponseTime'] = this.mAXResponseTime; + data['EpisodeID'] = this.episodeID; + data['AppointmentNo'] = this.appointmentNo; + data['AppointmentDate'] = this.appointmentDate; + data['AppointmentType'] = this.appointmentType; + data['PatientMRN'] = this.patientMRN; + data['CreatedOn'] = this.createdOn; + data['ClinicID'] = this.clinicID; + data['NationalityID'] = this.nationalityID; + data['Age'] = this.age; + data['DoctorImageURL'] = this.doctorImageURL; + data['FrequencyDescription'] = this.frequencyDescription; + data['GenderDescription'] = this.genderDescription; + data['IsDoctorLate'] = this.isDoctorLate; + data['IsDoctorResponse'] = this.isDoctorResponse; + data['NationalityFlagURL'] = this.nationalityFlagURL; + data['NursingStationName'] = this.nursingStationName; + data['PriorityDescription'] = this.priorityDescription; + data['ReferringClinicDescription'] = this.referringClinicDescription; + data['ReferringDoctorName'] = this.referringDoctorName; + return data; + } + + get patientName { + return this.firstName+" "+this.lastName; + } +} diff --git a/lib/core/service/MyReferralPatientService.dart b/lib/core/service/MyReferralPatientService.dart new file mode 100644 index 00000000..3401130a --- /dev/null +++ b/lib/core/service/MyReferralPatientService.dart @@ -0,0 +1,69 @@ +import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/core/model/MyReferralPatientModel.dart'; +import 'package:doctor_app_flutter/core/service/base/base_service.dart'; +import 'package:doctor_app_flutter/models/doctor/request_add_referred_doctor_remarks.dart'; + +class MyReferralInPatientService extends BaseService { + List myReferralPatients = List(); + + Future getMyReferralPatientService() async { + hasError = false; + Map body = Map(); + await getDoctorProfile(); + body['DoctorID'] = doctorProfile.doctorID; + body['FirstName'] = "0"; + body['MiddleName'] = "0"; + body['LastName'] = "0"; + body['PatientMobileNumber'] = "0"; + body['PatientIdentificationID'] = "0"; + body['PatientID'] = 0; + body['From'] = "0"; + body['To'] = "0"; + body['stamp'] = "2021-04-23T15:03:34.189Z";//DateTime.now().toIso8601String(); + body['IsLoginForDoctorApp'] = true; + body['IPAdress'] = "11.11.11.11"; + body['PatientOutSA'] = false; + body['PatientTypeID'] = 1; + myReferralPatients.clear(); + await baseAppClient.post( + GET_MY_REFERRAL_INPATIENT, + onSuccess: (dynamic response, int statusCode) { + if (response['List_MyReferralPatient'] != null) { + response['List_MyReferralPatient'].forEach((v) { + myReferralPatients.add(MyReferralPatientModel.fromJson(v)); + }); + } + }, + onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, + body: body, + ); + } + + Future replay(String referredDoctorRemarks, MyReferralPatientModel referral) async { + await getDoctorProfile(); + + RequestAddReferredDoctorRemarks _requestAddReferredDoctorRemarks = RequestAddReferredDoctorRemarks(); + + _requestAddReferredDoctorRemarks.projectID = referral.projectID; + _requestAddReferredDoctorRemarks.admissionNo = referral.admissionNo.toString(); + _requestAddReferredDoctorRemarks.lineItemNo = referral.lineItemNo; + _requestAddReferredDoctorRemarks.referredDoctorRemarks = referredDoctorRemarks; + _requestAddReferredDoctorRemarks.editedBy = doctorProfile.doctorID; + _requestAddReferredDoctorRemarks.patientID = referral.patientID; + _requestAddReferredDoctorRemarks.referringDoctor = referral.referringDoctor; + await baseAppClient.post( + ADD_REFERRED_DOCTOR_REMARKS, + body: _requestAddReferredDoctorRemarks.toJson(), + onSuccess: (dynamic body, int statusCode) { + + }, + onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, + ); + } +} diff --git a/lib/core/viewModel/patient-referral-viewmodel.dart b/lib/core/viewModel/patient-referral-viewmodel.dart index c4666f6f..72e0facc 100644 --- a/lib/core/viewModel/patient-referral-viewmodel.dart +++ b/lib/core/viewModel/patient-referral-viewmodel.dart @@ -1,5 +1,7 @@ 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/model/MyReferralPatientModel.dart'; +import 'package:doctor_app_flutter/core/service/MyReferralPatientService.dart'; import 'package:doctor_app_flutter/core/service/ReferralService.dart'; import 'package:doctor_app_flutter/core/service/patient-doctor-referral-service.dart'; import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; @@ -17,20 +19,21 @@ class PatientReferralViewModel extends BaseViewModel { PatientReferralService _referralPatientService = locator(); - ReferralService _referralService = - locator(); + ReferralService _referralService = locator(); + + MyReferralInPatientService _myReferralService = locator(); List get branchesList => _referralPatientService.projectsList; List get clinicsList => _referralPatientService.clinicsList; - List get referralFrequencyList => - _referralPatientService.frequencyList; + List get referralFrequencyList => _referralPatientService.frequencyList; List doctorsList = []; - List get clinicDoctorsList => - _referralPatientService.doctorsList; + List get clinicDoctorsList => _referralPatientService.doctorsList; + + List get myReferralPatients => _myReferralService.myReferralPatients; List get listMyReferredPatientModel => _referralPatientService.listMyReferredPatientModel; @@ -142,6 +145,15 @@ class PatientReferralViewModel extends BaseViewModel { } else setState(ViewState.Idle); } + Future getMyReferralPatientService() async { + setState(ViewState.Busy); + await _myReferralService.getMyReferralPatientService(); + if (_myReferralService.hasError) { + error = _myReferralService.error; + setState(ViewState.Error); + } else + setState(ViewState.Idle); + } Future responseReferral( PendingReferral pendingReferral, bool isAccepted) async { diff --git a/lib/locator.dart b/lib/locator.dart index 79efbb9a..2890a38e 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -15,6 +15,7 @@ import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart'; import 'package:get_it/get_it.dart'; import 'core/service/InsuranceCardService.dart'; +import 'core/service/MyReferralPatientService.dart'; import 'core/service/PatientMuseService.dart'; import 'core/service/ReferralService.dart'; import 'core/service/SOAP_service.dart'; @@ -74,6 +75,7 @@ void setupLocator() { locator.registerLazySingleton(() => RadiologyService()); locator.registerLazySingleton(() => PrescriptionsService()); locator.registerLazySingleton(() => ReferralService()); + locator.registerLazySingleton(() => MyReferralInPatientService()); /// View Model locator.registerFactory(() => DoctorReplayViewModel()); diff --git a/lib/screens/patients/profile/referral/my-referral-inpatient-screen.dart b/lib/screens/patients/profile/referral/my-referral-inpatient-screen.dart new file mode 100644 index 00000000..ff12738e --- /dev/null +++ b/lib/screens/patients/profile/referral/my-referral-inpatient-screen.dart @@ -0,0 +1,92 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; +import 'package:doctor_app_flutter/core/viewModel/auth_view_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/patient-referral-viewmodel.dart'; +import 'package:doctor_app_flutter/screens/base/base_view.dart'; +import 'package:doctor_app_flutter/util/date-utils.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; +import 'package:doctor_app_flutter/widgets/patients/patient-referral-item-widget.dart'; +import 'package:doctor_app_flutter/widgets/patients/profile/profile-welcome-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:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:provider/provider.dart'; + +import '../../../../routes.dart'; + +class MyReferralInPatientScreen extends StatelessWidget { + + @override + Widget build(BuildContext context) { + return BaseView( + onModelReady: (model) => model.getMyReferralPatientService(), + builder: (_, model, w) => AppScaffold( + baseViewModel: model, + isShowAppBar: false, + appBarTitle: TranslationBase.of(context).referPatient, + body: model.myReferralPatients.isEmpty + ? Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox( + height: 100, + ), + Image.asset('assets/images/no-data.png'), + Padding( + padding: const EdgeInsets.all(8.0), + child: AppText( + TranslationBase.of(context).referralEmptyMsg, + color: Theme.of(context).errorColor, + ), + ) + ], + ), + ) + : SingleChildScrollView( + child: Container( + margin: EdgeInsets.only(top: 70), + // color: Colors.white, + // height: MediaQuery.of(context).size.height, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // SizedBox(height: 50), + ...List.generate( + model.myReferralPatients.length, + (index) => InkWell( + onTap: () { + //TODO build the nwe page + + }, + child: PatientReferralItemWidget( + referralStatus: model.getReferralStatusNameByCode(model.myReferralPatients[index].referralStatus,context), + referralStatusCode: model.myReferralPatients[index].referralStatus, + patientName: model.myReferralPatients[index].patientName, + patientGender: model.myReferralPatients[index].gender, + referredDate: DateUtils.getDayMonthYearDateFormatted(model.myReferralPatients[index].referralDate), + referredTime: DateUtils.getTimeHHMMA(model.myReferralPatients[index].referralDate), + patientID: "${model.myReferralPatients[index].patientID}", + isSameBranch: false, + isReferral: true, + isReferralClinic: true, + referralClinic:"${model.myReferralPatients[index].referringClinicDescription}", + remark: model.myReferralPatients[index].referringDoctorRemarks, + nationality: model.myReferralPatients[index].nationalityName, + nationalityFlag: model.myReferralPatients[index].nationalityFlagURL, + doctorAvatar: model.myReferralPatients[index].doctorImageURL, + referralDoctorName: model.myReferralPatients[index].referringDoctorName, + clinicDescription: model.myReferralPatients[index].referringClinicDescription, + infoIcon: Icon(FontAwesomeIcons.arrowRight, + size: 25, color: Colors.black), + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/screens/patients/profile/referral/patient_referral_screen.dart b/lib/screens/patients/profile/referral/patient_referral_screen.dart index ef18866c..ecd85db2 100644 --- a/lib/screens/patients/profile/referral/patient_referral_screen.dart +++ b/lib/screens/patients/profile/referral/patient_referral_screen.dart @@ -7,6 +7,8 @@ import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'my-referral-inpatient-screen.dart'; + class PatientReferralScreen extends StatefulWidget { @override _PatientReferralScreen createState() => _PatientReferralScreen(); @@ -89,7 +91,7 @@ class _PatientReferralScreen extends State physics: BouncingScrollPhysics(), controller: _tabController, children: [ - MyReferralPatientScreen(), + MyReferralInPatientScreen(), ReferredPatientScreen(), // MyReferredPatient(), ], diff --git a/lib/util/date-utils.dart b/lib/util/date-utils.dart index 35748638..fef77333 100644 --- a/lib/util/date-utils.dart +++ b/lib/util/date-utils.dart @@ -349,6 +349,10 @@ class DateUtils { return ""; } + static String getTimeHHMMA(DateTime dateTime){ + return DateFormat('hh:mm a').format(dateTime); + } + static String getTimeFormated(DateTime dateTime) { print(dateTime); if (dateTime != null) diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart index f40ce841..30b968c2 100644 --- a/lib/util/translations_delegate_base.dart +++ b/lib/util/translations_delegate_base.dart @@ -568,8 +568,8 @@ class TranslationBase { String get referTo => localizedValues['referTo'][locale.languageCode]; - String get referredFrom => - localizedValues['referredFrom'][locale.languageCode]; + String get referredFrom => localizedValues['referredFrom'][locale.languageCode]; + String get refClinic => localizedValues['refClinic'][locale.languageCode]; String get branch => localizedValues['branch'][locale.languageCode]; diff --git a/lib/widgets/patients/patient-referral-item-widget.dart b/lib/widgets/patients/patient-referral-item-widget.dart index 0bad54a2..1ec1a199 100644 --- a/lib/widgets/patients/patient-referral-item-widget.dart +++ b/lib/widgets/patients/patient-referral-item-widget.dart @@ -20,6 +20,8 @@ class PatientReferralItemWidget extends StatelessWidget { final String patientID; final isSameBranch; final bool isReferral; + final bool isReferralClinic; + final String referralClinic; final String remark; final String nationality; final String nationalityFlag; @@ -44,7 +46,7 @@ class PatientReferralItemWidget extends StatelessWidget { this.doctorAvatar, this.referralDoctorName, this.clinicDescription, - this.infoIcon}); + this.infoIcon,this.isReferralClinic=false,this.referralClinic}); @override Widget build(BuildContext context) { @@ -157,17 +159,15 @@ class PatientReferralItemWidget extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.start, children: [ AppText( - TranslationBase.of(context).referredFrom, + isSameBranch ? TranslationBase.of(context).referredFrom :TranslationBase.of(context).refClinic, fontFamily: 'Poppins', fontWeight: FontWeight.w600, fontSize: 1.7 * SizeConfig.textMultiplier, color: Color(0XFF575757), ), + AppText( - isSameBranch - ? TranslationBase.of(context).sameBranch - : TranslationBase.of(context) - .otherBranch, + !isReferralClinic? isSameBranch ? TranslationBase.of(context).sameBranch : TranslationBase.of(context).otherBranch: " "+referralClinic, fontFamily: 'Poppins', fontWeight: FontWeight.w700, fontSize: 1.8 * SizeConfig.textMultiplier,