From 412afbb532113bdb2729b869f6d71256c001c8f3 Mon Sep 17 00:00:00 2001 From: "taha.alam@cloudsolutions.com.sa" Date: Mon, 8 Dec 2025 15:12:18 +0300 Subject: [PATCH] ipd issues resolved. --- lib/config/localized_values.dart | 6 ++- .../admission_orders_request_model.dart | 6 ++- lib/core/model/note/note_model.dart | 2 +- .../model/patient/patiant_info_model.dart | 5 +- lib/core/service/patient/patient_service.dart | 3 +- lib/core/service/pending_order_service.dart | 3 +- lib/core/viewModel/patient_view_model.dart | 3 +- .../viewModel/pednding_orders_view_model.dart | 4 +- .../profile/discharge_summary_view_model.dart | 5 +- .../admission_orders_screen.dart | 4 +- .../line_chart_for_diabetic.dart | 2 +- .../pending_discharge_summary.dart | 1 - .../medical_report/MedicalReportPage.dart | 2 +- .../profile/notes/note/update_note.dart | 8 +++- lib/utils/date-utils.dart | 48 +++++++++++++------ .../translations_delegate_base_utils.dart | 1 + 16 files changed, 70 insertions(+), 33 deletions(-) diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 52856a7e..86ae3c27 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -234,7 +234,7 @@ const Map> localizedValues = { "en": "Clinical Details and Remarks", "ar": "التفاصيل السرسرية والملاحظات" }, - "remarks": {"en": "Remarks", "ar": "ملاحظات"}, + "remarks": {"en": "Remarks ", "ar": "ملاحظات "}, "pleaseFill": { "en": "Please fill all fields..!", "ar": "الرجاء ملأ جميع الحقول..!" @@ -1262,5 +1262,9 @@ const Map> localizedValues = { "addDoctorRemarks": { "en": " Doctor Remarks", "ar": " ملاحظات الطبيب" + }, + "kindlySelectCondition": { + "en": "Kindly select condition", + "ar": "يرجى تحديد الشرط" } }; diff --git a/lib/core/model/admisson_orders/admission_orders_request_model.dart b/lib/core/model/admisson_orders/admission_orders_request_model.dart index 11fdb196..3cd8f36b 100644 --- a/lib/core/model/admisson_orders/admission_orders_request_model.dart +++ b/lib/core/model/admisson_orders/admission_orders_request_model.dart @@ -9,6 +9,7 @@ class AdmissionOrdersRequestModel { String? tokenID; int? patientID; int? admissionNo; + int? admissionRequestNo; String? sessionID; int? projectID; String? setupID; @@ -32,7 +33,8 @@ class AdmissionOrdersRequestModel { this.setupID, this.patientOutSA, this.patientType, - this.patientTypeID}); + this.patientTypeID, + this.admissionRequestNo}); AdmissionOrdersRequestModel.fromJson(Map json) { isDentalAllowedBackend = json['isDentalAllowedBackend']; @@ -66,7 +68,7 @@ class AdmissionOrdersRequestModel { data['PatientID'] = this.patientID; data['PatientMRN'] = this.patientID; data['AdmissionNo'] = this.admissionNo; - data['AdmissionRequestNo'] = this.admissionNo; + data['AdmissionRequestNo'] = this.admissionRequestNo; data['SessionID'] = this.sessionID; data['ProjectID'] = this.projectID; data['SetupID'] = this.setupID; diff --git a/lib/core/model/note/note_model.dart b/lib/core/model/note/note_model.dart index 1d43f4e2..b08eb6b4 100644 --- a/lib/core/model/note/note_model.dart +++ b/lib/core/model/note/note_model.dart @@ -88,7 +88,7 @@ class NoteModel { visitTime = json['VisitTime']; status = json['Status']; nursingRemarks = json['NursingRemarks']; - createdOn = json['CreatedOn']; + createdOn = json['CreatedOn']??json['createdOn']; editedOn = json['EditedOn']; createdBy = json['CreatedBy']; admissionClinicID = int.parse(json['speciality'].isEmpty == true?"-1":json['speciality']); diff --git a/lib/core/model/patient/patiant_info_model.dart b/lib/core/model/patient/patiant_info_model.dart index 7d914280..de51873c 100644 --- a/lib/core/model/patient/patiant_info_model.dart +++ b/lib/core/model/patient/patiant_info_model.dart @@ -56,6 +56,7 @@ class PatiantInformtion { int? patientMRN; String? admissionNo; int? admissionID; + int? admissionRequestNo; String? admissionDate; DateTime? admissionDateWithDateTimeForm; String? createdOn; @@ -164,7 +165,8 @@ class PatiantInformtion { this.admissionDateWithDateTimeForm, this.appointmentDateWithDateTimeForm, this.pomrId, - this.admissionID + this.admissionID, + this.admissionRequestNo }); PatiantInformtion.fromJson(Map json) { @@ -286,6 +288,7 @@ class PatiantInformtion { createdBy = json['CreatedBy']; editedBy = json['EditedBy']; admissionID = json['AdmissionID']; + admissionRequestNo = json['AdmissionRequestNo']; } } diff --git a/lib/core/service/patient/patient_service.dart b/lib/core/service/patient/patient_service.dart index 0be3928c..579af1fe 100644 --- a/lib/core/service/patient/patient_service.dart +++ b/lib/core/service/patient/patient_service.dart @@ -636,7 +636,8 @@ class PatientService extends BaseService { "Speciality": patient.clinicId, "ProgressNotesTypes": "DOCTOR_NOTE", "PatientCondition": data.conditionId, - "ProjectID": patient.projectId + "ProjectID": patient.projectId, + "VisitType": data.visitType }; var success = false; await baseAppClient.post(CREATE_PROGRESS_NOTE, diff --git a/lib/core/service/pending_order_service.dart b/lib/core/service/pending_order_service.dart index d8f2104c..cb950223 100644 --- a/lib/core/service/pending_order_service.dart +++ b/lib/core/service/pending_order_service.dart @@ -60,12 +60,13 @@ class PendingOrderService extends BaseService { }, body: pendingOrderRequestModel.toJson()); } - Future getAdmissionOrders({AdmissionOrdersRequestModel? admissionOrdersRequestModel, int? patientId, int? admissionNo}) async { + Future getAdmissionOrders({AdmissionOrdersRequestModel? admissionOrdersRequestModel, int? patientId, int? admissionNo, int? admissionRequestNo}) async { admissionOrdersRequestModel = AdmissionOrdersRequestModel( patientID: patientId, admissionNo: admissionNo, patientTypeID: 1, patientType: 1, + admissionRequestNo: admissionRequestNo ); hasError = false; diff --git a/lib/core/viewModel/patient_view_model.dart b/lib/core/viewModel/patient_view_model.dart index 143ff789..4ff5854b 100644 --- a/lib/core/viewModel/patient_view_model.dart +++ b/lib/core/viewModel/patient_view_model.dart @@ -172,7 +172,8 @@ class PatientViewModel extends BaseViewModel { "patientPomrId": patient.pomrId, "endRow": 10000, // because no information is provided for the end row "startRow": 0, - "ProjectID": patient.projectId + "ProjectID": patient.projectId, + "VisitType": patientRequest["VisitType"] }; await _patientService.getVidaPlusProgressNote(request); } else { diff --git a/lib/core/viewModel/pednding_orders_view_model.dart b/lib/core/viewModel/pednding_orders_view_model.dart index ae0275ff..e9ddf7d2 100644 --- a/lib/core/viewModel/pednding_orders_view_model.dart +++ b/lib/core/viewModel/pednding_orders_view_model.dart @@ -36,11 +36,11 @@ class PendingOrdersViewModel extends BaseViewModel { } } - Future getAdmissionOrders({required int patientId, required int admissionNo}) async { + Future getAdmissionOrders({required int patientId, required int admissionNo, int? admissionRequestNo}) async { hasError = false; setState(ViewState.Busy); await _pendingOrderService.getAdmissionOrders( - patientId: patientId, admissionNo: admissionNo); + patientId: patientId, admissionNo: admissionNo, admissionRequestNo: admissionRequestNo); if (_pendingOrderService.hasError) { error = _pendingOrderService.error; setState(ViewState.ErrorLocal); diff --git a/lib/core/viewModel/profile/discharge_summary_view_model.dart b/lib/core/viewModel/profile/discharge_summary_view_model.dart index 21f4c825..5be7b0b6 100644 --- a/lib/core/viewModel/profile/discharge_summary_view_model.dart +++ b/lib/core/viewModel/profile/discharge_summary_view_model.dart @@ -18,14 +18,13 @@ class DischargeSummaryViewModel extends BaseViewModel { Future getPendingDischargeSummary({ required int patientId, - required int admissionNo, required int? clinicId, required int? doctorId, + required int admissionNo, required int? clinicId, }) async { print("the clinic id is $clinicId"); - print("the doctorId id is $doctorId"); GetDischargeSummaryReqModel getDischargeSummaryReqModel = GetDischargeSummaryReqModel( - admissionNo: admissionNo, patientID: patientId, clinicId: clinicId , doctorId:doctorId); + admissionNo: admissionNo, patientID: patientId, clinicId: clinicId , doctorId:null); hasError = false; setState(ViewState.Busy); await _dischargeSummaryService.getPendingDischargeSummary( diff --git a/lib/screens/patients/profile/admission-orders/admission_orders_screen.dart b/lib/screens/patients/profile/admission-orders/admission_orders_screen.dart index 0f13951d..9551c417 100644 --- a/lib/screens/patients/profile/admission-orders/admission_orders_screen.dart +++ b/lib/screens/patients/profile/admission-orders/admission_orders_screen.dart @@ -40,7 +40,9 @@ class _AdmissionOrdersScreenState extends State { return BaseView( onModelReady: (model) => model.getAdmissionOrders( admissionNo: isVidaPlusProject? patient.admissionID??-1 :int.parse(patient.admissionNo!), - patientId: patient.patientMRN!), + patientId: patient.patientMRN!, + admissionRequestNo: patient.admissionRequestNo + ), builder: (_, model, w) => AppScaffold( baseViewModel: model, backgroundColor: Theme.of(context).scaffoldBackgroundColor, diff --git a/lib/screens/patients/profile/diabetic_chart/line_chart_for_diabetic.dart b/lib/screens/patients/profile/diabetic_chart/line_chart_for_diabetic.dart index a7966c85..c1501cfa 100644 --- a/lib/screens/patients/profile/diabetic_chart/line_chart_for_diabetic.dart +++ b/lib/screens/patients/profile/diabetic_chart/line_chart_for_diabetic.dart @@ -235,7 +235,7 @@ class LineChartForDiabetic extends StatelessWidget { final LineChartBarData lineChartBarData1 = LineChartBarData( spots: spots, - isCurved: true, + isCurved: false, color: Colors.red, barWidth: 5, isStrokeCapRound: true, diff --git a/lib/screens/patients/profile/discharge_summary/pending_discharge_summary.dart b/lib/screens/patients/profile/discharge_summary/pending_discharge_summary.dart index 1ae819b7..790cb011 100644 --- a/lib/screens/patients/profile/discharge_summary/pending_discharge_summary.dart +++ b/lib/screens/patients/profile/discharge_summary/pending_discharge_summary.dart @@ -32,7 +32,6 @@ class _PendingDischargeSummaryState extends State { model.getPendingDischargeSummary( patientId: widget.patient!.patientId!, clinicId: widget.patient?.clinicId, - doctorId: widget.patient?.doctorId, admissionNo: widget.isVidaPlusProject? widget.patient?.admissionID ?? -1 :int.parse(widget.patient!.admissionNo!), ); }, diff --git a/lib/screens/patients/profile/medical_report/MedicalReportPage.dart b/lib/screens/patients/profile/medical_report/MedicalReportPage.dart index cfe6b63b..777729f6 100644 --- a/lib/screens/patients/profile/medical_report/MedicalReportPage.dart +++ b/lib/screens/patients/profile/medical_report/MedicalReportPage.dart @@ -213,7 +213,7 @@ class _MedicalReportPageState extends State { : model .medicalReportList[index].doctorName!, url: model - .medicalReportList[index].doctorImageURL!??"", + .medicalReportList[index].doctorImageURL??"", ), width: 50, height: 50, diff --git a/lib/screens/patients/profile/notes/note/update_note.dart b/lib/screens/patients/profile/notes/note/update_note.dart index 622c3b32..07305a78 100644 --- a/lib/screens/patients/profile/notes/note/update_note.dart +++ b/lib/screens/patients/profile/notes/note/update_note.dart @@ -14,6 +14,7 @@ import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/bottom_sheet_title.dart'; import 'package:doctor_app_flutter/utils/dr_app_toast_msg.dart'; +import 'package:doctor_app_flutter/utils/extenstions_utils.dart'; import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart'; import 'package:doctor_app_flutter/utils/utils.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; @@ -231,10 +232,15 @@ class _UpdateNoteOrderState extends State { isSubmitted = true; }); if (progressNoteController.text.trim().isNotEmpty) { - GifLoaderDialogUtils.showMyDialog(context); Map profile = await sharedPref.getObj(DOCTOR_PROFILE); DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile); + print("the values are ${(selectValue as Map?)?.isNullOrEmpty == true }"); + if(selectValue == null || (selectValue as Map?)?.isNullOrEmpty == true) { + DrAppToastMsg.showErrorToast(TranslationBase.of(context).kindlySelectCondition); + return; + } + GifLoaderDialogUtils.showMyDialog(context); if (widget.isUpdate) { UpdateNoteReqModel reqModel = UpdateNoteReqModel( diff --git a/lib/utils/date-utils.dart b/lib/utils/date-utils.dart index ed237e79..a6f3b9e4 100644 --- a/lib/utils/date-utils.dart +++ b/lib/utils/date-utils.dart @@ -40,7 +40,6 @@ class AppDateUtils { static DateTime getDateTimeFromServerFormat(String str) { DateTime date = DateTime.now(); - if (str != null) { const start = "/Date("; const end = "+0300)"; @@ -52,12 +51,8 @@ class AppDateUtils { date = new DateTime.fromMillisecondsSinceEpoch( int.parse(str.substring(startIndex + start.length, endIndex))); } else { - date = DateTime.now(); + date = DateTime.parse(str); } - } else { - date = DateTime.parse(str); - } - return date; } @@ -333,6 +328,7 @@ class AppDateUtils { /// get data formatted like 10:45 PM /// [dateTime] convert DateTime to data formatted static String getHour(DateTime dateTime) { + print("the time is ${DateFormat('hh:mm a').format(dateTime)}"); return DateFormat('hh:mm a').format(dateTime); } @@ -343,23 +339,45 @@ class AppDateUtils { if (birthOfDate.contains("/Date")) { birthDate = AppDateUtils.getDateTimeFromServerFormat(birthOfDate); } else { - birthDate = DateTime.parse(birthOfDate); + try { + birthDate = DateTime.parse(birthOfDate); + } catch (e) { + print("Error parsing birth date: $e"); + return "Invalid Date"; // Or return an empty string + } + } + + if (birthDate == null) { + return "Invalid Date"; } - final now = DateTime.now(); + + final DateTime now = DateTime.now(); + + int years = now.year - birthDate.year; int months = now.month - birthDate.month; int days = now.day - birthDate.day; - if (months < 0 || (months == 0 && days < 0)) { - years--; - months += (days < 0 ? 11 : 12); - } + + if (days < 0) { - final monthAgo = new DateTime(now.year, now.month - 1, birthDate.day); - days = now.difference(monthAgo).inDays + 1; + final int lastDayOfPreviousMonth = DateTime(now.year, now.month, 0).day; + days += lastDayOfPreviousMonth; + months--; } - return "$years ${TranslationBase.of(context).years} $months ${TranslationBase.of(context).months} $days ${TranslationBase.of(context).days}"; + + if (months < 0) { + months += 12; + years--; + } + + final yearsString = "$years ${TranslationBase.of(context).years}"; + final monthsString = "$months ${TranslationBase.of(context).months}"; + final daysString = "$days ${TranslationBase.of(context).days}"; + + return "$yearsString $monthsString $daysString"; } + static bool isToday(DateTime dateTime) { DateTime todayDate = DateTime.now().toUtc(); if (dateTime.day == todayDate.day && diff --git a/lib/utils/translations_delegate_base_utils.dart b/lib/utils/translations_delegate_base_utils.dart index 9dff29c9..ebf63853 100644 --- a/lib/utils/translations_delegate_base_utils.dart +++ b/lib/utils/translations_delegate_base_utils.dart @@ -1999,6 +1999,7 @@ class TranslationBase { String get filterInPatient => localizedValues['filterInPatient']![locale.languageCode]!; String get remarksNotAdded => localizedValues['remarksNotAdded']![locale.languageCode]!; String get addDoctorRemarks => localizedValues['addDoctorRemarks']![locale.languageCode]!; + String get kindlySelectCondition => localizedValues['kindlySelectCondition']![locale.languageCode]!; } class TranslationBaseDelegate extends LocalizationsDelegate {