From bbcd218a948e2760953e1cdbe954e02613a05ee4 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Sun, 3 Jan 2021 15:39:38 +0200 Subject: [PATCH 1/7] history delete is fixed --- lib/models/SOAP/my_selected_history.dart | 30 ++++++ .../subjective/update_history_widget.dart | 93 ++++++++++++++----- .../subjective/update_subjective_page.dart | 48 +++++++--- .../soap_update/update_soap_index.dart | 3 +- 4 files changed, 134 insertions(+), 40 deletions(-) create mode 100644 lib/models/SOAP/my_selected_history.dart diff --git a/lib/models/SOAP/my_selected_history.dart b/lib/models/SOAP/my_selected_history.dart new file mode 100644 index 00000000..11e366c2 --- /dev/null +++ b/lib/models/SOAP/my_selected_history.dart @@ -0,0 +1,30 @@ +import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart'; + +class MySelectedHistory { + MasterKeyModel selectedHistory; + String remark; + bool isChecked; + + MySelectedHistory( + { this.selectedHistory, this.remark, this.isChecked}); + + MySelectedHistory.fromJson(Map json) { + + selectedHistory = json['selectedHistory'] != null + ? new MasterKeyModel.fromJson(json['selectedHistory']) + : null; + remark = json['remark']; + remark = json['isChecked']; + } + + Map toJson() { + final Map data = new Map(); + + if (this.selectedHistory != null) { + data['selectedHistory'] = this.selectedHistory.toJson(); + } + data['remark'] = this.remark; + data['isChecked'] = this.remark; + return data; + } +} diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_history_widget.dart b/lib/widgets/patients/profile/soap_update/subjective/update_history_widget.dart index ebed11ca..9a7cba01 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_history_widget.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_history_widget.dart @@ -1,18 +1,15 @@ import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart'; -import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart'; +import 'package:doctor_app_flutter/models/SOAP/my_selected_history.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.dart'; import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; -import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; -import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart'; import 'package:doctor_app_flutter/widgets/shared/master_key_checkbox_search_widget.dart'; -import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -20,7 +17,7 @@ import 'package:hexcolor/hexcolor.dart'; import 'package:provider/provider.dart'; class UpdateHistoryWidget extends StatefulWidget { - final List myHistoryList; + final List myHistoryList; const UpdateHistoryWidget({Key key, this.myHistoryList}) : super(key: key); @@ -86,19 +83,28 @@ class _UpdateHistoryWidgetState extends State children: [ Container( child: Expanded( - child: Texts(projectViewModel.isArabic?myHistory.nameAr:myHistory.nameEn, - variant: "bodyText", bold: true, color: Colors.black), + child: Texts( + projectViewModel.isArabic + ? myHistory.selectedHistory.nameAr + : myHistory.selectedHistory.nameEn, + variant: "bodyText", + textDecoration: myHistory.isChecked + ? null + : TextDecoration.lineThrough, + bold: true, + color: Colors.black), ), width: MediaQuery.of(context).size.width * 0.7, ), - InkWell( - child: Icon( - FontAwesomeIcons.trash, - color: Colors.grey, - size: 20, - ), - onTap: () => removeHistory(myHistory), - ) + if (myHistory.isChecked) + InkWell( + child: Icon( + FontAwesomeIcons.trash, + color: Colors.grey, + size: 20, + ), + onTap: () => removeHistory(myHistory.selectedHistory), + ) ], ), SizedBox( @@ -113,13 +119,24 @@ class _UpdateHistoryWidgetState extends State ); } - removeHistory(MasterKeyModel masterKey) { - Iterable history = widget.myHistoryList.where((element) => - masterKey.id == element.id && masterKey.typeId == element.typeId); + removeHistory(MasterKeyModel historyKey) { + // Iterable history = widget.myHistoryList.where((element) => + // masterKey.id == element.id && masterKey.typeId == element.typeId); + // + + List history = + // ignore: missing_return + widget.myHistoryList.where((element) => + historyKey.id == + element.selectedHistory.id && + historyKey.typeId == + element.selectedHistory.typeId + ).toList(); + if (history.length > 0) setState(() { - widget.myHistoryList.remove(history.first); + history[0].isChecked = false; }); } @@ -233,7 +250,7 @@ class _PriorityBarState extends State { class AddHistoryDialog extends StatefulWidget { final Function changePageViewIndex; final PageController controller; - final List myHistoryList; + final List myHistoryList; final Function addSelectedHistories; final Function (MasterKeyModel) removeHistory; @@ -306,7 +323,8 @@ class _AddHistoryDialogState extends State { }, addHistory: (history){ setState(() { - widget.myHistoryList.add(history); + createAndAddHistory( + history); }); }, addSelectedHistories: (){ @@ -324,7 +342,8 @@ class _AddHistoryDialogState extends State { }, addHistory: (history){ setState(() { - widget.myHistoryList.add(history); + createAndAddHistory( + history); }); }, addSelectedHistories: (){ @@ -342,7 +361,8 @@ class _AddHistoryDialogState extends State { }, addHistory: (history){ setState(() { - widget.myHistoryList.add(history); + createAndAddHistory( + history); }); }, addSelectedHistories: (){ @@ -361,12 +381,35 @@ class _AddHistoryDialogState extends State { )); } + createAndAddHistory(MasterKeyModel history) { + List myhistory = widget.myHistoryList.where((element) => + history.id == + element.selectedHistory.id && + history.typeId == + element.selectedHistory.typeId + ).toList(); + + if (myhistory.isEmpty) { + setState(() { + MySelectedHistory mySelectedHistory = MySelectedHistory( + remark: history.remarks ?? "", + selectedHistory: history, + isChecked: true); + widget.myHistoryList.add(mySelectedHistory); + }); + } else { + myhistory.first.isChecked = true; + } + } + isServiceSelected(MasterKeyModel masterKey) { - Iterable history = + Iterable history = widget .myHistoryList .where((element) => - masterKey.id == element.id && masterKey.typeId == element.typeId); + masterKey.id == element.selectedHistory.id && + masterKey.typeId == element.selectedHistory.typeId && + element.isChecked); if (history.length > 0) { return true; } diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart index ddab4734..89e617d6 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart @@ -8,6 +8,7 @@ import 'package:doctor_app_flutter/models/SOAP/GeneralGetReqForSOAP.dart'; import 'package:doctor_app_flutter/models/SOAP/GetHistoryReqModel.dart'; import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart'; import 'package:doctor_app_flutter/models/SOAP/my_selected_allergy.dart'; +import 'package:doctor_app_flutter/models/SOAP/my_selected_history.dart'; import 'package:doctor_app_flutter/models/SOAP/post_allergy_request_model.dart'; import 'package:doctor_app_flutter/models/SOAP/post_chief_complaint_request_model.dart'; import 'package:doctor_app_flutter/models/SOAP/post_histories_request_model.dart'; @@ -28,7 +29,7 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class UpdateSubjectivePage extends StatefulWidget { final Function changePageViewIndex; final List myAllergiesList; - final List myHistoryList; + final List myHistoryList; final PatiantInformtion patientInfo; UpdateSubjectivePage( @@ -90,7 +91,12 @@ class _UpdateSubjectivePageState extends State { id: element.historyId, ); if (history != null) { - widget.myHistoryList.add(history); + MySelectedHistory mySelectedHistory = MySelectedHistory( + selectedHistory: history, + isChecked: element.isChecked, + remark: element.remarks); + + widget.myHistoryList.add(mySelectedHistory); } } if (element.historyType == @@ -100,7 +106,12 @@ class _UpdateSubjectivePageState extends State { id: element.historyId, ); if (history != null) { - widget.myHistoryList.add(history); + MySelectedHistory mySelectedHistory = MySelectedHistory( + selectedHistory: history, + isChecked: element.isChecked, + remark: element.remarks); + + widget.myHistoryList.add(mySelectedHistory); } } if (element.historyType == @@ -110,7 +121,12 @@ class _UpdateSubjectivePageState extends State { id: element.historyId, ); if (history != null) { - widget.myHistoryList.add(history); + MySelectedHistory mySelectedHistory = MySelectedHistory( + selectedHistory: history, + isChecked: element.isChecked, + remark: element.remarks); + + widget.myHistoryList.add(mySelectedHistory); } } if (element.historyType == @@ -120,7 +136,12 @@ class _UpdateSubjectivePageState extends State { id: element.historyId, ); if (history != null) { - widget.myHistoryList.add(history); + MySelectedHistory mySelectedHistory = MySelectedHistory( + selectedHistory: history, + isChecked: element.isChecked, + remark: element.remarks); + + widget.myHistoryList.add(mySelectedHistory); } } }); @@ -408,10 +429,9 @@ class _UpdateSubjectivePageState extends State { ); } - addSubjectiveInfo( - {SOAPViewModel model, - List myAllergiesList, - List myHistoryList}) async { + addSubjectiveInfo({SOAPViewModel model, + List myAllergiesList, + List myHistoryList}) async { formKey.currentState.save(); formKey.currentState.validate(); @@ -488,9 +508,9 @@ class _UpdateSubjectivePageState extends State { } postHistories( - {List myHistoryList, SOAPViewModel model}) async { + {List myHistoryList, SOAPViewModel model}) async { PostHistoriesRequestModel postHistoriesRequestModel = - new PostHistoriesRequestModel(); + new PostHistoriesRequestModel(); widget.myHistoryList.forEach((history) { if (postHistoriesRequestModel.listMedicalHistoryVM == null) postHistoriesRequestModel.listMedicalHistoryVM = []; @@ -500,9 +520,9 @@ class _UpdateSubjectivePageState extends State { episodeId: widget.patientInfo.episodeNo, appointmentNo: widget.patientInfo.appointmentNo, remarks: "", - historyId: history.id, - historyType: history.typeId, - isChecked: false, + historyId: history.selectedHistory.id, + historyType: history.selectedHistory.typeId, + isChecked: history.isChecked, )); }); diff --git a/lib/widgets/patients/profile/soap_update/update_soap_index.dart b/lib/widgets/patients/profile/soap_update/update_soap_index.dart index fee067f4..0edaaaf9 100644 --- a/lib/widgets/patients/profile/soap_update/update_soap_index.dart +++ b/lib/widgets/patients/profile/soap_update/update_soap_index.dart @@ -3,6 +3,7 @@ import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart'; import 'package:doctor_app_flutter/models/SOAP/my_selected_allergy.dart'; import 'package:doctor_app_flutter/models/SOAP/my_selected_assement.dart'; import 'package:doctor_app_flutter/models/SOAP/my_selected_examination.dart'; +import 'package:doctor_app_flutter/models/SOAP/my_selected_history.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; @@ -30,7 +31,7 @@ class _UpdateSoapIndexState extends State PageController _controller; int _currentIndex = 0; List myAllergiesList= List(); - List myHistoryList = List(); + List myHistoryList = List(); List mySelectedExamination = List(); MySelectedAssessment mySelectedAssessment = new MySelectedAssessment(); changePageViewIndex(pageIndex) { From c3bb40878768fac729f463a934119b6709ec1f1d Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Mon, 4 Jan 2021 14:03:36 +0200 Subject: [PATCH 2/7] add some translations --- ios/Podfile.lock | 2 +- lib/config/localized_values.dart | 2 + lib/config/test.dart | 0 lib/util/translations_delegate_base.dart | 2 + .../subjective/update_allergies_widget.dart | 66 ++++++++++++------- .../soap_update/update_assessment_page.dart | 4 +- 6 files changed, 48 insertions(+), 28 deletions(-) delete mode 100644 lib/config/test.dart diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 62e86469..108205bf 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -190,4 +190,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 649616dc336b3659ac6b2b25159d8e488e042b69 -COCOAPODS: 1.10.0 +COCOAPODS: 1.10.0.rc.1 diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index ef5aaaa5..7dda2cdb 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -509,4 +509,6 @@ const Map> localizedValues = { 'vitalSignEmptyMsg': {'en': "There is no vital signs for this patient", 'ar':"لا توجد علامات حيوية لهذا المريض" }, 'referralEmptyMsg': {'en': "There is no referral data", 'ar':"لا توجد بيانات إحالة" }, 'referralSuccessMsg': {'en': "You make referral successfully", 'ar':"You make referral successfully" }, + 'addAssessment': {'en': "Add ASSESSMENT", 'ar':"أضف التقييم" }, + 'assessment': {'en': "ASSESSMENT", 'ar':" التقييم" }, }; diff --git a/lib/config/test.dart b/lib/config/test.dart deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart index 5dee728a..e850c469 100644 --- a/lib/util/translations_delegate_base.dart +++ b/lib/util/translations_delegate_base.dart @@ -535,6 +535,8 @@ class TranslationBase { String get vitalSignEmptyMsg => localizedValues['vitalSignEmptyMsg'][locale.languageCode]; String get referralEmptyMsg => localizedValues['referralEmptyMsg'][locale.languageCode]; String get referralSuccessMsg => localizedValues['referralSuccessMsg'][locale.languageCode]; + String get addAssessment => localizedValues['addAssessment'][locale.languageCode]; + String get assessment => localizedValues['assessment'][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate { diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart b/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart index 1d143310..a9839a2c 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart @@ -13,6 +13,7 @@ import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/dialogs/master_key_dailog.dart'; +import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -71,41 +72,42 @@ class _UpdateAllergiesWidgetState extends State { return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, + mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Container( - - child: Expanded( - child: Texts( + Container( + child: Expanded( + child: Texts( + projectViewModel.isArabic + ? selectedAllergy.selectedAllergy.nameAr + : selectedAllergy.selectedAllergy.nameEn + .toUpperCase(), + variant: "bodyText", + textDecoration: selectedAllergy.isChecked + ? null + : TextDecoration.lineThrough, + bold: true, + color: Colors.black), + ), + width: MediaQuery.of(context).size.width * 0.5, + ), + Texts( projectViewModel.isArabic - ? selectedAllergy.selectedAllergy.nameAr - : selectedAllergy.selectedAllergy.nameEn + ? selectedAllergy.selectedAllergySeverity.nameAr + : selectedAllergy.selectedAllergySeverity.nameEn .toUpperCase(), variant: "bodyText", textDecoration: selectedAllergy.isChecked ? null : TextDecoration.lineThrough, bold: true, - color: Colors.black), - ), - width: MediaQuery.of(context).size.width * 0.5, - ), - Texts( - projectViewModel.isArabic ? selectedAllergy - .selectedAllergySeverity.nameAr : selectedAllergy - .selectedAllergySeverity.nameEn - .toUpperCase(), - variant: "bodyText", - textDecoration: selectedAllergy.isChecked - ? null - : TextDecoration.lineThrough, - bold: true, - color: AppGlobal.appPrimaryColor), - if(selectedAllergy.isChecked) + color: AppGlobal.appPrimaryColor), + if (selectedAllergy.isChecked) InkWell( child: Icon( FontAwesomeIcons.trash, @@ -115,6 +117,20 @@ class _UpdateAllergiesWidgetState extends State { onTap: () => removeAllergy(selectedAllergy), ) ], + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: Container( + width: MediaQuery.of(context).size.width * 0.6, + child: AppText( + selectedAllergy.remark ?? '', + fontSize: 10, + color: Colors.grey, + ), + ), + ), + DividerWithSpacesAround() + ], ), SizedBox( height: 10, @@ -383,7 +399,7 @@ class _AddAllergiesState extends State { height: 10, ), AppButton( - title: "Add".toUpperCase(), + title: TranslationBase.of(context).add.toUpperCase(), onPressed: () { MySelectedAllergy mySelectedAllergy = new MySelectedAllergy( remark: remarkController.text, diff --git a/lib/widgets/patients/profile/soap_update/update_assessment_page.dart b/lib/widgets/patients/profile/soap_update/update_assessment_page.dart index 3eec290c..79d8878c 100644 --- a/lib/widgets/patients/profile/soap_update/update_assessment_page.dart +++ b/lib/widgets/patients/profile/soap_update/update_assessment_page.dart @@ -101,7 +101,7 @@ class _UpdateAssessmentPageState extends State { children: [ Row( children: [ - Texts('ASSESSMENT', + Texts(TranslationBase.of(context).assessment.toUpperCase(), variant: isAssessmentExpand ? "bodyText" : '', bold: isAssessmentExpand ? true : false, @@ -135,7 +135,7 @@ class _UpdateAssessmentPageState extends State { margin: EdgeInsets.only(left: 5, right: 5, top: 15), child: TextFields( - hintText: "Add ASSESSMENT", + hintText: TranslationBase.of(context).addAssessment, fontSize: 13.5, onTapTextFields: () { openAssessmentDialog(context); From 1be8ea7dcbee602061b680626f7003b514760e70 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Mon, 4 Jan 2021 14:07:55 +0200 Subject: [PATCH 3/7] Fix conflict --- lib/util/translations_delegate_base.dart | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart index 1e9cfe71..1df9f8e9 100644 --- a/lib/util/translations_delegate_base.dart +++ b/lib/util/translations_delegate_base.dart @@ -548,9 +548,6 @@ class TranslationBase { String get covered => localizedValues['covered'][locale.languageCode]; String get approvalRequired => localizedValues['approvalRequired'][locale.languageCode]; String get uncoveredByDoctor => localizedValues['uncoveredByDoctor'][locale.languageCode]; - String get vitalSignEmptyMsg => localizedValues['vitalSignEmptyMsg'][locale.languageCode]; - String get referralEmptyMsg => localizedValues['referralEmptyMsg'][locale.languageCode]; - String get referralSuccessMsg => localizedValues['referralSuccessMsg'][locale.languageCode]; String get addAssessment => localizedValues['addAssessment'][locale.languageCode]; String get assessment => localizedValues['assessment'][locale.languageCode]; } From 9aa5ab4228feabc8b85063377b7c679741b529b1 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Tue, 5 Jan 2021 09:23:15 +0200 Subject: [PATCH 4/7] small changes --- lib/client/base_app_client.dart | 3 +++ .../post_chief_complaint_request_model.dart | 21 ++++++++++++------- ...et_patient_arrival_list_request_model.dart | 3 ++- .../subjective/update_subjective_page.dart | 5 +++-- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/lib/client/base_app_client.dart b/lib/client/base_app_client.dart index 83923ea7..e2dbfd02 100644 --- a/lib/client/base_app_client.dart +++ b/lib/client/base_app_client.dart @@ -49,6 +49,9 @@ class BaseAppClient { if (body['ClinicID'] == null) body['ClinicID'] = doctorProfile?.clinicID; } + if (body['DoctorID'] == '') { + body['DoctorID'] =null; + } body['TokenID'] = token ?? ''; String lang = await sharedPref.getString(APP_Language); if (lang != null && lang == 'ar') diff --git a/lib/models/SOAP/post_chief_complaint_request_model.dart b/lib/models/SOAP/post_chief_complaint_request_model.dart index bedf2978..ed58e58a 100644 --- a/lib/models/SOAP/post_chief_complaint_request_model.dart +++ b/lib/models/SOAP/post_chief_complaint_request_model.dart @@ -8,17 +8,19 @@ class PostChiefComplaintRequestModel { bool ispregnant; bool isLactation; int numberOfWeeks; + dynamic doctorID; PostChiefComplaintRequestModel( {this.appointmentNo, - this.episodeID, - this.patientMRN, - this.chiefComplaint, - this.hopi, - this.currentMedication, - this.ispregnant, - this.isLactation, - this.numberOfWeeks}); + this.episodeID, + this.patientMRN, + this.chiefComplaint, + this.hopi, + this.currentMedication, + this.ispregnant, + this.isLactation, + this.doctorID, + this.numberOfWeeks}); PostChiefComplaintRequestModel.fromJson(Map json) { appointmentNo = json['AppointmentNo']; @@ -30,6 +32,7 @@ class PostChiefComplaintRequestModel { ispregnant = json['ispregnant']; isLactation = json['isLactation']; numberOfWeeks = json['numberOfWeeks']; + doctorID = json['DoctorID']; } Map toJson() { @@ -43,6 +46,8 @@ class PostChiefComplaintRequestModel { data['ispregnant'] = this.ispregnant; data['isLactation'] = this.isLactation; data['numberOfWeeks'] = this.numberOfWeeks; + data['DoctorID'] = this.doctorID; + return data; } } diff --git a/lib/models/patient/patient_arrival/get_patient_arrival_list_request_model.dart b/lib/models/patient/patient_arrival/get_patient_arrival_list_request_model.dart index 393790dd..66890a8f 100644 --- a/lib/models/patient/patient_arrival/get_patient_arrival_list_request_model.dart +++ b/lib/models/patient/patient_arrival/get_patient_arrival_list_request_model.dart @@ -28,13 +28,14 @@ class GetPatientArrivalListRequestModel { Map toJson() { final Map data = new Map(); - data['VidaAuthTokenID'] = this.vidaAuthTokenID; data['From'] = this.from; data['To'] = this.to; data['DoctorID'] = this.doctorID; data['PageIndex'] = this.pageIndex; data['PageSize'] = this.pageSize; data['ClinicID'] = this.clinicID; + data['VidaAuthTokenID'] = this.vidaAuthTokenID; + return data; } } diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart index 89e617d6..e0d92788 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart @@ -552,8 +552,9 @@ class _UpdateSubjectivePageState extends State { currentMedication: " currentMedication ", hopi: illnessController.text, isLactation: false, - ispregnant: true, - numberOfWeeks: 22); + ispregnant: false, + doctorID: '', + numberOfWeeks: 0); if (model.patientChiefComplaintList.isEmpty) { // TODO: make it postChiefComplaint after it start to work await model.postChiefComplaint(postChiefComplaintRequestModel); From a46a61c5cf4e52f03c1d0fb31c51c768c2d6b8c8 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Tue, 5 Jan 2021 18:59:32 +0200 Subject: [PATCH 5/7] fix get and post issue to make it works with vida --- lib/client/base_app_client.dart | 4 + lib/config/localized_values.dart | 3 + .../GetChiefComplaintReqModel.dart | 9 +- lib/models/SOAP/GeneralGetReqForSOAP.dart | 15 +- lib/models/SOAP/GetHistoryReqModel.dart | 7 +- lib/models/SOAP/GetPhysicalExamReqModel.dart | 21 ++- lib/models/SOAP/my_selected_allergy.dart | 9 +- lib/models/SOAP/my_selected_examination.dart | 10 +- .../SOAP/post_histories_request_model.dart | 5 +- lib/util/translations_delegate_base.dart | 3 + .../subjective/update_allergies_widget.dart | 55 ++++--- .../subjective/update_subjective_page.dart | 136 +++++++++--------- .../soap_update/update_objective_page.dart | 19 ++- .../soap_update/update_soap_index.dart | 2 +- 14 files changed, 184 insertions(+), 114 deletions(-) diff --git a/lib/client/base_app_client.dart b/lib/client/base_app_client.dart index ea5580ca..6ab902de 100644 --- a/lib/client/base_app_client.dart +++ b/lib/client/base_app_client.dart @@ -44,6 +44,7 @@ class BaseAppClient { body['DoctorID'] = doctorProfile?.doctorID; if (body['DoctorID'] == "") body['DoctorID'] = null; + if( body['EditedBy'] ==null) body['EditedBy'] = doctorProfile?.doctorID; if (body['ProjectID'] == null) { body['ProjectID'] = doctorProfile?.projectID; @@ -54,6 +55,9 @@ class BaseAppClient { if (body['DoctorID'] == '') { body['DoctorID'] =null; } + if (body['EditedBy'] == '') { + body.remove("EditedBy"); + } body['TokenID'] = token ?? ''; String lang = await sharedPref.getString(APP_Language); if (lang != null && lang == 'ar') diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index adca1232..4ad53ebe 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -538,4 +538,7 @@ const Map> localizedValues = { }, 'addAssessment': {'en': "Add ASSESSMENT", 'ar':"أضف التقييم" }, 'assessment': {'en': "ASSESSMENT", 'ar':" التقييم" }, + 'physicalSystemExamination': {'en': "Physical/System Examination", 'ar':" الفحص البدني / النظام" }, + 'searchExamination': {'en': "Search Examination", 'ar':"فحص البحث" }, + 'addExamination': {'en': "Add Examination", 'ar':"اضافه" }, }; diff --git a/lib/models/SOAP/ChiefComplaint/GetChiefComplaintReqModel.dart b/lib/models/SOAP/ChiefComplaint/GetChiefComplaintReqModel.dart index 68ab6c40..80188dfe 100644 --- a/lib/models/SOAP/ChiefComplaint/GetChiefComplaintReqModel.dart +++ b/lib/models/SOAP/ChiefComplaint/GetChiefComplaintReqModel.dart @@ -3,16 +3,19 @@ class GetChiefComplaintReqModel { int appointmentNo; int episodeId; int episodeID; + dynamic doctorID; GetChiefComplaintReqModel( - {this.patientMRN, this.appointmentNo, this.episodeId, this.episodeID}); + {this.patientMRN, this.appointmentNo, this.episodeId, this.episodeID, this.doctorID}); GetChiefComplaintReqModel.fromJson(Map json) { patientMRN = json['PatientMRN']; appointmentNo = json['AppointmentNo']; episodeId = json['EpisodeId']; episodeID = json['EpisodeID']; - } + doctorID = json['DoctorID']; + +} Map toJson() { final Map data = new Map(); @@ -20,6 +23,8 @@ class GetChiefComplaintReqModel { data['AppointmentNo'] = this.appointmentNo; data['EpisodeId'] = this.episodeId; data['EpisodeID'] = this.episodeID; + data['DoctorID'] = this.doctorID; + return data; } } diff --git a/lib/models/SOAP/GeneralGetReqForSOAP.dart b/lib/models/SOAP/GeneralGetReqForSOAP.dart index 488a06d4..70e76313 100644 --- a/lib/models/SOAP/GeneralGetReqForSOAP.dart +++ b/lib/models/SOAP/GeneralGetReqForSOAP.dart @@ -2,16 +2,23 @@ class GeneralGetReqForSOAP { int patientMRN; int appointmentNo; int episodeId; - String doctorID; + dynamic editedBy; + dynamic doctorID; - GeneralGetReqForSOAP( - {this.patientMRN, this.appointmentNo, this.episodeId, this.doctorID}); + GeneralGetReqForSOAP({ + this.patientMRN, + this.appointmentNo, + this.episodeId, + this.doctorID, + this.editedBy, + }); GeneralGetReqForSOAP.fromJson(Map json) { patientMRN = json['PatientMRN']; appointmentNo = json['AppointmentNo']; episodeId = json['EpisodeId']; doctorID = json['DoctorID']; + editedBy = json['EditedBy']; } Map toJson() { @@ -20,6 +27,8 @@ class GeneralGetReqForSOAP { data['AppointmentNo'] = this.appointmentNo; data['EpisodeId'] = this.episodeId; data['DoctorID'] = this.doctorID; + data['EditedBy'] = this.editedBy; + return data; } } diff --git a/lib/models/SOAP/GetHistoryReqModel.dart b/lib/models/SOAP/GetHistoryReqModel.dart index 1df26690..720b6342 100644 --- a/lib/models/SOAP/GetHistoryReqModel.dart +++ b/lib/models/SOAP/GetHistoryReqModel.dart @@ -5,8 +5,9 @@ class GetHistoryReqModel { String from; String to; int clinicID; - int doctorID; int appointmentNo; + dynamic editedBy; + dynamic doctorID; GetHistoryReqModel( {this.patientMRN, @@ -16,6 +17,7 @@ class GetHistoryReqModel { this.to, this.clinicID, this.doctorID, + this.editedBy, this.appointmentNo}); GetHistoryReqModel.fromJson(Map json) { @@ -27,6 +29,7 @@ class GetHistoryReqModel { clinicID = json['ClinicID']; doctorID = json['DoctorID']; appointmentNo = json['AppointmentNo']; + editedBy = json['EditedBy']; } @@ -40,6 +43,8 @@ class GetHistoryReqModel { data['To'] = this.to; data['ClinicID'] = this.clinicID; data['DoctorID'] = this.doctorID; + data['EditedBy'] = this.editedBy; + return data; } } diff --git a/lib/models/SOAP/GetPhysicalExamReqModel.dart b/lib/models/SOAP/GetPhysicalExamReqModel.dart index ce045c22..5145c419 100644 --- a/lib/models/SOAP/GetPhysicalExamReqModel.dart +++ b/lib/models/SOAP/GetPhysicalExamReqModel.dart @@ -4,13 +4,18 @@ class GetPhysicalExamReqModel { String episodeID; String from; String to; + dynamic editedBy; + dynamic doctorID; - GetPhysicalExamReqModel( - {this.patientMRN, - this.appointmentNo, - this.episodeID, - this.from, - this.to}); + GetPhysicalExamReqModel({ + this.patientMRN, + this.appointmentNo, + this.episodeID, + this.from, + this.to, + this.doctorID, + this.editedBy, + }); GetPhysicalExamReqModel.fromJson(Map json) { patientMRN = json['PatientMRN']; @@ -18,6 +23,8 @@ class GetPhysicalExamReqModel { episodeID = json['EpisodeID']; from = json['From']; to = json['To']; + doctorID = json['DoctorID']; + editedBy = json['EditedBy']; } Map toJson() { @@ -27,6 +34,8 @@ class GetPhysicalExamReqModel { data['EpisodeID'] = this.episodeID; data['From'] = this.from; data['To'] = this.to; + data['DoctorID'] = this.doctorID; + data['EditedBy'] = this.editedBy; return data; } } diff --git a/lib/models/SOAP/my_selected_allergy.dart b/lib/models/SOAP/my_selected_allergy.dart index e5b45502..5a6bd749 100644 --- a/lib/models/SOAP/my_selected_allergy.dart +++ b/lib/models/SOAP/my_selected_allergy.dart @@ -5,9 +5,14 @@ class MySelectedAllergy { MasterKeyModel selectedAllergy; String remark; bool isChecked; + int createdBy; MySelectedAllergy( - {this.selectedAllergySeverity, this.selectedAllergy, this.remark, this.isChecked}); + {this.selectedAllergySeverity, + this.selectedAllergy, + this.remark, + this.isChecked, + this.createdBy}); MySelectedAllergy.fromJson(Map json) { selectedAllergySeverity = json['selectedAllergySeverity'] != null @@ -18,6 +23,7 @@ class MySelectedAllergy { : null; remark = json['remark']; remark = json['isChecked']; + createdBy = json['createdBy']; } Map toJson() { @@ -30,6 +36,7 @@ class MySelectedAllergy { } data['remark'] = this.remark; data['isChecked'] = this.remark; + data['createdBy'] = this.createdBy; return data; } } diff --git a/lib/models/SOAP/my_selected_examination.dart b/lib/models/SOAP/my_selected_examination.dart index 3b6685c8..5a717a4e 100644 --- a/lib/models/SOAP/my_selected_examination.dart +++ b/lib/models/SOAP/my_selected_examination.dart @@ -5,18 +5,23 @@ class MySelectedExamination { String remark; bool isNormal; bool isAbnormal; + int createdBy; MySelectedExamination( - {this.selectedExamination, this.remark, this.isNormal = true, this.isAbnormal = false}); + {this.selectedExamination, + this.remark, + this.isNormal = true, + this.isAbnormal = false, + this.createdBy}); MySelectedExamination.fromJson(Map json) { - selectedExamination = json['selectedExamination'] != null ? new MasterKeyModel.fromJson(json['selectedExamination']) : null; remark = json['remark']; remark = json['isNormal']; remark = json['isAbnormal']; + createdBy = json['createdBy']; } Map toJson() { @@ -28,6 +33,7 @@ class MySelectedExamination { data['remark'] = this.remark; data['isNormal'] = this.isNormal; data['isAbnormal'] = this.isAbnormal; + data['createdBy'] = this.createdBy; return data; } } diff --git a/lib/models/SOAP/post_histories_request_model.dart b/lib/models/SOAP/post_histories_request_model.dart index baa428fd..d8be3fb2 100644 --- a/lib/models/SOAP/post_histories_request_model.dart +++ b/lib/models/SOAP/post_histories_request_model.dart @@ -1,7 +1,8 @@ class PostHistoriesRequestModel { List listMedicalHistoryVM; + dynamic doctorID; - PostHistoriesRequestModel({this.listMedicalHistoryVM}); + PostHistoriesRequestModel({this.listMedicalHistoryVM, this.doctorID}); PostHistoriesRequestModel.fromJson(Map json) { if (json['listMedicalHistoryVM'] != null) { @@ -10,6 +11,7 @@ class PostHistoriesRequestModel { listMedicalHistoryVM.add(new ListMedicalHistoryVM.fromJson(v)); }); } + doctorID = json['DoctorID']; } Map toJson() { @@ -18,6 +20,7 @@ class PostHistoriesRequestModel { data['listMedicalHistoryVM'] = this.listMedicalHistoryVM.map((v) => v.toJson()).toList(); } + data['DoctorID'] = this.doctorID; return data; } } diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart index e295266f..e6b5dbd5 100644 --- a/lib/util/translations_delegate_base.dart +++ b/lib/util/translations_delegate_base.dart @@ -555,6 +555,9 @@ class TranslationBase { String get addAssessment => localizedValues['addAssessment'][locale.languageCode]; String get assessment => localizedValues['assessment'][locale.languageCode]; String get chiefComplaintEmptyMsg => localizedValues['chiefComplaintEmptyMsg'][locale.languageCode]; + String get physicalSystemExamination => localizedValues['physicalSystemExamination'][locale.languageCode]; + String get searchExamination => localizedValues['searchExamination'][locale.languageCode]; + String get addExamination => localizedValues['addExamination'][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate { diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart b/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart index a9839a2c..6de9e031 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart @@ -170,31 +170,40 @@ class _UpdateAllergiesWidgetState extends State { builder: (context) { return AddAllergies( addAllergiesFun: (MySelectedAllergy mySelectedAllergy) { - setState(() { - List allergy = - // ignore: missing_return - widget.myAllergiesList.where((element) => - mySelectedAllergy.selectedAllergy.id == - element.selectedAllergy.id - ).toList(); - if (allergy.isEmpty) { - widget.myAllergiesList.add(mySelectedAllergy); - Navigator.of(context).pop(); - } else { - allergy.first.selectedAllergy = - mySelectedAllergy.selectedAllergy; - allergy.first.selectedAllergySeverity = - mySelectedAllergy.selectedAllergySeverity; - allergy.first.remark = mySelectedAllergy.remark; - allergy.first.isChecked = mySelectedAllergy.isChecked; - Navigator.of(context).pop(); + if (mySelectedAllergy.selectedAllergySeverity == null || + mySelectedAllergy.selectedAllergy == null) { + helpers.showErrorToast(TranslationBase + .of(context) + .requiredMsg); - // helpers.showErrorToast(TranslationBase - // .of(context) - // .itemExist); - } + } else { + setState(() { + List allergy = + // ignore: missing_return + widget.myAllergiesList + .where((element) => + mySelectedAllergy.selectedAllergy.id == + element.selectedAllergy.id) + .toList(); - }); + if (allergy.isEmpty) { + widget.myAllergiesList.add(mySelectedAllergy); + Navigator.of(context).pop(); + } else { + allergy.first.selectedAllergy = + mySelectedAllergy.selectedAllergy; + allergy.first.selectedAllergySeverity = + mySelectedAllergy.selectedAllergySeverity; + allergy.first.remark = mySelectedAllergy.remark; + allergy.first.isChecked = mySelectedAllergy.isChecked; + Navigator.of(context).pop(); + + // helpers.showErrorToast(TranslationBase + // .of(context) + // .itemExist); + } + }); + } },); }); } diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart index e0d92788..4370df4f 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart @@ -1,5 +1,6 @@ import 'package:doctor_app_flutter/client/base_app_client.dart'; import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; @@ -12,6 +13,7 @@ import 'package:doctor_app_flutter/models/SOAP/my_selected_history.dart'; import 'package:doctor_app_flutter/models/SOAP/post_allergy_request_model.dart'; import 'package:doctor_app_flutter/models/SOAP/post_chief_complaint_request_model.dart'; import 'package:doctor_app_flutter/models/SOAP/post_histories_request_model.dart'; +import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; @@ -54,20 +56,11 @@ class _UpdateSubjectivePageState extends State { GetHistoryReqModel getHistoryReqModel = GetHistoryReqModel( patientMRN: widget.patientInfo.patientMRN, episodeID: widget.patientInfo.episodeNo.toString(), - appointmentNo: widget.patientInfo.appointmentNo); - - getHistoryReqModel.historyType = - MasterKeysService.HistoryFamily.getMasterKeyService(); - await model.getPatientHistories(getHistoryReqModel, isFirst: true); - getHistoryReqModel.historyType = - MasterKeysService.HistoryMedical.getMasterKeyService(); - await model.getPatientHistories(getHistoryReqModel); - getHistoryReqModel.historyType = - MasterKeysService.HistorySurgical.getMasterKeyService(); - await model.getPatientHistories(getHistoryReqModel); - getHistoryReqModel.historyType = - MasterKeysService.HistorySports.getMasterKeyService(); - await model.getPatientHistories(getHistoryReqModel); + appointmentNo: widget.patientInfo.appointmentNo, + doctorID: '', + editedBy: ''); + + await model.getPatientHistories(getHistoryReqModel,isFirst: true); if (model.patientHistoryList.isNotEmpty) { if (model.historyFamilyList.isEmpty) { @@ -147,58 +140,64 @@ class _UpdateSubjectivePageState extends State { }); } } + + getAllergies(SOAPViewModel model) async { + GeneralGetReqForSOAP generalGetReqForSOAP = GeneralGetReqForSOAP( + patientMRN: widget.patientInfo.patientMRN, + episodeId: widget.patientInfo.episodeNo, + appointmentNo: widget.patientInfo.appointmentNo, + doctorID: '', + editedBy: ''); + await model.getPatientAllergy(generalGetReqForSOAP); + if (model.patientAllergiesList.isNotEmpty) { + if (model.allergiesList.isEmpty) + await model.getMasterLookup(MasterKeysService.Allergies); + if (model.allergySeverityList.isEmpty) + await model.getMasterLookup(MasterKeysService.AllergySeverity); + + model.patientAllergiesList.forEach((element) { + MasterKeyModel selectedAllergy = model.getOneMasterKey( + masterKeys: MasterKeysService.Allergies, + id: element.allergyDiseaseId, + typeId: element.allergyDiseaseType); + MasterKeyModel selectedAllergySeverity = model.getOneMasterKey( + masterKeys: MasterKeysService.AllergySeverity, + id: element.severity, + ); + MySelectedAllergy mySelectedAllergy = MySelectedAllergy( + selectedAllergy: selectedAllergy, + isChecked: element.isChecked, + createdBy: element.createdBy, + selectedAllergySeverity: selectedAllergySeverity); + if (selectedAllergy != null && selectedAllergySeverity != null) + widget.myAllergiesList.add(mySelectedAllergy); + }); + } + } + @override Widget build(BuildContext context) { - - return BaseView( + return BaseView( onModelReady: (model) async { widget.myAllergiesList.clear(); widget.myHistoryList.clear(); - - GeneralGetReqForSOAP generalGetReqForSOAP = GeneralGetReqForSOAP( - patientMRN: widget.patientInfo.patientMRN, - episodeId: widget.patientInfo.episodeNo, - appointmentNo: widget.patientInfo.appointmentNo); GetChiefComplaintReqModel getChiefComplaintReqModel = GetChiefComplaintReqModel( patientMRN: widget.patientInfo.patientMRN, appointmentNo: widget.patientInfo.appointmentNo, episodeId: widget.patientInfo.episodeNo, - episodeID: widget.patientInfo.episodeNo); + episodeID: widget.patientInfo.episodeNo, + doctorID: ''); await model.getPatientChiefComplaint(getChiefComplaintReqModel); if (model.patientChiefComplaintList.isNotEmpty) { - complaintsController.text = helpers.parseHtmlString(model.patientChiefComplaintList[0].chiefComplaint) - ; + complaintsController.text = helpers.parseHtmlString( + model.patientChiefComplaintList[0].chiefComplaint); illnessController.text = model.patientChiefComplaintList[0].hopi; } - await model.getPatientAllergy(generalGetReqForSOAP); - if (model.patientAllergiesList.isNotEmpty) { - if (model.allergiesList.isEmpty) - await model.getMasterLookup(MasterKeysService.Allergies); - if (model.allergySeverityList.isEmpty) - await model.getMasterLookup(MasterKeysService.AllergySeverity); - - model.patientAllergiesList.forEach((element) { - MasterKeyModel selectedAllergy = model.getOneMasterKey( - masterKeys: MasterKeysService.Allergies, - id: element.allergyDiseaseId, - typeId: element.allergyDiseaseType); - MasterKeyModel selectedAllergySeverity = model.getOneMasterKey( - masterKeys: MasterKeysService.AllergySeverity, - id: element.severity, - ); - MySelectedAllergy mySelectedAllergy = MySelectedAllergy( - selectedAllergy: selectedAllergy, - isChecked: element.isChecked, - selectedAllergySeverity: selectedAllergySeverity); - if (selectedAllergy != null && selectedAllergySeverity != null) - widget.myAllergiesList.add(mySelectedAllergy); - }); - } await getHistory(model); - + await getAllergies(model); }, builder: (_, model, w) => AppScaffold( isShowAppBar: false, @@ -472,29 +471,30 @@ class _UpdateSubjectivePageState extends State { {List myAllergiesList, SOAPViewModel model}) async { PostAllergyRequestModel postAllergyRequestModel = new PostAllergyRequestModel(); + + Map profile = await sharedPref.getObj(DOCTOR_PROFILE); + + DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile); widget.myAllergiesList.forEach((allergy) { if (postAllergyRequestModel.listHisProgNotePatientAllergyDiseaseVM == null) postAllergyRequestModel.listHisProgNotePatientAllergyDiseaseVM = []; //TODO: make static value dynamic - postAllergyRequestModel.listHisProgNotePatientAllergyDiseaseVM - .add(ListHisProgNotePatientAllergyDiseaseVM( - allergyDiseaseId: allergy.selectedAllergy.id, - allergyDiseaseType: allergy.selectedAllergy.typeId, - patientMRN: widget.patientInfo.patientMRN, - episodeId: widget.patientInfo.episodeNo, - appointmentNo: widget.patientInfo.appointmentNo, - severity: allergy.selectedAllergySeverity.id, - remarks: allergy.remark, - createdBy: 4709, - // - createdOn: DateTime.now().toIso8601String(), - //"2020-08-14T20:37:22.780Z", - editedBy: 4709, - editedOn: DateTime.now().toIso8601String(), - //"2020-08-14T20:37:22.780Z", - isChecked: false, - isUpdatedByNurse: false)); + postAllergyRequestModel.listHisProgNotePatientAllergyDiseaseVM.add( + ListHisProgNotePatientAllergyDiseaseVM( + allergyDiseaseId: allergy.selectedAllergy.id, + allergyDiseaseType: allergy.selectedAllergy.typeId, + patientMRN: widget.patientInfo.patientMRN, + episodeId: widget.patientInfo.episodeNo, + appointmentNo: widget.patientInfo.appointmentNo, + severity: allergy.selectedAllergySeverity.id, + remarks: allergy.remark, + createdBy: allergy.createdBy??doctorProfile.doctorID, + createdOn: DateTime.now().toIso8601String(), + editedBy: doctorProfile.doctorID, + editedOn: DateTime.now().toIso8601String(), + isChecked: allergy.isChecked, + isUpdatedByNurse: false)); }); if (model.patientAllergiesList.isEmpty) { await model.postAllergy(postAllergyRequestModel); @@ -510,7 +510,7 @@ class _UpdateSubjectivePageState extends State { postHistories( {List myHistoryList, SOAPViewModel model}) async { PostHistoriesRequestModel postHistoriesRequestModel = - new PostHistoriesRequestModel(); + new PostHistoriesRequestModel(doctorID: ''); widget.myHistoryList.forEach((history) { if (postHistoriesRequestModel.listMedicalHistoryVM == null) postHistoriesRequestModel.listMedicalHistoryVM = []; diff --git a/lib/widgets/patients/profile/soap_update/update_objective_page.dart b/lib/widgets/patients/profile/soap_update/update_objective_page.dart index 37a5d72f..0c8bece6 100644 --- a/lib/widgets/patients/profile/soap_update/update_objective_page.dart +++ b/lib/widgets/patients/profile/soap_update/update_objective_page.dart @@ -1,5 +1,6 @@ import 'package:doctor_app_flutter/client/base_app_client.dart'; import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; @@ -7,6 +8,7 @@ import 'package:doctor_app_flutter/models/SOAP/GetPhysicalExamReqModel.dart'; import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart'; import 'package:doctor_app_flutter/models/SOAP/my_selected_examination.dart'; import 'package:doctor_app_flutter/models/SOAP/post_physical_exam_request_model.dart'; +import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; @@ -77,6 +79,7 @@ class _UpdateObjectivePageState extends State { selectedExamination: examMaster, remark: element.remarks, isNormal: element.isNormal, + createdBy: element.createdBy, isAbnormal: element.isAbnormal); widget.mySelectedExamination.add(tempEam); }); @@ -102,7 +105,7 @@ class _UpdateObjectivePageState extends State { children: [ Row( children: [ - Texts('Physical/System Examination', + Texts(TranslationBase.of(context).physicalSystemExamination, variant: isSysExaminationExpand ? "bodyText" : '', @@ -137,7 +140,7 @@ class _UpdateObjectivePageState extends State { margin: EdgeInsets.only(left: 10, right: 10, top: 15), child: TextFields( - hintText: "Add Examination", + hintText: TranslationBase.of(context).physicalSystemExamination, fontSize: 13.5, onTapTextFields: () { openExaminationList(context); @@ -351,7 +354,11 @@ class _UpdateObjectivePageState extends State { } submitUpdateObjectivePage(SOAPViewModel model) async { + if(widget.mySelectedExamination.isNotEmpty){ + Map profile = await sharedPref.getObj(DOCTOR_PROFILE); + + DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile); PostPhysicalExamRequestModel postPhysicalExamRequestModel = new PostPhysicalExamRequestModel(); widget.mySelectedExamination.forEach((exam) { if (postPhysicalExamRequestModel.listHisProgNotePhysicalExaminationVM == @@ -364,9 +371,9 @@ class _UpdateObjectivePageState extends State { episodeId: widget.patientInfo.episodeNo, appointmentNo: widget.patientInfo.appointmentNo, remarks: exam.remark ?? '', - createdBy: 4709, + createdBy: exam.createdBy??doctorProfile.doctorID, createdOn: DateTime.now().toIso8601String(), - editedBy: 4709, + editedBy: doctorProfile.doctorID, editedOn: DateTime.now().toIso8601String(), examId: exam.selectedExamination.id, examType: exam.selectedExamination.typeId, @@ -505,8 +512,8 @@ class _AddExaminationDailogState extends State { baseViewModel: model, child: MasterKeyCheckboxSearchWidget( model: model, - hintSearchText: 'Search Examination', - buttonName: 'Add Examination', + hintSearchText: TranslationBase.of(context).searchExamination, + buttonName: TranslationBase.of(context).addExamination, masterList: model.physicalExaminationList, removeHistory: (history){ setState(() { diff --git a/lib/widgets/patients/profile/soap_update/update_soap_index.dart b/lib/widgets/patients/profile/soap_update/update_soap_index.dart index 0edaaaf9..3b793d6a 100644 --- a/lib/widgets/patients/profile/soap_update/update_soap_index.dart +++ b/lib/widgets/patients/profile/soap_update/update_soap_index.dart @@ -33,7 +33,7 @@ class _UpdateSoapIndexState extends State List myAllergiesList= List(); List myHistoryList = List(); List mySelectedExamination = List(); - MySelectedAssessment mySelectedAssessment = new MySelectedAssessment(); + MySelectedAssessment mySelectedAssessment = MySelectedAssessment(); changePageViewIndex(pageIndex) { _controller.jumpToPage(pageIndex); } From 34b7b4564cade3e4ae550a02371b088078675a70 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Wed, 6 Jan 2021 16:59:35 +0200 Subject: [PATCH 6/7] assessment work fine now --- lib/models/SOAP/my_selected_assement.dart | 22 +- .../soap_update/update_assessment_page.dart | 607 ++++++++++-------- .../soap_update/update_soap_index.dart | 4 +- 3 files changed, 354 insertions(+), 279 deletions(-) diff --git a/lib/models/SOAP/my_selected_assement.dart b/lib/models/SOAP/my_selected_assement.dart index b5f82379..4d4afc2d 100644 --- a/lib/models/SOAP/my_selected_assement.dart +++ b/lib/models/SOAP/my_selected_assement.dart @@ -6,12 +6,21 @@ class MySelectedAssessment { MasterKeyModel selectedDiagnosisType; String remark; int appointmentId; + int createdBy; + String createdOn; + int doctorID; + String doctorName; + String icdCode10ID; MySelectedAssessment( {this.selectedICD, this.selectedDiagnosisCondition, this.selectedDiagnosisType, - this.remark, this.appointmentId}); + this.remark, this.appointmentId, this.createdBy, + this.createdOn, + this.doctorID, + this.doctorName, + this.icdCode10ID}); MySelectedAssessment.fromJson(Map json) { selectedICD = json['selectedICD'] != null @@ -25,6 +34,11 @@ class MySelectedAssessment { : null; remark = json['remark']; appointmentId = json['appointmentId']; + createdBy = json['createdBy']; + createdOn = json['createdOn']; + doctorID = json['doctorID']; + doctorName = json['doctorName']; + icdCode10ID = json['icdCode10ID']; } Map toJson() { @@ -41,7 +55,11 @@ class MySelectedAssessment { } data['remark'] = this.remark; data['appointmentId'] = this.appointmentId; - + data['createdBy'] = this.createdBy; + data['createdOn'] = this.createdOn; + data['doctorID'] = this.doctorID; + data['doctorName'] = this.doctorName; + data['icdCode10ID'] = this.icdCode10ID; return data; } } diff --git a/lib/widgets/patients/profile/soap_update/update_assessment_page.dart b/lib/widgets/patients/profile/soap_update/update_assessment_page.dart index 79d8878c..1a38de87 100644 --- a/lib/widgets/patients/profile/soap_update/update_assessment_page.dart +++ b/lib/widgets/patients/profile/soap_update/update_assessment_page.dart @@ -25,11 +25,13 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class UpdateAssessmentPage extends StatefulWidget { final Function changePageViewIndex; - final MySelectedAssessment mySelectedAssessment; + List mySelectedAssessmentList; final PatiantInformtion patientInfo; - UpdateAssessmentPage( - {Key key, this.changePageViewIndex, this.mySelectedAssessment, this.patientInfo}); + UpdateAssessmentPage({Key key, + this.changePageViewIndex, + this.mySelectedAssessmentList, + this.patientInfo}); @override _UpdateAssessmentPageState createState() => _UpdateAssessmentPageState(); @@ -43,8 +45,7 @@ class _UpdateAssessmentPageState extends State { return BaseView( onModelReady: (model) async{ - - widget.mySelectedAssessment.appointmentId =widget.patientInfo.appointmentNo; + widget.mySelectedAssessmentList.clear(); GetAssessmentReqModel getAssessmentReqModel = GetAssessmentReqModel( patientMRN: widget.patientInfo.patientMRN, episodeID: widget.patientInfo.episodeNo.toString(), @@ -60,25 +61,33 @@ class _UpdateAssessmentPageState extends State { if (model.listOfICD10.length == 0) { await model.getMasterLookup(MasterKeysService.ICD10); } + model.patientAssessmentList.forEach((element) { + MasterKeyModel diagnosisType = model.getOneMasterKey( + masterKeys: MasterKeysService.DiagnosisType, + id: element.diagnosisTypeID, + ); + MasterKeyModel selectedICD = model.getOneMasterKey( + masterKeys: MasterKeysService.ICD10, + id: element.icdCode10ID, + ); + MasterKeyModel diagnosisCondition = model.getOneMasterKey( + masterKeys: MasterKeysService.DiagnosisCondition, + id: element.conditionID, + ); + MySelectedAssessment temMySelectedAssessment = MySelectedAssessment( + appointmentId: element.appointmentNo, + remark: element.remarks, + selectedDiagnosisType: diagnosisType, + selectedDiagnosisCondition: diagnosisCondition, + selectedICD: selectedICD, + doctorID: element.doctorID, + doctorName: element.doctorName, + createdBy: element.createdBy, + icdCode10ID: element.icdCode10ID + ); - MasterKeyModel selectedICD = model.getOneMasterKey( - masterKeys: MasterKeysService.ICD10, - id: model.patientAssessmentList[0].icdCode10ID, - ); - widget.mySelectedAssessment.selectedICD= selectedICD; - MasterKeyModel diagnosisCondition = model.getOneMasterKey( - masterKeys: MasterKeysService.DiagnosisCondition, - id: model.patientAssessmentList[0].conditionID, - ); - - widget.mySelectedAssessment.selectedDiagnosisCondition = diagnosisCondition; - MasterKeyModel diagnosisType = model.getOneMasterKey( - masterKeys: MasterKeysService.DiagnosisType, - id: model.patientAssessmentList[0].diagnosisTypeID, - ); - - widget.mySelectedAssessment.selectedDiagnosisType = diagnosisType; - widget.mySelectedAssessment.remark = model.patientAssessmentList[0].remarks; + widget.mySelectedAssessmentList.add(temMySelectedAssessment); + }); } }, builder: (_, model, w) => AppScaffold( @@ -130,7 +139,6 @@ class _UpdateAssessmentPageState extends State { ), Column( children: [ - if(model.patientAssessmentList.isEmpty) Container( margin: EdgeInsets.only(left: 5, right: 5, top: 15), @@ -138,7 +146,8 @@ class _UpdateAssessmentPageState extends State { hintText: TranslationBase.of(context).addAssessment, fontSize: 13.5, onTapTextFields: () { - openAssessmentDialog(context); + openAssessmentDialog(context,isUpdate: false, + model: model); }, readOnly: true, // hintColor: Colors.black, @@ -159,266 +168,239 @@ class _UpdateAssessmentPageState extends State { SizedBox( height: 20, ), - if(widget.mySelectedAssessment != null && - widget.mySelectedAssessment - .appointmentId != - null && widget.mySelectedAssessment - .selectedDiagnosisType != null && - widget.mySelectedAssessment - .selectedDiagnosisCondition != null) - Container( - margin: EdgeInsets.only( - left: 5, right: 5, top: 15), - child: Row( - mainAxisAlignment: MainAxisAlignment - .spaceBetween, - crossAxisAlignment: CrossAxisAlignment - .start, - children: [ - Column( - mainAxisAlignment: MainAxisAlignment - .start, - children: [ - Column( - mainAxisAlignment: - MainAxisAlignment.start, - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - AppText( - "12".toUpperCase(), - fontWeight: FontWeight.bold, - fontSize: 16, - ), - AppText( - "DEC".toUpperCase(), - fontSize: 10, - color: Colors.grey, - ), - ], - ) - ], - ), - Column( - crossAxisAlignment: CrossAxisAlignment - .start, - children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.start, - children: [ - AppText( - "Appointment #: ", - fontWeight: FontWeight.bold, - fontSize: 16, - ), - AppText( - widget.mySelectedAssessment - .appointmentId - .toString(), - fontSize: 10, - color: Colors.grey, - ), - ], - ), - Row( - mainAxisAlignment: - MainAxisAlignment.start, - children: [ - AppText( - widget.mySelectedAssessment - .selectedDiagnosisCondition - .nameEn, - fontWeight: FontWeight.bold, - fontSize: 16, - ), - ], - ), - Row( - mainAxisAlignment: - MainAxisAlignment.start, - children: [ - AppText( - "Type : ", - fontWeight: FontWeight.bold, - fontSize: 16, - ), - AppText( - widget.mySelectedAssessment - .selectedDiagnosisType - .nameEn, - fontSize: 10, - color: Colors.grey, - ), - ], - ), - Row( - mainAxisAlignment: - MainAxisAlignment.start, - children: [ - AppText( - "Doc : ", - fontWeight: FontWeight.bold, - fontSize: 16, - ), - AppText( - "Anas Abdullah", - fontSize: 10, - color: Colors.grey, - ), - ], - ), - SizedBox( - height: 6, - ), - Row( - mainAxisAlignment: - MainAxisAlignment.start, - children: [ - SizedBox( - height: 6, - ), - Container( - width: MediaQuery.of(context).size.width * 0.5, - child: AppText( - widget.mySelectedAssessment.remark??"", + + Column( + children: widget.mySelectedAssessmentList.map(( + assessment) { + return Container( + margin: EdgeInsets.only( + left: 5, right: 5, top: 15), + child: Row( + mainAxisAlignment: MainAxisAlignment + .spaceBetween, + crossAxisAlignment: CrossAxisAlignment + .start, + children: [ + Column( + mainAxisAlignment: MainAxisAlignment + .start, + children: [ + Column( + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + AppText( + "12".toUpperCase(), + fontWeight: FontWeight + .bold, + fontSize: 16, + ), + AppText( + "DEC".toUpperCase(), fontSize: 10, color: Colors.grey, ), - ), - ], - ), - ], - ), - Column( - crossAxisAlignment: CrossAxisAlignment - .start, - children: [ - Row( - - children: [ - AppText( - "ICD: ".toUpperCase(), - fontWeight: FontWeight.bold, - fontSize: 16, - ), - Container( - child: AppText( - widget.mySelectedAssessment.selectedICD.code.trim().toUpperCase()??"", + ], + ) + ], + ), + Column( + crossAxisAlignment: CrossAxisAlignment + .start, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + AppText( + "Appointment #: ", + fontWeight: FontWeight + .bold, + fontSize: 16, + ), + AppText( + assessment + .appointmentId + .toString(), fontSize: 10, color: Colors.grey, ), - ), - ], - ) - ], - ), - Column( - children: [ - InkWell( - onTap: () { - openAssessmentDialog(context); - }, - child: Icon(EvaIcons - .edit2Outline), - ) - ], - ), - ], - ), - ) + ], + ), + Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + AppText( + assessment + .selectedDiagnosisCondition + .nameEn, + fontWeight: FontWeight + .bold, + fontSize: 16, + ), + ], + ), + Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + AppText( + "Type : ", + fontWeight: FontWeight + .bold, + fontSize: 16, + ), + AppText( + assessment + .selectedDiagnosisType + .nameEn, + fontSize: 10, + color: Colors.grey, + ), + ], + ), + if(assessment.doctorName != null) + Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + AppText( + "Doc : ", + fontWeight: FontWeight + .bold, + fontSize: 16, + ), + AppText( + assessment.doctorName??'', + fontSize: 10, + color: Colors.grey, + ), + ], + ), + SizedBox( + height: 6, + ), + Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + SizedBox( + height: 6, + ), + Container( + width: MediaQuery + .of(context) + .size + .width * 0.5, + child: AppText( + assessment.remark ?? "", + fontSize: 10, + color: Colors.grey, + ), + ), + ], + ), + ], + ), + Column( + crossAxisAlignment: CrossAxisAlignment + .start, + children: [ + Row( + + children: [ + AppText( + "ICD: ".toUpperCase(), + fontWeight: FontWeight + .bold, + fontSize: 16, + ), + Container( + child: AppText( + assessment.selectedICD + .code.trim() + .toUpperCase() ?? + "", + fontSize: 10, + color: Colors.grey, + ), + ), + ], + ) + ], + ), + Column( + children: [ + InkWell( + onTap: () { + openAssessmentDialog( + context, isUpdate: true, + assessment: assessment, + model: model); + }, + child: Icon(EvaIcons + .edit2Outline), + ) + ], + ), + ], + ), + ); + }).toList(),) ], ) ]), isExpand: isAssessmentExpand, ), - DividerWithSpacesAround( - height: 30, - ), - AppButton( - title: TranslationBase - .of(context) - .next, - loading: model.state == ViewState.BusyLocal, - onPressed: () async { - await submitAssessment(model); - }, - ), - SizedBox( - height: 30, - ), - ], + DividerWithSpacesAround( + height: 30, ), - ), + AppButton( + title: TranslationBase + .of(context) + .next, + loading: model.state == ViewState.BusyLocal, + onPressed: () async { + widget.changePageViewIndex(3); + }, + ), + SizedBox( + height: 30, + ), + ], ), - ))); + ), + ), + ))); } - submitAssessment(SOAPViewModel model) async { - if (widget.mySelectedAssessment.selectedDiagnosisCondition != null && - widget.mySelectedAssessment.selectedDiagnosisType != null && widget.mySelectedAssessment.selectedICD !=null ) { - - if(model.patientAssessmentList.isEmpty){ - PostAssessmentRequestModel postAssessmentRequestModel = - new PostAssessmentRequestModel( - patientMRN: widget.patientInfo.patientMRN, - episodeId: widget.patientInfo.episodeNo, - appointmentNo: widget.patientInfo.appointmentNo, - icdCodeDetails: [ - new IcdCodeDetails( - remarks: widget.mySelectedAssessment.remark, - complexDiagnosis: true, - conditionId: - widget.mySelectedAssessment.selectedDiagnosisCondition.id, - diagnosisTypeId: - widget.mySelectedAssessment.selectedDiagnosisType.id, - icdcode10Id: widget.mySelectedAssessment.selectedICD.code) - ]); - - await model.postAssessment(postAssessmentRequestModel); - } else { - PatchAssessmentReqModel patchAssessmentReqModel = - PatchAssessmentReqModel( - patientMRN: widget.patientInfo.patientMRN, - episodeID: widget.patientInfo.episodeNo, - appointmentNo: widget.patientInfo.appointmentNo, - remarks: widget.mySelectedAssessment.remark, - complexDiagnosis: true, - conditionId: - widget.mySelectedAssessment.selectedDiagnosisCondition.id, - diagnosisTypeId: - widget.mySelectedAssessment.selectedDiagnosisType.id, - icdcode10Id: widget.mySelectedAssessment.selectedICD.code, - prevIcdCode10ID: model.patientAssessmentList[0].icdCode10ID - ); - - await model.patchAssessment(patchAssessmentReqModel); - } - - if (model.state == ViewState.ErrorLocal) { - helpers.showErrorToast(model.error); - } else { - widget.changePageViewIndex(3); - } - } else { - helpers.showErrorToast(TranslationBase.of(context).requiredMsg); + openAssessmentDialog(BuildContext context, + { + MySelectedAssessment assessment, bool isUpdate, + SOAPViewModel model + }) { + if (assessment == null) { + assessment = MySelectedAssessment( + remark: '', appointmentId: widget.patientInfo.appointmentNo); } - - widget.changePageViewIndex(3); - } - - openAssessmentDialog(BuildContext context) { showModalBottomSheet( backgroundColor: Colors.white, isScrollControlled: true, context: context, builder: (context) { return AddAssessmentDetails( - mySelectedAssessment: widget.mySelectedAssessment, - addSelectedAssessment: () { + mySelectedAssessment: assessment, + patientInfo: widget.patientInfo, + isUpdate: isUpdate, + mySelectedAssessmentList: widget.mySelectedAssessmentList, + addSelectedAssessment: (MySelectedAssessment mySelectedAssessment, + bool isUpdate) async { setState(() { - Navigator.of(context).pop(); + }); }); }); @@ -428,32 +410,34 @@ class _UpdateAssessmentPageState extends State { class AddAssessmentDetails extends StatefulWidget { final MySelectedAssessment mySelectedAssessment; - final Function() addSelectedAssessment; + final List mySelectedAssessmentList; + final Function(MySelectedAssessment mySelectedAssessment, bool isUpdate) addSelectedAssessment; final PatiantInformtion patientInfo; - const AddAssessmentDetails( - {Key key, this.mySelectedAssessment, this.addSelectedAssessment, this.patientInfo}) - : super(key: key); + final bool isUpdate; + + AddAssessmentDetails( + {Key key, this.mySelectedAssessment, this.addSelectedAssessment, this.patientInfo, this.isUpdate = false, this.mySelectedAssessmentList}); + @override _AddAssessmentDetailsState createState() => _AddAssessmentDetailsState(); } class _AddAssessmentDetailsState extends State { - // MasterKeyModel _selectedDiagnosisCondition; - // MasterKeyModel _selectedDiagnosisType; TextEditingController remarkController = TextEditingController(); TextEditingController appointmentIdController = TextEditingController(); GlobalKey key = new GlobalKey>(); @override Widget build(BuildContext context) { - remarkController.text = widget.mySelectedAssessment.remark??""; - appointmentIdController.text = widget.mySelectedAssessment.appointmentId.toString(); + remarkController.text = widget.mySelectedAssessment.remark ?? ""; + appointmentIdController.text = + widget.mySelectedAssessment.appointmentId.toString(); final screenSize = MediaQuery .of(context) .size; InputDecoration textFieldSelectorDecoration(String hintText, - String selectedText, bool isDropDown,{IconData icon}) { + String selectedText, bool isDropDown, {IconData icon}) { //TODO: make one Input InputDecoration for all return InputDecoration( focusedBorder: OutlineInputBorder( @@ -686,16 +670,34 @@ class _AddAssessmentDetailsState extends State { ), AppButton( title: "Add".toUpperCase(), - onPressed: () { - setState(() { + loading: model.state == ViewState.BusyLocal, + onPressed: () async { widget.mySelectedAssessment.remark = remarkController.text; widget.mySelectedAssessment .appointmentId = int.parse( appointmentIdController.text); - - widget.addSelectedAssessment(); - }); + if (widget.mySelectedAssessment + .selectedDiagnosisCondition != + null && + widget.mySelectedAssessment + .selectedDiagnosisType != + null && + widget.mySelectedAssessment + .selectedICD != null) { + widget.addSelectedAssessment( + widget.mySelectedAssessment, + widget.isUpdate); + await submitAssessment( + isUpdate: widget.isUpdate, + model: model, + mySelectedAssessment: widget + .mySelectedAssessment); + } else { + helpers.showErrorToast(TranslationBase + .of(context) + .requiredMsg); + } }, ), ])), @@ -704,6 +706,61 @@ class _AddAssessmentDetailsState extends State { ))), ); } + + submitAssessment( + {SOAPViewModel model, MySelectedAssessment mySelectedAssessment, bool isUpdate = false}) async { + if (isUpdate) { + PatchAssessmentReqModel patchAssessmentReqModel = + PatchAssessmentReqModel( + patientMRN: widget.patientInfo.patientMRN, + episodeID: widget.patientInfo.episodeNo, + appointmentNo: widget.patientInfo.appointmentNo, + remarks: mySelectedAssessment.remark, + complexDiagnosis: true, + conditionId: + mySelectedAssessment.selectedDiagnosisCondition.id, + diagnosisTypeId: + mySelectedAssessment.selectedDiagnosisType.id, + icdcode10Id: mySelectedAssessment.selectedICD.code, + prevIcdCode10ID: mySelectedAssessment.icdCode10ID + ); + + await model.patchAssessment(patchAssessmentReqModel); + } else { + PostAssessmentRequestModel postAssessmentRequestModel = + new PostAssessmentRequestModel( + patientMRN: widget.patientInfo.patientMRN, + episodeId: widget.patientInfo.episodeNo, + appointmentNo: widget.patientInfo.appointmentNo, + icdCodeDetails: [ + new IcdCodeDetails( + remarks: mySelectedAssessment.remark, + complexDiagnosis: true, + conditionId: + mySelectedAssessment.selectedDiagnosisCondition.id, + diagnosisTypeId: + mySelectedAssessment.selectedDiagnosisType.id, + icdcode10Id: mySelectedAssessment.selectedICD.code) + ]); + + await model.postAssessment(postAssessmentRequestModel); + } + + + if (model.state == ViewState.ErrorLocal) { + helpers.showErrorToast(model.error); + } else { + mySelectedAssessment.icdCode10ID = mySelectedAssessment.selectedICD.code; + + if (!isUpdate) { + widget.mySelectedAssessmentList.add(mySelectedAssessment); + } + Navigator.of(context).pop(); + } + + + // widget.changePageViewIndex(3); + } } diff --git a/lib/widgets/patients/profile/soap_update/update_soap_index.dart b/lib/widgets/patients/profile/soap_update/update_soap_index.dart index 3b793d6a..84b8cc61 100644 --- a/lib/widgets/patients/profile/soap_update/update_soap_index.dart +++ b/lib/widgets/patients/profile/soap_update/update_soap_index.dart @@ -33,7 +33,7 @@ class _UpdateSoapIndexState extends State List myAllergiesList= List(); List myHistoryList = List(); List mySelectedExamination = List(); - MySelectedAssessment mySelectedAssessment = MySelectedAssessment(); + List mySelectedAssessment = List(); changePageViewIndex(pageIndex) { _controller.jumpToPage(pageIndex); } @@ -106,7 +106,7 @@ class _UpdateSoapIndexState extends State ), UpdateAssessmentPage( changePageViewIndex: changePageViewIndex, - mySelectedAssessment: + mySelectedAssessmentList: mySelectedAssessment, patientInfo: patient, ), From caddbdb53cd3307c68a55af9254f30c921f369f0 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Wed, 6 Jan 2021 18:33:17 +0200 Subject: [PATCH 7/7] small fixes in progress note --- lib/models/SOAP/GetAssessmentReqModel.dart | 6 +++++- lib/models/SOAP/GetGetProgressNoteReqModel.dart | 7 ++++++- .../SOAP/post_chief_complaint_request_model.dart | 5 +++++ .../SOAP/post_physical_exam_request_model.dart | 2 +- .../SOAP/post_progress_note_request_model.dart | 13 ++++++++++++- .../subjective/update_subjective_page.dart | 2 ++ .../soap_update/update_assessment_page.dart | 2 ++ .../profile/soap_update/update_plan_page.dart | 14 +++++++------- 8 files changed, 40 insertions(+), 11 deletions(-) diff --git a/lib/models/SOAP/GetAssessmentReqModel.dart b/lib/models/SOAP/GetAssessmentReqModel.dart index 1085bf8c..965382b5 100644 --- a/lib/models/SOAP/GetAssessmentReqModel.dart +++ b/lib/models/SOAP/GetAssessmentReqModel.dart @@ -5,7 +5,8 @@ class GetAssessmentReqModel { String from; String to; int clinicID; - int doctorID; + dynamic doctorID; + dynamic editedBy; GetAssessmentReqModel( {this.patientMRN, @@ -14,6 +15,7 @@ class GetAssessmentReqModel { this.from, this.to, this.clinicID, + this.editedBy, this.doctorID}); GetAssessmentReqModel.fromJson(Map json) { @@ -24,6 +26,7 @@ class GetAssessmentReqModel { to = json['To']; clinicID = json['ClinicID']; doctorID = json['DoctorID']; + editedBy = json['EditedBy']; } Map toJson() { @@ -35,6 +38,7 @@ class GetAssessmentReqModel { data['To'] = this.to; data['ClinicID'] = this.clinicID; data['DoctorID'] = this.doctorID; + data['EditedBy'] = this.editedBy; return data; } } diff --git a/lib/models/SOAP/GetGetProgressNoteReqModel.dart b/lib/models/SOAP/GetGetProgressNoteReqModel.dart index 936c6f65..1da4a8bf 100644 --- a/lib/models/SOAP/GetGetProgressNoteReqModel.dart +++ b/lib/models/SOAP/GetGetProgressNoteReqModel.dart @@ -5,7 +5,8 @@ class GetGetProgressNoteReqModel { String from; String to; int clinicID; - int doctorID; + dynamic doctorID; + dynamic editedBy; GetGetProgressNoteReqModel( {this.patientMRN, @@ -14,6 +15,7 @@ class GetGetProgressNoteReqModel { this.from, this.to, this.clinicID, + this.editedBy, this.doctorID}); GetGetProgressNoteReqModel.fromJson(Map json) { @@ -24,6 +26,8 @@ class GetGetProgressNoteReqModel { to = json['To']; clinicID = json['ClinicID']; doctorID = json['DoctorID']; + editedBy = json['EditedBy']; + } Map toJson() { @@ -35,6 +39,7 @@ class GetGetProgressNoteReqModel { data['To'] = this.to; data['ClinicID'] = this.clinicID; data['DoctorID'] = this.doctorID; + data['EditedBy'] = this.editedBy; return data; } } diff --git a/lib/models/SOAP/post_chief_complaint_request_model.dart b/lib/models/SOAP/post_chief_complaint_request_model.dart index ed58e58a..f1e9c2b4 100644 --- a/lib/models/SOAP/post_chief_complaint_request_model.dart +++ b/lib/models/SOAP/post_chief_complaint_request_model.dart @@ -9,6 +9,8 @@ class PostChiefComplaintRequestModel { bool isLactation; int numberOfWeeks; dynamic doctorID; + dynamic editedBy; + PostChiefComplaintRequestModel( {this.appointmentNo, @@ -20,6 +22,7 @@ class PostChiefComplaintRequestModel { this.ispregnant, this.isLactation, this.doctorID, + this.editedBy, this.numberOfWeeks}); PostChiefComplaintRequestModel.fromJson(Map json) { @@ -33,6 +36,7 @@ class PostChiefComplaintRequestModel { isLactation = json['isLactation']; numberOfWeeks = json['numberOfWeeks']; doctorID = json['DoctorID']; + editedBy = json['EditedBy']; } Map toJson() { @@ -47,6 +51,7 @@ class PostChiefComplaintRequestModel { data['isLactation'] = this.isLactation; data['numberOfWeeks'] = this.numberOfWeeks; data['DoctorID'] = this.doctorID; + data['EditedBy'] = this.editedBy; return data; } diff --git a/lib/models/SOAP/post_physical_exam_request_model.dart b/lib/models/SOAP/post_physical_exam_request_model.dart index adc8daf7..46a104f1 100644 --- a/lib/models/SOAP/post_physical_exam_request_model.dart +++ b/lib/models/SOAP/post_physical_exam_request_model.dart @@ -1,4 +1,4 @@ -import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart'; + import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart'; class PostPhysicalExamRequestModel { List listHisProgNotePhysicalExaminationVM; diff --git a/lib/models/SOAP/post_progress_note_request_model.dart b/lib/models/SOAP/post_progress_note_request_model.dart index 069f4dbf..2925819d 100644 --- a/lib/models/SOAP/post_progress_note_request_model.dart +++ b/lib/models/SOAP/post_progress_note_request_model.dart @@ -3,15 +3,24 @@ class PostProgressNoteRequestModel { int episodeId; int patientMRN; String planNote; + dynamic doctorID; + dynamic editedBy; PostProgressNoteRequestModel( - {this.appointmentNo, this.episodeId, this.patientMRN, this.planNote}); + {this.appointmentNo, + this.episodeId, + this.patientMRN, + this.planNote, + this.doctorID, + this.editedBy}); PostProgressNoteRequestModel.fromJson(Map json) { appointmentNo = json['AppointmentNo']; episodeId = json['EpisodeID']; patientMRN = json['PatientMRN']; planNote = json['PlanNote']; + doctorID = json['DoctorID']; + editedBy = json['EditedBy']; } Map toJson() { @@ -20,6 +29,8 @@ class PostProgressNoteRequestModel { data['EpisodeID'] = this.episodeId; data['PatientMRN'] = this.patientMRN; data['PlanNote'] = this.planNote; + data['DoctorID'] = this.doctorID; + data['EditedBy'] = this.editedBy; return data; } } diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart index 4370df4f..de5d2d68 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart @@ -554,9 +554,11 @@ class _UpdateSubjectivePageState extends State { isLactation: false, ispregnant: false, doctorID: '', + numberOfWeeks: 0); if (model.patientChiefComplaintList.isEmpty) { // TODO: make it postChiefComplaint after it start to work + postChiefComplaintRequestModel.editedBy=''; await model.postChiefComplaint(postChiefComplaintRequestModel); } else { await model.patchChiefComplaint(postChiefComplaintRequestModel); diff --git a/lib/widgets/patients/profile/soap_update/update_assessment_page.dart b/lib/widgets/patients/profile/soap_update/update_assessment_page.dart index 1a38de87..10bfc120 100644 --- a/lib/widgets/patients/profile/soap_update/update_assessment_page.dart +++ b/lib/widgets/patients/profile/soap_update/update_assessment_page.dart @@ -49,6 +49,8 @@ class _UpdateAssessmentPageState extends State { GetAssessmentReqModel getAssessmentReqModel = GetAssessmentReqModel( patientMRN: widget.patientInfo.patientMRN, episodeID: widget.patientInfo.episodeNo.toString(), + editedBy: '', + doctorID: '', appointmentNo: widget.patientInfo.appointmentNo); await model.getPatientAssessment(getAssessmentReqModel); if(model.patientAssessmentList.isNotEmpty){ diff --git a/lib/widgets/patients/profile/soap_update/update_plan_page.dart b/lib/widgets/patients/profile/soap_update/update_plan_page.dart index 9c851cd5..a91447d6 100644 --- a/lib/widgets/patients/profile/soap_update/update_plan_page.dart +++ b/lib/widgets/patients/profile/soap_update/update_plan_page.dart @@ -59,7 +59,7 @@ class _UpdatePlanPageState extends State { GetGetProgressNoteReqModel( appointmentNo: widget.patientInfo.appointmentNo, patientMRN: widget.patientInfo.patientMRN, - episodeID: widget.patientInfo.episodeNo.toString()); + episodeID: widget.patientInfo.episodeNo.toString(), editedBy: '', doctorID: ''); await model.getPatientProgressNote(getGetProgressNoteReqModel); if (model.patientProgressNoteList.isNotEmpty) { @@ -285,15 +285,15 @@ class _UpdatePlanPageState extends State { patientMRN: widget.patientInfo.patientMRN, episodeId: widget.patientInfo.episodeNo, appointmentNo: widget.patientInfo.appointmentNo, - planNote: progressNoteController.text); + planNote: progressNoteController.text, doctorID: '', editedBy: ''); - if(model.patientProgressNoteList.isEmpty){ + // if(model.patientProgressNoteList.isEmpty){ await model.postProgressNote(postProgressNoteRequestModel); - }else { - await model.patchProgressNote(postProgressNoteRequestModel); - - } + // }else { + // await model.patchProgressNote(postProgressNoteRequestModel); + // + // } if (model.state == ViewState.ErrorLocal) { helpers.showErrorToast(model.error);