diff --git a/lib/core/viewModel/patient_view_model.dart b/lib/core/viewModel/patient_view_model.dart index e06b0d9d..3a45036e 100644 --- a/lib/core/viewModel/patient_view_model.dart +++ b/lib/core/viewModel/patient_view_model.dart @@ -141,12 +141,21 @@ class PatientViewModel extends BaseViewModel { setState(ViewState.Idle); } - Future getPatientProgressNote(patient) async { - setState(ViewState.Busy); + Future getPatientProgressNote(patient, {bool isLocalBusy = false}) async { + if(isLocalBusy) { + setState(ViewState.BusyLocal); + }else{ + setState(ViewState.Busy); + } + await _patientService.getPatientProgressNote(patient); if (_patientService.hasError) { error = _patientService.error; - setState(ViewState.Error); + if(isLocalBusy) { + setState(ViewState.ErrorLocal); + }else{ + setState(ViewState.Error); + } } else setState(ViewState.Idle); } diff --git a/lib/screens/doctor/doctor_repaly_chat.dart b/lib/screens/doctor/doctor_repaly_chat.dart index 46c61001..b5576e69 100644 --- a/lib/screens/doctor/doctor_repaly_chat.dart +++ b/lib/screens/doctor/doctor_repaly_chat.dart @@ -63,22 +63,24 @@ class DoctorReplayChat extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - RichText( - text: TextSpan( - style: TextStyle( - fontSize: 1.6 * - SizeConfig.textMultiplier, - color: Colors.black), - children: [ - new TextSpan( - text: reply.patientName - .toString(), - style: TextStyle( - color: Color(0xFF2B353E), - fontWeight: FontWeight.bold, - fontFamily: 'Poppins', - fontSize: 20)), - ], + Expanded( + child: RichText( + text: TextSpan( + style: TextStyle( + fontSize: 1.6 * + SizeConfig.textMultiplier, + color: Colors.black), + children: [ + new TextSpan( + text: reply.patientName + .toString(), + style: TextStyle( + color: Color(0xFF2B353E), + fontWeight: FontWeight.bold, + fontFamily: 'Poppins', + fontSize: 20)), + ], + ), ), ), InkWell( diff --git a/lib/screens/patients/profile/note/progress_note_screen.dart b/lib/screens/patients/profile/note/progress_note_screen.dart index fedbfc56..5b806d4e 100644 --- a/lib/screens/patients/profile/note/progress_note_screen.dart +++ b/lib/screens/patients/profile/note/progress_note_screen.dart @@ -9,15 +9,12 @@ import 'package:doctor_app_flutter/util/date-utils.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/add-order/addNewOrder.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart'; -import 'package:doctor_app_flutter/widgets/patients/profile/patient_profile_header_with_appointment_card_app_bar.dart'; import 'package:doctor_app_flutter/widgets/shared/errors/dr_app_embedded_error.dart'; import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:hexcolor/hexcolor.dart'; import '../../../../config/shared_pref_kay.dart'; -import '../../../../config/size_config.dart'; import '../../../../models/patient/patiant_info_model.dart'; import '../../../../util/dr_app_shared_pref.dart'; import '../../../../widgets/shared/app_scaffold_widget.dart'; @@ -40,7 +37,7 @@ class _ProgressNoteState extends State { final _controller = TextEditingController(); var _isInit = true; - getProgressNoteList(BuildContext context, PatientViewModel model) async { + getProgressNoteList(BuildContext context, PatientViewModel model, {bool isLocalBusy = false}) async { final routeArgs = ModalRoute.of(context).settings.arguments as Map; PatiantInformtion patient = routeArgs['patient']; String token = await sharedPref.getString(TOKEN); @@ -55,7 +52,7 @@ class _ProgressNoteState extends State { tokenID: token, patientTypeID: patient.patientType, languageID: 2); - model.getPatientProgressNote(progressNoteRequest.toJson()).then((c) { + model.getPatientProgressNote(progressNoteRequest.toJson(), isLocalBusy: isLocalBusy).then((c) { notesList = model.patientProgressNoteList; }); } @@ -114,22 +111,223 @@ class _ProgressNoteState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ + if (notesList[index].status != 2 && + notesList[index].status != 4) + Row( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + InkWell( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => + UpdateNoteOrder( + note: notesList[ + index], + patientModel: + model, + patient: patient, + visitType: widget + .visitType, + isUpdate: true, + )), + ); + }, + child: Container( + decoration: BoxDecoration( + color: Colors.green[600], + borderRadius: + BorderRadius.circular( + 10), + ), + // color:Colors.red[600], + + child: Row( + children: [ + Icon( + DoctorApp.edit_1, + size: 12, + color: Colors.white, + ), + SizedBox( + width: 2, + ), + AppText( + 'Update', + fontSize: 10, + color: Colors.white, + ), + ], + ), + padding: EdgeInsets.all(6), + ), + ), + SizedBox( + width: 10, + ), + InkWell( + onTap: () async { + showMyDialog( + context: context, + confirmFun: () async { + GifLoaderDialogUtils + .showMyDialog( + context, + ); + UpdateNoteReqModel + reqModel = + UpdateNoteReqModel( + admissionNo: + int.parse(patient + .admissionNo), + cancelledNote: true, + lineItemNo: + notesList[index] + .lineItemNo, + createdBy: + notesList[index] + .createdBy, + notes: + notesList[index] + .notes, + verifiedNote: false, + patientTypeID: patient + .patientType, + patientOutSA: false, + ); + await model + .updatePatientProgressNote( + reqModel); + await getProgressNoteList( + context, model, isLocalBusy: true); + GifLoaderDialogUtils + .hideDialog( + context); + }); + }, + child: Container( + decoration: BoxDecoration( + color: Colors.red[600], + borderRadius: + BorderRadius.circular( + 10), + ), + // color:Colors.red[600], + + child: Row( + children: [ + Icon( + FontAwesomeIcons.trash, + size: 12, + color: Colors.white, + ), + SizedBox( + width: 2, + ), + AppText( + 'Cancel', + fontSize: 10, + color: Colors.white, + ), + ], + ), + padding: EdgeInsets.all(6), + ), + ), + SizedBox( + width: 10, + ), + InkWell( + onTap: () async { + showMyDialog(context: context, confirmFun: () async{ + GifLoaderDialogUtils + .showMyDialog(context); + UpdateNoteReqModel reqModel = + UpdateNoteReqModel( + admissionNo: int.parse( + patient.admissionNo), + cancelledNote: false, + lineItemNo: notesList[index] + .lineItemNo, + createdBy: notesList[index] + .createdBy, + notes: + notesList[index].notes, + verifiedNote: true, + patientTypeID: + patient.patientType, + patientOutSA: false, + ); + await model + .updatePatientProgressNote( + reqModel); + await getProgressNoteList( + context, model, isLocalBusy: true); + GifLoaderDialogUtils + .hideDialog(context); + }); + }, + child: Container( + decoration: BoxDecoration( + color: Colors.grey[600], + borderRadius: + BorderRadius.circular( + 10), + ), + // color:Colors.red[600], + + child: Row( + children: [ + Icon( + FontAwesomeIcons.check, + size: 12, + color: Colors.white, + ), + SizedBox( + width: 2, + ), + AppText( + 'Verify', + fontSize: 10, + color: Colors.white, + ), + ], + ), + padding: EdgeInsets.all(6), + ), + ), + SizedBox( + width: 10, + ) + ], + ), + SizedBox( + height: 10, + ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Container( - width: MediaQuery.of(context).size.width * 0.65, + width: MediaQuery.of(context) + .size + .width * + 0.65, child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.start, children: [ Row( - crossAxisAlignment: CrossAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment + .start, children: [ - AppText('Created By: ', + AppText( + 'Created By: ', fontSize: 10, ), Expanded( @@ -138,8 +336,12 @@ class _ProgressNoteState extends State { ), ], ), + if(notesList[index].status == 4) AppText( - notesList[index].status == 4?'Canceled':'',fontWeight: FontWeight.w600, color: Colors.red.shade700,fontSize: 12,), + 'Canceled',fontWeight: FontWeight.w600, color: Colors.red.shade700,fontSize: 12,), + if(notesList[index].status == 2) + AppText( + 'verified',fontWeight: FontWeight.w600, color: Colors.grey.shade700,fontSize: 12,), ], ), ), @@ -179,18 +381,6 @@ class _ProgressNoteState extends State { SizedBox( height: 8, ), - Row( - mainAxisAlignment: - MainAxisAlignment.start, - children: [ - Expanded( - child: AppText( - notesList[index].notes, - fontSize: 10, - ), - ), - ], - ), ], ), ), @@ -204,63 +394,84 @@ class _ProgressNoteState extends State { ), ), ], - ), - ), + ), + ), ), ); } - InputDecoration buildInputDecoration(BuildContext context, hint) { - return InputDecoration( - prefixIcon: Icon(Icons.search, color: Colors.black), - filled: true, - fillColor: Colors.white, - hintText: hint, - hintStyle: TextStyle(fontSize: 2 * SizeConfig.textMultiplier), - enabledBorder: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(10)), - borderSide: BorderSide(color: HexColor('#CCCCCC')), - ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(10.0)), - borderSide: BorderSide(color: Colors.grey), //), + showMyDialog({BuildContext context, Function confirmFun, isCancel = true}) { + showDialog( + context: context, + child: Center( + child: Container( + width: MediaQuery + .of(context) + .size + .width * 0.8, + height: MediaQuery + .of(context) + .size + .height * 0.5, + child: AppScaffold( + isShowAppBar: false, + body: Container( + color: Colors.white, + + child: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + // SizedBox(height: 20,), + Container( + padding: EdgeInsets.all(20), + color: Colors.white, + child: Expanded( + child: AppText( + 'Are you sure you want to do this action?', + fontSize: 15, + textAlign: TextAlign.center, + ), + ), + ), + SizedBox(height: MediaQuery + .of(context) + .size + .height * 0.2,), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + FlatButton( + child: AppText( + "Cancel", fontWeight: FontWeight.w600, + color: Colors.black, + fontSize: 16,),//Text("Cancel"), + onPressed: () { + Navigator.of(context).pop(); + }), + FlatButton( + child: AppText( + "Confirm", fontWeight: FontWeight.w600, + color: Colors.red.shade700, + fontSize: 16,), //Text("Confirm", ), + onPressed: () async { + await confirmFun(); + Navigator.of(context).pop(); + }) + + ], + ) + ], + ), + ), + ), + ), + ), )); } - // searchData(String str, PatientViewModel model) { - // var strExist = str.length > 0 ? true : false; - // - // if (strExist) { - // filteredNotesList = null; - // filteredNotesList = model.patientProgressNoteList - // .where((note) => - // note["DoctorName"].toString().contains(str.toUpperCase())) - // .toList(); - // setState(() { - // notesList = filteredNotesList; - // }); - // } else { - // setState(() { - // notesList = model.patientProgressNoteList; - // }); - // } - // } - - convertDateFormat(String str) { - const start = "/Date("; - const end = "+0300)"; - final startIndex = str.indexOf(start); - final endIndex = str.indexOf(end, startIndex + start.length); - var date = new DateTime.fromMillisecondsSinceEpoch( - int.parse(str.substring(startIndex + start.length, endIndex))); - String newDate = date.year.toString() + - "-" + - date.month.toString().padLeft(2, '0') + - "-" + - date.day.toString().padLeft(2, '0'); - return newDate.toString(); - } } diff --git a/lib/screens/patients/profile/note/update_note.dart b/lib/screens/patients/profile/note/update_note.dart index 5f3ef251..90b94ab3 100644 --- a/lib/screens/patients/profile/note/update_note.dart +++ b/lib/screens/patients/profile/note/update_note.dart @@ -8,7 +8,6 @@ import 'package:doctor_app_flutter/core/viewModel/patient_view_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/models/patient/progress_note_request.dart'; -import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/bottom_sheet_title.dart'; import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; @@ -69,8 +68,8 @@ class _UpdateNoteOrderState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ BottomSheetTitle(title: widget.visitType == 3 - ? 'Add Order Sheet' - : 'Add Progress Note',), + ? (widget.isUpdate?'Update':'Add')+' Order Sheet' + : (widget.isUpdate?'Update':'Add')+' Progress Note',), SizedBox( height: 10.0, ), @@ -82,12 +81,12 @@ class _UpdateNoteOrderState extends State { children: [ AppTextFieldCustom( hintText: widget.visitType == 3 - ? 'Add Order Sheet' - : 'Add Progress Note', + ? (widget.isUpdate?'Update':'Add')+' Order Sheet' + : (widget.isUpdate?'Update':'Add')+' Progress Note', //TranslationBase.of(context).addProgressNote, controller: progressNoteController, - maxLines: 25, - minLines: 10, + maxLines: 35, + minLines: 25, hasBorder: true, validationError:progressNoteController.text.isEmpty&&isSubmitted?TranslationBase.of(context).emptyMessage:null , @@ -109,8 +108,8 @@ class _UpdateNoteOrderState extends State { children: [ AppButton( title: widget.visitType == 3 - ? 'Add Order Sheet' - : 'Add Progress Note', + ? (widget.isUpdate?'Update':'Add')+' Order Sheet' + : (widget.isUpdate?'Update':'Add')+' Progress Note', color: Color(0xff359846), // disabled: progressNoteController.text.isEmpty, fontWeight: FontWeight.w700, @@ -131,11 +130,10 @@ class _UpdateNoteOrderState extends State { admissionNo: int.parse(widget.patient .admissionNo), cancelledNote: false, - lineItemNo: 30, + lineItemNo: widget.note.lineItemNo, createdBy: widget.note.createdBy, - notes: progressNoteController.text + notes: progressNoteController.text, - , verifiedNote: false, patientTypeID: widget.patient.patientType, @@ -179,11 +177,12 @@ class _UpdateNoteOrderState extends State { GifLoaderDialogUtils.hideDialog(context); Navigator.of(context).pop(); } - } - ), + }), ], ), ), ); } + + } diff --git a/lib/screens/procedures/ProcedureCard.dart b/lib/screens/procedures/ProcedureCard.dart index 0f865701..5684f527 100644 --- a/lib/screens/procedures/ProcedureCard.dart +++ b/lib/screens/procedures/ProcedureCard.dart @@ -57,7 +57,7 @@ class ProcedureCard extends StatelessWidget { bottomLeft: Radius.circular(10), ), color: - entityList.orderType == 1 ? Colors.red[500] : Colors.black, + entityList.orderType == 0 ? Colors.black : Colors.red[500], ), ), Expanded(