update procedure

merge-requests/994/head
Elham Rababh 4 years ago
parent 1a3ad32aa5
commit 33b8d6d78d

@ -1,8 +1,7 @@
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/enum/view_state.dart';
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.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/screens/base/base_view.dart'; 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';
@ -10,12 +9,11 @@ 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/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/loader/gif_loader_dialog_utils.dart'; import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart'; import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../config/config.dart';
import 'entity_list_checkbox_search_widget.dart'; import 'entity_list_checkbox_search_widget.dart';
class AddProcedurePage extends StatefulWidget { class AddProcedurePage extends StatefulWidget {
@ -123,30 +121,25 @@ class _AddProcedurePageState extends State<AddProcedurePage> {
onTap: () async { onTap: () async {
if (procedureName.text.isNotEmpty && if (procedureName.text.isNotEmpty &&
procedureName.text.length >= 3) { procedureName.text.length >= 3) {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(
context);
await model.getProcedureCategory( await model.getProcedureCategory(
patientId: patient.patientId, patientId: patient.patientId,
categoryName: categoryName: procedureName.text,
procedureName.text, isLocalBusy: true);
isLocalBusy: true if (model.state ==
); ViewState.ErrorLocal) {
if(model.state == ViewState.ErrorLocal){
DrAppToastMsg.showErrorToast( DrAppToastMsg.showErrorToast(
model.error model.error);
);
} }
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(
context);
} } else {
else {
DrAppToastMsg.showErrorToast( DrAppToastMsg.showErrorToast(
TranslationBase.of(context) TranslationBase.of(context)
.atLeastThreeCharacters, .atLeastThreeCharacters,
); );
} }
}, },
child: Icon( child: Icon(
Icons.search, Icons.search,
@ -166,8 +159,7 @@ class _AddProcedurePageState extends State<AddProcedurePage> {
baseViewModel: model, baseViewModel: model,
child: EntityListCheckboxSearchWidget( child: EntityListCheckboxSearchWidget(
model: widget.model, model: widget.model,
masterList: masterList: model.categoriesList[0].entityList,
model.categoriesList[0].entityList,
removeProcedure: (item) { removeProcedure: (item) {
setState(() { setState(() {
entityList.remove(item); entityList.remove(item);
@ -178,12 +170,13 @@ class _AddProcedurePageState extends State<AddProcedurePage> {
entityList.add(history); entityList.add(history);
}); });
}, },
addSelectedHistories: () { addSelectedHistories: () {},
}, isEntityListSelected: (master) => widget.model
isEntityListSelected: (master) => .isEntityListSelected(master, entityList),
widget.model.isEntityListSelected(master,entityList),
)), )),
SizedBox(height: 10,) SizedBox(
height: 10,
)
], ],
), ),
), ),
@ -192,32 +185,35 @@ class _AddProcedurePageState extends State<AddProcedurePage> {
], ],
), ),
), ),
bottomSheet: model.state == ViewState.BusyLocal? Container(height: 0,):CustomBottomSheetContainer( bottomSheet: model.state == ViewState.BusyLocal
label: procedureType.getAddButtonTitle(context), ? Container(
onTap: () async { height: 0,
{ )
GifLoaderDialogUtils.showMyDialog(context); : CustomBottomSheetContainer(
if (entityList.isEmpty == true) { label: procedureType.getAddButtonTitle(context),
DrAppToastMsg.showErrorToast( onTap: () async {
TranslationBase.of(context) {
.fillTheMandatoryProcedureDetails, 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); 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);
}
}
),
), ),
); );
} }

@ -1,18 +1,17 @@
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/core/viewModel/prescription/prescription_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/prescription/prescription_view_model.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/screens/base/base_view.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/screens/patients/profile/soap_update/shared_soap_widgets/bottom_sheet_title.dart';
import 'package:doctor_app_flutter/screens/prescription/add_prescription/add_prescription.dart'; import 'package:doctor_app_flutter/screens/prescription/add_prescription/add_prescription.dart';
import 'package:doctor_app_flutter/screens/procedures/favorite_procedure/add_favourite_procedure.dart';
import 'package:doctor_app_flutter/screens/procedures/add_procedure_page.dart'; import 'package:doctor_app_flutter/screens/procedures/add_procedure_page.dart';
import 'package:doctor_app_flutter/screens/procedures/favorite_procedure/add_favourite_procedure.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/screens/procedures/tab_widget.dart'; import 'package:doctor_app_flutter/screens/procedures/tab_widget.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/network_base_view.dart'; import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class BaseAddProcedureTabPage extends StatefulWidget { class BaseAddProcedureTabPage extends StatefulWidget {
final ProcedureViewModel previousProcedureViewModel; final ProcedureViewModel previousProcedureViewModel;
final PrescriptionViewModel prescriptionModel; final PrescriptionViewModel prescriptionModel;
@ -67,24 +66,25 @@ class _BaseAddProcedureTabPageState extends State<BaseAddProcedureTabPage>
return BaseView<ProcedureViewModel>( return BaseView<ProcedureViewModel>(
onModelReady: (model) async { onModelReady: (model) async {
if(widget.previousProcedureViewModel == null) { if (widget.previousProcedureViewModel == null) {
await model.getProcedureTemplate( await model.getProcedureTemplate(
categoryID: widget.procedureType.getCategoryId()); categoryID: widget.procedureType.getCategoryId());
} }
}, },
builder: (BuildContext context, ProcedureViewModel model, Widget child) => builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold( AppScaffold(
baseViewModel: model, baseViewModel: model,
isShowAppBar: true, isShowAppBar: true,
appBar: BottomSheetTitle(title: procedureType.getToolbarLabel(context),), appBar: BottomSheetTitle(
body: NetworkBaseView( title: procedureType.getToolbarLabel(context),
),
body: NetworkBaseView(
baseViewModel: model, baseViewModel: model,
child: Scaffold( child: Scaffold(
extendBodyBehindAppBar: true, extendBodyBehindAppBar: true,
appBar: PreferredSize( appBar: PreferredSize(
preferredSize: Size.fromHeight( preferredSize:
MediaQuery.of(context).size.height * 0.070), Size.fromHeight(MediaQuery.of(context).size.height * 0.070),
child: TabBar( child: TabBar(
isScrollable: false, isScrollable: false,
controller: _tabController, controller: _tabController,
@ -92,24 +92,16 @@ class _BaseAddProcedureTabPageState extends State<BaseAddProcedureTabPage>
indicatorWeight: 1.0, indicatorWeight: 1.0,
indicatorSize: TabBarIndicatorSize.tab, indicatorSize: TabBarIndicatorSize.tab,
labelColor: Theme.of(context).primaryColor, labelColor: Theme.of(context).primaryColor,
labelPadding: EdgeInsets.only( labelPadding:
top: 0, left: 0, right: 0, bottom: 0), EdgeInsets.only(top: 0, left: 0, right: 0, bottom: 0),
unselectedLabelColor: Colors.grey[800], unselectedLabelColor: Colors.grey[800],
tabs: [ tabs: [
TabWidget.tabWidget( TabWidget.tabWidget(screenSize, _activeTab == 0,
screenSize, procedureType.getFavouriteTabName(context),
_activeTab == 0, isFirst: true, context: context),
TabWidget.tabWidget(screenSize, _activeTab == 1,
procedureType
.getFavouriteTabName(context),
isFirst: true,context: context
),
TabWidget.tabWidget(
screenSize,
_activeTab == 1,
procedureType.getAllLabelName(context), procedureType.getAllLabelName(context),
isLast: true,context: context isLast: true, context: context),
),
], ],
), ),
), ),
@ -121,14 +113,13 @@ class _BaseAddProcedureTabPageState extends State<BaseAddProcedureTabPage>
controller: _tabController, controller: _tabController,
children: [ children: [
AddFavouriteProcedure( AddFavouriteProcedure(
previousProcedureViewModel: widget.previousProcedureViewModel??model, previousProcedureViewModel:
prescriptionModel: widget.previousProcedureViewModel ?? model,
widget.prescriptionModel, prescriptionModel: widget.prescriptionModel,
patient: patient, patient: patient,
procedureType: procedureType, procedureType: procedureType,
), ),
if (widget.procedureType == if (widget.procedureType == ProcedureType.PRESCRIPTION)
ProcedureType.PRESCRIPTION)
AddPrescription( AddPrescription(
widget.prescriptionModel, widget.prescriptionModel,
widget.patient, widget.patient,
@ -145,8 +136,7 @@ class _BaseAddProcedureTabPageState extends State<BaseAddProcedureTabPage>
), ),
], ],
), ),
) )),
),
), ),
); );
} }

@ -1,13 +1,14 @@
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/utils/translations_delegate_base_utils.dart'; import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.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/divider_with_spaces_around.dart'; import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/TextFields.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../config/config.dart'; import '../../config/config.dart';
class EntityListCheckboxSearchWidget extends StatefulWidget { class EntityListCheckboxSearchWidget extends StatefulWidget {
@ -18,16 +19,15 @@ class EntityListCheckboxSearchWidget extends StatefulWidget {
final bool Function(EntityList) isEntityListSelected; final bool Function(EntityList) isEntityListSelected;
final List<EntityList> masterList; final List<EntityList> masterList;
EntityListCheckboxSearchWidget( EntityListCheckboxSearchWidget({
{Key key, Key key,
this.model, this.model,
this.addSelectedHistories, this.addSelectedHistories,
this.removeProcedure, this.removeProcedure,
this.masterList, this.masterList,
this.addProcedure, this.addProcedure,
this.isEntityListSelected, this.isEntityListSelected,
}) }) : super(key: key);
: super(key: key);
@override @override
_EntityListCheckboxSearchWidgetState createState() => _EntityListCheckboxSearchWidgetState createState() =>
@ -80,7 +80,8 @@ class _EntityListCheckboxSearchWidgetState
suffixIcon: EvaIcons.search, suffixIcon: EvaIcons.search,
suffixIconColor: Color(0xff2B353E), suffixIconColor: Color(0xff2B353E),
onChanged: (value) { onChanged: (value) {
widget.model.filterSearchResults(value, widget.masterList, items); widget.model.filterSearchResults(
value, widget.masterList, items);
}, },
hasBorder: false, hasBorder: false,
), ),
@ -106,8 +107,8 @@ class _EntityListCheckboxSearchWidgetState
widget.removeProcedure( widget.removeProcedure(
historyInfo); historyInfo);
} else { } else {
widget widget.addProcedure(
.addProcedure(historyInfo); historyInfo);
} }
}); });
}), }),

@ -64,8 +64,8 @@ class _ExpansionProcedureState extends State<ExpansionProcedure> {
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Icon( Icon(
Icons.folder, Icons.folder,
size: 20, size: 20,
@ -76,17 +76,16 @@ class _ExpansionProcedureState extends State<ExpansionProcedure> {
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 0), horizontal: 10, vertical: 0),
child: AppText( child: AppText(
widget.isProcedure == true widget.isProcedure == true
? "Procedures for " + ? "Procedures for " +
widget.procedureTempleteModel.templateName widget.procedureTempleteModel.templateName
: "Prescription for " + : "Prescription for " +
widget.procedureTempleteModel.templateName, widget.procedureTempleteModel.templateName,
letterSpacing: -0.72, letterSpacing: -0.72,
fontSize: 16.0, fontSize: 16.0,
color: AppGlobal.appTextColor, color: AppGlobal.appTextColor,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
), ),
), ),
), ),
], ],
@ -176,12 +175,13 @@ class _ExpansionProcedureState extends State<ExpansionProcedure> {
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 0), horizontal: 10, vertical: 0),
child: AppText( child: AppText(
Utils.convertToTitleCase(itemProcedure.procedureName), Utils.convertToTitleCase(
fontSize: 14.0, itemProcedure.procedureName),
variant: "bodyText", fontSize: 14.0,
bold: true, variant: "bodyText",
color: Color(0xff575757), bold: true,
fontFamily: 'Poppins-Bold.ttf', color: Color(0xff575757),
fontFamily: 'Poppins-Bold.ttf',
), ),
), ),
), ),

@ -1,7 +1,7 @@
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/core/model/procedure/procedure_template_details_model.dart'; import 'package:doctor_app_flutter/core/model/procedure/procedure_template_details_model.dart';
import 'package:doctor_app_flutter/core/viewModel/prescription/prescription_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/prescription/prescription_view_model.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/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/prescription/prescription_checkout_screen.dart'; import 'package:doctor_app_flutter/screens/prescription/prescription_checkout_screen.dart';
import 'package:doctor_app_flutter/screens/procedures/favorite_procedure/entity_list_fav_procedure.dart'; import 'package:doctor_app_flutter/screens/procedures/favorite_procedure/entity_list_fav_procedure.dart';
@ -66,7 +66,8 @@ class _AddFavouriteProcedureState extends State<AddFavouriteProcedure> {
}); });
}, },
isEntityFavListSelected: (master) => isEntityFavListSelected: (master) =>
procedureViewModel.isProcedureEntityListSelected(master, entityList), procedureViewModel.isProcedureEntityListSelected(
master, entityList),
groupProcedures: groupProcedures, groupProcedures: groupProcedures,
selectProcedures: (selectedProcedure) { selectProcedures: (selectedProcedure) {
setState(() { setState(() {
@ -116,7 +117,8 @@ class _AddFavouriteProcedureState extends State<AddFavouriteProcedure> {
MaterialPageRoute( MaterialPageRoute(
builder: (context) => ProcedureCheckOutScreen( builder: (context) => ProcedureCheckOutScreen(
items: entityList, items: entityList,
previousProcedureViewModel: widget.previousProcedureViewModel, previousProcedureViewModel:
widget.previousProcedureViewModel,
patient: widget.patient, patient: widget.patient,
addButtonTitle: widget.procedureType addButtonTitle: widget.procedureType
.getAddButtonTitle(context), .getAddButtonTitle(context),

@ -8,6 +8,7 @@ import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import '../../../config/config.dart'; import '../../../config/config.dart';
import '../../../widgets/shared/text_fields/app_text_field_custom_serach.dart'; import '../../../widgets/shared/text_fields/app_text_field_custom_serach.dart';
@ -76,7 +77,6 @@ class _EntityListCheckboxSearchFavProceduresWidgetState
TextEditingController remarksController = TextEditingController(); TextEditingController remarksController = TextEditingController();
TextEditingController patientFileInfoController = TextEditingController(); TextEditingController patientFileInfoController = TextEditingController();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SingleChildScrollView( return SingleChildScrollView(
@ -88,19 +88,18 @@ class _EntityListCheckboxSearchFavProceduresWidgetState
child: Container( child: Container(
margin: EdgeInsets.only(top: 15), margin: EdgeInsets.only(top: 15),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8), color: Colors.white),
color: Colors.white),
child: ListView( child: ListView(
children: [ children: [
AppTextFieldCustomSearch( AppTextFieldCustomSearch(
searchController: patientFileInfoController, searchController: patientFileInfoController,
onChangeFun: (value) { onChangeFun: (value) {
widget.model.filterProcedureSearchResults(value, widget.masterList, items); widget.model.filterProcedureSearchResults(
value, widget.masterList, items);
}, },
marginTop: 5, marginTop: 5,
inputFormatters: [ inputFormatters: [
FilteringTextInputFormatter.allow( FilteringTextInputFormatter.allow(RegExp(ONLY_LETTERS))
RegExp(ONLY_LETTERS))
], ],
inputType: TextInputType.text, inputType: TextInputType.text,
hintText: TranslationBase.of(context).searchFavoriteTemplate, hintText: TranslationBase.of(context).searchFavoriteTemplate,
@ -110,16 +109,14 @@ class _EntityListCheckboxSearchFavProceduresWidgetState
), ),
widget.model.templateList.length != 0 widget.model.templateList.length != 0
? Column( ? Column(
children: children: widget.model.templateList.map((historyInfo) {
widget.model.templateList.map((historyInfo) {
return ExpansionProcedure( return ExpansionProcedure(
procedureTempleteModel: historyInfo, procedureTempleteModel: historyInfo,
model: widget.model, model: widget.model,
removeFavProcedure: widget.removeFavProcedure, removeFavProcedure: widget.removeFavProcedure,
addFavProcedure: widget.addFavProcedure, addFavProcedure: widget.addFavProcedure,
selectProcedures: widget.selectProcedures, selectProcedures: widget.selectProcedures,
isEntityListSelected: isEntityListSelected: widget.isEntityListSelected,
widget.isEntityListSelected,
isEntityFavListSelected: isEntityFavListSelected:
widget.isEntityFavListSelected, widget.isEntityFavListSelected,
isProcedure: widget.isProcedure, isProcedure: widget.isProcedure,

@ -1,24 +1,24 @@
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/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/core/model/procedure/procedure_template_details_model.dart'; import 'package:doctor_app_flutter/core/model/procedure/procedure_template_details_model.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/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/screens/patients/patient_search/patient_search_header.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/utils/utils.dart'; import 'package:doctor_app_flutter/utils/utils.dart';
import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/TextFields.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';
import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/TextFields.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../../config/config.dart'; import '../../../config/config.dart';
class ProcedureCheckOutScreen extends StatefulWidget { class ProcedureCheckOutScreen extends StatefulWidget {
final List<ProcedureTempleteDetailsModel> items; final List<ProcedureTempleteDetailsModel> items;
final ProcedureViewModel previousProcedureViewModel; final ProcedureViewModel previousProcedureViewModel;
final PatiantInformtion patient; final PatiantInformtion patient;
final String addButtonTitle; final String addButtonTitle;
final String toolbarTitle; final String toolbarTitle;
@ -48,8 +48,8 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
backgroundColor: Color(0xffF8F8F8).withOpacity(0.9), backgroundColor: Color(0xffF8F8F8).withOpacity(0.9),
isShowAppBar: true, isShowAppBar: true,
appBar: PatientSearchHeader( appBar: PatientSearchHeader(
title: widget.toolbarTitle ?? 'Add Procedure', title: widget.toolbarTitle ?? 'Add Procedure',
), ),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Center( child: Center(
child: FractionallySizedBox( child: FractionallySizedBox(
@ -63,10 +63,11 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
itemCount: widget.items.length, itemCount: widget.items.length,
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
shrinkWrap: true, shrinkWrap: true,
itemBuilder: (BuildContext ctxt, int index) { itemBuilder: (BuildContext ctxt, int index) {
final TextEditingController remarksControllerNew = TextEditingController(text: widget.items[index].remarks); final TextEditingController remarksControllerNew =
TextEditingController(
text: widget.items[index].remarks);
return Container( return Container(
margin: EdgeInsets.only(bottom: 15.0), margin: EdgeInsets.only(bottom: 15.0),
@ -78,11 +79,13 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
initiallyExpanded: true, initiallyExpanded: true,
title: Row( title: Row(
children: [ children: [
Expanded( Expanded(
child: child: AppText(
AppText(Utils.convertToTitleCase(widget.items[index].procedureName), fontWeight: FontWeight.w700,color: AppGlobal.appTextColor, Utils.convertToTitleCase(
)), widget.items[index].procedureName),
fontWeight: FontWeight.w700,
color: AppGlobal.appTextColor,
)),
], ],
), ),
children: [ children: [
@ -90,7 +93,8 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
child: Padding( child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12), padding: EdgeInsets.symmetric(horizontal: 12),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment:
CrossAxisAlignment.start,
children: [ children: [
Row( Row(
children: [ children: [
@ -98,7 +102,8 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(
horizontal: 11), horizontal: 11),
child: AppText( child: AppText(
TranslationBase.of(context).orderType, TranslationBase.of(context)
.orderType,
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
color: Color(0xff2B353E), color: Color(0xff2B353E),
), ),
@ -110,10 +115,11 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
Radio( Radio(
activeColor: Color(0xFFD02127), activeColor: Color(0xFFD02127),
value: 0, value: 0,
groupValue: groupValue: widget
widget.items[index].selectedType, .items[index].selectedType,
onChanged: (value) { onChanged: (value) {
widget.items[index].selectedType = 0; widget.items[index].selectedType =
0;
setState(() { setState(() {
widget.items[index].type = widget.items[index].type =
value.toString(); value.toString();
@ -127,11 +133,12 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
), ),
Radio( Radio(
activeColor: Color(0xFFD02127), activeColor: Color(0xFFD02127),
groupValue: groupValue: widget
widget.items[index].selectedType, .items[index].selectedType,
value: 1, value: 1,
onChanged: (value) { onChanged: (value) {
widget.items[index].selectedType = 1; widget.items[index].selectedType =
1;
setState(() { setState(() {
widget.items[index].type = widget.items[index].type =
value.toString(); value.toString();
@ -175,7 +182,6 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
), ),
); );
}), }),
SizedBox( SizedBox(
height: 90, height: 90,
), ),
@ -196,7 +202,12 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
onPressed: () async { onPressed: () async {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
await widget.previousProcedureViewModel.addProcedures(widget.previousProcedureViewModel, widget.items, widget.patient, remarksController, isLocalBusy: true); await widget.previousProcedureViewModel.addProcedures(
widget.previousProcedureViewModel,
widget.items,
widget.patient,
remarksController,
isLocalBusy: true);
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
}, },
), ),

@ -1,12 +1,12 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
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/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/utils/date-utils.dart'; import 'package:doctor_app_flutter/utils/date-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/utils/utils.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/user-guid/CusomRow.dart'; import 'package:doctor_app_flutter/widgets/shared/user-guid/CusomRow.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
@ -202,9 +202,10 @@ class ProcedureCard extends StatelessWidget {
children: [ children: [
Expanded( Expanded(
child: AppText( child: AppText(
entityList.remarks!= null?Utils.convertToTitleCase( entityList.remarks != null
entityList.remarks.toString()) : ? Utils.convertToTitleCase(
'', entityList.remarks.toString())
: '',
fontSize: 12, fontSize: 12,
), ),
), ),

@ -1,22 +1,22 @@
import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/core/enum/view_state.dart'; import 'package:doctor_app_flutter/core/enum/view_state.dart';
import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart';
import 'package:doctor_app_flutter/core/model/doctor/doctor_profile_model.dart'; import 'package:doctor_app_flutter/core/model/doctor/doctor_profile_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/core/viewModel/procedure_View_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/procedures/procedure_card.dart'; import 'package:doctor_app_flutter/screens/procedures/procedure_card.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/screens/procedures/update_procedure.dart'; import 'package:doctor_app_flutter/screens/procedures/update_procedure.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/utils/utils.dart'; import 'package:doctor_app_flutter/utils/utils.dart';
import 'package:doctor_app_flutter/widgets/patients/patient_service_title.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/add-order/addNewOrder.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/add-order/addNewOrder.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/app_bar/patient-profile-app-bar.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/app_bar/patient-profile-app-bar.dart';
import 'package:doctor_app_flutter/widgets/patients/patient_service_title.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/loader/gif_loader_dialog_utils.dart'; import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/transitions/slide_up_page.dart'; import 'package:doctor_app_flutter/widgets/transitions/slide_up_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../widgets/shared/errors/error_message.dart'; import '../../widgets/shared/errors/error_message.dart';
import 'base_add_procedure_tab_page.dart'; import 'base_add_procedure_tab_page.dart';
@ -59,8 +59,9 @@ class ProcedureScreen extends StatelessWidget {
height: 12, height: 12,
), ),
if ((model.procedureList.length == 0 && if ((model.procedureList.length == 0 &&
patient.patientStatusType != 43) || patient.patientStatusType != null && patient.patientStatusType != 43) ||
patient.patientStatusType == 43) patient.patientStatusType != null &&
patient.patientStatusType == 43)
ServiceTitle( ServiceTitle(
title: TranslationBase.of(context).orderTestOr, title: TranslationBase.of(context).orderTestOr,
subTitle: TranslationBase.of(context).procedure, subTitle: TranslationBase.of(context).procedure,
@ -72,7 +73,8 @@ class ProcedureScreen extends StatelessWidget {
onTap: () async { onTap: () async {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
await model.getProcedureTemplate( await model.getProcedureTemplate(
categoryID: ProcedureType.PROCEDURE.getCategoryId(), isLocalBusy: true); categoryID: ProcedureType.PROCEDURE.getCategoryId(),
isLocalBusy: true);
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
Navigator.push( Navigator.push(
@ -86,8 +88,7 @@ class ProcedureScreen extends StatelessWidget {
settingRoute: 'AddProcedureTabPage'), settingRoute: 'AddProcedureTabPage'),
); );
}, },
label: TranslationBase.of(context) label: TranslationBase.of(context).addMoreProcedure,
.addMoreProcedure,
), ),
if (model.procedureList.isNotEmpty) if (model.procedureList.isNotEmpty)
ListView.builder( ListView.builder(
@ -95,7 +96,6 @@ class ProcedureScreen extends StatelessWidget {
itemCount: model.procedureList[0].rowcount, itemCount: model.procedureList[0].rowcount,
shrinkWrap: true, shrinkWrap: true,
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
itemBuilder: (BuildContext ctxt, int index) { itemBuilder: (BuildContext ctxt, int index) {
return ProcedureCard( return ProcedureCard(
categoryID: model categoryID: model

@ -3,19 +3,17 @@ import 'package:doctor_app_flutter/utils/tab_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class TabWidget {
class TabWidget {
static Widget tabWidget( static Widget tabWidget(
Size screenSize, Size screenSize,
bool isActive, bool isActive,
String title, String title, {
{ int counter = -1,
int counter = -1, bool isFirst = false,
bool isFirst = false, bool isMiddle = false,
bool isMiddle = false, bool isLast = false,
bool isLast = false, context,
context, }) {
}) {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
return Center( return Center(
child: Container( child: Container(
@ -29,7 +27,6 @@ class TabWidget {
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
TabUtils.getTabText(title: title, isActive: isActive), TabUtils.getTabText(title: title, isActive: isActive),
if (counter != -1) if (counter != -1)
TabUtils.getTabCounter(isActive: isActive, counter: counter) TabUtils.getTabCounter(isActive: isActive, counter: counter)

@ -1,23 +1,20 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/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/enum/view_state.dart';
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.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/update_procedure_request_model.dart'; import 'package:doctor_app_flutter/core/model/procedure/update_procedure_request_model.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/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/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/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/utils/utils.dart';
import 'package:doctor_app_flutter/widgets/bottom_sheet/custom_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/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/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; import 'package:doctor_app_flutter/widgets/shared/text_fields/TextFields.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
@ -103,11 +100,9 @@ class _UpdateProcedureWidgetState extends State<UpdateProcedureWidget> {
builder: builder:
(BuildContext context, ProcedureViewModel model, Widget child) => (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold( AppScaffold(
isShowAppBar: true,
baseViewModel: model, baseViewModel: model,
appBar: PatientSearchHeader( isShowAppBar: true,
title: "Update Procedure", appBar: PatientSearchHeader(title: "Update Procedure"),
),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Container( child: Container(
height: MediaQuery.of(context).size.height * 0.9, height: MediaQuery.of(context).size.height * 0.9,
@ -181,10 +176,10 @@ class _UpdateProcedureWidgetState extends State<UpdateProcedureWidget> {
bottomSheet: CustomBottomSheetContainer( bottomSheet: CustomBottomSheetContainer(
label: TranslationBase.of(context).updateProcedure.toUpperCase(), label: TranslationBase.of(context).updateProcedure.toUpperCase(),
onTap: () => updateProcedure( onTap: () => updateProcedure(
limetNO: widget.limetNo, lineItemNo: widget.limetNo,
orderNo: widget.orderNo, orderNo: widget.orderNo,
orderType: selectedType.toString(), orderType: selectedType.toString(),
categorieId: widget.categoryId, categoryId: widget.categoryId,
procedureId: widget.procedureId, procedureId: widget.procedureId,
entityList: entityList, entityList: entityList,
patient: widget.patient, patient: widget.patient,
@ -199,15 +194,15 @@ class _UpdateProcedureWidgetState extends State<UpdateProcedureWidget> {
updateProcedure( updateProcedure(
{ProcedureViewModel model, {ProcedureViewModel model,
String remarks, String remarks,
int limetNO, int lineItemNo,
int orderNo, int orderNo,
String newProcedureId, String newProcedureId,
String newCategorieId, String newCategoryId,
List<EntityList> entityList, List<EntityList> entityList,
String orderType, String orderType,
String procedureId, String procedureId,
PatiantInformtion patient, PatiantInformtion patient,
String categorieId}) async { String categoryId}) async {
UpdateProcedureRequestModel updateProcedureReqModel = UpdateProcedureRequestModel updateProcedureReqModel =
new UpdateProcedureRequestModel(); new UpdateProcedureRequestModel();
List<Controls> controls = List(); List<Controls> controls = List();
@ -217,7 +212,7 @@ class _UpdateProcedureWidgetState extends State<UpdateProcedureWidget> {
updateProcedureReqModel.episodeID = patient.episodeNo; updateProcedureReqModel.episodeID = patient.episodeNo;
updateProcedureReqModel.patientMRN = patient.patientMRN; updateProcedureReqModel.patientMRN = patient.patientMRN;
updateProcedureReqModel.lineItemNo = limetNO; updateProcedureReqModel.lineItemNo = lineItemNo;
updateProcedureReqModel.orderNo = orderNo; updateProcedureReqModel.orderNo = orderNo;
{ {
@ -230,22 +225,23 @@ class _UpdateProcedureWidgetState extends State<UpdateProcedureWidget> {
); );
controlsProcedure.procedure = procedureId; controlsProcedure.procedure = procedureId;
controlsProcedure.category = '0' + categorieId; controlsProcedure.category = '0' + categoryId;
controlsProcedure.controls = controls; controlsProcedure.controls = controls;
} }
updateProcedureReqModel.procedureDetail = controlsProcedure; updateProcedureReqModel.procedureDetail = controlsProcedure;
GifLoaderDialogUtils.showMyDialog(context);
await model.updateProcedure( await model.updateProcedure(
updateProcedureRequestModel: updateProcedureReqModel, updateProcedureRequestModel: updateProcedureReqModel,
mrn: patient.patientMRN); mrn: patient.patientMRN);
if (model.state == ViewState.ErrorLocal) { if (model.state == ViewState.ErrorLocal) {
Utils.showErrorToast(model.error); Utils.showErrorToast(model.error);
model.getProcedure(mrn: patient.patientMRN);
} else if (model.state == ViewState.Idle) { } else if (model.state == ViewState.Idle) {
DrAppToastMsg.showSuccesToast('procedure has been updated'); DrAppToastMsg.showSuccesToast('procedure has been updated');
model.getProcedure(mrn: patient.patientMRN); await model.getProcedure(mrn: patient.patientMRN, isLocalBusy: true);
} }
GifLoaderDialogUtils.hideDialog(context);
} }
} }

Loading…
Cancel
Save