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

@ -1,4 +1,5 @@
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/viewModel/procedure_View_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/utils/dr_app_toast_msg.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_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
@ -118,18 +120,33 @@ class _AddProcedurePageState extends State<AddProcedurePage> {
),
Expanded(
child: InkWell(
onTap: () {
onTap: () async {
if (procedureName.text.isNotEmpty &&
procedureName.text.length >= 3)
model.getProcedureCategory(
procedureName.text.length >= 3) {
GifLoaderDialogUtils.showMyDialog(context);
await model.getProcedureCategory(
patientId: patient.patientId,
categoryName:
procedureName.text);
else
procedureName.text,
isLocalBusy: true
);
if(model.state == ViewState.ErrorLocal){
DrAppToastMsg.showErrorToast(
model.error
);
}
GifLoaderDialogUtils.hideDialog(context);
}
else {
DrAppToastMsg.showErrorToast(
TranslationBase.of(context)
.atLeastThreeCharacters,
);
}
},
child: Icon(
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:provider/provider.dart';
/// TODO Roaa Add translation and make sure it working fine
class ProcedureCard extends StatelessWidget {
final Function onTap;
final EntityList entityList;

@ -124,9 +124,6 @@ class ProcedureScreen extends StatelessWidget {
.entityList[index].procedureId,
limetNo: model.procedureList[0]
.entityList[index].lineItemNo);
// } else
// Helpers.showErrorToast(
// 'You Cant Update This Procedure');
},
patient: patient,
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/model/patient/patiant_info_model.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/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/app_texts_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();
dynamic selectedCategory;
/// TODO Roaa Add translation and make sure it working fine
@override
Widget build(BuildContext context) {
final screenSize = MediaQuery.of(context).size;
return StatefulBuilder(builder:
(BuildContext context, StateSetter setState /*You can rename this!*/) {
return BaseView<ProcedureViewModel>(
onModelReady: (model) => model.getCategory(),
builder:
(BuildContext context, ProcedureViewModel model, Widget child) =>
NetworkBaseView(
AppScaffold(
isShowAppBar: true,
baseViewModel: model,
child: SingleChildScrollView(
appBar: PatientSearchHeader(
title: "Update Procedure",
),
body: SingleChildScrollView(
child: Container(
height: MediaQuery.of(context).size.height * 0.9,
child: Form(
@ -165,49 +173,24 @@ class _UpdateProcedureWidgetState extends State<UpdateProcedureWidget> {
SizedBox(
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