Merge branch 'favorite_procedure_templates' into 'development'

Favorite procedure templates

See merge request Cloud_Solution/doctor_app_flutter!704
merge-requests/705/merge
Mohammad Aljammal 5 years ago
commit 733c697a65

@ -123,7 +123,7 @@ const Map<String, Map<String, String>> localizedValues = {
'en': 'please enter answer', 'en': 'please enter answer',
'ar': 'الرجاء ادخال اجابة ' 'ar': 'الرجاء ادخال اجابة '
}, },
'replay': {'en': 'Replay', 'ar': 'تاكيد'}, 'replay': {'en': 'Reply', 'ar': 'تاكيد'},
'progressNote': {'en': 'Progress Note', 'ar': 'ملاحظة التقدم'}, 'progressNote': {'en': 'Progress Note', 'ar': 'ملاحظة التقدم'},
'progress': {'en': 'Progress', 'ar': 'التقدم'}, 'progress': {'en': 'Progress', 'ar': 'التقدم'},
'note': {'en': 'Note', 'ar': 'ملاحظة'}, 'note': {'en': 'Note', 'ar': 'ملاحظة'},

@ -44,7 +44,7 @@ class DashboardService extends BaseService {
super.error = error; super.error = error;
}, },
body: { body: {
"DoctorID": doctorProfile.doctorID// test user 9920 "DoctorID": doctorProfile?.doctorID// test user 9920
}, },
); );
} }

@ -145,10 +145,10 @@ class ProcedureService extends BaseService {
}, body: Map()); }, body: Map());
} }
Future getProcedureCategory({String categoryName, String categoryID}) async { Future getProcedureCategory({String categoryName, String categoryID,patientId}) async {
_getProcedureCategoriseReqModel = GetProcedureReqModel( _getProcedureCategoriseReqModel = GetProcedureReqModel(
search: ["$categoryName"], search: ["$categoryName"],
patientMRN: 0, patientMRN: patientId,
pageIndex: 0, pageIndex: 0,
clinicId: 0, clinicId: 0,
pageSize: 0, pageSize: 0,

@ -23,6 +23,7 @@ import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
class ProcedureViewModel extends BaseViewModel { class ProcedureViewModel extends BaseViewModel {
//TODO Hussam clean it
FilterType filterType = FilterType.Clinic; FilterType filterType = FilterType.Clinic;
bool hasError = false; bool hasError = false;
ProcedureService _procedureService = locator<ProcedureService>(); ProcedureService _procedureService = locator<ProcedureService>();
@ -83,12 +84,11 @@ class ProcedureViewModel extends BaseViewModel {
setState(ViewState.Idle); setState(ViewState.Idle);
} }
Future getProcedureCategory({String categoryName, String categoryID}) async { Future getProcedureCategory({String categoryName, String categoryID, patientId}) async {
hasError = false; hasError = false;
//_insuranceCardService.clearInsuranceCard();
setState(ViewState.Busy); setState(ViewState.Busy);
await _procedureService.getProcedureCategory( await _procedureService.getProcedureCategory(
categoryName: categoryName, categoryID: categoryID); categoryName: categoryName, categoryID: categoryID,patientId: patientId);
if (_procedureService.hasError) { if (_procedureService.hasError) {
error = _procedureService.error; error = _procedureService.error;
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);
@ -110,7 +110,6 @@ class ProcedureViewModel extends BaseViewModel {
Future getProcedureTemplate({String categoryID}) async { Future getProcedureTemplate({String categoryID}) async {
hasError = false; hasError = false;
//_insuranceCardService.clearInsuranceCard();
setState(ViewState.Busy); setState(ViewState.Busy);
await _procedureService.getProcedureTemplate(categoryID: categoryID); await _procedureService.getProcedureTemplate(categoryID: categoryID);
if (_procedureService.hasError) { if (_procedureService.hasError) {
@ -134,10 +133,12 @@ class ProcedureViewModel extends BaseViewModel {
.procedureTemplate .procedureTemplate
.add(element); .add(element);
} else { } else {
templateList.add(ProcedureTempleteDetailsModelList( var template = ProcedureTempleteDetailsModelList(
templateName: element.templateName, templateName: element.templateName,
templateId: element.templateID, templateId: element.templateID,
template: element)); template: element);
if(!templateList.contains(template))
templateList.add(template);
} }
}); });
print(templateList.length.toString()); print(templateList.length.toString());

@ -10,7 +10,7 @@ class PatiantInformtion {
String arrivalTime; String arrivalTime;
String arrivalTimeD; String arrivalTimeD;
int callStatus; int callStatus;
Null callStatusDisc; dynamic callStatusDisc;
int callTypeID; int callTypeID;
String clientRequestID; String clientRequestID;
String clinicName; String clinicName;

@ -241,12 +241,12 @@ class _HomeScreenState extends State<HomeScreen> {
), ),
sliderActiveIndex == 1 sliderActiveIndex == 1
? DashboardSliderItemWidget( ? DashboardSliderItemWidget(
model.dashboardItemsList[6]) model.dashboardItemsList[4])
: sliderActiveIndex == 0 : sliderActiveIndex == 0
? DashboardSliderItemWidget( ? DashboardSliderItemWidget(
model.dashboardItemsList[3]) model.dashboardItemsList[3])
: DashboardSliderItemWidget( : DashboardSliderItemWidget(
model.dashboardItemsList[4]), model.dashboardItemsList[6]),
]))) ])))
: SizedBox(), : SizedBox(),
FractionallySizedBox( FractionallySizedBox(
@ -332,7 +332,7 @@ class _HomeScreenState extends State<HomeScreen> {
patientCards.add(HomePatientCard( patientCards.add(HomePatientCard(
backgroundColor: backgroundColors[colorIndex], backgroundColor: backgroundColors[colorIndex],
backgroundIconColor: backgroundIconColors[colorIndex], backgroundIconColor: backgroundIconColors[colorIndex],
cardIcon: DoctorApp.inpatient, cardIcon: DoctorApp.livecare,
textColor: textColors[colorIndex], textColor: textColors[colorIndex],
text: text:
"${TranslationBase.of(context).liveCare}\n${TranslationBase.of(context).patients}", "${TranslationBase.of(context).liveCare}\n${TranslationBase.of(context).patients}",

@ -73,7 +73,7 @@ class _LiveCarePatientScreenState extends State<LiveCarePatientScreen> {
), ),
Expanded( Expanded(
child: AppText( child: AppText(
"Live Care Patients", "LiveCare Patients",
fontSize: SizeConfig.textMultiplier * 2.8, fontSize: SizeConfig.textMultiplier * 2.8,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Color(0xFF2B353E), color: Color(0xFF2B353E),

@ -39,7 +39,7 @@ class _InsuranceApprovalScreenNewState
? (model) => model.getInsuranceInPatient(mrn: patient.patientId) ? (model) => model.getInsuranceInPatient(mrn: patient.patientId)
: patient.appointmentNo != null : patient.appointmentNo != null
? (model) => model.getInsuranceApproval(patient, ? (model) => model.getInsuranceApproval(patient,
appointmentNo: patient.appointmentNo, appointmentNo: patient?.appointmentNo,
projectId: patient.projectId) projectId: patient.projectId)
: (model) => model.getInsuranceApproval(patient), : (model) => model.getInsuranceApproval(patient),
builder: (BuildContext context, InsuranceViewModel model, Widget child) => builder: (BuildContext context, InsuranceViewModel model, Widget child) =>

@ -3,6 +3,7 @@ import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/profile/lab_result/laboratory_result_page.dart'; import 'package:doctor_app_flutter/screens/patients/profile/lab_result/laboratory_result_page.dart';
import 'package:doctor_app_flutter/screens/procedures/add_lab_home_screen.dart';
import 'package:doctor_app_flutter/screens/procedures/add_lab_orders.dart'; import 'package:doctor_app_flutter/screens/procedures/add_lab_orders.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.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/add-order/addNewOrder.dart';
@ -111,7 +112,7 @@ class _LabsHomePageState extends State<LabsHomePage> {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => AddSelectedLabOrder( builder: (context) => AddLabHomeScreen(
patient: patient, patient: patient,
model: model, model: model,
)), )),

@ -4,6 +4,7 @@ import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/profile/radiology/radiology_details_page.dart'; import 'package:doctor_app_flutter/screens/patients/profile/radiology/radiology_details_page.dart';
import 'package:doctor_app_flutter/screens/procedures/add_radiology_order.dart'; import 'package:doctor_app_flutter/screens/procedures/add_radiology_order.dart';
import 'package:doctor_app_flutter/screens/procedures/add_radiology_screen.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.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/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-new-design-app-bar.dart';
@ -117,7 +118,7 @@ class _RadiologyHomePageState extends State<RadiologyHomePage> {
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => builder: (context) =>
AddSelectedRadiologyOrder( AddRadiologyScreen(
patient: patient, patient: patient,
model: model, model: model,
)), )),

@ -11,7 +11,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class ExpansionProcedure extends StatefulWidget { class ExpansionProcedure extends StatefulWidget {
final ProcedureTempleteModel procedureTempleteModel; final ProcedureTempleteDetailsModelList procedureTempleteModel;
final ProcedureViewModel model; final ProcedureViewModel model;
final Function(ProcedureTempleteDetailsModel) removeFavProcedure; final Function(ProcedureTempleteDetailsModel) removeFavProcedure;
final Function(ProcedureTempleteDetailsModel) addFavProcedure; final Function(ProcedureTempleteDetailsModel) addFavProcedure;
@ -37,19 +37,14 @@ class ExpansionProcedure extends StatefulWidget {
class _ExpansionProcedureState extends State<ExpansionProcedure> { class _ExpansionProcedureState extends State<ExpansionProcedure> {
bool _isShowMore = false; bool _isShowMore = false;
List<ProcedureTempleteDetailsModel> _templateDetailsList = List();
BaseAppClient baseAppClient = BaseAppClient(); BaseAppClient baseAppClient = BaseAppClient();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Column( return Column(
children: [ children: [
InkWell( InkWell(
onTap: () async { onTap: () async {
if (!_isShowMore && _templateDetailsList.isEmpty) {
GifLoaderDialogUtils.showMyDialog(context);
await getProcedureTemplateDetails(widget.procedureTempleteModel.templateID);
GifLoaderDialogUtils.hideDialog(context);
}
setState(() { setState(() {
_isShowMore = !_isShowMore; _isShowMore = !_isShowMore;
}); });
@ -116,8 +111,8 @@ class _ExpansionProcedureState extends State<ExpansionProcedure> {
)), )),
duration: Duration(milliseconds: 7000), duration: Duration(milliseconds: 7000),
child: Column( child: Column(
children: children: widget.procedureTempleteModel.procedureTemplate
_templateDetailsList.map((itemProcedure) { .map((itemProcedure) {
return Container( return Container(
child: Padding( child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12), padding: EdgeInsets.symmetric(horizontal: 12),
@ -135,8 +130,10 @@ class _ExpansionProcedureState extends State<ExpansionProcedure> {
activeColor: Color(0xffD02127), activeColor: Color(0xffD02127),
onChanged: (bool newValue) { onChanged: (bool newValue) {
setState(() { setState(() {
if (widget.isEntityFavListSelected(itemProcedure)) { if (widget.isEntityFavListSelected(
widget.removeFavProcedure(itemProcedure); itemProcedure)) {
widget
.removeFavProcedure(itemProcedure);
} else { } else {
widget.addFavProcedure(itemProcedure); widget.addFavProcedure(itemProcedure);
} }
@ -145,8 +142,7 @@ class _ExpansionProcedureState extends State<ExpansionProcedure> {
), ),
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 0),
horizontal: 10, vertical: 0),
child: AppText(itemProcedure.procedureName, child: AppText(itemProcedure.procedureName,
fontSize: 14.0, fontSize: 14.0,
variant: "bodyText", variant: "bodyText",
@ -169,21 +165,4 @@ class _ExpansionProcedureState extends State<ExpansionProcedure> {
], ],
); );
} }
getProcedureTemplateDetails(templateId)async {
ProcedureTempleteDetailsRequestModel _procedureTempleteDetailsRequestModel = ProcedureTempleteDetailsRequestModel(templateID: templateId, searchType: 1, patientID: 0);
_templateDetailsList.clear();
await baseAppClient.post(GET_PROCEDURE_TEMPLETE_DETAILS,
onSuccess: (dynamic response, int statusCode) {
response['HIS_ProcedureTemplateDetailsList'].forEach((template) {
setState(() {
_templateDetailsList.add(ProcedureTempleteDetailsModel.fromJson(template));
});
});
}, onFailure: (String error, int statusCode) {
DrAppToastMsg.showErrorToast(error);
}, body: _procedureTempleteDetailsRequestModel.toJson());
}
} }

@ -20,9 +20,17 @@ import 'package:flutter/material.dart';
class AddFavouriteProcedure extends StatefulWidget { class AddFavouriteProcedure extends StatefulWidget {
final ProcedureViewModel model; final ProcedureViewModel model;
final PatiantInformtion patient; final PatiantInformtion patient;
final String categoryID;
final String addButtonTitle;
final String toolbarTitle;
const AddFavouriteProcedure({Key key, this.model, this.patient}) AddFavouriteProcedure(
: super(key: key); {Key key,
this.model,
this.patient,
this.categoryID,
@required this.addButtonTitle,
@required this.toolbarTitle});
@override @override
_AddFavouriteProcedureState createState() => _AddFavouriteProcedureState(); _AddFavouriteProcedureState createState() => _AddFavouriteProcedureState();
@ -38,12 +46,8 @@ class _AddFavouriteProcedureState extends State<AddFavouriteProcedure> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<ProcedureViewModel>( return BaseView<ProcedureViewModel>(
onModelReady: (model) async { onModelReady: (model) =>
// TODO mosa_change model.getProcedureTemplate(categoryID: widget.categoryID),
// if (model.procedureTemplate.length == 0) {
model.getProcedureTemplate();
// }
},
builder: (BuildContext context, ProcedureViewModel model, Widget child) => builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold( AppScaffold(
isShowAppBar: false, isShowAppBar: false,
@ -53,30 +57,26 @@ class _AddFavouriteProcedureState extends State<AddFavouriteProcedure> {
Container( Container(
height: MediaQuery.of(context).size.height * 0.070, height: MediaQuery.of(context).size.height * 0.070,
), ),
if (model.procedureTemplate.length != 0) if (model.templateList.length != 0)
Expanded( Expanded(
child: NetworkBaseView( child: NetworkBaseView(
baseViewModel: model, baseViewModel: model,
child: EntityListCheckboxSearchFavProceduresWidget( child: EntityListCheckboxSearchFavProceduresWidget(
model: widget.model, model: model,
// masterList: widget.model.procedureTemplate, removeFavProcedure: (item) {
removeFavProcedure: (item) { setState(() {
setState(() { entityList.remove(item);
entityList.remove(item); });
}); },
}, addFavProcedure: (history) {
addFavProcedure: (history) { setState(() {
setState(() { entityList.add(history);
entityList.add(history); });
}); },
}, isEntityFavListSelected: (master) =>
addSelectedHistories: () { isEntityListSelected(master),
//TODO build your fun herr ),
// widget.addSelectedHistories(); ),
},
isEntityFavListSelected: (master) =>
isEntityListSelected(master),
)),
), ),
Container( Container(
margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5), margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5),
@ -84,7 +84,8 @@ class _AddFavouriteProcedureState extends State<AddFavouriteProcedure> {
alignment: WrapAlignment.center, alignment: WrapAlignment.center,
children: <Widget>[ children: <Widget>[
AppButton( AppButton(
title: TranslationBase.of(context).addSelectedProcedures, title: widget.addButtonTitle ??
TranslationBase.of(context).addSelectedProcedures,
color: Color(0xff359846), color: Color(0xff359846),
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
onPressed: () { onPressed: () {
@ -99,11 +100,14 @@ class _AddFavouriteProcedureState extends State<AddFavouriteProcedure> {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => ProcedureCheckOutScreen( builder: (context) => ProcedureCheckOutScreen(
items: entityList, items: entityList,
model: model, model: model,
patient: widget.patient, patient: widget.patient,
)), addButtonTitle: widget.addButtonTitle,
toolbarTitle: widget.toolbarTitle,
),
),
); );
}, },
), ),

@ -111,6 +111,7 @@ class AddSelectedProcedure extends StatefulWidget {
const AddSelectedProcedure({Key key, this.model, this.patient}) const AddSelectedProcedure({Key key, this.model, this.patient})
: super(key: key); : super(key: key);
@override @override
_AddSelectedProcedureState createState() => _AddSelectedProcedureState createState() =>
_AddSelectedProcedureState(patient: patient, model: model); _AddSelectedProcedureState(patient: patient, model: model);
@ -120,7 +121,9 @@ class _AddSelectedProcedureState extends State<AddSelectedProcedure> {
int selectedType; int selectedType;
ProcedureViewModel model; ProcedureViewModel model;
PatiantInformtion patient; PatiantInformtion patient;
_AddSelectedProcedureState({this.patient, this.model}); _AddSelectedProcedureState({this.patient, this.model});
TextEditingController procedureController = TextEditingController(); TextEditingController procedureController = TextEditingController();
TextEditingController remarksController = TextEditingController(); TextEditingController remarksController = TextEditingController();
List<EntityList> entityList = List(); List<EntityList> entityList = List();
@ -200,6 +203,7 @@ class _AddSelectedProcedureState extends State<AddSelectedProcedure> {
if (procedureName.text.isNotEmpty && if (procedureName.text.isNotEmpty &&
procedureName.text.length >= 3) procedureName.text.length >= 3)
model.getProcedureCategory( model.getProcedureCategory(
patientId: patient.patientId,
categoryName: categoryName:
procedureName.text); procedureName.text);
else else
@ -220,6 +224,7 @@ class _AddSelectedProcedureState extends State<AddSelectedProcedure> {
if (procedureName.text.isNotEmpty && if (procedureName.text.isNotEmpty &&
procedureName.text.length >= 3) procedureName.text.length >= 3)
model.getProcedureCategory( model.getProcedureCategory(
patientId: patient.patientId,
categoryName: procedureName.text); categoryName: procedureName.text);
else else
DrAppToastMsg.showErrorToast( DrAppToastMsg.showErrorToast(
@ -235,90 +240,11 @@ class _AddSelectedProcedureState extends State<AddSelectedProcedure> {
), ),
], ],
), ),
// SizedBox(
// width: MediaQuery.of(context).size.width * 0.29,
// ),
// InkWell(
// child: Icon(
// Icons.close,
// size: 24.0,
// ),
// onTap: () {
// Navigator.pop(context);
// },
// ),
// ],
// ),
// SizedBox(
// height: 10.0,
// ),
// Container(
// height: screenSize.height * 0.070,
// child: InkWell(
// onTap: model.categoryList != null &&
// model.categoryList.length > 0
// ? () {
// ListSelectDialog dialog =
// ListSelectDialog(
// list: model.categoryList,
// attributeName: 'categoryName',
// attributeValueId: 'categoryId',
// okText: TranslationBase.of(context).ok,
// okFunction: (selectedValue) {
// setState(() {
// selectedCategory = selectedValue;
// model.getProcedureCategory(
// categoryName: selectedCategory[
// 'categoryName'],
// categoryID: selectedCategory[
// 'categoryId'] <=
// 9
// ? "0" +
// selectedCategory[
// 'categoryId']
// .toString()
// : selectedCategory[
// 'categoryId']
// .toString());
// });
// },
// );
// showDialog(
// barrierDismissible: false,
// context: context,
// builder: (BuildContext context) {
// return dialog;
// },
// );
// //model.getProcedureCategory();
// }
// : null,
// child: TextField(
// decoration: textFieldSelectorDecoration(
// TranslationBase.of(context)
// .procedureCategorise,
// selectedCategory != null
// ? selectedCategory['categoryName']
// : null,
// true,
// suffixIcon: Icon(
// Icons.search,
// color: Colors.black,
// )),
// enabled: false,
// ),
// ),
// ),
if (procedureName.text.isNotEmpty && if (procedureName.text.isNotEmpty &&
model.procedureList.length != 0) model.procedureList.length != 0)
NetworkBaseView( NetworkBaseView(
baseViewModel: model, baseViewModel: model,
child: child: EntityListCheckboxSearchWidget(
// selectedCategory != null
// ? selectedCategory['categoryId'] == 02 ||
// selectedCategory['categoryId'] == 03
// ?
EntityListCheckboxSearchWidget(
model: widget.model, model: widget.model,
masterList: widget masterList: widget
.model.categoriesList[0].entityList, .model.categoriesList[0].entityList,
@ -338,77 +264,10 @@ class _AddSelectedProcedureState extends State<AddSelectedProcedure> {
}, },
isEntityListSelected: (master) => isEntityListSelected: (master) =>
isEntityListSelected(master), isEntityListSelected(master),
) )),
// : ProcedureListWidget(
// model: widget.model,
// masterList: widget.model
// .categoriesList[0].entityList,
// removeHistory: (item) {
// setState(() {
// entityList.remove(item);
// });
// },
// addHistory: (history) {
// setState(() {
// entityList.add(history);
// });
// },
// addSelectedHistories: () {
// //TODO build your fun herr
// // widget.addSelectedHistories();
// },
// isEntityListSelected: (master) =>
// isEntityListSelected(master),
// )
// : null,
),
SizedBox( SizedBox(
height: 15.0, height: 115.0,
), ),
Column(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
// Container(
// child: Row(
// children: [
// AppText(
// TranslationBase.of(context).orderType),
// Radio(
// activeColor: Color(0xFFB9382C),
// value: 1,
// groupValue: selectedType,
// onChanged: (value) {
// setSelectedType(value);
// },
// ),
// Text('routine'),
// Radio(
// activeColor: Color(0xFFB9382C),
// groupValue: selectedType,
// value: 0,
// onChanged: (value) {
// setSelectedType(value);
// },
// ),
// Text(TranslationBase.of(context).urgent),
// ],
// ),
// ),
// SizedBox(
// height: 15.0,
// ),
// TextFields(
// hintText: TranslationBase.of(context).remarks,
// controller: remarksController,
// minLines: 3,
// maxLines: 5,
// ),
SizedBox(
height: 100.0,
),
],
)
], ],
), ),
), ),

@ -0,0 +1,218 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/procedures/add-favourite-procedure.dart';
import 'package:doctor_app_flutter/screens/procedures/add-procedure-form.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.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/network_base_view.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/text_fields_utils.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'add_lab_orders.dart';
class AddLabHomeScreen extends StatefulWidget {
final ProcedureViewModel model;
final PatiantInformtion patient;
const AddLabHomeScreen({Key key, this.model, this.patient}) : super(key: key);
@override
_AddLabHomeScreenState createState() =>
_AddLabHomeScreenState(patient: patient, model: model);
}
class _AddLabHomeScreenState extends State<AddLabHomeScreen>
with SingleTickerProviderStateMixin {
_AddLabHomeScreenState({this.patient, this.model});
ProcedureViewModel model;
PatiantInformtion patient;
TabController _tabController;
int _activeTab = 0;
@override
void initState() {
super.initState();
_tabController = TabController(length: 2, vsync: this);
_tabController.addListener(_handleTabSelection);
}
@override
void dispose() {
super.dispose();
_tabController.dispose();
}
_handleTabSelection() {
setState(() {
_activeTab = _tabController.index;
});
}
@override
Widget build(BuildContext context) {
final screenSize = MediaQuery.of(context).size;
return BaseView<ProcedureViewModel>(
builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold(
isShowAppBar: false,
body: NetworkBaseView(
baseViewModel: model,
child: DraggableScrollableSheet(
minChildSize: 0.90,
initialChildSize: 0.95,
maxChildSize: 1.0,
builder:
(BuildContext context, ScrollController scrollController) {
return Container(
height: MediaQuery.of(context).size.height * 1.20,
child: Padding(
padding: EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
AppText(
'Add Procedure',
fontWeight: FontWeight.w700,
fontSize: 20,
),
InkWell(
child: Icon(
Icons.close,
size: 24.0,
),
onTap: () {
Navigator.pop(context);
},
)
]),
SizedBox(
height: MediaQuery.of(context).size.height * 0.04,
),
Expanded(
child: Scaffold(
extendBodyBehindAppBar: true,
appBar: PreferredSize(
preferredSize: Size.fromHeight(
MediaQuery.of(context).size.height * 0.070),
child: Container(
height:
MediaQuery.of(context).size.height * 0.070,
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: Theme.of(context).dividerColor,
width: 0.5), //width: 0.7
),
color: Colors.white),
child: Center(
child: TabBar(
isScrollable: false,
controller: _tabController,
indicatorColor: Colors.transparent,
indicatorWeight: 1.0,
indicatorSize: TabBarIndicatorSize.tab,
labelColor: Theme.of(context).primaryColor,
labelPadding: EdgeInsets.only(
top: 0, left: 0, right: 0, bottom: 0),
unselectedLabelColor: Colors.grey[800],
tabs: [
tabWidget(
screenSize,
_activeTab == 0,
"Favorite Templates",
),
tabWidget(
screenSize,
_activeTab == 1,
'All Lab',
),
],
),
),
),
),
body: Column(
children: [
Expanded(
child: TabBarView(
physics: BouncingScrollPhysics(),
controller: _tabController,
children: [
AddFavouriteProcedure(
patient: patient,
model: model,
addButtonTitle: TranslationBase.of(context).addLabOrder,
toolbarTitle: TranslationBase.of(context).applyForNewLabOrder,
categoryID: "02",
),
AddSelectedLabOrder(
model: model,
patient: patient,
),
],
),
),
],
),
),
),
],
),
),
);
}),
),
),
);
}
Widget tabWidget(Size screenSize, bool isActive, String title,
{int counter = -1}) {
return Center(
child: Container(
height: screenSize.height * 0.070,
decoration: TextFieldsUtils.containerBorderDecoration(
isActive ? Color(0xFFD02127 /*B8382B*/) : Color(0xFFEAEAEA),
isActive ? Color(0xFFD02127) : Color(0xFFEAEAEA),
borderRadius: 4,
borderWidth: 0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
AppText(
title,
fontSize: SizeConfig.textMultiplier * 1.5,
color: isActive ? Colors.white : Color(0xFF2B353E),
fontWeight: FontWeight.w700,
),
if (counter != -1)
Container(
margin: EdgeInsets.all(4),
width: 15,
height: 15,
decoration: BoxDecoration(
color: isActive ? Colors.white : Color(0xFFD02127),
shape: BoxShape.circle,
),
child: Center(
child: FittedBox(
child: AppText(
"$counter",
fontSize: SizeConfig.textMultiplier * 1.5,
color: !isActive ? Colors.white : Color(0xFFD02127),
fontWeight: FontWeight.w700,
),
),
),
),
],
),
),
);
}
}

@ -138,7 +138,7 @@ class _AddSelectedLabOrderState extends State<AddSelectedLabOrder> {
final screenSize = MediaQuery.of(context).size; final screenSize = MediaQuery.of(context).size;
return BaseView<ProcedureViewModel>( return BaseView<ProcedureViewModel>(
onModelReady: (model) => model.getProcedureCategory( onModelReady: (model) => model.getProcedureCategory(
categoryName: "Laboratory", categoryID: "02"), categoryName: "Laboratory", categoryID: "02",patientId: patient.patientId),
builder: (BuildContext context, ProcedureViewModel model, Widget child) => builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold( AppScaffold(
isShowAppBar: false, isShowAppBar: false,
@ -158,26 +158,6 @@ class _AddSelectedLabOrderState extends State<AddSelectedLabOrder> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
AppText(
TranslationBase.of(context).applyForNewLabOrder,
fontWeight: FontWeight.w700,
fontSize: 20,
),
InkWell(
child: Icon(
Icons.close,
size: 28.0,
),
onTap: () {
Navigator.pop(context);
},
),
],
),
SizedBox( SizedBox(
height: 10.0, height: 10.0,
), ),
@ -218,14 +198,10 @@ class _AddSelectedLabOrderState extends State<AddSelectedLabOrder> {
alignment: WrapAlignment.center, alignment: WrapAlignment.center,
children: <Widget>[ children: <Widget>[
AppButton( AppButton(
title: TranslationBase.of(context) title: TranslationBase.of(context).addLabOrder,
.addLabOrder, //TranslationBase.of(context)
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
//.addSelectedProcedures,
color: Color(0xff359846), color: Color(0xff359846),
onPressed: () { onPressed: () {
//print(entityList.toString());
onPressed:
if (entityList.isEmpty == true) { if (entityList.isEmpty == true) {
DrAppToastMsg.showErrorToast( DrAppToastMsg.showErrorToast(
TranslationBase.of(context) TranslationBase.of(context)

@ -147,6 +147,8 @@ class _AddProcedureHomeState extends State<AddProcedureHome>
AddFavouriteProcedure( AddFavouriteProcedure(
patient: patient, patient: patient,
model: model, model: model,
addButtonTitle: TranslationBase.of(context).addSelectedProcedures,
toolbarTitle: 'Add Procedure',
), ),
AddSelectedProcedure( AddSelectedProcedure(
model: model, model: model,

@ -110,6 +110,7 @@ class AddSelectedRadiologyOrder extends StatefulWidget {
const AddSelectedRadiologyOrder({Key key, this.model, this.patient}) const AddSelectedRadiologyOrder({Key key, this.model, this.patient})
: super(key: key); : super(key: key);
@override @override
_AddSelectedRadiologyOrderState createState() => _AddSelectedRadiologyOrderState createState() =>
_AddSelectedRadiologyOrderState(patient: patient, model: model); _AddSelectedRadiologyOrderState(patient: patient, model: model);
@ -119,7 +120,9 @@ class _AddSelectedRadiologyOrderState extends State<AddSelectedRadiologyOrder> {
int selectedType; int selectedType;
ProcedureViewModel model; ProcedureViewModel model;
PatiantInformtion patient; PatiantInformtion patient;
_AddSelectedRadiologyOrderState({this.patient, this.model}); _AddSelectedRadiologyOrderState({this.patient, this.model});
TextEditingController procedureController = TextEditingController(); TextEditingController procedureController = TextEditingController();
TextEditingController remarksController = TextEditingController(); TextEditingController remarksController = TextEditingController();
List<EntityList> entityList = List(); List<EntityList> entityList = List();
@ -138,7 +141,7 @@ class _AddSelectedRadiologyOrderState extends State<AddSelectedRadiologyOrder> {
final screenSize = MediaQuery.of(context).size; final screenSize = MediaQuery.of(context).size;
return BaseView<ProcedureViewModel>( return BaseView<ProcedureViewModel>(
onModelReady: (model) => model.getProcedureCategory( onModelReady: (model) => model.getProcedureCategory(
categoryName: "Radiology", categoryID: "03"), categoryName: "Radiology", categoryID: "03",patientId: patient.patientId),
builder: (BuildContext context, ProcedureViewModel model, Widget child) => builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold( AppScaffold(
isShowAppBar: false, isShowAppBar: false,
@ -158,25 +161,6 @@ class _AddSelectedRadiologyOrderState extends State<AddSelectedRadiologyOrder> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
AppText(
TranslationBase.of(context).newRadiologyOrder,
fontWeight: FontWeight.w700,
fontSize: 20,
),
InkWell(
child: Icon(
Icons.close,
size: 28.0,
),
onTap: () {
Navigator.pop(context);
},
),
],
),
SizedBox( SizedBox(
height: 10.0, height: 10.0,
), ),
@ -221,8 +205,6 @@ class _AddSelectedRadiologyOrderState extends State<AddSelectedRadiologyOrder> {
color: Color(0xff359846), color: Color(0xff359846),
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
onPressed: () { onPressed: () {
//print(entityList.toString());
onPressed:
if (entityList.isEmpty == true) { if (entityList.isEmpty == true) {
DrAppToastMsg.showErrorToast(TranslationBase.of(context) DrAppToastMsg.showErrorToast(TranslationBase.of(context)
.fillTheMandatoryProcedureDetails); .fillTheMandatoryProcedureDetails);

@ -0,0 +1,219 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/procedures/add-favourite-procedure.dart';
import 'package:doctor_app_flutter/screens/procedures/add-procedure-form.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.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/network_base_view.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/text_fields_utils.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'add_lab_orders.dart';
import 'add_radiology_order.dart';
class AddRadiologyScreen extends StatefulWidget {
final ProcedureViewModel model;
final PatiantInformtion patient;
const AddRadiologyScreen({Key key, this.model, this.patient}) : super(key: key);
@override
_AddRadiologyScreenState createState() =>
_AddRadiologyScreenState(patient: patient, model: model);
}
class _AddRadiologyScreenState extends State<AddRadiologyScreen>
with SingleTickerProviderStateMixin {
_AddRadiologyScreenState({this.patient, this.model});
ProcedureViewModel model;
PatiantInformtion patient;
TabController _tabController;
int _activeTab = 0;
@override
void initState() {
super.initState();
_tabController = TabController(length: 2, vsync: this);
_tabController.addListener(_handleTabSelection);
}
@override
void dispose() {
super.dispose();
_tabController.dispose();
}
_handleTabSelection() {
setState(() {
_activeTab = _tabController.index;
});
}
@override
Widget build(BuildContext context) {
final screenSize = MediaQuery.of(context).size;
return BaseView<ProcedureViewModel>(
builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold(
isShowAppBar: false,
body: NetworkBaseView(
baseViewModel: model,
child: DraggableScrollableSheet(
minChildSize: 0.90,
initialChildSize: 0.95,
maxChildSize: 1.0,
builder:
(BuildContext context, ScrollController scrollController) {
return Container(
height: MediaQuery.of(context).size.height * 1.20,
child: Padding(
padding: EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
AppText(
TranslationBase.of(context).addLabOrder,
fontWeight: FontWeight.w700,
fontSize: 20,
),
InkWell(
child: Icon(
Icons.close,
size: 24.0,
),
onTap: () {
Navigator.pop(context);
},
)
]),
SizedBox(
height: MediaQuery.of(context).size.height * 0.04,
),
Expanded(
child: Scaffold(
extendBodyBehindAppBar: true,
appBar: PreferredSize(
preferredSize: Size.fromHeight(
MediaQuery.of(context).size.height * 0.070),
child: Container(
height:
MediaQuery.of(context).size.height * 0.070,
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: Theme.of(context).dividerColor,
width: 0.5), //width: 0.7
),
color: Colors.white),
child: Center(
child: TabBar(
isScrollable: false,
controller: _tabController,
indicatorColor: Colors.transparent,
indicatorWeight: 1.0,
indicatorSize: TabBarIndicatorSize.tab,
labelColor: Theme.of(context).primaryColor,
labelPadding: EdgeInsets.only(
top: 0, left: 0, right: 0, bottom: 0),
unselectedLabelColor: Colors.grey[800],
tabs: [
tabWidget(
screenSize,
_activeTab == 0,
"Favorite Templates",
),
tabWidget(
screenSize,
_activeTab == 1,
'All Radiology',
),
],
),
),
),
),
body: Column(
children: [
Expanded(
child: TabBarView(
physics: BouncingScrollPhysics(),
controller: _tabController,
children: [
AddFavouriteProcedure(
patient: patient,
model: model,
addButtonTitle: TranslationBase.of(context).addLabOrder,
toolbarTitle: TranslationBase.of(context).applyForNewLabOrder,
categoryID: "03",
),
AddSelectedRadiologyOrder(
model: model,
patient: patient,
),
],
),
),
],
),
),
),
],
),
),
);
}),
),
),
);
}
Widget tabWidget(Size screenSize, bool isActive, String title,
{int counter = -1}) {
return Center(
child: Container(
height: screenSize.height * 0.070,
decoration: TextFieldsUtils.containerBorderDecoration(
isActive ? Color(0xFFD02127 /*B8382B*/) : Color(0xFFEAEAEA),
isActive ? Color(0xFFD02127) : Color(0xFFEAEAEA),
borderRadius: 4,
borderWidth: 0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
AppText(
title,
fontSize: SizeConfig.textMultiplier * 1.5,
color: isActive ? Colors.white : Color(0xFF2B353E),
fontWeight: FontWeight.w700,
),
if (counter != -1)
Container(
margin: EdgeInsets.all(4),
width: 15,
height: 15,
decoration: BoxDecoration(
color: isActive ? Colors.white : Color(0xFFD02127),
shape: BoxShape.circle,
),
child: Center(
child: FittedBox(
child: AppText(
"$counter",
fontSize: SizeConfig.textMultiplier * 1.5,
color: !isActive ? Colors.white : Color(0xFFD02127),
fontWeight: FontWeight.w700,
),
),
),
),
],
),
),
);
}
}

@ -67,7 +67,7 @@ class _EntityListCheckboxSearchFavProceduresWidgetState
@override @override
void initState() { void initState() {
items.addAll(widget.masterList); //items.addAll(widget.masterList);
super.initState(); super.initState();
} }
@ -102,9 +102,9 @@ class _EntityListCheckboxSearchFavProceduresWidgetState
SizedBox( SizedBox(
height: 15, height: 15,
), ),
items.length != 0 widget.model.templateList.length != 0
? Column( ? Column(
children: items.map((historyInfo) { children: widget.model.templateList.map((historyInfo) {
return ExpansionProcedure( return ExpansionProcedure(
procedureTempleteModel: historyInfo, procedureTempleteModel: historyInfo,
model: widget.model, model: widget.model,

@ -14,10 +14,14 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class ProcedureCheckOutScreen extends StatefulWidget { class ProcedureCheckOutScreen extends StatefulWidget {
ProcedureCheckOutScreen({this.items, this.model, this.patient});
final List<ProcedureTempleteDetailsModel> items; final List<ProcedureTempleteDetailsModel> items;
final ProcedureViewModel model; final ProcedureViewModel model;
final PatiantInformtion patient; final PatiantInformtion patient;
final String addButtonTitle;
final String toolbarTitle;
ProcedureCheckOutScreen(
{this.items, this.model, this.patient,@required this.addButtonTitle,@required this.toolbarTitle});
@override @override
_ProcedureCheckOutScreenState createState() => _ProcedureCheckOutScreenState createState() =>
@ -63,7 +67,7 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
width: 5.0, width: 5.0,
), ),
AppText( AppText(
'Add Procedure', widget.toolbarTitle ?? 'Add Procedure',
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
fontSize: 20, fontSize: 20,
), ),
@ -71,122 +75,129 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
), ),
), ),
), ),
SizedBox(height: 30,), SizedBox(
...List.generate(widget.items.length, (index) => Container( height: 30,
margin: EdgeInsets.only(bottom: 15.0), ),
decoration: BoxDecoration( ...List.generate(
color: Colors.white, widget.items.length,
borderRadius: (index) => Container(
BorderRadius.all(Radius.circular(10.0))), margin: EdgeInsets.only(bottom: 15.0),
child: ExpansionTile( decoration: BoxDecoration(
initiallyExpanded: true, color: Colors.white,
title: Row( borderRadius:
children: [ BorderRadius.all(Radius.circular(10.0))),
Icon( child: ExpansionTile(
Icons.check_box, initiallyExpanded: true,
color: Color(0xffD02127), title: Row(
size: 30.5, children: [
), Icon(
SizedBox( Icons.check_box,
width: 6.0, color: Color(0xffD02127),
), size: 30.5,
Expanded( ),
child: SizedBox(
AppText(widget.items[index].procedureName)), width: 6.0,
], ),
), Expanded(
children: [
Container(
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Padding(
padding: const EdgeInsets.symmetric(
horizontal: 11),
child: AppText( child: AppText(
TranslationBase.of(context).orderType, widget.items[index].procedureName)),
fontWeight: FontWeight.w700, ],
color: Color(0xff2B353E), ),
), children: [
Container(
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Padding(
padding: const EdgeInsets.symmetric(
horizontal: 11),
child: AppText(
TranslationBase.of(context)
.orderType,
fontWeight: FontWeight.w700,
color: Color(0xff2B353E),
),
),
],
),
Row(
children: [
Radio(
activeColor: Color(0xFFD02127),
value: 0,
groupValue:
widget.items[index].selectedType,
onChanged: (value) {
widget.items[index].selectedType =
0;
setState(() {
widget.items[index].type =
value.toString();
});
},
),
AppText(
'routine',
color: Color(0xff575757),
fontWeight: FontWeight.w600,
),
Radio(
activeColor: Color(0xFFD02127),
groupValue:
widget.items[index].selectedType,
value: 1,
onChanged: (value) {
widget.items[index].selectedType =
1;
setState(() {
widget.items[index].type =
value.toString();
});
},
),
AppText(
TranslationBase.of(context).urgent,
color: Color(0xff575757),
fontWeight: FontWeight.w600,
),
],
),
],
), ),
], ),
), ),
Row( SizedBox(
children: [ height: 2.0,
Radio( ),
activeColor: Color(0xFFD02127), Padding(
value: 0, padding: EdgeInsets.symmetric(
groupValue: horizontal: 12, vertical: 15.0),
widget.items[index].selectedType, child: TextFields(
onChanged: (value) { hintText: TranslationBase.of(context).remarks,
widget.items[index].selectedType = 0; controller: remarksController,
setState(() { onChanged: (value) {
widget.items[index].type = widget.items[index].remarks = value;
value.toString(); },
}); minLines: 3,
}, maxLines: 5,
), borderWidth: 0.5,
AppText( borderColor: Colors.grey[500],
'routine', ),
color: Color(0xff575757),
fontWeight: FontWeight.w600,
),
Radio(
activeColor: Color(0xFFD02127),
groupValue:
widget.items[index].selectedType,
value: 1,
onChanged: (value) {
widget.items[index].selectedType = 1;
setState(() {
widget.items[index].type =
value.toString();
});
},
),
AppText(
TranslationBase.of(context).urgent,
color: Color(0xff575757),
fontWeight: FontWeight.w600,
),
],
), ),
SizedBox(
height: 19.0,
),
//DividerWithSpacesAround(),
], ],
), ),
), )),
), SizedBox(
SizedBox( height: 90,
height: 2.0, ),
),
Padding(
padding: EdgeInsets.symmetric(
horizontal: 12, vertical: 15.0),
child: TextFields(
hintText: TranslationBase.of(context).remarks,
controller: remarksController,
onChanged: (value) {
widget.items[index].remarks = value;
},
minLines: 3,
maxLines: 5,
borderWidth: 0.5,
borderColor: Colors.grey[500],
),
),
SizedBox(
height: 19.0,
),
//DividerWithSpacesAround(),
],
),
)),
SizedBox(height: 90,),
], ],
), ),
), ),
@ -196,7 +207,7 @@ class _ProcedureCheckOutScreenState extends State<ProcedureCheckOutScreen> {
alignment: WrapAlignment.center, alignment: WrapAlignment.center,
children: <Widget>[ children: <Widget>[
AppButton( AppButton(
title: TranslationBase.of(context).addSelectedProcedures, title: widget.addButtonTitle ?? TranslationBase.of(context).addSelectedProcedures,
color: Color(0xff359846), color: Color(0xff359846),
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
onPressed: () async { onPressed: () async {

Loading…
Cancel
Save