Fix issue on procedure_card.dart

merge-requests/994/head
Elham Rababh 4 years ago
parent 70573d190a
commit 1a3ad32aa5

@ -7,7 +7,8 @@ import 'package:doctor_app_flutter/core/model/labs/patient_lab_orders.dart';
import 'package:doctor_app_flutter/core/model/labs/patient_lab_special_result.dart'; import 'package:doctor_app_flutter/core/model/labs/patient_lab_special_result.dart';
import 'package:doctor_app_flutter/core/model/procedure/ControlsModel.dart'; import 'package:doctor_app_flutter/core/model/procedure/ControlsModel.dart';
import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart'; import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart';
import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart' as cpe; import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart'
as cpe;
import 'package:doctor_app_flutter/core/model/procedure/get_ordered_procedure_model.dart'; import 'package:doctor_app_flutter/core/model/procedure/get_ordered_procedure_model.dart';
import 'package:doctor_app_flutter/core/model/procedure/post_procedure_req_model.dart'; import 'package:doctor_app_flutter/core/model/procedure/post_procedure_req_model.dart';
import 'package:doctor_app_flutter/core/model/procedure/procedure_templateModel.dart'; import 'package:doctor_app_flutter/core/model/procedure/procedure_templateModel.dart';
@ -71,10 +72,17 @@ class ProcedureViewModel extends BaseViewModel {
List<ProcedureTempleteDetailsModel> get procedureTemplateDetails => List<ProcedureTempleteDetailsModel> get procedureTemplateDetails =>
_procedureService.templateDetailsList; _procedureService.templateDetailsList;
Future getProcedure({int mrn, String patientType, int appointmentNo}) async { Future getProcedure(
{int mrn,
String patientType,
int appointmentNo,
bool isLocalBusy = false}) async {
hasError = false; hasError = false;
await getDoctorProfile(); await getDoctorProfile();
setState(ViewState.Busy); if (isLocalBusy)
setState(ViewState.BusyLocal);
else
setState(ViewState.Busy);
await _procedureService.getProcedure( await _procedureService.getProcedure(
mrn: mrn, appointmentNo: appointmentNo); mrn: mrn, appointmentNo: appointmentNo);
if (_procedureService.hasError) { if (_procedureService.hasError) {
@ -88,10 +96,16 @@ class ProcedureViewModel extends BaseViewModel {
} }
Future getProcedureCategory( Future getProcedureCategory(
{String categoryName, String categoryID, patientId}) async { {String categoryName,
String categoryID,
patientId,
bool isLocalBusy = false}) async {
if (categoryName == null) return; if (categoryName == null) return;
hasError = false; hasError = false;
setState(ViewState.Busy); if (isLocalBusy)
setState(ViewState.BusyLocal);
else
setState(ViewState.Busy);
await _procedureService.getProcedureCategory( await _procedureService.getProcedureCategory(
categoryName: categoryName, categoryName: categoryName,
categoryID: categoryID, categoryID: categoryID,
@ -115,19 +129,23 @@ class ProcedureViewModel extends BaseViewModel {
setState(ViewState.Idle); setState(ViewState.Idle);
} }
Future getProcedureTemplate({String categoryID, bool isLocalBusy = false, BuildContext context}) async { Future getProcedureTemplate(
{String categoryID,
bool isLocalBusy = false,
BuildContext context}) async {
if (isLocalBusy) { if (isLocalBusy) {
setState(ViewState.BusyLocal); setState(ViewState.BusyLocal);
} else { } else {
setState(ViewState.Busy); setState(ViewState.Busy);
} }
await _procedureService.getProcedureTemplate(categoryID: categoryID, isLocalBusy: false); await _procedureService.getProcedureTemplate(
categoryID: categoryID, isLocalBusy: false);
if (_procedureService.hasError) { if (_procedureService.hasError) {
error = _procedureService.error; error = _procedureService.error;
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);
} else } else
setTemplateListDependOnId(); setTemplateListDependOnId();
setState(ViewState.Idle); setState(ViewState.Idle);
} }
setTemplateListDependOnId() { setTemplateListDependOnId() {
@ -167,27 +185,33 @@ class ProcedureViewModel extends BaseViewModel {
setState(ViewState.Idle); setState(ViewState.Idle);
} }
Future postProcedure( Future postProcedure(PostProcedureReqModel postProcedureReqModel, int mrn,
PostProcedureReqModel postProcedureReqModel, int mrn, {bool isLocalBusy = false}) async { {bool isLocalBusy = false}) async {
hasError = false; hasError = false;
if(isLocalBusy) setState(ViewState.BusyLocal); else if (isLocalBusy)
setState(ViewState.Busy); setState(ViewState.BusyLocal);
else
setState(ViewState.Busy);
await _procedureService.postProcedure(postProcedureReqModel); await _procedureService.postProcedure(postProcedureReqModel);
if (_procedureService.hasError) { if (_procedureService.hasError) {
error = _procedureService.error; error = _procedureService.error;
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);
} else { } else {
await getProcedure(mrn: mrn); await getProcedure(mrn: mrn, isLocalBusy:isLocalBusy);
setState(ViewState.Idle); setState(ViewState.Idle);
} }
} }
Future validationProcedure( Future validationProcedure(
ProcedureValidationRequestModel procedureValadteRequestModel) async { ProcedureValidationRequestModel procedureValidateRequestModel,
{bool isLocalBusy = false}) async {
hasError = false; hasError = false;
//_insuranceCardService.clearInsuranceCard(); if (isLocalBusy) {
setState(ViewState.Busy); setState(ViewState.BusyLocal);
await _procedureService.validationProcedure(procedureValadteRequestModel); } else {
setState(ViewState.Busy);
}
await _procedureService.validationProcedure(procedureValidateRequestModel);
if (_procedureService.hasError) { if (_procedureService.hasError) {
error = _procedureService.error; error = _procedureService.error;
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);
@ -366,15 +390,14 @@ class ProcedureViewModel extends BaseViewModel {
DrAppToastMsg.showSuccesToast(mes); DrAppToastMsg.showSuccesToast(mes);
} }
Future preparePostProcedure( Future preparePostProcedure({
{String remarks, String remarks,
String orderType, String orderType,
PatiantInformtion patient, PatiantInformtion patient,
List<cpe.EntityList> entityList, List<cpe.EntityList> entityList,
ProcedureType procedureType, ProcedureType procedureType,
bool isLocalBusy = false, bool isLocalBusy = false,
}) async { }) async {
///TODO Roaa Move it to function ///TODO Roaa Move it to function
if (isLocalBusy) { if (isLocalBusy) {
setState(ViewState.BusyLocal); setState(ViewState.BusyLocal);
@ -416,19 +439,21 @@ class ProcedureViewModel extends BaseViewModel {
}); });
postProcedureReqModel.procedures = controlsProcedure; postProcedureReqModel.procedures = controlsProcedure;
await validationProcedure(procedureValadteRequestModel); await validationProcedure(procedureValadteRequestModel,
isLocalBusy: isLocalBusy);
if (state == ViewState.Idle) { if (state == ViewState.Idle) {
if (valadteProcedureList[0].entityList.length == 0) { if (valadteProcedureList[0].entityList.length == 0) {
await postProcedure(postProcedureReqModel, patient.patientMRN, isLocalBusy:isLocalBusy); await postProcedure(postProcedureReqModel, patient.patientMRN,
isLocalBusy: isLocalBusy);
if (state == ViewState.ErrorLocal) { if (state == ViewState.ErrorLocal) {
Utils.showErrorToast(error); Utils.showErrorToast(error);
getProcedure(mrn: patient.patientMRN); getProcedure(mrn: patient.patientMRN, isLocalBusy: isLocalBusy);
} else if (state == ViewState.Idle) { } else if (state == ViewState.Idle) {
DrAppToastMsg.showSuccesToast('procedure has been added'); DrAppToastMsg.showSuccesToast('procedure has been added');
if(Navigator.canPop(AppGlobal.CONTEX)) if (Navigator.canPop(AppGlobal.CONTEX))
Navigator.pop(AppGlobal.CONTEX); Navigator.pop(AppGlobal.CONTEX);
if(Navigator.canPop(AppGlobal.CONTEX)) if (Navigator.canPop(AppGlobal.CONTEX))
Navigator.pop(AppGlobal.CONTEX); Navigator.pop(AppGlobal.CONTEX);
} }
} else { } else {
@ -445,18 +470,21 @@ class ProcedureViewModel extends BaseViewModel {
} }
} }
bool isEntityListSelected(cpe.EntityList masterKey, List<cpe.EntityList> entityList) { bool isEntityListSelected(
Iterable<cpe.EntityList> history = entityList.where((element) => masterKey.procedureId == element.procedureId); cpe.EntityList masterKey, List<cpe.EntityList> entityList) {
Iterable<cpe.EntityList> history = entityList
.where((element) => masterKey.procedureId == element.procedureId);
if (history.length > 0) { if (history.length > 0) {
return true; return true;
} }
return false; return false;
} }
bool isProcedureEntityListSelected(ProcedureTempleteDetailsModel masterKey, List<ProcedureTempleteDetailsModel> entityList) { bool isProcedureEntityListSelected(ProcedureTempleteDetailsModel masterKey,
List<ProcedureTempleteDetailsModel> entityList) {
Iterable<ProcedureTempleteDetailsModel> history = entityList.where( Iterable<ProcedureTempleteDetailsModel> history = entityList.where(
(element) => (element) =>
masterKey.templateID == element.templateID && masterKey.templateID == element.templateID &&
masterKey.procedureName == element.procedureName); masterKey.procedureName == element.procedureName);
if (history.length > 0) { if (history.length > 0) {
return true; return true;
@ -464,12 +492,12 @@ class ProcedureViewModel extends BaseViewModel {
return false; return false;
} }
Future addProcedures(
ProcedureViewModel model,
Future addProcedures(ProcedureViewModel model,
List<ProcedureTempleteDetailsModel> items, List<ProcedureTempleteDetailsModel> items,
PatiantInformtion patient, PatiantInformtion patient,
TextEditingController remarksController,{bool isLocalBusy = false}) async { TextEditingController remarksController,
{bool isLocalBusy = false}) async {
if (isLocalBusy) { if (isLocalBusy) {
setState(ViewState.BusyLocal); setState(ViewState.BusyLocal);
} else { } else {
@ -493,11 +521,12 @@ class ProcedureViewModel extends BaseViewModel {
await model.preparePostProcedure( await model.preparePostProcedure(
entityList: entityList, entityList: entityList,
patient: patient, patient: patient,
remarks: remarksController.text, isLocalBusy: isLocalBusy); remarks: remarksController.text,
isLocalBusy: isLocalBusy);
} }
Future filterSearchResults(String query,List<cpe.EntityList> masterList, List<cpe.EntityList> items) async { Future filterSearchResults(String query, List<cpe.EntityList> masterList,
List<cpe.EntityList> items) async {
List<cpe.EntityList> dummySearchList = List(); List<cpe.EntityList> dummySearchList = List();
dummySearchList.addAll(masterList); dummySearchList.addAll(masterList);
if (query.isNotEmpty) { if (query.isNotEmpty) {
@ -515,7 +544,10 @@ class ProcedureViewModel extends BaseViewModel {
} }
} }
void filterProcedureSearchResults(String query, List<ProcedureTempleteModel> masterList, List<ProcedureTempleteModel> items) { void filterProcedureSearchResults(
String query,
List<ProcedureTempleteModel> masterList,
List<ProcedureTempleteModel> items) {
List<ProcedureTempleteModel> dummySearchList = List(); List<ProcedureTempleteModel> dummySearchList = List();
dummySearchList.addAll(masterList); dummySearchList.addAll(masterList);
if (query.isNotEmpty) { if (query.isNotEmpty) {
@ -525,12 +557,12 @@ class ProcedureViewModel extends BaseViewModel {
dummyListData.add(item); dummyListData.add(item);
} }
}); });
items.clear(); items.clear();
items.addAll(dummyListData); items.addAll(dummyListData);
return; return;
} else { } else {
items.clear(); items.clear();
items.addAll(masterList); items.addAll(masterList);
} }
} }
} }

@ -1,4 +1,5 @@
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/view_state.dart';
import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart'; import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart';
import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart'; import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart';
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
@ -6,6 +7,7 @@ import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/procedures/procedure_type.dart'; import 'package:doctor_app_flutter/screens/procedures/procedure_type.dart';
import 'package:doctor_app_flutter/utils/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/utils/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart'; import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
import 'package:doctor_app_flutter/widgets/bottom_sheet/custom_bottom_sheet_container.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_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/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
@ -118,18 +120,33 @@ class _AddProcedurePageState extends State<AddProcedurePage> {
), ),
Expanded( Expanded(
child: InkWell( child: InkWell(
onTap: () { onTap: () async {
if (procedureName.text.isNotEmpty && if (procedureName.text.isNotEmpty &&
procedureName.text.length >= 3) procedureName.text.length >= 3) {
model.getProcedureCategory( GifLoaderDialogUtils.showMyDialog(context);
await model.getProcedureCategory(
patientId: patient.patientId, patientId: patient.patientId,
categoryName: categoryName:
procedureName.text); procedureName.text,
else isLocalBusy: true
);
if(model.state == ViewState.ErrorLocal){
DrAppToastMsg.showErrorToast(
model.error
);
}
GifLoaderDialogUtils.hideDialog(context);
}
else {
DrAppToastMsg.showErrorToast( DrAppToastMsg.showErrorToast(
TranslationBase.of(context) TranslationBase.of(context)
.atLeastThreeCharacters, .atLeastThreeCharacters,
); );
}
}, },
child: Icon( child: Icon(
Icons.search, Icons.search,
@ -172,43 +189,35 @@ class _AddProcedurePageState extends State<AddProcedurePage> {
), ),
), ),
), ),
Container(
margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5),
child: Wrap(
alignment: WrapAlignment.center,
children: <Widget>[
AppButton(
title: procedureType.getAddButtonTitle(context),
fontWeight: FontWeight.w700,
color: AppGlobal.appGreenColor,
onPressed: () async {
GifLoaderDialogUtils.showMyDialog(context);
if (entityList.isEmpty == true) {
DrAppToastMsg.showErrorToast(
TranslationBase.of(context)
.fillTheMandatoryProcedureDetails,
);
GifLoaderDialogUtils.hideDialog(context);
return;
}
GifLoaderDialogUtils.showMyDialog(context);
await this.model.preparePostProcedure(
orderType: selectedType.toString(),
entityList: entityList,
patient: patient,
remarks: remarksController.text,
procedureType: ProcedureType.PROCEDURE,
isLocalBusy: true,
);
Navigator.pop(context);
},
),
],
),
),
], ],
), ),
), ),
bottomSheet: model.state == ViewState.BusyLocal? Container(height: 0,):CustomBottomSheetContainer(
label: procedureType.getAddButtonTitle(context),
onTap: () async {
{
GifLoaderDialogUtils.showMyDialog(context);
if (entityList.isEmpty == true) {
DrAppToastMsg.showErrorToast(
TranslationBase.of(context)
.fillTheMandatoryProcedureDetails,
);
GifLoaderDialogUtils.hideDialog(context);
return;
}
GifLoaderDialogUtils.showMyDialog(context);
await model.preparePostProcedure(
orderType: selectedType.toString(),
entityList: entityList,
patient: patient,
remarks: remarksController.text,
procedureType: ProcedureType.PROCEDURE,
isLocalBusy: true,
);
GifLoaderDialogUtils.hideDialog(context);
}
}
),
), ),
); );
} }

@ -13,6 +13,8 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
/// TODO Roaa Add translation and make sure it working fine
class ProcedureCard extends StatelessWidget { class ProcedureCard extends StatelessWidget {
final Function onTap; final Function onTap;
final EntityList entityList; final EntityList entityList;

@ -124,9 +124,6 @@ class ProcedureScreen extends StatelessWidget {
.entityList[index].procedureId, .entityList[index].procedureId,
limetNo: model.procedureList[0] limetNo: model.procedureList[0]
.entityList[index].lineItemNo); .entityList[index].lineItemNo);
// } else
// Helpers.showErrorToast(
// 'You Cant Update This Procedure');
}, },
patient: patient, patient: patient,
doctorID: model?.doctorProfile?.doctorID, doctorID: model?.doctorProfile?.doctorID,

@ -7,9 +7,13 @@ import 'package:doctor_app_flutter/core/model/procedure/update_procedure_request
import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart'; import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart';
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/patient_search/patient_search_header.dart';
import 'package:doctor_app_flutter/utils/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/utils/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/utils/utils.dart'; import 'package:doctor_app_flutter/utils/utils.dart';
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart'; import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
import 'package:doctor_app_flutter/widgets/bottom_sheet/bottom_sheet_container.dart';
import 'package:doctor_app_flutter/widgets/bottom_sheet/custom_bottom_sheet_container.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/TextFields.dart'; import 'package:doctor_app_flutter/widgets/shared/text_fields/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
@ -89,18 +93,22 @@ class _UpdateProcedureWidgetState extends State<UpdateProcedureWidget> {
List<EntityList> entityList = List(); List<EntityList> entityList = List();
dynamic selectedCategory; dynamic selectedCategory;
/// TODO Roaa Add translation and make sure it working fine
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final screenSize = MediaQuery.of(context).size;
return StatefulBuilder(builder: return StatefulBuilder(builder:
(BuildContext context, StateSetter setState /*You can rename this!*/) { (BuildContext context, StateSetter setState /*You can rename this!*/) {
return BaseView<ProcedureViewModel>( return BaseView<ProcedureViewModel>(
onModelReady: (model) => model.getCategory(), onModelReady: (model) => model.getCategory(),
builder: builder:
(BuildContext context, ProcedureViewModel model, Widget child) => (BuildContext context, ProcedureViewModel model, Widget child) =>
NetworkBaseView( AppScaffold(
isShowAppBar: true,
baseViewModel: model, baseViewModel: model,
child: SingleChildScrollView( appBar: PatientSearchHeader(
title: "Update Procedure",
),
body: SingleChildScrollView(
child: Container( child: Container(
height: MediaQuery.of(context).size.height * 0.9, height: MediaQuery.of(context).size.height * 0.9,
child: Form( child: Form(
@ -165,49 +173,24 @@ class _UpdateProcedureWidgetState extends State<UpdateProcedureWidget> {
SizedBox( SizedBox(
height: 70.0, height: 70.0,
), ),
Container(
margin:
EdgeInsets.all(SizeConfig.widthMultiplier * 2),
child: Column(
children: <Widget>[
AppButton(
color: AppGlobal.appGreenColor,
title: TranslationBase.of(context)
.updateProcedure
.toUpperCase(),
onPressed: () {
Navigator.pop(context);
updateProcedure(
limetNO: widget.limetNo,
orderNo: widget.orderNo,
orderType: selectedType.toString(),
categorieId: widget.categoryId,
procedureId: widget.procedureId,
entityList: entityList,
patient: widget.patient,
model: widget.model,
remarks: widget.remarksController.text);
// authorizationForm(context);
},
),
SizedBox(
height: 20.0,
),
AppButton(
title: TranslationBase.of(context).cancel,
color: AppGlobal.appRedColor,
onPressed: () {
Navigator.pop(context);
},
)
],
),
),
], ],
), ),
), ),
)), )),
), ),
bottomSheet: CustomBottomSheetContainer(
label: TranslationBase.of(context).updateProcedure.toUpperCase(),
onTap: () => updateProcedure(
limetNO: widget.limetNo,
orderNo: widget.orderNo,
orderType: selectedType.toString(),
categorieId: widget.categoryId,
procedureId: widget.procedureId,
entityList: entityList,
patient: widget.patient,
model: widget.model,
remarks: widget.remarksController.text),
),
), ),
); );
}); });

Loading…
Cancel
Save