From 42feae9a2e3727468f8f5373cb137c4764a2b81a Mon Sep 17 00:00:00 2001 From: RoaaGhali98 Date: Mon, 10 Jan 2022 11:16:31 +0200 Subject: [PATCH 01/16] add new medication service --- lib/routes.dart | 7 + .../intervention_medication.dart | 299 ++++++++++++++++++ .../new-medication/new_medication_screen.dart | 119 +++++++ .../profile_gird_for_InPatient.dart | 7 + pubspec.lock | 7 + pubspec.yaml | 1 + 6 files changed, 440 insertions(+) create mode 100644 lib/screens/patients/profile/new-medication/intervention_medication.dart create mode 100644 lib/screens/patients/profile/new-medication/new_medication_screen.dart diff --git a/lib/routes.dart b/lib/routes.dart index 8f636d74..e77bfaac 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -14,6 +14,8 @@ import 'package:doctor_app_flutter/screens/patients/profile/lab_result/labs_home import 'package:doctor_app_flutter/screens/patients/profile/medical_report/AddVerifyMedicalReport.dart'; import 'package:doctor_app_flutter/screens/patients/profile/medical_report/MedicalReportDetailPage.dart'; import 'package:doctor_app_flutter/screens/patients/profile/medical_report/MedicalReportPage.dart'; +import 'package:doctor_app_flutter/screens/patients/profile/new-medication/intervention_medication.dart'; +import 'package:doctor_app_flutter/screens/patients/profile/new-medication/new_medication_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/notes/note/progress_note_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/notes/nursing_note/nursing_note_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/operation_report/operation_report.dart'; @@ -81,6 +83,9 @@ const String DIAGNOSIS_FOR_IN_PATIENT = 'get_diagnosis_for_in_patient'; const String DIABETIC_CHART_VALUES = 'get_diabetic_chart_values'; const String DISCHARGE_SUMMARY = 'discharge_summary'; +const String NEW_MEDICATION = 'new_medication'; +const String INTERVENTION_MEDICATION = 'intervention_medication'; + //todo: change the routing way. var routes = { @@ -131,4 +136,6 @@ var routes = { DIAGNOSIS_FOR_IN_PATIENT: (_) => DiagnosisScreen(), ADMISSION_ORDERS: (_) => AdmissionOrdersScreen(), DIABETIC_CHART_VALUES: (_) => DiabeticChart(), + NEW_MEDICATION: (_) => NewMedicationScreen(), + INTERVENTION_MEDICATION: (_) => InterventionMedicationScreen(), }; diff --git a/lib/screens/patients/profile/new-medication/intervention_medication.dart b/lib/screens/patients/profile/new-medication/intervention_medication.dart new file mode 100644 index 00000000..826d0739 --- /dev/null +++ b/lib/screens/patients/profile/new-medication/intervention_medication.dart @@ -0,0 +1,299 @@ +import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/pednding_orders_view_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/project_view_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/date-utils.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; +import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-app-bar.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_bg_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; +import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +class InterventionMedicationScreen extends StatefulWidget { + const InterventionMedicationScreen({Key key}) : super(key: key); + + @override + _InterventionMedicationScreenState createState() => _InterventionMedicationScreenState(); +} + +class _InterventionMedicationScreenState extends State { + bool isDischargedPatient = false; + + AuthenticationViewModel authenticationViewModel; + + ProjectViewModel projectViewModel; + + @override + Widget build(BuildContext context) { + authenticationViewModel = Provider.of(context); + projectViewModel = Provider.of(context); + final routeArgs = ModalRoute.of(context).settings.arguments as Map; + PatiantInformtion patient = routeArgs['patient']; + String arrivalType = routeArgs['arrivalType']; + if (routeArgs.containsKey('isDischargedPatient')) + isDischargedPatient = routeArgs['isDischargedPatient']; + return BaseView( + onModelReady: (model) => model.getAdmissionOrders( + admissionNo: int.parse(patient.admissionNo), + patientId: patient.patientMRN), + builder: (_, model, w) => AppScaffold( + baseViewModel: model, + backgroundColor: Theme.of(context).scaffoldBackgroundColor, + //appBarTitle: TranslationBase.of(context).progressNote, + appBar: PatientProfileAppBar( + patient, + isInpatient: true, + ), + body: model.admissionOrderList == null || + model.admissionOrderList.length == 0 + ? Center( + child: ErrorMessage( + error: TranslationBase.of(context).noDataAvailable, + ), + ) + : Container( + color: Colors.grey[200], + child: Column( + children: [ + Padding( + padding: EdgeInsets.all(12.0), + child: Column( + children: [ + Row( + children: [ + AppText( + TranslationBase.of(context).admission, + fontSize: 15.0, + fontWeight: FontWeight.w600, + fontFamily: 'Poppins', + ), + ], + ), + Row( + children: [ + AppText( + TranslationBase.of(context).orders, + fontSize: 30.0, + fontWeight: FontWeight.w700, + ), + ], + ), + ], + ), + ), + Expanded( + child: Container( + child: ListView.builder( + itemCount: model.admissionOrderList.length, + itemBuilder: (BuildContext ctxt, int index) { + return FractionallySizedBox( + widthFactor: 0.95, + child: CardWithBgWidget( + hasBorder: false, + bgColor: Colors.white, + widget: Column( + children: [ + Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + SizedBox( + height: 10, + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Container( + width: MediaQuery.of(context) + .size + .width * + 0.60, + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + AppText( + TranslationBase.of( + context) + .createdBy + .toString(), + fontSize: 13, + ), + Expanded( + child: AppText( + model + .admissionOrderList[ + index] + .createdByName + .toString() ?? + '', + fontWeight: + FontWeight.w600, + fontSize: 12, + isCopyable: true, + ), + ), + ], + ), + Row( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + AppText( + TranslationBase.of( + context) + .procedureName + .toString() + + ": ", + fontSize: 13, + ), + Expanded( + child: AppText( + model + .admissionOrderList[ + index] + .procedureName + .toString() ?? + '', + fontWeight: + FontWeight.w600, + fontSize: 12, + isCopyable: true, + ), + ), + ], + ), + Row( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + AppText( + TranslationBase.of( + context) + .orderNo + .toString(), + fontSize: 13, + ), + Expanded( + child: AppText( + model + .admissionOrderList[ + index] + .orderNo + .toString() ?? + '', + fontWeight: + FontWeight.w600, + fontSize: 12, + isCopyable: true, + ), + ), + ], + ), + ], + ), + ), + Column( + children: [ + AppText( + model + .admissionOrderList[ + index] + .createdOn != + null + ? AppDateUtils.getDayMonthYearDateFormatted( + AppDateUtils + .getDateTimeFromServerFormat(model + .admissionOrderList[ + index] + .createdOn), + isArabic: + projectViewModel + .isArabic, + isMonthShort: true) + : AppDateUtils + .getDayMonthYearDateFormatted( + DateTime.now(), + isArabic: + projectViewModel + .isArabic), + fontWeight: FontWeight.w600, + fontSize: 14, + isCopyable: true, + ), + AppText( + model + .admissionOrderList[ + index] + .createdOn != + null + ? AppDateUtils.getHour( + AppDateUtils + .getDateTimeFromServerFormat(model + .admissionOrderList[ + index] + .createdOn)) + : AppDateUtils.getHour( + DateTime.now()), + fontWeight: FontWeight.w600, + fontSize: 14, + isCopyable: true, + ), + ], + crossAxisAlignment: + CrossAxisAlignment.end, + ) + ], + ), + SizedBox( + height: 8, + ), + // Row( + // mainAxisAlignment: + // MainAxisAlignment.start, + // children: [ + // Expanded( + // child: AppText( + // model + // .admissionOrderList[ + // index] + // .notes, + // fontSize: 10, + // isCopyable: true, + // ), + // ), + // ]) + ], + ), + SizedBox( + height: 20, + ), + ], + ), + ), + ); + }), + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/screens/patients/profile/new-medication/new_medication_screen.dart b/lib/screens/patients/profile/new-medication/new_medication_screen.dart new file mode 100644 index 00000000..fa3c3c69 --- /dev/null +++ b/lib/screens/patients/profile/new-medication/new_medication_screen.dart @@ -0,0 +1,119 @@ +import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/pednding_orders_view_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/project_view_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/date-utils.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; +import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-app-bar.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_bg_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; +import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; +import 'package:provider/provider.dart'; + +import '../../../../config/config.dart'; +import '../../../../routes.dart'; +import 'intervention_medication.dart'; + +class NewMedicationScreen extends StatefulWidget { + const NewMedicationScreen({Key key}) : super(key: key); + + @override + _NewMedicationScreenState createState() => _NewMedicationScreenState(); +} + +class _NewMedicationScreenState extends State { + bool isDischargedPatient = false; + + AuthenticationViewModel authenticationViewModel; + + ProjectViewModel projectViewModel; + + @override + Widget build(BuildContext context) { + authenticationViewModel = Provider.of(context); + projectViewModel = Provider.of(context); + final routeArgs = ModalRoute.of(context).settings.arguments as Map; + PatiantInformtion patient = routeArgs['patient']; + String arrivalType = routeArgs['arrivalType']; + if (routeArgs.containsKey('isDischargedPatient')) + isDischargedPatient = routeArgs['isDischargedPatient']; + return BaseView( + onModelReady: (model) => model.getAdmissionOrders( + admissionNo: int.parse(patient.admissionNo), + patientId: patient.patientMRN), + builder: (_, model, w) => AppScaffold( + baseViewModel: model, + backgroundColor: Colors.white, + //appBarTitle: TranslationBase.of(context).progressNote, + appBar: PatientProfileAppBar( + patient, + isInpatient: true, + ), + body: model.admissionOrderList == null || + model.admissionOrderList.length == 0 + ? Center( + child: ErrorMessage( + error: TranslationBase.of(context).noDataAvailable, + ), + ) + : Container( + color: Colors.white, + child: Padding( + padding: EdgeInsets.only(left: 130,top: 300), + child: Column( + children: [ + TextButton( + onPressed: () { + DatePicker.showDatePicker(context, + showTitleActions: true, + minTime: DateTime(1990, 3, 5), + maxTime: DateTime(2022, 6, 7), onChanged: (date) { + print('change $date'); + }, onConfirm: (date) { + print('confirm $date'); + }, currentTime: DateTime.now(), locale: LocaleType.en); + }, + child: Text( + 'Select Date From', + style: TextStyle(color: Colors.blue), + )), + TextButton( + onPressed: () { + DatePicker.showDatePicker(context, + showTitleActions: true, + minTime: DateTime(1990, 3, 5), + maxTime: DateTime(2022, 6, 7), onChanged: (date) { + print('change $date'); + }, onConfirm: (date) { + print('confirm $date'); + }, currentTime: DateTime.now(), locale: LocaleType.en); + }, + child: Text( + 'Select Date To', + style: TextStyle(color: Colors.blue), + )), + + RaisedButton( + onPressed: () => { + INTERVENTION_MEDICATION, + }, + child: + Text('Search'), + color: AppGlobal.appGreenColor, + textColor: Colors.white, + ), + ], + ), + ), + ), + + + ), + ); + } +} diff --git a/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart b/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart index 22d784e7..233a8dbf 100644 --- a/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart +++ b/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart @@ -167,6 +167,13 @@ class ProfileGridForInPatient extends StatelessWidget { 'assets/images/svgs/profile_screen/diabetic chart.svg', isInPatient: isInpatient, ), + PatientProfileCardModel( + 'New', + 'Medication', + NEW_MEDICATION, + '', + isInPatient: isInpatient, + ), ]; return Padding( diff --git a/pubspec.lock b/pubspec.lock index 85e7f11e..3ba5bc57 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -489,6 +489,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.5.0" + flutter_datetime_picker: + dependency: "direct main" + description: + name: flutter_datetime_picker + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.1" flutter_device_type: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 766f55cb..dfc76868 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -112,6 +112,7 @@ dependencies: # Hijri # hijri: ^2.0.3 hijri_picker: ^3.0.0 + flutter_datetime_picker: ^1.5.1 # flutter_math_fork: ^0.6.0 # flutter_math_fork: ^0.6.0 From 0a0aa6ba77c87712b33568c7070eec840f98588b Mon Sep 17 00:00:00 2001 From: RoaaGhali98 Date: Mon, 10 Jan 2022 16:00:59 +0200 Subject: [PATCH 02/16] we add a new service called new_medication_screen --- .../profile/search_medication_view_model.dart | 422 ++++++++++++++++++ lib/locator.dart | 3 + .../new_medication_req_model.dart | 25 ++ .../new_medication_res_model.dart | 100 +++++ .../intervention_medication.dart | 16 +- .../new-medication/new_medication_screen.dart | 328 ++++++++++---- 6 files changed, 795 insertions(+), 99 deletions(-) create mode 100644 lib/core/viewModel/profile/search_medication_view_model.dart create mode 100644 lib/screens/patients/profile/new-medication-model/new_medication_req_model.dart create mode 100644 lib/screens/patients/profile/new-medication-model/new_medication_res_model.dart diff --git a/lib/core/viewModel/profile/search_medication_view_model.dart b/lib/core/viewModel/profile/search_medication_view_model.dart new file mode 100644 index 00000000..0e67496b --- /dev/null +++ b/lib/core/viewModel/profile/search_medication_view_model.dart @@ -0,0 +1,422 @@ +import 'package:doctor_app_flutter/core/enum/filter_type.dart'; +import 'package:doctor_app_flutter/core/enum/patient_type.dart'; +import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/model/patient_muse/PatientSearchRequestModel.dart'; +import 'package:doctor_app_flutter/core/service/patient/out_patient_service.dart'; +import 'package:doctor_app_flutter/core/service/patient/patientInPatientService.dart'; +import 'package:doctor_app_flutter/core/service/special_clinics/special_clinic_service.dart'; +import 'package:doctor_app_flutter/models/dashboard/get_special_clinical_care_mapping_List_Respose_Model.dart'; +import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; +import 'package:doctor_app_flutter/util/date-utils.dart'; + +import '../../../locator.dart'; +import '../base_view_model.dart'; + + + +class SearchMedicationViewModel extends BaseViewModel { + OutPatientService _outPatientService = locator(); + SpecialClinicsService _specialClinicsService = + locator(); + + List get patientList => _outPatientService.patientList; + + List + get specialClinicalCareMappingList => + _specialClinicsService.specialClinicalCareMappingList; + + List filterData = []; + + DateTime selectedFromDate; + DateTime selectedToDate; + + int firstSubsetIndex = 0; + int inPatientPageSize = 20; + int lastSubsetIndex = 20; + + List InpatientClinicList = []; + + searchData(String str) { + var strExist = str.length > 0 ? true : false; + if (strExist) { + filterData = []; + for (var i = 0; i < _outPatientService.patientList.length; i++) { + String firstName = + _outPatientService.patientList[i].firstName.toUpperCase(); + String lastName = + _outPatientService.patientList[i].lastName.toUpperCase(); + String mobile = + _outPatientService.patientList[i].mobileNumber.toUpperCase(); + String patientID = + _outPatientService.patientList[i].patientId.toString(); + + if (firstName.contains(str.toUpperCase()) || + lastName.contains(str.toUpperCase()) || + mobile.contains(str) || + patientID.contains(str)) { + filterData.add(_outPatientService.patientList[i]); + } + } + notifyListeners(); + } else { + filterData = _outPatientService.patientList; + notifyListeners(); + } + } + + getOutPatient(PatientSearchRequestModel patientSearchRequestModel, + {bool isLocalBusy = false}) async { + if (isLocalBusy) { + setState(ViewState.BusyLocal); + } else { + setState(ViewState.Busy); + } + await getDoctorProfile(isGetProfile: true); + patientSearchRequestModel.doctorID = doctorProfile.doctorID; + await _outPatientService.getOutPatient(patientSearchRequestModel); + if (_outPatientService.hasError) { + error = _outPatientService.error; + if (isLocalBusy) { + setState(ViewState.ErrorLocal); + } else { + setState(ViewState.Error); + } + } else { + filterData = _outPatientService.patientList; + setState(ViewState.Idle); + } + } + + sortOutPatient({bool isDes = false}) { + if (isDes) + filterData = filterData.reversed.toList(); + else + filterData = filterData.reversed.toList(); + setState(ViewState.Idle); + } + + getPatientFileInformation(PatientSearchRequestModel patientSearchRequestModel, + {bool isLocalBusy = false}) async { + setState(ViewState.Busy); + await _outPatientService + .getPatientFileInformation(patientSearchRequestModel); + if (_outPatientService.hasError) { + error = _outPatientService.error; + setState(ViewState.Error); + } else { + filterData = _outPatientService.patientList; + setState(ViewState.Idle); + } + } + + getPatientBasedOnDate( + {item, + PatientSearchRequestModel patientSearchRequestModel, + PatientType selectedPatientType, + bool isSearchWithKeyInfo, + OutPatientFilterType outPatientFilterType}) async { + String dateTo; + String dateFrom; + if (OutPatientFilterType.Previous == outPatientFilterType) { + selectedFromDate = DateTime( + DateTime.now().year, DateTime.now().month - 1, DateTime.now().day); + selectedToDate = DateTime( + DateTime.now().year, DateTime.now().month, DateTime.now().day - 1); + dateTo = AppDateUtils.convertDateToFormat(selectedToDate, 'yyyy-MM-dd'); + dateFrom = + AppDateUtils.convertDateToFormat(selectedFromDate, 'yyyy-MM-dd'); + } else if (OutPatientFilterType.NextWeek == outPatientFilterType) { + dateTo = AppDateUtils.convertDateToFormat( + DateTime(DateTime.now().year, DateTime.now().month, + DateTime.now().day + 6), + 'yyyy-MM-dd'); + + dateFrom = AppDateUtils.convertDateToFormat( + DateTime(DateTime.now().year, DateTime.now().month, + DateTime.now().day + 1), + 'yyyy-MM-dd'); + } else { + dateFrom = AppDateUtils.convertDateToFormat( + DateTime( + DateTime.now().year, DateTime.now().month, DateTime.now().day), + 'yyyy-MM-dd'); + dateTo = AppDateUtils.convertDateToFormat( + DateTime( + DateTime.now().year, DateTime.now().month, DateTime.now().day), + 'yyyy-MM-dd'); + } + PatientSearchRequestModel currentModel = PatientSearchRequestModel(); + currentModel.patientID = patientSearchRequestModel.patientID; + currentModel.firstName = patientSearchRequestModel.firstName; + currentModel.lastName = patientSearchRequestModel.lastName; + currentModel.middleName = patientSearchRequestModel.middleName; + currentModel.doctorID = patientSearchRequestModel.doctorID; + currentModel.from = dateFrom; + currentModel.to = dateTo; + await getOutPatient(currentModel, isLocalBusy: true); + filterData = _outPatientService.patientList; + } + + PatientInPatientService _inPatientService = + locator(); + + List get inPatientList => _inPatientService.inPatientList; + + List get myIinPatientList => + _inPatientService.myInPatientList; + + List filteredInPatientItems = List(); + List filteredMyInPatientItems = List(); + + Future getInPatientList(PatientSearchRequestModel requestModel, + {bool isMyInpatient = false, bool isLocalBusy = false}) async { + await getDoctorProfile(); + if (isLocalBusy) { + setState(ViewState.BusyLocal); + } else { + setState(ViewState.Busy); + } + if (inPatientList.length == 0) + await _inPatientService.getInPatientList(requestModel, false); + if (_inPatientService.hasError) { + error = _inPatientService.error; + if (isLocalBusy) { + setState(ViewState.ErrorLocal); + } else { + setState(ViewState.Error); + } + } else { + setDefaultInPatientList(); + generateInpatientClinicList(); + setState(ViewState.Idle); + } + } + + sortInPatient({bool isDes = false, bool isAllClinic, bool isMyInPatient}) { + if (isMyInPatient + ? myIinPatientList.length > 0 + : isAllClinic + ? inPatientList.length > 0 + : filteredInPatientItems.length > 0) { + List localInPatient = isMyInPatient + ? [...filteredMyInPatientItems] + : isAllClinic + ? [...inPatientList] + : [...filteredInPatientItems]; + if (isDes) + localInPatient.sort((PatiantInformtion a, PatiantInformtion b) => b + .admissionDateWithDateTimeForm + .compareTo(a.admissionDateWithDateTimeForm)); + else + localInPatient.sort((PatiantInformtion a, PatiantInformtion b) => a + .admissionDateWithDateTimeForm + .compareTo(b.admissionDateWithDateTimeForm)); + if (isMyInPatient) { + filteredMyInPatientItems.clear(); + filteredMyInPatientItems.addAll(localInPatient); + } else if (isAllClinic) { + resetInPatientPagination(); + filteredInPatientItems + .addAll(localInPatient.sublist(firstSubsetIndex, lastSubsetIndex)); + } else { + filteredInPatientItems.clear(); + filteredInPatientItems.addAll(localInPatient); + } + } + setState(ViewState.Idle); + } + + resetInPatientPagination() { + filteredInPatientItems.clear(); + firstSubsetIndex = 0; + lastSubsetIndex = inPatientPageSize - 1; + } + + Future setDefaultInPatientList() async { + setState(ViewState.BusyLocal); + await getDoctorProfile(); + resetInPatientPagination(); + if (inPatientList.length > 0) { + lastSubsetIndex = (inPatientList.length < inPatientPageSize - 1 + ? inPatientList.length + : inPatientPageSize - 1); + + filteredInPatientItems + .addAll(inPatientList.sublist(firstSubsetIndex, lastSubsetIndex)); + } + + if (myIinPatientList.length > 0) { + filteredMyInPatientItems.addAll(myIinPatientList); + } + setState(ViewState.Idle); + } + + generateInpatientClinicList() { + InpatientClinicList.clear(); + inPatientList.forEach((element) { + if (!InpatientClinicList.contains(element.clinicDescription)) { + InpatientClinicList.add(element.clinicDescription); + } + }); + } + + addOnFilteredList() { + if (lastSubsetIndex < inPatientList.length) { + firstSubsetIndex = firstSubsetIndex + + (inPatientList.length - lastSubsetIndex < inPatientPageSize - 1 + ? inPatientList.length - lastSubsetIndex + : inPatientPageSize - 1); + lastSubsetIndex = lastSubsetIndex + + (inPatientList.length - lastSubsetIndex < inPatientPageSize - 1 + ? inPatientList.length - lastSubsetIndex + : inPatientPageSize - 1); + filteredInPatientItems + .addAll(inPatientList.sublist(firstSubsetIndex, lastSubsetIndex)); + setState(ViewState.Idle); + } + } + + removeOnFilteredList() { + if (lastSubsetIndex - inPatientPageSize - 1 > 0) { + filteredInPatientItems.removeAt(lastSubsetIndex - inPatientPageSize - 1); + setState(ViewState.Idle); + } + } + + filterByHospital({int hospitalId}) { + filteredInPatientItems = []; + for (var i = 0; i < inPatientList.length; i++) { + if (inPatientList[i].projectId == hospitalId) { + filteredInPatientItems.add(inPatientList[i]); + } + } + notifyListeners(); + } + + filterByClinic({String clinicName}) { + filteredInPatientItems = []; + for (var i = 0; i < inPatientList.length; i++) { + if (inPatientList[i].clinicDescription == clinicName) { + filteredInPatientItems.add(inPatientList[i]); + } + } + notifyListeners(); + } + + void clearPatientList() { + _inPatientService.inPatientList = []; + _inPatientService.myInPatientList = []; + } + + void filterSearchResults(String query, + {bool isAllClinic, bool isMyInPatient}) { + var strExist = query.length > 0 ? true : false; + + if (isMyInPatient) { + List localFilteredMyInPatientItems = [ + ...myIinPatientList + ]; + + if (strExist) { + filteredMyInPatientItems.clear(); + for (var i = 0; i < localFilteredMyInPatientItems.length; i++) { + String firstName = + localFilteredMyInPatientItems[i].firstName.toUpperCase(); + String lastName = + localFilteredMyInPatientItems[i].lastName.toUpperCase(); + String mobile = + localFilteredMyInPatientItems[i].mobileNumber.toUpperCase(); + String patientID = + localFilteredMyInPatientItems[i].patientId.toString(); + + if (firstName.contains(query.toUpperCase()) || + lastName.contains(query.toUpperCase()) || + mobile.contains(query) || + patientID.contains(query)) { + filteredMyInPatientItems.add(localFilteredMyInPatientItems[i]); + } + } + notifyListeners(); + } else { + if (myIinPatientList.length > 0) filteredMyInPatientItems.clear(); + filteredMyInPatientItems.addAll(myIinPatientList); + notifyListeners(); + } + } else { + if (isAllClinic) { + if (strExist) { + filteredInPatientItems = []; + for (var i = 0; i < inPatientList.length; i++) { + String firstName = inPatientList[i].firstName.toUpperCase(); + String lastName = inPatientList[i].lastName.toUpperCase(); + String mobile = inPatientList[i].mobileNumber.toUpperCase(); + String patientID = inPatientList[i].patientId.toString(); + + if (firstName.contains(query.toUpperCase()) || + lastName.contains(query.toUpperCase()) || + mobile.contains(query) || + patientID.contains(query)) { + filteredInPatientItems.add(inPatientList[i]); + } + } + notifyListeners(); + } else { + if (inPatientList.length > 0) filteredInPatientItems.clear(); + filteredInPatientItems.addAll(inPatientList); + notifyListeners(); + } + } else { + List localFilteredInPatientItems = [ + ...filteredInPatientItems + ]; + + if (strExist) { + filteredInPatientItems.clear(); + for (var i = 0; i < localFilteredInPatientItems.length; i++) { + String firstName = + localFilteredInPatientItems[i].firstName.toUpperCase(); + String lastName = + localFilteredInPatientItems[i].lastName.toUpperCase(); + String mobile = + localFilteredInPatientItems[i].mobileNumber.toUpperCase(); + String patientID = + localFilteredInPatientItems[i].patientId.toString(); + + if (firstName.contains(query.toUpperCase()) || + lastName.contains(query.toUpperCase()) || + mobile.contains(query) || + patientID.contains(query)) { + filteredInPatientItems.add(localFilteredInPatientItems[i]); + } + } + notifyListeners(); + } else { + if (localFilteredInPatientItems.length > 0) + filteredInPatientItems.clear(); + filteredInPatientItems.addAll(localFilteredInPatientItems); + notifyListeners(); + } + } + } + } + + getSpecialClinicalCareMappingList(clinicId, + {bool isLocalBusy = false}) async { + if (isLocalBusy) { + setState(ViewState.BusyLocal); + } else { + setState(ViewState.Busy); + } + await _specialClinicsService.getSpecialClinicalCareMappingList(clinicId); + if (_specialClinicsService.hasError) { + error = _specialClinicsService.error; + if (isLocalBusy) { + setState(ViewState.ErrorLocal); + } else { + setState(ViewState.Error); + } + } else { + setState(ViewState.Idle); + } + } +} diff --git a/lib/locator.dart b/lib/locator.dart index 28f4bfdf..d05643f0 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -13,6 +13,7 @@ import 'package:doctor_app_flutter/core/viewModel/profile/discharge_summary_view import 'package:doctor_app_flutter/core/viewModel/profile/operation_report_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/scan_qr_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart'; +import 'package:doctor_app_flutter/screens/patients/profile/new-medication/new_medication_screen.dart'; import 'package:get_it/get_it.dart'; import 'core/service/AnalyticsService.dart'; @@ -65,6 +66,7 @@ import 'core/viewModel/patient-referral-viewmodel.dart'; import 'core/viewModel/patient-ucaf-viewmodel.dart'; import 'core/viewModel/patient-vital-sign-viewmodel.dart'; import 'core/viewModel/prescriptions_view_model.dart'; +import 'core/viewModel/profile/search_medication_view_model.dart'; import 'core/viewModel/radiology_view_model.dart'; import 'core/viewModel/referral_view_model.dart'; import 'core/viewModel/schedule_view_model.dart'; @@ -144,4 +146,5 @@ void setupLocator() { locator.registerFactory(() => PatientRegistrationViewModel()); locator.registerFactory(() => PendingOrdersViewModel()); locator.registerFactory(() => DischargeSummaryViewModel()); + locator.registerFactory(() => SearchMedicationViewModel()); } diff --git a/lib/screens/patients/profile/new-medication-model/new_medication_req_model.dart b/lib/screens/patients/profile/new-medication-model/new_medication_req_model.dart new file mode 100644 index 00000000..92cde706 --- /dev/null +++ b/lib/screens/patients/profile/new-medication-model/new_medication_req_model.dart @@ -0,0 +1,25 @@ +class InterventionMedicationReqModel { + int projectID; + int patientID; + String fromDate; + String toDate; + + InterventionMedicationReqModel( + {this.projectID, this.patientID, this.fromDate, this.toDate}); + + InterventionMedicationReqModel.fromJson(Map json) { + projectID = json['ProjectID']; + patientID = json['PatientID']; + fromDate = json['FromDate']; + toDate = json['ToDate']; + } + + Map toJson() { + final Map data = new Map(); + data['ProjectID'] = this.projectID; + data['PatientID'] = this.patientID; + data['FromDate'] = this.fromDate; + data['ToDate'] = this.toDate; + return data; + } +} \ No newline at end of file diff --git a/lib/screens/patients/profile/new-medication-model/new_medication_res_model.dart b/lib/screens/patients/profile/new-medication-model/new_medication_res_model.dart new file mode 100644 index 00000000..5d3dca39 --- /dev/null +++ b/lib/screens/patients/profile/new-medication-model/new_medication_res_model.dart @@ -0,0 +1,100 @@ +class InterventionMedicationResModel { + String cS; + String iHR; + String setupID; + int projectID; + int accessLevel; + int patientID; + String patientName; + String description; + int admissionNo; + int orderNo; + int prescriptionNo; + int lineItemNo; + int itemID; + String medication; + String doctorComments; + String startDatetime; + String stopDatetime; + int status; + int createdBy; + int authorizedby; + Null pharmacyRemarks; + String statusDescription; + + InterventionMedicationResModel( + {this.cS, + this.iHR, + this.setupID, + this.projectID, + this.accessLevel, + this.patientID, + this.patientName, + this.description, + this.admissionNo, + this.orderNo, + this.prescriptionNo, + this.lineItemNo, + this.itemID, + this.medication, + this.doctorComments, + this.startDatetime, + this.stopDatetime, + this.status, + this.createdBy, + this.authorizedby, + this.pharmacyRemarks, + this.statusDescription}); + + InterventionMedicationResModel.fromJson(Map json) { + cS = json['CS']; + iHR = json['IHR']; + setupID = json['SetupID']; + projectID = json['ProjectID']; + accessLevel = json['AccessLevel']; + patientID = json['PatientID']; + patientName = json['PatientName']; + description = json['Description']; + admissionNo = json['AdmissionNo']; + orderNo = json['OrderNo']; + prescriptionNo = json['PrescriptionNo']; + lineItemNo = json['LineItemNo']; + itemID = json['ItemID']; + medication = json['Medication']; + doctorComments = json['DoctorComments']; + startDatetime = json['StartDatetime']; + stopDatetime = json['StopDatetime']; + status = json['Status']; + createdBy = json['CreatedBy']; + authorizedby = json['Authorizedby']; + pharmacyRemarks = json['PharmacyRemarks']; + statusDescription = json['StatusDescription']; + } + + Map toJson() { + final Map data = new Map(); + data['CS'] = this.cS; + data['IHR'] = this.iHR; + data['SetupID'] = this.setupID; + data['ProjectID'] = this.projectID; + data['AccessLevel'] = this.accessLevel; + data['PatientID'] = this.patientID; + data['PatientName'] = this.patientName; + data['Description'] = this.description; + data['AdmissionNo'] = this.admissionNo; + data['OrderNo'] = this.orderNo; + data['PrescriptionNo'] = this.prescriptionNo; + data['LineItemNo'] = this.lineItemNo; + data['ItemID'] = this.itemID; + data['Medication'] = this.medication; + data['DoctorComments'] = this.doctorComments; + data['StartDatetime'] = this.startDatetime; + data['StopDatetime'] = this.stopDatetime; + data['Status'] = this.status; + data['CreatedBy'] = this.createdBy; + data['Authorizedby'] = this.authorizedby; + data['PharmacyRemarks'] = this.pharmacyRemarks; + data['StatusDescription'] = this.statusDescription; + return data; + } +} \ No newline at end of file diff --git a/lib/screens/patients/profile/new-medication/intervention_medication.dart b/lib/screens/patients/profile/new-medication/intervention_medication.dart index 826d0739..aeca8f88 100644 --- a/lib/screens/patients/profile/new-medication/intervention_medication.dart +++ b/lib/screens/patients/profile/new-medication/intervention_medication.dart @@ -15,7 +15,10 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class InterventionMedicationScreen extends StatefulWidget { - const InterventionMedicationScreen({Key key}) : super(key: key); + const InterventionMedicationScreen({Key key, this.patient}) : super(key: key); + final PatiantInformtion patient ; + + @override _InterventionMedicationScreenState createState() => _InterventionMedicationScreenState(); @@ -28,25 +31,18 @@ class _InterventionMedicationScreenState extends State( - onModelReady: (model) => model.getAdmissionOrders( - admissionNo: int.parse(patient.admissionNo), - patientId: patient.patientMRN), builder: (_, model, w) => AppScaffold( baseViewModel: model, backgroundColor: Theme.of(context).scaffoldBackgroundColor, //appBarTitle: TranslationBase.of(context).progressNote, appBar: PatientProfileAppBar( - patient, + widget.patient, isInpatient: true, ), body: model.admissionOrderList == null || diff --git a/lib/screens/patients/profile/new-medication/new_medication_screen.dart b/lib/screens/patients/profile/new-medication/new_medication_screen.dart index fa3c3c69..391cafec 100644 --- a/lib/screens/patients/profile/new-medication/new_medication_screen.dart +++ b/lib/screens/patients/profile/new-medication/new_medication_screen.dart @@ -1,118 +1,268 @@ -import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; -import 'package:doctor_app_flutter/core/viewModel/pednding_orders_view_model.dart'; -import 'package:doctor_app_flutter/core/viewModel/project_view_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/core/enum/filter_type.dart'; +import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/model/patient_muse/PatientSearchRequestModel.dart'; +import 'package:doctor_app_flutter/core/viewModel/PatientSearchViewModel.dart'; +import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/bottom_sheet_title.dart'; import 'package:doctor_app_flutter/util/date-utils.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/patient-profile-app-bar.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_bg_widget.dart'; -import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; -import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart'; +import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; -import 'package:provider/provider.dart'; +import 'package:hexcolor/hexcolor.dart'; -import '../../../../config/config.dart'; -import '../../../../routes.dart'; +import '../../../../core/viewModel/profile/operation_report_view_model.dart'; +import '../../../../core/viewModel/profile/search_medication_view_model.dart'; +import '../../../../models/patient/patiant_info_model.dart'; +import '../../../base/base_view.dart'; import 'intervention_medication.dart'; class NewMedicationScreen extends StatefulWidget { - const NewMedicationScreen({Key key}) : super(key: key); + final OutPatientFilterType outPatientFilterType; + + const NewMedicationScreen( + {Key key, this.outPatientFilterType, }) + : super(key: key); @override _NewMedicationScreenState createState() => _NewMedicationScreenState(); } class _NewMedicationScreenState extends State { - bool isDischargedPatient = false; - - AuthenticationViewModel authenticationViewModel; - - ProjectViewModel projectViewModel; + @override + void initState() { + // TODO: implement initState + super.initState(); + } @override Widget build(BuildContext context) { - authenticationViewModel = Provider.of(context); - projectViewModel = Provider.of(context); + var screenSize; final routeArgs = ModalRoute.of(context).settings.arguments as Map; PatiantInformtion patient = routeArgs['patient']; - String arrivalType = routeArgs['arrivalType']; - if (routeArgs.containsKey('isDischargedPatient')) - isDischargedPatient = routeArgs['isDischargedPatient']; - return BaseView( - onModelReady: (model) => model.getAdmissionOrders( - admissionNo: int.parse(patient.admissionNo), - patientId: patient.patientMRN), - builder: (_, model, w) => AppScaffold( - baseViewModel: model, - backgroundColor: Colors.white, - //appBarTitle: TranslationBase.of(context).progressNote, - appBar: PatientProfileAppBar( - patient, - isInpatient: true, - ), - body: model.admissionOrderList == null || - model.admissionOrderList.length == 0 - ? Center( - child: ErrorMessage( - error: TranslationBase.of(context).noDataAvailable, - ), - ) - : Container( - color: Colors.white, + return BaseView( + builder: (_, model, w) =>AppScaffold( + isShowAppBar: false, + backgroundColor: Theme.of(context).scaffoldBackgroundColor, + body: SingleChildScrollView( + child: Container( + height: MediaQuery.of(context).size.height * 1.0, child: Padding( - padding: EdgeInsets.only(left: 130,top: 300), + padding: EdgeInsets.all(0.0), child: Column( - children: [ - TextButton( - onPressed: () { - DatePicker.showDatePicker(context, - showTitleActions: true, - minTime: DateTime(1990, 3, 5), - maxTime: DateTime(2022, 6, 7), onChanged: (date) { - print('change $date'); - }, onConfirm: (date) { - print('confirm $date'); - }, currentTime: DateTime.now(), locale: LocaleType.en); - }, - child: Text( - 'Select Date From', - style: TextStyle(color: Colors.blue), - )), - TextButton( - onPressed: () { - DatePicker.showDatePicker(context, - showTitleActions: true, - minTime: DateTime(1990, 3, 5), - maxTime: DateTime(2022, 6, 7), onChanged: (date) { - print('change $date'); - }, onConfirm: (date) { - print('confirm $date'); - }, currentTime: DateTime.now(), locale: LocaleType.en); - }, - child: Text( - 'Select Date To', - style: TextStyle(color: Colors.blue), - )), - - RaisedButton( - onPressed: () => { - INTERVENTION_MEDICATION, - }, - child: - Text('Search'), - color: AppGlobal.appGreenColor, - textColor: Colors.white, - ), - ], + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BottomSheetTitle( + title: (OutPatientFilterType.Previous == + widget.outPatientFilterType) + ? "" + : " New Medication", + ), + SizedBox( + height: 10.0, + ), + Center( + child: FractionallySizedBox( + widthFactor: 0.9, + child: Column( + children: [ + Container( + color: Colors.white, + child: InkWell( + onTap: () => selectDate(context,model, + firstDate: + getFirstDate(widget.outPatientFilterType), + lastDate: + getLastDate(widget.outPatientFilterType)), + child: TextField( + decoration: textFieldSelectorDecoration( + TranslationBase.of(context).fromDate, + model + .selectedFromDate != + null + ? "${AppDateUtils.convertStringToDateFormat(model.selectedFromDate.toString(), "yyyy-MM-dd")}" + : null, + true, + suffixIcon: Icon( + Icons.calendar_today, + color: Colors.black, + )), + enabled: false, + ), + ), + ), + SizedBox( + height: 10, + ), + Container( + color: Colors.white, + child: InkWell( + onTap: () => selectDate(context,model, + isFromDate: false, + firstDate: + getFirstDate(widget.outPatientFilterType), + lastDate: + getLastDate(widget.outPatientFilterType)), + child: TextField( + decoration: textFieldSelectorDecoration( + TranslationBase.of(context).toDate, + model + .selectedToDate != + null + ? "${AppDateUtils.convertStringToDateFormat(model.selectedToDate.toString(), "yyyy-MM-dd")}" + : null, + true, + suffixIcon: Icon( + Icons.calendar_today, + color: Colors.black, + )), + enabled: false, + ), + ), + ), + ], + ), + ), + ), + ], + ), + ), + ), ), + bottomSheet: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.all( + Radius.circular(0.0), ), + border: Border.all(color: HexColor('#707070'), width: 0), ), + height: MediaQuery.of(context).size.height * 0.1, + width: double.infinity, + child: Column( + children: [ + SizedBox( + height: 10, + ), + Container( + child: FractionallySizedBox( + widthFactor: .80, + child: Center( + child: AppButton( + title: TranslationBase.of(context).search, + padding: 5, + color: Color(0xFF359846), + onPressed: () async { + + Navigator.push( + context, + MaterialPageRoute(builder: (context) => InterventionMedicationScreen(patient: patient,)), + ); + }, + ), + ), + ), + ), + SizedBox( + height: 5, + ), + ], + ), + )) + ); + } + + selectDate(BuildContext context,SearchMedicationViewModel model, + {bool isFromDate = true, DateTime firstDate, lastDate}) async { + Helpers.hideKeyboard(context); + DateTime selectedDate = isFromDate + ? model.selectedFromDate ?? firstDate + : model.selectedToDate ?? lastDate; + final DateTime picked = await showDatePicker( + context: context, + initialDate: selectedDate, + firstDate: firstDate, + lastDate: lastDate, + initialEntryMode: DatePickerEntryMode.calendar, + ); + if (picked != null) { + if (isFromDate) { + setState(() { + model.selectedFromDate = picked; + var date = picked.add(Duration(days: 30)); + if (date.isBefore(lastDate)) { + model.selectedToDate = date; + } else + model.selectedToDate = lastDate; + }); + } else { + setState(() { + model.selectedToDate = picked; + }); + } + } + } + + getFirstDate(OutPatientFilterType outPatientFilterType) { + if (outPatientFilterType == OutPatientFilterType.Previous) { + return DateTime( + DateTime.now().year - 20, DateTime.now().month, DateTime.now().day); + } else { + return DateTime( + DateTime.now().year, DateTime.now().month, DateTime.now().day + 1); + } + } + + getLastDate(OutPatientFilterType outPatientFilterType) { + if (outPatientFilterType == OutPatientFilterType.Previous) { + return DateTime( + DateTime.now().year, DateTime.now().month, DateTime.now().day - 1); + } else { + return DateTime( + DateTime.now().year, DateTime.now().month, DateTime.now().day + 7); + } + } + + InputDecoration textFieldSelectorDecoration( + String hintText, String selectedText, bool isDropDown, + {Icon suffixIcon}) { + return InputDecoration( + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0), + borderRadius: BorderRadius.circular(8), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: Color(0xFFEFEFEF), width: 2.0), + borderRadius: BorderRadius.circular(8), + ), + disabledBorder: OutlineInputBorder( + borderSide: BorderSide(color: Color(0xFFEFEFEF), width: 2.0), + borderRadius: BorderRadius.circular(8), + ), + hintText: selectedText != null ? selectedText : hintText, + suffixIcon: isDropDown + ? suffixIcon != null + ? suffixIcon + : Icon( + Icons.keyboard_arrow_down_sharp, + color: Color(0xff2E303A), + ) + : null, + hintStyle: TextStyle( + fontSize: 13, + color: Color(0xff2E303A), + fontFamily: 'Poppins', + fontWeight: FontWeight.w600, + ), + labelText: selectedText != null ? '$hintText\n$selectedText' : null, + labelStyle: TextStyle( + fontSize: 13, + color: Color(0xff2E303A), + fontFamily: 'Poppins', + fontWeight: FontWeight.w600, ), ); } From 0d542a862e946147d3f6ab6efd8f57a217e6ecc7 Mon Sep 17 00:00:00 2001 From: RoaaGhali98 Date: Wed, 12 Jan 2022 16:39:15 +0200 Subject: [PATCH 03/16] add new service --- lib/config/config.dart | 3 + .../intervention_medication_service.dart | 34 ++ .../intervention_medication_view_model.dart | 39 ++ .../profile/search_medication_view_model.dart | 42 +++ lib/locator.dart | 6 + lib/routes.dart | 1 - .../intervention_medication.dart | 357 +++++++++--------- .../new-medication/new_medication_screen.dart | 2 +- pubspec.lock | 9 +- 9 files changed, 317 insertions(+), 176 deletions(-) create mode 100644 lib/core/service/patient/profile/intervention_medication_service.dart create mode 100644 lib/core/viewModel/profile/intervention_medication_view_model.dart diff --git a/lib/config/config.dart b/lib/config/config.dart index 17abf2bf..8a93f3e1 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -389,6 +389,9 @@ const GET_ALL_DISCHARGE_SUMMARY = const VTE_ASSESSMENT = "Services/Patients.svc/REST/INP_GetVTEHistoryByTransactionNo"; +const GET_INTERVENTION_MEDICATION = + "Services/DoctorApplication.svc/REST/DoctorApp_GetInterventionMedications"; + var selectedPatientType = 1; //*********change value to decode json from Dropdown ************ diff --git a/lib/core/service/patient/profile/intervention_medication_service.dart b/lib/core/service/patient/profile/intervention_medication_service.dart new file mode 100644 index 00000000..0dbd5a2f --- /dev/null +++ b/lib/core/service/patient/profile/intervention_medication_service.dart @@ -0,0 +1,34 @@ +import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/core/model/vte_assessment/vte_assessment_req_model.dart'; +import 'package:doctor_app_flutter/core/model/vte_assessment/vte_assessment_res_model.dart'; +import 'package:doctor_app_flutter/core/service/base/base_service.dart'; +import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryReqModel.dart'; +import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryResModel.dart'; + +import '../../../../screens/patients/profile/new-medication-model/new_medication_req_model.dart'; +import '../../../../screens/patients/profile/new-medication-model/new_medication_res_model.dart'; + +class InterventionMedicationService extends BaseService { + + List _allInterventionList = []; + + List get allInterventionList => + _allInterventionList; + + Future getInterventionMedication( + {InterventionMedicationReqModel interventionMedicationResModel}) async { + hasError = false; + await baseAppClient.post(GET_INTERVENTION_MEDICATION, + onSuccess: (dynamic response, int statusCode) { + _allInterventionList.clear(); + response['List_InterventionMedications'].forEach( + (v) { + _allInterventionList.add(InterventionMedicationResModel.fromJson(v)); + }, + ); + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: interventionMedicationResModel.toJson()); + } +} diff --git a/lib/core/viewModel/profile/intervention_medication_view_model.dart b/lib/core/viewModel/profile/intervention_medication_view_model.dart new file mode 100644 index 00000000..5f627a1b --- /dev/null +++ b/lib/core/viewModel/profile/intervention_medication_view_model.dart @@ -0,0 +1,39 @@ +import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; +import 'package:doctor_app_flutter/locator.dart'; +import 'package:doctor_app_flutter/screens/patients/profile/new-medication-model/new_medication_res_model.dart'; + +import '../../../screens/patients/profile/new-medication-model/new_medication_req_model.dart'; +import '../../service/patient/profile/intervention_medication_service.dart'; + +class InterventionMedicationViewModel extends BaseViewModel { + bool hasError = false; + InterventionMedicationService _interventionMedicationService = + locator(); + + List get allInterventionList => + _interventionMedicationService.allInterventionList; + + Future getInterventionMedication({ + int patientId, + int admissionNo, + }) async { + InterventionMedicationReqModel interventionMedicationReqModel = + InterventionMedicationReqModel( + projectID: 15, + patientID: 79941, + fromDate: '\/Date(1488322922)\/', + toDate: '\/Date(1635886800000)\/', + ); + hasError = false; + setState(ViewState.Busy); + await _interventionMedicationService.getInterventionMedication( + interventionMedicationResModel: interventionMedicationReqModel); + if (_interventionMedicationService.hasError) { + error = _interventionMedicationService.error; + setState(ViewState.ErrorLocal); + } else { + setState(ViewState.Idle); + } + } +} diff --git a/lib/core/viewModel/profile/search_medication_view_model.dart b/lib/core/viewModel/profile/search_medication_view_model.dart index 0e67496b..2d529872 100644 --- a/lib/core/viewModel/profile/search_medication_view_model.dart +++ b/lib/core/viewModel/profile/search_medication_view_model.dart @@ -420,3 +420,45 @@ class SearchMedicationViewModel extends BaseViewModel { } } } + +// +// import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +// import 'package:doctor_app_flutter/core/model/vte_assessment/vte_assessment_req_model.dart'; +// import 'package:doctor_app_flutter/core/model/vte_assessment/vte_assessment_res_model.dart'; +// import 'package:doctor_app_flutter/core/service/patient/profile/discharge_summary_servive.dart'; +// import 'package:doctor_app_flutter/core/service/patient/profile/vte_assessment_service.dart'; +// import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; +// import 'package:doctor_app_flutter/locator.dart'; +// import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryReqModel.dart'; +// import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryResModel.dart'; +// import 'package:doctor_app_flutter/screens/patients/profile/new-medication-model/new_medication_res_model.dart'; +// +// import '../../service/patient/profile/intervention_medication_service.dart'; +// +// class SearchMedicationViewModel extends BaseViewModel { +// bool hasError = false; +// InterventionMedicationService _interventionMedicationService = +// locator(); +// +// List get allVteHistoryList => +// _interventionMedicationService.allVteHistoryList; +// +// Future getVteAssessment({ +// int patientId, +// int admissionNo, +// }) async { +// VteAssessmentRequestModel vteAssessmentRequestModel = +// VteAssessmentRequestModel( +// transactionNo: admissionNo); +// hasError = false; +// setState(ViewState.Busy); +// await _interventionMedicationService.getVteAssessment( +// vteAssessmentRequestModel: vteAssessmentRequestModel); +// if (_interventionMedicationService.hasError) { +// error = _interventionMedicationService.error; +// setState(ViewState.ErrorLocal); +// } else { +// setState(ViewState.Idle); +// } +// } +// } diff --git a/lib/locator.dart b/lib/locator.dart index 93b1b2ce..5dd6a078 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -13,6 +13,7 @@ import 'package:doctor_app_flutter/core/viewModel/profile/discharge_summary_view import 'package:doctor_app_flutter/core/viewModel/profile/operation_report_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/scan_qr_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart'; +import 'package:doctor_app_flutter/screens/patients/profile/new-medication/intervention_medication.dart'; import 'package:doctor_app_flutter/screens/patients/profile/new-medication/new_medication_screen.dart'; import 'package:get_it/get_it.dart'; @@ -33,6 +34,7 @@ import 'core/service/patient/out_patient_service.dart'; import 'core/service/patient/patient-doctor-referral-service.dart'; import 'core/service/patient/patientInPatientService.dart'; import 'core/service/patient/patient_service.dart'; +import 'core/service/patient/profile/intervention_medication_service.dart'; import 'core/service/patient/profile/operation_report_servive.dart'; import 'core/service/patient/profile/vte_assessment_service.dart'; import 'core/service/patient/referral_patient_service.dart'; @@ -67,6 +69,8 @@ import 'core/viewModel/patient-referral-viewmodel.dart'; import 'core/viewModel/patient-ucaf-viewmodel.dart'; import 'core/viewModel/patient-vital-sign-viewmodel.dart'; import 'core/viewModel/prescriptions_view_model.dart'; +import 'core/viewModel/profile/intervention_medication_view_model.dart'; +import 'core/viewModel/profile/search_medication_view_model.dart'; import 'core/viewModel/profile/vte_assessment_view_model.dart'; import 'core/viewModel/radiology_view_model.dart'; import 'core/viewModel/referral_view_model.dart'; @@ -116,6 +120,7 @@ void setupLocator() { locator.registerLazySingleton(() => PatientRegistrationService()); locator.registerLazySingleton(() => DischargeSummaryService()); locator.registerLazySingleton(() => VteAssessmentService()); + locator.registerLazySingleton(() => InterventionMedicationService()); /// View Model locator.registerFactory(() => DoctorReplayViewModel()); @@ -150,4 +155,5 @@ void setupLocator() { locator.registerFactory(() => DischargeSummaryViewModel()); locator.registerFactory(() => SearchMedicationViewModel()); locator.registerFactory(() => VteAssessmentViewModel()); + locator.registerFactory(() => InterventionMedicationViewModel()); } diff --git a/lib/routes.dart b/lib/routes.dart index ac234eb7..c4b89347 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -139,6 +139,5 @@ var routes = { ADMISSION_ORDERS: (_) => AdmissionOrdersScreen(), DIABETIC_CHART_VALUES: (_) => DiabeticChart(), NEW_MEDICATION: (_) => NewMedicationScreen(), - INTERVENTION_MEDICATION: (_) => InterventionMedicationScreen(), VTE_ASSESSMENT: (_) => VteAssessmentScreen(), }; diff --git a/lib/screens/patients/profile/new-medication/intervention_medication.dart b/lib/screens/patients/profile/new-medication/intervention_medication.dart index aeca8f88..0a7af86d 100644 --- a/lib/screens/patients/profile/new-medication/intervention_medication.dart +++ b/lib/screens/patients/profile/new-medication/intervention_medication.dart @@ -1,24 +1,29 @@ +import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; +import 'package:doctor_app_flutter/core/model/diagnosis/GetDiagnosisForInPatientRequestModel.dart'; import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; -import 'package:doctor_app_flutter/core/viewModel/pednding_orders_view_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/profile/vte_assessment_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_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/date-utils.dart'; +import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; -import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-app-bar.dart'; +import 'package:doctor_app_flutter/widgets/patients/profile/app_bar/patient-profile-app-bar.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_bg_widget.dart'; -import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -class InterventionMedicationScreen extends StatefulWidget { - const InterventionMedicationScreen({Key key, this.patient}) : super(key: key); - final PatiantInformtion patient ; +import '../../../../core/viewModel/profile/intervention_medication_view_model.dart'; +DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); +class InterventionMedicationScreen extends StatefulWidget { + final PatiantInformtion patient; + const InterventionMedicationScreen(this.patient, {Key key}) : super(key: key); @override _InterventionMedicationScreenState createState() => _InterventionMedicationScreenState(); @@ -26,27 +31,29 @@ class InterventionMedicationScreen extends StatefulWidget { class _InterventionMedicationScreenState extends State { bool isDischargedPatient = false; - AuthenticationViewModel authenticationViewModel; - ProjectViewModel projectViewModel; - @override Widget build(BuildContext context) { authenticationViewModel = Provider.of(context); projectViewModel = Provider.of(context); - return BaseView( + + return BaseView( + onModelReady: (model) => model.getInterventionMedication(patientId: widget.patient.patientId, + // admissionNo: 2016023498 + + admissionNo:int.parse(widget.patient.admissionNo) + ), builder: (_, model, w) => AppScaffold( baseViewModel: model, backgroundColor: Theme.of(context).scaffoldBackgroundColor, - //appBarTitle: TranslationBase.of(context).progressNote, appBar: PatientProfileAppBar( widget.patient, isInpatient: true, ), - body: model.admissionOrderList == null || - model.admissionOrderList.length == 0 + body: model.allInterventionList == null || + model.allInterventionList.length == 0 ? Center( child: ErrorMessage( error: TranslationBase.of(context).noDataAvailable, @@ -56,42 +63,16 @@ class _InterventionMedicationScreenState extends State[ - Padding( - padding: EdgeInsets.all(12.0), - child: Column( - children: [ - Row( - children: [ - AppText( - TranslationBase.of(context).admission, - fontSize: 15.0, - fontWeight: FontWeight.w600, - fontFamily: 'Poppins', - ), - ], - ), - Row( - children: [ - AppText( - TranslationBase.of(context).orders, - fontSize: 30.0, - fontWeight: FontWeight.w700, - ), - ], - ), - ], - ), - ), Expanded( child: Container( child: ListView.builder( - itemCount: model.admissionOrderList.length, + itemCount: model.allInterventionList.length, itemBuilder: (BuildContext ctxt, int index) { return FractionallySizedBox( widthFactor: 0.95, child: CardWithBgWidget( hasBorder: false, - bgColor: Colors.white, + bgColor: Colors.transparent, widget: Column( children: [ Column( @@ -122,83 +103,13 @@ class _InterventionMedicationScreenState extends State { Navigator.push( context, - MaterialPageRoute(builder: (context) => InterventionMedicationScreen(patient: patient,)), + MaterialPageRoute(builder: (context) => InterventionMedicationScreen(patient)), ); diff --git a/pubspec.lock b/pubspec.lock index e4f5a19f..3ba5bc57 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -770,6 +770,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.12.11" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" meta: dependency: transitive description: @@ -1173,7 +1180,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.3" + version: "0.4.8" timing: dependency: transitive description: From af9e8dd095d65d6fe310cdd3deb9b1d948af2c22 Mon Sep 17 00:00:00 2001 From: RoaaGhali98 Date: Wed, 12 Jan 2022 16:47:26 +0200 Subject: [PATCH 04/16] we edit a date format --- .../profile/new-medication/intervention_medication.dart | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/screens/patients/profile/new-medication/intervention_medication.dart b/lib/screens/patients/profile/new-medication/intervention_medication.dart index 0a7af86d..2e3fb589 100644 --- a/lib/screens/patients/profile/new-medication/intervention_medication.dart +++ b/lib/screens/patients/profile/new-medication/intervention_medication.dart @@ -123,10 +123,15 @@ class _InterventionMedicationScreenState extends State Date: Thu, 13 Jan 2022 14:06:28 +0200 Subject: [PATCH 05/16] add new service called intervention_medication_history_screen --- lib/config/config.dart | 3 + .../intervention_medication_service.dart | 28 +- .../intervention_medication_view_model.dart | 34 +- ...rvention_medication_history_req_model.dart | 32 ++ ...rvention_medication_history_res_model.dart | 96 ++++ .../intervention_medication.dart | 448 +++++++++--------- ...ntervention_medication_history_screen.dart | 418 ++++++++++++++++ 7 files changed, 839 insertions(+), 220 deletions(-) create mode 100644 lib/screens/patients/profile/new-medication-model/intervention_medication_history_req_model.dart create mode 100644 lib/screens/patients/profile/new-medication-model/intervention_medication_history_res_model.dart create mode 100644 lib/screens/patients/profile/new-medication/intervention_medication_history_screen.dart diff --git a/lib/config/config.dart b/lib/config/config.dart index 8a93f3e1..d85b75cc 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -392,6 +392,9 @@ const VTE_ASSESSMENT = const GET_INTERVENTION_MEDICATION = "Services/DoctorApplication.svc/REST/DoctorApp_GetInterventionMedications"; +const GET_INTERVENTION_MEDICATION_HISTORY = + "Services/DoctorApplication.svc/REST/DoctorApp_GetInterventionHistory"; + var selectedPatientType = 1; //*********change value to decode json from Dropdown ************ diff --git a/lib/core/service/patient/profile/intervention_medication_service.dart b/lib/core/service/patient/profile/intervention_medication_service.dart index 0dbd5a2f..24d18eef 100644 --- a/lib/core/service/patient/profile/intervention_medication_service.dart +++ b/lib/core/service/patient/profile/intervention_medication_service.dart @@ -5,6 +5,8 @@ import 'package:doctor_app_flutter/core/service/base/base_service.dart'; import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryReqModel.dart'; import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryResModel.dart'; +import '../../../../screens/patients/profile/new-medication-model/intervention_medication_history_req_model.dart'; +import '../../../../screens/patients/profile/new-medication-model/intervention_medication_history_res_model.dart'; import '../../../../screens/patients/profile/new-medication-model/new_medication_req_model.dart'; import '../../../../screens/patients/profile/new-medication-model/new_medication_res_model.dart'; @@ -12,11 +14,16 @@ class InterventionMedicationService extends BaseService { List _allInterventionList = []; + List _allInterventionHistoryList = []; + List get allInterventionList => _allInterventionList; + List get allInterventionHistoryList => + _allInterventionHistoryList; + Future getInterventionMedication( - {InterventionMedicationReqModel interventionMedicationResModel}) async { + {InterventionMedicationReqModel interventionMedicationReqModel}) async { hasError = false; await baseAppClient.post(GET_INTERVENTION_MEDICATION, onSuccess: (dynamic response, int statusCode) { @@ -29,6 +36,23 @@ class InterventionMedicationService extends BaseService { }, onFailure: (String error, int statusCode) { hasError = true; super.error = error; - }, body: interventionMedicationResModel.toJson()); + }, body: interventionMedicationReqModel.toJson()); + } + + Future getInterventionMedicationHistory( + {InterventionMedicationHistoryReqModel interventionMedicationHistoryReqModel}) async { + hasError = false; + await baseAppClient.post(GET_INTERVENTION_MEDICATION_HISTORY, + onSuccess: (dynamic response, int statusCode) { + _allInterventionHistoryList.clear(); + response['List_InterventionHistory'].forEach( + (v) { + _allInterventionHistoryList.add(InterventionMedicationHistoryResModel.fromJson(v)); + }, + ); + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: interventionMedicationHistoryReqModel.toJson()); } } diff --git a/lib/core/viewModel/profile/intervention_medication_view_model.dart b/lib/core/viewModel/profile/intervention_medication_view_model.dart index 5f627a1b..8494b6d9 100644 --- a/lib/core/viewModel/profile/intervention_medication_view_model.dart +++ b/lib/core/viewModel/profile/intervention_medication_view_model.dart @@ -1,12 +1,16 @@ import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; import 'package:doctor_app_flutter/locator.dart'; +import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/patients/profile/new-medication-model/new_medication_res_model.dart'; +import '../../../screens/patients/profile/new-medication-model/intervention_medication_history_req_model.dart'; +import '../../../screens/patients/profile/new-medication-model/intervention_medication_history_res_model.dart'; import '../../../screens/patients/profile/new-medication-model/new_medication_req_model.dart'; import '../../service/patient/profile/intervention_medication_service.dart'; class InterventionMedicationViewModel extends BaseViewModel { + PatiantInformtion patient; bool hasError = false; InterventionMedicationService _interventionMedicationService = locator(); @@ -14,6 +18,10 @@ class InterventionMedicationViewModel extends BaseViewModel { List get allInterventionList => _interventionMedicationService.allInterventionList; + List get allInterventionHistoryList => + _interventionMedicationService.allInterventionHistoryList; + + Future getInterventionMedication({ int patientId, int admissionNo, @@ -28,7 +36,31 @@ class InterventionMedicationViewModel extends BaseViewModel { hasError = false; setState(ViewState.Busy); await _interventionMedicationService.getInterventionMedication( - interventionMedicationResModel: interventionMedicationReqModel); + interventionMedicationReqModel: interventionMedicationReqModel); + if (_interventionMedicationService.hasError) { + error = _interventionMedicationService.error; + setState(ViewState.ErrorLocal); + } else { + setState(ViewState.Idle); + } + } + + + Future getInterventionMedicationHistory({ + int patientId, + }) async { + InterventionMedicationHistoryReqModel interventionMedicationHistoryReqModel = + InterventionMedicationHistoryReqModel( + projectID: 15, + patientID: 79941, + admissionNo: 2018013900, + prescriptionNo: 2045165, + orderNo: 1171570, + ); + hasError = false; + setState(ViewState.Busy); + await _interventionMedicationService.getInterventionMedicationHistory( + interventionMedicationHistoryReqModel: interventionMedicationHistoryReqModel); if (_interventionMedicationService.hasError) { error = _interventionMedicationService.error; setState(ViewState.ErrorLocal); diff --git a/lib/screens/patients/profile/new-medication-model/intervention_medication_history_req_model.dart b/lib/screens/patients/profile/new-medication-model/intervention_medication_history_req_model.dart new file mode 100644 index 00000000..122212b7 --- /dev/null +++ b/lib/screens/patients/profile/new-medication-model/intervention_medication_history_req_model.dart @@ -0,0 +1,32 @@ +class InterventionMedicationHistoryReqModel { + int projectID; + int patientID; + int admissionNo; + int orderNo; + int prescriptionNo; + + InterventionMedicationHistoryReqModel( + {this.projectID, + this.patientID, + this.admissionNo, + this.orderNo, + this.prescriptionNo}); + + InterventionMedicationHistoryReqModel.fromJson(Map json) { + projectID = json['ProjectID']; + patientID = json['PatientID']; + admissionNo = json['AdmissionNo']; + orderNo = json['OrderNo']; + prescriptionNo = json['PrescriptionNo']; + } + + Map toJson() { + final Map data = new Map(); + data['ProjectID'] = this.projectID; + data['PatientID'] = this.patientID; + data['AdmissionNo'] = this.admissionNo; + data['OrderNo'] = this.orderNo; + data['PrescriptionNo'] = this.prescriptionNo; + return data; + } +} \ No newline at end of file diff --git a/lib/screens/patients/profile/new-medication-model/intervention_medication_history_res_model.dart b/lib/screens/patients/profile/new-medication-model/intervention_medication_history_res_model.dart new file mode 100644 index 00000000..451cccb8 --- /dev/null +++ b/lib/screens/patients/profile/new-medication-model/intervention_medication_history_res_model.dart @@ -0,0 +1,96 @@ +class InterventionMedicationHistoryResModel { + String setupId; + String projectId; + int patientId; + int admissionNo; + int prescriptionId; + int orderNo; + int id; + int interventionId; + Null intervention; + String remark; + int commentedBy; + bool isDoctor; + bool isActive; + int createdBy; + String createdByName; + String createdByNameN; + String createdOn; + Null editedBy; + Null editedByName; + Null editedByNameN; + Null editedOn; + + InterventionMedicationHistoryResModel( + {this.setupId, + this.projectId, + this.patientId, + this.admissionNo, + this.prescriptionId, + this.orderNo, + this.id, + this.interventionId, + this.intervention, + this.remark, + this.commentedBy, + this.isDoctor, + this.isActive, + this.createdBy, + this.createdByName, + this.createdByNameN, + this.createdOn, + this.editedBy, + this.editedByName, + this.editedByNameN, + this.editedOn}); + + InterventionMedicationHistoryResModel.fromJson(Map json) { + setupId = json['SetupId']; + projectId = json['ProjectId']; + patientId = json['PatientId']; + admissionNo = json['AdmissionNo']; + prescriptionId = json['PrescriptionId']; + orderNo = json['OrderNo']; + id = json['Id']; + interventionId = json['InterventionId']; + intervention = json['Intervention']; + remark = json['Remark']; + commentedBy = json['CommentedBy']; + isDoctor = json['IsDoctor']; + isActive = json['IsActive']; + createdBy = json['CreatedBy']; + createdByName = json['CreatedByName']; + createdByNameN = json['CreatedByNameN']; + createdOn = json['CreatedOn']; + editedBy = json['EditedBy']; + editedByName = json['EditedByName']; + editedByNameN = json['EditedByNameN']; + editedOn = json['EditedOn']; + } + + Map toJson() { + final Map data = new Map(); + data['SetupId'] = this.setupId; + data['ProjectId'] = this.projectId; + data['PatientId'] = this.patientId; + data['AdmissionNo'] = this.admissionNo; + data['PrescriptionId'] = this.prescriptionId; + data['OrderNo'] = this.orderNo; + data['Id'] = this.id; + data['InterventionId'] = this.interventionId; + data['Intervention'] = this.intervention; + data['Remark'] = this.remark; + data['CommentedBy'] = this.commentedBy; + data['IsDoctor'] = this.isDoctor; + data['IsActive'] = this.isActive; + data['CreatedBy'] = this.createdBy; + data['CreatedByName'] = this.createdByName; + data['CreatedByNameN'] = this.createdByNameN; + data['CreatedOn'] = this.createdOn; + data['EditedBy'] = this.editedBy; + data['EditedByName'] = this.editedByName; + data['EditedByNameN'] = this.editedByNameN; + data['EditedOn'] = this.editedOn; + return data; + } +} \ No newline at end of file diff --git a/lib/screens/patients/profile/new-medication/intervention_medication.dart b/lib/screens/patients/profile/new-medication/intervention_medication.dart index 2e3fb589..0ae3cee3 100644 --- a/lib/screens/patients/profile/new-medication/intervention_medication.dart +++ b/lib/screens/patients/profile/new-medication/intervention_medication.dart @@ -18,6 +18,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../../../core/viewModel/profile/intervention_medication_view_model.dart'; +import '../../../../widgets/transitions/fade_page.dart'; +import 'intervention_medication_history_screen.dart'; DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); @@ -59,43 +61,64 @@ class _InterventionMedicationScreenState extends State[ - Expanded( - child: Container( - child: ListView.builder( - itemCount: model.allInterventionList.length, - itemBuilder: (BuildContext ctxt, int index) { - return FractionallySizedBox( - widthFactor: 0.95, - child: CardWithBgWidget( - hasBorder: false, - bgColor: Colors.transparent, - widget: Column( - children: [ - Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - SizedBox( - height: 10, - ), - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Container( - width: MediaQuery.of(context) - .size - .width * - 0.60, - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, + children: [ + Expanded( + child: Container( + child: ListView.builder( + itemCount: model.allInterventionList.length, + itemBuilder: (BuildContext ctxt, int index) { + return FractionallySizedBox( + widthFactor: 0.95, + child: CardWithBgWidget( + hasBorder: false, + bgColor: Colors.transparent, + widget: Column( + children: [ + Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + SizedBox( + height: 10, + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Container( + width: MediaQuery.of(context) + .size + .width * + 0.60, + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + AppText( + model + .allInterventionList[ + index].cS, + fontWeight: FontWeight.w600, + fontSize: 14, + ), + + ], + ), + ], + ), + ), + Column( children: [ Row( crossAxisAlignment: @@ -103,9 +126,15 @@ class _InterventionMedicationScreenState extends State _InterventionMedicationHistoryScreenState(); +} + +class _InterventionMedicationHistoryScreenState extends State { + bool isDischargedPatient = false; + AuthenticationViewModel authenticationViewModel; + ProjectViewModel projectViewModel; + + @override + Widget build(BuildContext context) { + authenticationViewModel = Provider.of(context); + projectViewModel = Provider.of(context); + + return BaseView( + onModelReady: (model) => model.getInterventionMedicationHistory(patientId: widget.patient.patientId, + ), + builder: (_, model, w) => AppScaffold( + baseViewModel: model, + backgroundColor: Theme.of(context).scaffoldBackgroundColor, + appBar: PatientProfileAppBar( + widget.patient, + isInpatient: true, + ), + body: model.allInterventionHistoryList == null || + model.allInterventionHistoryList.length == 0 + ? Center( + child: ErrorMessage( + error: TranslationBase.of(context).noDataAvailable, + ), + ) + : Container( + color: Colors.grey[200], + child: Column( + children: [ + Expanded( + child: Container( + child: ListView.builder( + itemCount: model.allInterventionHistoryList.length, + itemBuilder: (BuildContext ctxt, int index) { + return FractionallySizedBox( + widthFactor: 0.95, + child: CardWithBgWidget( + hasBorder: false, + bgColor: Colors.transparent, + widget: Column( + children: [ + Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + SizedBox( + height: 10, + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Container( + width: MediaQuery.of(context) + .size + .width * + 0.60, + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + AppText( + model + .allInterventionHistoryList[ + index].setupId, + fontWeight: FontWeight.w600, + fontSize: 14, + ), + + ], + ), + ], + ), + ), + Column( + children: [ + Row( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + AppText( + AppDateUtils.getDayMonthYearDateFormatted( + AppDateUtils.convertStringToDate( + model + .allInterventionHistoryList[ + index].createdOn) + ,isArabic: + projectViewModel + .isArabic, + isMonthShort: true), + fontWeight: FontWeight.w600, + fontSize: 14, + ), + + ], + ), + ], + ) + // Column( + // children: [ + // AppText( + // model + // .allInterventionList[ + // index] + // .startDatetime != + // null + // ? AppDateUtils.getDayMonthYearDateFormatted( + // AppDateUtils + // .getDateTimeFromString(model + // .allInterventionList[ + // index] + // .startDatetime), + // isArabic: + // projectViewModel + // .isArabic, + // isMonthShort: true) + // : AppDateUtils + // .getDayMonthYearDateFormatted( + // DateTime.now(), + // isArabic: + // projectViewModel + // .isArabic), + // fontWeight: FontWeight.w600, + // fontSize: 14, + // isCopyable: true, + // ), + // AppText( + // model + // .allInterventionList[ + // index] + // .startDatetime != + // null + // ? AppDateUtils.getHour( + // AppDateUtils + // .getDateTimeFromString(model + // .allInterventionList[ + // index] + // .startDatetime)) + // : AppDateUtils.getHour( + // DateTime.now()), + // fontWeight: FontWeight.w600, + // fontSize: 14, + // isCopyable: true, + // ), + // ], + // crossAxisAlignment: + // CrossAxisAlignment.end, + // ) + ], + ), + SizedBox( + height: 8, + ), + Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + // AppText( + // TranslationBase.of(context) + // .VTE_Type + + // " : ", + // fontSize: 12, + // ), + Expanded( + child: AppText( + model + .allInterventionHistoryList[ + index] + .remark, + fontSize: 12, + isCopyable: true, + ), + ), + ]), + SizedBox( + height: 8, + ), + Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + // AppText( + // TranslationBase.of(context) + // .pharmacology + + // " : ", + // fontSize: 12, + // ), + Expanded( + child: AppText( + model + .allInterventionHistoryList[ + index] + .createdByName, + fontSize: 12, + isCopyable: true, + ), + ), + ]), + SizedBox( + height: 8, + ), + Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + // AppText( + // TranslationBase.of(context) + // .reasonsThrombo + + // " : ", + // fontSize: 12, + // ), + Expanded( + child: AppText( + model + .allInterventionHistoryList[ + index] + .setupId, + fontSize: 12, + isCopyable: true, + ), + ), + ]), + SizedBox( + height: 8, + ), + + Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + // AppText( + // TranslationBase.of(context) + // .reasonsThrombo + + // " : ", + // fontSize: 12, + // ), + Expanded( + child: AppText( + model + .allInterventionHistoryList[ + index] + .setupId, + fontSize: 12, + isCopyable: true, + ), + ), + ]), + Row( + crossAxisAlignment: + CrossAxisAlignment.start, + mainAxisAlignment: + MainAxisAlignment.end, + children: [ + InkWell( + onTap: () async { + await locator() + .logEvent( + eventCategory: + "Operation Report Screen", + eventAction: + "Update Operation Report ", + ); + // Navigator.push( + // context, + // MaterialPageRoute( + // builder: (context) => + // UpdateOperationReport( + // reservation: model + // .reservationList[ + // index], + // patient: patient, + // isUpdate: true, + // )), + // ); + }, + child: Container( + decoration: BoxDecoration( + color: AppGlobal.appRedColor, + borderRadius: + BorderRadius.circular(10), + ), + // color:Colors.red[600], + + child: Row( + children: [ + + SizedBox( + width: 2, + ), + AppText( + TranslationBase.of(context) + .accept, + fontSize: 10, + color: Colors.white, + ), + ], + ), + padding: EdgeInsets.all(6), + ), + ), + SizedBox( + width: 10, + ), + InkWell( + onTap: () async { + await locator() + .logEvent( + eventCategory: + "Operation Report Screen", + eventAction: + "Update Operation Report ", + ); + // Navigator.push( + // context, + // MaterialPageRoute( + // builder: (context) => + // UpdateOperationReport( + // reservation: model + // .reservationList[ + // index], + // patient: patient, + // isUpdate: true, + // )), + // ); + }, + child: Container( + decoration: BoxDecoration( + color: AppGlobal.appGreenColor, + borderRadius: + BorderRadius.circular(10), + ), + // color:Colors.red[600], + + child: Row( + children: [ + + SizedBox( + width: 2, + ), + AppText( + TranslationBase.of(context) + .reject, + fontSize: 10, + color: Colors.white, + ), + ], + ), + padding: EdgeInsets.all(6), + ), + ), + ], + ), + + ], + ), + SizedBox( + height: 20, + ), + ], + ), + ), + ); + }), + ), + ), + ], + ), + ), + ), + ); + } +} From 65d04b2d0ff1a2844943d3d3f65cdb57839fcb49 Mon Sep 17 00:00:00 2001 From: RoaaGhali98 Date: Thu, 13 Jan 2022 15:09:22 +0200 Subject: [PATCH 06/16] fix some issues --- .../pharmacy_intervention_view_model.dart | 51 ++ .../profile/search_medication_view_model.dart | 464 ------------------ lib/locator.dart | 7 +- lib/routes.dart | 7 +- .../intervention_medication.dart | 0 ...ntervention_medication_history_screen.dart | 4 +- .../pharmacy_intervention_screen.dart} | 21 +- .../profile_gird_for_InPatient.dart | 6 +- 8 files changed, 68 insertions(+), 492 deletions(-) create mode 100644 lib/core/viewModel/profile/pharmacy_intervention_view_model.dart delete mode 100644 lib/core/viewModel/profile/search_medication_view_model.dart rename lib/screens/patients/profile/{new-medication => pharmacy-intervention}/intervention_medication.dart (100%) rename lib/screens/patients/profile/{new-medication => pharmacy-intervention}/intervention_medication_history_screen.dart (100%) rename lib/screens/patients/profile/{new-medication/new_medication_screen.dart => pharmacy-intervention/pharmacy_intervention_screen.dart} (92%) diff --git a/lib/core/viewModel/profile/pharmacy_intervention_view_model.dart b/lib/core/viewModel/profile/pharmacy_intervention_view_model.dart new file mode 100644 index 00000000..b34cced5 --- /dev/null +++ b/lib/core/viewModel/profile/pharmacy_intervention_view_model.dart @@ -0,0 +1,51 @@ +import 'package:doctor_app_flutter/core/enum/filter_type.dart'; +import 'package:doctor_app_flutter/core/enum/patient_type.dart'; +import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/model/patient_muse/PatientSearchRequestModel.dart'; +import 'package:doctor_app_flutter/core/service/patient/out_patient_service.dart'; +import 'package:doctor_app_flutter/core/service/patient/patientInPatientService.dart'; +import 'package:doctor_app_flutter/core/service/special_clinics/special_clinic_service.dart'; +import 'package:doctor_app_flutter/models/dashboard/get_special_clinical_care_mapping_List_Respose_Model.dart'; +import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; +import 'package:doctor_app_flutter/util/date-utils.dart'; + +import '../../../locator.dart'; +import '../base_view_model.dart'; + + + +class PharmacyInterventionViewModel extends BaseViewModel { + OutPatientService _outPatientService = locator(); + SpecialClinicsService _specialClinicsService = + locator(); + + List get patientList => _outPatientService.patientList; + + List + get specialClinicalCareMappingList => + _specialClinicsService.specialClinicalCareMappingList; + + List filterData = []; + + DateTime selectedFromDate; + DateTime selectedToDate; + + int firstSubsetIndex = 0; + int inPatientPageSize = 20; + int lastSubsetIndex = 20; + + List InpatientClinicList = []; + + + PatientInPatientService _inPatientService = + locator(); + + List get inPatientList => _inPatientService.inPatientList; + + List get myIinPatientList => + _inPatientService.myInPatientList; + + List filteredInPatientItems = List(); + List filteredMyInPatientItems = List(); + +} diff --git a/lib/core/viewModel/profile/search_medication_view_model.dart b/lib/core/viewModel/profile/search_medication_view_model.dart deleted file mode 100644 index 2d529872..00000000 --- a/lib/core/viewModel/profile/search_medication_view_model.dart +++ /dev/null @@ -1,464 +0,0 @@ -import 'package:doctor_app_flutter/core/enum/filter_type.dart'; -import 'package:doctor_app_flutter/core/enum/patient_type.dart'; -import 'package:doctor_app_flutter/core/enum/viewstate.dart'; -import 'package:doctor_app_flutter/core/model/patient_muse/PatientSearchRequestModel.dart'; -import 'package:doctor_app_flutter/core/service/patient/out_patient_service.dart'; -import 'package:doctor_app_flutter/core/service/patient/patientInPatientService.dart'; -import 'package:doctor_app_flutter/core/service/special_clinics/special_clinic_service.dart'; -import 'package:doctor_app_flutter/models/dashboard/get_special_clinical_care_mapping_List_Respose_Model.dart'; -import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; -import 'package:doctor_app_flutter/util/date-utils.dart'; - -import '../../../locator.dart'; -import '../base_view_model.dart'; - - - -class SearchMedicationViewModel extends BaseViewModel { - OutPatientService _outPatientService = locator(); - SpecialClinicsService _specialClinicsService = - locator(); - - List get patientList => _outPatientService.patientList; - - List - get specialClinicalCareMappingList => - _specialClinicsService.specialClinicalCareMappingList; - - List filterData = []; - - DateTime selectedFromDate; - DateTime selectedToDate; - - int firstSubsetIndex = 0; - int inPatientPageSize = 20; - int lastSubsetIndex = 20; - - List InpatientClinicList = []; - - searchData(String str) { - var strExist = str.length > 0 ? true : false; - if (strExist) { - filterData = []; - for (var i = 0; i < _outPatientService.patientList.length; i++) { - String firstName = - _outPatientService.patientList[i].firstName.toUpperCase(); - String lastName = - _outPatientService.patientList[i].lastName.toUpperCase(); - String mobile = - _outPatientService.patientList[i].mobileNumber.toUpperCase(); - String patientID = - _outPatientService.patientList[i].patientId.toString(); - - if (firstName.contains(str.toUpperCase()) || - lastName.contains(str.toUpperCase()) || - mobile.contains(str) || - patientID.contains(str)) { - filterData.add(_outPatientService.patientList[i]); - } - } - notifyListeners(); - } else { - filterData = _outPatientService.patientList; - notifyListeners(); - } - } - - getOutPatient(PatientSearchRequestModel patientSearchRequestModel, - {bool isLocalBusy = false}) async { - if (isLocalBusy) { - setState(ViewState.BusyLocal); - } else { - setState(ViewState.Busy); - } - await getDoctorProfile(isGetProfile: true); - patientSearchRequestModel.doctorID = doctorProfile.doctorID; - await _outPatientService.getOutPatient(patientSearchRequestModel); - if (_outPatientService.hasError) { - error = _outPatientService.error; - if (isLocalBusy) { - setState(ViewState.ErrorLocal); - } else { - setState(ViewState.Error); - } - } else { - filterData = _outPatientService.patientList; - setState(ViewState.Idle); - } - } - - sortOutPatient({bool isDes = false}) { - if (isDes) - filterData = filterData.reversed.toList(); - else - filterData = filterData.reversed.toList(); - setState(ViewState.Idle); - } - - getPatientFileInformation(PatientSearchRequestModel patientSearchRequestModel, - {bool isLocalBusy = false}) async { - setState(ViewState.Busy); - await _outPatientService - .getPatientFileInformation(patientSearchRequestModel); - if (_outPatientService.hasError) { - error = _outPatientService.error; - setState(ViewState.Error); - } else { - filterData = _outPatientService.patientList; - setState(ViewState.Idle); - } - } - - getPatientBasedOnDate( - {item, - PatientSearchRequestModel patientSearchRequestModel, - PatientType selectedPatientType, - bool isSearchWithKeyInfo, - OutPatientFilterType outPatientFilterType}) async { - String dateTo; - String dateFrom; - if (OutPatientFilterType.Previous == outPatientFilterType) { - selectedFromDate = DateTime( - DateTime.now().year, DateTime.now().month - 1, DateTime.now().day); - selectedToDate = DateTime( - DateTime.now().year, DateTime.now().month, DateTime.now().day - 1); - dateTo = AppDateUtils.convertDateToFormat(selectedToDate, 'yyyy-MM-dd'); - dateFrom = - AppDateUtils.convertDateToFormat(selectedFromDate, 'yyyy-MM-dd'); - } else if (OutPatientFilterType.NextWeek == outPatientFilterType) { - dateTo = AppDateUtils.convertDateToFormat( - DateTime(DateTime.now().year, DateTime.now().month, - DateTime.now().day + 6), - 'yyyy-MM-dd'); - - dateFrom = AppDateUtils.convertDateToFormat( - DateTime(DateTime.now().year, DateTime.now().month, - DateTime.now().day + 1), - 'yyyy-MM-dd'); - } else { - dateFrom = AppDateUtils.convertDateToFormat( - DateTime( - DateTime.now().year, DateTime.now().month, DateTime.now().day), - 'yyyy-MM-dd'); - dateTo = AppDateUtils.convertDateToFormat( - DateTime( - DateTime.now().year, DateTime.now().month, DateTime.now().day), - 'yyyy-MM-dd'); - } - PatientSearchRequestModel currentModel = PatientSearchRequestModel(); - currentModel.patientID = patientSearchRequestModel.patientID; - currentModel.firstName = patientSearchRequestModel.firstName; - currentModel.lastName = patientSearchRequestModel.lastName; - currentModel.middleName = patientSearchRequestModel.middleName; - currentModel.doctorID = patientSearchRequestModel.doctorID; - currentModel.from = dateFrom; - currentModel.to = dateTo; - await getOutPatient(currentModel, isLocalBusy: true); - filterData = _outPatientService.patientList; - } - - PatientInPatientService _inPatientService = - locator(); - - List get inPatientList => _inPatientService.inPatientList; - - List get myIinPatientList => - _inPatientService.myInPatientList; - - List filteredInPatientItems = List(); - List filteredMyInPatientItems = List(); - - Future getInPatientList(PatientSearchRequestModel requestModel, - {bool isMyInpatient = false, bool isLocalBusy = false}) async { - await getDoctorProfile(); - if (isLocalBusy) { - setState(ViewState.BusyLocal); - } else { - setState(ViewState.Busy); - } - if (inPatientList.length == 0) - await _inPatientService.getInPatientList(requestModel, false); - if (_inPatientService.hasError) { - error = _inPatientService.error; - if (isLocalBusy) { - setState(ViewState.ErrorLocal); - } else { - setState(ViewState.Error); - } - } else { - setDefaultInPatientList(); - generateInpatientClinicList(); - setState(ViewState.Idle); - } - } - - sortInPatient({bool isDes = false, bool isAllClinic, bool isMyInPatient}) { - if (isMyInPatient - ? myIinPatientList.length > 0 - : isAllClinic - ? inPatientList.length > 0 - : filteredInPatientItems.length > 0) { - List localInPatient = isMyInPatient - ? [...filteredMyInPatientItems] - : isAllClinic - ? [...inPatientList] - : [...filteredInPatientItems]; - if (isDes) - localInPatient.sort((PatiantInformtion a, PatiantInformtion b) => b - .admissionDateWithDateTimeForm - .compareTo(a.admissionDateWithDateTimeForm)); - else - localInPatient.sort((PatiantInformtion a, PatiantInformtion b) => a - .admissionDateWithDateTimeForm - .compareTo(b.admissionDateWithDateTimeForm)); - if (isMyInPatient) { - filteredMyInPatientItems.clear(); - filteredMyInPatientItems.addAll(localInPatient); - } else if (isAllClinic) { - resetInPatientPagination(); - filteredInPatientItems - .addAll(localInPatient.sublist(firstSubsetIndex, lastSubsetIndex)); - } else { - filteredInPatientItems.clear(); - filteredInPatientItems.addAll(localInPatient); - } - } - setState(ViewState.Idle); - } - - resetInPatientPagination() { - filteredInPatientItems.clear(); - firstSubsetIndex = 0; - lastSubsetIndex = inPatientPageSize - 1; - } - - Future setDefaultInPatientList() async { - setState(ViewState.BusyLocal); - await getDoctorProfile(); - resetInPatientPagination(); - if (inPatientList.length > 0) { - lastSubsetIndex = (inPatientList.length < inPatientPageSize - 1 - ? inPatientList.length - : inPatientPageSize - 1); - - filteredInPatientItems - .addAll(inPatientList.sublist(firstSubsetIndex, lastSubsetIndex)); - } - - if (myIinPatientList.length > 0) { - filteredMyInPatientItems.addAll(myIinPatientList); - } - setState(ViewState.Idle); - } - - generateInpatientClinicList() { - InpatientClinicList.clear(); - inPatientList.forEach((element) { - if (!InpatientClinicList.contains(element.clinicDescription)) { - InpatientClinicList.add(element.clinicDescription); - } - }); - } - - addOnFilteredList() { - if (lastSubsetIndex < inPatientList.length) { - firstSubsetIndex = firstSubsetIndex + - (inPatientList.length - lastSubsetIndex < inPatientPageSize - 1 - ? inPatientList.length - lastSubsetIndex - : inPatientPageSize - 1); - lastSubsetIndex = lastSubsetIndex + - (inPatientList.length - lastSubsetIndex < inPatientPageSize - 1 - ? inPatientList.length - lastSubsetIndex - : inPatientPageSize - 1); - filteredInPatientItems - .addAll(inPatientList.sublist(firstSubsetIndex, lastSubsetIndex)); - setState(ViewState.Idle); - } - } - - removeOnFilteredList() { - if (lastSubsetIndex - inPatientPageSize - 1 > 0) { - filteredInPatientItems.removeAt(lastSubsetIndex - inPatientPageSize - 1); - setState(ViewState.Idle); - } - } - - filterByHospital({int hospitalId}) { - filteredInPatientItems = []; - for (var i = 0; i < inPatientList.length; i++) { - if (inPatientList[i].projectId == hospitalId) { - filteredInPatientItems.add(inPatientList[i]); - } - } - notifyListeners(); - } - - filterByClinic({String clinicName}) { - filteredInPatientItems = []; - for (var i = 0; i < inPatientList.length; i++) { - if (inPatientList[i].clinicDescription == clinicName) { - filteredInPatientItems.add(inPatientList[i]); - } - } - notifyListeners(); - } - - void clearPatientList() { - _inPatientService.inPatientList = []; - _inPatientService.myInPatientList = []; - } - - void filterSearchResults(String query, - {bool isAllClinic, bool isMyInPatient}) { - var strExist = query.length > 0 ? true : false; - - if (isMyInPatient) { - List localFilteredMyInPatientItems = [ - ...myIinPatientList - ]; - - if (strExist) { - filteredMyInPatientItems.clear(); - for (var i = 0; i < localFilteredMyInPatientItems.length; i++) { - String firstName = - localFilteredMyInPatientItems[i].firstName.toUpperCase(); - String lastName = - localFilteredMyInPatientItems[i].lastName.toUpperCase(); - String mobile = - localFilteredMyInPatientItems[i].mobileNumber.toUpperCase(); - String patientID = - localFilteredMyInPatientItems[i].patientId.toString(); - - if (firstName.contains(query.toUpperCase()) || - lastName.contains(query.toUpperCase()) || - mobile.contains(query) || - patientID.contains(query)) { - filteredMyInPatientItems.add(localFilteredMyInPatientItems[i]); - } - } - notifyListeners(); - } else { - if (myIinPatientList.length > 0) filteredMyInPatientItems.clear(); - filteredMyInPatientItems.addAll(myIinPatientList); - notifyListeners(); - } - } else { - if (isAllClinic) { - if (strExist) { - filteredInPatientItems = []; - for (var i = 0; i < inPatientList.length; i++) { - String firstName = inPatientList[i].firstName.toUpperCase(); - String lastName = inPatientList[i].lastName.toUpperCase(); - String mobile = inPatientList[i].mobileNumber.toUpperCase(); - String patientID = inPatientList[i].patientId.toString(); - - if (firstName.contains(query.toUpperCase()) || - lastName.contains(query.toUpperCase()) || - mobile.contains(query) || - patientID.contains(query)) { - filteredInPatientItems.add(inPatientList[i]); - } - } - notifyListeners(); - } else { - if (inPatientList.length > 0) filteredInPatientItems.clear(); - filteredInPatientItems.addAll(inPatientList); - notifyListeners(); - } - } else { - List localFilteredInPatientItems = [ - ...filteredInPatientItems - ]; - - if (strExist) { - filteredInPatientItems.clear(); - for (var i = 0; i < localFilteredInPatientItems.length; i++) { - String firstName = - localFilteredInPatientItems[i].firstName.toUpperCase(); - String lastName = - localFilteredInPatientItems[i].lastName.toUpperCase(); - String mobile = - localFilteredInPatientItems[i].mobileNumber.toUpperCase(); - String patientID = - localFilteredInPatientItems[i].patientId.toString(); - - if (firstName.contains(query.toUpperCase()) || - lastName.contains(query.toUpperCase()) || - mobile.contains(query) || - patientID.contains(query)) { - filteredInPatientItems.add(localFilteredInPatientItems[i]); - } - } - notifyListeners(); - } else { - if (localFilteredInPatientItems.length > 0) - filteredInPatientItems.clear(); - filteredInPatientItems.addAll(localFilteredInPatientItems); - notifyListeners(); - } - } - } - } - - getSpecialClinicalCareMappingList(clinicId, - {bool isLocalBusy = false}) async { - if (isLocalBusy) { - setState(ViewState.BusyLocal); - } else { - setState(ViewState.Busy); - } - await _specialClinicsService.getSpecialClinicalCareMappingList(clinicId); - if (_specialClinicsService.hasError) { - error = _specialClinicsService.error; - if (isLocalBusy) { - setState(ViewState.ErrorLocal); - } else { - setState(ViewState.Error); - } - } else { - setState(ViewState.Idle); - } - } -} - -// -// import 'package:doctor_app_flutter/core/enum/viewstate.dart'; -// import 'package:doctor_app_flutter/core/model/vte_assessment/vte_assessment_req_model.dart'; -// import 'package:doctor_app_flutter/core/model/vte_assessment/vte_assessment_res_model.dart'; -// import 'package:doctor_app_flutter/core/service/patient/profile/discharge_summary_servive.dart'; -// import 'package:doctor_app_flutter/core/service/patient/profile/vte_assessment_service.dart'; -// import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; -// import 'package:doctor_app_flutter/locator.dart'; -// import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryReqModel.dart'; -// import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryResModel.dart'; -// import 'package:doctor_app_flutter/screens/patients/profile/new-medication-model/new_medication_res_model.dart'; -// -// import '../../service/patient/profile/intervention_medication_service.dart'; -// -// class SearchMedicationViewModel extends BaseViewModel { -// bool hasError = false; -// InterventionMedicationService _interventionMedicationService = -// locator(); -// -// List get allVteHistoryList => -// _interventionMedicationService.allVteHistoryList; -// -// Future getVteAssessment({ -// int patientId, -// int admissionNo, -// }) async { -// VteAssessmentRequestModel vteAssessmentRequestModel = -// VteAssessmentRequestModel( -// transactionNo: admissionNo); -// hasError = false; -// setState(ViewState.Busy); -// await _interventionMedicationService.getVteAssessment( -// vteAssessmentRequestModel: vteAssessmentRequestModel); -// if (_interventionMedicationService.hasError) { -// error = _interventionMedicationService.error; -// setState(ViewState.ErrorLocal); -// } else { -// setState(ViewState.Idle); -// } -// } -// } diff --git a/lib/locator.dart b/lib/locator.dart index 5dd6a078..76be7fa0 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -13,10 +13,7 @@ import 'package:doctor_app_flutter/core/viewModel/profile/discharge_summary_view import 'package:doctor_app_flutter/core/viewModel/profile/operation_report_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/scan_qr_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/sick_leave_view_model.dart'; -import 'package:doctor_app_flutter/screens/patients/profile/new-medication/intervention_medication.dart'; -import 'package:doctor_app_flutter/screens/patients/profile/new-medication/new_medication_screen.dart'; import 'package:get_it/get_it.dart'; - import 'core/service/AnalyticsService.dart'; import 'core/service/NavigationService.dart'; import 'core/service/PatientRegistrationService.dart'; @@ -70,7 +67,7 @@ import 'core/viewModel/patient-ucaf-viewmodel.dart'; import 'core/viewModel/patient-vital-sign-viewmodel.dart'; import 'core/viewModel/prescriptions_view_model.dart'; import 'core/viewModel/profile/intervention_medication_view_model.dart'; -import 'core/viewModel/profile/search_medication_view_model.dart'; +import 'core/viewModel/profile/pharmacy_intervention_view_model.dart'; import 'core/viewModel/profile/vte_assessment_view_model.dart'; import 'core/viewModel/radiology_view_model.dart'; import 'core/viewModel/referral_view_model.dart'; @@ -153,7 +150,7 @@ void setupLocator() { locator.registerFactory(() => PatientRegistrationViewModel()); locator.registerFactory(() => PendingOrdersViewModel()); locator.registerFactory(() => DischargeSummaryViewModel()); - locator.registerFactory(() => SearchMedicationViewModel()); + locator.registerFactory(() => PharmacyInterventionViewModel()); locator.registerFactory(() => VteAssessmentViewModel()); locator.registerFactory(() => InterventionMedicationViewModel()); } diff --git a/lib/routes.dart b/lib/routes.dart index c4b89347..23f1dcbc 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -14,12 +14,11 @@ import 'package:doctor_app_flutter/screens/patients/profile/lab_result/labs_home import 'package:doctor_app_flutter/screens/patients/profile/medical_report/AddVerifyMedicalReport.dart'; import 'package:doctor_app_flutter/screens/patients/profile/medical_report/MedicalReportDetailPage.dart'; import 'package:doctor_app_flutter/screens/patients/profile/medical_report/MedicalReportPage.dart'; -import 'package:doctor_app_flutter/screens/patients/profile/new-medication/intervention_medication.dart'; -import 'package:doctor_app_flutter/screens/patients/profile/new-medication/new_medication_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/notes/note/progress_note_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/notes/nursing_note/nursing_note_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/operation_report/operation_report.dart'; import 'package:doctor_app_flutter/screens/patients/profile/pending_orders/pending_orders_screen.dart'; +import 'package:doctor_app_flutter/screens/patients/profile/pharmacy-intervention/pharmacy_intervention_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/prescriptions/in_patient_prescription_details_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/radiology/radiology_home_page.dart'; import 'package:doctor_app_flutter/screens/patients/profile/referral/refer-patient-screen-in-patient.dart'; @@ -85,7 +84,7 @@ const String DIAGNOSIS_FOR_IN_PATIENT = 'get_diagnosis_for_in_patient'; const String DIABETIC_CHART_VALUES = 'get_diabetic_chart_values'; const String VTE_ASSESSMENT = 'vte_assessment '; const String DISCHARGE_SUMMARY = 'discharge_summary'; -const String NEW_MEDICATION = 'new_medication'; +const String PHARMACY_INTERVENTION = 'new_medication'; const String INTERVENTION_MEDICATION = 'intervention_medication'; @@ -138,6 +137,6 @@ var routes = { DIAGNOSIS_FOR_IN_PATIENT: (_) => DiagnosisScreen(), ADMISSION_ORDERS: (_) => AdmissionOrdersScreen(), DIABETIC_CHART_VALUES: (_) => DiabeticChart(), - NEW_MEDICATION: (_) => NewMedicationScreen(), + PHARMACY_INTERVENTION: (_) => PharmacyInterventionScreen(), VTE_ASSESSMENT: (_) => VteAssessmentScreen(), }; diff --git a/lib/screens/patients/profile/new-medication/intervention_medication.dart b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication.dart similarity index 100% rename from lib/screens/patients/profile/new-medication/intervention_medication.dart rename to lib/screens/patients/profile/pharmacy-intervention/intervention_medication.dart diff --git a/lib/screens/patients/profile/new-medication/intervention_medication_history_screen.dart b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart similarity index 100% rename from lib/screens/patients/profile/new-medication/intervention_medication_history_screen.dart rename to lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart index cc824195..25d85c9b 100644 --- a/lib/screens/patients/profile/new-medication/intervention_medication_history_screen.dart +++ b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart @@ -321,7 +321,7 @@ class _InterventionMedicationHistoryScreenState extends State _NewMedicationScreenState(); + _PharmacyInterventionScreenState createState() => _PharmacyInterventionScreenState(); } -class _NewMedicationScreenState extends State { +class _PharmacyInterventionScreenState extends State { @override void initState() { // TODO: implement initState @@ -38,10 +32,9 @@ class _NewMedicationScreenState extends State { @override Widget build(BuildContext context) { - var screenSize; final routeArgs = ModalRoute.of(context).settings.arguments as Map; PatiantInformtion patient = routeArgs['patient']; - return BaseView( + return BaseView( builder: (_, model, w) =>AppScaffold( isShowAppBar: false, backgroundColor: Theme.of(context).scaffoldBackgroundColor, @@ -175,7 +168,7 @@ class _NewMedicationScreenState extends State { ); } - selectDate(BuildContext context,SearchMedicationViewModel model, + selectDate(BuildContext context,PharmacyInterventionViewModel model, {bool isFromDate = true, DateTime firstDate, lastDate}) async { Helpers.hideKeyboard(context); DateTime selectedDate = isFromDate diff --git a/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart b/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart index 63d40c52..bdc7af5d 100644 --- a/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart +++ b/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart @@ -176,9 +176,9 @@ class ProfileGridForInPatient extends StatelessWidget { isInPatient: isInpatient, ), PatientProfileCardModel( - 'New', - 'Medication', - NEW_MEDICATION, + 'Pharmacy', + 'intervention', + PHARMACY_INTERVENTION, '', isInPatient: isInpatient, ), From be40076defec3e5421b43909ac51d901c47c0cdd Mon Sep 17 00:00:00 2001 From: RoaaGhali98 Date: Sun, 16 Jan 2022 10:50:57 +0200 Subject: [PATCH 07/16] Add new function in intervention_medication_service called accepted or rejected --- lib/config/config.dart | 3 + .../intervention_medication_service.dart | 26 +- .../intervention_medication_view_model.dart | 35 +- .../pharmacy_intervention_view_model.dart | 6 - .../accept_or_reject_req_model.dart | 56 +++ .../accept_or_reject_res_model.dart | 4 + ...rvention_medication_history_req_model.dart | 0 ...rvention_medication_history_res_model.dart | 0 .../new_medication_req_model.dart | 0 .../new_medication_res_model.dart | 0 ...ntervention_medication_history_screen.dart | 50 +-- .../pharmacy_intervention_screen.dart | 320 ++++++++++-------- 12 files changed, 284 insertions(+), 216 deletions(-) create mode 100644 lib/screens/patients/profile/pharmacy-intervention-model/accept_or_reject_req_model.dart create mode 100644 lib/screens/patients/profile/pharmacy-intervention-model/accept_or_reject_res_model.dart rename lib/screens/patients/profile/{new-medication-model => pharmacy-intervention-model}/intervention_medication_history_req_model.dart (100%) rename lib/screens/patients/profile/{new-medication-model => pharmacy-intervention-model}/intervention_medication_history_res_model.dart (100%) rename lib/screens/patients/profile/{new-medication-model => pharmacy-intervention-model}/new_medication_req_model.dart (100%) rename lib/screens/patients/profile/{new-medication-model => pharmacy-intervention-model}/new_medication_res_model.dart (100%) diff --git a/lib/config/config.dart b/lib/config/config.dart index d85b75cc..0aaaa56d 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -395,6 +395,9 @@ const GET_INTERVENTION_MEDICATION = const GET_INTERVENTION_MEDICATION_HISTORY = "Services/DoctorApplication.svc/REST/DoctorApp_GetInterventionHistory"; +const SET_ACCEPTED_OR_REJECTED = + "Services/DoctorApplication.svc/REST/DoctorApp_AcceptOrRejectIntervention"; + var selectedPatientType = 1; //*********change value to decode json from Dropdown ************ diff --git a/lib/core/service/patient/profile/intervention_medication_service.dart b/lib/core/service/patient/profile/intervention_medication_service.dart index 24d18eef..eab0fcab 100644 --- a/lib/core/service/patient/profile/intervention_medication_service.dart +++ b/lib/core/service/patient/profile/intervention_medication_service.dart @@ -1,14 +1,11 @@ import 'package:doctor_app_flutter/config/config.dart'; -import 'package:doctor_app_flutter/core/model/vte_assessment/vte_assessment_req_model.dart'; -import 'package:doctor_app_flutter/core/model/vte_assessment/vte_assessment_res_model.dart'; import 'package:doctor_app_flutter/core/service/base/base_service.dart'; -import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryReqModel.dart'; -import 'package:doctor_app_flutter/models/discharge_summary/GetDischargeSummaryResModel.dart'; +import '../../../../screens/patients/profile/pharmacy-intervention-model/accept_or_reject_req_model.dart'; +import '../../../../screens/patients/profile/pharmacy-intervention-model/intervention_medication_history_req_model.dart'; +import '../../../../screens/patients/profile/pharmacy-intervention-model/intervention_medication_history_res_model.dart'; +import '../../../../screens/patients/profile/pharmacy-intervention-model/new_medication_req_model.dart'; +import '../../../../screens/patients/profile/pharmacy-intervention-model/new_medication_res_model.dart'; -import '../../../../screens/patients/profile/new-medication-model/intervention_medication_history_req_model.dart'; -import '../../../../screens/patients/profile/new-medication-model/intervention_medication_history_res_model.dart'; -import '../../../../screens/patients/profile/new-medication-model/new_medication_req_model.dart'; -import '../../../../screens/patients/profile/new-medication-model/new_medication_res_model.dart'; class InterventionMedicationService extends BaseService { @@ -55,4 +52,17 @@ class InterventionMedicationService extends BaseService { super.error = error; }, body: interventionMedicationHistoryReqModel.toJson()); } + + Future setAcceptedOrRejected( + {AcceptOrRejectReqModel acceptOrRejectReqModel}) async { + hasError = false; + await baseAppClient.post(SET_ACCEPTED_OR_REJECTED, + onSuccess: (dynamic response, int statusCode) { + _allInterventionHistoryList.clear(); + + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: acceptOrRejectReqModel.toJson()); + } } diff --git a/lib/core/viewModel/profile/intervention_medication_view_model.dart b/lib/core/viewModel/profile/intervention_medication_view_model.dart index 8494b6d9..343dda42 100644 --- a/lib/core/viewModel/profile/intervention_medication_view_model.dart +++ b/lib/core/viewModel/profile/intervention_medication_view_model.dart @@ -2,11 +2,11 @@ import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; import 'package:doctor_app_flutter/locator.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; -import 'package:doctor_app_flutter/screens/patients/profile/new-medication-model/new_medication_res_model.dart'; - -import '../../../screens/patients/profile/new-medication-model/intervention_medication_history_req_model.dart'; -import '../../../screens/patients/profile/new-medication-model/intervention_medication_history_res_model.dart'; -import '../../../screens/patients/profile/new-medication-model/new_medication_req_model.dart'; +import '../../../screens/patients/profile/pharmacy-intervention-model/accept_or_reject_req_model.dart'; +import '../../../screens/patients/profile/pharmacy-intervention-model/intervention_medication_history_req_model.dart'; +import '../../../screens/patients/profile/pharmacy-intervention-model/intervention_medication_history_res_model.dart'; +import '../../../screens/patients/profile/pharmacy-intervention-model/new_medication_req_model.dart'; +import '../../../screens/patients/profile/pharmacy-intervention-model/new_medication_res_model.dart'; import '../../service/patient/profile/intervention_medication_service.dart'; class InterventionMedicationViewModel extends BaseViewModel { @@ -68,4 +68,29 @@ class InterventionMedicationViewModel extends BaseViewModel { setState(ViewState.Idle); } } + + + Future setAcceptedOrRejected({ + String remarks, + }) async { + AcceptOrRejectReqModel acceptOrRejectReqModel = + AcceptOrRejectReqModel( + projectID: 15, + patientID: 79941, + admissionNo: 2018013900, + prescriptionNo: 2045165, + orderNo: 1171570, + remarks: remarks + ); + hasError = false; + setState(ViewState.Busy); + await _interventionMedicationService.setAcceptedOrRejected( + acceptOrRejectReqModel: acceptOrRejectReqModel); + if (_interventionMedicationService.hasError) { + error = _interventionMedicationService.error; + setState(ViewState.ErrorLocal); + } else { + setState(ViewState.Idle); + } + } } diff --git a/lib/core/viewModel/profile/pharmacy_intervention_view_model.dart b/lib/core/viewModel/profile/pharmacy_intervention_view_model.dart index b34cced5..1bd1c4d2 100644 --- a/lib/core/viewModel/profile/pharmacy_intervention_view_model.dart +++ b/lib/core/viewModel/profile/pharmacy_intervention_view_model.dart @@ -1,14 +1,8 @@ -import 'package:doctor_app_flutter/core/enum/filter_type.dart'; -import 'package:doctor_app_flutter/core/enum/patient_type.dart'; -import 'package:doctor_app_flutter/core/enum/viewstate.dart'; -import 'package:doctor_app_flutter/core/model/patient_muse/PatientSearchRequestModel.dart'; import 'package:doctor_app_flutter/core/service/patient/out_patient_service.dart'; import 'package:doctor_app_flutter/core/service/patient/patientInPatientService.dart'; import 'package:doctor_app_flutter/core/service/special_clinics/special_clinic_service.dart'; import 'package:doctor_app_flutter/models/dashboard/get_special_clinical_care_mapping_List_Respose_Model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; -import 'package:doctor_app_flutter/util/date-utils.dart'; - import '../../../locator.dart'; import '../base_view_model.dart'; diff --git a/lib/screens/patients/profile/pharmacy-intervention-model/accept_or_reject_req_model.dart b/lib/screens/patients/profile/pharmacy-intervention-model/accept_or_reject_req_model.dart new file mode 100644 index 00000000..07ef3f99 --- /dev/null +++ b/lib/screens/patients/profile/pharmacy-intervention-model/accept_or_reject_req_model.dart @@ -0,0 +1,56 @@ +class AcceptOrRejectReqModel { + int patientID; + int projectID; + int admissionNo; + int prescriptionNo; + int orderNo; + String remarks; + int memberID; + int accessLevel; + int languageID; + int lineItemNo; + bool patientOutSA; + + AcceptOrRejectReqModel( + {this.patientID, + this.projectID, + this.admissionNo, + this.prescriptionNo, + this.orderNo, + this.remarks, + this.memberID, + this.accessLevel, + this.languageID, + this.lineItemNo, + this.patientOutSA}); + + AcceptOrRejectReqModel.fromJson(Map json) { + patientID = json['PatientID']; + projectID = json['ProjectID']; + admissionNo = json['AdmissionNo']; + prescriptionNo = json['PrescriptionNo']; + orderNo = json['OrderNo']; + remarks = json['Remarks']; + memberID = json['MemberID']; + accessLevel = json['AccessLevel']; + languageID = json['LanguageID']; + lineItemNo = json['LineItemNo']; + patientOutSA = json['PatientOutSA']; + } + + Map toJson() { + final Map data = new Map(); + data['PatientID'] = this.patientID; + data['ProjectID'] = this.projectID; + data['AdmissionNo'] = this.admissionNo; + data['PrescriptionNo'] = this.prescriptionNo; + data['OrderNo'] = this.orderNo; + data['Remarks'] = this.remarks; + data['MemberID'] = this.memberID; + data['AccessLevel'] = this.accessLevel; + data['LanguageID'] = this.languageID; + data['LineItemNo'] = this.lineItemNo; + data['PatientOutSA'] = this.patientOutSA; + return data; + } +} \ No newline at end of file diff --git a/lib/screens/patients/profile/pharmacy-intervention-model/accept_or_reject_res_model.dart b/lib/screens/patients/profile/pharmacy-intervention-model/accept_or_reject_res_model.dart new file mode 100644 index 00000000..7e2448f6 --- /dev/null +++ b/lib/screens/patients/profile/pharmacy-intervention-model/accept_or_reject_res_model.dart @@ -0,0 +1,4 @@ +class AcceptOrRejectResModel { + + +} \ No newline at end of file diff --git a/lib/screens/patients/profile/new-medication-model/intervention_medication_history_req_model.dart b/lib/screens/patients/profile/pharmacy-intervention-model/intervention_medication_history_req_model.dart similarity index 100% rename from lib/screens/patients/profile/new-medication-model/intervention_medication_history_req_model.dart rename to lib/screens/patients/profile/pharmacy-intervention-model/intervention_medication_history_req_model.dart diff --git a/lib/screens/patients/profile/new-medication-model/intervention_medication_history_res_model.dart b/lib/screens/patients/profile/pharmacy-intervention-model/intervention_medication_history_res_model.dart similarity index 100% rename from lib/screens/patients/profile/new-medication-model/intervention_medication_history_res_model.dart rename to lib/screens/patients/profile/pharmacy-intervention-model/intervention_medication_history_res_model.dart diff --git a/lib/screens/patients/profile/new-medication-model/new_medication_req_model.dart b/lib/screens/patients/profile/pharmacy-intervention-model/new_medication_req_model.dart similarity index 100% rename from lib/screens/patients/profile/new-medication-model/new_medication_req_model.dart rename to lib/screens/patients/profile/pharmacy-intervention-model/new_medication_req_model.dart diff --git a/lib/screens/patients/profile/new-medication-model/new_medication_res_model.dart b/lib/screens/patients/profile/pharmacy-intervention-model/new_medication_res_model.dart similarity index 100% rename from lib/screens/patients/profile/new-medication-model/new_medication_res_model.dart rename to lib/screens/patients/profile/pharmacy-intervention-model/new_medication_res_model.dart diff --git a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart index 25d85c9b..ee24edfa 100644 --- a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart +++ b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart @@ -1,8 +1,4 @@ -import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; -import 'package:doctor_app_flutter/core/model/diagnosis/GetDiagnosisForInPatientRequestModel.dart'; import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; -import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart'; -import 'package:doctor_app_flutter/core/viewModel/profile/vte_assessment_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; @@ -16,13 +12,9 @@ import 'package:doctor_app_flutter/widgets/shared/card_with_bg_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; - import '../../../../config/config.dart'; -import '../../../../core/service/AnalyticsService.dart'; import '../../../../core/viewModel/profile/intervention_medication_view_model.dart'; -import '../../../../icons_app/doctor_app_icons.dart'; -import '../../../../locator.dart'; -import '../operation_report/update_operation_report.dart'; + DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); @@ -299,25 +291,7 @@ class _InterventionMedicationHistoryScreenState extends State() - .logEvent( - eventCategory: - "Operation Report Screen", - eventAction: - "Update Operation Report ", - ); - // Navigator.push( - // context, - // MaterialPageRoute( - // builder: (context) => - // UpdateOperationReport( - // reservation: model - // .reservationList[ - // index], - // patient: patient, - // isUpdate: true, - // )), - // ); + model.setAcceptedOrRejected(remarks: "Accepted"); }, child: Container( decoration: BoxDecoration( @@ -349,25 +323,7 @@ class _InterventionMedicationHistoryScreenState extends State() - .logEvent( - eventCategory: - "Operation Report Screen", - eventAction: - "Update Operation Report ", - ); - // Navigator.push( - // context, - // MaterialPageRoute( - // builder: (context) => - // UpdateOperationReport( - // reservation: model - // .reservationList[ - // index], - // patient: patient, - // isUpdate: true, - // )), - // ); + model.setAcceptedOrRejected(remarks: "Rejected"); }, child: Container( decoration: BoxDecoration( diff --git a/lib/screens/patients/profile/pharmacy-intervention/pharmacy_intervention_screen.dart b/lib/screens/patients/profile/pharmacy-intervention/pharmacy_intervention_screen.dart index 0713d3be..e7ac7b2c 100644 --- a/lib/screens/patients/profile/pharmacy-intervention/pharmacy_intervention_screen.dart +++ b/lib/screens/patients/profile/pharmacy-intervention/pharmacy_intervention_screen.dart @@ -7,6 +7,7 @@ import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; + import '../../../../core/viewModel/profile/pharmacy_intervention_view_model.dart'; import '../../../../models/patient/patiant_info_model.dart'; import '../../../base/base_view.dart'; @@ -15,15 +16,18 @@ import 'intervention_medication.dart'; class PharmacyInterventionScreen extends StatefulWidget { final OutPatientFilterType outPatientFilterType; - const PharmacyInterventionScreen( - {Key key, this.outPatientFilterType, }) - : super(key: key); + const PharmacyInterventionScreen({ + Key key, + this.outPatientFilterType, + }) : super(key: key); @override - _PharmacyInterventionScreenState createState() => _PharmacyInterventionScreenState(); + _PharmacyInterventionScreenState createState() => + _PharmacyInterventionScreenState(); } -class _PharmacyInterventionScreenState extends State { +class _PharmacyInterventionScreenState + extends State { @override void initState() { // TODO: implement initState @@ -35,145 +39,161 @@ class _PharmacyInterventionScreenState extends State final routeArgs = ModalRoute.of(context).settings.arguments as Map; PatiantInformtion patient = routeArgs['patient']; return BaseView( - builder: (_, model, w) =>AppScaffold( - isShowAppBar: false, - backgroundColor: Theme.of(context).scaffoldBackgroundColor, - body: SingleChildScrollView( - child: Container( - height: MediaQuery.of(context).size.height * 1.0, - child: Padding( - padding: EdgeInsets.all(0.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - BottomSheetTitle( - title: (OutPatientFilterType.Previous == - widget.outPatientFilterType) - ? "" - : " New Medication", - ), - SizedBox( - height: 10.0, - ), - Center( - child: FractionallySizedBox( - widthFactor: 0.9, - child: Column( - children: [ - Container( - color: Colors.white, - child: InkWell( - onTap: () => selectDate(context,model, - firstDate: - getFirstDate(widget.outPatientFilterType), - lastDate: - getLastDate(widget.outPatientFilterType)), - child: TextField( - decoration: textFieldSelectorDecoration( - TranslationBase.of(context).fromDate, - model - .selectedFromDate != - null - ? "${AppDateUtils.convertStringToDateFormat(model.selectedFromDate.toString(), "yyyy-MM-dd")}" - : null, - true, - suffixIcon: Icon( - Icons.calendar_today, - color: Colors.black, - )), - enabled: false, + builder: (_, model, w) => AppScaffold( + isShowAppBar: false, + backgroundColor: Theme.of(context).scaffoldBackgroundColor, + body: SingleChildScrollView( + child: Container( + height: MediaQuery.of(context).size.height * 1.0, + child: Padding( + padding: EdgeInsets.all(0.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BottomSheetTitle( + title: (OutPatientFilterType.Previous == + widget.outPatientFilterType) + ? "" + : " Pharmacy Intervention", + ), + SizedBox( + height: 10.0, + ), + Center( + child: FractionallySizedBox( + widthFactor: 0.9, + child: Column( + children: [ + Container( + color: Colors.white, + child: InkWell( + onTap: () => selectDate( + context, + model, + firstDate: DateTime( + DateTime.now().year - 20, + DateTime.now().month, + DateTime.now().day), + lastDate: DateTime( + DateTime.now().year, + DateTime.now().month, + DateTime.now().day + 100), + selectedDate: DateTime( + DateTime.now().year, + DateTime.now().month, + DateTime.now().day), + ), + child: TextField( + decoration: textFieldSelectorDecoration( + TranslationBase.of(context).fromDate, + model.selectedFromDate != null + ? "${AppDateUtils.convertStringToDateFormat(model.selectedFromDate.toString(), "yyyy-MM-dd")}" + : null, + true, + suffixIcon: Icon( + Icons.calendar_today, + color: Colors.black, + )), + enabled: false, + ), ), ), - ), - SizedBox( - height: 10, - ), - Container( - color: Colors.white, - child: InkWell( - onTap: () => selectDate(context,model, + SizedBox( + height: 10, + ), + Container( + color: Colors.white, + child: InkWell( + onTap: () => selectDate( + context, + model, isFromDate: false, - firstDate: - getFirstDate(widget.outPatientFilterType), - lastDate: - getLastDate(widget.outPatientFilterType)), - child: TextField( - decoration: textFieldSelectorDecoration( - TranslationBase.of(context).toDate, - model - .selectedToDate != - null - ? "${AppDateUtils.convertStringToDateFormat(model.selectedToDate.toString(), "yyyy-MM-dd")}" - : null, - true, - suffixIcon: Icon( - Icons.calendar_today, - color: Colors.black, - )), - enabled: false, + firstDate: DateTime( + DateTime.now().year - 20, + DateTime.now().month, + DateTime.now().day), + lastDate: DateTime( + DateTime.now().year, + DateTime.now().month, + DateTime.now().day + 100), + selectedDate: DateTime( + DateTime.now().year, + DateTime.now().month, + DateTime.now().day), + ), + child: TextField( + decoration: textFieldSelectorDecoration( + TranslationBase.of(context).toDate, + model.selectedToDate != null + ? "${AppDateUtils.convertStringToDateFormat(model.selectedToDate.toString(), "yyyy-MM-dd")}" + : null, + true, + suffixIcon: Icon( + Icons.calendar_today, + color: Colors.black, + )), + enabled: false, + ), ), ), - ), - ], + ], + ), ), ), - ), - ], + ], + ), ), ), ), - ), - bottomSheet: Container( - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.all( - Radius.circular(0.0), - ), - border: Border.all(color: HexColor('#707070'), width: 0), - ), - height: MediaQuery.of(context).size.height * 0.1, - width: double.infinity, - child: Column( - children: [ - SizedBox( - height: 10, + bottomSheet: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.all( + Radius.circular(0.0), ), - Container( - child: FractionallySizedBox( - widthFactor: .80, - child: Center( - child: AppButton( - title: TranslationBase.of(context).search, - padding: 5, - color: Color(0xFF359846), - onPressed: () async { - - Navigator.push( - context, - MaterialPageRoute(builder: (context) => InterventionMedicationScreen(patient)), - ); - - - }, + border: Border.all(color: HexColor('#707070'), width: 0), + ), + height: MediaQuery.of(context).size.height * 0.1, + width: double.infinity, + child: Column( + children: [ + SizedBox( + height: 10, + ), + Container( + child: FractionallySizedBox( + widthFactor: .80, + child: Center( + child: AppButton( + title: TranslationBase.of(context).search, + padding: 5, + color: Color(0xFF359846), + onPressed: () async { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + InterventionMedicationScreen(patient)), + ); + }, + ), ), ), ), - ), - SizedBox( - height: 5, - ), - ], - ), - )) - ); + SizedBox( + height: 5, + ), + ], + ), + ))); } - selectDate(BuildContext context,PharmacyInterventionViewModel model, - {bool isFromDate = true, DateTime firstDate, lastDate}) async { + selectDate(BuildContext context, PharmacyInterventionViewModel model, + {bool isFromDate = true, + DateTime firstDate, + lastDate, + selectedDate}) async { Helpers.hideKeyboard(context); - DateTime selectedDate = isFromDate - ? model.selectedFromDate ?? firstDate - : model.selectedToDate ?? lastDate; final DateTime picked = await showDatePicker( context: context, initialDate: selectedDate, @@ -199,25 +219,25 @@ class _PharmacyInterventionScreenState extends State } } - getFirstDate(OutPatientFilterType outPatientFilterType) { - if (outPatientFilterType == OutPatientFilterType.Previous) { - return DateTime( - DateTime.now().year - 20, DateTime.now().month, DateTime.now().day); - } else { - return DateTime( - DateTime.now().year, DateTime.now().month, DateTime.now().day + 1); - } - } + // getFirstDate(OutPatientFilterType outPatientFilterType) { + // if (outPatientFilterType == OutPatientFilterType.Previous) { + // return DateTime(F + // DateTime.now().year - 20, DateTime.now().month, DateTime.now().day); + // } else { + // return DateTime( + // DateTime.now().year, DateTime.now().month, DateTime.now().day + 1); + // } + // } - getLastDate(OutPatientFilterType outPatientFilterType) { - if (outPatientFilterType == OutPatientFilterType.Previous) { - return DateTime( - DateTime.now().year, DateTime.now().month, DateTime.now().day - 1); - } else { - return DateTime( - DateTime.now().year, DateTime.now().month, DateTime.now().day + 7); - } - } + // getLastDate(OutPatientFilterType outPatientFilterType) { + // if (outPatientFilterType == OutPatientFilterType.Previous) { + // return DateTime( + // DateTime.now().year, DateTime.now().month, DateTime.now().day - 1); + // } else { + // return DateTime( + // DateTime.now().year , DateTime.now().month , DateTime.now().day + 100); + // } + // } InputDecoration textFieldSelectorDecoration( String hintText, String selectedText, bool isDropDown, @@ -238,11 +258,11 @@ class _PharmacyInterventionScreenState extends State hintText: selectedText != null ? selectedText : hintText, suffixIcon: isDropDown ? suffixIcon != null - ? suffixIcon - : Icon( - Icons.keyboard_arrow_down_sharp, - color: Color(0xff2E303A), - ) + ? suffixIcon + : Icon( + Icons.keyboard_arrow_down_sharp, + color: Color(0xff2E303A), + ) : null, hintStyle: TextStyle( fontSize: 13, From 37928c1757ba846e0ab730ac1006ae76a4d3d602 Mon Sep 17 00:00:00 2001 From: Elham Rababh Date: Sun, 16 Jan 2022 11:33:49 +0200 Subject: [PATCH 08/16] fix issues --- .../intervention_medication_view_model.dart | 2 +- ...ntervention_medication_history_screen.dart | 26 ++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/lib/core/viewModel/profile/intervention_medication_view_model.dart b/lib/core/viewModel/profile/intervention_medication_view_model.dart index 343dda42..5cc6a9b4 100644 --- a/lib/core/viewModel/profile/intervention_medication_view_model.dart +++ b/lib/core/viewModel/profile/intervention_medication_view_model.dart @@ -83,7 +83,7 @@ class InterventionMedicationViewModel extends BaseViewModel { remarks: remarks ); hasError = false; - setState(ViewState.Busy); + setState(ViewState.BusyLocal); await _interventionMedicationService.setAcceptedOrRejected( acceptOrRejectReqModel: acceptOrRejectReqModel); if (_interventionMedicationService.hasError) { diff --git a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart index ee24edfa..2ae9d78e 100644 --- a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart +++ b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart @@ -1,15 +1,19 @@ +import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_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/date-utils.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/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/app_bar/patient-profile-app-bar.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_bg_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart'; +import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../../../config/config.dart'; @@ -291,7 +295,17 @@ class _InterventionMedicationHistoryScreenState extends State Date: Sun, 16 Jan 2022 16:07:53 +0200 Subject: [PATCH 09/16] Fix some issues --- lib/config/localized_values.dart | 2 + .../intervention_medication_view_model.dart | 70 ++- lib/locator.dart | 2 - .../intervention_medication.dart | 457 ++++++++---------- ...ntervention_medication_history_screen.dart | 137 ++---- .../pharmacy_intervention_screen.dart | 32 +- .../profile_gird_for_InPatient.dart | 6 +- lib/util/translations_delegate_base.dart | 4 + 8 files changed, 305 insertions(+), 405 deletions(-) diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 5424f389..fa97bf62 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -1054,6 +1054,8 @@ const Map> localizedValues = { "maritalStatus": {"en": "Marital Status", "ar": "الحالة الزوجية"}, "nursing": {"en": "Nursing", "ar": "تمريض"}, "diabetic": {"en": "Diabetic", "ar": "مرض السكري"}, + "pharmacy": {"en": "Pharmacy", "ar": "الصيدلاني"}, + "intervention": {"en": "Intervention", "ar": "التدخل"}, "chart": {"en": "Chart", "ar": "جدول"}, "operationTimeStart": { "en": "Operation Time Start :", diff --git a/lib/core/viewModel/profile/intervention_medication_view_model.dart b/lib/core/viewModel/profile/intervention_medication_view_model.dart index 5cc6a9b4..998c7958 100644 --- a/lib/core/viewModel/profile/intervention_medication_view_model.dart +++ b/lib/core/viewModel/profile/intervention_medication_view_model.dart @@ -2,14 +2,30 @@ import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; import 'package:doctor_app_flutter/locator.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; +import '../../../models/dashboard/get_special_clinical_care_mapping_List_Respose_Model.dart'; import '../../../screens/patients/profile/pharmacy-intervention-model/accept_or_reject_req_model.dart'; import '../../../screens/patients/profile/pharmacy-intervention-model/intervention_medication_history_req_model.dart'; import '../../../screens/patients/profile/pharmacy-intervention-model/intervention_medication_history_res_model.dart'; import '../../../screens/patients/profile/pharmacy-intervention-model/new_medication_req_model.dart'; import '../../../screens/patients/profile/pharmacy-intervention-model/new_medication_res_model.dart'; +import '../../../util/date-utils.dart'; import '../../service/patient/profile/intervention_medication_service.dart'; +import '../../service/special_clinics/special_clinic_service.dart'; class InterventionMedicationViewModel extends BaseViewModel { + + SpecialClinicsService _specialClinicsService = + locator(); + + List + get specialClinicalCareMappingList => + _specialClinicsService.specialClinicalCareMappingList; + + List filterData = []; + + DateTime selectedFromDate; + DateTime selectedToDate; + PatiantInformtion patient; bool hasError = false; InterventionMedicationService _interventionMedicationService = @@ -23,18 +39,25 @@ class InterventionMedicationViewModel extends BaseViewModel { Future getInterventionMedication({ + int projectId, int patientId, int admissionNo, + DateTime fromDate, + DateTime toDate, }) async { InterventionMedicationReqModel interventionMedicationReqModel = InterventionMedicationReqModel( - projectID: 15, - patientID: 79941, - fromDate: '\/Date(1488322922)\/', - toDate: '\/Date(1635886800000)\/', + projectID: projectId, + patientID: patientId, + fromDate: AppDateUtils.convertToServerFormat( + fromDate.toString(), + 'MM/dd/yyyy'), + toDate: AppDateUtils.convertToServerFormat( + toDate.toString(), + 'MM/dd/yyyy'), ); hasError = false; - setState(ViewState.Busy); + setState(ViewState.BusyLocal); await _interventionMedicationService.getInterventionMedication( interventionMedicationReqModel: interventionMedicationReqModel); if (_interventionMedicationService.hasError) { @@ -47,18 +70,22 @@ class InterventionMedicationViewModel extends BaseViewModel { Future getInterventionMedicationHistory({ + int projectId, int patientId, + int admissionNo, + int prescriptionNo, + int orderNo, }) async { InterventionMedicationHistoryReqModel interventionMedicationHistoryReqModel = InterventionMedicationHistoryReqModel( - projectID: 15, - patientID: 79941, - admissionNo: 2018013900, - prescriptionNo: 2045165, - orderNo: 1171570, + projectID: projectId, + patientID: patientId, + admissionNo: admissionNo, + prescriptionNo: prescriptionNo, + orderNo: orderNo, ); hasError = false; - setState(ViewState.Busy); + setState(ViewState.BusyLocal); await _interventionMedicationService.getInterventionMedicationHistory( interventionMedicationHistoryReqModel: interventionMedicationHistoryReqModel); if (_interventionMedicationService.hasError) { @@ -72,15 +99,24 @@ class InterventionMedicationViewModel extends BaseViewModel { Future setAcceptedOrRejected({ String remarks, + int memberId, + int projectId, + int patientID, + int admissionNo, + int prescriptionNo, + int orderNo, }) async { AcceptOrRejectReqModel acceptOrRejectReqModel = AcceptOrRejectReqModel( - projectID: 15, - patientID: 79941, - admissionNo: 2018013900, - prescriptionNo: 2045165, - orderNo: 1171570, - remarks: remarks + projectID: projectId, + patientID: patientID, + admissionNo: admissionNo, + prescriptionNo: prescriptionNo, + orderNo: orderNo, + accessLevel: 4, + lineItemNo: 1, + remarks: remarks, + memberID: memberId, ); hasError = false; setState(ViewState.BusyLocal); diff --git a/lib/locator.dart b/lib/locator.dart index 76be7fa0..fc42e632 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -67,7 +67,6 @@ import 'core/viewModel/patient-ucaf-viewmodel.dart'; import 'core/viewModel/patient-vital-sign-viewmodel.dart'; import 'core/viewModel/prescriptions_view_model.dart'; import 'core/viewModel/profile/intervention_medication_view_model.dart'; -import 'core/viewModel/profile/pharmacy_intervention_view_model.dart'; import 'core/viewModel/profile/vte_assessment_view_model.dart'; import 'core/viewModel/radiology_view_model.dart'; import 'core/viewModel/referral_view_model.dart'; @@ -150,7 +149,6 @@ void setupLocator() { locator.registerFactory(() => PatientRegistrationViewModel()); locator.registerFactory(() => PendingOrdersViewModel()); locator.registerFactory(() => DischargeSummaryViewModel()); - locator.registerFactory(() => PharmacyInterventionViewModel()); locator.registerFactory(() => VteAssessmentViewModel()); locator.registerFactory(() => InterventionMedicationViewModel()); } diff --git a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication.dart b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication.dart index 0ae3cee3..4587ce8d 100644 --- a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication.dart +++ b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication.dart @@ -1,8 +1,4 @@ -import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; -import 'package:doctor_app_flutter/core/model/diagnosis/GetDiagnosisForInPatientRequestModel.dart'; import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; -import 'package:doctor_app_flutter/core/viewModel/patient_view_model.dart'; -import 'package:doctor_app_flutter/core/viewModel/profile/vte_assessment_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; @@ -16,7 +12,6 @@ import 'package:doctor_app_flutter/widgets/shared/card_with_bg_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; - import '../../../../core/viewModel/profile/intervention_medication_view_model.dart'; import '../../../../widgets/transitions/fade_page.dart'; import 'intervention_medication_history_screen.dart'; @@ -28,10 +23,12 @@ class InterventionMedicationScreen extends StatefulWidget { const InterventionMedicationScreen(this.patient, {Key key}) : super(key: key); @override - _InterventionMedicationScreenState createState() => _InterventionMedicationScreenState(); + _InterventionMedicationScreenState createState() => + _InterventionMedicationScreenState(); } -class _InterventionMedicationScreenState extends State { +class _InterventionMedicationScreenState + extends State { bool isDischargedPatient = false; AuthenticationViewModel authenticationViewModel; ProjectViewModel projectViewModel; @@ -42,11 +39,13 @@ class _InterventionMedicationScreenState extends State( - onModelReady: (model) => model.getInterventionMedication(patientId: widget.patient.patientId, - // admissionNo: 2016023498 - - admissionNo:int.parse(widget.patient.admissionNo) + onModelReady: (model) => model.getInterventionMedication( + patientId: widget.patient.patientId, + admissionNo: int.parse(widget.patient.admissionNo), + fromDate: model.selectedFromDate, + toDate: model.selectedToDate, ), + builder: (_, model, w) => AppScaffold( baseViewModel: model, backgroundColor: Theme.of(context).scaffoldBackgroundColor, @@ -55,270 +54,212 @@ class _InterventionMedicationScreenState extends State[ - Expanded( - child: Container( - child: ListView.builder( - itemCount: model.allInterventionList.length, - itemBuilder: (BuildContext ctxt, int index) { - return FractionallySizedBox( - widthFactor: 0.95, - child: CardWithBgWidget( - hasBorder: false, - bgColor: Colors.transparent, - widget: Column( - children: [ - Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - SizedBox( - height: 10, - ), - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - crossAxisAlignment: - CrossAxisAlignment.start, + child: ErrorMessage( + error: TranslationBase.of(context).noDataAvailable, + ), + ) + : Container( + color: Colors.grey[200], + child: Column( + children: [ + Expanded( + child: Container( + child: ListView.builder( + itemCount: model.allInterventionList.length, + itemBuilder: (BuildContext ctxt, int index) { + return InkWell( + child: FractionallySizedBox( + widthFactor: 0.95, + child: CardWithBgWidget( + hasBorder: false, + bgColor: Colors.transparent, + widget: Column( children: [ - Container( - width: MediaQuery.of(context) - .size - .width * - 0.60, - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Row( - crossAxisAlignment: - CrossAxisAlignment - .start, - children: [ - AppText( - model - .allInterventionList[ - index].cS, - fontWeight: FontWeight.w600, - fontSize: 14, - ), - - ], - ), - ], - ), - ), Column( + crossAxisAlignment: + CrossAxisAlignment.start, children: [ + SizedBox( + height: 10, + ), Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, crossAxisAlignment: - CrossAxisAlignment - .start, + CrossAxisAlignment.start, children: [ - AppText( - AppDateUtils.getDayMonthYearDateFormatted( - AppDateUtils.convertStringToDate( - model - .allInterventionList[ - index].startDatetime) - ,isArabic: - projectViewModel - .isArabic, - isMonthShort: true), - fontWeight: FontWeight.w600, - fontSize: 14, + Container( + width: MediaQuery.of(context) + .size + .width * + 0.60, + child: Column( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + Row( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + AppText( + model + .allInterventionList[ + index] + .cS, + fontWeight: + FontWeight.w600, + fontSize: 14, + ), + ], + ), + ], + ), ), - + Column( + children: [ + Row( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + AppText( + AppDateUtils.getDayMonthYearDateFormatted( + AppDateUtils.convertStringToDate(model + .allInterventionList[ + index] + .startDatetime), + isArabic: + projectViewModel + .isArabic, + isMonthShort: + true), + fontWeight: + FontWeight.w600, + fontSize: 14, + ), + ], + ), + ], + ) ], ), - ], - ) - // Column( - // children: [ - // AppText( - // model - // .allInterventionList[ - // index] - // .startDatetime != - // null - // ? AppDateUtils.getDayMonthYearDateFormatted( - // AppDateUtils - // .getDateTimeFromString(model - // .allInterventionList[ - // index] - // .startDatetime), - // isArabic: - // projectViewModel - // .isArabic, - // isMonthShort: true) - // : AppDateUtils - // .getDayMonthYearDateFormatted( - // DateTime.now(), - // isArabic: - // projectViewModel - // .isArabic), - // fontWeight: FontWeight.w600, - // fontSize: 14, - // isCopyable: true, - // ), - // AppText( - // model - // .allInterventionList[ - // index] - // .startDatetime != - // null - // ? AppDateUtils.getHour( - // AppDateUtils - // .getDateTimeFromString(model - // .allInterventionList[ - // index] - // .startDatetime)) - // : AppDateUtils.getHour( - // DateTime.now()), - // fontWeight: FontWeight.w600, - // fontSize: 14, - // isCopyable: true, - // ), - // ], - // crossAxisAlignment: - // CrossAxisAlignment.end, - // ) - ], - ), - SizedBox( - height: 8, - ), - Row( - mainAxisAlignment: - MainAxisAlignment.start, - children: [ - // AppText( - // TranslationBase.of(context) - // .VTE_Type + - // " : ", - // fontSize: 12, - // ), - Expanded( - child: AppText( - model - .allInterventionList[ - index] - .description, - fontSize: 12, - isCopyable: true, + SizedBox( + height: 8, ), - ), - ]), - SizedBox( - height: 8, - ), - Row( - mainAxisAlignment: - MainAxisAlignment.start, - children: [ - // AppText( - // TranslationBase.of(context) - // .pharmacology + - // " : ", - // fontSize: 12, - // ), - Expanded( - child: AppText( - model - .allInterventionList[ - index] - .medication, - fontSize: 12, - isCopyable: true, + Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + AppText( + 'Description: ', + fontSize: 12, + ), + Expanded( + child: AppText( + model + .allInterventionList[ + index] + .description, + fontSize: 12, + isCopyable: true, + ), + ), + ]), + SizedBox( + height: 8, ), - ), - ]), - SizedBox( - height: 8, - ), - Row( - mainAxisAlignment: - MainAxisAlignment.start, - children: [ - // AppText( - // TranslationBase.of(context) - // .reasonsThrombo + - // " : ", - // fontSize: 12, - // ), - Expanded( - child: AppText( - model - .allInterventionList[ - index] - .doctorComments, - fontSize: 12, - isCopyable: true, + Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + AppText( + 'Medication: ', + fontSize: 12, + ), + Expanded( + child: AppText( + model + .allInterventionList[ + index] + .medication, + fontSize: 12, + isCopyable: true, + ), + ), + ]), + SizedBox( + height: 8, ), - ), - ]), - SizedBox( - height: 8, - ), - - Row( - mainAxisAlignment: - MainAxisAlignment.start, - children: [ - // AppText( - // TranslationBase.of(context) - // .reasonsThrombo + - // " : ", - // fontSize: 12, - // ), - Expanded( - child: AppText( - model - .allInterventionList[ - index] - .statusDescription, - fontSize: 12, - isCopyable: true, + Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + AppText( + 'Doctor Comments: ', + fontSize: 12, + ), + Expanded( + child: AppText( + model + .allInterventionList[ + index] + .doctorComments, + fontSize: 12, + isCopyable: true, + ), + ), + ]), + SizedBox( + height: 8, ), - ), - ]), - - ], - ), - SizedBox( - height: 20, + Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + AppText( + 'Status Description: ', + fontSize: 12, + ), + Expanded( + child: AppText( + model + .allInterventionList[ + index] + .statusDescription, + fontSize: 12, + isCopyable: true, + ), + ), + ]), + ], + ), + SizedBox( + height: 20, + ), + ], + ), + ), ), - ], - ), - ), - ); - }), + onTap: () { + Navigator.push( + context, + FadePage( + page: InterventionMedicationHistoryScreen(widget.patient, model.allInterventionList[index]), + ), + ); + }, + ); + }), + ), + ), + ], ), ), - ], - ), - ), - onTap: () { - // PatiantInformtion patient; - Navigator.push( - context, - FadePage( - page: InterventionMedicationHistoryScreen(widget.patient), - - ), - ); - }, - ), ), ); } diff --git a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart index 2ae9d78e..a2c751bb 100644 --- a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart +++ b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart @@ -3,6 +3,7 @@ import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart import 'package:doctor_app_flutter/core/viewModel/project_view_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/screens/patients/profile/pharmacy-intervention-model/new_medication_res_model.dart'; import 'package:doctor_app_flutter/util/date-utils.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; @@ -24,7 +25,8 @@ DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); class InterventionMedicationHistoryScreen extends StatefulWidget { final PatiantInformtion patient; - const InterventionMedicationHistoryScreen(this.patient, {Key key}) : super(key: key); + final InterventionMedicationResModel interventionMedication; + const InterventionMedicationHistoryScreen(this.patient, this.interventionMedication, {Key key}) : super(key: key); @override _InterventionMedicationHistoryScreenState createState() => _InterventionMedicationHistoryScreenState(); @@ -41,7 +43,12 @@ class _InterventionMedicationHistoryScreenState extends State( - onModelReady: (model) => model.getInterventionMedicationHistory(patientId: widget.patient.patientId, + onModelReady: (model) => model.getInterventionMedicationHistory( + patientId: widget.patient.patientId, + projectId: widget.interventionMedication.projectID, + admissionNo: widget.interventionMedication.admissionNo, + prescriptionNo: widget.interventionMedication.prescriptionNo, + orderNo: widget.interventionMedication.orderNo, ), builder: (_, model, w) => AppScaffold( baseViewModel: model, @@ -133,61 +140,10 @@ class _InterventionMedicationHistoryScreenState extends State( + return BaseView( builder: (_, model, w) => AppScaffold( isShowAppBar: false, backgroundColor: Theme.of(context).scaffoldBackgroundColor, @@ -173,7 +173,7 @@ class _PharmacyInterventionScreenState context, MaterialPageRoute( builder: (context) => - InterventionMedicationScreen(patient)), + InterventionMedicationScreen(patient,)), ); }, ), @@ -188,7 +188,7 @@ class _PharmacyInterventionScreenState ))); } - selectDate(BuildContext context, PharmacyInterventionViewModel model, + selectDate(BuildContext context, InterventionMedicationViewModel model, {bool isFromDate = true, DateTime firstDate, lastDate, @@ -205,7 +205,7 @@ class _PharmacyInterventionScreenState if (isFromDate) { setState(() { model.selectedFromDate = picked; - var date = picked.add(Duration(days: 30)); + var date = picked.add(Duration(days: 1)); if (date.isBefore(lastDate)) { model.selectedToDate = date; } else @@ -219,26 +219,6 @@ class _PharmacyInterventionScreenState } } - // getFirstDate(OutPatientFilterType outPatientFilterType) { - // if (outPatientFilterType == OutPatientFilterType.Previous) { - // return DateTime(F - // DateTime.now().year - 20, DateTime.now().month, DateTime.now().day); - // } else { - // return DateTime( - // DateTime.now().year, DateTime.now().month, DateTime.now().day + 1); - // } - // } - - // getLastDate(OutPatientFilterType outPatientFilterType) { - // if (outPatientFilterType == OutPatientFilterType.Previous) { - // return DateTime( - // DateTime.now().year, DateTime.now().month, DateTime.now().day - 1); - // } else { - // return DateTime( - // DateTime.now().year , DateTime.now().month , DateTime.now().day + 100); - // } - // } - InputDecoration textFieldSelectorDecoration( String hintText, String selectedText, bool isDropDown, {Icon suffixIcon}) { diff --git a/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart b/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart index bdc7af5d..b43dbc44 100644 --- a/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart +++ b/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart @@ -176,10 +176,10 @@ class ProfileGridForInPatient extends StatelessWidget { isInPatient: isInpatient, ), PatientProfileCardModel( - 'Pharmacy', - 'intervention', + TranslationBase.of(context).pharmacy, + TranslationBase.of(context).intervention, PHARMACY_INTERVENTION, - '', + 'assets/images/svgs/profile_screen/medical report.svg', isInPatient: isInpatient, ), ]; diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart index 303a9acf..96a4adf0 100644 --- a/lib/util/translations_delegate_base.dart +++ b/lib/util/translations_delegate_base.dart @@ -1725,6 +1725,10 @@ class TranslationBase { String get diabetic => localizedValues['diabetic'][locale.languageCode]; + String get pharmacy => localizedValues['pharmacy'][locale.languageCode]; + + String get intervention => localizedValues['intervention'][locale.languageCode]; + String get chart => localizedValues['chart'][locale.languageCode]; String get investigation => From 0895a80d16e1cf73729ac72ffa5b6a6401cecd3c Mon Sep 17 00:00:00 2001 From: Elham Rababh Date: Sun, 16 Jan 2022 16:56:46 +0200 Subject: [PATCH 10/16] fix issues with date --- .../intervention_medication.dart | 7 ++++--- .../pharmacy_intervention_screen.dart | 2 +- .../profile_gird_for_InPatient.dart | 17 ++++++++--------- pubspec.lock | 9 +-------- 4 files changed, 14 insertions(+), 21 deletions(-) diff --git a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication.dart b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication.dart index 4587ce8d..81360f5e 100644 --- a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication.dart +++ b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication.dart @@ -20,7 +20,8 @@ DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); class InterventionMedicationScreen extends StatefulWidget { final PatiantInformtion patient; - const InterventionMedicationScreen(this.patient, {Key key}) : super(key: key); + final InterventionMedicationViewModel previousModel; + const InterventionMedicationScreen(this.patient, {Key key, this.previousModel}) : super(key: key); @override _InterventionMedicationScreenState createState() => @@ -42,8 +43,8 @@ class _InterventionMedicationScreenState onModelReady: (model) => model.getInterventionMedication( patientId: widget.patient.patientId, admissionNo: int.parse(widget.patient.admissionNo), - fromDate: model.selectedFromDate, - toDate: model.selectedToDate, + fromDate: widget.previousModel.selectedFromDate, + toDate: widget.previousModel.selectedToDate, ), builder: (_, model, w) => AppScaffold( diff --git a/lib/screens/patients/profile/pharmacy-intervention/pharmacy_intervention_screen.dart b/lib/screens/patients/profile/pharmacy-intervention/pharmacy_intervention_screen.dart index 82a5c51e..c60805aa 100644 --- a/lib/screens/patients/profile/pharmacy-intervention/pharmacy_intervention_screen.dart +++ b/lib/screens/patients/profile/pharmacy-intervention/pharmacy_intervention_screen.dart @@ -173,7 +173,7 @@ class _PharmacyInterventionScreenState context, MaterialPageRoute( builder: (context) => - InterventionMedicationScreen(patient,)), + InterventionMedicationScreen(patient,previousModel: model,)), ); }, ), diff --git a/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart b/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart index b43dbc44..7aed8f6f 100644 --- a/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart +++ b/lib/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart @@ -166,15 +166,14 @@ class ProfileGridForInPatient extends StatelessWidget { DIABETIC_CHART_VALUES, 'assets/images/svgs/profile_screen/diabetic chart.svg', isInPatient: isInpatient, - ) - , - PatientProfileCardModel( - "VTE", - "Assessment", - VTE_ASSESSMENT, - 'assets/images/svgs/profile_screen/diabetic chart.svg', - isInPatient: isInpatient, - ), + ), + PatientProfileCardModel( + "VTE", + "Assessment", + VTE_ASSESSMENT, + 'assets/images/svgs/profile_screen/diabetic chart.svg', + isInPatient: isInpatient, + ), PatientProfileCardModel( TranslationBase.of(context).pharmacy, TranslationBase.of(context).intervention, diff --git a/pubspec.lock b/pubspec.lock index 3ba5bc57..e4f5a19f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -770,13 +770,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.12.11" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.2" meta: dependency: transitive description: @@ -1180,7 +1173,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.8" + version: "0.4.3" timing: dependency: transitive description: From d3f0f1a1414a430e2388aea7a2a2966fcb71fbd0 Mon Sep 17 00:00:00 2001 From: RoaaGhali98 Date: Sun, 16 Jan 2022 17:17:09 +0200 Subject: [PATCH 11/16] Fix the date format in intervention_medication_view_model --- .../profile/intervention_medication_view_model.dart | 8 ++------ lib/util/date-utils.dart | 4 ++++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/core/viewModel/profile/intervention_medication_view_model.dart b/lib/core/viewModel/profile/intervention_medication_view_model.dart index 998c7958..68b8cc2b 100644 --- a/lib/core/viewModel/profile/intervention_medication_view_model.dart +++ b/lib/core/viewModel/profile/intervention_medication_view_model.dart @@ -49,12 +49,8 @@ class InterventionMedicationViewModel extends BaseViewModel { InterventionMedicationReqModel( projectID: projectId, patientID: patientId, - fromDate: AppDateUtils.convertToServerFormat( - fromDate.toString(), - 'MM/dd/yyyy'), - toDate: AppDateUtils.convertToServerFormat( - toDate.toString(), - 'MM/dd/yyyy'), + fromDate: AppDateUtils.convertDateToServerFormat(fromDate), + toDate: AppDateUtils.convertDateToServerFormat(toDate), ); hasError = false; setState(ViewState.BusyLocal); diff --git a/lib/util/date-utils.dart b/lib/util/date-utils.dart index 7c68d649..65e755f9 100644 --- a/lib/util/date-utils.dart +++ b/lib/util/date-utils.dart @@ -28,6 +28,10 @@ class AppDateUtils { return '/Date(${DateFormat(dateFormat).parse(date).millisecondsSinceEpoch})/'; } + static String convertDateToServerFormat(DateTime date) { + return '/Date(${date.millisecondsSinceEpoch})/'; + } + static convertDateFromServerFormat(String str, dateFormat) { var date = getDateTimeFromServerFormat(str); From fec899ebb74ac4bf6d868dd8818958b4c14c65a7 Mon Sep 17 00:00:00 2001 From: RoaaGhali98 Date: Sun, 16 Jan 2022 17:40:27 +0200 Subject: [PATCH 12/16] Add static data --- .../intervention_medication_view_model.dart | 52 +++++++++---------- .../intervention_medication.dart | 2 +- 2 files changed, 25 insertions(+), 29 deletions(-) diff --git a/lib/core/viewModel/profile/intervention_medication_view_model.dart b/lib/core/viewModel/profile/intervention_medication_view_model.dart index 68b8cc2b..4602611e 100644 --- a/lib/core/viewModel/profile/intervention_medication_view_model.dart +++ b/lib/core/viewModel/profile/intervention_medication_view_model.dart @@ -13,13 +13,12 @@ import '../../service/patient/profile/intervention_medication_service.dart'; import '../../service/special_clinics/special_clinic_service.dart'; class InterventionMedicationViewModel extends BaseViewModel { - SpecialClinicsService _specialClinicsService = - locator(); + locator(); List - get specialClinicalCareMappingList => - _specialClinicsService.specialClinicalCareMappingList; + get specialClinicalCareMappingList => + _specialClinicsService.specialClinicalCareMappingList; List filterData = []; @@ -37,20 +36,18 @@ class InterventionMedicationViewModel extends BaseViewModel { List get allInterventionHistoryList => _interventionMedicationService.allInterventionHistoryList; - Future getInterventionMedication({ int projectId, int patientId, - int admissionNo, DateTime fromDate, DateTime toDate, }) async { InterventionMedicationReqModel interventionMedicationReqModel = InterventionMedicationReqModel( - projectID: projectId, - patientID: patientId, - fromDate: AppDateUtils.convertDateToServerFormat(fromDate), - toDate: AppDateUtils.convertDateToServerFormat(toDate), + projectID: 15, //projectId, + patientID: 79941, //patientId, + fromDate: "\/Date(1488322922)\/",//AppDateUtils.convertDateToServerFormat(fromDate), + toDate: "\/Date(1635886800000)\/",//AppDateUtils.convertDateToServerFormat(toDate), ); hasError = false; setState(ViewState.BusyLocal); @@ -64,7 +61,6 @@ class InterventionMedicationViewModel extends BaseViewModel { } } - Future getInterventionMedicationHistory({ int projectId, int patientId, @@ -72,18 +68,20 @@ class InterventionMedicationViewModel extends BaseViewModel { int prescriptionNo, int orderNo, }) async { - InterventionMedicationHistoryReqModel interventionMedicationHistoryReqModel = - InterventionMedicationHistoryReqModel( - projectID: projectId, - patientID: patientId, - admissionNo: admissionNo, - prescriptionNo: prescriptionNo, - orderNo: orderNo, + InterventionMedicationHistoryReqModel + interventionMedicationHistoryReqModel = + InterventionMedicationHistoryReqModel( + projectID: 15, //projectId, + patientID: 79941, //patientId, + admissionNo: 2018013900,//admissionNo, + prescriptionNo: 2045165, //prescriptionNo, + orderNo: 1171570, //orderNo, ); hasError = false; setState(ViewState.BusyLocal); await _interventionMedicationService.getInterventionMedicationHistory( - interventionMedicationHistoryReqModel: interventionMedicationHistoryReqModel); + interventionMedicationHistoryReqModel: + interventionMedicationHistoryReqModel); if (_interventionMedicationService.hasError) { error = _interventionMedicationService.error; setState(ViewState.ErrorLocal); @@ -92,7 +90,6 @@ class InterventionMedicationViewModel extends BaseViewModel { } } - Future setAcceptedOrRejected({ String remarks, int memberId, @@ -102,17 +99,16 @@ class InterventionMedicationViewModel extends BaseViewModel { int prescriptionNo, int orderNo, }) async { - AcceptOrRejectReqModel acceptOrRejectReqModel = - AcceptOrRejectReqModel( - projectID: projectId, - patientID: patientID, - admissionNo: admissionNo, - prescriptionNo: prescriptionNo, - orderNo: orderNo, + AcceptOrRejectReqModel acceptOrRejectReqModel = AcceptOrRejectReqModel( + projectID: 15, //projectId, + patientID: 79941, //patientID, + admissionNo: 2018013900, //admissionNo, + prescriptionNo: 2045165, //prescriptionNo, + orderNo: 1171570, //orderNo, accessLevel: 4, lineItemNo: 1, remarks: remarks, - memberID: memberId, + memberID: 2804 //memberId, ); hasError = false; setState(ViewState.BusyLocal); diff --git a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication.dart b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication.dart index 81360f5e..bb38b28a 100644 --- a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication.dart +++ b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication.dart @@ -42,7 +42,7 @@ class _InterventionMedicationScreenState return BaseView( onModelReady: (model) => model.getInterventionMedication( patientId: widget.patient.patientId, - admissionNo: int.parse(widget.patient.admissionNo), + //admissionNo: int.parse(widget.patient.admissionNo), fromDate: widget.previousModel.selectedFromDate, toDate: widget.previousModel.selectedToDate, ), From 694be7315b7fa68cf9797c7e1747a0940bd50699 Mon Sep 17 00:00:00 2001 From: Elham Rababh Date: Mon, 17 Jan 2022 10:40:17 +0200 Subject: [PATCH 13/16] fix issue on loading --- .../profile/intervention_medication_view_model.dart | 8 ++++---- .../intervention_medication_history_screen.dart | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/core/viewModel/profile/intervention_medication_view_model.dart b/lib/core/viewModel/profile/intervention_medication_view_model.dart index 4602611e..45f78e95 100644 --- a/lib/core/viewModel/profile/intervention_medication_view_model.dart +++ b/lib/core/viewModel/profile/intervention_medication_view_model.dart @@ -50,12 +50,12 @@ class InterventionMedicationViewModel extends BaseViewModel { toDate: "\/Date(1635886800000)\/",//AppDateUtils.convertDateToServerFormat(toDate), ); hasError = false; - setState(ViewState.BusyLocal); + setState(ViewState.Busy); await _interventionMedicationService.getInterventionMedication( interventionMedicationReqModel: interventionMedicationReqModel); if (_interventionMedicationService.hasError) { error = _interventionMedicationService.error; - setState(ViewState.ErrorLocal); + setState(ViewState.Error); } else { setState(ViewState.Idle); } @@ -78,13 +78,13 @@ class InterventionMedicationViewModel extends BaseViewModel { orderNo: 1171570, //orderNo, ); hasError = false; - setState(ViewState.BusyLocal); + setState(ViewState.Busy); await _interventionMedicationService.getInterventionMedicationHistory( interventionMedicationHistoryReqModel: interventionMedicationHistoryReqModel); if (_interventionMedicationService.hasError) { error = _interventionMedicationService.error; - setState(ViewState.ErrorLocal); + setState(ViewState.Error); } else { setState(ViewState.Idle); } diff --git a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart index a2c751bb..971f5a67 100644 --- a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart +++ b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart @@ -225,7 +225,7 @@ class _InterventionMedicationHistoryScreenState extends State Date: Mon, 17 Jan 2022 10:59:29 +0200 Subject: [PATCH 14/16] Fix some issues --- .../intervention_medication_history_screen.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart index a2c751bb..dd0e949e 100644 --- a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart +++ b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart @@ -225,7 +225,7 @@ class _InterventionMedicationHistoryScreenState extends State Date: Tue, 18 Jan 2022 13:29:12 +0200 Subject: [PATCH 15/16] Editing the accept_or_reject_req_model --- .../profile/intervention_medication_view_model.dart | 4 +++- .../accept_or_reject_req_model.dart | 7 ++++++- .../intervention_medication_history_screen.dart | 6 ++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/core/viewModel/profile/intervention_medication_view_model.dart b/lib/core/viewModel/profile/intervention_medication_view_model.dart index 45f78e95..4e8fb097 100644 --- a/lib/core/viewModel/profile/intervention_medication_view_model.dart +++ b/lib/core/viewModel/profile/intervention_medication_view_model.dart @@ -98,6 +98,7 @@ class InterventionMedicationViewModel extends BaseViewModel { int admissionNo, int prescriptionNo, int orderNo, + int interventionStatus, }) async { AcceptOrRejectReqModel acceptOrRejectReqModel = AcceptOrRejectReqModel( projectID: 15, //projectId, @@ -108,7 +109,8 @@ class InterventionMedicationViewModel extends BaseViewModel { accessLevel: 4, lineItemNo: 1, remarks: remarks, - memberID: 2804 //memberId, + memberID: 2804, //memberId, + interventionStatus: interventionStatus, ); hasError = false; setState(ViewState.BusyLocal); diff --git a/lib/screens/patients/profile/pharmacy-intervention-model/accept_or_reject_req_model.dart b/lib/screens/patients/profile/pharmacy-intervention-model/accept_or_reject_req_model.dart index 07ef3f99..b3660d59 100644 --- a/lib/screens/patients/profile/pharmacy-intervention-model/accept_or_reject_req_model.dart +++ b/lib/screens/patients/profile/pharmacy-intervention-model/accept_or_reject_req_model.dart @@ -10,6 +10,7 @@ class AcceptOrRejectReqModel { int languageID; int lineItemNo; bool patientOutSA; + int interventionStatus; AcceptOrRejectReqModel( {this.patientID, @@ -22,7 +23,9 @@ class AcceptOrRejectReqModel { this.accessLevel, this.languageID, this.lineItemNo, - this.patientOutSA}); + this.patientOutSA, + this.interventionStatus, + }); AcceptOrRejectReqModel.fromJson(Map json) { patientID = json['PatientID']; @@ -36,6 +39,7 @@ class AcceptOrRejectReqModel { languageID = json['LanguageID']; lineItemNo = json['LineItemNo']; patientOutSA = json['PatientOutSA']; + interventionStatus = json['InterventionStatus']; } Map toJson() { @@ -51,6 +55,7 @@ class AcceptOrRejectReqModel { data['LanguageID'] = this.languageID; data['LineItemNo'] = this.lineItemNo; data['PatientOutSA'] = this.patientOutSA; + data['InterventionStatus'] = this.interventionStatus; return data; } } \ No newline at end of file diff --git a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart index 971f5a67..89b555b4 100644 --- a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart +++ b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart @@ -226,12 +226,13 @@ class _InterventionMedicationHistoryScreenState extends State Date: Tue, 18 Jan 2022 15:16:30 +0200 Subject: [PATCH 16/16] call service after accept or reject --- .../intervention_medication_view_model.dart | 66 ++++++++++++------- ...ntervention_medication_history_screen.dart | 19 +++++- 2 files changed, 60 insertions(+), 25 deletions(-) diff --git a/lib/core/viewModel/profile/intervention_medication_view_model.dart b/lib/core/viewModel/profile/intervention_medication_view_model.dart index 4e8fb097..c6e2dbff 100644 --- a/lib/core/viewModel/profile/intervention_medication_view_model.dart +++ b/lib/core/viewModel/profile/intervention_medication_view_model.dart @@ -44,10 +44,14 @@ class InterventionMedicationViewModel extends BaseViewModel { }) async { InterventionMedicationReqModel interventionMedicationReqModel = InterventionMedicationReqModel( - projectID: 15, //projectId, - patientID: 79941, //patientId, - fromDate: "\/Date(1488322922)\/",//AppDateUtils.convertDateToServerFormat(fromDate), - toDate: "\/Date(1635886800000)\/",//AppDateUtils.convertDateToServerFormat(toDate), + projectID: 15, + //projectId, + patientID: 79941, + //patientId, + fromDate: "\/Date(1488322922)\/", + //AppDateUtils.convertDateToServerFormat(fromDate), + toDate: + "\/Date(1635886800000)\/", //AppDateUtils.convertDateToServerFormat(toDate), ); hasError = false; setState(ViewState.Busy); @@ -61,30 +65,40 @@ class InterventionMedicationViewModel extends BaseViewModel { } } - Future getInterventionMedicationHistory({ - int projectId, - int patientId, - int admissionNo, - int prescriptionNo, - int orderNo, - }) async { + Future getInterventionMedicationHistory( + {int projectId, + int patientId, + int admissionNo, + int prescriptionNo, + int orderNo, + bool isBusyLocal = false}) async { InterventionMedicationHistoryReqModel interventionMedicationHistoryReqModel = InterventionMedicationHistoryReqModel( - projectID: 15, //projectId, - patientID: 79941, //patientId, - admissionNo: 2018013900,//admissionNo, - prescriptionNo: 2045165, //prescriptionNo, + projectID: 15, + //projectId, + patientID: 79941, + //patientId, + admissionNo: 2018013900, + //admissionNo, + prescriptionNo: 2045165, + //prescriptionNo, orderNo: 1171570, //orderNo, ); hasError = false; - setState(ViewState.Busy); + if (isBusyLocal) + setState(ViewState.Busy); + else + setState(ViewState.Busy); await _interventionMedicationService.getInterventionMedicationHistory( interventionMedicationHistoryReqModel: interventionMedicationHistoryReqModel); if (_interventionMedicationService.hasError) { error = _interventionMedicationService.error; - setState(ViewState.Error); + if (isBusyLocal) + setState(ViewState.ErrorLocal); + else + setState(ViewState.Error); } else { setState(ViewState.Idle); } @@ -101,15 +115,21 @@ class InterventionMedicationViewModel extends BaseViewModel { int interventionStatus, }) async { AcceptOrRejectReqModel acceptOrRejectReqModel = AcceptOrRejectReqModel( - projectID: 15, //projectId, - patientID: 79941, //patientID, - admissionNo: 2018013900, //admissionNo, - prescriptionNo: 2045165, //prescriptionNo, - orderNo: 1171570, //orderNo, + projectID: 15, + //projectId, + patientID: 79941, + //patientID, + admissionNo: 2018013900, + //admissionNo, + prescriptionNo: 2045165, + //prescriptionNo, + orderNo: 1171570, + //orderNo, accessLevel: 4, lineItemNo: 1, remarks: remarks, - memberID: 2804, //memberId, + memberID: 2804, + //memberId, interventionStatus: interventionStatus, ); hasError = false; diff --git a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart index 89b555b4..c7aaceeb 100644 --- a/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart +++ b/lib/screens/patients/profile/pharmacy-intervention/intervention_medication_history_screen.dart @@ -234,10 +234,17 @@ class _InterventionMedicationHistoryScreenState extends State