From 947fc7f8f88356139aea72e769de5a46f33a8d24 Mon Sep 17 00:00:00 2001 From: Elham Rababh Date: Tue, 17 Aug 2021 11:30:27 +0300 Subject: [PATCH] fix issues related to add progress exam --- lib/core/viewModel/SOAP_view_model.dart | 1 + .../objective/update_objective_page.dart | 139 ++++++++++-------- .../soap_update/update_soap_index.dart | 2 +- 3 files changed, 78 insertions(+), 64 deletions(-) diff --git a/lib/core/viewModel/SOAP_view_model.dart b/lib/core/viewModel/SOAP_view_model.dart index 29caec43..d42098a2 100644 --- a/lib/core/viewModel/SOAP_view_model.dart +++ b/lib/core/viewModel/SOAP_view_model.dart @@ -92,6 +92,7 @@ class SOAPViewModel extends BaseViewModel { int get episodeID => _SOAPService.episodeID; bool isAddProgress = true; + bool isAddExamInProgress = true; String progressNoteText =""; String complaintsControllerError = ''; String medicationControllerError = ''; diff --git a/lib/screens/patients/profile/soap_update/objective/update_objective_page.dart b/lib/screens/patients/profile/soap_update/objective/update_objective_page.dart index 04c36ed9..576c52c3 100644 --- a/lib/screens/patients/profile/soap_update/objective/update_objective_page.dart +++ b/lib/screens/patients/profile/soap_update/objective/update_objective_page.dart @@ -68,7 +68,7 @@ class _UpdateObjectivePageState extends State onModelReady: (model) async { model.setObjectiveCallBack(this); mySelectedExamination.clear(); - + model.isAddExamInProgress = true; await model.getPatientPhysicalExam(widget.patientInfo); if (model.patientPhysicalExamList.isNotEmpty) { if (model.physicalExaminationList.length == 0) { @@ -208,75 +208,88 @@ class _UpdateObjectivePageState extends State submitUpdateObjectivePage(SOAPViewModel model) async { if (mySelectedExamination.isNotEmpty) { - widget.changeLoadingState(true); - Map profile = await sharedPref.getObj(DOCTOR_PROFILE); + if(!model.isAddExamInProgress && widget.patientInfo.admissionNo != null && + widget.patientInfo.admissionNo.isNotEmpty) { + Navigator.of(context).pop(); + }else{ + widget.changeLoadingState(true); + Map profile = await sharedPref.getObj(DOCTOR_PROFILE); + + DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile); + PostPhysicalExamRequestModel postPhysicalExamRequestModel = + new PostPhysicalExamRequestModel(); + mySelectedExamination.forEach((exam) { + if (postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM == + null) + postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM = + []; + ListHisProgNotePhysicalExaminationVM + listHisProgNotePhysicalExaminationVM = + ListHisProgNotePhysicalExaminationVM( + patientMRN: widget.patientInfo.patientMRN, + episodeId: widget.patientInfo.episodeNo == null?0: widget.patientInfo.episodeNo, + appointmentNo: widget.patientInfo.appointmentNo == null?0:widget.patientInfo.appointmentNo, + remarks: exam.remark ?? '', + createdBy: exam.createdBy ?? doctorProfile.doctorID, + createdOn: exam.createdOn ?? DateTime.now().toIso8601String(), + editedBy: doctorProfile.doctorID, + editedOn: DateTime.now().toIso8601String(), + examId: exam.selectedExamination.id, + examType: exam.selectedExamination.typeId, + isAbnormal: exam.isAbnormal, + isNormal: exam.isNormal, + notExamined: exam.notExamined, + examinationType: exam.isNormal + ? 1 + : exam.isAbnormal + ? 2 + : 3, + examinationTypeName: exam.isNormal + ? "Normal" + : exam.isAbnormal + ? 'AbNormal' + : "Not Examined", + isNew: exam.isNew, + ); + if (widget.patientInfo.admissionNo != null && + widget.patientInfo.admissionNo.isNotEmpty) { + listHisProgNotePhysicalExaminationVM.admissionNo = + int.parse(widget.patientInfo.admissionNo); + } else { + listHisProgNotePhysicalExaminationVM.admissionNo = 0; + } + postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM + .add(listHisProgNotePhysicalExaminationVM); + }); - DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile); - PostPhysicalExamRequestModel postPhysicalExamRequestModel = - new PostPhysicalExamRequestModel(); - mySelectedExamination.forEach((exam) { - if (postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM == - null) - postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM = - []; - ListHisProgNotePhysicalExaminationVM - listHisProgNotePhysicalExaminationVM = - ListHisProgNotePhysicalExaminationVM( - patientMRN: widget.patientInfo.patientMRN, - episodeId: widget.patientInfo.episodeNo == null?0: widget.patientInfo.episodeNo, - appointmentNo: widget.patientInfo.appointmentNo == null?0:widget.patientInfo.appointmentNo, - remarks: exam.remark ?? '', - createdBy: exam.createdBy ?? doctorProfile.doctorID, - createdOn: exam.createdOn ?? DateTime.now().toIso8601String(), - editedBy: doctorProfile.doctorID, - editedOn: DateTime.now().toIso8601String(), - examId: exam.selectedExamination.id, - examType: exam.selectedExamination.typeId, - isAbnormal: exam.isAbnormal, - isNormal: exam.isNormal, - notExamined: exam.notExamined, - examinationType: exam.isNormal - ? 1 - : exam.isAbnormal - ? 2 - : 3, - examinationTypeName: exam.isNormal - ? "Normal" - : exam.isAbnormal - ? 'AbNormal' - : "Not Examined", - isNew: exam.isNew, - ); - if (widget.patientInfo.admissionNo != null && - widget.patientInfo.admissionNo.isNotEmpty) { - listHisProgNotePhysicalExaminationVM.admissionNo = - int.parse(widget.patientInfo.admissionNo); + if (model.patientPhysicalExamList.isEmpty) { + await model.postPhysicalExam(postPhysicalExamRequestModel); } else { - listHisProgNotePhysicalExaminationVM.admissionNo = 0; + await model.patchPhysicalExam(postPhysicalExamRequestModel); } - postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM - .add(listHisProgNotePhysicalExaminationVM); - }); - - if (model.patientPhysicalExamList.isEmpty) { - await model.postPhysicalExam(postPhysicalExamRequestModel); - } else { - await model.patchPhysicalExam(postPhysicalExamRequestModel); - } - if (model.state == ViewState.ErrorLocal) { - widget.changeLoadingState(false); - Helpers.showErrorToast(model.error); - } else { - if(widget.patientInfo.admissionNo != null && - widget.patientInfo.admissionNo.isNotEmpty) { - Navigator.of(context).pop(); + if (model.state == ViewState.ErrorLocal) { + widget.changeLoadingState(false); + Helpers.showErrorToast(model.error); + if(widget.patientInfo.admissionNo != null && + widget.patientInfo.admissionNo.isNotEmpty) { + // Navigator.of(context).pop(); + model.isAddExamInProgress = false; + } } else { - widget.changeLoadingState(true); - widget.changePageViewIndex(2); - } + if(widget.patientInfo.admissionNo != null && + widget.patientInfo.admissionNo.isNotEmpty) { + // Navigator.of(context).pop(); + widget.changeLoadingState(false); + model.isAddExamInProgress = false; + } else { + widget.changeLoadingState(true); + widget.changePageViewIndex(2); + } + } } + } else { Helpers.showErrorToast(TranslationBase.of(context).examinationErrorMsg); } diff --git a/lib/screens/patients/profile/soap_update/update_soap_index.dart b/lib/screens/patients/profile/soap_update/update_soap_index.dart index bbe06c31..07c8caf7 100644 --- a/lib/screens/patients/profile/soap_update/update_soap_index.dart +++ b/lib/screens/patients/profile/soap_update/update_soap_index.dart @@ -207,7 +207,7 @@ class _UpdateSoapIndexState extends State Expanded( child: AppButton( title: patient.admissionNo != null && - patient.admissionNo.isNotEmpty?TranslationBase.of(context).finish: TranslationBase.of(context).next, + patient.admissionNo.isNotEmpty && !model.isAddExamInProgress?TranslationBase.of(context).finish: TranslationBase.of(context).next, fontWeight: FontWeight.w600, color: Colors.red[700], height: SizeConfig.heightMultiplier *